Files
Javier Braña ba614bddbc feat(tasks): complete task management system with Kanban, Calendar, notifications
- Add Task model with subtasks, priorities, status transitions, dates, hours
- Add Comment polymorphic model for tasks/issues/projects
- Livewire components: TaskManager (list+filters), TaskForm (modal), TaskDetail, TaskKanban (drag&drop), TaskCalendar (FullCalendar)
- TaskPolicy with permissions (view/create/edit/delete/assign/manage all)
- Notifications: assigned, status change, overdue, comment added
- Daily overdue notification job scheduled
- Dashboard widget unifies IssueTask + Task
- i18n: en/es/fr/ru (393 keys each)
- Routes, navigation, offline sync support
- 101 tests passing, Pint compliant on new files
2026-08-03 13:44:10 +02:00

113 lines
11 KiB
JSON

{
"permissions": {
"allow": [
"Bash(grep -n 'protected $fillable\\\\|protected $guarded' 'C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Models\\\\Inspection.php')",
"Bash(findstr /E \"\\\\.php$\")",
"Bash(Get-ChildItem \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Models\" -Filter \"*.php\")",
"Bash(Select-Object -ExpandProperty Name)",
"mcp__visualize__read_me",
"mcp__visualize__show_widget",
"Bash(php -l C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Livewire\\\\ProjectMap.php)",
"Bash(php -l C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Livewire\\\\LayerManager.php)",
"Bash(php -l C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Models\\\\Project.php)",
"Bash(cd /d C:\\\\xampp\\\\htdocs\\\\construprogress)",
"Bash(php -l app/Livewire/ProjectMap.php)",
"Bash(php -l app/Livewire/LayerManager.php)",
"Bash(php -l app/Models/Project.php)",
"PowerShell(Start-Process \"C:\\\\xampp\\\\xampp-control.exe\" -WindowStyle Hidden)",
"PowerShell(& \"C:\\\\xampp\\\\mysql\\\\bin\\\\mysqladmin.exe\" -u root ping 2>&1)",
"Bash(php artisan *)",
"Bash(php -l app/Models/Issue.php)",
"Bash(php -l app/Livewire/IssueManager.php)",
"Bash(php -l app/Notifications/InspectionCompletedNotification.php)",
"Bash(php -l app/Notifications/IssueReportedNotification.php)",
"Bash(php -l app/Notifications/FeatureCompletedNotification.php)",
"Bash(php -l app/Livewire/NotificationBell.php)",
"Bash(php -l app/Traits/LogsActivity.php)",
"Bash(php -l database/migrations/2026_06_16_100001_create_notifications_table.php)",
"Bash(php -l database/migrations/2026_06_16_100002_create_activity_logs_table.php)",
"Bash(php -l app/Livewire/PhaseGantt.php)",
"Bash(php -l app/Http/Controllers/ProjectReportController.php)",
"Bash(php -l routes/web.php)",
"PowerShell(Set-Location C:\\\\xampp\\\\htdocs\\\\construprogress; php artisan route:list --name=projects 2>&1 | Where-Object { $_ -notmatch \"Warning|openssl\" })",
"Bash(mkdir -p \"C:/Users/JavierBraña/.claude/projects/C--xampp-htdocs-construprogress/memory\")",
"Bash(grep -v \"//\\\\|<!--\")",
"Bash(composer show *)",
"Bash(dir \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\vendor\\\\blade-ui-kit\\\\blade-heroicons\" /s /b)",
"Bash(findstr /s \"LayerManager\" \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\tests\")",
"Bash(php -l \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Livewire\\\\CompanyView.php\")",
"Bash(php -l \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\app\\\\Models\\\\Company.php\")",
"Bash(New-Item -ItemType Directory -Force \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\resources\\\\views\\\\livewire\\\\projects\\\\partials\")",
"Bash(Out-Null)",
"Bash(Write-Host \"ok\")",
"Bash(Select-String -Path \"C:\\\\xampp\\\\htdocs\\\\construprogress\\\\resources\\\\views\\\\livewire\\\\projects\\\\project-form.blade.php\" -Pattern \"^<div>$|^</div>$\")",
"Bash(Select-Object LineNumber, Line)",
"Bash(grep -n 'function builder\\\\|function query\\\\|protected $model' vendor/rappasoft/laravel-livewire-tables/src/Traits/WithData.php)",
"Bash(Get-ChildItem -Path \"C:\\\\xampp\\\\htdocs\\\\construprogress\" -Directory -ErrorAction SilentlyContinue)",
"Bash(Select-Object Name)",
"Bash(php -r ' *)",
"Bash(grep -nP \">[^<{@]*[A-ZÁÉÍÓÚ][a-záéíóúñ]{3,}[^<{@]*<\" \"resources/views/livewire/projects/project-map-editor-tab.blade.php\" \"resources/views/dashboard.blade.php\")",
"Bash(grep -nP \">[[:space:]]*[A-ZÁÉÍÓÚ][a-záéíóúñ ]{3,}<\" resources/views/layouts/client.blade.php resources/views/welcome.blade.php resources/views/livewire/layers/layer-manager.blade.php)",
"Bash(xargs grep -l \"UpdateProfileInformation\\\\|UpdatePassword\\\\|DeleteUser\")",
"Bash(xargs grep -l \"class UpdateProfileInformationForm\\\\|class UpdatePasswordForm\\\\|class DeleteUserForm\")",
"Bash(git add *)",
"Bash(git rm *)",
"Bash(echo \".claude/worktrees/\")",
"Bash(git commit -m ' *)",
"Bash(sed -i 's/class=\"btn btn-xs btn-outline\">Ver todos</a>/class=\"btn btn-xs btn-outline\">{{ __\\('\"'\"'View all'\"'\"'\\) }}<\\\\/a>/g' resources/views/livewire/projects/project-dashboard.blade.php)",
"Bash(sed -i 's/class=\"btn btn-xs btn-outline\">Ver en mapa</a>/class=\"btn btn-xs btn-outline\">{{ __\\('\"'\"'View on map'\"'\"'\\) }}<\\\\/a>/g' resources/views/livewire/projects/project-dashboard.blade.php)",
"Bash(git checkout *)",
"Bash(git commit --amend -m '@ *)",
"Bash(git commit --amend -m 'fix: restore Rappasoft tables + fix boot errors from security commit' -m '- Restore UserTable/CompanyTable/ProjectTable usage in users, companies and projects-list pages \\(security commit had replaced them with plain HTML/DaisyUI tables, losing sorting/search/pagination/format\\) *)",
"Bash(git fetch *)",
"Bash(git rebase *)",
"Bash(git merge *)",
"Bash(git push *)",
"Bash(grep -nE \"function |public \\\\\\\\\\\\$|openIssuesCount|setActiveTab\")",
"Bash(grep -nA2 \"projects.media\")",
"Bash(php -l app/Livewire/CompanyManagement.php)",
"Bash(git commit -m 'revert: roll back to 7d854ff \\(pre-security-review state\\)' -m 'Restores all 27 files changed by the security commit \\(f8a1310\\) and later *)",
"Bash(grep -c 'public $activeTab' app/Livewire/ProjectMap.php)",
"Bash(git commit -m 'restore: bring back f8a1310 \\(security review\\) state' -m 'Restores all files to the f8a1310 security-review snapshot as requested, *)",
"Bash(git commit -m 'restore: roll back to 7d854ff \\(stable pre-security state\\)' -m 'Full restore of the 7d854ff snapshot \\(2026-06-16 18:05, before the security *)",
"Bash(grep -rnE \"^\\\\s*end\\(if|foreach|for|while|forelse|switch\\)\\\\s*$\" resources/views/)",
"Bash(git commit -m 'fix: close inline @if in company-management blade \\(bare '\\\\''endif'\\\\'' -> '\\\\''@endif'\\\\''\\)' -m 'Pre-existing bug in 7d854ff: the company type CSS-class @if block at *)",
"Bash(grep -nE \"public \\\\$|function |users|Computed\" app/Livewire/AdminUsers.php)",
"Bash(grep -nE '\\\\$this->users|\\\\$users|forelse|foreach' resources/views/livewire/admin-users.blade.php)",
"Bash(grep -nA6 \"function setActiveTab\\\\|function render\" app/Livewire/ProjectMap.php)",
"Bash(awk -F: '$1 < 340')",
"Bash(awk -F: '$1 < 345')",
"Bash(git commit -m 'feat\\(project-map\\): rework right panel per feedback' -m '1. Hide the project navigation bar \\(kept in DOM via '\\\\''hidden'\\\\'', not deleted\\) *)",
"Bash(git commit -m 'fix\\(project-map\\): null-safe feature/inspection relations in tab tables' -m 'Features and Inspections tab tables read $feature->layer->name and *)",
"Bash(git commit -m 'fix\\(project-map\\): tab content hidden by DaisyUI .tab-content \\(display:none\\)' -m 'The tab panel wrapper used class '\\\\''tab-content'\\\\'', which DaisyUI hides by *)",
"Bash(git commit -m 'fix\\(project-map\\): remove literal @if from HTML comment \\(Blade ParseError\\)' -m 'The tab-content wrapper comment contained the text '\\\\''@if'\\\\'', which Blade *)",
"Bash(git tag -a estable-mapa-ok-2026-06-17 -m 'Punto de control estable \\(2026-06-17\\): base 7d854ff + ProjectMap funcional. *)",
"Bash(git tag *)",
"Bash(grep -nE 'viewingInspection|function viewInspection|function setActiveTab|public \\\\$viewing' app/Livewire/ProjectMap.php)",
"Bash(git commit -m 'feat\\(project-map\\): edit tab redesign, table cleanup, inspection viewer, base layers' -m '1.1 Edit tab: in fullscreen the content splits into 2 columns \\(Alpine :class\\) *)",
"Bash(git commit -m 'fix\\(project-map\\): raise inspection modal z-index above map panel' -m 'The DaisyUI .modal default z-index \\(999\\) was below the phases/layers panel *)",
"Bash(git commit -m 'feat\\(project-map\\): clearer editor tabs + per-phase and per-layer visibility' -m '1. Editor tabs restyled as spaced DaisyUI buttons \\(btn-primary when active, *)",
"Bash(grep -nE \"public \\\\\\\\\\\\$|projectId|project_id|function mount|function render\" app/Livewire/ProjectForm.php)",
"Bash(grep -noE \"\\\\\\\\\\\\$[a-zA-Z_]+\" resources/views/livewire/projects/project-form.blade.php)",
"Bash(git commit -m 'fix\\(project-form\\): use $project instead of undefined $projectId in blade' -m 'project-form.blade.php referenced $projectId, but the ProjectForm component *)",
"Bash(cat resources/views/livewire/project-edit-tabs.blade.php)",
"Bash(sed -n '1,60p' resources/views/livewire/projects/partials/project-data-form.blade.php)",
"Bash(php -l app/Livewire/ProjectForm.php)",
"Bash(git commit -m 'feat\\(project-form\\): wire the rich data form \\(labels-left\\) + edit tabs' -m 'The edit/create project page used a stripped-down inline form. Rewired it *)",
"Bash(grep -nE \"public \\\\\\\\\\\\$|public function\" app/Livewire/IssueManager.php)",
"Bash(grep -noE \"\\\\\\\\\\\\$[a-zA-Z_]+|wire:click=\\\\\"[a-zA-Z_]+|wire:model[^=]*=\\\\\"[a-zA-Z_.]+\" resources/views/livewire/issues/issue-manager.blade.php)",
"Bash(git commit -m 'refactor: migrate users/companies pages to Rappasoft tables; remove unused welcome view' -m 'Point 2 \\(migrate to Rappasoft tables\\): *)",
"Bash(php -l app/Http/Controllers/ProjectController.php)",
"Bash(git commit -m 'chore: remove obsolete duplicate views/components \\(superseded code\\)' -m 'Deleted \\(all superseded, recoverable in git history\\): *)",
"Bash(git commit -m 'feat\\(issues\\): build the rich Issues screen \\(recover yesterday'\\\\''s draft\\)' -m 'Rebuilt IssueManager to match the 403-line draft view that had no companion *)",
"Bash(grep -rn \"route\\('logout'\\)\\\\|route\\(\\\\\"logout\\\\\"\\)\" resources/views app/)",
"Bash(grep -nE \"use App\\\\\\\\\\\\\\\\Http\\\\\\\\\\\\\\\\Controllers\\\\\\\\\\\\\\\\Auth|Controller::class\" routes/web.php)",
"Bash(ls app/Http/Controllers/Auth/)",
"Bash(git commit -m 'fix\\(auth\\): register Spatie role/permission middleware + add missing #[Layout] \\(fixes post-login crash\\)' -m 'Login authenticated fine but the landing page crashed \\(so it looked like *)",
"Bash(git commit -m 'feat\\(permissions\\): admin role/permission matrix + Gate::before super-admin' -m 'Phase 1 \\(additive, doesn'\\\\''t touch existing checks\\): *)",
"Bash(echo \"=== ¿hay App\\\\\\\\Models\\\\\\\\Role custom? ===\")",
"Bash(echo \"no hay \\(usa Spatie\\\\\\\\Permission\\\\\\\\Models\\\\\\\\Role\\)\")"
]
}
}