Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
dde6c02
ci: parallelize pull request validation
entelecheia Aug 24, 2026
4772921
ci: parallelize release preflight
entelecheia Aug 24, 2026
0ad73ff
ci(release): narrow macOS targets and document parallel checks
entelecheia Aug 24, 2026
cce61ed
ci: parallelize release CLI smoke
entelecheia Aug 24, 2026
0332b74
docs(04): capture phase context
entelecheia Aug 25, 2026
9a91e7d
docs(state): record phase 4 context session
entelecheia Aug 25, 2026
7849e58
docs(4): research editor surface state extraction
entelecheia Aug 25, 2026
daca78b
docs(phase-4): add validation strategy
entelecheia Aug 25, 2026
80bf252
docs(04): create editor surface extraction plans
entelecheia Aug 25, 2026
0b14451
docs(phase-04): add Wave 0 validation contract
entelecheia Aug 25, 2026
13c4da2
fix(04): remove contradictory coverage artifact
entelecheia Aug 25, 2026
cb9f30d
docs(04): record implementation patterns
entelecheia Aug 25, 2026
c28ab00
docs(04): create phase plan
entelecheia Aug 25, 2026
fc865e8
test(04-01): add facade state contracts
entelecheia Aug 25, 2026
988b612
test(04-01): add editor render contracts
entelecheia Aug 25, 2026
670ffeb
docs(04-01): record validation contracts
entelecheia Aug 25, 2026
5f580e7
docs(04-01): update execution state
entelecheia Aug 25, 2026
0e5141c
test(04-02): activate Outline facade contract
entelecheia Aug 25, 2026
2606fc7
feat(04-02): route Outline headings through facade
entelecheia Aug 25, 2026
abe205c
test(04-02): add file queue facade contract\n\n- Prove queue publishe…
entelecheia Aug 25, 2026
21af001
feat(04-02): migrate Outline file queue facade\n\n- Isolate keyed fil…
entelecheia Aug 25, 2026
77cacdb
fix(04-02): satisfy facade verification gates\n\n- Include keyed scop…
entelecheia Aug 25, 2026
8fb974a
fix(04-02): use file queue facade transition\n\n- Keep production que…
entelecheia Aug 25, 2026
28265cb
docs(04-02): complete Outline facade and file queue render isolation …
entelecheia Aug 25, 2026
7c8fe53
test(04-03): add failing Outline facade contract
entelecheia Aug 25, 2026
fbcbb01
feat(04-03): complete Outline facade boundary
entelecheia Aug 25, 2026
babd678
test(04-03): add guarded Outline persistence contract
entelecheia Aug 25, 2026
22960ed
feat(04-03): guard Outline surface persistence
entelecheia Aug 25, 2026
8bcd0e1
fix(04-03): remove stale Outline type imports
entelecheia Aug 25, 2026
62b35b1
docs(04-03): complete Outline facade persistence plan
entelecheia Aug 25, 2026
1813e93
test(04-04): activate Editor facade store contract
entelecheia Aug 25, 2026
b0e19ac
feat(04-04): add keyed Editor facade store
entelecheia Aug 25, 2026
dd5c6c3
test(04-04): add Editor persistence lifecycle contract
entelecheia Aug 25, 2026
6df7306
feat(04-04): wire Editor facade persistence lifecycle
entelecheia Aug 25, 2026
a5c10ed
docs(04-04): complete Editor facade persistence plan
entelecheia Aug 25, 2026
48f6b0b
test(04-05): activate Editor facade migration contract
entelecheia Aug 25, 2026
afc18a7
feat(04-05): migrate EditorPane to facade commands
entelecheia Aug 25, 2026
e6b768e
test(04-05): activate EditorPane render contracts
entelecheia Aug 25, 2026
db06add
feat(04-05): prove EditorPane render isolation
entelecheia Aug 25, 2026
d7f1a93
fix(04-05): keep EditorPane command ports stable
entelecheia Aug 25, 2026
a74d674
docs(04-05): complete Editor facade commands and render isolation plan
entelecheia Aug 25, 2026
8f58c89
docs(04-05): record resolved execution deviations
entelecheia Aug 25, 2026
b8324f0
fix(04-06): preserve Editor HTML transient state
entelecheia Aug 25, 2026
e65e0b2
docs(04-06): complete final editor surface verification plan
entelecheia Aug 25, 2026
a087857
docs(04-06): correct verification duration
entelecheia Aug 25, 2026
e026669
docs(04): add code review report
entelecheia Aug 25, 2026
9b23e8f
fix(04): WR-01 defer editor facade publication
entelecheia Aug 25, 2026
fd92a71
docs(04): add code review fix report
entelecheia Aug 26, 2026
23eae6d
docs(04): record clean code review rerun
entelecheia Aug 26, 2026
472f1ff
docs(phase-04): revert premature Complete requirements after gaps found
entelecheia Aug 26, 2026
adcbb6d
docs(04): record phase verification gaps
entelecheia Aug 26, 2026
318f049
docs(04): create gap closure plan
entelecheia Aug 26, 2026
05960d6
fix(04-07): isolate shell surfaces from draft updates
entelecheia Aug 26, 2026
d54fddc
test(04-07): cover both editor group draft updates
entelecheia Aug 26, 2026
b77fbbf
docs(04-07): complete real shell render isolation plan
entelecheia Aug 26, 2026
9106d9e
docs(04): update code review report
entelecheia Aug 26, 2026
d49235b
fix(04): strengthen shell render isolation regression
entelecheia Aug 26, 2026
a73da6e
docs(04): update code review fix report
entelecheia Aug 26, 2026
72c4424
docs(04): record clean gap review rerun
entelecheia Aug 26, 2026
a602d60
docs(phase-04): complete phase execution
entelecheia Aug 26, 2026
86c96f6
docs(phase-04): evolve PROJECT.md after phase completion
entelecheia Aug 26, 2026
d524678
docs(phase-04): add security threat verification
entelecheia Aug 26, 2026
3e86f7b
docs(phase-04): update validation strategy
entelecheia Aug 26, 2026
557fbb5
docs(05): capture phase context
entelecheia Aug 26, 2026
5001650
docs(state): record phase 5 context session
entelecheia Aug 26, 2026
e288f42
docs(05): research shell decomposition completion
entelecheia Aug 26, 2026
1f8984b
docs(phase-5): add validation strategy
entelecheia Aug 26, 2026
7fb59fb
docs(05): create shell decomposition plans
entelecheia Aug 26, 2026
6995e53
docs(05): create phase plan
entelecheia Aug 26, 2026
330f531
docs(05): map implementation patterns
entelecheia Aug 26, 2026
2cdcb30
test(05-01): add document browser facade contracts
entelecheia Aug 26, 2026
911378b
feat(05-01): extract document browser tracer
entelecheia Aug 26, 2026
39a1bb7
test(05-01): cover canonical outline browser slices
entelecheia Aug 26, 2026
e54a18a
feat(05-01): compose outline browser slices
entelecheia Aug 26, 2026
1598260
docs(05-01): complete document browser facade plan
entelecheia Aug 26, 2026
78db699
docs(05-01): update document browser plan state
entelecheia Aug 26, 2026
fa6ee28
test(05-02): add failing terminal handle contract\n\n- Cover handle-o…
entelecheia Aug 26, 2026
428449f
feat(05-02): require terminal session handles in frontend\n\n- Make a…
entelecheia Aug 26, 2026
d345e04
test(05-02): add failing terminal handle backend contracts\n\n- Requi…
entelecheia Aug 26, 2026
0983cd2
feat(05-02): enforce terminal handles in Rust commands\n\n- Deseriali…
entelecheia Aug 26, 2026
ecabcbb
docs(05-02): complete terminal handle contract plan\n\n- Record handl…
entelecheia Aug 26, 2026
f09bd7d
docs(05-02): update terminal handle plan state\n\n- Mark SHELL-06 com…
entelecheia Aug 26, 2026
ed34977
test(05-03): add terminal panel store contracts
entelecheia Aug 26, 2026
1d7ce9f
feat(05-03): separate terminal state from runtime resources
entelecheia Aug 26, 2026
c21a7ca
test(05-03): lock terminal panel shell boundary
entelecheia Aug 26, 2026
263038a
feat(05-03): narrow terminal panel shell boundary
entelecheia Aug 26, 2026
5697679
docs(05-03): complete terminal panel ownership plan
entelecheia Aug 26, 2026
d204bbc
test(05-04): add failing shell settings store contracts
entelecheia Aug 26, 2026
a3d0369
feat(05-04): externalize shell settings ownership
entelecheia Aug 26, 2026
eb8e9c1
test(05-04): add failing mode registry contract
entelecheia Aug 26, 2026
acfac11
feat(05-04): route PKM through lazy mode registry
entelecheia Aug 26, 2026
07ac0ed
test(05-04): add failing E2E registry contract
entelecheia Aug 26, 2026
933b3f2
feat(05-04): register feature-gated E2E adapter
entelecheia Aug 26, 2026
b501e76
docs(05-04): complete shell mode registry plan
entelecheia Aug 26, 2026
54f319c
docs(05-04): update shell mode registry plan state
entelecheia Aug 26, 2026
11911c5
test(05-05): define Diagram adapter isolation contract
entelecheia Aug 26, 2026
5e1ebf6
feat(05-05): route Diagram through a lazy adapter
entelecheia Aug 26, 2026
a31e25c
test(05-05): define Graph and Sites adapter contracts
entelecheia Aug 26, 2026
f662afd
feat(05-05): register Graph and Sites adapters
entelecheia Aug 26, 2026
58d7a73
docs(05-05): complete visual mode adapters plan
entelecheia Aug 26, 2026
cf8db07
fix(05-05): remove stale visual mode imports
entelecheia Aug 26, 2026
4051067
test(05-06): define failing agent runtime store contracts
entelecheia Aug 26, 2026
91651a8
feat(05-06): extract agent runtime mode store
entelecheia Aug 26, 2026
2d5bb7a
test(05-06): lock agent runtime identity isolation
entelecheia Aug 26, 2026
bf06093
feat(05-06): stabilize agent runtime slices
entelecheia Aug 26, 2026
14835b7
docs(05-06): complete agent runtime store plan
entelecheia Aug 26, 2026
9d320de
test(05-07): define failing communications store contracts
entelecheia Aug 26, 2026
d069a5a
feat(05-07): migrate Inbox to lazy communications adapter
entelecheia Aug 26, 2026
32b49bb
test(05-07): define failing Comms adapter contract
entelecheia Aug 26, 2026
e23270f
feat(05-07): migrate Comms to lazy communications adapter
entelecheia Aug 26, 2026
aa83dee
docs(05-07): complete shell decomposition completion plan
entelecheia Aug 26, 2026
a049596
test(05-08): add failing Scratchpad mode store tests
entelecheia Aug 26, 2026
78e1a43
feat(05-08): migrate Scratchpad to lazy mode adapter
entelecheia Aug 26, 2026
17befa4
test(05-08): add failing Drafts and Gap adapter tests
entelecheia Aug 26, 2026
a8f6c29
feat(05-08): migrate Drafts and Gap to mode adapters
entelecheia Aug 26, 2026
b38e5d1
docs(05-08): complete shell decomposition completion plan
entelecheia Aug 26, 2026
d3d83b5
test(05-09): define Files mode store contract
entelecheia Aug 26, 2026
5046295
feat(05-09): migrate Files to lazy mode adapter
entelecheia Aug 26, 2026
c3e0ab8
test(05-09): define Studio and Catalog adapter contracts
entelecheia Aug 26, 2026
47a5592
feat(05-09): migrate Studio and Catalog to mode adapters
entelecheia Aug 26, 2026
ad4e64b
docs(05-09): complete Files Studio Catalog adapter plan
entelecheia Aug 26, 2026
7805e1c
docs(05-09): update plan tracking
entelecheia Aug 26, 2026
0852981
test(05-10): add failing Meetings planning-store contract
entelecheia Aug 26, 2026
4a440fa
feat(05-10): migrate planning modes to lazy adapters
entelecheia Aug 26, 2026
4a870a0
test(05-10): cover Today and Tasks planning isolation
entelecheia Aug 26, 2026
e659349
test(05-10): add failing registry exhaustiveness contract
entelecheia Aug 26, 2026
14f0143
feat(05-10): enforce exhaustive planning registry coverage
entelecheia Aug 26, 2026
484af2c
docs(05-10): complete planning mode adapter plan
entelecheia Aug 26, 2026
1ada3d1
test(05-11): add failing shell architecture guard
entelecheia Aug 26, 2026
3468e83
feat(05-11): externalize communications and files runtime state
entelecheia Aug 26, 2026
05033a6
feat(05-11): route document operation modes through controller
entelecheia Aug 26, 2026
5406792
feat(05-11): externalize communications and document lifecycles
entelecheia Aug 26, 2026
ce5fdbe
feat(05-11): externalize terminal and document shell bridges
entelecheia Aug 26, 2026
42a2ac8
test(05-11): add shell extensibility drills
entelecheia Aug 26, 2026
eda2ca1
fix(05-11): stabilize agents adapter lifecycle callbacks
entelecheia Aug 26, 2026
fc79e5d
fix(05-11): preserve mode handoffs in workbench adapters
entelecheia Aug 26, 2026
6fe302f
test(05-11): complete shell isolation contract
entelecheia Aug 26, 2026
b8fbe03
test(05-11): harden shell extensibility drills
entelecheia Aug 26, 2026
8bb87d0
docs(05-11): complete shell completion contract plan
entelecheia Aug 26, 2026
72a919a
docs(05-11): update shell completion tracking
entelecheia Aug 26, 2026
f73ec5f
docs(05): add code review report
entelecheia Aug 26, 2026
0ce3621
fix(05): CR-01 restore graph workspace lifecycle
entelecheia Aug 26, 2026
1f64ac1
fix(05): CR-02 publish mode hosts after commit
entelecheia Aug 26, 2026
3520966
fix(05): WR-01 clean document browser on workspace removal
entelecheia Aug 26, 2026
6fc2f17
fix(05): preserve typed mode host and cleanup fixture
entelecheia Aug 26, 2026
3553df1
fix(05): satisfy stable host dependency lint
entelecheia Aug 26, 2026
c7a8535
fix(05): WR-01 test graph watcher event path
entelecheia Aug 26, 2026
cd4476b
fix(05): WR-02 test document browser cleanup
entelecheia Aug 26, 2026
1558ab9
docs(05): finalize code review
entelecheia Aug 26, 2026
36d96f3
docs(phase-05): update validation strategy
entelecheia Aug 26, 2026
72ecdc5
docs(phase-05): add security threat verification
entelecheia Aug 26, 2026
d392455
test(05): persist human verification items as UAT
entelecheia Aug 26, 2026
2967760
docs(phase-05): record native UAT results
entelecheia Aug 28, 2026
da358d9
docs(phase-05): close native verification gate
entelecheia Aug 28, 2026
eb37d0e
docs(milestone): complete phase 05
entelecheia Aug 28, 2026
a98d37f
docs(phase-05): close UAT lifecycle
entelecheia Aug 28, 2026
363f8a6
docs(milestone): audit v1.0 integration
entelecheia Aug 28, 2026
310d468
chore: archive v1.0 milestone files
entelecheia Aug 28, 2026
00df671
chore: remove REQUIREMENTS.md for v1.0 milestone
entelecheia Aug 28, 2026
e475c20
chore: finalize v1.0 audit archive
entelecheia Aug 28, 2026
508d7a8
Merge remote-tracking branch 'origin/main' into HEAD
entelecheia Aug 28, 2026
dbc7373
docs(milestone): normalize archived summary whitespace
entelecheia Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 80 additions & 50 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
- README.md
- CHANGELOG.md
- docs/**
- .planning/**
- .github/**/*.md
push:
branches:
Expand All @@ -15,6 +16,7 @@ on:
- README.md
- CHANGELOG.md
- docs/**
- .planning/**
- .github/**/*.md
workflow_dispatch:

Expand All @@ -31,55 +33,60 @@ env:
CARGO_TERM_COLOR: always

jobs:
verify:
name: make verify
decision:
name: CI decision
runs-on: ubuntu-22.04
timeout-minutes: 60
timeout-minutes: 10
outputs:
run_full: ${{ steps.dedupe.outputs.run_full }}

steps:
- name: Deduplicate an already verified main tree
id: dedupe
if: github.event_name == 'push'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
set -uo pipefail
run_full=true
reason="no exact successful pull request validation was found"

if ! pulls=$(gh api \
-H "Accept: application/vnd.github+json" \
"repos/$GITHUB_REPOSITORY/commits/$GITHUB_SHA/pulls?per_page=100"); then
echo "::warning::Could not resolve associated pull requests; running full CI."
else
pr=$(jq -c --arg sha "$GITHUB_SHA" \
'[.[] | select(.merged_at != null and .merge_commit_sha == $sha)] | sort_by(.number) | last // empty' \
<<<"$pulls")

if [ -n "$pr" ]; then
pr_number=$(jq -r .number <<<"$pr")
head_sha=$(jq -r .head.sha <<<"$pr")

if push_tree=$(gh api "repos/$GITHUB_REPOSITORY/git/commits/$GITHUB_SHA" --jq .tree.sha) \
&& head_tree=$(gh api "repos/$GITHUB_REPOSITORY/git/commits/$head_sha" --jq .tree.sha) \
&& runs=$(gh api \
"repos/$GITHUB_REPOSITORY/actions/workflows/ci.yml/runs?event=pull_request&head_sha=$head_sha&status=completed&per_page=20"); then
expected_title="CI PR #$pr_number"
latest_conclusion=$(jq -r --arg title "$expected_title" \
'[.workflow_runs[] | select(.display_title == $title)] | sort_by(.run_started_at) | last | .conclusion // ""' \
<<<"$runs")

