one-code-extension 0.1.1 → 0.1.3

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 CHANGED
@@ -29,11 +29,17 @@ cd your-project && one-code
29
29
  Or via Homebrew (also installs Node for you):
30
30
 
31
31
  ```bash
32
- brew install isuruwijesiri/one-code/one-code
32
+ brew install isurumaduranga/one-ai/one-code
33
+ # or tap once, then it's just: brew tap isurumaduranga/one-ai && brew install one-code
33
34
  ```
34
35
 
35
36
  > The npm route needs **Node 22.19+**.
36
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
+
37
43
  ## Two-minute quickstart — free, no card
38
44
 
39
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, unreviewed)
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. A Homebrew tap (`brew install IsuruMaduranga/one-code/one-code`)
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).
@@ -74,9 +79,29 @@ app. `one-code --version` reports the app version with the pinned pi in
74
79
  parentheses. Both paths live-verified (drift warning and update notice each
75
80
  fired against a real TUI).
76
81
 
82
+ **Versioning is lockstep.** Both packages share one version per release, even
83
+ when only one changed, and the app pins the extension at exactly its own
84
+ version — so one git tag (`vX.Y.Z`) names the whole release, GitHub Releases
85
+ map one-to-one, and a pin/version mismatch is an instantly visible release
86
+ mistake. Adopted at 0.1.2 (the app skipped 0.1.1 to converge); the cost is an
87
+ occasional republish of an unchanged package. The Homebrew tap is
88
+ `IsuruMaduranga/homebrew-one-ai` — named for the brand umbrella so future
89
+ tools join the same tap — giving `brew install isurumaduranga/one-ai/one-code`
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.
98
+
77
99
  Registering the package also seeds first-run settings (`theme: "one-code"`,
78
- `quietStartup: true`), which doubles as skipping pi's stock first-time theme
79
- picker — the branded first run. Three hardcoded `~/.pi` paths found during
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
80
105
  this work (quiet-startup detection, the skills listing, the Anthropic-OAuth
81
106
  check) now resolve through pi's `getAgentDir()`, which honours the isolation
82
107
  env var.
@@ -114,6 +139,10 @@ Per project directive, prefer ecosystem packages over new code.
114
139
 
115
140
  ## Publish readiness (Phase 7)
116
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
+
117
146
  `npm pack` produces a 69 kB / 47-file tarball: `extensions/`, `agents/`, `types/`,
118
147
  README, LICENSE and `docs/decisions.md`. Every path in the `pi.extensions`
119
148
  manifest is checked to be present in the tarball.
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-unreviewed)** *(unreviewed)* — npm `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); Homebrew tap delivers the app.
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.1",
3
+ "version": "0.1.3",
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",