aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-15 09:33:28 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-15 09:33:28 +0200
commit1e8eae1f3de765fcd8163716de6e5fe5aab5a034 (patch)
treedfdb004229c8b0f57ea1a64a726ed2752c3d18e5 /packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
parentadda9613fad48a68239e2dbd93321818a835c286 (diff)
downloadmeshbay-1e8eae1f3de765fcd8163716de6e5fe5aab5a034.tar.gz
feat(hub): one account, several linked nodes
An account links up to MAX_NODES_PER_ACCOUNT node keys (node_keys table) instead of the one users.pk_node_ed25519; the migration carries each account's key over and the downgrade keeps the last one linked. /v1/nodes/auth accepts any linked key, and its token names the key that won it (nk). PUT /me/node_key adds a key, idempotently, 409 past the limit; DELETE /me/node_key names the key: a browser session any of its own, a node only its own. Unlinking a key closes that node's socket and refuses its tokens at once, on REST and on the socket; the account's other nodes are untouched. /pubkeys no longer gives a node key to other accounts, and gives the caller its last linked one, which installed desktop apps read. The node reports waiting_for_node_key while its key is unlinked and signs in again as soon as the hub says so, so a key linked again is back within seconds; unlinking itself signs in first to hold a token naming its key. Profile -> Linked nodes lists each node (connected, last seen, IP, linked since, This machine in the desktop app) with Copy and Unlink, and adds a key by hand. The Node page banner, Create group and the desktop app add this machine's key instead of replacing another's. Messages that pointed at Settings -> Link Node point at Profile -> Linked nodes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/en.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/locales/en.js24
1 files changed, 15 insertions, 9 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
index 3a56f85..fd56d68 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/en.js
@@ -530,15 +530,22 @@ export default {
'settings.role': 'Role',
'settings.groups': 'Group notifications',
'settings.notifications': 'Notifications',
- 'settings.node_key': 'Link Node',
- 'settings.node_key_desc': 'If you operate a MeshBay node, paste its Ed25519 public key here to link it to your account. Run `meshbay-node status` on the machine running the node to read the key, or copy it from Node \u2192 Overview in the desktop client.',
+ 'settings.node_key': "Linked nodes",
+ 'settings.node_key_desc': "The nodes you run, one per machine. Each signs in to the hub with its own key, and the desktop app links the one on its machine for you. To link one by hand, read its key with `meshbay-node status` on that machine, or copy it from Node → Overview in the desktop app, and paste it here.",
'settings.node_key_placeholder': 'Paste node Ed25519 public key (base64)',
- 'settings.node_key_submit': 'Link Node',
- 'settings.node_key_success': 'Node linked successfully',
+ 'settings.node_key_submit': "Link node",
+ 'settings.node_key_success': "Node linked",
'settings.node_key_unlink': "Unlink",
- 'settings.node_key_unlink_confirm': "Unlink the node from your account? It stops serving your groups until a node is linked again.",
+ 'settings.node_key_unlink_confirm': "Unlink the node {key}? It stops serving your groups until its key is linked again. Your other nodes are not affected.",
'settings.node_key_unlinked': "Node unlinked",
- 'settings.node_key_current': 'Linked node key',
+ 'settings.node_keys_none': "No node is linked to your account yet.",
+ 'settings.node_keys_this_machine': "This machine",
+ 'settings.node_keys_connected': "Connected now",
+ 'settings.node_keys_last_seen': "Last seen {when}",
+ 'settings.node_keys_never': "Has not signed in yet",
+ 'settings.node_keys_linked_on': "linked {when}",
+ 'settings.node_keys_count': "Linked: {n} of {limit}",
+ 'settings.node_keys_at_limit': "{limit} nodes linked, the most an account can have. Unlink one you no longer run to link another.",
// Sidebar
'sidebar.create_group': 'Create group',
@@ -1110,9 +1117,8 @@ export default {
'node.pair_button': 'Pair this browser',
'node.pair_success': 'Paired successfully.',
'node.pair_pending': "Pairing code ready: it is used the next time you open one of this node's groups.",
- 'node.link_other_node': "Your account is linked to the node of another machine, so this node cannot serve your groups.",
- 'node.link_here': "Link this node instead",
- 'node.link_here_confirm': "Link this node to your account? The node linked now, on another machine, stops serving your groups until it is linked again.",
+ 'node.link_here': "Link this node",
+ 'node.link_not_linked': "This node's key is not linked to your account, so it cannot serve your groups. Linking it leaves your other nodes as they are.",
'node.link_other_account': "This node is set up for {account}, not for you, so it cannot serve your groups.",
'node.link_take_over': "Use this node for my account",
'node.link_linking': "Linking…",