one-code-extension 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/docs/decisions/distribution.md +25 -6
- package/docs/decisions/tui.md +15 -0
- package/docs/decisions.md +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,6 +35,11 @@ brew install isurumaduranga/one-ai/one-code
|
|
|
35
35
|
|
|
36
36
|
> The npm route needs **Node 22.19+**.
|
|
37
37
|
|
|
38
|
+
> Tip: the app opens in a **full-screen TUI** (alt-screen, restores your
|
|
39
|
+
> terminal on exit) by default. On your own pi that's opt-in — set
|
|
40
|
+
> `"tuiMode": "fullscreen"` in `~/.pi/agent/settings.json`, or launch with
|
|
41
|
+
> `pi --tui-mode fullscreen`.
|
|
42
|
+
|
|
38
43
|
## Two-minute quickstart — free, no card
|
|
39
44
|
|
|
40
45
|
You need one model-provider key. Two providers hand out **free frontier-adjacent
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Part of [Decisions](../decisions.md).
|
|
4
4
|
|
|
5
|
-
## Two artifacts from one codebase: the app and the package (2026-08-10
|
|
5
|
+
## Two artifacts from one codebase: the app and the package (2026-08-10)
|
|
6
6
|
|
|
7
|
-
One Code ships two npm packages built from this single repo
|
|
7
|
+
One Code ships two npm packages built from this single repo — **both live on
|
|
8
|
+
npm since 2026-08-10 at 0.1.2** (GitHub release `v0.1.2`):
|
|
8
9
|
|
|
9
10
|
| npm name | What it is | pi relationship |
|
|
10
11
|
|---|---|---|
|
|
@@ -21,7 +22,11 @@ blocks every punctuation variant — discovered only at publish time; a 404 on
|
|
|
21
22
|
`npm view` does not mean a name is claimable). The *command* the app installs
|
|
22
23
|
is still `one-code`; the extension package stays unscoped so
|
|
23
24
|
`pi install npm:one-code-extension` reads clean, and is attached to the org
|
|
24
|
-
via team access rather than a scope.
|
|
25
|
+
via team access rather than a scope. The npm org (`one-ai`) and the planned
|
|
26
|
+
GitHub org (`oneai-hq` — `one-ai` was taken on GitHub) deliberately differ:
|
|
27
|
+
registry namespaces are independent, install commands only ever cite the npm
|
|
28
|
+
scope, and `repository` fields point at URLs, so the mismatch costs nothing
|
|
29
|
+
beyond a profile cross-link. A Homebrew tap (`brew install IsuruMaduranga/one-code/one-code`)
|
|
25
30
|
delivers the same app and solves the Node ≥22.19 requirement via
|
|
26
31
|
`depends_on "node"`; a single compiled binary is not viable (pi-tui ships
|
|
27
32
|
per-platform native modules).
|
|
@@ -82,11 +87,21 @@ mistake. Adopted at 0.1.2 (the app skipped 0.1.1 to converge); the cost is an
|
|
|
82
87
|
occasional republish of an unchanged package. The Homebrew tap is
|
|
83
88
|
`IsuruMaduranga/homebrew-one-ai` — named for the brand umbrella so future
|
|
84
89
|
tools join the same tap — giving `brew install isurumaduranga/one-ai/one-code`
|
|
85
|
-
(two-segment installs are not brew grammar; verified empirically).
|
|
90
|
+
(two-segment installs are not brew grammar; verified empirically). Two
|
|
91
|
+
release-process facts learned shipping 0.1.2: the formula's `url` + `sha256`
|
|
92
|
+
must be bumped by hand each release until a release workflow automates it,
|
|
93
|
+
and Homebrew's `std_npm_args` passes npm's supply-chain guard
|
|
94
|
+
`--min-release-age=1`, so **the brew install of a release only works ~24h
|
|
95
|
+
after its npm publish** — day-one users get "No matching version found …
|
|
96
|
+
with a date before <now−1d>"; either schedule the formula bump a day after
|
|
97
|
+
the npm publish or accept the gap.
|
|
86
98
|
|
|
87
99
|
Registering the package also seeds first-run settings (`theme: "one-code"`,
|
|
88
|
-
`quietStartup: true
|
|
89
|
-
|
|
100
|
+
`quietStartup: true`, and — from 0.1.3 — `tuiMode: "fullscreen"`, the
|
|
101
|
+
alt-screen One Code look per the fullscreen decision in `tui.md`), which
|
|
102
|
+
doubles as skipping pi's stock first-time theme picker — the branded first
|
|
103
|
+
run. Seeded only when no settings file exists, so a user's later changes
|
|
104
|
+
stick. Three hardcoded `~/.pi` paths found during
|
|
90
105
|
this work (quiet-startup detection, the skills listing, the Anthropic-OAuth
|
|
91
106
|
check) now resolve through pi's `getAgentDir()`, which honours the isolation
|
|
92
107
|
env var.
|
|
@@ -124,6 +139,10 @@ Per project directive, prefer ecosystem packages over new code.
|
|
|
124
139
|
|
|
125
140
|
## Publish readiness (Phase 7)
|
|
126
141
|
|
|
142
|
+
*(Historical — the release shipped 2026-08-10 as described in the two-artifact
|
|
143
|
+
entry above. The tarball/install checks below were the single-package-era
|
|
144
|
+
method and remain the template for pre-publish verification.)*
|
|
145
|
+
|
|
127
146
|
`npm pack` produces a 69 kB / 47-file tarball: `extensions/`, `agents/`, `types/`,
|
|
128
147
|
README, LICENSE and `docs/decisions.md`. Every path in the `pi.extensions`
|
|
129
148
|
manifest is checked to be present in the tarball.
|
package/docs/decisions/tui.md
CHANGED
|
@@ -154,6 +154,21 @@ no extension-facing hook. A One Code extension therefore cannot set or flip it.
|
|
|
154
154
|
terminal scrollback after quit — that is the whole point of the clean exit, and
|
|
155
155
|
`pi --resume` covers re-entry.
|
|
156
156
|
|
|
157
|
+
**Correction (2026-08-10, found live):** the setting alone does NOT give the
|
|
158
|
+
clean exit on pi 0.84.1. The alt screen engages (verified via tmux
|
|
159
|
+
`alternate_on`), but pi's quit path *deliberately* transfers the transcript to
|
|
160
|
+
the main buffer: `stopInteractiveTui()` switches back to the regular renderer
|
|
161
|
+
and repaints everything (`switchTuiMode("regular")` + `renderNow()`) before
|
|
162
|
+
stopping — `TuiAltScreen`'s `preserveScreen` clean exit exists but is
|
|
163
|
+
unreachable from settings. The bundled app therefore overrides
|
|
164
|
+
`InteractiveMode.prototype.stopInteractiveTui` in `app/bin.mjs` (exact-pinned
|
|
165
|
+
pi makes the touched internals stable; falls back to stock behaviour on any
|
|
166
|
+
surprise) to stop the alt screen with `preserveScreen: true` — verified live:
|
|
167
|
+
exit leaves only the resume hint, like Claude Code. Package-variant users
|
|
168
|
+
still get the transcript-dump exit until the upstream exit-preserve option
|
|
169
|
+
lands (upstream_prs #8). The mid-session `/settings` renderer switch is
|
|
170
|
+
untouched.
|
|
171
|
+
|
|
157
172
|
**Trap this surfaced (finding §10.16):** the setting key was `uiMode` in the
|
|
158
173
|
pinned reference clone (v0.83.0) but was renamed `tuiMode` in installed pi
|
|
159
174
|
(v0.84.1); a `uiMode` key is silently ignored on 0.84.1. Clone re-pinned to
|
package/docs/decisions.md
CHANGED
|
@@ -11,7 +11,7 @@ entry. (Companion docs: [`findings.md`](findings.md) for how pi behaves,
|
|
|
11
11
|
|
|
12
12
|
Full context: [`decisions/distribution.md`](decisions/distribution.md).
|
|
13
13
|
|
|
14
|
-
- **[Two artifacts from one codebase: the app and the package](decisions/distribution.md#two-artifacts-from-one-codebase-the-app-and-the-package-2026-08-10
|
|
14
|
+
- **[Two artifacts from one codebase: the app and the package](decisions/distribution.md#two-artifacts-from-one-codebase-the-app-and-the-package-2026-08-10)** — npm `@one-ai/one-code` (bundled app: pinned pi, `~/.one-code` isolation via `PI_CODING_AGENT_DIR`, package-registration load shape, stdout rebranding, own update check) + npm `one-code-extension` (peer-dep pi package with a runtime tested-range warning); lockstep versions from 0.1.2; Homebrew tap `isurumaduranga/one-ai` delivers the app (brew's `--min-release-age=1` makes day-one brew installs fail by design).
|
|
15
15
|
- **[Distribution: pi package, not a wrapper binary](decisions/distribution.md#distribution-pi-package-not-a-wrapper-binary)** — *(partially superseded by the two-artifact model)* ship as an installable pi package because pi's rebranding resolves from pi's own `package.json`; a dependent can't rebrand it, and a package keeps upstream upgrades a version bump away.
|
|
16
16
|
- **[Community packages: adopted where they work](decisions/distribution.md#community-packages-adopted-where-they-work)** — prefer ecosystem packages, but trial first: only `pi-ask-user` survived; `pi-subagents` was rejected (children SIGKILLed ~29 ms after spawn here).
|
|
17
17
|
- **[Publish readiness (Phase 7)](decisions/distribution.md#publish-readiness-phase-7)** — what's done and what remains before `npm publish` (metadata, tarball, install-path verification).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one-code-extension",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "One Code as a pi package \u2014 the Claude Code experience on your own pi install: ported system prompt, Claude-Code-format permissions, .claude/ compatibility, ToolSearch-style deferred tools, and system-reminder steering. For the bundled app, install `@one-ai/one-code` instead.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi",
|