Commit Graph

21 Commits

Author SHA1 Message Date
claude ce05426452 refactor: Refactor main.js to use shared utilities (Step 2 of 6)
Refactored main.js from 544 → 266 lines (51% reduction) by:
- Removing duplicate functions now in utils/form-helpers.js
- Removing duplicate i18n logic now in utils/i18n.js
- Removing API loading code now in utils/api.js
- Removing cookie consent handlers now in modules/cookie-consent.js

Kept only page-specific form handlers:
- Contact form submission with reCaptcha
- Subscribe form submission with reCaptcha
- Language switcher initialization
- Footer year and version display

All calls now use window.MyAi.* utilities for consistency.

Updated index.html to load all utilities before main.js.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 09:12:19 +03:00
claude 513d925be1 refactor(web): rewrite main.js — slim, modular, well-documented
From 722 lines → 387 lines. Removed CV matcher logic (moved to cv-matcher.js)
and i18n dictionary (moved to i18n.js).

Keeps core functionality:
- i18n initialization, language switching, translation helpers
- Header/nav behavior
- Contact and subscribe forms (with reCaptcha validation)
- Cookie consent management
- API health checks and configuration loading

Additions:
- JSDoc on all public functions with parameter/return types
- Section block comments for navigability
- Expose utilities on window.MyAi: t(), currentLang(), showFieldError(),
  clearFieldErrors(), isValidEmail(), extractApiError()
- Cleaner separation of concerns between main.js, cv-matcher.js, i18n.js

Load order: jQuery → i18n.js → main.js → cv-matcher.js (on cv-matcher page)

Closes #31

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 13:33:20 +03:00
claude 7908dad181 Fix error propagation: surface API validation messages in the UI
- UseJsonExceptionHandler now maps InvalidOperationException to 400 (was 500),
  so upstream business-rule rejections reach the browser as actionable messages.
- CvMatcherController forwards Refit 4xx bodies from cv-matcher-api instead
  of swallowing them in a generic 502.
- ErrorResponse.Score removed; CaptchaController puts the score in Detail.
- Frontend extractApiError helper reads the server Error/error/title field for
  4xx responses and falls back to a generic i18n string for 5xx / missing body.
- All four failure handlers (CV upload, CV match, contact form, subscribe form)
  updated to use extractApiError with the correct rate-limit i18n key.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 09:41:24 +03:00
claude b6878e3b45 Respect UI language in match result — LLM responds in user's selected language
The frontend sends the active language code (currentLang()) with every match
request. CvMatcherService injects a language instruction into the system prompt
so the LLM returns summary, strengths, gaps, recommendations, and evidence in
the correct language. The match result cache (CvMatchResults) now includes
Language as part of the lookup key so Romanian and English results are stored
and retrieved independently. Existing cached rows default to 'en'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 17:04:21 +03:00
claude 6deb8dd4c8 Move version display to GET /api/health/version in HealthController
Uses GetApplicationVersion(Assembly.GetExecutingAssembly()) — the same
timestamp-based version already logged at startup and baked into the
assembly via the csproj <Version> property. Removes the minimal-API
/version endpoint from web/Program.cs and reverts the web Dockerfile
APP_VERSION build-arg (no longer needed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:25:07 +03:00
claude 0154b56881 Add auto-incrementing version display to web UI footer
Exposes GET /version endpoint in the web container (reads APP_VERSION env var).
CI computes the version as 1.0.<git-commit-count> and passes it via --build-arg at build time.
Both index.html and cv-matcher/index.html show the version in the footer via a JS fetch.
docker-compose passes APP_VERSION through to the running container.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 20:18:31 +03:00
claude be1dec7171 Changes
Build and Push Docker Images / build (push) Successful in 16s
2026-05-12 11:22:34 +03:00
claude 6fceeb4481 Diacritics
Build and Push Docker Images / build (push) Successful in 17s
2026-05-12 11:19:00 +03:00
claude 6470f7a9c5 Changes
Build and Push Docker Images / build (push) Successful in 40s
2026-05-12 11:16:21 +03:00
claude 19e3526430 Changes
Build and Push Docker Images / build (push) Successful in 18s
2026-05-12 11:11:06 +03:00
claude 4eaae45cba Changes 2026-05-12 10:38:04 +03:00
claude 44aa19a92e Changes
Build and Push Docker Images / build (push) Successful in 17s
2026-05-11 13:09:09 +03:00
claude e512317f33 Changes
Build and Push Docker Images / build (push) Successful in 43s
2026-05-11 12:33:51 +03:00
claude c2896ce77b Changes
Build and Push Docker Images / build (push) Failing after 0s
2026-05-08 14:09:58 +03:00
claude 845f41255f Changes
Build and Push Docker Images / build (push) Failing after 1s
2026-05-07 20:00:57 +03:00
claude 3d966a95ca Changes
Build and Push Docker Images / build (push) Successful in 29s
2026-05-06 15:41:58 +03:00
claude a926c214e1 Changes
Build and Push Docker Images / build (push) Successful in 28s
2026-05-06 15:26:25 +03:00
claude a10908364b Changes 2026-05-06 15:17:20 +03:00
claude 711810d8c2 Changes 2026-05-06 14:48:12 +03:00
claude 17266730fc Changes 2026-05-06 10:56:02 +03:00
claude fc2dd721e4 Initial commit
Build and Push Docker Images / build (push) Successful in 29s
2026-05-02 21:31:31 +03:00