Repository navigation
feat(discovery): show what changed after an update in a carousel panel - #1000
Conversation
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Catalogue des versions et persistance src/lib/whatsNew.ts, src/lib/tauri/preferences.ts, src-tauri/crates/app/src/commands/preferences.rs, src-tauri/crates/app/src/lib.rs, src-tauri/crates/app/src/commands/preferences/tests.rs, docs/architecture/storage.md, docs/RELEASING.md |
Le catalogue décrit les pages de la version 2.0.0 et compare les versions. Les commandes Tauri lisent et enregistrent le marqueur dans app_setting. Un test vérifie sa lecture initiale et deux écritures successives. |
Évaluation et accès au panneau src/hooks/useWhatsNew.ts, src/hooks/useModalA11y.ts, src/components/layout/AppLayout.tsx, src/components/layout/TopBar.tsx, src/lib/discovery.ts, src/styles/skins/fluid.css |
useWhatsNew évalue la nouveauté, les préférences et les conditions d’ouverture. AppLayout transmet l’état au panneau et à la barre supérieure. La barre affiche un bouton et un indicateur quand une nouveauté reste à consulter. |
Panneau, illustrations et actions src/components/discovery/*, src/components/layout/LyricsPanel.tsx, src/components/layout/Sidebar.tsx, src/contexts/PlayerContext.tsx, src/hooks/usePlayer.ts, src/components/player/*, src/styles/skins/liquid.css, src/styles/skins/lounge.css |
Le panneau présente les pages avec navigation clavier, illustrations et actions. Il gère les prérequis de bibliothèque et de piste. Les actions peuvent ouvrir des vues, l’éditeur de paroles, le théâtre ou l’import de playlists. Les styles incluent des règles de réduction des animations. |
Réglages et accès manuels src/lib/settingsRegistry.ts, src/components/views/SettingsView.tsx, src/components/views/settings/*, src/components/views/AboutView.tsx, src/components/layout/AppLayout.tsx, docs/features/ui.md, docs/README.md, CLAUDE.md |
Les réglages de profil contrôlent l’ouverture automatique et la visibilité du bouton. Settings peut révéler un groupe ciblé. About peut défiler jusqu’au changelog et ouvrir les nouveautés. La documentation décrit le panneau et les règles de publication. |
Estimated code review effort: 4 (Complex) | ~45 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant AppLayout
participant useWhatsNew
participant PreferencesTauri
participant TauriCommands
participant app_setting
participant WhatsNewPanel
AppLayout->>useWhatsNew: évaluer les nouveautés disponibles
useWhatsNew->>PreferencesTauri: lire le marqueur
PreferencesTauri->>TauriCommands: invoquer get_whats_new_marker
TauriCommands->>app_setting: lire whats_new.seen_version
app_setting-->>TauriCommands: renvoyer le marqueur
TauriCommands-->>PreferencesTauri: renvoyer le marqueur
PreferencesTauri-->>useWhatsNew: fournir le marqueur
AppLayout->>WhatsNewPanel: afficher la version choisie
Suggested labels: type: feat, size: xl, scope: frontend, scope: backend, scope: i18n, scope: docs
Merge Risk: 
Minimal · up to 8ef77
-
No identified issue blocks merging the What’s New panel after normal checks.
Security architecture risk: 
Low · up to 8ef77
-
The change is narrowly scoped to presenting updates, recording which version was seen, and opening existing features. No increased access to protected data was demonstrated. Runtime access restrictions were not independently verified.
Retained concerns
No architecture-level concerns identified.Security review details
-
Security Blast Radius
- inferred — A caller able to invoke the new marker setter can affect announcement eligibility across profiles in the same installation. The inspected command path limits that authority to one application-setting value; it does not provide caller-selected access to profile records, files, credentials, or remote resources.
Security Findings and Attack Paths
- inferred — No security attack path was established for the supplied page-action candidate. In the inspected flow, marker input cannot choose an action definition, and the finite dispatcher opens feature interfaces or starts library playback rather than interpreting supplied code, commands, paths, or URLs.
Trust Boundaries and Controls
- observed — The new IPC boundary accepts an arbitrary string but uses fixed SQL with bound key and value parameters. Malformed version markers are treated as unseen by the frontend. Semver interpretation belongs to presentation logic rather than acting as a backend authorization control.
Resilience and Maintainability Implications
- inferred — The inspected marker failures change whether announcements repeat or are omitted, rather than changing access authority. The theater shortcut also keeps its initial theater override in transient player state, leaving the stored preference unchanged on entry.
-
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passed-
Full details: Description check
-
Explanation
La description est complète et couvre l’objectif, le comportement du marqueur, les conditions d’ouverture, les actions, l’accessibilité, les tests exécutés et les limites de validation. Les sections Checklist, Screenshots / clips et Linked issues ne sont pas renseignées, mais leur absence ne rend pas la description incomplète au regard du contenu fourni.
-
Full details: Docstring Coverage
-
Explanation
Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 26 functions across 26 files. (9 skipped: 9 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches
-
Generate docstrings
-
- Commit to this branch
- Create a new PR
Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Summary
People miss what a new version brings, the way they miss what sits in Settings. The main window now opens a carousel once per update: an animated scene, a few lines of text and a "Try it" action per feature. The 2.0 content has 8 pages: the fluid interface and its materials, AutoMix, the lyrics editor, theater mode, the tag workshop, MusicBrainz enrichment, the native Release Radar and playlist import.
src/lib/whatsNew.ts, in the 17 locales. A correction release adds nothing and the panel stays closed. The full history stays in About.app_setting['whats_new.seen_version'], compared as real versions and read through two new commands,get_whats_new_marker/set_whats_new_marker, since no generic command readsapp_setting.--minimizedlaunch.useModalA11ynow exposesuseAnyModalOpenfor this.useProfileSettingand the settings registry, and keeps the panel reachable when the button is hidden.FeatureHeroextends the sharedFeatureArtwith 5 new scenes.mainstill carries version 1.9.1, so neither the button nor the panel shows until the 2.0 version bump.How I tested
typecheck,prettier,cargo fmt --check,cargo check, clippy.lintreports 0 errors and 1 warning atImmersiveView.tsx:355, in code this branch does not touch.the_whats_new_marker_starts_absent_and_follows_the_version, on the migratedapp.dbschema. App crate tests do not start on Windows, so CI is its first run.Not verified:
Summary by CodeRabbit