Changelog
5.14.0 (2026-11-03)
Features
api: answer CORS preflight for the docs Swagger UI (f71d13c )
importer: read Marzneshin and Rebecca databases (9dec98b )
import: read a Remnawave API dump (c449fe1 )
sub: advertise a moved subscription address (1ae9d6b )
sub: default to a url-test group in Clash (9bebb36 )
Bug Fixes
xray: ignore disabled REALITY settings during config generation (0c6c475 )
5.13.0 (2026-11-03)
Features
billing: a picture for manual payment, shown with the instructions (c370e5e )
reality: a fresh install accepts the donor's own twin name too (f21af0c )
reality: draw a fresh install's donor from a wider pool of Russian sites (44f8abd )
reality: REALITY on 443, sharing the port with the decoy by SNI (d54e5f9 )
Bug Fixes
decoy: stop advertising HTTP/3, it locked browsers out of the panel (c3ca037 )
nodes: move the front's REALITY route only when Xray took the config (f90049b )
reality: let a node leave its own name for the shared port (7df42ee )
5.12.0 (2026-11-02)
Features
servers: copy routing and connections from another server (f6a2afa )
5.11.1 (2026-10-30)
Bug Fixes
xray: skip an inbound of a protocol this build does not know (3f65969 )
5.11.0 (2026-10-27)
Features
alerts: rules on a server's figures, told to the admin chats and webhooks (e23d980 )
external: name relayed entries by a template, flag undelivered WireGuard (06a046a )
Bug Fixes
audit: label a retired settings section and show nested values in the journal (434709c )
5.10.0 (2026-10-23)
Features
billing: exit survey for users who did not renew (cf4709f )
extsub: relay through many servers, with routing of its own (03782e9 )
extsub: WireGuard servers from a provider (03782e9 )
incidents: give users the downtime back (cf4709f )
nodes: a server's WARP and Opera as configs of their own (03782e9 )
Bug Fixes
xray: pin Xray-core v26.10.21, the old release is gone (9499e66 )
Reverts
nodes: drop a server's WARP and Opera as configs of their own (6db78d1 )
5.9.0 (2026-10-21)
Features
billing: operator-set largest top-up (43bc313 ), closes #122
reality: the server's own domain is the default XHTTP masquerade (1994d22 )
sub: title the TURN card TURN-VK (aea5663 )
5.8.0 (2026-10-16)
Features
maintenance off subscriptions, scheduled broadcasts, self-service link and Telegram limits, monthly summary (c9e7c12 )
status: incident timeline, subscription page notices, incident webhooks (82810f5 )
status: incidents and maintenance on a redesigned status page (f421a94 )
sub: switch the subscription page off (ec67638 )
xray: pin Xray-core v26.10.10 (111982d )
Bug Fixes
mieru: keep accepting after an Accept error (4b68919 )
stats: keep the traffic counted before a restart (eed8859 )
5.7.0 (2026-10-15)
Features
i18n: Persian, right to left (f318d93 )
mtproto: Telegram proxy on a port of its own (d7c5c2a )
reach: check servers from other countries through Globalping (c247167 )
web: the language picker in the top bar, and a row on the phone (f12e496 )
Bug Fixes
mtproto: bound the DC port to 16 bits and reuse one record buffer (616313e )
sub: the Telegram proxy's Copy takes the tg:// link (ee68384 )
update: offer a release only once its binaries are uploaded (28b8a32 )
5.6.0 (2026-10-15)
Features
update: follow node updates, update the master from Servers, schedule only in settings (3355f9c )
5.5.0 (2026-10-15)
Features
dns: more presets, grouped by provider with IP/DoH variants (7bb4c1f )
5.4.0 (2026-10-14)
Features
i18n: Simplified Chinese and Arabic, with a right-to-left layout (060c82f )
5.3.0 (2026-10-14)
Features
hostfw: open the server's ports in ufw, iptables and firewalld (4453d0f )
masquerade: serve the decoy over HTTP/3, draw REALITY's donor and port (8ab3128 )
notify: tell the admins when a lane leaves or rejoins subscriptions (3b4918f )
routing: cascade — leave through our own servers (9bf91cc )
sub: leave a lane that is down out of subscriptions (d1b41e7 )
Bug Fixes
i18n: reword the daily scanner digest (fc2860d )
5.2.1 (2026-10-13)
Bug Fixes
awg: open iptables FORWARD for the tunnel on Docker/ufw hosts (0ce5b19 )
5.2.0 (2026-10-13)
Features
AnyTLS lane, VLESS Encryption/CDN/pinned cert, UUID reset, per-client protocol rules (64f96b6 )
mieru: mieru lane on a port of its own (2655978 )
sub: NaiveProxy for Throne (with UDP), Exclave and husi; AmneziaWG 3.1 for ClashMi, ClashMetaForAndroid, Clash Verge Rev, Mihomo Party, Koala Clash and Throne (2655978 )
5.1.0 (2026-10-12)
Features
naive: NaiveProxy lane through the :443 decoy (24ece96 )
stats: traffic by protocol, per server (24ece96 )
sub: AmneziaWG 3.1 in the Clash profile for mihomo 1.19.30+ and FlClash 0.8.99+, and an amneziawg:// line for INCY (24ece96 )
Bug Fixes
nodes: validate a server's host on create and edit (24ece96 )
5.0.1 (2026-10-09)
Bug Fixes
web: open the editor's sources zip as a draft again (eb96f84 )
5.0.0 (2026-10-09)
Features
plugins: community plugins — sandboxed engine, extension points, in-panel editor (#108 ) (4453864 )
Bug Fixes
webhooks: size the delivery batch by the items, not a product of two lengths (bd6e8e3 )
Miscellaneous Chores
4.4.0 (2026-10-06)
Features
sub: your own page keeps the subscription settings (ae2713e )
sub: your own subscription page — browsers go to your site, the view carries tg_link (e321f4c )
telegram: a mailing switch on the bot's screens, admin notices that tell users apart (6929491 )
user agreement and privacy policy (48f32e5 )
webhooks: reach users without Telegram; mailing and language over the API (50ffdf1 )
webhooks: reminders, a durable outbox and the events an external system needs (3f3b463 )
4.3.0 (2026-10-01)
Features
api: an API key holds its own permissions instead of a role (835feb4 )
api: methods only for keys; retire the API-only permissions (a3a6b97 )
api: tick exact API methods for a key (110a72b )
api: website sign-up under the self-registration rules (07b417e )
sub: an access card — the page is the account, keep its link (48f8352 )
sub: the device add-on names its term — the date and the days left (e859d3b )
telegram: ask before a link code moves a chat off another account (5b095f2 )
telegram: change Telegram from the subscription page, with switches (f781103 )
4.2.0 (2026-09-29)
Features
billing: a journal of what the payment systems sent (acbd3d5 )
billing: flexible plans — extra devices, traffic packs, plan changes (0589051 )
billing: source tags on bot links and a funnel per source (4c780aa )
billing: suspicious activity on the payments page (ae04ecc )
payments: YooMoney wallet transfers and Telegram Stars (9f90082 )
sub: a clearer active-plan block on the subscription page (f61931b )
sub: AmneziaWG, TURN and single configs fold away by default (2172df7 )
sub: Mini App entrance, a connect wizard, a home-screen page, Telegram look (b1edd26 )
telegram: automatic messages on the customer's way (3f91bab )
telegram: refuse signups to accounts on the shared VPN blacklist (cd81586 )
Bug Fixes
billing: extra devices cost the same per device whatever the count (0ad8441 )
billing: what the second review of the money fixes found (e4ca184 )
sub: drop the home-screen block from the subscription page (e8211fd )
sub: what the review of the Mini App entrance found (7e0116e )
telegram: move the menu button off the old Mini App address (7e54f54 )
web: biome's exhaustive-deps on the automatic-message and blacklist panels (a363017 )
web: name a payment provider's field in its error, not its dictionary key (eab4c2b )
what the review of today's features found (a1d81e9 )
xray: keep only a real port as an inbound's public port (cf641e1 )
4.1.0 (2026-09-28)
Features
api: what your own bot or user cabinet needs, and a selling permission (3a390eb )
billing: balance, promo codes and a referral programme (20b81dc )
billing: chargebacks, win-back codes and a sales funnel (48cd7db )
journal: logs and cancelled orders are kept for a year (1b06cf2 )
update: the panel updates itself and its servers on a schedule (dc32d21 )
4.0.0 (2026-09-23)
⚠ BREAKING CHANGES
roles: the MCP address …/v1/mcp//write is gone — one address per key, its tools decided by the key's role; the plain address of a key issued before now offers that key's write tools too, so give an assistant that should only look a key with a read-only role. The administrator role no longer reaches the Telegram bots, backups, restore or the factory reset, which are the owner's. Creating and revoking a full-access API key is the owner's.
Features
roles: roles are permission sets the owner builds (2a803b3 )
Bug Fixes
core: shutdown no longer waits out a template download (d3c8102 )
ui: an empty date reads as a dash (a690219 )
3.9.0 (2026-09-22)
Features
extsub: relay an external subscription through one of our servers (4e3f2c1 )
3.8.1 (2026-09-22)
Bug Fixes
sub: external XHTTP servers reach mihomo, and an HTTPUpgrade one no longer breaks the profile (e122057 )
3.8.0 (2026-09-21)
Features
a cut-off user loses the connections already open, and quotas are checked every 10 s (dd61757 )
store: bounded lookups read from a pool beside the writer (0c6c1fd )
3.7.0 (2026-09-20)
Features
billing: add manual payment as a first-class method (095be9a )
user-detail: clarify device list labels and tooltips (38cb9a2 )
Bug Fixes
i18n: remove country note from placement hint (8c5a575 )
3.6.0 (2026-09-17)
Features
panel: a name that lands in a config file offers only {server} and {user} (9465617 )
sub: every app on the subscription page links to its own page (8b92ede )
Bug Fixes
turn: stopping a relay closes its legs instead of deadlining them (3c9dd4c )
3.5.0 (2026-09-17)
Features
inbounds: WireGuard over calls (TURN), experimental (43dadda )
security: ban an address from a user's addresses, and one list of every ban (6997aa7 )
security: the panel says when a server cannot drop addresses, and the installer brings nftables (9b019e4 )
Bug Fixes
deps: pion/dtls v3.1.9, past the panic on a crafted ServerKeyExchange (7ed4b82 )
dns: refuse servers Xray cannot use, and ask host-named resolvers last (390cbc9 )
subscriptions: connection names drop {flag} and {country} (a7e1659 )
ui: a user's addresses show even when device binding is on (1a3521b )
xray: the API client refuses a message too big for a gRPC frame (8535b5e )
3.4.0 (2026-09-17)
Features
ui: the whole panel reads dates and times in the panel's timezone (9d60c7d )
Bug Fixes
nodeagent: bound the sites budget by the body's length before subtracting (1faa745 )
nodes: a node's health reads a state held in parts as its sync would (db498f0 )
nodes: a node's report is believed only about the users its config lets in (4805e6b )
nodes: the users a node is believed about come from the newest read (d547bbc )
shaper: a nil applier shapes nothing instead of panicking (7feb4bb )
ui: a settings hint with nothing beside it spans its row (52a2baf )
ui: the API tab's save bar sits at the bottom, below the webhooks (5c8fcef )
xray: adding or removing a Hysteria2 user no longer drops everyone on the lane (5a8a704 )
nodes: a node is sent the users that changed, not its whole config again (718644e )
3.3.1 (2026-09-16)
Bug Fixes
branding: labels on the accent turn dark when the accent is too light for white (d42af09 )
journal: the actor for a user's own action reads "user" (6cde852 )
memory: the panel and the node agent keep their Go heap under a soft limit (3a00604 )
memory: the panel's heap limit leaves room for the Xray it runs (9b08124 )
nodes: connection samples are no longer dropped past 8,192 pairs (b7da819 )
nodes: destination rows fit what the panel takes, and users take turns (facaea9 )
sub: sing-box 1.13 and 1.14 load the generated profile again (c13aea8 ), closes #89
users: the list's loading placeholder has the page's shape (8955df1 )
xray: a live change whose api call cannot reach xray is asked again before the full reload (3c1b486 )
connections: a connected device is written every 45 seconds, and device limits are checked every 30 (cf7310a )
connections: connection sightings are written with prepared statements (d70666c )
dashboard: the status feed recounts users every 15 seconds, not every 2 (c1ce800 )
nodes: a node that is current is told so without its state being rebuilt (5e0c5b3 )
nodes: a node's certificate status does not count against its remembered state (9cb5bf6 )
nodes: a node's config is built alone, and hashed without a copy of itself (43f0025 )
nodes: a node's state is held under the gate until it is encoded, and written out after (2f7bb87 )
nodes: config pushes go out gzip-compressed (19c3aaf )
nodes: one read of the working set answers both reconcile questions (1c3a498 )
nodes: the nodes are woken only for a change they can see, and the shared read keeps the credentials it has (eec904c )
settings: the settings are decoded once and read again only when they change (c22a16c )
stats: the stats poll and the enforcement pass stop reading every user whole (0422c11 )
sub: the certificate file is read when it changes, not on every fetch (3633860 )
sub: the per-server online count answers for two seconds (ece3e0d )
sub: what every subscription shares is read once for a few seconds (2d391f8 )
traffic: a traffic batch is written in two statements, not three per user (35982af )
users: an edit to one user rereads that row of the list, and each order is sorted once (14040f9 )
users: subscription and Telegram lookups use their indexes (6ca60c6 )
users: the users list is read once for a burst of requests, and afresh after any change (06f2ff0 )
users: the users page reads summaries, not whole users (fa20987 )
users: the users page works out its counts, tags and search text once per read (b2f6b3b )
3.3.0 (2026-09-14)
Features
api: the external API reaches the new subscription, security and server settings (8f7dd60 )
backup: a restore asks for the backup's own second factor (90ed9d2 )
groups: a group saved with no connection ticked leaves access open (52ae84b )
groups: an access group can cap its members' speed (0dcf5c1 )
security: trusted addresses are never banned automatically (4bba9bb )
servers: a monthly traffic limit starts on the hosting's billing day (23078ad )
subscriptions: a random server order spreads clients across the fleet (ca0df33 )
subscriptions: Happ adds the subscription through an encrypted link (23a71c8 )
users: a term can start on the user's first connection (1f4fd03 )
Bug Fixes
awg: tunnel addresses no longer run out with the user ids (eb3331f )
backup: restoring a backup asks for the second factor (eb21357 )
core: the brute-force guard's cleanup stops with the manager (836ca75 )
groups: the speed limit field spans the editor's full width (8e60568 )
nodes: a busy node's traffic report no longer stalls its sync for good (ca7792a )
overview: the dashboard counts blocklist matches over the real window (9ccddc1 )
ratelimit: a flood can no longer reset a throttled address (414961e )
server: the API and node segments are compared in constant time (4818a7a )
users: adding a user granted a Shadowsocks inbound no longer restarts Xray (bb16a4b )
users: bulk reset and import both anchor the quota cycle (856c774 )
access: the access flush and throttle stop scaling with every user and pair (bedba4f )
awg: a tunnel's peer list stops re-deriving every user's public key (d2f0ac8 )
nodes: a node changes users without restarting Xray (a1215bf )
nodes: config builds and traffic passes read only what they use (67ef8a8 )
nodes: nodes share one read of the fleet's users, and one enforcement pass (35c5c46 )
secrets: encrypted fields open without rebuilding the cipher each time (afb0e0f )
users: reading one user counts only that user's devices (3364abf )
users: the users page loads one window of rows instead of every user (ebce6e4 )
3.2.0 (2026-09-12)
Features
routing: never fall back to direct when a lane is down (55be958 ), closes #85
Bug Fixes
proxy: a list host that fails a refresh no longer empties the lane (8b7eab4 )
3.1.0 (2026-09-10)
Features
awg: AmneziaWG 3.1 (59d9a9f )
awg: imitate a real protocol ahead of the handshake (b14c81d )
Bug Fixes
awg: the panel says which protocol a server imitates (f957d81 )
conn: the obfuscation summary shows the whole 3.1 parameter set (4a31102 )
i18n: shorten the AmneziaWG settings hint (d1184f6 )
overview: recent events carry a date, not just a clock (5e69b62 )
3.0.0 (2026-09-09)
⚠ BREAKING CHANGES
the connection policy no longer refuses networks by ASN. The "forbidden networks" list is gone from the settings page and from the model, so an operator who had one configured is no longer enforcing it — the country rule is what remains. The stored value is ignored on load and dropped on the next save; blocks already recorded under the ASN reason keep their label, so the history still reads correctly.
Features
abuse: keep blocklist matches for 30 days (4fd715b )
core: reduce long-poll hold interval to 20s (bf128bf )
the console redesign (e30ea13 )
Bug Fixes
audit: skip journal rows on no-op user edits (1e640b6 )
i18n: restore the health hint for a stale panel (561480e )
stats: say which window each report on the page covers (c982c69 )
ui: indicate unsaved egress toggle state in status badges (3e46622 )
users: a traffic reset restarts the quota cycle (5b30a16 )
2.14.2 (2026-09-09)
Bug Fixes
warp: use IP endpoints and multi-endpoint pool for WARP lane (3cfaf19 )
2.14.1 (2026-09-08)
Bug Fixes
alerts: a panel restart is not an AmneziaWG outage (451778b )
http: a held HTTP/2 response outlives ReadHeaderTimeout (2000a0e )
nodeagent: a held poll clears the node's sync-failure window (6c6e30e )
sub: the lane name comes back typed, not read out of the config map (1c12158 )
2.14.0 (2026-09-06)
Features
external: present a device when reading somebody else's subscription (cab6a0f )
hysteria2: the obfuscation key is generated, never typed (9c2cb2e )
nodes: the AmneziaWG tunnel is watched on nodes, not just on the master (4bbf73f )
Bug Fixes
core: the manager's background loops stop when it does (3d3d20a )
health: the AmneziaWG row sits under Xray config, not at the end (ed6fd75 )
health: the master's own AmneziaWG tunnel is in its diagnostics too (a02b4b2 )
web: five defects the fork's frontend audit pointed at, done our way (74e3035 )
2.13.0 (2026-09-05)
Features
billing: a tariff carries its own traffic refill cycle (4d4d47b )
hysteria2: Salamander obfuscation for the lane and for custom inbounds (2a86b00 )
security: a fresh second factor for the two actions with no undo (feff7d5 )
servers: a traffic limit per server, with an alert and optional hiding (45c70b8 )
subscriptions: operator-editable profile templates for mihomo, sing-box and Xray JSON (ab1afd3 )
subscriptions: variables in connection names (2653cb4 )
Bug Fixes
admins: the owner's password no longer has to be ASCII to remove an account (a5fed37 )
external servers no longer vanish with a hidden master (d81120b )
security: bound what a subscription template can expand into, and close the setup-time step-up gap (f88615e )
security: four more from a second review pass (0c15853 )
servers: the traffic alert stopped repeating itself, and stopped lying (54547ba )
subscriptions: name variables reach the share links, and rendered names cannot collide (21c9658 )
the subscription page shows external servers, and addresses the panel (e5572f1 )
2.12.1 (2026-09-03)
Bug Fixes
deps: x/crypto 0.56.0 for the two ssh channel DoS advisories (4a87891 )
modal/drawer panels no longer scroll themselves off-screen (464e30b ), closes #75
2.12.0 (2026-09-02)
Features
external subscriptions, lanes through foreign servers, changelog, factory reset (b37843e )
harden the subscription actions, the stops, the bulk paths and the sweeps (4147468 )
Bug Fixes
name every journal event from the dictionary, with details for devices, policy and abuse (3da54dc )
put the factory-reset button under its text (9d047e6 )
stop offering AsIs twice in the direct DNS strategy (de69159 )
2.11.0 (2026-09-02)
Features
AmneziaWG as a built-in lane (94af079 )
answer port 80 instead of leaving it closed (6ce7dfd )
answer port 80 on nodes too (ba0d549 )
client-side DPI evasion in the subscription (fragment, noise, record fragment) (a24a543 )
import and export users (Marzban, 3x-ui, and this panel's own file) (1d43f8e )
list and revoke your own panel sessions (e97a5cb )
move the security lists to the statistics page (1e5fc83 )
name the country and network operator behind each scanner (b82f8f5 )
one Save and one Cancel per settings screen (4968feb )
operator notes and tags on users, with the client id shown in the list (3199c21 )
optionally hide a server from subscriptions while it is offline (30cd873 )
order subscription servers by load, weight and capacity (60f8846 )
refuse connections by source country and network (158f78e )
say why a config was rolled back, and roll back to one that ran (3087eab )
sign-in alerts and automatic blocklist measures (7b7ce88 )
update Xray-core to 26.7.28 (e728ac6 )
Bug Fixes
a manager built without a shaper must not crash the tests (14f29e3 )
answer an unknown API path with JSON, not with the app shell (88bc658 )
page the recent-scanners list instead of dumping every row (28ae26a )
port 80 names this machine, and keeps naming the right one (8dcfed3 )
re-send the user set when Xray comes back from a crash (62bbde0 )
roll back an unloadable config even when no Apply preceded it (707bfc9 )
show a proxy listener's default port as a value while it is off (45c74c5 )
snapshot the config before Xray reads it, and pin what was only assumed (7860433 )
spell the scanner's country the way the rest of the panel does (3beaafd )
take port 80 before issuing the certificate, not after (fdc42ee )
the JSON fallback has to cover every method, not just GET (ceaa62f )
2.10.1 (2026-08-24)
Bug Fixes
count devices by HWID when HWID is what identifies them (#66 ) (38a51ea )
forgive a network handover instead of giving up the device limit (84afd47 )
wait out a network change before the device limit cuts anyone (6fa0043 )
count devices in one pass instead of once per connection row (3674986 )
Reverts
drop the handover grace, it did not work and cost enforcement (33f8745 )
2.10.0 (2026-08-22)
Features
ui: table views for users, the journal and both payment lists (fd21de9 )
Bug Fixes
cli: say so when a rescue password is redirected out of the terminal (56e88cb )
TLS lifecycle and subscription rendering defects (ec41ee2 )
2.9.1 (2026-08-19)
Bug Fixes
a re-ask no longer re-arms a node command already delivered (820dc86 )
a refused subscription must not look like an empty one (a1375b3 )
bound a bulk user action (435aaed )
mcp: keep the whole backup surface out of the assistant's toolbox (3c11034 )
node commands survive handover; subscription access fails closed (9ac057c )
persist node commands; make GET /v1/nodes/{id} match the list (66ffe8f )
write a fleet-wide node command in one transaction (de92428 )
2.9.0 (2026-08-18)
Features
api: publish the configuration surface over /v1 (and therefore MCP) (7959249 )
config: snapshot/rollback the whole server config, not just routing (e39bcbb )
node: surface sync-quality + smart backoff for a limping transport (022ef8b )
ops: make the Xray watchdog operator-visible and toggleable (5a723d8 )
security: probe detection — optional firewall auto-block + daily digest (6bc6bcc )
stats: connection map by network operator (ASN), not just country (2df16d7 )
step-up on reset/restore; widen egress floor; fix misleading hint (302cb98 )
tg: split the client-bot device line into IP and HWID counts (b4b5e14 )
Bug Fixes
act on the three-agent review of the new API surface (c162af9 )
api: apply the live half of the settings a PATCH changes (fbdefab )
bound device roster, cache public pages, close billing gaps (5e2a84a )
bound probeblock set, quiet nft failures, snapshot-rollback UX, geo re-parse (6fe3f86 )
error on ASN byte-cap truncation; close probeblock disarm race (028cad5 )
guard restores against a newer schema, unlock decoy reads, bound broadcasts (032e0b7 )
harden snapshot rollback, node backoff, probeblock, ASN parsing (ef2f1bc )
node: force HTTP/1.1 for the sync long-poll (stop GOAWAY flapping) (c01a9c9 )
paid-renewal quota, tunnel→control-API escape, order cancel guard (4e1664d )
support impersonation, resurrected nodes, half-applied rollbacks (53b9b7d )
the rest of the three-agent sweep (daa530e )
watchdog: still detect+alert a wedged Xray when auto-recovery is off (6aeeab4 )
2.8.0 (2026-08-15)
Features
audit: search, date-range filter and CSV export for the panel journal (fdbfe89 )
cli: add a rescue command to regain locked-out access (c807b2b )
nodes: per-node traffic coefficient for quota (0a13450 )
ops: maintenance mode (44571af )
routing: config snapshots with one-click rollback (d93d130 )
security: detect IPs scanning for the hidden panel path (8f5852a )
stats: connection geo map — source IPs by country (3f8e15b )
sub: response rules — force format or block by client/OS (545698c )
xray: watchdog auto-recovers a wedged (alive but not serving) Xray (f5bb172 )
Bug Fixes
auth: set Secure and SameSite on the session-clearing cookie (3b7385b )
harden geoip parser, probe miss-detection and CSV export (review) (4de933e )
post-review fixes for the three new features (e4cc344 )
2.7.1 (2026-08-14)
Bug Fixes
docker: bump build image to golang:1.26.6 (f809173 )
2.7.0 (2026-08-14)
Features
decoy: add a self-hosted Nextcloud login page (15119b2 )
inbounds: add Shadowsocks-2022 as a custom inbound protocol (1e6c6b6 )
inbounds: allow emoji in connection and lane names (9f10280 )
Bug Fixes
api: self-host Swagger UI; add Dependabot for Go and actions (383d171 )
deps: bump Go to 1.26.6 for stdlib security fixes (609c4af )
inbounds: carry the Shadowsocks method through the request mapping (5e0cb7c )
2.6.0 (2026-08-13)
Features
api: serve the panel API to assistants over MCP (db89bec )
api: window every list with limit and offset (5b971d5 )
devices: bind installs by HWID and cap them per user (3f0c320 )
monitoring: add Prometheus metrics and a public status page (f87452a )
shaping: cap per-user speed with kernel traffic shaping (a45843e )
stats: add a per-server daily series and fill quiet days (5d9ba81 )
store: add schema for devices, speed limits, uptime and status page (3c23a41 )
ui: surface devices, speed limits, nodes and the new settings (dcc56fa )
Bug Fixes
api: honour enabled when creating a webhook (82bf667 )
api: reject unknown and read-only body fields (64845a8 )
decoy: serve every decoy asset from our own origin (226c3f1 )
sub: keep Telegram deep links working without the SDK (a52d165 )
2.5.0 (2026-08-11)
Features
sub: add v2RayTun deep link support (8473936 )
ui: add client-side pagination for long lists (0a96691 )
Bug Fixes
tls: restart Xray on certificate update instead of reconcile (a9b16b1 )
web: standardize background colors on groups panel cards (1981c8c )
2.4.1 (2026-08-10)
Bug Fixes
billing: reset usage counters on plan change (18f10e9 )
2.4.0 (2026-08-10)
Features
auth: add TOTP two-factor authentication for admin logins (8e0e191 )
node: support join via ROSPANEL_JOIN env for containerized nodes (0906546 )
store: cache schema for fresh databases to speed up tests (e0e95d2 )
2.3.0 (2026-08-06)
Features
api: add per-node system proxy endpoints (SOCKS/HTTP) (031395c )
Bug Fixes
core: prevent system proxy from colliding with panel port (aa6052f )
proxy: clarify proxy user validation and prevent save on invalid state (43be684 )
2.2.0 (2026-08-02)
Features
billing: tie tariff plans to access groups (b4c5607 )
Bug Fixes
sub: add udp: true to all Clash proxy entries and fix rule quoting (7b28b6b )
2.1.0 (2026-07-30)
Features
routing: give WARP a local address and publish both egresses (603fcb8 )
telegram: route everything Telegram-bound through an optional proxy (0c94e1f )
Bug Fixes
telegram: hold the bots until a local egress actually answers (298bada )
telegram: log why the Mini App SDK fetch failed (9319614 )
xray: rebuild Hysteria2 inbounds instead of restarting for user changes (52a93e8 )
xray: run WARP's WireGuard in userspace to stop a routing-table leak (fe7556c )
xray: skip the restart when the generated config is unchanged (c76f3d9 )
2.0.0 (2026-07-29)
⚠ BREAKING CHANGES
i18n: response shapes that carried rendered Russian now carry dictionary keys, so anything reading them has to word them itself.
Features
i18n: Russian/English across the panel, bots, subscription page and CLI (bfe6c88 )
1.5.0 (2026-07-26)
Features
core: add custom inbounds, access groups, and runtime port guard refresh (21fe5ba )
core: add fleet-wide Xray and TLS alerts for remote nodes (e361e05 )
core: proxy Telegram Mini App SDK through our origin (6453ea0 )
decoy: harden decoy to mimic real static file server (30ce448 )
Bug Fixes
sub: self-host Mulish webfonts to eliminate render-blocking Google Fonts (b3d6b01 )
1.4.0 (2026-07-23)
Features
core: add confirmed Xray restart tracking for remote nodes (b0cd098 )
Bug Fixes
web: add typecheck script and update run() API usage (9ccfef6 )
1.3.0 (2026-07-22)
Features
add abuse detection with blocklist matching (34d65fa )
api: add /v1/stats/nodes endpoint for traffic breakdown by server (b471b2c )
1.2.0 (2026-07-20)
Features
telegram: support relay, broadcasts, and the scaling work that came out of it (#34 ) (a5bc0f8 )
Bug Fixes
telegram: handle 429 rate limits with retry logic (170a95d )
1.1.0 (2026-07-16)
Features
iplist: add iplist database support with independent refresh cadence (33042a5 )
1.0.0 (2026-07-15)
Features
multi-node fleet, payment provider registry, flexible self-registration (6aa1b45 )
0.15.0 (2026-07-13)
Features
health: connection self-test that verifies traffic actually flows (8fd1a4e )
health: self-test flags egress that isn't the server's own IP (04dc816 )
subscription announce, expired-user auto-delete, DB integrity recovery (346f174 )
Bug Fixes
reality: reject donors with oversized certs (#6402 ) + name the cause in self-test (8dbcb26 )
self-test TLS pin on self-signed, DB recovery blank-boot, egress wording (639559e )
0.14.0 (2026-07-12)
Features
admins: multiple admins with roles and an admin audit trail (3ac3c84 )
admins: multiple admins with roles and an admin audit trail (35c18ba )
Bug Fixes
ui: stop the version badge overlapping the panel name in the header (347710a )
0.13.0 (2026-07-11)
Features
audit: add comprehensive audit log for user and billing actions (d75eb33 )
backup: scheduled local backups, independent of Telegram (c9293e1 )
core: surface connguard and BBR status in the health report (7a2693e )
log: timestamp panel logs, in the operator's timezone (64bb14d )
server: lock out repeated invalid API keys, add a key-free liveness probe (94f84cb )
xray: add a Restart button to the Xray card (82e8ad1 )
xray: run Xray in the operator's timezone so its log matches the panel's (09e58f7 )
Bug Fixes
billing: always show tariff settings regardless of enabled state (7cc5c32 )
datasec: correct error message about secrets.key recovery (26abc24 )
lint: name the UserEventRetentionDays doc comment after its const (6b8c784 )
log: pass structured key/value args to the slog helpers (33d87d4 )
payment amount verification, login lockout hardening, and timezone-correct logs (4169129 )
payments: verify the charged amount matches the order before granting a plan (f585749 )
security: bump Go toolchain to 1.26.5 to patch stdlib CVEs (f4c7b2f )
server: keep login lockouts when shedding the rate-limiter map (33e3774 )
sub: hide the tariff and payment block for users with no plan (94d2d19 )
ui: stop the Xray card overflowing on mobile (849fd65 )
unify first-run URL label to "Full URL" (a6e8912 )
store: index and prune the connections table (92e66e2 )
0.12.0 (2026-07-10)
Features
add startup stage logging, improve UX for secret path and update flows (fe8ceb3 )
Bug Fixes
return 403 instead of 401 for wrong step-up password (e34a328 )
0.11.0 (2026-07-10)
Features
billing: add plan migration, cancellation, renewal and idempotent payments (84b4ece )
core,store,link: add custom per-protocol node display names (9fd6403 )
Bug Fixes
billing: refactor free plan logic and upgrade Xray to v26.6.27 (4d031a3 )
0.10.0 (2026-07-08)
Features
api: add REST API, webhook delivery, and payment stats (fa009ae )
0.9.0 (2026-07-04)
Features
dns: add support for primary/secondary DNS presets with migration (3ef7cbd )
Bug Fixes
server: allow TLS status read during first-run wizard (5a3014b )
0.8.1 (2026-07-01)
Bug Fixes
billing: adjust trial and free plan data limits (a9b4e3b )
core: add concurrency, validation, and robustness safeguards (ce1d0e5 )
ui: adjust selection bar breakpoints to match header nav (80b0842 )
ui: update user card selection ring color to brand-600 (c5c614e )
0.8.0 (2026-06-30)
Features
connguard: add host-level per-IP connection guard (511f963 )
security: harden systemd service and Argon2id concurrency (7b58c1b )
Bug Fixes
core: force full reconcile when hysteria is enabled on user sync (f1274b6 )
0.7.0 (2026-06-30)
Features
payments,panel: add test-friendly base URL overrides and implement health diagnostics (87e007a )
telegram: admin event notifications (838f066 )
users: add bulk actions with single Xray sync (52c1d07 )
users: add confirmation dialog for bulk actions (cc8ab0a )
0.6.0 (2026-06-28)
Features
billing: add payment provider integration with YooKassa and CryptoBot (b206250 )
0.5.0 (2026-06-25)
Features
branding: add customizable panel name and colour theme (4cdb329 )
cli: add path command to show panel URL and check secrets/DB health (ca6768d )
Bug Fixes
core: normalize ACME host names to lowercase (a63ac59 )
0.4.0 (2026-06-24)
Features
billing: tariffs, payment orders, trial and free tiers (ea67e3a )
security: encrypt secrets at rest, add step-up auth and session pepper (961adec )
security: SSRF-safe outbound HTTP for proxy lists and routing templates (ddc9456 )
telegram: one-time per-user bind codes instead of sub-token links (410cf7c )
Bug Fixes
ui: minor card layout and Telegram settings copy tweaks (598a00f )
0.3.0 (2026-06-24)
Features
device limit, sub-token rotation, name-in-title (5288eee )
device limit, sub-token rotation, name-in-title (+ slog deadlock fix) (fc99fd8 )
logging: migrate core logs from log to slog with structured attributes (b9b15e6 )
telegram: add public user bot (self-registration + self-service) (32d31c2 )
telegram: public user bot — bring to main (missed by stacked merge) (39fd53a )
web: replace center loader with skeleton placeholders for all panels (43546db )
Bug Fixes
logging: stop slog→log recursion deadlock on startup (eae6071 )
logging: stop slog→log recursion deadlock on startup (004979c )
web: correct device limit label in statusInfo (531698f )
0.2.0 (2026-06-22)
Features
telegram: add Telegram admin bot for user management and backups (b1a5afa )
0.1.1 (2026-06-21)
Bug Fixes
install: make the curl | sudo bash one-liner robust (pipe form, /dev/tty prompts, cursor-based FIRST-RUN capture) (464cb91 )
install: widen FIRST-RUN credential wait to ~30s and scope to this install (c2005b4 )
wizard: reflect real TLS state in address step (domain/IP, self-signed vs issued), settings-style validation (497bf4e )
0.1.0 (2026-06-21)
Miscellaneous Chores
Back to top