FE-M0-10 · The shell: menu, pools, theme, refusal page and placeholders
ID FE-M0-10 · Level L0 · Run order row 26
Every signed-in page sits in the shell: the menu the role may open at the current pool, the pool switcher, the theme toggle and sign-out; a page not built yet shows a placeholder, a page outside the role the refusal page; it builds; committed.
Before
Section titled “Before”FE-M0-09 is Done. You are on the branch web/shell.
1 · Copy this step's files and remove lib/i18n.ts: t now comes from getT() in server code and useT() in client components
Section titled “1 · Copy this step's files and remove lib/i18n.ts: t now comes from getT() in server code and useT() in client components”cp -R ~/opleet-v2/packs/fe-pack-c/FE-M0-10/. .git rm -q apps/web/lib/i18n.tsgit status --short2 · Typecheck, lint and build
Section titled “2 · Typecheck, lint and build”pnpm --filter web typecheckpnpm lintpnpm --filter web build3 · Commit
Section titled “3 · Commit”git add -A apps/webgit commit -m "feat(web): the app shell with the menu by permission, pools and theme"Expect
Section titled “Expect”- Block 1: M for apps/web/AGENTS.md, app/layout.tsx, app/login/page.tsx, app/login/sign-in-form.tsx, app/page.tsx, components/opleet/Toast.tsx and lib/auth/actions.ts; D apps/web/lib/i18n.ts; ?? for app/(shell)/, app/no-access/, components/shell/, lib/access/server.ts, lib/i18n/client.ts, lib/i18n/server.ts and lib/shell/.
- Block 2: no type errors; “No fixes applied.”; the build lists ƒ /, ƒ /[...slug], ƒ /design-preview, ƒ /login and ƒ /no-access, then “ƒ Proxy (Middleware)”.
- Block 3: the commit line with 22 files changed.
git show --stat HEAD | tail -1git status --shortExpect: 22 files changed, then nothing from git status.
If it fails
Section titled “If it fails”- typecheck reports an import of "@/lib/i18n": a file outside this pack still uses the old t. Paste the line.
- The build stops at a page: paste the error.
git reset --hardgit clean -fd apps/webBefore the commit. After it: git reset --hard HEAD~1.
Not run yet.