Repository navigation
Releases
Releases · ZacharyQin/power-timeline
v0.3.13
0.3.13 — 2026-10-28
English
- Include daily battery-health history and account-scoped persistent game icons from the preceding development build. Health observations remain independent of rolling timeline retention; saved icons can be reused after their original artwork disappears.
- Archive native icons served from Steam's current
community_assets/images/appspath as well as its older public-image path. Keep the fixed Steam download origin, exact AppID/image-hash checks and account-scoped stored bytes. Fixes visible game icons not being saved for later reuse. - Keep the battery-health plot at a fixed 132-pixel height, with coordinates sized to its actual width and fewer date labels in narrow layouts. Prevent large displays from enlarging the chart and its text while preserving real history, range selection and scrubbing.
- Share explicit runtime/source manifests and archive exclusions between local and CI packaging. Exclude authoring GLB/projection files, caches and debug output; preserve runtime images, notices and matching Decky API rebuild sources. Validate source freshness and publish only the exact generated runtime/source ZIP pair.
- Replace the three hardware PNG layers with lossless WebP, preserving visible pixels and transparency. Keep only executable code, WebP assets, Loader metadata and essential offline notices in the install ZIP; provide matching sources separately with a version-specific download link. Disable release source maps and exclude documentation, old PNGs and duplicate license files from the runtime package.
中文
- 本版本一并交付此前开发版的每日电池健康度历史与按账户隔离的游戏图标持久缓存。健康度独立于功率历史滚动保留,原图来源失效后可回退已存图标。
- 补齐 Steam 当前
community_assets/images/apps原生图标路径,同时保留旧公共图片路径支持。下载仍限定固定 Steam 来源、精确 AppID/图片哈希与账户隔离,修复图标已显示却未保存、无法在来源消失后复用的问题。 - 健康度图表固定为 132 像素高,按实际宽度绘制坐标,窄布局减少日期刻度,避免大屏把图表与文字一起放大;保留真实历史、范围选择和游标操作。
- 本地与 CI 共用明确的运行包/源码包清单和排除规则,去除设计 GLB/投影文件、缓存和调试产物;保留运行图片、许可声明与匹配的 Decky API 重建源码。打包前校验源码归档是否最新,构建产物只上传本次生成的安装/源码 ZIP 对。
- 三张硬件 PNG 图层改为无损 WebP,保留可见像素与透明度。安装 ZIP 仅保留运行代码、WebP、Loader 元数据与必要离线许可内容;匹配源码单独交付并提供对应版本下载入口。关闭发布 source map,排除运行包中的文档、旧 PNG 和重复许可文件。
v0.3.11
0.3.11 — 2026-10-27
English
- Use Steam's current library display names for Steam and non-Steam games across QAM, history, session details, timeline labels, legends and tooltips. Keep recorded names when library metadata is unavailable; never reinterpret a user-chosen title as a generated placeholder.
- Share one icon renderer across those views. Respect the icon currently selected in Steam shortcut properties before stale grid files; for Steam games prefer the current account's latest custom artwork before the store icon. Use a gamepad only when no image is available. Decode shortcut SteamGameIds exactly for presentation without changing stored game IDs or merging histories.
- Read saved ICO and shortcut image files when Steam cannot serve them. Scope lookups to the active account, reject non-images and special files, bound image reads, and keep filesystem work off the recorder's event loop. Refresh visible metadata and omit unchanged image payloads.
- Preserve recording, session identity, energy totals, coverage, database schema and hardware settings. This development build does not authorize a commit, push, tag or public release.
中文
- QAM、游戏历史、会话详情、时间线标签、图例和提示统一使用 Steam 当前资料库显示名,Steam 与非 Steam 游戏同样处理。资料不可用时保留已记录名称,不把用户自选的标题误当作生成占位名。
- 上述入口共用图标组件:非 Steam 游戏优先使用 Steam 快捷方式属性中当前选定的图标,避免旧 grid 图片反压新选择;Steam 游戏优先使用当前账户最新的自定义图片,再回退商店图标。无可用图片时才显示手柄占位。完整快捷方式 SteamGameId 精确转换仅供展示查询,不修改历史游戏 ID,也不合并历史。
- 补齐 Steam 无法直接提供的 ICO 和快捷方式图片读取;限定当前账户,拒绝非图片和特殊文件,限制单图读取体积,文件工作移至录制事件循环之外。可见资料持续刷新,图片未变时不重复传输内容。
- 保留录制、会话身份、能量、覆盖时长、数据库 schema 和硬件设置;本开发版本不代表获准 commit、push、打 tag 或公开发布。
v0.3.10
0.3.10 — 2026-10-27
English
- Read saved names for user-added non-Steam games from Steam's binary
shortcuts.vdf. Resolve both the unsigned shortcut AppID and its full SteamGameId as exact strings, preserving the recorded identity rather than merging histories or guessing a title from an executable. - Locate the player's Steam directory through
DECKY_USER_HOME, not the root backend'sHOME. Refresh changed shortcut catalogs while the frontend is closed and backfill names for already-recorded games, including games first observed after backend startup. - Keep the last complete catalog during a partial rewrite; do not choose arbitrarily between conflicting account names. Removing a shortcut does not erase a name already stored in history. Metadata alone never creates a running game or session.
- Preserve sample/session identities, observations, Wh and coverage. No database schema, chart layout or frontend naming workaround is added.
中文
- 从 Steam 二进制
shortcuts.vdf读取用户添加的非 Steam 游戏名称;用精确字符串同时匹配无符号快捷方式 AppID 与完整 SteamGameId,保留原记录身份,不合并历史,也不凭可执行文件猜游戏名。 - 通过
DECKY_USER_HOME查找玩家的 Steam 目录,不再误用 root 后台的HOME。前端关闭时仍检查快捷方式目录变化,为已有记录回填名称,也覆盖后台启动后才首次记录的游戏。 - Steam 部分重写配置时保留上一份完整名称目录;不同账户的名称冲突不任意选取。删除快捷方式不会清除历史中已保存的有效名称;只有名称元数据不会产生运行游戏或会话。
- 保留样本/会话身份、观测记录、Wh 与覆盖时长,不改数据库 schema、图表布局,也不增加前端猜名分支。
v0.3.9
0.3.9 — 2026-10-27
English
- Enforce
max_pointsfor both bucketed timelines and unbucketed/session-detail queries. Keep real first/last samples and retain boundaries and per-segment extrema when they fit; if the required set exceeds the budget, select across the whole range and conservatively separate samples across omitted segment, NULL or explicit-break boundaries. Never truncate the range or create synthetic samples. - Decode only the selected plot samples after scanning typed columns. Filter integration rows with
system_start_w IS NOT NULLand select only the columns used by clipping; retain zero power, the original interpolation and accumulation order. Events, energy and covered time are independent of the plot cap. - Keep sampling, schema, read-only snapshot isolation, history-worker locking, frontend caching and event SQL unchanged. Include the regression tests in the matching-source archive.
- Local package only: this build does not install or replace the Steam Deck package, or authorize a commit, push, tag or public release.
中文
- 分桶时间线与未分桶/会话详情查询均严格执行
max_points。保留真实首尾,预算足够时保留边界与分段极值;必要点集超过上限时,覆盖整个范围选点,并在被省略的分段、NULL 或明确断点处保守断线。不截断时间范围,不生成虚构样本。 - 扫描类型化列后,仅解码最终选中的曲线样本。积分查询先筛选
system_start_w IS NOT NULL,只取裁剪所需列;保留零功率、原有插值与累加顺序。事件、能量与覆盖时长独立于曲线点数上限。 - 采样、schema、只读快照隔离、历史 worker 锁、前端缓存和事件 SQL 不变。对应源码包一并包含回归测试。
- 仅生成本地安装包:本次不安装或覆盖 Steam Deck 上的包,也不代表获准 commit、push、打 tag 或公开发布。
v0.3.8
0.3.8 — 2026-10-26
English
- Add Settings → Open-source licenses, with native component lists, details and an offline full-text reader. Preserve the current reading level and focus across page visits; Back returns one level at a time. Localize the interface in all six languages without translating the license originals.
- Center license-row chevrons against the complete title-and-description row, including settings and document entries, without changing text layout or navigation.
- Render QAM and full-page timeline coordinates immediately from the selected time window, then update the same chart with recorded data. Keep query errors and retries, but do not invent samples, energy or coverage while history is pending. History caching and backend algorithms are unchanged.
- Generate notices from code actually included in the bundle. Distinguish bundled Decky API and React Icons, Font Awesome SVG and Feather artwork, host/system-provided interfaces, and the Valve-CAD-derived hardware illustration. Do not present build-only dependencies as runtime code or assert host runtime versions.
- Distribute original notices, LGPL-2.1 and CC-BY-4.0 texts, separate Valve artwork terms, and matching application/Decky API source with rebuild instructions in
dist/license-sources.zip. The software BSD license does not relicense third-party code or the non-commercial/share-alike artwork. License reading is independent of recording and network availability. - This development build is not approval to tag, push or publish a release.
中文
- 增加“设置 → 开源许可”,提供原生组件列表、详情和离线全文阅读;保留阅读层级与焦点,返回逐级退回。界面覆盖六种语言,许可原文不翻译替代。
- 许可条目右侧箭头相对“标题+说明”的整行垂直居中,设置入口与文档条目同步生效,不改变文字布局和导航。
- QAM 与内页时间线先按当前时间范围立即绘制空坐标,历史数据返回后原位更新曲线;保留查询错误与重试,不虚构样本、能量或覆盖时长。本次不改历史缓存和后台算法。
- 根据实际进入 bundle 的代码生成声明;区分随包 Decky API、React Icons、Font Awesome SVG 与 Feather 图形、宿主/系统接口及基于 Valve CAD 改编的硬件示意素材,不把纯构建依赖列为运行代码,也不冒认宿主实际版本。
- 随包保留原始声明、LGPL-2.1 与 CC-BY-4.0 全文、独立的 Valve 素材条款,以及
dist/license-sources.zip内对应的应用/Decky API 源码和重建说明。软件 BSD 许可不改变第三方代码及非商业/相同方式共享素材的许可。许可阅读不依赖录制状态与网络。 - 此开发版本不代表已获准打 tag、push 或公开发布。
v0.3.7
0.3.7 — 2026-10-25
English
- Replace the shared README hero image with language-matched, on-device QAM screenshots for all six languages, using consistent framing and localized captions.
- Add a fan-icon heading with only two native tabs, System automatic and Maximum speed. Omit L1/R1 hints, the dropdown, the extra RPM row and explanation text. Left/right only moves native focus; A confirms a mode change. Show the complete matching chart only when the backend has confirmed automatic mode, and hide it in maximum mode; moving focus does not change chart visibility. Report errors through native notifications, preserve the component ID and saved position, and update all six UI languages and READMEs.
- Maximum mode requests 7300 RPM and continues with QAM closed. An independent transient systemd worker, backend lease and ExecStopPost handle abnormal exits: first write 0 to return control to the EC, then restore the original OS service state. A logind delay inhibitor requests restoration before sleep, and maximum mode is not replayed after restart. Do not change the official curve or permanently enable or disable the service.
- Wait for the official service's stop job and ExecStopPost before taking control. Refuse takeover when a manual target, download mode, service transition or hardware fault is present. Relinquish control when an external target or service takeover is detected, without overwriting the new controller. Report restoration failures explicitly and distinguish degraded recovery that has already returned control to the EC.
- All 102 backend tests, including 16 fan-boundary tests, five frontend regression tests, type checking and the build pass. On-device keyboard checks cover focus-only navigation, confirmation, chart visibility following the backend mode, and complete tab labels in the narrow QAM panel for all six languages. With QAM closed, the target remained 7300 RPM and the measured speed was 7352 RPM with no fault; confirming automatic restored automatic control. The earlier real 9/KILL check that restored the official automatic service remains valid. Controlled sleep/reboot and physical controller/touchscreen acceptance are still pending.
中文
- 六种语言的 README 头图由共用图片改为各自语言的实机 QAM 截图,统一取景并同步图片说明。
- QAM 风扇组件增加带风扇图标的标题,下方仅保留“系统自动/最大转速”两个原生 Tab,不显示 L1/R1 提示、下拉框、转速读数与解释文字;左右只移动原生焦点,A 确认后才切档。完整匹配图仅在后台已确认的系统自动档显示,最大档隐藏,焦点移动不影响显隐;异常通过原生通知提示,保留原组件 ID、排序位置,六语界面与 README 同步说明。
- 最大档请求 7300 RPM,关闭 QAM 后继续。独立 systemd 临时工作进程、后台租约和 ExecStopPost 处理异常退出,先写 0 归还 EC,再按原状态恢复官方 OS 服务;logind 延迟锁用于休眠前恢复,重启不重放最大档。不修改官方曲线或永久启用/禁用服务。
- 接管前等待官方服务停止作业与 ExecStopPost 完成;已有手动目标、下载模式、服务切换或硬件故障时拒绝接管。检测到外部目标/服务接管时退出自身控制,不覆盖新控制器;恢复失败明确报告并区分已归还 EC 的降级状态。
- 102 项后端(含 16 项风扇边界测试)、5 项前端回归、类型检查与构建通过。实机键盘已验证左右只聚焦、确认切档、图表随后台档位显隐,六语 Tab 在 QAM 窄栏内完整显示;关闭 QAM 后保持 7300 目标,实读 7352 RPM、故障为零,再确认恢复自动。此前独立服务真实 9/KILL 后恢复官方自动服务的验证仍有效;受控休眠、整机重启及实体手柄/触屏验收仍未完成。
v0.3.6
0.3.6 — 2026-10-25
- QAM 各组件的上下间距统一为 8px,由布局容器集中控制;移除电池信息、游戏、外壳温度、风扇曲线和语言栏等组件叠加的外部 margin 与原生字段上下 padding,阻止子元素 margin 穿透组件边界。
- 普通和排序状态使用相同组件间距;普通状态的空组件不占位,排序状态仍保留隐藏项。限额条保持 24px 高度、原有透明热区及开关到滑条的内部间距,不改图表内容、组件排序、采样或充电逻辑。
- 根目录仅保留英文 README.md,其余五种语言的 README 移入 docs/readme/;同步更新语言切换、更新记录、截图路径及发行包文件清单。