Repository navigation
feat(ui): add a New project dialog to the Launchpad - #9913
Draft
joshistoast wants to merge 1 commit into
Draft
joshistoast wants to merge 1 commit into
joshistoast wants to merge 1 commit into
Conversation
Choose a start, model, size, start image (upload, gallery or clipboard), library workflow and name before the editor opens; a one-shot request seeds the new draft. Lazy-load the editor's workflow library and publication dialogs so the shared library UI adds no editor boot request.
This branch has not been deployed
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
Creating a project from the Launchpad was a one-click button plus a caret menu of five starts; nothing let you choose a model, a size, a starting image or a workflow before the editor opened, and the project always opened with model defaults and a blank workflow.
The New project button now opens a dialog. The left rail lists the five starts (Generate, Canvas, Upscale, Video, Workflow) plus File (.invk)… import. Generate and Canvas panes use the shared
ModelSelectand a size block (aspect-ratio chips derived from the model's native resolution, width/height with swap, live preview). Canvas adds Start from: Blank | Image, where Image offers upload, pick-from-gallery and From clipboard, and locks the canvas size to the image. The Workflow pane shows the workflow library (search, Browse/Yours, tags, grid) with Blank workflow preselected. The footer takes an optional name; Enter creates. The last start and model are remembered per account. The Home tiles keep the one-click path.Create stages a one-shot, account-owned request and navigates to
/app?new=true&intent=…; the session controller consumes it once after applying the intent (rename, generate settings as a system patch, library workflow load through the existing pending-load path, canvas document/bbox sizing). A start image is handed to the Canvas widget through a project-keyed one-shot store, so the canvas-operations import stays out of the editor boot graph. A request staged for another intent is dropped.To share the library UI without adding an editor boot request, the editor's
WorkflowLibraryDialogandWorkflowPublicationHostare now lazy boundaries inWorkflowWidgetChrome(the publication host latches inworkflowUiStoreonce any publication intent is posted, so unanswered saves are still re-offered after switching projects), andisUpdatableSource/findProjectCopiesOfmoved to a leafcore/workflowSource.tsso eager chrome code no longer importsmodelRequirements.readClipboardImagemoved toplatform/browser/clipboardImage.ts.QA Instructions
Run from
invokeai/frontend/webv2:pnpm lint— pass.pnpm test— 629 files / 10 470 tests pass.pnpm test:browser— 345 of 346 files pass;src/platform/ui/theme/ToastContrast.browser.test.tsxtimed out on a hover once under a saturated worker pool and passes in isolation (28/28); unrelated to this change.pnpm test:fixtures,pnpm test:performance:architecture,pnpm test:project-files:browser,pnpm test:accessibility:browser— pass (thecheck:releasechain re-run from the point of the flake).pnpm dev:mock): Generate with 3:2 + name → editor opens on Compose with that model, 624×416 and the name; Canvas + gallery image → Edit layout with a 512×576 bbox and a raster layer from the image; Workflow + library card → Automate layout with the picked workflow replacing the blank one; the editor's library dialog and Save-to-library dialog open after the lazy change; no console errors. The mock serves 1×1 "full" images, so the pixels of the start image were not visually confirmed; the layer and bbox were.Performance (browser gate, measured; counts are requests/scripts at startup): Launchpad 30/26 → 29/25, editor-minimal 88/83 → 87/82, editor-canvas 97/92 → 96/91, editor-gallery 88/83 → 87/82, editor-workflow unchanged at 95/89. Editor static build graph 72/56 → 71/55. The one accepted growth: editor-workflow activated 7/6 → 8/7 (+4.6 KB) because the publication module now loads when the Workflow editor activates instead of at boot;
features/workflow/queries.tsimportsdata/publication.ts, so no chunk group can hold it without a structural violation. Baselines were edited by hand to the measured counts and owner sets; no timings were re-recorded.Review
Resolved: a stale request could land on a different start (now dropped on intent mismatch); tabbing through width/height turned a chip size into a custom "Free" size; Canvas "Image" with no image silently created a blank canvas; Create ran before architecture capabilities loaded and would have persisted fallback defaults; a chip-derived size did not follow a model change; blank Canvas starts left the bbox overhanging the 1024² document; the lazy publication host lost its mount latch on project switch, so unanswered library saves stopped being re-offered (regression test added). Remaining limitation: Upscale and Video panes only describe what is chosen in the editor; a video model picker and a project template system are follow-ups.
Compatibility / Rollout
Two additive account preferences (
launchpadNewProjectIntent,launchpadNewProjectModelKey) with normalization defaults; no migration. No persisted project document or API change. Theprojects.newProjectStartstring is removed with the caret menu.Checklist
What's Newcopy (if doing a release after this PR)Need help on this PR? Tag
@codesmith-botwith what you need.