Skip to content

Releases: techysy/strava-panel

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 03 Sep 15:24
CI: build-cli/build-desktop 补 permissions contents:write(修复 release 403)

v1.2.3

Choose a tag to compare

@techysy techysy released this 03 Sep 04:34

v1.2.3 — Strava OAuth 全链路打通 + 图表对齐官方

🎯 Strava OAuth 授权彻底打通(核心)

修复多个相互叠加、导致「授权成功却拿不到数据」的问题:

  • 🔑 修复 token 被误删save_config 原无条件删除 strava_tokens.json,授权/刷新成功后 token 随即丢失、缓存永远不存在(每次轮询重复刷新)。改为仅当 refresh_token 实际变更才清缓存;exchange_code/refresh_token 先保存 config 再写 token。
  • 修复并发竞态:面板 /api/info 每秒轮询会触发 refresh_token(),与 OAuth 授权写 token 并发互相覆盖(新 token 被旧 refresh 覆盖回 read-only)。用 RLock 串行化 token/config 读改写。
  • 🎯 修复 scope 误判:Strava 返回 scope 为空格分隔(activity:read_all read),原按逗号 split(",") 误判缺 activity:read_all,导致授权成功的 token 也被判失效。现兼容逗号/空格分隔。
  • 🔗 修复回调地址:不再自动跟随访问入口——仅内网/本机 Host 推导;公网中转域名(office.app.5ddd.com)与残缺相对路径(/oauth/callback)一律拒绝,引导显式配置完整 http://<NAS内网IP>:20227/oauth/callback

📊 骑行数据图表对齐官方 Strava

  • 时间筛选合并为一组 7 选项(近7天/近1月/近3月/近6月/本年度/近12月/所有),去掉原双行重叠按钮与 7D/YTD 英文简写,全量 i18n。
  • 粒度按官方:近7天/近1月→每日;近3月/近6月→每周;本年度/近12月→每月;所有→每年。
  • 空桶补全:每日/周/月补全范围内所有时间点,无骑行返回 0,图表时间轴不断裂。
  • Y 轴 ×1.2 顶部留白、曲线平滑(Catmull-Rom 贝塞尔)、描边非缩放(桌面细线)、数值保留 1 位小数、0 值天不显示数值文字。
  • 时间筛选按钮 flex 自适应换行,移动端整洁。

🖼️ 其他

  • 凭据回显免重输:设置页自动回填已存凭据,/api/config 拒绝非绝对 URL 的 redirect_uri。
  • 应用图标 + 网页 favicon 换成官方 Strava 橙色圆角徽标(SVG)。
  • OAuth 诊断:授权失败时记录 Strava 返回的具体原因到日志。

📦 安装

fpk 下载后,在 fnOS App Center 手动安装(普通版 url + 桌面内嵌 iframe 双版本):

# fnOS App Center → 手动安装 → 选择 strava-1.2.3.fpk

首次使用:到 Strava API 设置 注册 Callback Domain 为你的 NAS 内网 IP(不带端口,如 192.168.31.101),在能访问内网的环境完成 OAuth 授权。

Full Changelog: v1.2.2...v1.2.3

v1.2.0

Choose a tag to compare

@techysy techysy released this 01 Aug 19:07

Strava Panel fnOS 应用 v1.2.0

新增 / Added

  • 🔐 API Token 认证:数据接口(stats/activities/weekly/export/sync/config)新增访问 token 保护
  • 前端面板通过 /api/bootstrap 自动获取 token(免认证),行为不变
  • agent 用 Authorization: Bearer <token> 访问
  • api_token 自动生成,存储在 strava.conf(权限 600)

使用 / Usage

