Skip to content

T27 OS: full screen resamples the frame bitmap and loses the frosted glass (no backdrop behind behind-window blur) #10831

Open

Description

@gHashTag

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:

  1. Quality. main() rasterises the whole scene once per frame into a fixed 3840 x 2160 bitmap (960 x 540 pt at RETINA = 4) and hands it to the layer with contentsGravity = 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.
  2. Colour. The content view is an NSVisualEffectView with MATERIAL 13 (HUD) and BLEND_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 in UnifiedTriosGlassBackground (gHashTag/trios apps/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 (no resizeAspect resampling).
  • 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, so view_to_scene hit-testing stays exact.
  • FR-003: In full screen (MASK_FULL_SCREEN set) 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 test blocks 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. The test the_glass_carries_trios_numbers block 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 --stat touches 1 file, and the module's tests pass on the lab with exit 0.

Activity

  1. added
    no-auto-mergeOpt out of the issue gate's default squash auto-merge (issue-gate.yml)
    on Oct 19, 2026
  2. added 6 commits that reference this issue on Oct 19, 2026
    ca0fbbb
    7a15e73
    2309652
    4c8c34e
    b634159
    e4dd890
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    no-auto-mergeOpt out of the issue gate's default squash auto-merge (issue-gate.yml)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions