Skip to content

Conversation

@thostetler
Copy link
Member

Export citation options now persist to URL query parameters, making export
configurations shareable and bookmarkable.

  • Removed XState machine in favor of simpler React state with draft/submitted pattern
  • Export format, custom format string, and BibTeX options sync to URL
  • Custom format templates dropdown fixed to render correctly in tab panels
  • User auth state no longer persisted to localStorage to prevent stale data
  • MSW mocking improvements for development testing

@thostetler thostetler force-pushed the export-custom-format-url-state branch from 3b0bf66 to 26b82ec Compare January 17, 2026 06:12
User data should come fresh from the server session via dehydratedAppState
on each page load. Persisting it to localStorage could cause stale auth
data to override fresh session data.
When Select is used inside TabPanels or other stacking contexts, the
dropdown menu can render behind other elements. Added menuPortal style
with high z-index to support portaled menu rendering.
- Add localhost to CSP connect-src when mocking is enabled
- Fix mock API base URL to use window origin for service worker interception
- Generate valid mock token with proper expiry for authenticated testing
- Add user-settings mock handler with sample custom formats
Added nuqs library and NuqsAdapter wrapper to enable type-safe URL
query parameter state management in the application.
Removed XState machine in favor of simpler React state with draft/submitted
pattern. Export options now persist to URL for shareability.

- Replaced state machine with local useState for draft/submitted values
- Added URL parameter parsing and serialization utilities
- Custom format templates dropdown now uses portal for proper z-index
- Added unit tests for URL param handling
- Added e2e test for URL persistence
@thostetler thostetler force-pushed the export-custom-format-url-state branch from 26b82ec to 363e5aa Compare January 17, 2026 06:15
- Simplify redundant singleMode conditional check
- Pass scalar values directly to field components instead of wrapping in arrays
- Extract preserved search params into memoized helper
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant