<feed xmlns='http://www.w3.org/2005/Atom'>
<title>meshbay.git/packages/meshbay-hub/src/meshbay_hub/static/search-page.js, branch v0.9.0</title>
<subtitle>MeshBay — read-only public mirror</subtitle>
<id>https://git.meshbay.org/meshbay.git/atom?h=v0.9.0</id>
<link rel='self' href='https://git.meshbay.org/meshbay.git/atom?h=v0.9.0'/>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/'/>
<updated>2026-08-30T13:19:15Z</updated>
<entry>
<title>fix(hub): show the Files refresh button only on the Search page</title>
<updated>2026-08-30T13:19:15Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-30T13:19:15Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=117f3d2611780aacda60ca529992ca3111de6634'/>
<id>urn:sha1:117f3d2611780aacda60ca529992ca3111de6634</id>
<content type='text'>
In a real group the node streams every index change to connected clients
as it happens (onIndexSync / onIndexDelta), so a manual re-fetch button
there just duplicates the live push. The cross-group Search page has no
such connection — its file list is a one-shot cached fetch — so the
button belongs there and only there. Gated on a new explicit `showRefresh`
prop that only search-page.js passes; `onRefreshIndex` stays in
commonProps for ChatPanel's own use after an attachment upload.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_018BMLQjqFGCize2KtNBT79v
</content>
</entry>
<entry>
<title>fix(hub): wire the Files refresh button on the Search page</title>
<updated>2026-08-30T08:50:51Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-30T08:50:51Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=397727d2bf3f24c81ddda1e7a9eda197d7ed3b9e'/>
<id>urn:sha1:397727d2bf3f24c81ddda1e7a9eda197d7ed3b9e</id>
<content type='text'>
The refresh button (added in 1cb9054, left of the breadcrumb home icon)
was gated on `onRefreshIndex`, which the Search page's embedded FilesPanel
did not pass — so it never showed on the one page it was asked for. The
Search page now passes an `onRefreshIndex` that re-runs its all-groups
index fetch (the only cache it has); the existing progress bar is the
feedback. Unchanged in the normal group Files view.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_018BMLQjqFGCize2KtNBT79v
</content>
</entry>
<entry>
<title>feat(hub): drop the Search page title, add a Files refresh button</title>
<updated>2026-08-29T15:35:20Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-29T15:35:20Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=a36661b4c2a24199922d60be1bcb6ed597b433a5'/>
<id>urn:sha1:a36661b4c2a24199922d60be1bcb6ed597b433a5</id>
<content type='text'>
1. The "Search Files" &lt;h2&gt; is removed from the search page — it duplicated
   the nav and cost a line of vertical space on mobile. `search.title` is
   dropped from all ten locales (its only use).

2. A monochrome refresh button sits left of the Files breadcrumb home
   icon. It calls `onRefreshIndex` (re-fetch the group index from the
   node — the file list is a view over a cached copy with no other way to
   pull a fresh one), spins while in flight, and only renders where an
   `onRefreshIndex` is wired (the real group view, not the cross-group
   search results). New `refresh` icon; `group.refresh_index` in all ten
   locales.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_018BMLQjqFGCize2KtNBT79v
</content>
</entry>
<entry>
<title>fix(hub): 10s connect timeout in search page, error on unreachable download</title>
<updated>2026-08-28T15:29:32Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-28T15:29:32Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=448ade7a463d40d264bf88b85e863fae12be9494'/>
<id>urn:sha1:448ade7a463d40d264bf88b85e863fae12be9494</id>
<content type='text'>
Search-page connections (indexing and pool) now time out after 10s
instead of the transport's default 30s, so down nodes are skipped
faster. Downloads show a user-facing error when a group is unreachable.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(hub): search downloads, photos view, pre-connect optimization</title>
<updated>2026-08-28T14:11:46Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-28T14:11:46Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=4ef6ca817e36e207f57dd810727f7225e7d26eff'/>
<id>urn:sha1:4ef6ca817e36e207f57dd810727f7225e7d26eff</id>
<content type='text'>
Downloads from search: FilesPanel accepts a getTransport callback for
cross-group file downloads. Select/Download are available in search;
delete and zip are hidden (readOnly). Each download connects to the
entry's group via the pool on demand.

Photos view: PhotosApp reused in search with the same pattern as
Videos/Music — synthetic root, per-entry transport refs, group badges
on album cards. Lightbox uses per-entry transport for full-resolution
image fetches. Zip download hidden in search context.

Pre-connecting: connections to all groups start as soon as indexing
finishes, regardless of the active view. Thumbnails cache across pool
evictions, so they're ready when the user switches views.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(hub): cross-group search with reuse of existing views</title>
<updated>2026-08-28T13:35:58Z</updated>
<author>
<name>Christophe Besson</name>
<email>cbesson@gmail.com</email>
</author>
<published>2026-08-28T13:35:20Z</published>
<link rel='alternate' type='text/html' href='https://git.meshbay.org/meshbay.git/commit/?id=eba2e6b14484c124f3c87ff95cd7ee640833e5d3'/>
<id>urn:sha1:eba2e6b14484c124f3c87ff95cd7ee640833e5d3</id>
<content type='text'>
Search page fetches indexes from all groups, then renders consolidated
entries through the existing FilesPanel, VideoApp, and MusicApp
components — no reimplemented views. Groups appear as top-level
directories in the file browser; video/music entries use a synthetic
root with per-entry transport refs for thumbnails and metadata across
groups. Music player lifted to app.js with getConnection(groupId) for
cross-group playback. Connection pool (max 3, LRU eviction) manages
lazy WebRTC connections. All 10 locales updated with search keys.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
