Commit Graph

  • ebb2537fda feat(glossaries): implement a 3-step wizard for CSV/file imports with custom source/target language selection production-deployment sepehr 2026-06-28 11:38:18 +02:00
  • 36aeac2c5e fix(glossaries): prevent translation data destruction on language selector change for multi glossaries sepehr 2026-06-28 11:03:31 +02:00
  • de9407f974 revert(docker): remove automated database glossary translation from startup sequence sepehr 2026-06-28 10:55:19 +02:00
  • 5e3fb0098b feat(docker): run glossary translation script automatically on backend container startup sepehr 2026-06-28 10:53:58 +02:00
  • a57b8a8e4d fix(glossaries): normalize language code casing when retrieving display translations sepehr 2026-06-28 10:52:08 +02:00
  • dde80f6bc3 feat(glossaries): update script to translate missing terms in any glossary, even if target_language is already 'multi' sepehr 2026-06-28 10:46:48 +02:00
  • 7398cae359 feat(glossaries): add script to translate non-multilingual database glossaries using Google Translate adapter sepehr 2026-06-28 10:42:41 +02:00
  • 030950c962 feat(glossaries): option C - page management + wizard /new 2-step creation sepehr 2026-06-28 09:55:14 +02:00
  • 5d6afd2dad fix(contrast): replace all opacity-based colors with concrete hex values meeting WCAG 4.5:1 ratio sepehr 2026-06-21 10:54:17 +02:00
  • 07c50151cb fix(contrast): increase text contrast on glossary page for light mode readability sepehr 2026-06-20 19:39:33 +02:00
  • 299173fff7 ux(glossary): clarify selection flow - compact banner, Utiliser button, hide create section by default sepehr 2026-06-20 19:18:46 +02:00
  • 9b354befe3 fix(glossary): hide create section by default when glossaries exist - only shown on demand via toggle button sepehr 2026-06-20 19:07:30 +02:00
  • 4a8f33d36f fix(glossary): eliminate all redundant elements - filter imported templates, remove duplicate buttons and links sepehr 2026-06-20 19:03:44 +02:00
  • 489df66c0f fix(i18n): add missing translation keys for tabs and presets sepehr 2026-06-20 19:01:09 +02:00
  • 96bac2e792 style(glossary): remove redundant buttons and links, filter already imported presets sepehr 2026-06-20 18:46:38 +02:00
  • d78f08e24f feat(glossary): restructure page with tabs, direct translate redirects and dynamic mapping sepehr 2026-06-20 18:43:02 +02:00
  • c17dd2c6e1 fix(glossary): resolve data loss for non-FR/EN languages, fix prompt injection reference notes, and classic mode label wording sepehr 2026-06-20 18:09:13 +02:00
  • 1fe714aa1a ux(glossaries): simplify dialog, auto-save detail import, show templates and upload zone directly on main page sepehr 2026-06-20 12:27:07 +02:00
  • d505b479cd refactor(glossaries): align CreateGlossaryDialog with editorial design system sepehr 2026-06-20 09:15:54 +02:00
  • 81cb4e09b7 fix(tests): update PDF format test to use truly unsupported format (.txt) sepehr 2026-06-14 19:50:44 +02:00
  • a20ebe2295 fix(tests): update glossary service tests for dict return type sepehr 2026-06-14 19:49:21 +02:00
  • 233a054e34 fix(tests): isolate test DB and sync tier=pro in Pro user fixtures sepehr 2026-06-14 19:44:25 +02:00
  • f85e5eef9b fix(tests): escape Windows paths in cleanup Redis mock sepehr 2026-06-14 19:34:01 +02:00
  • b9446f166d fix(translate): French error messages and update mock users for quota checks sepehr 2026-06-14 19:20:44 +02:00
  • adc3583358 fix(db): make migrations and glossary index SQLite-compatible sepehr 2026-06-14 19:01:07 +02:00
  • cb8ce697d2 fix(translate): enforce Pro feature gating for glossary, custom_prompt and prompt_id sepehr 2026-06-14 18:40:45 +02:00
  • f05399aeba fix(i18n): return French error messages in auth, register, download endpoints sepehr 2026-06-14 18:13:41 +02:00
  • 45e44dd7b2 fix(billing): unify quota counters, fix Stripe webhooks, tier/plan sync sepehr 2026-06-14 17:39:34 +02:00
  • fa637abff0 perf+security: fix build, secure downloads, dedupe translations, refactor i18n sepehr 2026-06-14 16:44:18 +02:00
  • eda6821632 i18n: fix missing keys and translate all non-admin frontend strings sepehr 2026-06-14 12:45:12 +02:00
  • 9b0b2ae6f9 docs: remove remaining Claude 3.5 references and display page credit costs in translation provider selector sepehr 2026-06-14 11:41:47 +02:00
  • c7506e6aca fix: resolve critical security and UI session mismatch by clearing React Query cache on login/logout and invalidating on subscription updates sepehr 2026-06-14 11:15:09 +02:00
  • 136d40c7d8 feat: update to June 2026 models (Claude Sonnet 4.6, Gemini 3.5 Flash), add glossary button, and implement cost factor quota & vision fallback sepehr 2026-06-14 11:05:53 +02:00
  • 5fd087979b feat: unify multimodels translation providers, remove self-hosting (Ollama/LibreTranslate), and fix local SQLite configuration sepehr 2026-06-14 10:44:46 +02:00
  • feea02033b fix: resolve Google login hydration mismatch and dynamic env load sepehr 2026-06-07 12:21:06 +02:00
  • 5b8c29dae6 feat: enable passing NEXT_PUBLIC_GOOGLE_CLIENT_ID at docker compose build time sepehr 2026-06-07 11:41:04 +02:00
  • 29753881a6 feat: add Telegram notifications for user signup and Stripe events sepehr 2026-06-07 11:37:01 +02:00
  • 8659b6761f docs: update README.md to act as central documentation portal with French links sepehr 2026-06-07 11:21:06 +02:00
  • fa19f33ab0 docs: add French restore procedure guide PROCEDURE_RESTAURATION.md sepehr 2026-06-07 11:20:04 +02:00
  • 9bb02927c3 fix: redirect logs to stderr and reduce size thresholds in backup/verify scripts sepehr 2026-06-07 11:16:45 +02:00
  • ddf6b8f6bc fix: ignore unbound variables when sourcing .env in all backup/DR scripts sepehr 2026-06-07 11:14:04 +02:00
  • 3f980ad537 feat: add NAS backup, verification, and DR scripts sepehr 2026-06-07 11:12:01 +02:00
  • fb6740f333 fix(glossaries): correct source/target display mapping (FR=source, EN=target, others=translations[lang]) Sepehr 2026-06-07 10:59:57 +02:00
  • 79848230c0 fix(glossaries): restore selectable source language (data was already there) Sepehr 2026-06-07 10:11:19 +02:00
  • e11a6b16a0 fix(glossaries): source language combobox was a lie — replace with fixed FR label Sepehr 2026-06-07 09:58:16 +02:00
  • 80b49ee354 Robustness: Implement multi-destination backups (LOCAL, NAS, SCP) and backup/restore of NPM configurations sepehr 2026-06-07 09:50:51 +02:00
  • c7299228cd Robustness: Add fallback path handling in disaster-recovery.sh for NAS offline cases sepehr 2026-06-07 09:48:13 +02:00
  • 02a4a7ded8 fix(glossaries): sync data files name/description with index.json (→ Multilingue) Sepehr 2026-06-07 09:42:47 +02:00
  • 670d3f4376 Documentation: Add French Disaster Recovery Playbook for server failovers sepehr 2026-06-07 09:39:26 +02:00
  • e497f2d218 refactor(glossaries): single source of truth + dedicated detail page Sepehr 2026-06-07 09:38:19 +02:00
  • 23373ab91a Robustness: Update backup-database.sh with robust python resolution and cross-platform path handling sepehr 2026-06-07 09:29:19 +02:00
  • 9104f6123d Security: Enforce strict CORS domain restriction in production environment sepehr 2026-06-07 09:26:45 +02:00
  • e7b5ea9a61 Robustness: Add json-file log rotation limits to all docker services sepehr 2026-06-07 09:26:39 +02:00
  • 8805044bb6 Security: Untrack SSL private keys and certificates and add to .gitignore sepehr 2026-06-07 09:24:10 +02:00
  • 1d883c3c69 feat(glossaries): add migrate_glossaries_to_multilingual.py Sepehr 2026-06-03 21:56:01 +02:00
  • 8f55e3d9aa fix(glossaries): dedup by (user_id, name) instead of (user_id, template_id) Sepehr 2026-06-03 21:48:53 +02:00
  • cd32a42b1a feat(glossaries): add backup + delete scripts and Gitea workflow for duplicate cleanup Sepehr 2026-06-03 21:21:11 +02:00
  • e1f9f3db04 feat: add Alembic migration for template_id column on glossaries sepehr 2026-06-01 23:44:04 +02:00
  • 818eac5490 feat: prevent duplicate glossary presets + fix i18n source warning bug sepehr 2026-06-01 23:39:53 +02:00
  • ce53f0df16 fix(admin): resolve hydration layout crash by removing layout-level return null and using mount-conditional text sepehr 2026-06-01 23:24:03 +02:00
  • 6da8a85b1d fix(admin): secure routes, add real IP detection, SMTP header validation, and fix Next.js layout hydration mismatch sepehr 2026-06-01 23:16:03 +02:00
  • 6d27dc4cda feat(i18n): Phase 1 — migrate 5 critical files from hardcoded text to i18n sepehr 2026-06-01 00:28:24 +02:00
  • c82e70681f fix: edit dialog remaps terms when target language changes sepehr 2026-06-01 00:08:27 +02:00
  • 0efdf6a3f4 feat: add source/target language selectors to edit glossary dialog sepehr 2026-06-01 00:03:22 +02:00
  • 8fa1ab9ceb fix: delete all old FR→EN glossaries and deduplicate multilingual ones sepehr 2026-05-31 23:56:18 +02:00
  • 9ab166c31e fix: glossaries page support for multilingual (target_language='multi') sepehr 2026-05-31 23:48:48 +02:00
  • e9ac30ed1d style: use same serif/typography font styles on profile page as translate page sepehr 2026-05-31 23:33:32 +02:00
  • 32d75f8a84 fix: delete stale FR→EN glossaries + convert all remaining to multilingual sepehr 2026-05-31 23:31:24 +02:00
  • 744a97f58d fix: import datetime in email_service.py to fix NameError, add Stripe emails unit tests sepehr 2026-05-31 23:25:20 +02:00
  • b4096fd2ca fix: show target-language-specific translations in preview + rename migration sepehr 2026-05-31 23:22:50 +02:00
  • a79ce0fc9b fix: comprehensive glossary system audit — 6 critical fixes sepehr 2026-05-31 23:14:41 +02:00
  • 2386e94c6d fix: page /checkout/success qui auto-sync le plan apres paiement Stripe (success_url corrige) sepehr 2026-05-31 23:05:01 +02:00
  • ebfa784b0a fix: also rename multilingual glossaries from 'Anglais' to 'Multilingue' in migration sepehr 2026-05-31 22:48:29 +02:00
  • ab296ea259 fix: Stripe billing portal auto-config programmatique, separation changer-forfait vs gerer-facturation sepehr 2026-05-31 22:45:45 +02:00
  • 00c54997bf fix: sync plan+tier after checkout, portal same-tab nav, cancel button always visible for paid plans, portal return URL to profile tab sepehr 2026-05-31 22:37:51 +02:00
  • 277589aea3 fix: resolve alembic migration cycle — unique revision ID, correct chain sepehr 2026-05-31 22:36:26 +02:00
  • c66252bed4 feat: mark glossary templates as multilingual — support 11 target languages sepehr 2026-05-31 22:32:27 +02:00
  • ad8ac089a4 fix: don't auto-select glossary when no target language match sepehr 2026-05-31 22:22:05 +02:00
  • 67b41b2c24 chore: re-trigger deploy after password fix sepehr 2026-05-31 22:12:54 +02:00
  • 5122bfdf99 fix: glossary selection respects target language — sort by source+target, reset on lang change, fix template import sepehr 2026-05-31 22:00:40 +02:00
  • 89c31f8298 fix: safe JSON parse in checkout handlers, show proper error on 500 sepehr 2026-05-31 21:59:18 +02:00
  • fbe39d81e1 fix: align landing page prices with backend, pass billing mode in URL to /pricing sepehr 2026-05-31 21:54:15 +02:00
  • b067be2ff7 fix: deploy.sh auto-selects compose file, docker-compose.yml uses correct Stripe var names sepehr 2026-05-31 21:51:38 +02:00
  • c7c1fd8436 fix: deploy.sh migrate works without .env.docker on production sepehr 2026-05-31 21:45:55 +02:00
  • 374c605027 feat: Stripe integration complete - products created, DB migration, payment_failed handler, credit buttons wired sepehr 2026-05-31 21:40:31 +02:00
  • 3a9de12f26 fix: glossary cards UX - boutons clairs, badge compatible/incompatible, alerte cible dans sidebar sepehr 2026-05-31 13:46:13 +02:00
  • d657b65adb fix: FORMAT NATIF hors cadre, apercu glossaire toujours FR/IR, prompt juridique par defaut sepehr 2026-05-31 13:29:12 +02:00
  • 85cd5456f8 feat(glossaries): add target_language support - DB migration, API, and UI language pair display sepehr 2026-05-31 13:25:12 +02:00
  • fecb3f7abb ux(glossaries): add how-it-works guide, status badges and activation hints sepehr 2026-05-31 13:02:19 +02:00
  • 6d800b1077 design(frontend): align glossaries page typography with translation page editorial style sepehr 2026-05-31 11:36:55 +02:00
  • f33da82c29 fix(frontend): improve glossary selector responsiveness and add contextual warning logic sepehr 2026-05-31 11:24:52 +02:00
  • 58d9d8a74c fix(frontend): increase translation config legibility and integrate templates in glossary selector sepehr 2026-05-31 11:18:57 +02:00
  • 3f635e809e feat(translate): implement intelligent language filtering and creation links for glossaries sepehr 2026-05-31 11:09:56 +02:00
  • 8ab45f1b6e style(translate): make LLM cards compact in a 3-column grid, remove glossary language filtering, and add contextual help under engine selection sepehr 2026-05-31 11:05:34 +02:00
  • cd8a57324d style(translate): redesign glossary and translate images card layout to match mockup compact styling sepehr 2026-05-31 10:58:22 +02:00
  • a5b18b5a24 fix(pdf): add support for translate_images to PDFTranslator to fix API mismatch sepehr 2026-05-31 10:36:30 +02:00
  • 78eca6d453 feat(translate): refonte complete du composant GlossarySelector (Etape 4) sepehr 2026-05-31 10:33:57 +02:00
  • a0de00a4e7 fix(translate): ajout des cles de traduction manquantes et re-positionnement intelligent du bouton de traduction sepehr 2026-05-31 10:28:12 +02:00
  • c1ea65f10f feat(translate): refonte du design de la page de traduction et du sélecteur de moteurs (Etapes 1-3) sepehr 2026-05-31 10:14:23 +02:00
  • 9532fef2cd fix: remove DeepSeek/MiniMax branding, fix glossary visibility, improve translate page UX sepehr 2026-05-31 08:24:33 +02:00