feat(desktop): tray à 3 icônes + toggle activer/désactiver la dictée (T-039) #41
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/T-039-tray-menu-icon"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tâche
T-xxx — (titre dans docs/STATUS.md)
Changements
Contrat modifié ?
packages/contract/supabase/migrations—docs/API.md/docs/DATA.mdmis à jour, labelcontract, approbation humaine requiseTests
scripts/check.shvertImpacts cross-domaine
Fichiers hors périmètre de l'agent (et pourquoi) :
Suivi
docs/STATUS.mdmis à jour (ligne de la tâche)docs/CHANGELOG.md: entrée ajoutée sous Unreleaseddocs/DECISIONS.md/docs/ECARTS.mdmis à jour si décision ou écartqa-regression — verdict : APPROVE
Review non indépendante (outil de dispatch de sous-agent Task/Agent toujours indisponible dans cette session, cf. STATUS.md — même constat documenté depuis PR #17) : faite par l'orchestrateur, diff relu en entier +
cargo check/clippy --all-targets -- -D warnings/cargo test(67/67, +4 vs 63 avant) etscripts/check.sh --rust/--desktopexécutés réellement, pas simulés.Périmètre : apps/desktop/src-tauri (tray.rs, hotkey.rs, session.rs) + 3 nouvelles icônes tray (SVG+PNG). Aucun fichier hors périmètre app-front, aucun changement de contrat/schéma/secret.
Points vérifiés :
TrayIcon::set_icon_with_as_template— confirmé dans les sources locales detauri2.11.5 (src/tray/mod.rs) que cette méthode passe parrun_item_main_thread!en interne, donc sûre à appeler depuis le threadCGEventTap/tokio qui déclenchesession.rs::set()(pas le thread principal). Idem pourMenuItem::set_text(src/menu/check.rs/icon.rs, même macro). Aucune API objc2/AppKit directe introduite (contrairement à T-098) → pas de risque de crash de thread AppKit identifié.hotkey::ENABLED(AtomicBool global) gate uniquement le démarrage d'un nouvel enregistrement (Edge::Start/ShortcutState::Pressed) ;stop_and_process/cancelrestent opérants dans tous les cas → pas de risque d'audio bloqué en cours. Sur macOS,should_swallow_main_key && enabled: la touche n'est plus avalée quand désactivé,Ctrl+Spacereste utilisable normalement ailleurs (pas de régression du fix T-097 quand activé, comportement inchangé dans ce cas).unwrap()hors tests, erreurs propagées viaAriaError/log::warncomme le reste du fichier.Aucun blocage. Merge programmé (
--merge), pas d'attente de test physique : pas de nouvelle API macOS bas niveau introduite dans cette PR (cf. STATUS.md T-039).