You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
playlist-rules.ts
- numeric helper now returns undefined for !Number.isFinite(n), guarding
against NaN/Infinity values from malformed rule inputs
- playCount / skipCount switches now handle 'neq' operator (was silently
dropped before)
- lastPlayed switch now handles 'neq' (via not-between on the same window)
- All three branches guard against !Number.isFinite(value) before the switch
getUserLovedTracks.ts / getUserRecentTracks.ts / getUserTopTracks.ts
- URL changed http -> https
- Added AbortController-based 10s timeout around fetch
- Non-OK response now throws Error with status+statusText instead of
returning undefined (errors are now visible to callers)
- Catch block re-throws so the IPC layer can surface them
ipc.ts
- Last.fm IPC handlers now validate inputs at the boundary:
trim username, reject empty, clamp limit to [1,100], validate period
against allowed set
- app/refreshSmartPlaylist JSON.parse is now wrapped in try/catch with
a safe { songIds: [] } fallback and logger.error
schema.ts
- Added idx_playlists_is_smart Drizzle index to match the
0000_add_smart_playlist_columns.sql migration (closes schema drift)
SmartPlaylistCriteriaEditor.tsx
- Added isValidCriteriaShape type guard: parsed JSON must have
matchType ALL/ANY and rules[] with string field/operator
- placeholder='value' replaced with t('playlist.criteriaValuePlaceholder')
- saveCriteria now wraps the IPC call in try/catch and notifies on error
(previously unhandled rejection)
en.json
- Added playlist.criteriaValuePlaceholder = 'value'
0 commit comments