From 2c5311f3f7928a7302e4e670fd6f06f77344e4f2 Mon Sep 17 00:00:00 2001 From: Jacob Prall Date: Wed, 28 Oct 2026 13:01:38 -0700 Subject: [PATCH 1/4] Check render.yaml against the Blueprint schema in CI Closes #59 Co-authored-by: Cursor --- .github/workflows/ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c1e98e..8c4e631 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,15 @@ jobs: - run: npm ci - run: npm run check + # `render blueprints validate` needs a Render login, which a fork's pull + # request cannot have. The published schema catches the same shape errors. + blueprint: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + - run: pipx run check-jsonschema --schemafile https://render.com/schema/render.yaml.json render.yaml + # A template nobody builds is a template that quietly stops building, and the # first thing to notice would be a customer's failed run. templates: From f8a9259b2d56e2b6d1edf26500a869fdd7314944 Mon Sep 17 00:00:00 2001 From: Jacob Prall Date: Wed, 28 Oct 2026 13:01:38 -0700 Subject: [PATCH 2/4] Name the Render GitHub app in the prerequisites Closes #67 Co-authored-by: Cursor --- README.md | 12 +++++++----- docs/0_QUICKSTART.md | 4 +++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 45231bf..7462d67 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,11 @@ Before you deploy, prepare: - a Render workspace with Workflows and [Sandboxes early access](https://render.com/docs/sandboxes); -- an empty GitHub repository for generated apps, with Render's GitHub app - installed on it; -- a GitHub App or fine-grained token with Contents: write on that repository; +- an empty GitHub repository for generated apps, with the + [Render GitHub app](https://github.com/apps/render) installed on it so + Render can read the repository for Blueprint sync; +- a separate GitHub App or fine-grained token with Contents: write on that + repository, which the factory uses to push generated apps; - Anthropic and Render API keys, plus the Render workspace ID; and - a lowercase UI username and a UI password of at least 16 characters. @@ -91,8 +93,8 @@ product: see [Current limitations](docs/0_QUICKSTART.md#current-limitations). and the workspace ID (it starts with `tea-`) - An Anthropic API key - An empty GitHub repository for generated apps -- A GitHub connection in Render with access to that repository, so its - Blueprint can sync +- The [Render GitHub app](https://github.com/apps/render) installed on that + repository, so Render can read it for Blueprint sync - A credential that can push to the repository: a fine-grained personal access token or a GitHub App, with Contents: write on that repository diff --git a/docs/0_QUICKSTART.md b/docs/0_QUICKSTART.md index 98acbe8..d79b7f6 100644 --- a/docs/0_QUICKSTART.md +++ b/docs/0_QUICKSTART.md @@ -22,7 +22,9 @@ You need: - A Render API key and that workspace's ID (`tea-...`). - An Anthropic API key. - An empty GitHub repository for generated apps (the **apps repository**). -- A GitHub connection in Render that can read the apps repository. +- The [Render GitHub app](https://github.com/apps/render) installed on the + apps repository, so Render can read it for Blueprint sync. This is not the + push credential below. - A credential that can push to the apps repository: - a fine-grained personal access token with Contents: write, or - a GitHub App installed on the repository with Contents: write. From 68a0d929637c5cf0e09e38a137a352cf8bf31df8 Mon Sep 17 00:00:00 2001 From: Jacob Prall Date: Wed, 28 Oct 2026 13:01:38 -0700 Subject: [PATCH 3/4] Add a favicon to the gateway UI Closes #68 Co-authored-by: Cursor --- app/gateway.ts | 1 + public/favicon.svg | 6 ++++++ public/index.html | 1 + tests/gateway.test.ts | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 public/favicon.svg diff --git a/app/gateway.ts b/app/gateway.ts index a1bb8f0..64e9233 100644 --- a/app/gateway.ts +++ b/app/gateway.ts @@ -106,6 +106,7 @@ export function createGateway(): Hono { app.get("/", ...uiFile("index.html")); app.get("/app.js", ...uiFile("app.js")); app.get("/style.css", ...uiFile("style.css")); + app.get("/favicon.svg", ...uiFile("favicon.svg")); return app; } diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..65a4da8 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,6 @@ + + Vibe Coding App + + + + diff --git a/public/index.html b/public/index.html index e8e04a5..14c6dfb 100644 --- a/public/index.html +++ b/public/index.html @@ -5,6 +5,7 @@ Vibe Coding App +