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
Public GitHub mirror at github.com/bmmmm/pwdtintii — one-way Forgejo→GitHub
push-mirror, so the project can now be cloned from GitHub.
pt off — actually stops tinting: resets the terminal background to its
default (OSC 111) and makes the prompt hook a no-op until re-enabled via pt pick / pt auto / pt reload. Previously off was only an alias for auto/unpin and kept tinting by directory.
pt doctor — reports the setup (hash command, fzf, python3, palette,
terminal) and probes OSC 11 support live, surfacing the otherwise-silent
failure mode of a terminal that ignores OSC 11. The python3 line flags when pt contrast is unavailable for lack of its only dependency.
Install via a plugin manager (oh-my-zsh / zinit / antidote), documented in the
README — the pwdtintii.plugin.zsh naming already followed the convention.
macOS coverage in CI (macos-latest) — exercises the BSD stat -f / shasum
/ BSD-awk / brew-bash path the project is built around, which the Linux-only
job never touched — plus a release job that cuts a GitHub Release from the
matching CHANGELOG section on v* tags.
Light-theme palette (palettes/light.tsv) — a pale, high-luminance variant
for light terminal themes. It mirrors default.tsv's families and order, so a
given directory keeps its hue and only the lightness flips; activate it with PWDTINTII_PALETTE=~/.local/share/pwdtintii/palettes/light.tsv. Derived from default.tsv by scripts/gen-light-palette.py (hue preserved, shades placed
on a WCAG-luminance ladder) and verified readable against dark text.
Dark/light toggle in the pt pick picker — ctrl-t flips between the
dark and light family groups so both stay reachable without listing all of
them at once; committing a pick from a group switches this shell to that
group's palette. No persisted state: it is scoped to the running shell, and an
explicit PWDTINTII_PALETTE in your rc still sets the startup default.
Changed
pt now self-heals a stale shell: when the plugin file changed on disk since
the shell sourced it, the next pt re-sources the plugin before dispatching
(carrying over the pinned family, shade, and disabled state) and prints a
one-line notice — instead of only flagging "plugin changed — re-source" and
leaving the re-source to you. Re-sourcing is safe to repeat: the prompt hook
registration dedupes and runtime state lives in globals the load path preserves.
CI consolidated into a single .github/workflows/ci.yml, read by both
Forgejo (source of truth) and GitHub (mirror); the .forgejo/ copy was
removed. actions/checkout is pinned to v4 (node20) so the act-based Forgejo
runner, which has no node24 runtime for checkout@v5, runs it too.
Install URL and copyright now reference the public GitHub identity.
Prompt hot-path: the directory key is cached by $PWD, skipping the per-prompt
subshell fork + git-root stat-walk while the directory is unchanged (a fresh git init in the current dir is picked up on the next cd).
scripts/contrast-check.sh is now theme-aware: a light-background palette is
checked against dark text instead of light (theme auto-detected from mean
luminance, or forced with a dark/light second argument). scripts/preview.sh
shows each shade against both a light and a dark text sample, so the dump is
legible whichever palette it dumps.
The pt pick fzf preview pane is now high-contrast on every shade: the sample
text and the shadeN/hex label pick a dark tone on a light band and a light tone
on a dark one (per-band perceived luminance), so the labels stay legible on the
pale light.tsv swatches reached via ctrl-t, not just on the dark default.
The live focus background (the terminal tint while you arrow through the
picker) is now theme-aware: a dark palette still dims the darkest shade toward
black, but a light palette lifts the lightest shade toward white instead of
darkening — so on a light terminal theme the hovered background no longer drops
to a dark tone under your dark text, while the swatches still stand out. The
darkest/lightest shade is chosen by perceived luminance, not palette position,
so a palette that orders its shades light-to-dark still tones the right one.
Fixed
Palette loading validates that each family has four #rrggbb shades and skips
any malformed row with a warning, instead of storing it and silently emitting
nothing on that family.
A self-reload (pt re-sourcing a changed plugin) no longer double-registers
the bash prompt hook. The append now sits behind a one-shot flag, so a PROMPT_COMMAND that a framework has reformatted (spaced-out ; separators)
can't slip past the substring dedupe guard and get pwdtintii_apply appended
twice — which would emit OSC 11 twice per prompt. zsh was already immune
(add-zsh-hook dedupes by membership).
A self-reload now parse-checks the plugin (bash -n / zsh -n) before
sourcing it, so a reload triggered mid-edit (the file saved half-written) keeps
the running definitions and reports the failure, instead of partially
redefining the plugin while still looking like it succeeded.
bin/pwdtintii rejects a malformed shade in a custom palette — the CLI reads
the palette unvalidated, unlike the plugin loader — instead of crashing the 16# hex arithmetic under set -e.