pi-footer-dock 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,50 @@ All notable changes to Footer Dock are listed here. The format follows [Keep a C
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.1.4] - 2026-11-14
8
+
9
+ ### Added
10
+
11
+ - **Icons choose themselves on terminals that cannot show Nerd Font symbols.** With no icon choice saved (Appearance › Icons now starts at "automatic" and says which set that is: "automatic (Nerd Font)" or "automatic (plain symbols)"), Footer Dock uses the plain symbols instead of the Nerd Font set on a Linux console, a `dumb` terminal, or a locale that names a legacy character set (for example `en_US.ISO-8859-1`); a locale of plain `C` or `POSIX` is not treated as a sign. Everyone else keeps the Nerd Font set, with the one-time note about empty boxes (not shown when the plain symbols were chosen automatically). A saved choice always wins, and nothing is written to the settings file. The five icons of the plain symbol set that only other extensions use are now `…`, `○`, `i`, `@` and `*` (all one cell wide, none an emoji; the footer's own icons are unchanged), and the extension guide no longer calls the portable set plain ASCII.
12
+ - **A meter look that does not depend on the font.** The new quota option `meterStyle` (`slanted`, the default and today's `▰▱`; `line` `━─`; `blocks` `█░`) changes the characters of the limit meter and nothing else: still seven cells, the same fill, colours and animation. `line` and `blocks` are characters most terminals draw themselves, so they look the same in any font (the slanted blocks show as a thick and a dotted line in some, for example Ghostty with its default font). Choose it under Appearance › Meter look, or with `/dock-config`. Versions before 0.1.4 reject a settings file that contains `meterStyle`.
13
+ - **Every colour of the footer can be changed.** Seven roles: `accent` (icons, the model name and the limit meter), `text`, `muted` (labels and separators), `highlight` (the context bar, the changed-files count, the compaction notice), `warning`, `error` and `success`. Each is `theme` (the theme's own colour), a `#rrggbb` hex, or for two of them one more named choice. Set them on the settings screen (Appearance › Colours), with the new `/dock-color` command (`/dock-color accent #aa55cc`, `/dock-color reset`), or as `"colors"` in the settings file. See "Colours" in `docs/footer-configuration.md`. Versions before 0.1.4 reject a settings file that contains `colors` or `iconBold`, so after going back remove those lines.
14
+ - **Bold icons for the plain symbols, on by default.** The plain icons (`/dock-glyphs`) are drawn in bold; `"iconBold": false`, the "Bold icons" row or `/dock-color bold off` turns it off. It never changes the width of anything. Nerd Font symbols have a single weight, so bold shows nothing on them and Footer Dock does not apply it there; `/dock-color bold on` says so.
15
+ - **The footer reads on your terminal's real background.** Footer Dock asks the terminal for its background colour (through Pi's own colour query, once when Pi starts and again when the terminal switches between light and dark). Any colour the theme supplies that would be hard to read on that background is lightened or darkened, keeping its hue, until it reaches a minimum contrast (4.5:1 for text and highlights, 3:1 for labels, warnings, errors, success and the accent). A theme that matches the terminal is drawn exactly as before. This fixes the footer fading out when the Pi theme is `light` on a dark terminal (or `dark` on a light one). A terminal that does not answer changes nothing. A colour you typed is never changed; `/dock-color` warns when it would be hard to read, and with no arguments it says what background it found.
16
+ - **`terminal` for the text and label colours.** `/dock-color text terminal` and `/dock-color muted terminal` use your terminal's own default colour (labels in its faint form), which is always readable and needs no query.
17
+
18
+ ### Changed
19
+
20
+ - **For contributors: secret scanning and no comments in code.** `scripts/check-secrets.sh` runs gitleaks before every commit and push (after `sh scripts/install-hooks.sh`), in the gate and in a new `secrets` job of the Check workflow, and refuses credential files by name. The code carries no comments (`npm run comments`, part of `npm run check`); the reasons are in the documents. `scripts/check-hygiene.sh` also fails when a public file names a file the export leaves out. See `CONTRIBUTING.md`.
21
+ - **The settings screen is easier to read and to use.** Icons, bold icons and the colours now sit together under a new **Appearance** entry, the first one on the menu (the top level has seven entries instead of eight). Each colour row shows a swatch of the colour it really draws and a word (`██ lavender, adapted to your theme`); Enter opens a short picker (default, the other named choices, your own colour, "Type a colour…"), and the field takes a `#rrggbb` with a preview and its contrast on your terminal's background, so a custom colour no longer needs a command. The rows were renamed so that a row that shows or hides something is named by the thing and a row that chooses is named by the question: for the limit usage "Window: 5h", "Percent shown", "Meter", "Reset time", "Collapse windows" (with "Keep 5h" inside), "Start expanded", "Animate changes"; "Model: provider" and "Model: name" became "Provider" and "Model name"; "Item clicks" became "Clicking an item" (`act` or `explain`). The choices of every item row now read "hidden when the row is a bit tight" and so on instead of "hidden from lg". Nothing in the settings file changed.
22
+
23
+ - **The default accent is our lavender, adapted to your theme and terminal.** Icons and the model name used to take the theme's accent and the limit meter a fixed lavender; now all three are one colour. It keeps the lavender hue and takes its lightness from the theme's accent (so it follows Pi's `system` theme and your terminal's colours), and is moved away from the background if the contrast would be under 3:1. Choose `theme` for the accent (`/dock-color accent theme`) to get the icon and model-name colours of 0.1.3 back. The old quota option `meterColor` still works and now means the accent: `"theme"` sets the accent to `theme`; the row "Meter colour" on the settings screen is replaced by "Accent colour".
24
+ - **Warnings are separate from highlights, and healthy numbers are no longer yellow.** The context bar and its percentage, the changed-files count and the compaction notice were drawn in the warning colour at every level, so a healthy footer already had yellow on it and a real warning had nothing to stand out against. They now use a calm `highlight` colour (the theme's text colour); the warning and error colours are kept for limits at 25% or less, blocked limits and the problems marker. Set `highlight` to `warning` for the 0.1.3 look.
25
+ - **The plain symbols (`/dock-glyphs`, Appearance › Icons, formerly called "portable"; the settings file still says `portable`) have new symbols.** `⌂` folder, `Y` branch, `◔` context, `≡` cache, `∴` thinking, `»` speed, `↻` reset. The old speed symbol `⚡` is drawn as an emoji, two cells wide, in many terminals and misaligned the row; the old reset symbol `◌` was drawn badly in some fonts. The Nerd Font set is unchanged.
26
+ - The quota's reset icon now follows the icon colour and bold setting like every other icon.
27
+
28
+ ## [0.1.3] - 2026-11-07
29
+
30
+ ### Added
31
+
32
+ - **New setting `shrink`: choose what gives way first when the footer is too narrow.** A list of step names (`drop:cost`, `shorten:quota`, ...) in the settings file or in `/dock-config`. The steps you name go first, in your order; every other step keeps its default order and goes where `"..."` stands. For example `{"shrink":["...","drop:cost"]}` keeps the cost until almost everything else has given way, and `{"shrink":["drop:speed"]}` makes the speed the first thing to go. The steps and the default order are listed in `docs/footer-configuration.md`. Unknown names are rejected and the project name can never be removed. Versions before 0.1.3 reject a settings file that contains `shrink`, so after going back to 0.1.2 remove that line; an older version that finds it in a saved session configuration ignores that entry.
33
+ - `/dock-debug` now says what became of every limit window the provider sent (`quotaProvider.windowReport`): its kind (5h, week, month; primary or secondary for Codex), whether the used share and the reset time were valid (and the length, for Codex), and whether the window is shown. A provider window that is dropped is no longer silent. It holds only names and yes or no answers, never a value or text from the provider. It comes from the Pi window that made the last request; another window shows `null`. `diagnosticVersion` is now 4.
34
+
35
+ ### Fixed
36
+
37
+ - Moving a footer item behind another one no longer glues them together. Only the two halves of one item (the context bar and its usage, the quota and its `›`) sit against each other, and only when they are next to each other; every other item keeps its own gap wherever you place it. The default footer looks the same.
38
+
39
+ ### Added
40
+
41
+ - **A red `⚠ N problems` marker and a problems screen.** While Footer Dock cannot apply your settings file, it runs on its defaults and shows `⚠ N problems` at the start of the first row, in red and blinking until you have opened the problems screen (click the marker, or run `/dock-settings`); after that it stays red until the file is valid. The screen lists every problem with where it is, which setting, what is wrong and what to change; press `r` there after fixing the file to apply it without restarting. The blinking stops when the quota animation is turned off in the settings. The marker cannot be hidden and is never given up when the footer is too narrow.
42
+
43
+ ### Changed
44
+
45
+ - **Settings problems are listed in full, with the fix.** When Footer Dock cannot apply your settings file, or a `/dock-config` command, it now lists every problem it finds in one go: the file or command, the setting, what is wrong in plain words and what to change, and it suggests the name you probably meant (`Did you mean "limits"?`, `did you mean drop:cost?`). Before, it reported only the first problem in a short sentence, and `/dock-config` said "Invalid footer configuration (two rows, unique slots)" whatever was wrong. Nothing is applied in part: a file with any problem runs Footer Dock on its defaults, and a bad `/dock-config` leaves the footer exactly as it was. Your file is never changed. A wrong file permission now says `Run: chmod 600 <file>`. (A marker in the footer and a problems screen follow in the same release.)
46
+ - **Parts of an item can be switched off.** The model's provider and its name, and the limit usage's meter and its reset time, are now separate choices: rows on the settings screen ("Model: provider", "Model: name", "Limit usage: meter", "Limit usage: reset time"), or `"slots":{"model":{"layers":{"provider":false}}}` in the settings file and `/dock-config`. A part that is off is never printed; with both parts of the model off the item is hidden. Nothing changes unless you set it. A settings file that has `layers` is not accepted by earlier versions.
47
+ - **The limit usage reads without words.** Each window is its name, a bar, the percent and, after the reload icon, the time until it resets: `5h ▰▰▱▱▱▱▱ 34% 󰑓 2h 15m │ week ▰▰▰▱▱▱▱ 48% 󰑓 3d 10h`. The words "left", "used" and "resets in" are gone from the footer. Where room is short, the wide separator between windows slims first, then the bar goes (the reset time outlives it), then the last window folds behind `›`, and the reset times go last. The Nerd Font set draws the reload icon; the portable set keeps `◌`. Click the limits (or run `/dock-info quota`) for a new "In the footer" section that says whether the number is what is left or what is used, and where to change it; the setting row is now called "Limit shows" (`left` or `used`; the key `slots.quota.wording` is unchanged). Because the quota is shorter, more of the row stays visible at the same width.
48
+ - **The footer gives way one item at a time.** When a row is too wide, items are shortened or dropped in a fixed order instead of the whole row changing to a more compact look at once. The order: the quota's separators (wide to slim), then cost, compaction, the cache, input and output, then (for items other extensions registered) those, then the quota's detail (the meter, then the last window, then the reset times), then the speed, and the project name last. Apart from the quota (below), the default footer is unchanged at 196 columns and wider. Below that the cost is the first item to go (0.1.2 kept it down to 80 columns and cut the quota's reset times instead); the quota keeps its meter and reset times longer, and the speed no longer changes how the whole row looks.
49
+ - The bar of dollars by category (cost screen) and the bar of token categories (cache screen) now have a blank row between the bar and its legend and another after the legend (the cache screen ran its legend straight into the next line), and the legend breaks between entries: a symbol, its name, its amount and its share always stay on one row, where before a narrow terminal could split `▒ cache` from `write`. The footer itself is unchanged.
50
+
7
51
  ## [0.1.2] - 2026-10-20
8
52
 
9
53
  ### Added
package/README.md CHANGED
@@ -28,7 +28,7 @@ pi install npm:pi-footer-dock
28
28
 
29
29
  Then restart Pi (or run `/reload`). That is all. Full instructions, updating, removing and troubleshooting: **[SETUP.md](SETUP.md)**.
30
30
 
31
- **Icons need a [Nerd Font](https://www.nerdfonts.com/) in your terminal.** If the icons show up as empty boxes, your font does not have them: run `/dock-glyphs` for plain symbols that every font has, or install a Nerd Font. Footer Dock mentions this once, the first time it starts.
31
+ **Icons need a [Nerd Font](https://www.nerdfonts.com/) in your terminal.** If the icons show up as empty boxes, your font does not have them: run `/dock-glyphs` for plain symbols that nearly every font has (`/dock-glyphs` again switches back), or install a Nerd Font. Footer Dock mentions this once, the first time it starts. On a Linux console, a `dumb` terminal or a terminal with a legacy character set it picks the plain symbols by itself; a choice in Appearance › Icons always wins.
32
32
 
33
33
  ## What the footer shows
34
34
 
@@ -112,22 +112,23 @@ Other providers show no limits (`quota unsupported`); OpenAI-style APIs that sen
112
112
  ## Requirements
113
113
 
114
114
  - Pi 1.2 or newer, and Node.js 22.19 or newer (the same as Pi).
115
- - A terminal with mouse support for clicking (everything also works from the keyboard and with `/dock-*` commands). A Nerd Font gives the best icons; `/dock-glyphs` switches to portable symbols.
115
+ - A terminal with mouse support for clicking (everything also works from the keyboard and with `/dock-*` commands). A Nerd Font gives the best icons; `/dock-glyphs` switches to plain symbols.
116
116
  - Tested on Linux. macOS and Windows are expected to work; opening the project folder with the system file manager has not been run on them yet.
117
117
 
118
118
  ## Commands
119
119
 
120
- | Command | What it does |
121
- | --------------------- | ---------------------------------------------------------- |
122
- | `/dock-settings` | The settings menu |
123
- | `/dock-info [item]` | Explains a footer item |
124
- | `/dock-quota` | Shows or hides the collapsed limit windows |
125
- | `/dock-open` | Opens the project folder in your file manager |
126
- | `/dock-open-with ...` | Chooses another app for that, for example `thunar {path}` |
127
- | `/dock-glyphs` | Switches between Nerd Font and portable icons |
128
- | `/dock-refresh` | Reads Git and usage again |
129
- | `/dock-config ...` | Session-only footer configuration as JSON |
130
- | `/dock-debug` | Safe diagnostics for a bug report (no content, no secrets) |
120
+ | Command | What it does |
121
+ | --------------------- | ----------------------------------------------------------- |
122
+ | `/dock-settings` | The settings menu |
123
+ | `/dock-info [item]` | Explains a footer item |
124
+ | `/dock-quota` | Shows or hides the collapsed limit windows |
125
+ | `/dock-open` | Opens the project folder in your file manager |
126
+ | `/dock-open-with ...` | Chooses another app for that, for example `thunar {path}` |
127
+ | `/dock-glyphs` | Switches between Nerd Font icons and plain symbols |
128
+ | `/dock-color ...` | Footer colours and bold icons, for example `accent #aa55cc` |
129
+ | `/dock-refresh` | Reads Git and usage again |
130
+ | `/dock-config ...` | Session-only footer configuration as JSON |
131
+ | `/dock-debug` | Safe diagnostics for a bug report (no content, no secrets) |
131
132
 
132
133
  ## Large repositories
133
134
 
package/SETUP.md CHANGED
@@ -79,6 +79,7 @@ This removes the package. Two small things stay behind and can be deleted by han
79
79
  | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80
80
  | No footer after installing | Start a new Pi session or `/reload`. `pi list` should show `pi-footer-dock`. Check you are in Pi's interactive mode. |
81
81
  | Icons are boxes or question marks | `/dock-glyphs`, or install a Nerd Font in your terminal. |
82
+ | The limit meter looks different or broken | The terminal's font draws it, not Footer Dock. See [The meter or icons look wrong](#the-meter-or-icons-look-wrong). |
82
83
  | Clicks do nothing | Your terminal may not send mouse events to Pi. Use the keyboard path: `/dock-info cache`, `/dock-settings`. |
83
84
  | Limits show `quota unsupported` | Your provider has no limit source. Only ClinePass, OpenCode Go and OpenAI Codex have one; to add yours see `docs/adding-a-provider.md`. |
84
85
  | Limits show `limits off` | Asking providers for limits is off (the default). Turn on _Ask providers for limits_ in `/dock-settings` to see them. |
@@ -87,6 +88,42 @@ This removes the package. Two small things stay behind and can be deleted by han
87
88
  | Cost shows `≈$12.40 mo`, not my session | That is the month across all sessions. Change _Cost period_ in `/dock-settings`. |
88
89
  | Something else | Run `/dock-debug` and include its output in a bug report. It holds counters and settings only: no messages, no secrets, and no file paths (your home folder is shown as `~`). |
89
90
 
91
+ ### The meter or icons look wrong
92
+
93
+ Footer Dock prints plain text characters. Your terminal and its font decide how they look, and a terminal cannot tell Footer Dock which font it uses. So the same footer can look different in two terminals, or after a font or terminal change: the limit meter (`▰▱`) can come out as thick and dotted lines instead of slanted blocks, or an icon can show as an empty box.
94
+
95
+ **Find out whether it is the terminal.** In the same terminal window, outside Pi, run:
96
+
97
+ ```bash
98
+ printf '5h ▰▰▰▱▱▱▱ 36%% ◌ resets in 4h\n'
99
+ ```
100
+
101
+ - It looks wrong here too: the terminal's font is the cause. Use one of the fixes below. Nothing in Footer Dock needs to change.
102
+ - It looks right here, but wrong inside Pi: run `/dock-debug` and include its output in a bug report.
103
+
104
+ **Fix 1: use a font that has the characters.** List the installed fonts that contain the meter characters, then set one of them as your terminal font (or its fallback):
105
+
106
+ ```bash
107
+ fc-list ':charset=25b0 25b1 25cc' family
108
+ ```
109
+
110
+ **Fix 2: map only those characters to a font you like.** This leaves everything else as it is.
111
+
112
+ - Ghostty (`~/.config/ghostty/config.ghostty`; `ghostty +validate-config` checks the syntax, then restart Ghostty):
113
+
114
+ ```
115
+ font-codepoint-map = U+25B0-U+25B1=Your Font Name
116
+ font-codepoint-map = U+25CC=Your Font Name
117
+ ```
118
+
119
+ - kitty (`kitty.conf`):
120
+
121
+ ```
122
+ symbol_map U+25B0-U+25B1,U+25CC Your Font Name
123
+ ```
124
+
125
+ Icons that show as boxes are a different case: they need a Nerd Font, or `/dock-glyphs` for plain symbols (see the table above). `/dock-glyphs` does not change the limit meter.
126
+
90
127
  ## Where Footer Dock keeps things
91
128
 
92
129
  | Data | Location | Kept how |