From 29d5b2a7b56e02f661889e0e93fe984fa8e1c557 Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Tue, 20 Oct 2026 15:21:27 -0400 Subject: [PATCH] Remove the Render demo from the release The demo is published by the Demo workflow, so the release no longer pins an image in render.yaml. Remove the file, its bump in release prep and its release-mode check, and the cold-start note from the README and the Docker Hub description. --- .github/actions/checks/action.yml | 5 ++--- .github/workflows/release-prep.yml | 6 ++---- README.md | 3 +-- render.yaml | 23 ----------------------- scripts/changelog-check.js | 10 ++-------- scripts/dockerhub-description.js | 1 - scripts/release-prep.js | 8 +------- test/repo/release-prep-order.test.js | 2 +- 8 files changed, 9 insertions(+), 49 deletions(-) delete mode 100644 render.yaml diff --git a/.github/actions/checks/action.yml b/.github/actions/checks/action.yml index 0e31d46f..efd205b7 100644 --- a/.github/actions/checks/action.yml +++ b/.github/actions/checks/action.yml @@ -36,9 +36,8 @@ runs: shell: bash run: node scripts/changelog-check.js - # A release must also agree with itself: the newest dated section, the - # package version and the demo pin all name one version, and nothing is left - # under [Unreleased]. + # A release must also agree with itself: the newest dated section and the + # package version name one version, and nothing is left under [Unreleased]. - name: Check the changelog describes this release if: inputs.mode == 'release' shell: bash diff --git a/.github/workflows/release-prep.yml b/.github/workflows/release-prep.yml index 0766c43b..93859f09 100644 --- a/.github/workflows/release-prep.yml +++ b/.github/workflows/release-prep.yml @@ -39,8 +39,7 @@ jobs: with: node-version: '24' - # Dates the section, writes the compare link, bumps api/package.json and - # moves the demo pin in render.yaml. + # Dates the section, writes the compare link and bumps api/package.json. - name: Prepare the release env: VERSION: ${{ inputs.version }} @@ -65,7 +64,7 @@ jobs: git config user.name 'SandObserver' git config user.email '260779319+SandObserver@users.noreply.github.com' git checkout -b "${BRANCH}" - git add CHANGELOG.md api/package.json render.yaml + git add CHANGELOG.md api/package.json git commit -m "Release ${VERSION}" git push "https://x-access-token:${GH_TOKEN}@github.com/${REPO}.git" "HEAD:${BRANCH}" gh pr create \ @@ -77,7 +76,6 @@ jobs: '**Summary**' \ "- Date Unreleased as ${VERSION} and add its compare link." \ "- Bump api/package.json to ${VERSION}." \ - "- Pin the demo image to ${VERSION} in render.yaml." \ '' \ '**Testing**' \ 'The changelog gate ran in release mode before this branch was pushed. Merging this tags the release and publishes the image.' \ diff --git a/README.md b/README.md index 3cdd60e7..10469b86 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,7 @@

Stackyard dashboard

-

Try it: demo.sandobserver.com
-Note: The first demo visit may take up to a minute due to Render's free-tier cold start. +

Try it: demo.sandobserver.com Most dashboards are a wall of numbers and charts. Stackyard is the opposite: a calm, launcher-style grid of app tiles, folders, and a small number of *genuinely useful* widgets, running in a single container. Built to be glanced at a hundred times a day without feeling cluttered. diff --git a/render.yaml b/render.yaml deleted file mode 100644 index 2cf09d2d..00000000 --- a/render.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Render blueprint for the public demo (https://render.com/docs/blueprint-spec). -# Runs a published release image in demo mode: read-only, bundled sample config, -# no outbound requests. -# -# PORT must be 80. Render routes traffic to whatever PORT says, and nginx is the -# process that serves the dashboard on 80. The API is unaffected: supervisord -# pins PORT=3000 for the API process, and nginx proxies to 127.0.0.1:3000. -services: - - type: web - name: stackyard-demo - runtime: image - plan: free - region: oregon - image: - url: ghcr.io/sandobserver/stackyard:1.18.0 - envVars: - - key: DEMO_MODE - value: "true" - - key: PORT - value: "80" - - key: TRUST_PROXY - value: "true" - healthCheckPath: /health diff --git a/scripts/changelog-check.js b/scripts/changelog-check.js index 339fd00a..103fec82 100644 --- a/scripts/changelog-check.js +++ b/scripts/changelog-check.js @@ -159,8 +159,8 @@ function checkStyle(version) { const short = text => (text.length > 60 ? `${text.slice(0, 57)}...` : text); -/** The release-time half: the changelog, the package version and the demo pin - must all name the same release. */ +/** The release-time half: the changelog and the package version must name the + same release. */ function checkRelease(doc, version) { const releases = cl.released(doc); const newest = releases[0]; @@ -175,12 +175,6 @@ function checkRelease(doc, version) { const pkg = JSON.parse(fs.readFileSync(path.join(ROOT, 'api', 'package.json'), 'utf8')); if (pkg.version !== version) fail(1, `api/package.json is ${pkg.version}, not ${version}`); - const render = fs.readFileSync(path.join(ROOT, 'render.yaml'), 'utf8'); - const pinned = /stackyard:(\S+)/.exec(render); - if (!pinned || pinned[1] !== version) { - fail(1, `render.yaml pins the demo to ${pinned ? pinned[1] : 'nothing'}, not ${version}`); - } - const previous = releases[1]; if (previous && newest) { const implied = cl.impliedBump(newest); diff --git a/scripts/dockerhub-description.js b/scripts/dockerhub-description.js index 9a32785f..adc58716 100644 --- a/scripts/dockerhub-description.js +++ b/scripts/dockerhub-description.js @@ -31,7 +31,6 @@ const HEADER = `# Stackyard ![Stackyard dashboard](${RAW}/docs/screenshot.png) Try it: **[demo.sandobserver.com](https://demo.sandobserver.com)** -The first demo visit may take up to a minute due to Render's free-tier cold start. Documentation: **[stackyard.sandobserver.com/docs](https://stackyard.sandobserver.com/docs/)** diff --git a/scripts/release-prep.js b/scripts/release-prep.js index cd89df45..05676d8f 100644 --- a/scripts/release-prep.js +++ b/scripts/release-prep.js @@ -1,6 +1,6 @@ #!/usr/bin/env node /* Prepares a release: dates the [Unreleased] section, adds its compare link, - bumps api/package.json, and moves the demo image pin in render.yaml. + and bumps api/package.json. Writes files. Run it on a branch, never on the default branch. @@ -61,14 +61,8 @@ function main(argv) { const bumped = pkg.replace(/("version":\s*")[^"]+(")/, `$1${version}$2`); if (bumped === pkg) die(`${pkgPath} has no version field to bump`); - const renderPath = 'render.yaml'; - const render = read(renderPath); - const pinned = render.replace(/(stackyard:)\d+\.\d+\.\d+\S*/, `$1${version}`); - if (pinned === render) die(`${renderPath} does not pin an image tag; the demo would stay on the old release`); - write('CHANGELOG.md', changed.markdown); write(pkgPath, bumped); - write(renderPath, pinned); console.error(`release-prep: ${changed.previous ?? 'first release'} -> ${version} (${date})`); console.log(`version=${version}`); diff --git a/test/repo/release-prep-order.test.js b/test/repo/release-prep-order.test.js index 9eb2bd66..de17ea2e 100644 --- a/test/repo/release-prep-order.test.js +++ b/test/repo/release-prep-order.test.js @@ -37,7 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 @param {string} name @returns {string} absolute path to the copy */ function seededRepo(name) { const dir = path.join(tmpDir(name), 'repo'); - for (const p of ['scripts', 'api/package.json', 'render.yaml']) { + for (const p of ['scripts', 'api/package.json']) { const dst = path.join(dir, p); fs.mkdirSync(path.dirname(dst), { recursive: true }); fs.cpSync(path.join(ROOT, p), dst, { recursive: true });