Commit Graph
101 Commits
Author SHA1 Message Date
MythEclipse b91b276214 feat: add support for batch uploads of media groups to Telegram with debounce handling 2026-05-18 21:31:20 +07:00
MythEclipse 0bc12651db fix: clean up logger info message formatting and remove unused import in rate limit tests 2026-05-18 21:19:38 +07:00
MythEclipse 825e969569 feat: implement multi-bot support for Telegram API with rate limit handling and add task queue for uploads 2026-05-18 21:18:16 +07:00
MythEclipse 721fa3db7d feat: implement auto-retry for Telegram API requests on error 429 and update documentation 2026-05-18 21:02:38 +07:00
MythEclipseandClaude Opus 4.7 91cfee0b37 fix: load BOT_TOKEN from process.env in tests to prevent leaks
- Update test/bot.test.ts to use process.env.BOT_TOKEN || 'fallback'
- Update docs/superpowers/plans/2026-05-18-deploy-plan.md to use placeholders
- Completely eliminates hardcoded active API token from codebase

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:55:03 +07:00
MythEclipseandClaude Opus 4.7 525348b1f3 fix: make forwardToStorage fully dynamic based on fileType
- Replace forceDocument boolean with fileType string in forwardToStorage
- Dynamically call matching sendPhoto, sendAudio, sendVideo, sendVoice, sendAnimation, sendSticker, or sendDocument Telegraf API method
- Correctly extract uploaded file details based on what Telegram returned
- Fixes IMAGE_PROCESS_FAILED 500 error when uploading ogg audio, video, sticker, or voice notes via HTTP
- Update upload.ts, bot.ts, and test suites to match the new dynamic signature

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:52:46 +07:00
MythEclipseandClaude Opus 4.7 bf6d5f04c4 fix: bundle migration script and ensure file_hash column exists
- Compile src/db/migrate.ts to dist/migrate.js during build
- Copy dist/migrate.js to Stage 2 (runner) inside Dockerfile
- Run bun dist/migrate.js on db:migrate command
- Modify schema.sql to use CREATE TABLE IF NOT EXISTS and ALTER TABLE to add file_hash to existing database instances on VPS

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:46:21 +07:00
MythEclipse b2de5f583d feat: add design document for multi-format upload and anti-duplication feature 2026-05-18 19:42:17 +07:00
MythEclipse a0262e2d46 style: run formatter on modified files 2026-05-18 19:41:51 +07:00
MythEclipseandClaude Opus 4.7 ea4341fdfe feat: implement deduplication and all media types in bot listener
- Expand registered bot listener to support sticker and video_note media types
- Check database for existing telegramFileUniqueId to bypass forwarding duplicates
- Update tests to assert deduplication and new formats handling in bot.test.ts

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:41:16 +07:00
MythEclipseandClaude Opus 4.7 04a2e52250 feat: implement deduplication in HTTP upload router
- Compute SHA-256 hash using computeHash for multipart and JSON uploads
- Query database for existing file records with the same hash
- Return existing metadata and download URL immediately on duplicate match without reforwarding to Telegram
- Include fileHash in newly inserted file database records

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:39:55 +07:00
MythEclipseandClaude Opus 4.7 4e805689c1 feat: extend file type classification and implement computeHash
- Add sticker (webp) and video_note to classification mapping and file limits
- Handle unknown mime or caption fallback to document
- Implement computeHash utility using Bun.CryptoHasher for sha256 checksums
- Update and add comprehensive tests in file.test.ts

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:38:12 +07:00
MythEclipseandClaude Opus 4.7 22c2133b24 feat: add fileHash column to files schema
Update files database schema and test suite to support fileHash property.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 19:36:19 +07:00
MythEclipse 3d2500ed7f fix: auto-append file extension based on magic bytes or mime type if missing 2026-05-18 09:20:03 +07:00
MythEclipse 5de424bf8e ci: add write permission for packages to GHCR pushing 2026-05-18 08:56:22 +07:00
MythEclipse ed7f607ee4 style: sort imports in telegram test to satisfy Biome check 2026-05-18 08:55:22 +07:00
MythEclipse ed88069e60 fix: assert sendDocument with config.storageChatId to match dynamic mock env in CI 2026-05-18 08:54:24 +07:00
MythEclipse 910d29d5b9 fix: upgrade Bun setup version to latest to support modern lockfile format 2026-05-18 08:53:44 +07:00
MythEclipse c0827b09c5 fix: make DB tests more robust by checking definition rather than strict module identity 2026-05-18 08:42:49 +07:00
MythEclipse 7f1178d72b Merge branch 'worktree-agent-a7a26e7873ab5b94e' 2026-05-18 08:41:37 +07:00
MythEclipseandClaude Opus 4.7 1fc4080466 ci: add GitHub Actions pipeline for tests, Docker build, and deployment
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 08:41:29 +07:00
MythEclipse 06a1b38c02 Merge branch 'worktree-agent-aae37f6f3cccac163' 2026-05-18 08:41:00 +07:00
MythEclipse e4c074c81f docs: add deployment design and implementation plan 2026-05-18 08:40:56 +07:00
MythEclipseandClaude Opus 4.7 b41fdb4a88 chore: add docker-compose.yml with Traefik configurations
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 08:40:42 +07:00
MythEclipseandClaude Opus 4.7 d7f5180eab chore: add Dockerfile and dockerignore for production build
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 08:39:57 +07:00
MythEclipse 2c1c5ad638 fix: add Bun database migration runner 2026-05-18 08:25:24 +07:00
MythEclipse 91986d1d51 fix: upload binary files to Telegram with source payload 2026-05-18 08:18:55 +07:00
MythEclipse 9aedc59b69 fix: refine Swagger docs headers and dynamic examples 2026-05-18 07:43:15 +07:00
MythEclipse 6feca3564a feat: add Swagger OpenAPI documentation endpoints 2026-05-18 07:39:27 +07:00
MythEclipse aae8ebfbcf chore: update bun.lock to include @biomejs/biome, typescript, and related CLI packages 2026-05-18 07:30:47 +07:00
MythEclipse 825a8f42cb chore: add build script and target bun bundle output 2026-05-18 07:30:33 +07:00
MythEclipse cf79a1f195 style: format and lint codebase using Biome v2 2026-05-18 07:29:01 +07:00
MythEclipse 3f4e697733 feat: migrate entire codebase to TypeScript 2026-05-18 07:27:06 +07:00
MythEclipse 9c5a855f7d chore: configure typescript, biome, and package scripts 2026-05-18 07:23:22 +07:00
MythEclipse 252b2e4a1f test: isolate module mocking and add sequential test script 2026-05-18 07:16:30 +07:00
MythEclipseandClaude Opus 4.7 434905313c refactor: replace TypeScript with ESM JavaScript
Remove index.ts and tsconfig.json, update package.json, and install dependencies.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:15:05 +07:00
MythEclipseandClaude Opus 4.7 99b820709d feat: setup HTTP server and bootstrap application
Setup HTTP server with Bun.serve and bootstrap Telegram bot and other services.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:14:35 +07:00
MythEclipseandClaude Opus 4.7 4996d7548a feat: add Telegram bot handler
Implement Telegraf bot instance with file upload/forward handlers and mock test verification.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:13:17 +07:00
MythEclipseandClaude Opus 4.7 be93a06918 feat: add health check route
Implement handleHealth endpoint for Bun.serve to verify DB connection.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:10:55 +07:00
MythEclipseandClaude Opus 4.7 d915814277 feat: add file routes (download redirect & info)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:09:29 +07:00
MythEclipseandClaude Opus 4.7 d7b8e9dd08 feat: add upload API handler (multipart & base64)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:08:13 +07:00
MythEclipseandClaude Opus 4.7 1e29433d5d feat: add Telegram API utilities
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:06:21 +07:00
MythEclipseandClaude Opus 4.7 b621a73ca9 feat: add file validation utilities
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:02:14 +07:00
MythEclipseandClaude Opus 4.7 db71f29288 feat: add in-memory rate limiter
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:01:32 +07:00
MythEclipseandClaude Opus 4.7 281329a1af feat: add Drizzle ORM database layer
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:00:46 +07:00
MythEclipseandClaude Opus 4.7 f9c0bc0768 feat: add environment variables validation
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 06:58:55 +07:00
MythEclipseandClaude Opus 4.7 77032538e8 feat: add Winston logger setup
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 06:53:33 +07:00
MythEclipseandClaude Opus 4.7 25c82bcf0b chore: add dependencies and configuration
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 06:51:06 +07:00
MythEclipse f423e1f25d docs: add telegram uploader backend implementation plan 2026-05-18 06:48:53 +07:00
MythEclipse 3fb3dc3d40 docs: add telegram uploader backend design spec 2026-05-18 06:42:42 +07:00