You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pt entry point — bare pt opens an fzf action menu listing every
command (with a live description in the preview pane); selecting one runs it.
The menu loops: display-only actions (list, preview, contrast) pause
afterwards — q quits the hub, any other key (including arrow keys) returns to
the menu. ESC steps back one level: out of the family picker into the menu,
out of the menu to the shell. The header shows the current family/shade, and
flags a stale shell when the plugin file has changed on disk since it was
sourced (pt help notes it too). pt <cmd> dispatches directly: pick, list, auto, reload, preview, contrast, help. Without fzf, bare pt prints a cheat-sheet.
bin/pwdtintii actions / describe-action expose the action catalog — the
single source of truth the shell dispatcher re-runs, so menu and dispatch
cannot drift (guarded by a test).
pwdtintii_pick --auto clears a pinned family and returns to auto mode.
bats test harness (tests/) coupling the bash and zsh plugins, plus a
Forgejo CI workflow (shellcheck, zsh -n, bats).
Changed
The pt alias now points at the dispatcher (was pwdtintii_apply, a
visual no-op); ptpick/ptlist/… remain as direct accelerators.
Steady-state prompts (same directory) skip all subprocess work and only
re-emit, cutting ~6 forks per prompt down to the key lookup.
README rewritten compact, with screenshots of the action hub and the live
family picker (docs/).
Fixed
fzf preview height — the family preview now stretches to fill the pane
(FZF_PREVIEW_LINES) instead of a fixed ~18 lines that left the lower half
empty and pushed the fourth shade behind a scrollbar.
live focus tone — hovering a family in the picker emitted shade2 as the
background, so the shade2 swatch vanished into it; it now emits a dimmed
family tone (shade0 × 50%), darker than all four shades, so each stays
distinct.
emit under set -e — emit-family no longer aborts when there is no
controlling /dev/tty (the failed redirect is fully contained).
CLI help leak — pwdtintii help (the CLI) printed set -euo pipefail
from the source below the doc block; it now stops at the first blank line.
fzf picker cancel — pressing ESC no longer captured the restore OSC
sequence into a variable; the picker now returns only the family and the
caller restores the background, so cancel correctly reverts the tint.
zsh sha1sum fallback — the zsh plugin hardcoded shasum and broke on
Linux systems that only ship sha1sum; it now detects either at load (and
fails loudly if neither is present), matching the bash plugin and the docs.
bash key drift — directories outside $HOME collapsed to the whole path
in bash but the first component in zsh; bash now also uses the first
component, so both shells tint the same directory identically.
cross-shell registry hash — zsh hashed the key with a trailing newline
(print -r) while bash did not (printf), so the two never shared a shade
registry; zsh now uses print -rn.
empty palette — a palette with no families caused a division-by-zero on
every prompt; apply is now a no-op and load warns once.
menu bounds — choice 0 in the numbered picker selected the last family
via bash negative indexing; out-of-range input is now rejected, and a
leading-zero choice (08, 09) no longer trips bash octal parsing.
root path — applying at the filesystem root (/, empty project name) no
longer leaks a bad array subscript error to the bash prompt.
registry race — the read-modify-write is now guarded by a mkdir lock
(bounded, fail-open) so shells starting concurrently in the same dir don't
clobber each other's shade.
bash symlink resolution — _pwdtintii_self now follows symlinks, so the
plugin works when sourced via a symlink.
registry .t temp files are cleaned up and emptied registries removed.
OSC 11 emission validates the hex before emitting (no escape injection from a
malformed palette).