feat(site): add comparison pages for Arc, Dia, and Helium#34

open2
site/arc
site/comparisons
opened10h agobyKKainoa Newton
View on GitHubTwo-way sync enabledPR last imported 7h ago

Stacked on #31 (Moving from Arc), which is stacked on #29. Merge in the order #29, #31, then this one. Each base moves to main on its own. It's stacked because both this PR and #31 add a footer link.

Problem. Plan M5 needs factual, sourced comparison pages for the Arc-refugee launch.

Change.

  • /compare lists /compare/arc, /compare/dia, and /compare/helium.
  • Each page has a short honest summary, a side-by-side table, "Where rac is different", "Where X is better or does more", "Who should pick which", and numbered Sources with the date they were checked.
  • The table stacks into cards at 390 px and keeps table semantics through explicit ARIA roles.
  • The pages are linked from the footer, not the nav.
  • No performance claims.
  • Every claim about another browser cites its vendor's own page:
    • arc.net: sunsetting on December 22, 2026, no new accounts since October 22, 2026, and Dia's import mapping.
    • diabrowser.com pricing and security pages: $10 and $100 plans, a 14-day trial, AI requests routed through The Browser Company's servers, and content data used by default.
    • Helium's README, its homepage FAQ ("data sync? Not yet"), and the helium-macos 0.20.1.1 assets (arm64 and x86_64).
  • Where Dia's pricing page and its download page disagree on how much AI the free plan has, the table says so rather than picking one.
  • Each page says honestly where the other browser does more: Windows, sync, Boosts and Easels, Helium on Linux and Intel. The Helium page recommends Helium to anyone who doesn't want Arc's ideas.

Merge condition: Core. Every AI sentence is inside AI wording needs Core sign-off (G7) markers. Like #28, they describe the launch behavior (the taint rule), so merge only after Core's guard lands and Core has signed off on the wording.

How it was checked (hill-climb round 1).

  • An Opus agent drafted the pages. A usage limit interrupted it, and I finished them.
  • A SWE-2 fact-check flagged 5 partly-supported or uncited items. All are fixed.
  • A council review by SWE-2 Max and Sonnet raised AI lines outside the markers, unused sources, two uncited claims, a comma pileup, and fragile CSS. All confirmed findings are fixed. I rejected two: changing the second-site wording (it's the launch rule, covered by the merge condition) and trimming facts the rest of the site already states.
  • build/scratch/site-checks.mjs scores 38/38 on main + #28 + #29 + #31 + this PR. It checks every internal link, every external link live, the banned claims, collapsed spaces, 390 px overflow, the download-page detection states, and no remote scripts or cookies.
  • Headless Chromium shots are attached.

Net-diff hunks: 0 (no patches touched).

🤖 Generated with Claude Code (Claude Opus 5.5, with Sonnet 5.5 and Devin SWE-2)

/compare index

/compare/arc, desktop light

/compare/dia, desktop dark

/compare/helium, desktop light

Dia table at 390 px, stacked into cards (dark)

/compare/helium, mobile light


Devin Review


Note

Low Risk Static Astro marketing pages and UI components only; no changes to auth, data handling, or application runtime.

Overview Adds a Compare section to the marketing site: a footer link to /compare, an index listing three comparisons, and dedicated pages for Arc, Dia, and Helium.

Each comparison page follows a shared pattern—intro, a rac vs. other table, sections on where rac differs and where the other browser does more, guidance on who should pick which, and a dated Sources list. Claims about competitors use numbered Cite links into that list; table rows can attach citations on the “other” column via new CompareTable, Cite, and Sources components.

CompareTable is a responsive comparison table that keeps ARIA table roles on small screens by stacking each row into labeled cards (under 640px). The three pages cross-link (e.g. Arc → Dia/Helium) and reuse the site’s existing article layout (Base, sticky header, prose-rac). Several AI-related sentences are marked for Core sign-off before merge.

Reviewed by Cursor Bugbot for commit 2276e2293e7534582729ce3697970415d0fc692f. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Adds three comparison pages for Arc, Dia, and Helium, linked from the footer under /compare, to support the Arc-refugee launch.

  • Each page has a short honest summary, a side-by-side table that restacks into cards on phones, where rac is different, where the other browser does more, who should pick which, and numbered sources with the date they were checked.
  • Every claim about another browser cites that vendor's own page; no performance claims are made.
  • The Dia page flags where Dia's pricing and download pages disagree instead of picking one, and its import row reflects what Dia's own source says.
  • AI copy sits inside AI wording needs Core sign-off (G7) markers written as hidden comments, so it renders nothing until Core signs off. Table headings stay readable to screen readers.
  • Merge after #29 and #31; both this PR and #31 add a footer link, so they land in that order.

Written for commit 2276e2293e7534582729ce3697970415d0fc692f. Summary will update on new commits.

View guided diff Turn on auto-fix

Checks

2 failing · 7 successful · 2 neutral · 1 skipped
Some checks failed

Failing2

  • pullfrogGitHub
    Failed
  • VercelGitHub
    Failed
2276e22
Synced from GitHub

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

External image Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: e48d6906-1458-4204-9ef4-fe4714ff8a30

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Synced from GitHub

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 3d176ec8-56d2-49c3-80b6-5dd1029ef4a8)

