Releases: Wewoc/Garmin_Local_Archive
Release list
v1.6.3.1 — Heatmap Dashboard
New Heatmap dashboard visualizing six metrics (Heart Rate, Steps, Stress,
Body Battery, SpO2, Respiration) as time-of-day × date grids.
While building it, two independent long-standing bugs surfaced and got
fixed along the way:
- SpO2 and Respiration intraday data was being silently dropped by the
data broker for every dashboard, not just this new one — a structural
mismatch between how Garmin's raw data is shaped and how it was being
read. No data was ever lost (the raw archive was always correct), but
none of it reached any dashboard. - Respiration's quality assessment was checking a key name that doesn't
exist, so it could never be labeled as fully present.
Also: the Mirror Import dialog no longer asks you to "confirm" a password
you're just unlocking, not creating.
Full detail in CHANGELOG.md.
v1.6.3 — Steps Intraday Foundation + Backfill
Adds step count as a full intraday metric (15-minute resolution) alongside heart rate, stress, and Body Battery. A new background timer mode also retroactively fills this data into days you already archived — no need to wait for a fresh sync, and no risk to your existing high-quality data.
What's new:
- Step count now archived at 15-minute intraday resolution, not just the daily total
- New background timer mode automatically backfills step data into already-archived days from the last 140 days — runs quietly in the background, one lightweight API call per day
- Fully additive: never overwrites or downgrades existing data, and both your raw archive and your unmodified source backup get the new field
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.2.1 — Build: T3 ZIP Structure + Docs Path
Hotfix for the standalone build. The Documentation button now correctly opens
Quickstart, User Guide, and README App — the files were previously missing from
the T3 package and were looked up in the wrong location after unpacking.
What's new:
- Documentation button works in T3 (Standalone): QUICKSTART.txt, USER_GUIDE.txt,
and README_APP.md are found and opened correctly - T3 ZIP structure fixed: contents are placed flat in the root after unpacking —
no subfolder nesting
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.2 — Sleep Dashboard + Intraday Explorer
The Sleep Dashboard now includes an embedded intraday detail section.
Click any row in the sleep table to jump directly to that night's intraday
view — Heart Rate, Stress, Body Battery, and Respiration plotted in a
single interactive Plotly chart. No second file, no external links:
one self-contained HTML output.
What's new:
- Sleep Dashboard rows are clickable — jumps to intraday detail for that date
- Four intraday traces inline: Heart Rate, Stress, Body Battery, Respiration
- Date dropdown for manual navigation within the intraday section
- Plotly embedded only when intraday data is present (no overhead for older archives)
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.1 — Encrypted Dashboard Export
Adds password-protected HTML dashboard export for secure transport on USB drives or other
removable media. Encrypted files open in any browser and decrypt locally — no server, no
internet connection, no external dependency required.
Also improves the Mirror password dialog: confirmation field added, password is never saved
to Windows Credential Manager (prevents the silent typo scenario).
What's new:
- 🔒 Encrypted Dashboards — new button in Settings → Export. Builds all HTML dashboards
and encrypts them with AES-256-GCM. Output goes tobasedir/encrypted/with_encsuffix.
Explorer opens automatically. Not triggered by Daily Sync. - Browser-side decryption — the encrypted file is self-contained. Password dialog and
Web Crypto API decryption are embedded inline. Works withfile://protocol. - Mirror password confirmation — Export to Mirror and Import from Mirror now both require
password + confirmation. Password is never cached in Windows Credential Manager.
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.0.7 — Dropdown Indicators, Device Table Edit, Single Instance
Fixes a flaky pre-build-gate test, adds ▼ indicators to all dropdown
selectors, makes device names re-editable after initial assignment, and
prevents multiple simultaneous GLA instances from corrupting the archive.
What's new:
- ▼ indicators on Dashboard, Files, and Sheet dropdowns (Qt6/Windows suppresses native arrows)
- Device table: all non-hardware rows re-editable via double-click (not just "unknown")
- Single instance guard: second GLA launch shows warning and exits cleanly
- Flaky determinism test fixed (timestamp excluded from comparison)
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.0.6 — Documentation, Tooltips & UI Polish
Adds a Documentation button with in-app access to Quickstart Guide, User Guide,
and README. All buttons and input fields now show tooltips. Mirror button labels
are unified throughout the app. Settings left panel widened to 400px for cleaner
Full HD display.
What's new:
- 📖 Documentation button — opens Quickstart, User Guide or README directly in the app
- 💬 Tooltips on all buttons and input fields (Settings + Home panel)
- 🔁 Mirror labels unified: "Export to Mirror" used consistently throughout
- ⬛ Settings left column widened: 340px → 400px (no scrollbar at Full HD)
- ⬛ DATA MANAGEMENT buttons left-aligned with equal width
- 📄 QUICKSTART.txt + USER_GUIDE.txt included in all build targets
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.0.5 — Dashboard Render Registry
The dashboard rendering layer has been restructured: dash_plotter_html_complex.py
is now a pure facade that routes incoming data to the correct renderer via a
registry dict. All rendering logic lives in the new layouts/render/ package
(recovery_context.py, sleep.py, explorer.py). Adding a new dashboard
layout now requires one new file and one line in the registry — no changes to
the plotter itself. Additionally, unbackedup source/ files are now secured
automatically at the end of each Daily Sync without requiring a manual script.
What's new:
- Dashboard render registry —
dash_plotter_html_complex.pyreduced from 1217 to 67 lines - New
layouts/render/package with one file per layout type (Recovery Context, Sleep, Explorer) - Source backup backfill runs automatically after each normal Daily Sync (Step 9b in collector)
- No changes to specialist interface,
dash_runner.py, or any*_dash.pyfiles
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.0.4.9 — Audit Hardening: Silent-Failure-Fixes
Closes all actionable findings from the Dependency Audit (v1.6.0.4.8).
Five targeted fixes across five modules — no new features, no architectural
changes. The tool that exists to catch Garmin's silent data loss should not
itself be a source of silent failures.
What's fixed:
- Rate-limit detection in
garmin_api.pynow uses typed exceptions instead
of fragile string matching — prevents silent ban escalation on library updates source_api_log.jsonhistory is now protected against accidental reset on
transient read errors- Corrupt files in the Garmin map broker are now logged instead of silently skipped
- Unreadable
source/files are now treated conservatively (skip_warn) instead
of being silently overwritten by degraded API responses source/write failures now surface at the same visibility level asraw/failures
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required
v1.6.0.4.7 — Silo-Reconciliation-Check
Garmin Local Archive now detects drift between its data silos before it causes silent gaps in your dashboards. The Silo-Check scans raw/, summary/, source/, and quality_log.json for inconsistencies — old gaps from interrupted runs, manual file operations, or import errors — and surfaces them in the log. Repair fixes all findings automatically with one click.
What's new:
- 🔍 Silo-Check (Settings → Data Management) — read-only scan across all four silos. Results show totals per silo and a finding list per category. Runs in the background, never blocks the UI.
- 🔧 Repair — activates when findings are present. Re-scans before acting (never on stale results), then fixes everything automatically: rebuilds missing summaries from raw, rebuilds raw from existing source files, removes orphan summaries, backfills missing quality log entries.
garmin_silo_check.py— new Leaf-Node module. No writes, no side effects. Read-only by design.
Downloads:
Garmin_Local_Archive_Standalone.zip— recommended, no Python requiredGarmin_Local_Archive.zip— standard, Python 3.10+ required