|
Some checks failed
CD / Build and push images (push) Successful in 3m57s
CD / Deploy to Test (push) Successful in 11s
CI / Lint, typecheck, test (push) Successful in 4m32s
CI / Build container images (push) Has been skipped
CD / Smoke tests against Test (push) Successful in 1m14s
CD / Promote to Int (push) Successful in 11s
CI / Auth e2e pack (push) Failing after 2m51s
CI / Import/export fidelity gate (push) Has been skipped
Semantics changed from the issue during planning (documented there, comment 1192): favorites are PERSONAL per user, not pond-wide — the sys-fav label approach is dropped entirely. Storage is a page_favorites table (userId+pageId, FK cascade); PUT/DELETE /pages/:id/favorite toggles idempotently and needs read access only (#60 404 semantics — a star is a note-to-self, not a page modification), GET /ponds/:id/favorites lists the account's stars sliced to still-readable pages. Trashed pages keep their rows, so restore keeps the star; purge cascades it away. Web: one shared ['favorites', pondId] query feeds the TopBar star (between labels and history, golden when set), the golden tree icons in the sidebar, and a latching "Favorites" filter button next to the view switch that narrows either view (combinable with the label filter). No public-API/MCP exposure — with the label approach gone, that parity is no longer free; favorites stay UI-only for now. New favorites e2e pack (star toggle, golden icon, filter, per-user isolation) wired into CI; DB suite covers the round-trip, read gating, and the trash/restore/purge lifecycle. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fb2VzvcoBPHkjh8bZ6PzQn |
||
|---|---|---|
| .. | ||
| 20260704171456_init | ||
| 20260704224132_auth_models | ||
| 20260705090100_ponds | ||
| 20260705185146_quotas | ||
| 20260705200714_pages | ||
| 20260708082627_attachments | ||
| 20260708101011_trash_and_jobs | ||
| 20260709060328_collab_open_sessions | ||
| 20260709062007_page_versions | ||
| 20260709062727_page_version_created_by | ||
| 20260709082418_labels | ||
| 20260709104519_page_links | ||
| 20260709111040_search_vector | ||
| 20260709115727_role_grants | ||
| 20260709140000_owner_admin_grants | ||
| 20260710035316_conversion_jobs | ||
| 20260710041215_import_pages_conversion | ||
| 20260710120000_data_export_expiry | ||
| 20260710130000_plugins | ||
| 20260711100000_setup_completed_backfill | ||
| 20260711180000_audit_log_and_job_duration | ||
| 20260711220000_comments | ||
| 20260711230000_watches | ||
| 20260712000000_notifications | ||
| 20260712010000_digest_frequency | ||
| 20260712020000_api_tokens | ||
| 20260714000000_page_hierarchy | ||
| 20260714120000_conversion_job_options | ||
| 20260716000000_page_favorites | ||
| migration_lock.toml | ||