| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
querySelectorAll(':scope > *') misses bare text nodes like
'notifications' in the footer button. Now walks childNodes to
handle mixed text node + element children correctly.
|
| |
|
|
|
|
| |
Notifications button text is wider than all entries. Now measures
all nav items AND footer links/buttons, taking the widest row plus
badge reserve as the sidebar minimum width.
|
| |
|
|
|
|
| |
getBoundingClientRect on wrapped text returns the narrow wrapped
width, not the single-line width. Canvas measureText is layout-
independent and gives the true single-line intrinsic text width.
|
| |
|
|
|
|
| |
scrollWidth on a block flex element returns parent width, not content
width. Now sums getBoundingClientRect().width of each child element
(text span + unread badge) for a screen-independent measurement.
|
| |
|
|
|
|
| |
Measures the first sidebar nav item (all entries + unread badge)
after mount and uses its scrollWidth + padding as minSize. Default
is 1.4x the minimum for comfortable reading of feed titles.
|
| |
|
|
|
| |
Without panelIds, the single-panel state (no entry selected) was
overwriting the two-panel layout on every navigation.
|
| |
|
|
|
| |
Wire useDefaultLayout to sidebar Group with localStorage storage.
Update reset command to clear both sidebar and detail layout keys.
|
| |
|
|
|
| |
v4 treats numeric size props as pixels, not percentages.
defaultSize={20} was rendering as 20px (~1.9% of viewport).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
Comprehensive sweep of all user-facing text to enforce lowercase
convention, including acronyms (api, rest, http, opml, json, totp,
mfa, qr, hmac). Added asa-lowercase/lowercase-strings eslint rule
that reports uppercase in notify() calls, error messages, jsx text,
and checked attributes (placeholder, alt, title).
|
|
|
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.
|