Commit Graph

58 Commits

Author SHA1 Message Date
155aef9778 Customize monochrome palette accent and sidebar colors
- Light mode: accent color linked to sidebar (#212121)
- Dark mode: sidebar uses very dark color (#0a0a0a)
- Add CSS override for solid monochrome sidebar background

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:48:24 +01:00
7b45d87553 Make responsive tab bar position the default
- Reorder options: responsive first, then top, then bottom
- Change default tabBarPosition from 'top' to 'responsive'

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:32:00 +01:00
fc27786c88 Add automatic tab centering to TabsScroller
- Clicked tabs now scroll to center of container automatically
- Behavior works on all pages using TabsScroller
- Removed duplicate scroll logic from Features.tsx

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:29:53 +01:00
005526d5af Fix tab scroll arrows not updating at scroll end
- Add debounced scroll-end detection (150ms) for trackpad/touch scrolling
- Add scrollend event listener for native browser support
- Add 350ms timeout fallback after arrow button clicks
- Arrows now update immediately when reaching scroll boundaries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:24:14 +01:00
42d27bb9b4 Add user icon button to mobile title bar
- Add user initial button on the right side of mobile header
- Navigate to settings on click
- Style matches desktop sidebar (semi-transparent accent background)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:12:23 +01:00
ef7dc2a481 Add parametric CSS variables for section and tab bar spacing
- Add --tabs-content-gap variable (24px) for consistent tab bar gaps
- Add --section-gap-lg (32px) and --section-gap-xl (48px) for section spacing
- Update Layout.css to use parametric spacing for all tab positions
- Update ThemeSettings.css to use section gap variables

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 15:38:39 +01:00
9c15d1dec5 Simplify mobile bottom padding to match desktop spacing
Use fixed 24px padding for mobile bottom tab bar instead of complex
variable calculations. This provides consistent spacing that matches
the desktop visual appearance.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 15:08:27 +01:00
44462ca295 Unify mobile tab bar padding with desktop
Set --page-padding-y-mobile-bottom-gap to var(--space-3) to match
the top gap, providing consistent spacing around the tab bar on mobile.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 14:11:24 +01:00
76a3e51bbc Fix mobile bottom padding on first page load
Re-measure tab bar height when tabBarPosition changes from 'top' to
'responsive'. This fixes the issue where bottom padding was incorrect
on first load because the CSS variable was measured before the backend
loaded the responsive position setting.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 14:07:58 +01:00
b2eed5375b Fix mobile content padding to match desktop margins
- Add page-padding-y-mobile gap after title bar offset
- Align mobile padding calculations with desktop behavior
- Update all tab position rules (top, bottom, responsive)
- Add CSS variables for mobile spacing control

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 13:23:06 +01:00
97494679ec Add separate MobileTitleBar component for mobile layout
- Create MobileTitleBar component with fixed top position
- Split title bar from tabs bar on mobile (title always on top)
- Add data-has-actions attribute for action button detection
- Track --tab-pill-height CSS variable for tab buttons
- Remove extra padding from mobile content padding-top
- Hide tabs container when no tabs or actions present

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 16:52:34 +01:00
c85a7f9258 Add fixed top position for tab bar
Add CSS rules for data-tab-position='top' and 'responsive' (desktop):
- Fixed positioning at top with proper sidebar offset
- Content padding-top to account for bar height
- Mobile breakpoint handling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 00:08:50 +01:00
7ca882879b Fix bottom tab bar padding for mobile and SwipeTabs
- Add .admin-tab-swipe to padding-bottom rules for bottom position
- Add mobile-specific padding rules for data-tab-position='bottom'
- Update responsive position rules to include .admin-tab-swipe

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:59:37 +01:00
ec726da797 Fix page content padding consistency
- Restore bottom padding for .page-content and .admin-tab-content
  across all breakpoints (was accidentally set to 0)
- Change bottom tab bar padding from max() to calc(padding + bar-height)
  so content has both regular margin AND space for fixed tab bar

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:54:22 +01:00
98fc8330f4 Remove grid layout from theme-tab-content
Remove display: grid and grid-template-rows: 1fr that was
causing content to expand and fill available space.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:04:48 +01:00
1eda386ef4 Fix extra empty space at bottom of pages
- Remove min-height from main-content
- Remove flex: 1 from page-content and admin-tab-swipe
- Content areas no longer expand to fill viewport height

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:02:20 +01:00
cc502b5d4c Remove bottom padding from page content areas
Remove padding-bottom from page-content and admin-tab-content
across all responsive breakpoints to eliminate extra scrollable
space at the bottom of pages.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 21:59:38 +01:00
00685c91fe Fix extra scrollable space on mobile with 100dvh
Use 100dvh (dynamic viewport height) instead of 100vh to fix
the extra scrollable space caused by mobile address bar height.
Keeps 100vh as fallback for unsupported browsers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 21:54:28 +01:00
c9867845b4 Disable overscroll bounce effect on all pages
Add overscroll-behavior: none to html and body elements
to prevent rubber-band scrolling that shows extra space.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 21:50:03 +01:00
500d038ed0 Add swipe-to-open sidebar on all pages + fix bottom bar styling
- Create SwipeableContent component for sidebar swipe on non-tab pages
- Add swipe-to-close sidebar from overlay
- Make swipe work from entire page (ignoring interactive elements)
- Show title and divider on desktop when tab bar is at bottom
- Hide title/divider only on mobile for bottom position

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 21:48:19 +01:00
9e3556322f Improve drag/swipe handling and Features page UX
- SwipeTabs: Delay pointer capture until drag starts for better tap detection
- Features: Only allow drag via handle dots, not entire card
- Features: Smart hasOrderChanges - hide buttons when order returns to initial
- Features: Don't apply dragging style until movement exceeds threshold
- ThemeSettings: Add role="button" for accessibility on all option cards
- Sidebar: Light theme active menu item styling improvements
- Layout: Tab bar translucency and blur effects

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 03:19:40 +01:00
75cb687500 Remove edge resistance when sidebar swipe is enabled
Makes swiping to open sidebar feel natural without resistance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:36:54 +01:00
be5d6141f4 Add swipe-to-open sidebar on first tab
When swiping right on the first tab, opens the mobile sidebar menu.
Added onSwipePastStart prop to SwipeTabs component.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:33:31 +01:00
18c4760b5d Re-add edge swipe to open sidebar on mobile
Swipe from left edge (50px) to open sidebar menu

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:28:02 +01:00
acebfb7adb Remove edge swipe sidebar detection
User prefers the existing swipe mechanism for sidebar

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:19:18 +01:00
50199ec0e4 Fix bottom tab bar padding and improve edge swipe
- Remove extra top padding when tab bar is at bottom
- Increase edge swipe threshold from 30px to 50px
- Reduce minimum swipe distance from 50px to 40px

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:14:30 +01:00
1bb03f4569 Optimize scroll performance
- Cache isMobile check in edge swipe detection to avoid layout thrashing
- Remove scroll-behavior: smooth from tab slider
- Remove -webkit-overflow-scrolling: touch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:12:43 +01:00
02c14e3fbd Add tab bar position setting with edge swipe sidebar
- Add theme_tab_bar_position setting (top/bottom/responsive)
- Tab bar is now fixed at top, stays visible during scroll
- Bottom position uses fixed positioning with safe-area-inset
- Add edge swipe gesture to open sidebar on mobile
- Remove backdrop-filter for better scroll performance
- Simplify TabsScroller by removing inline style manipulation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 02:05:49 +01:00
f2c6389b21 Add active state highlighting to user menu
- Highlight user menu trigger when on pages accessible from dropdown
  (admin/*, settings, api-keys)
- Add .active styling for dropdown menu items (current page)
- Use NavLink end prop on /admin to prevent false positive matches
- Support auto accent color overrides for light backgrounds

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 21:42:10 +01:00
7b9d5f8029 Disable tap highlight on interactive elements
Remove the blue/gray selection overlay that appears when tapping
buttons, links, sidebar items and other interactive elements on
mobile devices.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 21:25:49 +01:00
9a85345d75 Allow immediate swipe during transitions 2025-12-22 21:19:55 +01:00
a1ae2a53a6 Fix mobile tab header and swipe behavior 2025-12-22 21:01:33 +01:00
1f52680721 Improve tab scrolling with arrows 2025-12-22 19:50:55 +01:00
69c0fd7506 Refine mobile content widths 2025-12-22 19:22:24 +01:00
8b4a639c77 Add search page with popup UI 2025-12-22 19:09:31 +01:00
1ff1103c67 Rewrite Features config drag-drop with pointer/touch events
Replace HTML5 Drag and Drop API with pointer/touch event handling
for better mobile support:

- Add pointer event handlers for desktop/stylus drag
- Add global touch event listeners for mobile drag
- Track drag state with refs for consistent behavior
- Calculate drop position based on Y coordinate
- Improve Cancel to restore from initial snapshot

Also improve SwipeTabs to ignore interactive elements (buttons,
links, inputs) during swipe detection, and add touch-action: none
to order cards for proper touch handling.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 18:41:25 +01:00
6adcf75ef1 Fix Features config tab order management
- Tabs now use applied order (moduleOrder) instead of local pending order
- Cards still show local order for drag preview feedback
- Cancel button correctly restores to the applied state from context
- Apply button updates both tabs and sidebar after saving

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:47:12 +01:00
e15b8ecd58 Fix TypeScript error in SwipeTabs TouchList type
Use React.TouchList and React.Touch types instead of native DOM types
to resolve type compatibility issue.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:10:53 +01:00
e83d62a240 Refactor SwipeTabs for smoother touch transitions
- Rewrite SwipeTabs with improved touch handling and animation
- Use translate3d with smoother easing curve (280ms)
- Add coalesced pointer events for high refresh rate displays
- Clean up redundant CSS styles across multiple files
- Add page-max-width dimension variable

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:08:29 +01:00
abd8f75efc Improve mobile swipe tabs with native scroll-snap
- Rewrite SwipeTabs to use CSS scroll-snap for smoother transitions
- Add GPU acceleration hints for fluid animations
- Use native scrolling behavior instead of manual touch handling
- Add swipe-tabs--snap and swipe-tabs--static variants
- Improve height transitions and layout containment
- Update dimension variables for better spacing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:08:50 +01:00
fc605f03c9 Improve file listing and fix notification metadata field
Backend:
- Optimize file listing for non-superusers with dedicated CRUD methods
- Add get_visible_for_user and count_visible_for_user for efficient queries
- Move /allowed-types/ and /max-size/ routes before /{file_id} for proper matching
- Rename notification 'metadata' field to 'extra_data' for clarity
- Fix settings export to use get_value() method

Frontend:
- Update NotificationItem interface to use extra_data field

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 22:27:08 +01:00
724d550599 Remove icon from Sources page title bar
Consistent with other pages that don't show icons in the title section.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 22:24:36 +01:00
62b64fdefc Restore neutral colors for default palette
Remove indigo tints from default palette light/dark themes.
Use neutral slate-gray colors for backgrounds and text, letting
the accent color provide visual highlights in interactive elements.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 20:28:01 +01:00
1c1199fc16 Improve Features page ordering and mobile UI consistency
- Fix mobile Features page to respect lateral borders/padding
- Fix drag state not resetting properly when Apply/Cancel pressed
- Improve mobile UI consistency across all pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 12:44:27 +01:00
6faeb3c975 Remove icons from page title bars and fix Features page issues
- Remove icons from all page title sections in tab bars
- Fix double padding on mobile for Features page
- Fix drag state not resetting when Apply/Cancel pressed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 23:07:04 +01:00
3074f1685f Improve Features page ordering and mobile UI consistency
- Fix module ordering with local state tracking for immediate UI updates
- Add tab centering when selected (scroll to center)
- Use finally block in handleApplyOrder to ensure state reset
- Add cancelOrder translation key
- Increase order card min-width for better readability
- Normalize mobile top bar height with min-height constraint
- Add display:flex to mobile title sections for proper layout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 22:15:40 +01:00
8c4a555b88 Add comprehensive backend features and mobile UI improvements
Backend:
- Add 2FA authentication with TOTP support
- Add API keys management system
- Add audit logging for security events
- Add file upload/management system
- Add notifications system with preferences
- Add session management
- Add webhooks integration
- Add analytics endpoints
- Add export functionality
- Add password policy enforcement
- Add new database migrations for core tables

Frontend:
- Add module position system (top/bottom sidebar sections)
- Add search and notifications module configuration tabs
- Add mobile logo replacing hamburger menu
- Center page title absolutely when no tabs present
- Align sidebar footer toggles with navigation items
- Add lighter icon color in dark theme for mobile
- Add API keys management page
- Add notifications page with context
- Add admin analytics and audit logs pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 22:27:32 +01:00
f698aa4d51 Clean up Dashboard by removing placeholder cards
Remove unused stat-cards and simplify Dashboard to empty state,
ready for future content.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 21:33:11 +01:00
4d8a58b547 Add auto-collapse on mouse leave for toggle sidebar mode
In toggle mode, sidebar now collapses automatically when mouse
leaves the sidebar area (after being expanded by click).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 21:29:17 +01:00
15f211493d Add module ordering feature with drag-and-drop
- Add modules_order setting in backend settings registry
- Update ModulesContext with moduleOrder state and save functions
- Create configuration tab in Features page with drag-and-drop reordering
- Make feature tabs dynamic based on order (updates in real-time)
- Sort sidebar modules based on saved order
- Add order-cards CSS with vertical layout
- Update API client to support string[] type for modules_order

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 21:25:43 +01:00