commits
Query feeds with a left join to users, limit results by params.size, and
present data as FeedGeneratorsView
- Add feedGeneratorsView and feedGeneratorView defs (JSON and pkl)
- Add app.rocksky.feed.getFeedGenerators lexicon and generated TS types
- Export new types from lexicon index
- Swap/fix album getAlbums/getAlbumTracks handlers and update schemas
- Misc: small formatting, type-only imports, and script fixes
Update Drizzle migration and snapshot Export feeds schema from index Add
seed-feed script to import generator records into the DB
Also add a missing newline at the end of README
Make ws.onmessage async, use functional setQueryData calls, and await
invalidateQueries for feed, now-playings, and scrobblesChart so
consumers receive fresh data after WebSocket updates
Remove duplicate WebSocket and heartbeat logic from NowPlayings. Feed
now opens the socket using WS_URL (without a trailing /ws), updates the
["now-playings"] and ["scrobblesChart"] query data, and includes
queryClient in the effect dependencies.
Set right pane height to calc(100vh-100px) and enable overflow-y-auto.
Change search results max height to !max-h-[400px]. Add popperOptions to
disable flip and enable preventOverflow for more stable dropdown
positioning.
Add VITE_WS_URL and WS_URL constant. Remove polling refetchInterval from
feed and now-playing queries and update React Query cache via WebSocket
messages. Implement ping/pong heartbeat and proper socket cleanup on
unmount.
Remove an unnecessary 4s delay in apps/ws/src/main.ts. Extend
Effect.timeout from 10s to 120s across actor, nowPlaying and scrobble
services to reduce premature failures
Replace per-socket 5s wait with a single 4s pause before iterating
clients to avoid per-client staggering and reduce total delay Move delay
before broadcasting to clients
Wait 4s before fetching broadcast payload and reuse the results for all
matching clients instead of delaying per-socket. This avoids redundant
data retrieval and reduces overall broadcast latency.
Wrap Effect pipelines in getScrobbles, getScrobblesChart and
getActorScrobbles with Effect.runPromise so they execute and return
promises.
Read WS_PORT environment variable and default to 8002.
Add per-endpoint Cache for scrobbles and now-playing handlers (capacity
100, TTL 30s). Lookups use retrieve->presentation with retry(3) and 10s
timeout.
Set env.PUBLIC_URL default to http://localhost:8000 and update the auth
client URL/client_id selection to prefer a real public URL unless it
points to localhost.
Only print the "Currently playing" response when the returned data does
not contain both "is_playing" and "context", reducing noisy output for
normal playback responses
Only print the "Currently playing" response when the returned data does
not contain both "is_playing" and "context", reducing noisy output for
normal playback responses
Increase find_spotify_users limit from 100 to 500. Parse token response
as text and use serde_json::from_str to improve error diagnostics; print
raw response on parse failure.
Stop reading genres from the DB row and return an empty list to avoid
deserialization errors
Introduce an optional "names" parameter and propagate it through
lexicon, pkl, TypeScript types, XRPC handler, and analytics types. Also
apply assorted formatting, trailing-comma, and import fixes.
Add trailing newline at end of file
Add trailing newline at end of file
Treat durations within 4 seconds as equivalent when determining recent
plays to avoid false duplicates. Also clean up formatting and add
trailing commas to function parameters for consistency.
Fix SQL by leaving a single conflict target (sha256) to prevent syntax
errors and ensure deduplication by content hash
- Add feedGeneratorsView and feedGeneratorView defs (JSON and pkl)
- Add app.rocksky.feed.getFeedGenerators lexicon and generated TS types
- Export new types from lexicon index
- Swap/fix album getAlbums/getAlbumTracks handlers and update schemas
- Misc: small formatting, type-only imports, and script fixes
Replace per-socket 5s wait with a single 4s pause before iterating
clients to avoid per-client staggering and reduce total delay Move delay
before broadcasting to clients
Wait 4s before fetching broadcast payload and reuse the results for all
matching clients instead of delaying per-socket. This avoids redundant
data retrieval and reduces overall broadcast latency.
Wrap Effect pipelines in getScrobbles, getScrobblesChart and
getActorScrobbles with Effect.runPromise so they execute and return
promises.
Add per-endpoint Cache for scrobbles and now-playing handlers (capacity
100, TTL 30s). Lookups use retrieve->presentation with retry(3) and 10s
timeout.
Set env.PUBLIC_URL default to http://localhost:8000 and update the auth
client URL/client_id selection to prefer a real public URL unless it
points to localhost.