| Files | Last commit | Last update |
|---|---|---|
docs(release): 0.7.0 — three modes, refreshed screenshots, roadmap catch-up - CHANGELOG 0.7.0: HTTP mode, transport layer, cost CLI, crash visibility, the decoupling that made them possible, and the three defects above. - README (en/zh/ja): new "three ways to run it" section, CLI block gains cost and serve, badges and test counts brought to 532/161. - Architecture docs (en/zh/ja): they claimed "no HTTP API" while server.rs had a full /api — corrected, plus an HTTP-mode section listing every endpoint and the deliberate read-only boundary. - COMPARISON: browser mode is no longer "demo" but local live data. - ROADMAP: adds shipped 0.6.0/0.7.0 evidence tables, renumbers the unshipped "Reach" items to 0.8.0, and records the next five items with the research that justifies them. - docs/research-12-projects-2026-11-06.md: the competitive study behind those items, including what could not be verified. - scripts: check-version now normalises CRLF before matching Cargo.lock (cargo writes CRLF on Windows, which made the gate fail spuriously); shoot_docs measures the hero region instead of guessing 120px, which had been clipping the second line of the subtitle. - Removes au.log: a 256 KB CI runner log committed by accident. Adds *.log and .tmp/ to .gitignore so the next one cannot slip in. | 1 day ago | |
ci: make the icon contract printable on a cp1252 console The step got past the missing-Pillow error and then died on its own output: the Windows runner's stdout is charmap, so any CJK character in a print() raises UnicodeEncodeError. Print ASCII only, and reconfigure stdout/stderr to UTF-8 defensively. Verified by running main() with an ASCII-only stream. | 17 days ago | |
chore(release): cut 0.4.0, add version gate and fix chart label contrast The version number lived in four files plus a fifth hand-written copy in the UI. Bump to 0.4.0, move the single source to package.json, inject it at build time, and add npm run version:check to CI so a half-finished bump cannot ship. Three chart regressions found by reading the rendered screenshots: - Horizontal bar value labels inherited the series gradient colour and became near-invisible on dark themes (the "3" in the port distribution read as an empty cell). Labels now use the theme text colour. - Bar-top labels in the process histograms collided with the top gridline; the value axis gets one extra step and no split line. - The AI memory chart put its "NNN MB" label on top of the axis tick; the axis now leaves 30% headroom and the grid widened to fit the label. Also: unify the workflow branch filters on main, document the branch and versioning policy in CONTRIBUTING, add docs/ROADMAP.md with an explicit not-planned section, replace GitHub-only badges with platform-neutral ones, and regenerate the screenshots and the four affected visual baselines. | 5 days ago | |
feat: v0.3.0 — process tree, command palette, CLI, diagnostics, real showcase Six new capabilities, all with tests and real verification: - Process tree: buildForest/flattenTree over sysinfo parent_pid, cycle- and orphan-safe (a 2-node cycle and a self-parent both render exactly once), virtualised, per-row detail listing that process's own listening ports, CSV export with RFC 4180 quoting plus formula-injection neutralisation. - Command palette (Ctrl/Cmd+K): fuzzy search over pages, processes, ports, projects and tasks; Enter runs, Esc closes; process/port hits jump to the process page pre-filtered on that PID. - Port -> process jump both ways: every listening port has "show owning process", the process detail lists the reverse mapping. - Environment self-check: platform, data directory writability, cost DB, Claude/Codex/opencode session folders and the real port command, each reported ok/warn/fail with a hint and a copyable summary. - CLI mode on the same binary: workbench ps|ports|diag [--json], read-only, no window. Windows stdout works when redirected to a file or a pipe (the first implementation produced an empty file — caught by e2e/cli.spec.ts). - Feature E2E suite (7) + CLI E2E (5) + desktop E2E now restores the data it overwrites. Fixes found while auditing: - Process status was localized Chinese from Rust, so English/Japanese UIs showed 运行中. Backend now emits stable keys; processStatus.ts translates and still accepts the legacy labels. - Resource chart had hard-coded cyan/amber series; now uses the theme accent and warn colours. - alwaysOnTop was persisted but never re-applied after a restart. - Landing page referenced four screenshots that never existed, still said v0.1.1, and its Pages/Release workflows had been deleted from main by the mirror clean-up commits. All three fixed; Pages now fails when a referenced asset is missing, Release builds all three platforms with SHA-256 sums. - Demo mode had no process hierarchy and an empty log page, so the new tree and the log viewer looked broken in every screenshot. Showcase: README x3 rewritten (positioning, screenshots, 32-second demo video, feature matrix), docs/COMPARISON{,.zh-CN,.ja}.md against Mission Center, System Informer, btop++, Glances, Stats, ccusage and Claude Code Usage Monitor. Verified: tsc 0, eslint 0, prettier clean, vitest 370/370 (34 files), cargo test 91/91 + binding export, clippy -D warnings 0, jscpd 0.18%, Playwright 35/35 (23 visual/contrast + 7 features + 5 CLI), packaged-exe desktop E2E 16 checks, io E2E 5 checks, NSIS 4.95 MiB at 0.3.0. | 14 days ago | |
test(e2e,quality): agent approval flow, import/export E2E, macOS job, dup + cognitive gates Agent E2E (scripts/e2e-agent.mjs): a local OpenAI-compatible mock returns a mutating tool call, so the whole path runs without a real key or cost — provider config (key never echoed) → step enters approval → approve → the tool really writes to data.json → the same token is rejected on replay → tool result goes back to the model. This was the only part of the approval chain with unit tests but no end-to-end evidence. Import/export E2E (scripts/e2e-io.mjs): drives the hidden file input directly. Malformed JSON and an illegal task status are both rejected whole with the existing data untouched; a valid import lands in the store; the exported file can be imported again. Also found that Settings has two file inputs (theme vs data), so the selector must match on aria-label — a data import fed to the theme parser reports "theme is missing fields", which looks like data corruption. CI: add Backend (macOS) — fmt / test / clippy / tauri build --bundles app / bundle structure check. The platform code has always been cfg-gated but was never compiled anywhere. Quality gates: jscpd at a 3% threshold (measured 0.26%, 5 clones) and sonarjs/cognitive-complexity at 15 (0 functions over) now run in ci.yml and ci-local.mjs. Mutation testing: installed Stryker with the vitest runner and ran it twice (14 min full, 2 min single-file). Both runs reported "Ran 0.00 tests per mutant" with a 0.00 score — the runner does not discover vitest 5 tests. That 0.00 is a tool failure, not a quality signal, so it is documented as unconfirmed and the tool is uninstalled rather than left as a permanently red gate. vitest.config.ts → vitest.config.mts so the ESM config is unambiguous. Verification: ci-local 11/11 (--fast), coverage 93.90% lines / 86.40% branches, 342 unit, 16 Playwright, 104 Rust, 16+8+5 desktop E2E against the packaged exe. | 15 days ago | |
fix: netstat/git 派生加 CREATE_NO_WINDOW 消除控制台闪窗;品牌与体验整改 - Rust 后端所有 Command 派生统一走 silent()(CREATE_NO_WINDOW),修复每 3 秒闪两次黑框 - 全套自有 Logo 图标(AI 生成深蓝霓虹 W 徽标,icon.ico 714B→93KB 多尺寸) - 概览页新增 Hero 大标题横幅(问候语/实时脉冲/光晕动效,尊重 prefers-reduced-motion) - 设置页布局从居中窄栏改为通栏双列,与其他页一致 - 4 个页面的重复统计卡片合并为共享 StatCard(含数字滚动动画) - 新增窗口置顶开关(标题栏图钉 + set_always_on_top 命令 + 状态持久化) - 修复预算告警只在手动扫描后触发的时序洞;清理 .aqg 过程文档与 gen/schemas 跟踪 - 验证:tsc 0 错误 / clippy 0 警告 / 43 单测全过 / 安装包构建成功 | 26 days ago | |
fix(icons): derive icon alpha from luminance, and drop the bitmap logo from the UI The white square behind the mark came back with a different shape this time: the corner mask radius was estimated from the image size, so wherever it disagreed with the badge's own radius a ring of white canvas stayed opaque. - make_icons: alpha is now a linear function of luminance (canvas ~250 -> 0, badge <150 -> 1) with a 1px erosion so edges land on badge colour, not on a white/badge blend. Pure Pillow, no numpy, so the CI icon contract still runs. - check_icons: also fails on any near-white visible pixel and on white inside the 3% edge ring, not just on opaque corners. - The sidebar and the overview masthead no longer load a bitmap at all: they render BrandMark, four vector strokes with currentColor and no plate. - BrandMark has its own test for the 'no rect / no image / no fill' contract. | 17 days ago | |
feat: harden session scanning, ledger integrity and restore flows Bound every read the session scanner and cost meter perform, report skipped or unreadable entries instead of silently returning an empty result, and replace the (path, mtime, size) cache key with content fingerprints so a same-size rewrite is no longer missed. Pricing and parser generation now invalidate cached rows, and token arithmetic is range-checked before it reaches SQLite. The store gains an explicit restore path with its own persistence guards, draft state survives navigation, and the cost dashboard rescans after a pricing edit so displayed totals follow the new prices. Tests cover the bounded scanner, fingerprint invalidation, restore rejection and draft persistence. | 5 days ago | |
docs(release): 0.7.0 — three modes, refreshed screenshots, roadmap catch-up - CHANGELOG 0.7.0: HTTP mode, transport layer, cost CLI, crash visibility, the decoupling that made them possible, and the three defects above. - README (en/zh/ja): new "three ways to run it" section, CLI block gains cost and serve, badges and test counts brought to 532/161. - Architecture docs (en/zh/ja): they claimed "no HTTP API" while server.rs had a full /api — corrected, plus an HTTP-mode section listing every endpoint and the deliberate read-only boundary. - COMPARISON: browser mode is no longer "demo" but local live data. - ROADMAP: adds shipped 0.6.0/0.7.0 evidence tables, renumbers the unshipped "Reach" items to 0.8.0, and records the next five items with the research that justifies them. - docs/research-12-projects-2026-11-06.md: the competitive study behind those items, including what could not be verified. - scripts: check-version now normalises CRLF before matching Cargo.lock (cargo writes CRLF on Windows, which made the gate fail spuriously); shoot_docs measures the hero region instead of guessing 120px, which had been clipping the second line of the subtitle. - Removes au.log: a 256 KB CI runner log committed by accident. Adds *.log and .tmp/ to .gitignore so the next one cannot slip in. | 1 day ago | |
feat: 对标完整开源项目补齐工程化,新增落地页与自动发布 工程与质量 - 接入 ESLint 9 + Prettier 3,修复全部 12 个问题(含 2 个 error),CI 加为门禁 - ECharts 5.6.0 -> 6.1.0:修复 GHSA-fgmj-fm8m-jvvx(XSS,CVE-2026-45249), npm audit 归零 - 抽出 src/lib/chartTheme.ts:图表色板 + 横向条形图构造器, 消除 4 个页面各写一遍的重复配置 - 修复 EChart 的 MutationObserver 随 option 重建(依赖数组错误), 主题切换改为经 ref 回放最新选项 - 修复图表配色依赖:chartGapColor 由隐式读 DOM 改为显式传 theme, 使主题切换能正确进入 useMemo 依赖 社区文件 - CONTRIBUTING / CODE_OF_CONDUCT / SECURITY / CHANGELOG - Issue 模板(bug / feature)+ PR 模板 + Dependabot 配置 README - 顶部徽章组、下载章节(安装包与免安装 exe 直链) - 五平台镜像表、系统要求表、FAQ、Roadmap - 项目结构与质量门禁说明同步到实际 落地页与发布 - docs/ 作为 GitHub Pages 源:一份页面服务全部镜像, 链接按访问域名自动切换(含 GitHub 用户名大小写还原) - pages.yml:push 到 main 自动部署文档站 - release.yml:打 v* tag 自动构建 Windows 安装包并发布 Release 其他 - scripts/shoot_landing.mjs:落地页截图(首屏 / 整页 / 移动端) | 26 days ago | |
feat(theme): 氛围粒子背景 — 主题取色、三重省电、默认关 用户拍板:粒子背景做成开关,选择权交给用户。 - src/lib/particles.ts: Canvas 2D 粒子场,零依赖。颜色取自 --color-accent/accent2/text(每秒刷新,换主题自动跟随); 粒子数按面积钳制 24-72;上浮+正弦摆动,整体透明度封顶 0.55 ——定位是氛围,不是屏保。 - ParticleBackdrop: fixed 全屏 z-0,pointer-events-none;默认关; 生效动效档 off 时停用;页面隐藏暂停 rAF。 - store: particles 偏好,persist v4→v5(迁移只补默认 false)。 - AppearancePanel: 氛围粒子 开启/关闭;i18n 三语。 - 测试 +11:数量钳制、粒子推进/环绕、rAF 生命周期、隐藏不启动、 无 2D 上下文降级、v4→v5 迁移。482 单测全绿。 - e2e: 外壳/设置基线因新增粒子卡合法漂移,重生成后连跑两遍 23 全过。 门禁:tsc/lint/format/dup(0.31%)/vitest/build 全绿。 | 3 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 1 day ago | ||
| 17 days ago | ||
| 5 days ago | ||
| 14 days ago | ||
| 15 days ago | ||
| 26 days ago | ||
| 17 days ago | ||
| 5 days ago | ||
| 1 day ago | ||
| 26 days ago | ||
| 3 days ago |