Skip to content

feat(registry): onboard official composer, search, history, copy-mode plugins - #73

Merged
Xuepoo merged 2 commits into
mainfrom
ctx-0034/feat-onboard-composer-search-history-copymode
Oct 5, 2026
Merged

Xuepoo merged 2 commits into
mainfrom
ctx-0034/feat-onboard-composer-search-history-copymode

Conversation

@Xuepoo

@Xuepoo Xuepoo commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Priority: P1 | Area: area:plugins | Labels: feat,P1,area:plugins | Milestone: v0.1.0 | Task: CTX-0034

Onboards four official plugins, mirroring merged PR #70 (bar onboarding,
commit 3704f10): bitty-terminal.composer, bitty-terminal.search,
bitty-terminal.history, bitty-terminal.copy-mode.

One PR (not four): every entry regenerates the same
generated/registry.json artifact, so four parallel PRs would conflict on
every rebase. The file pattern matches #70 exactly:
registry/official/<name>.toml + plugins/<name> submodule gitlink +
generated/registry.json rebuilt via just registry-generate
(6 -> 10 plugins, never hand-edited).

Pins (each verified == git ls-remote https://github.com/bitty-terminal/<name>.git HEAD;
default branch main via gh api repos/bitty-terminal/<name>):

  • composer d7d39dfd05e316737a418df6f161e959cc728ca4
  • search e65bf83b8ebadd63493546a6f8df5e6f7b6ec33d
  • history aea5ce384bd216f5a4fa01c8cb79b8facc6d9dfc
  • copy-mode 7410a3ee820873576f9201c84239969eb591990f

Manifest verification (local submodule checkout at pin is byte-identical to
the hashed raw bytes; id matches bitty-terminal.<name> in all four):

  • composer: sha256:cc2e382018ae383f7765adabcc4b61b26dd490461afcc74add65df2135045c15
  • search: sha256:51a57d855dede4012c3e07a2e791a0c2e2a5e193f1efd78aca5feddc1dba5129
  • history: sha256:22d978eb84b15c383d7a9720525a9765e6e4eab69cf34576eded771ee17bdbed
  • copy-mode: sha256:907813b7dab2da3548b97aef47f61a2f61e88b474c409476eaaa98d2c05b1e12

Method check: the same H-A procedure (sha256 over raw bitty-plugin.toml
bytes at pin) reproduces the recorded wheel (991579d3...) and bar
(947df761...) hashes exactly.

Compat follow-up (plugin repos NOT changed by this PR): search, history, and
copy-mode declare bitty >=0.5,<1.0, which excludes the dev host 0.0.21.
Composer already admits it (>=0.0.21,<0.1). Registry entries copy the
manifest ranges verbatim per the #70 precedent; any range change belongs to
the owning plugin repositories under their own review.

Evidence: just check green (exit 0) in a clean worktree from origin/main;
registry-validate 0 errors with submodules initialized (warnings only, same
classes as pre-existing entries); registry-check reports the index up to
date (10 plugins). Do NOT merge: awaiting independent review + CI per the
delivery lifecycle.

…de plugins

Mirror PR #70 (bar, 3704f10): register composer, search,

history, and copy-mode as official plugins.

Each entry adds registry/official/<name>.toml plus the

plugins/<name> submodule pin at the verified main HEAD.

generated/registry.json rebuilt via just registry-generate

