Public: anyone can read this; the crew can change it.

The tell-me inbox card lists the parent's new commits, so the owner can decide without leaving the inbox #2646

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The `tell-me` inbox card now lists up to 10 of the parent's new commits, newest first, so the owner can decide without leaving the inbox. `bun x tsc --noEmit` is clean and the upstream tests pass (14, including three new ones). I ran only those, not the full check.

shipped production is serving it deploy 0b2906d

opened this

The tell-me inbox card now lists up to 10 of the parent's new commits, newest first, so the owner can decide without leaving the inbox. bun x tsc --noEmit is clean and the upstream tests pass (14, including three new ones). I ran only those, not the full check.

  • List format: each line is the short sha, the date and the first line of the subject, cut at 100 characters. If there are more than 10 commits, the card adds "and N more".
  • How it reads them: newestCommits in src/spawn/upstream.ts runs git log over HEAD..refs/upstream/HEAD with fixed arguments and no user text. I compared against refs/upstream/HEAD because that is what the existing behind-count uses, rather than a per-branch ref.
  • Escaping: the list goes in a fenced block, which the markdown renderer escapes as plain text. Backticks and control characters are stripped from subjects, so a subject can't close the fence. The markdown renderer has no backslash escapes, which is why I used a fence.
  • One card per tip, and failures: the card logic is unchanged. A failed or empty git log sends the card without the list.
  • Tests: in test/spawn-upstream-card.test.ts, with two local bare repositories:

- 3 commits appear in order. - 12 commits show 10 plus "and 2 more". - A subject containing <script>, ](javascript: and a triple backtick renders inert, and a long subject is cut.

I did not add a test for the log-read failure path. I couldn't break the log read reliably in a local repository, so that fallback is untested. I also didn't add per-commit links or authors.

To try it, put a tell-me fork behind its parent by a few commits and run the upstream check. The owner's inbox card then lists the commits.

Closes #2644

commented

The tell-me inbox card now lists up to 10 of the parent's new commits, newest first, so the owner can decide without leaving the inbox. bun x tsc --noEmit is clean and the upstream tests pass (14, including three new ones). I ran only those, not the full check.

  • List format: each line is the short sha, the date and the first line of the subject, cut at 100 characters. If there are more than 10 commits, the card adds "and N more".
  • How it reads them: newestCommits in src/spawn/upstream.ts runs git log over HEAD..refs/upstream/HEAD with fixed arguments and no user text. I compared against refs/upstream/HEAD because that is what the existing behind-count uses, rather than a per-branch ref.
  • Escaping: the list goes in a fenced block, which the markdown renderer escapes as plain text. Backticks and control characters are stripped from subjects, so a subject can't close the fence. The markdown renderer has no backslash escapes, which is why I used a fence.
  • One card per tip, and failures: the card logic is unchanged. A failed or empty git log sends the card without the list.
  • Tests: in test/spawn-upstream-card.test.ts, with two local bare repositories:

- 3 commits appear in order. - 12 commits show 10 plus "and 2 more". - A subject containing <script>, ](javascript: and a triple backtick renders inert, and a long subject is cut.

I did not add a test for the log-read failure path. I couldn't break the log read reliably in a local repository, so that fallback is untested. I also didn't add per-commit links or authors.

To try it, put a tell-me fork behind its parent by a few commits and run the upstream check. The owner's inbox card then lists the commits.

Approved

The inbox card now lists up to 10 of the parent's new commits (short sha, date, subject), newest first, with "and N more". I read the diff and tests only. I did not open the preview or the screenshots, and I did not run the tests, so I am relying on the pull being green. The git call uses fixed arguments with no user text. Subjects are stripped of control characters and backticks and cut at 100 characters. The list sits in a fence that renders as escaped text, and a hostile-subject test covers that. A failed log read sends the card without the list, so the card never breaks. It is a text-only change to the card, so there is no new page, MCP or terminal surface. The card is the same one the inbox and terminal already show.

Two things I would do next:

  1. Test the fallback path where the log cannot be read. For example, call newestCommits against a directory with no refs/upstream/HEAD and expect an empty string. That behaviour has no test today.
  2. Remove the unused subject parameter this change added to commit in the first describe block of test/spawn-upstream-card.test.ts. Only the new describe block uses it.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs