8000 feat(timeline): saved views of the timeline's filters and order by adeelahmad · Pull Request #656 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(timeline): saved views of the timeline's filters and order - #656

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-pf8kii
Oct 19, 2026
Merged

adeelahmad merged 1 commit into
mainfrom
claude/project-thread-pf8kii

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: the filters you read the timeline by (only emails from Work Gmail, important and unreviewed, For you) had to be set again each time, or kept as a bookmarked address.

After: a Views menu beside the search box lists your saved views; picking one sets its filters and order. Save these filters as a view asks for a name (one is offered from the filters, Enter saves); Save these filters into “X” updates a view, and Delete “X” removes one with Undo. When the filters on screen match a view, the button shows its name. Agents get the same through the API (GET/POST /api/v1/activities/views, PATCH/DELETE /api/v1/activities/views/{id}) and MCP (timeline_views, save_timeline_view, delete_timeline_view).

How: a view is a saved_view of the new kind timeline, stored with the existing saved-views code (domain/views.py) and its rules, personal to whoever saved it (no namespace, no sharing). Its state is checked by a TimelineViewState schema (kinds, actors, namespaces, tag, days, automation, words, unreviewed, important, order).

Motivation and Context

A refine-later item of the activity stream design (thread above): "Saved filter views." Follows #654.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change; ! in the title)

Checklist:

  • The title is a Conventional Commit.
  • My code follows the code style of this project (make hooks checks it on commit).
  • I added or updated tests.
  • My change requires documentation updates, and I have updated docs/ accordingly.
  • Users need more than the title to understand it, so I wrote it as a fragment in changelog.d/ (timeline-saved-views.md).

Done questions (AGENTS.md)

  • Goal: views saved and picked where the timeline is read; merged on green CI.
  • Agents: REST routes and three MCP tools, tested in test_timeline_views.py.
  • Zero setup: nothing to configure.
  • Fewest clicks: save is one menu item and Enter with a name filled in; picking is two clicks; delete has Undo, no confirm.
  • Configurable: n/a, no new setting.
  • Light: a few rows in an existing table.
  • Private and secure: a view is personal (no space), read and changed only by whoever saved it, through the saved-views rules; no new surface for the threat model.
  • Cost: no model call.
  • User decides: views exist only when the person saves one; defaults unchanged.
  • Upgrades: a new kind of row in saved_view; nothing existing changes shape.
  • Honest: docs/timeline.md gains a Saved views section and a status row; the refine-later line goes.
  • Tested and documented: pytest test_timeline_views.py, test_mcp.py; jest timeline-ui ("Views:" tests) and timeline-model; docs timeline.md, mcp.md, requirements.md, README, changelog.d; client from make openapi.
  • Open standards: n/a; no new dependency.
  • Reported: result goes back in the thread; refine later: sharing a view with a circle.
  • Reuse: domain/views.py and routes/views.py helpers, the page's existing Filters and toParams.

CI on the PR decides the merge.


Generated by Claude Code

A Views menu beside the order lists your saved views, one click each, and
saves the filters shown now under a name guessed from them (Enter saves,
Escape leaves). Picking a view and changing the filters offers to save them
into it; deleting one can be undone. Views are each person's own, kept as
saved views of a new kind beside the Library's views and saved searches.

GET/POST /api/v1/activities/views, PATCH/DELETE /activities/views/{id}, and
MCP timeline_views, save_timeline_view and delete_timeline_view.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ln25ykE6uBDqx21WBU94SX
@adeelahmad
adeelahmad merged commit 777a41b into main Oct 19, 2026
12 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-pf8kii branch October 19, 2026 02:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0