clipse
Batch 8.
What it is
Section titled “What it is”clipse is a terminal clipboard-history manager. A background listener (clipse -listen) records every clipboard change; the TUI presents that history as a scrollable list with a preview pane, a fuzzy filter at the top (/), pagination dots, pin indicators, and multi-select for copying several entries at once. It handles both text and images (image preview via basic / kitty / sixel renderers). It’s a tight, single-purpose tool, and the reason it’s in this batch is that it nails the list-with-preview + top-filter interaction — the single most reusable productivity-UI pattern — and ships a flat, legible JSON theme schema that’s a better starting point for KN-86 than nested TOML.
UI / layout / interaction
Section titled “UI / layout / interaction”- List + preview: the scrollable history list is the spine; pressing space toggles a preview of the selected entry’s full contents (text truncated in-list per
maxEntryLength, shown in full in preview). This is the canonical “index on the left, detail on the right/below” pattern. - Fuzzy filter at the top (
/) with a live-narrowing list as you type — the filter is a transient overlay on the list header, not a separate mode that hides the list. - Pagination dots for long histories — a compact “you are here / N pages” indicator that costs almost no screen real estate.
- Pin + multi-select as orthogonal item states: pinned items (
p) persist and can be filtered to viatab; multi-select (ssingle,shift+up/downextend,Sclear) marks a batch for one copy action.
Rendering — monochrome-adaptable
Section titled “Rendering — monochrome-adaptable”- Pagination dots =
PageActiveDot/PageInactiveDot. On KN-86 this is a row of●/○(or▣/□) — already a brightness/fill distinction, color-free. A genuinely good fixed-cost paging indicator for KN-86’s constrained surfaces. - Pin indicator defaults to gold
#FFD700— a single accent glyph. On amber-on-black, the glyph (a★or📌→◆) carries the pin state; the color is redundant. Drop the hue, keep the marker. - Multi-select markers — selected rows get a distinct title/border style. On KN-86: a leading
[✓]/[ ]checkbox column or inversion of the selected rows. - Filter UI themes
FilterPrompt/FilterText/FilterCursorseparately — the prompt glyph, the typed text, and the cursor are independently styled. Maps to KN-86 as a/-prompt + bright typed text + inverted block cursor.
Navigation / keybindings
Section titled “Navigation / keybindings”| Key | Action |
|---|---|
↑ ↓ / home end | Move / jump to ends |
← → | Page navigation |
/ | Fuzzy filter |
enter | Choose (copy) |
s / shift+↑↓ / S | Select single / extend / clear selection |
p / tab | Toggle pin / toggle pinned-only view |
space | Toggle preview |
backspace | Delete entry |
ctrl+s | Copy current filter |
esc / Q | Quit / force-quit |
Libraries
Section titled “Libraries”- Bubble Tea, “written in Go with minimal dependency”; Lip Gloss for styling (implied by the theme model). Charm-stack cross-links: cliamp.md, octoscope.md, golazo.md, chronos.md.
Architecture
Section titled “Architecture”- Listener + TUI split: a daemon (
clipse -listen) writes history; the TUI reads it. Decoupled producer/consumer over a shared file — a clean pattern for any KN-86 background-capture surface (e.g. a CIPHER-LINE history recorder feeding a scrollback viewer). - JSON persistence: on first run creates
$XDG_CONFIG_HOME/clipse/withconfig.json,clipboard_history.json,custom_theme.json, and atmp_files/dir for image data. Paths support~,$HOME,$XDG_CONFIG_HOME. - Flat JSON theme (
custom_theme.json,UseCustom: true): every element is a top-level#RRGGBBkey —TitleFore,TitleBack,SelectedTitle,SelectedBorder,FilterPrompt,FilterText,FilterCursor,PinIndicatorColor,PageActiveDot,PageInactiveDot,PreviewedText,PreviewBorder. Flat key→value, no nesting. This is a usefully simpler schema shape than caps-log’s deep TOML tree — for KN-86, a flat JSON/TOML aesthetic-mode file (each addressable element → a style spec) is easier for operators to hand-edit and share as a snippet. - Image rendering modes (basic / kitty / sixel) with
scaleX/scaleY/heightCut— not applicable to KN-86’s mono grid, but the scale-factor approach is noted.
Single-color adaptation
Section titled “Single-color adaptation”- List + preview ports cleanly: the selected row inverts; the preview pane sits below or to the side with a
light-border frame; the divider is a box-drawing rule. No color needed — selection is inversion, framing is box-drawing. - Pagination dots →
●●●○○brightness run — fill vs. outline glyph, color-free, a great low-cost pager for KN-86. - Pin / multi-select as glyph columns: a leading status column per row —
★pinned,✓selected, blank otherwise — rather than colored rows. Glyph-in-fixed-column is the monochrome-correct channel. - Fuzzy filter overlay:
/prompt + bright typed text + inverted cursor block; the matched substring in each result rendered inverted or bold to show why a row matched (clipse highlights matches by color; KN-86 highlights by inversion). This match-highlight-by-inversion idea carries straight over to mcfly.md’s ranked-search results.
- The list + top-filter + preview triad is the most reused productivity pattern in the corpus — clipse is its cleanest small-scope exemplar. It’s the same skeleton as mcfly.md (ranked history search) and mynav.md (navigator + preview); clipse is the version stripped to its essentials.
- Flat JSON theme schema is the recommended shape for KN-86’s aesthetic-mode files — pair the flat-key simplicity here with the per-element completeness of caps-log.md’s tree. Cross-link 4trk.md and os-models.md for the theme-editor-as-affordance argument.
- Pagination dots specifically are worth lifting verbatim into KN-86’s UI-pattern library — a fixed-cost paging indicator for any list longer than the row budget.