Skip to content

feat(queen): a card tap opens its agent chat in the app framing the board - #1203

Merged
gHashTag merged 2 commits into
mainfrom
feat/kanban-card-opens-chat
Oct 4, 2026
Merged

gHashTag merged 2 commits into
mainfrom
feat/kanban-card-opens-chat

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

What

A tap on a card in the Queen's kanban (board view and map view) now opens that card's conversation with the agent, when the board is framed by the app on the same origin (app.t27.ai/game/kanban frames app.t27.ai/queen/). The board posts one message to its parent:

{ v: 1, type: 't27-app', kind: 'open-card', repo, number, title, column }

Everywhere else the card stays a plain GitHub link:

  • t27.ai/#/queen, any cross-origin framer, and the board on its own all keep the link, because reading a cross-origin parent.location throws, and that counts as "no";
  • cmd/ctrl/shift/alt-click, a middle click, or a click something else already handled also keep the link.

Where

  • apps/website/src/lib/queenCardChat.ts: the envelope and openCardInApp. It has no imports, so node can test it directly.
  • apps/website/src/pages/Queen.tsx: onClick on both card anchors.
  • apps/website/scripts/queen-card-chat.test.mjs: 4 tests, run by npm run test:card-chat and as the CI step "Card opens its chat".

Contract

Not in this PR

  • No QUEEN_REF bump in 999. Whether to bump it is the owner's call.
  • Until the bump, the app keeps catching taps on the anchors itself (the player's fallback), so nothing breaks in between.

Test

cd apps/website && npm run test:card-chat   # 4/4

tsc reports no errors in the touched files. The 194 pre-existing errors are elsewhere (TrinityCanvas and others).

🤖 Generated with Claude Code

{
  "version": 1,
  "head_sha": "a77b4bffa883afb8319ac7efa9c9cad12db449e4",
  "summary": "A tap on a Queen kanban card, when the board is framed by the app on its own origin, now posts one open-card message to the parent so the app can open that card's agent chat; everywhere else the card stays a GitHub link.",
  "changes": [
    "New apps/website/src/lib/queenCardChat.ts builds the open-card envelope (v 1, type t27-app, kind open-card, repo, number, title, column) and openCardInApp, which posts it only when the parent window has this page's own origin.",
    "Queen.tsx adds an onClick on the card anchors of both the board view and the map view; modified clicks, middle clicks and clicks already handled keep the plain GitHub issue link.",
    "New scripts/queen-card-chat.test.mjs with four node tests, exposed as npm run test:card-chat and wired into website-checks.yml as the step Card opens its chat.",
    "Merge of origin/main (90 commits behind) resolved one conflict in the Queen.tsx import block: kept main's leaveTabSelections and specsChatSpec imports and added the queenCardChat import beside them."
  ],
  "tests": [
    {
      "command": "Website checks / checks job on head a77b4bff",
      "status": "failed",
      "result": "The job stopped at the Silicon coverage step, which also fails on main for the unclassified spec dmitrii-f-t27/trinity-memory/t27/rtl/gf16_attn.t27; ARIA references, the typecheck ratchet and the API contract passed before it.",
      "evidence": "https://github.com/gHashTag/trinity/actions/runs/37224843573/job/111502263460"
    },
    {
      "command": "npm run test:card-chat (CI step Card opens its chat)",
      "status": "not_run",
      "result": "The CI step was skipped because the earlier Silicon coverage step failed, so CI has no result for it on this head.",
      "evidence": "Step 47 skipped in https://github.com/gHashTag/trinity/actions/runs/37224843573/job/111502263460"
    },
    {
      "command": "CI / Build & Test",
      "status": "passed",
      "result": "The repository Build and Test job completed successfully on this head.",
      "evidence": "https://github.com/gHashTag/trinity/actions/runs/37224843542/job/111502263630"
    },
    {
      "command": "Docs check / Check Documentation Links",
      "status": "failed",
      "result": "The documentation link check failed on this head; it is not a required check and was not investigated in this merge.",
      "evidence": "https://github.com/gHashTag/trinity/actions/runs/37224842076/job/111502259217"
    }
  ],
  "limitations": [
    "The card-chat tests did not run in CI on this head because the website checks job stops at the Silicon coverage failure inherited from main.",
    "The receiving side, the player sheet in 999-multibots-telegraf, is not part of this PR, and no QUEEN_REF bump is made here.",
    "The silicon coverage failure on main (gf16_attn.t27 not classified in siliconHistory.ts) is left for a separate fix."
  ],
  "tags": [
    "Queen",
    "kanban",
    "AgentChat"
  ],
  "blog": {
    "title": "A kanban card tap opens its agent chat inside the app",
    "summary": "On app.t27.ai the Queen board is framed by the app on the same origin, and a tap on a card now asks the app to open that card's conversation with the agent instead of jumping to GitHub.",
    "outline": [
      "The board posts a single versioned open-card message carrying the repository, issue number, public title and column, and nothing else, to its parent window.",
      "The message is sent only when reading the parent's origin succeeds and equals the page's own origin, so a cross-origin framer or the bare board keeps the GitHub link.",
      "Command, control, shift and alt clicks, middle clicks and clicks already handled elsewhere keep their usual behaviour, so opening the issue in a new tab still works.",
      "The branch was brought up to date with ninety commits of main, and the only conflict was a shared import line in Queen.tsx where both sides' imports were kept."
    ]
  }
}

…oard

Framed by app.t27.ai/game on the same origin, a tap on a kanban card (board
and map views) posts {v:1, type:'t27-app', kind:'open-card', repo, number,
title, column} to the parent instead of following the GitHub link; the
player opens the card's conversation with the agent there. Anywhere else --
t27.ai/#/queen, a cross-origin frame, the board alone -- and on cmd-click or
middle click, the issue opens as before.

Spec of record: gHashTag/t27 specs/automation/kanban-card-chat.t27
(t27#5389, EPIC t27#5388). Test: npm run test:card-chat, wired into
website-checks. Reaches prod only with a QUEEN_REF bump in 999 -- owner's
call; until then the player catches the anchor tap itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag

gHashTag commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

Reviewer bee Y: not merged. (1) CONFLICTING with main (Queen.tsx moved on: #1236, #1237, #1239). (2) Required status 'T27 work report' = FAILURE. (3) Edits .github/workflows/website-checks.yml -> needs the owner's workflow scope. Nothing equivalent (queenCardChat) is on main yet, so it is still wanted: rebase, refresh the work report, then re-review.

@gHashTag

gHashTag commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

bee review: left open -- CONFLICTING with main (head 91e3659). Touches .github/workflows/website-checks.yml, apps/website/package.json and src/pages/Queen.tsx, all changed on main since (#1247-era workflow edits, #1236/#1239/#1237 in Queen.tsx). No credentials in the diff. Needs a rebase by the author; then the required T27 work report must pass on the new head.

…s-chat

# Conflicts:
#	apps/website/src/pages/Queen.tsx
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

X Brain Health Check

Score: 100.0/100
Status: 🟢 HEALTHY
Threshold: 80/100

X Brain is above merge threshold

@gHashTag
gHashTag merged commit 87f8f11 into main Oct 4, 2026
28 of 31 checks passed
@github-actions github-actions Bot added status:completed Done and removed status:in-progress 🔵 Agent working labels Oct 4, 2026
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

🧪 Brain Stress Test Results

Tests: 261/261 passed, 0 leaked
Status: 🟢 PASS
Gate: every test in zig build test-brain-stress passes and none leaks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants