bruno
98a6dd8a2c
fix: i18n for dashboard widgets + shortcuts — no more hardcoded French
...
CI / lint (push) Failing after 23s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 12s
Replaced all hardcoded French text in dashboard.js with t() calls:
- 'Chargement...' → t('common.loading')
- 'Erreur:' → t('dashboard.error_prefix')
- Size units ('o','Ko','Mo','Go') → t('dashboard.size_*')
- 'fichier(s)' → t('dashboard.count_files*')
- '0 fichiers' → t('dashboard.zero_files')
- 'Conflits de synchronisation' → t('dashboard.conflicts_title')
- 'Garder l\'original'/'Garder le conflit' → t('dashboard.keep_*')
- 'Ajouter/Retirer des bookmarks' → t('dashboard.bookmark_*')
- 'à l\'instant'/'il y a X min/h/j' → t('dashboard.*_ago', {n})
- 'Afficher'/'Masquer' → t('dashboard.show/hide')
- 'Erreur de chargement' → t('dashboard.load_error')
Added 11 shortcut i18n keys + 22 dashboard i18n keys to en.json/fr.json.
Verified: '4 files' count, English shortcuts, English empty states.
2026-06-21 10:48:14 -04:00
bruno
8db9f4447f
i18n: fix hardcoded French in Statistics and Shortcuts panel
...
CI / lint (push) Failing after 18s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 10s
- dashboard.js: Fichiers/Tags uniques/Taille totale/Vaults -> t() calls
- config.js: Tags uniques/Vaults in About -> t() calls
- index.html: Raccourcis & Astuces -> data-i18n
- Added 5 new keys: dashboard.stats_*, help.shortcuts_title
2026-06-18 23:04:10 -04:00
bruno
659c227e6a
i18n: complete audit — 55 new keys, all hardcoded strings converted to t()
...
CI / lint (push) Failing after 22s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 9s
- Added 4 missing keys: button.cancel, toast.dir_renamed, toast.file_deleted, toast.file_renamed
- Replaced 41 hardcoded showToast() strings with t() calls across 13 JS files
- Replaced 10 hardcoded textContent/title/innerHTML strings with t() calls
- Fixed theme labels: Sombre/Clair -> t('theme.dark')/t('theme.light')
- Fixed vault selector: Tous les vaults -> t('help.all_vaults')
- Both locale files: 983 -> 1032 keys, perfectly matched
- Bidirectional EN<->FR switching verified in browser
2026-06-18 22:49:19 -04:00
bruno
0403be4516
feat: complete i18n coverage — all dynamic content translated
...
CI / test (push) Has been cancelled
CI / security (push) Has been cancelled
CI / build (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / lint (push) Has been cancelled
All remaining French strings converted to t() calls:
- ui.js: create/delete file/dir modals, rename/copy/bookmark toasts
- palette.js: confirm dialogs, error toasts
- search.js: result summary text with interpolation
- config.js: about/diagnostics section labels
- auth.js: admin panel title
- viewer.js: forge popout labels
- dashboard.js: shared widget buttons, date locale-aware
57 new locale keys for dynamic content (modals, toasts, admin, about)
Total: 597 keys per language
All 26 modules validated — 163 exports, 0 errors
2026-06-18 14:18:25 -04:00
bruno
0f4a7405db
feat: section aide rapide dans le dashboard stats
...
CI / lint (push) Failing after 1s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after -8s
- Boite elegante sous les statistiques avec icone clavier
- 10 raccourcis clavier essentiels (palette, recherche, edition)
- Badges style touches clavier (mono, accent, bordure)
- Astuce Ctrl+survol et editeur Forge
- Toggle masquer/afficher avec persistence localStorage
- Layout grid responsive (auto-fill minmax 260px)
2026-06-15 14:11:49 -04:00
bruno
3ad484001a
fix: advancedSearchOffset → state.advancedSearchOffset + openFile dans dashboard.js
CI / lint (push) Successful in 13s
CI / security (push) Successful in 8s
CI / test (push) Successful in 16s
CI / build (push) Successful in 22s
2026-05-29 15:57:50 -04:00
bruno
c22259b362
fix: renderFile, searchByTag, addTagFilter, DashboardWidgets — 8 imports manquants
CI / lint (push) Successful in 14s
CI / security (push) Successful in 9s
CI / test (push) Successful in 17s
CI / build (push) Successful in 2s
2026-05-29 13:20:07 -04:00
bruno
7edbd7a31a
fix: imports manquants — TabManager, showToast, closeHeaderMenu, closeMobileSidebar, ContextMenuManager, RightSidebarManager
CI / lint (push) Successful in 14s
CI / security (push) Successful in 9s
CI / test (push) Successful in 18s
CI / build (push) Successful in 5s
2026-05-29 09:01:33 -04:00
bruno
21da3f316f
fix: import icon from viewer.js (not utils.js) in dashboard.js
CI / lint (push) Successful in 16s
CI / security (push) Successful in 9s
CI / test (push) Successful in 16s
CI / build (push) Successful in 3s
2026-05-29 07:24:07 -04:00
bruno
015bec7774
fix: add missing imports (api, escapeHtml, safeCreateIcons, getFileIcon) to sidebar, legacy, viewer, dashboard, config
CI / lint (push) Successful in 12s
CI / security (push) Successful in 8s
CI / test (push) Successful in 22s
CI / build (push) Successful in 2s
2026-05-28 19:28:50 -04:00
bruno
148b3851ae
fix: add missing state. prefix to all bare state variable references across all modules
CI / lint (push) Successful in 15s
CI / security (push) Successful in 8s
CI / test (push) Successful in 16s
CI / build (push) Successful in 2s
2026-05-28 18:33:39 -04:00
bruno
a2ff9297ce
fix: strip line number prefixes from all JS files
CI / lint (push) Successful in 13s
CI / security (push) Successful in 8s
CI / test (push) Successful in 18s
CI / build (push) Successful in 2s
2026-05-28 16:46:17 -04:00
bruno
643a73e0f5
fix: strip read_file line numbers accidentally injected into JS files
CI / lint (push) Successful in 13s
CI / security (push) Successful in 8s
CI / test (push) Successful in 16s
CI / build (push) Successful in 3s
2026-05-28 16:40:14 -04:00
bruno
7866f93778
refactor: state.js → mutable object to fix 'assignment to constant' errors
...
CI / lint (push) Successful in 13s
CI / security (push) Successful in 8s
CI / test (push) Successful in 16s
CI / build (push) Successful in 6s
ES module imports are read-only live bindings — can't reassign
imported let/const variables. Replace individual 'export let' with
single 'export const state = {...}' mutable object.
All modules updated: import { state } from './state.js'
All state access changed to state.xxx pattern.
Fixes cascade of 'Assignment to constant variable' errors.
2026-05-28 16:34:39 -04:00
bruno
25cfd7cc56
fix: export DashboardSharedWidget from dashboard.js
CI / lint (push) Successful in 12s
CI / security (push) Successful in 9s
CI / test (push) Successful in 42s
CI / build (push) Successful in 3s
2026-05-28 14:58:42 -04:00
bruno
4836d6f1d0
refactor: split app.js (8875 lines) into 12 ES modules
...
CI / lint (push) Successful in 10s
CI / security (push) Successful in 8s
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled
frontend/js/ structure:
state.js (55 lines) — Shared mutable state, constants
utils.js (510 lines) — EXT_ICONS, getFileIcon, escapeHtml, safeCreateIcons
auth.js (547 lines) — api(), AuthManager, initLoginForm, AdminPanel
search.js (1106 lines)— SearchHistory, QueryParser, Autocomplete, performSearch
sidebar.js (1091 lines)— Vault tree, sidebar filter, TagFilterService, loadTags
viewer.js (1554 lines)— openFile, Outline, ScrollSpy, Frontmatter, Editor
ui.js (2250 lines)— Theme, Toast, Sidebar, Dropdowns, Tabs, ContextMenu
dashboard.js (461 lines) — Dashboard widgets (Recent, Stats, Bookmarks)
config.js (999 lines) — Config panel, Hidden files, About, Sidebar tabs
sync.js (436 lines) — SSE/IndexUpdateManager, PWA registration
graph.js (401 lines) — GraphViewManager (force-directed canvas graph)
legacy.js (550 lines) — Remaining bridge functions (goHome, showWelcome, initSearch)
app.js (80 lines) — Thin orchestrator: imports all modules, calls init()
index.html: switched from <script src="app.js"> to <script type="module" src="js/app.js">
Original app.js preserved for backward compatibility.
All 14 modules pass node --check syntax validation.
2026-05-28 14:04:50 -04:00