This commit is contained in:
j3d1 2026-08-27 20:41:19 +02:00
parent 2bb6624d50
commit 7276750c66
15 changed files with 552 additions and 169 deletions

View file

@ -50,16 +50,20 @@ separate "discover groups you're not in" browsing for MVP — you land in a grou
it, the same way you become friends with someone by request/accept, not by browsing a directory of
all users.
Known limitation: this list only ever queries the member's own home backend, so it only shows
groups actually hosted there (groups you created, or joined on your own domain). Membership itself
works regardless of which backend hosts the group — a remote member can still be invited, accept,
and fully edit/delete the group's items (see "Owning items as a group" below) — but a group hosted
on someone else's backend won't show up in your own "My Groups" list, because unlike friendship
(which both sides record), group membership is only ever recorded on the group's own home backend,
and there's no index anywhere of "which other backends has this identity been added to." Making a
remote membership discoverable would need a small personal pointer index (written by the client at
join time) plus a handle-based group lookup on the group's own backend; deferred as a fast-follow
alongside group-friending.
Listing groups (the table itself) only ever queries the member's own home backend — it's this
backend's own view of "groups I host you in" — but every row links to the same group detail page
regardless of where the group is actually hosted. Mirroring friendship (which both sides record),
the member's own home backend also remembers the bare fact of a remote membership, as a pointer
alongside the group's own home backend's real membership record, and merges the two into one table
keyed by handle (a group present in both keeps its home-hosted row, which already carries a member
count).
A group's full detail resolves from its handle the same way a friend's foreign items already do:
the client resolves the target group's own domain from its handle and talks to that backend
directly, rather than assuming home. `GroupDetail.vue` needs no "is this group local or foreign"
branch anywhere, including for creating a new item/storage location — the owner selector binds
directly to the group's handle, and a group reference is addressed by handle everywhere it appears,
never by a bare internal id.
### Group detail page