Feat v0.5.2 chat surface (#32)
All checks were successful
All checks were successful
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com> Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #32.
This commit is contained in:
21
ROADMAP.md
21
ROADMAP.md
@@ -358,19 +358,19 @@ participation is post-MVP.
|
||||
| Admin filter Dropdown | ✅ | Replaced button group with themed `Dropdown` primitive for type filter. Keyboard nav, consistent theming via CSS vars. |
|
||||
| Unicode security gate | ✅ | `ScanSource()` detects variation selectors, bidi overrides, zero-width chars, tag characters. `Verdict()` blocks GlassWorm payloads and Trojan Source (CVE-2021-42574). Two enforcement points: install (422) + Starlark exec. 23 new tests. |
|
||||
|
||||
### v0.5.2 — Chat Surface (planned)
|
||||
### v0.5.2 — Chat Surface
|
||||
|
||||
| Step | Status | Description |
|
||||
|------|--------|-------------|
|
||||
| Conversation list | | Sidebar: conversation list with last message preview, unread badge, timestamp. Create conversation button. |
|
||||
| Message thread | | Main pane: message history with participant avatars, timestamps, content. Virtual scroll for long threads. |
|
||||
| Compose bar | | Text input with Enter-to-send, Shift+Enter for newline. Markdown support via existing inline renderer. |
|
||||
| Participant sidebar | | Collapsible right panel: participant list with online status (via kernel presence hub). Add/remove participants using `sw.ui.Dialog`. |
|
||||
| 1:1 and group | | Direct messages (two participants) and group conversations. Type field on conversation. |
|
||||
| Typing indicators | | `realtime.publish("conversation:{id}", "typing", {participant_id})` on keypress with debounce. Surface shows "X is typing…" with auto-expire. |
|
||||
| Read receipts | | Mark-read on scroll/focus via `chat.mark_read()`. Unread count in conversation list. |
|
||||
| Message editing | | Edit own messages. `edited_at` timestamp displayed. Edit via `PUT /messages/:id`. |
|
||||
| Message deletion | | Soft-delete own messages. Replaced with "message deleted" placeholder. |
|
||||
| Conversation list | done | Sidebar: conversation list with last message preview, unread badge, timestamp. Create conversation button. |
|
||||
| Message thread | done | Main pane: message history with participant avatars, timestamps, content. Scroll-to-load-more for long threads. |
|
||||
| Compose bar | done | Text input with Enter-to-send, Shift+Enter for newline. Auto-resize textarea. |
|
||||
| Participant sidebar | done | Collapsible right panel: participant list with online status (via kernel presence hub). Add/remove participants using `sw.ui.Dialog`. |
|
||||
| 1:1 and group | done | Direct messages (two participants) and group conversations. Type field on conversation. |
|
||||
| Typing indicators | done | `realtime.publish("conversation:{id}", "typing", {participant_id})` on keypress with debounce. Surface shows "X is typing…" with auto-expire. |
|
||||
| Read receipts | done | Mark-read on scroll/focus via `chat.mark_read()`. Unread count in conversation list. |
|
||||
| Message editing | done | Edit own messages. `edited_at` timestamp displayed. Edit via `PUT /messages/:id`. |
|
||||
| Message deletion | done | Soft-delete own messages. Replaced with "message deleted" placeholder. |
|
||||
|
||||
### v0.5.3 — Chat Polish + Integration Testing (planned)
|
||||
|
||||
@@ -386,6 +386,7 @@ participation is post-MVP.
|
||||
| Item | Description |
|
||||
|------|-------------|
|
||||
| "Requires Review" filter | Dropdown filter option or dedicated button for `pending_review` packages. Useful when the package list grows long. |
|
||||
| Extreme UI scale polish | At 150%+ scale: user menu items overflow viewport (need scroll), topbar elements clipped. Ensure all surfaces and menus are usable at scale extremes (80%–200%). |
|
||||
|
||||
### v0.5.4 — Package Updates (planned)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user