alpha.20: nav-bar settings for every module, player-resolved downloads, programmed Brick tags - #21
Merged
Conversation
…med Brick tags Navigation bar - The Settings section still listed only Calendar/Tasks/Inbox/Jarvis; it now lists every module, with a searchable "Add a module as a tab" picker. - Fixed the default bar: an empty stored list meant every destination became a tab. It falls back to Home + Calendar/Tasks/Inbox/Jarvis again. Downloader - Dropped the hand-rolled kt_player (KVS) link decoder. Its output was wrong, which is where the 404s and the zero-length file came from: those links are scrambled by obfuscated per-session JavaScript and bound to the browsing session. - Added PlayerResolver: the page runs in an offscreen WebView, the player is muted and nudged into playing, and the media request it makes is recorded along with the session cookies. Used when the static scan finds a scrambled player or nothing at all. - MediaCandidate carries request headers, and the download engine sends them (Referer, Cookie, User-Agent) for both direct files and HLS segments, which is what those links require. - Teasers, sprites, timeline previews and ad creatives are filtered out of the candidate list. Brick NFC - Pairing now programs the tag: a LifeOS MIME record plus an Android Application Record. That is what makes a tap reach LifeOS with the app closed, and it stops a chooser from appearing. - Tag id is read from that record when present, falling back to the serial. - Broader NDEF, TECH and TAG filters plus a fuller technology list, so tags written by other tools still land in Brick. - Pairing reports whether the tag could be programmed, and an NFC-off banner opens NFC settings. Both places state plainly that Android only dispatches tags while the screen is unlocked. Version 0.1.0-alpha.20. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011kSsXNrSk6NDjM2FjFZ7Y9
codebooo
force-pushed
the
claude/lifeos-production-plan-v3-dmynx3
branch
from
July 28, 2026 18:17
1393592 to
ccd519d
Compare
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.
Three device-reported fixes (0.1.0-alpha.20).
1. Nav-bar setting was missing
The Settings section existed but its label map was still the original four entries, so nothing else could be selected. It now lists every module and gained a searchable "Add a module as a tab" picker.
Also fixed a real bug this exposed: with no stored selection the bottom bar fell back to all destinations, which would have put 27 tabs in the bar. The default is Home + Calendar/Tasks/Inbox/Jarvis again.
2. ThisVid downloads (404s and a zero-length file)
Root cause: the hand-rolled kt_player (KVS) decoder produced wrong URLs. Verified against a live page - the scrambled link is unscrambled by obfuscated per-session JavaScript, the hash changes on every page load, and the resulting URL is bound to the session (cookies plus a Referer check). No static reimplementation stays correct.
Fix:
PlayerResolver: the page loads in an offscreen WebView, its own player is muted and nudged into playing, and the media request it issues is recorded along with the session cookies. Used when the static scan sees a scrambled player, or finds nothing.MediaCandidatenow carries request headers, and the download engine sends them (Referer, Cookie, User-Agent) for direct files and HLS segments alike.The WebView is created, driven and destroyed inside the call; nothing is shown and nothing leaves the phone. Because these links are session-bound, the UI now says to download them straight away.
3. Brick NFC taps with the app closed
Reading a tag's serial number requires reader mode, which only runs while LifeOS is in front - hence "works only while the app is open". For a closed app, the tag itself has to carry something the system can route.
Fix:
No runtime permission exists for NFC - it is a manifest permission plus the system toggle, so the banner is the grant path. One limit worth stating: Android does not dispatch tags while the screen is locked, so the phone has to be unlocked for a tap to register. That is enforced by the platform, not by LifeOS.
Verification
:app:assembleDebug,:app:assembleRelease(minified) and the fulltesttask pass.Generated by Claude Code