134 Commits
Author SHA1 Message Date
Davit 5475c5070f fixed duplicate messages and polling 2026-05-27 14:49:10 +04:00
Davit 73c9e7526d update and restart fix 2026-05-23 15:30:04 +04:00
Davit 1e052f6eb0 update fix on linux 2026-05-23 14:51:53 +04:00
Davit 16e7b4fe71 build fix 2026-05-23 14:07:06 +04:00
Davit 20bd8daf36 relative api path fix 2026-05-22 21:27:00 +04:00
Davit b1eebbb1b2 relative api path 2026-05-22 20:38:55 +04:00
Davit c52442ce60 updated version 2026-05-17 22:29:21 +04:00
Davit Hakobyan eb28394433 Merge pull request #5 from bcude/fix/chat-bubble-dedup
fix(chat): deduplicate assistant reply across gateway playback rounds
2026-05-17 22:22:15 +04:00
Davit Hakobyan 5f978596d0 Merge pull request #6 from lotsoftick/pairing-v4
Pairing v4
2026-05-17 14:48:30 +04:00
Davit 0ac331493d thinking values fix 2026-05-17 14:40:39 +04:00
Davit 6bb9c08e12 gateway scopes 2026-05-17 14:23:09 +04:00
Davit 4d8538a815 chat fix 2026-05-17 14:16:31 +04:00
Davit f158409811 fixed pairing 2026-05-17 14:08:35 +04:00
Bobby Cude 0eef81088c fix: whitespace-flexible self-repeat dedup in JSONL parser
Gateway v4 inserts varying whitespace (extra newlines) between repeated
copies of assistant text, so exact byte-level N-copy detection missed
them. Now handles whitespace-flexible boundaries when checking for
self-repeated text.
2026-05-15 22:26:20 -05:00
Bobby Cude 3a5dfd77fa fix: dedup self-repeated text in JSONL assistant entries
Gateway v4 writes assistant text duplicated 2-4x within a single JSONL
entry. Added deduplicateSelfRepeat() to extractAssistantText() that
detects exact N-copy repeats and reduces to a single copy.
2026-05-15 22:16:34 -05:00
Bobby Cude 208093bcb4 fix: SSE keepalive during tool-call silences
Browser was dropping the SSE connection during long tool-call gaps
(no data flowing). Added 5-second keepalive SSE comments (: keepalive)
to keep the connection alive. SSE comments are ignored by the browser
event parser but prevent connection timeout.
2026-05-15 22:04:16 -05:00
Bobby Cude 934d74a95c fix: frontend rebuild + remove debug logging
Rebuilt frontend dist/ bundle to fix client-side rendering duplication.
The pre-built bundle was processing SSE events differently from the
source, causing visible text duplication despite correct server output.

Removed temporary SSE debug logging from sseEmitter.ts.
2026-05-15 21:58:44 -05:00
Bobby Cude a7000e0d0e fix: poll endpoint dedup for shifting JSONL externalIds
The poll endpoint inserted duplicate assistant rows because gateway v4
rewrites JSONL during multi-tool-call turns, changing the merged
externalId between polls. Now checks for recent assistant rows with
overlapping text content before inserting, and updates the existing
row instead of creating a duplicate.
2026-05-15 21:25:34 -05:00
Bobby Cude dcc4f94031 fix: prevent duplicate assistant messages in DB
Root cause: the chat handler saved assistant messages from JSONL after
the stream ended, while the poll endpoint also synced JSONL to DB
periodically. Gateway v4 rewrites JSONL entries during multi-tool-call
turns, changing the externalId for the same logical message between
reads. Each poll saw a 'new' externalId and inserted another copy.

Fix: remove assistant message persistence from the chat handler.
The poll endpoint already handles JSONL-to-DB sync with robust dedup.
The chat handler now only links the user message externalId.

Also: API_HOST env var support for binding to Tailscale-only.
2026-05-15 21:19:23 -05:00
Bobby Cude bf6f12bbcc fix(chat): deduplicate assistant reply across gateway playback rounds 2026-05-15 20:33:38 -05:00
Davit a5cc25b9eb fixed message duplication in protocol 4 2026-05-15 14:41:15 +04:00
Davit 64b66bd827 gateway maxprotocol 4 2026-05-15 14:11:17 +04:00
Davit Hakobyan 8359e268ee Merge pull request #3 from bcude/feat/copy-code-block-button
feat(chat): add copy-to-clipboard button to fenced code blocks
2026-05-08 14:52:08 +04:00
Davit Hakobyan 0d01d4ab81 Merge pull request #2 from bcude/fix/jsonl-parser-string-content
fix(jsonl): handle string-form message.content to prevent assistant turn coalescing
2026-05-08 14:40:25 +04:00
Bobby Cude e5ae528223 feat(chat): add copy-to-clipboard button to fenced code blocks
Adds a small icon button anchored to the upper-right of every fenced
code block in the chat view. Clicking copies the code to the clipboard
and briefly swaps to a checkmark. Uses navigator.clipboard.writeText
when available and falls back to a hidden textarea + execCommand for
non-secure contexts (HTTP origins like Tailscale magic-DNS, where the
Clipboard API rejects). The streaming codepath (which bypasses
react-markdown for incremental safety) is unchanged; the button
appears once the turn finishes and the message rerenders through the
markdown path.
2026-05-07 15:57:57 -05:00
Bobby Cude b2e0a1cc62 fix(jsonl): handle string-form message.content to prevent assistant turn coalescing
The reduce in parseMessagesFromJsonl coalesces consecutive assistant
entries to merge intra-turn fragments (text + tool calls + more text)
into one bubble. It relies on user 'message' entries between turns to
break the streak.

When message.content is a bare string (plain user prompts) rather than
a ContentPart[], the existing 'Array.isArray(...) ? ... : []' path made
rawText empty for that entry. The downstream filter then dropped the
user message, leaving consecutive assistant entries with no separator.
The reduce then glued every assistant turn since the last surviving user
entry into one cumulative message, producing the user-visible bug where
each new chat response appears appended to the prior one and grows
unbounded across turns.

Mirrors the same handling already in readFirstUserMessage at lines
178-180 of the same file.
2026-05-06 17:14:40 -05:00
Davit 429bcaa8fc attachment,pty improvments 2026-05-04 15:10:18 +04:00
Davit f610a44b95 tool execution output 2026-05-03 16:37:37 +04:00
Davit 3b3850a6a2 reconnect after gateway restart 2026-05-03 10:30:17 +04:00
Davit d28e138700 updated version 2026-05-02 15:58:13 +04:00
Davit 9ff4393bf4 improved usage dashboard and spending caps 2026-05-02 15:29:49 +04:00
Davit 6ebd495154 fixed styles 2026-04-29 21:25:10 +04:00
Davit 6a88d15acf usage dashboard and spending cap 2026-04-29 11:41:41 +04:00
Davit b4fa5feb6e cors fix 2026-04-27 11:51:20 +04:00
Davit 7ce858f81b added model picker 2026-04-25 01:52:24 +04:00
Davit 2d732c282c removed model picker 2026-04-24 17:49:52 +04:00
Davit 3dfa8b88a5 agent configuration 2026-04-24 14:35:08 +04:00
Davit Hakobyan ae3c82bb21 Add MIT License to the project 2026-04-22 13:13:50 +04:00
Davit e39bc2698e added destination for cron jobs 2026-04-22 12:13:22 +04:00
Davit 23cc90a298 fixed dark theme 2026-04-21 17:20:32 +04:00
Davit 9e3fb90db8 fixed channel message and icons 2026-04-21 14:07:58 +04:00
Davit 44d708f1bd pwa support 2026-04-18 21:35:35 +04:00
Davit 2533678ad0 windows support 2026-04-17 17:18:33 +04:00
Davit 00ef27fb67 port configuration 2026-04-17 13:28:15 +04:00
Davit 1344ee61a5 api refactoring 2026-04-17 12:20:12 +04:00
Davit 1fc9b2bc29 client refactoring 2026-04-16 23:16:29 +04:00
Davit 833e27692c fixed message sync and added polling 2026-04-16 21:16:33 +04:00
Davit 204c2166b9 updated preview 2026-04-16 16:13:39 +04:00
Davit 756669b459 refactored forms 2026-04-16 12:40:18 +04:00
Davit 4d9b8d88a9 updated user management 2026-04-15 21:45:11 +04:00