-
v0.25.1
Stablereleased this
2026-10-02 14:09:11 +00:00 | 28 commits to main since this releaseAdded
- Rework section slider card display
- Show sermon form suggestions on field focus
- Use checkmark save icon and hide edit pencil in edit mode
Fixed
- Regenerate API client from openAPI 0.18.2
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.25.0
Stablereleased this
2026-10-01 22:21:55 +00:00 | 33 commits to main since this releaseAdded
- Admin-style edit mode for my playlists screen
- Local section appearance settings for my playlists
- Store sermon snapshots in local playlists
- My playlists screen with header edit mode
- Smart continue-listening play-all in playlist
- Add to playlist menu item in sermon menus
- Add to playlist modal with multi-select
- Playlist membership actions in local playlists domain
- Edit mode for my playlists reordering
- Submit forms with Enter key
- Dnd reordering for my playlists section
- My playlists section on listen screen
- Local playlists domain with favorites entry
- Mirror releases to SourceCraft
Changed
- Debounce section settings persistence and sync form state
- Compound skeletons, media skeleton fidelity, picker pagination
- List rows use user-style press feedback without animation
- Unify playlist/section/sermon list rows on shared ListItemBase
Fixed
- Themed colors for offline caching toggle
- Themed cross-platform colors for offline caching toggle
- Block favorites navigation in my playlists edit mode
- Do not reseed local playlists storage on parse failure
- Preserve stored favorites content across hydration
- Favorites playlist shows its sermons
- Use textShadow shorthand to silence deprecation warning
- Disable playlist play-all button when nothing is playable
- Disable offline menu actions for empty playlist
- Commit playlist membership before persist to close lost-update race
- Avoid nested button in draggable list rows on web
- Normalize enter-submit guard and cover form context edge cases
- Picker pagination trigger, load-more retry, review cleanups
- My playlists drag list duplicates and persist error handling
- Normalize playlist persistence via toPersistedPlaylist
- Guard loadMyPlaylists against storage rejections
- Symmetric save/restore contract and startup-guard reset
- Input autofill hints and web scroll/tab-bar clearance
- Use favorites playlist id without local prefix
- Lock file maintenance
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.24.0
Stablereleased this
2026-09-30 22:29:45 +00:00 | 97 commits to main since this releaseAdded
- Required field markers and inline validation
- Users screen header with create action
- Media screen header, grid preview and orphans on top
- Scrolling titles in list rows
- Sort select and skeleton loading states
- Navigate between related admin details and show playlist sections
- Disable save button until form is dirty
- Icons on library and upload picker buttons
- User create/edit form with password change
- Users list and detail
- Media library with upload, delete and orphans cleanup
- Sermon create/edit form with uploads
- Sermon detail with media preview and delete
- Sermons list with search, sort and pagination
- Playlist create/edit form
- Playlist detail with sermon reorder and delete
- Playlists list with search, sort and pagination
- Section create/edit form
- Section detail with playlist reorder and delete
- Sections list with drag reorder
- Admin home screen and entry points
- Admin login screen and /admin tab area
- Secure token storage and auth entity
- Add sound settings sheet with EQ, balance and pitch
- Route unexpected update errors to the global error dialog
- Tappable timecodes in sermon description seek the player
- Classify update errors with dedicated error dialog actions
- Add sermon caching toggle (#77)
- Add playlist header menu to playlist bottom sheet
Changed
- Remove upload tab, create sermons from lists
- Remove active tab background indicator
- Inline all named type imports and ban the standalone form
- Rename config/config to api-url
- Import final files instead of barrels within layers
- Use relative imports inside shared layer
- Derive PlaylistData from schema in fetched types, drop @x ignore
- Drop dead re-export lines from read barrel
- Restore generated api star exports without dead db re-exports
- Keep star exports for generated api barrels (documented exemption)
- Inline single-use props types per agent rules
- Use named re-exports in barrels instead of star exports
- Finish export cleanup in listening-history and offline-cache
- Delete dead state machinery and wire setOnlineStatus
- Prune unused exports across slices
- Make useDebounce deps-driven and drop its useCallback wrappers
- Delete utilities with no consumers or duplicates
- Adopt useDebounce and isNonNullable instead of inline duplicates
- Delete dead files reported by knip
- Move track-list components into ui segment
Fixed
- Safe-area on media and users tabs
- Dim placeholders in picker search inputs
- Keyboard-aware form scrolling
- Dim placeholders and primary focus outline on inputs
- Picker order, button label size and group spacing
- Move delete actions into detail screen headers
- Pickers safe-area, close button, back gesture and inline upload buttons
- Detail screens header edit actions and stable shield icon
- Editable URL fields with pencil toggle and muted placeholders
- Floppy save icon, complete headers and group spacing in forms
- Use full form titles in screen headers
- Navigate within admin area from detail screens
- Fix axios comment, tighten itemsRows parsing
- Clear tokens only on 401/403 in restoreSession
- Pin create button, add list bottom inset
- Move underscore hooks out of app/ to stop route warnings
- Settings kebab menu, render loop guard, compact admin entry and login flow
- Show admin panel button only for authenticated admins
- Enforce inline type imports and autofix violations
- Forbid shared alias inside shared, document the rule
- Address review nits (debt entry, docstring, import style)
- Stop evaluating app.config.ts and treat read-tab WIP as entry
- Ignore intentional keeps (generated api, read tab WIP) and stale entries
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.23.1
Stablereleased this
2026-09-26 20:44:35 +00:00 | 191 commits to main since this releaseChanged
- Route cross-entity imports through @x seams
- Move listen navigation into pages and dissolve settings entity
- Move player and track-list domain UI out of shared/ui
- Extract playlist and section domains into entities
- Extract sermon and offline-cache entities from shared
Fixed
- Ignore expo-dev-client launch URLs in cold-start link recovery
- Add structural predicate for nested playlist sermons validation
- Harden share cancel taxonomy, time-box pending guard, fix triple-scheme path parse
- Recover cold-start deep links lost to expo-router's 150ms race
- Replace built-in Unmatched screen to fix resolveScheme crash
- Prefer share sheet over clipboard when Web Share API exists
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.23.0
Stablereleased this
2026-09-26 14:00:25 +00:00 | 204 commits to main since this releaseAdded
- Web share fallback and placeholder guard for playlist sharing
- Add share playlist menu item with web deeplink
- Pin web app id and launch_handler for link capture
- Haptic seek feedback, slider UX and settings improvements
- Collapsible server URL accordion
- Haptic feedback toggle
- Live time preview while dragging seek slider
- Lighter selection haptic for seek slider tick
- Haptic tick while dragging fullscreen seek slider
- Serve android app links verification file on web
- Claim app.slovo-propovedi.ru app links for listen routes
- Resolve playlist by id from api on app link cold start
- Apply native customizations via config plugins
- Auto-start player titles only; sliders keep drag-gated marquee
- Auto-start marquee on overflow, drop drag-arm gate
- Notify session when model failover activates
- Production failover — hard-quota attempt-1 activation via retry+http.response hooks
- Adaptive model failover for profile plugin (quota errors)
- Add pulse animation to all skeleton components
- In-session /profile switcher plugin
Changed
- Validate playlist id via uuid.validate
- Validate EXPO_PUBLIC env with zod, drop defaults
- Address review minors
- Tighten lint-block guard to own output
- Key prebuild idempotency guards on own output
- Enable Reanimated sync UI-props fast path
- Stabilize marquee against player position re-renders
- Replace react-native-text-ticker with MarqueeText wrapper
- Drive collapsing navbar bg opacity on the UI thread
- Pause glow ring while fullscreen player is expanded or animating
- Pause glow ring animation while scrolling, unfocused, or offscreen
- Virtualize horizontal sliders in shared Slider component
Fixed
- Actualize generated schemas
- Restore dev-client scheme launch and pin debug keystore across prebuild
- Format gobal mock files
- Per-flavor custom schemes to avoid dev/prod conflict
- Verify dev flavor via multi-package assetlinks
- Ignore micro-movements while dragging seek slider
- Harden playlist deep-link id validation and resolver errors
- Make commit-msg hook sed portable across GNU and BSD
- Resolve ThemeContext casing collision breaking tsc and jest
- Make settings save button follow theme toggles
- Keep box-none overlays pointer-transparent so page and tab bar stay interactive
- Replace deprecated React Native APIs in dev warnings sweep
- Add expo-system-ui package
- Reset details overlay state on collapse and back navigation
- Prevent swipe-to-collapse when details overlay is open
- Resume marquee clock after jitter or cancelled gesture
- Marquee container stretch-invariant; centered fullscreen titles
- Smooth marquee on Android via frame-clock loop
- Restore search toggle position after touch-target change
- Enforce 48x48 minimum touch target for all icon buttons
- Enlarge back and player-collapse tap targets to 48x48
- Clean up stale MarqueeText references after #98
- Make playlist list item title multiline (#98)
- Use section name in player subtitle for single-sermon playlists
- Always open playlist page on tap, even for single-sermon playlists (#96)
- No press dim blink on already active tab
- No haptic feedback on already active tab
- Ignore tap on already playing sermon (#99)
- Hand over playlist-list navbar title at title center like playlist (#108)
- Compute playlist-list title threshold without layout y (#108)
- Change reviewer model in opencode profile configs
- Show playlist-list navbar bg only near title threshold (#108)
- Reset scroll flag on unmount and harden glow pause tests
- Bound failover error-body read to 2KB
- Guard reload failures in failover revert and startup
- Harden profile failover (review fixes)
- Clamp section itemsRows and harden slider flat-list
- Pin markdown-defined subagents via frontmatter, not registry
- Add omc config
- Keep plan/build on switchModel; add /profile- hints
- Migrate config to V2-native schema; move agent permissions to markdown agents
- Ignore kotlin build artifacts
- Use system Virtual_Key haptic on Android
- Add ocx and opencode configs
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.22.0
Stablereleased this
2026-09-19 21:55:45 +00:00 | 306 commits to main since this releaseAdded
- Delete superseded partials and re-download stale ones (#109)
- Stream network on seek past partial while downloading (#109)
- Play partial source on offline seek (#109)
- Pause at partial-buffer edge instead of advancing (#109)
- Treat partial downloads as offline-only fallback with full timeline (#109)
- Play partially downloaded tracks offline (#109)
- Auto-resume playback after network restore when stream stalled offline (#109)
- Keep buffered download progress visible while offline (#109)
- Mouse drag scrolling for content slider
- Add tactile feedback to interactive elements
- Context menus close on escape
- Dialogs join the escape stack and backdrops lose focus
- Lifo escape layering via shared escape stack
- Esc closes search regardless of input focus
- Esc clears query before closing search
- Add IconButton and TouchableButton primitives
- Real buttons for Vimium hints and Esc closes modals
- Keyboard controls for fullscreen player (web)
- Add PressableButton and migrate role-button Pressables
- Add reusable useHeaderTitle hook
- Let Listen screen content scroll under nav bar inset
- Transparent Android navigation bar with theme-following glyphs
- Add offline sermons screen with download registry
- Add track list skeleton loading states
Changed
- Drop unused barrel export and pin web heal ordering (#109)
- Split PlayerService into native and web folders
- Convert service worker promise chains to async/await
- Extract shared escape-key hook and predicate
- Reviewer follow-ups for button primitives
- Drop redundant Text wrapper around control button icon
- Adopt TouchableButton across TouchableOpacity call sites
- Migrate icon-only buttons to IconButton
- Migrate remaining role-buttons to PressableButton and label icon buttons
- Extract seek end-buffer constant and harden unmount test
- Simplify skeleton attachment to single expression
- Inline cache action item literals
- Reuse CACHE_ACTION_ITEMS for playing menu item
- Expose skeletons via composition API
- Gate sheet reveal on scroll convergence
- Make TracksListItem the single base row
- Rebrand cache wording and icons to offline
- Relocate clear-cache action to shared audio-cache
- Extract shared MenuDropdown component
Fixed
- Hydrate offline registry before startup partial sweep (#109)
- Stop killing in-flight partial downloads on seek and progress flash (#109)
- Swap partial source for cached file on seek (#109)
- Keep full duration stable across partial source swaps (#109)
- Key offline-seek resume on stall flag and playing state (#109)
- Swap partial source for completed file on resume (#109)
- Retain partials across sessions and sweep legacy part files (#109)
- Align stall-flag docs and guard isCached rejection (#109)
- Keep buffering bar alive and auto-recover after network restore (#109)
- Keep download bar monotonic across download restart (#109)
- Allow offline playback of partially buffered sermon (#109)
- Re-assert lock screen metadata after reconnect heal (#109)
- Cap jest workers and linter concurrency for low-resource machines
- Honor internet reachability for online signal and reconnect re-caching (#109)
- Resume auto-caching and heal stream on network restore (#109)
- Keep MarqueeText static row at marquee width to stop word-wrap vanishing
- Resume from cached file when download completed mid-track (#107)
- Cancel stale resume reapply and keep visibility watcher alive (#106)
- Align expo packages with SDK 57 expectations
- Restore position and media session after iOS interruption (#106)
- Harden drag guards and unify marquee web activation
- Make marquee titles draggable with mouse on desktop
- Use vibrator-based light impact on Android
- Mark marquee predicates as worklets
- Document the web:preview port change to 4173
- Strip unused RECORD_AUDIO permission on Android
- Anchor dropdowns in viewport coords and clamp to window
- Gate auto-scroll behind a real drag, geometric eligibility
- Error modal closes on escape instead of copying
- Derive ios.buildNumber in Expo config
- Derive android versionCode in Expo config and assert it in CI
- Guard RNGH pointer release against stale pointer ids
- Un-nest mini player row from inner buttons
- Make modal backdrop a role-less pressable
- Guard RNGH pointer capture against stale pointer ids
- Real button + pan-guard for fullscreen close chevron
- Align fullscreen controls with tab bar bottom padding (#105)
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.21.2
Stablereleased this
2026-09-15 21:00:00 +00:00 | 405 commits to main since this releaseAdded
- Source API/landing/web/docs hostnames from env vars
Fixed
- Restamp patches for installed package versions
- Stop orval overwriting hand-written generated index
- Update api generating script
- Remove unused EAS Cloud build tooling
- Silent playlist caching progress notifications, sound only on completion (#101)
- Lock file maintenance
- Update gradle to v9.7.1
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.21.1
Stablereleased this
2026-09-12 21:56:58 +00:00 | 434 commits to main since this releaseChanged
- Subscribe to download state per row
- Resolve 7 tech debt items and apply review fixes
Fixed
- Eliminate overlay re-render storm during background download (Issue #100)
- Accept getter-based module exports in notifications guard
- Add update download timeout and centralize reanimated mock
- Use full app name "Слово.Проповеди" in manifest and meta tags
- Close search cache write race and remove dead code
- Restore saved mute volume (0) on app restart
- Re-apply saved volume after track load
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.21.0
Stablereleased this
2026-09-09 20:57:39 +00:00 | 449 commits to main since this releaseAdded
- Mark-as-listened/remove-from-history in sermon and playlist menus (#84)
- Global serial queue with cancellation and reactive stop UI (#83)
- Disable add-to-cache actions when offline
- Global info dialog (ConfirmDialog-based) for offline playback guard
- Wire row and fullscreen cache toggles through progress helper
- Unified per-URL download progress protocol for manual caching
- Web MediaSession with metadata, seekbar and ±10s controls
Changed
- Extract listening-history actions from model/history.ts into lib/
- Confine re-exports to slice-root barrels (#83)
- Show locked-tab notice via global info dialog
Fixed
- Defer expo-router onUnhandledLinking to silence pre-mount setState warning
- Make immediate history flushes upsert and supersede manual marks
- Eliminate lost-update race between listening-history actions
- Drop deprecated @testing-library/jest-native
- Reactively disable cache clearing while downloads are active (#83)
- Reactive cached-url registry to kill completion flicker and rescan storms (#83)
- Pre-validate batch enqueue and abort-unaware join chokepoint (#83)
- Offline guard for playing uncached tracks (#81)
- Cache track when starting playback on web (#81)
- Theme-aware update modals with accent colors
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.20.0
Stablereleased this
2026-09-06 22:29:17 +00:00 | 475 commits to main since this releaseAdded
- Versioned SW precache with user-confirmed static updates
Changed
- Extract cache summary and scope enumeration guarantee (#78)
Fixed
- Skip manifest build in web cleanup to avoid bucket enumeration (#78)
- Address review of journal liveness and replay coverage (#78)
- Make web orphan cleanup multi-tab safe via journal liveness (#78)
- Replay inflight progress to late joiners on web (#78)
- Harden sw manifest guard and polish cleanup after review
- Sequence orphan sweep before player restore and harden journal
- Purge orphaned partial downloads after unclean app shutdown (#78)
- Only commit fully downloaded tracks into audio cache (#78)
- Skip cached tracks and recover audio cache bucket on iOS PWA crash (#78)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads