Commit Graph

  • 16965a7645 ActivityDetail: fetch timeseries in parallel with detail JSON to cut load time Davide Scaini 2026-05-14 18:22:05 +02:00
  • c36b95e041 segments detect: add --fresh flag to clear efforts before re-detecting Davide Scaini 2026-05-14 17:11:11 +02:00
  • 862226305a Fix segment avg_speed: derive from distance/time; tighten speed bounds to reject false matches Davide Scaini 2026-05-14 17:09:41 +02:00
  • 8ff781661e Fix feedback JSON encoding: use ensure_ascii=False to preserve accented characters Davide Scaini 2026-05-14 17:04:44 +02:00
  • 4d6859b927 NerdCorner: show per-period load instead of cumulative Davide Scaini 2026-05-14 16:42:16 +02:00
  • b32553b0b1 Fix NerdCorner: pass all activities, not only those with power data Davide Scaini 2026-05-14 16:39:57 +02:00
  • 8804bdec37 Add Nerd Corner tab with year-over-year cumulative progress chart Davide Scaini 2026-05-14 16:37:01 +02:00
  • 487ce42361 Explore: type pill dark/light theme split; freeze active pill on hover in dark theme Davide Scaini 2026-05-14 16:24:00 +02:00
  • 46445dd1cb Move Invites link from athlete page to settings; type pill active state contrast fix Davide Scaini 2026-05-14 16:22:31 +02:00
  • ab112788b4 Explore: grey pill background dark-theme only; transparent in light mode Davide Scaini 2026-05-14 16:18:10 +02:00
  • 8d799e8e64 Explore: active type pill solid color bg with auto black/white text contrast Davide Scaini 2026-05-14 16:17:16 +02:00
  • cfb7198d64 Explore: raise inactive type-pill background opacity to 70% for dark theme visibility Davide Scaini 2026-05-14 16:11:48 +02:00
  • 2b9e080b4c Explore: opacity slider heatmap-only; lines mode width-only at 100% opacity Davide Scaini 2026-05-14 16:07:57 +02:00
  • 20bb5bfb60 explore: grey background on inactive type pills for readability Davide Scaini 2026-05-14 15:59:00 +02:00
  • dc719a55d5 explore: show width/opacity sliders in lines mode too Davide Scaini 2026-05-14 15:57:20 +02:00
  • 5593764fdb explore: skip legacy bare-timestamp geojsons; type pill colors visible when inactive Davide Scaini 2026-05-14 15:55:10 +02:00
  • e7228c2be8 explore: plasma palette; width + opacity sliders for heatmap Davide Scaini 2026-05-14 15:48:30 +02:00
  • 298fe3ea39 explore: fix by-type layer visibility — only show selected types Davide Scaini 2026-05-14 15:43:12 +02:00
  • 4e32cf4f21 explore: grey map default; zoom-scaled heatmap lines; fix all/none type buttons Davide Scaini 2026-05-14 15:35:40 +02:00
  • a75fabecb9 explore: thicker heatmap lines (4px + blur) Davide Scaini 2026-05-14 14:57:39 +02:00
  • b3c41967f6 explore: replace gaussian heatmap with line-accumulation (strava-style) Davide Scaini 2026-05-14 14:54:47 +02:00
  • 6d13993f98 explore: default heatmap/by-type; month All button; bbox filtering on map move Davide Scaini 2026-05-14 14:45:54 +02:00
  • 537d1bb712 explore: exclude indoor/virtual activities from tracks.json Davide Scaini 2026-05-14 14:34:44 +02:00
  • 5307ae287c Explore: personal GPS heatmap tab under Athlete page Davide Scaini 2026-05-14 14:31:21 +02:00
  • 2daa66d7b0 about: add Satispay donation button + QR code; remove feedback button (all locales) Davide Scaini 2026-05-14 11:11:34 +02:00
  • 1a7d1dc8c3 serve: complete CurrentUserResponse model (add wiki_access, activity_access, dem_configured) Davide Scaini 2026-05-14 11:06:35 +02:00
  • e7c5af0d01 Nav: add Planner link for logged-in users (mirrors wiki link strategy) Davide Scaini 2026-05-14 10:44:46 +02:00
  • a10164b932 metrics: fall back to GPS-derived speed in compute_best_efforts when device speed absent Davide Scaini 2026-05-14 09:16:01 +02:00
  • c85d2edf39 dev: fix _start_serve to set deps.data_dir/site_dir (not srv.*) after Step 3 split Davide Scaini 2026-05-14 00:09:41 +02:00
  • 7ec91b0e6a refactoring.md: update Step 4 to reflect as-built (post-split routers) Davide Scaini 2026-05-14 00:04:52 +02:00
  • 27f6d141f7 Refactor step 4: narrow broad except Exception catches Davide Scaini 2026-05-13 23:58:14 +02:00
  • 8380b1d2cc Refactor: split serve/server.py (3220 lines) into focused modules Davide Scaini 2026-05-13 23:47:19 +02:00
  • 2ec4d9157c Refactor: extract edit UI HTML into bincio/edit/templates/edit.html Davide Scaini 2026-05-13 23:19:19 +02:00
  • 9dd533825f Fix pre-existing test failures in test_writer and test_metrics Davide Scaini 2026-05-13 23:15:26 +02:00
  • e61d05fc41 Refactor: extract shared image upload utilities into bincio/shared/images.py Davide Scaini 2026-05-13 23:13:08 +02:00
  • cd97e4cc87 CORS: allow all *.bincio.org origins (for planner.bincio.org) Davide Scaini 2026-05-13 22:51:00 +02:00
  • 58a5d5b450 Strava sync: skip import when a FIT-file upload already covers the same start time Davide Scaini 2026-05-13 21:52:07 +02:00
  • fb033e3da2 Search: auto-load all year shards when a query is entered so full history is searched Davide Scaini 2026-05-13 21:17:55 +02:00
  • e4b53dde44 Nav: move Wiki to right-side menu (desktop + hamburger); fix missing element when PUBLIC_WIKI_URL unset in rebuilds Davide Scaini 2026-05-13 20:50:04 +02:00
  • a4b4d11fc0 Nav: move Ideas and About to right-side menu (desktop + hamburger) Davide Scaini 2026-05-13 20:44:54 +02:00
  • fc012b5311 pull_feedback: highlight new submissions since last pull Davide Scaini 2026-05-13 20:36:40 +02:00
  • b5a1e881fb delete plan Davide Scaini 2026-05-13 20:07:26 +02:00
  • b9a21e8bcc ideas: add inline edit for own ideas (author + admin) Davide Scaini 2026-05-13 19:52:25 +02:00
  • aa1c0b38c0 ideas: add Feedback button to header Davide Scaini 2026-05-13 19:48:34 +02:00
  • c2c4cb9f3a segments: fit initial map view to all existing segments Davide Scaini 2026-05-13 19:41:59 +02:00
  • d82033fd84 ideas: update bug report link text Davide Scaini 2026-05-13 19:34:02 +02:00
  • c30a15d295 ideas: add done/reopen status toggle for admins Davide Scaini 2026-05-13 19:32:30 +02:00
  • 38f2e51788 ideas: add Ideas page, nav link; remove feedback button from About Davide Scaini 2026-05-13 19:29:39 +02:00
  • 9553ca5ce7 ideas: add JSON-file-backed ideas API (list, create, vote, delete) Davide Scaini 2026-05-13 19:27:54 +02:00
  • cf9817e853 segments: clear stored efforts before rescan so stale entries are removed Davide Scaini 2026-05-13 16:35:44 +02:00
  • 6e92ea4fce segments: reject false efforts via geometric speed check Davide Scaini 2026-05-13 16:31:00 +02:00
  • 994f4287ef Dedup segment efforts by started_at to handle same activity stored under two IDs Davide Scaini 2026-05-13 16:20:10 +02:00
  • ad9e428b1e Fix UnicodeEncodeError: sanitize surrogate pairs before JSON writes in merge.py Davide Scaini 2026-05-13 16:16:58 +02:00
  • c837464a28 Exclude indoor/virtual activities from records and power curve Davide Scaini 2026-05-13 16:05:26 +02:00
  • 2395a6e566 Fix segment effort duplicates; auto-scan on segment creation Davide Scaini 2026-05-13 15:58:57 +02:00
  • cb3c9b6e41 Move search bar above sport/date filters, below page title Davide Scaini 2026-05-13 11:54:37 +02:00
  • 861748a059 ActivityFeed: add title search bar with URL sync Davide Scaini 2026-05-13 11:51:14 +02:00
  • f00e5e47b2 SegmentDetail: sort efforts by time by default, sortable column headers Davide Scaini 2026-05-13 11:17:22 +02:00
  • 0ff5473dfd Athlete segments tab: link best time to activity; expandable effort list Davide Scaini 2026-05-13 08:40:39 +02:00
  • 59cf99f0af Fix stuck segments tab; add /segments/ dev fallback Davide Scaini 2026-05-13 08:35:00 +02:00
  • b8fd4e4ded Move segment rescan button from segments list to athlete/segments tab Davide Scaini 2026-05-13 08:20:05 +02:00
  • d7fd585e77 Add global segment rescan: POST /api/me/segment-rescan + Rescan all button Davide Scaini 2026-05-13 08:17:18 +02:00
  • f2075e29d2 Segments Phase 4: detail page, activity efforts, athlete tab, new APIs Davide Scaini 2026-05-13 08:09:24 +02:00
  • c7f0013e57 SegmentCreate: prompt after save instead of immediate redirect; update plan Davide Scaini 2026-05-13 01:03:34 +02:00
  • 6c9de35426 Enforce 500 m minimum segment length in UI and API Davide Scaini 2026-05-13 00:56:04 +02:00
  • e9e7b5d0e7 SegmentCreate: add elevation profile that zooms to selected portion Davide Scaini 2026-05-13 00:54:39 +02:00
  • 4d2df860ce Segments Phase 3: detection algorithm, CLI, ingest hook, and efforts API Davide Scaini 2026-05-13 00:50:39 +02:00
  • 61db0734d2 Move segment shortcut next to Edit button, shorten to '+ segment' Davide Scaini 2026-05-13 00:39:51 +02:00
  • dd9f7a82dc Segments phase 2: /segments/ browse page, /segments/new/ creation flow, activity detail shortcut Davide Scaini 2026-05-13 00:36:44 +02:00
  • 79cad29ff1 Segments phase 1: models, store, and API endpoints (GET/POST/DELETE /api/segments) Davide Scaini 2026-05-13 00:19:15 +02:00
  • 6b2698c0c5 Mark fallback NP computation for future removal Davide Scaini 2026-05-12 23:52:19 +02:00
  • c46e91d0f5 Compute NP from timeseries in frontend for activities missing np_power_w in JSON Davide Scaini 2026-05-12 23:51:22 +02:00
  • bd0595ee79 Add avg power and NP to activity summary; NP uses Coggan 30s rolling-average method Davide Scaini 2026-05-12 23:47:06 +02:00
  • f1fec6d825 ActivityCharts: smoothing toggle (Raw/10s/20s) for all line chart metrics Davide Scaini 2026-05-12 23:37:41 +02:00
  • a5db6142b3 ActivityCharts: 10s rolling mean on cadence and power line charts (display only) Davide Scaini 2026-05-12 23:32:33 +02:00
  • 1298586a74 ActivityCharts: extend reference lines to HR; use high-contrast label styling Davide Scaini 2026-05-12 23:29:09 +02:00
  • 3231fdb4b7 ActivityCharts: add avg/P20/P80 reference lines to speed, cadence, and power line charts Davide Scaini 2026-05-12 23:24:33 +02:00
  • 0b266d208c Strip pre-2000 leading points to prevent epoch-zero start time and absurd duration Davide Scaini 2026-05-12 23:11:33 +02:00
  • 867da767eb Add sub_sport editing to activity edit drawer Davide Scaini 2026-05-12 23:01:12 +02:00
  • 93f6109028 Add hamburger menu for mobile nav Davide Scaini 2026-05-11 11:37:33 +02:00
  • 8fbbf460a9 Add PWA icons and manifest for iOS/Android home screen Davide Scaini 2026-05-11 11:17:13 +02:00
  • 14313ec59c Add Disconnect button to Strava section of upload modal Davide Scaini 2026-05-10 17:12:55 +02:00
  • 1eaf5c4e0b Remove TS annotation from define:vars script (caused parse error) Davide Scaini 2026-05-10 17:10:38 +02:00
  • 5be58f4e1c Fix Strava OAuth popup detection via postMessage (cross-origin safe) Davide Scaini 2026-05-10 17:04:30 +02:00
  • 695dc9fdce Fix Strava re-auth when credentials change; add disconnect button Davide Scaini 2026-05-10 16:33:52 +02:00
  • 8f028101c7 Fix elevation gain inflation from device no-fix leading zeros Davide Scaini 2026-05-10 16:21:24 +02:00
  • 55d59112ad Fix: don't copy 9 GB data dir into dist/ during production builds Davide Scaini 2026-05-08 13:56:31 +02:00
  • 2287d6e2ee Add Strava sync status report and manual trigger to admin panel Davide Scaini 2026-05-08 13:44:23 +02:00
  • 12693dbd60 feat: scheduled Strava sync + admin suspend/delete account Davide Scaini 2026-05-08 10:36:21 +02:00
  • 680ef9d440 Hide edit controls on activities the logged-in user does not own Davide Scaini 2026-05-03 18:51:52 +02:00
  • 48ffc5be8e Hub: add SW cleanup on load; add self-unregistering sw.js to kill stale Astro SW Davide Scaini 2026-05-03 18:47:30 +02:00
  • 8c10ff5574 fix card hub not being showed Davide Scaini 2026-05-02 23:10:28 +02:00
  • 9540cdd6cb Replace Astro hub build with standalone hub/index.html mobile_app Davide Scaini 2026-05-02 22:49:32 +02:00
  • 58def4bf02 weird characters Davide Scaini 2026-05-01 23:49:48 +02:00
  • e0b5a55ccc fix(dev): pass --host 0.0.0.0 to astro dev when --mobile, print LAN URL Davide Scaini 2026-05-01 22:20:19 +02:00
  • 12ef5100ef fix(hub): greeting above tagline, no punctuation Davide Scaini 2026-05-01 22:08:27 +02:00
  • 0ab62aa961 fix(hub): activity card links to /u/{handle}/ when same origin to avoid hub loop Davide Scaini 2026-05-01 22:07:01 +02:00
  • 1f11bee730 feat: bincio.org hub page (login / app selector) and grants_activity invite toggle Davide Scaini 2026-05-01 22:04:30 +02:00
  • 82288a35ea feat(auth): wiki/activity access flags, SESSION_DOMAIN, wiki nav link Davide Scaini 2026-05-01 21:56:02 +02:00
  • f6e9fe8198 feat(serve): debounced site rebuild — burst uploads trigger one build, not N Davide Scaini 2026-04-30 21:23:29 +02:00