@xzzpig/pi-starline 0.5.0 → 0.7.1

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 (53) hide show
  1. package/FORK-CHANGELOG.md +28 -0
  2. package/README.md +91 -181
  3. package/dist/public.d.ts +5 -0
  4. package/extensions/starline/config.ts +156 -326
  5. package/extensions/starline/context-live.ts +33 -0
  6. package/extensions/starline/editor-cursor.ts +3 -0
  7. package/extensions/starline/extension-status.ts +9 -5
  8. package/extensions/starline/footer.ts +331 -528
  9. package/extensions/starline/fork-editor-cursor.ts +14 -0
  10. package/extensions/starline/format.ts +151 -20
  11. package/extensions/starline/git-live.ts +20 -0
  12. package/extensions/starline/git-probe.ts +40 -0
  13. package/extensions/starline/git-segments.ts +175 -0
  14. package/extensions/starline/git.ts +71 -0
  15. package/extensions/starline/icons.ts +17 -0
  16. package/extensions/starline/index.ts +188 -91
  17. package/extensions/starline/live-session.ts +164 -0
  18. package/extensions/starline/live-tps.ts +165 -0
  19. package/extensions/starline/mouse/bubble-dismiss.ts +82 -0
  20. package/extensions/starline/mouse/cursor-marker.ts +69 -0
  21. package/extensions/starline/mouse/editor-hit-test.ts +6 -3
  22. package/extensions/starline/mouse/explicit-expand-target.ts +89 -0
  23. package/extensions/starline/mouse/external-layer.ts +42 -0
  24. package/extensions/starline/mouse/fork-native-clipboard.ts +57 -0
  25. package/extensions/starline/mouse/fork-pill-mouse.ts +19 -0
  26. package/extensions/starline/mouse/fork-pointer-coordination.ts +10 -0
  27. package/extensions/starline/mouse/fork-transcript-copy.ts +54 -0
  28. package/extensions/starline/mouse/fork-wheel-compat.ts +22 -0
  29. package/extensions/starline/mouse/hint.ts +4 -4
  30. package/extensions/starline/mouse/index.ts +54 -24
  31. package/extensions/starline/mouse/pointer-events.ts +73 -0
  32. package/extensions/starline/mouse/pointer-shape.ts +138 -0
  33. package/extensions/starline/mouse/tool-box.ts +4 -0
  34. package/extensions/starline/mouse/transcript-copy.ts +76 -33
  35. package/extensions/starline/paste-collapse.ts +52 -13
  36. package/extensions/starline/pill-actions.ts +590 -0
  37. package/extensions/starline/pill-anchors.ts +26 -0
  38. package/extensions/starline/pill-api.ts +80 -0
  39. package/extensions/starline/pill-bubble.ts +607 -0
  40. package/extensions/starline/pill-config.ts +67 -9
  41. package/extensions/starline/pill.ts +102 -20
  42. package/extensions/starline/project-probe.ts +79 -0
  43. package/extensions/starline/prototype-patch-registry.ts +6 -1
  44. package/extensions/starline/queue-rows.ts +43 -0
  45. package/extensions/starline/settings-command.ts +124 -177
  46. package/extensions/starline/subagent-fleet.ts +246 -0
  47. package/extensions/starline/turn-clock.ts +81 -0
  48. package/extensions/starline/ui.ts +297 -156
  49. package/extensions/starline/working-indicator.ts +189 -0
  50. package/package.json +18 -12
  51. package/types/pill-api.d.ts +115 -0
  52. package/extensions/starline/editor-metadata-format.ts +0 -259
  53. package/extensions/starline/footer-format.ts +0 -279
@@ -0,0 +1,28 @@
1
+ # Fork release notes
2
+
3
+ ## 0.7.1 — Pi cursor compatibility
4
+
5
+ - Restore `underline` and `terminal` editor cursor styles on Pi 1.2 and later while preserving the existing Pi 1.1 cursor path.
6
+ - The previous published fork version was 0.5.1. This release also includes the upstream syncs and fork changes recorded in 0.6.0 and 0.7.0 below.
7
+
8
+ ## 0.7.0 — Upstream v0.9.0 sync
9
+
10
+ - Adopt the compact editor layout, `editorMinRows`, configurable pill row, live throughput, and turn timing. The old editor metadata row is removed and its status placement maps to the right-hand footer.
11
+ - Retain Starline's user-message renderer, its padding and colour settings, and the shared editor/message colour controls. If pi-tidy also styles messages, patch order can determine the visible renderer; set `tidy.userMessageStyle` to `"off"` to leave user messages to Starline.
12
+ - Preserve the fork's shared mouse, clipboard and wheel integrations, pi-zentui markers, and group-expand compatibility. Clean-copy supports the configured Starline rail alongside upstream pi-tidy frames.
13
+
14
+ ## 0.6.0 — Upstream v0.6.1 sync
15
+
16
+ - Adopt upstream's pill-only status bar, clickable pills, bubbles and keyboard actions. The old text-footer configuration is removed.
17
+ - Keep the fork's `pi-mouse-events` consumer, component expansion and group-target compatibility. Pill pointer requests and click-away use the shared mouse layer rather than a second Starline mouse patch.
18
+ - Prefer Pi's native clipboard through the shared asynchronous copy slot when available; older v2 mouse-event publishers retain the existing OSC 52 fallback.
19
+ - Route editor-wheel input through the shared post-component slot using Pi's calculated delta, including acceleration and Alt-wheel, while retaining the earlier fallback for older v2 publishers.
20
+ - Ship upstream's public `types/pill-api.d.ts` along with the fork's built declarations and release notes.
21
+
22
+ ## 0.5.1 — Release candidate
23
+
24
+ - Recognize the optional `@xzzpig/transcript-expand-target.v1` contract for group summary clicks. Invalid or absent providers fall back to the existing component resolver; no new mandatory package dependency or default-setting change.
25
+ - Add `build:types` and `prepack` to include `dist/public.d.ts` alongside the extension sources.
26
+ - Keep historical upstream/fork release notes in `CHANGELOG.md`; this fork-only file records the new compatibility release without expanding upstream documentation edits.
27
+
28
+ Validated host: Pi 1.1.0. Native drag-selection acceptance and OpenSpec archival are release gates, not implied by a successful package build.
package/README.md CHANGED
@@ -1,229 +1,139 @@
1
1
  # Starline
2
2
 
