client-core: map each grid message to its renderer effect #468
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!468
Loading…
Reference in a new issue
No description provided.
Delete branch "client-core-renderer-effect"
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?
Closes #442.
Why
Every frontend that draws a felis session mirrors some grid messages into its renderer (theme/palette overrides, the rehydrate-time color reset, reverse video), and each carried its own copy of that mapping. The copies had already drifted: felis-web-component's handles only theme colors, and felis-reel was about to become a third copy.
What
felis_client_core::renderer_effect::{RendererEffect, renderer_effect}: a pureconst fnfrom&GridMsgtoOption<RendererEffect>. It names everyGridMsgvariant and everyModeFlagsfield (no_, no..), so a new message or mode flag fails to build until it is classified; this also closes the..gap noted in the issue plan.renderer_effectplus an exhaustiveapply_renderer_effect;CursorStateandAttentionhandling is unchanged.architecture/overview.md(client-core seam: why data, not a trait) andreference/workspace.md(crate responsibilities).The issue's second test ("felis-client routes through
renderer_effect") is covered structurally instead: felis-client no longer has its own mapping, and its apply function matchesRendererEffectexhaustively.Verification
just checkgreen. On the first run,felis-daemon serve::tests::force_detach_evicts_every_subscriber_and_keeps_the_sessionfailed once at load average 12. It passed 8/8 in isolation and on the full rerun, and this change does not touch the daemon.ModeFlagswith every other flag set.