summaryrefslogtreecommitdiff
path: root/apps/web/app/reader/_components/reader-shell.tsx
Commit message (Collapse)AuthorAgeFilesLines
* feat: add previous/next navigation buttons on mobile detail viewFuwn2026-02-101-9/+36
|
* fix: let display density apply to main content panelFuwn2026-02-101-1/+1
|
* fix: remove font size selector, always use default text-baseFuwn2026-02-101-5/+1
|
* feat: scoped mark-all-read, share enhancements, notification z-indexFuwn2026-02-101-1/+6
| | | | | | | | | - Mark all as read now scopes to current feed/folder instead of all - Added undo button to mark-all-read toast notification - Share notes can be toggled between public and private visibility - Track share view count and display in shares list - Activity-based share expiry: views reset the expiry timer - Fixed notification panel z-index layering behind content area
* fix: reduce lint warnings from 34 to 0Fuwn2026-02-101-2/+0
| | | | | | | | | Disable no-img-element (RSS reader needs <img> for arbitrary external URLs). Remove unused variables/imports and redundant getUser() calls guarded by middleware. Fix exhaustive-deps by adding stable deps, wrapping handlers in useCallback, and suppressing intentional omissions. Fix ref cleanup in use-realtime-entries. Allow triple-slash TS reference directives in no-comments rule.
* fix: P0 correctness/security fixes and P1 lint error resolutionFuwn2026-02-091-1/+4
| | | | | | | | | | | P0: add missing 'developer' case to check_custom_feed_limit trigger, scope user_entry_states join to authenticated user in API v1 entries, replace in-memory rate limiting with Supabase-backed check_rate_limit RPC. P1: fix all 9 ESLint errors — useSyncExternalStore for useIsMobile, restructure WebhookSection to avoid set-state-in-effect, move ref mutations into useEffect, replace <a> with <Link> on shared page, ignore generated public/sw.js in eslint config.
* fix: mobile scroll preservation, bottom toolbar for detail panelFuwn2026-02-081-11/+17
|
* feat: add toolbar position setting (top or bottom)Fuwn2026-02-081-82/+93
|
* feat: add feed management features and fix subscribe_to_feed bugsFuwn2026-02-081-25/+115
| | | | | | | | | | | | | - Fix subscribe_to_feed overload ambiguity by dropping old 4-param version - Fix vault permission error by using vault.create_secret instead of direct INSERT - Add duplicate subscription check with clear error message - Add unmute confirmation dialog matching unsubscribe pattern - Add feed button in subscriptions settings page - Add inline rename for feeds, folders, and custom feeds from reader header - Add drag and drop feeds between folders in sidebar - Add credential management UI (add/update) for pro/developer tier - Add add_feed_credentials RPC to convert public feeds to authenticated - Enable pgsodium extension for vault crypto operations
* fix: dynamically calculate detail panel equal split from current layoutFuwn2026-02-071-4/+9
|
* fix: reset panel sizes without page reload, prevent partial-data max width ↵Fuwn2026-02-071-1/+20
| | | | | | | | | | | | clamping Use imperative groupRef API to resize panels instantly instead of writing to localStorage and calling window.location.reload(). Register reset callbacks in Zustand store from layout components. Change sidebarMaxWidth early return from && to || so the generous 35% fallback is used until both subscriptions and custom feeds have loaded, preventing intermittent clamping to minimum size.
* fix: persist detail panel sizes with panelIds-keyed storageFuwn2026-02-071-0/+1
| | | | | Without panelIds, the single-panel state (no entry selected) was overwriting the two-panel layout on every navigation.
* fix: use string percentages for react-resizable-panels v4 size propsFuwn2026-02-071-2/+2
| | | | | v4 treats numeric size props as pixels, not percentages. defaultSize={20} was rendering as 20px (~1.9% of viewport).
* feat: pre-ship polish — UI improvements, keyboard shortcuts, appearance ↵Fuwn2026-02-071-6/+30
| | | | | | | | | | | | | | | | | | settings - Rename "muted keywords" to "muted phrases" throughout settings UI - Add header with navigation to auth pages (sign-in, sign-up, etc.) - Merge security tab (TOTP setup) into account settings tab - Fix TOTP name input truncation on Safari (w-64 → flex-1 min-w-0) - Add appearance settings: font size, time display format, entry images toggle, reading time toggle - Add keyboard shortcuts dialog (? key) with all keybindings documented - Add extended vim shortcuts: gg, G, n/N (next/prev unread), Ctrl+h/l (panel focus) - Add command palette shortcut (⌘K) to shortcuts dialog - Add icon URL fields for folders and custom feeds (DB + queries + settings UI) - Add data-has-unreads attribute for sidebar keyboard navigation - Fix SSR prerendering crash from Zustand persist and react-resizable-panels localStorage access - Add detail panel layout persistence via useDefaultLayout - Update marketing copy to advertise vim-like keyboard navigation
* feat: asa.news RSS reader with developer tier, REST API, and webhooksFuwn2026-02-071-0/+208
Full-stack RSS reader SaaS: Supabase + Next.js + Go worker. Includes three subscription tiers (free/pro/developer), API key auth, read-only REST API, webhook push notifications, Stripe billing with proration, and PWA support.