Skip to content

Add the cosmic UI layer: backdrop, glass shell and honest placeholders - #158

Closed
DTALEX66 wants to merge 2 commits into
codex/Auditfrom
codex/minimax-aaos-cosmic-ui-20261001
Closed

DTALEX66 wants to merge 2 commits into
codex/Auditfrom
codex/minimax-aaos-cosmic-ui-20261001

Conversation

@DTALEX66

@DTALEX66 DTALEX66 commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

What this is

The cosmic UI layer for the Avalonia desktop, committed and pushed so it is under version control
and on the remote. Until this branch, the work existed only as uncommitted changes in the
minimax-aaos-cosmic-ui-20261001 worktree — no commit, no stash, and no remote branch held it, so a
removal of that worktree would have lost 353 added lines.

Draft on purpose. Author's work, committed on their behalf: the changes are as found. If the
author prefers a different shape — a different base, a squash, an amended message, the second
commit dropped — say so and it will be redone. Only tests/test_aaos_icon_b10_contract.py in the
second commit was written here, to fix a failing assertion described below.

Commits

Commit Scope CI
fec7a18f 13 files: 7 source, 6 tests — the work as found success, including desktop-vnext, desktop-fast, desktop-build, windows-runtime-smoke, browser-smoke, wheel-smoke, rust-vnext, contracts-vnext, py-compat (3.11 and 3.13), migration-targeted, security-targeted, format-targeted
627e74ff 1 file: tests/test_aaos_icon_b10_contract.py success — test (3.12), gateplan, lint, a0-gates. The heavy jobs are correctly skipped for a test-only change

What changed

File Change
AaosBackdrop.cs a real spatial layer under the glass: opaque theme base, a deterministic star field instead of random noise or a particle simulation, concentric orbit rings from the grid brush
MainWindow.axaml shell refactored into a topbar and a context sidebar; rail labels present but hidden so the narrow-width contract still holds; home cards moved onto the frame grid
MainWindow.axaml.cs navigation wiring for the new shell
ThemePalette.cs a third palette, 深空主题 / DeepSpace; Apply() moves from a two-way choice to a switch over three tables
Themes/AaosTheme.axaml declares the new brushes
Views/SourceReaderView.axaml same treatment for the reader
Program.cs entry adjustment
six tests/* files the affected navigation and layout contracts

Two properties worth noting for review:

  • Accessibility improved, not decorated: AutomationProperties.Name is set on the navigation and
    action buttons, so controls are reachable by name rather than only by position.
  • Unconnected surfaces now say so. The workspace tree, file/document/trash, personal memory and
    knowledge-graph panels read "waiting for the Core projection" or "not yet built" rather than
    presenting an empty success. That matches the production contract's rule that a surface which is
    not connected must render as not connected —
    docs/current/AAOS-PRODUCTION-HTTP-CONTRACT-20261001.md §8, on PR Measure production multiformat reachability, fix launcher credential identity, publish HTTP contract #157.

The one assertion this branch had to fix

The first commit's CI failed on exactly one test:

tests/test_aaos_icon_b10_contract.py::test_icon_stroke_and_foreground_follow_both_theme_palettes
    assert palettes.count('["AaosIvoryBrush"]') == 2
E   assert 3 == 2

The assertion was written when two palettes existed; the third palette makes three definitions of
the brush. The behaviour is correct and the assertion was describing the palette count rather than
the rule it tested.
It now states the rule — one ivory-brush definition per palette table, read
from the declarations — so it survives a fourth palette while still failing if a palette forgets the
brush. The three palette tables were first verified to be structurally identical (34 lines each),
so a complete third palette was added rather than a partial one.

That file is outside the six this branch already touched, which is why the first local run did not
catch it.

Verification and what is not claimed

  • CI is green on both commits, read back at their exact SHAs as listed above.
  • The six affected contract files pass locally: 229 passed.
  • A local run of the whole suite also reports six failures in test_diagnostics_api.py and
    test_release_manifest.py. These are the known host-environment class recorded in
    AAOS-ERRORS-BLOCKERS-20261001.md — one asserts that diagnostics carry no absolute-path marker
    while this worktree's own path contains D:\, and the others depend on a release-identity.json
    that is absent here. CI, which is clean, reported none of them, and none of the three files
    touched by those tests is in this branch's diff.
  • No rendering evidence is claimed. Nothing here says the visuals match the design masters; the
    tests are structural contracts, not screenshots. The UI fidelity question the errors document
    raises under "正式 UI" is untouched by this PR.

Relationship to the other branches

main 59498723  ->  codex/Audit 1a981a44  ->  this branch 627e74ff
                              ^
                              +-- codex/aaos-ui-phase2-20261001 is also at 1a981a44

codex/aaos-ui-phase2-20261001 exists on the remote but is identical to codex/Audit — it
carries no UI work of its own. This branch is the first commit that actually contains the cosmic UI
changes. Based against codex/Audit, the newest of the two.

Preserves the UI work that until now existed only as uncommitted changes in the
`minimax-aaos-cosmic-ui-20261001` worktree, with no commit, branch or stash holding it.

The backdrop gains a real spatial layer under the transparent shell: an opaque theme base so glass
surfaces reveal what is beneath, a deterministic star field rather than random noise or a particle
simulation, and concentric orbit rings drawn from the grid brush. ThemePalette grows the brushes
those surfaces resolve, and AaosTheme declares them.

MainWindow refactors the shell into a topbar and a context sidebar, with the rail labels present in
the markup but hidden so the narrow-width contract keeps holding, and the home cards moved onto the
new frame grid. SourceReaderView picks up the same treatment.

Accessibility improves with AutomationProperties.Name on the navigation and action buttons, so the
controls are reachable by name rather than only by position.

Surfaces that are not connected now say so in the interface: the workspace tree, file/document/
trash, personal memory and knowledge graph panels read "waiting for the Core projection" or "not yet
built" instead of presenting an empty success. That matches the contract's rule that an unconnected
surface must render as unconnected, and it is why the six navigation and layout contract tests are
updated here rather than bypassed - 229 tests pass.

Committed on the author's behalf to put the work under version control and on the remote. The
changes themselves are as found; nothing outside the seven source files and six test files was
touched.
CI failed on one test in the first commit of this branch:

    tests/test_aaos_icon_b10_contract.py::test_icon_stroke_and_foreground_follow_both_theme_palettes
    assert palettes.count('["AaosIvoryBrush"]') == 2
    assert 3 == 2

The assertion was written when two palettes existed. The cosmic theme layer added a third -
深空主题 / DeepSpace - and moved Apply() from a two-way choice to a switch over three tables, so
each palette defines the ivory brush the icons bind to and there are now three definitions. The
behaviour is correct; the assertion described the palette count rather than the rule it was testing.

It now states the rule: one ivory-brush definition per palette table, whatever number of tables
exists, read from the declarations themselves. That keeps the original intent and will not need
editing again when a fourth palette appears - while still failing if a palette forgets the brush.

Palette tables verified to be structurally identical before changing the assertion (34 lines each),
so a complete third palette was added rather than a partial one.

The test file is one of the files outside the six the branch already touched, which is why the
first commit's local run did not catch it: the six affected contract files pass, and this one is not
among them.

CI is the authority for this fix - the local run of the full suite also reports six diagnostics and
release-manifest failures, but those are the known host-environment class documented in
AAOS-ERRORS-BLOCKERS-20261001.md (one asserts no absolute-path marker while the worktree path itself
contains "D:\") and CI reported none of them.
@DTALEX66

DTALEX66 commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Frozen as donor material (owner decision, 2026-10-06). The product mainline is Tauri/React, and the reuse/copy of this desktop work is already in place: src-tauri/src/main.rs path-includes desktop/src-tauri/src/{backend,job,protocol,runtime}.rs, and AGENTS.md records the formal host as reusing the existing desktop/ lifecycle. The branch is preserved unfrozen-in-repo but this PR will not be merged; its cosmic UI layer and four-theme model stay with the frozen Avalonia donor. Reopen if the donor is ever revived.

@DTALEX66 DTALEX66 closed this Oct 6, 2026
DTALEX66 added a commit that referenced this pull request Oct 6, 2026
… no longer verifiable

Both sentences read as present-tense truth. Re-measuring them today produced 650/14/10-shared by
one method and 0 by another, because #157 is merged and #158 was closed: the honest correction is
that the claim can no longer be reproduced, not that a new number replaces it. Nothing is
overwritten - the originals stay above the dated correction.
@DTALEX66
DTALEX66 deleted the codex/minimax-aaos-cosmic-ui-20261001 branch October 12, 2026 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant