sip-protocol / sip-protocol/sipher

[tech-debt] Wave 2a Cluster C SEO follow-ups

Open
#243 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority:low tech-debt
Dominant language
TypeScript
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Follow-ups from Wave 2a Cluster C (#206 SEO meta tags). Code-quality review flagged five related minors. Bundled into one issue with checklist items for tracking.

Tasks

  • Extract shared <SeoTags> component — 13 views currently hand-write 6 meta tags each (duplicated structure). Extract a <SeoTags title description /> component or useSeoTags hook so future additions (e.g., og:url, twitter:card, og:site_name) require touching 1 file instead of 13.

  • Reintroduce og:image with proper brand asset — Path A (drop og:image/og:type) chosen in Wave 2a to unblock cluster merge. When brand mark stabilizes: commit a 1200×630 PNG to app/public/icons/sipher-og.png, add og:image/og:image:width/og:image:height/og:image:alt, restore og:type=website.

  • Add og:url + og:site_name baseline meta tags — Standard OpenGraph completeness. Pairs with the <SeoTags> extraction above.

  • Hoist SEO meta tags before if (!isAdmin) return null guard in SquadView/HeraldViewSquadView.tsx:260 and HeraldView.tsx:471: SEO tags currently render AFTER the admin redirect guard. Non-admin users (redirected via useNavigate('/')) never have these tags hoisted. Either intentional (don't leak admin page existence — add comment) or unintentional (hoist before guard).

  • Document/enforce backend chat input length cap at 4000ChatSidebar.tsx:218 adds maxLength={4000} defensively but native input maxLength is bypassable. Document the agent's chat endpoint length cap and ensure it matches (or set proactively if absent).

  • Sync index.html static title with React 19-hoisted titlesapp/index.html:6 says "SIPHER — Privacy Command Center" (bypassed by JS hoisting for in-app routes, but visible to no-JS crawlers). Decide canonical default title.

Source

Wave 2a Cluster C code-quality review (10 minors total — most bundled here, two minor items skipped as cosmetic-only).

Priority

Low — purely tech-debt / polish. Phase D launch gate not affected.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the checklist and inspect the 13 views that duplicate SEO tags, especially SquadView.tsx:260, HeraldView.tsx:471, ChatSidebar.tsx:218, and app/index.html:6. Review the existing React 19 title handling and the backend chat endpoint before choosing the documented behavior. Done means each checklist item has an explicit implementation or decision, with the SEO tags, title, and 4000-character limit consistent across the named locations.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
backend, frontend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.