Commit graph

710 commits

Author SHA1 Message Date
Richard R
a604cdc468 feat(ui): convert SidebarNavLink to forwardRef component
Refactor SidebarNavLink to use React.forwardRef, enabling parent components
to access the underlying anchor element's ref. Update prop typing and
function signature accordingly for improved composability and integration
with higher-order components.
2026-06-01 15:54:56 -06:00
Richard R
432ace778c refactor(ui): improve segmented control accessibility and update danger color tokens
Update SegmentedControl to support full keyboard navigation and focus management,
enhancing accessibility. Replace string indicator in Select with icon, and update
button danger variant to use new --danger-strong variable for hover states. Add
danger-strong token to Tailwind config and globals. Refine dropzone disabled
behavior, adjust focus ring for better contrast, and apply minor UI consistency
tweaks across components.
2026-06-01 15:20:28 -06:00
Richard R
3fc0938aec test(accessibility): improve confirm dialog test coverage and refactor media state helper
Expand accessibility tests for ConfirmDialog to assert dialog semantics,
ARIA attributes, and visible destructive actions using test IDs. Refactor
expectMediaState helper to check both UI control state and underlying
media signals for more robust playback state detection.
2026-06-01 14:33:37 -06:00
Richard R
35dc5ae053 chore(ui): remove unused export of segmented control classes from select component
Eliminate unnecessary export statements for segmentedButtonClass and
segmentedGroupClass in the select component to streamline the module's
public API and reduce potential confusion.
2026-06-01 14:21:01 -06:00
Richard R
17e96f01eb refactor(app): remove unused Link imports from public pages and components
Eliminate redundant imports of the Link component from Next.js in several
public-facing pages and components. These imports were no longer in use
after recent UI refactoring and consolidation of navigation elements.
This cleanup reduces bundle size and improves code clarity.
2026-06-01 14:17:11 -06:00
Richard R
e0c458c1b4 style(ui): update range input to use secondary accent color for progress
Switch range input progress styling from primary to secondary accent color
for both WebKit and Mozilla engines. Remove drop shadow from slider thumb
for a cleaner appearance. This change aligns the component with the updated
design palette and simplifies visual effects.
2026-06-01 14:17:03 -06:00
Richard R
7c8577ba32 feat(ui): redesign range input with dynamic progress styling and improved accessibility
Revamp the range input component to support dynamic progress indication using CSS custom properties and linear gradients. Add logic to compute and set the progress percentage based on current value, min, and max. Refine focus and disabled states for better accessibility and usability. Update styling for both WebKit and Mozilla engines to ensure consistent appearance. This change enhances visual feedback and modernizes the range slider UI.
2026-06-01 14:08:58 -06:00
Richard R
4086f80066 refactor(ui): consolidate button, menu, popover, and range primitives for unified usage
Remove legacy UI harness and dev/demo files. Replace scattered button, menu, popover, and range input utilities with shared, composable primitives: Button, ButtonLink, ButtonAnchor, MenuActionItem, MenuItemsSurface, PopoverSurface, PopoverTrigger, and RangeInput. Update all usages across app, admin, player, and document components to use these new primitives, eliminating duplicated class logic and improving consistency. Remove obsolete utility files and class exports. This change streamlines UI code, centralizes styling, and reduces maintenance overhead.
2026-06-01 13:40:47 -06:00
Richard R
5d0d3d313d feat(ui): introduce shared Listbox components for unified select and dropdown styling
Replace direct usage of Headless UI Listbox primitives with new SharedListboxButton,
SharedListboxOption, and SharedListboxOptions components across AudiobookExportModal,
FinderToolbar, VoicesControlBase, and select UI. Refactor related imports and classNames
to centralize dropdown styling and logic. Simplify UserMenu button markup for improved
consistency.

This change consolidates dropdown/select UI patterns, reduces duplication, and
improves maintainability by providing a single source of truth for Listbox styling
and behavior.
2026-06-01 12:31:00 -06:00
Richard R
d4afa43abf refactor(ui): unify button usage in settings, admin, and doclist components
Replace native button elements with shared Button, ChoiceTile, and IconButton
components for consistent UI behavior and styling. Update classNames and
props to match new component APIs. Adjust FinderSidebar to use utility
function for conditional class merging.
2026-06-01 11:58:30 -06:00
Richard R
4f1d8feda5 Refactor UI components to use consistent button and icon styles across the application 2026-06-01 11:33:25 -06:00
Richard R
fdceed6067 Converge reader navigation buttons 2026-06-01 11:05:43 -06:00
Richard R
d2d06e15b6 Converge choice and popover surfaces 2026-06-01 11:02:26 -06:00
Richard R
44989700a6 Use shared cards in audiobook settings 2026-06-01 10:58:17 -06:00
Richard R
fe79085f72 Move settings modal onto shared frame 2026-06-01 10:56:39 -06:00
Richard R
5e0303d065 Migrate secondary modals to shared frame 2026-06-01 10:55:18 -06:00
Richard R
bd3b99b3ee Converge modal and drawer frames 2026-06-01 08:27:27 -06:00
Richard R
9b424f0c9f Remove legacy UI shim imports 2026-06-01 05:42:52 -06:00
Richard R
059efed253 refactor: remove initial loader state and related logic from PDFViewerPage 2026-06-01 05:09:18 -06:00
Richard R
9038562971 Converge sidebar and reader controls 2026-06-01 05:08:06 -06:00
Richard R
cc0d460f6b fix pdf loader flash 2026-06-01 04:54:12 -06:00
Richard R
29d770941a fix compact reader auth control 2026-06-01 04:43:50 -06:00
Richard R
5eef2eac37 phase 10: add ui system harness 2026-06-01 04:33:53 -06:00
Richard R
740366a027 phase 9: enforce ui architecture imports 2026-06-01 04:18:19 -06:00
Richard R
b4f30cf072 phase 7: refactor app surfaces to ui layer 2026-06-01 02:41:48 -06:00
Richard R
c56c3fa902 phase 5: split ui primitives into modules 2026-05-31 22:02:28 -06:00
Richard R
4cb9331abb phase 4: enforce design system lint rules 2026-05-31 20:52:08 -06:00
Richard R
c78b134d4d phase 3: depth and rhythm polish 2026-05-31 20:48:18 -06:00
Richard R
745c846a6e phase 2: primitives and semantic tokens 2026-05-31 20:15:44 -06:00
Richard R
11e138ae36 phase 1: motion language 2026-05-31 19:25:40 -06:00
Richard R
7bd798b9d1 phase 0: token foundation 2026-05-31 19:22:08 -06:00
Richard R
3d0367bc5b fix(tests): update heading text in landing routing test 2026-05-31 17:06:04 -06:00
Richard R
e3044278b1
Merge pull request #95 from richardr1126/redesign/landing-privacy
Redesign public landing & privacy pages
2026-05-31 16:56:05 -06:00
Richard R
3c08b9e406 feat(shared): centralize origin validation logic and update metadata usage
Move origin extraction to shared utility for consistent validation across
server and client modules. Update layout metadata to use the shared origin
helper, improving maintainability and deployment flexibility. Add unit tests
for layout metadata to ensure correct origin handling.
2026-05-31 16:41:47 -06:00
Richard R
27267e5ffb refactor(public): use environment variables for base URL and improve accessibility
Switch landing and layout metadata to use BASE_URL from environment for
deployment flexibility. Refine privacy page environment check for robustness.
Update ARIA attributes on landing preview for better accessibility. Adjust
terminal and visually hidden styles for improved formatting and screen reader
support.
2026-05-31 16:29:40 -06:00
Richard R
0b1e293638 style(landing): revise feature copy and docker instructions for clarity
Update landing page descriptions to emphasize native file rendering and
layout-aware parsing. Adjust Docker quick start instructions to remove
redundant volume mount and highlight required environment variables for
self-hosting.
2026-05-31 16:09:31 -06:00
Richard R
535d562a0b style(public): overhaul landing and privacy pages with new layout, hero, and theme effects
Redesign the public landing and privacy pages with a new layout structure,
introducing an aurora background, grain overlay, and updated navigation.
Revise hero section with animated word-level highlighting and refreshed
copy. Update CSS to use semantic theme variables, color-mix, and new
background effects. Adjust navigation, footer, and action button order for
clarity. Update privacy page button label for consistency.
2026-05-31 15:55:41 -06:00
Richard R
14807a0e8c style(landing): update provider and export descriptions on landing page and adjust hero panel glow
Revise landing page metadata to specify Replicate TTS and clarify export as
audiobook workflows. Simplify hero panel glow effect in CSS for visual
consistency.
2026-05-31 14:36:58 -06:00
Richard R
e3818db294 refactor(privacy): restructure policy sections and clarify provider, analytics, and encryption details
Reorganize privacy policy content to improve clarity on service provider roles,
analytics consent, and encryption limitations. Update section headings and
descriptions for accuracy. Enhance CookieConsentBanner and PrivacyModal to
reflect optional analytics and clarify storage, operator access, and password
handling. Improve CSS for policy section headings and lists for better
readability.
2026-05-31 14:28:59 -06:00
Richard R
50234d34a9 refactor(ui): centralize button primitives and update imports across app
Move all button-related class utilities and types from formPrimitives to a new
ui/buttonPrimitives module. Update all component imports to reference the new
location, ensuring consistent button styling and easier future maintenance.
Remove redundant button code from formPrimitives and re-export as needed for
admin UI compatibility. Add public.css for landing and privacy layout styles.
2026-05-31 14:10:59 -06:00
Richard R
da1cb1e2be
Merge pull request #94 from richardr1126/refactor/clean-env
refactor(v4): land JSON runtime seeder and remove no-auth mode
2026-05-31 13:31:46 -06:00
Richard R
2a2ba35454 Apply cached TTS location before remote progress 2026-05-31 13:23:52 -06:00
Richard R
eebb54b018 refactor(auth): remove redundant authEnabled flag from contexts and components
Eliminate the unused authEnabled property from context providers, hooks,
components, and API responses. All logic and UI now assume authentication is
required, simplifying prop signatures and reducing branching. Update related
types, context values, and function calls to reflect this change. This streamlines
the authentication flow and removes unnecessary configuration.
2026-05-31 13:10:01 -06:00
Richard R
936aa50f9a refactor(api): remove all legacy unclaimed user scope logic and enforce strict userId scoping
Eliminate all code, tests, and utilities related to the legacy 'unclaimed' user
scope. All API endpoints, document and audiobook storage, and access logic now
require a valid authenticated userId and only operate on resources owned by that
user. Remove related helper functions, test cases, and conditional flows for
anonymous/unclaimed data. Update types, client APIs, and UI logic to reflect
that only 'user' scope is supported. This simplifies ownership checks and
removes ambiguity around document and audiobook access.
2026-05-31 13:01:55 -06:00
Richard R
20fa820952 clean(tests): remove CI test script from package.json 2026-05-31 12:10:57 -06:00
Richard R
5f28be5d58 refactor(env): remove legacy no-auth mode and enforce required auth env vars
Eliminate all code paths, configuration, and documentation related to running
without authentication. Require AUTH_SECRET and BASE_URL at startup, updating
middleware, server logic, and runtime checks to assume auth is always enabled.
Simplify onboarding, settings, and test helpers to reflect mandatory auth.
Update environment examples, Docker and deployment docs, and CI/test configs.
Remove no-auth-specific UI flows, test cases, and feature toggles.
2026-05-31 12:09:37 -06:00
Richard R
4bcd90274c Handle JSON provider seed encryption failures per provider 2026-05-31 00:55:25 -06:00
Richard R
bfe9567310 Clarify compute worker token docs 2026-05-31 00:21:20 -06:00
Richard R
1763a84ffc docs(env): clarify FFMPEG_BIN usage for audio processing in docs and env example
Update .env.example and environment variable documentation to clarify that
FFMPEG_BIN can override the ffmpeg binary path for general audio processing,
not just audiobooks. Note that it is also used by compute worker Whisper audio
decode in addition to audiobook routes.
2026-05-31 00:16:28 -06:00
Richard R
83aa1152cb docs(config): update environment variable docs for runtime JSON seed and remove legacy RUNTIME_SEED_* usage
Remove all references to legacy RUNTIME_SEED_* environment variables from documentation and codebase. Update docs and .env.example to document the new RUNTIME_SEED_JSON and RUNTIME_SEED_JSON_PATH variables for first-boot runtime config and provider seeding. Refactor admin seed logic and runtime config schema to eliminate env-var-based seeding in favor of JSON-based initialization. Update admin panel UI and badges to reflect new seed sources. Remove obsolete env parsing logic and tests for RUNTIME_SEED_* flags. Add new tests for JSON seed behavior.

BREAKING CHANGE: RUNTIME_SEED_* environment variables are no longer supported; use RUNTIME_SEED_JSON or RUNTIME_SEED_JSON_PATH for first-boot runtime config and provider seeding.
2026-05-31 00:13:03 -06:00