- Re-apply WARP rules after container restart; wait for warp up
- Drop stale WARP IPs from UI when no matching peer AllowedIPs
- MTProto: status?withLogs=1, GET /api/mtproto/tail, richer /api/* 404 JSON
- WARP intro + MTProto copy; bump patch to 1.2.24
Co-authored-by: Cursor <cursoragent@cursor.com>
Repair broken HTML merge. Extend /api/panel/footer with PANEL_FOOTER_OZON_URL (default Ozon СБП) and labels in strip+footer.
Co-authored-by: Cursor <cursoragent@cursor.com>
mtproto status now derives advertised host from request when MTPRO_PUBLIC_HOST/CLIENT_CONFIG_ENDPOINT are unset, so tg:// always works with the host:port the admin uses. Adds copy button. Adds theme selector (auto/light/dark) persisted in localStorage with prefers-color-scheme fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public GET /api/panel/footer with env-backed URLs (defaults: Boosty + t.me sponsor). install.sh forwards PANEL_FOOTER_*. Promo only in admin SPA, not nginx landing.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Rename snapshot to snap; bust app.js cache (?v).\n- /health returns version from package.json; startup log prints v.
Co-authored-by: Cursor <cursoragent@cursor.com>
ReferenceError fixed by awaiting /api/mtproto/status before using snap. Footer: GitHub-only; dropped Boosty/Ozon/Telegram. Removed advertiseHint from install JSON (hint remains on status).
Co-authored-by: Cursor <cursoragent@cursor.com>
Docker pull/run/remove/restart via host socket (no SSH), optional
secrets and tg:// links when MTPRO_PUBLIC_HOST or CLIENT_CONFIG_ENDPOINT set.
Expose MTPRO_* and UI_HIDE_MTPROTO through install.sh.
Co-authored-by: Cursor <cursoragent@cursor.com>
/api/protocols now returns uiHidden alongside edition; client
applies both so cascade/warp stay hidden if /api/clients errors
out (e.g. missing clientsTable in tunnel container).
Co-authored-by: Cursor <cursoragent@cursor.com>
Auto AWG_PROFILES now docker-execs each amnezia-awg* container to
pick wg0.conf vs awg0.conf, fallback find, clientsTable siblings.
Fixes legacy layouts where awg0.conf does not exist.
Co-authored-by: Cursor <cursoragent@cursor.com>
Before spawning helper, scan running amnezia-awg* containers and
build AWG_PROFILES JSON labeled by UDP port; pass via env so PRO
install.sh writes it into new panel and /root snapshot.
Co-authored-by: Cursor <cursoragent@cursor.com>
PRO install.sh calls openssl (line 102) for initial secrets and
tar to unpack the release; Alpine docker:*-cli ships neither.
Add them to apk/apt step plus early presence check for clearer log.
Co-authored-by: Cursor <cursoragent@cursor.com>
Helper used DATA_DIR (in-container path) for bind-mount source.
Daemon created phantom /data on host, log + staging went there
instead of /opt/amnezia-admin-data. Resolve HOST_DATA_DIR via env
or docker inspect; place staging under DATA_DIR so single mount
exposes both log and install.sh to helper.
Co-authored-by: Cursor <cursoragent@cursor.com>
Poll community-install-last.log after «Установить PRO» with GET
/api/community/install-log; preserve log DOM across banner redraws.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run install.sh in a disposable docker:26-cli container after docker rm
FREE/landing/stale PRO; keeps working after API response. Legacy in-panel
bash retained when COMMUNITY_DISABLE_DOCKER_CLI_HELPER=1. Persist related
env vars in install.sh from previous container.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ship full install stack with .amnezia-panel-edition=community; docs and
footer point to Boosty/PRO. Managing peers, export, cascade and WARP
require private PRO build.
Co-authored-by: Cursor <cursoragent@cursor.com>