Spaces:
Running
Running
File size: 11,162 Bytes
af9e60e d65efac d721339 0f21014 f2338a4 0f21014 7095f9e 0f21014 678f3be 0f21014 acd4f9c 73a87a7 af9e60e 73a87a7 af9e60e 7095f9e af9e60e 73a87a7 af9e60e 73a87a7 af9e60e 73a87a7 af9e60e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | # Changelog
All notable changes to this project will be documented in this file.
## [1.6.0] - 2026-05-14
### Added
- **Merged JupyterLab terminal** β added the Hugging Face JupyterLab template login page and `/terminal/` routing alongside the HuggingClaw dashboard and `/app/` OpenClaw Control UI.
- **HF template parity files** β restored Git LFS defaults and project metadata/docs that were missing from the merged repository.
### Fixed
- **HF Spaces subpath routing** β normalized internal redirects and WebSocket forwarding so `/app/` and `/terminal/` stay mounted behind the single public Spaces port.
- **Startup log noise** β removed the stale disabled `plugins.entries.acpx` config entry, switched Jupyter token/cookie options to `IdentityProvider.*`, and printed `/app/` with the trailing slash.
- **Private Space navigation** β dashboard buttons now stay in-frame and startup logs print relative routes, avoiding raw `.hf.space` links that can show Hugging Face's outer 404 page on private Spaces.
## [1.5.0] - 2026-05-13
### Added
- **NVIDIA key-rotation support** β added `nvidia-key-rotator.cjs` wiring and startup integration so deployments can rotate NVIDIA credentials similarly to other provider key-rotation flows.
- **Cloudflare keep-alive automation** β added/expanded `cloudflare-keepalive-setup.py` flow and startup wiring to provision keep-alive through Cloudflare Worker automation instead of the older UptimeRobot-first approach.
- **Sync metadata marker model** β introduced a structured workspace marker `(file_count, total_size, newest_mtime, metadata_hash)` to support stronger change introspection in sync code.
### Changed
- **Workspace sync script rename finalized** β `workspace-sync.py` flow was migrated to `openclaw-sync.py` in Docker/startup/docs so restore/sync behavior is centralized under one script.
- **Sync trigger behavior hardened for config churn** β OpenClaw config sync now debounces until JSON settles before immediate sync, reducing false/partial syncs during rapid config writes.
- **Gateway restart flow now saves state first** β restart path was updated to run a pre-restart one-shot state sync so gateway reloads are less likely to drop recent state.
- **Shutdown backup now uses a two-step pass** β graceful shutdown now attempts `sync-once-settled` then a final `sync-once` pass to better capture last-second writes.
- **Telegram allowlist simplified** β consolidated Telegram allowlist into `TELEGRAM_ALLOWED_USERS` and aligned docs/examples.
- **Plugin startup behavior aligned** β startup-installed plugins are synced into `plugins.allow` before gateway launch so runtime-installed plugins are recognized cleanly.
- **Cloudflare proxy path matured** β multiple iterations improved fetch/proxy behavior (header handling, endpoint scoping, API root routing, URL parsing, and logging noise reduction), then simplified unstable undici patching paths.
- **Health dashboard polish** β sync timestamps now show local time, footer credits were corrected, and status rendering/docs were updated for the Cloudflare keep-alive model.
- **CI workflow churn documented** β GitHub workflow files for HF sync were added/renamed/cleaned multiple times as space/repo naming stabilized.
### Fixed
- **Missed rapid backup updates** β sync logic now relies on content fingerprint checks for no-op decisions so same-second or quick successive changes are less likely to be skipped.
- **Non-deterministic metadata hashing** β metadata hashing now iterates paths deterministically to avoid hash jitter from traversal order.
- **Transient file race sync failures** β sync fingerprinting/snapshot copy paths now tolerate transient `OSError` (file rotated/deleted mid-scan) instead of aborting the whole sync pass.
- **State restore migration edge cases** β restore flow includes migration/cleanup behavior for legacy hidden state paths and stale backup entries.
- **Startup/env robustness** β fixed shell export formatting/syntax issues (e.g., NVIDIA/XAI lines) and unbound-variable pitfalls in startup scripts.
- **Proxy runtime errors and noise** β fixed specific proxy runtime issues (including `UND_ERR_INVALID_ARG`, fetch duplex handling, and upstream error visibility) and reduced noisy stdout logs that interfered with clean process output.
- **HF workflow/repo reference mismatches** β corrected and later cleaned workflow repository references during repo migration/restructure.
### Docs
- README/.env/security docs were refreshed across multiple commits to reflect:
- Cloudflare keep-alive replacing UptimeRobot setup path,
- updated secrets and startup environment behavior,
- provider/key-rotation options,
- backup/sync behavior and troubleshooting guidance.
## [1.4.0] - 2026-04-25
### Added
- **Custom OpenAI-compatible provider registration** β HuggingClaw can now register a custom provider at startup with `CUSTOM_PROVIDER_NAME`, `CUSTOM_BASE_URL`, and `CUSTOM_MODEL_ID`, so you can point `LLM_MODEL` at your own OpenAI-compatible endpoint without modifying the OpenClaw CLI
- **Automatic Cloudflare outbound proxy setup** β HuggingClaw can now provision and use a Cloudflare Worker proxy for blocked outbound traffic from a `CLOUDFLARE_WORKERS_TOKEN`, using the same transparent proxy model used in Hugging8n
### Changed
- **HF backup flow simplified** β HuggingClaw now uses `huggingface_hub` directly for restore and sync, matching the safer dataset-based pattern used in Hugging8n
- **HF username no longer required in most cases** β backup namespace resolution now works from `HF_USERNAME`, `SPACE_AUTHOR_NAME`, or the authenticated HF token, so `HF_TOKEN` is usually enough on its own
- **Startup restore path modernized** β startup now restores workspace and hidden state through `openclaw-sync.py restore` instead of configuring a token-bearing git remote
- **README refreshed for the new backup model** β documentation now describes token-only backup setup, the removed git sync assumptions, and the hardened dashboard helper behavior
- **Telegram networking simplified** β removed the channel-specific Telegram transport tweaks in favor of the generic Cloudflare outbound proxy path
- **DNS monkey-patch removed** β HuggingClaw now relies on the Cloudflare outbound proxy path instead of the old `dns-fix.js` preload
### Fixed
- **HF token exposure risk in git remotes** β removed the old authenticated remote URL pattern that could leave `HF_TOKEN` embedded in workspace git configuration
- **Backup status detection mismatch** β dashboard and startup summary now treat backup as enabled when `HF_TOKEN` is present, which matches the new auto-namespace flow
- **UptimeRobot setup hardening gap** β dashboard setup now supports explicit enable/disable control, request rate limiting, origin validation, and earlier API-key validation
## [1.3.0] - 2026-04-04
### Added
- **Built-in browser support** β HuggingClaw now includes headless Chromium support in the Docker image, with automatic startup detection and a warmed managed browser profile for first-run browser actions
- **Full OpenClaw state backup** β backup sync now stores and restores broader hidden OpenClaw state, including agent/session data, so restarts can recover more than just the visible workspace
- **Shutdown sync path** β graceful shutdown now runs a real one-shot backup sync before exit instead of relying only on the periodic sync loop
### Changed
- **Workspace sync hardened** β startup now restores saved OpenClaw state, periodic sync runs an immediate first pass after startup, and the default sync interval is now `180s`
- **Workspace sync card improved** β the dashboard now shows a clearer configured state, better alignment, and more accurate backup status messaging
- **Keep-awake card simplified** β dashboard messaging now changes based on public/private Space state and whether UptimeRobot setup was already completed
### Fixed
- **Private Space dashboard loading** β fixed dashboard status fetching and Control UI linking for HF private Spaces where signed URLs and routed paths behave differently
- **Backup snapshot failures from live browser locks** β excluded transient Chromium runtime files from state backup so browser lock/socket files no longer break sync
## [1.2.0] - 2026-04-03
### Added
- **Dashboard-based UptimeRobot setup** β users can now paste their UptimeRobot Main API key directly in the dashboard and create an external uptime monitor
- **Optional WhatsApp mode** β WhatsApp now stays fully disabled unless `WHATSAPP_ENABLED=true`
### Changed
- **Documentation simplified** β README now explains the simple dashboard flow for external keep-alive, which key to use, and where to paste it
### Removed
- **Internal self-ping keep-alive** β removed `keep-alive.sh` and all startup wiring because internal self-pings do not reliably prevent free-tier HF Space sleep
## [1.1.0] - 2026-03-31
### Added
- **Pre-built Docker image** β uses `ghcr.io/openclaw/openclaw:latest` multi-stage build for much faster builds (minutes instead of 30+)
- **Python huggingface_hub sync** β `openclaw-sync.py` uses the `huggingface_hub` library for more reliable HF Dataset sync (handles auth, LFS, retries). Falls back to git-based sync automatically
- **Password auth** β `OPENCLAW_PASSWORD` for simpler login (optional alternative to token)
- **Trusted proxies** β `TRUSTED_PROXIES` env var fixes "Proxy headers detected from untrusted address" errors on HF Spaces
- **Allowed origins** β `ALLOWED_ORIGINS` env var to lock down Control UI access
- **40+ LLM providers** β Added support for OpenCode, OpenRouter, DeepSeek, Qwen, Z.ai, Moonshot, Mistral, xAI, NVIDIA, Volcengine, BytePlus, Cohere, Groq, HuggingFace Inference, and more
- **OpenCode Zen/Go** β support for OpenCode's tested model service
### Changed
- Provider detection now uses `case` statement (cleaner, faster) with correct OpenClaw provider IDs
- Model IDs now sourced from OpenClaw docs (not OpenRouter) for accuracy
- Google API key env var corrected to `GEMINI_API_KEY`
## [1.0.0] - 2026-03-30
### π Initial Release
#### Features
- **Any LLM provider** β Anthropic (Claude), OpenAI (GPT-4), Google (Gemini)
- **Telegram integration** β connect via @BotFather, supports multiple users
- **Built-in keep-alive** β self-pings to prevent HF Spaces 48h sleep
- **Auto-sync workspace** β commits + pushes to HF Dataset every 10 min
- **Auto-create backup** β creates HF Dataset automatically on first run
- **Graceful shutdown** β saves workspace before container stops
- **Health endpoint** β `/health` on port 7861 for monitoring
- **DNS fix** β bypasses HF Spaces internal DNS restrictions
- **Version pinning** β lock OpenClaw to a specific version
- **Startup banner** β clean summary of all running services
- **Zero-config defaults** β just 2 secrets to get started
#### Architecture
- `start.sh` β config generator + validation + orchestrator
- `workspace-sync.sh` β periodic workspace backup
- `health-server.js` β lightweight health endpoint
|