Skip to content

[codex] Fix character-art proportions without changing text spacing - #787

Merged
Kuddev merged 5 commits into
mainfrom
fix/character-art-regions-20261026
Oct 26, 2026
Merged

Kuddev merged 5 commits into
mainfrom
fix/character-art-regions-20261026

Conversation

@Kuddev

@Kuddev Kuddev commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Result / 用户结果

Correct the observed Codex Braille logo and Windows 11 Fastfetch slash logo without tightening ordinary paragraphs or lists. Qualifying character-art regions use a local aspect-preserving pitch inside their existing allocation. The approved 2.2.2 default text spacing, font size, column width, PTY dimensions, and surrounding output remain unchanged. The combined native Windows preview has been accepted.

This is deliberately scoped to dense multi-row Braille/block regions and repeated slash runs, not arbitrary ASCII art or prose. Short decorations, table borders, Powerline, mixed text, explicit backgrounds, images and other projected content retain ordinary grid presentation. No process-name detection is used.

Design / 设计边界

  • The GPUI character-art module owns bounded region detection, source-coordinate bounds and forward/inverse presentation mapping. It does not modify terminal contents or persisted font settings.

  • Selection backgrounds, search highlights, link decoration and pointer hit testing share that mapping. Cursor-intersecting regions and VI mode retain grid presentation.

  • Snapshot acquisition is separated from painting because compressed visible pixels can refer to source rows just outside the ordinary viewport. The new bounded RenderSnapshot::capture_from entry reuses the existing colors, selection and glyph-routing implementation under the same terminal lock; it does not move the viewport or duplicate core semantics.

  • Neighboring source rows are re-read rather than caching old glyphs. Erase/shrink results are independent of earlier frames. Source epoch, screen and column changes invalidate cached bounds. Candidate grids, source reads and retained region counts remain bounded.

  • No new dependency, persistence key, application-specific hook or service.

Evidence / 验证依据

  • Locked Windows GPUI product build passed. The source snapshot regression passed; 70 focused application regressions passed with 0 failures and 2 existing opt-in tests ignored.

  • Tests cover excluded prose/borders/small decorations, adjacent system-information text, real drag-selection copying, inverse coordinates, off-viewport source capture, partial scrolling, erase/shrink, reset, and other projection ownership.

  • Native Windows at 150%: Maple 13px keeps its 11×29 device-pixel cell. The ordinary reading scene remained pixel-for-pixel identical to the accepted spacing build. A circle remained 355×355 before and after scrolling, including source rows above the viewport.

  • Real Codex v0.164.0 startup in the preview rendered a 355×355 logo. Fastfetch 2.70.0 ran through the product PTY, exited zero, and its logo was inspected together with unchanged neighboring text.

  • Local 60-frame fixture median draw CPU: reading 4.09ms, scrolling circle 5.29ms, Fastfetch 6.59ms. These are fixture measurements, not universal or isolated-overhead guarantees.

  • Format, diff-whitespace, architecture and platform cfg checks passed. No budget or exclusion was widened.

  • macOS/Linux desktop appearance has not been locally inspected; selected native CI jobs are separate. No installer/release is included.

Required Review / 必须确认

  • Followed contribution, architecture and project constraints.

  • Responsibilities are cohesive; snapshot semantics keep one authority.

  • Architecture checks pass against 31a6448 without budget changes.

  • Relevant regression and visual evidence is stated, with unrun coverage distinguished.

  • No new UI strings or saved setting identifiers.

  • No governance policy changes.

Approved Linux CI mirror fix

  • The prior Linux run spent over 30 minutes downloading native dependencies from the runner image's Azure-priority mirror list; it had not reached product compilation. The maintainer approved switching the dependency download source.

  • Set the runner's existing /etc/apt/apt-mirrors.txt to https://archive.ubuntu.com/ubuntu/. Keep the existing suites, components, signing configuration and full package list unchanged. This changes only the Linux dependency bootstrap, not terminal rendering or check policy.

  • Verified the official runner-image mirror setup and that the official archive publishes signed InRelease metadata for noble, noble-updates and noble-security. Existing CI plan/native/cache tests passed (41 passed, 1 existing platform-specific skip), and the dependency step passes Bash syntax checking.

  • Integrated merged PR feat(sponsors): add approved AIAPI branding #789 from main normally. Architecture and platform cfg checks passed on the resulting branch; platform cfg remains 459 / 459. The current head runs a fresh native matrix under the existing workflow-change policy.

Final current-head CI result

  • Native run 40315248338 succeeded at 8ec8ebd3: Linux, Windows x64/ARM64 and macOS ARM64/Intel all executed successfully, including both macOS release-workspace checks. All 10 required check contexts passed.
  • Linux dependency installation completed in 41 seconds with the official archive setting, compared with the prior Azure-mirror download stall.
  • Desktop visual acceptance remains the previously approved Windows character-art/normal-text evidence; passing the other native suites is not a claim of manual visual review on those desktops.

@github-actions github-actions Bot added the size/L 501–1500 行 label Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/L 501–1500 行

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant