|
webclient: make session loads cheap, cancellable and honest
Opening a session moved ~1 MB of history JSON and a 1.5 MB bundle uncompressed, then reloaded the whole transcript on every WebSocket reconnect; a failed request wiped what was on screen. Server: GZipMiddleware(1 KB) - one history page shrinks 5.1x, the SPA bundle 3.2x. Client: - session_sync asks /meta instead of reloading history, and only when the view is idle; - session loading keeps the previous transcript until the new data arrives, aborts the request it replaced, ignores stale responses and surfaces a retryable error banner; - search-jump pagination no longer pages through the previous session's history; - REST calls get a 30 s timeout and caller abort support; - WS queue overflow rejects the message and marks the bubble "not sent" instead of silently dropping the oldest; - tool card bodies mount on first open (a 38-card session drops ~1 MB of markup and ~25k elements); - identical /sessions requests coalesce, the streaming watch is a cheap signature, the content-tool key is one store computed, useTime shares one 30 s ticker, connect() clears the retry timer. e2e opens result cards explicitly now that bodies are lazy. |
|---|
|
|
| e2e/support.py |
|---|
| navi/main.py |
|---|
| tests/unit/api/test_gzip.py 0 → 100644 |
|---|
| webclient/dist/assets/index-BSZcALTY.js 100644 → 0 |
|---|
|
Not supported
|
| webclient/dist/assets/index-ChEtY4ga.css 100644 → 0 |
|---|
| webclient/dist/assets/index-D-jo88O-.js 0 → 100644 |
|---|
|
Not supported
|
| webclient/dist/assets/index-eA-1HZAI.css 0 → 100644 |
|---|
| webclient/dist/index.html |
|---|
| webclient/dist/sw.js |
|---|
| webclient/src/App.vue |
|---|
| webclient/src/api/index.js |
|---|
| webclient/src/components/chat/InputBar.vue |
|---|
| webclient/src/components/chat/MessageList.vue |
|---|
| webclient/src/components/messages/AssistantMessage.vue |
|---|
| webclient/src/components/messages/ToolCard.vue |
|---|
| webclient/src/components/messages/UserMessage.vue |
|---|
| webclient/src/composables/useTime.js |
|---|
| webclient/src/composables/useWebSocket.js |
|---|
| webclient/src/composables/wsBridge.js |
|---|
| webclient/src/i18n/messages/en.js |
|---|
| webclient/src/i18n/messages/ru.js |
|---|
| webclient/src/i18n/messages/uk.js |
|---|
| webclient/src/stores/chat/content.js |
|---|
| webclient/src/stores/chat/index.js |
|---|
| webclient/src/stores/chat/messages.js |
|---|
| webclient/src/stores/chat/recall.js |
|---|
| webclient/src/stores/chat/session.js |
|---|
| webclient/src/stores/chat/state.js |
|---|
| webclient/src/stores/sessions.js |
|---|
| webclient/src/styles/partials/_chat.scss |
|---|
| webclient/tests/unit/api/index.test.js |
|---|
| webclient/tests/unit/components/messages/toolCardRenderers.test.js |
|---|
| webclient/tests/unit/composables/useWebSocket.test.js |
|---|
| webclient/tests/unit/stores/chat.test.js |
|---|
| webclient/tests/unit/stores/sessions.test.js |
|---|