Open
Conversation
Split 1553-line monolith into focused modules: - ui-utils.js: error classification, clipboard, modals, icons - auth.js: session state, cached API client singleton, theme, login - billing.js: Stripe integration with payment integrity fix - groups.js: multi-select builders, table rendering, CRUD - keys.js: usage key table, 7-field permission modal, CRUD - actions.js: IPFS action table, CRUD - wallets.js: wallet table, CRUD - runner.js: CodeJar editor, execute/getCid - app.js: entry point orchestrating init Bug fixes included: - getClient() now caches singleton instead of new instance per call - preloadAllTables uses Promise.allSettled with error banner - Payment flow: separate confirmPayment catch for integrity - Billing amount validation: minimum $5.00 (500 cents) - Error classification: auth/network/server user-friendly messages - Unified copyToClipboard utility replacing 3 inline patterns - Button disable-on-click during async operations - loadBillingBalance shows "Balance unavailable" on error Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-review # Conflicts: # lit-static/dapps/dashboard/actions.js # lit-static/dapps/dashboard/auth.js # lit-static/dapps/dashboard/billing.js # lit-static/dapps/dashboard/groups.js # lit-static/dapps/dashboard/keys.js # lit-static/dapps/dashboard/runner.js # lit-static/dapps/dashboard/ui-utils.js # lit-static/dapps/dashboard/wallets.js
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6 items from adversarial review during PR1 ship — mostly pre-existing patterns from the monolith. P1: initLogin null check. P2: auth ordering, confirm dialog race. P3: listener leak, form value ordering, async fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change sed target from app.js to auth.js (where __LIT_API_BASE_URL__ moved during the module refactor) - Add actions/setup-node@v4 so npm is available for wrangler-action on the self-hosted runner Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
lit-static/dapps/dashboard/app.js(1553 lines) into 9 focused ES modulesPromise.allSettledfor preload error visibility, "Balance unavailable" fallback, "Unable to connect to API" error wrapping, save button disable-on-click patternTest Coverage
Pure refactor — no new codepaths introduced. All functions moved without modification.
No JS test framework in this Rust monorepo (vanilla ES modules served statically).
Pre-Landing Review
No issues found. 2 informational dead exports (
keyPreview,renderMetadataList) are pre-existing from the monolith.Design Review
Design Review (lite): 0 findings. Pure refactor with no visual changes.
Plan Completion
Plan:
2026-03-26-dashboard-guided-onboarding.md(CEO plan)All 17 PR1 items DONE: module split, error classification, preload error banner, billing balance fallback, client caching, save button disable pattern, structured logging.
PR2 (Permission Wizard) and PR3 (copy-as-curl, templates, shortcuts) are intentionally deferred to follow-up PRs.
QA Results
QA found 0 issues. Health score: 95/100.
TODOS
No TODO items completed in this PR.
Test plan
🤖 Generated with Claude Code