Commit Graph

45 Commits

Author SHA1 Message Date
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
ba53e0eff0 Refactor settings system and improve context initialization
Backend:
- Add type validation and coercion for settings API
- Implement SettingStorage and SettingType in registry
- Improve CRUD operations for settings

Frontend:
- Refactor Theme, Language, Sidebar, ViewMode contexts
- Simplify admin components (GeneralTab, SettingsTab, UsersTab)
- Add new settings endpoints to API client
- Improve App initialization flow

Infrastructure:
- Update Dockerfile and docker-compose.yml
- Add .dockerignore
- Update Makefile and README

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 18:14:47 +01:00
04a0fe4b27 Modernize UI with glass morphism and refined styling
- Add backdrop-filter blur effects to sidebar, cards, and dropdowns
- Replace flat button colors with gradients
- Implement softer multi-layer shadows
- Add new CSS variables: --color-overlay, --color-card-outline, --color-focus-ring
- Modernize transitions with smoother easing curves
- Add loading spinner animation
- Add hexToRgbString() for --color-accent-rgb variable

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 16:45:49 +01:00
41c41adb98 Add UI settings API and improve context initialization
- Add /settings/ui GET and PUT endpoints for UI settings
- Improve ThemeContext with better initialization and auto accent handling
- Update SidebarContext with expanded state persistence
- Fix context initialization in ModulesContext and ViewModeContext
- Update components to use improved theme/sidebar contexts

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 19:50:30 +01:00
0608217702 Use modern glow effect for dark theme + auto accent elements
Replace layered shadows with soft diffused glow:
- Centered blur (0 offset) for even light spread
- 16-24px blur radius for soft edges
- Light spread (1-4px) for subtle expansion

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 23:22:06 +01:00
496644fae1 Enhance shadows for dark theme + auto accent elements
Use thicker, 3-layer shadows with progressive downward fade:
- Layer 1: 6-8px offset, strong opacity (45-55%)
- Layer 2: 12-16px offset, medium opacity (20-28%)
- Layer 3: 20-24px offset, fading opacity (6-10%)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 23:19:02 +01:00
3fbd43bb94 Enhance shadows for dark theme + auto accent elements
Use thicker, layered shadows with downward fade effect:
- Double shadow layers for depth
- Higher offset for bottom diffusion
- Increased opacity for better visibility

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 23:16:03 +01:00
de204ea68c Add dark theme + auto accent color overrides
Use off-white backgrounds with dark text for active/selected elements
when using dark theme with 'auto' accent color:
- Tab buttons (active state)
- Sidebar nav items (active state)
- Primary buttons
- Toggle switches
- Badges, checkboxes, input focus states
- Theme settings cards and options

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 22:52:09 +01:00
453ce10494 Initial commit 2025-12-05 09:53:16 +01:00