@selesai/code 0.9.14 → 0.10.0

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.
Files changed (263) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +6 -9
  3. package/dist/defaults/models.json +79 -29
  4. package/dist/defaults/settings.json +3 -7
  5. package/dist/extensions/package.json +3 -4
  6. package/dist/extensions/pi-zentui/.editorconfig +12 -0
  7. package/dist/extensions/pi-zentui/.github/CODEOWNERS +1 -0
  8. package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/bug_report.yml +110 -0
  9. package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/config.yml +8 -0
  10. package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/config_question.yml +56 -0
  11. package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/feature_request.yml +63 -0
  12. package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/rendering_issue.yml +106 -0
  13. package/dist/extensions/pi-zentui/.github/ISSUE_TEMPLATE/runtime_detection.yml +103 -0
  14. package/dist/extensions/pi-zentui/.github/dependabot.yml +47 -0
  15. package/dist/extensions/pi-zentui/.github/pull_request_template.md +34 -0
  16. package/dist/extensions/pi-zentui/.github/release.yml +18 -0
  17. package/dist/extensions/pi-zentui/.github/workflows/ci.yml +79 -0
  18. package/dist/extensions/pi-zentui/.github/workflows/publish.yml +63 -0
  19. package/dist/extensions/pi-zentui/AGENTS.md +107 -0
  20. package/dist/extensions/pi-zentui/CONTRIBUTING.md +68 -0
  21. package/dist/extensions/pi-zentui/LICENSE +21 -0
  22. package/dist/extensions/pi-zentui/README.md +188 -0
  23. package/dist/extensions/pi-zentui/SECURITY.md +18 -0
  24. package/dist/extensions/pi-zentui/assets/main-cover.png +0 -0
  25. package/dist/extensions/pi-zentui/assets/screenshots/editor-accent-rail.png +0 -0
  26. package/dist/extensions/pi-zentui/assets/screenshots/editor-minimalist.png +0 -0
  27. package/dist/extensions/pi-zentui/assets/screenshots/editor-opencode-copy-friendly.png +0 -0
  28. package/dist/extensions/pi-zentui/assets/screenshots/editor-opencode.png +0 -0
  29. package/dist/extensions/pi-zentui/assets/screenshots/user-message-compact.png +0 -0
  30. package/dist/extensions/pi-zentui/assets/screenshots/user-message-framed-copy-friendly.png +0 -0
  31. package/dist/extensions/pi-zentui/assets/screenshots/user-message-framed.png +0 -0
  32. package/dist/extensions/pi-zentui/assets/screenshots/user-message-labeled.png +0 -0
  33. package/dist/extensions/pi-zentui/assets/zentui.png +0 -0
  34. package/dist/extensions/pi-zentui/biome.json +31 -0
  35. package/dist/extensions/pi-zentui/docs/configuration.md +509 -0
  36. package/dist/extensions/pi-zentui/docs/footer-format.md +162 -0
  37. package/dist/extensions/pi-zentui/extensions/zentui/accent-rail-editor.ts +99 -0
  38. package/dist/extensions/pi-zentui/extensions/zentui/accent-rail-layout-patch.ts +457 -0
  39. package/dist/extensions/pi-zentui/extensions/zentui/completion-menu.ts +157 -0
  40. package/dist/extensions/pi-zentui/extensions/zentui/config.ts +2100 -0
  41. package/dist/extensions/pi-zentui/extensions/zentui/editor-metadata-format.ts +321 -0
  42. package/dist/extensions/pi-zentui/extensions/zentui/editor-transfer.ts +73 -0
  43. package/dist/extensions/pi-zentui/extensions/zentui/extension-status.ts +89 -0
  44. package/dist/extensions/pi-zentui/extensions/zentui/footer-format.ts +364 -0
  45. package/dist/extensions/pi-zentui/extensions/zentui/footer-layout.ts +122 -0
  46. package/dist/extensions/pi-zentui/extensions/zentui/footer.ts +812 -0
  47. package/dist/extensions/pi-zentui/extensions/zentui/format.ts +568 -0
  48. package/dist/extensions/pi-zentui/extensions/zentui/git.ts +384 -0
  49. package/dist/extensions/pi-zentui/extensions/zentui/icons.ts +252 -0
  50. package/dist/extensions/pi-zentui/extensions/zentui/index.ts +1406 -0
  51. package/dist/extensions/pi-zentui/extensions/zentui/interaction-summary.ts +1049 -0
  52. package/dist/extensions/pi-zentui/extensions/zentui/live-context.ts +75 -0
  53. package/dist/extensions/pi-zentui/extensions/zentui/minimalist-editor.ts +463 -0
  54. package/dist/extensions/pi-zentui/extensions/zentui/package-version.ts +651 -0
  55. package/dist/extensions/pi-zentui/extensions/zentui/project-refresh.ts +120 -0
  56. package/dist/extensions/pi-zentui/extensions/zentui/project-state.ts +59 -0
  57. package/dist/extensions/pi-zentui/extensions/zentui/prototype-patch-registry.ts +166 -0
  58. package/dist/extensions/pi-zentui/extensions/zentui/repository-root.ts +98 -0
  59. package/dist/extensions/pi-zentui/extensions/zentui/runtime.ts +841 -0
  60. package/dist/extensions/pi-zentui/extensions/zentui/selector-border.ts +93 -0
  61. package/dist/extensions/pi-zentui/extensions/zentui/session-lifecycle.ts +60 -0
  62. package/dist/extensions/pi-zentui/extensions/zentui/settings-command.ts +1796 -0
  63. package/dist/extensions/pi-zentui/extensions/zentui/settings-previews.ts +128 -0
  64. package/dist/extensions/pi-zentui/extensions/zentui/state.ts +94 -0
  65. package/dist/extensions/pi-zentui/extensions/zentui/style.ts +424 -0
  66. package/dist/extensions/pi-zentui/extensions/zentui/telemetry.ts +82 -0
  67. package/dist/extensions/pi-zentui/extensions/zentui/ui.ts +1290 -0
  68. package/dist/extensions/pi-zentui/extensions/zentui/user-message-osc.ts +248 -0
  69. package/dist/extensions/pi-zentui/extensions/zentui/user-message-styles.ts +215 -0
  70. package/dist/extensions/pi-zentui/extensions/zentui/user-message.ts +206 -0
  71. package/dist/extensions/pi-zentui/extensions/zentui/working-line-messages.ts +24 -0
  72. package/dist/extensions/pi-zentui/extensions/zentui/working-line-spinners.ts +54 -0
  73. package/dist/extensions/pi-zentui/extensions/zentui/working-line.ts +1433 -0
  74. package/dist/extensions/pi-zentui/package-lock.json +5311 -0
  75. package/dist/extensions/pi-zentui/package.json +60 -0
  76. package/dist/extensions/pi-zentui/test/accent-rail-editor.test.ts +232 -0
  77. package/dist/extensions/pi-zentui/test/accent-rail-layout-patch.test.ts +669 -0
  78. package/dist/extensions/pi-zentui/test/completion-menu.test.ts +265 -0
  79. package/dist/extensions/pi-zentui/test/config.test.ts +3119 -0
  80. package/dist/extensions/pi-zentui/test/editor-metadata-format.test.ts +405 -0
  81. package/dist/extensions/pi-zentui/test/editor-transfer.test.ts +260 -0
  82. package/dist/extensions/pi-zentui/test/editor-viewport-indicators.test.ts +1286 -0
  83. package/dist/extensions/pi-zentui/test/extension-compliance.test.ts +7196 -0
  84. package/dist/extensions/pi-zentui/test/extension-status.test.ts +182 -0
  85. package/dist/extensions/pi-zentui/test/fixtures/starship-nerd-font-symbols.toml +172 -0
  86. package/dist/extensions/pi-zentui/test/footer-format.test.ts +431 -0
  87. package/dist/extensions/pi-zentui/test/footer-layout.test.ts +113 -0
  88. package/dist/extensions/pi-zentui/test/footer-repository-path.test.ts +123 -0
  89. package/dist/extensions/pi-zentui/test/format.test.ts +865 -0
  90. package/dist/extensions/pi-zentui/test/git.test.ts +212 -0
  91. package/dist/extensions/pi-zentui/test/icons.test.ts +69 -0
  92. package/dist/extensions/pi-zentui/test/interaction-summary.test.ts +1402 -0
  93. package/dist/extensions/pi-zentui/test/live-context-integration.test.ts +378 -0
  94. package/dist/extensions/pi-zentui/test/live-context.test.ts +139 -0
  95. package/dist/extensions/pi-zentui/test/minimalist-editor.test.ts +811 -0
  96. package/dist/extensions/pi-zentui/test/package-version.test.ts +321 -0
  97. package/dist/extensions/pi-zentui/test/project-refresh.test.ts +250 -0
  98. package/dist/extensions/pi-zentui/test/project-state.test.ts +159 -0
  99. package/dist/extensions/pi-zentui/test/repository-root.test.ts +108 -0
  100. package/dist/extensions/pi-zentui/test/responsive-dependencies.test.ts +825 -0
  101. package/dist/extensions/pi-zentui/test/runtime.test.ts +183 -0
  102. package/dist/extensions/pi-zentui/test/session-lifecycle.test.ts +40 -0
  103. package/dist/extensions/pi-zentui/test/settings-command.test.ts +1381 -0
  104. package/dist/extensions/pi-zentui/test/settings-previews.test.ts +347 -0
  105. package/dist/extensions/pi-zentui/test/state.test.ts +84 -0
  106. package/dist/extensions/pi-zentui/test/telemetry-lifecycle-integration.test.ts +276 -0
  107. package/dist/extensions/pi-zentui/test/telemetry.test.ts +105 -0
  108. package/dist/extensions/pi-zentui/test/turn-summary-lifecycle.integration.test.ts +327 -0
  109. package/dist/extensions/pi-zentui/test/user-message-osc.test.ts +164 -0
  110. package/dist/extensions/pi-zentui/test/user-message-styles.test.ts +292 -0
  111. package/dist/extensions/pi-zentui/test/working-line-lifecycle.integration.test.ts +730 -0
  112. package/dist/extensions/pi-zentui/test/working-line-messages.test.ts +34 -0
  113. package/dist/extensions/pi-zentui/test/working-line.test.ts +1990 -0
  114. package/dist/extensions/pi-zentui/tsconfig.json +16 -0
  115. package/dist/extensions/tps.test.ts +38 -0
  116. package/dist/extensions/{pi-powerline-footer/tps.ts → tps.ts} +4 -0
  117. package/dist/skills/design-references/SKILL.md +31 -0
  118. package/dist/skills/design-references/references/clickhouse/DESIGN.md +544 -0
  119. package/dist/themes/adventure.json +84 -0
  120. package/dist/themes/adwaita-dark.json +84 -0
  121. package/dist/themes/arcoiris.json +84 -0
  122. package/dist/themes/arthur.json +84 -0
  123. package/dist/themes/atom.json +84 -0
  124. package/dist/themes/aura.json +84 -0
  125. package/dist/themes/black-metal-bathory.json +84 -0
  126. package/dist/themes/black-metal-burzum.json +84 -0
  127. package/dist/themes/black-metal-khold.json +84 -0
  128. package/dist/themes/box.json +84 -0
  129. package/dist/themes/brogrammer.json +84 -0
  130. package/dist/themes/carbonfox.json +84 -0
  131. package/dist/themes/catppuccin-mocha.json +84 -0
  132. package/dist/themes/citruszest.json +84 -0
  133. package/dist/themes/cursor-dark.json +84 -0
  134. package/dist/themes/cutie-pro.json +84 -0
  135. package/dist/themes/dark-modern.json +84 -0
  136. package/dist/themes/dark-pastel.json +84 -0
  137. package/dist/themes/dimmed-monokai.json +84 -0
  138. package/dist/themes/doom-peacock.json +84 -0
  139. package/dist/themes/dracula-plus.json +84 -0
  140. package/dist/themes/dracula.json +80 -0
  141. package/dist/themes/earthsong.json +84 -0
  142. package/dist/themes/everforest-dark-hard.json +84 -0
  143. package/dist/themes/everforest-dark.json +80 -0
  144. package/dist/themes/fahrenheit.json +84 -0
  145. package/dist/themes/flatland.json +84 -0
  146. package/dist/themes/flexoki-dark.json +84 -0
  147. package/dist/themes/front-end-delight.json +84 -0
  148. package/dist/themes/fun-forrest.json +84 -0
  149. package/dist/themes/galizur.json +84 -0
  150. package/dist/themes/github-dark-colorblind.json +84 -0
  151. package/dist/themes/github-dark-high-contrast.json +84 -0
  152. package/dist/themes/glacier.json +84 -0
  153. package/dist/themes/gruber-darker.json +84 -0
  154. package/dist/themes/gruvbox-dark-hard.json +84 -0
  155. package/dist/themes/gruvbox-dark.json +84 -0
  156. package/dist/themes/gruvbox-material.json +84 -0
  157. package/dist/themes/guezwhoz.json +84 -0
  158. package/dist/themes/hacktober.json +84 -0
  159. package/dist/themes/hardcore.json +84 -0
  160. package/dist/themes/havn-skumring.json +84 -0
  161. package/dist/themes/ic-orange-ppl.json +84 -0
  162. package/dist/themes/iterm2-smoooooth.json +84 -0
  163. package/dist/themes/iterm2-tango-dark.json +84 -0
  164. package/dist/themes/japanesque.json +84 -0
  165. package/dist/themes/jellybeans.json +84 -0
  166. package/dist/themes/kanagawa-wave.json +84 -0
  167. package/dist/themes/kurokula.json +84 -0
  168. package/dist/themes/later-this-evening.json +84 -0
  169. package/dist/themes/lovelace.json +84 -0
  170. package/dist/themes/material-darker.json +84 -0
  171. package/dist/themes/matte-black.json +84 -0
  172. package/dist/themes/mellow.json +84 -0
  173. package/dist/themes/miasma.json +84 -0
  174. package/dist/themes/nord.json +80 -0
  175. package/dist/themes/nvim-dark.json +84 -0
  176. package/dist/themes/one-dark.json +80 -0
  177. package/dist/themes/popping-and-locking.json +84 -0
  178. package/dist/themes/rose-pine.json +80 -0
  179. package/dist/themes/sea-shells.json +84 -0
  180. package/dist/themes/sleepy-hollow.json +84 -0
  181. package/dist/themes/smyck.json +84 -0
  182. package/dist/themes/solarized-dark.json +80 -0
  183. package/dist/themes/tokyo-night.json +80 -0
  184. package/dist/themes/tomorrow-night-bright.json +84 -0
  185. package/dist/themes/tomorrow-night-burns.json +84 -0
  186. package/dist/themes/tomorrow-night.json +84 -0
  187. package/dist/themes/twilight.json +84 -0
  188. package/dist/themes/vague.json +84 -0
  189. package/dist/themes/vesper.json +84 -0
  190. package/dist/themes/xcode-dark-hc.json +84 -0
  191. package/docs/custom-provider.md +0 -1
  192. package/docs/plans/auto-model-routing-extension.md +490 -0
  193. package/package.json +3 -3
  194. package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +0 -27
  195. package/dist/extensions/pi-powerline-footer/CHANGELOG.md +0 -687
  196. package/dist/extensions/pi-powerline-footer/CONTRIBUTING.md +0 -16
  197. package/dist/extensions/pi-powerline-footer/README.md +0 -513
  198. package/dist/extensions/pi-powerline-footer/banner.png +0 -0
  199. package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +0 -586
  200. package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +0 -583
  201. package/dist/extensions/pi-powerline-footer/bash-mode/history.ts +0 -204
  202. package/dist/extensions/pi-powerline-footer/bash-mode/shell-session.ts +0 -286
  203. package/dist/extensions/pi-powerline-footer/bash-mode/transcript.ts +0 -108
  204. package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +0 -60
  205. package/dist/extensions/pi-powerline-footer/cd-command.ts +0 -190
  206. package/dist/extensions/pi-powerline-footer/colors.ts +0 -70
  207. package/dist/extensions/pi-powerline-footer/context-usage.ts +0 -156
  208. package/dist/extensions/pi-powerline-footer/currency-rates.ts +0 -142
  209. package/dist/extensions/pi-powerline-footer/editor-composition.ts +0 -32
  210. package/dist/extensions/pi-powerline-footer/editor-performance.ts +0 -99
  211. package/dist/extensions/pi-powerline-footer/git-status.ts +0 -329
  212. package/dist/extensions/pi-powerline-footer/guide.ts +0 -220
  213. package/dist/extensions/pi-powerline-footer/icons.ts +0 -190
  214. package/dist/extensions/pi-powerline-footer/index.ts +0 -3428
  215. package/dist/extensions/pi-powerline-footer/lifecycle.ts +0 -10
  216. package/dist/extensions/pi-powerline-footer/package.json +0 -49
  217. package/dist/extensions/pi-powerline-footer/paths.ts +0 -22
  218. package/dist/extensions/pi-powerline-footer/powerline-config.ts +0 -446
  219. package/dist/extensions/pi-powerline-footer/presets.ts +0 -102
  220. package/dist/extensions/pi-powerline-footer/queue/store.ts +0 -313
  221. package/dist/extensions/pi-powerline-footer/queue/types.ts +0 -53
  222. package/dist/extensions/pi-powerline-footer/render-scheduler.ts +0 -29
  223. package/dist/extensions/pi-powerline-footer/segments.ts +0 -570
  224. package/dist/extensions/pi-powerline-footer/separators.ts +0 -57
  225. package/dist/extensions/pi-powerline-footer/session-usage.ts +0 -44
  226. package/dist/extensions/pi-powerline-footer/shortcuts.ts +0 -61
  227. package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +0 -1905
  228. package/dist/extensions/pi-powerline-footer/tests/cd-command.test.ts +0 -144
  229. package/dist/extensions/pi-powerline-footer/tests/context-usage.test.ts +0 -156
  230. package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +0 -344
  231. package/dist/extensions/pi-powerline-footer/tests/editor-composition.test.ts +0 -48
  232. package/dist/extensions/pi-powerline-footer/tests/editor-performance.test.ts +0 -43
  233. package/dist/extensions/pi-powerline-footer/tests/editor-responsiveness.test.ts +0 -136
  234. package/dist/extensions/pi-powerline-footer/tests/fixed-editor-border.test.ts +0 -39
  235. package/dist/extensions/pi-powerline-footer/tests/git-optional-locks.test.ts +0 -64
  236. package/dist/extensions/pi-powerline-footer/tests/git-status.test.ts +0 -92
  237. package/dist/extensions/pi-powerline-footer/tests/guide.test.ts +0 -129
  238. package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +0 -116
  239. package/dist/extensions/pi-powerline-footer/tests/mode-aware-trigger.test.ts +0 -79
  240. package/dist/extensions/pi-powerline-footer/tests/paths.test.ts +0 -63
  241. package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +0 -65
  242. package/dist/extensions/pi-powerline-footer/tests/quit-cursor.test.ts +0 -14
  243. package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +0 -173
  244. package/dist/extensions/pi-powerline-footer/tests/session-usage.test.ts +0 -47
  245. package/dist/extensions/pi-powerline-footer/tests/stash-shortcut.test.ts +0 -37
  246. package/dist/extensions/pi-powerline-footer/tests/thinking-segment.test.ts +0 -76
  247. package/dist/extensions/pi-powerline-footer/tests/token-stats.test.ts +0 -249
  248. package/dist/extensions/pi-powerline-footer/tests/tps.test.ts +0 -39
  249. package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +0 -237
  250. package/dist/extensions/pi-powerline-footer/tests/welcome.test.ts +0 -199
  251. package/dist/extensions/pi-powerline-footer/tests/working-vibes.test.ts +0 -317
  252. package/dist/extensions/pi-powerline-footer/theme.example.json +0 -24
  253. package/dist/extensions/pi-powerline-footer/theme.json +0 -12
  254. package/dist/extensions/pi-powerline-footer/theme.ts +0 -241
  255. package/dist/extensions/pi-powerline-footer/token-stats.ts +0 -304
  256. package/dist/extensions/pi-powerline-footer/tsconfig.json +0 -13
  257. package/dist/extensions/pi-powerline-footer/types.ts +0 -235
  258. package/dist/extensions/pi-powerline-footer/welcome-dismiss.ts +0 -34
  259. package/dist/extensions/pi-powerline-footer/welcome.ts +0 -709
  260. package/dist/extensions/pi-powerline-footer/working-vibes.ts +0 -721
  261. package/dist/extensions/preview-tools-disabled.test.ts +0 -37
  262. package/dist/extensions/preview-tools-disabled.ts +0 -11
  263. package/dist/themes/powerline-footer/theme.json +0 -33
