aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/i18n.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-15 01:31:49 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-15 01:31:49 +0200
commit5338894f7fec9e1a60affb0e2ff3b9797bcbc968 (patch)
tree731247a1ec2a42f78fd01a45b15d794f6b50a620 /packages/meshbay-hub/src/meshbay_hub/static/i18n.js
parentf4d04741379e77d2ef86cccc93856e590bfe1082 (diff)
downloadmeshbay-5338894f7fec9e1a60affb0e2ff3b9797bcbc968.tar.gz
The Files panel stops guessing, and search says how old its answer is
Four small things, two of which were the same bug wearing different hats. The index cache seeded the Files panel and then raced the live index: IndexedDB is async, so a fast node could hand you the real list and have it overwritten a moment later by the cached one. That is the "choses bizarres". The panel now shows what the node says, or says it cannot reach the node — no third state that looks like data but is memory. The cache stays, written on every sync, and the search page is the only thing that reads it. Search across groups has no other source: it cannot connect to every node to answer a keystroke. So it now says how stale each hit is — "synced 2 hours ago", per group — and a line under the results explains that opening a group refreshes what search knows about it. Deleting a file also rewrites the cache now; it used to refresh the table and leave the cache holding a file that no longer existed, which is why search kept offering it. The invite form is shown only once this browser holds an operator key. Invites are signed with it and the node checks the signature against its roster, so an unpaired browser could fill the form in and fail on submit. An owner who is not the node's operator is told to ask the one who is. Group descriptions now show on the home cards, as they already did in Explore. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/i18n.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/i18n.js8
1 files changed, 7 insertions, 1 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/i18n.js b/packages/meshbay-hub/src/meshbay_hub/static/i18n.js
index 1fe8085..cca595d 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/i18n.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/i18n.js
@@ -263,6 +263,10 @@ const en = {
'members.invite_title': 'Invite member',
'members.username_placeholder': 'Username',
'members.invite_btn': 'Invite',
+ 'members.invite_needs_pairing': 'Invitations are signed with the key this node '
+ + 'pinned for your browser, so pair it below before inviting anyone.',
+ 'members.invite_ask_operator': 'Only the operator of the node hosting this group can '
+ + 'invite, from a browser paired with it.',
'members.pair_title': 'Pair this browser with your node',
'members.pair_hint': 'Your node only accepts operator actions — invites, file '
+ 'deletion — from a browser it has been paired with. Run '
@@ -288,12 +292,14 @@ const en = {
'sidebar.search': 'Search files',
// Status
- 'status.cached': '{n} cached files',
// Search
'search.title': 'Search Files',
'search.placeholder': 'Search across all groups...',
'search.no_results': 'No files match your search.',
+ 'search.synced': 'synced {ago}',
+ 'search.cache_note': 'Search reads what each group looked like the last time you '
+ + 'opened it. Open a group to bring its files up to date here.',
'search.col_group': 'Group',
'search.result_count': '{n} files found',
'search.hint': 'Search file names across all cached group indexes.',