null
a2ac241cd3
refactor(sync): centralize sync constants in bankSyncConfigService, wire through config/UI
2026-06-06 15:51:56 -05:00
null
a73d0afe07
feat(encryption): support TOKEN_ENCRYPTION_KEY env var with startup migration
2026-06-06 15:27:45 -05:00
null
c6cd81e33a
chore: bump to v0.34.2, subscription badge fix on Tracker rows
2026-05-30 21:52:02 -05:00
null
90cfed035b
feat: Payoff Custom mode, Summary reordering, unifed billing schedule, SimpleFIN + backup fixes (batch v0.34.1.3)
2026-05-30 21:20:51 -05:00
null
1d8ae4f511
fix: sync_days hard-clamped to 90 (SimpleFIN Bridge limit)
...
- bankSyncConfigService: SYNC_DAYS_MAX=90, getBankSyncConfig clamps on read,
setSyncDays rejects >90 with explanation
- bankSyncService: every sync requests full sync_days window, dedup handles
already-seen transactions
- dataSources status endpoint returns sync_days alongside enabled
- BankSyncAdminCard: input max 90, live clamp, description cites Bridge limit
- BankSyncSection: third stat tile showing History window X days
2026-05-29 02:23:19 -05:00
null
7682758aa8
fix: sync_days now reads from DB config, admin UI controls it
...
- bankSyncService: removed local syncDaysBack() reading env directly;
sinceEpoch() now calls getBankSyncConfig().sync_days
- bankSyncConfigService: added setSyncDays() with 1-730 day validation
- routes/admin: PUT accepts sync_days alongside enabled/sync_interval_hours
- BankSyncAdminCard: Transaction history days input, loaded from config,
defaults 90, dirty-checked on save
2026-05-29 01:33:54 -05:00
null
542ab5e382
feat: configurable sync interval, auto-match, encryption note, admin link, SimpleFIN hyperlink
...
#1 Sync interval in admin UI:
- bankSyncConfigService: reads simplefin_sync_interval_hours from settings
(DB-first, env fallback, default 4h), setSyncIntervalHours() with validation
- bankSyncWorker: live-updates interval from getBankSyncConfig() each tick
- routes/admin: PUT accepts enabled and sync_interval_hours independently
- BankSyncAdminCard: number input (0.5 step, 0.5-168 range), dirty-checks both
#3 Auto-match after background sync:
- matchSuggestionService: autoMatchForUser() auto-applies suggestions ≥80
score (exact amount + date ±1d + name signal), lazy-requires matchTransactionToBill
- bankSyncWorker: calls autoMatchForUser after each successful sync, own try/catch
#4 Encryption note in BankSyncAdminCard below worker status panel
Also: error handling, admin link in tracker sidebar, SimpleFIN bridge hyperlink
2026-05-29 00:28:50 -05:00
null
22df64e5e7
feat: auto-sync worker for SimpleFIN bank sync
...
New:
services/bankSyncWorker.js — interval-based worker running every 4h (configurable via SIMPLEFIN_SYNC_INTERVAL_HOURS)
- Checks bank sync enabled, fetches oldest-synced sources, skips <1h old
- Staggers syncs 3s apart, writes last_error on failure, timer.unref() for clean shutdown
Modified:
server.js — starts worker inside app.listen callback
routes/admin.js — GET bank-sync-config includes worker status (running, interval, last/next run)
client/components/admin/BankSyncAdminCard.jsx — shows auto-sync worker status panel when enabled
.env.example — SIMPLEFIN_SYNC_INTERVAL_HOURS
2026-05-28 22:32:33 -05:00
null
858f65b66b
fix: BankSyncAdminCard toggle no longer gated on encryption key
...
- Removed disable logic and key warning banner from BankSyncAdminCard
- Toggle works freely regardless of TOKEN_ENCRYPTION_KEY status
- encryptionKeyReady and encryption_key_set left as informational only
2026-05-28 22:18:20 -05:00
null
88a4b64924
feat: DB-first bank sync config, admin toggle, extracted BankSyncSection
...
New:
services/bankSyncConfigService.js — bank_sync_enabled from settings table, env fallback
client/components/admin/BankSyncAdminCard.jsx — single toggle + encryption key status
client/components/data/BankSyncSection.jsx — full connection management extracted from SettingsPage
Modified:
routes/dataSources.js — per-request getBankSyncConfig() instead of module-level env check
routes/admin.js — GET/PUT /api/admin/bank-sync-config
AdminPage.jsx — renders BankSyncAdminCard after EmailNotifCard
SettingsPage.jsx — BankSyncSection removed, 580->352 lines
DataPage.jsx — BankSyncSection first, passes simplefinConn to TransactionMatchingSection
TransactionMatchingSection.jsx — compact sync bar with green dot + Sync Now
Layout.jsx — SimplefinBadge shows muted dot when enabled
client/api.js — bankSyncConfig API calls
2026-05-28 22:06:15 -05:00