diff --git a/PUBLICATION_ASSET_DECISIONS.md b/PUBLICATION_ASSET_DECISIONS.md index 7d8a81e36..7e5cfa1dd 100644 --- a/PUBLICATION_ASSET_DECISIONS.md +++ b/PUBLICATION_ASSET_DECISIONS.md @@ -67,3 +67,24 @@ SAN-191 reconciles references, font preferences, catalogs, tests and packaging. The service-worker cache version changes so activation deletes prior app caches. Omission is not a finding of infringement and does not grant permission to restore the removed originals. + +## Post-publication restoration review + +The historical SAN entries recorded above reflect the conservative posture adopted during publication migration. As noted in SAN-191, omission was not a finding of infringement. A subsequent maintainer review traced these 14 project-origin assets through repository history, recorded their repository provenance, and restored their byte-identical historical versions previously distributed by the project. + +The original SHA-256 hashes are recorded below. Ambiguous third-party assets (such as vendor marks and third-party libraries) remain deliberately omitted. + +- RESTORE-001: `assets/branding/odysseus-browser.jpg` (SHA-256: `96bc894113d3db1a8e19535047e85fef7bfe7e643d45973d6effb945dce667df`): README interface screenshot introduced by pewdiepie-archdaemon in commit "Refresh README screenshot". +- RESTORE-002: `assets/branding/odysseus-wordmark.png` (SHA-256: `5e20708f9709735c66692c0cffc74734d61cfa256d48f9095c6870bcd53f4552`): README wordmark artwork introduced by pewdiepie-archdaemon in commit "Refresh README presentation". +- RESTORE-003: `assets/branding/odysseus.jpg` (SHA-256: `cd5e87b12f1e9e7baca6a6c5e95012130c9e26c6e31526e864eaf17096fcd05e`): Project branding image from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon, used by build-macos-app.sh for launcher icon generation. +- RESTORE-004: `website/bg.webm` (SHA-256: `157f732539a6072d55164da23d65afa9423782728dd067154867fcebb176fb35`): Landing page background video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-005: `website/chat.webm` (SHA-256: `d69f319192cec2cac1831e08ee99ae902398f1b163021e42b3fda05a0d7ab4d5`): Chat demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-006: `website/compare.webm` (SHA-256: `90d8c68dbc2ac3029b258598a7e2c2c5c8f5d6d702b9d31f0c729e5517093f51`): Model comparison demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-007: `website/document.webm` (SHA-256: `754e4ae071e9def5151749a03ad284cd41385354620fc8afea3c5c4f50f64a0d`): Document editor demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-008: `website/gallery.webm` (SHA-256: `b3bbe99c55b5cd1de32cb8e84fa31044761b7724a76a4bae4d4b0acaed7f3500`): Image gallery demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-009: `website/notes.webm` (SHA-256: `2a82b501271c4b60927e575bb22f8c986e3d1a4089a5518f84b46e534dea37d7`): Notes demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-010: `website/research.webm` (SHA-256: `2495a1a6cc1ea037f7460d065e3af6aacf091b240edebc436ce4bca5e83dab87`): Deep research demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-011: `website/theme.webm` (SHA-256: `6bd5a4140e9eeb9e06bee217319d331e9c8c873763fcb9040425fb38878b8410`): Theme demo video from commit e5c99a5eee62fc7df0e2dca5e46cbc87399047d6 ("Odysseus v1.0") by pewdiepie-archdaemon. +- RESTORE-012: `static/icons/icon-192.png` (SHA-256: `d9f54e07d2a8dca6302125d84436176a26a056745c5adb29ef521345c161e359`): Project PWA icon (192x192) contributed in PR #428 (commit 615134851d5c17897b96bba43b7961a00770d45b), generated from the project logo SVG. +- RESTORE-013: `static/icons/icon-512.png` (SHA-256: `785872b140da58087f23539ed187fe0f69de6eb9690abf995b10c93b5b518388`): Project PWA icon (512x512) contributed in PR #428 (commit 615134851d5c17897b96bba43b7961a00770d45b), generated from the project logo SVG. +- RESTORE-014: `static/icons/icon-maskable-512.png` (SHA-256: `7ed567fe0de6b6b451eec35c8fb2b465d84a3b23945135c19c4fa388ac976449`): Project PWA maskable icon (512x512) contributed in PR #428 (commit 615134851d5c17897b96bba43b7961a00770d45b), generated from the project logo SVG. diff --git a/README.md b/README.md index ce4d4e29e..4ec557b11 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -

Odysseus

+

+ Odysseus +

A self-hosted AI workspace for chat, agents, research, documents, email, notes, calendar, and local model workflows. @@ -15,6 +17,10 @@ Packaging status

+

+ Odysseus interface +

