The player now takes any RSS feed URL as well as a podsteadr server, and plays podsteadr feeds hosted on the FIPS mesh. A browser can't speak FIPS, and an HTTPS page can't fetch or play http:// URLs, so .fips URLs are routed one of two ways (src/lib/net.ts): - served over the mesh (http://<npub>.fips:8097/), the page fetches .fips URLs directly over the device's own FIPS connection; - served over HTTPS (player.atobitcoin.io), .fips URLs are rewritten to the host's /fips/<host>/<port>/<path> gateway, which relays only podsteadr feeds (8095) and blossom blobs (8098) over the host's FIPS link (deploy/player-domain.conf). Also: - "Add" accepts a feed, an OPML catalog, or a server address and works out which; old saved servers migrate to the new subscription format - PWA: manifest, icons, service worker caching only the app shell (never feeds, audio or the gateway), install button, safe areas - lock-screen controls and artwork via the Media Session API - artwork, dates and durations in the episode list - no secure-context-only APIs on the mesh copy (randomUUID, clipboard) - buying episodes over FIPS is refused with a clear message: NIP-98 signs the server's public URL, which a .fips address never matches Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
29 lines
805 B
Nginx Configuration File
29 lines
805 B
Nginx Configuration File
server {
|
|
listen 8097;
|
|
listen [::]:8097;
|
|
server_name _;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# Pure client-side SPA — no server routes of its own, everything falls back to index.html.
|
|
location / {
|
|
add_header Cache-Control "no-cache";
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
# Content-hashed build output: safe to cache forever.
|
|
location /assets/ {
|
|
add_header Cache-Control "public, max-age=31536000, immutable";
|
|
}
|
|
|
|
# The service worker must be revalidated on every load or updates never reach installed apps.
|
|
location = /sw.js {
|
|
add_header Cache-Control "no-cache";
|
|
}
|
|
|
|
location = /manifest.webmanifest {
|
|
default_type application/manifest+json;
|
|
add_header Cache-Control "no-cache";
|
|
}
|
|
}
|