Skip to content

feat: wizard-first onboarding, JSON config, and dashboard redesign#23

Merged
maxigimenez merged 8 commits into
mainfrom
feat/wizard-dashboard-v3
May 24, 2026
Merged

feat: wizard-first onboarding, JSON config, and dashboard redesign#23
maxigimenez merged 8 commits into
mainfrom
feat/wizard-dashboard-v3

Conversation

@maxigimenez
Copy link
Copy Markdown
Owner

Summary

  • orchestrator: replace YAML/registry config model with ~/.parallax/config.json; add config-store.ts (atomic reads/writes) and config-validation.ts; rewrite loadConfig(); add CRUD REST endpoints for projects, agents, Slack, and secrets
  • cli: remove register/unregister/pending; add parallax init (interactive @clack/prompts wizard), parallax open (browser launcher), and parallax status (reads running.json + DB without requiring the orchestrator)
  • ui: three-column layout (icon nav | list panel | main content); four nav sections — Tasks, Projects, Integrations, Secrets; new components: NavBar, ListPanel, ProjectEditor, AddProjectWizard, IntegrationDetail, SecretsEditor, AddSecretModal; delete SettingsViewer and TaskSidebar
  • marketing: rewrite HeroSection and ConfigSection to tell the wizard + dashboard story; delete stale FlowSection (fictional commands) and InlineCopyCode
  • docs: update CLAUDE.md, README, and all docs pages to reflect the new flow; delete stale .codex skills

Commits

Commit Scope
feat(orchestrator) JSON config-store, config-validation, CRUD API, YAML removal
feat(cli) init wizard, open, status; remove register/pending
feat(ui) three-column dashboard redesign
feat(marketing) wizard + dashboard story
docs all docs and CLAUDE.md updated

Test plan

  • pnpm build — clean across all 6 packages
  • pnpm test — 178 tests pass (cli + common + marketing + orchestrator + slack + ui)
  • pnpm parallax init — wizard runs, writes ~/.parallax/config.json
  • pnpm parallax start — orchestrator starts, reads config
  • pnpm parallax status — shows projects + task counts
  • pnpm parallax open — opens dashboard in browser
  • Dashboard: Projects tab → Add project wizard → list updates
  • Dashboard: Integrations tab → connect Slack → config_updated emitted
  • Dashboard: Secrets tab → add/delete secret → persisted in config.json

🤖 Generated with Claude Code

maxigimenez and others added 5 commits May 22, 2026 15:26
Introduce config-store.ts (atomic read/write of ~/.parallax/config.json)
and config-validation.ts (structural validators reused by loadConfig and
API write endpoints). Rewrite loadConfig() to read from the JSON store,
inject secrets into process.env, and remove all YAML parsing. Add CRUD
API endpoints for projects, agents, slack, and secrets; wire saveConfig
into ApiServerDependencies. Remove parallax.example.yml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…r/pending

Replace the YAML-based register/unregister/pending commands with:
- parallax init: interactive @clack/prompts wizard that writes config.json
- parallax open: reads running.json and opens the dashboard in the browser
- parallax status: reads running.json + DB directly, no orchestrator required

Remove parallax register, parallax unregister, and parallax pending. Update
usage.ts, args.ts, and types.ts accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rets

Replace the two-tab sidebar (Tasks / Config) with a three-column layout:
icon nav (52px) | list panel (280px) | main content. Add four nav sections:
Tasks, Projects, Integrations, Secrets.

New components: NavBar, ListPanel, ProjectEditor, AddProjectWizard,
IntegrationDetail, SecretsEditor, AddSecretModal. Delete SettingsViewer and
TaskSidebar (replaced by ListPanel + NavBar). Extend useParallax with CRUD
mutations for projects, slack, and secrets. Add routes for /projects,
/integrations, and /secrets.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hboard flow

Replace the YAML/parallax register story with the wizard + dashboard story.
HeroSection: codeblock shows npm i → parallax init → parallax start; Register
tile renamed to Configure with Sparkles icon. ConfigSection: new heading "From
wizard to dashboard.", TerminalBlock shows realistic parallax init transcript,
two callout cards (Guided setup / Dashboard-managed). Delete stale
FlowSection (fictional commands) and InlineCopyCode (no consumers). Update
tests to assert the new copy and the absence of YAML references.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…d model

Update CLAUDE.md, README.md, docs/getting-started.md, docs/cli-reference.md,
docs/configuration.md, and docs/README.md to reflect the new config flow
(~/.parallax/config.json, parallax init, parallax status, parallax open).
Remove references to parallax.yml, parallax register, and parallax pending.
Delete stale .codex skills that referenced the old file-based config model.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
parallax Skipped Skipped May 24, 2026 9:30am

@JamesAIBot
Copy link
Copy Markdown

