尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
App sport (PWA installable sur iPhone) : Courses, Saison (phases d'entraînement) et Mesures (poids, FTP vélo, mensurations). HTML / CSS / JavaScript purs (modules ES), sans build. Issue de la partie sport de Carnet. Données partagées avec Carnet Allure utilise la même base Firebase que Carnet (nœud app) et ne lit / n'écrit que trois tranches : • races : courses ; • objectives.seasonPhases : phases de la saison ; • bodyMetrics : poids, FTP, mensurations.檢視完整 README ↗
Anciennement Allure : le dépôt, les clés de stockage local (allure_…) et les données Firebase gardent ce nom, rien n'est à migrer.
App sport (PWA installable sur iPhone) : courses, phases d'entraînement et mesures (poids, FTP vélo, mensurations).
Un seul calendrier, quatre échelles, choisies en haut (Année, Mois, Semaine, Jour) ou d'un geste : écarter deux doigts plonge vers l'endroit touché, pincer recule (sur ordinateur : pincement du trackpad). Toucher un mois, une semaine (S…) ou un jour l'ouvre ; glisser à gauche / à droite (ou ‹ ›, ou glissement horizontal au trackpad) passe à l'année, au mois, à la semaine ou au jour suivant / précédent ; « Aujourd'hui » y revient.
Types de phase : le menu « Phase » de l'éditeur (lien « Modifier la liste ») et ⚙︎ › Réglages ouvrent la liste des types : ajouter, renommer (nom et nom court), changer la couleur, la charge (hauteur des barres de l'année) et le conseil, classer dans « Préparation spécifique », réordonner ou retirer. Un type retiré qui sert encore à des phases est seulement masqué du menu : ces phases gardent leur nom et leur couleur.
Barre du bas : Saison (le zoom), Suivi (courbes du poids et de la FTP, mensurations, historiques), Analyse (export RunGap) et Ajouter (course, phase, poids, test FTP, mensurations) : toute nouvelle mesure se saisit depuis Ajouter. Depuis l'échelle Jour, la course ou la phase ajoutée prend la date du jour affiché ; une course enregistrée s'ouvre sur son jour.
Onglet Analyse : « Importer l’export RunGap » lit le CSV complet exporté de RunGap (toutes les séances, tous sports). À chaque mise à jour, on redépose le fichier entier : seules les activités plus récentes que la dernière connue sont ajoutées ; les doublons Suunto / Garmin (départs à moins de 10 min) sont fusionnés. Les activités restent sur l’appareil (allure_activities, ~100 Ko pour 1 200 séances) : le nœud Firebase partagé avec Carnet n’accepte pas de nouvelle tranche.
Deux affichages : Bilan et Plan. En Bilan, la période (menu, ‹ ›) et le sport (menu) restent collés sous l'en-tête au défilement.
Bilan, périodes : Mois, 3 mois, 6 mois, 12 mois, Année, Saison (groupe de phases qui se suivent, coupé après une phase de transition), avec ‹ › pour remonter dans le temps.
objectives.analysis (synchronisés).Plan (inspiré de Frive) : phase de la semaine choisie (semaine x sur y, objectif et J−, cible et réalisé), volume cible par semaine (référence × facteur de la phase, une semaine sur quatre allégée en foncier et en spécifique ; réalisé superposé, toucher une barre affiche la semaine) et liste des phases en cours et à venir : toucher une phase ouvre sa fiche (dates, type, note, suppression), « Ajouter une phase » en crée une à la main.
Import : séparateur (virgule, point-virgule, tabulation) et encodage (UTF-8, UTF-16) détectés. Une erreur d'affichage d'une vue n'interrompt jamais la synchronisation ni l'import.
Ajouter › Phases automatiques (ou ⚙︎ › Réglages) : chaque course à venir est classée Objectif, Préparation (défaut) ou Ne compte pas (aussi dans la fiche de la course, champ « Importance » ; stocké dans objectives.racePriority). Seuls les objectifs placent les phases, à rebours : foncier, spécifique volume puis intensité (6 semaines), affûtage de 7 à 14 jours selon distance et D+ (≥ 60 km ou ≥ 2 500 m D+ : 14 j ; ≥ 21 km ou ≥ 1 000 m : 10 j), récupération après chaque objectif (raccourcie si le suivant est proche) et coupure de 2 semaines après le dernier. « Recalculer à partir du » (aujourd'hui par défaut) : les phases d'avant cette date ne changent pas. Les phases faites à la main (champ origin: 'manual' ; les anciennes sans origin sont manuelles sauf note « Auto · … ») qui touchent la période sont listées, cochées par défaut : une phase cochée reste telle quelle et le plan se place autour (bout de moins d'une semaine rattaché à la phase précédente), une décochée est recalculée. « Appliquer ce plan » (confirmation) : la phase en cours s'arrête la veille ou est prolongée si le plan commence par le même type.
HTML / CSS / JavaScript purs (modules ES), sans build. Issue de la partie sport de Carnet.
Cadence utilise le même compte que Mon Garage, Ma Maison, Carnet et Mon budget (projet Firebase test-e27e9, connexion e-mail / mot de passe).
Cadence partage le nœud de Carnet users/<uid>/carnet et n'y lit / n'écrit que trois tranches :
races : courses ;objectives.seasonPhases : phases de la saison ;objectives.phaseTypes : liste des types de phase, si elle a été modifiée (sinon la liste d'origine) ;bodyMetrics : poids, FTP, mensurations.Les autres données (agenda, tâches, planning de la semaine, garage_alerts, maison_alerts, marqueur migrated…) appartiennent à Carnet et aux autres apps et ne sont jamais réécrites. Une course ou une phase créée dans Cadence apparaît donc aussitôt dans le planning de Carnet.
Au premier instantané du nœud après connexion :
migrated → fonctionnement normal ;dashboard---projet, nœud app, délai max 8 s) et copie dans le nouveau nœud toutes les tranches de Carnet (dashboard, notes, theme, families, plans, objectives, races, bodyMetrics) qui n'y sont pas déjà, avec migrated: { from, at, by: 'allure' } ; comme le fait Carnet, l'ancien thème par défaut dark de Carnet est transféré en auto ;Tant que cet appareil n'a pas reçu le nœud (migré) du compte connecté, l'état local peut être vide ou périmé : enregistrer une seule course écraserait la liste complète partagée avec Carnet. Les modifications sont donc refusées, sauf :
allure_synced_once = uid du compte) : les modifications hors ligne sont envoyées à la reconnexion.Aucune règle à publier : le projet test-e27e9 autorise déjà chaque compte à lire et écrire users/<son uid>/… (tout nouveau nœud y est couvert).
database.rules.json contient désormais le verrou de l'ancienne base publique dashboard---projet (.read / .write à false), identique à celui du dépôt Carnet : à publier dans la console Firebase de dashboard---projet une fois que Carnet et Cadence ont migré les données sur tous les appareils. Ne jamais republier l'ancienne version de ce fichier (base lisible et modifiable par n'importe qui).
Style minimaliste (anthracite, cartes pleines), couleur Braise (dégradé orangé → rouge vif), également couleur des courses dans le calendrier ; chaque type de phase a sa propre teinte franche (bleu, indigo, violet, magenta, jaune, vert, gris par défaut, modifiable). Bouton ⚙︎ › Réglages : thème Auto (suit le réglage clair / sombre de l'iPhone, par défaut), Sombre ou Clair, mémorisé sur l'appareil. Un ancien choix « Sombre » (ancien défaut) devient « Auto » une seule fois ; « Clair » est conservé. Le thème est appliqué avant le premier rendu (pas de flash).
Icône Cadence (icon.svg, déclinée en PNG ; aussi logos/cadence.svg) : trois barres qui montent comme la charge d'entraînement, la blanche pour la coupure avant la course.
index.html vue Zoom, Suivi, barre du bas, connexion, feuilles de saisie et Réglages
css/ jetons, composants, vues, allure.css (style, palettes, connexion)
js/core/ store (3 tranches), schéma, saison, dates
js/services/ Firebase (compte, synchro par tranche, migration), stockage local
js/ui/ thème, connexion, modales, pastille de synchro, toasts
js/views/ zoom (calendrier 4 échelles), races, season et phase-types (éditeurs), metrics (Suivi)
js/features/ export calendrier .ics, mannequin des mensurations
python3 -m http.server 8000
puis http://localhost:8000.