Skip to content

feat(setup): end-to-end interactive onboarding wizard + Docker E2E CI#81

Merged
frankhli843 merged 2 commits into
mainfrom
feat/setup-wizard-end-to-end
May 2, 2026
Merged

feat(setup): end-to-end interactive onboarding wizard + Docker E2E CI#81
frankhli843 merged 2 commits into
mainfrom
feat/setup-wizard-end-to-end

Conversation

@frankhli843

Copy link
Copy Markdown

Summary

  • Add a guided setup wizard that walks new users through six key decisions: agent name, container preference, backend (local/gemini/vertex), model selection, thinking level, and bootstrap profile (general/coding/minimal)
  • New onboarding-wizard.ts with pure prompt helpers and WizardIO abstraction for testability
  • New bootstrap-profiles.ts with profile catalog (general/coding/minimal) and workspace file writing
  • Refactored setup-gemma.ts to use wizard choices as orchestration input
  • New CLI flags: --agent-name, --setup-mode, --model, --thinking, --bootstrap, --dry-run
  • Docker E2E onboarding tests covering 5 scenarios with mocked credentials (local-minimal, local-general, gemini, vertex, main-agent)
  • New CI workflow .github/workflows/onboard-gemma-e2e.yml as required job on PR paths touching setup files
  • Updated site setup docs with interactive wizard walkthrough, transcript example, config locations, and expanded CLI flag table
  • 46 new tests: 28 onboarding-wizard, 11 bootstrap-profiles, 9 register.setup

Test plan

  • pnpm check:changed passes (1607 tests green, only pre-existing firecrawl typebox failure)
  • Targeted setup tests: 37 unit + 9 CLI = 46/46 pass
  • pnpm build succeeds
  • CI (Workflow Sanity + CI checks) should pass
  • Docker E2E: pnpm test:e2e:onboard-gemma (requires Docker)

@frankhli843 frankhli843 force-pushed the feat/setup-wizard-end-to-end branch from 25667d6 to 06da4ef Compare May 2, 2026 22:07
Test User and others added 2 commits May 2, 2026 18:17
Add a guided setup wizard that walks new users through agent name,
container preference, backend (local/gemini/vertex), model selection,
thinking level, and bootstrap profile (general/coding/minimal).

- New onboarding-wizard.ts with prompt helpers + non-interactive support
- New bootstrap-profiles.ts with profile catalog and file writing
- Refactored setup-gemma.ts to use wizard choices as orchestration input
- CLI flags: --agent-name, --setup-mode, --model, --thinking, --bootstrap, --dry-run
- Docker E2E tests covering 5 onboarding scenarios (mocked credentials)
- CI workflow (.github/workflows/onboard-gemma-e2e.yml) as required job
- Updated site setup docs with wizard walkthrough and transcript example
- 46 new tests (28 onboarding-wizard + 11 bootstrap-profiles + 9 register.setup)
@frankhli843 frankhli843 force-pushed the feat/setup-wizard-end-to-end branch from 06da4ef to 7a47e6f Compare May 2, 2026 22:18
@frankhli843 frankhli843 merged commit 0abd38c into main May 2, 2026
108 of 110 checks passed
@frankhli843 frankhli843 deleted the feat/setup-wizard-end-to-end branch May 2, 2026 22:35
frankhli843 added a commit that referenced this pull request May 19, 2026
* fix(gateway): clear CLI bindings on session reset

* fix(gateway): preserve spawned sessions in configured lists

* fix(channels): clear canonical stale routes

* fix(telegram): preserve forum topic origin targets

* fix(agents): skip fallback for session coordination errors

