Skip to content

Add TapApp Studio single-file web app with AI layout generation, README and helper scripts#4

Open
reodesureodesu wants to merge 1 commit into
mainfrom
codex/develop-intuitive-app-creation-tool-nwex6t
Open

Add TapApp Studio single-file web app with AI layout generation, README and helper scripts#4
reodesureodesu wants to merge 1 commit into
mainfrom
codex/develop-intuitive-app-creation-tool-nwex6t

Conversation

@reodesureodesu
Copy link
Copy Markdown
Owner

Motivation

  • Provide a lightweight single-file UI prototyping tool that lets users build tap-centered layouts without coding via index.html.
  • Enable AI-assisted initial layout generation across multiple providers (OpenAI, Hugging Face, Lovable AI) with retry and JSON-repair logic to reduce failure rates.
  • Ship small developer utilities for recording demos and validating MCP domains to simplify local testing and deployment.

Description

  • Add index.html implementing TapApp Studio with drag/resize, inline editing, style panel, undo/redo, grid/snap/zoom, multi-device preview, localStorage persistence, and AI layout generation (generateLayoutWithRetry, callOpenAICompat, callHF, tryParseJson, normalizeAIResponse).
  • Add README.md documenting the app, feature list, AI provider setup, privacy/security recommendations, deployment notes, and example commands such as python -m http.server 4173.
  • Add scripts/record_demo_playwright.py to automate demo video recording for web/iOS/Android viewports using Playwright and scripts/verify_mcp_domain.sh to check MCP server DNS, TLS, and HTTP reachability.
  • Persist user settings (API key, provider, model presets, Lovable base URL) to localStorage and include UI controls for model selection and Lovable compatibility.

Testing

  • No automated tests were executed as part of this PR.
  • Included scripts/record_demo_playwright.py as an automated demo-recording helper which can be run locally with Playwright but was not executed in CI.

Codex Task

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 4, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
app-generate-app Ready Ready Preview, Comment Mar 4, 2026 10:27pm

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cd32f0ae19

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread index.html
headers: { "Content-Type": "application/json", Authorization: `Bearer ${key}` },
body: JSON.stringify({
inputs: `JSONのみ返答。形式:{"elements":[{"type":"heading|text|button|input|card","text":"...","x":20,"y":20,"w":220,"h":48,"style":{"bg":"#ffffff","color":"#111827","radius":10,"padding":10,"fontSize":16}}]} 要件:${prompt}`,
parameters: { max_new_tokens: 900, temperature: 0.3, return_full_text: False }
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Replace Python boolean in Hugging Face request body

In callHF, the request payload uses return_full_text: False, but False is not a valid JavaScript boolean, so selecting the Hugging Face provider throws a ReferenceError before fetch is executed. This makes HF generation fail on every attempt and always falls back to the template instead of returning model output.

Useful? React with 👍 / 👎.


page.click('[data-add="heading"]')
page.click('[data-add="button"]')
page.click("#alignCenterBtn")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update demo script selectors to match current UI

The Playwright demo flow clicks IDs like #alignCenterBtn, but the current app markup in index.html does not define these elements (controls are exposed via chip data-tool attributes and #closePreview), so run_demo times out on the first missing selector and aborts video generation. This breaks the documented demo-recording workflow.

Useful? React with 👍 / 👎.

Comment thread index.html
};
}

let state = JSON.parse(localStorage.getItem("tapapp-state") || "null") || {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Persist canvas state after edits

The app initializes state from localStorage key tapapp-state, but there is no corresponding localStorage.setItem("tapapp-state", ...) in mutation/render paths, so all layout edits are lost on reload and the restore path never receives updated data. Only provider/API settings are persisted later in the file.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant