Repository navigation
feat(timeline): a For you order learned from each person's reactions, comments and marks, each item saying why - #631
Merged
Conversation
… comments and marks, each item saying why Latest stays the default; order=for_you on GET /api/v1/activities, the MCP timeline tool and the assistant reorders the 200 newest items by recency times the person's own affinity for each item's actor, kind and entities, with why by id, and the Timeline page gets a Latest / For you toggle with the why line under each placed item. No model call, nothing stored. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ln25ykE6uBDqx21WBU94SX
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ln25ykE6uBDqx21WBU94SX
This was referenced Oct 18, 2026
feat(timeline): mute a source, a person or a kind, for good or until a time, for yourself alone
#635
Merged
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Requested by Adeel · project thread
Description
Before: the timeline had one order, newest first. Someone who reacts to a few sources and hides others still read everything in the order it came, and nothing in Lens learned from what they did.
After: next to Latest, the Timeline page has a For you order that puts what you care for most first, learned from your own reactions (+1), comments (+2), important marks (+2) and hidden marks (−3), each summed over the actor, the kind and the tagged entities of the item it was on. An item's score is its recency (halving every two days) times 1 + tanh(affinity ÷ 4), so a strong affinity doubles its score and a strongly negative one halves it. A line under each item it placed says why ("You often react to Work Gmail", "About St Mary's School, which you often react to", "You hid items from Dropbox before"). Latest stays the default; the choice lives in the address (
?order=for_you) like a filter, and with no signals yet the page says For you is the same as Latest. Nobody else's signals touch your order, no model is called, and nothing is stored.How:
domain/for_you.pyreads the person's most recent 200 signals of each kind in three small queries, looks the activities up once (events.get_many), sums the weights per actor, kind and entity, and scores a page's worth of the newest items (the 200 newest frombeforeon, the bestlimitshown;nextmoves past the window).GET /api/v1/activities?order=for_youreturnswhyby id; the MCPtimelinetool and the assistant'stimelinetakeordertoo, the assistant listing each item'swhy. The Timeline page gets the Latest / For you segmented control, the why line under rows, and carrieswhythrough the "N new" pill.Motivation and Context
Step 6 of the activity stream design (thread above): "For you ranking learned cheaply from reactions, comments and marks, explainable, with a Latest toggle". Follows #570, #622 and #627.
Types of changes
!in the title)Checklist:
make hookschecks it on commit).docs/accordingly.changelog.d/(for-you.md).Done questions (AGENTS.md)
order=for_youonGET /api/v1/activities, on the MCPtimelinetool and on the assistant'stimeline, withwhy.for_you.py(refine later: a setting if anyone asks).test_timeline_for_you.py(ranking, why, hidden sinks, paging, MCP, assistant), jesttimeline-model.test.ts(order as a view) andtimeline-ui.test.tsx(toggle, why line, default); docs timeline.md (For you section), mcp.md, assistant.md, requirements.md, changelog.d;make openapiregenerated the client.events.pageandget_many, the marks, reactions and comments tables as they are, the page's filters-in-the-address and theSegmentedcontrol; no new machinery.Local CI (
ci/local-ci.sh) on this head: see the thread; CI on the PR decides the merge.Generated by Claude Code