if [ "$push_tree" = "$head_tree" ] && [ "$latest_conclusion" = "success" ]; then
run_full=false
reason="PR #$pr_number successfully validated the exact tree $push_tree"
elif [ "$push_tree" != "$head_tree" ]; then
reason="the merged tree differs from PR #$pr_number head"
reason="this event requires full validation"

if [ "$GITHUB_EVENT_NAME" = "push" ]; then
reason="no exact successful pull request validation was found"

if ! pulls=$(gh api \
-H "Accept: application/vnd.github+json" \
"repos/$GITHUB_REPOSITORY/commits/$GITHUB_SHA/pulls?per_page=100"); then
echo "::warning::Could not resolve associated pull requests; running full CI."
else
pr=$(jq -c --arg sha "$GITHUB_SHA" \
'[.[] | select(.merged_at != null and .merge_commit_sha == $sha)] | sort_by(.number) | last // empty' \
<<<"$pulls")

if [ -n "$pr" ]; then
pr_number=$(jq -r .number <<<"$pr")
head_sha=$(jq -r .head.sha <<<"$pr")

if push_tree=$(gh api "repos/$GITHUB_REPOSITORY/git/commits/$GITHUB_SHA" --jq .tree.sha) \
&& head_tree=$(gh api "repos/$GITHUB_REPOSITORY/git/commits/$head_sha" --jq .tree.sha) \
&& runs=$(gh api \
"repos/$GITHUB_REPOSITORY/actions/workflows/ci.yml/runs?event=pull_request&head_sha=$head_sha&status=completed&per_page=20"); then
expected_title="CI PR #$pr_number"
latest_conclusion=$(jq -r --arg title "$expected_title" \
'[.workflow_runs[] | select(.display_title == $title)] | sort_by(.run_started_at) | last | .conclusion // ""' \
<<<"$runs")

