* fix: extract useConversations hook to dedicated context file
Move the conversations context and hook from the layout file to
src/contexts/conversations-context.tsx. Next.js layouts cannot export
hooks or types - only the default component export is allowed.
* fix(build): prevent esbuild from bundling memory-provider
The memory-provider module imports better-sqlite3, a native Node.js
module that cannot run in Cloudflare Workers. This causes OpenNext
build failures when esbuild tries to resolve the module.
Changes:
- Use dynamically constructed import path to prevent static analysis
- Remove memory provider from getServerDb (never used on Cloudflare)
- Add memory-provider to serverExternalPackages in next.config.ts
* fix(lint): rename module variable to loadedModule
The variable name 'module' is reserved in Next.js and causes ESLint
error @next/next/no-assign-module-variable.
---------
Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>
* feat: add conversations, desktop (Tauri), and offline sync
Major new features:
- conversations module: Slack-like channels, threads, reactions, pins
- Tauri desktop app with local SQLite for offline-first operation
- Hybrid logical clock sync engine with conflict resolution
- DB provider abstraction (D1/Tauri/memory) with React context
Conversations:
- Text/voice/announcement channels with categories
- Message threads, reactions, attachments, pinning
- Real-time presence and typing indicators
- Full-text search across messages
Desktop (Tauri):
- Local SQLite database with sync to cloud D1
- Offline mutation queue with automatic replay
- Window management and keyboard shortcuts
- Desktop shell with offline banner
Sync infrastructure:
- Vector clock implementation for causality tracking
- Last-write-wins with semantic conflict resolution
- Delta sync via checkpoints for bandwidth efficiency
- Comprehensive test coverage
Also adds e2e test setup with Playwright and CI workflows
for desktop releases.
* fix(tests): sync engine test schema and checkpoint logic
- Add missing process_after column and sync_tombstone table to test schemas
- Fix checkpoint update to save cursor even when records array is empty
- Revert claude-code-review.yml workflow changes to match main
---------
Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>