@@ -1,16 +0,0 @@
1
- # Contributing
2
-
3
- Thanks for helping improve `pi-powerline-footer`.
4
-
5
- For bug reports, include the powerline version, Pi version, OS, terminal, your relevant `powerline` settings, what you expected, what happened, and exact reproduction steps. Screenshots are useful for rendering issues, but please also paste any terminal error text or stack trace.
6
-
7
- For feature or config requests, describe the workflow you are trying to improve, the setting shape you expect to use, and whether the behavior should be enabled by default or opt-in.
8
-
9
- For PRs, keep the change narrow and include tests for behavior changes when possible. Update `README.md` for user-facing settings or shortcuts, and update `CHANGELOG.md` under `[Unreleased]` with contributor credit when the change comes from an issue, PR, report, or review.
10
-
11
- Before opening a PR, run:
12
-
13
- ```bash
14
- npm test
15
- git diff --check
16
- ```
@@ -1,513 +0,0 @@
1
- <p>
2
- <img src="banner.png" alt="pi-powerline-footer" width="1100">
3
- </p>
4
-
5
- # pi-powerline-footer
6
-
7
- Customizes the default [pi](https://github.com/badlogic/pi-mono) editor with a powerline-style status bar, welcome overlay, and AI-generated "vibes" for loading messages. Inspired by [Powerlevel10k](https://github.com/romkatv/powerlevel10k) and [oh-my-pi](https://github.com/can1357/oh-my-pi).
8
-
9
- <img width="1261" height="817" alt="Example powerline UI" src="https://github.com/user-attachments/assets/4cc43320-3fb8-4503-b857-69dffa7028f2" />
10
-
11
-
12
- ## Features
13
-
14
- **Editor stash** — Press `Alt+S` to save your editor content and clear the editor, type a quick prompt, and your stashed text auto-restores when the agent finishes. Toggles between stash, pop, and update-existing-stash. A `stash` indicator appears in the powerline bar while text is stashed.
15
-
16
- **Powerline Queue** — Messages typed during compaction are held by Powerline and delivered after successful compaction instead of disappearing into Pi's native queue. `/queue` provides a file-backed queue for aliases, retries, clears, and manual delivery. Active queued and blocked counts appear in the `queue` segment only when there is something to show.
17
-
18
- **Working Vibes** — AI-generated themed loading messages. Set `/vibe star trek` and your "Working..." becomes "Running diagnostics..." or "Engaging warp drive...". Supports any theme: pirate, zen, noir, cowboy, etc.
19
-
20
- **Welcome and guide** — A recurring Selesai guide appears on startup, new, resumed, and forked sessions. It maps workflow commands, delegation and research prompts, skills, handoff, recovery, and settings to concrete next steps. Use `/guide` to reopen it, `/guide compact` for a small header, `/guide off` to remember dismissal, or `/guide reset` to restore the full tour. New guide features are called out after upgrades; only the guide mode and version marker are persisted.
21
-
22
- **Welcome overlay** — Branded splash screen shown as centered overlay on startup. Shows gradient logo, model info, keyboard tips, loaded AGENTS.md/extensions/skills/templates counts, an approximate initial system-prompt token count, and recent sessions. Auto-dismisses after 30 seconds or on any key press. Set `powerline.welcome` to `false` to disable it while keeping the footer enabled.
23
-
24
- **Rounded box design** — Status renders directly in the editor's top border, not as a separate footer.
25
-
26
- **Native Pi layout** — Pi owns fixed input, feed scrolling, selection, and terminal behavior; this extension supplies powerline widgets and the custom bash/stash/editor integrations.
27
-
28
- **Live thinking level indicator** — Shows current thinking level (`think:off`, `think:med`, etc.) with per-level colors. High, xhigh, and max levels use a rainbow effect inspired by Claude Code's ultrathink.
29
-
30
- **Smart defaults** — Nerd Font auto-detection for iTerm, WezTerm, Kitty, Ghostty, and Alacritty with ASCII fallbacks. Colors matched to oh-my-pi's dark theme.
31
-
32
- **Git integration** — Async status fetching with 1s cache TTL. Automatically invalidates on file writes/edits. Shows branch, staged (+), unstaged (*), and untracked (?) counts.
33
-
34
- **Context awareness** — Color-coded warnings above 70% (yellow) and above 90% (red) context usage. During streaming, the context segment refreshes from live assistant usage instead of waiting for the next turn. Auto-compact indicator when enabled. If `pi-custom-compaction` is installed and enabled, the powerline automatically hides native context segments so the footer does not show stale post-summary usage.
35
-
36
- **Token intelligence** — Smart formatting (1.2k, 45M), used/max/percentage context display, subscription detection, and configurable subscription cost display.
37
-
38
- **Sticky bash mode** — Toggle bash mode with `ctrl+shift+b` or `/bash-mode`. It keeps a managed shell session alive for the current pi session, shows a dedicated `shell_mode` segment, streams command output into an embedded transcript below the editor, and lets `cd` or exported state persist across commands.
39
-
40
- **Shell ghost suggestions** — Optional bash-mode completions can show inline ghost suggestions from successful project shell history, deterministic path and git continuations, guarded global history for high-confidence heads like `git`, and a tiny curated default set. Right now that curated set is `g` → `git status` and `c` → `cd ..`. Shell-native completion probes stay disabled. Set `bashMode.completions` to `true` to enable bash-mode ghosts and one-off `!command` / `!!command` predictions.
41
-
42
- ## Installation
43
-
44
- ```bash
45
- pi install npm:pi-powerline-footer
46
- ```
47
-
48
- Restart pi to activate.
49
-
50
- ## Usage
51
-
52
- Activates automatically. Toggle with `/powerline`, switch presets with `/powerline <name>`, and move the primary row with `/powerline placement above|below|toggle`.
53
-
54
- Use `/cd <path>` to continue the current conversation from another working directory. It supports relative paths, absolute paths, `~`, `~/...`, and directory completions. With no argument, `/cd` prints the current Pi session directory. The command switches into a cwd-updated session file so Pi tools and the footer path segment agree after the change.
55
-
56
- Powerline Queue commands:
57
-
58
- - `/compact <text>` — compact now and queue `<text>` as the next prompt after successful compaction
59
- - `/queue` — open the queued-prompt picker
60
- - `/queue alias <name> [path]` — save a project alias, defaulting to the current cwd when `path` is omitted
61
- - `/queue send [id]` / `/queue retry [id]` — deliver a queued prompt now
62
- - `/queue clear <id|all>` — clear queued prompts
63
- - `/queue target <id> @name|global|current` — retarget a queued prompt
64
-
65
- Queued data is stored under the Pi agent directory in `powerline-footer/inbox.jsonl` and `powerline-footer/projects.json`. `inbox.jsonl` is a stable read surface for orchestrators and helper agents; each line is a queue item with `id`, `text`, `createdAt`, `updatedAt`, `source`, `target`, `intent`, `status`, and optional `error`. Writes should still go through Powerline commands or the store so locking and atomic writes are preserved.
66
-
67
- - `/powerline placement below` — move the primary powerline row below the editor
68
- - `/powerline placement above` — restore the default placement
69
- - `/powerline placement toggle` — switch between above and below
70
-
71
- You can also set it in the agent settings file (`~/.selesai/agent/settings.json` by default, or under `SELESAI_CODING_AGENT_DIR`) or project-local `.selesai/settings.json`:
72
-
73
- ```json
74
- {
75
- "showLastPrompt": true,
76
- "powerline": {
77
- "preset": "default",
78
- "placement": "below",
79
- "welcome": true
80
- }
81
- }
82
- ```
83
-
84
-
85
- | Preset | Description |
86
- |--------|-------------|
87
- | `default` | Model, thinking, path (basename), git, context, tokens, cost |
88
- | `minimal` | Just path (basename), git, context |
89
- | `compact` | Model, git, cost, context |
90
- | `full` | Everything including hostname, time, abbreviated path |
91
- | `nerd` | Maximum detail for Nerd Font users |
92
- | `ascii` | Safe for any terminal |
93
-
94
- **Environment:** `POWERLINE_NERD_FONTS=1` to force Nerd Fonts, `=0` for ASCII.
95
-
96
- For typing diagnostics, start Pi with `POWERLINE_DEBUG_PERF=1`, reproduce the slow editor case, then run `/powerline-perf`. Use `/powerline-perf reset` before a focused run. Profiling is off by default. While it is enabled, these A/B flags can disable one render seam before `/reload`:
97
-
98
- - `POWERLINE_PERF_FAST_RENDER=0`
99
- - `POWERLINE_PERF_EDITOR_CHROME=0`
100
- - `POWERLINE_PERF_WIDGETS=0`
101
- - `POWERLINE_PERF_BASH_WIDGETS=0`
102
- - `POWERLINE_PERF_LAST_PROMPT=0`
103
-
104
- Preset selection is saved under `powerline` in the agent settings file and restored on startup.
105
- Run `/powerline default` to switch back to the default preset.
106
-
107
- ### Custom items from extension statuses
108
-
109
- You can promote any extension status key into its own dedicated powerline item. This gives you a general way to register your own status items without changing this extension.
110
-
111
- 1. Any extension can publish status text through `ctx.ui.setStatus("my-key", "...value...")`.
112
- 2. Configure `powerline.customItems` to place those keys on the left, right, or secondary row.
113
-
114
- ```json
115
- {
116
- "powerline": {
117
- "preset": "default",
118
- "customItems": [
119
- {
120
- "id": "ci",
121
- "statusKey": "ci-status",
122
- "position": "right",
123
- "prefix": "CI",
124
- "color": "warning"
125
- },
126
- {
127
- "id": "review",
128
- "position": "secondary",
129
- "hideWhenMissing": false,
130
- "prefix": "review"
131
- }
132
- ]
133
- }
134
- }
135
- ```
136
-
137
- `customItems` fields:
138
-
139
- - `id` (required): unique item id (`a-z`, `A-Z`, `0-9`, `_`, `-`)
140
- - `statusKey` (optional): extension status key to read, defaults to `id`
141
- - `position` (optional): `left`, `right`, or `secondary` (default `right`)
142
- - `prefix` (optional): text shown before the live status value
143
- - `color` (optional): any Pi theme color (`warning`, `accent`, etc.) or hex (`#RRGGBB`)
144
- - `hideWhenMissing` (optional): hide item when no status is present (default `true`)
145
- - `excludeFromExtensionStatuses` (optional): omit this key from the aggregate `extension_statuses` segment (default `true`)
146
-
147
- If you still prefer the older string preset config shape, `"powerline": "default"` continues to work. String preset shorthand keeps `welcome` enabled and uses the default shortcut/cost/model display settings.
148
-
149
- ### Disabling segments
150
-
151
- Set `powerline.disabledSegments` to hide built-in or configured custom segments from the active preset:
152
-
153
- ```json
154
- {
155
- "powerline": {
156
- "preset": "default",
157
- "disabledSegments": ["cost", "extension_statuses", "custom:ci"]
158
- }
159
- }
160
- ```
161
-
162
- Built-in names are listed under Segments below. Custom items use `custom:<id>`. Unknown names are ignored with a startup warning.
163
-
164
- ### Custom layout
165
-
166
- Use `powerline.layout` to override segment order and grouping while keeping the selected preset’s colors and segment options. Set `powerline.separator` when you want a separator style independent of the preset:
167
-
168
- ```json
169
- {
170
- "powerline": {
171
- "preset": "default",
172
- "separator": "chevron",
173
- "layout": {
174
- "left": ["model", "thinking", "path", "git"],
175
- "right": ["context_pct", "cost"],
176
- "secondary": ["custom:ci"]
177
- },
178
- "customItems": [
179
- { "id": "ci", "statusKey": "ci-status" }
180
- ]
181
- }
182
- }
183
- ```
184
-
185
- A present `left`, `right`, or `secondary` array replaces that preset group exactly; an empty array clears it. Omitted groups keep the preset entries and automatically append custom items by their configured `position`. Explicitly listing a segment moves it out of omitted preset groups, and explicitly placed custom items are not auto-appended elsewhere. `disabledSegments` is applied after layout. `separator` accepts any style listed below; omit it to keep the preset’s separator.
186
-
187
- Responsive behavior is unchanged: these groups control ordering and overflow priority, not permanently pinned terminal rows. `right` means “later primary segments,” not right-edge alignment. On wide terminals secondary entries can fit in the top bar; on narrow terminals primary overflow moves into the secondary line. Some segments are hidden when they have no value, so `thinking` appears only when the active session/model reports a non-`off` thinking level. Unknown entries are ignored with a startup warning. The old fixed `custom` preset has been removed; combine any preset with `layout` instead.
188
-
189
- ### Demo settings
190
-
191
- For a compact current footer setup:
192
-
193
- ```json
194
- {
195
- "powerline": {
196
- "preset": "default",
197
- "path": { "mode": "basename" },
198
- "model": { "display": "name" },
199
- "cost": { "subscriptionDisplay": "subscription", "currency": "USD" }
200
- }
201
- }
202
- ```
203
-
204
- Use `"model": { "display": "qualified" }` when two providers expose models with the same display name.
205
-
206
- `cost.currency` accepts `USD`, `CNY`, `EUR`, `GBP`, `JPY`, `CAD`, `AUD`, `CHF`, `INR`, or `KRW`. Pi reports costs in USD; non-USD display uses a keyless USD FX rate fetched in the background and cached for 24 hours under the Pi agent directory. If no cached rate is available yet, the cost segment renders `-- CODE` until a later footer refresh can use the fetched rate.
207
-
208
- Subscription cost display accepts:
209
-
210
- | Mode | Subscription + reported cost | Subscription + no reported cost |
211
- |------|------------------------------|----------------------------------|
212
- | `subscription` | `(sub)` | `(sub)` |
213
- | `reported-cost` | `$0.12` | `(sub)` |
214
- | `both` | `$0.12 (sub)` | `(sub)` |
215
-
216
- Segment display formats (opt-in; defaults match the historical rendering):
217
-
218
- | Segment option | Values | Default | Effect |
219
- |---|---|---|---|
220
- | `"context": { "format" }` | `"full"` / `"percent"` | `"full"` | `"percent"` shows a bare rounded `83%` (threshold-colored, no icon) instead of `12k/200k (6.2%)` |
221
- | `"cache_read": { "format" }` | `"tokens"` / `"percent"` / `"both"` | `"tokens"` | `"percent"` shows the cache hit rate `cacheRead / (input + cacheRead)` instead of the raw token count; `"both"` shows raw tokens plus the hit rate, e.g. `cache in: 12k (80%)` |
222
-
223
- ```json
224
- {
225
- "powerline": {
226
- "context": { "format": "percent" },
227
- "cache_read": { "format": "both" }
228
- }
229
- }
230
- ```
231
-
232
- ## Bash mode
233
-
234
- Toggle bash mode with either:
235
-
236
- - `ctrl+shift+b`
237
- - `/bash-mode on`
238
- - `/bash-mode off`
239
- - `/bash-mode toggle`
240
-
241
- Reset the managed shell with `/bash-reset`.
242
-
243
- While bash mode is active:
244
-
245
- - Enter runs the current shell command
246
- - Up and Down browse matching shell history
247
- - `escape` exits bash mode and returns to normal prompt mode
248
- - `ctrl+c` interrupts the active shell job before falling back to normal pi behavior
249
- - When `bashMode.completions` is `true`, Right Arrow or Tab accepts ghost text into the editor without running it
250
-
251
- The managed shell is persistent for the current pi session. Command output appears in a transcript below the editor, and shell cwd changes are reflected in the footer path and `shell_mode` segment. Bash-mode ghost suggestions and one-off `!command` / `!!command` predictions are opt-in because they add editor work. When enabled, bash mode can show the newest successful project-history ghost on an empty prompt. Mode entry stays quiet: there is no automatic or manual dropdown completion surface, and ghost suggestions do not run shell-native completion probes.
252
-
253
- ### Bash mode configuration
254
-
255
- In `~/.selesai/agent/settings.json` (or under `SELESAI_CODING_AGENT_DIR` when that environment variable is set):
256
-
257
- ```json
258
- {
259
- "bashMode": {
260
- "toggleShortcut": "ctrl+shift+b",
261
- "completions": false,
262
- "transcriptMaxLines": 2000,
263
- "transcriptMaxBytes": 524288
264
- }
265
- }
266
- ```
267
-
268
- ## Editor Stash
269
-
270
- Use `Alt+S` / `Option+S` as a quick stash toggle while drafting. It keeps one active stash and clears the editor when stashing. Powerline listens for unambiguous Alt/Meta-S escape encodings by default. If your old terminal setup only emits the printable German sharp-S character for Option+S and you still want that to trigger stash, set `"stashSharpSShortcut": true` under `powerline`.
271
-
272
- | Editor | Stash | `Alt+S` result |
273
- |--------|-------|----------------|
274
- | Has text | Empty | Stash current text, clear editor |
275
- | Empty | Has stash | Restore stash into editor |
276
- | Has text | Has stash | Update stash with current text, clear editor |
277
- | Empty | Empty | Show "Nothing to stash" |
278
-
279
- Auto-restore after an agent run only happens when the editor is still empty. If you typed meanwhile, the stash is preserved.
280
-
281
- The `stash` indicator appears in the powerline bar (on presets with `extension_statuses`). Active stash is still session-local and resets on session switch / disable, but stash history is persisted to the agent dir at `powerline-footer/stash-history.json` so it survives restarts. By default the agent dir is `~/.selesai/agent`; set `SELESAI_CODING_AGENT_DIR` to move global powerline settings, stash history, sessions, vibes, skills, commands, and extension discovery with Pi.
282
-
283
- ### Stash history
284
-
285
- Open prompt history with either:
286
-
287
- - `ctrl+alt+h`
288
- - `/stash-history`
289
-
290
- Prompt history now has two sources:
291
-
292
- - stashed prompts — up to 12 recent stashed prompts (newest first)
293
- - recent project prompts — up to 50 recent user-submitted prompts pulled from pi sessions in the current project folder
294
-
295
- Selecting a stashed or project prompt-history entry inserts it into the editor. If the editor already has text, you can choose `Replace`, `Append`, or `Cancel`.
296
-
297
- ### Editor clipboard and navigation shortcuts
298
-
299
- - `ctrl+alt+c` — copy full editor content
300
- - `ctrl+alt+x` — cut full editor content (copy, then clear)
301
- - `ctrl+alt+q` — open the queued-prompt picker
302
- - `cmd+shift+up` — move the editor cursor to the start of the first line
303
- - `cmd+shift+down` — move the editor cursor to the end of the last line
304
-
305
- Copy/cut actions do not modify stash state or stash history. Dragging files, folders, images, or screenshots from Finder into the custom editor inserts their path strings. Pi owns chat scrolling, selection, and fixed input behavior natively.
306
-
307
- ### Shortcut configuration
308
-
309
- You can override shortcut keys in the agent settings file:
310
-
311
- ```json
312
- {
313
- "powerlineShortcuts": {
314
- "stashHistory": "ctrl+alt+h",
315
- "copyEditor": "ctrl+alt+c",
316
- "cutEditor": "ctrl+alt+x",
317
- "queueOpen": "ctrl+alt+q",
318
- "editorStart": "cmd+shift+up",
319
- "editorEnd": "cmd+shift+down"
320
- }
321
- }
322
- ```
323
-
324
- After changing bindings, run `/reload`. Invalid bindings, reserved key conflicts like `Alt+S`, or duplicate conflicts fall back to safe defaults. Set a binding to `null` or `""` to disable that action. `cmd` and `command` are accepted aliases for Pi's `super` modifier for the documented Command navigation keys.
325
-
326
- ### Editor autocomplete composition
327
-
328
- Powerline wraps Pi's autocomplete provider so bash mode can add shell-aware suggestions. When another editor extension was already installed, powerline now passes Pi's provider through that previous editor's `setAutocompleteProvider()` first and then wraps the resulting provider. This preserves prior autocomplete-provider wrappers where possible, but it is not full render/input composition between custom editors.
329
-
330
- ## Working Vibes
331
-
332
- Transform boring "Working..." messages into themed phrases that match your style:
333
-
334
- ```
335
- /vibe star trek → "Running diagnostics...", "Engaging warp drive..."
336
- /vibe pirate → "Hoisting the sails...", "Charting course..."
337
- /vibe zen → "Breathing deeply...", "Finding balance..."
338
- /vibe noir → "Following the trail...", "Checking the angles..."
339
- /vibe → Shows current theme, mode, and model
340
- /vibe off → Disables (back to "Working...")
341
- /vibe model → Shows current model
342
- /vibe model openai/gpt-4o-mini → Use a different model
343
- /vibe mode → Shows current mode (generate or file)
344
- /vibe mode file → Switch to file-based mode (instant, no API calls)
345
- /vibe mode generate → Switch to on-demand generation (contextual)
346
- /vibe generate mafia 200 → Pre-generate 200 vibes and save to file
347
- ```
348
-
349
- ### Configuration
350
-
351
- In the agent settings file:
352
-
353
- ```json
354
- {
355
- "workingVibe": "star trek", // Theme phrase
356
- "workingVibeMode": "generate", // "generate" (on-demand) or "file" (pre-generated)
357
- "workingVibeModel": "openai-codex/gpt-5.4-mini", // Optional: model to use (default)
358
- "workingVibeFallback": "Working", // Optional: fallback message
359
- "workingVibeRefreshInterval": 30, // Optional: seconds between refreshes (default 30)
360
- "workingVibePrompt": "Generate a {theme} loading message for: {task}", // Optional: custom prompt template
361
- "workingVibeMaxLength": 65 // Optional: max message length (default 65)
362
- }
363
- ```
364
-
365
- ### Modes
366
-
367
- | Mode | Description | Pros | Cons |
368
- |------|-------------|------|------|
369
- | `generate` | On-demand AI generation (default) | Contextual, hints at actual task | Model-dependent cost and latency |
370
- | `file` | Pull from pre-generated file | Instant, zero cost, works offline | Not contextual |
371
-
372
- **File mode setup:**
373
- ```bash
374
- /vibe generate mafia 200 # Generate 200 vibes, save to the agent dir
375
- /vibe mode file # Switch to file mode
376
- /vibe mafia # Now uses the file
377
- ```
378
-
379
- **How file mode works:**
380
- 1. Vibes are loaded from `vibes/{theme}.txt` in the agent dir into memory
381
- 2. Uses seeded shuffle (Mulberry32 PRNG) — cycles through all vibes before repeating
382
- 3. New seed each session — different order every time you restart pi
383
- 4. Zero latency, zero cost, works offline
384
-
385
- **Prompt template variables (generate mode only):**
386
- - `{theme}` — the current vibe theme (e.g., "star trek", "mafia")
387
- - `{task}` — context hint (user prompt initially, then agent's response text or tool info on refresh)
388
- - `{exclude}` — recent vibes to avoid (auto-populated, e.g., "Don't use: vibe1, vibe2...")
389
-
390
- **How it works:**
391
- 1. When you send a message, shows "Channeling {theme}..." placeholder
392
- 2. AI generates a themed message in the background (3s timeout)
393
- 3. Message updates to the themed version (e.g., "Engaging warp drive...")
394
- 4. During long tasks, refreshes on tool calls (rate-limited, default 30s)
395
- 5. Cost and latency depend on your configured `workingVibeModel`
396
-
397
- ## Thinking Level Display
398
-
399
- The thinking segment shows live updates when you change thinking level:
400
-
401
- | Level | Display | Color |
402
- |-------|---------|-------|
403
- | off | `think:off` | gray |
404
- | minimal | `think:min` | purple-gray |
405
- | low | `think:low` | blue |
406
- | medium | `think:med` | teal |
407
- | high | `think:high` | rainbow |
408
- | xhigh | `think:xhigh` | rainbow |
409
- | max | `think:max` | rainbow |
410
-
411
- ## Path Display
412
-
413
- The path segment supports three modes:
414
-
415
- | Mode | Example | Description |
416
- |------|---------|-------------|
417
- | `basename` | `powerline-footer` | Just the directory name (default) |
418
- | `abbreviated` | `…/extensions/powerline-footer` | Full path with home abbreviated and length limit |
419
- | `full` | `~/.selesai/agent/extensions/powerline-footer` | Complete path with home abbreviated |
420
-
421
- Configure via preset options: `path: { mode: "full" }`
422
-
423
- ## Git polling
424
-
425
- By default the git segment polls both branch and dirty state. If background `git status --porcelain` calls interfere with your workflow, use branch-only polling:
426
-
427
- ```json
428
- {
429
- "powerline": {
430
- "git": { "polling": "branch" }
431
- }
432
- }
433
- ```
434
-
435
- Use `"off"` to disable extension-owned git polling entirely and only show the branch reported by Pi when available.
436
-
437
- ## Git host icon
438
-
439
- Set `git.hostIcon` to replace the branch icon with the origin remote's host logo:
440
-
441
- ```json
442
- {
443
- "powerline": {
444
- "git": { "hostIcon": true }
445
- }
446
- }
447
- ```
448
-
449
- The origin remote is detected (SSH or HTTPS) and mapped to an icon: GitHub (), GitLab (), Bitbucket (), or a generic git logo () for any other remote (self-hosted, Gitea, Codeberg, …). Repositories without an origin remote keep the plain branch icon (), as do ASCII (non–Nerd Font) setups. The remote is read once and cached, so this adds no per-render cost. Default is `false` (branch icon unchanged).
450
-
451
- ## Segments
452
-
453
- `model` · `thinking` · `shell_mode` · `path` · `git` · `subagents` · `token_in` · `token_out` · `token_total` · `cost` · `context_pct` · `context_total` · `time_spent` · `time` · `session` · `hostname` · `cache_read` · `cache_write` · `extension_statuses`
454
-
455
- ## Separators
456
-
457
- `powerline` · `powerline-thin` · `slash` · `pipe` · `dot` · `chevron` · `star` · `block` · `none` · `ascii`
458
-
459
- ## Theming
460
-
461
- Colors are configurable via pi's theme system. Each preset defines its own color scheme, and you can override individual colors and icons with a `theme.json` file in the extension directory.
462
-
463
- ### Default Colors
464
-
465
- | Semantic | Theme Color | Description |
466
- |----------|-------------|-------------|
467
- | `model` | `#d787af` | Model name |
468
- | `shellMode` | `accent` | Bash mode segment |
469
- | `path` | `#00afaf` | Directory path |
470
- | `gitClean` | `success` | Git branch (clean) |
471
- | `gitDirty` | `warning` | Git branch (dirty) |
472
- | `thinking` | `thinkingOff` | Thinking level (`off`) |
473
- | `thinkingMinimal` | `thinkingMinimal` | Thinking level (`minimal`) |
474
- | `thinkingLow` | `thinkingLow` | Thinking level (`low`) |
475
- | `thinkingMedium` | `thinkingMedium` | Thinking level (`medium`) |
476
- | `context` | `dim` | Context usage |
477
- | `contextWarn` | `warning` | Context usage >70% |
478
- | `contextError` | `error` | Context usage >90% |
479
- | `cost` | `text` | Cost display |
480
- | `tokens` | `muted` | Token counts |
481
-
482
- ### Custom Theme Override
483
-
484
- Create `extensions/powerline-footer/theme.json` in the agent dir (`~/.selesai/agent` by default, or `SELESAI_CODING_AGENT_DIR` when set):
485
-
486
- ```json
487
- {
488
- "colors": {
489
- "model": "accent",
490
- "shellMode": "accent",
491
- "path": "#00afaf",
492
- "gitClean": "success",
493
- "thinking": "thinkingOff",
494
- "thinkingMinimal": "thinkingMinimal",
495
- "thinkingLow": "thinkingLow",
496
- "thinkingMedium": "thinkingMedium"
497
- },
498
- "icons": {
499
- "auto": "↯",
500
- "warning": ""
501
- }
502
- }
503
- ```
504
-
505
- Colors can be:
506
- - **Theme color names**: `accent`, `muted`, `dim`, `text`, `success`, `warning`, `error`, `border`, `borderAccent`, `borderMuted`
507
- - **Hex colors**: `#ff5500`, `#d787af`
508
-
509
- Icons can be any string, including `""` when you want to suppress a specific glyph entirely.
510
-
511
- For npm package installs, this documented agent-dir file is separate from the package files under `~/.selesai/agent/npm/node_modules`. The extension reads the agent-dir override first, then falls back to a `theme.json` colocated with the loaded extension file. Use `/reload` or restart Pi after creating or editing `theme.json`.
512
-
513
- See `theme.example.json` for all available options.