Skip to content

Collections: owner-only actions, Shared with me, and removal of collection groups #406

Description

@zZebrahz

Summary

Client side of Silo-Server/silo-server#1615. A personal collection belongs to the profile that created it, and only that profile can change it. The owner can turn on Show to other profiles, and every profile on the same login then sees the collection read-only in a Shared with me section. Personal collection groups are removed from the API.

Why v1

The server change blocks 1.0 and removes fields and routes this app calls today. The app needs to follow before the /api/v2 lock.

Changes

Shared (shared/):

  • Stop using the personal group routes and fields: CollectionApi group calls (createGroup, getGroup, getGroupsOrder, moveCollectionToGroup, and the rest), group_id on collections and getCollectionsOrder, groups in the list response and the groups capability. Remove group handling from CollectionRepository and CollectionsViewModel.
  • Drop allowed_profile_ids from PersonalDataModels.kt. is_shared now means "every profile on this login".
  • Split the collection list into the profile's own collections and Shared with me by comparing creator_profile_id with the acting profile. Label shared ones "by Name" from the login's profile list. Order Shared with me by owner, then by the order the server returns.
  • Only offer delete, item removal, sync and reorder on collections the acting profile created. Today CollectionDetailViewModel and TvCollectionDetailViewModel treat every personal collection as manageable; the server refuses these actions for anyone but the creator (same problem as silo-server#1614 on the web).

Android mobile:

  • CreateCollectionSheet (and any edit screen): add a Show to other profiles switch, off by default. Helper text: Every profile on this login will see this collection. Titles a profile can't access stay hidden from it. Nobody else on the server can see it.
  • CollectionsScreen: Your collections without group sections, then Shared with me.

Android TV:

  • TvCollectionsScreen: replace group sections with Your collections and a Shared with me row. Shared cards show "by Name" and no management actions.

Library Collections tab (both): cards in the "My collections" group whose creator_profile_id isn't the acting profile show "by Name" instead of "User collection".

Rough size

M

Validation reference

Collections validation: parent Silo-Server/silo-server#192. Affects Android #5 and Android TV #6, which get a sharing case when silo-server#1615 lands. Server feature blocks 1.0.

AI harness

Claude Code

AI tool(s)

GitHub CLI, Git

AI model(s)

Claude Opus 5.5 (claude-opus-5-5)

AI involvement

AI-assisted. The design came from a discussion with the maintainer; the AI located the affected code on main at c38fb93c and drafted this issue.

Independent or adversarial review

n/a; issue only.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions