v0.68.0
Added 2
- Added a built-in store capability for frpc, including persisted store source, Store CRUD admin APIs with runtime reload, and Store management pages in the frpc web dashboard
- Added noweb build tag to allow compiling without frontend assets
Changed 7
- Kept proxy and visitor names as raw config names during completion, moving user-prefix handling to explicit wire-level naming logic
- Build system now auto-detects missing web asset directories and skips embedding, allowing a fresh clone to build without running make web first
- Dashboard gracefully returns 404 when assets are not embedded
- Improved TOML config parsing errors to return immediately with parser position details including line and column numbers instead of falling through to YAML/JSON parsing
- TOML type mismatches now report field-level errors without misleading line numbers
- OIDC auth now caches the access token and refreshes it before expiry, avoiding a new token request on every heartbeat
- OIDC auth falls back to per-request token fetch when the provider omits expires_in
Features
- Added a built-in
storecapability for frpc, including persisted store source ([store] path = "..."), Store CRUD admin APIs (/api/store/proxies*,/api/store/visitors*) with runtime reload, and Store management pages in the frpc web dashboard.
Improvements
- Kept proxy/visitor names as raw config names during completion; moved user-prefix handling to explicit wire-level naming logic.
- Added
nowebbuild tag to allow compiling without frontend assets.make buildnow auto-detects missingweb/*/distdirectories and skips embedding, so a fresh clone can build without runningmake webfirst. The dashboard gracefully returns 404 when assets are not embedded. - Improved config parsing errors: for
.tomlfiles, syntax errors now return immediately with parser position details (line/column when available) instead of falling through to YAML/JSON parsing, and TOML type mismatches report field-level errors without misleading line numbers. - OIDC auth now caches the access token and refreshes it before expiry, avoiding a new token request on every heartbeat. Falls back to per-request fetch when the provider omits
expires_in.