Sitelet https://github.com/Nishfleet/tinystudio-in/pull/18
Skip to content

fix(public): repair heading hierarchy on audited pages - #18

Merged
nish3451 merged 2 commits into
mainfrom
fix/public-heading-hierarchy
Aug 8, 2026
Merged

nish3451 merged 2 commits into
mainfrom
fix/public-heading-hierarchy

Conversation

@nish3451

@nish3451 nish3451 commented Aug 8, 2026 •

Copy link
Copy Markdown
Member

intended-outcome: Remove the dogfood-reported H1-to-H3 jumps from /contact, /promptly, /promptly/privacy, and /drishti while preserving visible copy, IDs, classes, links, and styling.

verify: The new focused test fails on the pre-fix pages (4 H1-to-H3 failures) and passes after the fix (18 checks). npm run check and npm test pass through test-gate; git diff --check is clean. sgscan diff-only review reports 0 changed-line findings; its remaining warnings are baseline-only.

Scope: PR-only. No deploy, merge, dependency, auth, payment, lead/customer, migration, pricing, or legal-copy changes.

Summary by CodeRabbit

  • Accessibility

    • Improved heading structure across contact, Drishti, Promptly, and Promptly Privacy pages by promoting section and card headings for clearer navigation with assistive technologies.
  • Quality Improvements

    • Added automated checks to verify heading hierarchy, including a single page title, proper heading order, and no skipped levels.
    • Integrated these checks into routine test and continuous-integration validation.

intended-outcome: remove H1-to-H3 heading jumps on the four dogfood-flagged public pages without changing visible copy or styling.

verify: test-public-heading-hierarchy, npm run check, npm test, git diff --check; sgscan diff-only review found no changed-line findings.

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: 3848e28f-c61c-4e21-8e15-cdfc7178f518

📥 Commits

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

📒 Files selected for processing (6)
  • package.json
  • public/contact/index.html
  • public/drishti/index.html
  • public/promptly/index.html
  • public/promptly/privacy/index.html
  • scripts/test-public-heading-hierarchy.mjs

📝 Walkthrough

Walkthrough

Selected headings on four public pages change from H3 to H2. A Node.js validator checks heading hierarchy and runs through both the test and ci npm scripts.

Changes

Heading hierarchy updates

Layer / File(s) Summary
Correct public heading levels
public/contact/index.html, public/drishti/index.html, public/promptly/index.html, public/promptly/privacy/index.html
Selected section and card headings change from <h3> to <h2>.
Automated heading hierarchy checks
scripts/test-public-heading-hierarchy.mjs, package.json
The validator checks heading presence, H1 structure, and heading-level transitions on four pages. The test and ci scripts invoke it.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 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 main change: repairing heading hierarchy on the audited public pages.
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/public-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: 7f5c556b73

ℹ️ 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 public/contact/index.html
<div class="info-card">
<p class="eyebrow">Managed service</p>
<h3>The Website Correction</h3>
<h2>The Website Correction</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 the prior presentation when changing heading levels

When these pages render with /styles.css, this semantic change also alters their presentation: h2 receives a much larger clamp(2.2rem, 4vw, 4.2rem) size, a 12ch maximum width, and a top margin (public/styles.css:212-216), while the previous h3 used clamp(1.65rem, 2vw, 2.35rem) and .info-card h3 had component-specific spacing (public/styles.css:218-220,703-705). Consequently, every converted card and strip heading across the four audited pages becomes substantially larger and narrower, causing extra wrapping and potentially taller cards; add an h2 component style or class that retains the previous visual treatment while fixing the semantic hierarchy.

Useful? React with 👍 / 👎.

@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.

@nish3451
nish3451 merged commit 71a20a4 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 12, 2026
…y finding

The 2026-08-08 dogfood finding "Heading hierarchy needs cleanup on
/contact" (finding 52753880dfc7) was repaired in source by PR #18
(card headings promoted from H3 to H2, outline H1 -> H2s -> H3s with
no jumps), and scripts/test-public-heading-hierarchy.mjs guards the
worktree HTML. But the live site still serves the June-20 bundle: the
deployed /contact/ 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.

Land the live guard following the fleet's live-guard pattern:
- scripts/test-public-live-contact-heading-hierarchy.mjs (new): fetches
  the deployed /contact/ and /styles.css, then re-asserts the repaired
  outline (exactly one H1 first, three H2 card titles inside .info-card,
  flat H2 band before footer H3s, no heading-level jump greater than one)
  and the shared .info-card :is(h2, h3) rule at the former card scale.
- Wired as npm run site:check-live-contact-heading-hierarchy and into
  the nightly live-site-check.yml staleness alarm. Deliberately NOT part
  of npm run test / npm run ci - blocking chains stay green on repo
  state alone, same convention as the soft-404 guard.
- scripts/check-public-live-deploy.mjs: the deploy lane's post-deploy
  acceptance now also asserts H2-after-H1 on /contact/, so the moment
  the Pages token is provisioned and the lane publishes, the live repair
  is verified as part of deploy acceptance.
- Network-tolerant: skips when the site is unreachable; fails loudly
  when the deployment serves stale pages.

verify: node scripts/test-public-heading-hierarchy.mjs green; guard
fails loudly on the current stale deployment; SKIP_LIVE_CHECKS=1 exit 0;
git diff --check clean
nish3451 added a commit that referenced this pull request Aug 12, 2026
…y finding (#119)

The 2026-08-08 dogfood finding "Heading hierarchy needs cleanup on
/contact" (finding 52753880dfc7) was repaired in source by PR #18
(card headings promoted from H3 to H2, outline H1 -> H2s -> H3s with
no jumps), and scripts/test-public-heading-hierarchy.mjs guards the
worktree HTML. But the live site still serves the June-20 bundle: the
deployed /contact/ 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.

Land the live guard following the fleet's live-guard pattern:
- scripts/test-public-live-contact-heading-hierarchy.mjs (new): fetches
  the deployed /contact/ and /styles.css, then re-asserts the repaired
  outline (exactly one H1 first, three H2 card titles inside .info-card,
  flat H2 band before footer H3s, no heading-level jump greater than one)
  and the shared .info-card :is(h2, h3) rule at the former card scale.
- Wired as npm run site:check-live-contact-heading-hierarchy and into
  the nightly live-site-check.yml staleness alarm. Deliberately NOT part
  of npm run test / npm run ci - blocking chains stay green on repo
  state alone, same convention as the soft-404 guard.
- scripts/check-public-live-deploy.mjs: the deploy lane's post-deploy
  acceptance now also asserts H2-after-H1 on /contact/, so the moment
  the Pages token is provisioned and the lane publishes, the live repair
  is verified as part of deploy acceptance.
- Network-tolerant: skips when the site is unreachable; fails loudly
  when the deployment serves stale pages.

verify: node scripts/test-public-heading-hierarchy.mjs green; guard
fails loudly on the current stale deployment; SKIP_LIVE_CHECKS=1 exit 0;
git diff --check clean
nish3451 added a commit that referenced this pull request Aug 14, 2026
… PR #18, live blocked on missing Cloudflare token (#169)

The dogfood finding "Heading hierarchy needs cleanup on /contact"
(52753880dfc7) was repaired in source by PR #18 (commit 71a20a4,
"fix(public): repair heading hierarchy on audited pages"): the three
.info-card card headings were promoted from H3 to H2, giving the
outline H1 -> H2s -> H3 footer columns with no jumps.
scripts/test-public-heading-hierarchy.mjs pins the repaired outline
(93 checks, 0 failures locally), and
scripts/test-public-live-contact-heading-hierarchy.mjs guards the
deployed page (nightly live-site-check workflow).

Re-verified live: tinystudio.in/contact/ still serves the stale
June-20 bundle (H1 -> H3 H3 H3), not because of any source defect but
because CLOUDFLARE_API_TOKEN is missing from repo secrets and the
deploy workflow fails closed at the "Required Pages secrets not
provisioned" step (runs 31842883261, 31839437264, 31837007159 all
failed; every main-merge deploy since 2026-06-20 fails identically).
Provisioning that token is a Nish action outside this lane's scope;
this report documents the verification.

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
nish3451 added a commit that referenced this pull request Aug 15, 2026
… PR #18, live blocked on missing Cloudflare token (#170)

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
nish3451 added a commit that referenced this pull request Aug 15, 2026
…n PR #18, live still blocked on missing Cloudflare token (#176)

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
@nish3451
nish3451 deleted the fix/public-heading-hierarchy branch September 19, 2026 09:26
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