Skip to content

Move over from Audiobookshelf, pair with the app's Scan a QR code, invites on a phone, and LibriVox fetch changes - #306

Merged
KodeStar merged 16 commits into
mainfrom
docs/new-user-b
Nov 14, 2026
Merged

KodeStar merged 16 commits into
mainfrom
docs/new-user-b

Conversation

@KodeStar

Copy link
Copy Markdown
Owner

Closes #278, #304. Docs for KodeStar/audiosilo-server#384, KodeStar/audiosilo-frontend#297 and KodeStar/audiosilo-bridge#70.

User Guide

  • New page "Move over from Audiobookshelf" (getting-started/coming-from-audiobookshelf.md), linked from first-run step 5, the sidebar and Features. It covers:
    • Audiobookshelf's metadata.json, which is off by default ("Store metadata with item"; Audiobookshelf writes a book's file only when it saves a change to it);
    • the import, Match automatically, and what unmatched means;
    • adding a missing book, layout differences, and running both side by side.
  • Pairing:
    • connecting.md leads with: install the app, tap Scan a QR code, and where the QR is for an admin and for someone invited.
    • The camera claim is fixed in first-run.md, connecting.md and account.md: the phone's camera opens the web player, or for an invite the invite page.
    • New troubleshooting entry: "Scanning the QR code opened a web page".
  • Invites (admin/users-and-invites.md): the 7-day default, Share, the optional password, the three notices, the phone invite page and the store links.
  • Matching (health.md, books.md): the community database has gaps; link to "add a missing book".
  • LibriVox:
    • a fetch is followed after you leave the page;
    • the Bridge-away notice and the bad-link page;
    • the matched, kept and unmatched notifications;
    • sections are kept through an archive.org outage, and abandoned downloads are cleared after 7 days.
  • Proxy headers (remote-access.md): a set goes to the one https address it was entered for. A plain-HTTP home address never gets them.

Developer Docs

  • bridge/librivox.md: adopted (false only when this run placed the folder), the outage rule, meta refusals failing fast, a parked fetch freeing the lane slot, the sweep, the server id in the state, and the fold by adopted.
  • api/reference.md: the redeem payload's admin; links ios/android/apk; librivox.fetch title and adopted; librivox_match.
  • Also updated: the contract mirror and the data model, auth, web UI and frontend pages.

Screenshots

Review

/simplify plus one /code-review high --fix; the console strings match server commit 0f7420f. Gate: npm run build green (links and anchors checked); old anchors kept.

A new user moving from Audiobookshelf found most books unmatched and no
page that said why. The new page covers running both side by side, turning
on Audiobookshelf's Store metadata with item (off by default; it writes a
book's file only when it next saves that book), the history import, Match
automatically and where the unmatched list is, what the community database
holds and what the marketplace setting picks, adding a missing book, and
the folder layouts that read differently. The match pages now say the
database has gaps and link to adding a missing book.

Part of #278.
Several pages told people to scan a pairing code with the phone's camera
and said it opens the app. It opens a web page: the invite page for an
invite's code, the web player for a pairing code. Connecting now leads
with installing the app and tapping Scan a QR code, says where the code
is for an admin and for someone invited, and covers the app's new connect
layout and the invite page on a phone with its store links. Invite people
covers the 7-day default, Share, the optional password and the notices for
a link that only works nearby. Remote access now says proxy headers go to
the one https address they were entered for, so an https home address can
carry them.

Part of #278.
… how a book is matched

Find on LibriVox now follows a fetch after you leave the page, keeps the
page when the Bridge goes offline, and refuses a link to a library the
server doesn't have. The notification says whether the book was matched,
kept its match, or couldn't be matched (a warning). Downloads now survive
an archive.org outage, and an abandoned one is cleared after 7 days.
…iVox adopted

The redeem payload gains admin (true for an admin's code) and links.ios,
links.android and the additive links.apk; web_url opens the web player
from a phone's camera, since the store apps claim no domain. The connect
page hides the console from listeners and leads with the app on a phone,
and the console's invite dialog asks for 7 days, can set a password and
warns about links that only work nearby.

librivox.fetch gains the params' title and the result's adopted. The fold
replaces a placed book's match and drops its leftover ASIN and ISBN, and
keeps an adopted book's match; the event carries librivox_match. The
Bridge keeps sections through an archive.org outage, fails fast on a
metadata refusal, frees its lane slot while parked and sweeps abandoned
staging after 7 days. The player follows a fetch past its page.

Part of #278.
…e on a phone

find-librivox.png was taken by capture-admin.mjs, where the stand-in
Bridge is paired, so a SKIP_ADMIN=1 run dropped a web-player shot.
capture-web.mjs now takes it, standing in for /server's Bridge block with
a route as Find shows does, and the admin script loses the helpers it no
longer uses. The connect page step also shoots the same invite in an
iPhone context, since the page leads with the app on a phone.

Part of #304.
…nd on LibriVox shots

Taken with screenshots/run.sh against the server and player branches: the
invite dialog with Share and its reach notice, the connect page with the
store links and no console button for a listener, the new phone invite
page, setup step 7's scan-with-the-app copy, and the web player's connect
and Find on LibriVox screens, the latter now through capture-web.mjs.

Part of #278 and #304.
…ays what the database holds

Turning on Store metadata with item writes no file for a book Audiobookshelf
doesn't change, so the steps now change the book in Audiobookshelf before
the rescan. The book page's matching section says what the community
database holds, what the marketplace setting picks and where the unmatched
list is.

Part of #278.
The link uses the public address, else the address the console was opened
at, so the localhost notice's fix is opening the console at the network
address or setting a public one. The invite shot's alt text and manifest
hint name the notice it now shows.

Part of #278.
…g pages

The jobs page, the data model, the console's LibriVox page and job list,
the event's title, and the player's route now match: a fetch is named by
its params' title until it places a book, the fold keeps an adopted
book's match, a parked fetch gives its lane slot back, and a Find link may
leave out the connection. The invite notices' host rule is the server's
home-network rule, and the link's base is never the home address.

Part of #278.
The invite page repeated the phone invite page's store links from Connect
the app to your server, and the Audiobookshelf page repeated the community
database's description from the books page. Each now links to the page that
holds it. The invite reach notices follow the console's current advice for a
localhost link (a public address, or the console at the server's network
address), and the page is back under 1,500 words.

Part of #278.
Both LibriVox shots search for the same work, so the query lives in lib.mjs.
Find shows and Find on LibriVox now patch the /server answer through one
routeServerInfo helper, the LibriVox step uses settleShoot, the phone invite
shot uses fitViewportToPage at phone width, and the console's LibriVox step
drops a check its early return already makes.

Part of #304.
The optional password at invite time sets the account's password, and the
iOS and Android apps offer Username and password at sign-in, so it is not
limited to the web player.

Part of #278.
LIBRIVOX_QUERY had landed between the Sherlock Holmes comment and the
constant it explains.

Part of #304.
…fold

The sweep is the Handler.Sweep method, not a package function as in
audiblejob. The book_matches summary now also covers a result with no
adopted field, where the fold replaces the match and drops nothing.

Part of #304.
The console's localhost invite notice, the setup step's metadata.json line
and the phone step's summary changed wording after these were captured, so
the shots showed the old text.

Part of #278.
@KodeStar
KodeStar merged commit 15afd35 into main Nov 14, 2026
1 check passed
@KodeStar
KodeStar deleted the docs/new-user-b branch November 14, 2026 10:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant