aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-01 14:08:32 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-01 14:08:32 +0200
commitcfc91e0a424163869c64d30e55d55a53f18a3dbf (patch)
tree04ed3bbec11690f62f1e2a738bf89f4b763332e5 /packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
parentba45a3c94806f612fa62812e0b36d08b581a2e47 (diff)
downloadmeshbay-cfc91e0a424163869c64d30e55d55a53f18a3dbf.tar.gz
refactor(node): JSON-only control API, Node page absorbs the admin dashboard
Remove the node daemon's server-rendered admin UI (GET / and /audit, the _render_* helpers and inline templates) and the `meshbay-node ui` CLI verb. The loopback control API stays; it is now JSON only, ruff-clean, and 453 lines (was 1074). Also drop three never-wired endpoints (/api/config, /api/chat/history, /ws/chat, plus broadcast_chat) and the pointless 18000/tcp firewall profiles. The desktop client's Node page (static/node-page.js) takes over what the dashboard showed, reorganised into six tabs (Overview, Groups, Roster, Peers, Audit, Settings): - Overview: version, node id, QUIC port, hub, index-cache maintenance - Roster: node-wide view with unpin - Peers and Audit: auto-load on open, no Load button - Audit: real usernames and group names (resolved from the roster and node.toml), Previous/Next pagination newest-first, Export CSV of every matching row - Settings: node settings, STUN, ICE, denylist, then Unlink from hub Backend: audit.get_entries gains `offset`; /api/audit and /api/peers resolve ids to names via a new _display_names helper; CSP tightened to default-src 'none' now that no HTML is served. draft-v6 sections 2.11 and 2.12 corrected -- the Node page uses the loopback API, not MNP. One capability is intentionally dropped: browser-based admin on a headless server. The CLI covers every operation there. See docs/refactor-node-ui.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQCaZnde4Bjjdu84dhSuF5
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/de.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/de.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
index 3253372..6c03726 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
@@ -847,4 +847,50 @@ export default {
'node.ice_saved': 'ICE interfaces saved.',
'node.ice_reset_auto': 'Switch to auto',
'node.ice_duplicate': 'This interface is already in the list.',
+ 'node.overview': 'Overview',
+ 'node.overview_version': 'Version',
+ 'node.overview_node_id': 'Node ID',
+ 'node.overview_quic_port': 'QUIC port',
+ 'node.overview_hub': 'Hub',
+ 'node.node_roster': 'Node roster',
+ 'node.node_roster_hint': 'Every identity this node recognises, across all groups.',
+ 'node.roster_scope': 'Scope',
+ 'node.roster_scope_node': 'node-wide',
+ 'node.peers_title': 'Connected peers',
+ 'node.peers_empty': 'No peers connected.',
+ 'node.peers_user': 'User',
+ 'node.peers_ip': 'IP',
+ 'node.peers_group': 'Group',
+ 'node.peers_state': 'State',
+ 'node.audit_title': 'Audit log',
+ 'node.audit_all_events': 'All events',
+ 'node.audit_empty': 'No audit entries.',
+ 'node.audit_time': 'Time',
+ 'node.audit_event': 'Event',
+ 'node.audit_user': 'User',
+ 'node.audit_ip': 'IP',
+ 'node.audit_group': 'Group',
+ 'node.audit_detail': 'Detail',
+ 'node.maintenance': 'Maintenance',
+ 'node.maintenance_cache': 'Index cache: {n} path(s) remembered.',
+ 'node.maintenance_prune': 'Prune stale entries',
+ 'node.maintenance_pruned': 'Pruned {n} stale cache entries.',
+ 'node.loading': 'Loading…',
+ 'node.audit_export': 'Export CSV',
+ 'node.audit_exporting': 'Exporting…',
+ 'node.audit_prev': 'Previous',
+ 'node.audit_next': 'Next',
+ 'node.audit_page': 'Page {n}',
+ 'node.audit_exported': 'Exported {n} entries.',
+ 'node.unlink_title': 'Unlink from hub',
+ 'node.unlink_hint': 'Stops the hub from brokering connections to this node and listing it for group members. Your groups, keys, roster and files are untouched — the node keeps serving anyone who reaches it directly. Re-link any time from the group wizard or your profile.',
+ 'node.unlink_button': 'Unlink this node',
+ 'node.unlink_confirm': 'Unlink this node from the hub? The hub will stop routing members to it. Group data on disk is not affected.',
+ 'node.unlink_done': 'Node unlinked from the hub. It may take a moment for the hub connection to drop.',
+ 'node.tab_overview': 'Overview',
+ 'node.tab_groups': 'Groups',
+ 'node.tab_roster': 'Roster',
+ 'node.tab_peers': 'Peers',
+ 'node.tab_audit': 'Audit',
+ 'node.tab_settings': 'Settings',
};