Repository navigation
[codex] Fix character-art proportions without changing text spacing - #787
Merged
Merged
Conversation
This was referenced Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_fromentry 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.txttohttps://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
InReleasemetadata fornoble,noble-updatesandnoble-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
8ec8ebd3: Linux, Windows x64/ARM64 and macOS ARM64/Intel all executed successfully, including both macOS release-workspace checks. All 10 required check contexts passed.