Commit Graph
100 Commits
Author SHA1 Message Date
hh 516b8e307f fix(backend): a re-captured or bot-edited message keeps its earlier text as a version, an older copy never overwrites a newer edit 2026-10-19 02:29:19 +00:00
hh 33ceea3dfc fix(backend): a bulk deletion is announced in chunks that fit the notify payload limit 2026-10-19 02:29:19 +00:00
hh 4ce9c5d340 fix(backend): a session or bot that fails to start is retried and the failure is logged 2026-10-19 02:29:19 +00:00
hh 42469eb9f1 fix(userbot): job queue survives a consumer failure, a flood wait defers its job instead of holding the queue 2026-10-19 02:29:19 +00:00
hh 3373c31a02 fix(backend): listen connections reconnect after a dropped connection or a postgres restart and catch up on what they missed 2026-10-19 02:29:19 +00:00
hh 17e27beb59 fix(userbot): repeated link rows no longer abort the message insert 2026-10-19 02:29:19 +00:00
hh 54424d0aa0 feat(frontend): browser tab shows the open chat, empty state speaks the chosen language 2026-10-19 02:06:13 +00:00
hh 50922ef69a feat(frontend): installable on the phone with its own icon, title and manifest, missing avatars are asked again later 2026-10-19 02:05:41 +00:00
hh a1d3552519 feat(frontend): main menu lists accounts with their avatars, switching opens the last chat of that account 2026-10-19 02:02:31 +00:00
hh 3460246749 feat(frontend): russian and english interface with a language choice in settings, soon stubs removed 2026-10-19 01:54:34 +00:00
hh dcd6786ca5 fix(backend): avatar job ends without a crash when telegram does not know the owner 2026-10-14 05:25:48 +02:00
hh 32d58193f3 fix(backend): raw update reaches every handler that declares it, contact list follows user updates 2026-10-14 05:25:45 +02:00
hh 59d0e2c8ad fix(backend): shared contact card keeps its phone number in the stored message 2026-10-14 05:25:42 +02:00
hh 850d39ad6f fix(frontend): cleanup block shows its failure in the error color 2026-10-14 05:17:58 +02:00
hh b8a38092eb fix(frontend): emptied chat keeps its storage head, shared-only chat explains why nothing can be bulk moved, back from a chat returns to the same place in the list, cleanup wording agrees in number 2026-10-14 05:15:27 +02:00
hh 2836dcb3a9 fix(backend): stale avatar is refetched again under kurigram 2.2.26, profile photos come as chat photos 2026-10-14 05:09:38 +02:00
hh 01cf01b629 fix(backend): rich messages of the new telegram layer read as plain text instead of no text 2026-10-14 05:06:35 +02:00
hh 7f124059be feat(frontend): storage shows the heaviest chats, a chat opens its own files with selective cleanup and a whole-chat move to trash 2026-10-14 05:02:06 +02:00
hh 5eacabd101 feat(backend): storage lists the heaviest chats, summary and file list take a chat filter 2026-10-14 05:02:03 +02:00
hh 0362777a51 fix(frontend): opened policy rule stays in view while its card grows, chevrons hold one column, switch and field sizes match the rest 2026-10-14 04:31:18 +02:00
hh dfc726976b fix(frontend): policy card keeps its wells in the light theme, folder rules show their content, opened rule scrolls into view, rule removal asks first 2026-10-14 04:27:59 +02:00
hh cb01d7dff8 feat(frontend): capture policy shows what each rule changes, rule card opens from folder and chat menus and can trash downloaded files, trash is paged 2026-10-14 04:20:38 +02:00
hh f646f29ff9 feat(backend): policy rules show what they inherit, files of a chat or folder go to trash in one batch, trash list is paged 2026-10-14 04:13:13 +02:00
hh 945adcf879 fix(backend): userbot follows kurigram 2.2.26, user and chat parsing is awaited, missing chat is handled 2026-10-14 03:55:33 +02:00
hh 09c5f78061 fix(frontend,backend): all stories panel groups by peer again, missing trashed file answers 404, access log hides the token 2026-10-14 03:53:56 +02:00
hh 897421e7c4 fix(frontend): storage failures use the error colour next to the warning, shared mark on its own line in the list, trash key is visible 2026-10-14 03:28:29 +02:00
hh 3223f62dea fix(frontend): selected storage chip keeps its fill in the light theme, tile label uses the medium weight 2026-10-14 03:24:31 +02:00
hh c9c088ed73 fix(frontend): shared mark on its own line in trash rows, undo ignores the trailing click, trash segment has a key 2026-10-14 03:23:22 +02:00
hh 580927da0a fix(frontend,backend): storage categories keep one hue in both themes, trash counted in the total, undo keeps the list, larger touch targets 2026-10-14 03:18:59 +02:00
hh 06ae3e928f refactor(frontend): storage panel answers in place instead of toasts, empty groups hidden, weight bar animates by transform 2026-10-14 03:14:51 +02:00
hh 55634984fd feat(frontend,backend): storage panel with weight rows and trash, heavy media streams by url in the viewer 2026-10-14 03:09:37 +02:00
hh f2c245707a feat(backend): storage trash with seven day retention, trashed files are not fetched again automatically 2026-10-14 02:52:21 +02:00
hh 4d16105e92 feat(frontend)!: sveltekit 3 on the v0.7.0 template, typescript 6, adapter-auto dropped; backend base moves to trixie 2026-10-10 23:18:57 +00:00
hh b1ffebe858 fix(infra): timescaledb image 2.27.1 to 2.30.2, the high advisory fixed in 2.29.1 was still open 2026-10-10 20:50:06 +00:00
hh 2512a7988d chore(frontend): biome 2.5.15 stops flagging regexp exec results as always truthy, svelte files reformatted by it 2026-10-10 21:05:02 +02:00
hh 56146e4e8d chore(backend,infra): resolve template update conflicts, import check knows the watcher and the api login 2026-10-10 20:59:12 +02:00
hh 5fb8f8a534 style(backend): one-line import, ruff 0.17 keeps the pragma out of the line width 2026-10-10 20:59:12 +02:00
hh 869f8291fb fix(api): access log keeps the mcp path but not its query, the token rode in it 2026-10-09 02:44:01 +00:00
hh 283eab1eb0 feat(mcp): download any message file via share link 2026-10-08 21:22:59 +02:00
hh 7f4d500302 chore(infra): update template to v0.5.0 2026-10-08 21:22:59 +02:00
hh cf48d2db3e chore(frontend): update template to v0.4.2 2026-10-08 21:22:59 +02:00
hh 114058e6ae chore(backend): update template to v0.4.0 2026-10-08 21:22:59 +02:00
hh b60815d042 fix(watcher): pick an unfinished backlog back up without restarting the bot 2026-09-19 16:19:46 +00:00
hh 468f72ed11 fix(watcher): resume the bot backlog from a saved cursor instead of restarting it 2026-09-19 16:18:40 +00:00
hh 59d3f214e8 chore(renovate): hold typescript on 5.x for svelte-check 2026-09-19 00:33:22 +02:00
hh 34dcbaac2b build(frontend): pin typescript to 5.x and decode tgs stickers with pako toText 2026-09-19 00:21:15 +02:00
hh c8e5cff871 style(frontend): apply ultracite 7.12 formatting and lint rules 2026-09-19 00:21:07 +02:00
hh fc4758aa0b fix(watcher): getDifference needs a date, and only a completed drain counts 2026-09-18 18:42:38 +02:00
hh b0ed041c2e feat(watcher,api,frontend): watched bots become accounts and drain the update backlog 2026-09-18 18:41:20 +02:00
hh 4bd031f21e feat(watcher,api,frontend): archive who writes to watched bots over mtproto 2026-09-18 15:05:01 +02:00
hh a25f79543a fix(frontend): regenerate bun.lock after dependency bumps 2026-09-15 10:52:23 +00:00
hh 3d0b15bd2c Merge pull request 'chore(deps): update dependency typescript to v7' (#6) from renovate/typescript-7.x into main
Reviewed-on: #6
2026-09-10 20:00:14 +02:00
hh 0e54786672 Merge pull request 'fix(deps): update dependency pako to v3' (#7) from renovate/pako-3.x into main
Reviewed-on: #7
2026-09-10 20:00:06 +02:00
hh 0b6cbac945 chore(infra): update template to v0.4.0 2026-09-10 19:07:01 +02:00
hh ff80141785 refactor(renovate): use shared preset instead of a copy 2026-09-10 17:58:36 +02:00
hh 4ebe6de60b chore(renovate): add Renovate config 2026-09-10 15:03:44 +00:00
hh 02fb567c1f chore(backend): update template to v0.3.3 2026-09-09 01:17:16 +02:00
hh ccbc167005 chore(*): adopt project templates 2026-09-09 01:17:12 +02:00
hh 5ec0212af5 fix(userbot): mark deletions per row to stay under timescale decompression limit 2026-09-06 21:30:51 +02:00
hh ab59ef4525 feat(api,mcp): explain account_id mixed up with a telegram user id 2026-09-06 21:30:51 +02:00
hh 676680319b fix(userbot): encode absent pyrogram raw payloads as empty json 2026-09-06 21:26:13 +02:00
hh 6a6e63ff75 docs(readme): what it keeps, the parts, the mcp tools, how to run 2026-09-05 04:56:56 +02:00
hh 1fa4f18a9b perf(*): bound list queries, batch fetches, harden media downloads 2026-09-01 21:38:22 +02:00
hh 9c12628304 fix(userbot): drop stale media sessions and survive download timeouts 2026-09-01 21:05:48 +02:00
hh cf277c56cf fix(userbot): stop gracefully on sigterm and flush session peers periodically 2026-08-30 01:56:10 +02:00
hh 8f7d47476c fix(userbot): refetch avatar by unique_id when stored file_id is stale 2026-08-30 01:50:56 +02:00
hh c832513e5c fix(api,frontend): isolate active share files and allowlist link schemes 2026-08-29 12:52:54 +02:00
hh 0399145791 style(frontend): soften the document glyph nudge to a hairline 2026-08-13 04:13:03 +02:00
hh 0b8e90159f style(frontend): optically nudge the document glyph in file chips 2026-08-13 04:07:34 +02:00
hh 995322b17a fix(frontend): readable links and file chips on own bubbles 2026-08-13 04:06:44 +02:00
hh 6ae28cb321 fix(frontend): render document albums as file rows instead of broken images 2026-08-13 03:59:01 +02:00
hh e833de245a fix(api,frontend): render files by name without fetching, previewable share links 2026-08-13 03:49:29 +02:00
hh ef739838a5 fix(migrations): lift timescale decompression limit when dropping scheduled dupes 2026-08-13 03:30:07 +02:00
hh 3e08698b62 feat(userbot,api,frontend): file links, media downloads, story hold-pause, drop scheduled dupes 2026-08-13 03:17:36 +02:00
hh 683b9a31a3 fix(frontend): restore outside-click dismiss, collapse story groups by default 2026-08-06 15:28:10 +02:00
hh 004fd56f2c feat(frontend): open sidebar media on click, unbreak long-press menus 2026-08-06 15:17:25 +02:00
hh 12cc7d57e3 feat(userbot,api,frontend): backfill stories and unbreak all-stories list 2026-08-06 14:08:10 +02:00
hh 1e143c7573 fix(frontend): unbreak round video ring and playback in firefox 2026-08-06 13:52:27 +02:00
hh ee63f8b783 feat(api,userbot,frontend): fetch only new messages in backfill by default 2026-08-06 12:30:37 +02:00
hh 6b6edc9a0d fix(frontend): paint video poster frames, clip round videos to circle 2026-08-06 12:29:37 +02:00
hh 525ce024bc perf(api,frontend): index hot queries, paginate chats, fix realtime 2026-08-06 01:52:41 +02:00
hh 9d767d2531 chore(frontend): sync bun lockfile 2026-08-06 01:07:52 +02:00
hh 18220407af fix(make): enable db and migrate profiles in migrate target 2026-08-06 01:07:51 +02:00
hh 1898a51a9d feat(api,userbot,frontend): rename session device from the web ui 2026-08-06 00:51:58 +02:00
hh b1848a6620 feat(caddy): move routes into site.caddy 2026-08-06 00:50:29 +02:00
hh e887dfc5ce feat(api,frontend): add qr code login 2026-08-06 00:23:38 +02:00
hh 9c265af3d3 feat(api,userbot,frontend): add accounts from the web ui and isolate per-account settings 2026-08-05 23:49:52 +02:00
hh 92fd20137e feat(api,userbot,frontend): search peers without chats and start tracking them 2026-08-05 23:46:54 +02:00
hh dcf95bd9d4 fix: adapt for mobile 2026-06-13 14:40:24 +02:00
hh 6ed392617f feat: add restart policy 2026-06-07 00:47:00 +02:00
hh 4fdf70a898 fix: mcp with token should work 2026-06-02 02:20:25 +02:00
hh f3712cfe36 fix: circular import and internal storage 2026-06-02 02:04:59 +02:00
hh f688530eac feat: proper frontend passing 2026-06-02 01:39:43 +02:00
hh 3aaa3c757f feat: add caddy config 2026-06-02 01:22:58 +02:00
hh 17cd31c41e feat: mcp and backfill fixes 2026-06-02 01:02:08 +02:00
hh c6984a7286 feat: add instructions to mcp 2026-06-01 23:45:54 +02:00
hh 2465bcd184 feat: add annotations, user profiles, watchers, stories, search and more 2026-06-01 17:15:09 +02:00
hh ed469ba8dd feat: web UI chat render, panels, presence + analytics 2026-05-31 19:41:37 +02:00
hh 75425d1bee feat: 1-to-1 message render + web data-lake backend 2026-05-31 01:45:05 +02:00
hh f0afb7ec5b feat: add event watcher 2026-05-30 01:54:49 +02:00