A decentralized music tracking and discovery platform built on AT Protocol 🎵 rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz
0

Configure Feed

Select the types of activity you want to include in your feed.

run cargo fmt

+17 -11
+10 -2
apps/app-proxy/src/index.ts
··· 150 150 const proxyUrl = new URL(request.url); 151 151 proxyUrl.host = 'api.rocksky.app'; 152 152 proxyUrl.hostname = 'api.rocksky.app'; 153 - const apiRes = await fetch(proxyUrl, request); 154 - return withCors(apiRes, origin); 153 + // Bypass the Cloudflare edge cache for API-proxied routes (OAuth 154 + // callbacks, tokens, dynamic data) so a stale response — e.g. a 404 155 + // from before a deploy — is never served. 156 + const apiRes = await fetch(new Request(proxyUrl, request), { cf: { cacheTtl: 0, cacheEverything: false } }); 157 + const res = withCors(apiRes, origin); 158 + // Also tell the browser/intermediaries not to store the response. 159 + res.headers.set('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0'); 160 + res.headers.delete('Expires'); 161 + res.headers.delete('ETag'); 162 + return res; 155 163 } 156 164 157 165 // check header if from mobile device, android or ios
+1 -1
apps/web-mobile/package.json
··· 38 38 "react-hook-form": "^7.54.2", 39 39 "react-router-dom": "^7.6.3", 40 40 "recharts": "^2.15.1", 41 - "rockbox-wasm": "^0.1.6", 41 + "rockbox-wasm": "^0.1.8", 42 42 "styletron-engine-monolithic": "^1.0.0", 43 43 "styletron-react": "^6.1.1", 44 44 "tailwindcss": "^4.0.0",
+1 -1
apps/web/package.json
··· 73 73 "react-i18next": "^15.4.0", 74 74 "react-lazy-load-image-component": "^1.6.3", 75 75 "recharts": "^2.15.1", 76 - "rockbox-wasm": "^0.1.6", 76 + "rockbox-wasm": "^0.1.9", 77 77 "styletron-engine-monolithic": "^1.0.0", 78 78 "styletron-react": "^6.1.1", 79 79 "swr": "^2.3.0",
+5 -7
crates/navidrome/src/repo/playlist.rs
··· 118 118 playlist_id: &str, 119 119 track_id: &str, 120 120 ) -> Result<(), Error> { 121 - sqlx::query( 122 - r#"INSERT INTO navidrome_playlist_tracks (playlist_id, track_id) VALUES ($1, $2)"#, 123 - ) 124 - .bind(playlist_id) 125 - .bind(track_id) 126 - .execute(pool) 127 - .await?; 121 + sqlx::query(r#"INSERT INTO navidrome_playlist_tracks (playlist_id, track_id) VALUES ($1, $2)"#) 122 + .bind(playlist_id) 123 + .bind(track_id) 124 + .execute(pool) 125 + .await?; 128 126 sqlx::query(r#"UPDATE navidrome_playlists SET xata_updatedat = now() WHERE xata_id = $1"#) 129 127 .bind(playlist_id) 130 128 .execute(pool)