Skip to content

feat: add reversible Windows styling and canonical rose typography - #69

Draft
j3w1 wants to merge 129 commits into
mainfrom
agent/windows-rose-v4
Draft

j3w1 wants to merge 129 commits into
mainfrom
agent/windows-rose-v4

Conversation

@j3w1

@j3w1 j3w1 commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Windows and packaged apps retain separate native brushes and cached transitions, so changing the global accent alone leaves gray controls. This draft adds canonical rose typography, scoped Windows/app adapters, formatted previews, and one reversible installer.

Candidate: e1aa1b5, on agent/windows-rose-v4. The PR remains draft because the remaining appearance requirements are unresolved.

Paint Selection and Brushes

The owner continued to observe gray on Selection and Brushes after the previous candidate, 3869672f. A fresh exact-package trace identified the real controls as PaintUI.SelectableSplitButton, with separate Button/Grid children for their main and arrow halves. The earlier DropDownButton trace observed other ribbon controls and did not identify these custom split buttons.

Each child has a direct SelectionBorderOuter Border with its own 83 ms background transition and a two-stop native white edge gradient. Gradient recoloring alone failed acceptance. The combined comparison removed the four exact outer-border transitions and recolored both stops using the existing ButtonBorderBrushPointerOver role. The owner confirmed black/red/rose during hover and pointer exit, including the arrows. That accepted comparison is now implemented in production; acceptance of the newly installed production binary is still pending.

Admission requires the exact control name, ownership chain, original gradient colors and offsets. Data brushes, shared data stops, unknown templates and later app writes retain native ownership. Original transitions and stop colors are preserved for exact restoration, with failed recovery receipts retained for retry. No commands, artwork, documents or geometry change.

Volume and language flyouts

Owner screenshots establish gray hardware-volume panels/tracks and input-language picker surfaces. The existing pinned taskbar styler already supports their selectors; the previous theme payload omitted their fills and borders. The new mappings assign black panels, red/rose boundaries and the canonical hover/pressed/selection ladder through the same adapter and installer journal. Values, language selection, layout and focus remain native. Installed rendering acceptance is pending.

Earlier work includes Explorer caption/selection/menu/scrollbar styling, red generic folders and pins, formatted Markdown previews, Search selection layers and its complete rose frame, Settings resources/tooltips, Calculator and native app chrome. See implementation coverage and remaining gaps. Bounded observations do not establish Windows-wide no-gray coverage.

Correct native presenter targets

The pinned stylers expand bare class names into Controls, but the language-picker and Explorer item presenters live in Controls.Primitives. The previous rules could not match those controls. This candidate uses the exact framework-qualified names for one taskbar and two Explorer targets, and the generator now rejects the known invalid aliases before emitting settings. The existing hover, pressed and selection roles remain unchanged. No application adapter source or geometry changed.

Installation and recovery

The sole public entry point, ports/windows/install.ps1, handles setup, Update, Test, Restore and Uninstall. It verifies pinned files and dependencies, checks compatibility, journals owned changes, saves recovery commands and reuses verified local recovery data. Restore reports later-edit conflicts instead of overwriting them. The installation guide and compatibility guide describe this same entry point. Clean-PC Full installation remains unverified.

Validation

  • Generation, validation, generated-file drift and whitespace checks passed. Focused Linux Windows checks for this correction: 60 passed, 22 skipped, 0 failed. Skips are not native passes. The same focused Windows contract/setup/install files ran on the native PC: 92 passed, 0 skipped, 0 failed, across standalone PowerShell 7 and Windows PowerShell 5.1.
  • For the preceding Paint correction, all four generated app adapters compiled on Windows; 30 focused native cases passed, including split-edge ownership, paired writes, later app writes, partial failure, restoration and retry. Exact input digests were recorded. The first shared fixture assumed modern framework names in Terminal's legacy framework; its failed run is retained, and the fixture now selects the correct framework names.
  • Local npm run test:all: source 401 passed, 103 skipped; distribution 14 passed; packed UI 42 passed, 21 failed because Linux WebKit could not launch without required libraries. Downstream stages were not reached. This remains a failed local full-suite result. Separate smoke: 23 passed, 1 skipped. The initial run stopped because Astro attempted a telemetry write to the protected remote home; the retained second run disabled telemetry and reached the documented WebKit environment limitation. No substantive checks were weakened or disabled.
  • The exact-head PR checks and full hosted workflow completed successfully, including windows-install and release-gate. Hosted success does not replace rendered acceptance.
  • Native PC Update → Test → Restore Latest → BaselineTest → Reapply passed through the single public installer. Restore returned to 05145ca9; Reapply left e1aa1b51 installed in Full mode. All stages checked 13 enabled production adapters, zero enabled diagnostics, two changed shell adapters and eleven unaffected binary identities. Adapter versions matched exact source and the retained PowerShell runtime remained unchanged. No PowerShell download or forced app closure occurred. The preceding Paint/shell candidate also completed its full recovery chain against 3869672f.
  • Both registered Obsidian vaults select j3w1 4.0.0, with installed CSS and manifest matching this exact candidate in a fresh read-only audit. The audit changed no settings and read no documents.

Five unrelated inherited working-tree edits remain preserved and excluded. Private diagnostics and comparisons are not distributed.

Unresolved acceptance

The failed Paint results on earlier candidates remain historical evidence. The accepted combined comparison supersedes neither those failures nor the pending production readback.

A read-only exact-package Notepad startup route observer found one native root already present at initialization, with no captured ANSI or Unicode creation call for that first window. A fresh unmodified window still rendered a gray native strip. This narrows the startup boundary; it does not identify the unobserved earlier creation path or supply the unreadable caption baseline. The observer was automatically disabled and then removed, with all 13 production adapter identities preserved and no document changes.

Remaining requirements include Notepad's first-window gray header, Paint's drawing surround, transient Explorer preview/scrollbar frames, additional notification/shell and Settings states, DPI/high contrast, sign-in and clean-PC Full installation. Unknown caption colors and document/data renderers remain protected. No merge, release, deployment or verified-port promotion is claimed.

j3w1 added 30 commits September 29, 2026 03:49
j3w1 added a commit that referenced this pull request Oct 6, 2026
…; README leads with the cloud link

The owner completed live acceptance on 2026-10-06:
- Theme Editor imports of the generated files into theme TRhfHcbvZHlOucyc.
- The install link applied in Telegram for Android 12.10.6 and in Telegram
  Desktop 7.2.9 on Windows; the theme persisted across restarts.
- Later cloud saves reached both clients without reapplying the link.
- A visual check of the main screens, ending with "everything looks good now".

The repository's verification policy requires a real import bound to the
exact subject:
- evidence/2026-10-06-import.json is a real-import record for subject
  sha256-aBor4iTY…, and the catalogue now computes "verified".
- evidence/2026-10-06-acceptance.md is the readable account, with its limits:
  file import and Linux/macOS were not exercised, and the colours Telegram
  fixes in code are listed.
- port.json declares status verified, both tested versions, and evidence
  entries with the current artifact digests.
- cloud.json marks the link verified, so the generated README leads with
  "Open Install j3w1, tap Apply" on both clients.

The tests now hold the claim to the current bytes. While the port says
verified, the catalogue must agree and each evidence digest must equal its
artifact. Any later change (such as the planned #69 rebase) fails until it
is re-accepted or the status returns to experimental.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
j3w1 added 2 commits October 6, 2026 00:13
A native token link can receive focus before the progressive enhancement registers its listener. Restore the inspector from that existing focus without moving it or adding keyboard stops. A delayed-module regression proves the original missed event and retains focus-visible and Escape dismissal.
j3w1 added a commit that referenced this pull request Oct 6, 2026
…iew r13

Review r13 (re-verification and merge readiness) found PR #69 already
records D-034 (Windows adapters, accepted 2026-09-28), a week before this
PR's D-034. #69 is another session's work and is not touched, so this PR
renumbers: the accent surface D-034 -> D-035, the text-selection tint
D-035 -> D-036. A merged log then runs D-033, D-034 (#69), D-035, D-036.
That covers 52 references in tokens, spec, CHANGELOG, Telegram's mapping,
capabilities, IMPLEMENTATION, tests and evidence. Both decisions note the
renumbering.

Also from r13:
- r13-2: the acceptance record says selection in someone else's message was
  asked for but not separately confirmed.
- r13-5: the port's rule reads "re-checked on each client whose file it
  changes", as applied.
- r13-7: the install text no longer says "when published".
- r13-8: the record says the bubble ΔE and contrast are computed, quotes the
  final verdict with what it answered, and keeps the earlier re-binding
  chain in its limits.

The token descriptions and port.json wording move the subject. Both
Telegram files and every other port's dist are byte-identical, and no
resolved colour value changes (metadata of four tokens only). So the import
record is re-bound, description-only, from bv0rd5… to a+4Hk2…, as in
r7-2/r8, and its limits disclose it. The catalogue computes "verified".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@j3w1 j3w1 changed the title feat: canonical rose typography and Windows lifecycle port feat: add reversible Windows styling and canonical rose typography Oct 7, 2026

This branch has not been deployed

No deployments
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