Thanks to visit codestin.com
Credit goes to github.com

Skip to content

fix(setup): stop leaking hal0.thinmint.dev as the dashboard URL#1092

Merged
thinmintdev merged 3 commits into
mainfrom
fix/setup-dashboard-url-leak
Jul 6, 2026
Merged

fix(setup): stop leaking hal0.thinmint.dev as the dashboard URL#1092
thinmintdev merged 3 commits into
mainfrom
fix/setup-dashboard-url-leak

Conversation

@thinmintdev

Copy link
Copy Markdown
Contributor

What

The hal0 setup completion banner hardcoded a maintainer's personal reverse-proxy domain and printed it to every operator:

_DASHBOARD_URL = "https://hal0.thinmint.dev"

Shown on both apply paths — in-process (setup_install.py:89) and via-API (:180) — so anyone running hal0 setup got a broken link pointing at someone else's box. An info leak and a bad first-run experience.

Fix

Replace the constant with _dashboard_url(), which:

  • Reads the canonical URL from GET /api/config/urls — the same source of truth the dashboard itself uses (derives the host from the bind address / forwarded proxy headers).
  • Falls back to the local API base (_api_base()) when the service isn't up yet (install-time in-process path).

No hardcoded public host can ever print again.

Verify

  • tests/cli/test_setup_install.py → 2 passed.
  • No residual thinmint / _DASHBOARD_URL references in src/.

Context

First fix out of the guided "Hal0 Installer Setup" redesign (WS-C, network/URL coherence). Plan: handoffs/installer-setup-plan-2026-07-05.md. Follow-up: Hermes also reads a HAL0_DASHBOARD_URL env var that should derive from the same /api/config/urls source.

🤖 Generated with Claude Code

The `hal0 setup` completion banner hardcoded `_DASHBOARD_URL =
"https://hal0.thinmint.dev"` — a maintainer's personal reverse-proxy
domain — and printed it to every operator on both the in-process and
via-API apply paths. A broken link and an information leak.

Replace it with `_dashboard_url()`, which reads the canonical URL from
`GET /api/config/urls` (the same source of truth the dashboard uses;
it derives the host from the bind address / forwarded proxy headers)
and falls back to the local API base when the service isn't up yet
(install-time in-process path). No hardcoded public host can print.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
hal0-bot and others added 2 commits July 6, 2026 04:36
Unblocks CI for #1092 — ruff `I001` flagged the import block as
un-sorted/un-formatted because the last import group has no trailing
blank line before the next def. Adds the blank line. No semantic change.
@thinmintdev thinmintdev merged commit 96b62be into main Jul 6, 2026
3 checks passed
@thinmintdev thinmintdev deleted the fix/setup-dashboard-url-leak branch July 6, 2026 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant