docs: Phase 76 server folders (v0.8.40)
Add SERVER_FOLDERS.md, mark P76-1 complete in PLATFORM_ROADMAP and PEARCORD_PARITY, extend AUTOMATED_TESTING and GITEA_DEVELOPER for pearcord-server-folders, and update parity next-tranche notes. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -33,6 +33,7 @@ Pearcord validates itself without manual QA.
|
||||
| `npm run test:dm-encrypt` | DM seal roundtrip (`DM_ENCRYPT_SMOKE_OK`) |
|
||||
| `npm run test:threads` | Thread channels (`THREADS_SMOKE_OK`) |
|
||||
| `npm run test:threads-panel` | Threads panel unread + archived (`THREADS_PANEL_SMOKE_OK`) |
|
||||
| `npm run test:server-folders` | Server rail folders + prefs CRUD (`SERVER_FOLDERS_SMOKE_OK`) |
|
||||
| `npm run test:slash` | Slash commands + gossip (`SLASH_SMOKE_OK`) |
|
||||
| `npm run test:bot-events` | Bot event fanout (`BOT_EVENTS_SMOKE_OK`) |
|
||||
| `npm run test:contacts` | Friend request gossip + accept (`CONTACTS_SMOKE_OK`) |
|
||||
|
||||
@@ -112,6 +112,7 @@ git remote -v
|
||||
| `pearcord-bot-runner` | Headless bot worker |
|
||||
| `pearcord-notifications` | Inbox + badges |
|
||||
| `pearcord-settings` | User appearance prefs + `USER_PREFS_UPDATE` gossip |
|
||||
| `pearcord-server-folders` | Client-side server rail folder layout (prefs-backed) |
|
||||
| `pearcord-step-up` | Local step-up PIN for sensitive actions |
|
||||
| `pearcord-forum` | Forum post tags + palette helpers |
|
||||
| `pearcord-forum-search` | Forum post search haystack helpers |
|
||||
|
||||
+2
-2
@@ -145,7 +145,7 @@ Phases **0–2** and **4** are largely complete; **3** (live audio) and **5** (n
|
||||
| P63-1 | Role-restricted emoji manage UI (v0.8.28) | [x] |
|
||||
| P64-1 | Discovery mesh live sync (v0.8.29) | [x] |
|
||||
|
||||
**Next tranches (Phase 75+):** Server folders · Electron live `open-url` · activity feed.
|
||||
**Next tranches (Phase 76+):** Electron live `open-url` · activity feed · channel topic UI.
|
||||
|
||||
When Phase 5 checklist is `[x]`, copy open items here into tracked rows in `PLATFORM_ROADMAP.md`.
|
||||
|
||||
@@ -168,7 +168,7 @@ When Phase 5 checklist is `[x]`, copy open items here into tracked rows in `PLAT
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P76-1 | Server folders (client-side guild grouping) | [ ] |
|
||||
| P76-1 | Server folders (client-side guild grouping) | [x] |
|
||||
| P76-2 | Electron `open-url` when Pear appling ships custom bundle | [ ] |
|
||||
| P76-3 | Activity / Now Playing feed (P2P presence extension) | [ ] |
|
||||
| P76-4 | Channel topic + description UI | [ ] |
|
||||
|
||||
+15
-1
@@ -249,6 +249,19 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
||||
|
||||
---
|
||||
|
||||
### Phase 76 — Server folders (v0.8.40)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P76-1 | `pearcord-server-folders` layout + prefs CRUD | [x] |
|
||||
| P76-2 | Platform methods + `view.serverRail` | [x] |
|
||||
| P76-3 | Rail UI (stack/collapse) + folder IPC | [x] |
|
||||
| P76-4 | smoke-server-folders + SERVER_FOLDERS.md | [x] |
|
||||
|
||||
**Next:** Electron live `open-url` · activity / Now Playing feed · channel topic UI.
|
||||
|
||||
---
|
||||
|
||||
### Phase 75 — Threads panel (v0.8.39)
|
||||
|
||||
| ID | Item | Status |
|
||||
@@ -258,7 +271,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
||||
| P75-3 | Archived toggle + `set-threads-panel-archived` IPC | [x] |
|
||||
| P75-4 | smoke-threads-panel + THREADS_PANEL.md | [x] |
|
||||
|
||||
**Next:** Server folders · Electron `open-url` · activity feed.
|
||||
**Next:** ~~Server folders~~ (Phase 76) · Electron `open-url` · activity feed.
|
||||
|
||||
---
|
||||
|
||||
@@ -936,6 +949,7 @@ When completing work, change `[ ]` → `[x]` and add a one-line note under **Cha
|
||||
|
||||
### Changelog
|
||||
|
||||
- **2026-05-22** — v0.8.40: server folders (`pearcord-server-folders`, rail layout, folder IPC, `test:server-folders`, SERVER_FOLDERS.md).
|
||||
- **2026-05-22** — v0.8.39: threads panel (`threadsPanel` view, unread badges, archived toggle, `test:threads-panel`, THREADS_PANEL.md).
|
||||
- **2026-05-22** — v0.8.38: invite + guild `pearcord://` links (`formatInviteDeepLink`, `navigateDeepLink` kinds, invite modal link, `test:invite-deep-link`, `test:guild-deep-link`).
|
||||
- **2026-05-22** — v0.8.37: OS `pearcord://` handler (`pearcord-protocol`, argv launch, `register-protocol`, `test:os-deep-link`, PEARCORD_PROTOCOL.md).
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# Server folders
|
||||
|
||||
Client-side **server folder** grouping for the left server rail (Discord-style). Folder state is stored in **user prefs** (`serverFolders`) and synced P2P via `USER_PREFS_UPDATE` gossip — no central server.
|
||||
|
||||
## Module
|
||||
|
||||
`pearcord-server-folders` — pure layout + CRUD helpers:
|
||||
|
||||
| Export | Role |
|
||||
|--------|------|
|
||||
| `normalizeServerFolders` | Validate prefs shape |
|
||||
| `buildServerRailLayout` | Ordered `segments` + `ungrouped` guild rows |
|
||||
| `createFolder` / `deleteFolder` / `assignGuildToFolder` | Immutable state updates |
|
||||
| `setFolderCollapsed` / `renameFolder` | UI state |
|
||||
| `FOLDER_COLORS` | Preset accent colors |
|
||||
|
||||
## Platform API
|
||||
|
||||
| Method | Description |
|
||||
|--------|-------------|
|
||||
| `getServerFolders()` | Normalized prefs |
|
||||
| `createServerFolder({ name, color })` | New folder |
|
||||
| `deleteServerFolder(folderId)` | Remove folder (guilds ungrouped) |
|
||||
| `assignGuildToFolder(guildId, folderId \| null)` | Move guild |
|
||||
| `setServerFolderCollapsed(folderId, collapsed)` | Expand/collapse |
|
||||
| `renameServerFolder(folderId, name)` | Rename |
|
||||
|
||||
`view()` includes `serverRail` (layout) and `folderColors`.
|
||||
|
||||
## UI / IPC
|
||||
|
||||
| IPC `type` | Action |
|
||||
|------------|--------|
|
||||
| `create-server-folder` | Create; optional `initialGuildId` assigns first guild |
|
||||
| `delete-server-folder` | Delete folder |
|
||||
| `assign-guild-to-folder` | Move guild (`folderId` null = ungroup) |
|
||||
| `set-server-folder-collapsed` | Toggle expand |
|
||||
| `rename-server-folder` | Rename |
|
||||
|
||||
- **Right-click** a server icon → create folder / move to folder / remove from folder.
|
||||
- **Right-click** folder head/stack → rename / delete.
|
||||
- **📁** button on rail → create empty folder.
|
||||
|
||||
## Smoke test
|
||||
|
||||
```bash
|
||||
cd apps/pearcord && npm run test:server-folders
|
||||
```
|
||||
|
||||
## P2P note
|
||||
|
||||
Folders are **per-user** organization only. Other peers see the same guilds on the mesh; folder layout is local preference replicated on your devices via settings gossip.
|
||||
Reference in New Issue
Block a user