Skip to content

Releases: Wewoc/Garmin_Local_Archive

v1.6.3.1 — Heatmap Dashboard

Choose a tag to compare

@Wewoc Wewoc released this 03 Jul 13:37

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

Choose a tag to compare

@Wewoc Wewoc released this 02 Jul 15:59

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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.2.1 — Build: T3 ZIP Structure + Docs Path

Choose a tag to compare

@Wewoc Wewoc released this 30 Jun 17:27

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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.2 — Sleep Dashboard + Intraday Explorer

Choose a tag to compare

@Wewoc Wewoc released this 30 Jun 14:56

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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.1 — Encrypted Dashboard Export

Choose a tag to compare

@Wewoc Wewoc released this 29 Jun 15:01

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 to basedir/encrypted/ with _enc suffix.
    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 with file:// 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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.0.7 — Dropdown Indicators, Device Table Edit, Single Instance

Choose a tag to compare

@Wewoc Wewoc released this 28 Jun 14:50

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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.0.6 — Documentation, Tooltips & UI Polish

Choose a tag to compare

@Wewoc Wewoc released this 27 Jun 10:51

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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.0.5 — Dashboard Render Registry

Choose a tag to compare

@Wewoc Wewoc released this 26 Jun 14:12

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.py reduced 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.py files

Downloads:

  • Garmin_Local_Archive_Standalone.zip — recommended, no Python required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.0.4.9 — Audit Hardening: Silent-Failure-Fixes

Choose a tag to compare

@Wewoc Wewoc released this 25 Jun 07:07
3b795eb

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.py now uses typed exceptions instead
    of fragile string matching — prevents silent ban escalation on library updates
  • source_api_log.json history 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 as raw/ failures

Downloads:

  • Garmin_Local_Archive_Standalone.zip — recommended, no Python required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog

v1.6.0.4.7 — Silo-Reconciliation-Check

Choose a tag to compare

@Wewoc Wewoc released this 23 Jun 18:39
f40aa76

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 required
  • Garmin_Local_Archive.zip — standard, Python 3.10+ required

Full changelog