Analyze your Halo Infinite stats match by match, track your progress over time, and compare your performance with your squad.
v6.5 — Heatmap escouade & paramètres fiabilisés
- Heatmap d'intensité par joueur (Teammates) — nouvelle visualisation : heatmap match × phase (début/milieu/fin) pour chaque membre de l'escouade. Voir qui frappe tôt, qui accélère en fin de match. Toggle pour afficher tous ensemble ou joueur par joueur
- Notifications Discord séparées — les alertes sync et backfill ont maintenant chacune leur propre toggle ; désactiver l'une n'affecte pas l'autre
- Paramètres plus robustes — les réglages sont écrits de façon sécurisée (écriture atomique + sauvegarde automatique) ; le fichier ne peut plus se corrompre en cas de crash ou d'arrêt forcé
- Corrections — les records (meilleure performance) ne s'affichent plus par défaut quand ils avaient été désactivés
v6.4 — Filtres médias, CSR escouade & aides à la lecture
- Filtres de la médiathèque — filtrez vos clips et screenshots par propriétaire (mes captures / coéquipiers / sans match associé), carte, mode, résultat (victoire / défaite…) et contexte solo vs escouade. Triez par date, carte, mode ou résultat en un clic
- Aides à la lecture — une case à cocher dans la barre latérale affiche ou masque les ~45 cartouches d'explication sur chaque page ; désactivable pour une interface plus épurée
- Récapitulatif carrière redessiné — 8 cartes compactes côte à côte : Matchs, Durée totale, Frags, Morts, Assists, Précision, Temps en vie, Résultats. Chaque carte compare votre valeur à votre moyenne historique (code couleur vert/or/rouge à ±8 %)
- Win/Loss intégré dans Timeseries — la page Win/Loss devient un onglet dans Timeseries ; onglets renommés : Résumé · Cartes & Modes · Progression · Avancé
- CSR des coéquipiers automatique — lors d'un sync sur un match classé, le rang de tous les co-joueurs enregistrés est récupéré et distribué automatiquement — plus besoin que chacun synchronise son propre compte
- Badges Remontada/Collapse pour les coéquipiers — calculés pour vos co-joueurs synchronisés en même temps que vous
- Panneau de légende fixe (Teammates) — un panneau flottant affiche la couleur de chaque membre de l'escouade pendant tout votre défilement dans la section squad
- Préférences mémorisées entre sessions — le joueur sélectionné et la langue sont mémorisés dans le navigateur ; les filtres survivent aux mises à jour
v6.3 — Noms localisés, records escouade & détails médailles
- Cartes et modes dans votre langue — noms de cartes, playlists et modes de jeu en français (ou anglais) sur toutes les pages : filtres, tableaux, graphiques et histogramme de winrate
- Description des médailles au survol — survolez une médaille dans le scoreboard ou la section Citations pour lire sa description
- Records all-time de l'escouade — la page Teammates affiche les meilleurs records en carrière pour chaque membre (K/D, kills, séries…) avec annotations colorées par joueur et vue détaillée par carte
- Badge Top Killer 🔫 — affiché sur la timeline Impact pour le premier joueur à atteindre 10 kills dans le match
- Histogramme temps de premier kill/mort revu — graphique en papillon miroir avec intervalles de 15 secondes et temps réel de jeu (décompte pré-partie soustrait)
- Dernier match amélioré — carte et mode fusionnés ; les cartes MMR, Kills et Deaths affichent aussi le score équipe adverse avec un écart coloré ; le score de performance apparaît directement à côté du rating
- Médailles et citations en grille 4 colonnes — scoreboard plus lisible ; armes en grille 2 colonnes avec bonne proportion de miniatures
- Recherche partielle par ID de match (Explorer) — tapez 3+ caractères d'un ID de match pour filtrer instantanément la liste
- Histogramme de cadence de kills — nouveau graphique (onglet Combat) : kills par intervalles de 15 secondes pour vous et les ennemis, avec moyenne mobile par équipe
- Heatmap d'intensité de match — visualise la densité de kills par phase sur l'ensemble de vos matchs
- Auto-indexation de la médiathèque — vos clips sont re-scannés automatiquement en arrière-plan après chaque sync
- Corrections — citation Spartan Carnage corrigée ; noms corrects dans les notifications Discord ; calendar de filtres avec navigation libre entre les années
v6.2 — Badges Comeback & vue escouade unifiée
- Badges Remontada / Collapse / Contre-Remontada — l'app détecte les scénarios de comeback dans votre historique : Remontada (vous étiez perdants à mi-match et vous avez gagné), Collapse (vous meniez et avez perdu), Contre-Remontada (vous avez stoppé le comeback adverse)
- Vue escouade unifiée — les vues 1-vs-1 et escouade fusionnent ; vous obtenez les mêmes graphiques riches pour 1, 2 ou 3 amis
- Graphique Kills ↑ / Morts ↓ — kills et morts fusionnés en un seul graphique miroir par membre, pour comparer les arcs K/D d'un coup d'œil
- Noms de modes cohérents — les libellés de modes de jeu sont désormais homogènes sur toutes les pages et tous les graphiques
v6.1 — Sync plus rapide, bugs corrigés
- Sync ~30–40 % plus rapide — chaque synchronisation se termine nettement plus vite
- Noms de rangs corrects — le rang affiché correspond désormais au vrai palier (ex. « Lance Corporal Diamond 1 »)
- Corrections : scores de performance et vues matérialisées toujours à jour après sync
- Rank history — LUSR and CSR rating per playlist over time, with your rank name at each step
- Path to Hero — projection chart showing how close you are to the Hero rank
- Career KPI cards — 8 cards at a glance: matches played, total time, frags, deaths, assists, accuracy, time alive, W/L/T/DNF bar — each color-coded against your all-time average
- Commendations — monitor your Halo commendations with medal grids and per-medal distributions
- XP progression — XP curve with multi-player comparison overlay
- Explorer — browse all your matches with cascade filters (map, mode, playlist, outcome, date, session), partial match ID search, and encounter badges
- Last Match — full scoreboard with K/D, medals, weapons, performance score, impact badges, and encounter history panel for recurring opponents
- Kill cadence — kills by 15-second intervals for you and the enemy team, with moving-average overlay — see exactly when the pace shifted
- Match intensity heatmap — kill density per game phase (early/mid/late) across all your matches at a glance
- Comeback badges — Remontada (you were losing and came back), Collapse (you were winning and blew it), Contre-Remontada (you stopped the enemy comeback)
- Session comparison — side-by-side analysis of two play sessions
- Activity heatmap — win rate and activity by day of week and time slot
- Unified squad view — same rich charts for 1, 2, or 3 friends; works for all party sizes
- Per-player intensity heatmap — see each squad member's kill profile by game phase across shared matches
- Squad records — career bests for each member (K/D, kills, streaks…) with per-map breakdown
- Synergy radar — per-minute stats and complementarity across your squad
- Kill cadence per player — synchronized kill tempo across shared matches
- Impact timeline — narrative badges (Top Killer, Silent Hero, False Brother…) per match
- Media library — browse screenshots and video clips linked to their match; filter by owner, map, mode, outcome, or solo/squad context
- Auto-indexing — clips re-scanned automatically every few hours and after each sync
- Discord alerts — configurable notifications after sync and after backfill, independently
- One-click setup — Xbox Device Code login (
xbox.com/activate) with automatic player provisioning; no Azure account required
Main dashboard: multi-page navigation and real-time interactive charts.
Advanced filters (type, playlist, mode, map,session/period), Time-to-First-Kill vs First Death distribution, and per-match performance score.
| KDA | Cumulative performance & trend |
|---|---|
K/D ratio with trend, cumulative performance score, average lifespan and combat skills.
| Distributions | Correlations |
|---|---|
Histograms for accuracy/kills/scores with means and medians — scatter plots (time alive vs kills, etc.).
Win rate and activity heatmap by day of week and time slot.
| Last match | Scoreboard |
|---|---|
| Impact & Dominance | Antagonists |
Full scoreboard for your latest game (searchable by match ID) — and your most formidable rivals, MVP/LVP, scoreboard, commendations (Halo 5 inspired) grid and medal distributions.
| Squad overview | Session stats |
|---|---|
| Teammates performance | Squad ranking |
Filter your sessions by squad: compare your stats when playing with friends and see how you and your teammates perform across shared matches.
| Career | Ranks (LUSR/CSR) |
|---|---|
Rank history, progression to Hero, LUSR/CSR per playlist group
| Explorer | Encounter History |
|---|---|
Browse and filter all your matches in detail with the Explorer, including search by player — track recurring opponents and cross-match encounter patterns with the Encounter History view.
| Media library | Commendations |
|---|---|
Browse and search your clips and screenshots linked to their matches (still in beta) — track your commendations with medal grids and distributions.
Prerequisites: Python 3.12+ recommended (3.10 minimum).
1. Download and extract the ZIP (or git clone)
2. Double-click LevelUp.bat
→ Python is installed automatically if missing
→ .venv created, dependencies installed
→ browser opens at http://localhost:8501
3. In the browser: enter your gamertag
4. Go to https://xbox.com/activate and enter the displayed code
→ LevelUp retrieves your profile and starts the initial sync
No Azure configuration required — the app bundles its own client ID.
git clone https://github.com/JGtm/LevelUp.git
cd LevelUp
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[spnkr]"
python launcher.py runThen follow the in-browser wizard (same 2-step flow).
Detailed docs: docs/INSTALL.md
French README: docs/FR/README.md
v6 — Zero configuration. LevelUp bundles its own Azure client ID.
Just launch the app, enter your gamertag, and authenticate via Device Code Flow
(https://xbox.com/activate). No .env.local file or Azure account required.
If you cannot use the interactive wizard (e.g. server/headless setup):
python scripts/spnkr_get_refresh_token.py --device-codeThis prints a code to enter at https://xbox.com/activate, then saves the token
automatically to .env.local.
The bundled LEVELUP_CLIENT_ID is an Azure App Registration tied to this project.
If you fork LevelUp, please create your own free Azure App Registration
(see docs/CONFIGURATION.md) and set:
# .env.local
SPNKR_AZURE_CLIENT_ID=your_own_client_idThis env var takes precedence over the bundled ID.
Full configuration reference: docs/CONFIGURATION.md
| Document | Content |
|---|---|
| INSTALL.md | Detailed installation guide |
| CONFIGURATION.md | Tokens and profiles configuration |
| COMMANDS.md | Common commands cheat sheet |
| ARCHITECTURE_V6.md | v6 architecture (shared matches + i18n assets) |
| SYNC_GUIDE.md | Sync guide |
| BACKUP_RESTORE.md | Backup and restore |
| TESTING_V5.md | v5 testing strategy |
| FAQ.md | Frequently asked questions |
| COMMENDATIONS.md | Commendations system (architecture & usage) |
| COMMENDATIONS_REFERENCE.md | Full commendations reference |
French docs: docs/FR/
Archived docs (not translated): docs/archive/
Contributions are welcome! See CONTRIBUTING.md for guidelines.
| Technology | Usage |
|---|---|
| Python 3.12+ | Main language |
| Streamlit | UI |
| DuckDB 1.4 | OLAP query engine |
| Polars 1.38 | High-performance DataFrames |
| PyArrow 23 | Data interoperability |
| Pydantic v2 | Data validation |
| Plotly | Interactive charts |
| SPNKr | Halo Infinite API |
- Halo API: Depends on SPNKr — some endpoints can be unstable or rate-limited. Weapon kills are extracted from match film binary data (SPNKr), not from the stats API; POV coverage ~87.5 %.
This project is licensed under MIT. See LICENSE for details.
- Andy Curtis (acurtis166) for SPNKr
- Den Delimarsky (dend) for Grunt and OpenSpartan
See also ACKNOWLEDGMENTS.md.
Made with passion for the Halo community