Skip to content

Commit e941df1

Browse files
committed
feat: support standard CKB registry wallets
1 parent 18b236f commit e941df1

17 files changed

Lines changed: 658 additions & 214 deletions

‎CHANGELOG.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,33 @@
22

33
## Unreleased
44

5+
- Redesign the Registry submission and package-maintenance surfaces around
6+
contextual, task-first workflows: remove the public `Manage` tab and
7+
redundant form controls, link maintenance from package details, guide first
8+
publication through one progressive wallet action, show the publication
9+
orientation only once per browser, replace the CCC post-connect surface with
10+
a compact Registry-owned wallet chooser that has no unrelated `Manage`
11+
action, reveal yank fields only for the yank task, and close write commands
12+
over verify, dry-run, and publish. Registry route and workflow state changes
13+
now use reduced-motion-aware transitions instead of abrupt swaps. Browse and
14+
Submit share one DOM-persistent Registry header through navigation, avoiding
15+
replacement flicker while retaining the active locale; wallet connection no
16+
longer depends on completing the package coordinate first, and the primary
17+
authorisation controls use larger, shorter-reach interaction targets.
18+
Browse uses a no-flash loading state, URL-backed server search, and API
19+
pagination; bundled data appears only as an explicitly labelled error
20+
fallback. Static and live package details share one responsive view with
21+
localized statuses and copyable audit values. Publisher authorisation now
22+
accepts both JoyID
23+
(`joyid_ckb`) and standard CKB secp256k1 (`ckb_secp256k1`) principals through
24+
the CCC CKB-signer boundary on mainnet or testnet. The frontend never accepts
25+
mnemonic words; traditional recovery phrases remain inside the wallet. CLI
26+
auth commands use `--wallet-signature`, with `--joyid-signature` retained as
27+
a visible compatibility alias, and the API adds the corresponding typed
28+
principal migration and signature verification. The compact chooser now
29+
preserves the complete official twelve-wallet CKB directory: compatible CCC
30+
signers connect directly, while the remaining wallets use the same verified
31+
external-signature handoff instead of disappearing from the UI.
532
- Deploy the public Registry production slice at
633
`api.registry.cellscript.dev` and `registry.cellscript.dev`: Postgres 17 is
734
the authoritative write store, the Node 22 adapter persists source snapshots

‎README.md‎

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -790,31 +790,38 @@ Non-CellScript artifact profiles still fail closed.
790790

791791
**Public registry boundary / fail-closed:**
792792

793-
- Public registry publishing is designed around JoyID-rooted publisher
794-
identity: CCC is the connection layer, JoyID is the accepted publisher root,
795-
and delegated publisher credentials are stored in the OS keychain for daily
796-
`cellc publish`; see
793+
- Public registry publishing uses typed wallet-rooted publisher identities:
794+
CCC is the browser connection layer, `joyid_ckb` accepts JoyID passkeys, and
795+
`ckb_secp256k1` accepts standard CKB wallets that expose a compressed public
796+
key and recoverable CKB message signature. Delegated publisher credentials
797+
are stored in the OS keychain for daily `cellc publish`; see
797798
[`docs/CELLSCRIPT_REGISTRY_PRODUCTION_BOUNDARY_ADR.md`](docs/CELLSCRIPT_REGISTRY_PRODUCTION_BOUNDARY_ADR.md)
798-
- `cellc auth capability create --principal-id <principal_id> --scope
799+
- `cellc auth capability create --principal-type <principal_type>
800+
--principal-id <principal_id> --scope
799801
publish:<namespace>/<package> --expires 90d --json >
800802
capability-payload.json` creates the local P-256 capability key when
801803
`--capability-pubkey` is not supplied, stores the private key in the OS
802-
keychain, and prints the JoyID-bound authorisation payload. The
803-
`principal_id` is the normalized JoyID/CKB identity binding derived by the
804-
CCC-backed JoyID submit flow, not the display address.
805-
After the same payload is signed through JoyID/CCC, `cellc auth capability
806-
submit --payload capability-payload.json --joyid-signature
807-
joyid-signature.json` registers the delegated key with the write API.
804+
keychain, and prints the wallet-bound authorisation payload. The
805+
`principal_id` is the normalized binding derived from the connected signer,
806+
not the display address. After the same payload is signed through CCC,
807+
`cellc auth capability submit --payload capability-payload.json
808+
--wallet-signature wallet-signature.json` registers the delegated key with
809+
the write API.
808810
`cellc auth namespace claim --namespace <namespace> --payload
809-
capability-payload.json --joyid-signature joyid-signature.json` then
811+
capability-payload.json --wallet-signature wallet-signature.json` then
810812
establishes the required namespace ownership. Bare
811813
`cellc publish` then signs the concrete publish payload and submits the
812814
source snapshot to the public registry.
815+
- The Registry chooser includes Neuron, JoyID, imToken, CKBull, SafePal,
816+
Ledger, imKey, OneKey, UTXO Global, Rei Wallet, Gate, and QuantumPurse.
817+
Compatible CCC signers connect directly; the remaining directory entries use
818+
the same verified `wallet-signature.json` handoff without exposing mnemonic
819+
words to the site.
813820
- `cellc auth capability revoke --principal-id <principal_id>
814821
--capability-key-id <capability_key_id> --json > revoke-payload.json`
815-
generates a JoyID-bound revocation challenge; after signing that challenge,
822+
generates a wallet-bound revocation challenge; after signing that challenge,
816823
`cellc auth capability revoke --payload revoke-payload.json
817-
--joyid-signature joyid-signature.json` revokes the delegated key without
824+
--wallet-signature wallet-signature.json` revokes the delegated key without
818825
creating a separate registry account.
819826
- CI can avoid interactive keychain access by using
820827
`cellc publish --print-payload --json`, signing the `canonical_payload`
@@ -828,7 +835,7 @@ Non-CellScript artifact profiles still fail closed.
828835
verification; default search/list visibility begins at `verified_build`, and
829836
direct URLs preserve admitted `source_published` history. The same typed app
830837
retains a Cloudflare Worker/Hyperdrive/R2 deployment option. Both paths share
831-
JoyID capability authorisation, namespace ACLs, quota hooks, ordered evidence
838+
typed wallet capability authorisation, namespace ACLs, quota hooks, ordered evidence
832839
promotion, and audit events.
833840
- Public version responses bind a content-addressed source snapshot URL. The
834841
read-only service exposes `/source-snapshots/*` independently of Postgres and
@@ -900,7 +907,7 @@ Non-CellScript artifact profiles still fail closed.
900907
| `cellc repl` | Start the interactive REPL |
901908
| `cellc run` | Run ELF entrypoints via VM runner or simulator; `--json` includes cycles for VM execution and `cycles: null` for simulation |
902909
| `cellc publish` / `cellc publish --offline` / `cellc registry add` / `cellc registry edit --yank` | Public publish plus explicit local/offline registry metadata flow; public registry policy makes bare `cellc publish` an authenticated registry write, with Git/static metadata retained for audit and fallback |
903-
| `cellc auth capability create/submit/revoke` / public registry write API / non-CellScript artifact install | JoyID-rooted publication policy and future-facing artifact profiles; fail-closed where unsupported |
910+
| `cellc auth capability create/submit/revoke` / public registry write API / non-CellScript artifact install | Typed wallet-rooted publication policy and future-facing artifact profiles; fail-closed where unsupported |
904911

905912
### CLI Options
906913

‎docs/CELLSCRIPT_GATE_POLICY.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ The CLI coverage includes the explicit first-publish admission sequence:
6666
`cellc auth capability submit`, `cellc auth namespace claim`, then
6767
`cellc publish`. Capability registration does not silently claim a namespace;
6868
the claim response must be `active` before the write API accepts a version.
69+
Registry API tests pin both accepted publisher roots: JoyID signatures under
70+
`principal_type = joyid_ckb` and recoverable CKB message signatures under
71+
`principal_type = ckb_secp256k1`. CLI fixtures use the generic
72+
`--wallet-signature` surface; the former `--joyid-signature` spelling remains a
73+
visible compatibility alias and does not define a second request shape.
6974
Explicit `--allow-unverified` and `--allow-quarantined` install choices are
7075
persisted per dependency so the lock refresh and later builds exercise the
7176
same auditable resolver policy.

0 commit comments

Comments
 (0)