telepost-bot 2.78.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- telepost_bot-2.78.0/CHANGELOG.md +2273 -0
- telepost_bot-2.78.0/LICENSE +21 -0
- telepost_bot-2.78.0/MANIFEST.in +47 -0
- telepost_bot-2.78.0/PKG-INFO +164 -0
- telepost_bot-2.78.0/README.en.md +117 -0
- telepost_bot-2.78.0/README.md +117 -0
- telepost_bot-2.78.0/config/__init__.py +3 -0
- telepost_bot-2.78.0/config/fly-telepost-policy.example.json +16 -0
- telepost_bot-2.78.0/config/review_policy.md +64 -0
- telepost_bot-2.78.0/config/settings.py +425 -0
- telepost_bot-2.78.0/config.ini.example +104 -0
- telepost_bot-2.78.0/database/__init__.py +3 -0
- telepost_bot-2.78.0/database/db_manager.py +1057 -0
- telepost_bot-2.78.0/handlers/__init__.py +15 -0
- telepost_bot-2.78.0/handlers/api_commands.py +73 -0
- telepost_bot-2.78.0/handlers/automation.py +438 -0
- telepost_bot-2.78.0/handlers/botconfig.py +255 -0
- telepost_bot-2.78.0/handlers/callback_handlers.py +679 -0
- telepost_bot-2.78.0/handlers/channel_listener.py +923 -0
- telepost_bot-2.78.0/handlers/command_handlers.py +615 -0
- telepost_bot-2.78.0/handlers/conversation.py +74 -0
- telepost_bot-2.78.0/handlers/error_handler.py +99 -0
- telepost_bot-2.78.0/handlers/index_handlers.py +201 -0
- telepost_bot-2.78.0/handlers/mode_selection.py +116 -0
- telepost_bot-2.78.0/handlers/moderation.py +145 -0
- telepost_bot-2.78.0/handlers/preview_handlers.py +286 -0
- telepost_bot-2.78.0/handlers/publish.py +1399 -0
- telepost_bot-2.78.0/handlers/reaction_stats.py +240 -0
- telepost_bot-2.78.0/handlers/recovery.py +89 -0
- telepost_bot-2.78.0/handlers/review.py +2107 -0
- telepost_bot-2.78.0/handlers/schedule_status.py +82 -0
- telepost_bot-2.78.0/handlers/search_handlers.py +987 -0
- telepost_bot-2.78.0/handlers/stats_handlers.py +439 -0
- telepost_bot-2.78.0/handlers/upload.py +132 -0
- telepost_bot-2.78.0/main.py +939 -0
- telepost_bot-2.78.0/mcp_server/__init__.py +1 -0
- telepost_bot-2.78.0/mcp_server/review_client.py +151 -0
- telepost_bot-2.78.0/mcp_server/server.py +182 -0
- telepost_bot-2.78.0/models/__init__.py +3 -0
- telepost_bot-2.78.0/models/state.py +13 -0
- telepost_bot-2.78.0/protocol/__init__.py +0 -0
- telepost_bot-2.78.0/protocol/v1/SOURCES.sha256 +15 -0
- telepost_bot-2.78.0/protocol/v1/__init__.py +0 -0
- telepost_bot-2.78.0/protocol/v1/error-mapping.json +46 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/ackresult.candidate_search.json +6 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/capabilities.pixivflow.json +27 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/event.job.expired.json +13 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/event.job.succeeded.json +13 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/eventpage.candidate_search.json +26 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/job.cancelled.candidate_search.json +24 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/job.failed.no_candidate.json +30 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/job.queued.json +19 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/job.running.json +19 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/job.succeeded.candidate_search.json +54 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/jobpage.candidate_search.json +25 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/task.candidate_search.json +19 -0
- telepost_bot-2.78.0/protocol/v1/fixtures/task.candidate_search.target_only.json +10 -0
- telepost_bot-2.78.0/protocol/v1/protocol.schema.json +352 -0
- telepost_bot-2.78.0/pyproject.toml +123 -0
- telepost_bot-2.78.0/run.py +869 -0
- telepost_bot-2.78.0/services/__init__.py +1 -0
- telepost_bot-2.78.0/services/review_service.py +1120 -0
- telepost_bot-2.78.0/setup.cfg +4 -0
- telepost_bot-2.78.0/telepost/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/api/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/application/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/application/admin_ops.py +333 -0
- telepost_bot-2.78.0/telepost/application/automation.py +131 -0
- telepost_bot-2.78.0/telepost/application/delivery_planner.py +245 -0
- telepost_bot-2.78.0/telepost/application/editorial.py +200 -0
- telepost_bot-2.78.0/telepost/application/hot.py +253 -0
- telepost_bot-2.78.0/telepost/application/novel_fallback_card.py +145 -0
- telepost_bot-2.78.0/telepost/application/novel_preview.py +289 -0
- telepost_bot-2.78.0/telepost/application/pixivflow_jobs.py +1191 -0
- telepost_bot-2.78.0/telepost/application/post_media.py +136 -0
- telepost_bot-2.78.0/telepost/application/posts.py +118 -0
- telepost_bot-2.78.0/telepost/application/publication.py +712 -0
- telepost_bot-2.78.0/telepost/application/reaction_backfill.py +104 -0
- telepost_bot-2.78.0/telepost/application/recovery.py +281 -0
- telepost_bot-2.78.0/telepost/application/refetch.py +453 -0
- telepost_bot-2.78.0/telepost/application/rerender.py +275 -0
- telepost_bot-2.78.0/telepost/application/resubmit.py +252 -0
- telepost_bot-2.78.0/telepost/application/review_queue.py +944 -0
- telepost_bot-2.78.0/telepost/application/submitter_notify.py +337 -0
- telepost_bot-2.78.0/telepost/application/telepress_provider.py +170 -0
- telepost_bot-2.78.0/telepost/build_info.py +39 -0
- telepost_bot-2.78.0/telepost/domain/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/domain/automation.py +168 -0
- telepost_bot-2.78.0/telepost/domain/delivery.py +248 -0
- telepost_bot-2.78.0/telepost/domain/editorial.py +196 -0
- telepost_bot-2.78.0/telepost/domain/errors.py +74 -0
- telepost_bot-2.78.0/telepost/domain/hot.py +140 -0
- telepost_bot-2.78.0/telepost/domain/media.py +120 -0
- telepost_bot-2.78.0/telepost/domain/navigation.py +99 -0
- telepost_bot-2.78.0/telepost/domain/novel_preview.py +137 -0
- telepost_bot-2.78.0/telepost/domain/packing.py +51 -0
- telepost_bot-2.78.0/telepost/domain/presentation.py +161 -0
- telepost_bot-2.78.0/telepost/domain/presentation_policy.py +175 -0
- telepost_bot-2.78.0/telepost/domain/refetch_state.py +316 -0
- telepost_bot-2.78.0/telepost/domain/review.py +75 -0
- telepost_bot-2.78.0/telepost/domain/submission.py +118 -0
- telepost_bot-2.78.0/telepost/miniapp/__init__.py +6 -0
- telepost_bot-2.78.0/telepost/miniapp/auth.py +137 -0
- telepost_bot-2.78.0/telepost/miniapp/rbac.py +102 -0
- telepost_bot-2.78.0/telepost/miniapp/role_bindings.py +131 -0
- telepost_bot-2.78.0/telepost/miniapp/session.py +181 -0
- telepost_bot-2.78.0/telepost/observability/__init__.py +1 -0
- telepost_bot-2.78.0/telepost/observability/audit.py +123 -0
- telepost_bot-2.78.0/telepost/observability/cli.py +148 -0
- telepost_bot-2.78.0/telepost/observability/doctor.py +1180 -0
- telepost_bot-2.78.0/telepost/observability/errors.py +51 -0
- telepost_bot-2.78.0/telepost/observability/redact.py +76 -0
- telepost_bot-2.78.0/telepost/storage/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/automation.py +185 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/columns.py +18 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/editorial.py +226 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/ledger.py +150 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/media_assets.py +141 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/moderation.py +82 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/novel_preview.py +91 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/posts.py +68 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/protocol_events.py +192 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/recovery.py +81 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/refetch.py +797 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/reviews.py +802 -0
- telepost_bot-2.78.0/telepost/storage/sqlite/submitter_notifications.py +189 -0
- telepost_bot-2.78.0/telepost/telegram/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/telegram/capture.py +35 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/__init__.py +0 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/discussion.py +329 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/executor.py +369 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/gateway.py +107 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/legacy_runner.py +181 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/planner.py +120 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/preparation.py +1023 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/registry.py +112 -0
- telepost_bot-2.78.0/telepost/telegram/delivery/sender.py +255 -0
- telepost_bot-2.78.0/telepost/telegram/review_keyboard.py +266 -0
- telepost_bot-2.78.0/telepost/telegram/review_stager.py +747 -0
- telepost_bot-2.78.0/telepost_bot.egg-info/PKG-INFO +164 -0
- telepost_bot-2.78.0/telepost_bot.egg-info/SOURCES.txt +276 -0
- telepost_bot-2.78.0/telepost_bot.egg-info/dependency_links.txt +1 -0
- telepost_bot-2.78.0/telepost_bot.egg-info/entry_points.txt +2 -0
- telepost_bot-2.78.0/telepost_bot.egg-info/requires.txt +20 -0
- telepost_bot-2.78.0/telepost_bot.egg-info/top_level.txt +13 -0
- telepost_bot-2.78.0/tests/test_admin_api.py +248 -0
- telepost_bot-2.78.0/tests/test_anonymous.py +57 -0
- telepost_bot-2.78.0/tests/test_api_commands.py +51 -0
- telepost_bot-2.78.0/tests/test_api_server.py +936 -0
- telepost_bot-2.78.0/tests/test_api_version.py +78 -0
- telepost_bot-2.78.0/tests/test_architecture_application.py +359 -0
- telepost_bot-2.78.0/tests/test_architecture_core.py +313 -0
- telepost_bot-2.78.0/tests/test_automation.py +110 -0
- telepost_bot-2.78.0/tests/test_backfill_attribution.py +127 -0
- telepost_bot-2.78.0/tests/test_blacklist.py +412 -0
- telepost_bot-2.78.0/tests/test_bot_token_logging.py +105 -0
- telepost_bot-2.78.0/tests/test_botconfig.py +74 -0
- telepost_bot-2.78.0/tests/test_boundary.py +491 -0
- telepost_bot-2.78.0/tests/test_callback_contract.py +72 -0
- telepost_bot-2.78.0/tests/test_caption_mentions.py +77 -0
- telepost_bot-2.78.0/tests/test_compatibility.py +483 -0
- telepost_bot-2.78.0/tests/test_conversation_flow.py +171 -0
- telepost_bot-2.78.0/tests/test_data_class_cleanup.py +162 -0
- telepost_bot-2.78.0/tests/test_database.py +290 -0
- telepost_bot-2.78.0/tests/test_database_operations.py +652 -0
- telepost_bot-2.78.0/tests/test_delivery_planner.py +112 -0
- telepost_bot-2.78.0/tests/test_disposition.py +107 -0
- telepost_bot-2.78.0/tests/test_doctor.py +881 -0
- telepost_bot-2.78.0/tests/test_editorial.py +627 -0
- telepost_bot-2.78.0/tests/test_file_validator.py +187 -0
- telepost_bot-2.78.0/tests/test_frozen_support.py +40 -0
- telepost_bot-2.78.0/tests/test_handlers.py +425 -0
- telepost_bot-2.78.0/tests/test_heat_calculator.py +190 -0
- telepost_bot-2.78.0/tests/test_helper_functions.py +181 -0
- telepost_bot-2.78.0/tests/test_hot_domain.py +107 -0
- telepost_bot-2.78.0/tests/test_identity_provenance.py +319 -0
- telepost_bot-2.78.0/tests/test_integration.py +387 -0
- telepost_bot-2.78.0/tests/test_logic_flow.py +347 -0
- telepost_bot-2.78.0/tests/test_logical_submissions.py +126 -0
- telepost_bot-2.78.0/tests/test_maintenance_jobs.py +68 -0
- telepost_bot-2.78.0/tests/test_manager_notifications.py +233 -0
- telepost_bot-2.78.0/tests/test_media_decision_audit.py +104 -0
- telepost_bot-2.78.0/tests/test_media_delivery_pipeline.py +602 -0
- telepost_bot-2.78.0/tests/test_media_domain.py +77 -0
- telepost_bot-2.78.0/tests/test_media_preparation.py +685 -0
- telepost_bot-2.78.0/tests/test_media_proxy_delivery.py +32 -0
- telepost_bot-2.78.0/tests/test_menu_shortcut_single_reply.py +143 -0
- telepost_bot-2.78.0/tests/test_messages.py +412 -0
- telepost_bot-2.78.0/tests/test_miniapp_api.py +464 -0
- telepost_bot-2.78.0/tests/test_miniapp_auth.py +169 -0
- telepost_bot-2.78.0/tests/test_miniapp_content.py +162 -0
- telepost_bot-2.78.0/tests/test_miniapp_entries.py +172 -0
- telepost_bot-2.78.0/tests/test_miniapp_history.py +221 -0
- telepost_bot-2.78.0/tests/test_miniapp_rbac.py +97 -0
- telepost_bot-2.78.0/tests/test_mixed_media_integrity.py +237 -0
- telepost_bot-2.78.0/tests/test_moderation_and_admin_ux.py +259 -0
- telepost_bot-2.78.0/tests/test_navigation.py +304 -0
- telepost_bot-2.78.0/tests/test_no_owner_probe.py +14 -0
- telepost_bot-2.78.0/tests/test_novel_cover_preview.py +245 -0
- telepost_bot-2.78.0/tests/test_novel_delivery_semantics.py +208 -0
- telepost_bot-2.78.0/tests/test_novel_preview.py +860 -0
- telepost_bot-2.78.0/tests/test_observability.py +135 -0
- telepost_bot-2.78.0/tests/test_observability_lifecycle.py +371 -0
- telepost_bot-2.78.0/tests/test_online_reading_root_button.py +522 -0
- telepost_bot-2.78.0/tests/test_packing_ssot.py +126 -0
- telepost_bot-2.78.0/tests/test_polling_server.py +59 -0
- telepost_bot-2.78.0/tests/test_preview_pagination.py +357 -0
- telepost_bot-2.78.0/tests/test_production_handler_graph.py +133 -0
- telepost_bot-2.78.0/tests/test_protocol_contract.py +262 -0
- telepost_bot-2.78.0/tests/test_publication_presentation.py +292 -0
- telepost_bot-2.78.0/tests/test_publish_idempotency.py +96 -0
- telepost_bot-2.78.0/tests/test_publish_regressions.py +85 -0
- telepost_bot-2.78.0/tests/test_publish_reply.py +362 -0
- telepost_bot-2.78.0/tests/test_reaction_backfill.py +102 -0
- telepost_bot-2.78.0/tests/test_reaction_stats.py +108 -0
- telepost_bot-2.78.0/tests/test_recovery.py +213 -0
- telepost_bot-2.78.0/tests/test_refetch.py +1636 -0
- telepost_bot-2.78.0/tests/test_refetch_card_state.py +340 -0
- telepost_bot-2.78.0/tests/test_refetch_events.py +461 -0
- telepost_bot-2.78.0/tests/test_refetch_job_lifecycle.py +650 -0
- telepost_bot-2.78.0/tests/test_refetch_reason_normalization.py +231 -0
- telepost_bot-2.78.0/tests/test_refetch_replacement.py +403 -0
- telepost_bot-2.78.0/tests/test_remote_fetch_fallback.py +128 -0
- telepost_bot-2.78.0/tests/test_rerender.py +208 -0
- telepost_bot-2.78.0/tests/test_resubmit.py +174 -0
- telepost_bot-2.78.0/tests/test_review.py +1569 -0
- telepost_bot-2.78.0/tests/test_review_consistency.py +231 -0
- telepost_bot-2.78.0/tests/test_review_http_mcp.py +285 -0
- telepost_bot-2.78.0/tests/test_review_service.py +208 -0
- telepost_bot-2.78.0/tests/test_robustness.py +498 -0
- telepost_bot-2.78.0/tests/test_run_dispatcher.py +221 -0
- telepost_bot-2.78.0/tests/test_run_mode.py +40 -0
- telepost_bot-2.78.0/tests/test_run_supervisor.py +99 -0
- telepost_bot-2.78.0/tests/test_schedule_outcomes.py +414 -0
- telepost_bot-2.78.0/tests/test_search_recovery.py +17 -0
- telepost_bot-2.78.0/tests/test_security.py +364 -0
- telepost_bot-2.78.0/tests/test_shutdown.py +81 -0
- telepost_bot-2.78.0/tests/test_streaming_uploads.py +175 -0
- telepost_bot-2.78.0/tests/test_submission_timeout_idempotency.py +345 -0
- telepost_bot-2.78.0/tests/test_telegram_golden_messages.py +112 -0
- telepost_bot-2.78.0/tests/test_telegram_media_cache.py +288 -0
- telepost_bot-2.78.0/tests/test_upload.py +142 -0
- telepost_bot-2.78.0/tests/test_user_friendly_messages.py +372 -0
- telepost_bot-2.78.0/tests/test_webhook_ready.py +39 -0
- telepost_bot-2.78.0/tests/test_webhook_router.py +403 -0
- telepost_bot-2.78.0/tests/test_webhook_secret.py +23 -0
- telepost_bot-2.78.0/tests/test_webhook_secret_logging.py +149 -0
- telepost_bot-2.78.0/tests/test_webhook_static.py +71 -0
- telepost_bot-2.78.0/tests/test_work_id_wire.py +297 -0
- telepost_bot-2.78.0/ui/__init__.py +0 -0
- telepost_bot-2.78.0/ui/keyboards.py +281 -0
- telepost_bot-2.78.0/ui/messages.py +512 -0
- telepost_bot-2.78.0/utils/__init__.py +3 -0
- telepost_bot-2.78.0/utils/api_server.py +3110 -0
- telepost_bot-2.78.0/utils/api_tokens.py +62 -0
- telepost_bot-2.78.0/utils/blacklist.py +188 -0
- telepost_bot-2.78.0/utils/cache.py +51 -0
- telepost_bot-2.78.0/utils/config_wizard.py +92 -0
- telepost_bot-2.78.0/utils/database.py +201 -0
- telepost_bot-2.78.0/utils/file_validator.py +173 -0
- telepost_bot-2.78.0/utils/heat_calculator.py +184 -0
- telepost_bot-2.78.0/utils/helper_functions.py +662 -0
- telepost_bot-2.78.0/utils/index_manager.py +477 -0
- telepost_bot-2.78.0/utils/logging_config.py +124 -0
- telepost_bot-2.78.0/utils/maintenance_jobs.py +71 -0
- telepost_bot-2.78.0/utils/polling_server.py +85 -0
- telepost_bot-2.78.0/utils/run_mode.py +36 -0
- telepost_bot-2.78.0/utils/runtime_policy.py +86 -0
- telepost_bot-2.78.0/utils/schedule_watchdog.py +77 -0
- telepost_bot-2.78.0/utils/search_engine.py +515 -0
- telepost_bot-2.78.0/utils/submission.py +105 -0
- telepost_bot-2.78.0/utils/webhook_server.py +334 -0
- telepost_bot-2.78.0/webapp/__init__.py +4 -0
- telepost_bot-2.78.0/webapp/dist/assets/2d82b92e720462f8dd3b-Bh4Fahcw.svg +372 -0
- telepost_bot-2.78.0/webapp/dist/assets/index-C-xxEN9W.js +110 -0
- telepost_bot-2.78.0/webapp/dist/assets/index-DJgL81We.css +1 -0
- telepost_bot-2.78.0/webapp/dist/index.html +15 -0
|
@@ -0,0 +1,2273 @@
|
|
|
1
|
+
# 更新日志
|
|
2
|
+
|
|
3
|
+
所有重要的项目更改都会记录在此文件中。
|
|
4
|
+
|
|
5
|
+
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
6
|
+
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
7
|
+
|
|
8
|
+
> 发布说明面向普通用户:写「对用户有什么改变」,不写内部实现细节(模块名、函数名、配置键);
|
|
9
|
+
> 技术细节放进代码注释或 `docs/`。每个 Release 的正文由本文件对应版本段自动生成。
|
|
10
|
+
|
|
11
|
+
## [2.78.0](https://github.com/redtidev1918/TelePost/compare/v2.77.0...v2.78.0) (2026-10-03)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* add PyPI distribution packaging and CI publish workflow ([9ed57ef](https://github.com/redtidev1918/TelePost/commit/9ed57efd54416b1fba44f7808e76561f663c5b7a))
|
|
17
|
+
|
|
18
|
+
## [2.77.0](https://github.com/redtidev1918/TelePost/compare/v2.76.2...v2.77.0) (2026-10-03)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **channel:** show online reading as a channel-root inline button ([#289](https://github.com/redtidev1918/TelePost/issues/289)) ([a1f476a](https://github.com/redtidev1918/TelePost/commit/a1f476a2429dcec5069b62232659d8879fc1141c))
|
|
24
|
+
|
|
25
|
+
## [2.76.2](https://github.com/redtidev1918/TelePost/compare/v2.76.1...v2.76.2) (2026-10-02)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* **deps:** bump telepress to 0.16.4 ([#286](https://github.com/redtidev1918/TelePost/issues/286)) ([d7582a3](https://github.com/redtidev1918/TelePost/commit/d7582a38f700ffd2c998861bd30ef479ff3db897))
|
|
31
|
+
|
|
32
|
+
## [2.76.1](https://github.com/redtidev1918/TelePost/compare/v2.76.0...v2.76.1) (2026-10-02)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
* **channel:** keep single-novel root caption while deduping read-online entrance ([#283](https://github.com/redtidev1918/TelePost/issues/283)) ([aef75a6](https://github.com/redtidev1918/TelePost/commit/aef75a6e6f46568a46c39f2dffe3611874fb20b7))
|
|
38
|
+
|
|
39
|
+
## [2.76.0](https://github.com/redtidev1918/TelePost/compare/v2.75.0...v2.76.0) (2026-10-02)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Features
|
|
43
|
+
|
|
44
|
+
* **channel:** read-online Instant View preview via trailing text bare link ([#279](https://github.com/redtidev1918/TelePost/issues/279)) ([0668ad8](https://github.com/redtidev1918/TelePost/commit/0668ad8b7d3501116da1e2e051499348cafc7c93))
|
|
45
|
+
|
|
46
|
+
## [2.75.0](https://github.com/redtidev1918/TelePost/compare/v2.74.0...v2.75.0) (2026-10-02)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
* **api:** source-neutral work_id with deprecated pixiv_id alias ([#275](https://github.com/redtidev1918/TelePost/issues/275)) ([ff05b1d](https://github.com/redtidev1918/TelePost/commit/ff05b1d2bf85624a9218fe5b0261a3a219975b2e))
|
|
52
|
+
|
|
53
|
+
## [2.74.0](https://github.com/redtidev1918/TelePost/compare/v2.73.12...v2.74.0) (2026-10-02)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### Features
|
|
57
|
+
|
|
58
|
+
* **miniapp:** explain empty review queue with recent terminal records ([#273](https://github.com/redtidev1918/TelePost/issues/273)) ([5a74282](https://github.com/redtidev1918/TelePost/commit/5a74282264feb9ddbc2a3a151d8a67c503f64a80))
|
|
59
|
+
|
|
60
|
+
## [2.73.12](https://github.com/redtidev1918/TelePost/compare/v2.73.11...v2.73.12) (2026-10-02)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Bug Fixes
|
|
64
|
+
|
|
65
|
+
* **preview:** bridge TelePost media-proxy config into in-process TelePress ([#269](https://github.com/redtidev1918/TelePost/issues/269)) ([588a1fa](https://github.com/redtidev1918/TelePost/commit/588a1faf2954157624eab20d452f4cdb422d1d17))
|
|
66
|
+
|
|
67
|
+
## [2.73.11](https://github.com/redtidev1918/TelePost/compare/v2.73.10...v2.73.11) (2026-10-02)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### Bug Fixes
|
|
71
|
+
|
|
72
|
+
* **api:** report real per-bot release version for dual-bot diagnostics ([2620e8e](https://github.com/redtidev1918/TelePost/commit/2620e8e502ddcba46fe73e550194917408798e29))
|
|
73
|
+
|
|
74
|
+
## [2.73.10](https://github.com/redtidev1918/TelePost/compare/v2.73.9...v2.73.10) (2026-10-01)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Bug Fixes
|
|
78
|
+
|
|
79
|
+
* **miniapp:** restore Bot entry capability and reviewer history surface ([654d76e](https://github.com/redtidev1918/TelePost/commit/654d76e61f16933acdc7c90779d7b32326509612))
|
|
80
|
+
|
|
81
|
+
## [2.73.9](https://github.com/redtidev1918/TelePost/compare/v2.73.8...v2.73.9) (2026-10-01)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### Bug Fixes
|
|
85
|
+
|
|
86
|
+
* **review:** pace review-group preview re-mask edits to avoid Telegram flood control ([49898f0](https://github.com/redtidev1918/TelePost/commit/49898f004cbef331d14a3f5632a9868df2d95d2a))
|
|
87
|
+
|
|
88
|
+
## [2.73.8](https://github.com/redtidev1918/TelePost/compare/v2.73.7...v2.73.8) (2026-10-01)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### Bug Fixes
|
|
92
|
+
|
|
93
|
+
* **review:** return real channel link on duplicate publish echo; add publish/spoiler diagnostics ([1fe1163](https://github.com/redtidev1918/TelePost/commit/1fe116321252e61ef0334f64a3d4693923bd2619))
|
|
94
|
+
|
|
95
|
+
## [2.73.7](https://github.com/redtidev1918/TelePost/compare/v2.73.6...v2.73.7) (2026-10-01)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
### Bug Fixes
|
|
99
|
+
|
|
100
|
+
* **miniapp:** restore authenticated Mini App entry architecture ([6356221](https://github.com/redtidev1918/TelePost/commit/63562218e338be749775ad2e374af4c9e301c9a9))
|
|
101
|
+
|
|
102
|
+
## [2.73.4](https://github.com/redtidev1918/TelePost/compare/v2.73.3...v2.73.4) (2026-09-30)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
### Bug Fixes
|
|
106
|
+
|
|
107
|
+
* **miniapp:** never lock outside_telegram on a delayed Telegram bridge ([1c2dca3](https://github.com/redtidev1918/TelePost/commit/1c2dca32e11e667f19f1ef8066a2824663a8d728))
|
|
108
|
+
|
|
109
|
+
## [2.73.3](https://github.com/redtidev1918/TelePost/compare/v2.73.2...v2.73.3) (2026-09-30)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
### Bug Fixes
|
|
113
|
+
|
|
114
|
+
* **media:** preserve originals conditionally, count visible review media ([#260](https://github.com/redtidev1918/TelePost/issues/260)) ([6e43939](https://github.com/redtidev1918/TelePost/commit/6e439397779b37343bf6b4494eb48632e5d015f0))
|
|
115
|
+
|
|
116
|
+
## [2.73.2](https://github.com/redtidev1918/TelePost/compare/v2.73.1...v2.73.2) (2026-09-30)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
### Bug Fixes
|
|
120
|
+
|
|
121
|
+
* **media:** preserve originals when using supplied previews ([2fb57c3](https://github.com/redtidev1918/TelePost/commit/2fb57c34f9b96aa62207034ed75b8a7e6108cfd2))
|
|
122
|
+
* **media:** preserve originals when using supplied previews ([5490db6](https://github.com/redtidev1918/TelePost/commit/5490db628d8175d2bd0d783b2de79ae56fd83eb5))
|
|
123
|
+
|
|
124
|
+
## [2.73.1](https://github.com/redtidev1918/TelePost/compare/v2.73.0...v2.73.1) (2026-09-30)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
### Bug Fixes
|
|
128
|
+
|
|
129
|
+
* **media:** stream oversized page downscale via libvips to avoid OOM ([#252](https://github.com/redtidev1918/TelePost/issues/252)) ([3fbb1c9](https://github.com/redtidev1918/TelePost/commit/3fbb1c9881c63f73d1b8c336e59644af6cd0dc59))
|
|
130
|
+
|
|
131
|
+
## [2.73.0](https://github.com/redtidev1918/TelePost/compare/v2.72.0...v2.73.0) (2026-09-30)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
### Features
|
|
135
|
+
|
|
136
|
+
* **review:** 新增 POST /api/v1/reviews/{id}/rerender 重新渲染审核卡 ([#250](https://github.com/redtidev1918/TelePost/issues/250)) ([ef13777](https://github.com/redtidev1918/TelePost/commit/ef137772e5ba517892da063f8e3738f65a89b83b))
|
|
137
|
+
|
|
138
|
+
## [2.72.0](https://github.com/redtidev1918/TelePost/compare/v2.71.5...v2.72.0) (2026-09-30)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
### Features
|
|
142
|
+
|
|
143
|
+
* **delivery,review:** 漫画大图不再重复为文档 + 保留原图标注「原图」 ([c533c37](https://github.com/redtidev1918/TelePost/commit/c533c37cee83b86f4a11eb7192bb32bfb21d0c1d))
|
|
144
|
+
* **delivery:** 解码内存预算改为容量感知且完全环境变量可配 ([e885279](https://github.com/redtidev1918/TelePost/commit/e885279b00144d953bc600ee200a7c25060c18e9))
|
|
145
|
+
* **review:** 审核卡标注保留原图并格式化文件计数 ([1debf6b](https://github.com/redtidev1918/TelePost/commit/1debf6bcf95874f4c56a1aca7b64160a0b5f8dec))
|
|
146
|
+
|
|
147
|
+
## [2.71.5](https://github.com/redtidev1918/TelePost/compare/v2.71.4...v2.71.5) (2026-09-29)
|
|
148
|
+
|
|
149
|
+
> 本次只含缺陷修复,两端协议保持兼容,无需强制升级执行端。
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
### Bug Fixes
|
|
153
|
+
|
|
154
|
+
* **审核队列:** 点审核卡片上的「🔇 遮罩」按钮后,如果审核群里按钮文字的刷新失败(例如审核群被移走或消息过旧),此前虽然遮罩已经立即在画面上生效,但按钮可能停在未更新的文字且没有提示;这次修复会在刷新失败时向审核人弹出一条可见提醒,说明遮罩状态实际已切换,避免按钮文字与实际状态不符而误判 ([a1ed4f7](https://github.com/redtidev1918/TelePost/commit/a1ed4f7ae8f7da9ce17b775f7aa397a069c47bb5))
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## [2.71.4](https://github.com/redtidev1918/TelePost/compare/v2.71.3...v2.71.4) (2026-09-28)
|
|
159
|
+
|
|
160
|
+
> 本次只含缺陷修复,两端协议保持兼容,无需强制升级执行端。
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
### Bug Fixes
|
|
164
|
+
|
|
165
|
+
* **审核队列:** 点审核卡片上的「🔇 遮罩」按钮时,审核群里已经发出去的图片现在会立即上遮罩(再点一次立即撤下)——此前只改了按钮文字,画面上的图并不会立刻被遮住,要等下次重发才会生效;这次修复让遮罩切换即时作用于审核群里已发送的照片/视频/动图 ([ed64c3e](https://github.com/redtidev1918/TelePost/commit/ed64c3ea3a218eb56035e5e7d8be6b28aed9d5ea))
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## [2.71.3](https://github.com/redtidev1918/TelePost/compare/v2.71.2...v2.71.3) (2026-09-28)
|
|
170
|
+
|
|
171
|
+
> 本次只含缺陷修复与重抓卡片状态调整,两端协议保持兼容,无需强制升级执行端。
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
### Bug Fixes
|
|
175
|
+
|
|
176
|
+
* **审核队列:** 「重抓」提交时的能力协商不再受 10 秒状态读预算限制——审核员点「重抓」会唤醒一台停机的执行端(冷启动实测约 10.2 秒),此前用 10 秒预算去等它会把一次合法的重抓误判成失败(审核 #142);现在提交路径用独立的宽裕预算,状态轮询仍保持 10 秒紧凑预算,不会拖慢 ([f36112a](https://github.com/redtidev1918/TelePost/commit/f36112a33b868f2a4e52dc59e84d8becc5333d04))
|
|
177
|
+
|
|
178
|
+
* **审核卡片:** 点过「重抓」的卡片,如果这次没找到新的可替换作品,卡片不再退回成一个「可照样发布/拒绝」的普通卡——点重抓即视为已拒绝当前作品,卡片保持「已作废」,只留下「重抓/换一张」和原链接,让你在下一张新作品上继续重抓(序号递增) ([f36112a](https://github.com/redtidev1918/TelePost/commit/f36112a33b868f2a4e52dc59e84d8becc5333d04))
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## [2.71.2](https://github.com/redtidev1918/TelePost/compare/v2.71.1...v2.71.2) (2026-09-28)
|
|
183
|
+
|
|
184
|
+
> 升级顺序:先升执行端 PixivFlow 到 3.4.2,再升本服务到 2.71.2。本次只含缺陷修复,两端协议保持兼容,顺序不强制。
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
### Bug Fixes
|
|
188
|
+
|
|
189
|
+
* **审核队列:** 「清理测试数据」不再可能误删真实审核:真实数据与测试数据现在各带显式标记,清理只删测试行,且同一条重抓链里只要还挂着真实数据就整条拒绝清理(此前按用户名匹配的清理曾把一条真实审核当成测试数据删掉) ([ed10c1a](https://github.com/redtidev1918/TelePost/commit/ed10c1aa85e4876acd86bbf27adce12803704e01))
|
|
190
|
+
|
|
191
|
+
* **审核队列:** 测试链里混进来的真实投稿不再被套上测试身份:重抓替换时,真实候选保留自己的投稿人身份与数据分类,不再继承测试夹具的用户名与 ID ([ed10c1a](https://github.com/redtidev1918/TelePost/commit/ed10c1aa85e4876acd86bbf27adce12803704e01))
|
|
192
|
+
|
|
193
|
+
* **审核卡片:** 审核群的预览不再继承投稿者勾选的「🔞 剧透」——审核群一律显示未遮罩的内容(审核员必须看清要审的东西,而 Telegram 无法对已发消息事后补上遮罩);频道发布仍按审核时保存的遮罩值,审核员可在发布前用卡片上的「🔇 遮罩」按钮更改 ([ed10c1a](https://github.com/redtidev1918/TelePost/commit/ed10c1aa85e4876acd86bbf27adce12803704e01))
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## [2.71.1](https://github.com/redtidev1918/TelePost/compare/v2.71.0...v2.71.1) (2026-09-27)
|
|
198
|
+
|
|
199
|
+
> 升级顺序:先升执行端 PixivFlow 到 3.4.1,再升本服务到 2.71.1。两端协议保持兼容,旧版本仍可互操作。
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
### Bug Fixes
|
|
203
|
+
|
|
204
|
+
* **refetch:** 重抓结束的通知不再可能「静默丢失」——由执行端直接回传的终态结果此前绕过了「同一次重抓只通知一次」的通道,既可能不通知也可能不留记录;现在所有终态来源走同一条通道,通知里一律带上任务ID,便于对着执行端排查 ([d8b23a5](https://github.com/redtidev1918/TelePost/commit/d8b23a5a05ccd7347596eb55268c81d571532240))
|
|
205
|
+
|
|
206
|
+
* **refetch:** 重抓失败的原因不再把执行端的技术报错原文(例如上游返回的 HTML 错误页)显示到审核卡片和小程序里,只保留一句简洁的中文说明 ([d8b23a5](https://github.com/redtidev1918/TelePost/commit/d8b23a5a05ccd7347596eb55268c81d571532240))
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## [2.71.0](https://github.com/redtidev1918/TelePost/compare/v2.70.1...v2.71.0) (2026-09-27)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
### ⚠ Breaking-ish: PixivFlow 协作通道换成 Workflow Protocol v1
|
|
214
|
+
|
|
215
|
+
审核群「重抓」改走稳定的远程作业 API(`POST /jobs` + 事件回调 +
|
|
216
|
+
调和拉取),取代旧的内部路径。**升级顺序不可交换**:
|
|
217
|
+
先升执行端 PixivFlow 到 3.3.0,再升本服务到 2.71.0。若临时需要切旧通道,
|
|
218
|
+
用 `PIXIVFLOW_JOB_TRANSPORT=legacy` 回滚——旧入口仍保留,但不再默认。
|
|
219
|
+
|
|
220
|
+
### Features
|
|
221
|
+
|
|
222
|
+
* **refetch:** 重抓改为持久化作业(心跳、退避、重启可恢复),任何终态
|
|
223
|
+
(替换稿到达 / 无候选 / 失败 / 超时 / 已取消)都会在审核卡上明确显示原因
|
|
224
|
+
并允许再次重抓,不再出现「无限处理中」。事件通道到达即更新,无须等待轮询
|
|
225
|
+
([a57a7bb](https://github.com/redtidev1918/TelePost/commit/a57a7bb74047c0afaf6b713a3d78ce61f47356ad))
|
|
226
|
+
* **protocol:** 消费执行端作业事件,提供事件入口与调和循环,回调/调和都只
|
|
227
|
+
应用一次终态、最多发一次终态通知,绝不二次通知 ([0b1b73a](https://github.com/redtidev1918/TelePost/commit/0b1b73a2e80c09875befef511109438b1e877120))
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## [2.70.1](https://github.com/redtidev1918/TelePost/compare/v2.70.0...v2.70.1) (2026-09-27)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
### Bug Fixes
|
|
235
|
+
|
|
236
|
+
* **observability:** 自检不再把「历史投递记录」误报为异常——投递账本记录的是已确认发布,行越老不代表有问题(此前每次自检都会恒定报一条无意义的告警,掩盖真实积压);现在只检查尚未确认的记录 ([95ddc64](https://github.com/redtidev1918/TelePost/commit/95ddc647b206e4d26d9048a9bcb32e5228278854))
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## [2.70.0](https://github.com/redtidev1918/TelePost/compare/v2.69.0...v2.70.0) (2026-09-27)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
### Features
|
|
244
|
+
|
|
245
|
+
* **miniapp:** 小程序「审核详情」显示重抓任务ID、当前阶段与已等待时长,重抓进行中时按钮保持不可点击(此前只识别旧状态词,进行中的重抓在页面上仍显示为可点击),并显示终止原因 ([3e1950c](https://github.com/redtidev1918/TelePost/commit/3e1950c350042ed90c9679a0a5b442f0dbb81f8d))
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## [2.69.0](https://github.com/redtidev1918/TelePost/compare/v2.68.1...v2.69.0) (2026-09-27)
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
### Features
|
|
253
|
+
|
|
254
|
+
* **review:** 重抓全过程可见:审核卡显示任务ID、当前阶段(搜索 / 筛选 / 准备替换)与已等待时长,超过 2 分钟自动再次提醒;请求未被接受 20 分钟、阶段停滞 10 分钟、总时长超过 30 分钟都以明确的终态收尾并交还可操作卡片(不再出现无限「仍在处理中」),候选替换历史随时可查 ([69849e2](https://github.com/redtidev1918/TelePost/commit/69849e2644ff85b140c4ac9b8d4570198bfa26db))
|
|
255
|
+
* **observability:** 新增只读自检:检查数据库完整性、卡住或异常的重抓、孤儿审核、卡住的发布、待投递队列与近期审计记录,输出明确结论与退出码,绝不改动数据、绝不打印令牌 ([266017d](https://github.com/redtidev1918/TelePost/commit/266017d40372798a90f3f5fb71d54e1e63d1dfbd))
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## [2.68.1](https://github.com/redtidev1918/TelePost/compare/v2.68.0...v2.68.1) (2026-09-27)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
### Bug Fixes
|
|
263
|
+
|
|
264
|
+
* **review:** 点击「重抓」后审核卡立即变成「重抓中」形态(隐藏 发布/拒绝/遮罩,保留 重抓 与查看原链接),进度提醒改为 2 分钟并在同一张卡上显示已等待时长;替换稿、无候选、失败、超时结束都会交还可正常操作的卡片。源稿件不会被提前判为拒绝——那会让自己的替换稿作废(此前表现为点击后长时间没有任何变化,容易被误判为卡死) ([60616f8](https://github.com/redtidev1918/TelePost/commit/60616f8bef8fe38e63ee8826ee1b0ff99a619250))
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## [2.68.0](https://github.com/redtidev1918/TelePost/compare/v2.67.0...v2.68.0) (2026-09-26)
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
### Features
|
|
272
|
+
|
|
273
|
+
* **review:** 审核群预览小说封面:有真实封面的小说在审核群里先显示封面图、再显示 TXT 文档,与频道发布结构一致;封面只用于预览展示,不写入审核记录 ([c8d7048](https://github.com/redtidev1918/TelePost/commit/c8d7048ff383d9d5da5952eff9ef5ff2c6869ef2))
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## [2.67.0](https://github.com/redtidev1918/TelePost/compare/v2.66.0...v2.67.0) (2026-09-24)
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
### Bug Fixes
|
|
281
|
+
|
|
282
|
+
* **publication:** 混合图档投稿的频道归档保留全部图片和文件;多文件投稿的说明文字单独发送,不再被误读为首份文件的标注 ([e138973](https://github.com/redtidev1918/TelePost/commit/e1389734829cad5e9131d81d6b119b3ce3eec0c4))
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## [2.66.0](https://github.com/redtidev1918/TelePost/compare/v2.65.0...v2.66.0) (2026-09-24)
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
### Features
|
|
290
|
+
|
|
291
|
+
* **novel:** 有真实封面的小说「封面主帖 + TXT 回复」;正文插图只进在线阅读页,不再发频道 ([4896d80](https://github.com/redtidev1918/TelePost/commit/4896d80b93d1c8c2614e5610a0dfe7c34e332f47))
|
|
292
|
+
* **novel:** 无封面小说自动生成轻量 fallback 卡片作频道 root(`NOVEL_FALLBACK_CARD_ENABLED`,默认开);生成失败降级为纯文本 root,发布永不因卡片失败而失败 ([4896d80](https://github.com/redtidev1918/TelePost/commit/4896d80b93d1c8c2614e5610a0dfe7c34e332f47))
|
|
293
|
+
|
|
294
|
+
(https://github.com/redtidev1918/TelePost/compare/v2.64.3...v2.65.0) (2026-09-24)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
### Features
|
|
298
|
+
|
|
299
|
+
* **miniapp:** 新增「热门」内容浏览入口(首页推荐、全部/本周热榜、帖子详情与媒体预览),与 Bot `/hot` 共用同一套热榜数据 ([6ab7fc0](https://github.com/redtidev1918/TelePost/commit/6ab7fc036fba93b327f924d0a3ad06a5679e68c9))
|
|
300
|
+
* **webapp:** 热门内容页、帖子详情页与底部导航「热门」入口 ([55861fd](https://github.com/redtidev1918/TelePost/commit/55861fde6bbe7f98b7cdf09f5bc1740173c30c9e))
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
### Bug Fixes
|
|
304
|
+
|
|
305
|
+
* **hot:** 修复热榜分页偏移导致第一页结果被跳过 ([6ab7fc0](https://github.com/redtidev1918/TelePost/commit/6ab7fc036fba93b327f924d0a3ad06a5679e68c9))
|
|
306
|
+
|
|
307
|
+
(https://github.com/redtidev1918/TelePost/compare/v2.64.2...v2.64.3) (2026-09-24)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
### Bug Fixes
|
|
311
|
+
|
|
312
|
+
* **delivery:** compress oversized images before document fallback ([10e9481](https://github.com/redtidev1918/TelePost/commit/10e94811ab56582e19347c7ec85c36d8a493aa4e))
|
|
313
|
+
* **publication:** keep novel TXT in asset delivery plan ([10e9481](https://github.com/redtidev1918/TelePost/commit/10e94811ab56582e19347c7ec85c36d8a493aa4e))
|
|
314
|
+
|
|
315
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
### Bug Fixes
|
|
319
|
+
|
|
320
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
### Bug Fixes
|
|
324
|
+
|
|
325
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
### Bug Fixes
|
|
334
|
+
|
|
335
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
### Bug Fixes
|
|
339
|
+
|
|
340
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))## [2.64.0](https://github.com/redtidev1918/TelePost/compare/v2.63.0...v2.64.0) (2026-09-23)
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
### Features
|
|
344
|
+
|
|
345
|
+
* **hot,automation,help:** add /hotweek, /schedule, reorganize help & menus ([66e1257](https://github.com/redtidev1918/TelePost/commit/66e125764addff7b9c6d646d401c89c561e1af0a))
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
### Bug Fixes
|
|
353
|
+
|
|
354
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
### Bug Fixes
|
|
358
|
+
|
|
359
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))## [2.64.0](https://github.com/redtidev1918/TelePost/compare/v2.63.0...v2.64.0) (2026-09-24)
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
### Features
|
|
363
|
+
|
|
364
|
+
* **hot:** redesign /hot and add /hotweek — natural-week hot ranking with stable sort
|
|
365
|
+
* **automation:** add /schedule for admin-defined recurring tasks (SQLite persistent, hot-reload, idempotent runs)
|
|
366
|
+
* **help:** reorganize /help and /start; split user vs admin command menus via Telegram scopes
|
|
367
|
+
|
|
368
|
+
## [2.63.0](https://github.com/redtidev1918/TelePost/compare/v2.62.4...v2.63.0) (2026-09-22)
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
### Features
|
|
372
|
+
|
|
373
|
+
* **moderation:** add manual ban commands for users and api tokens ([0326cf8](https://github.com/redtidev1918/TelePost/commit/0326cf8f6532d9a9b61ddcc1a562b1bb02300ed3))
|
|
374
|
+
|
|
375
|
+
## [2.62.4](https://github.com/redtidev1918/TelePost/compare/v2.62.3...v2.62.4) (2026-09-22)
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
### Bug Fixes
|
|
379
|
+
|
|
380
|
+
* **notify:** keep anonymous submitter id visible in admin alerts ([241de35](https://github.com/redtidev1918/TelePost/commit/241de350acb698780989e9586e826e01bcf5d08e))
|
|
381
|
+
|
|
382
|
+
## [2.62.3](https://github.com/redtidev1918/TelePost/compare/v2.62.2...v2.62.3) (2026-09-22)
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
### Bug Fixes
|
|
386
|
+
|
|
387
|
+
* **delivery:** anchor discussion overflow to album roots ([cad09dd](https://github.com/redtidev1918/TelePost/commit/cad09ddb377dd056c334f2bff88cae863880a70f))
|
|
388
|
+
* **review:** default review albums to Telegram media group capacity ([3a2bda1](https://github.com/redtidev1918/TelePost/commit/3a2bda11c4c512f72d0ba6df47a1a929b2562bbb))
|
|
389
|
+
|
|
390
|
+
## [2.62.2](https://github.com/redtidev1918/TelePost/compare/v2.62.1...v2.62.2) (2026-09-21)
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
### Bug Fixes
|
|
394
|
+
|
|
395
|
+
* **delivery:** route discussion publishing through shared strategy ([d82d0f9](https://github.com/redtidev1918/TelePost/commit/d82d0f9cb3b6a8723725173596f9c1607de75e35))
|
|
396
|
+
|
|
397
|
+
## [2.62.1](https://github.com/redtidev1918/TelePost/compare/v2.62.0...v2.62.1) (2026-09-21)
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
### Bug Fixes
|
|
401
|
+
|
|
402
|
+
* **preview:** regenerate legacy rich-marked text-only pages ([3528297](https://github.com/redtidev1918/TelePost/commit/35282975f3e05d2bb18cb955d9240eebe11e83e5))
|
|
403
|
+
|
|
404
|
+
## [2.62.0](https://github.com/redtidev1918/TelePost/compare/v2.61.1...v2.62.0) (2026-09-21)
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
### Features
|
|
408
|
+
|
|
409
|
+
* **delivery:** novel images preview-only and family-aware overflow ([2b6506f](https://github.com/redtidev1918/TelePost/commit/2b6506f513ccec1ce51e44be3ac1e6d28dc7aa40))
|
|
410
|
+
|
|
411
|
+
## [2.61.1](https://github.com/redtidev1918/TelePost/compare/v2.61.0...v2.61.1) (2026-09-21)
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
### Bug Fixes
|
|
415
|
+
|
|
416
|
+
* **delivery:** materialize remote media before Telegram album send ([c764f0c](https://github.com/redtidev1918/TelePost/commit/c764f0c0e59d13d2d1535d9f0a994ee83a3d65d5))
|
|
417
|
+
|
|
418
|
+
## [2.61.0](https://github.com/redtidev1918/TelePost/compare/v2.60.1...v2.61.0) (2026-09-21)
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
### Features
|
|
422
|
+
|
|
423
|
+
* **preview:** include inline novel images in online reading page ([e9d7cce](https://github.com/redtidev1918/TelePost/commit/e9d7cced0f0d192fb162fdb1ca34ac35c8cd37da))
|
|
424
|
+
|
|
425
|
+
## [2.60.1](https://github.com/redtidev1918/TelePost/compare/v2.60.0...v2.60.1) (2026-09-21)
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
### Bug Fixes
|
|
429
|
+
|
|
430
|
+
* **delivery:** fall back to local upload when Telegram cannot fetch remote media ([2814b27](https://github.com/redtidev1918/TelePost/commit/2814b271364926a4900ec68a6ecc31fde654cc5d))
|
|
431
|
+
|
|
432
|
+
## [2.60.0](https://github.com/redtidev1918/TelePost/compare/v2.59.0...v2.60.0) (2026-09-21)
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
### Features
|
|
436
|
+
|
|
437
|
+
* **reactions:** add operator history backfill script ([fa64205](https://github.com/redtidev1918/TelePost/commit/fa6420582e7d9965c7abd4dc45b4a8b54769b51d))
|
|
438
|
+
|
|
439
|
+
## [2.59.0](https://github.com/redtidev1918/TelePost/compare/v2.58.1...v2.59.0) (2026-09-21)
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
### Features
|
|
443
|
+
|
|
444
|
+
* **observability:** record media delivery strategy ([#228](https://github.com/redtidev1918/TelePost/issues/228)) ([3bc533f](https://github.com/redtidev1918/TelePost/commit/3bc533f93f91da62aef50fe9fff40acef8d30aaa))
|
|
445
|
+
|
|
446
|
+
## [2.58.1](https://github.com/redtidev1918/TelePost/compare/v2.58.0...v2.58.1) (2026-09-21)
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
### Bug Fixes
|
|
450
|
+
|
|
451
|
+
* **media:** align documents to trailing novel assets ([#225](https://github.com/redtidev1918/TelePost/issues/225)) ([9b1044d](https://github.com/redtidev1918/TelePost/commit/9b1044d51a3f09f57e9de30734384e95d6f04f61))
|
|
452
|
+
|
|
453
|
+
## [2.58.0](https://github.com/redtidev1918/TelePost/compare/v2.57.1...v2.58.0) (2026-09-21)
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
### Features
|
|
457
|
+
|
|
458
|
+
* **media:** typed MediaAsset domain model (Batch 5, RFC telepost-media-asset-model) ([#223](https://github.com/redtidev1918/TelePost/issues/223)) ([addbf77](https://github.com/redtidev1918/TelePost/commit/addbf7783c43344060401ec26be18ec1e62fab9f))
|
|
459
|
+
|
|
460
|
+
## [2.57.1](https://github.com/redtidev1918/TelePost/compare/v2.57.0...v2.57.1) (2026-09-21)
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
### Bug Fixes
|
|
464
|
+
|
|
465
|
+
* **reviews:** anchor review_chain_id at insert so media_asset_refs persist ([#221](https://github.com/redtidev1918/TelePost/issues/221)) ([fb0c2f4](https://github.com/redtidev1918/TelePost/commit/fb0c2f4c05cfa0bba474085b9c11fe64c635c13b))
|
|
466
|
+
|
|
467
|
+
## [2.57.0](https://github.com/redtidev1918/TelePost/compare/v2.56.2...v2.57.0) (2026-09-20)
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
### Features
|
|
471
|
+
|
|
472
|
+
* **delivery:** proxy remote media sources ([#212](https://github.com/redtidev1918/TelePost/issues/212)) ([97f1dbd](https://github.com/redtidev1918/TelePost/commit/97f1dbd3325e7c9ae3191e196319d79dc16d3ef8))
|
|
473
|
+
|
|
474
|
+
## [2.56.2](https://github.com/redtidev1918/TelePost/compare/v2.56.1...v2.56.2) (2026-09-20)
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
### Bug Fixes
|
|
478
|
+
|
|
479
|
+
* **footer:** open Main Mini App directly without BotFather short name ([#217](https://github.com/redtidev1918/TelePost/issues/217)) ([551c047](https://github.com/redtidev1918/TelePost/commit/551c047110f9e516e9db02943a394995d3045038))
|
|
480
|
+
|
|
481
|
+
## [2.56.1](https://github.com/redtidev1918/TelePost/compare/v2.56.0...v2.56.1) (2026-09-20)
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
### Bug Fixes
|
|
485
|
+
|
|
486
|
+
* **health:** aggregate reaction ingestion from bot workers ([53b336f](https://github.com/redtidev1918/TelePost/commit/53b336f3732b356524b2f0e721f2633509847fda))
|
|
487
|
+
* **health:** aggregate reaction ingestion from bot workers ([ae5e155](https://github.com/redtidev1918/TelePost/commit/ae5e155bcc81acb7180f03c954744b45f5510bed))
|
|
488
|
+
|
|
489
|
+
## [2.56.0](https://github.com/redtidev1918/TelePost/compare/v2.55.4...v2.56.0) (2026-09-20)
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
### Features
|
|
493
|
+
|
|
494
|
+
* **ux:** make Mini App primary and expose reaction ingestion ([507fbbb](https://github.com/redtidev1918/TelePost/commit/507fbbbc7a1ff1d13cec80816fbbd8a3e5768db2))
|
|
495
|
+
* **ux:** make Mini App primary and expose reaction ingestion ([90af281](https://github.com/redtidev1918/TelePost/commit/90af2813af454d6b74c9b57d2846da927edb941f))
|
|
496
|
+
|
|
497
|
+
## [2.55.4](https://github.com/redtidev1918/TelePost/compare/v2.55.3...v2.55.4) (2026-09-20)
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
### Bug Fixes
|
|
501
|
+
|
|
502
|
+
* **bot:** improve submission UX ([224e197](https://github.com/redtidev1918/TelePost/commit/224e1975ad6b8f350c1cf6838be250cbf74ad37f))
|
|
503
|
+
* **ux:** suppress preview links and restore menu after cancel ([69e7bd0](https://github.com/redtidev1918/TelePost/commit/69e7bd099dad2f1e3ae790243b4f6d6cfb12e52b))
|
|
504
|
+
|
|
505
|
+
## [2.55.3](https://github.com/redtidev1918/TelePost/compare/v2.55.2...v2.55.3) (2026-09-20)
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
### Bug Fixes
|
|
509
|
+
|
|
510
|
+
* **bot:** preserve command menu and miniapp entry ([#208](https://github.com/redtidev1918/TelePost/issues/208)) ([a913e6d](https://github.com/redtidev1918/TelePost/commit/a913e6d96b90fb0c1d3d8b8ae0c2fe5a1fceeb76))
|
|
511
|
+
|
|
512
|
+
## [2.55.2](https://github.com/redtidev1918/TelePost/compare/v2.55.1...v2.55.2) (2026-09-20)
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
### Bug Fixes
|
|
516
|
+
|
|
517
|
+
* **bot:** pass menu button by keyword ([#206](https://github.com/redtidev1918/TelePost/issues/206)) ([6b961be](https://github.com/redtidev1918/TelePost/commit/6b961bedee7be5eab182e460cb6eb3c0c984d543))
|
|
518
|
+
|
|
519
|
+
## [2.55.1](https://github.com/redtidev1918/TelePost/compare/v2.55.0...v2.55.1) (2026-09-20)
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
### Bug Fixes
|
|
523
|
+
|
|
524
|
+
* **ux:** align previews, restore menu, add bulk history delete ([#204](https://github.com/redtidev1918/TelePost/issues/204)) ([6ce5a4e](https://github.com/redtidev1918/TelePost/commit/6ce5a4ecf94b7c16cda654617a609270404e42dc))
|
|
525
|
+
|
|
526
|
+
## [2.55.0](https://github.com/redtidev1918/TelePost/compare/v2.54.2...v2.55.0) (2026-09-20)
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
### Features
|
|
530
|
+
|
|
531
|
+
* **api:** accept media assets via multipart ([#202](https://github.com/redtidev1918/TelePost/issues/202)) ([850e298](https://github.com/redtidev1918/TelePost/commit/850e29868368bd548ea7e71e9cd6aa11982cd0da))
|
|
532
|
+
|
|
533
|
+
## [2.54.2](https://github.com/redtidev1918/TelePost/compare/v2.54.1...v2.54.2) (2026-09-20)
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
### Bug Fixes
|
|
537
|
+
|
|
538
|
+
* **stats:** accept context in reaction handler ([#200](https://github.com/redtidev1918/TelePost/issues/200)) ([9679248](https://github.com/redtidev1918/TelePost/commit/9679248a98ef84d584b06ab156ed13376785b374))
|
|
539
|
+
|
|
540
|
+
## [2.54.1](https://github.com/redtidev1918/TelePost/compare/v2.54.0...v2.54.1) (2026-09-20)
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
### Bug Fixes
|
|
544
|
+
|
|
545
|
+
* **reviews:** strip HTML from note at insert (Pixiv <br> leak) ([#196](https://github.com/redtidev1918/TelePost/issues/196)) ([5371689](https://github.com/redtidev1918/TelePost/commit/5371689483c4a505bb207d72d79681991aba417b))
|
|
546
|
+
|
|
547
|
+
## [2.54.0](https://github.com/redtidev1918/TelePost/compare/v2.53.0...v2.54.0) (2026-09-19)
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
### Features
|
|
551
|
+
|
|
552
|
+
* **stats:** hide views/forwards entirely; Step 14 reuse test ([#194](https://github.com/redtidev1918/TelePost/issues/194)) ([32e89c8](https://github.com/redtidev1918/TelePost/commit/32e89c85ccb6ac11388cbc3cb782c9740776c23a))
|
|
553
|
+
|
|
554
|
+
## [2.53.0](https://github.com/redtidev1918/TelePost/compare/v2.52.0...v2.53.0) (2026-09-19)
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
### Features
|
|
558
|
+
|
|
559
|
+
* **stats:** reaction-based heat from message_reaction_count ([#192](https://github.com/redtidev1918/TelePost/issues/192)) ([84f6aa1](https://github.com/redtidev1918/TelePost/commit/84f6aa1ff7cabffc38defe39a7e625f88a3e6102))
|
|
560
|
+
|
|
561
|
+
## [2.52.0](https://github.com/redtidev1918/TelePost/compare/v2.51.0...v2.52.0) (2026-09-19)
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
### Features
|
|
565
|
+
|
|
566
|
+
* **delivery:** Step 12/13 planner adoption + TelegramMediaCache capture ([#190](https://github.com/redtidev1918/TelePost/issues/190)) ([c071e1a](https://github.com/redtidev1918/TelePost/commit/c071e1aee7bfae8b402d27c1a1f7ed74cd94ff08))
|
|
567
|
+
|
|
568
|
+
## [2.51.0](https://github.com/redtidev1918/TelePost/compare/v2.50.0...v2.51.0) (2026-09-19)
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
### Features
|
|
572
|
+
|
|
573
|
+
* **delivery:** Step 12 TelegramMediaCache ([ffbc20f](https://github.com/redtidev1918/TelePost/commit/ffbc20fe1b593a9ca2c6eb7c65f083887134a501))
|
|
574
|
+
* **delivery:** Step 12 TelegramMediaCache foundation ([21a1122](https://github.com/redtidev1918/TelePost/commit/21a1122c82ef4a08327ca118078f2c32ce183494))
|
|
575
|
+
|
|
576
|
+
## [2.50.0](https://github.com/redtidev1918/TelePost/compare/v2.49.0...v2.50.0) (2026-09-19)
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
### Features
|
|
580
|
+
|
|
581
|
+
* **delivery:** Step 11 DeliveryPlanner ([878c75d](https://github.com/redtidev1918/TelePost/commit/878c75d82ccce7c5bcdd52464a489e28c7ed78e7))
|
|
582
|
+
* **delivery:** Step 11 DeliveryPlanner foundation ([fab63b6](https://github.com/redtidev1918/TelePost/commit/fab63b6400cc3c46d662c81d4a451b6dca4aafbd))
|
|
583
|
+
|
|
584
|
+
## [2.49.0](https://github.com/redtidev1918/TelePost/compare/v2.48.0...v2.49.0) (2026-09-19)
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
### Features
|
|
588
|
+
|
|
589
|
+
* **api:** delivery asset contract (Step 10) ([ce4087b](https://github.com/redtidev1918/TelePost/commit/ce4087b02d5264563ca0e44ac26c39aaff2ce487))
|
|
590
|
+
* **api:** introduce delivery asset contract (Step 10) ([7a5b56e](https://github.com/redtidev1918/TelePost/commit/7a5b56e16e098a72fefe8671a219357c502e2985))
|
|
591
|
+
|
|
592
|
+
## [2.48.0](https://github.com/redtidev1918/TelePost/compare/v2.47.0...v2.48.0) (2026-09-19)
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
### Features
|
|
596
|
+
|
|
597
|
+
* **miniapp:** soft-delete own submission history ([2c286d3](https://github.com/redtidev1918/TelePost/commit/2c286d3eccb3da5243a213af0e4d4ce50e662a16))
|
|
598
|
+
|
|
599
|
+
## [2.47.0](https://github.com/redtidev1918/TelePost/compare/v2.46.0...v2.47.0) (2026-09-19)
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
### Features
|
|
603
|
+
|
|
604
|
+
* **miniapp:** Admin Control Plane panel (status/policy/roles/blacklist) ([5adaa85](https://github.com/redtidev1918/TelePost/commit/5adaa85a7266bca24f5e1eab28b814b662f15ff3))
|
|
605
|
+
|
|
606
|
+
## [2.46.0](https://github.com/redtidev1918/TelePost/compare/v2.45.2...v2.46.0) (2026-09-19)
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
### Features
|
|
610
|
+
|
|
611
|
+
* **rbac:** SQLite role bindings for Admin Control Plane ([#179](https://github.com/redtidev1918/TelePost/issues/179)) ([d62ab71](https://github.com/redtidev1918/TelePost/commit/d62ab715e0c5d258c04348d54540d80d0bd8a50d))
|
|
612
|
+
|
|
613
|
+
## [2.45.2](https://github.com/redtidev1918/TelePost/compare/v2.45.1...v2.45.2) (2026-09-19)
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
### Bug Fixes
|
|
617
|
+
|
|
618
|
+
* **miniapp:** let reviewers/admins submit alongside review queue ([#177](https://github.com/redtidev1918/TelePost/issues/177)) ([855de4c](https://github.com/redtidev1918/TelePost/commit/855de4c9bcc3df9c4c2cd48a100ef19cb0f3cfec))
|
|
619
|
+
|
|
620
|
+
## [2.45.1](https://github.com/redtidev1918/TelePost/compare/v2.45.0...v2.45.1) (2026-09-18)
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
### Bug Fixes
|
|
624
|
+
|
|
625
|
+
* **chat:** add /cancel to /about quick commands ([350d370](https://github.com/redtidev1918/TelePost/commit/350d370c6538db8d8ec7b35d8debc185d0410740))
|
|
626
|
+
|
|
627
|
+
## [2.45.0](https://github.com/redtidev1918/TelePost/compare/v2.44.0...v2.45.0) (2026-09-18)
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
### Features
|
|
631
|
+
|
|
632
|
+
* **chat:** register /about and /stats commands ([c1dcbc8](https://github.com/redtidev1918/TelePost/commit/c1dcbc8056aad8583b7cd4b61dcd9da16bd0c513))
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
### Bug Fixes
|
|
636
|
+
|
|
637
|
+
* **chat:** keep /commands clickable by removing <code> wrappers ([654d983](https://github.com/redtidev1918/TelePost/commit/654d9839c99b450aef38e20b6e04dee24f7f5db8))
|
|
638
|
+
|
|
639
|
+
## [2.44.0](https://github.com/redtidev1918/TelePost/compare/v2.43.0...v2.44.0) (2026-09-18)
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
### Features
|
|
643
|
+
|
|
644
|
+
* **chat:** redesign private-chat submission copy and flow guidance ([114ed64](https://github.com/redtidev1918/TelePost/commit/114ed641d264914533ac9705283d21e1f73bbfbd))
|
|
645
|
+
|
|
646
|
+
## [2.43.0](https://github.com/redtidev1918/TelePost/compare/v2.42.0...v2.43.0) (2026-09-18)
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
### Features
|
|
650
|
+
|
|
651
|
+
* **miniapp:** split user space and admin space (distinct preview/send UX) ([dafaa0a](https://github.com/redtidev1918/TelePost/commit/dafaa0a304c5e09abc366a51f1ad25e5c2d4f9df))
|
|
652
|
+
* **miniapp:** split user space and admin space, distinct preview/send UX ([c3641e1](https://github.com/redtidev1918/TelePost/commit/c3641e1f7250c0b69360156974a84a5380a044b3))
|
|
653
|
+
|
|
654
|
+
## [2.42.0](https://github.com/redtidev1918/TelePost/compare/v2.41.0...v2.42.0) (2026-09-18)
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
### Features
|
|
658
|
+
|
|
659
|
+
* **chat:** send real media preview in private chat (distinct from Mini App local preview) ([ba65182](https://github.com/redtidev1918/TelePost/commit/ba65182e0564472f8ae4ba1f397d98b22993c740))
|
|
660
|
+
* **chat:** send real media preview in private chat (distinct from Mini App) ([0b96ca3](https://github.com/redtidev1918/TelePost/commit/0b96ca3661f67de27e469703747c832a63115eff))
|
|
661
|
+
|
|
662
|
+
## [2.41.0](https://github.com/redtidev1918/TelePost/compare/v2.40.1...v2.41.0) (2026-09-18)
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
### Features
|
|
666
|
+
|
|
667
|
+
* **chat:** polished private-chat submission UX (prompts, formatting, progress, preview) ([263e98d](https://github.com/redtidev1918/TelePost/commit/263e98dbbd3e5f552e32a21e6fe670d3576768cb))
|
|
668
|
+
* **chat:** polished private-chat submission UX (prompts, formatting, progress, preview) ([e93d7a5](https://github.com/redtidev1918/TelePost/commit/e93d7a598929cfad181a7fb0b28809ec4376b2be))
|
|
669
|
+
|
|
670
|
+
## [2.40.1](https://github.com/redtidev1918/TelePost/compare/v2.40.0...v2.40.1) (2026-09-18)
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
### Bug Fixes
|
|
674
|
+
|
|
675
|
+
* **recovery:** use UUID format PixivFlow accepts and surface real failure reason ([ae25cd0](https://github.com/redtidev1918/TelePost/commit/ae25cd033e0e780f7fcb8dd9e625a5b89fae454a))
|
|
676
|
+
|
|
677
|
+
## [2.40.0](https://github.com/redtidev1918/TelePost/compare/v2.39.1...v2.40.0) (2026-09-18)
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
### Features
|
|
681
|
+
|
|
682
|
+
* **ops:** /status and /pin_status Telegram commands ([#163](https://github.com/redtidev1918/TelePost/issues/163)) ([fa4ca7b](https://github.com/redtidev1918/TelePost/commit/fa4ca7b465f824f7b130b815c4fb67a1a98a9b5c))
|
|
683
|
+
|
|
684
|
+
## [2.39.1](https://github.com/redtidev1918/TelePost/compare/v2.39.0...v2.39.1) (2026-09-18)
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
### Bug Fixes
|
|
688
|
+
|
|
689
|
+
* **ops:** schedule/status + watchdog use latest-notification status ([#161](https://github.com/redtidev1918/TelePost/issues/161)) ([8d8c30b](https://github.com/redtidev1918/TelePost/commit/8d8c30bf37243a478ef928ab0b6239b2e7b535ac))
|
|
690
|
+
|
|
691
|
+
## [2.39.0](https://github.com/redtidev1918/TelePost/compare/v2.38.0...v2.39.0) (2026-09-18)
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
### Features
|
|
695
|
+
|
|
696
|
+
* **ops:** public /status page + schedule observability docs ([#159](https://github.com/redtidev1918/TelePost/issues/159)) ([3ed5faf](https://github.com/redtidev1918/TelePost/commit/3ed5fafcf2cb701b3bee914f8b036c8a02053411))
|
|
697
|
+
|
|
698
|
+
## [2.38.0](https://github.com/redtidev1918/TelePost/compare/v2.37.0...v2.38.0) (2026-09-18)
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
### Features
|
|
702
|
+
|
|
703
|
+
* **ops:** schedule watchdog + preannouncement + status ([#157](https://github.com/redtidev1918/TelePost/issues/157)) ([452dc0b](https://github.com/redtidev1918/TelePost/commit/452dc0b319b8da1a80dcd123136ad61773960be7))
|
|
704
|
+
|
|
705
|
+
## [2.37.0](https://github.com/redtidev1918/TelePost/compare/v2.36.0...v2.37.0) (2026-09-18)
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
### Features
|
|
709
|
+
|
|
710
|
+
* **schedule-ux:** render candidate inventory 待发池 line ([627c195](https://github.com/redtidev1918/TelePost/commit/627c1955609345aaac7906b0ba1f848217e18e47))
|
|
711
|
+
* **schedule-ux:** render 待发池 inventory line ([6d1954b](https://github.com/redtidev1918/TelePost/commit/6d1954b66ffbc0a70de9667bf2355ae85e42243a))
|
|
712
|
+
|
|
713
|
+
## [2.36.0](https://github.com/redtidev1918/TelePost/compare/v2.35.1...v2.36.0) (2026-09-18)
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
### Features
|
|
717
|
+
|
|
718
|
+
* **observability:** candidate supply funnel + target-labeled recovery buttons ([#153](https://github.com/redtidev1918/TelePost/issues/153)) ([8810f73](https://github.com/redtidev1918/TelePost/commit/8810f73008ec07492093bf86b14df375cc177ac7))
|
|
719
|
+
|
|
720
|
+
## [2.35.1](https://github.com/redtidev1918/TelePost/compare/v2.35.0...v2.35.1) (2026-09-17)
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
### Bug Fixes
|
|
724
|
+
|
|
725
|
+
* **recovery:** PixivFlow UUID format + real error surfacing ([#151](https://github.com/redtidev1918/TelePost/issues/151)) ([219c9a7](https://github.com/redtidev1918/TelePost/commit/219c9a7f025db561c59fa0d5188f8ae069f69c3d))
|
|
726
|
+
|
|
727
|
+
## [2.35.0](https://github.com/redtidev1918/TelePost/compare/v2.34.0...v2.35.0) (2026-09-18)
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
### Features
|
|
731
|
+
|
|
732
|
+
* 投稿审核按来源可信度决定:API 自动化投稿固定进入审核;Mini App 由独立的 MINIAPP_REVIEW_REQUIRED 控制;聊天直发维持默认直接发布。审核通知与审核策略分离,所有来源都进入管理员通知 ([#148](https://github.com/redtidev1918/TelePost/issues/148))
|
|
733
|
+
|
|
734
|
+
## [2.34.0](https://github.com/redtidev1918/TelePost/compare/v2.33.0...v2.34.0) (2026-09-18)
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
### Features
|
|
738
|
+
|
|
739
|
+
* 管理员控制面:统一投稿通知(来源 / 投稿人 / 状态 / 链接)、快速封禁用户与禁用 API、恢复失败结构化提示;治理基于 actor identity,不依赖审核记录 ([#146](https://github.com/redtidev1918/TelePost/issues/146))
|
|
740
|
+
|
|
741
|
+
## [2.33.0](https://github.com/redtidev1918/TelePost/compare/v2.32.0...v2.33.0) (2026-09-17)
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
### Dependencies
|
|
745
|
+
|
|
746
|
+
* bump `telepress` 0.6.1 → 0.9.0 (rich novel Telegraph preview: local Catbox image upload + inline Telegraph renderer) ([#144](https://github.com/redtidev1918/TelePost/issues/144)) ([94650f3](https://github.com/redtidev1918/TelePost/commit/94650f36def6e40cff9e819099258e4b7bba3623))
|
|
747
|
+
|
|
748
|
+
## [2.32.0](https://github.com/redtidev1918/TelePost/compare/v2.31.4...v2.32.0) (2026-09-17)
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
### Features
|
|
752
|
+
|
|
753
|
+
* **review:** submission resubmit outcome model ([#141](https://github.com/redtidev1918/TelePost/issues/141)) ([533824b](https://github.com/redtidev1918/TelePost/commit/533824b6042c119c3e512e32ad3ed8f8116a5c6a))
|
|
754
|
+
|
|
755
|
+
## [2.31.4](https://github.com/redtidev1918/TelePost/compare/v2.31.3...v2.31.4) (2026-09-16)
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
### Bug Fixes
|
|
759
|
+
|
|
760
|
+
* semantic channel navigation footer and tag separator UX ([#137](https://github.com/redtidev1918/TelePost/issues/137)) ([#137](https://github.com/redtidev1918/TelePost/issues/137)) ([fa13b44](https://github.com/redtidev1918/TelePost/commit/fa13b44f82aab7588e80ec494be2121f0eba14aa))
|
|
761
|
+
|
|
762
|
+
## [2.31.3](https://github.com/redtidev1918/TelePost/compare/v2.31.2...v2.31.3) (2026-09-16)
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
### Bug Fixes
|
|
766
|
+
|
|
767
|
+
* make submission updates exclusive ([#135](https://github.com/redtidev1918/TelePost/issues/135)) ([c42cfe4](https://github.com/redtidev1918/TelePost/commit/c42cfe47fb217542c589c770f3a825b87a1b9042))
|
|
768
|
+
|
|
769
|
+
## [2.31.2](https://github.com/redtidev1918/TelePost/compare/v2.31.1...v2.31.2) (2026-09-15)
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
### Bug Fixes
|
|
773
|
+
|
|
774
|
+
* **publication:** notify-once, preview link, review-CTA, discussion-root ([#132](https://github.com/redtidev1918/TelePost/issues/132)) ([f16ae04](https://github.com/redtidev1918/TelePost/commit/f16ae040c0e49f5fab34ed1e55ba7aefbae12a23))
|
|
775
|
+
|
|
776
|
+
## [2.31.1](https://github.com/redtidev1918/TelePost/compare/v2.31.0...v2.31.1) (2026-09-15)
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
### Bug Fixes
|
|
780
|
+
|
|
781
|
+
* **run:** propagate per-bot MINIAPP_SUBMIT_CTA into child env ([#130](https://github.com/redtidev1918/TelePost/issues/130)) ([e20f69e](https://github.com/redtidev1918/TelePost/commit/e20f69ea29b3506280386fe0b22e89db0624b202))
|
|
782
|
+
|
|
783
|
+
## [2.31.0](https://github.com/redtidev1918/TelePost/compare/v2.30.0...v2.31.0) (2026-09-15)
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
### Features
|
|
787
|
+
|
|
788
|
+
* **publication:** optional TelePress novel preview enrichment ([#127](https://github.com/redtidev1918/TelePost/issues/127)) ([8413430](https://github.com/redtidev1918/TelePost/commit/84134307ef445d03375ec389bdf247ad67706862))
|
|
789
|
+
* **review-cta:** review/main post submission CTA as inline URL button ([#128](https://github.com/redtidev1918/TelePost/issues/128)) ([6da1afe](https://github.com/redtidev1918/TelePost/commit/6da1afe91679a9be3743ffc51e11d18e40c9fd12))
|
|
790
|
+
|
|
791
|
+
## [2.30.0](https://github.com/redtidev1918/TelePost/compare/v2.29.0...v2.30.0) (2026-09-15)
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
### Features
|
|
795
|
+
|
|
796
|
+
* **publication:** channel submission CTA opens owning bot's Mini App submit page ([#125](https://github.com/redtidev1918/TelePost/issues/125)) ([31602e9](https://github.com/redtidev1918/TelePost/commit/31602e91851e3fa9341108f40de9de6f0c0d66b6))
|
|
797
|
+
|
|
798
|
+
## [2.29.0](https://github.com/redtidev1918/TelePost/compare/v2.28.0...v2.29.0) (2026-09-15)
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
### Features
|
|
802
|
+
|
|
803
|
+
* **recovery-ux, packing-ssot:** manual recovery buttons + reason rendering + media capacity SSOT ([#123](https://github.com/redtidev1918/TelePost/issues/123)) ([56fff95](https://github.com/redtidev1918/TelePost/commit/56fff95424bec25e6ac389f9dd9c05beb7ec8ce5))
|
|
804
|
+
|
|
805
|
+
## [2.28.0](https://github.com/redtidev1918/TelePost/compare/v2.27.4...v2.28.0) (2026-09-15)
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
### Features
|
|
809
|
+
|
|
810
|
+
* **publication:** harden human submission delivery ([#121](https://github.com/redtidev1918/TelePost/issues/121)) ([329d1eb](https://github.com/redtidev1918/TelePost/commit/329d1eb8ba9697c5239333fcc39d320137b57d7d))
|
|
811
|
+
|
|
812
|
+
## [2.27.4](https://github.com/redtidev1918/TelePost/compare/v2.27.3...v2.27.4) (2026-09-15)
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
### Bug Fixes
|
|
816
|
+
|
|
817
|
+
* postRelease deploy-docs dispatches on default branch (Pages needs branch ref) ([467a97e](https://github.com/redtidev1918/TelePost/commit/467a97eb1f6fc606f5f7804abfe86700e8c1d788))
|
|
818
|
+
* **refetch:** generation replacement — harden stale guard, invalidate old card ([#120](https://github.com/redtidev1918/TelePost/issues/120)) ([0caef1a](https://github.com/redtidev1918/TelePost/commit/0caef1a298e93cb1fcfbbcadc7b40008e5db9585))
|
|
819
|
+
|
|
820
|
+
## [2.27.3](https://github.com/redtidev1918/TelePost/compare/v2.27.2...v2.27.3) (2026-09-15)
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
### Bug Fixes
|
|
824
|
+
|
|
825
|
+
* **publication:** presentation SSOT — media actions and submitter identity ([#117](https://github.com/redtidev1918/TelePost/issues/117)) ([5bd77e7](https://github.com/redtidev1918/TelePost/commit/5bd77e7a9cbe4f14f741608888d269a00ba3b057))
|
|
826
|
+
|
|
827
|
+
## [2.27.2](https://github.com/redtidev1918/TelePost/compare/v2.27.1...v2.27.2) (2026-09-15)
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
### Bug Fixes
|
|
831
|
+
|
|
832
|
+
* **editorial:** draft edits are PATCH semantics — accumulate on the draft ([#115](https://github.com/redtidev1918/TelePost/issues/115)) ([c6157ab](https://github.com/redtidev1918/TelePost/commit/c6157ab0c00362b2031f7e2b42c95afb8d0c7f25))
|
|
833
|
+
|
|
834
|
+
## [2.27.1](https://github.com/redtidev1918/TelePost/compare/v2.27.0...v2.27.1) (2026-09-15)
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
### Bug Fixes
|
|
838
|
+
|
|
839
|
+
* **editorial:** empty-chain reviews are their own chain head ([#113](https://github.com/redtidev1918/TelePost/issues/113)) ([6849803](https://github.com/redtidev1918/TelePost/commit/6849803d24e6beef74f4c3a1be10fab7c882c3cf))
|
|
840
|
+
|
|
841
|
+
## [2.27.0](https://github.com/redtidev1918/TelePost/compare/v2.26.1...v2.27.0) (2026-09-15)
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
### Features
|
|
845
|
+
|
|
846
|
+
* **publication:** reviewer-edited publication + submitter publication notification ([#110](https://github.com/redtidev1918/TelePost/issues/110)) ([3b14613](https://github.com/redtidev1918/TelePost/commit/3b146132901ef3dc1dfc36aa94a0697625df420f))
|
|
847
|
+
|
|
848
|
+
## [2.26.1](https://github.com/redtidev1918/TelePost/compare/v2.26.0...v2.26.1) (2026-09-15)
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
### Bug Fixes
|
|
852
|
+
|
|
853
|
+
* refetch terminal visibility — obsolete outcome notifies, watchdog wakes + hard stalls ([#108](https://github.com/redtidev1918/TelePost/issues/108)) ([4dd0de7](https://github.com/redtidev1918/TelePost/commit/4dd0de767317935ce9ea7a672180581594c25f5c))
|
|
854
|
+
|
|
855
|
+
## [2.26.0](https://github.com/redtidev1918/TelePost/compare/v2.25.0...v2.26.0) (2026-09-14)
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
### Features
|
|
859
|
+
|
|
860
|
+
* local media preview, tag hint and explicit submission disposition ([#106](https://github.com/redtidev1918/TelePost/issues/106)) ([dee1e85](https://github.com/redtidev1918/TelePost/commit/dee1e859e826fa0098648360faa0cd71a236eb11))
|
|
861
|
+
|
|
862
|
+
## [2.25.0](https://github.com/redtidev1918/TelePost/compare/v2.24.2...v2.25.0) (2026-09-14)
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
### Features
|
|
866
|
+
|
|
867
|
+
* owner-safe media endpoints and attachment UI in the Mini App ([#104](https://github.com/redtidev1918/TelePost/issues/104)) ([62dea47](https://github.com/redtidev1918/TelePost/commit/62dea477037f55e7f1cf0041d59407f4a5f87f5e))
|
|
868
|
+
|
|
869
|
+
## [2.24.2](https://github.com/redtidev1918/TelePost/compare/v2.24.1...v2.24.2) (2026-09-14)
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
### Bug Fixes
|
|
873
|
+
|
|
874
|
+
* terminal schedule outcome notifications and remove ghost mention entities ([ae7e64b](https://github.com/redtidev1918/TelePost/commit/ae7e64b656f01b9bf7912aafc659f381083f4306))
|
|
875
|
+
|
|
876
|
+
## [2.24.1](https://github.com/redtidev1918/TelePost/compare/v2.24.0...v2.24.1) (2026-09-14)
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
### Bug Fixes
|
|
880
|
+
|
|
881
|
+
* **api:** own-submission detail 404 semantics ([80c07a9](https://github.com/redtidev1918/TelePost/commit/80c07a9d46c2e142a76f3f9eb3fdf77ceafdd074))
|
|
882
|
+
* **api:** own-submission detail returns 404 (not 409) for missing/not-owned rows ([0b7c989](https://github.com/redtidev1918/TelePost/commit/0b7c9895aa4c666a63b5060310ee2bf3a48c6429))
|
|
883
|
+
|
|
884
|
+
## [2.24.0](https://github.com/redtidev1918/TelePost/compare/v2.23.1...v2.24.0) (2026-09-14)
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
### Features
|
|
888
|
+
|
|
889
|
+
* **identity:** idempotent audited backfill for legacy submission attribution ([bf02eab](https://github.com/redtidev1918/TelePost/commit/bf02eab3838e2ea501e0c94f74be9a0093f6cf20))
|
|
890
|
+
* **identity:** separate actor, submitter and source for submission ownership ([a7a1d65](https://github.com/redtidev1918/TelePost/commit/a7a1d6522992c96e3c05a755e720c3f161072c52))
|
|
891
|
+
* **submissions:** logical human-owned submissions + admin service ([443586d](https://github.com/redtidev1918/TelePost/commit/443586d631838cf01a92d33dd89d0b127f3a23eb))
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
### Bug Fixes
|
|
895
|
+
|
|
896
|
+
* **webapp:** framework-first layout, Uppy React integration, logical Mine ([96f94af](https://github.com/redtidev1918/TelePost/commit/96f94af5ebe1557c67626c1d829d71aa71f167c0))
|
|
897
|
+
* **webapp:** layout safe-area, Uppy React upload, logical My Submissions ([1e312b2](https://github.com/redtidev1918/TelePost/commit/1e312b2abc104bb8cf0e44aeeeb27ed4b104650d))
|
|
898
|
+
* **webapp:** measure BottomNav with a callback ref (mounts after auth) ([f13e93f](https://github.com/redtidev1918/TelePost/commit/f13e93fba800678dd154d9e0bae0420f451458f9))
|
|
899
|
+
|
|
900
|
+
## [2.23.1](https://github.com/redtidev1918/TelePost/compare/v2.23.0...v2.23.1) (2026-09-14)
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
### Bug Fixes
|
|
904
|
+
|
|
905
|
+
* **refetch:** provenance-validated replacement + durable-slot watchdog; webapp SDK launch initData ([9c822a8](https://github.com/redtidev1918/TelePost/commit/9c822a8393fdda9c462e11d67e335ab3cb361697))
|
|
906
|
+
* **refetch:** reconcile admitted attempts against PixivFlow durable slot ([ad91d9a](https://github.com/redtidev1918/TelePost/commit/ad91d9ae73577464919eb7876ec30a81af9d5a48))
|
|
907
|
+
* **refetch:** validate provenance and finalize replacement after staging ([4944454](https://github.com/redtidev1918/TelePost/commit/49444548e852408ee5e24bcd6e454c40593a33eb))
|
|
908
|
+
* **webapp:** read Telegram launch initData from the SDK, classify auth errors ([5728a68](https://github.com/redtidev1918/TelePost/commit/5728a6892284d52c9936cc06aae4572293e4de3c))
|
|
909
|
+
|
|
910
|
+
## [2.23.0](https://github.com/redtidev1918/TelePost/compare/v2.22.0...v2.23.0) (2026-09-14)
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
### Features
|
|
914
|
+
|
|
915
|
+
* **publish:** append 点击投稿 channel footer link on real publish ([b557e06](https://github.com/redtidev1918/TelePost/commit/b557e0664c2c266698d01526223aa8c51bfce3d3))
|
|
916
|
+
|
|
917
|
+
## [2.22.0](https://github.com/redtidev1918/TelePost/compare/v2.21.1...v2.22.0) (2026-09-14)
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
### Features
|
|
921
|
+
|
|
922
|
+
* **review:** refetch progress reminders and stale-timeout failure notice ([#91](https://github.com/redtidev1918/TelePost/issues/91)) ([af83951](https://github.com/redtidev1918/TelePost/commit/af83951992738aa1788751f8f44f744d7db418b0))
|
|
923
|
+
|
|
924
|
+
## [2.21.1](https://github.com/redtidev1918/TelePost/compare/v2.21.0...v2.21.1) (2026-09-14)
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
### Bug Fixes
|
|
928
|
+
|
|
929
|
+
* **webapp:** use per-bot API prefix from ?bot= launch param ([#89](https://github.com/redtidev1918/TelePost/issues/89)) ([5162182](https://github.com/redtidev1918/TelePost/commit/5162182f47d7c479895d9d3ea18c099d643a51bf))
|
|
930
|
+
|
|
931
|
+
## [2.21.0](https://github.com/redtidev1918/TelePost/compare/v2.20.4...v2.21.0) (2026-09-14)
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
### Features
|
|
935
|
+
|
|
936
|
+
* **review:** auto-clean superseded old review cards after retention ([#87](https://github.com/redtidev1918/TelePost/issues/87)) ([ac53e30](https://github.com/redtidev1918/TelePost/commit/ac53e30dda6641913036d832bd07c33800c42e8f))
|
|
937
|
+
|
|
938
|
+
## [2.20.4](https://github.com/redtidev1918/TelePost/compare/v2.20.3...v2.20.4) (2026-09-13)
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
### Bug Fixes
|
|
942
|
+
|
|
943
|
+
* **webapp:** override valibot to 1.5.0 (ReDoS GHSA-vqpr-j7v3-hqw9) ([#85](https://github.com/redtidev1918/TelePost/issues/85)) ([fc0f3a8](https://github.com/redtidev1918/TelePost/commit/fc0f3a81978ca247ed5a5bd31abea73d51d3835d))
|
|
944
|
+
|
|
945
|
+
## [2.20.3](https://github.com/redtidev1918/TelePost/compare/v2.20.2...v2.20.3) (2026-09-13)
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
### Bug Fixes
|
|
949
|
+
|
|
950
|
+
* **api:** Mini App human review writes are not gated by readonly mode ([#83](https://github.com/redtidev1918/TelePost/issues/83)) ([56466c7](https://github.com/redtidev1918/TelePost/commit/56466c7a409010cb50e5dc77718c9b1c517244d9))
|
|
951
|
+
|
|
952
|
+
## [2.20.2](https://github.com/redtidev1918/TelePost/compare/v2.20.1...v2.20.2) (2026-09-13)
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
### Bug Fixes
|
|
956
|
+
|
|
957
|
+
* **webapp:** serve /app/* via one handler (static + SPA fallback) ([#81](https://github.com/redtidev1918/TelePost/issues/81)) ([241643b](https://github.com/redtidev1918/TelePost/commit/241643b39acf5f594823e54097019c9e644d1240))
|
|
958
|
+
|
|
959
|
+
## [2.20.1](https://github.com/redtidev1918/TelePost/compare/v2.20.0...v2.20.1) (2026-09-13)
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
### Bug Fixes
|
|
963
|
+
|
|
964
|
+
* **docker:** webapp-builder needs api/openapi.yaml for generate:api ([#79](https://github.com/redtidev1918/TelePost/issues/79)) ([2852572](https://github.com/redtidev1918/TelePost/commit/2852572582236bc08359d205539e179fb4437d78))
|
|
965
|
+
|
|
966
|
+
## [2.20.0](https://github.com/redtidev1918/TelePost/compare/v2.19.0...v2.20.0) (2026-09-13)
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
### Features
|
|
970
|
+
|
|
971
|
+
* **webapp:** same-domain static hosting for the Mini App (dist → /app/) ([#77](https://github.com/redtidev1918/TelePost/issues/77)) ([9c718e0](https://github.com/redtidev1918/TelePost/commit/9c718e02ad372a74769be77a583348a17b961bfd))
|
|
972
|
+
|
|
973
|
+
## [2.19.0](https://github.com/redtidev1918/TelePost/compare/v2.18.0...v2.19.0) (2026-09-13)
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
### Features
|
|
977
|
+
|
|
978
|
+
* **miniapp:** Telegram Mini App submission & moderation platform ([#74](https://github.com/redtidev1918/TelePost/issues/74)) ([0d05ff2](https://github.com/redtidev1918/TelePost/commit/0d05ff2fbe6934c01df830c9d425f534919113c2))
|
|
979
|
+
|
|
980
|
+
## [2.18.0](https://github.com/redtidev1918/TelePost/compare/v2.17.6...v2.18.0) (2026-09-13)
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
### Features
|
|
984
|
+
|
|
985
|
+
* **review:** remote, repeatable, stateful review refetch ([#73](https://github.com/redtidev1918/TelePost/issues/73)) ([80ee189](https://github.com/redtidev1918/TelePost/commit/80ee1899a22a185cc12c012e8b4f3da986e050d0))
|
|
986
|
+
|
|
987
|
+
## [2.17.6](https://github.com/redtidev1918/TelePost/compare/v2.17.5...v2.17.6) (2026-09-13)
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
### Bug Fixes
|
|
991
|
+
|
|
992
|
+
* **delivery:** classify media from the final artifact, not from source metadata ([8f9519f](https://github.com/redtidev1918/TelePost/commit/8f9519ff3d5600a03c23e3c019073f7045f6e29f))
|
|
993
|
+
* **delivery:** keep artwork order in album plans and retry rejected photos once ([6196833](https://github.com/redtidev1918/TelePost/commit/619683397778e9dbdc1c686c003e137b30f1b413))
|
|
994
|
+
* **delivery:** 依据最终产物分类媒体,让压缩后达标的大图回到 photo 而不是 document ([87fbd07](https://github.com/redtidev1918/TelePost/commit/87fbd0716a96f5c144c783d14c94de5fb72d93e5))
|
|
995
|
+
|
|
996
|
+
## [2.17.5](https://github.com/redtidev1918/TelePost/compare/v2.17.4...v2.17.5) (2026-09-12)
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
### Bug Fixes
|
|
1000
|
+
|
|
1001
|
+
* **submission:** keep slow submissions decidable and idempotent ([#67](https://github.com/redtidev1918/TelePost/issues/67)) ([ca72763](https://github.com/redtidev1918/TelePost/commit/ca72763038c294f590996974ae13f97dd5992c8e))
|
|
1002
|
+
|
|
1003
|
+
## [2.17.4](https://github.com/redtidev1918/TelePost/compare/v2.17.3...v2.17.4) (2026-09-12)
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
### Bug Fixes
|
|
1007
|
+
|
|
1008
|
+
* **security:** 脱敏 main 上的生产 chatId 并加入全历史凭据门禁 ([cde20e2](https://github.com/redtidev1918/TelePost/commit/cde20e20096f34db6f1d93185dfc65b07b768597))
|
|
1009
|
+
* **security:** 补齐 Telegram bot token / chat id 检测规则 ([ba91b0e](https://github.com/redtidev1918/TelePost/commit/ba91b0efc9cec41077c57da765816d0303c4ba71))
|
|
1010
|
+
|
|
1011
|
+
## [2.17.3](https://github.com/redtidev1918/TelePost/compare/v2.17.2...v2.17.3) (2026-09-11)
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
### Bug Fixes
|
|
1015
|
+
|
|
1016
|
+
* **handlers:** 菜单命中后中止后续 group,消除「关于」等按钮的双重回复 ([#63](https://github.com/redtidev1918/TelePost/issues/63)) ([f1f380b](https://github.com/redtidev1918/TelePost/commit/f1f380b25f219515931300e3b6162dda52d855ed))
|
|
1017
|
+
|
|
1018
|
+
## [2.17.2](https://github.com/redtidev1918/TelePost/compare/v2.17.1...v2.17.2) (2026-09-10)
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
### Bug Fixes
|
|
1022
|
+
|
|
1023
|
+
* **router:** probe PixivFlow trigger health ([#54](https://github.com/redtidev1918/TelePost/issues/54)) ([e3eff81](https://github.com/redtidev1918/TelePost/commit/e3eff810e339b3c77376e13c6e46d4765bdbb186))
|
|
1024
|
+
|
|
1025
|
+
## [2.17.1](https://github.com/redtidev1918/TelePost/compare/v2.17.0...v2.17.1) (2026-09-10)
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
### Fixed
|
|
1029
|
+
|
|
1030
|
+
- 宽 + 高超过 Telegram 照片上限(10000)的图片不再按照片发送而失败:体积很小但尺寸很大的原图会自动改为以原图文档发送,投稿与审核照常进行。
|
|
1031
|
+
- 每张图片的处理结果都会写进审计记录,包含这次按什么方式发送以及原因(例如「尺寸超过照片上限」),便于事后核对。
|
|
1032
|
+
|
|
1033
|
+
## [2.17.0](https://github.com/redtidev1918/TelePost/compare/v2.16.1...v2.17.0) (2026-09-10)
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
### Added
|
|
1037
|
+
|
|
1038
|
+
- 投稿、审核、发布全流程留痕:每一步的状态变化都写入本机审计库,日志轮转或进程重启后依然可查,出问题能直接看到某次投稿卡在哪一环。
|
|
1039
|
+
- 同一次投稿在下载、投递、审核、发布之间用同一个标识串联,跨环节对账不再靠猜;「依赖尚未就绪」与「真正失败」分开记录,前者不消耗重试次数。
|
|
1040
|
+
- 每张图片单独留痕:记录尺寸、体积、解码预算、最终处理方式(原图直发 / 安全压缩 / 使用预览图 / 降级为原图文档)及原因,便于区分是资源不足还是素材本身的问题。
|
|
1041
|
+
- 审核与发布状态可直接查询,新增命令行工具查看某条审核的完整流水;当前运行的版本号与提交号在 `/version` 与 `/health` 中可见,便于确认线上跑的是哪个版本。
|
|
1042
|
+
- 发布包除原始可执行文件外,同时提供带版本号的 tar.gz / zip 压缩包。
|
|
1043
|
+
- 日志与审计记录中的令牌、密钥、请求头等敏感信息统一脱敏后再落盘。
|
|
1044
|
+
|
|
1045
|
+
## [2.16.1](https://github.com/redtidev1918/TelePost/compare/v2.16.0...v2.16.1) (2026-09-10)
|
|
1046
|
+
|
|
1047
|
+
### Fixed
|
|
1048
|
+
|
|
1049
|
+
- 图片在解码前按像素模式和尺寸执行资源预算;超预算原图不再进入 Pillow 全量解码,审核使用可选预览,最终发布安全降级为原图文档。
|
|
1050
|
+
- 图片压缩改为生成临时派生文件,原始素材保持不变,成功、失败和重试路径都会清理临时文件。
|
|
1051
|
+
- 审核记录先于 Telegram 预览落库;控制消息失败会补偿清理,进程重启会修复未完成记录,避免永久留下无按钮预览。
|
|
1052
|
+
- `/ready` 仅在数据库迁移、Bot、投稿与审核恢复完成后返回成功,供上游 outbox 冷启动屏障使用。
|
|
1053
|
+
|
|
1054
|
+
## [2.16.0](https://github.com/redtidev1918/TelePost/compare/v2.15.1...v2.16.0) (2026-09-09)
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
### Features
|
|
1058
|
+
|
|
1059
|
+
* **api:** idempotent direct publish + reuse envelope (idempotent_replay vs duplicate_existing), reconciliation lookup, fast startup, stable webhook secret ([91eaa48](https://github.com/redtidev1918/TelePost/commit/91eaa489d768839f15a7762b0273edd5742302cb))
|
|
1060
|
+
* **api:** idempotent direct publish + reuse envelope, /live /ready probes, fast startup, stable webhook secret ([9e4a861](https://github.com/redtidev1918/TelePost/commit/9e4a861f8449bc2521d3f99ced8169554328dd37))
|
|
1061
|
+
* **startup:** /live vs /ready probes, bounded router child-readiness gate, background post-ready init ([61ee99f](https://github.com/redtidev1918/TelePost/commit/61ee99ffc3ef2791f17593d1ebde86caad26bcb3))
|
|
1062
|
+
|
|
1063
|
+
## [2.15.1](https://github.com/redtidev1918/TelePost/compare/v2.15.0...v2.15.1) (2026-09-09)
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
### Bug Fixes
|
|
1067
|
+
|
|
1068
|
+
* **submit:** allow 100 files in chat uploads ([#25](https://github.com/redtidev1918/TelePost/issues/25)) ([9d7937a](https://github.com/redtidev1918/TelePost/commit/9d7937a2dd8f0cce4681d45b91a96d5153592a91))
|
|
1069
|
+
|
|
1070
|
+
## [2.15.0](https://github.com/redtidev1918/TelePost/compare/v2.14.0...v2.15.0) (2026-09-08)
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
### Features
|
|
1074
|
+
|
|
1075
|
+
* **review:** add AI review MCP facade ([62a2ae7](https://github.com/redtidev1918/TelePost/commit/62a2ae706f4110aaba1ca3c9f8862daffc8de9a9))
|
|
1076
|
+
|
|
1077
|
+
## [2.14.0](https://github.com/redtidev1918/TelePost/compare/v2.13.0...v2.14.0) (2026-09-08)
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
### Features
|
|
1081
|
+
|
|
1082
|
+
* **api:** generic bounded source provenance, replacing PixivFlow slot enum ([ee70b42](https://github.com/redtidev1918/TelePost/commit/ee70b42c6aa101235736cd19b094199954740516))
|
|
1083
|
+
|
|
1084
|
+
## [2.13.0](https://github.com/redtidev1918/TelePost/compare/v2.12.0...v2.13.0) (2026-09-08)
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
### Features
|
|
1088
|
+
|
|
1089
|
+
* **api:** label scheduled submissions with their slot + proxy internal trigger ([f7c3a5e](https://github.com/redtidev1918/TelePost/commit/f7c3a5ecdfbade1cbb6f557eb9ab522cee42c781))
|
|
1090
|
+
|
|
1091
|
+
## [2.12.0](https://github.com/redtidev1918/TelePost/compare/v2.11.2...v2.12.0) (2026-09-08)
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
### Features
|
|
1095
|
+
|
|
1096
|
+
* **review:** 点发布后立即显示「正在发布…」并移除按钮 ([1127628](https://github.com/redtidev1918/TelePost/commit/112762865a0422a0d52424f3fdaa281b7771d973))
|
|
1097
|
+
|
|
1098
|
+
## [2.11.2](https://github.com/redtidev1918/TelePost/compare/v2.11.1...v2.11.2) (2026-09-08)
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
### Bug Fixes
|
|
1102
|
+
|
|
1103
|
+
* **review:** 评论区发布完整回滚+自动重试+僵尸解锁+准确失败提示 ([068ad32](https://github.com/redtidev1918/TelePost/commit/068ad3296af69e4f0e5c94b265f9f2c48aac3a47))
|
|
1104
|
+
|
|
1105
|
+
## [2.11.1](https://github.com/redtidev1918/TelePost/compare/v2.11.0...v2.11.1) (2026-09-08)
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
### Bug Fixes
|
|
1109
|
+
|
|
1110
|
+
* **publish:** discussion 评论模式在非 Webhook 模式启动时明确告警 ([dbf0ab0](https://github.com/redtidev1918/TelePost/commit/dbf0ab0358b98471eee260fae05b7a3d42657df8))
|
|
1111
|
+
* **review:** 发布失败后主按钮显示为「🔄 重试发布」 ([33153d2](https://github.com/redtidev1918/TelePost/commit/33153d2468a0a5f5fe54ea6cac7fd125b8142345))
|
|
1112
|
+
|
|
1113
|
+
## [2.11.0](https://github.com/redtidev1918/TelePost/compare/v2.10.44...v2.11.0) (2026-09-08)
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
### Features
|
|
1117
|
+
|
|
1118
|
+
* discussion 模式把多图其余部分发到频道关联讨论组评论串 ([4925211](https://github.com/redtidev1918/TelePost/commit/4925211e8b57d3876ae7c9b9a5f634239996f175))
|
|
1119
|
+
|
|
1120
|
+
## [2.10.44](https://github.com/redtidev1918/TelePost/compare/v2.10.43...v2.10.44) (2026-09-06)
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
### Bug Fixes
|
|
1124
|
+
|
|
1125
|
+
* **docker:** install ffmpeg in runtime-pixivflow stage for ugoira GIF conversion ([cf6a143](https://github.com/redtidev1918/TelePost/commit/cf6a14325f692b7b50258f51f0d3057da35efeae))
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
### Documentation
|
|
1129
|
+
|
|
1130
|
+
* **site:** 独立自动化的下载页(发版自动更新,始终指向最新 Release) ([4b7c53a](https://github.com/redtidev1918/TelePost/commit/4b7c53adbe3209981f36c43dad2637e5adfe94d6))
|
|
1131
|
+
* **site:** 首页顶部新增「下载」区块(带二进制发布的项目) ([b094528](https://github.com/redtidev1918/TelePost/commit/b0945280e9ab4b294ee0fe1d20e1ff20ec30c49b))
|
|
1132
|
+
|
|
1133
|
+
## [2.10.43] - 2026-09-06
|
|
1134
|
+
|
|
1135
|
+
### 修复
|
|
1136
|
+
- 相册降级为单张发送时,继续保持所选的回复层级,避免图片脱离主贴或回复错位。
|
|
1137
|
+
- 修复聊天直接投稿时开启剧透遮罩却未生效的问题,单张和相册均正确显示遮罩。
|
|
1138
|
+
- 修复图片与文档混合投稿后保存的文件类型、文件编号及文件名错配。
|
|
1139
|
+
|
|
1140
|
+
### 文档
|
|
1141
|
+
- 补充相册降级时的回复规则、频道回复与讨论区评论的区别,以及升级验证说明。
|
|
1142
|
+
|
|
1143
|
+
## [2.10.42] - 2026-09-05
|
|
1144
|
+
|
|
1145
|
+
### 新增(可配置)
|
|
1146
|
+
- **多图投稿的频道展示方式可调**:超过一组相册(>10 张)时,默认每个相册回复上一个相册(逐级链);设
|
|
1147
|
+
`CHANNEL_ALBUM_REPLY=post` 后改为「后续相册都回复第一条主贴」,整组跟着主贴走,频道里不再嵌套成一串回复。
|
|
1148
|
+
- **投稿文件数上限可调**:默认单次 50 个文件;设 `API_MAX_FILES`(如 100)可支持超大图集整本投稿(发布侧仍按每组 ≤10 自动分批)。
|
|
1149
|
+
|
|
1150
|
+
### 文档
|
|
1151
|
+
- 配置参考补充两项配置说明,以及已部署实例的调整方法(`fly secrets set` 后自动重启生效)。
|
|
1152
|
+
|
|
1153
|
+
## [2.10.41] - 2026-09-05
|
|
1154
|
+
|
|
1155
|
+
### 修复
|
|
1156
|
+
- **大投稿不再超时失败**:审核通过后发布超时提高到 120 秒,20 图等大投稿在网络慢时也能稳定发出。
|
|
1157
|
+
- **不再重复投稿**:发布结果不确定(网络超时)时,不再自动降级重发相册,避免同一作品被重复投进频道;改为提示先到频道确认是否已发出。
|
|
1158
|
+
|
|
1159
|
+
## [2.10.40] - 2026-09-04
|
|
1160
|
+
|
|
1161
|
+
### 修复
|
|
1162
|
+
- 修复关闭 API 审核时自动化投稿误报 502;直接发布与审核投稿均可正常使用。
|
|
1163
|
+
- 重复投稿复用既有审核记录时,会在审核群提示原审核编号和当前状态,不再静默返回成功;
|
|
1164
|
+
API 同时返回 `reused=true`,并补齐旧审核记录缺失的 `target_id`。
|
|
1165
|
+
- 多 Bot 路由在自动唤醒时会短暂等待子进程就绪,避免首个请求过早返回 502。
|
|
1166
|
+
|
|
1167
|
+
### 文档
|
|
1168
|
+
- 重写安装、配置、命令、API、Webhook、Fly.io、运维、性能、测试与故障排查文档;
|
|
1169
|
+
明确推荐的低成本 Fly 拆分拓扑,并移除过期、重复或未经当前版本验证的部署说明。
|
|
1170
|
+
|
|
1171
|
+
## [2.10.39] - 2026-09-04
|
|
1172
|
+
|
|
1173
|
+
### 修复
|
|
1174
|
+
- **Fly.io 自动休眠后机器人永久失联**:休眠时不再注销 Telegram Webhook,冷启动时
|
|
1175
|
+
也不再丢弃待处理消息;继续使用 auto-stop 省钱时,用户消息和 PixivFlow 投递均可
|
|
1176
|
+
正常唤醒 TelePost。
|
|
1177
|
+
|
|
1178
|
+
## [2.10.38] - 2026-09-04
|
|
1179
|
+
|
|
1180
|
+
### 优化
|
|
1181
|
+
- **「重抓/换一张」只重跑单个 target**:投稿新增 `target_id` 字段(由 PixivFlow 通过
|
|
1182
|
+
`{{targetId}}` 传递),`pending_reviews` 增加 `target_id` 列;审核员点「重抓」时
|
|
1183
|
+
只重跑产生该审核的那一个 target(`pixivflow run-once --target <id>`),从全量
|
|
1184
|
+
schedule(最坏 2×30 分钟)压到单 target(秒级~分钟级)。
|
|
1185
|
+
|
|
1186
|
+
## [2.10.37] - 2026-09-04
|
|
1187
|
+
|
|
1188
|
+
### 修复
|
|
1189
|
+
- **审核「重抓/换一张」超时误报**:`run-once` 串行跑完所有启用 schedule,每个受
|
|
1190
|
+
`plan.timeout`(生产 1800s)watchdog 保护,2 个 schedule 最坏约 3600s;TelePost 侧
|
|
1191
|
+
子进程超时从 1500s 提到 3900s,避免在下载途中掐断并误报 `timed out after 1500 seconds`。
|
|
1192
|
+
- **已发布作品软去重**:同一 `idempotency_key` 的 `published` 记录在 7 天内再次投递时
|
|
1193
|
+
直接跳过(返回已发布记录),防止 PixivFlow 去重失效把已发布作品重新投进审核群造成
|
|
1194
|
+
「审核完了又转发」;`rejected` / 更早的 `published` 仍允许重建审核(换一张/重新考虑)。
|
|
1195
|
+
|
|
1196
|
+
## [2.10.36] - 2026-09-04
|
|
1197
|
+
|
|
1198
|
+
### 新增(开箱即用部署:零依赖可执行文件)
|
|
1199
|
+
- **免安装单文件版**:Linux / Windows / macOS(Apple Silicon)各出一个 `telepost` 单文件,
|
|
1200
|
+
下载即用,**不需要装 Python、Docker 或 WSL**;Intel Mac 请用 install.sh 或 Docker。
|
|
1201
|
+
- **首次运行向导**:第一次启动自动引导填写 Token / 频道 / 所有者三项,填完即用;
|
|
1202
|
+
也可随时 `telepost --setup` 重新配置。
|
|
1203
|
+
- **Windows 原生支持**:新增 `install.bat` / `run.bat`,Windows 直接双击即可,无需 WSL 或 Docker。
|
|
1204
|
+
|
|
1205
|
+
### 改进(安装更顺滑)
|
|
1206
|
+
- `install.sh`:Debian / Ubuntu 缺组件时自动补装,不再直接失败。
|
|
1207
|
+
- Docker 默认配置改为开箱可用的生产默认值,配置改由 `.env` 注入,不再需要手动改网络 / DNS。
|
|
1208
|
+
|
|
1209
|
+
---
|
|
1210
|
+
|
|
1211
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
### Bug Fixes
|
|
1215
|
+
|
|
1216
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
### Bug Fixes
|
|
1220
|
+
|
|
1221
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
1222
|
+
|
|
1223
|
+
## [2.10.33] - 2026-09-03
|
|
1224
|
+
|
|
1225
|
+
### 改进(超大图片压缩投稿,不再降级成文件)
|
|
1226
|
+
- **超过 Telegram 照片上限(约 10 MiB)的本地原图自动压缩**:新增
|
|
1227
|
+
`handlers.publish._compress_photo`(Pillow)——尺寸先缩到 4096px,再逐级降
|
|
1228
|
+
JPEG 质量(92→60),压到阈值内后**仍按图片发送**,频道里直接看图;
|
|
1229
|
+
压缩失败(无法解码/极端情况)才回退为文档发送兜底。
|
|
1230
|
+
- `reclassify_oversized_photos` 语义从"超限即降级 document"改为"先压缩、
|
|
1231
|
+
失败才降级";压缩后文件名统一 `.jpg`。覆盖 API 投稿与审核暂存两条路径。
|
|
1232
|
+
- 新增依赖 `Pillow>=10`;新增回归测试 `test_oversized_photo_is_compressed_not_demoted`
|
|
1233
|
+
(433 项全过)。
|
|
1234
|
+
|
|
1235
|
+
## [2.10.32] - 2026-09-03
|
|
1236
|
+
|
|
1237
|
+
### 修复(投稿状态机从未真正注册——"半套流程"最终根因)
|
|
1238
|
+
- **ConversationHandler `persistent=True` 但 Application 未配置 persistence**:
|
|
1239
|
+
PTB 直接抛 `ValueError`,被 `setup_application` 的 try/except 吞掉,导致
|
|
1240
|
+
投稿状态机**从未成功注册**。这是"点开始投稿按钮只建 DB 会话、发媒体
|
|
1241
|
+
掉出状态机静默无响应/会话已过期"的最终根因。现移除 `persistent=True`
|
|
1242
|
+
(此前无 persistence 时它一直无效且致命)。
|
|
1243
|
+
- 状态机构建抽到 `handlers/conversation.py`(`build_submission_conversation`),
|
|
1244
|
+
生产与测试复用同一份注册。
|
|
1245
|
+
- 新增**端到端集成测试** `tests/test_conversation_flow.py`:用真实
|
|
1246
|
+
ConversationHandler + 真实 DB 跑 `/submit → 媒体 → 文档 → /done_media →
|
|
1247
|
+
编辑标签 → 发布` 全链路;432 项测试全过。
|
|
1248
|
+
|
|
1249
|
+
## [2.10.31] - 2026-09-03
|
|
1250
|
+
|
|
1251
|
+
### 重构(投稿流程收敛,消除双轨状态与重复归类)
|
|
1252
|
+
- **状态机收敛为三态**:`UPLOAD`(上传)→ `PREVIEW`(预览面板)→ `EDIT`
|
|
1253
|
+
(快速编辑,`context.user_data['edit_field']` 区分字段)。删除
|
|
1254
|
+
`START_MODE/DOC/DONE_MEDIA/TAG/LINK/TITLE/NOTE/SPOILER/TEXT/IMAGE/EXTRA`
|
|
1255
|
+
及 5 个 `EDIT_*` 状态号——此前 0–18 共十余个状态里大半是死状态,
|
|
1256
|
+
且与 DB `submissions.mode` 双轨漂移导致"半套流程"(按钮只建 DB 行、
|
|
1257
|
+
不进状态机)。
|
|
1258
|
+
- **媒体/文档合一**:`media_handlers`/`document_handlers` 的互转逻辑合并为
|
|
1259
|
+
`handlers/upload.py` 的 `handle_upload`;删除 `submit_handlers.py`
|
|
1260
|
+
(老"标签→链接→标题→简介"逐项问答,已被预览面板取代)。
|
|
1261
|
+
- **归类单一实现**:消息→`type:file_id` 的归类收敛到
|
|
1262
|
+
`utils.submission.classify_message`,新增会话读写
|
|
1263
|
+
`get_session/create_session/append_entry/update_fields`,替代散落在
|
|
1264
|
+
4 个文件里的重复 SQL。
|
|
1265
|
+
- **删除死代码**:`select_mode`、`show_*_welcome` 多分支、
|
|
1266
|
+
`Keyboards.submission_confirm` 及 `handle_submit_*` 回调(旧投稿确认流程)。
|
|
1267
|
+
- 测试同步收敛:新增 `tests/test_upload.py`,重写 `test_preview_pagination`/
|
|
1268
|
+
`test_handlers`/`test_logic_flow`;431 项全过。
|
|
1269
|
+
|
|
1270
|
+
## [2.10.30] - 2026-09-03
|
|
1271
|
+
|
|
1272
|
+
### 修复(聊天投稿"发媒体无响应")
|
|
1273
|
+
- **底部菜单「📝 开始投稿」按钮不进状态机**:此前 `handle_menu_shortcuts` 直接
|
|
1274
|
+
调 `submit()`,只建 DB 会话、不建立 ConversationHandler 内存状态,用户随后
|
|
1275
|
+
发送的媒体/文件会掉出状态机、静默无响应。现将该按钮文本作为
|
|
1276
|
+
ConversationHandler 的 entry(`Regex 开始投稿$`),点按钮与 `/submit` 命令
|
|
1277
|
+
走完全相同的状态机入口。
|
|
1278
|
+
- **会话外媒体不再石沉大海**:新增 `orphan_media_guard`(group 997)——状态机
|
|
1279
|
+
因重启/超时/误操作丢失时,用户直接发媒体会收到明确提示"请先 /submit",
|
|
1280
|
+
而不是没有任何回应;有活跃会话时不打扰流程。
|
|
1281
|
+
- **埋点**:`validate_state` 无会话行、`end_conversation_with_message` 现在记录
|
|
1282
|
+
`user_id` 与触发函数,复现"❌ 会话已过期"时可从日志精确定位来源。
|
|
1283
|
+
- 430 项测试全过。
|
|
1284
|
+
|
|
1285
|
+
## [2.10.29] - 2026-09-02
|
|
1286
|
+
|
|
1287
|
+
### 修复(实机压测暴露)
|
|
1288
|
+
- **审核"控制消息"裸 send_message 导致整条投稿偶发回滚**:控制消息紧跟在
|
|
1289
|
+
媒体相册之后发送,正落在 Telegram flood 窗口内;此前未走限流包装、用 PTB
|
|
1290
|
+
默认 5s read 超时,Telegram 慢回复(flood 排队/网络抖动)时 ReadTimeout,
|
|
1291
|
+
`_create_review` 把已全部发出的预览相册删除并回滚,API 返回 502
|
|
1292
|
+
`review_queue_failed: Timed out`。现控制消息与预览相册一样走
|
|
1293
|
+
`_send_preview_throttled`(RetryAfter 感知 + 指数退避重试),并给足
|
|
1294
|
+
`REVIEW_PREVIEW_TIMEOUT_SECONDS` 超时。
|
|
1295
|
+
- **审核预览限流退避指数化**:Telegram flood 窗口较长时(如多投稿并发涌入,
|
|
1296
|
+
`Retry after 18 seconds`),此前每次只等 `retry_after+1s`、固定 5 次仍会被
|
|
1297
|
+
拒。现按 `retry_after × 2^attempt` 退避(上限 60s/次),长 flood 窗口可自愈。
|
|
1298
|
+
- 新增回归测试:控制消息遇 RetryAfter 自动重试且不误删预览(430 项全过)。
|
|
1299
|
+
|
|
1300
|
+
## [2.10.28] - 2026-09-02
|
|
1301
|
+
|
|
1302
|
+
### 修复
|
|
1303
|
+
- **API 直发(`API_REVIEW_REQUIRED=false`)媒体/文档全部丢失**:`publish_from_files`
|
|
1304
|
+
构造 `InputFile` 时漏传 `attach=True`,python-telegram-bot 序列化媒体组时
|
|
1305
|
+
丢掉每个 `InputMedia` 的 `media` 字段(无 `attach://` 引用),Telegram 回
|
|
1306
|
+
`media not found`——表现为 API 直投的插画相册发不出去/图片不可见、小说
|
|
1307
|
+
`.txt` 文档组同样失败。审核路径(`queue_review_from_files`)此前已有
|
|
1308
|
+
同名修复,但直发路径一直漏修。现在两条路径一致使用 `attach=True`。
|
|
1309
|
+
|
|
1310
|
+
### 重构(层级统一)
|
|
1311
|
+
- **频道发布与审核群预览共用一套主贴/回复层级**:此前"聊天投稿直发、
|
|
1312
|
+
API 本地文件直发、API file_id 直发、审核群暂存"四处各写一份相册分组/
|
|
1313
|
+
caption/回复链逻辑,规则互相打架(相册成员混入 GIF、文档组 caption 位置
|
|
1314
|
+
不一致、组大小阈值不同)。现统一到 `handlers.publish` 的
|
|
1315
|
+
`deliver_items_to_chat` / `_run_item_batches`,规则唯一:
|
|
1316
|
+
1) photo/video 每 10 个一组相册;
|
|
1317
|
+
2) GIF/音频不能进相册,逐条发送;
|
|
1318
|
+
3) document(小说 .txt、ugoira .zip、超 10 MiB 图片页)按文档相册发送,
|
|
1319
|
+
投稿含媒体时整段作为主贴的回复;
|
|
1320
|
+
4) caption 只挂整条投递的第一条消息(`build_caption` 已按 1024 上限
|
|
1321
|
+
截断,不再单独发"文本头"造成多余主贴/回复);
|
|
1322
|
+
5) 各段之间按回复链串联;相册失败自动降级逐条。
|
|
1323
|
+
- 聊天投稿/直发/审核共用的"超 10 MiB 图片自动改按文档发送"逻辑提取为
|
|
1324
|
+
`handlers.publish.reclassify_oversized_photos`,阈值单一来源。
|
|
1325
|
+
- **启动防呆**:`REVIEW_CHAT_ID` 若等于 `CHANNEL_ID`(审核预览、控制消息、
|
|
1326
|
+
PixivFlow 通知会以"奇怪回复/散帖"混进频道),启动直接报错拒绝;
|
|
1327
|
+
`/botconfig` 面板也拒绝把审核群切到频道。
|
|
1328
|
+
|
|
1329
|
+
## [2.10.27] - 2026-09-02
|
|
1330
|
+
|
|
1331
|
+
### 清理(审计驱动)
|
|
1332
|
+
- 移除 `main.py` 未使用的 `blacklist_filter` 导入,以及 4 个处理器中从未使用的
|
|
1333
|
+
`user_id` 局部变量赋值。仅清理死代码,零行为变更;419 测试全过。
|
|
1334
|
+
|
|
1335
|
+
## [2.10.26] - 2026-09-02
|
|
1336
|
+
|
|
1337
|
+
### 修复
|
|
1338
|
+
|
|
1339
|
+
- 审核群「🔄 重抓/换一张」按钮此前调用 `pixivflow scheduler run`——那是
|
|
1340
|
+
PixivFlow 调度**守护进程**的别名,进程永不退出,导致 TelePost 的 1500 秒
|
|
1341
|
+
子进程超时并报「重抓任务出错」。现改用 PixivFlow 新增的一次性命令
|
|
1342
|
+
`pixivflow run-once`(跑完全部启用计划即退出,行为与定时任务一致),
|
|
1343
|
+
重抓在下载完成后会正常结束并回执「✅ 重抓完成」。
|
|
1344
|
+
|
|
1345
|
+
## [2.10.25] - 2026-09-02
|
|
1346
|
+
|
|
1347
|
+
### 修复
|
|
1348
|
+
|
|
1349
|
+
- API 的 `title`/`note` 字段统一在 multipart 与 JSON 共用入口解析字面量
|
|
1350
|
+
`\\n`、`\\r\\n`,避免配置模板中的换行被原样显示;同时删除两个未使用的 UI/处理器残留,
|
|
1351
|
+
并移除 Python 标准库已提供的 `configparser` 生产依赖。
|
|
1352
|
+
- 移除统计刷新和删帖检测中“把频道帖子临时转发给 OWNER 再删除”的探测方式,避免私聊中
|
|
1353
|
+
偶发闪现审核/频道内容;同时停止每个 Bot 的两项无效轮询,降低 Telegram API 请求和日志噪音。
|
|
1354
|
+
- 热榜刷新仅重读本地统计。Telegram Bot API 无法无副作用获取任意频道帖的浏览、转发统计,
|
|
1355
|
+
也不会推送频道删帖事件;TelePost 自身删帖仍会同步软删除,外部删帖需用 `/delete_posts` 同步。
|
|
1356
|
+
- 修复混合聊天投稿只有 1 个文档时错误调用 `sendMediaGroup`、GIF/音频被放入不受支持的
|
|
1357
|
+
相册、11/21/31 张媒体的单张尾组导致发布失败,以及长说明单独发送失败后内容被静默
|
|
1358
|
+
丢弃;非相册媒体与尾组改为回复链发送,已知的中途失败会回滚已发送片段。
|
|
1359
|
+
- 索引重建失败时会删除残缺目录并恢复旧索引,不再因新目录已创建而跳过备份恢复。
|
|
1360
|
+
- SIGTERM/SIGINT 改由主协程顺序完成清理,不再用 `loop.stop()` 中断 `asyncio.run()`;
|
|
1361
|
+
OWNER 通知发生不确定网络错误时不再盲目补发,避免可能的重复私聊。
|
|
1362
|
+
|
|
1363
|
+
## [2.10.24] - 2026-09-01
|
|
1364
|
+
|
|
1365
|
+
### 新增
|
|
1366
|
+
|
|
1367
|
+
- 新增仅 `OWNER_ID` 可用的 Telegram `/botconfig` 面板,可修改当前 Bot 的投稿频道、
|
|
1368
|
+
审核群、API/聊天审核开关和频道署名总开关;运行策略原子保存在各 Bot 持久目录,
|
|
1369
|
+
应用后只重载当前 Bot 子进程,不重启另一个 Bot、PixivFlow 或 Fly Machine。
|
|
1370
|
+
|
|
1371
|
+
### 安全与稳定性
|
|
1372
|
+
|
|
1373
|
+
- 频道和审核群会通过 Telegram 校验类型、Bot 管理员身份及频道发帖权限;存在待审核
|
|
1374
|
+
投稿时拒绝切换频道、审核群或恢复部署配置,避免旧稿误发到新频道。
|
|
1375
|
+
- Bot Token、Owner、管理员列表和 Webhook 密钥不进入聊天配置面板;
|
|
1376
|
+
`/botconfig reset` 可删除运行时覆盖并恢复部署环境变量。
|
|
1377
|
+
|
|
1378
|
+
### 文档与测试
|
|
1379
|
+
|
|
1380
|
+
- 更新配置、命令和运维文档,说明双 Bot 单进程重载语义与完整命令用法。
|
|
1381
|
+
- 新增运行策略白名单、原子写入、权限边界、链接解析和多 Bot 隔离回归测试;
|
|
1382
|
+
完整测试 413 项通过、1 项按预期跳过。
|
|
1383
|
+
|
|
1384
|
+
## [2.10.23] - 2026-09-01
|
|
1385
|
+
|
|
1386
|
+
### 修复
|
|
1387
|
+
|
|
1388
|
+
- `/health` 不再因 Node.js 24 把 Linux 线程名显示为 `MainThread` 而漏报
|
|
1389
|
+
PixivFlow RSS;采集器会用进程 cmdline 识别 Node,512 MiB 内存余量重新可信。
|
|
1390
|
+
|
|
1391
|
+
### 测试
|
|
1392
|
+
|
|
1393
|
+
- 新增 Node 进程名变化的 `/proc` RSS 采集回归测试。
|
|
1394
|
+
|
|
1395
|
+
## [2.10.22] - 2026-09-01
|
|
1396
|
+
|
|
1397
|
+
### 修复
|
|
1398
|
+
- 🐛 **搜索/热榜翻页按钮失效**:`/search` 与 `/hot` 多页结果的 ⬅️/➡️ 翻页按钮
|
|
1399
|
+
此前接到一个未实现的空壳处理函数,点击只弹“跳转到第 N 页”却不刷新内容。
|
|
1400
|
+
现已按存储的查询上下文重新渲染对应页(复用既有 `render_search_page` /
|
|
1401
|
+
`get_hot_posts`),上下文过期时优雅降级为提示。
|
|
1402
|
+
|
|
1403
|
+
### 维护
|
|
1404
|
+
- 🧹 全仓死代码清理(零行为变化,pyflakes/pytest 双重把关):删除从未注册的
|
|
1405
|
+
错误处理函数与 `if False:` 调试块、4 个零调用的 `*_safe` 包装、重复的
|
|
1406
|
+
`calculate_heat_score`、不可达的 TEXT/IMAGE/EXTRA 会话状态及其 no-op
|
|
1407
|
+
lambda 占位、一批未使用导入;`health.py` 作为对外保留的旧轮询入口保留。
|
|
1408
|
+
- 📝 文档:API.md 补充审核群「🔇 遮罩开关」「🔄 重抓/换一张」按钮说明与审核
|
|
1409
|
+
记录状态机(含 `expired`/`deleted`);修正路由限额注释(50 文件 / 500 MiB);
|
|
1410
|
+
移除 COMMANDS.md 中已不存在的 `/done_img` 旧图片流程。
|
|
1411
|
+
|
|
1412
|
+
## [2.10.21] - 2026-09-01
|
|
1413
|
+
|
|
1414
|
+
### 安全与维护
|
|
1415
|
+
|
|
1416
|
+
- 联合运行镜像改用 Node.js 24 LTS,并把内置 PixivFlow 从 2.8.0
|
|
1417
|
+
更新到 2.10.21;生产依赖不再建立在已结束安全维护的 Node.js 20 上。
|
|
1418
|
+
- 发布工作流升级到当前 `actions/checkout` 主版本。
|
|
1419
|
+
|
|
1420
|
+
### 文档
|
|
1421
|
+
|
|
1422
|
+
- Fly 双 Bot 模板与 Docker 默认构建参数统一固定 PixivFlow 2.10.21,
|
|
1423
|
+
避免直接使用仓库 Dockerfile 时静默部署旧版调度器。
|
|
1424
|
+
|
|
1425
|
+
## [2.10.20] - 2026-09-01
|
|
1426
|
+
|
|
1427
|
+
### 改进
|
|
1428
|
+
|
|
1429
|
+
- `POST /api/v1/notifications` 的幂等键由进程内存改为 SQLite 原子占位:
|
|
1430
|
+
Bot 重启后仍可识别重复通知,发送失败会释放占位供 PixivFlow outbox
|
|
1431
|
+
重试;异常中断的 pending 占位 5 分钟后可恢复。
|
|
1432
|
+
- 通知幂等记录与已决审核记录共用 `REVIEW_RETENTION_DAYS`
|
|
1433
|
+
的定期清理周期,避免 SQLite 表无限增长。
|
|
1434
|
+
- 修正 `GET /api/v1/me` 查询限额时使用 token ID,而投稿计数使用
|
|
1435
|
+
Telegram user ID 的键不一致问题。
|
|
1436
|
+
|
|
1437
|
+
### 测试
|
|
1438
|
+
|
|
1439
|
+
- 新增 API 通知跨重启幂等、失败释放与过期清理回归测试。
|
|
1440
|
+
|
|
1441
|
+
## [2.10.19] - 2026-08-31
|
|
1442
|
+
|
|
1443
|
+
### 新增
|
|
1444
|
+
- 🔇 **审核群可决定频道遮罩**:审核键盘新增"遮罩:开/关"按钮,审核员可在发布前
|
|
1445
|
+
翻转该投稿的 `has_spoiler`,初始值沿用投稿者设置;发布以数据库当前值为准。
|
|
1446
|
+
- 🔄 **审核群"重抓/换一张"**:对 Pixiv 自动投稿(HTTP API + Pixiv 链接)新增
|
|
1447
|
+
"重抓/换一张"按钮,审核员点击后在后台触发一次 `pixivflow scheduler run`,
|
|
1448
|
+
已下载作品自动跳过并选取下一张,新稿作为新审核记录进群;不影响已发布的旧稿。
|
|
1449
|
+
仅管理员可用,PixivFlow 未启用时按钮不触发。
|
|
1450
|
+
|
|
1451
|
+
## [2.10.18] - 2026-08-31
|
|
1452
|
+
|
|
1453
|
+
### 新增
|
|
1454
|
+
|
|
1455
|
+
- 新增鉴权端点 `POST /api/v1/notifications`,供 PixivFlow 等自动化在没有候选时
|
|
1456
|
+
向当前 Bot 的 `REVIEW_CHAT_ID` 发送纯文本运维通知,不创建空投稿或频道消息。
|
|
1457
|
+
- 支持最长 240 字符的 `idempotency_key`;同一进程 24 小时内的网络重试返回
|
|
1458
|
+
`duplicate`,避免审核群重复提示。通知复用投稿 Bearer Token,Bot Token 不外泄。
|
|
1459
|
+
|
|
1460
|
+
## [2.10.17] - 2026-08-31
|
|
1461
|
+
|
|
1462
|
+
### 安全
|
|
1463
|
+
|
|
1464
|
+
- Webhook Secret Token 校验改用恒定时间比较 `hmac.compare_digest`,替代普通
|
|
1465
|
+
`!=` 逐字节比较,避免通过响应耗时差异逐字节推断 token(时序侧信道)。
|
|
1466
|
+
错误 / 缺失 / 前缀相似的 token 仍一律返回 401;新增对应鉴权测试。
|
|
1467
|
+
|
|
1468
|
+
## [2.10.16] - 2026-08-31
|
|
1469
|
+
|
|
1470
|
+
### 修复
|
|
1471
|
+
|
|
1472
|
+
- 修正 JobQueue 每天 03:00 执行同步日志清理回调时产生的
|
|
1473
|
+
`TypeError: object NoneType can't be used in 'await' expression`;日志清理与
|
|
1474
|
+
04:00 PixivFlow 维护现均为真正的异步回调,阻塞文件/子进程操作移到工作线程。
|
|
1475
|
+
- 多 Bot 模式只由主 Bot 注册日志清理和 PixivFlow 维护,避免同一目录被重复清理;
|
|
1476
|
+
每个 Bot 自己的审核队列清理仍保持独立运行。
|
|
1477
|
+
- 03:00/04:00 维护时间显式使用 `TZ`(默认 `Asia/Shanghai`)。此前无时区的时间被
|
|
1478
|
+
JobQueue 按 UTC 解释,东八区实际会延后到 11:00/12:00;无效 `TZ` 现安全回退 UTC。
|
|
1479
|
+
|
|
1480
|
+
## [2.10.15] - 2026-08-31
|
|
1481
|
+
|
|
1482
|
+
### 修复
|
|
1483
|
+
|
|
1484
|
+
- 频道消息软删除(`published_posts.is_deleted=1`)时,同步将对应审核记录从
|
|
1485
|
+
`published` 更新为 `deleted`;数据库初始化会自动回填旧版已经错位的历史数据。
|
|
1486
|
+
`published` 现在只表示当前仍未标记删除的已发布审核结果。
|
|
1487
|
+
- `/health` 的 `storage.review_queue.by_bot` 增加 `deleted` 历史终态计数,
|
|
1488
|
+
避免运维时把已删除稿误判为当前在线发布。
|
|
1489
|
+
|
|
1490
|
+
## [2.10.14] - 2026-08-31
|
|
1491
|
+
|
|
1492
|
+
### 改进
|
|
1493
|
+
|
|
1494
|
+
- 新增 `PENDING_REVIEW_RETENTION_DAYS`(默认 `0`,不自动过期)与
|
|
1495
|
+
`PENDING_REVIEW_CLEANUP_BATCH_SIZE`(默认 `100`):部署者可让长期无人处理的
|
|
1496
|
+
`pending` 投稿自动变为 `expired`,同步删除审核群中的媒体、文档与控制消息。
|
|
1497
|
+
- 过期不会直接抹掉数据库审计记录;`expired` 记录与其他终态记录一样,之后再由
|
|
1498
|
+
`REVIEW_RETENTION_DAYS`(默认 30 天)清理。原始上传文件在进入审核群后仍立即删除,
|
|
1499
|
+
因此等待审核不会占用常驻内存或本地媒体存储。
|
|
1500
|
+
- Telegram Bot API 只保证删除发送后 48 小时内的消息;希望自动清理审核群时建议将
|
|
1501
|
+
待审核保留期设为 `1` 天。更长保留期仍会正确过期数据库记录,但旧群消息可能需手动删除。
|
|
1502
|
+
|
|
1503
|
+
## [2.10.13] - 2026-08-30
|
|
1504
|
+
|
|
1505
|
+
### 修复
|
|
1506
|
+
|
|
1507
|
+
- 多 Bot 模式只由 Bot1 注册每日 PixivFlow 全局维护任务;其余 Bot 明确跳过,避免
|
|
1508
|
+
多个子进程在 04:00 同时清缓存和 `VACUUM` 同一个数据库。单 Bot 模式行为不变。
|
|
1509
|
+
|
|
1510
|
+
## [2.10.12] - 2026-08-30
|
|
1511
|
+
|
|
1512
|
+
### 修复
|
|
1513
|
+
|
|
1514
|
+
- **`api_uploads` 目录泄漏**:上传会话清理原来依赖 aiohttp 任务 done-callback,
|
|
1515
|
+
并非所有执行路径都会触发(实测多页大上传后残留 90MB 级孤儿目录)。
|
|
1516
|
+
现在新增后台清扫器:每小时删除超过 `UPLOAD_SESSION_MAX_AGE_SECONDS`
|
|
1517
|
+
(默认 1 小时)的孤儿会话目录,配合原有回调双保险,持久卷不再被慢速累积占满。
|
|
1518
|
+
|
|
1519
|
+
### 改进
|
|
1520
|
+
|
|
1521
|
+
- 定期清理扩展到 `pending_reviews`:已决(rejected/published/failed)且超过
|
|
1522
|
+
`REVIEW_RETENTION_DAYS`(默认 30 天)的审核记录自动删除;pending 记录绝不动。
|
|
1523
|
+
- 每天 04:00 自动执行 `pixivflow maintain`(子进程):清理日志/备份、VACUUM
|
|
1524
|
+
优化 SQLite,配合 `deleteAfterDelivery=false` 的缓存保留策略控制存储增长。
|
|
1525
|
+
|
|
1526
|
+
## [2.10.11] - 2026-08-30
|
|
1527
|
+
|
|
1528
|
+
### 改进
|
|
1529
|
+
|
|
1530
|
+
- 超大图片自动按文档发送(参考 t.me/Pixiv_bot 的传输策略):Telegram 图片
|
|
1531
|
+
(含相册)单张上限 10 MiB,超过会被拒绝;现在本地暂存阶段对超过
|
|
1532
|
+
`PHOTO_MAX_BYTES`(默认 9.5 MiB)的页面自动改按 document 发送(document
|
|
1533
|
+
上限 50 MiB),大尺寸原图不再导致整份投稿进不了审核群。
|
|
1534
|
+
|
|
1535
|
+
## [2.10.10] - 2026-08-30
|
|
1536
|
+
|
|
1537
|
+
### 修复
|
|
1538
|
+
|
|
1539
|
+
- 审核群相册上传真正生效:此前相册里的本地文件 `InputFile` 未启用 `attach` 模式,
|
|
1540
|
+
python-telegram-bot 会把每个 `InputMedia` 的 `media` 字段丢弃(没有 `attach://` URI),
|
|
1541
|
+
Telegram 返回 `Can't parse inputmedia: media not found`,相册每次都会静默降级为
|
|
1542
|
+
逐张发送——多页作品虽然能进审核群,但一直是一张一张的消息而不是相册。
|
|
1543
|
+
现在 `attach=True` 保留 `attach://` 引用,5 张一组的小相册 + 组间回复链真正生效;
|
|
1544
|
+
降级逐张逻辑仍作为相册发送失败时的兜底保留。
|
|
1545
|
+
|
|
1546
|
+
## [2.10.9] - 2026-08-30
|
|
1547
|
+
|
|
1548
|
+
### 修复
|
|
1549
|
+
|
|
1550
|
+
- 幂等键语义修正:`idempotency_key` 只在审核仍处于 `pending`/`failed` 时去重;
|
|
1551
|
+
已被**拒绝或已发布**的旧记录不再阻断同一 key 的新投稿——例如 PixivFlow 定时任务
|
|
1552
|
+
次日又选中同一作品时,会删除旧记录与旧预览并创建全新的审核记录,
|
|
1553
|
+
而不是静默返回旧结果(此前会导致新投稿不进审核群)。
|
|
1554
|
+
|
|
1555
|
+
## [2.10.8] - 2026-08-30
|
|
1556
|
+
|
|
1557
|
+
### 改进
|
|
1558
|
+
|
|
1559
|
+
- 审核群相册预览改为「小相册 + 自动降级」,避免小内存机器 OOM:
|
|
1560
|
+
- 新增 `REVIEW_ALBUM_SIZE`(默认 5,合法范围 1–10),控制每条 media group 打包的媒体数;
|
|
1561
|
+
512 MiB 机器用小相册即可把 Telegram 上传阶段的 RSS 峰值压在单张量级。
|
|
1562
|
+
- 相册发送失败(超时 / 连接中断 / 限流重试耗尽)时自动**降级为逐张发送**,整份投稿不会
|
|
1563
|
+
因为相册一次性上传失败而整体失败;逐张之间保留原有 `RetryAfter` 退避与节流。
|
|
1564
|
+
- 相册返回消息数不一致时先把已发送消息记入清理列表再报错,避免失败时残留部分预览。
|
|
1565
|
+
|
|
1566
|
+
## [2.10.7] - 2026-08-30
|
|
1567
|
+
|
|
1568
|
+
### 修复
|
|
1569
|
+
|
|
1570
|
+
- 标签净化:Telegram hashtag 只接受字母、数字、下划线和中文/假名/韩文等非 ASCII 字母,
|
|
1571
|
+
包含 `-`、`/`、`()` 等字符的标签不会被官方客户端识别为可点击标签
|
|
1572
|
+
(如 `#r-18` 只会解析成 `#r`)。`process_tags` 现在按逗号/空白/斜杠拆分后去除所有
|
|
1573
|
+
非法字符,并把 `r-18 / r 18 / r_18` 统一归一为 `#r18`、`r-18g` 归一为 `#r18g`;
|
|
1574
|
+
数字开头的 Pixiv 标签保持原名。PixivFlow 传入的 `中文/中国語/chinese`、
|
|
1575
|
+
`カフカ(スターレイル)` 等作品标签现在都能正确渲染为可点击标签。
|
|
1576
|
+
- 审核群多页预览改为「相册 + 回复链」:同一投稿的图片/文件按每批 ≤10 组包成 Telegram
|
|
1577
|
+
media group(相册)发送,29 页作品显示为 3 个相册而不是 29 条散消息;相册之间、以及
|
|
1578
|
+
小说 `.txt` 等单文件消息都会回复上一条,群内仍是一组完整回复链。单文件投稿(如小说)
|
|
1579
|
+
仍带完整 caption,保留 `file_id` 复用与限速/退避。`REVIEW_PREVIEW_THREAD=0` 可关闭回复链。
|
|
1580
|
+
- 相册仅组合 Telegram 允许的媒体类型(图片/视频、音频、文档),GIF/animation 保持单发;
|
|
1581
|
+
遇到限流会重新打开本地文件再重试,返回数量异常时整单回滚,避免空上传或静默丢页。
|
|
1582
|
+
|
|
1583
|
+
### 新增
|
|
1584
|
+
|
|
1585
|
+
- 审核群预览回复链(2.10.6):多页图集进入审核群时后续预览回复上一条消息。
|
|
1586
|
+
- 自动投稿 caption 模板 `{{link}}` / `{{spoiler}}` 变量(配合 PixivFlow 2.10.5)。
|
|
1587
|
+
|
|
1588
|
+
## [2.10.5] - 2026-08-30
|
|
1589
|
+
|
|
1590
|
+
### 修复
|
|
1591
|
+
|
|
1592
|
+
- 多页插画进入审核群时,对每个 Telegram 预览上传显式使用 120 秒读写超时,避免 24 页等大型作品在默认短超时下返回 HTTP 502;可通过 `REVIEW_PREVIEW_TIMEOUT_SECONDS` 调整。
|
|
1593
|
+
|
|
1594
|
+
### 改进
|
|
1595
|
+
|
|
1596
|
+
- 保留逐页限速、`RetryAfter` 退避和 Telegram `file_id` 持久化;批准后仍复用已上传文件,不重复消耗媒体上行带宽。
|
|
1597
|
+
|
|
1598
|
+
## [2.10.4] - 2026-08-30
|
|
1599
|
+
|
|
1600
|
+
### 修复
|
|
1601
|
+
|
|
1602
|
+
- 修复审核预览遭遇 `RetryAfter` 后重复等待同一个已完成协程、导致重试失败的问题;每次重试现在都会重新创建发送请求并重新打开本地文件。
|
|
1603
|
+
- 多页审核预览按可配置的 0.75 秒间隔稳定发送,并完整遵守 Telegram 返回的限流等待时间。
|
|
1604
|
+
- Topic 投稿不再因来源主题为空而只保留 `#pixiv`;配合 PixivFlow 2.10.4 可接收计划主题与作品 Pixiv 标签,重复标签会按原顺序去重。
|
|
1605
|
+
|
|
1606
|
+
### 改进
|
|
1607
|
+
|
|
1608
|
+
- 保留 50 文件上限,同时把单次累计文件体积限制为 500MB,避免一个请求占满低配实例持久卷;父路由和子 API 继续分块流式处理。
|
|
1609
|
+
- 修正 Bot/API 自报版本,并在 tag 发布流程校验 tag 与代码版本一致。
|
|
1610
|
+
|
|
1611
|
+
## [2.10.3] - 2026-08-29
|
|
1612
|
+
|
|
1613
|
+
### 修复
|
|
1614
|
+
|
|
1615
|
+
- 审核队列预览逐张发送时增加节流与 Telegram flood 退避(`RetryAfter` 等待后重试):多页图集(如 24 页 Pixiv 作品)入审核队列不再触发 `Flood control exceeded` 502。
|
|
1616
|
+
|
|
1617
|
+
## [2.10.2] - 2026-08-29
|
|
1618
|
+
|
|
1619
|
+
### 修复
|
|
1620
|
+
|
|
1621
|
+
- 投稿入站文件数上限从 10 放宽到 50:多页插画/图集(如 Pixiv 24 页作品)此前会因 `too_many_files` 400 被拒;发布侧本就支持按每组 ≤10 自动拆成多个 Telegram media group,整本内容完整发出。
|
|
1622
|
+
|
|
1623
|
+
## [2.10.1] - 2026-08-29
|
|
1624
|
+
|
|
1625
|
+
### 修复
|
|
1626
|
+
|
|
1627
|
+
- 修复多 Bot 父路由在守护线程中启动失败的问题:`web.AppKey` 的模块名解析在非模块级调用上下文(daemon 线程)下抛 `UnboundLocalError: module`,导致 8080 路由完全不可用(`/health` 与 `/api/botN/v1` 全部失效)。改用普通字符串 key 存储 aiohttp client session,行为不变。
|
|
1628
|
+
|
|
1629
|
+
## [2.10.0] - 2026-08-29
|
|
1630
|
+
|
|
1631
|
+
### 改进
|
|
1632
|
+
|
|
1633
|
+
- 多 Bot 父路由改为 64 KiB 分块流式转发并复用 aiohttp 连接池,不再把最高 500 MiB 的 multipart 投稿完整复制到内存
|
|
1634
|
+
- TelePost 向 Telegram 上传本地媒体时保持文件句柄流式读取,避免媒体组在 Python 进程内形成第二份大字节缓存
|
|
1635
|
+
- API 临时上传目录现在覆盖成功、参数校验失败和 Telegram 异常等全部退出路径,避免持久卷长期积累孤立文件
|
|
1636
|
+
- 父路由与子 API 显式支持 10 × 50 MiB 的请求上限,同时保留逐文件与文件数量校验
|
|
1637
|
+
- tag 发布工作流新增完整 pytest 门禁,测试未通过时不再构建镜像或创建 Release
|
|
1638
|
+
|
|
1639
|
+
## [2.9.0] - 2026-08-29
|
|
1640
|
+
|
|
1641
|
+
### 新增
|
|
1642
|
+
|
|
1643
|
+
- Polling 模式现在与 Webhook 模式提供相同的 `/api/v1/*` 投稿接口,无公网机器也能接收本机或内网 PixivFlow 投稿
|
|
1644
|
+
- 多 Bot 父路由在两种运行模式下都固定提供 `/api/botN/v1/*`,切换 Polling、AUTO 或 Webhook 时无需修改投递地址
|
|
1645
|
+
|
|
1646
|
+
### 改进
|
|
1647
|
+
|
|
1648
|
+
- Polling 的健康检查与投稿 API 和 Bot 运行在同一事件循环,关闭时会完成异步清理
|
|
1649
|
+
- 多 Bot 子进程健康/API 端口固定错开为 8081、8082……,避免继承父端口后发生监听冲突
|
|
1650
|
+
|
|
1651
|
+
## [2.8.0] - 2026-08-29
|
|
1652
|
+
|
|
1653
|
+
### 新增
|
|
1654
|
+
|
|
1655
|
+
- `/health` 新增持久卷、PixivFlow cache、delivery outbox 与 API 临时上传指标;outbox 同时报告重试次数、错误文件数和最老任务年龄
|
|
1656
|
+
- 新增 Mac 端 `update_telepost_policy.sh`,用非敏感 JSON 校验并一次更新多 Bot 的频道、审核群与审核来源策略
|
|
1657
|
+
|
|
1658
|
+
### 改进
|
|
1659
|
+
|
|
1660
|
+
- Docker 改为多阶段构建,生产镜像不再包含编译器、npm 和测试工具;Fly 联合档仅保留 Node 运行时与 PixivFlow
|
|
1661
|
+
- 生产与测试依赖拆分为 `requirements.txt` 和 `requirements-dev.txt`
|
|
1662
|
+
- PixivFlow 远程原子更新脚本固定使用联合部署配置,避免仓库默认 Fly 配置缺失时产生误导警告
|
|
1663
|
+
|
|
1664
|
+
## [2.7.3] - 2026-08-29
|
|
1665
|
+
|
|
1666
|
+
### 修复
|
|
1667
|
+
|
|
1668
|
+
- 兼容新版 python-telegram-bot 使用 tuple 返回图片尺寸,修复 multipart 图片进入审核群后 API 返回 502
|
|
1669
|
+
- 审核预览上传后若无法提取 Telegram file_id,会自动删除已上传消息,避免群内残留孤立预览
|
|
1670
|
+
|
|
1671
|
+
## [2.7.2] - 2026-08-29
|
|
1672
|
+
|
|
1673
|
+
### 修复
|
|
1674
|
+
|
|
1675
|
+
- 同步机器人和 HTTP API 自报版本,避免 2.7 系列部署仍显示 2.6.0
|
|
1676
|
+
|
|
1677
|
+
## [2.7.1] - 2026-08-29
|
|
1678
|
+
|
|
1679
|
+
### 安全
|
|
1680
|
+
|
|
1681
|
+
- Webhook Secret Token 不再以明文或截断形式写入启动日志,避免托管平台日志泄露凭据
|
|
1682
|
+
|
|
1683
|
+
## [2.7.0] - 2026-08-29
|
|
1684
|
+
|
|
1685
|
+
### 新增
|
|
1686
|
+
|
|
1687
|
+
- **PixivFlow 联合运行档**:Docker 可选安装 PixivFlow 2.7,现有多 Bot supervisor 同时监督单个 Node 多计划调度进程,异常退出自动重启
|
|
1688
|
+
- **Fly 512 MiB 模板**:双 Bot Webhook + PixivFlow 缓存投稿共用一台 Machine,默认关闭搜索、限制 Node heap/SQLite cache,并使用持久卷保存配置与 outbox
|
|
1689
|
+
- **SSH 原子热更新脚本**:`scripts/update_pixivflow_config.sh` 校验本地 JSON,SFTP 上传临时文件后同卷替换,无需 WebUI或重启
|
|
1690
|
+
|
|
1691
|
+
### 改进
|
|
1692
|
+
|
|
1693
|
+
- `/health` 在保留 `python_rss_mb` 的同时新增 `process_rss`,同时展示 Python 与 Node 子进程内存
|
|
1694
|
+
- PixivFlow 子进程不会继承 Telegram Bot Token,只接收独立投稿 token 与自身配置
|
|
1695
|
+
|
|
1696
|
+
## [2.6.0] - 2026-08-29
|
|
1697
|
+
|
|
1698
|
+
### 新增
|
|
1699
|
+
|
|
1700
|
+
- **运行模式自适应**:新增默认 `RUN_MODE=AUTO`;有效公网 HTTPS `WEBHOOK_URL` 自动选择 Webhook,否则选择 Polling,Webhook 注册失败时自动安全回退
|
|
1701
|
+
- **可选投稿来源审核**:`API_REVIEW_REQUIRED` 与 `CHAT_REVIEW_REQUIRED` 可独立控制 HTTP API 和 Telegram `/submit` 投稿是否进入私有审核群,管理员点击通过/拒绝
|
|
1702
|
+
- **审核持久化与幂等**:待审核媒体保存 Telegram file_id,SQLite 记录状态;`idempotency_key` 防止网络重试生成重复审核项
|
|
1703
|
+
- **聊天审核结果通知**:聊天投稿通过或拒绝后,Bot 私聊通知原投稿人
|
|
1704
|
+
|
|
1705
|
+
### 修复
|
|
1706
|
+
|
|
1707
|
+
- API file_id 直投的单个媒体/文档不再错用 `send_media_group`
|
|
1708
|
+
|
|
1709
|
+
### 安全
|
|
1710
|
+
|
|
1711
|
+
- `/gen_token` 现在仅允许 `OWNER_ID` 对应的 Bot 所有者使用,防止普通用户生成可用于 HTTP API 投稿的访问令牌
|
|
1712
|
+
|
|
1713
|
+
## [2.5.0] - 2026-08
|
|
1714
|
+
|
|
1715
|
+
### 新增
|
|
1716
|
+
|
|
1717
|
+
- **HTTP API(/api/v1)**:token 鉴权的自动化投稿接口——multipart 上传媒体/文档(≤10 个、单文件 ≤50MB),支持标签/标题/简介/链接/匿名/剧透字段,与聊天投稿共用发布、记录、搜索索引与频控链路
|
|
1718
|
+
|
|
1719
|
+
- **token 管理**:/gen_token 生成(明文仅显示一次,服务端只存哈希)、/tokens 查看、/revoke_token 吊销;API 投稿按绑定 Telegram 身份记账与限频
|
|
1720
|
+
|
|
1721
|
+
- **多 bot API 寻址**:/api/botN/v1/* 按路径转发到对应子进程,各 bot token 体系独立
|
|
1722
|
+
|
|
1723
|
+
- **/health 内存自报**:进程 RSS 与系统可用内存(容量观测)
|
|
1724
|
+
|
|
1725
|
+
### 文档
|
|
1726
|
+
|
|
1727
|
+
- 新增 docs/API.md(接口参考);README 增加致谢章节并精简措辞
|
|
1728
|
+
|
|
1729
|
+
## [2.4.0] - 2026-08
|
|
1730
|
+
|
|
1731
|
+
### 新增
|
|
1732
|
+
|
|
1733
|
+
- **多 bot 部署形态**:新增 run.py 启动器与多 bot webhook 路由——一台机承载任意数量的频道 bot(BOT1_TOKEN/BOT2_TOKEN/… 各自独立数据目录与回调路径),配合 auto_stop 空闲停机,把两个 bot 的运行成本压到一台机的钱
|
|
1734
|
+
|
|
1735
|
+
- **匿名投稿**:发布预览页一键切换匿名,开启后频道内 caption 不再显示投稿人
|
|
1736
|
+
|
|
1737
|
+
- **投稿流程精简**:剧透与匿名全部按钮化(预览页开关),砍掉两轮打字往返;未识别输入不再静默,catch_all 兜底引导
|
|
1738
|
+
|
|
1739
|
+
- **会话持久化**:投稿会话状态落盘(PicklePersistence),auto_stop 停机/重启/发版后用户可从原步骤继续,根治对话中途失忆
|
|
1740
|
+
|
|
1741
|
+
## [2.3.0] - 2026-08
|
|
1742
|
+
|
|
1743
|
+
### 修复(2026-08)
|
|
1744
|
+
- 修复 20+ 处核心缺陷:发布回调路径失效、删帖功能因 sqlite3.Row.get() 崩溃、帖子统计/原帖查询不存在的列、文档模式切换无法推进会话状态、Webhook 优雅退出中断、caption 未做 HTML 转义导致含 <>& 的投稿发布失败、时间筛选按钮传字符串导致搜索为空、消息存在性检查转发给机器人自身空转、会话超时机制读取从未写入的数据等
|
|
1745
|
+
- 恢复被误 ignore 的 health.py(Polling 模式 /health 健康检查,Docker HEALTHCHECK 依赖)
|
|
1746
|
+
- 环境变量统一为 `TOKEN`,新增 `BOT_TOKEN` / `TELEGRAM_BOT_TOKEN` 别名兼容(修复按旧文档配置导致启动失败)
|
|
1747
|
+
- 新增 `SUBMIT_LIMIT_PER_HOUR` 投稿频率限制(默认 10 次/小时,0 关闭)
|
|
1748
|
+
|
|
1749
|
+
重命名(2026-08)
|
|
1750
|
+
- **项目更名为 TelePost**(原 TeleSubmit-v2):与上游同名项目区分,名称更贴合"频道投稿"主题。仓库地址改为 `redtidev1918/TelePost`,Docker 服务/容器名、systemd 单元名(telepost.service)、健康检查 service 标识同步更新;CHANGELOG 中更早条目保留历史名称。
|
|
1751
|
+
|
|
1752
|
+
新增(2026-08)
|
|
1753
|
+
- **发布流水线**:新增 tag 驱动的 GitHub Actions——构建 amd64/arm64 镜像推送 GHCR(x.y.z / x.y / latest 标签),自动创建带 CHANGELOG 摘录的 GitHub Release;docker-compose 内置官方镜像名
|
|
1754
|
+
- **发布前编辑流程**:投稿最后一步改为预览确认页,支持发布前快速修改标签/简介、补充媒体或取消(新增 EDIT_TAG/EDIT_NOTE/EDIT_MEDIA 会话状态)
|
|
1755
|
+
- **结果列表分页**:/search 与 /hot 支持按钮翻页(⬅️/页码/➡️),查询上下文跨回调保持
|
|
1756
|
+
- **投稿频率限制** SUBMIT_LIMIT_PER_HOUR(每用户每小时上限,默认 10,0 关闭)
|
|
1757
|
+
|
|
1758
|
+
变更(2026-08)
|
|
1759
|
+
- 投稿发布失败时保留会话数据,避免重传全部媒体
|
|
1760
|
+
- 剧透确认步骤严格校验"是/否",避免错字被静默当作"否"直接发布
|
|
1761
|
+
- 搜索功能禁用时不再误建索引目录
|
|
1762
|
+
|
|
1763
|
+
文档(2026-08)
|
|
1764
|
+
- 文档体系重构:新增 INSTALL / CONFIGURATION / COMMANDS / OPERATIONS / PERFORMANCE / TROUBLESHOOTING / TESTING 与 internals/moderation.md,重写 README,移除重复与失效文档
|
|
1765
|
+
|
|
1766
|
+
新增
|
|
1767
|
+
- **频道消息监听器增强**
|
|
1768
|
+
- 增强频道消息监听器的鲁棒性和错误处理
|
|
1769
|
+
- 支持处理非本项目 bot 发布的不规范帖子
|
|
1770
|
+
- 自动提取和规范化标签(支持 #标签 和 [标签] 格式)
|
|
1771
|
+
- 智能文本清理(移除控制字符、规范化换行、限制长度)
|
|
1772
|
+
- 并发控制机制,防止重复处理同一消息
|
|
1773
|
+
- 完善的错误处理和日志记录
|
|
1774
|
+
- 支持多种消息格式和媒体类型
|
|
1775
|
+
- 自动同步到搜索索引
|
|
1776
|
+
- **中文部分匹配搜索支持**
|
|
1777
|
+
- 使用 SimpleAnalyzer 时,支持中文关键词的部分匹配
|
|
1778
|
+
- 搜索"卫宫"可以匹配"卫宫士郎"等包含该关键词的内容
|
|
1779
|
+
- 自动检测中文查询并使用通配符查询优化
|
|
1780
|
+
- 在标题、描述、标签、文件名等多个字段中搜索
|
|
1781
|
+
- 提升中文搜索体验,无需完整输入即可找到相关内容
|
|
1782
|
+
- **Webhook 模式支持**
|
|
1783
|
+
- 新增 Webhook 运行模式,与 Polling 模式并存
|
|
1784
|
+
- 支持通过配置文件或环境变量切换模式
|
|
1785
|
+
- 响应速度更快(<1秒),资源消耗更低
|
|
1786
|
+
- 适用于生产环境和云服务器部署
|
|
1787
|
+
- 内置 Secret Token 验证机制
|
|
1788
|
+
- 支持多种部署方式(VPS、Docker、PaaS 平台)
|
|
1789
|
+
- **安装脚本增强**
|
|
1790
|
+
- `install.sh` 新增运行模式选择向导
|
|
1791
|
+
- 自动引导用户选择 Polling 或 Webhook 模式
|
|
1792
|
+
- Webhook 模式自动验证 URL 格式
|
|
1793
|
+
- 配置完成后显示摘要信息
|
|
1794
|
+
|
|
1795
|
+
文档
|
|
1796
|
+
- 新增 `docs/WEBHOOK_MODE.md` - Webhook 模式完整指南
|
|
1797
|
+
- 两种模式详细对比
|
|
1798
|
+
- 多种部署方式示例(通用/Docker/PaaS)
|
|
1799
|
+
- 模式切换步骤说明
|
|
1800
|
+
- 故障排查指南
|
|
1801
|
+
- `README.md` 新增运行模式章节
|
|
1802
|
+
- `SCRIPTS_GUIDE.md` 计划更新(待添加)
|
|
1803
|
+
- 更新 `DELETE_POST_GUIDE.md` - 删除功能实现原理说明
|
|
1804
|
+
- 详细说明标记删除(Soft Delete)机制
|
|
1805
|
+
- 数据库字段设计和查询过滤机制
|
|
1806
|
+
- 双向同步删除机制
|
|
1807
|
+
- 数据保留策略和恢复方法
|
|
1808
|
+
|
|
1809
|
+
技术细节
|
|
1810
|
+
- 新增 `handlers/channel_listener.py` - 频道消息监听器模块(增强版)
|
|
1811
|
+
- 并发控制机制(`_processing_messages` 和 `_processing_lock`)
|
|
1812
|
+
- 文本清理和规范化函数(`clean_text`、`extract_tags_from_text`)
|
|
1813
|
+
- 字段长度限制常量(防止数据库溢出)
|
|
1814
|
+
- 完善的错误处理和日志记录
|
|
1815
|
+
- 新增 `utils/webhook_server.py` - Webhook 服务器模块
|
|
1816
|
+
- 更新 `config/settings.py` - 支持 Webhook 配置项
|
|
1817
|
+
- 更新 `main.py` - 双模式启动逻辑
|
|
1818
|
+
- 新增依赖:`aiohttp>=3.9.0`(用于 Webhook)
|
|
1819
|
+
- 新增配置项:`RUN_MODE`、`WEBHOOK_URL`、`WEBHOOK_PORT`、`WEBHOOK_PATH`、`WEBHOOK_SECRET_TOKEN`
|
|
1820
|
+
|
|
1821
|
+
改进
|
|
1822
|
+
- **删除功能优化:标记删除机制**
|
|
1823
|
+
- 采用标记删除(Soft Delete)替代物理删除,保留所有历史数据
|
|
1824
|
+
- 数据库记录永久保留,仅标记 `is_deleted = 1` 状态
|
|
1825
|
+
- 所有用户查询自动过滤已删除的帖子(`is_deleted = 0`)
|
|
1826
|
+
- 统计数据保留在数据库中,可用于历史分析
|
|
1827
|
+
- 支持双向同步删除(机器人删除 ↔ 频道删除)
|
|
1828
|
+
- 添加 `is_deleted` 字段索引,提升查询性能
|
|
1829
|
+
- 添加删除状态检查,避免重复删除已标记的帖子
|
|
1830
|
+
- 误删的帖子可以通过数据库操作恢复
|
|
1831
|
+
- 更新 `DELETE_POST_GUIDE.md` 文档,详细说明实现原理
|
|
1832
|
+
|
|
1833
|
+
修复
|
|
1834
|
+
- **频道消息监听器** - 增强错误处理,防止异常导致监听器崩溃
|
|
1835
|
+
- **消息重复处理** - 添加并发控制,防止同一消息被重复处理
|
|
1836
|
+
- **文本长度限制** - 添加字段长度限制,防止数据库溢出
|
|
1837
|
+
- **标签提取** - 改进标签提取逻辑,支持多种格式
|
|
1838
|
+
- **搜索索引为空问题** - 修复索引为空时搜索无结果的问题,自动重建索引
|
|
1839
|
+
- **中文搜索部分匹配** - 修复使用 SimpleAnalyzer 时中文无法部分匹配的问题
|
|
1840
|
+
- **端口冲突问题** - health.py 仅在 Polling 模式启动,避免与 Webhook 服务器冲突
|
|
1841
|
+
- **Webhook 服务器** - 使用 aiohttp 同时处理 `/webhook` 和 `/health` 端点
|
|
1842
|
+
- **优雅关闭** - 正确清理 Webhook 服务器和 Telegram webhook 设置
|
|
1843
|
+
|
|
1844
|
+
测试
|
|
1845
|
+
- 本地测试:Polling 和 Webhook 模式均通过
|
|
1846
|
+
- 生产部署:256MB 内存环境下稳定运行
|
|
1847
|
+
- Telegram Webhook:成功设置并接收消息
|
|
1848
|
+
- 健康检查:两种模式均正常响应
|
|
1849
|
+
- 验证平台:PaaS 平台、VPS 服务器、Docker 容器
|
|
1850
|
+
---
|
|
1851
|
+
|
|
1852
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
### Bug Fixes
|
|
1856
|
+
|
|
1857
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
### Bug Fixes
|
|
1861
|
+
|
|
1862
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
1863
|
+
|
|
1864
|
+
## [2.2.0] - 2025-10-25
|
|
1865
|
+
|
|
1866
|
+
### 新增
|
|
1867
|
+
|
|
1868
|
+
- **一键安装脚本** (`install.sh`):
|
|
1869
|
+
- 自动检测系统环境(Linux/macOS)
|
|
1870
|
+
- 智能检查并安装依赖(Docker/Python)
|
|
1871
|
+
- 交互式选择部署方式(Docker/Systemd/直接运行)
|
|
1872
|
+
- 集成配置向导,引导完成初始配置
|
|
1873
|
+
- 支持多种 Linux 发行版(Ubuntu/Debian/CentOS/RHEL)
|
|
1874
|
+
|
|
1875
|
+
- **更新脚本** (`update.sh`):
|
|
1876
|
+
- 自动备份数据和配置
|
|
1877
|
+
- 检测当前部署方式并智能更新
|
|
1878
|
+
- 显示更新内容预览
|
|
1879
|
+
- 支持暂存和恢复本地更改
|
|
1880
|
+
- 自动重启服务
|
|
1881
|
+
|
|
1882
|
+
- **重启脚本** (`restart.sh`):
|
|
1883
|
+
- 智能查找并停止所有运行中的机器人进程
|
|
1884
|
+
- 优雅停止(SIGTERM)+ 强制终止(SIGKILL,超时10秒)
|
|
1885
|
+
- 配置文件验证(可选,与 `check_config.py` 集成)
|
|
1886
|
+
- 支持 `--stop` 参数仅停止不重启
|
|
1887
|
+
- 兼容 macOS 和 Linux 系统
|
|
1888
|
+
- 自动处理多个进程实例
|
|
1889
|
+
|
|
1890
|
+
- **卸载脚本** (`uninstall.sh`):
|
|
1891
|
+
- 优雅停止所有服务
|
|
1892
|
+
- 可选择保留或删除数据
|
|
1893
|
+
- 自动备份数据(如果选择删除)
|
|
1894
|
+
- 清理 Systemd/Docker 相关配置
|
|
1895
|
+
|
|
1896
|
+
### 文档
|
|
1897
|
+
|
|
1898
|
+
- **README.md 全面优化**:
|
|
1899
|
+
- 全新的视觉设计,使用表格和图标
|
|
1900
|
+
- 添加项目亮点展示区域
|
|
1901
|
+
- 更清晰的快速开始指南
|
|
1902
|
+
- 优化命令列表展示
|
|
1903
|
+
- 增加详细的使用示例
|
|
1904
|
+
- 使用 Shields.io 徽章
|
|
1905
|
+
- 更清晰的项目结构展示
|
|
1906
|
+
|
|
1907
|
+
- **新增 DEPLOYMENT.md**:
|
|
1908
|
+
- 详细的部署指南
|
|
1909
|
+
- 四种部署方式完整说明
|
|
1910
|
+
- 配置说明和示例
|
|
1911
|
+
- 更新和维护指南
|
|
1912
|
+
- 故障排查手册
|
|
1913
|
+
- 安全建议
|
|
1914
|
+
|
|
1915
|
+
### 改进
|
|
1916
|
+
|
|
1917
|
+
- **部署脚本增强**:
|
|
1918
|
+
- 所有脚本添加彩色输出(红/绿/黄/蓝)
|
|
1919
|
+
- 统一的错误处理和用户反馈
|
|
1920
|
+
- 更详细的进度提示
|
|
1921
|
+
- 支持非交互式运行(Docker 环境)
|
|
1922
|
+
- 添加执行权限检查
|
|
1923
|
+
|
|
1924
|
+
- **Makefile 扩展**:
|
|
1925
|
+
- 新增 `check` 命令(检查配置)
|
|
1926
|
+
- 新增 `update` 命令(更新到最新版本)
|
|
1927
|
+
- 优化 `backup` 命令(包含时间戳)
|
|
1928
|
+
- 改进 `status` 命令(显示资源使用)
|
|
1929
|
+
|
|
1930
|
+
### 新增文件
|
|
1931
|
+
|
|
1932
|
+
- `install.sh` - 一键安装脚本(支持多平台)
|
|
1933
|
+
- `update.sh` - 智能更新脚本
|
|
1934
|
+
- `uninstall.sh` - 优雅卸载脚本
|
|
1935
|
+
- `DEPLOYMENT.md` - 完整部署文档
|
|
1936
|
+
|
|
1937
|
+
### 优化
|
|
1938
|
+
|
|
1939
|
+
- README 使用更专业的排版和布局
|
|
1940
|
+
- 添加更多视觉元素(图标、徽章、表格)
|
|
1941
|
+
- 统一文档风格和格式
|
|
1942
|
+
- 改进代码示例的可读性
|
|
1943
|
+
- 优化移动端阅读体验
|
|
1944
|
+
|
|
1945
|
+
### 文档清理
|
|
1946
|
+
|
|
1947
|
+
- **精简 README.md**(从 918 行减少到 ~500 行):
|
|
1948
|
+
- 移除与 DEPLOYMENT.md 重复的部署细节
|
|
1949
|
+
- 移除详细的故障排查内容(指向部署指南)
|
|
1950
|
+
- 移除冗长的配置示例(保留最小配置)
|
|
1951
|
+
- 移除重复的 Docker、更新、安全建议章节
|
|
1952
|
+
- 精简使用示例和依赖列表
|
|
1953
|
+
- 保持核心功能展示和命令参考
|
|
1954
|
+
|
|
1955
|
+
- **删除重复/过时文档**:
|
|
1956
|
+
- `DEPLOY_GUIDE.md`(与 DEPLOYMENT.md 重复)
|
|
1957
|
+
- `PROJECT_READY.md`(临时项目状态文件)
|
|
1958
|
+
- `PRIVACY_PROTECTION_SUMMARY.md`(临时总结文件)
|
|
1959
|
+
- `GITHUB_FILES.md`、`GITHUB_UPLOAD_GUIDE.md`、`PUSH_TO_GITHUB.md`(开发临时文件)
|
|
1960
|
+
- `隐私保护完成.md`(中文临时文件)
|
|
1961
|
+
|
|
1962
|
+
- **文档结构优化**:
|
|
1963
|
+
- README:项目介绍、快速开始、核心功能、命令参考
|
|
1964
|
+
- DEPLOYMENT.md:详细部署、配置、更新、故障排查
|
|
1965
|
+
- ADMIN_GUIDE.md:管理功能详解
|
|
1966
|
+
- CHANGELOG.md:版本历史记录
|
|
1967
|
+
|
|
1968
|
+
---
|
|
1969
|
+
|
|
1970
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
### Bug Fixes
|
|
1974
|
+
|
|
1975
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
### Bug Fixes
|
|
1979
|
+
|
|
1980
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
1981
|
+
|
|
1982
|
+
## [2.1.0] - 2025-10-28
|
|
1983
|
+
|
|
1984
|
+
### 新增
|
|
1985
|
+
|
|
1986
|
+
- **搜索引擎自动适配功能**
|
|
1987
|
+
- 启动时自动检测索引兼容性
|
|
1988
|
+
- 自动备份和重建不兼容的索引
|
|
1989
|
+
- 智能分词器切换(jieba ↔ simple)
|
|
1990
|
+
- 优雅降级处理,确保服务稳定性
|
|
1991
|
+
- 修改配置后重启即可,无需手动重建索引
|
|
1992
|
+
|
|
1993
|
+
- **内存优化增强**
|
|
1994
|
+
- 支持移除 jieba 依赖以节省 ~140MB 内存
|
|
1995
|
+
- 优化 Docker 健康检查机制
|
|
1996
|
+
- 改进错误处理和日志输出
|
|
1997
|
+
|
|
1998
|
+
### 优化
|
|
1999
|
+
|
|
2000
|
+
- **搜索引擎初始化**
|
|
2001
|
+
- 添加 `index.exists_in()` 异常捕获
|
|
2002
|
+
- 改进索引重建流程的错误处理
|
|
2003
|
+
- 更好的备份和恢复机制
|
|
2004
|
+
|
|
2005
|
+
- **文档更新**
|
|
2006
|
+
- 更新 MEMORY_USAGE.md 添加自动适配说明
|
|
2007
|
+
- 优化 README.md 内存优化部分
|
|
2008
|
+
- 整合部署相关文档
|
|
2009
|
+
|
|
2010
|
+
### 修复
|
|
2011
|
+
|
|
2012
|
+
- **索引兼容性问题**
|
|
2013
|
+
- 修复分词器不可用时的索引加载错误
|
|
2014
|
+
- 修复索引检查失败导致启动失败的问题
|
|
2015
|
+
- 改进备份失败时的降级处理
|
|
2016
|
+
|
|
2017
|
+
---
|
|
2018
|
+
|
|
2019
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
2020
|
+
|
|
2021
|
+
|
|
2022
|
+
### Bug Fixes
|
|
2023
|
+
|
|
2024
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
### Bug Fixes
|
|
2028
|
+
|
|
2029
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
### 新增
|
|
2033
|
+
|
|
2034
|
+
- **搜索引擎**: 集成 Whoosh 全文搜索引擎,支持中文分词(基于 jieba)
|
|
2035
|
+
- 按关键词搜索投稿内容
|
|
2036
|
+
- 按标签快速查找
|
|
2037
|
+
- 搜索结果按相关度和热度排序
|
|
2038
|
+
- **数据迁移工具**: 提供 `migrate_to_search.py` 将现有投稿导入搜索索引
|
|
2039
|
+
|
|
2040
|
+
### 改进
|
|
2041
|
+
|
|
2042
|
+
- **部署脚本增强**:
|
|
2043
|
+
- `deploy.sh` 支持 `--rebuild` 和 `--clean` 选项
|
|
2044
|
+
- `start.sh` 增加更详细的启动检查和功能状态展示
|
|
2045
|
+
- 优化 Makefile,新增 `migrate`、`check`、`dev` 等命令
|
|
2046
|
+
- **Docker 优化**:
|
|
2047
|
+
- 容器名称更新为 `telesubmit-v2`
|
|
2048
|
+
- 增加 g++ 编译器支持(用于 Whoosh 编译)
|
|
2049
|
+
- 优化健康检查逻辑(检查主进程而非仅配置文件)
|
|
2050
|
+
- 内存限制提升至 1GB(搜索功能需要)
|
|
2051
|
+
- 新增 `data/search_index` 目录挂载
|
|
2052
|
+
- **构建优化**:
|
|
2053
|
+
- 更新 `.dockerignore`,排除更多不必要文件
|
|
2054
|
+
- 更新 `.gitignore`,忽略搜索索引文件
|
|
2055
|
+
|
|
2056
|
+
### 依赖更新
|
|
2057
|
+
|
|
2058
|
+
- 新增 `whoosh >= 2.7.4` - 全文搜索引擎
|
|
2059
|
+
- 新增 `jieba >= 0.42.1` - 中文分词库
|
|
2060
|
+
|
|
2061
|
+
### 文档
|
|
2062
|
+
|
|
2063
|
+
- 新增搜索功能相关文档(SEARCH_INTEGRATION.md 等)
|
|
2064
|
+
- 更新部署脚本的帮助信息
|
|
2065
|
+
|
|
2066
|
+
---
|
|
2067
|
+
|
|
2068
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
### Bug Fixes
|
|
2072
|
+
|
|
2073
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
### Bug Fixes
|
|
2077
|
+
|
|
2078
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
2079
|
+
|
|
2080
|
+
## [2.0.x] - 之前版本
|
|
2081
|
+
|
|
2082
|
+
### 修复
|
|
2083
|
+
|
|
2084
|
+
- **索引管理器修复**:
|
|
2085
|
+
- 修复数据库列名错误:`id` → `message_id`
|
|
2086
|
+
- 修复缺失的导入:添加 `os` 和 `shutil`
|
|
2087
|
+
- 统一返回值类型:所有操作返回 `dict` 格式
|
|
2088
|
+
- 简化索引优化逻辑避免 API 兼容性问题
|
|
2089
|
+
|
|
2090
|
+
- **修复数据库列名错误**:
|
|
2091
|
+
- `published_posts` 表的主键是 `message_id`,没有 `id` 列
|
|
2092
|
+
- 删除相关说明中误用 `id` 的示例,统一为 `message_id`
|
|
2093
|
+
|
|
2094
|
+
### 之前新增
|
|
2095
|
+
|
|
2096
|
+
- **帖子删除功能(OWNER 专用)**:
|
|
2097
|
+
- 搜索结果中添加删除按钮(仅 OWNER 可见)
|
|
2098
|
+
- `/myposts` 命令中添加删除按钮(OWNER 专用)
|
|
2099
|
+
- 批量删除命令 `/delete_posts` 支持:
|
|
2100
|
+
- 单个删除:`/delete_posts 123`
|
|
2101
|
+
- 多个删除:`/delete_posts 123 456 789`
|
|
2102
|
+
- 范围删除:`/delete_posts 100-110`
|
|
2103
|
+
- 混合删除:`/delete_posts 100-110 150 200-205`
|
|
2104
|
+
- 最多一次删除 50 个帖子
|
|
2105
|
+
- 完善的权限检查机制(仅 OWNER_ID 用户可删除)
|
|
2106
|
+
- 删除操作包括:
|
|
2107
|
+
- 从数据库标记为已删除(保留历史数据)
|
|
2108
|
+
- 从搜索索引删除
|
|
2109
|
+
- 删除关联的多媒体消息索引
|
|
2110
|
+
- 不删除频道中的实际消息(需手动删除)
|
|
2111
|
+
- 删除后标签统计自动更新
|
|
2112
|
+
- 删除后搜索索引实时更新
|
|
2113
|
+
- 详细的删除统计报告
|
|
2114
|
+
|
|
2115
|
+
- **文件名搜索支持**:
|
|
2116
|
+
- 搜索引擎新增 `filename` 字段,支持文件名搜索
|
|
2117
|
+
- 文档上传时自动提取并保存文件名
|
|
2118
|
+
- 多字段搜索:标题、简介、标签、**文件名**
|
|
2119
|
+
- 完全兼容旧数据(历史投稿无文件名)
|
|
2120
|
+
|
|
2121
|
+
### 改进
|
|
2122
|
+
|
|
2123
|
+
- 数据库 schema 更新:
|
|
2124
|
+
- `published_posts` 表新增 `filename` 字段
|
|
2125
|
+
- 文档存储格式升级:`document:file_id:filename`
|
|
2126
|
+
- 完全向后兼容旧格式
|
|
2127
|
+
|
|
2128
|
+
- 搜索引擎优化:
|
|
2129
|
+
- Whoosh Schema 包含 filename 字段
|
|
2130
|
+
- 支持中文分词的文件名搜索
|
|
2131
|
+
- 查询解析器扩展至 4 个字段
|
|
2132
|
+
- 修复搜索结果中文件名显示问题
|
|
2133
|
+
|
|
2134
|
+
### 新增工具
|
|
2135
|
+
|
|
2136
|
+
- `migrate_add_filename.py` - 数据库 schema 迁移工具
|
|
2137
|
+
- `migrate_extract_filenames.py` - 文件名提取迁移说明
|
|
2138
|
+
- `FILENAME_SEARCH_UPGRADE.md` - 详细升级指南
|
|
2139
|
+
- `test_delete_feature.py` - 删除功能测试脚本
|
|
2140
|
+
- `DELETE_POST_GUIDE.md` - 帖子删除功能详细指南
|
|
2141
|
+
|
|
2142
|
+
### 安全改进
|
|
2143
|
+
|
|
2144
|
+
- 更新 `.gitignore`,增强临时文件保护:
|
|
2145
|
+
- 自动忽略所有 `test_*.py`、`fix_*.py`、`fetch_*.py` 等临时脚本
|
|
2146
|
+
- 自动忽略 `*_FIX.md`、`*_SUMMARY.md` 等临时文档
|
|
2147
|
+
- 保护敏感数据和测试文件不被误提交
|
|
2148
|
+
|
|
2149
|
+
### 文档
|
|
2150
|
+
|
|
2151
|
+
- 搜索帮助文档更新,说明文件名搜索功能
|
|
2152
|
+
- 添加文件名搜索使用示例
|
|
2153
|
+
- 更新 README,明确说明搜索范围包含文件名
|
|
2154
|
+
- 移除 README 中对 `docs/INDEX.md` 的失效链接
|
|
2155
|
+
|
|
2156
|
+
---
|
|
2157
|
+
|
|
2158
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
2159
|
+
|
|
2160
|
+
|
|
2161
|
+
### Bug Fixes
|
|
2162
|
+
|
|
2163
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
### Bug Fixes
|
|
2167
|
+
|
|
2168
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
2169
|
+
|
|
2170
|
+
## [2.0.0] - 2025-10-25
|
|
2171
|
+
|
|
2172
|
+
### 重大更新
|
|
2173
|
+
|
|
2174
|
+
这是一个完全重写的版本,采用了更现代化的架构和更好的代码组织。
|
|
2175
|
+
|
|
2176
|
+
### 新增
|
|
2177
|
+
|
|
2178
|
+
- **模块化架构**: 将代码拆分为多个模块(handlers, utils, config),更易维护
|
|
2179
|
+
- **环境变量支持**: 支持通过环境变量配置,方便容器化部署
|
|
2180
|
+
- **改进的会话管理**: 使用数据库存储用户会话,支持并发处理
|
|
2181
|
+
- **黑名单系统**: 完整的黑名单管理功能,支持添加/移除/查询
|
|
2182
|
+
- **搜索功能**: 支持按关键词、标签、投稿人搜索历史投稿
|
|
2183
|
+
- **统计功能**: 详细的投稿统计信息和用户排行
|
|
2184
|
+
- **批量操作**: 支持一次投稿多个文件/图片
|
|
2185
|
+
- **更好的错误处理**: 更友好的错误提示和异常处理
|
|
2186
|
+
- **日志系统**: 完整的日志记录,方便调试和监控
|
|
2187
|
+
|
|
2188
|
+
### 改进
|
|
2189
|
+
|
|
2190
|
+
- **性能优化**: 使用异步操作,提升响应速度
|
|
2191
|
+
- **代码质量**: 更好的代码组织和文档注释
|
|
2192
|
+
- **配置管理**: 统一的配置管理,支持默认值和验证
|
|
2193
|
+
- **用户体验**: 更清晰的提示信息和交互流程
|
|
2194
|
+
- **安全性**: 添加权限检查和输入验证
|
|
2195
|
+
|
|
2196
|
+
### 架构变化
|
|
2197
|
+
|
|
2198
|
+
```
|
|
2199
|
+
v1.x (单文件) → v2.x (模块化)
|
|
2200
|
+
main.py (379行) → main.py (主入口)
|
|
2201
|
+
├── config/
|
|
2202
|
+
│ └── settings.py (配置管理)
|
|
2203
|
+
├── handlers/
|
|
2204
|
+
│ ├── basic_handlers.py (基础命令)
|
|
2205
|
+
│ ├── submission_handlers.py (投稿处理)
|
|
2206
|
+
│ ├── admin_handlers.py (管理功能)
|
|
2207
|
+
│ └── search_handlers.py (搜索功能)
|
|
2208
|
+
└── utils/
|
|
2209
|
+
├── database.py (数据库操作)
|
|
2210
|
+
├── helpers.py (辅助函数)
|
|
2211
|
+
└── blacklist.py (黑名单管理)
|
|
2212
|
+
```
|
|
2213
|
+
|
|
2214
|
+
### 依赖更新
|
|
2215
|
+
|
|
2216
|
+
- `python-telegram-bot`: 升级到 21.10
|
|
2217
|
+
- 新增 `python-dotenv`: 支持 .env 文件
|
|
2218
|
+
- 新增 `aiosqlite`: 异步数据库操作
|
|
2219
|
+
- 新增 `psutil`: 系统监控
|
|
2220
|
+
|
|
2221
|
+
### 迁移指南
|
|
2222
|
+
|
|
2223
|
+
从 v1.x 迁移到 v2.0:
|
|
2224
|
+
|
|
2225
|
+
1. **配置文件**:
|
|
2226
|
+
- 旧版配置可以继续使用
|
|
2227
|
+
- 建议使用新的 `config.ini.example` 作为模板
|
|
2228
|
+
|
|
2229
|
+
2. **数据库**:
|
|
2230
|
+
- 旧的 `submissions.db` 可以继续使用
|
|
2231
|
+
- 会自动创建新的 `user_sessions.db` 用于会话管理
|
|
2232
|
+
|
|
2233
|
+
3. **命令变化**:
|
|
2234
|
+
- 所有命令保持向后兼容
|
|
2235
|
+
- 新增了搜索和统计命令
|
|
2236
|
+
|
|
2237
|
+
### 破坏性变化
|
|
2238
|
+
|
|
2239
|
+
- 配置文件读取逻辑改变,现在支持环境变量优先
|
|
2240
|
+
- 某些内部 API 已重构,如果你基于 v1.x 做了自定义修改,需要适配新架构
|
|
2241
|
+
|
|
2242
|
+
### 修复
|
|
2243
|
+
|
|
2244
|
+
- 修复了长时间运行后的内存泄漏问题
|
|
2245
|
+
- 修复了并发投稿时的状态冲突
|
|
2246
|
+
- 修复了特殊字符处理的问题
|
|
2247
|
+
- 改进了文件上传的稳定性
|
|
2248
|
+
|
|
2249
|
+
### 文档
|
|
2250
|
+
|
|
2251
|
+
- 新增快速开始指南 (QUICKSTART.md)
|
|
2252
|
+
- 更新了 README 文档
|
|
2253
|
+
- 添加了详细的代码注释
|
|
2254
|
+
|
|
2255
|
+
---
|
|
2256
|
+
|
|
2257
|
+
## [2.64.2](https://github.com/redtidev1918/TelePost/compare/v2.64.1...v2.64.2) (2026-09-24)
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
### Bug Fixes
|
|
2261
|
+
|
|
2262
|
+
* **automation:** await reply_text — /schedule produced zero response ([fb46a4a](https://github.com/redtidev1918/TelePost/commit/fb46a4a))## [2.64.1](https://github.com/redtidev1918/TelePost/compare/v2.64.0...v2.64.1) (2026-09-24)
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
### Bug Fixes
|
|
2266
|
+
|
|
2267
|
+
* **automation:** /schedule no response on fresh DB; add interactive wizard ([68013f9](https://github.com/redtidev1918/TelePost/commit/68013f9))---
|
|
2268
|
+
|
|
2269
|
+
## [1.0.0] - 初始版本
|
|
2270
|
+
|
|
2271
|
+
- 基础投稿功能
|
|
2272
|
+
- 简单的管理命令
|
|
2273
|
+
- 单文件实现
|