Skip to content

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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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)

Performance Improvements

  • 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