-
Notifications
You must be signed in to change notification settings - Fork 0
Phase 8: Multiuser documentation (user, admin, API guides) with single-user mode support #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
… API guides) Co-authored-by: lstein <[email protected]>
Co-authored-by: lstein <[email protected]>
|
@copilot There have been some significant changes in the multiuser mode since this pull request was first written. Could you examine the commits added to branch
|
- Document multiuser config option (true/false/absent) - Explain single-user mode behavior (no login required) - Document mode switching and legacy "system" user - Update user management to reference CLI scripts (useradd, userdel, usermod, userlist) - Note that web UI for user management is coming in future release - Add adaptive API client example for both modes Co-authored-by: lstein <[email protected]>
I've updated all three documentation guides to reflect the changes you described: Key Updates:
All changes are in commit |
… main models (invoke-ai#8754) * fix(model_manager): prevent Z-Image LoRAs from being misclassified as main models Z-Image LoRAs containing keys like `diffusion_model.context_refiner.*` were being incorrectly classified as main checkpoint models instead of LoRAs. This happened because the `_has_z_image_keys()` function checked for Z-Image specific keys (like `context_refiner`) without verifying if the file was actually a LoRA. Since main models have higher priority than LoRAs in the classification sort order, the incorrect main model classification would win. The fix adds detection of LoRA-specific weight suffixes (`.lora_down.weight`, `.lora_up.weight`, `.lora_A.weight`, `.lora_B.weight`, `.dora_scale`) and returns False if any are found, ensuring LoRAs are correctly classified. * refactor(mm): simplify _has_z_image_keys with early return Return True directly when a Z-Image key is found instead of using an intermediate variable.
* Add user survey section to README Added a section for new and returning users to take a survey. * docs: add user survey link to WhatsNew * Fix formatting issues in WhatsNew.tsx --------- Co-authored-by: Alexander Eichhorn <[email protected]>
…ebugging queue visibility) (#30) * Add user isolation for queue events and field values filtering Co-authored-by: lstein <[email protected]> * Add user column to queue list UI Co-authored-by: lstein <[email protected]> * Add field values privacy indicator and implementation documentation Co-authored-by: lstein <[email protected]> * Allow all users to see queue item status events while keeping invocation events private Co-authored-by: lstein <[email protected]> * chore(backend): ruff --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: lstein <[email protected]> Co-authored-by: Lincoln Stein <[email protected]>
Updated by "Cleanup translation files" hook in Weblate. Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ Translation: InvokeAI/Web UI
* Initial plan * Add only-labels parameter to limit automated issue closure to bugs only Co-authored-by: lstein <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: lstein <[email protected]>
* Initial plan * Add multiuser queue badge support - show X/Y format in multiuser mode Co-authored-by: lstein <[email protected]> * Format openapi.json with Prettier Co-authored-by: lstein <[email protected]> * Address code review feedback - optimize DB queries and improve code clarity Co-authored-by: lstein <[email protected]> * translationBot(ui): update translation files (invoke-ai#8767) Updated by "Cleanup translation files" hook in Weblate. Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ Translation: InvokeAI/Web UI * Limit automated issue closure to bug issues only (invoke-ai#8776) * Initial plan * Add only-labels parameter to limit automated issue closure to bugs only Co-authored-by: lstein <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: lstein <[email protected]> * fix(multiuser): Isolate client state per user to prevent data leakage (#40) * Implement per-user client state storage to fix multiuser leakage Co-authored-by: lstein <[email protected]> * Fix: Make authentication optional for client_state endpoints to support single-user mode Co-authored-by: lstein <[email protected]> * Clear params state on logout/login to prevent user data leakage Co-authored-by: lstein <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: lstein <[email protected]> * Initial plan * chore(backend) ruff & typegen * Fix real-time badge updates by invalidating SessionQueueStatus on queue events Co-authored-by: lstein <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: lstein <[email protected]> Co-authored-by: Weblate (bot) <[email protected]> Co-authored-by: Lincoln Stein <[email protected]>
Co-authored-by: lstein <[email protected]>
Co-authored-by: lstein <[email protected]>
Co-authored-by: lstein <[email protected]>
Co-authored-by: lstein <[email protected]>
Auth tests were failing because the login and setup endpoints now return 403 when multiuser mode is disabled (the default). Updated test fixtures to enable multiuser mode for all auth-related tests. Co-authored-by: lstein <[email protected]>
When multiuser mode is disabled, the LoginPage and AdministratorSetup components now redirect to /app instead of showing the login/setup forms. This prevents users from being stuck on the login page after browser refresh in single-user mode. Co-authored-by: lstein <[email protected]>
Show loading spinner instead of login/setup forms when multiuser mode is disabled or when redirecting is about to happen. This prevents the unattractive flash of the login dialog when refreshing the page in single-user mode. Co-authored-by: lstein <[email protected]>
Created three user management scripts in the scripts/ directory: - useradd.py (renamed from add_user.py) - add users with admin privileges - userdel.py - delete users by email address with confirmation - usermod.py - modify user details (name, password, admin status) All scripts support both CLI and interactive modes for flexibility. Co-authored-by: lstein <[email protected]>
Created scripts/userlist.py to display all users in the database. Supports: - Table format (default): Shows ID, email, display name, admin status, and active status - JSON format (--json flag): Outputs user data as JSON for scripting/automation Example usage: python scripts/userlist.py # Table view python scripts/userlist.py --json # JSON output Co-authored-by: lstein <[email protected]>
Created AdminUserOrDefault dependency that allows admin operations to work without authentication in single-user mode while requiring admin privileges in multiuser mode. Updated model_manager router to use AdminUserOrDefault for update_model_record, update_model_image, and reidentify_model endpoints. This fixes the "Missing authentication credentials" error when saving model default settings in single-user mode. Co-authored-by: lstein <[email protected]>
Reverted model_manager.py to state before commit c47af8f and reapplied AdminUserOrDefault correctly. Changed from `_: AdminUser` to `current_admin: AdminUserOrDefault` using the same pattern as boards.py (`current_user: CurrentUserOrDefault`). This fixes all 422 errors in single-user mode while maintaining proper admin authentication in multiuser mode. Co-authored-by: lstein <[email protected]>
06b172f to
32d6d15
Compare
|
This branch got messed up by rebasing. Changes were cherry-picked into PR #50 |
Summary
Implements Phase 8 of the multiuser implementation plan: comprehensive documentation for end users, administrators, and API consumers. Updated to reflect recent implementation changes including single-user mode support and CLI-based user management.
Documentation Created
User Guide (
docs/multiuser/user_guide.md) - 428 linesAdministrator Guide (
docs/multiuser/admin_guide.md) - 840 linesmultiuseroption (true/false/absent)API Guide (
docs/multiuser/api_guide.md) - 1,142 linesKey Updates (Based on Recent Implementation Changes)
Configuration:
multiuser: true- Multi-user mode (authentication required)multiuser: falseor absent - Single-user mode (no authentication)Single-User Mode:
Mode Switching:
User Management:
useradd.py,userdel.py,usermod.py,userlist.pyExample adaptive Python client:
Documentation Site Integration
mkdocs.ymlCoverage
All Phase 8 requirements complete with updates for latest implementation:
Total: 2,997 lines, ~8,500 words, 55+ code examples, 20+ troubleshooting scenarios
Related Issues / Discussions
N/A - Implements documented Phase 8 of multiuser implementation plan
QA Instructions
Documentation validation:
Build documentation site to verify navigation:
Merge Plan
No special merge considerations. Documentation updates with minimal config change (mkdocs.yml navigation section).
Checklist
What's Newcopy (if doing a release after this PR)Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.