• v0.24.0 f2c6483542

    v0.24.0
    All checks were successful
    CI / dco (push) Successful in 4s
    CI / checks (push) Successful in 3m33s
    Release / create-release (push) Successful in 7s
    Release / web (push) Successful in 1m28s
    Release / android (push) Successful in 10m14s
    Stable

    EgorEast released this 2026-09-30 22:29:45 +00:00 | 97 commits to main since this release

    Added

    • 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