7 Commits
Author SHA1 Message Date
zooqueenandHanzo Dev 7500206366 LLM.md: the Help Center serves under gunicorn
Hanzo CI/CD / cicd (push) Failing after 1h3m6s
CI/CD / cicd (push) Failing after 1h3m5s
The serving note named bench serve, which the entrypoint no longer runs.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 16:50:17 -07:00
zooqueenandHanzo Dev 9e0fbd66ea Carry the NLTK corpora the search index reads in the image
Hanzo CI/CD / cicd (push) Waiting to run
CI/CD / cicd (push) Waiting to run
helpdesk's after_migrate hook downloads the tagger, punkt_tab and brown
corpora when they are missing from the container. The image now holds
them, so a boot runs migrate without a network download.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 12:55:05 -07:00
zooqueenandHanzo Dev 93d133b285 Load the telemetry plugin for signed-in sessions only
Hanzo CI/CD / cicd (push) Waiting to run
CI/CD / cicd (push) Waiting to run
Frappe refuses the telemetry switch to guests, so a guest opening the
Help Center no longer sends a request that answers 403.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 12:20:30 -07:00
zooqueenandHanzo Dev db583d7833 Serve Help Center with gunicorn instead of the development server
gunicorn runs frappe.app with /assets and /files served in process, two
gthread workers as frappe_docker runs it. The Werkzeug debugger and
reloader are no longer in the request path. Frappe resolves the site from
the Host header.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 12:11:38 -07:00
zooqueenandHanzo Dev 2decd77580 Build the image on the forge from pinned public sources
The Frappe core (hanzoai/frappe) and telephony are fetched by commit from
GitHub, and helpdesk comes from the build context, so the build needs no
credential and the image holds exactly the commit it is named for.
hanzo.yml declares the amd64 image for the shared ci workflow, which the
develop push lane now calls at its .github path; the docker-action lane and
its GitHub notice are gone.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-15 12:11:38 -07:00
zooqueen 735cc12f0a Cut a semver image and move the pin
The build ended at ghcr.io/hanzoai/helpdesk:sha-<sha7> and stopped. A sha cannot
be read, ordered, or rolled back to by a human, and nothing moved the universe
pin afterward, so every build since 1.26.6 published bytes production had no way
to reach.

The next patch now comes from the REGISTRY, not from `git tag`: what is
published is the only authority on what has been used, and the tag is proven
unused (a 404 manifest probe) before anything is pushed. After the image is
proven to resolve, the run reads UNIVERSE_PIN_TOKEN from KMS and calls
charts/app/pin.sh, which resolves the tag and digest in one registry read and
refuses a non-semver version, an unpullable image, a rollback, or a repository
the caller chose.

The service is `help` — pin.sh resolves values/*/<service>.yaml and reads
image.repository out of the file it finds. Tags here are bare x.y.z, no leading
v, so the match is anchored to keep `stable`, `main` and `sha-*` out of the
ordering.

Still one build per commit: /hanzo.yml declares no `images:` on purpose, and
bench keeps its forge credential for the Frappe core clone.
2026-08-13 23:54:38 -07:00
zooqueen 5d7054c177 Carry the Hanzo mark across the Help Center
The desk SPA's titles, marks and install icons come from this repo's own
source, so they change here: the shell title and apple title, the PWA
manifest name, the sidebar and welcome-ticket copy, the fallback logo
component, the SPA favicon and the 180/192/512 install icons.

The login page, navbar, footer and favicon are rendered by the Frappe core,
which reads those marks from Website Settings / Navbar Settings / System
Settings at run time. helpdesk/brand.py writes them and the entrypoint runs
it per site on every boot, next to the SSO setup. Each field is set to a
constant and guarded on the field existing, so a boot against a site that
already exists restores the same values instead of failing.

The marks are served from this app's own public directory
(helpdesk/public -> /assets/helpdesk), so no page reaches a third-party host
for a logo.
2026-08-13 23:19:08 -07:00