Skip to content

copy: drop "Local-first" from JSON-LD + auth footers + CloudVsLocal#190

Merged
operatoruplift merged 1 commit intomasterfrom
local-first-cleanup
Apr 28, 2026
Merged

copy: drop "Local-first" from JSON-LD + auth footers + CloudVsLocal#190
operatoruplift merged 1 commit intomasterfrom
local-first-cleanup

Conversation

@operatoruplift
Copy link
Copy Markdown
Owner

Last "Local-first" residual on user-facing surfaces

Four user-visible surfaces still said "Local-first" — the dev jargon retired across PRs #152-#168.

File Surface Was → Now
app/layout.tsx (JSON-LD) Google search snippet description "Local-first AI agent platform... no cloud required." → "AI assistant that drafts your email, schedules your meetings, and sends your follow-ups. Runs on your computer; every action waits for your tap."
src/sections/CloudVsLocal.tsx Homepage column subhead "Local-first, your infrastructure" → "Runs on your computer"
app/(auth)/login/page.tsx Login footer pill row "Local-first / Privacy-first / On-chain" → "Your computer / Encrypted / Signed receipts"
app/(auth)/signup/page.tsx Signup footer pill row "Local-first / Privacy-first / Open source" → "Your computer / Encrypted / Open source"

Most impactful change

The JSON-LD fix (app/layout.tsx:96). That's the structured data Google reads to generate the search-result snippet — what shows up under the title on a Google results page. Also bumps applicationCategory from DeveloperApplication to ProductivityApplication to match the audience the rest of the site targets.

Editorial content stays unchanged

Same policy as #153: blog post body content (app/blog/[id]/page.tsx) is the writer's voice describing past product decisions. Translating those would change the author's tone. The URL slug 'local-first-threat-model' also stays since renaming would 404 any inbound link.

Verified

pnpm exec tsc --noEmit
# exit 0

pnpm check
# 3 passed, 0 failed

grep -rnE "Local-first|local-first" app/ src/ lib/ --include="*.tsx" --include="*.ts" | grep -v "tests/\|app/blog"
# 0 hits

Rollback

Single git revert. 4 files, +8/-8.

Last residual of the dev-jargon vocabulary that #152-#168 retired.
Four user-visible surfaces still said "Local-first":

| File | Surface | Was -> Now |
|---|---|---|
| app/layout.tsx (JSON-LD) | Google search snippet description | "Local-first AI agent platform with secure, private memory. Build, deploy, and monetize autonomous agents, no cloud required." -> "AI assistant that drafts your email, schedules your meetings, and sends your follow-ups. Runs on your computer; every action waits for your tap." |
| src/sections/CloudVsLocal.tsx | Homepage column subhead | "Local-first, your infrastructure" -> "Runs on your computer" |
| app/(auth)/login/page.tsx | Login footer pill row | "Local-first / Privacy-first / On-chain" -> "Your computer / Encrypted / Signed receipts" |
| app/(auth)/signup/page.tsx | Signup footer pill row | "Local-first / Privacy-first / Open source" -> "Your computer / Encrypted / Open source" |

The JSON-LD fix is the most impactful, that's what Google reads to
generate the search-result snippet. Replacing "DeveloperApplication"
with "ProductivityApplication" in the same blob also matches the
audience the rest of the site now targets.

Editorial blog content (`app/blog/[id]/page.tsx`) stays unchanged,
that's the writer's voice describing past decisions, not marketing
claims. Same policy as #153.

The slug `'local-first-threat-model'` in `app/blog/page.tsx` stays
since it's a URL identifier; renaming would 404 any inbound link.

## Verified

- pnpm exec tsc --noEmit: clean
- pnpm check: 3 passed, 0 failed
- grep "Local-first" outside app/blog returns 0 hits

## Rollback

Single git revert. 4 files.
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 28, 2026

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

Project Deployment Actions Updated (UTC)
website Ready Ready Preview, Comment Apr 28, 2026 1:32am

@operatoruplift operatoruplift merged commit 8514233 into master Apr 28, 2026
4 checks passed
operatoruplift added a commit that referenced this pull request Apr 28, 2026
… pages (#192)

Two new specs added to consumer-copy.spec.ts so the post-#190/#191
state can't drift back.

## "JSON-LD structured data uses the consumer pitch"

PR #190 rewrote the schema.org SoftwareApplication description blob
that Google reads for rich-result snippets. The old text was:
"Local-first AI agent platform with secure, private memory. Build,
deploy, and monetize autonomous agents, no cloud required."

Now the test:
- Asserts the new "drafts your email" pitch IS in the JSON-LD
- Asserts the old "Local-first AI agent platform" + "autonomous
  agents" strings are NOT

## "/login + /signup auth pages do not show 'Commander'"

PRs #168, #186, and #191 retired "Commander" across the API + 5
client surfaces. The auth pages are the funnel where a fresh user
landed - this spec verifies neither /login nor /signup ever shows
the word, and also verifies "Local-first" stays out (the auth
footer pill rows used to say it; #190 fixed that).

## Verified

- pnpm exec tsc --noEmit: clean
- pnpm exec playwright test consumer-copy.spec.ts: 8 passed (37.3s)

## Rollback

Single git revert. One file.
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