V8 Central — Product & Technical Spec
  1. Docs
  2. Frontend spec (from backend doc)
  3. Backend doc sync & traceability

#Backend doc sync & traceability

The frontend spec follows the backend team's V8 project doc. This page records which version of it the frontend spec matches, and where every backend item is covered on the frontend side.

#Source documents

DocOwnerLocation (published)Last changeUsed as
Pair 2 V8 project docJayshree Patil / central-api-2backend-2/public/v8-central-docs-ea60c2f1c31c3c9d/project-doc.md2026-10-03 12:28 UTCPrimary source
Pair 1 V8 project docPair 1 / central-apibackend/public/v8-central-docs-7b32cacc0936ef38/project-doc.md2026-10-03 11:25 UTCCross-check. No longer a subset: on 2026-10-03 Pair 1 copied Pair 2's doc, so both now carry the same rules (R1–R7, Phases 1–5, Q1–Q8). Pair 1 is the only source for Phase 4 (Organization & Members), which they completed on 2026-10-03 09:39 — Pair 2's doc still has the placeholder, so for Phase 4 this doc wins. On 2026-10-03 11:25 Pair 1 also copied Pair 2's finished Phase 5, so both docs now carry the same Phase 1–5 rules and either can be read for them. Pair 1's Phase 1 step 1.1 still names its own database sv_central

Synced with: Pair 2 doc md5 96c3f3b7… · Pair 1 doc md5 217ba45c… · checked 2026-10-03 12:35 UTC.

#Traceability: backend item → frontend coverage

