Skip to content

Feat/ai atlas upd reception#142

Merged
MaryWylde merged 12 commits into
mainfrom
feat/ai-atlas-upd-reception
Jun 11, 2026
Merged

Feat/ai atlas upd reception#142
MaryWylde merged 12 commits into
mainfrom
feat/ai-atlas-upd-reception

Conversation

@manager

@manager manager commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Description

Briefly describe the changes.

🔗 Related Issue

Closes #123 or relates to #456

*(Optional: You can also open a pull request directly from an issue — GitHub will auto-link it.)

✅ Checklist

  • My code follows the project's coding style
  • I have linked the relevant issue in the PR description
  • I have manually tested the changes
  • All CI checks have passed

@MaryWylde

Copy link
Copy Markdown
Contributor

@claude, review this PR.

@claude

claude Bot commented Jun 11, 2026

Copy link
Copy Markdown

Claude finished @MaryWylde's task in 3m 15s —— View job


PR Review — Feat/AI Atlas Updated Reception

  • Read changed files and gather context
  • Analyze data changes (data.json, data-ru.json)
  • Review component changes (ai-atlas.tsx)
  • Review style changes (ai-atlas.css)
  • Post comprehensive review feedback

Summary

This PR adds three interconnected features: a Receptionist node outside all rings (positioned at r=1.08 with a globe marker at r=1.33), a new subagent diamond type to distinguish sub-agents from full AI agents, and a vibecoding article link in the intro dossier. The implementation is clean and follows the established patterns in this file well. A few things worth addressing:


Issues

1. Raw URL rendered as link anchor text

src/pages/ai-atlas.tsx, Dossier component (line ~988–996)

{data.link && (
  <div className="dossier__desc">
    <a className="dossier__link" href={data.link} ... >
      {data.link}  {/* renders "https://t.me/WolfsReceptionist_bot" */}
    </a>
  </div>
)}

The anchor text is the raw URL. A linkLabel field in the dossier data would allow friendly display text (t.me/WolfsReceptionist_bot or a custom label). The same applies to data-ru.json which has the same Telegram URL.

Fix this →


2. Globe→reception spoke uses wrong glow reference for advisory wires

src/pages/ai-atlas.tsx, ~line 2076–2087

<Spoke
  from={points['globe']}
  to={points['reception']}
  kind="advisory"             // ← renders red + dashed by default
  dim={isDim('reception')}
  glow={spokeGlow('reception', 'wolf')}  // ← correct for highlight
/>

The advisory kind already renders var(--red) when not glowing (Spoke function, line 767). On glow it also uses var(--red) — only the strokeWidth changes (0.7 → 1.4). This means the globe→reception spoke has no color feedback on selection — just a width change. This is subtle but probably not a blocker since it's the only advisory spoke on that radial. Worth documenting with a comment near the Spoke call.


3. TelegramMark reuses globe-mark CSS class

src/pages/ai-atlas.tsx, line 818 and src/styles/ai-atlas.css, line 425

// TelegramMark
<g className={'globe-mark' + (dim ? ' is-dim' : '')} aria-hidden="true">

TelegramMark borrows globe-mark entirely — structurally these two components are distinct (one is a globe, one is a plane icon with a circle). If either needs independent styling later, this becomes a problem. A separate telegram-mark class would keep concerns cleanly separated, even if its initial CSS is identical to globe-mark. Minor, but a clean-code note.


4. "TELEGRAM" label hardcoded in English

src/pages/ai-atlas.tsx, line 838

<text ...>
  TELEGRAM
</text>

All other UI strings go through the STRINGS/t object for EN/RU parity. TELEGRAM is a brand name so it's acceptable as-is, but it breaks the pattern and may cause confusion if the locale strings are ever audited for completeness.


Observations (not blocking)

tallyDiamonds coverage — The function now handles reception.member explicitly. Worth noting it does NOT traverse reception.member's children (reception has none in the data), so no issue here, but this assumption isn't guarded.

Highlight logic correctness — Verified: when highlightId === 'terminal', reception is added to the highlight set; when highlightId === 'wolf', reception is also added. Reception → wolf is the only connection so highlightId === 'reception' correctly adds only wolf. The dim logic for GlobeMark and TelegramMark uses isDim('reception') rather than their own virtual IDs, which is the right call.

Projects z-order fix — Splitting the projects render into two passes (all non-terminal first, then terminal) to ensure terminal renders on top in SVG is a correct fix and clean.

Subagent diamond CSS — The half-filled diamond (linear-gradient(to bottom right, var(--blue) 50%, #fff 50%) + blue outline) is a thoughtful visual distinction. The kv li .v.subagent { color: var(--blue) } mapping in CSS is correct.

Data consistency — EN and RU data files mirror each other correctly (same r, globeR, theta, claudeMdLines, same link URL). The RU dossier is fully translated including row keys (тип, роль, подчиняется, кольцо).

rel="noopener noreferrer" on all external links — correct.


Verdict

Mergeable with the raw-URL link text being the one thing worth fixing before merge. The rest are minor polish items.
· Branch

manager and others added 11 commits June 11, 2026 10:17
… globe

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… label

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…aude.md lines

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…kind rows

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…anko mark

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@MaryWylde MaryWylde changed the base branch from dev to main June 11, 2026 08:20
@MaryWylde MaryWylde force-pushed the feat/ai-atlas-upd-reception branch from bbbf2bc to e3bf922 Compare June 11, 2026 08:21
…ass, localized telegram label

Add linkLabel field so the receptionist dossier shows friendly text instead
of the raw URL; give TelegramMark its own telegram-mark CSS class so it can be
styled independently of the globe; route the TELEGRAM label through STRINGS for
EN/RU locale-completeness parity.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@MaryWylde MaryWylde merged commit aa1a3d5 into main Jun 11, 2026
2 checks passed
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.

2 participants