- drop lite tag-budget contracts, budget routes, renewal-mode distribution, and empty dashboard chart payloads while keeping only data-backed statistics views
- version worker-lite auth credentials, migrate legacy scrypt logins, and cap auto-renew batches to reduce login and cron worker overhead
- extend the before-after perf harness for login, overview, and auto-renew with dirty-current support and .tmp report output
- switch SubTracker backup and Wallos import from token-backed preview persistence to stateless inspect plus direct commit payloads
- align shared schemas, api routes, and import modals while keeping the SubTracker backup zip format unchanged
- move Wallos zip logo upload work out of inspect, add direct-payload coverage tests, and extend lite perf harnesses with import before-after baselines
- sync the main-branch brand logo, login header, and sidebar update entry while keeping lite labels
- wire the frontend version update query and commit-based update modal on the lite surface
- move forgot-password controls back into credentials, restore About or Credits, and keep worker-specific hints intact
- refresh README navigation and add frontend regression coverage for branding, settings, and version entry points
- add subscription value calculation for current cycle, remaining days, ratio, and base-currency display
- block direct deletion of active subscriptions and improve batch delete skip feedback
- align subscription list tag overflow and detail reminder rendering with the main branch behavior
- cover route, value service, tag helper, reminder helper, and detail drawer changes with tests
- add worker-compatible forgot-password request or reset routes with shared schemas and settings support
- introduce commit-based lite version update API contracts and runtime bindings
- align direct notification presentation, webhook delivery persistence, and worker-lite delegate fallbacks
- cover auth, settings, version, forgot-password, and notification regressions with tests
- add the reminder rule preview component to settings and subscription forms
- support validation, sorting, de-duplication, active toggle state and transition animation
- reuse default reminder rules when subscription-level rules are empty
- cover reminder rule formatting, preview fallback and de-duplication with unit tests
- add statistics page AI summary card with auto-generate and markdown rendering
- introduce dashboard summary query/composable and markdown sanitization utility
- add marked and dompurify dependencies for summary rendering
- raise dashboard summary generate request timeout to 65000ms and cover it with tests
- extend shared AI config with dashboard summary fields and DTOs
- update settings validation and AI config helpers for summary-specific toggles
- align settings page copy and form state with AI capability wording
- cover schema, settings route, and form cloning changes with tests
- send Uint8Array and ArrayBuffer payloads as raw binary in legacy-fastify instead of JSON serializing them
- add a Worker response regression test that round-trips a backup zip through fflate
- keep lite restore backup aligned with the existing Wallos frontend unzip flow
- keep the lite desktop sidebar fixed while preserving the original page scroll feel
- ensure dark mode background stays consistent on large screens and zoom changes
- add regression coverage for sidebar layout and root background behavior
- add Worker Lite backup export and restore routes, service, and shared schemas
- move lite ZIP restore parsing to the frontend so Worker only receives prepared manifest and logo assets
- add backup modal and settings page backup or migration entry on lite
Improve the settings-page currency converter for worker-lite deployments.
- add a dedicated swap control between source and target currencies
- extract the swap behavior into a focused utility for testing
- keep the mobile layout responsive around the new action
Tests:
- npm test -- currency-converter
- npm run lint
Bring the missing main-side subscription management UX into lite.
- support batch status updates for active, paused and cancelled
- add select-current-page behavior for batch mode
- make paused subscriptions resumable from list actions
- simplify tag management by removing icon selection and preview
- keep tag filtering aligned with all-selected-tag matching
Tests:
- apps/api/tests/integration/subscriptions-routes.test.ts
- npm test -- currency-converter subscription-batch tag-management
- npm run lint
- add tiered D1 caching and cache version invalidation for worker-heavy reads
- reduce CPU cost in statistics, calendar, settings, exchange-rate, and import paths
- align worker-facing settings and shared types with the no-KV lite runtime
- add a Wallos source timezone option so browser-side import preview can evaluate business dates with the same semantics as the source instance instead of assuming UTC day boundaries
- gate reconcile-expired and refresh-rates scheduled tasks by local app timezone while switching their cron triggers to hourly, so Worker deployments still execute them once per local business day
- refactor calendar month navigation helpers to use business-date month keys instead of local dayjs month math, reducing browser local-time leakage into timezone-aware views
- extend timezone utilities and unit tests to cover source-timezone business-date calculations and the new worker cron gate
- add timezone to shared settings schema and worker settings loading with Asia/Shanghai default
- introduce frontend and backend timezone helpers for business-date parsing, display formatting, and day boundary calculations
- apply configured timezone to notification scanning, auto renew, expired reconciliation, statistics, calendar queries, and subscription create/update flows
- update settings UI and form/date handling so users can switch timezone from basic settings
- refresh tests to cover timezone validation, formatting, notification behavior, and subscription route/service flows
- restore worker-specific storage capabilities after syncing main settings changes
- keep email provider defaults and tests compatible with the worker runtime
- extend worker notification delivery tracking for serverchan and gotify
- add SMTP/Resend provider switching plus Server 酱 and Gotify settings, validation, and test endpoints
- keep email config backward compatible while reworking the notification settings grid into a compact 3-column layout
- add local-only light/dark theme preference with a floating sidebar toggle and dark theme styling across cards, pages, charts, logo pickers, and drawers
- tighten notification target URL validation, update exchange rate provider naming, and refresh API/web tests for the new settings and theme behavior
Sync the settings-form deep-clone fix and AI loading copy improvements from main, then continue reducing page-entry latency on the worker branch.
Included fixes:
- restore editability for nested notification and AI settings fields by cloning settings query data before binding forms
- refine AI recognition loading copy layout to avoid awkward line wraps
- align calendar summary wording with the updated main-branch labels
Data-loading optimizations:
- add shared Vue Query composables for exchange-rate snapshot, tags, notification webhook, statistics overview, budget statistics, and calendar events
- move SettingsPage snapshot and webhook loading onto shared query caches instead of always issuing separate onMounted requests
- move Dashboard, Statistics, and Budget pages onto shared overview and budget query composables
- query-ize the subscriptions main list so list refreshes reuse cache/invalidation instead of repeated page-local fetches
- reuse cached exchange-rate snapshot and tag data on the subscriptions page
- remove over-aggressive query behavior that could cause stale or inconsistent UI states by:
- updating settings query cache immediately after save operations
- avoiding duplicate subscriptions refetches when filters already change the query key
- keeping calendar month switches query-driven without showing mismatched stale month labels
Validation:
- npm run test -w apps/web passed
- npm run lint -w apps/web passed
- npm run build -w packages/shared passed
- npm run build -w apps/web passed
- combine the worker-lite performance and reliability work into one coherent commit for the cf-worker branch
- reduce duplicate submissions and repeated settings fetches on the frontend, add clearer saving/recognition states, and keep Worker-limit error messaging focused on real failures
- refactor worker hot paths around D1/KV usage with short-lived caching, lighter settings/auth access, lazy Prisma creation, slimmer statistics/calendar queries, and safer exchange-rate reads
- simplify logo search and remote-logo handling for Lite constraints, keep cron and notification flows aligned with Worker Free limits, and preserve current Lite-specific UX decisions
- remove unsupported Prisma interactive transactions for D1, batch Wallos import writes, chunk D1 tag joins, and fix Cloudflare-specific issues such as KV minimum TTL handling and remote reset execution on Windows
- include the latest Lite-side cleanup: route-level tags caching, skipping unnecessary tag reads in statistics when tag budgets are disabled, removing calendar adjacent-month prefetching, and executing remote reset SQL through a temp file
- make storage capability defaults Worker-only for the lite branch
- simplify settings serialization and frontend defaults to always use worker-lite/json-only semantics
- remove unnecessary runtime-based UI branching from the settings page
- migrate the lite branch runtime to Cloudflare Worker with D1, KV and optional R2 support
- add worker runtime context, request routing, D1 init guards, bootstrap/reset scripts and wrangler config
- keep the product aligned with the lite plan: MailChannels email, JSON-only Wallos import, no local OCR, remote logo fallback without local disk storage
- restore logo search behavior toward main parity while adapting storage and cache to Worker bindings
- update branding and UI copy for SubTracker Lite, including runtime naming and lite-specific settings/help text
- replace Docker-oriented docs/workflow assets with cf-worker specific CI/deploy workflows and deployment docs
- add regression tests for worker runtime paths, database init, logo search, worker capability helpers and bootstrap script behavior
- replace fixed reminder day controls with configurable reminder rule strings for advance and overdue notifications
- add shared parsing and normalization helpers, subscription-level override fields, and default seeded rules
- switch reminder scanning to minute-level rule matching while preserving merged notification behavior
- update settings, subscription forms, detail views, and types to use tooltip-guided rule inputs and normalized save flow
- refresh API and tests to cover the new reminder rule settings, storage, and notification matching behavior
- enforce default admin password change with a blocking post-login flow
- add Telegram bot notification settings and test endpoint
- move Wallos import into Settings and add subscription CSV/JSON export
- enable batch subscription actions for renew, pause, cancel, and guarded delete
- expand frontend and API typing/tests for the new auth, settings, and subscription flows
- add notifyOnDueDay and overdueReminderDays to shared settings schema and defaults
- wire reminder settings through API settings service, notification scan logic, seed data, and tests
- update settings page with 默认提前提醒天数 label, 到期当天提醒 switch, and 过期提醒 multi-select
- show current app version under SubTracker branding and inject VITE_APP_VERSION during web builds
- add GPLv3 LICENSE and update README with license and acknowledgements
- add monthly subscription spend TOP10 to statistics overview and UI
- improve subscriptions pagination with per-page persistence and note-row handling
- make login validation messages friendlier on both client and server
- clarify API-only upgrade flow for static web assets
- move web unit tests into apps/web/tests/unit
- add provider presets for Aliyun Bailian, Tencent Hunyuan, and Volcengine Ark
- switch to explicit vision and structured-output capability flags
- add separate connection and vision test flows
- share the built-in subscription prompt between frontend and backend
- show the built-in prompt directly inside the editable custom prompt field
- keep empty or unchanged prompt values falling back to the built-in default
- replace raw JSON output with a user-friendly field table in the AI recognition modal
- keep raw extracted text in a separate helper section
- add a reset action to the subscription form for both create and edit modes
- add /statistics/budgets endpoint with total and tag budget summaries
- introduce dedicated 预算统计 page and hide its sidebar entry when tag budgets are disabled
- move tag monthly budget editing into a dedicated modal on the budget page
- add dashboard tag budget overview cards when tag budgets are enabled
- remove duplicate upcoming renewals table from 费用统计 and keep that info on the dashboard
- invalidate menu and statistics queries after settings changes so budget navigation updates immediately
- default login sessions to non-persistent browser storage unless remember-me is enabled
- add remember-me checkbox to login page and load configurable remember duration from the server
- add rememberSessionDays to settings and persist it through the shared settings schema
- expose login options endpoint for unauthenticated clients
- move sidebar collapse trigger higher for long single-page layouts
- clear default admin credentials from login form and update login guidance copy
- support pressing Enter to submit the login form
- fix collapsed sidebar branding overflow by syncing logo and menu collapsed state
- unify calendar events with projected renewal generation across a date range
- add shared projected renewal service and unit coverage for monthly, weekly, expired, and filtered states
- update statistics trend and upcoming-by-day aggregation to reuse projected events
- keep calendar summary, list view, and day detail on the same predicted event source
- refresh shared/web statistics types for projected trend metadata and distribution charts