TOKEN=$(curl -s http://<NAS>:20127/api/bootstrap | jq -r '.api_token')
curl -s -H "Authorization: Bearer $TOKEN" "http://<NAS>:20127/api/stats?start=2026-01-01"

兼容性 / Note

  • 未带 token 的 API 请求返回 401
  • 前端面板自动处理 token,无需手动配置

下载 / Assets

  • strava-1.2.0.fpk — url 版(新标签页打开)
  • strava-1.2.0-iframe.fpk — iframe 版(fnOS 桌面窗口)

v1.1.5

Choose a tag to compare

@techysy techysy released this 01 Aug 18:07

Strava Panel fnOS 应用 v1.1.5

修复 / Fixes

  • 🛠️ status 退出码修复:cmd/main status 在服务未运行时返回退出码 1(非零),与 metacubexd/9router 一致
  • 根因:fnOS 依赖 status 退出码判断应用是否运行。之前 strava 的 status 在 stopped 时错误返回 0(被误判为 running),fnOS 从不调用 start,服务无法自动启动
  • 现在 fnOS 会正确调用 start,服务以 strava 用户运行、开机自启(PPID=1)

下载 / Assets

  • strava-1.1.5.fpk — url 版(新标签页打开)
  • strava-1.1.5-iframe.fpk — iframe 版(fnOS 桌面窗口)

安装 / Install

飞牛 App Center → 手动安装 → 选择 fpk。
打开面板(端口 20127)→ 填入 Strava 凭据 → 保存并验证,自动同步全量历史。

v1.1.2

Choose a tag to compare

@techysy techysy released this 01 Aug 16:01

Strava Panel fnOS 应用 v1.1.2

修复 / Fixes

  • 🛠️ cmd/main 启动可靠性:改用 setsid python3 -u(无缓冲)+ 更强的残留进程清理
  • 解决后台启动偶发 Address already in use / 连接拒绝问题
  • fnOS App Center 现可可靠自动启动服务(NAS 重启后服务自愈)

下载 / Assets

  • strava-1.1.2.fpk — url 版(新标签页打开)
  • strava-1.1.2-iframe.fpk — iframe 版(fnOS 桌面窗口)

安装 / Install

飞牛 App Center → 手动安装 → 选择 fpk。
打开面板(端口 20127)→ 填入 Strava 凭据 → 保存并验证,自动同步全量历史。

v1.1.1

Choose a tag to compare

@techysy techysy released this 01 Aug 15:22

Strava Panel fnOS 应用 v1.1.1

更新 / What's New

  • 📅 统计周期切换:本年度 / 本月份(默认本年度,明确统计边界)
  • ⚡ 平均速度:最近骑行列表新增均速列(km/h)
  • 🗄️ SQLite 本地缓存(v1.1.0 加入)
  • 📤 agent 透出接口 /api/export(v1.1.0 加入)

下载 / Assets

  • strava-1.1.1.fpk — url 版(新标签页打开)
  • strava-1.1.1-iframe.fpk — iframe 版(fnOS 桌面窗口)

安装 / Install

飞牛 App Center → 手动安装 → 选择 fpk。
打开面板(端口 20127)→ 填入 Strava 凭据 → 保存并验证,自动同步全量历史。

v1.1.0

Choose a tag to compare

@techysy techysy released this 01 Aug 15:03

Strava Panel fnOS 应用 v1.1.0 — SQLite 本地缓存 + agent 透出接口

更新 / What's New

  • 🗄️ SQLite 本地缓存:骑行数据缓存到 NAS(strava.db),读取更快、离线可看历史
  • 🔄 手动同步:面板「立即同步」按钮 + /api/sync
  • 📤 agent 透出接口:/api/export (json/csv) 供本地 Hermes agent 直接查询
  • 🔍 查询增强:/api/stats /api/activities 支持 start/end/type/limit 过滤
  • 🔒 凭据安全:strava.conf / strava_tokens.json 权限 600

下载 / Assets

  • strava-1.1.0.fpk — url 版(新标签页打开)
  • strava-1.1.0-iframe.fpk — iframe 版(fnOS 桌面窗口)

安装 / Install

飞牛 App Center → 手动安装 → 选择 fpk。
打开面板(端口 20127)→ 填入 Strava 凭据 → 保存并验证,自动同步全量历史。

v1.0.1

Choose a tag to compare

@techysy techysy released this 01 Aug 14:47

Strava Panel fnOS 应用 v1.0.1

更新 / What's New

  • 🌗 日夜模式:暗/亮主题切换(记忆选择,默认跟随系统)
  • 🌐 i18n 多语言:中/英双语界面切换
  • 🧹 移除多余的 fnOS 设置页面,统一由面板主页配置凭据

下载 / Assets

  • strava-1.0.1.fpk — url 版(新标签页打开)
  • strava-1.0.1-iframe.fpk — iframe 版(fnOS 桌面窗口)

安装 / Install

飞牛 App Center → 手动安装 → 选择 fpk。
打开面板(端口 20127)→ 填入 Strava 凭据(Client ID / Client Secret / Refresh Token)→ 保存并验证。

v1.0.0

Choose a tag to compare

@techysy techysy released this 01 Aug 14:35

Strava Panel fnOS 应用 v1.0.0 — 骑行数据面板

功能 / Features

  • 🔑 凭据管理:面板内配置 Strava Client ID / Client Secret / Refresh Token
  • 🔄 Token 自动刷新:Strava access_token 6h 过期自动 refresh,无需手动干预
  • 📊 可视化面板:骑行次数、总距离、总时长、总爬升 + 每周图表 + 最近骑行
  • 🔒 纯 Python 标准库零依赖后端,端口 20127(高位不常见)

下载 / Assets

  • strava-1.0.0.fpk — url 版(新标签页打开)
  • strava-1.0.0-iframe.fpk — iframe 版(fnOS 桌面窗口)

安装 / Install

飞牛 App Center → 手动安装 → 选择 fpk。
打开面板后填入 Strava 凭据(Client ID / Client Secret / Refresh Token)→ 保存并验证。

凭据获取

https://www.strava.com/settings/api → 查看 Client ID / Client Secret
Refresh Token 需 OAuth 授权(勾选 activity:read_all)。