Commit Graph

40 Commits

Author SHA1 Message Date
SmileQWQ
5004c3b3c8 perf: port reusable worker improvements to main
Port cross-runtime improvements from the cf-worker branch back to main without bringing Worker-free specific tradeoffs.

Frontend:
- add single-flight request coalescing for save, settings, tag, and AI actions
- add explicit saving/loading states for subscription save and AI recognition
- unify settings data access behind useSettingsQuery with a shared query key
- stop AI autofill from overwriting advance/overdue reminder rules
- deep-clone settings query data before binding form state so nested notification and AI inputs remain editable
- refine AI loading copy layout and adjust calendar card wording for clearer UX

Backend:
- split getAppSettings hot-path reads into narrow getters for login options, AI config, reminder defaults, and notification channel/scan settings
- cache auth session secret, stored credentials, and mustChangePassword in memory to avoid repeated password verification work on every request
- slim statistics and calendar reads to only fetch fields required by each view
- reduce exchange-rate read duplication by reusing resolved base currency instead of re-reading settings unnecessarily
- batch Wallos import writes via createMany for tags, subscriptions, and subscription-tag joins, then append subscription order once

Tests:
- add auth service cache coverage
- add Wallos commit batching coverage
- add single-flight, settings-form clone, and AI recognition status unit tests
- update auth, AI, and statistics tests for the new main-branch implementation strategy

Validation:
- targeted API tests passed
- targeted web tests passed
- npm run lint passed
- npm run build passed
v0.6.0
2026-04-23 09:10:06 +08:00
SmileQWQ
419770b112 fix: generate install env from example template
- copy apps/api/.env.example into the deployment .env first
- only override deployment-specific values such as image, ports, origin, and log level
- keep new example fields like TZ and cron settings in sync automatically
2026-04-21 11:22:27 +08:00
SmileQWQ
47b485b709 fix: support configurable container timezone
- add TZ to API compose defaults and example env config
- keep tzdata in the image without hardcoding a single timezone
- apply the runtime TZ value from entrypoint so users can switch timezones cleanly

# Conflicts:
#	apps/api/.env.example
v0.5.7
2026-04-21 11:07:09 +08:00
SmileQWQ
15897c61f2 docs: refresh readme showcase 2026-04-20 22:17:37 +08:00
SmileQWQ
baa456217d docs: add repository screenshots 2026-04-20 21:57:01 +08:00
SmileQWQ
338ead1dd2 docs: update readme and installer login hints 2026-04-20 21:08:04 +08:00
SmileQWQ
bc4ee24276 fix: sync cron scan env example v0.5.6 2026-04-20 20:59:50 +08:00
SmileQWQ
eeaf5dab55 feat: add flexible reminder rule configuration
- 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
2026-04-20 18:47:08 +08:00
SmileQWQ
59196858b0 feat: harden login and notification formatting 2026-04-20 16:51:51 +08:00
SmileQWQ
c41fd0f6f6 fix: clean notification scan for main v0.5.5 2026-04-20 11:29:45 +08:00
SmileQWQ
e05c5172e2 style: adjust settings layout 2026-04-20 11:18:36 +08:00
SmileQWQ
364c758add feat: add merged reminder notifications
- add a basic settings toggle for merged reminder delivery

- default merged notifications to enabled and send one scan summary per run
2026-04-20 11:10:34 +08:00
SmileQWQ
2c537aca2c feat: add admin hardening and subscription management improvements
- 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
2026-04-20 10:07:37 +08:00
SmileQWQ
85a88e0900 docs: polish README badges and star history 2026-04-20 00:24:22 +08:00
SmileQWQ
92e008e70b docs: update deployment wording 2026-04-19 23:25:05 +08:00
SmileQWQ
d6913fef1a feat: add configurable reminder settings and app version display
- 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
v0.5.0
2026-04-19 22:55:36 +08:00
SmileQWQ
6085de664a docs: polish deployment docs and installer wording
- rename user-facing deployment modes to 完整部署 and 仅后端部署
- simplify README and DEPLOYMENT wording for end users
- polish generated INSTALL-README guidance and upgrade steps
2026-04-19 22:18:26 +08:00
SmileQWQ
34b59ebe4b feat: refine statistics, subscriptions, and deployment docs
- 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
v0.4.7
2026-04-19 21:52:20 +08:00
SmileQWQ
05427e3022 docs: refine deployment guidance 2026-04-19 20:03:57 +08:00
SmileQWQ
e4b92e1d98 fix: stabilize full deployment assets v0.4.6 2026-04-19 19:16:54 +08:00
SmileQWQ
3fdd6f89d2 fix: harden production deployment flow v0.4.5 2026-04-19 18:53:10 +08:00
SmileQWQ
ff478fbb72 fix: restore shared package type resolution v0.4.2 2026-04-19 18:27:41 +08:00
SmileQWQ
3f3e68d0c6 fix: improve deployment flow and shared package exports v0.4.1 2026-04-19 18:23:08 +08:00
SmileQWQ
5d9cd12cc3 fix: validate required settings for notifications and AI v0.4.0 2026-04-19 16:34:36 +08:00
SmileQWQ
b374992156 feat: upgrade AI multimodal compatibility
- 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
2026-04-19 16:27:18 +08:00
SmileQWQ
6f95114558 refactor: simplify webhook persistence model v0.3.5 2026-04-17 16:06:16 +08:00
SmileQWQ
33b3185511 feat: refine renewal notifications and webhook settings 2026-04-17 15:52:12 +08:00
SmileQWQ
2a7bac6aaf feat: unify built-in AI prompt handling
- 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
v0.3.1
2026-04-17 12:00:09 +08:00
SmileQWQ
586790e2f3 feat: improve AI recognition result UX
- 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
2026-04-17 11:44:15 +08:00
SmileQWQ
f0c1fb690f docs: refresh README for current product scope
- document budget analytics and tag budget workflow

- mention remember-me login behavior and Wallos import support

- keep local development setup aligned with .env.example flow
2026-04-17 11:11:30 +08:00
SmileQWQ
e19d855944 feat: add dedicated budget analytics workspace
- 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
v0.3.0
2026-04-17 11:05:24 +08:00
SmileQWQ
3832cebeec feat: add remember-me login controls
- 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
2026-04-17 10:16:21 +08:00
SmileQWQ
00293b0762 fix: improve login flow and sidebar collapse
- 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
2026-04-17 09:58:15 +08:00
SmileQWQ
006d14adbb docs: improve deployment docs and release assets
- rewrite README for GitHub presentation and add env copy steps for local development
- expand DEPLOYMENT guide with API-only and full compose deployment paths
- add apps/api/.env.example for development bootstrap
- add docker-compose.full.yml and nginx config for full self-hosted deployment
- update release workflow to publish a deployment bundle alongside web dist assets
v0.2.1
2026-04-17 08:40:01 +08:00
SmileQWQ
cc1c90c167 feat: align calendar renewals with projected statistics
- 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
v0.2.0
2026-04-15 15:43:20 +08:00
SmileQWQ
fd59f8ab91 feat: highlight over-budget usage in dashboard
- allow monthly and yearly budget ratios to exceed 100% for clearer overflow visibility

- render over-budget percentage and used amount in red to emphasize overspend
2026-04-15 12:01:31 +08:00
SmileQWQ
2cfa439e82 feat: randomize imported tag colors
- assign stable hashed colors to newly imported Wallos tags

- keep existing tags unchanged when matching by name during import
2026-04-15 11:55:51 +08:00
SmileQWQ
264db1a0a6 feat: refactor subscriptions to tags and add Wallos import pipeline
- replace legacy category-based subscription flow with tag-based models, routes, types and UI management

- rebuild Prisma schema around Tag and SubscriptionTag, remove legacy category relation fields, and reseed defaults

- add unified Wallos import inspect/commit flow for JSON, SQLite and ZIP packages with ZIP logo ingestion and DB-version compatibility

- add auto-renew execution in scheduler plus payment record drawer entry in subscription actions

- rename user-facing renewal wording to 续订 in key views and align subscription form with tag selection and auto-renew

- improve logo handling with local library support, remote import persistence, and ZIP asset matching fallback
v0.1.1
2026-04-15 11:42:11 +08:00
SmileQWQ
0c8cfdd49c chore: unify release workflow v0.0.1 2026-04-11 14:45:08 +08:00
SmileQWQ
81418ea57d feat: initialize SubTracker repository 2026-04-11 13:36:43 +08:00