Commit Graph

64 Commits

Author SHA1 Message Date
Matthieu B
04e3b58a82 Fix invite library dropdown interactions (#1324)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-05 18:52:22 +02:00
Matthieu B
ef8ad20938 style: reformat templates with djlint 2026-03-29 16:34:26 +02:00
Matthieu B
e992873e4d Merge origin/main into ldap branch
Resolve conflicts in auth/routes.py (incorporate media_server_url),
login.html (combine admin page text + LDAP error guard), and uv.lock.
2026-03-29 15:49:50 +02:00
Jacob Swanson
7f64f558dc Add Telegram notification support
Introduces Telegram as a notification agent, including backend logic, form fields, and database columns for bot token and chat ID. Updates creation and editing flows, notification service, and UI to support Telegram integration. Includes a migration to add the new fields to the Notification model.
2026-01-23 22:03:05 -06:00
Erwan Leboucher
5bb51e0cf1 feat(ldap): add LDAP authentication and invitation integration 2025-12-27 17:14:17 +01:00
Matthieu B
3d25506745 style: improve HTML formatting and indentation across multiple templates 2025-12-09 14:28:01 +01:00
Matthieu B
0b2c90fee2 Merge pull request #1020 from 6im0n/feature/reset-password
Feat/Adds password reset functionality for Jellyfin user
2025-12-04 12:02:08 +00:00
copilot-swe-agent[bot]
4bf1f26ca0 Add clarifying comment for max_active_sessions behavior
Co-authored-by: mtthidoteu <66959271+mtthidoteu@users.noreply.github.com>
2025-12-01 11:56:33 +00:00
copilot-swe-agent[bot]
e97fdd5ed2 Fix duplicate max_active_sessions input IDs in invite modal
Co-authored-by: mtthidoteu <66959271+mtthidoteu@users.noreply.github.com>
2025-12-01 11:54:24 +00:00
Simon
237fe620be feat: Add 'Max Active Sessions' input to invite form 2025-11-21 23:49:50 +01:00
Simon
1f748c37b2 feat: improve the password reset functionality for jellyfin 2025-11-21 00:49:05 +01:00
Matthieu B
b2427daa7c fix: Update dropdown loading message and alert to use safe JSON rendering closes #913 2025-10-19 17:07:52 +02:00
engels74
0fb4767457 fix(migrations): reorder wizard category migration and apply pre-rebase formatting
Migration Changes:
- Renamed migration file from 20251004 to 20251005
- Updated down_revision from fd5a34530162 to 08a6c8fb44db
- Ensures migration runs after upstream notification events migration
- Fixes migration chain branching issue
- Removed incorrect merge migration (1e83c67d9785)

Migration chain is now:
fd5a34530162 (disabled attribute) → 08a6c8fb44db (notification events)
→ 20251005_add_category_to_wizard_step (wizard category)

Wizard Refactoring:
- Enhanced uniqueness constraint for WizardStep from (server_type, position)
  to (server_type, category, position)
- Ensures steps in different categories (pre_invite vs post_invite) can have
  the same position indexing without conflict
- Updated wizard state management documentation to explicitly list and
  describe data-* attributes used in steps.html template

Code Quality:
- Applied djlint formatting to 8 template files to minimize rebase conflicts
- Applied ruff format and ruff check --fix (no changes needed)
- Removed redundant requirement comments from spec-driven development
- Fixed case sensitivity in test assertion (POST vs post)
- Updated test references from 20251004 to 20251005 to match corrected
  migration revision ID
2025-10-16 16:57:14 +02:00
engels74
d0df4c6d5d feat: wizard step refactor into pre/post wizard steps
Changes:
  - Pre/post invitation wizard phases
  - Phase-aware routing (/pre-wizard/*, /post-wizard/*)
  - Phase indicator badges (visual categorization)
  - Dynamic completion button behavior
  - Two-column admin layout with category drag-and-drop
  - Invite code management service
  - Enhanced wizard export/import
  - Comprehensive test coverage (17 new test files)
2025-10-16 15:28:48 +02:00
Matthieu B
187b8758c1 Refactor wizard templates and JavaScript controller
- Updated title block in frame.html for clarity.
- Improved localization for the "Next" button in steps.html.
- Refactored the WizardController JavaScript for better readability and organization.
- Added detailed comments to the wizard architecture for future reference.
- Enhanced button visibility and state management based on interaction requirements.
- Implemented swipe gesture handling for mobile navigation.
- Updated subproject commit to indicate a dirty state.
2025-10-07 14:01:16 +02:00
Matthieu B
d1ed08d9c2 Add .djlintrc configuration file for Jinja linting 2025-10-07 11:04:58 +02:00
Matthieu B
3983070748 fix: remove 'Drop' option from server type selection in create and edit modals 2025-10-06 12:34:04 +02:00
Matthieu B
8c18977094 feat: enhance Komga integration with API key updates and user management improvements closes [BUG] Komga Setup Returning a 401 error when Komga is set up and working fine
Fixes #693
2025-10-06 12:32:37 +02:00
Matthieu B
b682967ed2 feat: add notification events handling and UI updates for user notifications 2025-10-04 14:46:01 +02:00
Matthieu B
fc49da65f6 refactor: fix ruff linting and ty type errors
- Fix invalid parameter defaults: library_id: str | None = None
- Replace try-except-pass with contextlib.suppress()
- Remove unnecessary dict.keys() calls
- Remove unnecessary variable assignments before return
- Combine nested if statements
- Add type ignore comments for intentional shadowing
- Add type ignore comments for SQLAlchemy dynamic attributes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-01 22:06:15 +02:00
Matthieu B
f71e25f620 feat: add Drop media server support
Implements comprehensive Drop media server integration following the
media-server integration checklist:

## Core Implementation
- Create DropClient with RestApiMixin base class
- Implement full user management API (CRUD operations)
- Support Drop's two-step user creation (invitation → signup)
- Bearer token authentication with System tokens
- Proper error handling for missing Simple Authentication

## Integration Points
- Register client via @register_media_client decorator
- Add connection checker with API validation
- Wire into media_servers routes and forms
- Update UI templates (create/edit server modals)

## API Features
- User listing and synchronization from Drop API
- Statistics and server health monitoring
- Invitation-based user creation workflow
- Proper policy mapping (enabled, admin, displayName)

## Error Handling
- Clear messaging when Simple Authentication disabled
- Token permission validation and logging
- Graceful fallback for missing API endpoints

Drop integration ready for use once Simple Authentication
is enabled on the Drop server.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 12:41:45 +00:00
engels74
0f0dedde0a feat: implement wizard step interaction requirement system
Add comprehensive "require interaction" functionality for wizard steps that prevents users from proceeding until they engage with step content.

## Key Features:
- **Database Integration**: New `require_interaction` boolean field in WizardStep model with migration
- **Frontend Gating**: Robust JavaScript system that disables "Next" button until user clicks links/buttons in step content
- **UI Enhancement**: Improved checkbox forms with clear descriptions and visual indicators
- **Event Handling**: Advanced interaction detection with proper HTMX disabling and event capture
- **Admin Interface**: Full integration with wizard configuration forms (main and simple)
- **Export/Import**: Support for require_interaction field in wizard step data operations

## Technical Implementation:
- Disabled button state management with pointer-events and tabindex control
- HTMX attribute manipulation to prevent premature navigation
- Event listener capture phase handling for reliable interaction blocking
- Comprehensive test coverage for interaction scenarios
- Form validation and user experience improvements

## Files Modified:
- Backend: models, routes, forms, services, migration
- Frontend: JavaScript interaction logic, templates, UI components
- Testing: Complete test suite for interaction requirements

This feature ensures users engage with critical wizard content before proceeding, improving onboarding experience and preventing accidental step skipping.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-07 14:46:50 +02:00
Matthieu B
486e40e202 fixes and closes #784 #772 #795 2025-08-27 22:08:37 +02:00
Matthieu B
59f81b57cc Add Navidrome support: integrate client, connection check, and UI options 2025-08-15 13:12:20 +02:00
Matthieu B
31228f7a93 Add Audiobookrequest 2025-08-15 11:11:22 +02:00
Matthieu B
0914859226 Enhance PWA registration script to prevent double execution and improve install prompt handling; add hidden tags to forms in various modals for better data management. 2025-08-15 00:04:45 +02:00
Matthieu B
5c40d62765 Remove CSRF token from forms and update button styles for consistency 2025-08-13 22:25:15 +02:00
Matthieu B
b27167e4eb Merge latest changes from main
Resolved conflicts in:
- app/models.py: Combined ApiKey and ExpiredUser models
- app/logging_config.py: Combined API logger and alembic logger configurations
- app/blueprints/public/routes.py: Combined server resolution approaches with fallback
2025-08-13 20:15:05 +02:00
Matthieu B
3e1236a8c3 Enhance modal and user table handling by consolidating HTMX triggers for closing modal and refreshing user table 2025-08-13 19:50:24 +02:00
Matthieu B
5e8a7b947a fix scan 2025-08-13 14:28:52 +02:00
Matthieu B
d4dd57ee1e feat: Add comprehensive connections and expiry management system
- Add new connections management system with MediaConnection and DiscordWebhook models
- Implement dynamic server configuration with URL field support
- Add expiry management system with automatic user cleanup
- Create wizard preset system for streamlined server setup
- Add dedicated connections interface in settings with CRUD operations
- Integrate expiry functionality with connection management
- Add proper form validation and error handling
- Update templates and routes for new connection workflow

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 22:21:10 +02:00
copilot-swe-agent[bot]
60cb5d8972 Implement comprehensive API system with key management
Co-authored-by: Tomat0r <68383702+Tomat0r@users.noreply.github.com>
2025-07-28 12:02:42 +00:00
Matthieu B
e8a200cc47 fix: Prevent duplicate library submissions from unselected servers
Frontend fixes to prevent UNIQUE constraint violations:
- Clear library dropdown content when a server is unchecked
- Disable library checkboxes for unselected servers during form submission
- Change HTMX trigger from 'click once' to 'click' to allow reloading libraries
- This prevents old library selections from being submitted when servers are toggled

These changes ensure only libraries from currently selected servers are submitted,
preventing duplicate library associations in the database.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 19:54:51 +02:00
Matthieu B
c7bad49599 fix: Add fallback clipboard support for HTTP contexts
- Add copyToClipboard() utility function in base.html with fallback support
- Replace direct navigator.clipboard.writeText() calls with new utility
- Support both HTTPS (modern clipboard API) and HTTP contexts (document.execCommand fallback)
- Add manual copy alert as last resort for complete compatibility
- Update all clipboard usage locations (invite modal, admin invites, invite cards)

Fixes #711

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 16:37:21 +02:00
Matthieu B
46ebf2508a fix ui toggles 2025-07-18 16:04:05 +02:00
Matthieu B
d8cb5193c3 invitation workflow overall for more stability 2025-07-17 15:13:00 +02:00
snowfudge
5867f7e7b9 feat: add notifiarr support as notification agent 2025-07-16 13:19:57 +07:00
Matthieu B
f08e02386c fix and closes #708 2025-07-15 15:13:40 +02:00
Matthieu B
7b8f64af7d Fix SQLAlchemy model constructors to accept keyword arguments
- Added __init__ constructors to all SQLAlchemy models
- Fixed pyright 'No parameter named' errors across the codebase
- Fixed various ruff linting issues (SIM108, E741, E402, SIM102, B904, SIM105)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 13:52:15 +02:00
Matthieu B
d6dbd94826 migrate 2025-07-14 15:22:58 +02:00
Matthieu B
dd8da235ee Enhance media server support by adding Kavita integration and updating existing routes. Refactor Audiobookshelf, Emby, Jellyfin, and Romm blueprints to utilize a common media blueprint factory. Implement unified invitation processing and improve wizard migration handling. Update templates and forms to accommodate new server types and ensure backward compatibility. 2025-07-12 21:29:13 +02:00
Matthieu B
be1bdb83f1 added translation strings 2025-07-11 15:29:52 +02:00
Matthieu B
e9e2eec97c Add Komga server creation and edit 2025-07-11 14:56:39 +02:00
Matthieu B
78765ca76a Support Komga closes #677 2025-07-11 14:44:10 +02:00
Matthieu B
351d6ec5f7 modal fix 2025-07-10 19:21:26 +02:00
Matthieu B
18084976a4 UI fixed 2025-07-10 16:27:48 +02:00
Matthieu B
c86cc75e32 Added Multi-Admin Accounts 2025-07-08 19:14:07 +02:00
Matthieu B
bc52fd0e42 fix 2025-07-04 15:45:08 +02:00
Matthieu B
51da1160a3 add custom steps 2025-07-04 12:33:33 +02:00
Matthieu B
98dd3cb79b feat: Add multi-server invite support with Jellyfin integration 2025-07-03 21:43:43 +02:00