You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
boxlore v0.0.29
Added
Validate optimized APK and app bundle contracts before publication, with an optional manual preflight and fast PR regression coverage for constructors, JSON metadata, serializers, providers and dynamically loaded resources. (#1106)
Support automatic refresh, auto-downloads, Smart Downloads and explicitly opted-in public-feed notifications for RSS-only subscriptions. (#1098)
Artwork-derived Material 3 palettes for podcast and episode details, with an Appearance opt-out. (#1105)
A full-page custom theme editor with primary, secondary and tertiary colors, background choices and live light/dark previews. (#1105)
Add cached update manifests, verified resumable APK updates, a Play-specific release variant, and release notes with upcoming changes. (#1107)
Add native compact and full-screen announcements, reviewed sender integration, isolated optimized test builds, and offline release rehearsal. (#1107)
Add an independent saved Brief edition preference with explicit-link precedence and edition-only Home refreshes. (#1113)
Bundle weekday regional Brief covers, fixed player artwork and the animated Echo account avatar. (#1113)
Add an optional bunpod audio player with persisted appearance preferences, adaptive typography, locale-aware title hyphenation and expressive control shapes. (#1114)
Add regression coverage for player style persistence, control interactions, window sizing and artwork palette contrast. (#1114)
Add hermetic tests for welcome reel velocity and wrapping, word-loop ordering and timing, readable holds, reduced motion and long-running clocks. (#1115)
Echo onboarding conversation (EchoOnboardingScreen, EchoShowDeck, holo show cards with media3 clip previews) on the guided_v1 next-turn contract and probe deck. (#1117)
Shared artwork palette extractor in :core:designsystem (ArtworkPalette, ArtworkColorScheme, OnScreenArtwork), used by detail pages and the player. (#1117)
Home hero card style (HeroCardStyle, Standard/Classic, ClassicHeroCards) and navigation blur level (NavigationBlurLevel, FloatingNavigationBlur on Haze 1.6.9) preferences. (#1117)
HomeRevealStage staged cold-start reveal and a carousel-matched hero skeleton. (#1117)
PodcastInfoLoadRecovery and BriefingLoadingContent. (#1117)
Add adaptive tablet/foldable window, card and pane specifications, side navigation and retained detail/player hosts. (#1118)
Add a tablet-only alpha startup screen with persistent acknowledgment before Welcome. (#1118)
Home hero card styles Cover (replaces Classic), Tide, Duotone, Halo and Marquee alongside Block, each with its own skeleton and HeroCoverShade colour options. Marquee adds a pinned cover, frosted top bar, scroll stop, auto-advance and label chips. (#1119)
Settings Appearance overview with Home, Player, Navigation and Text pages and picture tiles. (#1119)
EchoCharacter in :core:designsystem: manifest sequences of stills and alpha-packed MP4 motion clips decoded with MediaCodec, LED eyes on the tracked screen behind a glass mask, eye idle scripts, theme-tinted accents and a stage shape; LocalEchoMotion holds Echo still in tests. (#1124)
Library import screens in :app (ImportPage, ImportFlowModel): Echo on its stage, progress checklist, Start fresh, done and failure screens, with copy in library_import.xml and ImportDialogAdaptiveTest window-transition coverage. (#1124)
EchoPrismCard and EchoPrismLayout: the show deck's Prism collector card, sized from measured text so the pitch is never cut, with a compact arrangement for short slots. (#1127)
BlockHeroColors: Block hero cards take the Dark / Artwork / App theme choice; HeroCoverShade.forStyle keeps Block in the app theme until a colour is picked. (#1127)
HeroTideProgress: Wavy or Circle ring around Tide's Play disc. (#1127)
MarqueeBackdrop and MarqueeBarFrost: Marquee's uncropped cover over a blurred wash, and a live Haze frost owned by the top bar. (#1127)
Sixteen complete light/dark theme presets in Minimal, Colorful and Bold collections. (#1099)
Add hermetic JVM coverage for setup actions, button semantics, narrow and enlarged-text layouts, first-line dismissal alignment and RTL geometry. (#1116)
Support worlds experiment: SupportPageHost reads the support-world flag once per visit and shows today's power-cell page (control) or one of five themed worlds (neon, orbit, alchemy, abyss, sky) each rendered by the same SupportDevelopmentPage through a SupportPageStyle (art, fonts, names and copy only), with bundled 3D art and display fonts. (#1122)
Support analytics: support_entry_viewed (Settings button impression) and support_page_left (dwell, tiers viewed, pay tapped); Support events now carry support_world, assignment_source, tier_index, amount_usd and payments_live. (#1122)
Settings › Library › LeaveMeAlone (RecommendationsSettingsPage, DiscoverySections in :core:prefs) turns off the Brief, Picked for you and Explore's For you tab, Because you like, time-of-day rows and episode pages' Try these episodes; sections that are off make no requests (collectDiscoverySection). Appearance › Home links to it. (#1123)
recommendation_section_toggled analytics event for each switch and for the Brief card's Always hide. (#1123)
Opening an emailed sign-in link opens Account & sync, which shows Signing you in, then the first sync, or why the link failed (Send a new link for used or expired links, Try again otherwise). EmailLinkSignIn in core:auth holds the app-scoped sign-in state, and SignInLinkExpiredException marks used or expired links; the sign-in toasts are removed. (#1135)
Add public announcement composition and offline preview tooling with draft review and contract tests. (#1108)
Changed
Replace blanket R8 keeps with scoped reflection and storage contracts, enable resource shrinking with dynamic-resource retention, and exclude the debug App Check SDK from release builds. (#1106)
Link Lore background and logo colors to swipe progress, including cancelled gestures and late artwork palettes. (#1101)
Refine Lore cards with measured text fitting, a compact podcast footer, larger playback controls, matching swipe cues, and a wavy playback loader. (#1101)
Temporarily compact the Floating mini-player on the main Lore screen and restore the previous browsing state on exit. (#1101)
Clarify Lore queue replacement and the details-page action for adding episodes to the existing queue. (#1101)
Refresh Home discovery headers, poster and featured cards, mix layouts and briefing presentation with Material 3 components and matching loading states. (#1102)
Update classic light/dark colours, upright wordmarks, LORE and briefing graphics, adaptive launcher, splash and notification icons. (#1102)
Replace share-card branding with a compact “Listen on” wordmark signature. (#1102)
Redesign episode details with Material 3 surfaces, connected playback controls, separate listening progress and responsive title/metadata handling. (#1104)
Consolidate show-notes link and chapter parsing; add branded resource pills and the five latest episodes from the same show. (#1104)
Refined Podcast Info cards, metadata, connected subscription controls, genre confirmation and in-list search. (#1105)
Publish verified update metadata, serialize metadata jobs, and prepare release announcements for approval instead of automatic delivery. (#1107)
Extend optimized release contract validation to direct APK and Play bundle outputs, including installer exclusion and test-artifact rejection. (#1107)
Standardized Explore browse, collections and search results on expressive discovery cards, with matching skeletons and distinct compact show rails for concept search. (#1109)
Added a collapsing Explore header, persistent player-aware tab switcher and horizontal paging with independent tab scroll state. (#1109)
Shared the animated discovery tab control with Subscriptions while preserving fixed/floating preferences and badges. (#1109)
Refreshed search suggestions, result headings and loading/empty states. (#1109)
Recompose Home heroes with larger attached artwork, adaptive titles, bounded context typography and playing progress; replace nested hero grids with flat episode rows and a fading peek label. (#1110)
Connect Your shows and Daily mix into one animated surface with expressive selectors, matched loading geometry and bounded nested-scroll handoff. (#1110)
Standardize stable surface press feedback, retain subtle feedback for small custom controls and use the podcast-mic B for artwork placeholders. (#1110)
Redesign Brief cards and pages with themed Material 3 surfaces, three Home headlines, improved story layout and a thinner seekable wavy progress track. (#1113)
Separate onboarding and Settings account layouts, clarify sync states, hide player chrome during account restore and smooth import-to-account navigation. (#1113)
Use solid Daily Mix episode-card surfaces across themes. (#1113)
Redesign the first-launch welcome screen with curated bundled cover reels, coordinated headline entry, accent-coloured rotating words and icons, and compact Material 3 discovery/search/import actions. (#1115)
Share lifecycle-aware, system-scaled motion across welcome artwork and copy, with stable accessibility semantics, reduced-motion presentation and responsive text layout. (#1115)
Suggestions screen lanes with Your picks; nothing preselected. (#1117)
HomeYourShowsRanker ranks Your shows within a budget; Because you like seed card redesign; the brief card hides only when finished or dismissed. (#1117)
Player colours use a tonal scheme seeded from the cover; split-pill mini player; PlayerSheetRevealLogic fade-through. (#1117)
Lore cards show full text with LoreDeckMotion; m3Shimmer is a draw-only Modifier.Node. (#1117)
Adapt Home modules, discovery rows, Settings, reading surfaces, dialogs and keyboard/mouse input to available tablet panes. (#1118)
HeroCardStyle.DEFAULT is Cover on the Artwork shade, and HeroCardStylePreferences saves only picked values. (#1119)
On tablets the artwork hero cards use the Hero width bound and Marquee falls back to Cover (homeHeroStyle); below ShortHeroHeight (tabletop folds) Duotone moves its time into the copy and Halo shows as Cover. (#1119)
Onboarding Welcome and the Echo conversation use the shared EchoCharacter; 8.7 MB of onboarding strips and the Settings Echo atlas are replaced by 1.5 MB of shared assets. (#1124)
Account & sync page redesigned: sign-in method cards, check-email screens, one sync status panel, and animated sync tiles with a "No need to wait" note during onboarding; AccountPageAdaptiveTest covers window transitions. (#1124)
Appearance › Home groups each hero style's options with its live preview (AppearanceHeroLookCard); SettingsPictureRow tiles are wider, snap on fling and never fit a whole number on screen. (#1127)
Splash holds at least 350 ms and fades out (SplashHoldPolicy); Welcome restores the earlier cover glide and drift (WelcomeEntryTiming); show deck artwork is prefetched when the deck arrives. (#1127)
Streamlined automatic download settings with grouped controls, a connected episode-limit selector, and a separate help dialog. (#1097)
Clarified that background episode checks are an optional backup when show notifications are off or do not arrive. (#1097)
Appearance now has a dedicated Theme page with horizontal split-mode previews and one inline color-customization section. (#1099)
Rebuild the custom theme editor with a persistent preview, accessible color controls, validated hex input and restored draft state. (#1112)
Refine Classic, Pure and wallpaper-derived Material 3 color roles while preserving saved theme identities and custom seeds. (#1112)
Replace the Home setup banner with a responsive Material 3 split layout, neutral raised action tiles, localized copy and an aligned dismissal control; preserve existing callbacks, eligibility, analytics and hero presentation. (#1116)
CrossPromotionDetector is rebuilt on CrossPromotionTitles, CrossPromotionNames and CrossPromotionDescription; recall rose from about 0.2 to 0.83–0.91 at 0.92–0.98 precision on 817 hand-labelled catalog episodes (CrossPromotionCorpusTest). CrossPromotionResolver searches shorter name forms and matches colon, host and parenthetical titles. (#1120)
Info pages, the player and hero cards share one artwork colour picker (selectArtworkSeed, artworkColorScheme, ArtworkShade); the info and player phone goldens are re-recorded for it. (#1121)
Every Support pay tap, including the control's, opens a notice that payments aren't set up yet and nothing was charged. (#1122)
Privacy settings and docs/PRIVACY.md describe approximate location and the Support page design test. (#1122)
PodcastRepository.getHomeRecommendations replaces getHomeBootstrapData and asks bootstrap for recommendations only (include); the Brief card's Always hide is now the LeaveMeAlone switch and can be undone. (#1123)
API calls authenticate with an API session (ApiSessionManager) instead of the bundled app key; App Check runs only during the session exchange, so requests no longer wait on it. (#1130)
Expired sessions renew silently with a Keystore-backed device-key proof; limited sessions retry App Check in the background. (#1130)
New api_session_status analytics event; app_check_status now includes a failure reason. (#1130)
Share links, the email sign-in link and the privacy and account-deletion links use https://boxlore.in; sign-in emails use boxlore.in as their link domain so the link opens the app directly. The app verifies boxlore.in/share, /auth and /__/auth/links as App Links and keeps opening aswin.cx share and sign-in links; WebAppLinks holds the verified hosts, paths and share deep links, and WebAppLinksManifestTest keeps the manifest in step. (#1133)
Require authored PR release copy and preserve its wording while ordering release notes; remove Groq rewriting. (#1108)
Simplify Echo clip decoding in EchoClipFrames to resolve SonarCloud issues; behaviour unchanged. (#1125)
Tracked-feed backfill sends a scoped read-only service credential (BOXLORE_SVC_BACKFILL_KEY) to the catalog lookup when configured, falling back to the app key. (#1126)
The announcement composer guide moved to docs/ANNOUNCEMENT_COMPOSER.md; admin-panel/ stays ignored apart from the public composer files, now listed individually. (#1129)
README screenshots now show current light-mode screens for Lore, Explore, Welcome, Home, both players, Home styles, themes, and sync and backups. (#1132)
Replaced the featured image and kept the previous version under docs/images/archive. (#1132)
README screenshots now show two compact feature labels per screen, placed so they do not cover the app. (#1134)
README screenshots now use larger phones, with feature labels that rest on the phone frame instead of the app. (#1136)
Fixed
Preserve WorkManager input-merger constructors in optimized releases so one-time download and notification-hydration work can start. (#1106)
Repair existing RSS imports without catalogue matching or changing saved show and episode identities. (#1098)
Resolve mix artwork from episode and show metadata before falling back to the parent show image. (#1102)
Collapse the caught-up Daily Mix state and center card titles with or without a progress indicator. (#1102)
Improve cross-show promotion detection and matching for longer introductions and scheduled releases. (#1104)
Prevent generic social platform labels and reserved URL routes from being displayed as profile usernames. (#1104)
Preserve title line spacing and align episode-selection controls with the adaptive mini-player. (#1105)
Keep loading, navigation and predictive Back color transitions consistent with their destination. (#1105)
Route notification actions consistently on cold and warm launches, and restrict GitHub release alerts to eligible install channels. (#1107)
Preserve updater recovery through permission settings, cancelled installation and process recreation, and clear completed update sessions. (#1107)
Return from collection pages to the saved Explore feed with predictive Back and a consistent slide transition. (#1109)
Recover missing search-result genres from unambiguous matching results and suppress generic Podcast genre chips. (#1109)
Prevent rounded search/tab controls and Home utility-button press feedback from clipping at their edges. (#1109)
Sort fresh-drop and new-episode grids newest first, separate artwork playback from episode-detail taps and route the offline Mix action to downloads. (#1110)
Unify artwork fallback sources and bounded recovery across UI, playback, widgets, share cards and notification artwork while preserving optimized sizes and existing cache identities. (#1111)
Retain valid feed artwork when catalog image fields are blank, and expire failed playback bitmap requests instead of caching failures indefinitely. (#1111)
Repair legacy numeric Brief artwork references in listening history, queue and downloads on open and restored writes, preserving all non-artwork state. (#1113)
Podcast Info no longer spins forever when show details fail. (#1117)
User-facing strings use boxlore, all lowercase. (#1117)
Keep tablet playback controls clear of system navigation, preserve ranked result ordering and improve artwork-themed dark-mode foregrounds. (#1118)
A JSON backup the restore rejects no longer shows "You're all set" with -1 shows (jsonImportOutcome). (#1124)
Import failures no longer show raw exception text, and "Nothing in your library changed" appears only when nothing was written. (#1124)
Playback: safe artwork URIs in every queue path, controller reconnection with backoff, Play next without duplicates, resume from idle, guarded service start-up, and PlaybackErrorSkipGuard stopping endless skips over failing streams. (#1128)
PostHog start-up moved off the main thread (PostHogStartup); paged completed-episode IDs; folder writes tolerate deleted folders; streaming RSS parsing for very large feeds; download starts and removals that no longer crash. (#1128)
Duplicate list keys in podcast info and subscription reordering, "null" episode route arguments, deferred Cast session sync, onboarding genre fallback and video overlay insets. (#1128)
Explain app-open discovery when enabling per-show auto-download without notifications or background checks, with an optional notification action that preserves the auto-download choice. (#1097)
Regular navigation highlights use the active theme accent, and Classic-navigation player placement includes Android system navigation insets. (#1099)
Remove custom theme editor press ripples and separate Pure Home mix surfaces without outlines or transparent resting cards. (#1112)
Player-only artwork links no longer reach synced history and queue, and repairPlaybackArtworkLinks repairs rows older builds saved. (#1121)
Fullscreen transcript controls fit the visible screen height (fitVisibleHeight). (#1121)
/sync lookups are sent in chunks of 20, so libraries with more than 40 shows get every update. (#1130)
Removed
Analytics events with no remaining caller (library_history_tracking_notice, auto_chapters_lifecycle, auto_transcript_lifecycle) and the unused subscription_count_bucket launch enrichment; the glossary's person properties now match what the app sets. (#1131)