Share the Kitty image layout with every frontend #161
No reviewers
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis!161
Loading…
Reference in a new issue
No description provided.
Delete branch "graphics/shared-image-layout"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Moves Kitty image placement out of
felis-render-wgpuintofelis-grid::image_layout, so every frontend shares one implementation. That covers anchors and the viewport offset, automaticc=/r=, source clamping, the Unicode-placeholder box fit, and layers and stacking. A frontend without wgpu, such as felis-web-component, gets plain draws (an image-pixel source rect and a screen-pixel destination, per layer in paint order) and paints them withdrawImage, with no Kitty logic of its own.Changes
felis-grid::image_layout:ImageLayout::rebuild,ImageDraw, and the one-methodLayoutImagestrait. It sits in felis-grid because the renderer is below felis-client-core and has to name these types.felis-client-core:ImageShadow::layout_into,ClientImage::{is_drawable, generation, write_rgba8}. The generation token comes from a process-wide counter, so an async frontend (createImageBitmap) can drop a stale conversion, even across a session switch.felis-render-wgpu: only maps draws into atlas UVs. If the slot's size differs from the draw's, the draw is skipped. Clipping for client chrome stays here.Behavior aligned with kitty
z=was recorded.Equal-z stacking order does not match kitty yet; that is #155, since fixing it needs a wire change.
Verification
cargo nextest run --all-featuresfor grid / client-core / render-wgpu / client: all pass. Clippy is clean.--run-ignored only, including the placeholder seam test) pass on a local Metal adapter.just check: one failure,felis-cli cli_bridge::tests::a_daemon_write_failure_fails_and_clears_the_link, which times out. It times out onorigin/mainin this environment too, so it is unrelated to this change.39917c8143f67fa2cc29