Skip to content

Commit a3b09ec

Browse files
ShadowfetchShadowfetch
authored andcommitted
Preserve newer navigation when onboarding startup finishes late
1 parent bf62e84 commit a3b09ec

31 files changed

Lines changed: 4201 additions & 50 deletions

‎.gitattributes‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,7 @@ tools/busybox-w32-patches/*.patch whitespace=-space-before-tab,-blank-at-eol
66

77
# Qualification logs preserve exact emitted bytes for recorded SHA-256 digests.
88
reports/*.log whitespace=-blank-at-eol,-blank-at-eof
9+
10+
# Preserve original Windows qualification receipt bytes and their recorded hashes.
11+
docs/qa/windows-candidate-bf62e84/*.json -text whitespace=cr-at-eol
12+
docs/qa/onboarding-navigation-2.4.1/*.txt whitespace=-blank-at-eof

‎CHANGELOG.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# Changelog
22

3-
## 2.4.1: Short-window workspace controls
3+
## 2.4.1: Short-window controls and reliable startup
44

55
- Prevent the composer from painting over terminal dock controls at larger zoom levels in short windows.
66
- Keep conversation/composer scrolling, menus and Latest activity reachable while preserving editor and composer drafts and the terminal session.
77
- Include a fallback for webviews without size container queries and regression coverage for the measured Windows geometry and CSS zoom.
88
- Display Windows folder names correctly in terminal notices, reserve complete terminal rows, and keep long notices, errors and terminal controls accessible by scrolling.
9+
- Keep delayed startup restoration and workspace results from overriding newer conversation or project navigation.
910
- Check AppStream release metadata against the application version before native packaging.
1011
- Retain 2.4.0 publication evidence and the native Windows failure that prompted this patch; qualify new installer bytes separately.
1112

‎README.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
**Version 2.4.0** brings a simpler first run, a workspace with files and a docked terminal, and local-runtime reliability improvements. See [what’s new in 2.4](#whats-new-in-24), the [release notes](docs/RELEASE_NOTES.md#shadowcode-240), and [platform qualification](docs/PLATFORM_QUALIFICATION.md) for the checks and their limits.
88

9-
**2.4.1 source candidate:** physical Windows testing found that the composer can
10-
overlap the terminal’s Hide control at 175% zoom in a short window. The patch is
11-
being qualified; 2.4.0 remains the published version. See the
9+
**2.4.1 source candidate:** physical Windows testing found short-window
10+
composer/dock overlap, terminal-row clipping and a delayed startup navigation
11+
race. The patch is being qualified; 2.4.0 remains the published version. See the
1212
[platform qualification record](docs/PLATFORM_QUALIFICATION.md) for exact scope.
1313

1414
### An open-source project by Shadowfetch
@@ -859,7 +859,8 @@ Release packaging is described in [docs/RELEASING.md](docs/RELEASING.md).
859859

860860
## Tests
861861

862-
Recorded validation for the frozen **2.4 source implementation**:
862+
Historical validation for the frozen **2.4.0 source baseline**
863+
(the 2.4.1 patch has separate results in its release notes and qualification record):
863864

864865
| Check | Result |
865866
| --- | --- |

‎docs/PLATFORM_QUALIFICATION.md‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# Physical-machine platform qualification
22

3+
## 2.4.1 replacement candidate bf62 — held, not published
4+
5+
Candidate `bf62e846f57d91df06aca3ab40158c0c7e5aee63`, Windows run
6+
`43176133588` attempt 1, artifact `13924953752`, installed successfully. The
7+
installed executable matched the payload independently extracted from the exact
8+
installer. See the [identity and receipt hashes](qa/windows-candidate-bf62e84/summary.json).
9+
10+
The first native UI attempt failed conversation selection after creation. Source
11+
review found that a delayed post-onboarding boot can override newer navigation;
12+
the retained database is consistent with that race but does not establish its
13+
exact asynchronous ordering. An unchanged second attempt passed all nine window
14+
and zoom cases, all 45 Hide-control hit points, editor/draft checks and terminal
15+
continuity. Its final Settings check failed because a broad test locator matched
16+
two buttons. Both attempts remain failed overall. A sidebar-scoped locator was
17+
reviewed separately; no startup wait is being added to hide the product race.
18+
19+
This candidate was not tagged or published. Navigation ownership must be fixed
20+
and a fresh installer must pass the complete native check. No endurance or
21+
real-model test was run for this candidate. Native WebView automation does not
22+
establish physical-keyboard or OS-shortcut arbitration.
23+
324
## 2.4.1 initial candidate — failed, not published
425

526
Candidate `3984b7f5dfe39976c1eb3c1aec2a71de5b2c9666` installed successfully on

‎docs/RELEASE_NOTES.md‎

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,18 @@ past the conversation area and cover the terminal dock’s Hide control.
1818
terminal rows, including their padding and borders. Long notices, errors,
1919
tabs and restart controls remain accessible in a separate scrollable area.
2020

21-
The correction covers layout, terminal path labels and regression coverage. It does not change
22-
model backends, command permissions, signing keys or sandbox policy. The source
21+
## Startup and project navigation
22+
23+
- Prevent delayed post-onboarding startup from restoring an older conversation
24+
after the user has created or selected a newer one.
25+
- Keep late workspace, configuration, Git and trust results from overwriting a
26+
newer navigation choice. Project opening and conversation activation share
27+
the same ordered queue.
28+
- Preserve normal saved-session restoration and existing appearance callbacks.
29+
30+
The correction covers layout, terminal path labels, startup navigation and
31+
regression coverage. It does not change model backends, command permissions,
32+
signing keys or sandbox policy. The source
2333
release trust ceiling is extended to 2.4.1 using the existing Linux signing key.
2434
AppStream metadata is checked against application versions before packaging.
2535

@@ -32,10 +42,12 @@ and limitations.
3242

3343
## Validation
3444

35-
The corrected patch passed 913 interface unit tests and all 170 Chromium browser
45+
The corrected patch passed 928 interface unit tests and all 170 Chromium browser
3646
tests. Focused WebKit coverage passed 32 existing workspace checks and the four
3747
new terminal-layout checks; the latter use the browser's supported Option-Tab
38-
navigation. Type checking, the production build and bundle checks passed.
48+
navigation. After the startup correction, eight focused WebKit first-run and
49+
conversation-navigation cases passed as well. Type checking, the production
50+
build and bundle checks passed.
3951

4052
The terminal regressions fail against the earlier candidate in both Chromium
4153
and WebKit. They cover long Windows paths, long folder names, errors, multiple
@@ -44,6 +56,12 @@ original 12 composer regressions also failed against the 2.4.0 stylesheet.
4456
Linux release-authentication tests passed 115 checks, and the updated Debian
4557
packaging/metadata suites passed 19, including an early AppStream version check.
4658

59+
Controlled startup tests delay refresh, session lookup and project opening,
60+
then verify that newer choices remain selected in the UI and active at the
61+
backend API boundary. The app-level regression fails against the previous
62+
candidate. See the [source validation record](https://github.com/ShadowfetchStudio/ShadowCode/blob/main/docs/qa/onboarding-navigation-2.4.1/verification.json). Additional tests preserve normal startup, trust prompts and existing
63+
theme/text-size callbacks. These tests use a simulated backend.
64+
4765
A separate review-before-commit test timing race was corrected without changing
4866
the application's commit guard. Browser checks use a simulated backend; exact
4967
native installer qualification is recorded separately in the platform record.

‎docs/WINDOWS_PORT.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ installation, clean-PATH probes and installation on the Windows 11 laptop.
55
Physical qualification found composer overlap with the terminal Hide control at
66
175% zoom in a short window, so **native UI acceptance failed**. A 2.4.1 source
77
candidate addresses that defect; its initial installer exposed a separate
8-
terminal-row clipping issue in a narrow window. A corrected candidate remains
8+
terminal-row clipping issue in a narrow window. The next candidate passed the
9+
nine-case layout matrix but exposed a post-onboarding navigation race and a
10+
separate ambiguous Settings test selector. A further corrected candidate remains
911
pending complete qualification and publication.
1012
The 2.4.0 engine endurance test passed 100 sequential and 80 concurrent tasks,
1113
five cancellations and persistence after forced termination. Its real-model
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Startup navigation source validation
2+
3+
The two product and three test files in `source-hashes.json` passed 928 unit
4+
tests, 170 Chromium cases and eight focused WebKit cases, with zero failures
5+
or skips. Type checking, production build and fixture-isolation checks passed.
6+
`verification.json` records counts, browser statistics and original report hashes.
7+
8+
The identical navigation regressions against isolated baseline bf62 fail nine
9+
checks while three controls pass. See `baseline-final.json`, `baseline-final.txt`
10+
and `baseline-provenance.json`; `baseline-app.txt` is the initial UI reproduction.
11+
The independent final review found no actionable issues after preserving public
12+
refresh callback compatibility. `REVIEW-STATUS.md` is an earlier checkpoint;
13+
its then-pending browser checks are resolved by `verification.json`.
14+
15+
These source and simulated-backend checks do not qualify any native installer.
16+
Previous bf62 Windows failures remain separately recorded. Original logs, full
17+
reports, rejected intermediate callback code and baseline archive are retained
18+
in external `publication-2.4.1/onboarding-navigation-fix`.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Onboarding navigation ownership fix — review checkpoint
2+
3+
Baseline: bf62e846f57d91df06aca3ab40158c0c7e5aee63. No commit or release mutation.
4+
5+
Boot now captures one selection generation before its first await, checks ownership at each asynchronous boundary and passes its original generation into restoration. A user session/project choice supersedes boot; restoration cannot mint a newer ticket. Project opening shares the existing native activation queue because the native project endpoint activates a session itself.
6+
7+
Workspace exposes explicit refreshIfCurrent/reloadConfigIfCurrent helpers for navigation. Existing no-argument refresh/reloadConfig callbacks wrap these helpers and ignore Promise result/event arguments, preserving useAppearance's existing contract. Guarded helpers reject stale config, sessions/status/jobs/projects, and git writes. Catalog reload and asynchronous comparison-list writes are gated by boot ownership.
8+
9+
Evidence:
10+
- baseline-final.json: identical final navigation tests against an isolated git archive of bf62: 9 expected failures, 3 controls passing (12 total).
11+
- focused-final.log: 23 passing tests (15 new regressions and 8 existing appearance tests).
12+
- intermediate-optional-callback/: preserves the rejected intermediate implementation and its three deterministically failing callback-contract regressions; prior unit/build results there do not qualify the final source.
13+
- full-unit.json: 928 passing, zero failures/skips, 160 files on revised source.
14+
- typecheck.log, production-build.log, check-bundle.log: passed. validation-commands.json records final command exits.
15+
- source-hashes.json: exact two product and three test files under review.
16+
17+
Full Chromium and scoped WebKit await final independent review. All controlled regressions use Happy DOM and the fixture API; they are not native Windows qualification. Physical native evidence must come from a newly built candidate with a new source SHA. Old bf62 CI snapshots/endurance remain in sibling source-ci-bf62e84; monitoring was explicitly transferred away.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
> shadow-agent-ui@2.4.1 test
3+
> vitest run src/App.navigation.test.tsx
4+
5+
6+
RUN v5.0.1 /Users/shadowfetch/Projects/ShadowCode/ui
7+
8+
❯ src/App.navigation.test.tsx (1 test | 1 failed) 95ms
9+
× keeps the user's new conversation when post-onboarding boot refresh finishes late 95ms
10+
11+
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯
12+
13+
FAIL src/App.navigation.test.tsx > keeps the user's new conversation when post-onboarding boot refresh finishes late
14+
AssertionError: expected null not to be null
15+
❯ src/App.navigation.test.tsx:38:26
16+
36| fireEvent.change(screen.getByRole("textbox", { name: "Message Shadow…
17+
37| await act(async () => { release(projects); await held; });
18+
38| expect(selected()).not.toBeNull();
19+
| ^
20+
39| expect(fake.state.activeSession).toBe("s2");
21+
40| expect(localStorage.getItem("shadow:selected")).toBe("s2");
22+
23+
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯
24+
25+
26+
Test Files 1 failed (1)
27+
Tests 1 failed (1)
28+
Start at 03:17:00
29+
Duration 901ms (transform 50%, import 25%, environment 14%, tests 11%)
30+

0 commit comments

Comments
 (0)