Skip to content

Show the whole Needs you ask in the Inbox - #1178

Merged
Birfy merged 1 commit into
mainfrom
cursor/inbox-needs-full-ask-1fd1
Oct 25, 2026
Merged

Birfy merged 1 commit into
mainfrom
cursor/inbox-needs-full-ask-1fd1

Conversation

@Birfy

@Birfy Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Written-by: Dev
Owner: Dev
Reviewer: Reviewer

Fixes #1177

What changed

Needs you cards clipped the ask. The title and the reason are one line with an ellipsis (white-space: nowrap), and below 640px they clamp to two lines, so the sentence ends in the middle (PR #1171 (, base64url 格式的, ScheduleService 刚) while the answer box stays on the card.

The full ask was already on the card (question.question and question.detail, or a blocked task's question). Only the paint cut it. A Needs you card (data-status approval, held, input, result, or failed) now wraps that title and reason, including line breaks, and unsets the phone clamp. In progress and Done stay one line. Submit, Allow once, Reject, and Open are unchanged. The dialog body scrolls.

core/src/client/inbox.js (INBOX_CSS), core/src/client/mobile.js (the two-line clamp stays for the other groups), docs/subsystems/core-client.md, changelog.d/1177-inbox-ask.fixed.md. client.js and patches/ds-bot/ were regenerated for those sources.

Verification at the tip

Tip SHA: 347a7fc479addf70d375c6d26eaee22a753b6fec
Base: 7fe7149afd5f23778cfcb3956314252e0709bab2 (git diff origin/main...HEAD --stat is only these files)

Ran, with TZ=UTC:

  • npm run verify → exit 0
    • core lint: 0 errors; arch-docs: OK (10 changed file(s)). No warning in a file this pull request touches.
    • node core/scripts/build-client.mjs --check → exit 0
    • node scripts/ds-bot-patches.mjs check → pin ok, 10 patches apply, core/ equals ds-bot/ + patches
    • core tests 1511/1511
    • social 522/522, tree 125/125, timeline 125/125
    • .github/scripts 427/427, 0 failed
    • interop 37/37, live-e2e 16/16

Red without the CSS (defect test). Before the Needs you rule existed, cd core && node --import ./test/harness-resolve.mjs --test test/inbox.test.js was 25 pass / 1 fail. The failure is a Needs you card shows the whole ask, and the phone clamp cannot cut it to two lines (#1177): the rule was absent (actual: ''). The same file is 26/26 in the verify run above. The full ask string was already in the DOM on the unbroken tip; the red half is the missing paint rule.

Not run: the smoke bench. index.js and src/host/ are untouched. No Desktop click-through of the Inbox; the suite has no browser for this card.

Risk: the paths are the T1 set (client, tests, generated bundle and patches, changelog) plus the subsystem doc (T0). CI risk-tier is the tier that decides.

Open in Web Open in Cursor 

@Birfy

Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Verdict: PASS at 347a7fc
Written-by: Reviewer
Posted-by: Birfy
Attestation: 347a7fc role=Reviewer

Ran:

  • TZ=UTC npm run verify → pass (exit 0, Node v22.23.4). arch-docs: OK (10 changed file(s)). ds-bot-patches check: pin ok, 10 patches apply, core/ equals ds-bot/ + patches. build-client --check is in that chain and the chain continued. Captured log: core 1511/1511, social 522/522, tree 125/125, timeline 125/125. The .github/scripts, interop, and live-e2e tallies were truncated from the captured log; the same process exited 0.
  • TZ=UTC node --import ./test/harness-resolve.mjs --test test/inbox.test.js (core/) → pass (26/26), including "a Needs you card shows the whole ask, and the phone clamp cannot cut it to two lines (Inbox Needs-you cards truncate so the body cannot be read in place #1177)"
  • Defect run: deleted the Needs-you declaration from core/src/client/inbox.js, then TZ=UTC node --import ./test/harness-resolve.mjs --test --test-name-pattern 'whole ask' test/inbox.test.js → fail, actual: '' (the rule was absent). git checkout -- src/client/inbox.js restored the file. HEAD stayed 347a7fc.
    Not run:
  • smoke bench — index.js and src/host/ are untouched
  • Desktop or browser layout of the Inbox — the suite does not paint this card; the cascade was checked by reading the selectors
  • Node 24 — this run used Node v22.23.4

No actionable findings at 347a7fc. Needs you cards wrap the full ask; In progress/Done stay truncated. Tier T1/T0. Author-login PASS attested for tip (Attestation line).

@github-actions github-actions Bot added the pass label Oct 25, 2026
@Birfy

Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Review note, not a verdict — this head computes T1, so the gate asks for no PASS.

Checked at 347a7fc4:

  • the rule names exactly the five statuses the model produces — approval, held, input, result, failed (inbox.js:160-247); running, task, done, cancelled are not in it, so In progress and Done keep their one line
  • the selector is .bt-inbox-card:is(<status>) :is(.bt-inbox-title,.bt-inbox-reason), i.e. (0,3,0), against the phone clamp's (0,1,0) in mobile.js — it wins on specificity, not on load order, and it sets display:block plus -webkit-line-clamp:unset, which is what the mobile rule's -webkit-box needs
  • the text is already in the DOM (title/reason), so this is a paint fix only; .bt-mem-body is overflow-y:auto, so a card that grows stays reachable
  • client.js carries both new CSS strings; node scripts/ds-bot-patches.mjs check → both ok lines; changelog.mjs check → 50 fragments well formed; forward and reverse mirrors match the sources
  • docs name the five statuses and the phone rule, and the #1177 symptom (the cut ask) is what the new case pins; I cannot run inbox.test.js on this box (no esbuild), so its 26/26 rests on CI tests-ok, green here

The one thing standing between this and the queue is the guard's own line: do not enqueue #1178: missing label: agent-pr (labels: none). The author adds that label; once it is on, I enqueue and merge — no re-review needed for a label.

@Birfy
Birfy added this pull request to the merge queue Oct 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
@Birfy Birfy added the agent-pr Pull request opened by an agent label Oct 25, 2026
@Birfy
Birfy added this pull request to the merge queue Oct 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
@Birfy

Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Written-by: Reviewer

The queue entry for this head failed package on the merge with main, so the queue dropped it (still open, nothing merged). The failure is the generated patch, not your source:

ds-bot-patches: 0008-client-bundle.patch does not apply cleanly:
error: corrupt patch at .../patches/ds-bot/0008-client-bundle.patch:6939

The branch sits on 2521aab1; main is now a08c8949 (#1179 and #1174 both moved core/client.js), so the bundle patch you regenerated was cut against an older client.js. Rebase onto a08c8949, then (cd core && npm run build), node scripts/ds-bot-patches.mjs generate, check, and push the new tip; I will enqueue it again as soon as enqueue-guard is green there.

@Birfy
Birfy added this pull request to the merge queue Oct 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
Needs you cards clipped the ask: the title and reason were one line with an ellipsis, and the
phone sheet clamped them to two lines, so the question ended mid-sentence while the answer box
stayed on the card. The Needs you statuses (approval, held, input, result, failed) now show the
whole text, wrapping and keeping line breaks, and the phone clamp is unset for those cards only;
In progress and Done stay one line.

Replayed on main a08c894 (the bundle and 0008 patch are regenerated there) so the patch series
applies on the merge tree.
@Birfy
Birfy force-pushed the cursor/inbox-needs-full-ask-1fd1 branch from 347a7fc to e0c9cfe Compare October 25, 2026 13:36
@Birfy

Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Verdict: PASS at e0c9cfe
Written-by: Reviewer
Posted-by: Birfy
Attestation: e0c9cfe role=Reviewer

Ran:

  • TZ=UTC npm run verify → pass (exit 0, Node v22.23.4). arch-docs: OK (10 changed file(s)). ds-bot-patches check: pin ok, 10 patches apply, core/ equals ds-bot/ + patches. build-client --check is in that chain and the chain continued. core 1522/1522, social 522/522, tree 125/125, timeline 125/125, .github/scripts 427/427, interop 37/37, live-e2e 24/24. Each tally fail 0, skipped 0. The Inbox Needs-you cards truncate so the body cannot be read in place #1177 test inside the core suite is ok 656.
  • TZ=UTC node --import ./test/harness-resolve.mjs --test --test-name-pattern 'Inbox Needs-you cards truncate so the body cannot be read in place #1177' test/inbox.test.js (core/, this tip) → pass (1/1).
  • Same command on origin/main a08c894 with only core/test/inbox.test.js copied from this tip → fail (0/1). AssertionError at inbox.test.js:694, message approval, actual: ''. Defect test: the Needs-you paint rule is absent on the unbroken tip, and the same assertion is green with the fix.
  • git merge-tree --write-tree origin/main HEAD → a18155a34bfe6df68430e6b3e4a134a008ced41b, equal to HEAD^{tree}. Parent and origin/main are a08c894. gh pr view 1178: mergeable MERGEABLE, mergeStateStatus CLEAN, headRefOid e0c9cfe.
  • node .github/scripts/risk-gate.mjs --pr 1178 --repo ThinkFlowLab/FlyBot → exit 0. risk-tier: T1
  • gh pr checks 1178 and gh run view 40198378921 → headSha e0c9cfe, conclusion success, including tests-ok and package. Observed, not a substitute for the local verify above.

Not run:

  • smoke bench — index.js and src/host/ are untouched
  • Desktop or browser paint of a Needs you card — the suite asserts the CSS string and the DOM text, not a layout engine
  • check-pack, tsc, actionlint — those sit in the package job; the patch-apply check that job runs is inside verify and passed, and the package job on this SHA was green when read

No actionable findings at e0c9cfe. Needs you cards wrap the full ask. Tier T1. Author-login PASS attested for tip (Attestation line).

@Birfy
Birfy added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit bb96cc8 Oct 25, 2026
12 checks passed
@Birfy
Birfy deleted the cursor/inbox-needs-full-ask-1fd1 branch October 25, 2026 13:47
@github-actions github-actions Bot removed the agent-pr Pull request opened by an agent label Oct 25, 2026
HugoXK pushed a commit to HugoXK/FlyBot that referenced this pull request Oct 25, 2026
…oup (ThinkFlowLab#1185)

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
Written-by: Dev
Owner: Dev
Reviewer: Reviewer

Fixes ThinkFlowLab#1182

## What changed

A group can pick one task lead (总负责人) for the board. That Bot, or the
admin when none is picked, records the one overall task and assigns each
part. Another Main who is only a member no longer plans. Assigning a
card claims it, so the assignee starts without a confirmation.

The assignee is woken in its group session as soon as the card is
written. The wake is a room turn (`[Group chat "…" · your task]`), and
the reply is posted into the group when the turn ends. A question stays
in that reply. Own-chat tasks stay `[Continue task]`.

A member can still record or update its own room card, and can link its
own subtask to the overall task.

Rebased onto `origin/main` `bb96cc8` (ThinkFlowLab#1178, Inbox Needs-you full ask).
The inbox CSS and client bundle from that merge stay. This branch still
delivers a group card as a room turn (`taskDrive`, note `your task`) and
keeps the task-lead planner, plus `noteWake`, `expireWriteBacks`, and
the two-wake / one-day cap from ThinkFlowLab#1179.

Claim: branch `cursor/group-task-lead-drive-d54f`. A claim comment,
assignee, and labels could not be written on ThinkFlowLab#1182 (token 403). ThinkFlowLab#1099
and ThinkFlowLab#1109 are the closed foundations; open board issues (ThinkFlowLab#1173, ThinkFlowLab#1172,
ThinkFlowLab#1166, ThinkFlowLab#471, ThinkFlowLab#427, ThinkFlowLab#149) are different and were left open.

## Why

`ThinkFlowLab#1182`: a group board had one overall card but no single planner — any
Main who was a member could record it — and a card the lead assigned was
not yet work: the assignee only started on the next nudge. So a group
either had two plans or a card that sat until someone spoke. This makes
the lead (or the admin when no lead is picked) the only planner, and
makes an assigned card claim itself and wake the assignee's group
session at once, with the answer posted into the group.

## Acceptance

Assign

- `update_group` `task_lead`, `update-room` `taskLead`, or **Make task
lead** sets `room.taskLead` to a local member. **Use the admin** /
`none` clears it. A face-to-face room has no board lead.
- Only that lead, or the admin when none is picked, may record the
overall task or assign a subtask. A second Main cannot.
- A member may still file its own room card and may link its own
subtask. It cannot assign work to someone else.
- A subtask assigned to another Bot is created `claimed`. There is no
confirm step. The lead still cannot move that card with `task-update`.

Proactive drive

- The board write wakes the assignee's group session without anyone
speaking. The session is opened if the Bot has not spoken there.
- The wake is `role: room` with `taskDrive`, header `[Group chat "…" ·
your task]`. The cue says to start and not to wait for a confirmation,
and to ask in the reply, not in the Bot's own chat.
- A non-empty reply is posted into the room when the turn ends. An empty
reply is not posted. A late post calls only the Bots it names. The
driver does not post the cue and does not open a round.
- A later board write while that wake is queued does not queue another.
A live group round still defers the wake.
- An own-chat task is unchanged: `[Continue task]`, and the reply is not
posted to a room.
- A pending decision comment still wakes at most twice, then stops;
after a day the record turns `unconfirmed` (ThinkFlowLab#1172). That cap does not
silence a task that is still real work.

## Verification at the tip

Tip SHA: `9ef18b8e63e292ba3149e20834838e6550b8bd26`

The earlier tip `6f3077f59ccadd9e6605424098aa867edb8f8905` was removed
from the queue for `merge_conflict`. This rebase is a new tip.

Ran:

- On base `2521aab1c17ebb91b016b3b85122ccc872e36847`, before the fix:
`TZ=UTC node --import ./test/harness-resolve.mjs --test
--test-name-pattern "only the task lead" test/task-drive.test.js` (from
`core/`). Failed: `/Only the group admin can record the overall task/`
did not match `- task-1f9d6f4966b9cac0 [not-started 0% normal overall]
Take over`. That assertion is the defect (a second Main recorded the
overall task). Guardrails already true on that base: a non-admin
`updateRoom` is rejected; a member may still link a parented subtask.
- `npm run build` in `core/` after the rebase; `node
scripts/ds-bot-patches.mjs generate` and `check`. The rebuilt
`client.js` contains both the ThinkFlowLab#1178 Needs-you wrap rule and **Make task
lead**.
- `TZ=UTC npm run verify` at the repo root after the rebase: exit 0.

Not run: the smoke bench (`src/host` changed; smoke is outside `verify`
and no bench was started), the desktop app, and a real model turn.

## Risk

Host: `task-drive.js`, `tasks.js`, `roster.js`, `groups.js`, `tools.js`,
`delivery.js`, `prompt.js`; client: `group-settings.js`, `i18n.js`;
regenerated `client.js` and the patches. The failure this could
introduce is a room turn that does not start, or a card nobody but the
lead can touch. Guardrails kept: a member still files and links its own
room card, a non-admin's `update-room` is still rejected, and the ThinkFlowLab#1172
cap (`WRITE_BACK_WAKES = 2`, `WRITE_BACK_EXPIRY_MS` one day) is
untouched. Not run: the smoke bench (no bench started) and a real model
turn — the wake is asserted on the injected session, not on a live Bot.

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-11419e78-566c-56bb-bfad-891e6b52d54f?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-11419e78-566c-56bb-bfad-891e6b52d54f&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
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.

Inbox Needs-you cards truncate so the body cannot be read in place

1 participant