Skip to content

DEV-1390: Document locked viewport as V3 boot HTML constraint#279

Open
tonytlwu wants to merge 2 commits into
masterfrom
feature/DEV-1390-user-scalable
Open

DEV-1390: Document locked viewport as V3 boot HTML constraint#279
tonytlwu wants to merge 2 commits into
masterfrom
feature/DEV-1390-user-scalable

Conversation

@tonytlwu

@tonytlwu tonytlwu commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Jira: DEV-1390

Summary

Documents the locked viewport as the fourth V3 boot HTML constraint in docs/API/v3/app-bootstrap.md. On native devices a scalable viewport lets users pinch-zoom the app and makes iOS auto-zoom the page when an input field receives focus; V1/V2 apps were immune because the platform template hardcodes user-scalable=no, but V3 boot HTML is AI-authored end to end, so the constraint must live in the doc the builder is required to fetch before writing any boot HTML.

The canonical tag: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover">. Web browsers ignore user-scalable=no for accessibility, so the same tag is correct on every platform.

Also regenerates the AI discovery indexes (llms.txt, llms-full.txt, agent-skills, capabilities.md) — includes minor drift from a fliplet-router doc change that postdates the last regen.

Companion PR

Fliplet/fliplet-studio#8626 enforces this constraint deterministically (viewport-not-locked rule in lintV3Boot, blocking update_screen_code deploys). The lint's error message points the model at this doc — merge this PR first (or together) so the doc the AI is told to fetch actually documents the rule.

Test plan

  • node bin/build-agent-indexes.mjs --strict passes (frontmatter + cross-link validation)
  • Post-deploy: https://developers.fliplet.com/API/v3/app-bootstrap.md shows the "Lock the viewport" section

🤖 Generated with Claude Code

Adds constraint 4 (Lock the viewport) to app-bootstrap.md: the document
head must carry the canonical viewport meta with user-scalable=no so
native apps don't pinch-zoom or auto-zoom when an input is focused. Web
browsers ignore the directive for accessibility, so one tag serves both
platforms. Regenerates the AI discovery indexes (llms.txt, llms-full,
agent-skills, capabilities).

Companion to Fliplet/fliplet-studio#8626, which enforces the constraint
via the viewport-not-locked rule in lintV3Boot.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 10, 2026

Copy link
Copy Markdown

Deploying fliplet-cli with  Cloudflare Pages  Cloudflare Pages

Latest commit: c99aafe
Status: ✅  Deploy successful!
Preview URL: https://b4d2f568.fliplet-cli.pages.dev
Branch Preview URL: https://feature-dev-1390-user-scalab.fliplet-cli.pages.dev

View logs

…s-refs, guarantee list

- guarantee mapping is a numbered list instead of inline (1)-(4) prose
- enforcement phrasing matches reality: the boot-HTML lint rejects the
  layout (rule viewport-not-locked); there is no deploy-time check
- umbrella warning covers the lint-rejection failure mode
- browser-behavior nuance (Android Chrome honors user-scalable=no) and
  the 16px input auto-zoom qualifier
- fliplet-router.md, routing.md, frameworks/overview.md now say four
  boot constraints; indexes regenerated (also converges the one-run
  capabilities.md lag in llms-full.txt)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant