BETA 0.11
2026-10-25GitHub-generated release notes for changes since v0.10.0.
- release(0.10.0): backport the release content into dev
- docs(agents): orchestrator lessons for the Strava removal run (2026-10-20)
- docs(adr): move 0008/0009 to implemented, mark 0002/0005 superseded
- ci: add Next.js build caching to the verify job
- ci: enforce npm run lint in the verify job
- docs(testing): founder-walkthrough evidence pack + Interland 2026 walkthrough script (#476)
- docs(agents): speed post-mortem (run 554/476) + session.link correction
- feat: import activities from intervals.icu behind a source-agnostic import seam (#537)
- fix(deps): clear GHSA-698v-4r3x-3vcv — transitive vite 8.3.2 → 8.3.4 (npm audit fix)
- docs(agents): orchestrator method — definition gate, findings-in-run, resource guard, self-improvement loop
- test: wire suggestion-allowance race harness to npm script + dispatch-only CI (#585)
- test(e2e): no-track suggest path UI spec (walkthrough case 5)
- test(e2e): suggestion-allowance counter countdown + reset visibility (#583)
- test(e2e): opt-in capture path for the suggest/accept/degrade transitions (#584)
- feat(splits): import split times from image input via OCR (#511 phase 2)
- feat(alignment-assist): connector-graph constraint for symbol matching (#581)
- fix(e2e): unbreak the nightly — cookie origin contract, service-worker route-mock bypass, chart locator drift
- fix(alignment): reconcile the stale-transform claim — seam hardening + hosted findings (#549)
- ci(verify): shard the vitest suite across a parallel matrix (#579)
- fix(theme): stop System-mode theme flips outside OS or sign-in changes (#388)
- fix(maps): graceful missing map image error path (#548)
- fix(e2e): tame the nightly — project-scoped half-shards, CI budget drift, dev-server memory-restart class
- feat(controls): import-undo ledger — one-step revert for batched control applies (#521)
- docs(agents): run retro 2026-10-21 — hosted-migration merge gate + CI-watch handoff
- docs(agents): method delta 2026-10-21 — findings sweep, marker fields, decision routing, harness scars
- test(e2e): unmask the sibling chart viewport cases — per-viewport chart contract replaces .first() masking
- docs(roadmap): 2026-10-21 review — record the 0.9.0 features the changelog missed
- chore(e2e): cut nightly artifact storage — report-only upload, 3-day retention, CI video off
- ops(e2e): run e2e-nightly on self-hosted runner (dibber-e2e, Proxmox VM 105)
- docs(agents): method delta 2026-10-22 — Proxmox provisioning scars, CI-infra parity diff, audit-fix no-op
- ops(e2e): park the self-hosted runner — nightly back on hosted
- refactor(analytics): one loss engine feeds every loss-bearing surface (#631)
- feat(results): official times drive the analysis clock — results snapshot + stored control times (#632)
- fix(security): allow PostHog EU origins in the CSP (#669)
- ops(ci): route PR checks to gha-e2e-1 (VM 105) during billing outage — interim (#679)
- feat(results): IOF XML 3.0 results import end-to-end for a whole class (#633)
- fix(security): clear critical audit advisories — next 16.4.2, dompurify 3.4.17
- feat(comparison): two-runner comparison core — attested comparison track, both routes, per-leg deltas (#638)
- fix(e2e): workspace-tables seeds merge into stored tables on reload (#672)
- test(e2e): wire workspace outcomes into the mock rpc() seam (#674)
- docs(agents): run-1 method retro deltas — integrate-before-gates, migration union, reconciliation order
- docs(agents): runbook §10 — PR-checks duty on interim self-hosted runner (VM 105) (#681)
- docs(billing): record the first dev-entitlement grant (jp353239@gmail.com, 2026-10-22)
- feat(results): match-else-create + the dedicated mismatch review (#634)
- feat(analytics): rebase time loss onto ADR 0014 — recorded minus reference, signed (#636)
- feat(results): IOF XML 2.3 + the results replacement lifecycle (#635)
- feat(analyze): the canonical time-lost table — ranked by loss, both references, expandable basis, inline causes (#637)
- feat(fonts): self-host the app fonts, drop the build-time Google dependency
- fix(analyze): label the base-pace control as a shared setting (#691)
- test(stability): make the theme flip-race and leg-loss-rebasis suites load-deterministic (#692)
- Record the live recovery-run results in the runbook (#119)
- feat(comparison): per-leg route-choice read, results-only deltas, share-link exchange (#639)
- docs(marketing): weekly measurement review 2026-10-23
- Intervals.icu browsing: date range, search, pagination + persistent browse state (#642)
- Sample race mechanics: read-only example + one-click editable copy (Part of #641)
- T24 (#654): Web Vitals RUM, measured loop budgets, suite wall-clock signal + documented baseline
- feat: reliability contracts & audits — missing objects, boundaries, rate limits (#656)
- feat(import): route-file reliability — undoable route imports, replace-means-replace, byte-identity dedupe (#645)
- perf(build): ship only the wasm-only ONNX pair in every deployment (#726)
- test(e2e): mobile-safari reliability + case-8 allowance-counter evidence (Part of #658)
- T16: large-input handling — cap lift, progress + recovery, PDF journey, stitch budget (#646)
- feat(season): season overview — year-over-year totals + absorbed cause block (#640)
- feat(import): one unfinished-imports surface + splits-draft crash recovery (PR-1 of #648)
- chore(repo): tooling debris cleanup + narrow transient-state ignores (T29)
- #654 follow-up: web-vitals delivery observability — SDK bot filter, remote config, envelope decoder, CSP
- feat(import): phone import layouts — reduced multi-scan steps, compact split review, alignment capture bar (#647)
- feat(perf): prod-build nightly via shared harness, runtime memory guards, worker prod smoke, v2 timing baseline (#655)
- test(import): #645 follow-up — serialized accepts, e2e journeys green, mirror zero-write restore
- feat(import): #644 upload breadth — dashboard one-tap, multi-file routes, recent search, WebP
- feat(storage): map-reference repair — log-only evidence, evidence-free retirement, gated schedule (PR-2 of #648)
- fix(analytics): dedupe optoutuseragent_filter — restore dev-tip typecheck (#759)
- feat(a11y): #650 accessibility mechanics — contrast audit, token sweep, disclosure/tab semantics, dialog focus stack, zoom-guard regression, shortcut reconciliation
- T27: write safety — undoable OCR metadata + map raster commits, byte-pinned pre-images, per-PR smoke, parked harness schedules (#657)
- feat(stitch): #749/#750 attempt-and-degrade ladder + bounded decode — stitching works on phones
- #748 + #751 — action-button layout sweep + map drag-handle touch targets (batch)
- fix(e2e): #777 smoke gate — results-clock follows the #761 tablist contract; subset serialized against the dev-server reload hazard
- #650 follow-up: audit-measurement corrections and e2e hardening (post-#761 delta)
- help(import): splits article, HelpLinks on every import tab, connection + undo copy accuracy (#649)
- T22 (#652): touch & keyboard reliability — shortcuts, banner clearance, OSK cover, tablet band, large-track touch journey, measured save latency
- test(e2e): #751 map-handle touch audit — working selection, probes and geometry pins
- feat(export,analyze): #754 Picture/Data subtabs + #755 stops projection layout + #756 phone detail-list toggles (batch)
- feat(import): #744-#747 surface repair — Route File order, split import host, Connections tab, Multi-scan stitch rename
- Write safety: map replacement commits + clearMapFile metadata reset through the undo ledger seam (#735)
- test(import,billing): #762 measured wait budgets + #720 virtual-time billing envelope
- ci hygiene: zod manifest floor bump (#731) + class-wide step-strip lookup sweep (#778)
- T30: Repo cleanup — archive superseded drafts, docs accuracy, dead code (#660)
- feat(analyze): #752 drop the fresh status text + #753 chart collapse folds the sheet (batch)
- test(e2e): e2e stability batch — #734 + #738 + #742 (root-cause classification, mirror-drift fix, Overpass stubs, loader-loop product fix)
- Route prepare/publish/close-issue workflows to the self-hosted fleet (unblocks 0.11.0)
- Palette AA batch: #704 accent retune · #766 muted-foreground darken · #774 arrow opacity
- fix(workspace): mobile-safari trio — draw-entry render loops (#719), first-vertex drag/undo wiring (#718), map-image-missing fixture bootstrap (#724)
- feat(season): #795 /season route + Season card — outcome hero, highlight cards, progress curve, cause ranking, why bullets, one CTA, Details & basis
- fix(settings): #712 user_settings write fence — per-column write stamps + fenced write seam
- fix(map,workspace): #773 popup rebuild · #772 phone fit padding · #770 panel state · #715 cause-stats root cause
Includes 0.11.0
BETA 0.10
2026-10-20Strava import is removed — imported tracks are now ordinary, shareable, analysable data — and the Garmin help tells the real way to get watch data in.
- Strava import is gone: the import tab, the connection and everything behind it are removed. Getting activities in from files (FIT/GPX/TCX) is unchanged.
- Tracks imported from Strava were retired as announced in 0.9.0. If you want to keep one, export it from Strava and import the file here.
- Every track is now treated alike: imported tracks can be shared by link, feed text recognition and the analysis features, and are geocoded and given elevation like any other data — the Strava carve-outs are gone.
- The Garmin help now tells the true story: file import works today, and an auto-sync import through intervals.icu is planned but not available yet. Runalyze users export the file; MyFitnessPal is not a track bridge.
Includes 0.10.0
BETA 0.9
2026-10-20Less setup when aligning a map — suggest placement, real landmark matching and rough placement by hand — plus shareable analysis links, PDF map rendering, a 30-day deleted-map safety net, leg mistake tags with season stats, split-time import and CSV/JSON data exports.
- "Suggest placement" pre-aligns a map image using your file-imported track, the map's own text and its printed course symbols: you get an editable draft of labeled, matching landmarks to confirm or discard, instead of clicking every pair from scratch.
- On maps with little readable text, the assist matches the printed course symbols (start, controls, finish) to where your track actually goes — real landmarks you can grab and refine. When there is nothing trustworthy to match, it says so and suggests an area or falls back to manual pairs — never invented points.
- Rough placement by hand is now a first-class path: drag, rotate and scale the map roughly into place. A hand-placed map counts as placed; landmark pairs refine it on top.
- Rotated and skewed map photos can be straightened and perspective-corrected before placement; the original image is always kept and restorable.
- One suggested placement per month is included on Free, unlimited on Plus, and one per session for guests.
- Deleted map images land in "Recently deleted" for 30 days with one-click restore — a safety net for every map you remove or replace.
- Map PDF pages now render everywhere the map image does — upload, alignment, thumbnails and exports.
- The legal pages (Terms, Privacy, Cookies, Billing and Refunds) are consolidated into a single Legal page in the account menu.
- Share an analysis by link from the project menu: one link per project, unlisted by default so only the people you send it to can open it.
- Making a page public is an explicit, revocable choice that lets search engines index it. Stopping sharing kills the link immediately, and sharing again always issues a new URL.
- Shared pages show the map, route, legs and charts read-only, with a "Made with Dibber" link and a branded preview image for WhatsApp and social apps.
- Import split times by pasting a results list: the times are parsed into an editable review table you can correct row by row, and they place your controls along the track. The control positions are saved; the times shown in the analysis stay the ones your track records.
- Tag each leg with what went wrong as you review a race — route choice, lost map contact, pace, technique or other — from a fixed list. You enter and edit every label yourself; nothing is inferred from GPS.
- A season view on the home page: for a year you choose, how often each cause appears across your races and how much time is attributed to it, with tagged and untagged legs kept apart and unattributed loss shown separately. Every time-loss total shows the calculation basis behind it.
- Download your analysis data as CSV or JSON — legs, splits and notes — for a spreadsheet or another tool. PDF and PNG exports still cover printing.
- Strava import is being removed: new Strava connections and imports are disabled from this release, and previously imported Strava tracks are being retired. Export what you want to keep from Strava and import the file (FIT/GPX/TCX) here — file import is unchanged.
Includes 0.9.0
BETA 0.8
2026-10-15App-wide dark mode and free project templates.
- Dark mode across the whole app — choose Light, Dark, or System, and your choice follows you across devices; maps and thumbnails switch with it.
- Project templates, free for everyone: save a project's tags, export settings, and map layer from its Export step, then reuse them when creating a project.
- Drawing mode rework: draw off-grid by default, drag midpoints and whole shapes freely, connector handles between segments, and a mobile action bar.
- Dedicated guest entry mode on login, so trying Dibber without an account is a first-class path.
- Export step: exports always render in light mode, with a Simple/Advanced switch and project templates offered in the home menu.
- Strava privacy: cloned projects and templates keep a Strava track's original 7-day expiry instead of storing it indefinitely.
- Phone polish: bigger touch targets, adaptive layouts, and text that scales with your browser font size.
- Analyze step: the outcome / why / action summary is redesigned so the key takeaways are easier to read.
- Units & Formats settings: live date examples show your choices, and your date format now applies consistently across the app.
- Improve step: compact status-bar stats with deltas and terrain-factor sliders that track your pointer smoothly.
- Drawing: following a path to gather local roads is now reliable even when map services stall.
- Home: favorited projects no longer repeat in All projects.
Includes 0.8.0 – 0.8.2
BETA 0.7
2026-10-11Smoother route drawing, base-pace previews in Analyze, and export presets that remember your last choice.
- Insert points into an existing leg while drawing using new midpoint handles, so you can refine a route without redrawing it.
- Adjust your base pace in Analyze to preview how each leg would look at a slower or faster effort.
- The export panel auto-applies your last used preset when it opens.
Includes 0.7.0
BETA 0.6
2026-10-11Import your Strava activities as routes, a clearer subscription settings page, and renewal reminder emails.
- Connect your Strava account in Settings and import activities straight into your projects as routes, with sport filters and multi-select.
- Strava routes stay a live view of your account: cached data refreshes on demand, and disconnecting or deleting an activity on Strava removes it from Dibber.
- Redesigned subscription settings with separate Plan, Usage and Manage cards, clearer status notices, and usage meters for projects, recognitions and storage.
- Renewal reminder emails three days before Dibber Plus renews, plus a heads-up when your trial is about to end.
- New Get Plus entry points in the navbar and on the homepage, with a Dibber Plus pitch that appears once the paid plan is on sale; purchasing itself is still gated.
- New help center at /help with articles covering importing files, map alignment, text recognition, Strava and Garmin imports, route editing, performance analysis, exporting, plans and limits, settings and your data.
- Contextual help links next to key features, so the right article is one click away where you need it.
- Garmin guidance: a dedicated help article plus in-app hints for manual FIT/GPX/TCX export and the Garmin-to-Strava auto-sync bridge.
Includes 0.6.0 – 0.6.3
BETA 0.5
2026-10-09A clearer analysis workspace on every screen and new public pricing and policy pages.
- Clearer, selectable analysis charts and complete leg comparison metrics, with touch-friendly control editing.
- Clearer export actions and readiness, with layouts adapted for tablets and landscape phones.
- A discoverable phone review sheet for checking your route on the go.
- New public Pricing and Refund Policy pages, plus updated Billing, Terms, Privacy and Cookie pages.
Includes 0.5.0
BETA 0.4
2026-10-04A more usable mobile workspace, clearer map alignment, and more reliable project creation, imports, and route analysis.
- Improved layouts for phones, tablets, and desktops.
- Easier map alignment with clearer touch controls.
- Install Dibber as an app from supported browsers.
- More reliable project thumbnails, project creation, and batch imports.
- Clearer error handling when extracting information from maps.
Includes 0.4.0
BETA 0.3
2026-04-19Support for multiple imported image maps, route savings on the home screen, and a new optimized final pace/time stat.
- Import and keep multiple image maps in a single project so you can compare and work across more than one map without splitting the session.
- See a home-screen best route savings summary for a quicker overview of where the biggest gains came from.
- Get an optimized final pace/time stat in the main section to make the final route result easier to read at a glance.
Includes 0.3.0
BETA 0.2
2026-03-30More reliable imports, better route analysis defaults, and stronger guest support.
- Keep guest accounts with clearer retention warnings and a safer temporary-data flow.
- Fix mobile signup and account flows so onboarding works more reliably on mobile.
- Default the Analyze tab to the best route and reuse route controls more consistently across analysis tools.
- Preserve pending import handoff across reloads and multi-tab use so interrupted work is easier to resume.
Includes 0.2.0
BETA 0.1
2026-03-17Dibber's first production baseline with the core route-analysis workflow: upload runs, align maps, compare legs, and export.
- Upload GPX tracks and map images, then align maps against routes.
- Extract course information from the map image with self-evaluation, auto-extracted control points, and a pacing model.
- Analyze track surface and way type across your routes.
- Compare legs with split-focused route analysis, pace modeling, terrain overlays, and map-based review tools.
- Export clean review maps for coaching and sharing, and sign in with a normal or guest account.
Includes 0.1.0