HuggingMes / CHANGELOG.md
somratpro's picture
fix: make kanban patch and Docker build fully failure-safe
ee98905
# Changelog
## 0.2.1 - 2026-05-20
### Fixes
- **Build fails after update** β€” `libasound2` renamed to `libasound2t64` in Debian bookworm. Dockerfile now tries both names, falling back gracefully so builds succeed on all base image variants.
- **Unpinned jupyterlab breaks venv** β€” `uv pip install jupyterlab` without a version constraint could pull a release incompatible with existing Hermes venv packages. Pinned to `>=4.0,<5` range to bound resolution.
- **`uv` not in PATH during Docker build** β€” switched from bare `uv` to explicit `/opt/hermes/.venv/bin/uv` so the install works regardless of base image PATH configuration.
- **`visudo` not in PATH during Docker build** β€” switched to explicit `/usr/sbin/visudo` path.
- **Kanban patch exits with code 1** β€” entire kanban migration patch now wrapped in `try/except`; any unexpected error (file encoding, permission, changed upstream structure) skips silently instead of failing the Docker build.
## 0.2.0 - 2026-05-19
### Features
- **ENV Builder** β€” interactive UI at `/env-builder` for configuring all Space secrets. Grouped sections: Core, Backup, Telegram, Terminal, Providers, Cloudflare, Advanced. Model picker with provider/model-name presets. Import/export as `HUGGINGMES_ENV_BUNDLE` or plain `.env`.
- **JupyterLab terminal** β€” full shell access at `/terminal/`. On by default (`DEV_MODE=true`). Uses `GATEWAY_TOKEN` as terminal password β€” no separate `JUPYTER_TOKEN` needed. Dashboard button added.
- **Chromium browser tools** β€” installs Chromium and display/font libs so Hermes browser-use tools work out of the box.
- **Plugin persistence** β€” Hermes plugin directory symlinked into the persistent volume; plugins survive container restarts.
- **Secret redaction** β€” enabled by default in Hermes config (`security.redact_secrets: true`).
- **Cloudflare Keepalive** β€” Cloudflare Worker setup for automatic space keep-awake.
### Fixes
- **Space stuck at RUNNING_APP_STARTING** β€” root cause: `start_jupyter()` called `python3 -c "import jupyterlab"` using system Python; JupyterLab is installed in the Hermes venv. Import failed β†’ `return 1` β†’ `set -euo pipefail` killed `start.sh` β†’ container crashed every boot. Fixed to use `/opt/hermes/.venv/bin/python`.
- **Terminal double password prompt** β€” proxy now injects `Authorization: token <JUPYTER_TOKEN>` header when forwarding requests to JupyterLab, bypassing its own login screen. One login instead of two.
- **Gemini 404 errors** β€” strip `google/` or `gemini/` prefix when setting Hermes model name; Hermes gemini provider expects bare model name (e.g. `gemini-2.5-flash`, not `google/gemini-2.5-flash`).
- **Config persistence** β€” use `setdefault` for user-configurable fields; always overwrite `model.default` and `model.provider` from env so deploy-time settings win without clobbering dashboard changes.
- **Keys disappearing after restart** β€” sync state to HF Dataset on natural gateway exit (in addition to periodic sync and SIGTERM path).
- **Sync timeouts** β€” set `HF_HUB_DOWNLOAD_TIMEOUT=300` and enable `HF_XET_HIGH_PERFORMANCE` for faster dataset transfers.
- **hermes not found in terminal** β€” symlink `hermes` CLI into `$HERMES_HOME/.local/bin`; add `/etc/profile.d/hermes-venv.sh` so PATH includes venv bin in all shell types.
- **Kanban migration crash** β€” wrap `ALTER TABLE ADD COLUMN` in try/except; idempotent on existing databases.
- **Health endpoint returning 503** β€” `/health` always returns HTTP 200 (gateway status in JSON body). Returning 503 when gateway was starting caused Docker HEALTHCHECK to fail indefinitely.
### Changes
- Space emoji updated to πŸͺ½ (Hermes winged sandals) across README and dashboard.
- Login page redesigned to match HuggingClaw dark-card aesthetic.
- ENV Builder, Terminal, and Control UI all require session auth (single `GATEWAY_TOKEN` login).
- `HF_HUB_ENABLE_HF_TRANSFER` (deprecated) replaced with `HF_XET_HIGH_PERFORMANCE=1`.
- HEALTHCHECK `start-period` tuned to 60s; health endpoint always returns 200.
## 0.1.0 - 2026-05-03
- Initial HuggingMes Docker Space wrapper for Nous Research Hermes Agent.
- Added HF Space dashboard, `/health`, `/status`, `/v1/*` proxy, and Telegram webhook proxy.
- Added Cloudflare Worker setup for Telegram Bot API base URL proxying.
- Added private HF Dataset backup and restore for Hermes state.
- Added Cloudflare Keepalive Worker setup for automatic space keep-awake.