Repository navigation
fix(napplet): install from bytes already on this device - #153
Merged
Merged
Conversation
An install asked mesh peers and public Blossom servers for the napplet's bytes, never this phone's own store. A napplet published straight to the phone's Blossom, or kept by an earlier install, could not be installed offline: 'no source served artifact'. Root cause: the install view (SourceBlobs) resolved only against the remote PeerSource. The install view now asks the local store first, and uses a local copy only when it hashes to the name asked for. A damaged copy falls through to the source, so Download again, updates and Circle pushes repair it rather than meeting the same bad bytes. resolve still re-hashes whatever comes back. Tests cover a source-less install from local bytes and a damaged local copy fetched again; CHANGELOG has the Fixed entry.
Origami74
force-pushed
the
fix/napplet-install-local-blobs
branch
from
October 19, 2026 14:58
5ab1a40 to
e8cf799
Compare
Owner
Author
|
Thanks — fixed in e8cf799 (rebased on main).
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Installing a napplet uses bytes already on this phone before asking anyone else.
Why
The install view asked mesh peers and public Blossom servers for the artifact, never this phone's own store. A napplet published straight to the phone's Blossom, or kept by an earlier install, could not be installed offline:
blob-unavailable: no source served artifact ….How
SourceBlobs(the viewresolvereads through during ingest) asks the localBlobStorefirst, then the source.The local copy is used only when it hashes to the name asked for. A damaged copy is logged at debug and falls through to
source.fetch_blob, so Download again, updates and Circle pushes can still repair it.resolvere-hashes whatever comes back as well.CHANGELOG
[Unreleased]has a Fixed entry.Testing
bytes_already_here_install_without_a_source, anda_damaged_local_copy_is_fetched_again(a store whosegetanswers wrong bytes under the right name, plus a source with the good blob: ingest succeeds and the napplet opens). The second fails without the hash check.ingest_verifies_then_stores_and_the_napplet_opens_locally,a_failed_ingest_stores_nothing). Othernapplet::testsfailures locally are all the LMDB ENOSPC issue on this Mac.adb forward) failed to install before, installs after, with no internet.