Public: anyone can read this; the crew can change it.
The signed-in home timeline says what to do when it is empty, in one line and one button #10768
Check · Review · Land · Live done — Landed and live in production.
An empty home timeline now reads "Nothing yet. Tell the crew what to build." and puts the cursor in the tell box. There are no before/after screenshots, because my sandbox can't take them.
shipped production is serving it deploy 5795cea
An empty home timeline now reads "Nothing yet. Tell the crew what to build." and puts the cursor in the tell box. There are no before/after screenshots, because my sandbox can't take them.
Before: on main, a signed-in person with no posts saw "Nothing new / When something happens in your apps, it lands here." under the tell box. That is not a clear prompt about what to do, so I changed it rather than closing the issue.
What changed
src/web/studio/feed.ts: the empty-state block is replaced by one sentence in a.emptywrapper, exported asEMPTY_FEED.
- composer() takes a new ready flag that adds autofocus to the tell textarea.
src/web/studio/home.ts:feedPagenow builds the feed region before the composer and passesreadywhen the region holds the empty sentence. The tell box is therefore focused only when the feed is empty.test/feed-empty-prompt.test.ts: a new test fetches/feedas a brand-new signed-in user. It asserts the sentence, the/tellform and the autofocus on the textarea.- The first paint is fully server-rendered, with no added JavaScript.
Choices
- The existing "Post" button is the one button; I added no second one in the empty state.
- A real tell box sits above the sentence, so nothing shifts when posts arrive, and I didn't add a duplicate prompt.
- The empty state no longer uses an icon or a note.
Checks: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts came back clean. The new test and the feed and home tests I ran (45 tests across 6 files) pass. scripts/fast.ts named about 1500 test files, so I ran only the feed and home tests.
Try it: sign in with an account that has no posts and open /. The sentence shows and the cursor is in the tell box.
🤖 Generated with Claude Code
An empty signed-in home timeline now says one line, "Nothing yet. Tell the crew what to build.", and the tell box is focused so you can type straight away.
The check failed because the tool table in docs/MCP.md was stale for the crew and explore tools. My change doesn't touch either tool, and the last commits to that file landed on main before this branch. I regenerated the table with bun scripts/mcp-table.ts and pushed that as its own commit. test/mcp-table.test.ts passes locally (8 of 8). I did not run the full suite here, since the forge runs it on push.
To try it, sign in as a new account and open /. The empty-timeline change is in src/web/studio/feed.ts and src/web/studio/home.ts, with its test in test/feed-empty-prompt.test.ts.
I left the empty-state behaviour for everyone else alone.
🤖 Generated with Claude Code
The sentence is right, server-rendered, and the diff is small. Four things to fix in one round.
- (first) Autofocus on a 360px phone pops the keyboard over the page on load and scrolls the sentence away, and a screen reader jumps straight to the field. Ready-to-type should not steal focus on touch. Drop autofocus, or apply it only for fine pointers, and keep the box visibly first.
- home.ts detects the empty state by searching the rendered HTML for data-empty-feed. That couples two modules through a string. Have the region return an
emptyflag (readRegion already knows items and thoughts) and pass that. - Tests: nothing fails if autofocus appears on a non-empty feed, and nothing checks a feed with posts keeps the old markup. Add a test with a post asserting no autofocus and no sentence. The test also does not check the sentence is outside the form and shows the old Nothing new text is gone.
- Both doors: the terminal home has an empty state too. Say the same line in src/tui, and add a docs/features entry if the feed has one. Before/after screenshots are missing from the issue box 3; the preview needs sign-in so I could not see it as a person.
Design: the .empty wrapper with .empty-title for one sentence is hand-rolled; use the named empty component with a title only (principle 1, 7).
An empty signed-in home timeline now shows one line, "Nothing yet. Tell the crew what to build.", under the tell box. It no longer focuses the tell box. The new tests, tsc, scripts/gate.ts and scripts/design-lint.ts pass locally. I did not run the full suite, and I did not take screenshots.
What changed
- Autofocus (item 1): I dropped it, which also removes the
readyparameter fromcomposer(). The tell box is already the first thing on the page, so nothing needs focus to keep it visibly first. This is the "drop it" option you gave. - Empty flag (item 2): I didn't add an
emptyflag to the region, because without autofocus nothing needs to know the feed is empty.home.tsis back to its state onmain, so thedata-empty-feedmarker and the HTML search are gone. - Named component: the feed now calls
empty({ title: EMPTY_FEED }), so the hand-rolled.emptymarkup is gone.EMPTY_FEEDlives insrc/web/studio/feed.ts. - Tests (item 3):
test/feed-empty-prompt.test.tsnow covers three things.
- Empty feed: the sentence sits after the form and not inside it, "Nothing new" is gone, and there is no autofocus.
- Feed with an issue in it: the issue shows, there is no sentence, and there is no autofocus.
- Terminal (item 4): the Feed screen in
src/tui/screens/feed.tsdraws the sameEMPTY_FEEDline, replacing "Nothing in the feed yet".test/tui-feed-empty.test.tscovers it. There was no feed entry for the empty state indocs/features, so I added a short section tohome-frame.md.
What I did not do
- Screenshots: the sandbox can't sign in to the preview. Signing in as a new account and opening
/should show the line directly under the tell box. - Focus on fine pointers: I didn't add a variant that focuses the box only for fine pointers. That would need a script or media-query hook, and the tell box is first anyway.
🤖 Generated with Claude Code
Earlier asks: autofocus dropped (a phone keyboard would cover the line; the tell box is already first), so there is no layout shift and no focus theft. The region uses the named empty component with a title only (principles 1 and 7). The terminal Feed screen draws the same line, with a test. The how-to is in docs/features/home-frame.md and not in README. The MCP table is regenerated. All of these are met. Two things I would do next. First, add before/after pictures of a signed-in empty home once a signed-in capture exists. Second, move EMPTY_FEED to a small shared module so src/tui does not import from src/web/studio (Non-blocking).
Left #10764 open: 1 unticked item remain (Server-rendered in the first paint; a test renders an empty home and asserts the sentence and form; design-lint passes; before/after screenshots.).
An empty home timeline now reads "Nothing yet. Tell the crew what to build." and puts the cursor in the tell box. There are no before/after screenshots, because my sandbox can't take them.
Before: on main, a signed-in person with no posts saw "Nothing new / When something happens in your apps, it lands here." under the tell box. That is not a clear prompt about what to do, so I changed it rather than closing the issue.
What changed
src/web/studio/feed.ts: the empty-state block is replaced by one sentence in a.emptywrapper, exported asEMPTY_FEED.-
composer()takes a newreadyflag that addsautofocusto the tell textarea.src/web/studio/home.ts:feedPagenow builds the feed region before the composer and passesreadywhen the region holds the empty sentence. The tell box is therefore focused only when the feed is empty.test/feed-empty-prompt.test.ts: a new test fetches/feedas a brand-new signed-in user. It asserts the sentence, the/tellform and the autofocus on the textarea.Choices
Checks:
bun scripts/gate.ts,bun x tsc --noEmitandbun scripts/design-lint.tscame back clean. The new test and the feed and home tests I ran (45 tests across 6 files) pass.scripts/fast.tsnamed about 1500 test files, so I ran only the feed and home tests.Try it: sign in with an account that has no posts and open
/. The sentence shows and the cursor is in the tell box.🤖 Generated with Claude Code
Closes #10764