The Loyaly mark everywhere a person sees the product
Brand assets in brand/ (the 512px mark, sizes for each surface, a multi-size .ico). Windows executables carry it as a compiled-in resource (rsrc_windows_amd64.syso from go-winres) so Explorer, the taskbar and the installer show it; installer/build.ps1 therefore uses a plain go build rather than wails build, which would add a second copy and fail the link. The tray icon is the mark with a state dot over its corner - a plain coloured circle read as a generic status light among other icons - rendered from the embedded PNG at 32px so it survives 150% scaling. The desktop app's login, setup and sidebar marks, the head-office web app's mark and favicon, and the engine dashboard's favicon are the same file. Also found while packaging: no wheel so far shipped static/, so the engine's own dashboard at :8010 on a Windows source install would have failed with a missing file. package-data now includes it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGcjxF1cNLcuwc3DAPcnfj
This commit is contained in:
@@ -155,6 +155,15 @@ def create_app(engine: Engine) -> FastAPI:
|
||||
def dashboard() -> str:
|
||||
return (_STATIC / "dashboard.html").read_text(encoding="utf-8")
|
||||
|
||||
@app.get("/static/favicon.png")
|
||||
def favicon() -> Response:
|
||||
# The one static asset besides the page itself. Served explicitly
|
||||
# rather than mounting the directory: nothing else in there is meant
|
||||
# to be reachable, and a mount would make that a matter of what lands
|
||||
# in the folder.
|
||||
return Response((_STATIC / "favicon.png").read_bytes(), media_type="image/png",
|
||||
headers={"cache-control": "public, max-age=86400"})
|
||||
|
||||
@app.get("/api/health")
|
||||
def health() -> dict:
|
||||
from .paths import describe
|
||||
|
||||
Reference in New Issue
Block a user