Skip to content

Commit f1a72cf

Browse files
authored
Merge pull request #7 from BootNodeDev/release/v3.3.1
Release v3.3.1 — Canton docs: lead with dev-stack.sh, fix landing URL
2 parents a8dae5b + 0f65b20 commit f1a72cf

6 files changed

Lines changed: 66 additions & 24 deletions

File tree

docs/architecture/data-flow.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,4 @@ Operations (disk): CloneRepo → Install → FileCleanup → PostInstall
8383

8484
Once operations begin, `CloneRepo` calls `beginInstall` (see [abstractions → installGuard](./abstractions.md#interrupt-safety-installguard)) and `FileCleanup` calls `completeInstall` on success, so a Ctrl+C mid-scaffold removes the partial directory while a finished project is left intact.
8585

86-
Components are presentation-only — they call operations via `useEffect` and render status. Components receive `MultiSelectItem[]` for feature selection (TUI concern), then derive the kept-feature `FeatureName[]` via `resolveModeFeatures(stack, mode, selected)` before calling operations — so `full`/`default` resolve correctly even though the multiselect is skipped. The `OptionalPackages` multiselect pre-checks `default: true` features and enforces feature dependencies live via `applyFeatureToggle`. `PostInstall` renders stack-specific instructions; the EVM branch shows the subgraph warning when applicable, the Canton branch always shows the `canton:up`/`app:dev` commands and — when the `carpincho` feature is in the resolved set — the Carpincho extension build/load instructions.
86+
Components are presentation-only — they call operations via `useEffect` and render status. Components receive `MultiSelectItem[]` for feature selection (TUI concern), then derive the kept-feature `FeatureName[]` via `resolveModeFeatures(stack, mode, selected)` before calling operations — so `full`/`default` resolve correctly even though the multiselect is skipped. The `OptionalPackages` multiselect pre-checks `default: true` features and enforces feature dependencies live via `applyFeatureToggle`. `PostInstall` renders stack-specific instructions; the EVM branch shows the subgraph warning when applicable, the Canton branch leads with the one-command `./scripts/dev-stack.sh up` bring-up and keeps the manual `canton:up`/`app:dev` commands as a fallback — adding the Carpincho extension build/load instructions (handled by `dev-stack.sh up`, with `carpincho:build:extension` as the manual fallback) when the `carpincho` feature is in the resolved set.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dappbooster",
3-
"version": "3.3.0",
3+
"version": "3.3.1",
44
"description": "Agent-friendly dAppBooster installer that scaffolds Web3 dApps via TUI or non-interactive CLI/CI.",
55
"keywords": [
66
"dappbooster",

readme.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ agents.
77

88
- **EVM** — the original [dAppBooster](https://dappbooster.dev/) for Ethereum, Polygon, Base, and
99
other EVM chains.
10-
- **Canton**[dAppBooster for Canton](https://dappbooster-canton-landing.vercel.app/): Daml
10+
- **Canton**[dAppBooster for Canton](https://www.dappbooster.cc/): Daml
1111
ledger, Carpincho wallet, off-chain services.
1212

1313
## Choose your stack
@@ -150,10 +150,19 @@ the "Removing a feature" guide in the generated `dapp/frontend/README.md` — th
150150
deletes demo source itself.
151151

152152
The Canton scaffold uses **npm** (a property of the generated project, not this installer). After
153-
install: review `canton-barebones/.env`, run `npm run canton:up` to start the local Canton stack,
154-
and `npm run app:dev` to run the dapp frontend. When `carpincho` is included, build the extension
155-
with `npm run carpincho:build:extension` and load `carpincho-wallet/dist-extension` as an unpacked
156-
browser extension.
153+
install, review `canton-barebones/.env`, then bring the whole local stack up with a single command:
154+
`./scripts/dev-stack.sh up` (Docker must be running). It starts the Canton + Postgres +
155+
wallet-service containers, runs the health checks, builds and deploys the quickstart-counter DAR,
156+
launches the dapp frontend (`:3012`), and — when `carpincho` is included — builds the Carpincho
157+
extension and copies it to `~/Desktop/dist-extension` (load it via `chrome://extensions`, Developer
158+
mode → Load unpacked). Run `./scripts/dev-stack.sh` with no arguments for an interactive arrow-key
159+
menu; `mock-up` brings up a Docker-free mocked wallet-service + Carpincho web app, and `down` tears
160+
everything back down.
161+
162+
Prefer to run the pieces by hand? The underlying npm scripts still work: `npm run canton:up` to
163+
start the local Canton stack and `npm run app:dev` for the dapp frontend, and when `carpincho` is
164+
included build the extension with `npm run carpincho:build:extension` and load
165+
`carpincho-wallet/dist-extension` as an unpacked browser extension.
157166

158167
**What gets stripped:**
159168

@@ -176,10 +185,10 @@ browser extension.
176185
"path": "/absolute/path/to/my_canton_dapp",
177186
"postInstall": [
178187
"Review canton-barebones/.env (created from the example)",
179-
"Run npm run canton:up to start the local Canton stack",
180-
"Run npm run app:dev to start the dapp frontend",
181-
"Build the Carpincho extension with npm run carpincho:build:extension",
182-
"Load carpincho-wallet/dist-extension as an unpacked browser extension"
188+
"Run ./scripts/dev-stack.sh up to bring up the whole local stack in one command — Docker must be running (run ./scripts/dev-stack.sh with no arguments for an interactive menu)",
189+
"Fallback — start each piece manually: npm run canton:up for the Canton stack, then npm run app:dev for the dapp frontend",
190+
"./scripts/dev-stack.sh up also builds the Carpincho extension and copies it to ~/Desktop/dist-extension (load it via chrome://extensions, Developer mode -> Load unpacked)",
191+
"Fallback — build it manually with npm run carpincho:build:extension, then load carpincho-wallet/dist-extension as an unpacked browser extension"
183192
]
184193
}
185194
```

source/__tests__/nonInteractive.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,24 @@ describe('nonInteractive — canton execution', () => {
295295
const postInstall = output.postInstall as string[]
296296
expect(postInstall.some((msg) => msg.includes('canton:up'))).toBe(true)
297297
})
298+
299+
it('canton post-install leads with the dev-stack.sh one-command bring-up before the manual canton:up fallback', async () => {
300+
await runNonInteractive({
301+
stack: 'canton',
302+
name: 'my_app',
303+
mode: 'custom',
304+
features: 'llm',
305+
})
306+
307+
const output = getLastJsonOutput()
308+
const postInstall = output.postInstall as string[]
309+
const devStackIndex = postInstall.findIndex((msg) => msg.includes('dev-stack.sh'))
310+
const cantonUpIndex = postInstall.findIndex((msg) => msg.includes('canton:up'))
311+
312+
expect(devStackIndex).toBeGreaterThanOrEqual(0)
313+
expect(cantonUpIndex).toBeGreaterThanOrEqual(0)
314+
expect(devStackIndex).toBeLessThan(cantonUpIndex)
315+
})
298316
})
299317

300318
describe('nonInteractive — default mode', () => {

source/components/steps/PostInstall.tsx

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,10 @@ const CantonPostInstallMessage: FC<{
106106
created from the example — review it.
107107
</Text>
108108
<Text>
109-
3- Start the local Canton stack with <Text color={'gray'}>npm run canton:up</Text>
110-
</Text>
111-
<Text>
112-
4- In a separate terminal, run the dapp frontend:{' '}
113-
<Text color={'gray'}>npm run app:dev</Text>
109+
3- Bring up the whole local stack with one command:{' '}
110+
<Text color={'gray'}>./scripts/dev-stack.sh up</Text> (Docker must be running). Run{' '}
111+
<Text color={'gray'}>./scripts/dev-stack.sh</Text> with no arguments for an interactive
112+
menu.
114113
</Text>
115114
</Box>
116115
{carpinchoEnabled && (
@@ -123,13 +122,29 @@ const CantonPostInstallMessage: FC<{
123122
padding={1}
124123
>
125124
<Text color={'yellow'}>
126-
{figures.info} <Text bold>Carpincho Wallet</Text>: build it with{' '}
127-
<Text color={'gray'}>npm run carpincho:build:extension</Text> and load{' '}
128-
<Text color={'gray'}>carpincho-wallet/dist-extension</Text> as an unpacked browser
129-
extension {figures.info}
125+
{figures.info} <Text bold>Carpincho Wallet</Text>:{' '}
126+
<Text color={'gray'}>./scripts/dev-stack.sh up</Text> also builds the extension and
127+
copies it to <Text color={'gray'}>~/Desktop/dist-extension</Text> — load it via{' '}
128+
<Text color={'gray'}>chrome://extensions</Text> (Developer mode, Load unpacked){' '}
129+
{figures.info}
130130
</Text>
131131
</Box>
132132
)}
133+
<Box flexDirection={'column'}>
134+
<Text color={'whiteBright'}>Prefer to run the pieces by hand?</Text>
135+
<Text>
136+
- Start the Canton stack with <Text color={'gray'}>npm run canton:up</Text>, then run the
137+
dapp frontend with <Text color={'gray'}>npm run app:dev</Text>.
138+
</Text>
139+
{carpinchoEnabled && (
140+
<Text>
141+
- Build the Carpincho extension with{' '}
142+
<Text color={'gray'}>npm run carpincho:build:extension</Text> and load{' '}
143+
<Text color={'gray'}>carpincho-wallet/dist-extension</Text> as an unpacked browser
144+
extension.
145+
</Text>
146+
)}
147+
</Box>
133148
<Text>See the Canton stack README inside the project for full instructions.</Text>
134149
</Box>
135150
)

source/constants/config.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ export const stackDefinitions: Record<Stack, StackConfig> = {
111111
removeAfterClone: [],
112112
postInstall: [
113113
'Review canton-barebones/.env (created from the example)',
114-
'Run npm run canton:up to start the local Canton stack',
115-
'Run npm run app:dev to start the dapp frontend',
114+
'Run ./scripts/dev-stack.sh up to bring up the whole local stack in one command — Docker must be running (run ./scripts/dev-stack.sh with no arguments for an interactive menu)',
115+
'Fallback — start each piece manually: npm run canton:up for the Canton stack, then npm run app:dev for the dapp frontend',
116116
],
117117
envFiles: [
118118
{ from: 'canton-barebones/.env.example', to: 'canton-barebones/.env' },
@@ -145,8 +145,8 @@ export const stackDefinitions: Record<Stack, StackConfig> = {
145145
default: true,
146146
paths: ['carpincho-wallet'],
147147
postInstall: [
148-
'Build the Carpincho extension with npm run carpincho:build:extension',
149-
'Load carpincho-wallet/dist-extension as an unpacked browser extension',
148+
'./scripts/dev-stack.sh up also builds the Carpincho extension and copies it to ~/Desktop/dist-extension (load it via chrome://extensions, Developer mode -> Load unpacked)',
149+
'Fallback — build it manually with npm run carpincho:build:extension, then load carpincho-wallet/dist-extension as an unpacked browser extension',
150150
],
151151
},
152152
llm: {

0 commit comments

Comments
 (0)