Reopening the app closed every project tab: the copilot's tab bar lived in
RAM, so a reload dropped it and each conversation had to be found again from
its project board.
The set of open tabs is now a column on the session row, `chat_sessions.is_open`
(additive, `ensure_column`), restored by `GET /api/sessions/open` and written by
`PUT /api/sessions/{id}/open`. Not localStorage: that store is per-origin, so on
a shared laptop one member's tabs would greet the next, whereas the owner table
sits in their own encrypted file and follows them to another device. Which tab
is *selected* stays in sessionStorage — that one is genuinely per window, and a
shared value would have two windows fighting over it.
`is_open` defaults to 0 and `chat_sessions::create` never sets it: every `/new`
leaves its predecessor behind and every system-agent pass mints a row, so the
opposite default would restore a bar full of conversations nobody opened. Only
the copilot writes the column, at the moment it opens the tab. A reset moves the
flag rather than copying it — `POST /api/sessions` now returns the new id and
`new_session` carries it, and the old row is closed as the new one opens, or the
source would restore twice and a later close would clear the stale row.
Closing a tab clears the flag and nothing else: the conversation is kept and
comes back with its history when the project is reopened.
4.3 KiB
Projects
A project is a shared workspace: a folder on the server plus its own chat with the assistant. Members of the group can work on the same files — directly, or by asking the assistant in the project chat — without giving anyone access to their private home folder.
Examples: a household budget, a holiday plan, a shared recipe collection, a small work document base.
Creating a project
- Open Projects in the sidebar.
- Click New Project, give it a name and an optional description, save.
You become the project's owner. Only you can delete the project; everything else (editing the description, sharing) can also be done by members you grant read & write access.
The project page
Opening a project shows its page, with two tabs (the current tab is part of the address, so you can bookmark or share the link):
- Files — the project's file explorer (see below).
- Sharing — who can access the project.
The header also has an Open chat button: it opens the project's conversation with the assistant. The assistant already knows the project folder and works directly inside it — creating documents, searching, summarizing. Each member has their own private conversation about the project; only the files are shared.
The conversation opens as a tab in the chat panel, next to the General one. Those tabs stay open: they survive a page reload, and because they are saved to your account rather than to the browser, you find the same ones when you sign in from another device. Closing a tab only removes it from the bar — the conversation itself is kept, and reopening the project brings it back with its history. The General tab is always there and cannot be closed.
The Files tab
A file explorer rooted at the project folder:
- The breadcrumb on top shows where you are, relative to the project root (
/, then/folder,/folder/subfolder). Click any segment to jump back. - Files and folders are listed as a table: icon, name, creation date, last-modified date, size.
- Click a file to open it in the file viewer (Markdown rendered, images, PDFs, text…).
- Click a folder to navigate into it.
- The listing updates by itself: if another member or the assistant creates, renames or deletes a file while you're looking at a folder, the change appears within a second — no refresh needed.
For Markdown files (.md), if you have write access the viewer has two tabs:
- View — the rendered document (the default).
- Edit — edit the Markdown source directly. Switch back to View any time to preview your changes; Save writes the file, Cancel discards.
Because the same file may be edited at the same time by another member, another of your tabs, or the assistant, saving is protected against silent overwrites: if the file changed on the server after you started editing, you'll see a banner — Reload remote (discard your edits and take the newer version), Copy mine, then reload (copy your edits to the clipboard, then take the remote version), or Overwrite (force your version). So no one's work is ever lost without you choosing.
If you have write access you can also, from the toolbar or each row:
- New folder — create a subfolder in the current location.
- Upload — send files from your device into the current folder (or just drag & drop them onto the list).
- Rename and Delete — from the icons on each row. Deleting a folder removes everything inside it, after a confirmation.
Read-only members see the same explorer and can open every file, but the write actions are hidden (and refused by the server anyway).
The Sharing tab
Lists every member with their access level. The owner and any read & write member can:
- Add a member — pick a person and their access: Read (browse and open files only) or Read & write (can also create, edit, delete and share).
- Change access or remove a member (the owner can't be removed).
Access changes apply immediately — no need for the other person to log out.
Notes
- A private project is simply a project with one member (you). Share it later whenever you want.
- Renaming a project does not move its folder, so links and the assistant's context keep working.
- Deleting a project removes its folder for everyone — there is no undo.