Backend itemWhat it saysFrontend impactCovered in
R1 V7 functional reference onlyNo V7 code reuseFrontend is new too. V7 is used only for flows/UXSources
R2 Build from V8 requirementsV8 doc winsEvery frontend page cites the backend itemthis page
R3 Code standardsLaravel standards, Passport, per-pair DBBase URL = own pair's API only. Paginated listsAPI architecture
R4 Working methodPhase by phase, nothing built until approvedFrontend phases follow backend phasesImplementation phases
R5 Central stores minimum, OSS liveServer/app data from the OSS APIServer Details = live proxy views, offline statesArchitecture, Server details
§2.2 Common OSS clientOne client, consistent errors. Built with the Servers phase, not the Foundation phase (2026-10-03)Frontend maps a small set of server error codes. Server Details screens cannot start before the Servers phaseGlobal states, Architecture
Phase 1 1.1–1.9 FoundationMariaDB, Redis, Horizon, Passport, Telescope, CORS, mail/log, securityCORS origin = frontend URL. HTTPS + secure cookies. "Next.js login flow decided later"FE: Foundation
2.1 RegisterName, email, password ≥ 8, Turnstile, optional codes + onboardingRegister screenFE: Auth screens
2.2 Email verificationInactive until verified, resend, 24 hCheck-inbox + verify-result screensFE: Auth screens
2.3 LoginEmail + password, unverified/banned messages, token + user + organizations, login historyLogin screenFE: Auth screens
2.4 Google / GitHubRedirect → callback, auto-link, same 2FA/IP checksOAuth buttons + callback pageFE: Auth screens
2.5 Forgot / reset60 min link, logs out all devicesForgot + reset screensFE: Auth screens
2.6 Invitation passwordSet password from the invite linkInvitation screenFE: Auth screens
2.7 2FA at loginEmail code 10 min / 5 tries / resend, authenticator, backup code2FA stepFE: Auth screens
2.8 IP whitelist at loginBlock + approval email 24 hIP-approval notice + resultFE: Auth screens
2.9 TokensBearer 15 d + refresh 30 d, rotation. Central issues both tokens itself after password → 2FA → IP checks, for email and Google/GitHub login (2026-10-03)BFF cookies, refresh once. One login response carries both tokens; the OAuth callback is handled like a password loginFE: Auth screens, FE: Foundation
2.10 LogoutRevoke current tokenLogout actionFE: Auth screens
2.11 SecurityRate limits, middleware429 handling on every auth formFE: Auth screens
Phase 2 settingsMail/Turnstile/OAuth keys from admin panel (DB until then)Turnstile site key must come from the API, not a frontend env file Open questionFE: Auth screens
Phase 2 "not in this phase"Orgs not auto-created; dropped V7 sign-up checks; migration laterCreate-organization screen after the first loginOrganizations
3.1–3.7 ProfileView, update (+ onboarding answers), change email, change password, email preferences, delete protection, delete accountAccount → ProfileFE: Account screens
3.8–3.13, 3.16 Security2FA + backup codes, Google Authenticator, IP whitelist, login history, account activity, API access, active sessions. V7 API tokens are migrated and keep working; users do not create new ones (2026-10-03)Account → Security. The API screen is an on/off switch with no "create token" button — this answers the old Open question about a copy dialogFE: Account screens, V7 migration
3.14, 3.15, 3.17 NotificationsIn-app list, channels (Email, Telegram, Pushover, Slack, Discord, Webhook — both added 2026-10-03) + test, server alerts from OSSBell + Account → Notifications. Two more channel types in the type picker: Discord (Discord webhook URL) and Webhook (any URL, JSON POST)FE: Account screens, Notifications
Phase 3 "not in this phase"Confirmation timer ignored. Billing, referral, support, AI laterNot builtOpen questions
Phase 3 existing usersProfile, preferences, 2FA, IP whitelist, login history, channels and API tokens carry over from V7Every account screen must load pre-filled data and never invalidate a migrated API tokenFE: Account screens, V7 migration
Phase 4 Organization & MembersRequirements complete 2026-10-03 09:39 (Pair 1) V8 requirement: organizations with a default and letter avatar, delete rules, invites that must be accepted (7-day links, resend, cancel), one role per member, fixed Owner + Admin and custom view / manage roles, share one server, ownership transfer, organization activity logFull screen spec written. Closes D-25, and answers D-7 (view/manage), D-9 (accept always) and D-8 (sharing stays — against our recommendation)FE: Organization & Members, Organizations, Members, Roles & permissions, Audit log
4.1–4.2 OrganizationsCreator is owner; first one is the default; letter avatar when no logo; delete is owner-only, not the default, not with serversList + settings + danger zone; the delete button shows the blocking reason instead of failingFE: Organization & Members
4.3, 4.4, 4.6 Members & sharingInvite (email, designation, role), every invite accepted, 7-day links, resend/cancel; one role per member; owner untouchable; leave; share one server by invite with no create/delete/shareSingle-select role picker, pending rows with "expires in N days", shared people listed apart from membersFE: Organization & Members, Members
4.5 RolesOwner and Admin fixed; custom roles view / manage; parents ticked automatically; no delete while members hold itRead-only system roles, auto-ticking matrix built from the API catalog (names still unpublished), Delete disabled with "N members use this role"FE: Organization & Members, Roles & permissions
4.7 Ownership transferOwner only, to an existing member. Both sides confirm with their own password (or email code) + their own 2FA, accept within 48 h, old owner becomes admin, blocked on unpaid charges or a plan that doesn't fit. Subscriptions move in the billing phaseNew two-sided flow: start dialog, pending state with "expires in N hours" for both people, accept dialog, expired and blocked statesFE: Organization & Members
4.8 Organization activityOrganization, member, role, share and transfer actionsThe organization-level log, separate from the account activity in 3.12Audit log
Phase 5 IntegrationsRequirements drafted 2026-10-03 V8 requirement: cloud providers in Central (organization level); Git accounts and backup storage live in each server's OSS with Central keeping only a note ("Option B"); create a server on a provider with automatic OSS install; organization Integrations pageFull screen spec written: provider list/connect/reconnect/disconnect, create-server wizard + live progress (Creating → Installing OSS → Ready / Failed), Git / storage modal with "add to other or all servers" and a result per server, replace-token-everywhere, remove from one or allFE: Integrations, Providers, Servers, Server details, Phases
5.2, 5.3 Named accounts + EditNew 2026-10-03: each provider account gets a name, several accounts per provider are allowed, and Edit changes the name or pastes a new token. "Needs new token" now points at EditName field in the connect modal and everywhere the account is picked; one Edit modal (token blank = keep current) replaces the separate "paste new token" dialog; the list groups by provider and shows namesFE: Integrations, Providers
5.6, 5.8, 5.9 Git & storageNew / changed 2026-10-03: Git and storage accounts also get a name; the result per server applies to connect, update and remove alike; a Test button checks the account on that serverOne result table reused by all three actions (never a single "saved" toast for a multi-server action, including removals); per-server Test with the last result shown on the rowFE: Integrations §C
Who can do itNew 2026-10-03: connect, edit, test and remove follow the organization roles from Phase 4Every button on the integration screens is permission-driven. The permission names are still unpublished, so checks come from the API catalogFE: Integrations, Roles & permissions
5.1, 5.4, 5.5 Cloud providersPasted API token for every provider — no OAuth (Lightsail: access key + secret), checked on save, encrypted; no renewal — a rejected token marks the account "Needs new token"; disconnect keeps servers. Requirements complete 2026-10-03One connect modal for all providers, never a redirect; "Needs new token" blocks creating servers with that account. Conflict with V7's OAuth accounts → D-29 (how they migrate)FE: Integrations, Providers
5.3 Regions & sizesMoved out of Phase 5 → Servers phase (2026-10-03), read live when creating a serverPart of the create-server wizard, not the Integrations pageServers, FE: Integrations §B
5.13 Repos & branchesMoved out of Phase 5 → Applications phase (2026-10-03), read from the server's OSSAccount → repository → branch dependent dropdowns move to the application-from-Git flowServer details, Phases
Create server (was Phase 5 B)Moved out of Phase 5 into the Servers phase on 2026-10-03; the backend's draft is parked at the end of their Phase 5, with Q13, Q14, the Ubuntu 20.04 limit and Hostinger's pre-installed stackSpec kept and clearly marked as Servers phase work: wizard + progress screen (Creating / Installing OSS / Ready / Failed), polling, safe to leave the page. Still answers D-12. Frontend phase 5 (Servers) now owns itFE: Integrations §B, Servers, Providers, Phases
5.5 Disconnect a providerChanged 2026-10-03: blocked while any server was created with the account; the warning lists those servers. Allowed only when none use itDisconnect button disabled with "Used by N servers" and the list in the dialog — replaces the earlier "servers keep running" wordingFE: Integrations, Providers
5.16 Integration activity logNew 2026-10-03: every integration action (connect, edit, add to other servers, update everywhere, remove, disconnect) goes into the organization activity log with who, which account, which servers and when. Tokens and keys are never loggedNothing new to build — but one entry can cover several servers, so render the server list inside the entry rather than one entry per serverFE: Integrations, Audit log
5.13 Accounts already on the server (renumbered from 5.16)New 2026-10-03: Central reads existing Git / storage accounts from OSS and shows them; the same account on several servers appears once; adding it to more servers needs the token pasted onceThe list mixes accounts Central set up with accounts found on a panel — found ones are marked, grouped by account (not by server), and Central never claims to hold their secretFE: Integrations §C
5.6–5.15 Git & storageForm in Central, secret pushed to chosen servers' OSS, per-server result, update everywhere, remove from one or all, repos/branches read from OSS, provider listsPer-server modals + the organization overview. Central never shows a saved secret againFE: Integrations, Server details
Phase 6(by Pair 1) — no name or rules yet, Pair 2's doc just points at Pair 1Nothing to spec. Watch Pair 1's docPhases
Phase 7 Plans (Subscription)Requirements complete 2026-10-03 V8 requirement: admin-managed plans with a per-plan feature list, one plan per owner across all their organizations, paid from credit (tax added, saved as a charge), trial, change with unused days returned as credit, downgrade checks, cancel / resume, auto-renew, reminders, the V7 expiry flow (day −7 warning → day −15 servers removed from Central + account locked), coupons, plan visibility + display name, enterprise form, activity logFull screen spec written, including the shared "may I do this?" pattern for plan guards and the locked-account state. Answers D-3 (owner, not organization), D-4 (credit wallet stays, lifetime and legacy kept) and D-6 (limits apply)FE: Plans & subscription, Plans, Subscriptions, Billing, Audit log
7.1, 7.2, 7.13, 7.14 Admin sideCreate / edit / hide / archive plans; one feature list turned on-off per plan; coupons; per-plan visibility and display nameAdmin plan editor is a full page driven entirely by the API's feature list, so later phases add features without a frontend change. Two users may legitimately see different plan listsFE: Plans & subscription §A
7.12 After expiryReminders → day −7 warning → day −15: servers removed from Central (not deleted at the provider) and the account lockedThe harshest rule in the product: a persistent banner with the exact date and "Add credit", plus a dedicated locked screen where only billing works and which says servers still exist at the providerFE: Plans & subscription §B
Q9Answered 2026-10-03: accepted — Git uses an access token / app password, Google Drive a service account, instead of V7's one-click loginNo OAuth button on any integration screen; every connect form is a token formFE: Integrations, Open questions
Q10Parked: how V7 Git / storage connections move is decided later, with the migration phaseEmpty states must explain that a migrated user needs to reconnectOpen questions
Q11Dropbox skipped for now — not supported in Phase 5Not in the storage picker; V7 Dropbox users need a message and an alternativeFE: Integrations, Open questions
Q12 HostingerAnswered 2026-10-03: not a provider. V7 only detects a Hostinger IP when adding an existing server, then removes its pre-installed Apache/MySQL. Servers-phase matterNothing in the provider picker. Noted on the Servers page as an existing-server caseProviders, Servers
Q13, Q14Open OSS registration after an automatic install; rotating the Central token that sits in the start-up scriptMoved to the Servers phase with the create-server flow. Q13 is a security hole, not a screen — the progress screen must not reveal the panel URL before Central claims itOpen questions, Servers
D-27 (frontend decision)Bhavik: integrations are account level (frontend doc 3.I1–3.I4). Backend Phase 5: cloud providers per organizationConflict — the frontend keeps account level and flags it; only the record's owner differs, not the screensFE: Integrations, Providers, Open questions
Q1–Q3Server fields, how the key reaches Central, offline displayServer wizard + offline states wait on theseOpen questions
Q7PHPStan — skipped for now (2026-10-03)Backend only. Frontend keeps ESLint + Prettier—
Q8Translations (i18n) and language detection are needed by every phase, but no backend phase sets them up (noted 2026-10-03, not decided)Frontend i18n is already planned (next-intl, 8 locales, Phase 0). What is missing from the backend: Accept-Language support, error/notification type + params instead of English sentences, and a profile language fieldInternationalization, Open questions
Organizations, plans, subscriptions, billing, roles, members, servers, providers, blueprints, auditNot in the backend doc yetFrontend pages show V7/OSS-based proposals, marked Missing / Open questionCore platform + Modules sections

