Commit Graph

  • aee1cf35ae ci(docker): run the image build check on PRs that touch crate sources YoursFunny 2026-09-24 03:45:35 +08:00
  • 7b50ad82b0 ci: make the live job honest about what it ran and skipped YoursFunny 2026-09-24 03:45:17 +08:00
  • a49bb1d1af test(x-media): gate the pixiv download test as live-network too YoursFunny 2026-09-24 03:44:06 +08:00
  • e99f8b0bc0 build: pin ffmpeg to a versioned URL and verify its sha256 unconditionally YoursFunny 2026-09-24 03:43:04 +08:00
  • 3fd04e4420 feat(x-media): gate every fetch entry with one process-wide semaphore YoursFunny 2026-09-24 03:38:53 +08:00
  • 0e91753402 perf(x-media): give the slot-holding fallback download its own budget YoursFunny 2026-09-24 03:37:38 +08:00
  • 8f254c3779 perf(x-media): stream the frame zip through a tokio file handle YoursFunny 2026-09-24 03:31:06 +08:00
  • e9dd3aece2 perf(send): write the fallback temp file on a blocking thread YoursFunny 2026-09-24 03:30:30 +08:00
  • 67b6bd3038 fix(commands): stop /debug from nesting blockquotes on long posts YoursFunny 2026-09-24 02:53:49 +08:00
  • 3fb6b3b4da fix(fetch): one status table — a persistent 4xx is permanent everywhere YoursFunny 2026-09-24 02:52:10 +08:00
  • e6800fd27b fix(pixiv): keep a frame-zip download hiccup retryable YoursFunny 2026-09-24 02:50:22 +08:00
  • 38e65a3791 fix(queue): close the lost-wakeup window on shutdown YoursFunny 2026-09-24 02:49:10 +08:00
  • eecd4320f8 fix(state): keep failed and stale reads from poisoning the chat cache YoursFunny 2026-09-24 02:47:49 +08:00
  • d774f0b37c fix(pixiv): treat an empty refresh token as unset YoursFunny 2026-09-24 00:48:29 +08:00
  • 5d44946690 perf(db): size the pool to cover every DB consumer YoursFunny 2026-09-24 00:48:29 +08:00
  • 33b1f04f0e fix(send): release one keep-alive reference per settled task YoursFunny 2026-09-24 00:48:28 +08:00
  • 4c1fa857c4 fix(webhook): refuse to start without a secret token YoursFunny 2026-09-24 00:48:21 +08:00
  • 3ebc1e4a8f feat(inline): answer from the link cache, and put the answer on the trait YoursFunny 2026-09-21 20:35:18 +08:00
  • 20a0cf3ea3 feat(pixiv): fall back to the large variant when a page has no original YoursFunny 2026-09-21 20:29:20 +08:00
  • f6523e021d feat(urls): deliver a media-less post as its text YoursFunny 2026-09-21 20:24:40 +08:00
  • c549a6d35e feat(upload): give videos and animations Telegram's real 50 MB cap YoursFunny 2026-09-21 20:21:01 +08:00
  • 9e5b6df21c docs: note the payload's MediaRef in AGENTS.md YoursFunny 2026-09-21 18:44:42 +08:00
  • aa70b45ae6 refactor(send): model a payload's media as MediaRef, not media + file_id YoursFunny 2026-09-21 18:44:26 +08:00
  • 70d4f2ec88 refactor(x-media): move the download stack into site/download.rs YoursFunny 2026-09-21 18:35:58 +08:00
  • b7763a6572 refactor(send): move the Bot API error policy into send/error.rs YoursFunny 2026-09-21 18:32:07 +08:00
  • 459bfe5803 refactor(media_sender): move the test support into its own file YoursFunny 2026-09-21 18:29:44 +08:00
  • 01e097a8b6 refactor(handlers): split urls.rs into workers, pipeline and startup repair YoursFunny 2026-09-21 18:28:41 +08:00
  • 435c8c4cc4 refactor(commands): the executor takes its context instead of the statics YoursFunny 2026-09-21 18:25:08 +08:00
  • df8fd77d29 docs: sync AGENTS.md with the refactors YoursFunny 2026-09-21 17:43:43 +08:00
  • f7179d65ee refactor(db): open_store no longer creates the directory YoursFunny 2026-09-21 17:42:56 +08:00
  • 65c9aa6c5c refactor(send): inline parse_media_url, drop photos_first's rebind YoursFunny 2026-09-21 17:41:57 +08:00
  • c58202e683 refactor(send): call send_animation directly YoursFunny 2026-09-21 17:40:43 +08:00
  • ea63dbb9f9 refactor(send): inline Task::media_items into its only caller YoursFunny 2026-09-21 17:39:24 +08:00
  • 9db1a6093b refactor(main): drop the no-op dispatcher dependency YoursFunny 2026-09-21 17:38:11 +08:00
  • bd98001d42 refactor(urls): inline fetch_shared into its one caller YoursFunny 2026-09-21 17:37:31 +08:00
  • 90663a51cc refactor(handlers): inline reply_html into its only caller YoursFunny 2026-09-21 17:36:44 +08:00
  • 7ecb61399d refactor(handlers): reply returns unit YoursFunny 2026-09-21 17:35:50 +08:00
  • 40ab07882d fix(handlers): restore the group hint's link filter YoursFunny 2026-09-21 17:35:07 +08:00
  • 676b4bc2ba refactor(rate_limit): one balance() behind tokens() and is_idle() YoursFunny 2026-09-21 17:34:25 +08:00
  • 2d50440bf1 refactor(commands): one require_admin gate for the admin-only commands YoursFunny 2026-09-21 17:33:45 +08:00
  • 6b4da18be5 refactor(commands): one cap_text for the two truncated replies YoursFunny 2026-09-21 17:32:46 +08:00
  • 5222cfa1cb refactor(x-media): hoist the shared caption builder YoursFunny 2026-09-21 17:29:18 +08:00
  • dd98a90a45 refactor(state): add ChatData::format_for for the per-site caption format YoursFunny 2026-09-21 17:27:42 +08:00
  • 26581cfca1 refactor(handlers): use teloxide's own chat-kind predicates YoursFunny 2026-09-21 17:26:35 +08:00
  • d9f3ee99c1 refactor(db): add DbPool::with_conn_or for the default-and-log tails YoursFunny 2026-09-21 17:24:51 +08:00
  • f21570f579 test: share the photo payload fixture, drop two test-only aliases YoursFunny 2026-09-21 17:22:02 +08:00
  • 7a61077d80 refactor(pixiv): keep the artwork type as the API's string YoursFunny 2026-09-21 17:19:26 +08:00
  • 7dd0e8f2d6 refactor(x-media): drop the download_media wrapper YoursFunny 2026-09-21 17:17:43 +08:00
  • c8a32d49c9 refactor(x-media): read Fetched::site_id instead of the site_name alias YoursFunny 2026-09-21 17:16:21 +08:00
  • 4e42855c59 refactor(x-media): drop Media's write-only title field YoursFunny 2026-09-21 17:15:27 +08:00
  • 9a7cda05c9 refactor(x-media): drop the per-site fns the Site defaults already cover YoursFunny 2026-09-21 17:12:42 +08:00
  • 5630a86d88 refactor(x-media): share the HTTP-status error mapping YoursFunny 2026-09-21 17:09:07 +08:00
  • b9dd1f4d08 refactor(urls): fold the cache-hit caption branch into one call YoursFunny 2026-09-21 17:06:46 +08:00
  • 9aed6f4a24 refactor(config): one parse_opt helper, BOT_ADMIN parsed once YoursFunny 2026-09-21 17:05:20 +08:00
  • 3d377f68fb refactor(photo): one plan decides within-limits and decode budget YoursFunny 2026-09-21 17:03:22 +08:00
  • 5166d97545 refactor(db): use rusqlite query_row/optional instead of hand-rolled reads YoursFunny 2026-09-21 17:01:38 +08:00
  • ebe7b8bdd7 refactor(send): one payload to InputMedia dispatch instead of three YoursFunny 2026-09-21 16:59:54 +08:00
  • a5187981c7 refactor(send): share one task constructor between fresh sends and startup repair YoursFunny 2026-09-21 16:58:39 +08:00
  • 10a672787a docs: describe the CI gates in the testing notes YoursFunny 2026-09-21 15:55:08 +08:00
  • 9eb865bb02 ci: skip the heavy jobs when nothing but documentation changed YoursFunny 2026-09-21 15:54:39 +08:00
  • 74ffe66884 ci: correct the duplicate-build diagnosis YoursFunny 2026-09-21 15:44:11 +08:00
  • f8796913e5 ci: make the docker duplicate check able to see tags YoursFunny 2026-09-21 15:38:44 +08:00
  • d60f849864 chore: bump version to 1.9.1 v1.9.1 YoursFunny 2026-09-21 15:28:51 +08:00
  • a981256b11 fix(deps): h2 0.4.19 (RUSTSEC-2026-0258) YoursFunny 2026-09-21 15:27:19 +08:00
  • 8c085bea35 chore: bump version to 1.9.0 v1.9.0 YoursFunny 2026-09-21 15:05:03 +08:00
  • 670351d436 fix: let a successful send return a degraded entry to the fast path YoursFunny 2026-09-21 14:38:26 +08:00
  • 64cf43dc01 perf: degrade a link-cache entry instead of dropping it on a failed send YoursFunny 2026-09-21 14:35:57 +08:00
  • 62507d3a01 perf: bound the memory photo preparation holds, not just its count YoursFunny 2026-09-21 14:31:50 +08:00
  • 667f523c8b docs: sync AGENTS with the shared fetch, download budget and inline answer YoursFunny 2026-09-21 13:53:54 +08:00
  • 507c8ac317 perf: index the link-cache prune, evict chats with no live prompt YoursFunny 2026-09-21 13:52:43 +08:00
  • 670a7bd02b fix: answer an inline query whose media Telegram cannot fetch YoursFunny 2026-09-21 13:49:21 +08:00
  • 5ff921222a fix: give a media download a total time budget YoursFunny 2026-09-21 13:44:53 +08:00
  • 0edaef56bd perf: share one fetch between concurrent duplicates of a link YoursFunny 2026-09-21 13:42:52 +08:00
  • 994734b001 perf: gzip and HTTP/2 for the site clients YoursFunny 2026-09-21 13:09:32 +08:00
  • a501a17519 perf: stop spending API calls the link pipeline cannot use YoursFunny 2026-09-21 13:01:45 +08:00
  • edf4dab26d fix: remember an unavailable bilibili fingerprint YoursFunny 2026-09-21 12:56:20 +08:00
  • 818a44d697 perf: fetch bsky HLS segments concurrently YoursFunny 2026-09-21 12:55:12 +08:00
  • e31bf92df7 perf: parse a twitter syndication body once YoursFunny 2026-09-21 12:49:26 +08:00
  • a1c452f19d perf: retry the bsky HLS request, not the whole fetch YoursFunny 2026-09-21 04:11:39 +08:00
  • 362eb9e729 perf: bound upload-fallback preparation process-wide YoursFunny 2026-09-21 04:10:28 +08:00
  • 35074bab67 perf: stop probing a media item's size before downloading it YoursFunny 2026-09-21 04:09:34 +08:00
  • 1fb7837255 test: name the redirect-guard test so the live filter selects it YoursFunny 2026-09-21 03:03:37 +08:00
  • 4e723e1657 test: drive a real Bot against a stand-in API YoursFunny 2026-09-21 03:02:43 +08:00
  • cd8b5ac67b fix: refuse media downloads into the host's own network YoursFunny 2026-09-21 02:51:03 +08:00
  • bd5a6846e8 test: cover the URL extraction the message entry point runs on YoursFunny 2026-09-21 02:47:43 +08:00
  • da8fde6a4e test: pin the migration chain's append-only rule YoursFunny 2026-09-21 02:17:14 +08:00
  • 3b946b1eab fix: never eat a caption silently when the edit fails YoursFunny 2026-09-21 02:07:55 +08:00
  • d540fc31e9 fix: re-fetch queued retries whose local media did not survive a restart YoursFunny 2026-09-21 01:48:50 +08:00
  • 024dfd50b3 fix: bound the inline state map, test the 300s sweep, add a bot-wide send budget YoursFunny 2026-09-21 01:03:15 +08:00
  • 3828d5b483 test: share the handler/cache fixtures from ctx::test_support YoursFunny 2026-09-21 00:25:01 +08:00
  • 39dbd0f3a2 test: drop redundant tests, make the vacuous ones real YoursFunny 2026-09-21 00:16:11 +08:00
  • d3560dca52 docs: add .env.example as the deployment template YoursFunny 2026-09-20 22:28:01 +08:00
  • 24cbfc2f27 chore(deploy): track docker-compose.yml and read instance values from .env YoursFunny 2026-09-20 22:07:27 +08:00
  • 4cdf618c25 fix(retry): fence the queue lease, clean up after a kill, name dead-lettered posts YoursFunny 2026-09-20 21:34:45 +08:00
  • 0a82ca5a42 fix(retry): let slow downloads finish, and never re-run a finished task YoursFunny 2026-09-20 21:02:46 +08:00
  • 4cf793cd7e fix(retry): stop losing posts to transient failures and broken promises YoursFunny 2026-09-20 20:46:18 +08:00
  • 36e5e8afe6 chore(log): cap container log growth and echo the resolved config YoursFunny 2026-09-20 19:14:33 +08:00
  • 3f9821d475 feat(log): survive a bare deployment and name what each line is about YoursFunny 2026-09-20 19:07:23 +08:00
  • 9e873131d4 chore: bump version to 1.8.0 v1.8.0 YoursFunny 2026-09-20 17:41:20 +08:00
  • 5b77d14497 fix(commands): make /debug preview the caption a link would actually send YoursFunny 2026-09-20 17:30:55 +08:00