Skip to content

Your Apps: review changes before publishing - #186

Merged
TigerYWang merged 10 commits into
mainfrom
dev/your-apps-v4
Nov 12, 2026
Merged

TigerYWang merged 10 commits into
mainfrom
dev/your-apps-v4

Conversation

@abhaypadmanabhan

@abhaypadmanabhan abhaypadmanabhan commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

What changes

Your Apps leads with Preview and Live, a named Show password control, and Review preview highlighted when changes are unpublished. Publishing confirms the exact version and destination; cancelling restores the review emphasis. Local work, history and technical settings stay one level deeper. Editing stays available. The approved Paper design uses Bops' existing controls and highlighter. Design and proof map: docs/YOUR-APPS-V4.md.

Merged with main (#176, #178, #179, #183, #185, #187, #138, #191 and the 0.0.51 and 0.0.52 releases), and with the review findings fixed:

  • GitHub production, as members see it. An Admin's (or a Member's) review of an app on GitHub reads Live from the last push, as the owner's page does, never Orgo's Published, which a push doesn't move. Bops Cloud passes the changeset last sent there as SharedApp.github.at at every level (null while not linked; never the GitHub commit). With a Bops Cloud that only says Admins link an app to GitHub and bring in its changes; apps use keys from Keys; notes for 0.0.52 #191's linked (Write), Live is read from that; with one that says neither, from Published as before, and Publish stays pressable.
  • Where Publish goes (Your Apps and the bot say where Publish goes: GitHub, or a domain not pointed at Orgo yet #179) is said in the Publish confirmation, not as a line under the row: "Publish sends it to GitHub (repo, branch), where its own deploy puts it live." with repo · branch as the destination, or "Visitors to won't see a publish until its DNS points at Orgo." with the domain.
  • Admins keep Update preview beside Publish changes, so they can rebuild the Preview after changing its build settings. An Admin never gets an "Add a domain" they can't use: Update preview takes its place.
  • Admins link an app to GitHub and bring in its changes; apps use keys from Keys; notes for 0.0.52 #191's GitHub part (Link, Bring in, where it publishes) sits in Technical details, where the owner's GitHub menu is. Publish waits while its computer works on GitHub, and says "Link it to GitHub first." until it's linked.
  • A failed preview update no longer blocks publishing what the Preview still serves when that isn't live.
  • Restore on an app of more than one site says "Restore to preview, all sites" (same request as before).
  • No apps and hosting closed: only why, quietly, and the tools; no invitation to add a website that can't go on the web.
  • GitHub words no longer point to a "menu beside Publish"; the refusal for an app not linked yet says "Link it first, from Technical details in Your Apps." The bot's note names the Preview button by its new name, Update preview.
  • scripts/verify is one ESM dispatcher: browser-speed, browser-input, your-apps [--ui]; --list names them. docs/FEATURES.md is one table.
  • The task note and the 4 MB of screenshots are out of the branch. The before and after pictures (1440px and 1180px) are in this description's edit history and at commit 29fdb9f.

Why

People could not tell what needed review, where to find the preview password, or what publishing would affect. This makes the next action visible while keeping technical information on demand. "Unpublished" describes a preview/release difference; it does not claim a recorded approval. The merge fixes keep #179's and #191's GitHub work true on the new page: without them an Admin's view of a GitHub app said "1 unpublished change" forever after publishing, or offered only a disabled "Add a domain".

How I checked it

On head 6b32678a (Linux dev box, Node 24, main's lockfile); 4d35b05b only rewrites one older test assertion CodeQL took for a URL check (UI suite rerun: 89 passed). GitHub CI on 4d35b05b: check, cloud-tests and CodeQL pass.

  • npx next typegen, npx tsc --noEmit -p ., npx tsc -p cloud/tsconfig.json --noEmit: clean. npm run lint: 0 errors (19 warnings, all in files this PR doesn't touch).
  • node scripts/test-hosted-apps-ui.mjs 89 passed; test-app-status.mjs 15; test-preview-password-ui.mjs 10; test-shared.mjs 71; test-state-merge.mjs 42.
  • node --conditions=react-server scripts/test-hosted-apps.mjs 144; test-github-mirror.mjs 26; test-member-acts.mjs 41; test-chat-tools.mjs 91; test-keys.mjs 51; test-runner-chat.mjs 13.
  • scripts/verify targets' own tests: node --test scripts/test-browser-probe.mjs 13; node scripts/test-browser-view.mjs 4.
  • Bops Cloud on a throwaway Postgres 18: node --test --test-concurrency=1 "cloud/test/core-*.test.ts" 380/380; "cloud/test/edge-*.test.ts" cloud/test/server.test.ts 196/196.
  • node scripts/test-your-apps-e2e.mjs (the --ui pass, local two-person stack, every publishing request answered locally): 95 PASS at 1440px and 1180px, no page or console errors.
  • New checks fail on the code before each fix: the GitHub and where-Publish-goes UI tests on Your Apps: review changes before publishing #186's shared-apps.tsx, the Cloud at test on main's slice, and the Update preview, all sites, closed list, GitHub words and failed preview checks on the merge state.
  • check-public.sh on HEAD: OK. gitleaks over the new commits: no leaks.

Not done or limits

  • The browser checks prove the UI and its requests on fixtures, not a real GitHub push or Orgo deploy.
  • An Admin's view of a GitHub app reads Live correctly only from a Bops Cloud with this change (at), or at Write from 0.0.52's (linked); an older Bops Cloud falls back to Published, as before this PR.
  • The removed task note and screenshots are still in this branch's earlier commits; a squash merge leaves them out of main.
  • Update preview for members deploys every site of an app with more than one, as before; the "all sites" words are on Restore only.

Brings in #176, #178, #179, #183 and #185. Where they meet the new Your Apps:

- An Admin's review of an app whose production is on GitHub now reads Live from the
  last push, as the owner's own page does, not from Orgo's Published, which a push
  never moves. Bops Cloud passes the changeset last sent to GitHub with the repo and
  branch (SharedApp.github.at; null while it isn't linked, never the GitHub commit).
  From a Bops Cloud without it, Live is read from Published as before and Publish
  stays pressable.
- #179's words for where Publish goes are said in the Publish confirmation, not as a
  line under the row: "Publish sends it to GitHub (repo, branch)..." with the repo and
  branch as the destination, or "Visitors to <domain> won't see a publish until its DNS
  points at Orgo." with the domain. A domain that isn't live says its state in
  Technical details. #179's checks are ported to the new page.
- scripts/verify is one dispatcher for browser-speed, browser-input and your-apps
  (--list names them), and docs/FEATURES.md is one table.
…view links (#187)

Brings in #138, #187 and the 0.0.51 notes. Bops Cloud's slice keeps both: the
changeset last sent to GitHub beside the repo and branch, and #187's Preview links
and its larger cap on apps shown.
…ill be published

- An Admin's review has Update preview beside Publish changes, so they can rebuild the
  Preview after changing its build settings, as a Write Member and the owner can. An
  Admin is never shown an "Add a domain" they can't use: with no domain yet, Update
  preview is the button.
- When the newest preview update failed but the Preview still serves a version that
  isn't live, Publish changes stays the button ("The last preview update failed. What
  the preview still has can be published."). A failed publish now reads "Publish
  failed" on the row, whatever comes next.
- An app of more than one site says "Restore to preview, all sites" in Version history,
  as the old "Preview this one, all sites" did; the request is the same.
- With no apps and hosting closed here, Your Apps shows only why, quietly, and the
  tools: no invitation to add a website that can't go on the web.
- GitHub words no longer send people to a "menu beside Publish": the link is in the
  menu on the Published line, in Technical details. The bot's note names the Preview
  button by its new name, Update preview.
The before and after pictures are in the PR description's history instead, and the
design doc says so. The doc also lists the checks added with the merge.
…#191)

Brings in #191 and releases 0.0.51 and 0.0.52. Where they meet the new Your Apps:

- An Admin's (or a Member's with App secrets) GitHub part sits in Technical details,
  where the owner's GitHub menu is. While its computer links the app or brings
  GitHub's changes in, Publish waits ("Its computer is busy with GitHub. Publish once
  it's done."); Update preview doesn't. Not linked yet, Publish says "Link it to GitHub
  first."
- Bops Cloud says the changeset last sent to GitHub (`at`) at every level, beside
  #191's `linked` at Write, so a Read member's review reads Live from GitHub too. A
  Bops Cloud with only `linked` (0.0.52) is read from that, at Write.
- The refusal for an app not linked yet reads "Link it first, from Technical details
  in Your Apps.", where both the owner and an Admin find Link.
- #191's GitHub part checks are ported to the new page, with the words check the old
  shared page test had. The browser run answers /api/keys/apps for the sample, as it
  answers the other app routes.
@TigerYWang

Copy link
Copy Markdown
Contributor

Merged main into this branch (three merges, since main moved twice while I worked: #179/#183 and friends, then #187, then #191) and fixed the review findings. What changed:

Checks on 6b32678: types and lint clean; UI 89, status 15, password 10, sharing 71, hosted-apps 144, github-mirror 26, member-acts 41, chat-tools 91, keys 51, runner-chat 13, state-merge 42; Cloud core 380/380, edge 196/196; browser 95 PASS at both widths. The PR description has the details.

…ring

CodeQL took the substring check in this test for a URL check. The test still asks the
same thing: the domain, its account and Use are shown.
@TigerYWang
TigerYWang merged commit f0647b4 into main Nov 12, 2026
8 checks passed
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.

2 participants