* fix(agents): persist subagent registry before returning accepted (openclaw#83132) (openclaw#83238)

* fix(memory): catch up stale sessions on startup (openclaw#82341)

* fix(memory): preserve qmd lexical search for hyphenated queries (openclaw#81423)

* fix(anthropic): preserve Claude image capability (openclaw#83756)

* fix(agents): exclude tool result details from guard budget (openclaw#75525)

* fix(provider): use Together video API endpoint

* fix(telegram): preserve implicit default account (openclaw#82794)

* fix(gateway): allow trusted-proxy local-direct password fallback (openclaw#82953)

* fix(discord): return subagent thread delivery origin

* fix: add missing prerequisites for upstream-ported fixes

Add SessionWriteLockTimeoutError class and hasSessionWriteLockTimeout
helper needed by the ported fix(agents) skip-fallback commit. Remove
route property references from session-delivery.ts that don't exist in
gemmaclaw's SessionEntry type. Add authorizePasswordAuth helper that was
present in upstream but missing from gemmaclaw's auth.ts.

* fix: remove route assertions incompatible with gemmaclaw SessionEntry

Remove test assertions using .route property that exists in upstream's
SessionEntry type but not in gemmaclaw's, restoring typecheck green.

* fix(memory-core): yield event loop during fallback vector search (openclaw#81172) (openclaw#83758)

Summary:
- The branch changes memory-core fallback vector search to scan chunks in 256-row rowid batches with `setImmediate` yields, updates regression tests, and adds a changelog entry.
- Reproducibility: yes. from source and supplied live output. Current main synchronously scans fallback vector ...  and the PR body shows the before/after heartbeat behavior through the actual `searchVector` fallback path.

Automerge notes:
- PR branch already contained follow-up commit before automerge: test(memory-core): add boundary, parity, and concurrent-insert covera…
- PR branch already contained follow-up commit before automerge: fix(memory-core): yield event loop during fallback vector search (#81…

Validation:
- ClawSweeper review passed for head 0ede3d7.
- Required merge gates passed before the squash merge.

Prepared head SHA: 0ede3d7
Review: openclaw#83758 (comment)

Co-authored-by: NW <nitinwadhawan66@gmail.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>

* fix(subagents): collect unresolved announce batches (openclaw#83701)

Summary:
- The PR changes collect-mode follow-up queue routing so unresolved-origin items can batch with a single resolved route and later compatible items can resume batching after a true cross-channel drain.
- Reproducibility: yes. at source level: current main treats unkeyed-plus-same-keyed queue items as cross-chan ... failing path is directly visible in `src/utils/queue-helpers.ts` and `src/auto-reply/reply/queue/drain.ts`.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Merge remote-tracking branch 'origin/main' into maint-83701-20260518

Validation:
- ClawSweeper review passed for head e6ad029.
- Required merge gates passed before the squash merge.

Prepared head SHA: e6ad029
Review: openclaw#83701 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>

* fix(config): accept gateway remote port

* fix: restore Array<{}> closing bracket in manager-search.ts

Cherry-pick 68b3729 accidentally dropped the '>' from '}>',
producing a syntax error. Restore '}>;' as it was in origin/main.

* fix: add remotePort to GatewayRemoteConfig and GatewayRemoteConfigSchema

* fix(agents): prioritize manual session turns (openclaw#82765)

* fix(agents): prioritize manual session turns

* docs: update changelog for session priority

---------

Co-authored-by: Galin Iliev <Galin.Iliev@microsoft.com>

* revert: fix(agents): prioritize manual session turns (openclaw#82765) - upstream deps not in gemmaclaw

* fix: resolve undefined variable errors in cherry-picked extension code

* fix(tui): preserve draft while chat is busy

* fix(tui): add pendingChatRunId to TuiStateAccess for cherry-picked tui commit

* fix(memory-wiki): make wiki_lint tool output path-safe (openclaw#83687)

* fix(ui): render session-scoped tool events (openclaw#83734)

* chore: regenerate base config schema after upstream cherry-picks

* fix(agents): add persistSubagentRunsToDiskOrThrow to subagent-registry test mock

New export added to subagent-registry-state.ts was missing from the
vi.mock definition, causing all tests in the suite to skip and the
module to fail to load.

* fix(telegram): wire buildTelegramInboundOriginTarget into session context

Cherry-pick 675e053 added the helper and the test assertion but did not
update bot-message-context.session.ts to use it. OriginatingTo now
correctly includes :topic:<id> for forum groups.

* fix(memory): correct session path format in startup-catchup test

sessionPathForFile returns sessions/<basename> (no agent dir), but the
cherry-picked test used sessions/main/<basename>. The clean-file test
always failed because the path mismatch made every file look unindexed.

* fix(together): update video generation test URL from v1 to v2

The source uses TOGETHER_VIDEO_BASE_URL = https://api.together.xyz/v2
but the cherry-picked test still asserted the old v1 URL.

---------

Co-authored-by: nitinjwadhawan <nitinwadhawan66@gmail.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Galin Iliev <iliev@galcho.com>
Co-authored-by: Galin Iliev <Galin.Iliev@microsoft.com>
Co-authored-by: Harry Xie <harryhsieh963@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant