Skip to content

feat(profile): give Bookmarks its own tab on the own profile #8972

Description

@Chardot

Why

#8540 rebuilt the profile's My Lists tab to the approved design, and the Bookmarks row it briefly carried came out on 2026-09-09 at the owner's direction: bookmarks are not a curated list, they are a tab of their own. Until that tab exists, kind 10003 saves have no read surface on the profile, so the share sheet's Save action is write-only there. The /saved-videos screen still exists but nothing on the profile links to it.

Design

Figma: user-myProfile-scroll-bookmarks

The frame shows the own profile scrolled so the tab strip is pinned under the status bar. Five icon tabs: Videos, Liked, Reposts, Bookmarks (selected, bookmark glyph, green underline), Lists. Below it a three-column square grid of the saved videos, edge to edge, with thin gutters and no captions.

The app's own profile currently has six tabs, Videos, Collabs, Liked, Reposts, Lists, Comments, so the frame's five do not map one to one. Proposed order: Videos, Collabs, Liked, Reposts, Bookmarks, Lists, Comments, which keeps Bookmarks between Reposts and Lists as the frame draws it and leaves the two tabs the frame omits where they are.

What exists already

  • ProfileSavedGrid (mobile/lib/widgets/profile/profile_saved_grid.dart) renders a viewer's kind 10003 saves as a paginated grid; today only SavedVideosScreen (/saved-videos) embeds it. The tab should reuse it rather than add a second saved-videos grid.
  • profileTabKinds in mobile/lib/widgets/profile/profile_tab_kind.dart owns tab order per profile type; ProfileTabKind needs a bookmarks member and the own-profile list needs the new slot. The other-profile order stays unchanged, since someone else's bookmarks are not ours to browse.
  • Two open bugs sit in the grid this tab will surface: fix(profile): an unresolved video in a partly-filled Saved/Liked window is never retried #7626 (an unresolved video in a partly filled window is never retried) and fix(profile): Saved and Reposts assert a load failure over IDs they never fetched #7639 (Saved and Reposts assert a load failure over IDs they never fetched). Worth landing first or alongside, since the tab will make them visible on every profile visit.

Acceptance

  • Own profile shows a Bookmarks tab in the slot above, with the bookmark glyph from divine_ui and a localized semantic label; other profiles show no such tab.
  • The tab renders the viewer's saves through ProfileSavedGrid, with the same empty state the /saved-videos screen shows today, and tapping a tile opens the video.
  • Saving from the share sheet and returning to the profile shows the new save without a restart.
  • profile_tab_kind_test.dart pins the new order for both profile types; a widget test pins that the tab renders the grid and that another user's profile has no Bookmarks tab.
  • Decide what happens to the /saved-videos route once the tab is the read surface: keep it as a deep-link target or redirect it to the profile tab.

Screenshot of the Figma frame attached below.

Image

Activity

  1. self-assigned this
    on Sep 9, 2026
  2. added theissue type on Sep 9, 2026
  3. moved this from Triage to In progress in Divine programon Sep 21, 2026
  4. moved this from In progress to Testing in Divine programon Sep 22, 2026
  5. added a commit that references this issue on Oct 22, 2026
    e3ff86d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions