Skip to content

Commit d280016

Browse files
committed
ci: restore badges and upload coverage
1 parent b5a2b58 commit d280016

5 files changed

Lines changed: 71 additions & 23 deletions

File tree

.github/workflows/ci.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,17 @@ jobs:
6060
run: bunx playwright install --with-deps chromium
6161
- name: Strict checker gate
6262
run: bun run check
63+
- name: Upload JavaScript coverage to Codecov
64+
uses: codecov/codecov-action@v5
65+
with:
66+
files: ./coverage/js/lcov.info
67+
flags: javascript
68+
name: pathkeep-javascript
69+
fail_ci_if_error: true
70+
- name: Upload Rust coverage to Codecov
71+
uses: codecov/codecov-action@v5
72+
with:
73+
files: ./coverage/rust.lcov.info
74+
flags: rust
75+
name: pathkeep-rust
76+
fail_ci_if_error: true

.github/workflows/native-deps.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ jobs:
3030
strategy:
3131
fail-fast: false
3232
matrix:
33-
# macos-13 is intentionally Intel. The current vcpkg OpenCC port declares
34-
# !(arm | uwp), so Apple Silicon remains blocked until an audited overlay
35-
# port or upstream port support is proven.
33+
# macOS still uses an Intel runner because the current vcpkg OpenCC port
34+
# declares !(arm | uwp). Keep this on GitHub's current Intel label until
35+
# an audited arm64-osx overlay or upstream port support is proven.
3636
include:
3737
- os: ubuntu-latest
3838
triplet: x64-linux
39-
- os: macos-13
39+
- os: macos-15-intel
4040
triplet: x64-osx
4141
- os: windows-latest
4242
triplet: x64-windows-static

README.md

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,42 @@
99
<a href="https://github.com/t41372/PathKeep/actions/workflows/ci.yml">
1010
<img alt="CI" src="https://github.com/t41372/PathKeep/actions/workflows/ci.yml/badge.svg?branch=main&event=push" />
1111
</a>
12+
<a href="https://github.com/t41372/PathKeep/actions/workflows/native-deps.yml">
13+
<img alt="Native Dependencies" src="https://github.com/t41372/PathKeep/actions/workflows/native-deps.yml/badge.svg?branch=main" />
14+
</a>
15+
<a href="https://github.com/t41372/PathKeep/actions/workflows/release.yml">
16+
<img alt="Release" src="https://github.com/t41372/PathKeep/actions/workflows/release.yml/badge.svg?branch=main" />
17+
</a>
18+
<a href="https://github.com/t41372/PathKeep/actions/workflows/mutation.yml">
19+
<img alt="Mutation" src="https://github.com/t41372/PathKeep/actions/workflows/mutation.yml/badge.svg?branch=main" />
20+
</a>
21+
<a href="https://app.codecov.io/github/t41372/PathKeep">
22+
<img alt="Codecov" src="https://codecov.io/github/t41372/PathKeep/branch/main/graph/badge.svg" />
23+
</a>
24+
<br />
1225
<a href="https://github.com/t41372/PathKeep/releases">
13-
<img alt="Latest release" src="https://img.shields.io/github/v/release/t41372/PathKeep?display_name=tag&label=release&color=2ea44f" />
26+
<img alt="Latest release" src="https://img.shields.io/github/v/release/t41372/PathKeep?display_name=tag&label=release" />
27+
</a>
28+
<a href="https://www.rust-lang.org/">
29+
<img alt="Rust 1.94.1" src="https://img.shields.io/badge/Rust-1.94.1-000000?logo=rust&logoColor=white" />
30+
</a>
31+
<a href="https://tauri.app/">
32+
<img alt="Tauri v2" src="https://img.shields.io/badge/Tauri-v2-24C8DB?logo=tauri&logoColor=white" />
33+
</a>
34+
<a href="https://react.dev/">
35+
<img alt="React 19" src="https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=000000" />
36+
</a>
37+
<a href="https://bun.sh/">
38+
<img alt="Bun 1.3.11" src="https://img.shields.io/badge/Bun-1.3.11-000000?logo=bun&logoColor=white" />
39+
</a>
40+
<a href="https://www.typescriptlang.org/">
41+
<img alt="TypeScript 5.9" src="https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white" />
42+
</a>
43+
<a href="https://vite.dev/">
44+
<img alt="Vite 8" src="https://img.shields.io/badge/Vite-8-646CFF?logo=vite&logoColor=white" />
1445
</a>
1546
<a href="./LICENSE">
16-
<img alt="License: GPL-3.0" src="https://img.shields.io/badge/license-GPL--3.0-2ea44f.svg" />
47+
<img alt="License: GPL-3.0" src="https://img.shields.io/github/license/t41372/PathKeep?label=license" />
1748
</a>
1849

1950
</div>

docs/architecture/native-dependency-management.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,15 @@ committed.
9494
runs on:
9595

9696
- `ubuntu-latest` with `x64-linux`
97-
- `macos-13` Intel with `x64-osx`
97+
- `macos-15-intel` with `x64-osx`
9898
- `windows-latest` with `x64-windows-static`
9999

100100
It intentionally does not run on Apple Silicon yet because the current vcpkg
101-
OpenCC port rejects arm targets. This is not a product release proof for native
102-
OpenCC; it is a regression guard for the project-scoped dependency manager.
101+
OpenCC port rejects arm targets. The macOS lane still needs an Intel runner for
102+
the `x64-osx` triplet, but it must use GitHub's current `macos-15-intel` label
103+
rather than the retired `macos-13` image. This is not a product release proof
104+
for native OpenCC; it is a regression guard for the project-scoped dependency
105+
manager.
103106

104107
`bun run check` does not run vcpkg because the default product build currently
105108
does not link native OpenCC. If a future product slice starts linking native

docs/plan/program/quality-matrix.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
| Gate | Command / Workflow | 保護範圍 | 備註 |
1111
| -------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
12-
| Strict checker | `bun run check` / GitHub `CI` workflow | base checks、100% JS/Rust coverage、browser build、browser-preview e2e、desktop-bridge truth gate、desktop-contract JS mutation | 這是 signed-off per-commit checker;`main` push / PR / manual CI 與本地使用同一條 effective gate。 |
12+
| Strict checker | `bun run check` / GitHub `CI` workflow | base checks、100% JS/Rust coverage、browser build、browser-preview e2e、desktop-bridge truth gate、desktop-contract JS mutation、Codecov upload | 這是 signed-off per-commit checker;`main` push / PR / manual CI 與本地使用同一條 effective gate。 |
1313
| Base triage | `bun run check:base` | Prettier、ESLint、i18n parity/raw-English guard、TypeScript、Vitest、desktop contract slice、Rust fmt / clippy / workspace tests、supply-chain audit、host-matched platform-native checks | 只作 fast triage helper;不能替代 `bun run check`|
1414
| JS coverage | `bun run coverage:js` | active `src/**/*.{ts,tsx}` runtime source | 100% statement / branch / function / line coverage。 |
1515
| Rust coverage | `bun run coverage:rust` | full `src-tauri/**/src/*.rs` workspace source surface | 100% line + function coverage;舊 quality slice 只保留作 triage helper。 |
@@ -27,7 +27,7 @@
2727
- host-matched platform-native keyring / scheduler / launcher / discovery / biometric smoke
2828
- desktop updater / launcher command surface 與 debug desktop build smoke
2929

30-
這些 sub-gate 的責任是保護 desktop entry、typed IPC contract 與 platform-specific host truth;它們不是替 shell / route / sidebar / trust-critical flows 做全站背書。GitHub `CI` workflow 現在會在 `main` push、PR 與 manual dispatch 時安裝 Linux desktop/native dependencies 後直接跑 `bun run check`,所以 hosted runner 也要承擔同一條 per-commit checker;manual `Platform Native` workflow 只保留作 host-sensitive parity / triage。
30+
這些 sub-gate 的責任是保護 desktop entry、typed IPC contract 與 platform-specific host truth;它們不是替 shell / route / sidebar / trust-critical flows 做全站背書。GitHub `CI` workflow 現在會在 `main` push、PR 與 manual dispatch 時安裝 Linux desktop/native dependencies 後直接跑 `bun run check`再把 `coverage/js/lcov.info``coverage/rust.lcov.info` 上傳到 Codecov;所以 hosted runner 也要承擔同一條 per-commit checker;manual `Platform Native` workflow 只保留作 host-sensitive parity / triage。
3131

3232
---
3333

@@ -78,18 +78,18 @@ whole-workspace mutation 是 deep/release investigation gate;若成本或 surv
7878

7979
## Focused / Release Helpers
8080

81-
| Gate | Command / Workflow | 用途 | 備註 |
82-
| -------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
83-
| Platform Rust native sweep | `bun run test:platform:rust` / GitHub `Platform Native` workflow | 直接驗證 host keyring / scheduler / launcher / discovery / biometric capability | hosted runner 成本高且 host-sensitive,所以移到 manual workflow;Linux job 仍會在隔離 `dbus-run-session` 內啟動 `gnome-keyring-daemon`|
84-
| Platform desktop slice | `bun run test:platform:desktop` / GitHub `Platform Native` workflow | debug desktop build + updater / launcher desktop command slice | 這是 desktop command truth,不等於 browser preview e2e。 |
85-
| Project-scoped native dependency proof | `bun run native-deps:doctor` + OpenCC vcpkg install / GitHub `Native Dependencies` workflow | 驗證 repo-local vcpkg native dependency contract | 只在 manual dispatch、PR、或 `main` push 觸及 native-deps/vcpkg contract path 時跑;不屬於每次 commit 的 strict checker。 |
86-
| Chrome desktop bridge smoke | `bun run test:e2e:desktop-bridge:truth` | 啟動 feature-gated desktop bridge,讓 Chrome / Playwright 驗證真實 Rust command | 已納入 `bun run check`;單獨跑只作 bridge triage。 |
87-
| Desktop-contract JS mutation | `bun run mutation:js` / `bun run check:mutation` | 對 desktop entry + typed IPC contract 做 lightweight mutation gate | 已納入 `bun run check`;2026-04-27 current-host wall time 約 50 秒,break threshold 是 100。 |
88-
| Full JS mutation sweep | `bun run mutation:js:full` / GitHub `Mutation` workflow `javascript-mutation` | 對 active frontend runtime surface 做 repo-level mutation investigation | Manual / scheduled deep gate;2026-04-27 dry-run 約 2m20s,full sweep 21769 mutants,按 44m/32% 實測估算約 2-3 小時。 |
89-
| Rust mutation sweep | `bun run mutation:rust:full` / GitHub `Mutation` workflow `rust-mutation` | whole-workspace cargo-mutants sweep | Manual / scheduled deep gate;focused `mutation:rust:quality` 只作 triage helper。 |
90-
| Full local sweep | `bun run check:full` | `bun run check` alias | 保留給舊 muscle memory;不再是比 `check` 更嚴的 gate。 |
91-
| Release-style local verification | `bun run verify` | `check` + `desktop:build:debug` | 作為 release / milestone closeout 的本地預演;會先透過 `check` 自動觸發 coverage、e2e 與 mutation。 |
92-
| Deep local verification | `bun run check:deep` | `check` + full JS/Rust mutation sweep | 只用於 release candidate / long-running manual pass;不作每次 commit 要求。 |
81+
| Gate | Command / Workflow | 用途 | 備註 |
82+
| -------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
83+
| Platform Rust native sweep | `bun run test:platform:rust` / GitHub `Platform Native` workflow | 直接驗證 host keyring / scheduler / launcher / discovery / biometric capability | hosted runner 成本高且 host-sensitive,所以移到 manual workflow;Linux job 仍會在隔離 `dbus-run-session` 內啟動 `gnome-keyring-daemon` |
84+
| Platform desktop slice | `bun run test:platform:desktop` / GitHub `Platform Native` workflow | debug desktop build + updater / launcher desktop command slice | 這是 desktop command truth,不等於 browser preview e2e。 |
85+
| Project-scoped native dependency proof | `bun run native-deps:doctor` + OpenCC vcpkg install / GitHub `Native Dependencies` workflow | 驗證 repo-local vcpkg native dependency contract | 只在 manual dispatch、PR、或 `main` push 觸及 native-deps/vcpkg contract path 時跑;macOS proof 用 `macos-15-intel` + `x64-osx`不屬於每次 commit 的 strict checker。 |
86+
| Chrome desktop bridge smoke | `bun run test:e2e:desktop-bridge:truth` | 啟動 feature-gated desktop bridge,讓 Chrome / Playwright 驗證真實 Rust command | 已納入 `bun run check`;單獨跑只作 bridge triage。 |
87+
| Desktop-contract JS mutation | `bun run mutation:js` / `bun run check:mutation` | 對 desktop entry + typed IPC contract 做 lightweight mutation gate | 已納入 `bun run check`;2026-04-27 current-host wall time 約 50 秒,break threshold 是 100。 |
88+
| Full JS mutation sweep | `bun run mutation:js:full` / GitHub `Mutation` workflow `javascript-mutation` | 對 active frontend runtime surface 做 repo-level mutation investigation | Manual / scheduled deep gate;2026-04-27 dry-run 約 2m20s,full sweep 21769 mutants,按 44m/32% 實測估算約 2-3 小時。 |
89+
| Rust mutation sweep | `bun run mutation:rust:full` / GitHub `Mutation` workflow `rust-mutation` | whole-workspace cargo-mutants sweep | Manual / scheduled deep gate;focused `mutation:rust:quality` 只作 triage helper。 |
90+
| Full local sweep | `bun run check:full` | `bun run check` alias | 保留給舊 muscle memory;不再是比 `check` 更嚴的 gate。 |
91+
| Release-style local verification | `bun run verify` | `check` + `desktop:build:debug` | 作為 release / milestone closeout 的本地預演;會先透過 `check` 自動觸發 coverage、e2e 與 mutation。 |
92+
| Deep local verification | `bun run check:deep` | `check` + full JS/Rust mutation sweep | 只用於 release candidate / long-running manual pass;不作每次 commit 要求。 |
9393

9494
> 2026-04-27 gate-cost decision:舊的 2026-04-08 signed-off parser / AI helper mutation contract 仍是 focused triage helper;不能被誤報成 Rust mutation gate。`WORK-QA-GATE-A` 的當前 truth 以 `STATUS.md` 為準,100% JS/Rust coverage 仍是 stop-ship,full JS/Rust mutation 改為 deep/manual evidence 而不是 per-commit blocker。
9595

0 commit comments

Comments
 (0)