sip-protocol / sip-protocol/sipher
[tech-debt] Wave 2a Cluster C SEO follow-ups
Nobody has claimed this yet.
- 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 oruseSeoTagshook so future additions (e.g.,og:url,twitter:card,og:site_name) require touching 1 file instead of 13. -
Reintroduce
og:imagewith proper brand asset — Path A (dropog:image/og:type) chosen in Wave 2a to unblock cluster merge. When brand mark stabilizes: commit a 1200×630 PNG toapp/public/icons/sipher-og.png, addog:image/og:image:width/og:image:height/og:image:alt, restoreog:type=website. -
Add
og:url+og:site_namebaseline meta tags — Standard OpenGraph completeness. Pairs with the<SeoTags>extraction above. -
Hoist SEO meta tags before
if (!isAdmin) return nullguard in SquadView/HeraldView —SquadView.tsx:260andHeraldView.tsx:471: SEO tags currently render AFTER the admin redirect guard. Non-admin users (redirected viauseNavigate('/')) 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 4000 —
ChatSidebar.tsx:218addsmaxLength={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.htmlstatic title with React 19-hoisted titles —app/index.html:6says "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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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