feat!: update module to be compatible with saucebase 2.0#32
Merged
Conversation
Refactor module naming and add SettingsPlugin features
feat!: Implement Settings module with profile and password management
Contributor
There was a problem hiding this comment.
Pull request overview
This PR modernizes the Settings module for Saucebase 2.0 by shifting module metadata/provider registration into composer.json, standardizing module naming, and reorganizing backend/frontend structure around src/ (PHP) and resources/js/vue/ (Vue/Inertia).
Changes:
- Moved module autoloading to
src/, registered the module service provider viacomposer.json, and removedmodule.json+ legacy providers. - Refactored module routing/navigation registration and introduced new Settings/Profile/Password controllers + request validators.
- Migrated frontend entrypoint to
resources/js/vue/app.tsand added new Inertia/Vue pages for Settings + Profile management.
Reviewed changes
Copilot reviewed 15 out of 27 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Taskfile.yml | Standardizes module name casing in tooling; adds db seed task. |
| src/Providers/SettingsServiceProvider.php | New service provider location for package discovery. |
| src/Http/Requests/UpdateProfileInfoRequest.php | Adds validation rules for profile info updates. |
| src/Http/Requests/UpdateProfileAvatarRequest.php | Adds avatar upload validation rules. |
| src/Http/Requests/UpdatePasswordRequest.php | Adds password change validation rules. |
| src/Http/Controllers/SettingsController.php | Adds Settings landing controller (Inertia render). |
| src/Http/Controllers/ProfileController.php | Adds Profile show/edit/update controllers for Inertia. |
| src/Http/Controllers/PasswordController.php | Adds password change flow + notification trigger. |
| src/Filament/SettingsPlugin.php | Adds nav group sort customization for Filament plugin. |
| src/Filament/Pages/GeneralSettings.php | Introduces placeholder Filament settings page. |
| routes/web.php | Wraps module web routes with explicit middleware groups. |
| routes/navigation.php | Switches to lazy route resolution for navigation items. |
| routes/api.php | Wraps API routes in explicit middleware groups (still uses apiResource). |
| resources/js/vue/pages/Profile/Edit.vue | Adds profile edit UI incl. avatar upload/delete UX. |
| resources/js/vue/pages/Profile/ChangePassword.vue | Adds change-password UI. |
| resources/js/vue/pages/Profile.vue | Adds profile overview + social account connections UI. |
| resources/js/vue/pages/Index.vue | Adds Settings index page UI scaffold. |
| resources/js/vue/components/PageHeader.vue | Adds module-level page header component w/ back link. |
| resources/js/vue/app.ts | New module frontend setup entry (icons + css import). |
| resources/js/app.ts | Re-exports from new resources/js/vue/app.ts entrypoint. |
| module.json | Removed legacy module manifest. |
| LICENSE | Updates copyright year. |
| composer.json | Updates autoload path/provider registration and adds package metadata. |
| CLAUDE.md | Updates module docs/testing commands and module overview. |
| app/Providers/SettingsServiceProvider.php | Removes legacy provider file under app/. |
| app/Providers/RouteServiceProvider.php | Removes legacy route service provider under app/. |
| .github/workflows/test.yml | Standardizes module name casing for CI workflow input. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+6
to
+9
| Route::middleware('api')->group(function (): void { | ||
| Route::middleware(['auth:sanctum'])->prefix('api/v1/settings')->group(function (): void { | ||
| Route::apiResource('settings', SettingsController::class, ['as' => 'api']); | ||
| }); |
Comment on lines
+7
to
+12
| /** | ||
| * Settings module setup | ||
| * Called during app initialization before mounting | ||
| * | ||
| * NOTE: Navigation registration has been moved to backend SettingsServiceProvider. | ||
| */ |
Comment on lines
+3
to
+6
| "description": "Settings module", | ||
| "type": "saucebase-module", | ||
| "license": "proprietary", | ||
| "version": "1.3.1", |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request makes several structural and configuration improvements to the Settings module, focusing on standardizing module naming, enhancing backend and frontend integration, and cleaning up legacy or redundant files. The most important changes include updating the module's autoload paths, registering the service provider in
composer.json, refactoring navigation and route registration, and removing obsolete provider files and themodule.jsonmanifest.Module structure and configuration:
composer.jsonto set the autoload path forModules\Settingstosrc/instead ofapp/, registered theSettingsServiceProvider, set the module description and version, and added"minimum-stability": "stable"for package stability. The license was also set to proprietary. [1] [2] [3]module.jsonmanifest, fully transitioning module metadata and provider registration tocomposer.json.Provider and routing cleanup:
SettingsServiceProviderandRouteServiceProviderfiles, as provider registration now occurs viacomposer.jsonand route registration is handled directly in the route files. [1] [2]routes/web.phpandroutes/api.phpto wrap route groups in appropriate middleware and closure signatures for better clarity and compatibility. [1] [2] [3]Navigation and frontend integration:
routes/navigation.phpto use lazy route resolution (passing closures instead of direct calls toroute()), improving boot-time performance and reliability. [1] [2] [3] [4]resources/js/app.tsto a newresources/js/vue/app.tsfile, and updated the entry point to re-export from the new location. [1] [2]Testing and developer tooling:
settingsfor consistency across the codebase and CI configuration. [1] [2] [3]db:seedtask for seeding the Settings module database and updated code generation and E2E test commands inTaskfile.ymlto use the lowercase module name.Other improvements:
SettingsPluginfor improved ordering in Filament navigation.LICENSE.These changes modernize the Settings module's structure, improve maintainability, and ensure consistency across backend and frontend code.