UI (this session): - Global audio player now scales the whole interface into the space above it on desktop (sidebar + main) and docks directly above the tab bar on mobile; it stays visible while navigating. - Mesh mobile redesign: floating Chat / BTC / Dead Man / AI / Map tab strip with a single fixed, internally-scrolling pane (page no longer scrolls); tabs hide while a conversation is open; floating back button; collapsible Device panel (starts collapsed); keyboard-aware conversation sizing via VisualViewport so the chat sits just above the keyboard. - Cloud file grid: uniform 4/3 card heights (folders + images match). - Swipe left/right switches tabs on the Apps and Web5 screens. - Map tool fills its pane (no bottom gap); fix skewed Share Location toggle on mobile (global min-height rule was deforming the switch). - Trim redundant helper copy from the mesh AI tab. Also bundles pre-existing in-progress work that was already in the tree: mesh listener/session + wallet + container + bitcoin-status backend changes, docker UI updates, and assorted other UI tweaks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
64 lines
2.5 KiB
Nginx Configuration File
64 lines
2.5 KiB
Nginx Configuration File
server {
|
|
# Host-networked: listen on the app's own port directly (NOT 80, which the
|
|
# host's main nginx already owns). The app is reached at http(s)://<node>:18083.
|
|
listen 18083;
|
|
server_name _;
|
|
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# Proxy the archipelago backend same-origin so the browser never makes a
|
|
# cross-origin request (no CORS, no host-nginx route dependency). The app is
|
|
# served on this node's :18083; cookies are scoped by host (not port), so the
|
|
# browser already carries the `session` (HttpOnly) and `csrf_token` cookies
|
|
# set by the main UI. We forward both, plus the X-CSRF-Token header, to the
|
|
# backend on 127.0.0.1:5678 (reachable because this container is host-networked).
|
|
#
|
|
# This mirrors fips-ui / electrs-ui. The old bridge + 18083→80 mapping forced
|
|
# cross-origin fetches that broke on http-only nodes (blank fields, QR
|
|
# "failed to fetch").
|
|
location = /lnd-connect-info {
|
|
proxy_pass http://127.0.0.1:5678/lnd-connect-info;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header X-CSRF-Token $http_x_csrf_token;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_connect_timeout 10s;
|
|
proxy_read_timeout 60s;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
location /proxy/lnd/ {
|
|
proxy_pass http://127.0.0.1:5678/proxy/lnd/;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header X-CSRF-Token $http_x_csrf_token;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_connect_timeout 10s;
|
|
proxy_read_timeout 60s;
|
|
add_header Cache-Control "no-store";
|
|
}
|
|
|
|
location /api/container/logs {
|
|
proxy_pass http://127.0.0.1:5678/api/container/logs;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header X-CSRF-Token $http_x_csrf_token;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_connect_timeout 10s;
|
|
proxy_read_timeout 30s;
|
|
add_header Cache-Control "no-store";
|
|
}
|
|
|
|
location / {
|
|
add_header Cache-Control "no-cache";
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
}
|