- Track new posts from hytale.com/api/blog/post/published
- Send Telegram alerts with cover image (sendPhoto) and inline URL button
- Send Discord webhook embeds with full-size image and role mentions
- Add sendPhoto method to TelegramClient with inline keyboard support
- Extend discord-webhooks with DiscordMessage type, mentionRoles config
- New module with batching queue, per-webhook event filtering
- Hytale orange (#F26430) embeds with timestamps
- Retry on 429 rate limits
- Integrated into all 5 tracker modules
Adds new module to track CreatorPressKit.zip file size changes via HEAD requests.
Alerts with old/new size and diff. Also updates sign-token.ts with correct account ID.
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement REST API using Hono framework with token-based auth
- Add JWT middleware for scope-based access control
- Create version endpoints: launcher, downloader, patches, server
- Add account lookup endpoints (by UUID or username)
- Fetch server software with signed URLs and full version data
- Add token signing utility script for testing
- Support configurable account UUID for game session creation
- Integrate API server with existing module system
Co-Authored-By: Claude <noreply@anthropic.com>
- Add write serialization to prevent concurrent writes
- Retry with exponential backoff on Windows EBUSY
- Use direct write instead of temp file + rename
Co-Authored-By: Claude <noreply@anthropic.com>
Previously only wrote dirty keys, causing data loss when multiple
modules wrote concurrently. Now writes full state atomically using
temp file + rename pattern.
Co-Authored-By: Claude <noreply@anthropic.com>
Previously, tokens with expires_in were recalculated as Date.now() +
3600s on each load, ignoring the actual JWT expiry. Now decodes the
JWT's exp claim to get true expiry and resaves file with expires_at.
Co-Authored-By: Claude <noreply@anthropic.com>
- HEAD request to game-patches.hytale.com for content-length
- Track lastPatchId in state to calculate patch delta
- Display formatted size (~55.4 MiB) in update notifications
Co-Authored-By: Claude <noreply@anthropic.com>
Fetch replied message content/author when Discord message type is REPLY,
display as Telegram blockquote with link to original.
Co-Authored-By: Claude <noreply@anthropic.com>