Skip to content

v0.0.29

Latest

Choose a tag to compare

@boxlore-master-pusher boxlore-master-pusher released this 17 Oct 22:44
73b6275

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)
  • Halo's Play badge is no longer clipped. (#1119)
  • 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)