- Move native shells (Zig/src, Tauri/src-tauri, app.zon, releases) to legacy/
- Add Bun + Hono server with yt-dlp proxy endpoints (search, channel, streams,
download), libsql (concurrent SQLite fork) for fingerprint-keyed playlist/
history sync, and static file serving for the frontend
- Add Dockerfile + docker-compose.yml (single container, volume-mounted DB)
- Add frontend/sw.js: app-shell cache-first, /api/* network-only,
thumbnails stale-while-revalidate, SW_UPDATE_AVAILABLE broadcast,
SKIP_WAITING message handler for seamless auto-update
- Add frontend/manifest.webmanifest: standalone PWA, vermilion theme,
search/history shortcuts
- Add frontend/icons/icon-{192,512}.png: generated PWA icons
- Add frontend/fingerprint.js: canvas+UA djb2 fingerprint, localStorage-cached,
exposes window.getFingerprint() for server-side playlist keying
- Add frontend/opfs.js: full OPFS video store (writeFromResponse streams
directly without full-file buffering), exposes window.OPFS
- Add scripts/make-pwa-icons.js: regenerate icons without external deps
- Patch frontend/app.js: WEB mode detection, webFetch + opfs* bridge wrappers,
API object routes to WEB helpers when no native bridge present,
Player.loadVideo handles OPFS blob URLs + revokes them on next load,
SW registration + update banner in boot()
- Patch frontend/index.html: manifest link, theme-color, Apple PWA meta,
CSP blob:/worker-src, fingerprint.js + opfs.js script tags
- Patch frontend/styles.css: .toast-update + .toast-reload-btn for update banner
- Native Tauri/Zig builds unchanged — all new code is additive via WEB flag
26 lines
833 B
Plaintext
Executable File
26 lines
833 B
Plaintext
Executable File
.{
|
|
.id = "com.ytplayer.app",
|
|
.name = "ytplayer",
|
|
.display_name = "YT Player",
|
|
.version = "1.0.0",
|
|
// System WebView (WKWebView / WebKitGTK) keeps the binary tiny vs. Electron.
|
|
.web_engine = "system",
|
|
.permissions = .{"window"},
|
|
.capabilities = .{ "webview", "js_bridge" },
|
|
.security = .{
|
|
.navigation = .{
|
|
// Local packaged UI + dev server. Media/images load from https at runtime.
|
|
.allowed_origins = .{ "zero://app", "http://127.0.0.1:5173" },
|
|
},
|
|
},
|
|
.windows = .{
|
|
.{ .label = "main", .title = "YT Player", .width = 1280, .height = 820 },
|
|
},
|
|
// Static web UI lives in ./frontend (no build step — plain HTML/CSS/JS).
|
|
.frontend = .{
|
|
.source = "packaged",
|
|
.dir = "frontend",
|
|
.entry = "index.html",
|
|
},
|
|
}
|