7 Commits

Author SHA1 Message Date
dc7678d184 chore: add app icon 2026-08-12 18:11:43 +02:00
455d304885 fix: address final review findings
- Finding 1: add AppState::authed_get/authed_post helpers that attach
  Bearer token when present; all 4 commands now use them
- Finding 2: MessageInput accepts onSent callback, calls it after
  successful send; ChatPage passes refreshKey bump as onSent
- Finding 3: MessageList useEffect uses cancellation flag so stale
  in-flight responses cannot overwrite a newly selected conversation
- Finding 4: scrollIntoView moved to separate effect keyed on
  messages.length so scroll only fires when new messages arrive
2026-08-12 17:58:02 +02:00
3109ac4c22 feat: add message Tauri commands 2026-08-12 17:21:44 +02:00
7c2e5ca9a9 feat: add workspace and conversation Tauri commands
Implement list_workspaces and list_conversations commands to enable
frontend access to workspace and conversation data via Tauri IPC.

- Add workspace.rs with list_workspaces command (GET /workspaces)
- Add conversation.rs with list_conversations command (GET /conversations?workspace_id=)
- Register both commands in lib.rs invoke_handler
- Update commands/mod.rs to expose new modules
2026-08-12 17:04:35 +02:00
d384465f2e feat: add login Tauri command 2026-08-12 16:59:55 +02:00
55133751cb feat: add AppState and domain models
- Introduce state.rs with AppState (HTTP client + token/user_id state)
- Define core models in models.rs (User, Workspace, Conversation, Message, AuthTokenResponse)
- Integrate state management into lib.rs via .manage(AppState::new())
2026-08-12 16:56:03 +02:00
a1032ddf11 chore: scaffold Tauri v2 + Vite + React project structure 2026-08-12 16:48:27 +02:00