v0.68.0

fatedier/frpv0.68.0Mar 20, 2026by fatedier

AI Summary

This release adds a built-in persistent storage feature to frpc, improves dashboard build flexibility, enhances TOML parsing error reporting, and optimizes OIDC authentication performance.

Key Highlights

  • Added built-in frpc store capability with persistence and admin APIs
  • Added noweb build tag to compile without frontend assets
  • Improved TOML config parsing error reporting
  • OIDC auth now caches access token and refreshes before expiry

New Features

  • Added built-in frpc store capability including persisted store source
  • Added Store CRUD admin APIs and management pages in dashboard
  • Added noweb build tag to allow compiling without frontend assets
  • Improved config parsing errors for TOML files
  • OIDC authentication now caches access token and refreshes before expiry

Full Release Notes

## Features

* Added a built-in `store` capability 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 `noweb` build tag to allow compiling without frontend assets. `make build` now auto-detects missing `web/*/dist` directories and skips embedding, so a fresh clone can build without running `make web` first. The dashboard gracefully returns 404 when assets are not embedded.
* Improved config parsing errors: for `.toml` files, 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`.