Skip to content

polish(marketing): remove prose em/en-dashes site-wide (incl. homepage) - #235

Merged
ejay-dev merged 1 commit into
mainfrom
feat/em-dash-sweep
Jun 4, 2026
Merged

polish(marketing): remove prose em/en-dashes site-wide (incl. homepage)#235
ejay-dev merged 1 commit into
mainfrom
feat/em-dash-sweep

Conversation

@ejay-dev

@ejay-dev ejay-dev commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Final dash sweep across the whole marketing site, including the homepage components previously left to the hero owner.

  • Em-dashes (—) and en-dashes (–) in visible copy → commas (prose) or hyphens (numeric ranges). The homepage audit-trail / outcome / value-prop sections that read "uploaded — by named owner" / "anchored — Sigstore Rekor entry" are now clean.
  • Protected (intact): the functional '—' UI sentinels — the comparison-table "not-included" marker (PricingComparisonTable) and empty-value ?? '—' placeholders (VerifyClient, StatusPageClient). Those are correct UI dashes, not prose.

Safe by construction: em/en-dashes only ever appear in strings, JSX text, or comments (never code logic outside those sentinels), so the blanket replace is non-breaking. 62 files, symmetric 190/190. tsc + eslint clean; home + pricing/security/features/enterprise all 200; homepage audit-trail fix verified in-browser.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Updated inline comments and documentation across marketing components for clarity and consistency.
  • Style

    • Standardized punctuation throughout the codebase, replacing em-dashes with commas and hyphens in marketing copy, metadata, and comments.
  • Chores

    • Refined marketing copy and text formatting across blog content, product pages, and metadata for improved consistency and readability.

Final dash sweep across the whole marketing site, including the homepage
components I'd previously left to the hero owner. Em-dashes (—) and
en-dashes (–) in visible copy are replaced with commas (prose) or
hyphens (numeric ranges); the homepage audit-trail / outcome / value-prop
sections that still read "uploaded — by named owner" are now clean.

Protected (left intact): the functional '—' UI sentinels — the
comparison-table "not included" marker (PricingComparisonTable) and
empty-value placeholders (VerifyClient, StatusPageClient) — which are
correct UI dashes, not prose.

Safe by construction: em/en-dashes only ever appear in strings, JSX
text, or comments (never code logic outside those sentinels), so the
blanket replace is non-breaking — tsc + eslint clean, all routes 200.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
forma-os Ready Ready Preview, Comment Jun 4, 2026 6:21am

@ejay-dev
ejay-dev merged commit 3ffb598 into main Jun 4, 2026
22 of 29 checks passed
@ejay-dev
ejay-dev deleted the feat/em-dash-sweep branch June 4, 2026 06:17
@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 20df3bd0-0c04-4772-bfbe-12dfabbc9488

📥 Commits

Reviewing files that changed from the base of the PR and between b41a623 and 8da7c4c.

📒 Files selected for processing (62)
  • app/(marketing)/about/AboutPageContent.tsx
  • app/(marketing)/author/[slug]/page.tsx
  • app/(marketing)/blog/blogData.ts
  • app/(marketing)/compare/CompareIndexContent.tsx
  • app/(marketing)/compare/components/CompareHeroVisual.tsx
  • app/(marketing)/compare/healthmetrics/opengraph-image.tsx
  • app/(marketing)/components/FigmaHomepage.tsx
  • app/(marketing)/components/Footer.tsx
  • app/(marketing)/components/HeroStaticShell.tsx
  • app/(marketing)/components/HomeProofStaticShell.tsx
  • app/(marketing)/components/MobileNav.tsx
  • app/(marketing)/components/homepage/AuditChainSection.tsx
  • app/(marketing)/components/homepage/CTASection.tsx
  • app/(marketing)/components/homepage/CapabilitiesGrid.tsx
  • app/(marketing)/components/homepage/ComplianceEngineDemo.tsx
  • app/(marketing)/components/homepage/ComplianceNetworkSection.tsx
  • app/(marketing)/components/homepage/Industries.tsx
  • app/(marketing)/components/homepage/ObjectionHandlingSection.tsx
  • app/(marketing)/components/homepage/OutcomeProofSection.tsx
  • app/(marketing)/components/homepage/SecuritySection.tsx
  • app/(marketing)/components/homepage/ValueProposition.tsx
  • app/(marketing)/components/shared/DeferredSection.tsx
  • app/(marketing)/components/shared/KeyFacts.tsx
  • app/(marketing)/contact/ContactPageContentNew.tsx
  • app/(marketing)/customer-stories/CustomerStoriesContent.tsx
  • app/(marketing)/enterprise/EnterprisePageContent.tsx
  • app/(marketing)/features/FeaturesPageContent.tsx
  • app/(marketing)/features/pillars/opengraph-image.tsx
  • app/(marketing)/features/pillars/page.tsx
  • app/(marketing)/frameworks/FrameworksContent.tsx
  • app/(marketing)/frameworks/components/FrameworksHeroVisual.tsx
  • app/(marketing)/industries/components/IndustriesHeroVisual.tsx
  • app/(marketing)/industries/components/IndustryVerticals.tsx
  • app/(marketing)/legal/privacy/PrivacyPageContentSync.tsx
  • app/(marketing)/mental-health-compliance/page.tsx
  • app/(marketing)/ndis-providers/page.tsx
  • app/(marketing)/pricing/PricingPageContent.tsx
  • app/(marketing)/pricing/components/FAQSection.tsx
  • app/(marketing)/pricing/components/FinalCTA.tsx
  • app/(marketing)/pricing/components/PlanFinder.tsx
  • app/(marketing)/pricing/components/PricingHero.tsx
  • app/(marketing)/pricing/components/PricingTiers.tsx
  • app/(marketing)/pricing/components/RoiCalculator.tsx
  • app/(marketing)/privacy-settings/PrivacySettingsContent.tsx
  • app/(marketing)/privacy/route.ts
  • app/(marketing)/product/components/ComplianceCoreObject.tsx
  • app/(marketing)/product/components/FullControlMapSection.tsx
  • app/(marketing)/product/components/ObligationToExecution.tsx
  • app/(marketing)/product/components/ProductHeroVisual.tsx
  • app/(marketing)/product/components/WhatIsFormaOS.tsx
  • app/(marketing)/security-review/components/SecurityReviewHeroVisual.tsx
  • app/(marketing)/security-review/page.tsx
  • app/(marketing)/security/SecurityContent.tsx
  • app/(marketing)/security/components/AuditChainVisualizer.tsx
  • app/(marketing)/security/components/SecurityArchitecture.tsx
  • app/(marketing)/status/page.tsx
  • app/(marketing)/trust/TrustPageContent.tsx
  • app/(marketing)/trust/components/AuditChainProof.tsx
  • app/(marketing)/trust/components/TrustSubpagesIndex.tsx
  • app/(marketing)/trust/incident-response/page.tsx
  • app/(marketing)/use-cases/components/UseCasePageTemplate.tsx
  • app/(marketing)/verify/page.tsx

📝 Walkthrough

Walkthrough

This PR systematically updates punctuation and typography across 70+ marketing and component files, replacing em-dashes with commas in copy and comments, en-dashes with hyphens in range notation, and refining text wording. No functional code logic or component behavior changes occur.

Changes

Punctuation & Typography Standardization

Layer / File(s) Summary
Blog articles and content metadata
app/(marketing)/blog/blogData.ts
Blog post strings and metadata updated for punctuation consistency across "Australian Compliance Frameworks 2026" and compliance articles, with framework descriptions, reporting sections, and source notes adjusted from em-dash to comma separators.
Homepage component marketing copy
app/(marketing)/components/homepage/Industries.tsx, SecuritySection.tsx, ValueProposition.tsx, AuditChainSection.tsx, CapabilitiesGrid.tsx, ComplianceEngineDemo.tsx, ComplianceNetworkSection.tsx, CTASection.tsx, ObjectionHandlingSection.tsx, OutcomeProofSection.tsx
Industries solution taglines, SecuritySection audit log entry controls, and ValueProposition card descriptions rewritten with comma punctuation instead of em-dashes; multiple UI component comment headers adjusted to match new formatting standard.
Product pages and feature copy
app/(marketing)/features/FeaturesPageContent.tsx, features/pillars/page.tsx, features/pillars/opengraph-image.tsx, product/components/ProductHeroVisual.tsx, product/components/FullControlMapSection.tsx
Feature page caption, pillar descriptions, OG image metadata (alt, headline, subhead), and product hero status row sublabels updated to use comma punctuation.
Pricing and sales pages
app/(marketing)/pricing/PricingPageContent.tsx, pricing/components/*
Inline comment text in plan scope, cost of non-compliance, FAQ section, and ROI calculator adjusted for header/label styling descriptors with updated punctuation.
Trust and security pages
app/(marketing)/trust/TrustPageContent.tsx, trust/components/AuditChainProof.tsx, trust/components/TrustSubpagesIndex.tsx, security/SecurityContent.tsx, security/components/AuditChainVisualizer.tsx, security/components/SecurityArchitecture.tsx, security-review/page.tsx, security-review/components/SecurityReviewHeroVisual.tsx
Comment and text updates across trust subpages and security pages for server-rendering notes, audit chain proof disclaimers, and security architecture framework list clarifications.
Layout and navigation components
app/(marketing)/components/Footer.tsx, MobileNav.tsx, HeroStaticShell.tsx, frameworks/components/FrameworksHeroVisual.tsx, industries/components/IndustriesHeroVisual.tsx, industries/components/IndustryVerticals.tsx
Comment text updates in footer, mobile nav, hero shell, and hero visual components adjusting punctuation for UI section labels and affordance descriptions.
Audit chain and capability sections
app/(marketing)/components/homepage/AuditChainSection.tsx, compare/components/CompareHeroVisual.tsx, components/FigmaHomepage.tsx
Pillar text and comment refinements in AuditChainSection (Merkle/Sigstore Rekor, platform-admin descriptions), audit chain proof/visualizer comment text, and capability grid descriptions.
CTA and proof sections
app/(marketing)/components/HomeProofStaticShell.tsx, homepage/OutcomeProofSection.tsx
Proof block comment text and first proof card body string refinement; outcome proof section aria-label and state description comments updated for accessibility and clarity.
Page metadata and Open Graph exports
app/(marketing)/author/[slug]/page.tsx, compare/healthmetrics/opengraph-image.tsx
Author page metadata title now uses comma separator instead of em-dash; compare healthmetrics OG image tagline punctuation updated.
Privacy, legal, and utility pages
app/(marketing)/legal/privacy/PrivacyPageContentSync.tsx, mental-health-compliance/page.tsx, ndis-providers/page.tsx, privacy-settings/PrivacySettingsContent.tsx
Privacy settings copy and GDPR comment punctuation updated from em-dash to comma; FAQ answers in mental health and NDIS pages refined for pipeline and setup descriptions.
Contact and comparison pages
app/(marketing)/contact/ContactPageContentNew.tsx, compare/CompareIndexContent.tsx
Contact form comment punctuation refined; compare index section comment updated for "compliance OS vs traditional GRC" descriptor.
Enterprise and use-case pages
app/(marketing)/enterprise/EnterprisePageContent.tsx, use-cases/components/UseCasePageTemplate.tsx
Enterprise page section header and interactive defense-in-depth flow comment text refined; use-case template section header comment updated.
Customer stories and status pages
app/(marketing)/customer-stories/CustomerStoriesContent.tsx, status/page.tsx
Customer stories introductory and quote block removal comments punctuation updated; status page documentation comment rewritten for endpoints and visibility scope.
Product detail components
app/(marketing)/product/components/ComplianceCoreObject.tsx, ObligationToExecution.tsx, WhatIsFormaOS.tsx
Comments and text in product components updating range notation from en-dash to hyphen format and descriptive text refinements.
Shared component documentation
app/(marketing)/components/shared/DeferredSection.tsx, shared/KeyFacts.tsx
DeferredSection backwards-compatibility comment updated; KeyFacts heading and facts range formatting adjusted from en-dash to hyphen.
Framework and redirect pages
app/(marketing)/frameworks/FrameworksContent.tsx, privacy/route.ts
Frameworks cross-mapping comment punctuation updated; privacy redirect comment clarified for same-origin approach reasoning.
About and verify pages
app/(marketing)/about/AboutPageContent.tsx, verify/page.tsx
About page timeline section comment removed; verify page audit header comment text updated for tier classification.

Estimated Code Review Effort

🎯 1 (Trivial) | ⏱️ ~8 minutes

Possibly Related PRs

  • ejay-dev/FormaOS#233: Related through FeaturesPageContent system-loop caption and feature description updates.
  • ejay-dev/FormaOS#209: Overlaps in AuditChainSection component pillar copy and comment text refinements.
  • ejay-dev/FormaOS#217: Related through FrameworksContent cross-mapping section punctuation updates.

Poem

A rabbit hops through a hundred files,
Trading dashes for commas with careful smiles,
From trust to feature, from pricing to proof,
One punctuation pass completes the truth! 🐰✨

✨ 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 feat/em-dash-sweep

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

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

♿ Accessibility Test Results

PASSED - No critical accessibility issues found

Tests Performed:

  • WCAG 2.1 AA compliance validation
  • Cross-browser accessibility testing
  • Keyboard navigation testing
  • Screen reader compatibility
  • Color contrast validation

Artifacts: Download the accessibility reports from the "Artifacts" section for detailed results.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

🔒 Compliance Testing Results

Test Date: Thu Jun 4 09:23:22 UTC 2026
Test Type: all

GDPR Compliance

⚠️ ERROR - Unable to complete GDPR testing

SOC2 Compliance

⚠️ ERROR - Unable to complete SOC2 testing

Compliance Reports: Available in the artifacts section below

⚠️ ATTENTION REQUIRED: Compliance issues found that must be addressed before production deployment.

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