(6 -> 10 plugins); the artifact was never hand-edited.
@Xuepoo Xuepoo added this to the v0.1.0 milestone Oct 5, 2026
@Xuepoo Xuepoo added feat Feature P1 Priority: high area:plugins labels Oct 5, 2026
Xuepoo added a commit to bitty-terminal/search that referenced this pull request Oct 5, 2026
The plugins CI job (bitty-terminal/bitty-plugins#73) checks out only
bitty-plugins with no bitty Core alongside, so live-host evidence tests
that resolve Core via BITTY_WORKSPACE/relative fallback failed with
ENOENT (11 fails in search).

Fail-soft: detect Core presence (working-tree files + fresh origin/main
via read-only git plumbing, never a hardcoded path) and skip the two
live-identity describes with an explicit console notice, keeping ALL
mock-level assertions running. With BITTY_WORKSPACE pointed at a real
workspace the live tests execute (proves the skip never masks a real
run).

Evidence: BITTY_WORKSPACE=/tmp/nonexistent-bitty-workspace bun test ->
40 pass, 11 skip; BITTY_WORKSPACE=$BITTY_WORKSPACE bun test -> 51 pass.
just check green both modes.
Xuepoo added a commit to bitty-terminal/copy-mode that referenced this pull request Oct 5, 2026
The plugins CI job (bitty-terminal/bitty-plugins#73) has no bitty Core
alongside. Every parity pin below runs hermetic against the SDK mock
(live behavior cited, never read from disk), but add an explicit
fail-soft probe resolving Core via BITTY_WORKSPACE/relative fallback
(never a hardcoded path): skip with a printed notice when absent,
execute when present. ALL mock-pinned assertions keep running.

Evidence: BITTY_WORKSPACE=/tmp/nonexistent-bitty-workspace bun test ->
46 pass, 1 skip; BITTY_WORKSPACE=$BITTY_WORKSPACE bun test -> 47 pass.
just check green both modes.
Xuepoo added a commit to bitty-terminal/composer that referenced this pull request Oct 5, 2026
The plugins CI job (bitty-terminal/bitty-plugins#73) has no bitty Core
alongside. Every parity row runs hermetic against the SDK mock (Core
cited at bitty@1df0459e, never read from disk), but add an explicit
fail-soft probe resolving Core via BITTY_WORKSPACE/relative fallback
(never a hardcoded path): skip with a printed notice when absent,
execute when present. ALL mock assertions keep running.

Evidence: BITTY_WORKSPACE=/tmp/nonexistent-bitty-workspace bun test ->
52 pass, 1 skip; BITTY_WORKSPACE=$BITTY_WORKSPACE bun test -> 53 pass.
just check green both modes.
Xuepoo added a commit to bitty-terminal/history that referenced this pull request Oct 5, 2026
The plugins CI job (bitty-terminal/bitty-plugins#73) has no bitty Core
alongside. This suite replays committed fixtures
(tests/fixtures/live-host-matrix.json) so it already runs hermetic, but
add an explicit fail-soft probe resolving Core via BITTY_WORKSPACE/
relative fallback (never a hardcoded path): skip with a printed notice
when absent, execute when present. ALL fixture-pinned assertions keep
running in both modes.

Evidence: BITTY_WORKSPACE=/tmp/nonexistent-bitty-workspace bun test ->
42 pass, 1 skip; BITTY_WORKSPACE=$BITTY_WORKSPACE bun test -> 43 pass.
just check green both modes.
… pins to fail-soft heads

Advance the four plugin gitlinks to the just-merged fail-soft heads:
- search e65bf83 -> a363188
- history aea5ce3 -> c839e97
- copy-mode 7410a3e -> edeae30
- composer d7d39df -> 2762e34

Each new pin verified == git ls-remote HEAD. bitty-plugin.toml
bytes identical at old/new pins (sha256 matches registry
manifest_hash), so no manifest_hash recompute. generated/registry.json
rebuilt via just registry-generate (no-op, 10 plugins); just check and
registry-validate green (0 errors).
@Xuepoo

Xuepoo commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Pin advance pushed as 0bc79d5 (4 gitlinks only, no merge).

Verified each new pin == git ls-remote https://github.com/bitty-terminal/<name>.git HEAD:

  • search: a3631882238159f2fbce2f3832e497535bb45371
  • history: c839e97fa49a5e9e4d3f51033516f7eddb22ae5e
  • copy-mode: edeae30e628b545912cad176e571fe2028c01fb1
  • composer: 2762e340920545a96e534f5cd4c35dd84011b3a4

Each is the fail-soft live-Core probe commit (fix(tests), #10 / composer #11).

manifest_hash: NOT recomputed — verified bitty-plugin.toml bytes identical at old/new pins (local submodule sha256 + raw.githubusercontent cross-check):

  • composer cc2e382018ae383f7765adabcc4b61b26dd490461afcc74add65df2135045c15
  • search 51a57d855dede4012c3e07a2e791a0c2e2a5e193f1efd78aca5feddc1dba5129
  • history 22d978eb84b15c383d7a9720525a9765e6e4eab69cf34576eded771ee17bdbed
  • copy-mode 907813b7dab2da3548b97aef47f61a2f61e88b474c409476eaaa98d2c05b1e12
    All match registry/official/*.toml.

Checks in worktree .worktrees/ctx-0034-feat-onboard-composer-search-history-copymode (branch based on origin/main 49f2f3a):

  • just registry-generate: up to date (10 plugins), no diff
  • just check: green (fmt, lint, type-check, 161 tests, registry-validate 0 errors, registry-check, app-build)
  • just registry-validate: 0 errors (32 warnings: unsigned/signature + compat-range notices; pin-reachability skipped — pre-existing readSubmodulePins uses git ls-tree HEAD plugins without trailing slash, so it sees only the tree entry)

Not merging per instruction; ready for review.

@Xuepoo
Xuepoo merged commit 6b27679 into main Oct 5, 2026
6 checks passed
@Xuepoo
Xuepoo deleted the ctx-0034/feat-onboard-composer-search-history-copymode branch October 5, 2026 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:plugins feat Feature P1 Priority: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant