hh
|
90b37ec708
|
fix(frontend): jobs name their chats, open links tab counts only links that are really open
|
2026-10-19 03:53:08 +00:00 |
|
hh
|
4082adba25
|
fix(frontend): buttons keep a gap between icon and text, viewer counter stays clear of the actions on mobile
|
2026-10-19 03:53:08 +00:00 |
|
hh
|
b3805123b5
|
fix(frontend): english storage and policy labels fit on mobile, phone placeholder no longer peeks out from under its label
|
2026-10-19 03:53:08 +00:00 |
|
hh
|
896b89f3b0
|
refactor(frontend): stories archives drop tile styles and imports that live in the tile
|
2026-10-19 03:53:08 +00:00 |
|
hh
|
4a5c92f0e9
|
feat(frontend): storage, trash, policy, stories, shares, jobs, bots, media, login and notes speak russian and english
|
2026-10-19 03:53:08 +00:00 |
|
hh
|
e5a5edcaae
|
perf(backend): search stays in tens of milliseconds at archive size for rare words, channels, deleted and transcripts
|
2026-10-19 03:41:49 +00:00 |
|
hh
|
9a6bd8a714
|
feat(frontend): search results show deleted, edited and earlier version marks with highlighted words, filter chips live in the url, results load on scroll
|
2026-10-19 03:41:44 +00:00 |
|
hh
|
d45c96c259
|
feat(backend): search finds word prefixes, earlier versions and deleted messages, with filters and cursor paging
|
2026-10-19 03:41:39 +00:00 |
|
hh
|
42b4e1d7e6
|
fix(frontend): chips of the changes panel stay on top while the list scrolls
|
2026-10-19 03:27:27 +00:00 |
|
hh
|
309614c979
|
fix(frontend): channel posts show no sender id, a post sent as a chat shows its title and avatar
|
2026-10-19 03:25:48 +00:00 |
|
hh
|
98dda99c5c
|
feat(frontend): profiles chip in the feed shows name, username, photo and title changes
|
2026-10-19 03:25:48 +00:00 |
|
hh
|
8e0f828dd4
|
feat(backend): feed lists name, username and photo changes of people and chat renames, merged per day
|
2026-10-19 03:25:43 +00:00 |
|
hh
|
9aa8690e33
|
chore(backend): feed migrations follow the profile history migration
|
2026-10-19 03:06:20 +00:00 |
|
hh
|
dadba4d545
|
fix(frontend): message highlight and active folder tab are visible in the light theme
|
2026-10-19 03:00:23 +00:00 |
|
hh
|
fffbb08d36
|
fix(frontend): a link to a message opens the chat right at it without loading the latest page first
|
2026-10-19 03:00:23 +00:00 |
|
hh
|
c247dd0217
|
docs: readme mentions the feed and the get_feed tool
|
2026-10-19 03:00:23 +00:00 |
|
hh
|
b9a0604426
|
fix(frontend): jumps to replies, pins and album photos load the message when it is not on screen
|
2026-10-19 03:00:12 +00:00 |
|
hh
|
9f16e2aa56
|
feat(frontend): feed of deleted and edited messages above the chat list and per chat in the changes panel
|
2026-10-19 03:00:12 +00:00 |
|
hh
|
010fa29ce0
|
feat(backend): feed items carry the message id even when the message row is gone
|
2026-10-19 02:59:07 +00:00 |
|
hh
|
395d58464d
|
feat(backend): get_feed mcp tool reads the feed of deleted and edited messages
|
2026-10-19 02:59:07 +00:00 |
|
hh
|
83c57ac96b
|
feat(backend): feed of deleted and edited messages with bulk deletions grouped and a shared seen marker
|
2026-10-19 02:58:51 +00:00 |
|
hh
|
45c19cac20
|
feat(backend): edit versions are kept in groups and channels by default
|
2026-10-19 02:58:51 +00:00 |
|
hh
|
0dd14c5d5e
|
fix(backend): person overview reads live in their own module, no import cycle with read receipts
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
1abb396c36
|
feat(frontend): sender avatar and name in groups open the person panel without leaving the chat
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
143408cd7f
|
feat(frontend): profile panel about one person with real changes, shared groups, joins and leaves and deleted messages
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
c8d485fe0e
|
fix(backend): migration vacuums profile history so change reads stay index only
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
b86e2627d8
|
feat(backend): mcp get_person returns everything the archive knows about one person
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
8f9ceb6af8
|
feat(backend): person overview with real profile changes, shared groups, joins and leaves, deleted count and group title changes
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
0c9c848fb1
|
fix(backend): profile history gets a row only when a field really changed, partial snapshots keep the known phone and username
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
aa41bbbc74
|
fix(backend): group title changes found by enrichment are recorded, enrichment and syncs skip unchanged profiles
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
efc431c969
|
fix(backend): watched bot enriches a group at most once in six hours
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
7d7cf3cbbb
|
feat(backend): history keys cover the profile fields, group snapshots keyed by time, indexes for memberships and job lookups
|
2026-10-19 02:57:49 +00:00 |
|
hh
|
97ccfbbffd
|
fix(backend): watch times stay in utc for naive telegram dates, webhook outbox survives a database hiccup at start
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
2c56934133
|
feat(frontend): live unseen alerts badge on the menu button and in settings
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
ea3a7c0a61
|
feat(frontend): watches, webhooks and alerts panels read humanly, with chat picker, url filter, test send and delivery log
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
6a4fd6ad47
|
feat(backend): watches report alert counts, alerts carry watch params and time away, webhooks their last delivery
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
9da0c06ac1
|
feat(backend): webhooks deliver signed alerts from an outbox with retries and a test send
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
2bb8ca45fb
|
feat(backend): alerts come enriched and paged with an unseen count and a live alert frame
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
4469938f47
|
feat(backend): watches fire on new, edited and deleted messages and on coming online, legacy keyword included
|
2026-10-19 02:57:27 +00:00 |
|
hh
|
8ed9ca1951
|
fix(frontend): chat list shows its chats on the first load again
|
2026-10-19 02:57:17 +00:00 |
|
hh
|
73b8903de1
|
feat(frontend): analytics shows minutes online by hour of week and by day, sessions with start and end, says when last seen is hidden, chat status is live and in russian
|
2026-10-19 02:41:39 +00:00 |
|
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 |
|