diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index eb544e1..27f91dc 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -410,7 +410,13 @@ "installing": "Installing...", "error": "Update failed", "retryButton": "Retry", - "releaseNotes": "What's New" + "releaseNotes": "What's New", + "notes": { + "0.3.11": "### Added\n- Dynamic Report: support multiple column dimensions (composite column keys)\n\n### Fixed\n- Dynamic Report: no longer affected by global page date filters — uses only its own panel filters", + "0.3.10": "### Added\n- Dynamic Report: fields can now be used in multiple zones simultaneously (rows + filters, columns + filters)\n- Dynamic Report: right-click on a filter value to exclude it (shown with strikethrough in red)\n- \"This year\" period option in reports and dashboard (Jan 1 to today)", + "0.3.9": "### Added\n- Dynamic Report (pivot table): compose custom reports by assigning dimensions to rows, columns, filters and measures to values\n- Delete keywords from the \"All Keywords\" view", + "0.3.8": "### Added\n- Custom date range picker for reports and dashboard\n- Toggle to position subtotals above or below detail rows\n- Display release notes from CHANGELOG in GitHub releases and in-app updater" + } }, "dataManagement": { "title": "Data Management", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 55d0cb8..8f7c843 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -410,7 +410,13 @@ "installing": "Installation en cours...", "error": "Erreur lors de la mise à jour", "retryButton": "Réessayer", - "releaseNotes": "Nouveautés" + "releaseNotes": "Nouveautés", + "notes": { + "0.3.11": "### Ajouté\n- Rapport dynamique : support de plusieurs dimensions en colonnes (clés composites)\n\n### Corrigé\n- Rapport dynamique : n'est plus affecté par les filtres de date globaux — utilise uniquement ses propres filtres du panneau", + "0.3.10": "### Ajouté\n- Rapport dynamique : les champs peuvent maintenant être utilisés dans plusieurs zones simultanément (lignes + filtres, colonnes + filtres)\n- Rapport dynamique : clic-droit sur une valeur de filtre pour l'exclure (affiché barré en rouge)\n- Option de période « Cette année » dans les rapports et le tableau de bord (du 1er janvier à aujourd'hui)", + "0.3.9": "### Ajouté\n- Rapport dynamique (tableau croisé) : composez des rapports personnalisés en assignant des dimensions aux lignes, colonnes, filtres et mesures aux valeurs\n- Suppression de mots-clés depuis la vue « Tous les mots-clés »", + "0.3.8": "### Ajouté\n- Sélecteur de plage de dates personnalisée pour les rapports et le tableau de bord\n- Bascule pour positionner les sous-totaux au-dessus ou en dessous des lignes de détail\n- Affichage des notes de version du CHANGELOG dans les releases GitHub et le système de mise à jour" + } }, "dataManagement": { "title": "Gestion des données", diff --git a/src/pages/SettingsPage.tsx b/src/pages/SettingsPage.tsx index 4b1803d..c7aa8a1 100644 --- a/src/pages/SettingsPage.tsx +++ b/src/pages/SettingsPage.tsx @@ -125,26 +125,32 @@ export default function SettingsPage() {

{t("settings.updates.available", { version: state.version })}

- {state.body && ( -
-

- {t("settings.updates.releaseNotes")} -

-
- {state.body.split("\n").map((line, i) => { - const trimmed = line.trim(); - if (!trimmed) return
; - if (trimmed.startsWith("### ")) - return

{trimmed.slice(4)}

; - if (trimmed.startsWith("## ")) - return

{trimmed.slice(3)}

; - if (trimmed.startsWith("- ")) - return

{"\u2022 "}{trimmed.slice(2).replace(/\*\*(.+?)\*\*/g, "$1")}

; - return

{trimmed}

; - })} + {(() => { + const notesKey = `settings.updates.notes.${state.version}`; + const i18nNotes = t(notesKey, { defaultValue: "" }); + const notes = i18nNotes || state.body; + if (!notes) return null; + return ( +
+

+ {t("settings.updates.releaseNotes")} +

+
+ {notes.split("\n").map((line, i) => { + const trimmed = line.trim(); + if (!trimmed) return
; + if (trimmed.startsWith("### ")) + return

{trimmed.slice(4)}

; + if (trimmed.startsWith("## ")) + return

{trimmed.slice(3)}

; + if (trimmed.startsWith("- ")) + return

{"\u2022 "}{trimmed.slice(2).replace(/\*\*(.+?)\*\*/g, "$1")}

; + return

{trimmed}

; + })} +
-
- )} + ); + })()}