Feat: Restructure main page wizard into a three-step tool
Implements the T429068 pilot-feedback simplifications: the wizard is now a single three-step tool (Build layout / Save templates / Preview & publish) at /main-page-wizard, aligned with the other essential tasks.
Steps:
- Step 1 (MainPageStepModules): the Focus Areas step is removed (FocusAreaSelector.vue deleted); all modules appear ungated in Top Banner / Content Area / Bottom Sections. The category carousel became a single navbar card whose checkbox toggles all categories together; the category chips are informational labels only. Per-section "Add your own template" rows persist entries as customTemplates {top, content, bottom}; on submit the title is validated against the wiki's own api.php (must exist, ns 10) and stored under its normalized title, with inline errors otherwise. Continue is guarded on the settings save succeeding.
- Step 2 (MainPageStepTemplates): the template create/translate flow moved out of the preview page into the wizard. Templates are created lazily per row via the idempotent /templates/init; done-progress and translated titles live in the store, and the required-template list arrives as requiredTemplates in the GET/POST /api/settings responses (no extra endpoint). The store reconciles per-template progress with the list so deselected modules can't strand "all done".
- Step 3 (MainPageStepPreview): the /main-page-preview route and MainPagePreview.vue are deleted; preview + publish (confirm dialog, published banner, start-over) render as the final wizard step. The Refresh Preview button is gone — re-entering the step re-fetches.
Task alignment:
- The wizard wraps in EssentialTaskLayout: intro card (new starterkit-task-mainpage-intro-* messages, 3 steps / ~30 min meta), tool-page header, completed users skip the intro. The layout gained a wide prop (960px) since its default column is 720px.
- Components follow the sibling-dir naming (MainPage* prefix, MainPageStep for steps) with strict BEM blocks matching each component name, Codex icons throughout (CdxIcon + per-component Icon.css instead of the full codex.style.css), and shared slate tokens (--starterkit-card-border*, --starterkit-control-border) in main.css.
Server:
- getRequiredTemplates(modules, navbarCategories) replaces focus-area gating (alwaysIncluded flag on registry entries; the navbar template is gated on selected categories). The old publish/preview guards required focusAreas and would have rejected every new user.
- focusAreas is removed end to end (state, settings payloads, POST validation); old DB blobs keep the field, ignored on load and dropped on the next save. The Login-page "saved settings" banner keyed off it and is removed with its message.
- The wikitext generator transcludes the user's own templates in their section positions; POST /settings validates customTemplates.
Store/analytics cleanup:
- The store is analytics-free and publish moved into the preview step (single owner for start/success/error events; duplicate module_toggle events removed). Template progress computeds (templateDoneCount/templateTotalCount/allTemplatesDone) are shared store state.
- i18n: obsolete focus-area/step keys removed, new wizard/template/ error messages added with qqq documentation. Only en.json and qqq.json are touched; translated files are translatewiki-managed.
Co-Authored-By: Claude Fable 5 Bug: T429068