返回 CodeWhale
ADOPTION.md
根目录 / vendor / codewhale-ratatui / ADOPTION.md
1 # Pinned terminal components
2
3 Source files in this directory are byte-for-byte from the upstream commit
4 recorded in UPSTREAM.json. Keep the upstream MIT licence and component
5 attribution with this source. Preview media and local sessions are excluded.
6
7 The Engine consumes the kit through a local path dependency, with no Git
8 dependency and no package publication. Binary builds need only this checkout.
9 Publishing codewhale-tui to crates.io requires this kit version on crates.io;
10 that publication remains a separate release gate requiring founder approval.
11
12 Adoption is deliberately incremental: each migrated renderer deletes its
13 predecessor. Workflow progress, working/verification indicators, the metrics
14 row and posture row use the kit. MetricsLine and PostureBar own their complete
15 shed, projection, render and pointer geometry; the Engine supplies measured
16 facts, localized labels and hints, clock lifecycle, live/custom theme ink and
17 action dispatch. The current kit drops the pinned right PostureFact's optional
18 ink during layout. The host carries every fact's exact ink in a distinct role
19 and uses the shared live-theme adapter, so permission and right-notice colors
20 remain independent without modifying pinned source. Dock tabs, body layout
21 and scrollbar paint use the accepted shared plans. Engine still composes live
22 rows, hover text and typed actions. Character state and timing remain in the
23 Engine; packed Braille painting uses the shared raster plan.
24
25 The Ocean facade adopts complete pure sampling and guarded painting. The
26 kit owns matching-cell iteration, proposed visible-ink contrast checks,
27 absolute-row cached samples, explicit semantic-surface projection and sparse
28 caustic paint/math. Engine keeps live UiTheme colors, actual backend depth and
29 ASCII facts, monotonic clocks, phase/context/presence/completion policy,
30 actual-ramp cache identity, frame composition and ambient character lifecycle.
31 Backend palette adaptation supplies the exact proposed visible ink; source
32 symbols, inks and modifiers stay untouched. Main and focused transcripts
33 publish explicit styled-ground masks, preserving blank semantic padding and
34 custom RGB aliases through the final whole-shell pass. A composer selection
35 whose custom ground aliases its base conservatively protects its mounted area.
36
37 This deliberately reconciles prior unguarded host paint: lower color depths
38 keep the flat selected pane; light, Reset and unknown named base grounds never
39 supply dark-water evidence. An actually painted opaque dark pane can supply
40 known-ground evidence when the terminal default is unknown, while actual
41 truecolor capability is still required. Unreadable or unknown backend inks,
42 reversed cells, different grounds and semantic regions are spared. Caustics
43 only touch already painted ordinary water and share reduced-motion/capability
44 guards. Frozen safe-painter comparisons retain exact ordinary RGB geometry,
45 phase/cache samples and travelling caustic rounding; intentional guard
46 improvements have explicit cases. Character paint and its occupancy/scheduler
47 remain outside this background finishing adoption.
48
49 PendingCard routes the complete composer pending-input facade through the
50 kit's measured row plan, shared with its existing generic PendingInputPreview.
51 Engine-owned queue/context/child-request facts, localized copy, exact palette
52 styles and terminal backend remain authoritative. The host compositor/wrapping
53 helpers are deleted; decision settlement remains outside this rendering slice. The existing context action suffixes retain their current English
54 copy; other native card labels use the Engine localization catalogue.
55
56 DecisionBand adopts the complete bottom-anchored ApprovalWidget paint and
57 geometry through one kit plan: wrapped controls, full/compact validated rule
58 coverage, persistent-action visibility, body truncation and option-order
59 mouse rectangles. The host band compositor and save-preview fitting are
60 deleted. The existing ElevationWidget row measurements also use the kit's
61 shared Ratatui wrapping helper. Engine request facts, badges, dossier/command
62 preview formatting, localization, exact palette styles and keyboard/mouse
63 decisions remain authoritative. Default Enter and timeout still deny; parent
64 Escape aborts, child Escape hides, and modified/non-press keys cannot grant.
65 Persistent keys and mouse targets follow the last painted save coverage;
66 collapsed and empty frames retain canonical empty slots and withdraw stale
67 geometry. Every styled span and rule-coverage string is display-safe before
68 measurement and painting. The generic bordered ApprovalCard keeps
69 its separate verbatim-subject/input contract, and the native band does not
70 claim its invisible-token encoding. ElevationWidget painting
71 remains outside this approval slice.
72
73 NativeComposerFrame adopts the complete mounted composer: shell/titles,
74 raw scalar source row projection, display-safe selection, final caret/prompt,
75 IME empty row, menu reservation/centering/columns, wrapped option rectangles
76 and hover bounds. Existing NativeComposer painting/caret also uses this same
77 pure plan. Engine editor state, history/completion/filtering, localized fact
78 copy, exact live/custom styles, paste/submit predicates and key/IME dispatch
79 remain authoritative. Frame viewport records the painter's actual centered
80 padding and scroll; mouse/keyboard/wheel source projection uses the same kit
81 rows while retaining keyboard display-column versus wheel scalar-column
82 policy. Old mounted shell, wrapping, selection and menu geometry are deleted;
83 frozen old code is test-only. Generated gallery/catalogue assets and native
84 input/provider acceptance require separate evidence after this candidate.
85
86
87 TranscriptViewport adopts every mounted cached-row painter: the main
88 ChatWidget, focused-child transcript and LiveTranscriptOverlay use the kit's
89 pure content/viewport/chrome plan. The old paragraph/scrollbar/jump compositor,
90 link-column clipping and span selection painter are deleted from production.
91 Engine parsing, cache/source receipts and revisions, original clipboard source,
92 streaming/session state, scroll intent and selection endpoints remain
93 unchanged. The host supplies exact live style facts and its existing CJK/keycap
94 column grammar; the kit preserves styled spans and guards display content.
95 Opaque hyperlink targets remain only in Engine metadata, with existing URI
96 validation and OSC emission; final geometry excludes rails and the opaque
97 jump button. The kit guarded Ocean finishing runs between transcript content
98 and chrome using the same source-derived semantic regions; ambient character
99 policy remains host-owned. Counterparts are private cfg(test) fixtures. Generated
100 previews, compiled/native accessibility/input checks and hosted CI require
101 separate acceptance evidence.
102
103 DockTabRow supplies fitting, painting and typed target geometry for all strip
104 tabs. WorkbarLayout::for_body and WorkbarScrollbar share body reservation,
105 clipping and rail paint with the gallery. Engine keeps the selected caller,
106 live row facts, localized labels, custom ink, viewport intent and action
107 dispatch. Exact buffer and target counterparts are private test fixtures;
108 source adoption alone does not qualify installed-terminal behavior.
109
110 BrailleFrame paints the existing packed character raster. Engine retains its
111 external pose digest, session cursor, animation/audio ownership and scheduler.
112 This avoids a second character clock while using the same measured pixels.
113
113 lines MARKDOWN