diff --git a/CHANGELOG.md b/CHANGELOG.md index 740c0f9ab..7b2807d72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,10 @@ scheme restriction) live in `UPGRADE-NOTES.md` and are auto-appended to every 1.4.6+ / 1.5.x release's notes by `scripts/append-upgrade-notes.mjs` (wired into `release-cut.yml`). Update that file — not this comment — when the notes change. --> +### Changed + +- **Refreshed the drydock whale logo across the app, website, demo, and docs.** A new master render replaces the brand mark everywhere — the in-app logo and favicons, the website/demo favicons, PWA icons, and OpenGraph cards, and the README/docs logos (including the dark-mode variant). All brand assets are now regenerated from a single master (`drydock.png`) via `scripts/regenerate-brand-assets.sh`. Filenames are unchanged, so the Home Assistant `entity_picture` URL contract is preserved. + ### Security - **Documentation site (`apps/web`) js-yaml pinned to 4.2.0 ([GHSA-h67p-54hq-rp68](https://github.com/advisories/GHSA-h67p-54hq-rp68)).** `fumadocs-mdx` pulled js-yaml 4.1.1 transitively; an override forces the patched 4.2.0. Build-time dependency of the website only — not part of the shipped drydock image. diff --git a/apps/demo/public/apple-touch-icon.png b/apps/demo/public/apple-touch-icon.png index 839ad65bd..fc7b0aafa 100644 Binary files a/apps/demo/public/apple-touch-icon.png and b/apps/demo/public/apple-touch-icon.png differ diff --git a/apps/demo/public/favicon-96x96.png b/apps/demo/public/favicon-96x96.png index 900cd78da..ac944f5c4 100644 Binary files a/apps/demo/public/favicon-96x96.png and b/apps/demo/public/favicon-96x96.png differ diff --git a/apps/demo/public/favicon.ico b/apps/demo/public/favicon.ico index 52972c7fa..35bedb285 100644 Binary files a/apps/demo/public/favicon.ico and b/apps/demo/public/favicon.ico differ diff --git a/apps/demo/public/favicon.svg b/apps/demo/public/favicon.svg index 363c7f2df..4f279219f 100644 --- a/apps/demo/public/favicon.svg +++ b/apps/demo/public/favicon.svg @@ -1,17 +1,7 @@ - \ No newline at end of file + + + + diff --git a/apps/demo/public/og-image.png b/apps/demo/public/og-image.png index 7bbb6ab41..e3e8fc1e9 100644 Binary files a/apps/demo/public/og-image.png and b/apps/demo/public/og-image.png differ diff --git a/apps/demo/public/web-app-manifest-192x192.png b/apps/demo/public/web-app-manifest-192x192.png index 86d606a2b..deff8f6e9 100644 Binary files a/apps/demo/public/web-app-manifest-192x192.png and b/apps/demo/public/web-app-manifest-192x192.png differ diff --git a/apps/demo/public/web-app-manifest-512x512.png b/apps/demo/public/web-app-manifest-512x512.png index bd6910ded..c254b9c1d 100644 Binary files a/apps/demo/public/web-app-manifest-512x512.png and b/apps/demo/public/web-app-manifest-512x512.png differ diff --git a/apps/web/public/apple-touch-icon.png b/apps/web/public/apple-touch-icon.png index 839ad65bd..3a2aa2d81 100644 Binary files a/apps/web/public/apple-touch-icon.png and b/apps/web/public/apple-touch-icon.png differ diff --git a/apps/web/public/docs/assets/assets/whale-logo.png b/apps/web/public/docs/assets/assets/whale-logo.png index 06fc326be..e2ad60c55 100644 Binary files a/apps/web/public/docs/assets/assets/whale-logo.png and b/apps/web/public/docs/assets/assets/whale-logo.png differ diff --git a/apps/web/public/docs/assets/whale-logo.png b/apps/web/public/docs/assets/whale-logo.png index 06fc326be..e2ad60c55 100644 Binary files a/apps/web/public/docs/assets/whale-logo.png and b/apps/web/public/docs/assets/whale-logo.png differ diff --git a/apps/web/public/favicon-96x96.png b/apps/web/public/favicon-96x96.png index 900cd78da..e60397683 100644 Binary files a/apps/web/public/favicon-96x96.png and b/apps/web/public/favicon-96x96.png differ diff --git a/apps/web/public/favicon.ico b/apps/web/public/favicon.ico index 52972c7fa..35bedb285 100644 Binary files a/apps/web/public/favicon.ico and b/apps/web/public/favicon.ico differ diff --git a/apps/web/public/favicon.svg b/apps/web/public/favicon.svg index 363c7f2df..4f279219f 100644 --- a/apps/web/public/favicon.svg +++ b/apps/web/public/favicon.svg @@ -1,17 +1,7 @@ - \ No newline at end of file + + + + diff --git a/apps/web/public/og-image.png b/apps/web/public/og-image.png index 7bbb6ab41..e3e8fc1e9 100644 Binary files a/apps/web/public/og-image.png and b/apps/web/public/og-image.png differ diff --git a/apps/web/public/web-app-manifest-192x192.png b/apps/web/public/web-app-manifest-192x192.png index 86d606a2b..6bdd3e58f 100644 Binary files a/apps/web/public/web-app-manifest-192x192.png and b/apps/web/public/web-app-manifest-192x192.png differ diff --git a/apps/web/public/web-app-manifest-512x512.png b/apps/web/public/web-app-manifest-512x512.png index bd6910ded..f5c15f79e 100644 Binary files a/apps/web/public/web-app-manifest-512x512.png and b/apps/web/public/web-app-manifest-512x512.png differ diff --git a/apps/web/public/whale-logo.png b/apps/web/public/whale-logo.png index 06fc326be..c1e58594c 100644 Binary files a/apps/web/public/whale-logo.png and b/apps/web/public/whale-logo.png differ diff --git a/docs/assets/whale-logo-dark.png b/docs/assets/whale-logo-dark.png index d7a180bdd..bd2c4ca2d 100644 Binary files a/docs/assets/whale-logo-dark.png and b/docs/assets/whale-logo-dark.png differ diff --git a/docs/assets/whale-logo.png b/docs/assets/whale-logo.png index 06fc326be..c1e58594c 100644 Binary files a/docs/assets/whale-logo.png and b/docs/assets/whale-logo.png differ diff --git a/drydock.png b/drydock.png new file mode 100644 index 000000000..eb9740230 Binary files /dev/null and b/drydock.png differ diff --git a/scripts/regenerate-brand-assets.sh b/scripts/regenerate-brand-assets.sh new file mode 100755 index 000000000..5b20ea72a --- /dev/null +++ b/scripts/regenerate-brand-assets.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +# +# Regenerate every drydock brand asset (logo marks, favicons, PWA icons, OG cards) +# from a single master logo. Run after dropping a new master at the repo root. +# +# bash scripts/regenerate-brand-assets.sh [path-to-master.png] +# +# Defaults to ./drydock.png. Requires ImageMagick 7 (`magick`). +# +# Filenames are intentionally preserved in place — never rename. docs/assets/whale-logo.png +# in particular is an external URL contract (Home Assistant entity_picture, app/triggers/ +# providers/mqtt/Hass.ts); renaming it broke HASS once (CHANGELOG #138). +# +# NOT touched here (different brand / not the logo): the CodesWhat org logo +# (codeswhat-logo*), the selfhst/* third-party service icons, and app screenshots. +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$ROOT" +SRC="${1:-drydock.png}" +[ -f "$SRC" ] || { + echo "master logo not found: $SRC" >&2 + exit 1 +} +command -v magick >/dev/null 2>&1 || { + echo "ImageMagick 'magick' is required" >&2 + exit 1 +} + +TMP="$(mktemp -d)" +trap 'rm -rf "$TMP"' EXIT + +# 1. Wide transparent marks — preserve aspect, ~1041px wide (display size set by markup). +WIDE_MARKS=( + ui/public/drydock-logo.png + ui/src/assets/drydock.png + apps/web/public/whale-logo.png + docs/assets/whale-logo.png + apps/web/public/docs/assets/whale-logo.png + apps/web/public/docs/assets/assets/whale-logo.png +) +for f in "${WIDE_MARKS[@]}"; do + [ -f "$f" ] || { + echo "skip (absent): $f" + continue + } + magick "$SRC" -resize 1041x -background none "$f" + echo "wide $f" +done + +# Small inline UI mark (imported with ?inline → base64 in the bundle, keep it light). +if [ -f ui/src/assets/whale-logo.png ]; then + magick "$SRC" -resize 256x -background none ui/src/assets/whale-logo.png + echo "inline ui/src/assets/whale-logo.png" +fi + +# 2. Dark-mode logo variant — negate RGB (blue→orange) preserving alpha, mirroring the +# favicon.svg @media-dark invert(1). Derived from the one master, not a separate asset. +if [ -f docs/assets/whale-logo-dark.png ]; then + magick "$SRC" -resize 1041x -channel RGB -negate +channel docs/assets/whale-logo-dark.png + echo "dark docs/assets/whale-logo-dark.png" +fi + +# 3. Square icons — whale centered on white, ~8% padding (matches the apple-touch look). +make_square() { # size out + local size="$1" out="$2" inner=$(($1 * 84 / 100)) + magick "$SRC" -resize "${inner}x${inner}" -background white -gravity center \ + -extent "${size}x${size}" "$out" +} +for base in ui/public apps/web/public apps/demo/public; do + [ -f "$base/favicon-96x96.png" ] && make_square 96 "$base/favicon-96x96.png" && echo "sq96 $base/favicon-96x96.png" + [ -f "$base/apple-touch-icon.png" ] && make_square 180 "$base/apple-touch-icon.png" && echo "apple $base/apple-touch-icon.png" + [ -f "$base/web-app-manifest-192x192.png" ] && make_square 192 "$base/web-app-manifest-192x192.png" && echo "pwa192 $base/web-app-manifest-192x192.png" + [ -f "$base/web-app-manifest-512x512.png" ] && make_square 512 "$base/web-app-manifest-512x512.png" && echo "pwa512 $base/web-app-manifest-512x512.png" + if [ -f "$base/favicon.ico" ]; then + make_square 256 "$TMP/ico.png" + magick "$TMP/ico.png" -define icon:auto-resize=16,32,48 "$base/favicon.ico" + echo "ico $base/favicon.ico" + fi +done + +# 4. OG social cards — whale centered on white, preserve aspect. +for f in apps/web/public/og-image.png apps/demo/public/og-image.png; do + [ -f "$f" ] || continue + magick "$SRC" -resize 1120x520 -background white -gravity center -extent 1280x640 "$f" + echo "og $f" +done + +# 5. favicon.svg — base64-wrapped square raster, keeping the dark-mode invert filter. +make_svg() { # out + make_square 256 "$TMP/svg.png" + local b64 + b64="$(base64 <"$TMP/svg.png" | tr -d '\n')" + cat >"$1" < + + + +SVG + echo "svg $1" +} +for f in ui/public/favicon.svg apps/web/public/favicon.svg apps/demo/public/favicon.svg; do + [ -f "$f" ] && make_svg "$f" +done + +echo "Done." diff --git a/ui/public/apple-touch-icon.png b/ui/public/apple-touch-icon.png index 839ad65bd..3a2aa2d81 100644 Binary files a/ui/public/apple-touch-icon.png and b/ui/public/apple-touch-icon.png differ diff --git a/ui/public/drydock-logo.png b/ui/public/drydock-logo.png index 06fc326be..c432aa545 100644 Binary files a/ui/public/drydock-logo.png and b/ui/public/drydock-logo.png differ diff --git a/ui/public/favicon-96x96.png b/ui/public/favicon-96x96.png index 900cd78da..e60397683 100644 Binary files a/ui/public/favicon-96x96.png and b/ui/public/favicon-96x96.png differ diff --git a/ui/public/favicon.ico b/ui/public/favicon.ico index 52972c7fa..35bedb285 100644 Binary files a/ui/public/favicon.ico and b/ui/public/favicon.ico differ diff --git a/ui/public/favicon.svg b/ui/public/favicon.svg index 4d33bb8d0..0dc11c346 100644 --- a/ui/public/favicon.svg +++ b/ui/public/favicon.svg @@ -1,9 +1,7 @@ - + - + diff --git a/ui/public/web-app-manifest-192x192.png b/ui/public/web-app-manifest-192x192.png index 86d606a2b..6bdd3e58f 100644 Binary files a/ui/public/web-app-manifest-192x192.png and b/ui/public/web-app-manifest-192x192.png differ diff --git a/ui/public/web-app-manifest-512x512.png b/ui/public/web-app-manifest-512x512.png index bd6910ded..f5c15f79e 100644 Binary files a/ui/public/web-app-manifest-512x512.png and b/ui/public/web-app-manifest-512x512.png differ diff --git a/ui/src/assets/drydock.png b/ui/src/assets/drydock.png index 06fc326be..c1e58594c 100644 Binary files a/ui/src/assets/drydock.png and b/ui/src/assets/drydock.png differ diff --git a/ui/src/assets/whale-logo.png b/ui/src/assets/whale-logo.png index 9a7850b73..26dbf6282 100644 Binary files a/ui/src/assets/whale-logo.png and b/ui/src/assets/whale-logo.png differ