+ --- ## Quick Start @@ -53,7 +59,7 @@ Native installs, GPU notes, Windows/macOS instructions, HTTPS, and configuration ## Demo -The [Odysseus landing page](https://odysseus-dev.github.io/odysseus/) gives a text-only overview of each feature. Its source lives under [`website/`](website/). +A full hover-to-play tour lives on the [Odysseus landing page](https://odysseus-dev.github.io/odysseus/). Its source lives under [`website/`](website/). ## Contributing diff --git a/assets/branding/odysseus-browser.jpg b/assets/branding/odysseus-browser.jpg new file mode 100644 index 000000000..5c1e9a764 Binary files /dev/null and b/assets/branding/odysseus-browser.jpg differ diff --git a/assets/branding/odysseus-wordmark.png b/assets/branding/odysseus-wordmark.png new file mode 100644 index 000000000..dce21eb66 Binary files /dev/null and b/assets/branding/odysseus-wordmark.png differ diff --git a/assets/branding/odysseus.jpg b/assets/branding/odysseus.jpg new file mode 100644 index 000000000..9637929db Binary files /dev/null and b/assets/branding/odysseus.jpg differ diff --git a/build-macos-app.sh b/build-macos-app.sh index ec3b3336d..cbb4867ed 100755 --- a/build-macos-app.sh +++ b/build-macos-app.sh @@ -27,8 +27,23 @@ echo " port: $PORT" rm -rf "$APP" mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources" -# Use the macOS default application icon; no branding-derived artwork is bundled. -echo " icon: macOS default" +# ── Icon (best effort) -- center-crop the branding image to a square .icns ── +if [ -f "$REPO_DIR/assets/branding/odysseus.jpg" ] && command -v sips >/dev/null 2>&1; then + TMPIMG="$(mktemp -d)" + # Center-crop to a square, scale to 512 (sips' icns encoder caps at 512), and + # let sips emit the .icns directly: more robust across macOS versions than + # building an .iconset by hand. + sips -c 720 720 "$REPO_DIR/assets/branding/odysseus.jpg" --out "$TMPIMG/sq.png" >/dev/null 2>&1 || cp "$REPO_DIR/assets/branding/odysseus.jpg" "$TMPIMG/sq.png" + sips -z 512 512 "$TMPIMG/sq.png" --out "$TMPIMG/icon.png" >/dev/null 2>&1 + if sips -s format icns "$TMPIMG/icon.png" --out "$APP/Contents/Resources/odysseus.icns" >/dev/null 2>&1; then + echo " icon: odysseus.icns" + else + echo " icon: (skipped - conversion failed)" + fi + rm -rf "$TMPIMG" +else + echo " icon: (skipped - no assets/branding/odysseus.jpg)" +fi cp -R "$REPO_DIR/licenses" "$APP/Contents/Resources/licenses" cp "$REPO_DIR/THIRD_PARTY_PROVENANCE.json" "$REPO_DIR/ACKNOWLEDGMENTS.md" "$APP/Contents/Resources/" @@ -45,6 +60,7 @@ cat > "$APP/Contents/Info.plist" <CFBundleShortVersionString1.0 CFBundlePackageType APPL CFBundleExecutable $APP_NAME + CFBundleIconFile odysseus LSMinimumSystemVersion 11.0 NSHighResolutionCapable LSUIElement diff --git a/specs/frontend.md b/specs/frontend.md index 15eec394c..825f81f73 100644 --- a/specs/frontend.md +++ b/specs/frontend.md @@ -20,7 +20,7 @@ This spec covers the current browser app in: `/backgrounds` currently targets `static/backgrounds.html`; if that route remains, the file must exist or the route should be removed. -The static PWA icon files (192px, 512px, maskable) were deliberately omitted from publication, and `static/icons/` is intentionally absent. `static/manifest.json` declares no `icons`, and neither `static/index.html` nor `static/login.html` ships a static `apple-touch-icon` link. Icons come from generated inline SVG at runtime: the `data:image/svg+xml` favicon, the `apple-touch-icon` link that `static/index.html` and `static/js/theme.js` create, and per-route Blob manifests whose `icons` point at that SVG. Do not reintroduce references to icon files that are not shipped. +`static/manifest.json`, `static/index.html`, and `static/login.html` reference first-party PWA icon files under `static/icons/` (192px, 512px, and maskable). At runtime, route-specific manifests can also be generated as Blob URLs when supported, and per-route favicon links use generated inline SVG. ## Current Call Sites Include @@ -81,7 +81,7 @@ Storage/secrets policy: - other static assets use cache-first with background refresh; - `CACHE_NAME` bumps and `PRECACHE` updates must accompany cache policy or shell asset changes. -`static/manifest.json` owns default PWA metadata and intentionally has no `icons` entry. Route-specific manifests can be generated as Blob URLs when supported; their icons are the route's generated inline SVG, not files. +`static/manifest.json` owns default PWA metadata, referencing the restored icons under `static/icons/`. Route-specific manifests can be generated as Blob URLs when supported; dynamic icons use the route's generated inline SVG, while the default manifest uses the static icons. KaTeX and Mermaid are self-hosted and lazy-loaded through memoized, retry-after-failure promises in `static/js/markdown.js`; math placeholders preserve source until KaTeX arrives, detached PDF export renders its own container, and Mermaid fetches only when a diagram exists. Pyodide remains a jsDelivr-loaded optional runtime, so offline/PWA behavior is not fully self-contained. diff --git a/static/icons/icon-192.png b/static/icons/icon-192.png new file mode 100644 index 000000000..d4111ba0f Binary files /dev/null and b/static/icons/icon-192.png differ diff --git a/static/icons/icon-512.png b/static/icons/icon-512.png new file mode 100644 index 000000000..f6b56e215 Binary files /dev/null and b/static/icons/icon-512.png differ diff --git a/static/icons/icon-maskable-512.png b/static/icons/icon-maskable-512.png new file mode 100644 index 000000000..5d9d98a00 Binary files /dev/null and b/static/icons/icon-maskable-512.png differ diff --git a/static/index.html b/static/index.html index b327bffa2..7fb866c68 100644 --- a/static/index.html +++ b/static/index.html @@ -13,6 +13,7 @@ in email bodies — was wrapping random digits in with browser-default styling that didn't match the Odysseus theme. --> +