Command Palette

Search for a command to run...

1.2.0

Refonte UI/UX de l'extension avec nouveau lecteur, composants natifs, badge d'activité, snooze & planning, panneau de debug conditionnel et réorganisation des paramètres.

1.2.0 est une version visuelle et fonctionnelle majeure. Elle introduit un lecteur repensé avec animation vinyle, un composant Sheet fait maison, un badge d'icône d'extension, des composants Switch et Checkbox personnalisés, les fonctionnalités snooze et planning, un panneau de debug conditionnel, et des paramètres entièrement réorganisés.

Lecteur

Nouveau layout Bar avec artwork 48×48 (idle : vinyle tournant), barre de progression optionnelle (music/streaming/tv/anime uniquement), et toggle showPlayer pour masquer la carte. Contrôles supprimés. Design compact et épuré. Les utilisateurs peuvent masquer le lecteur s'ils préfèrent une interface plus simple.

Sheet

Nouveau composant Sheet natif en Tailwind v4 (sans Radix), glissant depuis le bas ou la droite. Intégré aux paramètres de présence, snooze et planning. Plus de dépendance à Radix, animation fluide, mobile-friendly, et focus trap intégré.

Badge d'extension

Un indicateur • apparaît sur l'icône de l'extension quand une présence est active. L'utilisateur sait d'un coup d'œil si une activité Discord est en cours, sans ouvrir le panneau.

Switch personnalisé

Toggle carré aux coins arrondis : fond avec bordure (off), fond violet avec bouton blanc (on). S'aligne avec l'identité visuelle Nowly au lieu du switch navigateur standard.

Checkbox personnalisé

Checkbox 18×18px arrondie avec remplissage accent et icône check blanche. Look cohérent pour les toggles de consentement et futurs formulaires.

Paramètres présence

Les paramètres s'ouvrent dans un Sheet depuis le bas avec les réglages et le bouton Désinstaller. Labels liés au switch via htmlFor. Interface plus propre, plus accessible (clic sur le label = toggle), désinstallation toujours disponible.

Snooze

Snooze par présence avec un stepper en bottom sheet ([−] [temps] [+], pas de 5min, 5–240min). Icône Flocon pour snoozer, Soleil pour réveiller. Envoie seulement CLEAR_ACTIVITY au réveil - l'activité reste visible avec un badge 'Snoozé'. Mettre en pause l'activité Discord sans perdre l'état Nowly. Stepper rapide, indicateur clair.

Planning

Planning par présence ou global avec boutons jour (Dim–Sam) et plage horaire optionnelle. Mode 'toute la journée' masque les heures. Global via la barre d'actions, par présence via le bouton Calendar. Contrôle total sur quand une présence s'affiche sur Discord. Mode journée simplifie la configuration.

Réorganisation paramètres

Header simplifié avec bullet coloré + statut. Carte connexion/l'application bureau supprimée. Gestion données fusionnée avec analytics. Carte mise à jour conditionnelle avec style accent. Barre d'actions visible uniquement sur l'onglet Activité. Paramètres plus épurés. La mise à jour l'application bureau se démarque quand elle est disponible. Aucune distraction pendant la configuration.

Panneau de debug conditionnel

DebugPanel masqué dans les builds Chrome Web Store (vérification update_url). Affiché uniquement dans la vue Réglages avec un header repliable - plus de bannière séparée. Vérifier MAJ devient inactif en mode dev. Pas de fuite de debug en production. UI plus propre : le header sert aussi de notice. Pas de fausses mises à jour en développement.

Barre de progression

Affichée uniquement pour les catégories music, streaming, tv et anime. Masquée pour les présences 'other'. La barre de progression reste pertinente - pas de timer inutile pour les présences non-média.

Consentement analytics

Écran d'onboarding repensé avec une grille compacte : 6 éléments non collectés (X) et 1 élément collecté (✓). Bouton 'Partager' centré, 'Non merci' en texte cliquable. Communication plus claire sur la vie privée. Moins intimidant que l'ancien mur de texte.

Support Firefox

Chrome et Firefox disposent maintenant de chemins de build séparés, d'un packaging store, de l'injection native userScripts, du support des pages CSP strictes et de manifests l'application bureau pour les IDs Firefox de production. Nowly est prêt pour une distribution navigateur plus large sans fragiliser l'injection des présences.

Durcissement API

Auth, analytics, notes, proxy d'images, synchronisation de présences et génération de changelog IA ont été renforcés avec validation, nonce, redirections plus sûres, caches bornés et prompts protégés. Les endpoints publics résistent mieux aux entrées invalides, aux URLs hostiles et aux abus.

Web, légal et consentement

Ajout des pages mentions légales/cookies, bannière cookies, gestion du consentement avec export/suppression, page équipe, footer catégorisé, CTA navigateur dynamique et corrections de statut. Le site public couvre mieux les sujets de release, confiance, confidentialité, support et équipe.

Application bureau et release tooling

La vérification manuelle des mises à jour redémarre d'abord le pont natif. Les logs l'application bureau sont plus clairs, les erreurs IPC Discord sont journalisées, les logs tournent, et les archives extension passent par tar. Les mises à jour et diagnostics locaux sont plus fiables sur les installations et artefacts de release.

Qualité interne

Les utilitaires partagés passent dans @nowly/shared, les types/background helpers extension sont découpés, les primitives UI remplacent les éléments bruts, le README est enrichi, et les assets YouTube Music sont rafraîchis. Le code est plus maintenable et la documentation de release reflète toute la portée de la branche.

Pass Supporter

Nouveau système de pass supporter avec email, notifications Discord, statut ad-free et page de validation dédiée. Le statut supporter est synchronisé entre appareils avec un overlay de remerciement. Inclut un endpoint GET /support/verify-code et un template email light redessiné. Base de monétisation : les utilisateurs peuvent soutenir le projet et naviguer sans publicité. Le flux complet gère l'activation du pass, les alertes Discord et la synchronisation.

Endpoint sécurité

Nouvel endpoint GET /security/public-key qui dérive la clé publique depuis PRESENCE_SIGNING_PRIVATE_KEY au runtime. L'extension la récupère au démarrage avec un fallback hardcodé. Permet la rotation de clé sans mise à jour de l'extension. Rétrocompatible via la clé de secours.

Migration CDN

Tous les assets statiques (logos, icônes, titres) sont servis depuis cdn.nowly.me/assets/ au lieu de nowly.me ou chrome.runtime.getURL. Les fichiers legacy supprimés de web/public et des scripts de build. Livraison mondiale plus rapide, bundle d'extension réduit, gestion centralisée des assets.

Refactor architecture

Points d'entrée déplacés dans src/entrypoints/. Background découpé en managers/, services/, runtime/, analytics/. Composants réorganisés en layout/, shared/, ui/. Tous les imports relatifs remplacés par des alias @/. Code plus propre, navigation facilitée, imports cohérents dans toute l'extension.