Skip to content

fix(public): restore Promptly support heading hierarchy - #20

Merged
nish3451 merged 1 commit into
mainfrom
fix/promptly-support-heading-hierarchy
Aug 8, 2026
Merged

fix(public): restore Promptly support heading hierarchy#20
nish3451 merged 1 commit into
mainfrom
fix/promptly-support-heading-hierarchy

Conversation

@nish3451

@nish3451 nish3451 commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

Intended outcome

Promptly support exposes a coherent H1-to-H2 heading outline without changing visible copy, styling, links, or support workflow.

What changed

  • Promote the three content-card headings from H3 to H2 beneath the page H1.
  • Add a regression assertion to the existing operator-surface suite so the skipped level cannot return.

Verify

  • test-gate npm test — passed, 126 checks
  • test-gate npm run ci — passed, 126 checks
  • git diff --check — passed
  • node --check scripts/test-active-operator-surfaces.mjs — passed
  • sgscan — pre-existing warnings only; no new finding attributable to this diff

Live deployment proof remains separate from this PR.

Summary by CodeRabbit

  • Accessibility

    • Improved support-page heading structure by promoting card headings from H3 to H2 for clearer content hierarchy.
  • Tests

    • Added validation to ensure support-page headings follow the expected order.

intended-outcome: Promptly support exposes a coherent H1-to-H2 heading outline without changing visible copy or routing.

verify: /home/nish/.local/bin/test-gate npm test; /home/nish/.local/bin/test-gate npm run ci; git diff --check; node --check scripts/test-active-operator-surfaces.mjs; sgscan (pre-existing warnings only).

Co-Authored-By: Claude <noreply@anthropic.com>

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7f1d85dc-e14a-4f3c-8c95-758631f98efe

📥 Commits

Reviewing files that changed from the base of the PR and between a662a53 and b4db763.

📒 Files selected for processing (2)
  • public/promptly/support/index.html
  • scripts/test-active-operator-surfaces.mjs

📝 Walkthrough

Walkthrough

The support page now uses H2 elements for its three card headings. Automated checks validate that H2 content follows the H1 and that no H3 appears before H2 content.

Changes

Support heading hierarchy

Layer / File(s) Summary
Update support headings and validate order
public/promptly/support/index.html, scripts/test-active-operator-surfaces.mjs
The “Email route,” “Related pages,” and “Public role” card headings now use H2 elements. The validation script checks the required H2 placement and rejects H3 headings before H2 content.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the heading hierarchy fix on the Promptly support page.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/promptly-support-heading-hierarchy

Comment @coderabbitai help to get the list of available commands.

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

Copy link
Copy Markdown

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: b4db763013

ℹ️ 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".

<article class="info-card reveal delay-1">
<p class="eyebrow">Email route</p>
<h3>A support address that is ready now.</h3>
<h2>A support address that is ready now.</h2>

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 Preserve card styling when promoting the headings

At every viewport, changing these elements to h2 also changes their presentation: the global h2 rule in public/styles.css:212-216 uses a 2.2–4.2rem size and a 12ch maximum width, whereas these cards previously received the 1.65–2.35rem h3 size and the .info-card h3 spacing in public/styles.css:218-220,703-705. Consequently all three card headings become substantially larger and reflow, despite this change's stated semantic-only outcome; add equivalent card-scoped styling for the promoted h2 elements.

Useful? React with 👍 / 👎.

const promptlySupport = readFileSync(join(C, "public/promptly/support/index.html"), "utf8")
const promptlySupportHeadings = [...promptlySupport.matchAll(/<h([1-3])\b/gi)].map(match => Number(match[1]))
ok(promptlySupportHeadings.indexOf(2) > promptlySupportHeadings.indexOf(1), "Promptly support must introduce H2 content after its H1")
ok(!promptlySupportHeadings.slice(promptlySupportHeadings.indexOf(1) + 1).some((level, index, levels) => level === 3 && (index === 0 || levels[index - 1] < 2)), "Promptly support must not skip H2 before content H3 headings")

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 Assert every promoted card heading

If either the second or third content-card heading regresses to h3, the resulting sequence still begins h1, h2, h3, so both new assertions pass because every later h3 is effectively blessed by the first card's h2. This therefore does not guard the three promotions it was added to protect; select the three .info-card headings or compare their expected levels directly.

Useful? React with 👍 / 👎.

@nish3451
nish3451 merged commit 1536cc8 into main Aug 8, 2026
3 checks passed
nish3451 added a commit that referenced this pull request Aug 11, 2026
… leave the June-20 bundle (#81)

* fix(public): add the tinystudio.in release lane (Cloudflare Pages deploy path repair)

The live site has served the 2026-06-20 bundle (07acd07) since June 20 while
17+ public PRs merged to main; the Cloudflare Pages git connection for
tiny-studio-3f5 never shows checks/statuses on commits and no deploy
workflow or secrets exist in the repo. The fleet Workers token lacks
Cloudflare Pages:Edit, so no automation on this box can publish today.

Add an in-repo release lane that works the moment a Pages-scoped token is
provisioned (documented fail-closed message):
- scripts/prepare-public-deploy-bundle.mjs: filtered bundle (public/ minus
  the snoozed-by-Nish managed-service buyer path from PRs #10/#11; every
  other merged fix preserved), fail-closed in both directions
- scripts/test-public-deploy-bundle.mjs: regression guard, wired into
  npm test/ci (62 checks)
- scripts/publish-public-site.mjs: prepare -> wrangler pages deploy to
  tiny-studio-3f5 -> live verification
- scripts/check-public-live-deploy.mjs: live proof for the deploy-path
  accept (H2-after-H1 /promptly/support/ #18/#20, JSON-LD /contact/ #19,
  real 404s #34, homepage portfolio-only #29 + no buyer path)
- .github/workflows/deploy-public-site.yml: vps-verify lane on push to main
- wrangler 4.120.0 devDependency

verify: npm test (603 checks, 0 failures); node scripts/prepare-public-deploy-bundle.mjs; git diff --check

* fix(public): attach the source commit to Cloudflare Pages deployments

wrangler pages deploy accepts --commit-hash/--commit-message/--commit-dirty
for dashboard provenance. The bundle already records source_commit in
deploy-manifest.json; pass it through so the Pages dashboard links the
deployment to the exact tinystudio-in commit that produced the bundle.

verify: node --check scripts/publish-public-site.mjs; node scripts/test-public-deploy-bundle.mjs (62 checks, 0 failures)

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>

---------

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
nish3451 added a commit that referenced this pull request Aug 11, 2026
…-heading finding

The 2026-08-08 scout item named /promptly/support/: it was repaired in
source by PR #20 (H1 -> H2 cards, no outline jumps) and origin/main
already carries the fixed outline, but the live site still serves the
June-20 bundle: the deployed page jumps H1 -> H3 (live outline
[1,3,3,3,2,3,3,3]) and the deployed stylesheet keeps the old
.info-card h3-only rule, so the finding silently stays open against
tinystudio.in.

The local suite (test-public-heading-hierarchy.mjs) did not even assert
public/promptly/support/index.html, and the live heading-hierarchy
guard from PR #76 checks Drishti support and Privacy Choices but not
the scout's own page.

Add /promptly/support/ to the local suite's affected pages (50 checks,
0 failures) and add scripts/test-public-live-heading-hierarchy.mjs
guarding /promptly/support/ plus the two pages PR #76 covers, wired
into npm test and npm run ci. Network-tolerant: skips when the site is
unreachable, fails loudly while it serves the stale bundle. Once the
release lane (PR #70) publishes the fixed bundle, the guard flips
green. Publishing from this box is still blocked: the fleet Cloudflare
token returns 403 on the Pages projects API (no Pages:Edit), and no
Pages-scoped secret or wrangler exists here.

intended-outcome: the Promptly support heading hierarchy can no longer
regress silently on the live site; the stale June-20 deployment fails
npm test/ci loudly until the fixed bundle is published.

verify: node scripts/test-public-heading-hierarchy.mjs 50 checks 0
failures; node scripts/test-public-live-heading-hierarchy.mjs fails
loudly on the current deployment (25 checks, 14 failures, all
stale-deployment detections); npm test otherwise clean; find scripts
-name '*.mjs' node --check clean; git diff --check clean
nish3451 added a commit that referenced this pull request Aug 11, 2026
…-heading finding

The 2026-08-08 scout item named /promptly/support/: it was repaired in
source by PR #20 (H1 -> H2 cards, no outline jumps) and origin/main
already carries the fixed outline, but the live site still serves the
June-20 bundle: the deployed page jumps H1 -> H3 (live outline
[1,3,3,3,2,3,3,3]) and the deployed stylesheet keeps the old
.info-card h3-only rule, so the finding silently stays open against
tinystudio.in.

The local suite (test-public-heading-hierarchy.mjs) did not even assert
public/promptly/support/index.html, and the live heading-hierarchy
guard from PR #76 checks Drishti support and Privacy Choices but not
the scout's own page.

Add /promptly/support/ to the local suite's affected pages (50 checks,
0 failures) and add scripts/test-public-live-heading-hierarchy.mjs
guarding /promptly/support/ plus the two pages PR #76 covers, wired
into npm test and npm run ci. Network-tolerant: skips when the site is
unreachable, fails loudly while it serves the stale bundle. Once the
release lane (PR #70) publishes the fixed bundle, the guard flips
green. Publishing from this box is still blocked: the fleet Cloudflare
token returns 403 on the Pages projects API (no Pages:Edit), and no
Pages-scoped secret or wrangler exists here.

intended-outcome: the Promptly support heading hierarchy can no longer
regress silently on the live site; the stale June-20 deployment fails
npm test/ci loudly until the fixed bundle is published.

verify: node scripts/test-public-heading-hierarchy.mjs 50 checks 0
failures; node scripts/test-public-live-heading-hierarchy.mjs fails
loudly on the current deployment (25 checks, 14 failures, all
stale-deployment detections); npm test otherwise clean; find scripts
-name '*.mjs' node --check clean; git diff --check clean
nish3451 added a commit that referenced this pull request Aug 12, 2026
…-heading finding (fresh, superseding stale PR #77)

The 2026-08-08 scout item named /promptly/support/: the source outline was
repaired by PR #20 (H1 -> H2 cards) and origin/main carries the fixed
markup, but production still serves the June-20 bundle - the deployed page
jumps H1 -> H3 (verified live 2026-08-12) and the deployed stylesheet keeps
the old .info-card h3-only rule, so the finding stays open against
tinystudio.in.

The closed live-delivery item's guard (PR #77, fix/lane1-promptly-support-
heading-hierarchy-live-guard) was never merged: it conflicts with current
main and its script asserted npm test/ci wiring that its own header
forbids. This lands the guard fresh from origin/main following the fleet's
settled convention (standalone, out of the blocking chain, in the nightly
net - matching PR #118 for the other two repaired pages):

- scripts/test-public-heading-hierarchy.mjs now asserts
  public/promptly/support/index.html (68 checks, 0 failures; the scout's
  own page was previously unasserted in source)
- scripts/test-public-live-promptly-support-heading.mjs (new): re-asserts
  the repaired outline + card-heading CSS rule against the live site;
  network-tolerant skip, fails loudly while the stale bundle is served
  (verified: 14 checks, 8 failures against the current deployment)
- npm run site:check-live-promptly-support-heading on-demand entry point
- .github/workflows/live-site-check.yml: nightly job alongside soft-404

The deploy acceptance (scripts/check-public-live-deploy.mjs, already on
main) verifies H2-after-H1 on /promptly/support/ the moment the release
lane publishes; the lane stays dormant until the Pages-scoped
CLOUDFLARE_API_TOKEN secret is provisioned (documented NEEDS-NISH step).
nish3451 added a commit that referenced this pull request Aug 14, 2026
…ve blocked on missing Cloudflare token (#167)

Re-verified 2026-08-15 on lane resume: fix 1536cc8 (PR #20) is in main and
test-pinned; live tinystudio.in/promptly/support/ still serves the old H1->H3
outline because every deploy run fails at the fail-closed missing
CLOUDFLARE_API_TOKEN step. NEEDS-NISH: provision the secret.

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
nish3451 added a commit that referenced this pull request Aug 19, 2026
…upport-live-heading-guard

fix(public): alarm live Promptly support H2 cards from PR #20
nish3451 pushed a commit that referenced this pull request Aug 20, 2026
…he outline is live

The nightly live guard's closing line claimed the finding "stays open"
against tinystudio.in; production now serves the PR #20 repaired outline
(9 checks, 0 failures), so the line now states the deployed page keeps
the repaired outline and names the reverify lane report. Assertions
unchanged.

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
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