Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 01:46

Added

  • 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 pickerctrl-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.