From f82f6641b2b0db32708fc0e50d860da6b7b341c4 Mon Sep 17 00:00:00 2001 From: yutakobayashidev Date: Tue, 14 Jul 2026 01:43:08 +0900 Subject: [PATCH] docs: reconcile intentional entry points --- .../specs/2026-07-13-tweet-detail-thread-design.md | 7 +++---- .../specs/2026-07-13-twitter-lite-design.md | 12 +++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/superpowers/specs/2026-07-13-tweet-detail-thread-design.md b/docs/superpowers/specs/2026-07-13-tweet-detail-thread-design.md index 5101000..e5a645e 100644 --- a/docs/superpowers/specs/2026-07-13-tweet-detail-thread-design.md +++ b/docs/superpowers/specs/2026-07-13-tweet-detail-thread-design.md @@ -12,10 +12,9 @@ visible conversation around it. Additional conversation pages load through the same intentional infinite-scroll behavior as the existing user and search feeds. -This is an additive extension to -`2026-07-13-twitter-lite-design.md`. Where that document lists only two routes -and two server functions, this document adds one status route and one narrowly -scoped read-only server function. +This document originally extended `2026-07-13-twitter-lite-design.md` with the +third route, `/status/:tweetId`, and the third narrowly scoped read-only server +function, `loadThreadPosts`. The base design now incorporates both additions. ## Decisions diff --git a/docs/superpowers/specs/2026-07-13-twitter-lite-design.md b/docs/superpowers/specs/2026-07-13-twitter-lite-design.md index 5a522e8..903b50b 100644 --- a/docs/superpowers/specs/2026-07-13-twitter-lite-design.md +++ b/docs/superpowers/specs/2026-07-13-twitter-lite-design.md @@ -10,14 +10,16 @@ Twitter Lite is a localhost-only reader for intentional access to X posts. It le - enter a handle or profile URL and read that user's posts; - search posts in popular or chronological order; -- optionally restrict search to accounts followed by the authenticated relay profile; and +- optionally restrict search to accounts followed by the authenticated relay profile; +- follow a deliberate post link or manually enter a valid `/status/:tweetId` URL + to read its visible conversation; and - continue through results with infinite scrolling. -The product reduces ambient discovery rather than limiting how far a deliberate search may scroll. It does not show content until the user enters a target or query. +The product reduces ambient discovery rather than limiting how far a deliberate search may scroll. It shows content only after a submitted target or query, deliberate post-link navigation, or a manually entered valid `/status/:tweetId` URL. ## Product Principles -1. **Intent before content.** The initial screen is empty. Every result begins with a typed handle, URL, or query. +1. **Intent before content.** The initial screen is empty. Every result begins with a submitted target or query, deliberate post-link navigation, or a manually entered valid `/status/:tweetId` URL. 2. **No ambient feed.** There is no home timeline, recommendation surface, trend list, notification screen, or recent-history list. 3. **Reading only.** The app exposes no posting, reply, follow, like, repost, bookmark, or deletion operation. 4. **No account directory.** Handles are unrestricted, but there is no autocomplete, suggested account list, or saved allowlist. @@ -112,7 +114,7 @@ TanStack Start supplies the browser/server boundary. Bird is imported only by se The target, query, product, and following flag are validated typed search parameters. Cursor state is internal to TanStack Query because it is transport state rather than a user-controlled view setting. -Route preloading never fetches posts. Data retrieval begins only when a valid submitted target or query is present. +Route preloading never fetches posts. Data retrieval begins only when a valid submitted target or query is present or a valid `/status/:tweetId` route is reached through a deliberate post link or manually entered URL. ### Server Boundary @@ -159,7 +161,7 @@ The status route and `loadThreadPosts` contract are specified in existing `getTweet()` and `getThreadPaged()` methods; they add no Bird or relay operation. -Neither function exposes the Bird client, arbitrary method names, arbitrary relay URLs, or mutation operations. +None of these functions exposes the Bird client, arbitrary method names, arbitrary relay URLs, or mutation operations. ### User Timeline Flow