feat(ui): add new-thread backgrounds, composer handoff, and UI polish - #341
Conversation
eeaeaf2 to
a55769a
Compare
|
CI investigation for head
The previous head passed Linux, but it had different source. Main also has a window-visibility failure; that different assertion is not evidence of the same root cause here. Conclusion: intermittency is plausible, but this failure should not yet be dismissed as unrelated to the PR. A same-SHA rerun and/or inspection of captured input/overlay state would help. No reruns or code changes were made during this investigation. Is this input-restoration check known to be timing-sensitive? For clarity, the earlier macOS resize-fixture failure was a genuine expectation mismatch after the hitbox change, fixed in |
wingleeio
left a comment
There was a problem hiding this comment.
Found a reproducible background replacement bug that should be fixed before merge. The existing full UI suite passes locally (935 tests); a focused replacement regression fails. The Linux browser failure is being rerun separately and is not the basis of this finding.
| ); | ||
| } | ||
| replace(next, SavePolicy::Immediate, cx); | ||
| remove_managed_new_thread_background(previous.as_ref(), &backgrounds_dir); |
There was a problem hiding this comment.
[P2] Validate that a replacement can render before retiring the old background
Choose a working PNG background, then replace it with a valid SVG. attachments::stage_file accepts SVG (and checks only extension/size, not decodability), so this function persists the new path, deletes the previous managed image, and returns success. However, background_luminance uses image::ImageReader::decode, which cannot decode SVG; the new-thread screen becomes blank without an error. A focused GPUI reproduction on this head reports replacement accepted=true, background renderable=false, previous file retained=false. Corrupt raster files have the same problem. Decode/validate using the actual background rendering path before committing the replacement; either support SVG rasterization or reject unsupported formats with an error while retaining the previous setting and file. Please add a replacement regression covering this case.
wingleeio
left a comment
There was a problem hiding this comment.
Reviewed the replacement validation and GPU mask fixes, plus the official dependency alignment at df98d54. The invalid-image regression is fixed: decoding accepts the exact bytes before persistence or removal of the previous managed image. Same-frame composer measurements drive the GPU mask. Zui aa009411 has the same source tree as the reviewed renderer revision; gpui-base 94c1bbaf changes only the Zui pins from the previously used revision. No blocking findings. Validation: 940 UI tests passed on the updated PR and 962 passed integrated with current main. Fresh platform CI is running before merge.
Summary
Add device-local artwork to the new-thread screen and keep the same composer instance through navigation into an established thread, with related titlebar, selector, resize, and message-queue polish.
Renderer dependency
Depends on zeronsh/zui#9. This head pins its published commit
ce4a177684f1af929eefc6bfba7a44b208c9eec7from the public fork so CI and reviewers can build it without local path overrides. The two Cargo patches keepgpui-baseon the same GPUI types. Move the dependency back to upstream after the renderer change is accepted and the GPUI dependency pins are aligned; merge the renderer change first.Behavior
Settings and compatibility
Artwork is copied into the device-local data directory. Existing settings default to no background and no effect. Effect selection survives shell geometry saves. No engine or protocol migration is required.
Validation
cargo build --locked -p zeronpasses against the published renderer revision.cargo test --locked -p zeron-ui --lib --no-fail-fast: 913 passed against that revision, including invalid replacement preservation, cold/warm loading, same-frame geometry, and pane-handoff regressions.git diff --checkpass.Earlier visual refinements were exercised by the user, but the latest GPU-mask transition has not received a fresh live-app recording or visual sign-off. Windows HLSL is updated in the companion PR but was not run on Windows locally. Remote CI results are reported by the checks on this head, not inferred from local tests.