hh
|
f44597b2dc
|
feat(backend): presence stats count time online from sessions in the browser time zone, capture uptime marks hours without data, presence reaches every stream of the account, message volume keeps empty days
|
2026-10-19 02:41:39 +00:00 |
|
hh
|
bb38e23f29
|
feat(frontend): my message menu shows when it was read or listened, group readers open in a right panel
|
2026-10-19 02:40:49 +00:00 |
|
hh
|
f03d7c2890
|
fix(frontend): right panel on phones stays above the sticky dates of the chat
|
2026-10-19 02:40:49 +00:00 |
|
hh
|
d8dd08d7de
|
feat(backend): read time of my messages from the archive, exact dates and group readers asked from telegram on demand
|
2026-10-19 02:40:49 +00:00 |
|
hh
|
f27943aae6
|
feat(backend): supergroup read receipts are captured like basic groups
|
2026-10-19 02:40:30 +00:00 |
|
hh
|
d8ad62fb59
|
fix(frontend): switching accounts never shows the previous account's chats for a moment
|
2026-10-19 02:33:44 +00:00 |
|
hh
|
f5a8649855
|
perf(backend): message writes look up the stored copy by its date and touch one chunk
|
2026-10-19 02:29:19 +00:00 |
|
hh
|
23c1504001
|
feat(userbot): after a restart the userbot catches up on what it missed while down, from a saved cursor and within bounds
|
2026-10-19 02:29:19 +00:00 |
|
hh
|
92e5e737d2
|
fix(userbot): presence, story and profile history toggles of the capture policy take effect for each user peer
|
2026-10-19 02:29:19 +00:00 |
|
hh
|
f32b772ddc
|
fix(userbot): a deletion that arrives before its message is applied once the message is stored
|
2026-10-19 02:29:19 +00:00 |
|
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 |
|