#Change log (frontend spec vs backend doc)

Date (UTC)Backend changeFrontend update
2026-10-03 12:35New Phase 7 — Plans (Subscription), requirements complete (7.1–7.16): plans are dynamic, created by the admin with a feature list on / off per plan; one plan per owner across all their organizations; paid from credit with tax added; trial; plan change returns unused days as credit; downgrade blocked when usage or a feature in use doesn't fit; cancel / resume; auto-renew from credit; reminders; the V7 expiry flow (day −7 warning → day −15 servers removed from Central, account locked); coupons; per-plan visibility and display name; enterprise form; activity log. Existing users keep their plan, lifetime and legacy per-server plans. Phase 6 is Pair 1's (no rules yet)New page FE: Plans & subscription (+ nav): admin plan editor, plan page, confirm-and-pay from credit, downgrade blocking, expiry banners, locked-account screen, enterprise form, and a shared "may I do this?" pattern for plan / limit / permission refusals. Updated Plans, Subscriptions (D-3 answered: the owner), Billing (D-4 answered: credit wallet stays), Audit log, Phases, Missing backend, Open questions (D-3, D-4, D-6 answered and moved; D-5 and D-22 sharpened). Frontend project doc: §14 (owner-level plan, unused days as credit, coupon field, downgrade block, expiry countdown, locked page, enterprise), §18 (feature list, visibility, coupons), §5.1 and §5.3
2026-10-03 11:35Pair 1 copied Pair 2's finished Phase 5 into their doc, word for word (providers in Central, Git and storage in each server's OSS, named accounts, Edit, Test, per-server results, activity log, who-can-do-it, existing users). No new product rule, so no screen changesUpdated the source-document table (both docs now carry the same Phase 1–5 rules) and this change log. Worth noting for D-27: both backend docs now say cloud providers are organization level, while the frontend doc keeps them at account level — so that difference needs a decision rather than drifting
2026-10-03 11:055.16 Activity log added: every integration action is recorded in the organization activity log (who, which account, which servers, when) and tokens / keys are never logged. 5.13 clarified: the same account on several servers is shown once even when each server holds a different tokenFE: Integrations: new 5.16 row (one entry can span several servers), 5.13 reworded. Audit log: the organization log now also carries integration actions. Frontend project doc: 3.I3 / 3.B5 ("even when each server has its own token/keys"), 3.I4 / 3.B4 (replace-token modal lists the servers it will overwrite, each untickable), 3.B6 (actions appear in the activity log, never the keys). New question D-30: a row can hide different per-server tokens, yet "update everywhere" replaces them all
2026-10-03 10:50Phase 5 polished and renumbered. Provider accounts get a name and several per provider are allowed; new 5.3 Edit (rename or re-token) which "Needs new token" now points to; Git / storage accounts get a name too; the per-server result covers connect, update and remove; new 5.9 Test per server; new "Who can do it" — connect, edit, test and remove follow the organization roles; old 5.16 renumbered to 5.13. Existing users: DigitalOcean and Linode must paste a token once after the move, the others move as they are. The backend also deleted their "Not in this phase" list, open points Q9–Q14 and the parked create-server draftFE: Integrations retabled to the new numbering (name fields, Edit, Test, result-per-server for all three actions, "Who can do it", 5.13), plus a warning that our site is now the only written record of the removed points — including the Q13 security hole. Providers: named accounts, several per provider, no duplicate-by-email rule, D-29 answered. Open questions: D-29 moved to answered, Q13/Q14 marked as kept-here-only. Missing backend. Frontend project doc: 3.I1 (name, Edit, several accounts, migrated DO/Linode), 3.I2 (name, Test), 3.I4 and 3.B6 (result per server, role-driven buttons)
2026-10-03 10:355.16 added: Central reads Git / storage accounts that already exist on a server's OSS panel and shows them, the same account only once across servers, with the token pasted once to extend it to more servers. Also picked up 5.5: disconnecting a cloud provider is blocked while any server was created with it (the warning lists them)FE: Integrations: new 5.16 row (found-on-server accounts, grouped by account, marked, no pretend secret), rewritten 5.5 row (disabled button with "Used by N servers"), plus a line explaining that the account — not the server — is what users manage. Providers: our earlier "refuse disconnect while servers exist" recommendation is now confirmed by the backend. Frontend project doc: 3.I1 disconnect and new 3.I3a
2026-10-03 10:20Phase 5 requirements complete. Connecting is now token-only: Vultr, DigitalOcean, Linode and Hetzner take a pasted API token, Lightsail an access key + secret — no OAuth login and no automatic renewal; a rejected token marks the account "Needs new token" (5.2, 5.4). 5.3 regions & sizes moved to the Servers phase, 5.13 repos & branches moved to the Applications phase. Q9 accepted (tokens / service account instead of one-click login), Q10 parked for the migration phase, Q11 Dropbox skipped for nowFE: Integrations: one connect modal for every provider, "Needs new token" state, 5.3 and 5.13 removed with pointers, Q9–Q11 resolved, Dropbox noted as unsupported. Providers: Conflict callout — V8 drops the V7 OAuth login, so no redirect screen, no duplicate-by-email rule and no refresh middleware; regions & sizes marked moved. Phases, Missing backend, Open questions (Q9/Q11 answered, Q10 parked, new D-29), frontend project doc 3.I1 and 3.I3
2026-10-03 10:05Phase 5 narrowed: creating a server at a cloud provider and the automatic OSS install moved out to the Servers phase (draft parked at the end of Phase 5 with Q13, Q14, the Ubuntu 20.04 limit and Hostinger's pre-installed Apache/MySQL). Q12 answered: Hostinger is not a provider — V7 only detects a Hostinger IP when adding an existing server. 5.3 regions & sizes stay in Phase 5 and are used by the Servers phaseRe-scoped FE: Integrations (§B marked as Servers-phase work, nothing deleted), Providers (create-VPS section marked moved, Hostinger answer), Servers (now owns create-server, plus the Ubuntu 20.04 and Hostinger notes), Phases (create-server from phase 8 → phase 5), Missing backend (split into "cloud providers" and "create server", Q13 marked P0 security), Open questions (Q12 answered and moved, Q13/Q14 re-scoped). Also raised the Conflict for D-27 (account-level vs organization-level integrations) on the spec pages, and renumbered my role-migration question to D-28 because D-26 is now Bhavik's auth-flow decision
2026-10-03 09:50Phase 4 — Organization & Members completed by Pair 1 (4.1–4.8): default organization + letter avatar, delete rules, invites that must be accepted with 7-day links, one role per member, fixed Owner/Admin + custom view / manage roles with auto-ticked parents, no deleting a role in use, share one server, new ownership transfer (both sides confirm with own password + 2FA, 48 h, old owner → admin), organization activity logNew page FE: Organization & Members (+ nav). Updated Organizations, Members, Roles & permissions, Audit log, Phases, Missing backend, FE: Integrations + Providers (their Phase 4 dependency is satisfied), and the frontend project doc (4.1–4.8, 12.3–12.5, 13.4–13.5). D-7, D-8, D-9 and D-25 answered and moved; two Conflict callouts raised (sharing stays; one role per member) and one new question D-26
2026-10-03 09:35Phase 5 — Integrations drafted (Pair 2). "Option B": cloud providers stored in Central at organization level; Git accounts and backup storage live in each server's OSS and Central keeps only a note; create a server on a provider with automatic OSS install through a start-up script; organization Integrations page; open points Q9–Q14New page FE: Integrations (+ nav): provider screens, create-server wizard and live progress, Git / storage modals with "add to other or all servers" and per-server results. Updated Providers (Phase 5 rules, D-12 answered, Q13/Q14 warning), Servers, Server details, Phases (phase 8 renamed Integrations, could move earlier), Missing backend, Open questions (D-12 answered and moved, D-13 deferred, Q9–Q14 added), frontend project doc (4.6 Integrations, 6.2/6.2a/6.2b create-server, 7.5–7.6 Git, Backups → Storage)
2026-10-03 08:20Pair 1's doc caught up with Pair 2's — it now contains the same rules (Phase 3 Account, Phase 4 + Phase 5 placeholders, Passport/per-pair-database conventions, OSS client with the Servers phase, Q7–Q8). No new product rule, so no screen changesUpdated the source-document table (Pair 1 is no longer a subset) and D-25: Pair 1's Phase 4 section now exists as "requirements in progress", so we know where those rules will be published. Also noted on Organizations, Members, Phases
2026-10-03 07:20Phase 3 3.15: Discord and Webhook added as notification channels (V7 already had both, so migrated channels keep working)Added both types to the channel type picker and per-type fields: FE Account screens (3.15, layers diagram), Notifications, V7 migration, frontend project doc 3.15
2026-10-03 07:20Phase 3 3.13 + existing users: V7 API tokens are migrated and keep working; users do not create new onesAPI screen is a switch with no "create token" button — closes the old Open question about a copy dialog. Updated FE Account screens (3.13, existing users), V7 migration (new API-tokens row), frontend project doc 3.13
2026-10-03 07:202.9: Central issues the access + refresh token itself after password → 2FA → IP checks, for email and Google/GitHub login; method decided in the backend's Phase 2 planD-1 is now partly answered: no browser-side OAuth grant. Updated FE: Auth screens 2.9, FE: Foundation 1.4 + D-1 note, Open questions D-1
2026-10-03 07:20§2.2: the common OSS API client moves from the Foundation phase to the Servers phaseUpdated Architecture, Missing backend; the frontend roadmap already put Server Details in phase 5, so no re-ordering was needed
2026-10-03 07:20New Phase 4 — Organization & Members (by Pair 1) and Phase 5 — Integrations (requirements in progress)Flagged a new gap D-25: Phase 4's rules are in neither published doc. Updated Organizations, Members, Providers, Phases, D-20
2026-10-03 07:20Q7 PHPStan skipped for now; new Q8 — nobody owns i18n setup yetRecorded in Open questions (Q7, Q8) and a warning on Internationalization with what the frontend needs from the backend
2026-10-03Initial sync against the Pair 2 doc as of 2026-10-01 11:55 (R1–R7, Phases 1–3, Q1–Q3, Q7)Added FE Foundation, FE Auth screens (2.1–2.11), FE Account screens (3.1–3.17), this traceability page
2026-10-03—New standalone Frontend project doc (/frontend/) mirroring the backend doc's structure: rules, architecture, code standards, working method, Phases 1–3 screens, FE-Q1–FE-Q8
2026-10-03—Frontend project doc trimmed to frontend-only items (screens 2.1–2.11, 3.1–3.17, app foundation, screen states). Backend rules and open questions stay on this site
ServerAvatar V8 Central · prepared by central-app-2 (Pair 2 frontend) for Bhavik Jethwa · nothing in this spec is implemented yet · Built 2026-10-03 12:35 UTC