From 817b7a64faf182525e5e613272b26273b9403f5b Mon Sep 17 00:00:00 2001 From: Xuepoo Date: Mon, 5 Oct 2026 18:48:30 +0800 Subject: [PATCH 1/2] [CTX-0034] feat(registry): onboard composer, search, history, copy-mode plugins Mirror PR #70 (bar, 3704f10): register composer, search, history, and copy-mode as official plugins. Each entry adds registry/official/.toml plus the plugins/ submodule pin at the verified main HEAD. generated/registry.json rebuilt via just registry-generate (6 -> 10 plugins); the artifact was never hand-edited. --- .gitmodules | 12 ++++ generated/registry.json | 102 ++++++++++++++++++++++++++++++- plugins/composer | 1 + plugins/copy-mode | 1 + plugins/history | 1 + plugins/search | 1 + registry/official/composer.toml | 26 ++++++++ registry/official/copy-mode.toml | 26 ++++++++ registry/official/history.toml | 26 ++++++++ registry/official/search.toml | 26 ++++++++ 10 files changed, 221 insertions(+), 1 deletion(-) create mode 160000 plugins/composer create mode 160000 plugins/copy-mode create mode 160000 plugins/history create mode 160000 plugins/search create mode 100644 registry/official/composer.toml create mode 100644 registry/official/copy-mode.toml create mode 100644 registry/official/history.toml create mode 100644 registry/official/search.toml diff --git a/.gitmodules b/.gitmodules index 6c93223..cd9a7d4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -29,3 +29,15 @@ [submodule "plugins/bar"] path = plugins/bar url = https://github.com/bitty-terminal/bar.git +[submodule "plugins/composer"] + path = plugins/composer + url = https://github.com/bitty-terminal/composer.git +[submodule "plugins/search"] + path = plugins/search + url = https://github.com/bitty-terminal/search.git +[submodule "plugins/history"] + path = plugins/history + url = https://github.com/bitty-terminal/history.git +[submodule "plugins/copy-mode"] + path = plugins/copy-mode + url = https://github.com/bitty-terminal/copy-mode.git diff --git a/generated/registry.json b/generated/registry.json index d061e2d..5d97f32 100644 --- a/generated/registry.json +++ b/generated/registry.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "generated_at": "2026-10-04T16:30:39Z", + "generated_at": "2026-10-05T10:47:43Z", "plugins": [ { "id": "bitty-featured.activity", @@ -58,6 +58,56 @@ }, "manifest_hash": "sha256:947df76140c1d92cc4b880e2cbe421d5bbbdf2df80881d114aac26ddaa8a0929" }, + { + "id": "bitty-terminal.composer", + "name": "Composer", + "kind": "plugin", + "repository": "https://github.com/bitty-terminal/composer", + "official": true, + "signature_status": "unsigned", + "author": "bitty-terminal", + "description": "Editable command-line policy over the public overlay, submit, and editor host APIs: modal buffer, chord routing, bounded paste, and external-editor round trip.", + "tags": [ + "command-line", + "composer", + "editor", + "overlay" + ], + "categories": [ + "productivity" + ], + "license": "MIT", + "compatibility": { + "bitty": ">=0.0.21,<0.1", + "sdk": "^0.1" + }, + "manifest_hash": "sha256:cc2e382018ae383f7765adabcc4b61b26dd490461afcc74add65df2135045c15" + }, + { + "id": "bitty-terminal.copy-mode", + "name": "Copy mode", + "kind": "plugin", + "repository": "https://github.com/bitty-terminal/copy-mode", + "official": true, + "signature_status": "unsigned", + "author": "bitty-terminal", + "description": "Modal visual selection over the public history snapshot API: bounded scoped transcript queries with typed denials, untrusted labels, anchor/cursor selection, and grant-gated yank.", + "tags": [ + "clipboard", + "copy-mode", + "selection", + "transcript" + ], + "categories": [ + "productivity" + ], + "license": "MIT", + "compatibility": { + "bitty": ">=0.5,<1.0", + "sdk": "^0.1" + }, + "manifest_hash": "sha256:907813b7dab2da3548b97aef47f61a2f61e88b474c409476eaaa98d2c05b1e12" + }, { "id": "bitty-terminal.file-manager", "name": "File Manager", @@ -124,6 +174,31 @@ "fetched_at": "2026-09-15T05:41:04Z" } }, + { + "id": "bitty-terminal.history", + "name": "History", + "kind": "plugin", + "repository": "https://github.com/bitty-terminal/history", + "official": true, + "signature_status": "unsigned", + "author": "bitty-terminal", + "description": "Opt-in history reads over the public history-read host APIs: scoped bounded snapshot queries over transcript, commands, and own KV with redacted answers or typed denials.", + "tags": [ + "commands", + "history", + "kv", + "transcript" + ], + "categories": [ + "productivity" + ], + "license": "MIT", + "compatibility": { + "bitty": ">=0.5,<1.0", + "sdk": "^0.1" + }, + "manifest_hash": "sha256:22d978eb84b15c383d7a9720525a9765e6e4eab69cf34576eded771ee17bdbed" + }, { "id": "bitty-terminal.palette", "name": "Palette", @@ -156,6 +231,31 @@ "fetched_at": "2026-09-15T05:41:04Z" } }, + { + "id": "bitty-terminal.search", + "name": "Search", + "kind": "plugin", + "repository": "https://github.com/bitty-terminal/search", + "official": true, + "signature_status": "unsigned", + "author": "bitty-terminal", + "description": "Scrollback search over the public history snapshot API: bounded scoped transcript queries with typed denials, untrusted labels, result navigation, and grant-gated export.", + "tags": [ + "history", + "scrollback", + "search", + "transcript" + ], + "categories": [ + "productivity" + ], + "license": "MIT", + "compatibility": { + "bitty": ">=0.5,<1.0", + "sdk": "^0.1" + }, + "manifest_hash": "sha256:51a57d855dede4012c3e07a2e791a0c2e2a5e193f1efd78aca5feddc1dba5129" + }, { "id": "bitty-terminal.wheel", "name": "Wheel", diff --git a/plugins/composer b/plugins/composer new file mode 160000 index 0000000..d7d39df --- /dev/null +++ b/plugins/composer @@ -0,0 +1 @@ +Subproject commit d7d39dfd05e316737a418df6f161e959cc728ca4 diff --git a/plugins/copy-mode b/plugins/copy-mode new file mode 160000 index 0000000..7410a3e --- /dev/null +++ b/plugins/copy-mode @@ -0,0 +1 @@ +Subproject commit 7410a3ee820873576f9201c84239969eb591990f diff --git a/plugins/history b/plugins/history new file mode 160000 index 0000000..aea5ce3 --- /dev/null +++ b/plugins/history @@ -0,0 +1 @@ +Subproject commit aea5ce384bd216f5a4fa01c8cb79b8facc6d9dfc diff --git a/plugins/search b/plugins/search new file mode 160000 index 0000000..e65bf83 --- /dev/null +++ b/plugins/search @@ -0,0 +1 @@ +Subproject commit e65bf83b8ebadd63493546a6f8df5e6f7b6ec33d diff --git a/registry/official/composer.toml b/registry/official/composer.toml new file mode 100644 index 0000000..30ffcb9 --- /dev/null +++ b/registry/official/composer.toml @@ -0,0 +1,26 @@ +# Official registry entry: Composer. +# +# Hand-maintained identity data only. Derived metadata (version, stars, dates, +# downloads) is intentionally absent; `just registry-sync` mirrors the plugin's +# bitty-plugin.toml into the optional `metadata` object of the generated index. +# +# Integrity (Phase 1, advisory): `manifest_hash` is the sha256 digest (H-A: raw +# bytes) of the owning repository's `bitty-plugin.toml` at the pinned submodule +# revision recorded by `git ls-tree HEAD plugins/composer`. This is a digest +# over fetched transport bytes (H-A), not semantic canonical hashing (H-B). +# Refresh it when the pin moves (see README "Registry model" refresh procedure). + +id = "bitty-terminal.composer" +name = "Composer" +repository = "https://github.com/bitty-terminal/composer" +kind = "plugin" +author = "bitty-terminal" +description = "Editable command-line policy over the public overlay, submit, and editor host APIs: modal buffer, chord routing, bounded paste, and external-editor round trip." +tags = ["composer", "command-line", "overlay", "editor"] +categories = ["productivity"] +license = "MIT" +manifest_hash = "sha256:cc2e382018ae383f7765adabcc4b61b26dd490461afcc74add65df2135045c15" + +[compatibility] +bitty = ">=0.0.21,<0.1" +sdk = "^0.1" diff --git a/registry/official/copy-mode.toml b/registry/official/copy-mode.toml new file mode 100644 index 0000000..c838606 --- /dev/null +++ b/registry/official/copy-mode.toml @@ -0,0 +1,26 @@ +# Official registry entry: Copy mode. +# +# Hand-maintained identity data only. Derived metadata (version, stars, dates, +# downloads) is intentionally absent; `just registry-sync` mirrors the plugin's +# bitty-plugin.toml into the optional `metadata` object of the generated index. +# +# Integrity (Phase 1, advisory): `manifest_hash` is the sha256 digest (H-A: raw +# bytes) of the owning repository's `bitty-plugin.toml` at the pinned submodule +# revision recorded by `git ls-tree HEAD plugins/copy-mode`. This is a digest +# over fetched transport bytes (H-A), not semantic canonical hashing (H-B). +# Refresh it when the pin moves (see README "Registry model" refresh procedure). + +id = "bitty-terminal.copy-mode" +name = "Copy mode" +repository = "https://github.com/bitty-terminal/copy-mode" +kind = "plugin" +author = "bitty-terminal" +description = "Modal visual selection over the public history snapshot API: bounded scoped transcript queries with typed denials, untrusted labels, anchor/cursor selection, and grant-gated yank." +tags = ["copy-mode", "selection", "clipboard", "transcript"] +categories = ["productivity"] +license = "MIT" +manifest_hash = "sha256:907813b7dab2da3548b97aef47f61a2f61e88b474c409476eaaa98d2c05b1e12" + +[compatibility] +bitty = ">=0.5,<1.0" +sdk = "^0.1" diff --git a/registry/official/history.toml b/registry/official/history.toml new file mode 100644 index 0000000..4da3689 --- /dev/null +++ b/registry/official/history.toml @@ -0,0 +1,26 @@ +# Official registry entry: History. +# +# Hand-maintained identity data only. Derived metadata (version, stars, dates, +# downloads) is intentionally absent; `just registry-sync` mirrors the plugin's +# bitty-plugin.toml into the optional `metadata` object of the generated index. +# +# Integrity (Phase 1, advisory): `manifest_hash` is the sha256 digest (H-A: raw +# bytes) of the owning repository's `bitty-plugin.toml` at the pinned submodule +# revision recorded by `git ls-tree HEAD plugins/history`. This is a digest +# over fetched transport bytes (H-A), not semantic canonical hashing (H-B). +# Refresh it when the pin moves (see README "Registry model" refresh procedure). + +id = "bitty-terminal.history" +name = "History" +repository = "https://github.com/bitty-terminal/history" +kind = "plugin" +author = "bitty-terminal" +description = "Opt-in history reads over the public history-read host APIs: scoped bounded snapshot queries over transcript, commands, and own KV with redacted answers or typed denials." +tags = ["history", "transcript", "commands", "kv"] +categories = ["productivity"] +license = "MIT" +manifest_hash = "sha256:22d978eb84b15c383d7a9720525a9765e6e4eab69cf34576eded771ee17bdbed" + +[compatibility] +bitty = ">=0.5,<1.0" +sdk = "^0.1" diff --git a/registry/official/search.toml b/registry/official/search.toml new file mode 100644 index 0000000..e00d80f --- /dev/null +++ b/registry/official/search.toml @@ -0,0 +1,26 @@ +# Official registry entry: Search. +# +# Hand-maintained identity data only. Derived metadata (version, stars, dates, +# downloads) is intentionally absent; `just registry-sync` mirrors the plugin's +# bitty-plugin.toml into the optional `metadata` object of the generated index. +# +# Integrity (Phase 1, advisory): `manifest_hash` is the sha256 digest (H-A: raw +# bytes) of the owning repository's `bitty-plugin.toml` at the pinned submodule +# revision recorded by `git ls-tree HEAD plugins/search`. This is a digest +# over fetched transport bytes (H-A), not semantic canonical hashing (H-B). +# Refresh it when the pin moves (see README "Registry model" refresh procedure). + +id = "bitty-terminal.search" +name = "Search" +repository = "https://github.com/bitty-terminal/search" +kind = "plugin" +author = "bitty-terminal" +description = "Scrollback search over the public history snapshot API: bounded scoped transcript queries with typed denials, untrusted labels, result navigation, and grant-gated export." +tags = ["search", "scrollback", "transcript", "history"] +categories = ["productivity"] +license = "MIT" +manifest_hash = "sha256:51a57d855dede4012c3e07a2e791a0c2e2a5e193f1efd78aca5feddc1dba5129" + +[compatibility] +bitty = ">=0.5,<1.0" +sdk = "^0.1" From 0bc79d517ebbcc7031bc6886a3fa06885e430cf9 Mon Sep 17 00:00:00 2001 From: Xuepoo Date: Mon, 5 Oct 2026 23:29:51 +0800 Subject: [PATCH 2/2] [CTX-0034] chore(registry): advance composer/search/history/copy-mode 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). --- plugins/composer | 2 +- plugins/copy-mode | 2 +- plugins/history | 2 +- plugins/search | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/composer b/plugins/composer index d7d39df..2762e34 160000 --- a/plugins/composer +++ b/plugins/composer @@ -1 +1 @@ -Subproject commit d7d39dfd05e316737a418df6f161e959cc728ca4 +Subproject commit 2762e340920545a96e534f5cd4c35dd84011b3a4 diff --git a/plugins/copy-mode b/plugins/copy-mode index 7410a3e..edeae30 160000 --- a/plugins/copy-mode +++ b/plugins/copy-mode @@ -1 +1 @@ -Subproject commit 7410a3ee820873576f9201c84239969eb591990f +Subproject commit edeae30e628b545912cad176e571fe2028c01fb1 diff --git a/plugins/history b/plugins/history index aea5ce3..c839e97 160000 --- a/plugins/history +++ b/plugins/history @@ -1 +1 @@ -Subproject commit aea5ce384bd216f5a4fa01c8cb79b8facc6d9dfc +Subproject commit c839e97fa49a5e9e4d3f51033516f7eddb22ae5e diff --git a/plugins/search b/plugins/search index e65bf83..a363188 160000 --- a/plugins/search +++ b/plugins/search @@ -1 +1 @@ -Subproject commit e65bf83b8ebadd63493546a6f8df5e6f7b6ec33d +Subproject commit a3631882238159f2fbce2f3832e497535bb45371