Skip to content

feat: role-based dashboards, security overhaul, and UI enhancements#2

Merged
cranknet merged 0 commit into
mainfrom
feature/review-and-recommit
Apr 24, 2026
Merged

feat: role-based dashboards, security overhaul, and UI enhancements#2
cranknet merged 0 commit into
mainfrom
feature/review-and-recommit

Conversation

@cranknet
Copy link
Copy Markdown
Owner

Summary

  • Security & Auth: RBAC middleware, route security config, crypto utils, and role-based access control
  • Dashboard: Role-based dashboard routes, service, time-range utils, and SSE events
  • DB: Shop timezone field added to settings with migration
  • Profile: Redesigned profile page with sidebar, forms, password management, and session handling
  • Jobs: Batch actions, enhanced filters, photo improvements, status popover, intake modal refactored into modular sub-components
  • Parts & Repairs: Enhanced modals, delete dialog, improved filtering and mobile cards
  • Notifications: New notifications page
  • Infra: Build config updates, Docker removal, CI workflow
  • i18n: Translation keys updated for all new features
  • Agent skills: Configuration files for AI-powered development skills

Commits (14)

  1. chore: add agent skills configuration
  2. feat(db): add shop timezone field to settings
  3. feat(security): add RBAC middleware, route security config, and crypto utils
  4. feat(dashboard): add role-based dashboard routes, service, and time-range utils
  5. chore: update infra, config, build tooling, and remove Docker
  6. feat(ui): add shared components (toast, switch, confirm-discard) and hooks
  7. feat(profile): redesign profile page with sidebar, forms, and session management
  8. refactor(jobs): split intake modal into modular sub-components
  9. feat(jobs): add batch actions, enhanced filters, photos, and status popover
  10. feat(parts-repairs): enhance modals, add delete dialog, and improve filtering
  11. feat(notifications): add notifications page
  12. feat(i18n): update translation keys for new features
  13. refactor(server): update services for RBAC, timezone, and receipt improvements
  14. refactor(ui): misc component updates for RBAC, mobile nav, and layout
  15. docs: add planning docs for job label printing and role-based dashboards

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

Important

Review skipped

Too many files!

This PR contains 214 files, which is 64 over the limit of 150. Please upgrade to Pro or Pro Plus to get higher limits.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Free

Run ID: 90e053ab-a6f3-4732-ad8f-c2a608fd51e6

📥 Commits

Reviewing files that changed from the base of the PR and between 20bd5e9 and 1ea18fe.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (214)
  • .agents/skills/adapt/SKILL.md
  • .agents/skills/animate/SKILL.md
  • .agents/skills/audit/SKILL.md
  • .agents/skills/bolder/SKILL.md
  • .agents/skills/clarify/SKILL.md
  • .agents/skills/code-review/SKILL.md
  • .agents/skills/colorize/SKILL.md
  • .agents/skills/critique/SKILL.md
  • .agents/skills/critique/reference/cognitive-load.md
  • .agents/skills/critique/reference/heuristics-scoring.md
  • .agents/skills/critique/reference/personas.md
  • .agents/skills/delight/SKILL.md
  • .agents/skills/distill/SKILL.md
  • .agents/skills/impeccable/SKILL.md
  • .agents/skills/impeccable/reference/cognitive-load.md
  • .agents/skills/impeccable/reference/color-and-contrast.md
  • .agents/skills/impeccable/reference/craft.md
  • .agents/skills/impeccable/reference/extract.md
  • .agents/skills/impeccable/reference/heuristics-scoring.md
  • .agents/skills/impeccable/reference/interaction-design.md
  • .agents/skills/impeccable/reference/motion-design.md
  • .agents/skills/impeccable/reference/personas.md
  • .agents/skills/impeccable/reference/responsive-design.md
  • .agents/skills/impeccable/reference/spatial-design.md
  • .agents/skills/impeccable/reference/typography.md
  • .agents/skills/impeccable/reference/ux-writing.md
  • .agents/skills/impeccable/scripts/cleanup-deprecated.mjs
  • .agents/skills/layout/SKILL.md
  • .agents/skills/optimize/SKILL.md
  • .agents/skills/overdrive/SKILL.md
  • .agents/skills/polish/SKILL.md
  • .agents/skills/quieter/SKILL.md
  • .agents/skills/shape/SKILL.md
  • .agents/skills/typeset/SKILL.md
  • .claude/skills/adapt
  • .claude/skills/animate
  • .claude/skills/audit
  • .claude/skills/bolder
  • .claude/skills/clarify
  • .claude/skills/colorize
  • .claude/skills/critique
  • .claude/skills/delight
  • .claude/skills/distill
  • .claude/skills/impeccable
  • .claude/skills/layout
  • .claude/skills/optimize
  • .claude/skills/overdrive
  • .claude/skills/polish
  • .claude/skills/quieter
  • .claude/skills/shape
  • .claude/skills/typeset
  • .dockerignore
  • .env.example
  • .gitignore
  • AGENTS.md
  • CLAUDE.md
  • GEMINI.md
  • capacitor.config.ts
  • docker-compose.yml
  • docs/superpowers/plans/2026-04-21-job-label-printing.md
  • docs/superpowers/plans/2026-04-23-role-based-dashboards.md
  • docs/superpowers/specs/2026-04-23-role-based-dashboards-design.md
  • index.html
  • opencode.json
  • package.json
  • prisma.config.ts
  • prisma/migrations/20260423014405_add_shop_timezone/migration.sql
  • prisma/schema.prisma
  • prisma/seed.ts
  • server/__tests__/dashboard-events.integration.test.ts
  • server/__tests__/dashboard-routes.test.ts
  • server/__tests__/overdue-scheduler.test.ts
  • server/__tests__/rbac-matrix.test.ts
  • server/__tests__/warranty-alert.test.ts
  • server/config/env.ts
  • server/config/route-security.ts
  • server/index.ts
  • server/jobs/overdue-scheduler.ts
  • server/lib/__tests__/dashboard-events.test.ts
  • server/lib/auth.ts
  • server/lib/crypto.ts
  • server/lib/dashboard-events.ts
  • server/middlewares/__tests__/dashboard-scope.test.ts
  • server/middlewares/__tests__/require-roles.test.ts
  • server/middlewares/dashboard-scope.ts
  • server/middlewares/require-roles.ts
  • server/plugins/auth.ts
  • server/plugins/prisma.ts
  • server/plugins/security.ts
  • server/routes/dashboard.ts
  • server/routes/jobs.ts
  • server/routes/parts.ts
  • server/routes/receipts.ts
  • server/routes/repairs.ts
  • server/routes/users.ts
  • server/services/__tests__/customers.service.test.ts
  • server/services/__tests__/job-notes.service.test.ts
  • server/services/__tests__/job-parts.service.test.ts
  • server/services/__tests__/job-repairs.service.test.ts
  • server/services/__tests__/job.service.test.ts
  • server/services/__tests__/parts-catalog.service.test.ts
  • server/services/__tests__/receipt.service.test.ts
  • server/services/__tests__/repair-catalog.service.test.ts
  • server/services/__tests__/settings.service.test.ts
  • server/services/audit.service.ts
  • server/services/avatar.service.ts
  • server/services/customers.service.ts
  • server/services/dashboard.service.ts
  • server/services/job-notes.service.ts
  • server/services/job-parts.service.ts
  • server/services/job-photos.service.ts
  • server/services/job-repairs.service.ts
  • server/services/job-waiting-parts.service.ts
  • server/services/job.service.ts
  • server/services/parts-catalog.service.ts
  • server/services/receipt.service.ts
  • server/services/repair-catalog.service.ts
  • server/services/settings.service.ts
  • server/utils/__tests__/time-range.test.ts
  • server/utils/job-code.ts
  • server/utils/time-range.ts
  • shared/types/dashboard.ts
  • shared/types/index.ts
  • skills-lock.json
  • src/app.css
  • src/app.tsx
  • src/components/modules/bottom-nav.tsx
  • src/components/modules/customers/edit-customer-dialog.tsx
  • src/components/modules/dashboard-layout.tsx
  • src/components/modules/jobs/__tests__/add-part-dialog.test.tsx
  • src/components/modules/jobs/__tests__/job-actions-menu.test.tsx
  • src/components/modules/jobs/__tests__/job-parts-section.test.tsx
  • src/components/modules/jobs/add-part-dialog.tsx
  • src/components/modules/jobs/batch-action-bar.tsx
  • src/components/modules/jobs/cost-summary.tsx
  • src/components/modules/jobs/filters.tsx
  • src/components/modules/jobs/intake-modal.tsx
  • src/components/modules/jobs/intake-modal/customer-search-dropdown.tsx
  • src/components/modules/jobs/intake-modal/hooks.ts
  • src/components/modules/jobs/intake-modal/index.tsx
  • src/components/modules/jobs/intake-modal/modal-footer.tsx
  • src/components/modules/jobs/intake-modal/photo-upload-zone.tsx
  • src/components/modules/jobs/intake-modal/repair-services-section.tsx
  • src/components/modules/jobs/intake-modal/step-1-content.tsx
  • src/components/modules/jobs/intake-modal/step-2-content.tsx
  • src/components/modules/jobs/intake-modal/types.ts
  • src/components/modules/jobs/intake-modal/use-intake-modal.ts
  • src/components/modules/jobs/job-actions-menu.tsx
  • src/components/modules/jobs/job-cancel-dialog.tsx
  • src/components/modules/jobs/job-note-dialog.tsx
  • src/components/modules/jobs/job-parts-section.tsx
  • src/components/modules/jobs/job-photos-section.tsx
  • src/components/modules/jobs/job-repairs-section.tsx
  • src/components/modules/jobs/jobs-table.tsx
  • src/components/modules/jobs/metric-card.tsx
  • src/components/modules/jobs/status-counter.tsx
  • src/components/modules/jobs/status-history-timeline.tsx
  • src/components/modules/jobs/status-popover.tsx
  • src/components/modules/jobs/technician-select.tsx
  • src/components/modules/parts/add-part-modal.tsx
  • src/components/modules/profile/activity-timeline.tsx
  • src/components/modules/profile/password-form.tsx
  • src/components/modules/profile/personal-form.tsx
  • src/components/modules/profile/personal-spec-sheet.tsx
  • src/components/modules/profile/profile-sidebar.tsx
  • src/components/modules/profile/profile-tab-content.tsx
  • src/components/modules/profile/session-button.tsx
  • src/components/modules/profile/sessions-modal.tsx
  • src/components/modules/profile/shared.ts
  • src/components/modules/repairs/add-repair-modal.tsx
  • src/components/modules/repairs/ai-pricing-callout.tsx
  • src/components/modules/repairs/category-health.tsx
  • src/components/modules/repairs/delete-repair-dialog.tsx
  • src/components/modules/repairs/repair-filters.tsx
  • src/components/modules/repairs/repair-mobile-card.tsx
  • src/components/modules/repairs/repair-table.tsx
  • src/components/modules/sidebar.tsx
  • src/components/modules/top-bar.tsx
  • src/components/toast-container.tsx
  • src/components/ui/__tests__/input.test.tsx
  • src/components/ui/__tests__/select.test.tsx
  • src/components/ui/button.tsx
  • src/components/ui/confirm-discard-dialog.tsx
  • src/components/ui/input.tsx
  • src/components/ui/select.tsx
  • src/components/ui/switch.tsx
  • src/hooks/use-click-outside.ts
  • src/hooks/use-debounce.ts
  • src/hooks/use-native-camera.ts
  • src/hooks/use-profile-multi-user.ts
  • src/hooks/use-technicians.ts
  • src/i18n/locales/ar.json
  • src/i18n/locales/en.json
  • src/i18n/locales/fr.json
  • src/lib/api.ts
  • src/lib/export-pdf.ts
  • src/main.tsx
  • src/pages/jobs/detail.tsx
  • src/pages/jobs/index.tsx
  • src/pages/notifications/index.tsx
  • src/pages/parts/index.tsx
  • src/pages/profile/index.tsx
  • src/pages/repairs/index.tsx
  • src/pages/tracking/index.tsx
  • src/stores/alerts.ts
  • src/stores/parts-catalog.ts
  • src/stores/repair-catalog.ts
  • src/stores/toast.ts
  • src/stores/ui.ts
  • src/stores/users.ts
  • tsconfig.json
  • vite.config.ts
  • vitest.config.ts
  • vitest.setup.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@cranknet cranknet merged commit 34f8533 into main Apr 24, 2026
1 check passed
@cranknet cranknet deleted the feature/review-and-recommit branch April 24, 2026 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant