Repository navigation
T27 OS: full screen resamples the frame bitmap and loses the frosted glass (no backdrop behind behind-window blur) #10831
Copy link
Copy link
Open
Labels
no-auto-mergeOpt out of the issue gate's default squash auto-merge (issue-gate.yml)Opt out of the issue gate's default squash auto-merge (issue-gate.yml)
Description
T27 OS (specs/t27os/glass_window.t27, PR #10783, epic #10782): in full screen the REVIEW screen renders softer than in the window, and the chat workspace loses its frosted glass -- the 3 x 3 card slots, sidebar and header become flat opaque grey slabs on near-black. The owner reported both on 2026-10-19 from the running T27OS.app.
Two causes, both in glass_window.t27:
- Quality.
main()rasterises the whole scene once per frame into a fixed 3840 x 2160 bitmap (960 x 540 pt atRETINA= 4) and hands it to the layer withcontentsGravity = resizeAspect. In the 960 x 540 pt window on a 2x display that is an exact 2:1 downsample, so it looks crisp. In full screen the compositor resamples the same bitmap by a non-integer factor -- 0.9 on a 3456 x 2234 px panel, an upscale on any larger backing store -- so text and 0.5 pt outlines are bilinearly resampled and go soft. On a 16:10 screen the 16:9 scene is also letterboxed. - Colour. The content view is an
NSVisualEffectViewwithMATERIAL13 (HUD) andBLEND_BEHIND. Behind-window blending samples what lies under the window. In a full-screen Space nothing does, so the material falls back to a flat dark surface, and the white 0.06 card fill (CARD_FILL), black 0.22 sidebar and black 0.46 x 0.72 header sit on a uniform field: they read as opaque grey rather than glass. trios fixed the same thing inUnifiedTriosGlassBackground(gHashTag/triosapps/trios-macos/BR-OUTPUT/GlassmorphismBackground.swift) by drawing its own backdrop inside the window -- a dark wash plus three soft blooms, green (0.18, 0.68, 0.34), pink (0.75, 0.34, 0.48) and blue (0.30, 0.46, 0.75) -- so the glass has something to be translucent over when macOS moves the window to its own Space.
Boundary
- specs/t27os/glass_window.t27
User Scenarios
- Given T27 OS showing the REVIEW screen in its window, when the user presses the fullscreen control (or Ctrl+Cmd+F), then the text and outlines are as sharp as in the window, because the bitmap is rasterised at the view's own backing size rather than resampled.
- Given T27 OS in full screen, when any screen or the home logo is shown, then the panels read as frosted glass over a living backdrop (dark wash plus soft white/grey blooms), the same style as in the window, not flat grey slabs.
Requirements
- FR-001: The frame bitmap MUST be sized to the view's frame times the window's
backingScaleFactor, and recreated when that size changes, so the layer shows it 1:1 (noresizeAspectresampling). - FR-002: The scene MUST be drawn into that bitmap through one transform, scale
fit(w, h)times the backing scale plus the centring offset, soview_to_scenehit-testing stays exact. - FR-003: In full screen (
MASK_FULL_SCREENset) the window MUST draw an in-window backdrop under the scene and across the letterbox: a dark wash and three soft radial blooms in white/grey only (the trios layout, without its green, pink and blue -- see FR-006). - FR-004: Card, sidebar and header fills MUST stay translucent (white 0.06, black 0.22, black 0.46 x 0.72) with the 0.14 white edge, so they read as glass over the backdrop.
- FR-005: The module MUST keep its
testblocks and gain one that pins the backdrop colours and the bitmap-size rule. - FR-006: The view MUST be monochrome, white and grey on black (owner, 2026-10-19: black and white, no green). The
"< TRINITY"back link and its chevron (ACCENT_G/ACCENT_B, 0x00FF88,draw_nav) become white; the yellow queen card (YELLOW_G, fill 0.07, edge 0.32, crown) becomes white at the same alphas; no other hue is drawn on this view. Thetest the_glass_carries_trios_numbersblock gains the monochrome check.
Success Criteria
- Window and full-screen screenshots at the same display show text with 0 px of resampling blur difference at 1:1 zoom (bitmap width equals backing width).
- The full-screen screenshot shows the three blooms under the card grid; the card fill is translucent over them.
- The window and full-screen screenshots contain 0 green or yellow pixels on this view: every drawn colour has equal red, green and blue channels.
git diff --stattouches 1 file, and the module's tests pass on the lab with exit 0.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
no-auto-mergeOpt out of the issue gate's default squash auto-merge (issue-gate.yml)Opt out of the issue gate's default squash auto-merge (issue-gate.yml)
Activity
feat(t27os): full-screen frost in black and white, layout helper spec
fix(t27os): background is pure black #000000 in every mode
feat(t27os): full-screen frost in black and white, layout helper spec
fix(t27os): background is pure black #000000 in every mode
feat(t27os): full-screen frost in black and white, layout helper spec
fix(t27os): background is pure black #000000 in every mode