diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..93e81659 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.dar binary diff --git a/CLAUDE.md b/CLAUDE.md index 18f058d9..3ebd8569 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -66,6 +66,7 @@ A README may state that a contract exists and link to it. It may not restate it. | Node | 24 | Exact version pinned via root `.nvmrc`; inherits to every Node subproject. Root and the four Node subprojects all declare `engines.node` at `>=24.15.0`, which is what jsdom 30 requires | | Container runtime | Docker | Required by the `@bootnodedev/canton-barebones` LocalNet; nothing in this repository builds an image | | LocalNet | @bootnodedev/canton-barebones | Pinned exact in root devDependencies and reached through `pnpm exec canton-barebones`, so the version is the one in `package.json`. Nothing about its config is committed: `scripts/localnet-config.mjs` scaffolds the gitignored `.canton-localnet/` from the tool's own template and turns on `validators.appUser.ui` and `sv.scanUI`, without which nginx serves no `/api/validator` or `/api/scan`. The Splice checkout and the runtime env land in `.canton-localnet/.generated/` | +| Token registry | @bootnodedev/canton-token-forge | Read-only CIP-56 registry service. A git dependency pinned to `v0.2.0` and reached through `pnpm exec canton-token-forge-registry`. Its `prepare` is what compiles `registry/dist`, so `pnpm-workspace.yaml`'s `allowBuilds` must carry the resolved git specifier or the bin resolves to nothing. `scripts/dev-stack.sh` runs it on 3013, configured entirely from the block `scripts/bootstrap-vesting.mjs` prints | | Commit linting | commitlint + husky | Enforced via root `.husky/commit-msg` | | Lint / format | Biome | One root `biome.json` and a single root `@biomejs/biome`; per-project specifics live in `overrides`. No per-subproject Biome install or config. `pnpm lint` = `biome check --error-on-warnings` (warnings fail); standalone SVG assets are excluded | | Pre-commit | lint-staged | Two passes from `.husky/pre-commit`, because only the first writes: `.lintstagedrc.format.mjs` runs root Biome (`biome check --write`) across `canton-connect/`, `canton-dappbooster/`, `canton-theme/`, `dapp/frontend/` and `scripts/`, then `.lintstagedrc.mjs` runs the read-only gates — the tests, the doc check and the anatomy check — concurrently. One pass would let a reformat land mid-parse | @@ -90,7 +91,7 @@ A README may state that a contract exists and link to it. It may not restate it. | [`canton-dappbooster/`](canton-dappbooster/) | L2 headless UI components for Canton dApps (tsdown-built, zero styling), plus the light/dark/system theme runtime that drives `data-theme`, plus the pure utilities the components are built on, the exact-decimal amount ones included. Styling lives in `canton-theme`. `src/index.ts` is the public API; `src/connect.ts` is the `/connect` sub-path, holding the components that read the wallet session so the main barrel stays free of the Canton SDK. | TypeScript + React 19 + tsdown + vitest + Biome | n/a (library) | | [`canton-theme/`](canton-theme/) | L3 plain-CSS theme for the kit: `--cnc-*` tokens + prestyled defaults, consumed by importing its CSS. | CSS | n/a (library) | -Two things the loop needs are not subprojects but dependencies. wallet-service ships from +Three things the loop needs are not subprojects but dependencies. wallet-service ships from [BootNodeDev/canton-wallet-service](https://github.com/BootNodeDev/canton-wallet-service), arrives as a git dependency pinned to a tag, and `scripts/dev-stack.sh` runs it on port 3010 through `pnpm exec canton-wallet-service`. The LocalNet ships from @@ -98,6 +99,12 @@ port 3010 through `pnpm exec canton-wallet-service`. The LocalNet ships from devDependency whose config `scripts/dev-stack.sh` scaffolds into the gitignored `.canton-localnet/` and drives there over `pnpm exec`. +The token registry ships from +[BootNodeDev/canton-token-forge](https://github.com/BootNodeDev/canton-token-forge), arrives as a +git dependency pinned to a tag, and `scripts/dev-stack.sh` runs it on port 3013 through +`pnpm exec canton-token-forge-registry`. That repository also builds both DARs under `vendor/`; +`vendor/PROVENANCE.md` records which release each came from. + ## Code Style - All source code in English regardless of conversation language. @@ -333,7 +340,13 @@ package, because only `canton-dappbooster` splits markup from styles across a pa - Use **pnpm** only (never npm or yarn). - This is a pnpm workspaces monorepo: one `pnpm install` from the repo root installs and links every package. There is no per-package install step. -- Run a subproject script either by `cd ` or by using `pnpm -C run