There are some issues running the custom ports:

⏳ Initializing Parallax...
📁 Data Dir: /Users/cerebro/.parallax

| Starting Parallax...
Error: Parallax UI failed to become ready at http://localhost:8082: fetch failed

Startup diagnostics:
- orchestrator PID: 6509
- ui PID: 6516
- process alive at failure: yes
- stdout log: /Users/cerebro/.parallax/orchestrator.stdout.log
- stderr log: /Users/cerebro/.parallax/orchestrator.stderr.log
- ui stdout log: /Users/cerebro/.parallax/ui.stdout.log
- ui stderr log: /Users/cerebro/.parallax/ui.stderr.log

Recent stderr:
(no output yet)

Recent stdout:
(no output yet)

Recent UI stderr:
    at async file:///Users/cerebro/projects/parallax-cli/node_modules/.pnpm/vite@5.4.19_@types+node@22.16.5_lightningcss@1.31.1/node_modules/vite/dist/node/chunks/dep-C6uTJdX2.js:49801:28
    at async requestCallbacks.on-resolve (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:1225:22)
    at async handleRequest (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:647:11)
  This error came from the "onResolve" callback registered here:
    ../../node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:1150:20:
      1150 │       let promise = setup({
           ╵                     ^
    at setup (file:///Users/cerebro/projects/parallax-cli/node_modules/.pnpm/vite@5.4.19_@types+node@22.16.5_lightningcss@1.31.1/node_modules/vite/dist/node/chunks/dep-C6uTJdX2.js:49789:13)
    at handlePlugins (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:1150:21)
    at buildOrContextImpl (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:873:5)
    at Object.buildOrContext (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:699:5)
    at /Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:2032:68
    at new Promise (<anonymous>)
    at Object.context (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:2032:27)
    at Object.context (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:1874:58)
    at prepareEsbuildScanner (file:///Users/cerebro/projects/parallax-cli/node_modules/.pnpm/vite@5.4.19_@types+node@22.16.5_lightningcss@1.31.1/node_modules/vite/dist/node/chunks/dep-C6uTJdX2.js:49576:24)
  The plugin "vite:dep-scan" was triggered by this import
    src/lib/log-normalization.ts:1:49:
      1 │ import { TASK_LOG_KIND, type TaskLogEntry } from '@parallax/common'
        ╵                                                  ~~~~~~~~~~~~~~~~~~
    at failureErrorWithLog (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:1472:15)
    at /Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:945:25
    at runOnEndCallbacks (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:1315:45)
    at buildResponseToResult (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:943:7)
    at /Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:955:9
    at new Promise (<anonymous>)
    at requestCallbacks.on-end (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:954:54)
    at handleRequest (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:647:17)
    at handleIncomingPacket (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:672:7)
    at Socket.readFromStdout (/Users/cerebro/projects/parallax-cli/node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.js:600:7)

Recent UI stdout:
> @parallax/ui@0.0.9 start /Users/cerebro/projects/parallax-cli/packages/ui
> vite -- --host 0.0.0.0 --port 8082
  VITE v5.4.19  ready in 1452 ms
  ➜  Local:   http://localhost:8080/
  ➜  Network: http://192.168.86.31:8080/

And when using default:

[plugin:vite:import-analysis] Failed to resolve entry for package "@parallax/common". The package may have incorrect main/module/exports specified in its package.json.
/Users/cerebro/projects/parallax-cli/packages/ui/src/lib/task-store.ts

…om source

- start.ts: drop the `--` separator from pnpm filter args; pnpm 10 keeps it
  literal in the script command line, and vite's CLI parser (cac) treats `--`
  as end-of-options, silently falling back to default port 8080
- vite.config.ts: alias @parallax/common to ../common/src/index.ts so dev
  startup works on fresh clones without requiring `pnpm build` for common
  first (its package.json exports point only to ./dist)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…orts to 9371/9372

- Remove AgentDefinition, agent.name, agent.systemPrompt, agentLabels from all types,
  validation, config store, orchestrator logic, AI adapters, Slack notifications, and UI
- Remove Secrets nav section from dashboard (covered by Integrations tab)
- Fix CORS to explicitly allow PUT/DELETE/POST/PATCH methods (dashboard mutations were blocked)
- Change default ports from 3000/8080 to 9371/9372 across CLI, UI, tests, and all docs
- Wire Slack bot onError callback so Bolt internal errors surface in parallax logs
- Update all docs, READMEs, and CLAUDE.md to reflect these changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…factor

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@maxigimenez maxigimenez marked this pull request as ready for review May 24, 2026 15:30
@maxigimenez maxigimenez merged commit 2196bbf into main May 24, 2026
3 checks passed
@maxigimenez maxigimenez deleted the feat/wizard-dashboard-v3 branch May 24, 2026 15:31
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.

2 participants