site/src/pages/compare/dia.astrolines 75–76Outdated · c6ddc80Open thread
……@@ -0,0 +1,111 @@
73+ <!-- AI wording needs Core sign-off (G7) -->
74+ <li>
75+ Arc import keeps your spaces as spaces in one window, with their pinned tabs, favorites, and themes. Dia turns
76+ them into profiles.<Cite n={6} />
Ddevin-ai-integrationBoton lines 75–7610h ago

🟡 Imported profiles falsely promised one window

For an Arc user with multiple profiles, Arc import does not keep all imported spaces in one window. Each profile opens its own window, so those spaces are split across windows.

Learn more

Arc import preserves each Arc profile as a separate rac profile. What comes over says each imported profile has its own window, and Profiles defines spaces within each profile. The Dia comparison promises one window without that qualification, both here and in its Spaces row. An Arc user with two profiles will see two rac windows rather than one containing every imported space.

Example: An Arc setup has a Work profile and a Personal profile, each with two spaces. Import produces a Work window and a Personal window, not one window containing four spaces.

Recommended fix: Qualify both the Spaces row and this import description as 'spaces within each profile' or 'one window per profile,' consistent with the migration page.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

site/src/components/compare/CompareTable.astrolines 98–100Outdated · c6ddc80Open thread
……@@ -0,0 +1,134 @@
97+
98+ .compare thead {
99+ display: none;
100+ }
Ddevin-ai-integrationBoton lines 98–10010h ago

🟡 Mobile tables lose accessible browser headings

Below 640px, .compare thead removes both browser headings from the accessibility tree. CSS-generated cell labels do not restore table header associations, so screen-reader table navigation loses browser context.

Learn more

The comparison is a real table with column headers for rac and the other browser. On narrow screens, display: none removes its <thead> from the accessibility tree. The explicit table and cell roles cannot associate cells with headings that no longer exist. The ::before labels are visual CSS content, not column headers for assistive technology.

Example: At a 390px viewport, a screen-reader user navigating the Dia table by cell encounters a value such as 'Chromium' without the Dia column header.

Recommended fix: Visually hide the header row at mobile widths without display: none or visibility: hidden, preserving its cells in the accessibility tree; test the rendered table with screen-reader table navigation.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

Synced from GitHub

RetriggerView in GreptileConfidence Score: 4/5

[Low impact] The changes affect the public site’s comparison pages and footer navigation.

The PR appears safe to merge under the author’s stated Core sign-off condition, with a non-blocking mobile accessibility fix recommended.

Findings

  1. P2 Mobile tables lose browser headers ▶
Fix with agent prompt
markdown
1### Issue 1
2site/src/components/compare/CompareTable.astro:98-100
3Below 640 px, `display: none` removes the browser column headers from screen readers. The explicit roles preserve the table structure, but users navigating by cell lose the header that identifies each browser. The labels from `td::before` do not restore that connection.
4
5Visually hide `thead` instead of removing it so the mobile cards keep their column headers.
6
7Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
8
9---
10
11For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

Adds /compare and comparison pages for Arc, Dia, and Helium.

  • Readers can open three browser comparisons from the footer.
  • Comparison tables adapt to small screens and link claims to sources.
  • Arc readers can compare what rac keeps and what it leaves behind.
  • Dia readers can compare its AI plans, privacy, and Arc import with rac.
  • Helium readers can see what rac adds and where Helium does more.

notkainoa explicitly deferred the AI wording until Core’s guard lands and Core signs off. notkainoa also explicitly rejected changing the second-site launch wording and trimming facts already stated elsewhere on the site. Those acknowledged choices are not reported as findings.

Reviews (1) · Last reviewed commit: "feat(site): add comparison pages for Arc..." · Reviewed by Greptile

site/src/components/compare/CompareTable.astrolines 98–100Outdated · c6ddc80Open thread
……@@ -0,0 +1,134 @@
97+
98+ .compare thead {
99+ display: none;
100+ }
Ggreptile-appsBoton lines 98–10010h ago

P2 Mobile tables lose browser headers

Below 640 px, display: none removes the browser column headers from screen readers. The explicit roles preserve the table structure, but users navigating by cell lose the header that identifies each browser. The labels from td::before do not restore that connection.

Visually hide thead instead of removing it so the mobile cards keep their column headers.

Prompt To Fix With AI
markdown
1This is a comment left during a code review.
2Path: site/src/components/compare/CompareTable.astro
3Line: 98-100
4
5Comment:
6**Mobile tables lose browser headers**
7
8Below 640 px, `display: none` removes the browser column headers from screen readers. The explicit roles preserve the table structure, but users navigating by cell lose the header that identifies each browser. The labels from `td::before` do not restore that connection.
9
10Visually hide `thead` instead of removing it so the mobile cards keep their column headers.
11
12---
13
14For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Added 2 commits

  • fix(site): hide sign-off notes, fix the profile claim, keep table headings for screen readers2276e22
  • feat(site): add comparison pages for Arc, Dia, and Helium9412316
Synced from GitHub

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 25a0ee25-143f-45c7-a8a2-7b7ae5ce7ba6)