Skip to content

Messaging

Doug Blank edited this page Sep 13, 2026 · 6 revisions

Messaging

Gramps Connect has a built-in way to discuss the tree with the other people working on it with you, without leaving the app or attaching a sticky note to a printout. Everything is a Discussion: a thread with a title that anyone can post in, and that can optionally be linked to any number of records — a research goal gathering the People, Sources, Citations and Repositories it's built on, or just a casual conversation about one record, or nothing in particular.

A floating window, not a page

A discussion opens as a small floating window — a chat head anchored to the bottom-right corner of the screen, Messenger-style — not a page that takes over what you were looking at. Opening one never navigates you away from the record or list you're on: the window floats on top, you can keep browsing and editing underneath it, and it stays open across whatever you click next. Its header bar minimizes it down to a small title strip (click to expand again) or closes it outright; more than one discussion can be open at once, each its own window, up to 5 — opening a 6th closes the oldest one to make room. Nothing about the discussion itself is lost when its window closes this way (or any other way); reopen it any time from its own Discuss button or its record's Discussions section.

Inside, it's a message thread — everything anyone has said, oldest first, each bubble showing who wrote it and when, with your own messages aligned to the right — plus a collapsible Linked objects list. Type a reply and send it, and it's added to the thread immediately; everyone else's tab picks it up the normal live-sync way, and an already-open window updates live too.

Anyone with edit permissions can fix a typo in any message (a pencil icon on the bubble swaps it for a small text box in place) or delete one outright — not just the author's own, the same anyone-with-permission rule every other edit/delete in Gramps Connect follows, rather than a stricter "only your own messages" one. Either way, every open window showing that discussion reflects it right away, including someone else's, live.

Discussing a record

Most record types — People, Families, Events, Places, Repositories, Sources, Citations — have a Discuss button in their detail panel. With no discussion linked to the record yet, it goes straight to a small form: a title (pre-filled from the record, editable), a description, and who to invite. Once at least one discussion is already linked to the record, Discuss instead offers a choice — join one of those from a list, or start a new one alongside them, for a record that reasonably has more than one live conversation going (a general one, and a narrower research question, say). Either way it pops open a floating window; the record's own Discussions section (alongside its Notes and Stories) also lists every discussion linked to it, so it's easy to get back to any of them without remembering to click Discuss.

Messaging someone directly works the same way: click their avatar in the active-users list to open (or start) a private discussion between just the two of you, as a floating window. It won't show up linked to any record, and it isn't listed on the Discussions page either, so it stays out of the general list unless you know to look for it.

Invited participants are shown on the discussion (in its floating window and on its management page) so everyone can see who it's meant for, but they're a label, not a lock — anyone who can already see the tree can still join in even if they weren't on the original list. Add or remove invitees later from the discussion's management page.

A Guest-role account can't be picked as an invited participant — since discussions are hidden from Guests entirely (see below), inviting one would only add a name no one could ever act on.

Being named gets you a notification of its own — "You've been invited to a discussion," distinct from the ordinary activity toast — whether you were named when it was first started or added to its invite list later. It only fires once per discussion, the first time you're found on the list, so it won't keep re-announcing itself every time someone else edits that same discussion afterward.

Browsing and managing discussions

The sidebar's Discussions view is a tree-wide list of every discussion, whether or not it's linked to anything — selecting one opens its own management page (not the floating window) with its title, description, and an Open discussion button. The list is sorted newest first by its Last changed column, and posting a new message bumps its own discussion back to the top of that list too, not just an actual rename or description edit — so the list doubles as an at-a-glance view of which conversations have recent activity. Use the list's Start a discussion button to start one from scratch — give it a title and, optionally, a description of what it's for — and its own Link an object control to pull in the specific People, Sources, Citations, Repositories, Events, Places, Media or Notes a research question is actually about, one at a time, from any type. This is the way to build up a real research discussion: start it here, then keep its floating window open while you go add the sources and citations it turns out to need. Anyone can unlink a record from a discussion later without deleting either the discussion or the record itself.

Anyone with edit permissions can rename a discussion, change its description or invite list, or delete it outright, all from its management page — the floating window is for chatting, not editing. Deleting a discussion deletes every message in it too, not just its title/description, so nothing is left behind, and closes its own floating window if it was open — there's no undo, so it asks for confirmation first.

Real names, not usernames

A message shows the real name of whoever sent it, not their login username, whenever that name is available — resolved from a background lookup similar to a user directory. Your own name always resolves (no special permission needed to know who you are); seeing everyone else's real name depends on your role having visibility into the user list. A username with no resolvable name just displays as-is.

Under the hood

A discussion is an ordinary Gramps Note, marked with a custom note type ("topic" — the name in the underlying data, from before "Discussion" became the name shown in the app) so it can be told apart from a regular note or an auto-generated life story — the same trick used to keep those two out of each other's way. Its title and description live in the note's own text as a small JSON object rather than free text, the same way a generated story's text holds its own structured spec. Each message is its own separate Note, typed "topic-message" and addressed to its discussion by putting the discussion's own handle on the first line of its text (its sender's username and message follow on the rest, the same "username: the message itself" folding a message note has always used, since Note has no author field of its own) — so posting a message never has to modify the discussion's own note, and never modifies the linked records either. The trade-off is on delete: a message is addressed by that embedded handle, not Gramps' own note_list reference mechanism, so Gramps' usual delete-time cleanup (which only follows note_list backlinks) has no way to find a discussion's messages when the discussion itself is deleted. Gramps Connect deletes them itself first, as part of the same action, so a deleted discussion doesn't quietly leave its messages behind.

Linking a discussion to a record uses Gramps' own note_list mechanism — the discussion's own note handle is added to that record's list of notes, the same list its ordinary notes live in — so there's nothing proprietary underneath a discussion's links; a discussion (and what it's linked to) is exactly as portable as the rest of the tree if opened in Gramps Desktop or gramps-web, just as a plain note with a JSON-looking body and a title-like tag if you go looking for it there.

Every discussion and message note is marked private so it stays hidden from Guest-role accounts, the same flag an ordinary sensitive note would use. Because of that, the sidebar's Discussions icon doesn't appear at all for a Guest-role account — there'd be nothing but an always-empty list behind it. That's the only access control there is: it's not truly private in a stronger sense, since anyone with regular note-viewing permission (any non-Guest role) can still read one via the API if they went looking — a one-on-one discussion is just an ordinary discussion with a private-feeling name, not a cryptographic guarantee, and neither is an invited-participants list. Posting a message only ever requires permission to add new objects to the tree; linking a discussion to an existing record (or starting a new discussion about one via its own Discuss button) needs edit permission too, the same as attaching any other reference to a record — which is also why Discuss always offers joining an existing discussion (no extra permission needed) even for someone who can't start a new one.

Clone this wiki locally