if [ "$push_tree" = "$head_tree" ] && [ "$latest_conclusion" = "success" ]; then
run_full=false
reason="PR #$pr_number successfully validated the exact tree $push_tree"
elif [ "$push_tree" != "$head_tree" ]; then
reason="the merged tree differs from PR #$pr_number head"
else
reason="the latest CI run for PR #$pr_number is not successful"
fi
else
reason="the latest CI run for PR #$pr_number is not successful"
echo "::warning::Could not verify the associated PR tree and run; running full CI."
fi
else
echo "::warning::Could not verify the associated PR tree and run; running full CI."
fi
fi
fi
Expand All @@ -91,13 +98,19 @@ jobs:
echo "$reason. Expensive validation is skipped for this main push." >> "$GITHUB_STEP_SUMMARY"
fi

verify:
name: make verify
needs: decision
if: needs.decision.outputs.run_full == 'true'
runs-on: ubuntu-22.04
timeout-minutes: 60

steps:
- name: Checkout
if: steps.dedupe.outputs.run_full != 'false'
uses: actions/checkout@v5

- name: Check patch and detect a release version change
id: changes
if: steps.dedupe.outputs.run_full != 'false'
shell: bash
env:
BASE_SHA: ${{ github.event.pull_request.base.sha || github.event.before }}
Expand All @@ -124,31 +137,26 @@ jobs:
fi

- name: Setup pnpm
if: steps.dedupe.outputs.run_full != 'false'
uses: pnpm/action-setup@v6
with:
version: 9.15.0

- name: Setup Node
if: steps.dedupe.outputs.run_full != 'false'
uses: actions/setup-node@v5
with:
node-version: 22.22.3
cache: pnpm

- name: Setup Rust
if: steps.dedupe.outputs.run_full != 'false'
uses: dtolnay/rust-toolchain@stable

- name: Cache Rust build
if: steps.dedupe.outputs.run_full != 'false'
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri -> target
key: ci-ubuntu-22.04
shared-key: ubuntu-22.04-validation

- name: Install Linux Tauri dependencies
if: steps.dedupe.outputs.run_full != 'false'
run: |
sudo apt-get update
sudo apt-get install -y \
Expand All @@ -159,29 +167,51 @@ jobs:
librsvg2-dev

- name: Install frontend dependencies
if: steps.dedupe.outputs.run_full != 'false'
run: pnpm install --frozen-lockfile

- name: Run verify (typecheck + version checks + guards + tests + frontend build)
if: steps.dedupe.outputs.run_full != 'false' && steps.changes.outputs.release != 'true'
if: steps.changes.outputs.release != 'true'
run: make verify

- name: Run verify and release-only checks
if: steps.dedupe.outputs.run_full != 'false' && steps.changes.outputs.release == 'true'
if: steps.changes.outputs.release == 'true'
run: make release-checks

e2e:
name: playwright e2e
needs: decision
if: needs.decision.outputs.run_full == 'true'
runs-on: ubuntu-22.04
timeout-minutes: 60

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
version: 9.15.0

- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: 22.22.3
cache: pnpm

- name: Install frontend dependencies
run: pnpm install --frozen-lockfile

# e2e used to run only in release-preflight, so a broken or flaky spec
# first surfaced on the release tag instead of on the PR that caused it.
- name: Install Playwright browsers
if: steps.dedupe.outputs.run_full != 'false'
run: pnpm exec playwright install --with-deps chromium

- name: Run e2e
if: steps.dedupe.outputs.run_full != 'false'
run: make test-e2e

- name: Upload e2e artifacts on failure
if: steps.dedupe.outputs.run_full != 'false' && failure()
if: failure()
uses: actions/upload-artifact@v4
with:
name: playwright-report
Expand Down
13 changes: 7 additions & 6 deletions .github/workflows/release-bundles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,14 @@ jobs:

# rust-toolchain.toml pins the channel (GATE-05), so cargo resolves to the
# pinned toolchain rather than the stable one the action installed. Adding
# targets through the action's `targets:` input adds them to stable, which
# the build never uses - the v0.4.63 macOS Intel job failed on exactly that
# ("Target x86_64-apple-darwin is not installed"). Run rustup from the repo
# so it resolves the pinned toolchain and installs the targets there.
- name: Add macOS cross targets to the pinned toolchain
# a target through the action's `targets:` input adds it to stable, which
# the build never uses. Run rustup from the repo so each macOS matrix leg
# installs only its own target into the pinned toolchain.
- name: Add macOS target to the pinned toolchain
if: matrix.platform == 'macos-latest'
run: rustup target add aarch64-apple-darwin x86_64-apple-darwin
env:
TARGET: ${{ matrix.cli_target }}
run: rustup target add "$TARGET"

- name: Cache Rust build
uses: Swatinem/rust-cache@v2
Expand Down
96 changes: 87 additions & 9 deletions .github/workflows/release-preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ env:
CARGO_TERM_COLOR: always

jobs:
release-preflight:
name: make release-preflight
release-preflight-core:
name: make release-preflight-core
runs-on: ubuntu-22.04
timeout-minutes: 90
timeout-minutes: 60

steps:
- name: Checkout
Expand All @@ -41,7 +41,7 @@ jobs:
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri -> target
key: release-preflight-ubuntu-22.04
shared-key: ubuntu-22.04-validation

- name: Install Linux Tauri dependencies
run: |
Expand All @@ -51,15 +51,93 @@ jobs:
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf \
rpm
librsvg2-dev

- name: Install frontend dependencies
run: pnpm install --frozen-lockfile

- name: Run release preflight core
run: make release-preflight-core

cli-smoke:
name: make cli-smoke
runs-on: ubuntu-22.04
timeout-minutes: 60

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
version: 9.15.0

- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: 22.22.3

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache Rust build
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri -> target
shared-key: ubuntu-22.04-release-cli

- name: Install Linux Tauri dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev

- name: Install frontend dependencies
run: pnpm install --frozen-lockfile

- name: Run release CLI smoke
run: make cli-smoke

e2e:
name: playwright e2e
runs-on: ubuntu-22.04
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
version: 9.15.0

- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: 22.22.3
cache: pnpm

- name: Install frontend dependencies
run: pnpm install --frozen-lockfile

- name: Install Playwright browser
run: pnpm exec playwright install --with-deps chromium

- name: Run release preflight
run: make release-preflight
- name: Run e2e
run: make test-e2e

- name: Upload e2e artifacts on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: |
playwright-report/
test-results/
retention-days: 7
Loading