3
+ <p align="center">
4
+ <img src="https://raw.githubusercontent.com/Andy8647/pi-starline/main/assets/cover.png" alt="pi-starline: a statusline you can click" width="840">
5
+ </p>
6
+
3
7
  A Starship-inspired statusline, Opencode-style editor chrome, and fullscreen mouse control for [Pi](https://pi.dev).
4
8
 
5
- > Starline is a fork of [pi-zentui](https://github.com/lmilojevicc/pi-zentui) by Luka, renamed and released on its own. It has diverged well past upstream and adds a pill footer style, a colour palette with `$ref` expansion, `model`/`thinking` footer segments, a git host icon, per-segment display options, configurable editor cursor styles, and mouse selection and copying.
9
+ Starline makes Pi's fullscreen mode feel like a finished terminal app:
6
10
 
7
- ## Screenshots
11
+ - **See the state:** a pill footer with directory, git, runtime, model, context and cost; click one for the numbers behind it.
12
+ - **Act on it:** click a pill to switch model or thinking level, see what is queued, or list running subagents.
13
+ - **Type comfortably:** a compact bordered input box, paste collapse, and a `ctrl+g` hint for your `$EDITOR`.
14
+ - **Drive with the mouse:** select and copy anywhere, click to move the caret, wheel to scroll the draft.
8
15
 
9
- ![Starline](https://raw.githubusercontent.com/Andy8647/pi-starline/main/assets/starline.png)
16
+ ## Features
10
17
 
11
- ## What is this?
18
+ **Footer**
12
19
 
13
- Starline makes Pi's fullscreen mode feel like a finished terminal app — three
14
- pieces of one product, not a theme:
20
+ - Starship-style segments: directory, git, runtime (57 runtimes), model, context, cost, plus optional session name, `user@host`, time, OS, session duration and project version.
21
+ - A colour palette with `$name` references; the bar is built from `pill.segments`, in your order.
22
+ - One `git` pill: branch, dirty markers and any operation in progress together. Click it for the changed files, ahead/behind and stashes. The list is read-only, because an agent may be running in the same tree.
23
+ - One `context` pill: the percentage, and nothing else. Click it for the window size, tokens used, session in/out totals and the cache rate.
24
+ - Other extensions' statuses from `ctx.ui.setStatus()` as pills, on either side or in the middle.
25
+ - The model pill's icon spins while the agent works, and the pill counts the run's elapsed time; when the run ends the number stays as the total it reached.
26
+ - No git pill on the bar means no `git status`: the refresh only reads the repository when something on the bar shows it.
15
27
 
16
- - **See the state** — a Starship-inspired statusline and pill footer: current directory, git branch and status, runtime/version detection, context usage and token counts in a compact, icon-rich format
17
- - **Type comfortably** — Opencode-style editor chrome: a clean bordered input box with accent rail and copy-friendly mode, model and provider inside the frame, paste collapse, and a `ctrl+g` hint pointing at your `$EDITOR` when a draft outgrows the box
18
- - **Drive with the mouse** — fullscreen mouse control: select and copy anywhere, click a tool box to expand just it, click to move the caret, wheel to scroll the draft — [see Mouse](#mouse-fullscreen-control)
28
+ **Clickable pills**
19
29
 
20
- ## Features
30
+ - **Model:** pick from your scoped models (the ones ctrl+p cycles).
31
+ - **Thinking:** pick a level from the ones the model supports.
32
+ - **Queue:** an inbox icon and a count while messages wait; click to read them.
33
+ - **Subagents:** with [pi-subagents](https://github.com/nicobailon/pi-subagents), a count of running subagents; click for agent, model, time and tokens, live.
34
+ - **Your extension's pill:** a small published API lets any extension open the same bubble with its own content. See [Clickable pills for other extensions](https://github.com/Andy8647/pi-starline/blob/main/docs/pill-api.md).
35
+ - Clicking anywhere else on screen closes the bubble, and the click still does what it would have done: the caret moves, the line gets selected.
36
+ - Every action also runs from the keyboard as `/starline <name>`, and the pointer turns into a hand over anything clickable.
37
+
38
+ **Editor**
39
+
40
+ - Bordered input box with an accent rail, as tall as its text; paste, selection and `ctrl+g` hints ride its top rule. `editorMinRows` keeps it a fixed minimum height.
41
+ - This fork retains Starline's full-width user-message rails and their existing colour and padding settings. If pi-tidy also styles messages, the visible renderer can depend on load order; set `tidy.userMessageStyle` to `"off"` in Pi's `settings.json` to leave user messages to Starline.
42
+ - Copy-friendly mode drops the rail glyphs so terminal selection copies less chrome.
43
+
44
+ **Mouse** (Pi's `tuiMode: "fullscreen"`)
21
45
 
22
- ### Footer (Starship-inspired)
23
-
24
- - `dirname` — current directory (`basename` by default; optional `full` path with directory depth via `pathDisplay`)
25
- - `on branch` — git branch with icon
26
- - `[!?↑]` — git status indicators (modified, untracked, ahead/behind, stashed, etc.)
27
- - `via v5.5.0` — runtime detection with version and Starship-style Nerd Font runtime/language modules
28
- - Optional segments (off by default): session name, `user@host`, current time, OS icon, session duration, and the **project package version** (e.g. `package.json` → `0.6.0`) — distinct from the runtime segment, which shows the installed toolchain
29
- - Right side shows context usage, token counts, and cost
30
- - Built-in footer segments can be shown or hidden individually from `/starline`
31
- - Fully custom Starship-style layout via a `footerFormat` template string — see [Footer Format Template](https://github.com/Andy8647/pi-starline/blob/main/docs/configuration.md#footer-format-template)
32
- - Third-party Pi extension statuses from `ctx.ui.setStatus()` can be shown on the left,
33
- middle, or right side of the footer, on the editor's metadata row, or hidden per
34
- status key from `/starline`
35
-
36
- ### Editor (Opencode-inspired)
37
-
38
- - Bordered input box with configurable accent rail and border colors
39
- - Model name and provider displayed inside the editor frame
40
- - Configurable model, provider, and thinking-level indicator colors
41
- - Prompt-box-style user messages matching the Starline input chrome
42
- - Copy-friendly mode hides editor and previous-message rail glyphs so terminal selection copies less chrome
43
-
44
- ### Mouse (fullscreen control)
45
-
46
- The second half of the product: the statusline tells you where you are, the
47
- mouse lets you act on what you see. Starline drives Pi 0.84's own renderer
48
- (`tuiMode: "fullscreen"`) through the [`@xzzpig/pi-mouse-events`](https://www.npmjs.com/package/@xzzpig/pi-mouse-events)
49
- extension, which owns the renderer prototype and dispatches mouse events to
50
- components — the extension API stops at high-level hooks, and the selection
51
- hint, click-to-expand and clean-copy all need to reach into the renderer
52
- itself. Install it alongside Starline; without it Starline's mouse features
53
- are simply off (everything else keeps working).
54
-
55
- - **Select and copy anywhere.** Drag to select in the transcript or the input box; double-click a word (paths and kebab-case stay whole), triple-click a line. Releasing copies — or set Pi's `fullscreenCopyOnSelect: false` and the selection stays highlighted, waiting for the copy key ([Pi #7720](https://github.com/earendil-works/pi/issues/7720), shipped in Pi 0.84.4).
56
- - **Clean copies.** Transcript selections drop Starline's rails, rule rows and pi-toolbox frame borders before they reach the clipboard; editor selections copy the draft's text, not the painted rows.
57
- - **Selection hint.** A selection that is not auto-copying shows exactly how many characters the copy key (`ctrl+x` by default, whatever `app.message.copy` is bound to) will copy, and a selection inside the editor names your editor — `ctrl+g to edit in nvim`.
58
- - **Click to expand one component.** A plain click anywhere on a tool box — title, output, hint row, borders — toggles just that box (MCP boxes included); bash boxes, skill blocks, branch summaries, compaction summaries and custom entries count too. The direction comes from the hint row when one is on screen and from the component's own state otherwise, so a box with no hint left once expanded still closes on a click. Only a plain click toggles: dragging across a box still selects and copies, a double-click still word-selects, and a click on a link still opens it.
59
- - **Click to move the caret** in the input box; **backspace/delete remove a selected range**; the **wheel scrolls the draft** over the input box, and a draft taller than the box keeps the `ctrl+g` external-editor hint on screen.
60
-
61
- 0.2.x's `fixedEditor` config block was renamed to `mouse` (migrated
62
- automatically, see [the changelog](CHANGELOG.md)); the fixed editor itself is
63
- gone, superseded by Pi's fullscreen mode.
64
-
65
- ### Git Status Icons
66
-
67
- <details>
68
- <summary>The indicators and what they mean</summary>
69
-
70
- | Icon | Meaning |
71
- | ---- | ---------- |
72
- | `!` | Modified |
73
- | `?` | Untracked |
74
- | `+` | Staged |
75
- | `✘` | Deleted |
76
- | `»` | Renamed |
77
- | `=` | Conflicted |
78
- | `$` | Stashed |
79
- | `↑` | Ahead |
80
- | `↓` | Behind |
81
- | `⇕` | Diverged |
82
-
83
- </details>
84
-
85
- ### Runtime Detection
86
-
87
- Detects Starship Nerd Font runtime/language modules, uses the Starship Nerd Font symbols, and keeps Starship-style defaults such as `bold green` for Node.js. By default Starline maps those styles through your active Pi theme; switch the Starship/footer color source to `terminal` in `/starline` if you want your terminal colorscheme to supply the exact ANSI colors.
88
-
89
- <details>
90
- <summary>All 57 detected runtimes and how they are recognised</summary>
91
-
92
- | Runtime/language | Detection examples |
93
- | ---------------- | ------------------------------------------------------------- |
94
- | Buf | `buf.yaml`, `buf.gen.yaml`, `buf.work.yaml` |
95
- | Bun | `bun.lock`, `bun.lockb` |
96
- | C | `.c`, `.h` files |
97
- | C++ | `.cpp`, `.cc`, `.cxx`, `.hpp` files |
98
- | CMake | `CMakeLists.txt`, `CMakeCache.txt` |
99
- | COBOL | `.cbl`, `.cob` files |
100
- | Conda | `CONDA_DEFAULT_ENV` environment |
101
- | Crystal | `.cr` files, `shard.yml` |
102
- | Dart | `.dart` files, `pubspec.yaml`, `.dart_tool/` |
103
- | Deno | `deno.json`, `deno.jsonc`, `deno.lock` |
104
- | .NET | `.csproj`, `.fsproj`, `global.json`, `Directory.Build.*` |
105
- | Elixir | `mix.exs` |
106
- | Elm | `.elm` files, `elm.json`, `elm-stuff/` |
107
- | Erlang | `rebar.config`, `erlang.mk` |
108
- | Fennel | `.fnl` files |
109
- | Fortran | `.f`, `.f90`, `.f95`, `.f03`, `.f08`, `.f18`, `fpm.toml` |
110
- | Gleam | `.gleam` files, `gleam.toml` |
111
- | Go | `go.mod` |
112
- | Gradle | `build.gradle`, `build.gradle.kts`, `gradle/` |
113
- | Guix shell | `GUIX_ENVIRONMENT` environment |
114
- | Haskell | `.hs`, `.cabal`, `stack.yaml`, `cabal.project` |
115
- | Haxe | `.hx`, `.hxml`, `haxelib.json`, `.haxerc` |
116
- | Helm | `helmfile.yaml`, `Chart.yaml` |
117
- | Java | `.java-version` |
118
- | Julia | `.jl` files, `Project.toml`, `Manifest.toml` |
119
- | Kotlin | `.kt`, `.kts` files |
120
- | Lua | `.lua` files, `stylua.toml`, `.luarc.json`, `lua/` dir |
121
- | Maven | `pom.xml` |
122
- | Meson | `MESON_DEVENV=1` and `MESON_PROJECT_NAME` environment |
123
- | Mojo | `.mojo` files |
124
- | Nim | `.nim`, `.nims`, `.nimble`, `nim.cfg` |
125
- | Nix shell | `IN_NIX_SHELL=pure` or `IN_NIX_SHELL=impure` environment |
126
- | Node.js | `package.json`, `.nvmrc`, `.node-version` |
127
- | OCaml | `.opam`, `.ml`, `.mli`, `dune`, `_opam/`, `esy.lock/` |
128
- | Odin | `.odin` files |
129
- | OPA/Rego | `.rego` files |
130
- | Perl | `.pl`, `.pm`, `Makefile.PL`, `cpanfile`, `META.*` |
131
- | PHP | `composer.json` |
132
- | Pixi | `pixi.toml`, `pixi.lock`, `PIXI_ENVIRONMENT_NAME` environment |
133
- | Pulumi | `Pulumi.yaml`, `Pulumi.yml` |
134
- | PureScript | `.purs` files, `spago.dhall`, `spago.yaml`, `spago.lock` |
135
- | Python | `pyproject.toml`, `requirements.txt`, `setup.py`, `Pipfile` |
136
- | R | `.R`, `.Rmd`, `.Rproj`, `DESCRIPTION`, `.Rproj.user/` |
137
- | Raku | `.raku`, `.rakumod`, `.p6`, `.pm6`, `META6.json` |
138
- | Red | `.red`, `.reds` files |
139
- | Ruby | `Gemfile`, `.ruby-version` |
140
- | Rust | `Cargo.toml` |
141
- | Scala | `.scala`, `.sbt`, `build.sbt`, `.metals/` |
142
- | Solidity | `.sol` files |
143
- | Spack | `SPACK_ENV` environment |
144
- | Swift | `.swift` files, `Package.swift` |
145
- | Terraform | `.tf`, `.tfplan`, `.tfstate`, `.terraform/` |
146
- | Typst | `.typ` files, `template.typ` |
147
- | Vagrant | `Vagrantfile` |
148
- | V | `.v` files, `v.mod`, `vpkg.json` |
149
- | Xmake | `xmake.lua` |
150
- | Zig | `.zig` files, `build.zig` |
151
-
152
- </details>
46
+ The fork's mouse enhancements use [`@xzzpig/pi-mouse-events`](https://www.npmjs.com/package/@xzzpig/pi-mouse-events) rather than installing a competing mouse patch. Install it alongside Starline; without it, these enhancements and pill click-away are disabled. Pi's own component clicks remain available. Version 0.3.0 or newer also shares pointer shapes, uses Pi's native clipboard when available, and routes editor scrolling with Pi's calculated wheel delta; older v2 installations fall back to the previous copy and wheel paths.
47
+
48
+ - Drag to select in the transcript or the draft; double-click keeps paths and kebab-case whole; triple-click takes a line.
49
+ - Clean copies: Starline's rails and rule rows and pi-toolbox frames are dropped before the clipboard.
50
+ - A selection hint says how many characters the copy key will copy.
51
+ - Click a tool, bash box, skill or summary to toggle that component; drag selection and links remain available.
52
+ - Click to move the caret; backspace/delete remove a selected range; the wheel scrolls the draft.
53
+
54
+ ## Screenshots
55
+
56
+ <p align="center">
57
+ <img src="https://raw.githubusercontent.com/Andy8647/pi-starline/main/assets/starline.png" alt="Starline in a pi session: transcript, editor frame and pill bar" width="840">
58
+ </p>
59
+
60
+ A session as a whole: the transcript above, the editor frame in the middle, the bar along the bottom.
153
61
 
154
62
  ## Install
155
63
 
156
- Starline drives Pi 0.84's alternate-screen renderer, so it needs **Pi ≥ 0.84.4**.
157
- If you are on a distribution that bundles an older Pi, upgrade it or wait for it to catch up.
64
+ Needs **Pi 1.x** and a [Nerd Font](https://www.nerdfonts.com/) (or set `icons.mode` to `"ascii"`).
158
65
 
159
66
  ```bash
160
67
  # From npm (local fork @xzzpig/pi-starline)
161
68
  pi install npm:@xzzpig/pi-starline
162
69
 
163
- # From upstream git
70
+ # For fork mouse enhancements and shared pill interaction
71
+ pi install npm:@xzzpig/pi-mouse-events
72
+
73
+ # Or install the separate upstream package from git
164
74
  pi install git:github.com/Andy8647/pi-starline
165
75
  ```
166
76
 
167
- Coming from pi-zentui? Run `mv ~/.pi/agent/zentui.json ~/.pi/agent/starline.json` to carry your config over — Starline does not read the old file automatically. Inside it, rename any `colorMode: "zentui"` value to `colorMode: "themed"`.
77
+ What changed in each version: **[Changelog](https://github.com/Andy8647/pi-starline/blob/main/CHANGELOG.md)**.
168
78
 
169
- What changed in each version, and what you need to do about it: **[Changelog](https://github.com/Andy8647/pi-starline/blob/main/CHANGELOG.md)**.
79
+ ## Configure
170
80
 
171
- ## Config
81
+ `/starline` opens a menu for the everyday settings: colour sources, feature toggles, the order of the bar (`Pills`), and where other extensions' statuses go. The `Pills` tab is the bar itself: one row per segment, its value is the position it holds, and every status an extension published this session gets a row of its own, so one of them can be placed without editing JSON.
172
82
 
173
- Settings live in `~/.pi/agent/starline.json`. The file is optional — anything missing falls back to a default, and unknown keys are ignored at runtime.
83
+ Everything else lives in `~/.pi/agent/starline.json`. The file is optional; missing keys fall back to defaults.
174
84
 
175
85
  ```json
176
86
  {
177
- "footerStyle": "pill",
87
+ "pill": { "segments": ["model", "cwd", "git", "context", "cost"] },
178
88
  "colors": { "gitBranch": "bold purple" },
179
89
  "mouse": { "clickToToggleExpandable": false }
180
90
  }
181
91
  ```
182
92
 
183
- `/starline` opens an interactive menu for the settings worth changing day to day: colour sources, feature toggles, which built-in segments show, and where third-party extension statuses go. `Tab` and `Shift+Tab` move between its five sections.
93
+ ## Docs
184
94
 
185
- **[Full configuration reference →](https://github.com/Andy8647/pi-starline/blob/main/docs/configuration.md)** — every option with its default: the pill footer, the colour palette and its `$name` references, footer format templates, per-segment display options, icon overrides, and editor styling.
186
-
187
- ## Requirements
188
-
189
- - [Pi](https://pi.dev) coding agent 0.84.4 or newer
190
- - A [Nerd Font](https://www.nerdfonts.com/) for icons (or set `icons.mode` to `"ascii"`)
95
+ - [Configuration](https://github.com/Andy8647/pi-starline/blob/main/docs/configuration.md): every option and its default.
96
+ - [What the footer shows](https://github.com/Andy8647/pi-starline/blob/main/docs/segments.md): git status indicators and the detected runtimes.
97
+ - [Clickable pills for other extensions](https://github.com/Andy8647/pi-starline/blob/main/docs/pill-api.md): put your extension's content in a pill.
98
+ - [Clickable pills: design](https://github.com/Andy8647/pi-starline/blob/main/docs/clickable-pills.md): how the pills, bubbles and bridges work.
191
99
 
192
100
  ## Development
193
101
 
194
102
  ```bash
195
103
  npm install
196
- npm run verify
197
- npm run fmt
198
- npm run pack:check
199
- ```
200
-
201
- ### Test in Pi
202
-
203
- The project keeps Pi core packages as peer dependencies for runtime and dev dependencies for
204
- typechecking. To avoid accidentally running the local `node_modules/.bin/pi` shim, the dev scripts use
205
- the globally installed Pi binary by default:
206
-
207
- ```bash
208
- npm run pi:dev
209
- npm run pi:install-local
104
+ npm run verify # lint, typecheck, tests
105
+ npm run pi:dev # run Pi with this checkout and no other extensions
210
106
  ```
211
107
 
212
- Override the binary if your Pi install is somewhere else:
213
-
214
- ```bash
215
- PI_BIN=/path/to/pi npm run pi:dev
216
- ```
108
+ `pi:dev` uses the globally installed Pi; set `PI_BIN=/path/to/pi` to use another.
217
109
 
218
110
  ## Credits
219
111
 
220
- Forked from [pi-zentui](https://github.com/lmilojevicc/pi-zentui) by Luka, whose work is the foundation of this project.
221
-
222
- Inspired by:
223
-
224
- - [Starship](https://starship.rs/) — the minimal, blazing-fast, and infinitely customizable prompt
225
- - [Opencode](https://github.com/opencode-ai/opencode) — terminal-based AI coding assistant
112
+ Started as a fork of [pi-zentui](https://github.com/lmilojevicc/pi-zentui) by Luka. Inspired by [Starship](https://starship.rs/) and [Opencode](https://github.com/opencode-ai/opencode).
226
113
 
227
114
  ## License
228
115
 
229
116
  MIT
117
+
118
+ ## Compatibility: explicit expand targets (fork-only)
119
+
120
+ This fork's click-to-expand resolution (`mouse/tool-box.ts`) checks an
121
+ optional, versioned **explicit expand-target protocol** before its own
122
+ `setExpanded`/hint logic:
123
+
124
+ - Providers publish a resolver on a component instance under
125
+ `Symbol.for("@xzzpig/transcript-expand-target.v1")` with
126
+ `{ version: 1, resolveLocalTarget(localRow, width) }`. The consumer is
127
+ `mouse/explicit-expand-target.ts` (fork-only file).
128
+ - Today the only provider is
129
+ [`@xzzpig/pi-group-collapse`](../pi-group-collapse): its group summaries
130
+ resolve to the independent group object, so clicking a summary toggles
131
+ the group instead of the tool that carries it.
132
+ - Without a provider nothing changes: no published protocol, a wrong
133
+ version, a non-callable resolver, a thrown resolution, or an invalid
134
+ resolved shape all fall through to the existing resolution. Installing
135
+ the provider is never required, and load order in either direction
136
+ works (the resolver is read per click, not cached).
137
+ - Drag selection, double-click word selection, hyperlinks, wheel, and
138
+ overlay behavior are unaffected; the explicit target only answers for
139
+ the specific local rows it owns.
@@ -0,0 +1,5 @@
1
+ import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
+
3
+ declare function export_default(pi: ExtensionAPI): void;
4
+
5
+ export { export_default as default };