@groeponline/pi-wishcraft 0.17.3 → 0.19.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.
- package/AGENTS.md +14 -10
- package/CHANGELOG.md +26 -0
- package/README.md +42 -11
- package/RELEASE.md +46 -21
- package/ROADMAP.md +362 -37
- package/bash-mode/completion.ts +39 -6
- package/bash-mode/editor.ts +43 -2
- package/bash-mode/history.ts +3 -3
- package/bash-mode/shell-session.ts +14 -3
- package/index.ts +3 -3
- package/package.json +19 -6
- package/src/config/presets.ts +101 -19
- package/src/config/segment-options.ts +47 -0
- package/src/config/types.ts +22 -0
- package/src/core/frontmatter.ts +43 -0
- package/src/extension/{bash-mode-actions.ts → commands/bash-mode-actions.ts} +4 -4
- package/src/extension/{commands.ts → commands/commands.ts} +34 -11
- package/src/extension/{queue-commands.ts → commands/queue-commands.ts} +4 -4
- package/src/extension/{vibe-command.ts → commands/vibe-command.ts} +2 -3
- package/src/extension/{constants.ts → core/constants.ts} +2 -5
- package/src/extension/{segment-context.ts → core/segment-context.ts} +8 -11
- package/src/extension/{state.ts → core/state.ts} +14 -14
- package/src/extension/{types.ts → core/types.ts} +9 -9
- package/src/extension/{prompt-history.ts → history/prompt-history.ts} +3 -3
- package/src/extension/{stash-history.ts → history/stash-history.ts} +6 -6
- package/src/extension/hooks/hooks-config.ts +124 -0
- package/src/extension/hooks/hooks-runner.ts +149 -0
- package/src/extension/hooks/index.ts +191 -0
- package/src/extension/hooks/repairs.ts +79 -0
- package/src/extension/{queue-context.ts → queue/queue-context.ts} +1 -1
- package/src/extension/{queue-integration.ts → queue/queue-integration.ts} +12 -9
- package/src/extension/{activate.ts → session/activate.ts} +9 -7
- package/src/extension/{git-invalidation.ts → session/git-invalidation.ts} +3 -3
- package/src/extension/{session-lifecycle.ts → session/session-lifecycle.ts} +25 -22
- package/src/extension/{settings-io.ts → settings/settings-io.ts} +38 -17
- package/src/extension/settings/wishcraft-config.ts +410 -0
- package/src/extension/{shortcuts-config.ts → shortcuts/shortcuts-config.ts} +8 -8
- package/src/extension/{shortcuts-router.ts → shortcuts/shortcuts-router.ts} +10 -13
- package/src/extension/skills/inline-invocation.ts +138 -145
- package/src/extension/skills/skill-manager.ts +490 -0
- package/src/extension/skills/skill-registry.ts +342 -0
- package/src/extension/{custom-editor.ts → ui/custom-editor.ts} +15 -16
- package/src/extension/{layout.ts → ui/layout.ts} +10 -10
- package/src/extension/{menu-views.ts → ui/menu-views.ts} +51 -7
- package/src/extension/{powerline-widgets.ts → ui/powerline-widgets.ts} +6 -3
- package/src/extension/{status-line-renderers.ts → ui/status-line-renderers.ts} +13 -10
- package/src/extension/{welcome-control.ts → welcome/welcome-control.ts} +1 -1
- package/src/extension/{welcome-integration.ts → welcome/welcome-integration.ts} +19 -8
- package/src/git/status.ts +75 -7
- package/src/segments/core.ts +31 -2
- package/src/segments/custom.ts +7 -1
- package/src/segments/registry.ts +34 -3
- package/src/segments/system.ts +67 -32
- package/src/shell/cd-command.ts +2 -2
- package/src/welcome/banner.ts +1 -0
- package/src/welcome/lantern-art.ts +37 -0
- package/src/welcome/lantern.ts +86 -0
- package/src/welcome/renderer.ts +6 -39
- package/src/welcome/types.ts +2 -0
- package/src/extension/skills/ook.md +0 -6
- package/src/extension/skills/test.md +0 -6
- /package/src/extension/{stale-context.ts → session/stale-context.ts} +0 -0
package/AGENTS.md
CHANGED
|
@@ -16,15 +16,19 @@ user customization.
|
|
|
16
16
|
`parseBashModeSettings`, `PowerlineShortcuts`). Keep it a barrel; no
|
|
17
17
|
implementation lives here.
|
|
18
18
|
- `src/` — the proxy-free extension runtime, organized by domain:
|
|
19
|
-
- `src/extension/` —
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
`
|
|
23
|
-
`
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
- `src/extension/` — the extension runtime, organized into domain subfolders:
|
|
20
|
+
`core/` (constants, types, `state.ts` hub, segment-context), `commands/`
|
|
21
|
+
(slash commands, queue commands, bash-mode actions, vibe command),
|
|
22
|
+
`session/` (activation, session lifecycle, git invalidation, stale-context),
|
|
23
|
+
`ui/` (custom editor, layout, menu views, powerline widgets, status-line
|
|
24
|
+
renderers), `history/` (prompt + stash history), `queue/` (queue context +
|
|
25
|
+
integration), `settings/` (settings IO), `shortcuts/` (shortcut config +
|
|
26
|
+
router), `welcome/` (welcome control + integration), `skills/` (inline
|
|
27
|
+
invocation). Leaf modules keep the dependency graph acyclic: shared types
|
|
28
|
+
and constants live in `core/`, queue/welcome callbacks are wired through
|
|
29
|
+
leaves or `RuntimeState`, and `core/state.ts` is the hub that only has
|
|
30
|
+
inbound edges. Verify with `npx madge --circular src index.ts bash-mode
|
|
31
|
+
queue`.
|
|
28
32
|
- `src/config/` — powerline config parsing, presets, types, segment ids/options.
|
|
29
33
|
- `src/segments/` — segment registry and the segment renderers.
|
|
30
34
|
- `src/theme/` — colors, icons, separators, theme loading.
|
|
@@ -48,7 +52,7 @@ user customization.
|
|
|
48
52
|
boundaries (e.g. command handlers out of `commands.ts`, git invalidation
|
|
49
53
|
out of `session-lifecycle.ts`). Prefer many cohesive small modules.
|
|
50
54
|
- **No circular imports.** Domain modules must not import back into
|
|
51
|
-
`src/extension/state.ts` for callbacks; move the callback into a leaf module
|
|
55
|
+
`src/extension/core/state.ts` for callbacks; move the callback into a leaf module
|
|
52
56
|
(e.g. `welcome-control.ts`) or wire it through `RuntimeState`.
|
|
53
57
|
- **Bun/Node-native TS:** `import` paths carry `.ts` extensions
|
|
54
58
|
(`allowImportingTsExtensions`), `node:`-prefixed builtins, `node --test`
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.19.0] - 2026-08-20
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Every merge to `main` cuts an npm release: CI chooses patch/minor/major from commits since the last `v*` tag, pushes `vX.Y.Z`, and publishes with the GroepOnline org secret `NPM_TOKEN`. `[skip release]` opts out.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- Pi catalog contract: `pi-extension` / `wishcraft` keywords, public `publishConfig`, and a `pi.image` banner so the next npm publish lands on [pi.dev/packages](https://pi.dev/packages?name=groeponline) next to the other GroepOnline packages.
|
|
10
|
+
|
|
11
|
+
## [0.18.0] - 2026-08-16
|
|
12
|
+
|
|
13
|
+
Wishcraft v2 (#7).
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **Tab token completion** — bash-mode tab completion for stored tokens/shortcuts.
|
|
17
|
+
- **Preset rework** — own-property preset handling plus reworked presets.
|
|
18
|
+
- **Git commit/ahead-behind extras** — commit count and ahead/behind in the git segment; ANSI/control chars in git commit metadata sanitized.
|
|
19
|
+
- **TPS in/out** — separate tokens-in/tokens-out throughput.
|
|
20
|
+
- **Interactive skill-manager TUI** (`/skills`) — browse, inspect, and manage discovered skills.
|
|
21
|
+
- **Full git polling for compact extras** — reliable commit/ahead-behind data.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- **Extension refactor** — `src/extension` split into domain subfolders (core, commands, session, ui, history, queue, settings, shortcuts, welcome).
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- **Ghost suggestions revalidated after partial completion** — and scheduleGhostUpdate stubbed in tab token-step tests.
|
|
28
|
+
|
|
3
29
|
## [0.17.3] - 2026-08-10
|
|
4
30
|
|
|
5
31
|
### Added
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ This extension translates that philosophy to the [pi](https://github.com/badlogi
|
|
|
13
13
|
4. **Stash & Pivot (Alt+S)**: Park a prompt draft, ask a quick question, pop it back automatically.
|
|
14
14
|
5. **Sticky Shell (`!cmd`)**: A persistent bash runtime under your fingertips.
|
|
15
15
|
|
|
16
|
-
Inspired by [Powerlevel10k](https://github.com/romkatv/powerlevel10k) and [oh-my-pi](https://github.com/can1357/oh-my-pi).
|
|
16
|
+
Inspired by [Powerlevel10k](https://github.com/romkatv/powerlevel10k) and [oh-my-pi](https://github.com/can1357/oh-my-pi). Forked from [`nicobailon/pi-powerline-footer`](https://github.com/nicobailon/pi-powerline-footer), maintained by [GroepOnline](https://github.com/GroepOnline).
|
|
17
17
|
|
|
18
18
|
<img width="1261" height="817" alt="Example powerline UI" src="https://github.com/user-attachments/assets/4cc43320-3fb8-4503-b857-69dffa7028f2" />
|
|
19
19
|
|
|
@@ -54,6 +54,8 @@ Inspired by [Powerlevel10k](https://github.com/romkatv/powerlevel10k) and [oh-my
|
|
|
54
54
|
pi install npm:@groeponline/pi-wishcraft
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
Listed on the [Pi package catalog](https://pi.dev/packages?name=wishcraft) as `@groeponline/pi-wishcraft` next to the other GroepOnline pi packages.
|
|
58
|
+
|
|
57
59
|
### Method 2: One-Liner / Cloud Agent Startup Script (Cursor Cloud, Freebuff, Devcontainers, CI)
|
|
58
60
|
|
|
59
61
|
For ephemeral VMs, cloud agents, or dev environments without manual intervention:
|
|
@@ -125,13 +127,13 @@ You can also set it in the agent settings file (`~/.pi/agent/settings.json` by d
|
|
|
125
127
|
|
|
126
128
|
| Preset | Description |
|
|
127
129
|
|--------|-------------|
|
|
128
|
-
| `default` |
|
|
129
|
-
| `minimal` | Just path (basename), git
|
|
130
|
-
| `compact` | Model, git, cost, context |
|
|
131
|
-
| `full` | Everything
|
|
132
|
-
| `nerd` | Maximum detail for Nerd Font users |
|
|
133
|
-
| `ascii` | Safe for any terminal |
|
|
134
|
-
| `chef` | Fork default: muted colors, slash separators, TPS + open-ports segments |
|
|
130
|
+
| `default` | Balanced daily driver: model, thinking, path (basename), git (branch + dirty + latest commit + ↑/↓ ahead-behind + host icon), session, queue, subagent cost, tokens in/out, cache-hit%, cost, context |
|
|
131
|
+
| `minimal` | Just path (basename), git branch and context% (branch-only polling, no indicators/commit) |
|
|
132
|
+
| `compact` | Model, git (short commit + ahead/behind), queue, cost, context%, session id |
|
|
133
|
+
| `full` | Everything: hostname, model, path (abbreviated), full git incl commit + ↑/↓, totals, context total, elapsed + clock |
|
|
134
|
+
| `nerd` | Maximum detail for Nerd Font users: qualified model, full tokens + cache, commit, totals, seconds clock |
|
|
135
|
+
| `ascii` | Safe for any terminal: branch + short commit + ↑/↓, tokens, cost, context% (no Nerd glyphs) |
|
|
136
|
+
| `chef` | Fork default: muted colors, slash separators, live TPS in/out + open-ports + subagent-cost segments |
|
|
135
137
|
|
|
136
138
|
**Environment:** `POWERLINE_NERD_FONTS=1` to force Nerd Fonts, `=0` for ASCII.
|
|
137
139
|
|
|
@@ -238,7 +240,7 @@ Define your own preset in settings; it merges over built-ins and is selectable v
|
|
|
238
240
|
|
|
239
241
|
`preset: "chef"` is the GroepOnline fork's default look: muted colors (no rainbow), slash separators, and two extra right-side segments:
|
|
240
242
|
|
|
241
|
-
- `tps`: live tokens/sec
|
|
243
|
+
- `tps`: live tokens/sec over a rolling 1-second window (EMA-free, no spikes), now reporting **output and input** rates separately (`⇡out ⇣in`) so you can see generation speed and incoming prompt tokens at a glance. A rocket/bolt icon lights up while streaming (override with env `POWERLINE_TPS`).
|
|
242
244
|
- `open_ports`: count of unique **TCP** listening ports (`ss` → `netstat` → `/proc/net` fallback, dedupes IPv4/IPv6). Set `segmentOptions.openPorts.includeUdp: true` to include noisy UDP (mDNS/DHCP/ephemeral).
|
|
243
245
|
|
|
244
246
|
Interactivity (Pi core renders the footer as static text, so live click is not possible; actions live in commands and a navigable overlay):
|
|
@@ -378,7 +380,7 @@ While bash mode is active:
|
|
|
378
380
|
|
|
379
381
|
- Enter runs the current shell command
|
|
380
382
|
- Right Arrow accepts ghost text into the editor without running it
|
|
381
|
-
- Tab
|
|
383
|
+
- Tab completes the ghost suggestion one token/segment at a time (repeat Tab to step through each further token); once the full suggestion is inserted it clears, otherwise Tab does nothing
|
|
382
384
|
- Up and Down browse matching shell history
|
|
383
385
|
- `escape` exits bash mode and returns to normal prompt mode
|
|
384
386
|
- `ctrl+c` interrupts the active shell job before falling back to normal pi behavior
|
|
@@ -462,6 +464,14 @@ After changing bindings, run `/reload`. Invalid bindings, reserved key conflicts
|
|
|
462
464
|
|
|
463
465
|
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.
|
|
464
466
|
|
|
467
|
+
## Skill manager
|
|
468
|
+
|
|
469
|
+
Browse and insert your installed skills (`SKILL.md` files and `*.md`/`*.txt` prompts) from an interactive TUI overlay:
|
|
470
|
+
|
|
471
|
+
- **`/skills`** — open the skill manager. Filter with plain typing, `↑↓` to move, `enter` to open a skill's detail body, `↑↓` in the detail to scroll, `enter`/`tab` to insert the skill content into your prompt, `esc` to go back/close.
|
|
472
|
+
|
|
473
|
+
The manager reuses the same skill discovery as inline `/command`/`$skill` triggers, so anything you can inline you can also browse and insert manually.
|
|
474
|
+
|
|
465
475
|
## Working Vibes
|
|
466
476
|
|
|
467
477
|
Transform boring "Working..." messages into themed phrases that match your style:
|
|
@@ -583,9 +593,27 @@ Set `git.hostIcon` to replace the branch icon with the origin remote's host logo
|
|
|
583
593
|
|
|
584
594
|
The origin remote is detected (SSH or HTTPS) and mapped to an icon: GitHub (`nf-fa-github`), GitLab (`nf-fa-gitlab`), Bitbucket (`nf-fa-bitbucket`), or a generic git logo (`nf-fa-git`) for any other remote (self-hosted, Gitea, Codeberg, …). Repositories without an origin remote keep the plain branch icon (`nf-fa-code_fork`), 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).
|
|
585
595
|
|
|
596
|
+
## Git status extras (commits, ahead/behind)
|
|
597
|
+
|
|
598
|
+
The git segment can also show the last commit on `HEAD` (short hash + subject) and the upstream ahead/behind counts — handy for a quick "where am I relative to main" GitHub signal:
|
|
599
|
+
|
|
600
|
+
- `git.showCommit` (`true` by default) — appends `#<hash> <subject>` for the latest commit.
|
|
601
|
+
- `git.maxCommitSubjectLength` (`24`) — truncates the commit subject shown.
|
|
602
|
+
- `git.showAheadBehind` (`true` by default) — appends `↑<n> ↓<n>` for commits ahead/behind the configured upstream (hidden when there is no upstream).
|
|
603
|
+
|
|
604
|
+
```json
|
|
605
|
+
{
|
|
606
|
+
"powerline": {
|
|
607
|
+
"git": { "showCommit": true, "showAheadBehind": true, "maxCommitSubjectLength": 24 }
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
The `minimal` and `compact` presets keep these off to stay lean; set `showCommit: true`/`showAheadBehind: true` to enable them.
|
|
613
|
+
|
|
586
614
|
## Segments
|
|
587
615
|
|
|
588
|
-
`model` · `
|
|
616
|
+
`model` · `shell_mode` · `path` · `git` · `subagents` · `queue` · `token_in` · `token_out` · `token_total` · `cost` · `context_pct` · `context_total` · `time_spent` · `time` · `session` · `hostname` · `cache_read` · `cache_write` · `thinking` · `tps` · `open_ports` · `extension_statuses`
|
|
589
617
|
|
|
590
618
|
## Separators
|
|
591
619
|
|
|
@@ -613,6 +641,9 @@ Colors are configurable via pi's theme system. Each preset defines its own color
|
|
|
613
641
|
| `contextError` | `error` | Context usage >90% |
|
|
614
642
|
| `cost` | `text` | Cost display |
|
|
615
643
|
| `tokens` | `muted` | Token counts |
|
|
644
|
+
| `queue` | `accent` | Queue / ideas / blocked counts |
|
|
645
|
+
| `separator` | `dim` | Segment separators and ahead/behind counts |
|
|
646
|
+
| `border` | `borderMuted` | Panel/border chrome |
|
|
616
647
|
|
|
617
648
|
### Custom Theme Override
|
|
618
649
|
|
package/RELEASE.md
CHANGED
|
@@ -1,28 +1,42 @@
|
|
|
1
1
|
# Releasing `@groeponline/pi-wishcraft`
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
`@groeponline/pi-wishcraft` is GroepOnline's powerline status bar and
|
|
4
|
+
interaction layer for the pi coding agent (forked from
|
|
5
|
+
`nicobailon/pi-powerline-footer`, now independently maintained). It ships to
|
|
6
|
+
npm as the scoped package `@groeponline/pi-wishcraft` and installs locally
|
|
7
|
+
from the repo path. This doc records the end-to-end release flow and how to
|
|
8
|
+
verify it.
|
|
6
9
|
|
|
7
10
|
## Identity
|
|
8
11
|
|
|
9
|
-
- **GitHub repo:** `GroepOnline/pi-wishcraft` (
|
|
12
|
+
- **GitHub repo:** `GroepOnline/pi-wishcraft` (forked from `nicobailon/pi-powerline-footer`, independently maintained)
|
|
10
13
|
- **npm package:** `@groeponline/pi-wishcraft` (scoped, `--access public`)
|
|
11
14
|
- **Default branch:** `main`
|
|
12
|
-
- **Local checkout:**
|
|
13
|
-
- **Pi settings (`~/.pi/agent/settings.json`):** packages entry
|
|
15
|
+
- **Local checkout:** `~/Documents/Github/GroepOnline/pi-wishcraft`
|
|
16
|
+
- **Pi settings (`~/.pi/agent/settings.json`):** packages entry `npm:@groeponline/pi-wishcraft` and `"powerline": "chef"`. For active development, temporarily swap the entry to the local checkout path so edits are picked up on `/reload` — no reinstall needed; switch back to the npm name for the installed release.
|
|
14
17
|
|
|
15
18
|
## The release flow
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
**Default:** every merge to `main` is a release. `.github/workflows/release.yml`
|
|
21
|
+
runs `node scripts/release.mjs auto --push` on `main`, then publishes when
|
|
22
|
+
the `v*` tag lands. `auto` reads commit subjects since the last `v*` tag:
|
|
23
|
+
`feat:` → minor, `feat!:` / `BREAKING CHANGE` → major, otherwise patch.
|
|
24
|
+
|
|
25
|
+
The first merge after `v0.18.0` therefore becomes **0.19.0** (the 0.19
|
|
26
|
+
`feat:` commits are already on `main`). Later docs/fix merges become
|
|
27
|
+
`0.19.1`, `0.19.2`, …
|
|
28
|
+
|
|
29
|
+
Put `[skip release]` in the merge-commit subject to opt out. The follow-up
|
|
30
|
+
`chore: release X.Y.Z` commit does not tag again.
|
|
31
|
+
|
|
32
|
+
Manual still works when you want an explicit version before pushing tags:
|
|
19
33
|
|
|
20
34
|
```bash
|
|
21
35
|
# 1. Make sure the working tree is clean and tests/typecheck pass (see Verification)
|
|
22
36
|
npm run typecheck # tsc --noEmit
|
|
23
37
|
npm test # node --experimental-strip-types --test tests/**/*.test.ts
|
|
24
38
|
|
|
25
|
-
# 2. Release (patch | minor | major | explicit 1.2.3)
|
|
39
|
+
# 2. Release (patch | minor | major | auto | explicit 1.2.3)
|
|
26
40
|
npm run release minor # = node scripts/release.mjs minor
|
|
27
41
|
```
|
|
28
42
|
|
|
@@ -34,12 +48,12 @@ npm run release minor # = node scripts/release.mjs minor
|
|
|
34
48
|
4. `git commit -m "chore: release <version>"`
|
|
35
49
|
5. `git tag -a v<version> -m "Release <version>"`
|
|
36
50
|
|
|
37
|
-
|
|
38
|
-
identity (the laptop default
|
|
51
|
+
Locally it does **not** push unless you pass `--push` (CI does). Manual push
|
|
52
|
+
uses the GroepOnline SSH identity (the laptop default SSH key is denied):
|
|
39
53
|
|
|
40
54
|
```bash
|
|
41
55
|
GIT_SSH_COMMAND='ssh -F ~/.ssh/config-groeponline -o IdentityFile=~/.ssh/sheesh' \
|
|
42
|
-
git push origin HEAD
|
|
56
|
+
git push origin HEAD refs/tags/vX.Y.Z
|
|
43
57
|
```
|
|
44
58
|
|
|
45
59
|
- SSH host alias: `github.com-groeponline` (defined in `~/.ssh/config-groeponline` with `IdentityFile ~/.ssh/sheesh`, `IdentitiesOnly yes`).
|
|
@@ -54,12 +68,15 @@ GIT_SSH_COMMAND='ssh -F ~/.ssh/config-groeponline -o IdentityFile=~/.ssh/sheesh'
|
|
|
54
68
|
3. `npm ci --ignore-scripts` (installs devDependencies incl. `typescript`)
|
|
55
69
|
4. `npm run typecheck` (tsc)
|
|
56
70
|
5. `npm test` (node test runner)
|
|
57
|
-
6. `npm
|
|
71
|
+
6. `npm run verify:package` (catalog contract gate — see `scripts/verify-package.mjs`)
|
|
72
|
+
7. `npm publish --access public` with `NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}`
|
|
73
|
+
8. Echoes the Pi catalog URLs (npm, pi.dev detail page, `?name=wishcraft`, `?name=groeponline`) for post-publish confirmation
|
|
58
74
|
|
|
59
|
-
`NPM_TOKEN` is
|
|
60
|
-
`@groeponline` scope).
|
|
61
|
-
|
|
62
|
-
the
|
|
75
|
+
`NPM_TOKEN` is the GroepOnline **org** Actions secret (publish rights to the
|
|
76
|
+
`@groeponline` scope). This repo has no override; Actions inherits the org
|
|
77
|
+
value. It is **not** readable after being set; verify it works by checking
|
|
78
|
+
that the publish step on a real release succeeds and `npm view` resolves the
|
|
79
|
+
new version (see below). The publish step fails closed if the secret is empty.
|
|
63
80
|
|
|
64
81
|
The package has no build step — `*.ts` files are shipped directly (`pi.extensions:
|
|
65
82
|
["./index.ts"]`), and Pi loads them with TypeScript stripping at runtime.
|
|
@@ -97,8 +114,8 @@ A release is "done" when all four hold: local green, tag on origin, CI
|
|
|
97
114
|
publish succeeded. The CI log line `+ @groeponline/pi-wishcraft@<v>`
|
|
98
115
|
and HTTP `200` from `https://registry.npmjs.org/@groeponline%2fpi-wishcraft`
|
|
99
116
|
are the real success signals; retry `npm view` if you see an early 404.
|
|
100
|
-
- **Wrong SSH key = `Permission denied (publickey)
|
|
101
|
-
Always push with `GIT_SSH_COMMAND='ssh -F ~/.ssh/config-groeponline -o IdentityFile=~/.ssh/sheesh'
|
|
117
|
+
- **Wrong SSH key = `Permission denied (publickey)`.**
|
|
118
|
+
Always push with `GIT_SSH_COMMAND='ssh -F ~/.ssh/config-groeponline -o IdentityFile=~/.ssh/sheesh'` (chefadmin-netizen / `~/.ssh/sheesh`).
|
|
102
119
|
- **TPS used to show absurd values** (e.g. `tps:12775`) because `sessionStartTime`
|
|
103
120
|
resets on extension reload while output is cumulative. Fixed in 0.15.0 with a
|
|
104
121
|
rolling token-rate. If TPS ever looks wrong again, check that `tpsSegment` still
|
|
@@ -112,6 +129,14 @@ A release is "done" when all four hold: local green, tag on origin, CI
|
|
|
112
129
|
|
|
113
130
|
## Versioning
|
|
114
131
|
|
|
115
|
-
|
|
116
|
-
|
|
132
|
+
Feature PRs **do not bump** `package.json`. They stay on the last published npm
|
|
133
|
+
version (today: `0.18.0`) and append under `## [Unreleased]` in `CHANGELOG.md`.
|
|
134
|
+
The bump happens on `main` in the release workflow, not in the feature PR.
|
|
135
|
+
|
|
136
|
+
Never bump in the same PR as the feature work. Never tag from a stacked
|
|
137
|
+
feature branch. `0.19.0` exists only after `main` auto-tags (or a manual
|
|
138
|
+
`npm run release` on `main`).
|
|
139
|
+
|
|
140
|
+
- **patch** (`0.18.0 → 0.18.1`): bug fixes, doc only; escape hatch if 0.19 slips.
|
|
141
|
+
- **minor** (`0.18.x → 0.19.0`): new segments/presets, features, additive changes.
|
|
117
142
|
- **major**: breaking changes to settings shape or exported API.
|