Commit Graph

  • 3394be4ee9 auth: add RS256 validation via JWKS (Phase 3) main Davide Scaini 2026-06-03 15:43:44 +02:00
  • e24d290127 fix: show reset URL inline in admin table (was hidden in tooltip) Davide Scaini 2026-06-03 12:05:10 +02:00
  • 7e8545f8db fix: redirect back to activity.bincio.org after login via bincio.org Davide Scaini 2026-06-03 11:33:37 +02:00
  • ae2737fed1 fix: admin page script crashes — define:vars bypasses TypeScript compilation; use data attribute instead Davide Scaini 2026-06-03 11:28:38 +02:00
  • 4641ca9b72 fix: show Select button only on own profile feed, not community feed Davide Scaini 2026-06-03 11:11:47 +02:00
  • 7cec9541e2 fix: restore broken <a> tag in nav after Ideas removal Davide Scaini 2026-06-03 11:09:26 +02:00
  • 37e91af5bd feat: move Ideas into Support page tab; remove Ideas from nav Davide Scaini 2026-06-03 11:07:35 +02:00
  • 08f451ec71 feat: recurring budget entries (lazy materialise) + preferred Satispay badge Davide Scaini 2026-06-03 10:47:58 +02:00
  • cf7ce027b1 fix: support page — donate default tab, split community tab, require login Davide Scaini 2026-06-03 10:41:59 +02:00
  • fa14d91359 feat: Support page with budget transparency (replaces About) Davide Scaini 2026-06-03 10:34:18 +02:00
  • b781193d44 feat: bulk delete + merge activities in feed Davide Scaini 2026-06-03 10:32:02 +02:00
  • 5287b98bc1 fix: admin reset-pwd button copies full bincio.org link instead of bare code Davide Scaini 2026-06-03 09:42:24 +02:00
  • 0e5044eb06 fix: close all bincio-auth migration holes Davide Scaini 2026-06-03 09:36:20 +02:00
  • 75f7fa8810 refactoring mobile app location Davide Scaini 2026-06-02 23:28:41 +02:00
  • 5255e24184 feat: default chart x-axis to distance Davide Scaini 2026-06-02 16:49:21 +02:00
  • c59fc0073f feat: pace chart and spm cadence for running/hiking/walking/other Davide Scaini 2026-06-02 16:46:16 +02:00
  • a142e8732f fix: redirect login to bincio.org (bincio-auth) when PUBLIC_AUTH_URL is set Davide Scaini 2026-06-02 16:31:46 +02:00
  • 13859a34d3 feat: show pace (min/km) for running, hiking, walking, other activities Davide Scaini 2026-06-02 16:23:03 +02:00
  • 1dca00d5e3 update stats script Davide Scaini 2026-06-02 15:47:55 +02:00
  • fa61801580 refactor: move mobile app to bincio-autarchive repo Davide Scaini 2026-06-02 15:45:42 +02:00
  • 2af29a460b serve: add JWT consumer shim for bincio-auth integration Davide Scaini 2026-06-02 14:54:43 +02:00
  • 0d6bf57932 fix: handle empty/invalid athlete.json in merge, API read, and writer encoding Davide Scaini 2026-05-25 20:00:18 +02:00
  • 447d56a960 fix: skip empty or unparseable athlete.json in merge_all Davide Scaini 2026-05-25 19:55:08 +02:00
  • 2f5251e9fe perf: run all background build/merge/rsync subprocesses at nice 19 Davide Scaini 2026-05-24 19:07:23 +02:00
  • c9b544ab55 perf: throttle OG image generation — nice 19 + 50ms sleep between renders Davide Scaini 2026-05-24 19:02:08 +02:00
  • b827792d16 feat: export gear maintenance log as CSV Davide Scaini 2026-05-24 14:07:37 +02:00
  • 94cd3f7eb4 fix: show replacement dates as dd/mm/yyyy Davide Scaini 2026-05-24 14:01:53 +02:00
  • bdee036204 feat: part lifespan tracking in gear tab Davide Scaini 2026-05-24 13:40:27 +02:00
  • 7db7bf91e0 refactor: extract import_garmin_gear() + add backfill script Davide Scaini 2026-05-24 13:13:47 +02:00
  • 801140ac51 feat: show accumulated distance per gear item in gear tab Davide Scaini 2026-05-24 13:06:37 +02:00
  • 49feef66c5 feat: Garmin gear sync — registry + per-activity gear on sync and backfill Davide Scaini 2026-05-24 13:03:34 +02:00
  • b23b3de1bb feat: include gear in activity index summaries; generate OG images in serve rebuild Davide Scaini 2026-05-24 12:51:57 +02:00
  • 5bf426df29 fix: use Strava gear ID prefix (b/g) to determine gear type, not missing primary_type field Davide Scaini 2026-05-24 12:44:25 +02:00
  • 40ccec0e2d fix: generate OG images in serve rebuild worker, not on every deploy Davide Scaini 2026-05-24 12:39:38 +02:00
  • e553e08663 feat: gear registry — manage bikes/shoes per athlete, set per activity Davide Scaini 2026-05-24 12:33:41 +02:00
  • aca9f79b46 fix: slope tooltip clipping — use clip:false + marginTop instead of dy function Davide Scaini 2026-05-23 22:24:55 +02:00
  • 40aa51be4d fix: flip slope tooltip below dot when near chart top edge Davide Scaini 2026-05-23 22:06:02 +02:00
  • e5c5383471 fix: move Pillow to base deps so generate_og_images.py can import it Davide Scaini 2026-05-23 21:49:47 +02:00
  • 693f720cbd feat: OG link previews — track image + meta tags for Telegram/WhatsApp Davide Scaini 2026-05-23 21:44:19 +02:00
  • 56932f7f25 perf: add patch_index flag to recalculate_elevation_hysteresis Davide Scaini 2026-05-23 21:05:00 +02:00
  • 02edb0b0f9 fix: per-source elevation params — strava_export vs barometric vs raw GPS Davide Scaini 2026-05-23 20:12:11 +02:00
  • df025873c6 Add map view toggle to activity feed Davide Scaini 2026-05-22 11:47:47 +02:00
  • 7f2a751065 feat: power curve chart on activity page (single-activity MMP) Davide Scaini 2026-05-21 21:29:29 +02:00
  • 793b719983 fix: stable power curve colors — buttons and chart lines always match Davide Scaini 2026-05-21 21:15:44 +02:00
  • d4e5b11f71 admin: add Total imported and Last sync columns to Garmin sync table Davide Scaini 2026-05-21 20:32:54 +02:00
  • 418e3a13e8 changelog: document 2026-05-19 performance improvements Davide Scaini 2026-05-19 20:19:11 +02:00
  • 84eff1f3b0 perf: spatial 10 m downsampling for timeseries Davide Scaini 2026-05-19 20:11:00 +02:00
  • 835968e8fe perf: unblock event loop for segment_efforts scan Davide Scaini 2026-05-19 19:53:26 +02:00
  • 29c6e399c0 perf: skip feed index fetch when navigating from activity feed Davide Scaini 2026-05-19 19:44:20 +02:00
  • 1f6239e7d2 Fix feature detection for explore and add community Davide Scaini 2026-05-18 22:03:40 +02:00
  • 5d2e2443a3 Add feature breakdown to stderr output for debugging Davide Scaini 2026-05-18 21:55:14 +02:00
  • 90283c45f4 usage_stats: fix reindex alignment bug, switch logins panel to weekly Davide Scaini 2026-05-18 21:31:05 +02:00
  • cd80b8e32e usage_stats: fix datetime.utcnow() deprecation warning Davide Scaini 2026-05-18 21:27:29 +02:00
  • adaa075e6e Add usage stats script and /api/admin/stats endpoint Davide Scaini 2026-05-18 20:54:17 +02:00
  • bbfab72138 ActivityCharts: switch slope tab to distance-weighted smoothing Davide Scaini 2026-05-18 19:03:56 +02:00
  • 6faf63c2cd ActivityCharts: add slope coloring tab to elevation profile Davide Scaini 2026-05-18 18:57:55 +02:00
  • c0f6c4da6d render: add --recompute-vam to backfill climbing_time_s into existing activities Davide Scaini 2026-05-17 10:15:29 +02:00
  • 766da0320b NerdCorner VAM: filter short climbs, opacity-encode confidence, add climbing time to tooltip Davide Scaini 2026-05-17 10:13:39 +02:00
  • 7a44cbbef0 change segment width and opacity Davide Scaini 2026-05-17 09:51:11 +02:00
  • 979a6c527f Segment create: load existing segments in activity bbox as reference layer Davide Scaini 2026-05-17 09:40:41 +02:00
  • 6bc77486f1 Segments: color track green→red along direction of travel Davide Scaini 2026-05-17 09:32:31 +02:00
  • 9521a64da4 Activity stats: fixed-position pairs so optional values don't shift layout Davide Scaini 2026-05-17 09:15:11 +02:00
  • 7953e05241 Fix build: use class ternary instead of class: directive for Tailwind /opacity class Davide Scaini 2026-05-17 09:06:04 +02:00
  • db9b4ce32c Activity map: click stat to lock track color mode, hover still previews Davide Scaini 2026-05-17 09:01:59 +02:00
  • 14a4a0b994 Activity detail: layout refactor + GPS-derived speed for map coloring Davide Scaini 2026-05-16 23:24:29 +02:00
  • 0dc450ba30 Fix track coloring hover: inline reactive vars so Svelte tracks deps Davide Scaini 2026-05-16 22:56:20 +02:00
  • 1cca485062 Activity map: extend track coloring to HR, power, elevation, cadence Davide Scaini 2026-05-16 22:50:24 +02:00
  • f71fe2ddf5 Activity map: color track by speed when hovering speed stats Davide Scaini 2026-05-16 22:43:12 +02:00
  • 08e8e54c36 Power curve: show record holder in tooltip and add records table Davide Scaini 2026-05-16 22:25:30 +02:00
  • 003b540481 VAM: drop duration curve, show avg climbing VAM in Nerd Corner Davide Scaini 2026-05-16 22:03:40 +02:00
  • 7cd8a6b030 VAM: add --recompute-vam flag and compute_vam_from_timeseries helper Davide Scaini 2026-05-16 21:37:51 +02:00
  • baf20b51ba Add VAM (climbing velocity) metric and per-duration curve Davide Scaini 2026-05-16 21:34:06 +02:00
  • de602ff5d9 Settings: per-user default for download_disabled Davide Scaini 2026-05-16 20:51:23 +02:00
  • 2d9620c6d1 Admin: add Garmin sync status panel Davide Scaini 2026-05-16 20:31:02 +02:00
  • 2c69e75842 Show orange upload button when Strava/Garmin auth fails Davide Scaini 2026-05-16 20:27:43 +02:00
  • 0eb25620ef Add headless Garmin background sync (systemd timer) Davide Scaini 2026-05-16 20:13:12 +02:00
  • 307f1fbbc1 download bas: embed timeseries into the JSON so the file is self-contained Davide Scaini 2026-05-15 18:38:53 +02:00
  • c465e518e5 Add activity file downloads with per-activity download_disabled flag Davide Scaini 2026-05-15 18:35:40 +02:00
  • fe437626e6 Global feed: switch from sequential pages to month-based BAS shards Davide Scaini 2026-05-15 10:25:01 +02:00
  • d3bce49445 Feed: eager-load only the year shards needed for the active date filter Davide Scaini 2026-05-15 09:32:12 +02:00
  • 8a06227243 Feed date filter: early-stop global feed load, fix cross-date validation, show Loading while fetching Davide Scaini 2026-05-15 09:24:02 +02:00
  • 1f3f5b3d3b Feed: fix date range eager-load — use primary let-vars, cover feed pages Davide Scaini 2026-05-15 09:14:56 +02:00
  • d2151a4acf Ideas: add reopen button when awaiting; add /reopen endpoint Davide Scaini 2026-05-15 09:07:49 +02:00
  • 9cc70269f5 Feed: eager-load all year shards when a date filter is active Davide Scaini 2026-05-15 08:59:06 +02:00
  • afbcaa5011 Feed: cap date range inputs at today to prevent selecting future dates Davide Scaini 2026-05-15 08:38:58 +02:00
  • 15e9969ca2 Ideas: add 'won't implement' status with decline/reopen button Davide Scaini 2026-05-15 08:36:31 +02:00
  • c905449114 Feed: add custom date range (From/To) inputs alongside search bar Davide Scaini 2026-05-15 08:32:31 +02:00
  • ed6a7ed39c Ideas: add 'awaiting feedback' status with amber section + admin comment Davide Scaini 2026-05-15 08:18:44 +02:00
  • 3b675a68b0 Elevation: skip near-zero dropout values mid-recording Davide Scaini 2026-05-15 01:21:34 +02:00
  • c12f5336f5 AthleteView: listen for bincio:me event so owner tabs appear without hard refresh Davide Scaini 2026-05-15 01:15:24 +02:00
  • 4ea2292e2b Indoor detection: title-based inference in merge layer + fix _merge_all_locked Davide Scaini 2026-05-15 01:03:17 +02:00
  • 0fbb7822df EditDrawer: show sub_sport badge immediately after save without page reload Davide Scaini 2026-05-15 00:52:34 +02:00
  • a863cdd663 Records: exclude Zwift activities by title; show Saved confirmation before closing drawer Davide Scaini 2026-05-15 00:49:46 +02:00
  • 9f1e9e4d3b Records: apply sidecars before computing; fix best_climb_m for long mountain climbs Davide Scaini 2026-05-15 00:30:58 +02:00
  • de07d8d4cf activities: trigger rebuild after edit so records update immediately Davide Scaini 2026-05-15 00:09:51 +02:00
  • 1ce94b8536 records: exclude indoor/treadmill/virtual sub_sport; rebuild athlete.json on bake Davide Scaini 2026-05-14 23:37:54 +02:00
  • b509db4940 nerd corner: cool-to-warm year color ramp (proposal, not pushed) Davide Scaini 2026-05-14 18:47:08 +02:00
  • 653db2428f nerd corner: add cumulative plot below the per-period chart Davide Scaini 2026-05-14 18:43:05 +02:00
  • 5167f2a988 explore: shard tracks into per-year files for progressive loading Davide Scaini 2026-05-14 18:34:53 +02:00
  • 8af6b7b04e nav: always show upload button on all screen sizes Davide Scaini 2026-05-14 18:24:44 +02:00