You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
render compact feed thread units from the real parent chain returned by the existing thread-history lookup
cap every unit to three casts and collapse omitted intermediate replies behind an accessible “Show N hidden replies” control
add avatar-aligned accent connectors so parent → reply relationships are obvious across single-level, nested, deep, and collapsed states
preserve existing post navigation, quote-card behavior, ranking/reply-bumping behavior, and quoted-reply isolation
UX behavior
Original posts remain unchanged.
Replies show a continuous visual connection between the relevant parent avatar and the replying author’s avatar.
Deep cross-author threads now resolve their ancestry and display at most three relevant casts with collapsed middle context.
Quote casts continue to render only the quoted post; quoted replies do not inherit Alice/Bob/thread ancestry.
The hidden-context indicator opens the original thread without changing any card’s existing tap destination.
Platform support
The treatment is implemented in shared React Native feed components using existing theme tokens, spacing helpers, avatars, and touch primitives, so iOS and Android receive the same hierarchy while retaining platform-native touch/accessibility behavior.
Testing
npm test -- __tests__/compactThreadContext.test.ts — 3/3 passed
npm run lint -- components/SocialFeedModal.tsx components/SocialFeed/threadContext.ts __tests__/compactThreadContext.test.ts — passed
Manually reviewed representative states for original posts, direct replies, deep nested replies, collapsed context, quote casts of originals, quote casts of replies, and multiple bumped conversations.
Final audit update pushed (9e0c5b4):\n\n- Thread-history quoted casts now preserve the quoted author PFP instead of relying only on lazy stub resolution.\n- Reply connectors are aligned exactly to the 44px avatar column for continuous parent-to-child rails.\n\nFinal checklist:\n- Original/reply/nested/deep/collapsed states: covered by real ancestry + three-post cap.\n- Quote originals and quote replies: unchanged quote-card model; quoted replies contain no ancestry.\n- Post navigation, ranking, and reply-bumping behavior preserved.\n- Shared React Native implementation applies consistently to iOS and Android.\n\nValidation: focused Jest suite passed (3/3), ESLint passed, changed-file TypeScript checks clean, git diff --check passed.
Critical-criteria refinement pushed (148bcc1):\n\n- Scoped thread-history ancestry lookup to actual resolvable replies, so original posts never trigger an unnecessary fetch.\n- Recalculated connector alignment against the shared feed row padding and 44px avatar column for a continuous parent-to-reply rail across nested and collapsed states.\n\nAll acceptance states remain covered: original posts; single-level replies; third/fourth/fifth-plus-level replies through real ancestry; collapsed deep context with a strict three-post cap; quote casts of originals and replies without inherited ancestry; and multiple bumped conversations as independent feed units. Chrono/reply-bumping behavior remains unchanged.
Production-risk audit complete. Final hardening pushed (3a72c39):\n\n- Added a duplicate-unit guard: if a reply is already represented in resolved thread ancestry, it cannot also render as its own separate feed row.\n- Confirmed cached thread history is bounded by the existing 50-thread / 25-cast cache ring, so the new compact-context lookup does not introduce unbounded storage.\n- Confirmed FlashList item identity and interaction-state maps continue to use each rendered cast hash/FID rather than the outer feed-row identity.\n\nFinal risk checks:\n- Ranking/reply-bumping data flow untouched; changes are render-only after existing feed assembly.\n- Existing post/thread navigation paths unchanged.\n- Quote cards remain ancestry-free and preserve quoted-author PFPs.\n- Strict three-cast cap remains enforced per feed unit.\n- Shared React Native/theme implementation applies consistently to iOS and Android.\n\nValidation rerun passed: focused Jest suite 3/3, ESLint clean, changed-file TypeScript checks clean, and git diff --check clean.
Senior production self-review hardening pushed (0e6c1e8):\n\n- Preserve quoted media immediately from thread-history data instead of relying on a second lazy lookup.\n- Carry quoted-cast recast state so existing interaction controls remain accurate for thread-derived rows.\n- Raise the collapsed-context target to a 44px minimum touch height on both platforms.\n- Skip synchronous MMKV cache reads when ancestry lookup is disabled, avoiding repeated disk reads while recycled feed rows initialize.\n- Reverted the previous parent-based duplicate suppression because it could incorrectly absorb distinct sibling branches; retained exact-hash deduplication only.\n\nValidation: focused Jest 3/3, ESLint clean across all touched files, changed-file TypeScript clean, and git diff --check clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
UX behavior
Platform support
The treatment is implemented in shared React Native feed components using existing theme tokens, spacing helpers, avatars, and touch primitives, so iOS and Android receive the same hierarchy while retaining platform-native touch/accessibility behavior.
Testing
npm test -- __tests__/compactThreadContext.test.ts— 3/3 passednpm run lint -- components/SocialFeedModal.tsx components/SocialFeed/threadContext.ts __tests__/compactThreadContext.test.ts— passednpx tsc --noEmit— changed files clean (repository has pre-existing unrelated errors)git diff --check— passedManually reviewed representative states for original posts, direct replies, deep nested replies, collapsed context, quote casts of originals, quote casts of replies, and multiple bumped conversations.