d0112ec12e
fix: held mail analysis dialog layout + color scheme + policy context
...
- Dialog constrained to max-w-xl, max-h-85vh, overflow-y-auto (no more overflow)
- Severity uses high/medium/low with red/amber/blue (not red/yellow/green)
- Left-border accent stripe on explanation block
- 'What was already evaluated' section shows Mimecast pipeline steps per hold type
- analyzeMessage uses reasonCode for precision, detects auth codes / marketing / spam / DMARC / impersonation / malware
- Warning flag on dangerous release actions (impersonation, malware)
- Grid layout for message details instead of flex rows
2026-04-01 07:32:09 -04:00
9952365df1
feat: held mail analysis dialog + fix release check
...
- Add analyzeMessage() — context-aware explanations for DMARC/impersonation/spam/auth-code/malware holds
- Add MessageAnalysisDialog with severity icon, message details, explanation, and resolution options
- Analyze button per row opens the dialog; Release button inside dialog triggers release + closes
- Fix releaseHeldMessage(): treat HTTP 200 + empty fail[] as success (not release===true check)
- Remove action:'release' from payload (API doesn't need it)
2026-04-01 07:18:52 -04:00
a15946daf8
feat: held mail release button + per-tenant fetch
...
- Add releaseHeldMessage() to MimecastClient (POST /api/gateway/hold-release)
- Add POST /api/mimecast/held/release route
- HeldMailTab: tenant selector before load (defaults to Wulf), only fetches selected tenant
- Release button per row with spinner + optimistic removal on success
- Error shown inline under Release button if release fails
2026-04-01 07:09:42 -04:00
2f88be9ab3
fix: held mail route force-dynamic, 403 fallback, favicon 404s, error display
...
- export const dynamic = 'force-dynamic' on /api/mimecast/held to prevent Next.js caching
- Add AbortController timeout (20s) per request in MimecastClient.request()
- getHeldMessages: 403 fallback without admin:true flag for tenants lacking permission
- Reduce maxMessages default to 100 (10 pages) to stay within route timeout
- Show 'permission denied' tooltip in tenant badge for 403 errors
- Surface HTTP errors in HeldMailTab instead of silently failing
- Add missing favicons: sentinelone.ico, itglue.ico, mimecast.ico
2026-04-01 06:52:58 -04:00
fcdec8e38b
feat: Mimecast multi-tenant held mail viewer
...
- migration 062: mimecast_tenants table (company_id, client_id/secret, account_code)
- Seed Wulf (CUSA13A95) + Seubert (CUSA96A181) tenants
- MimecastClient.getHeldMessages(): full pagination via meta.pagination.next cursor
(API always returns 10/page regardless of pageSize param, totalCount in meta)
- getMimecastClientForTenant() factory for per-tenant instantiation
- GET /api/mimecast/held?tenantId=&recipient= — fetches all tenants in parallel,
merges + sorts by date, returns per-tenant counts + combined messages[]
- Held Mail tab on /admin/sync/mimecast (on-demand load, recipient filter,
tenant badges, policy filter dropdown, DMARC/impersonation highlighted red)
2026-03-31 22:38:22 -04:00
a98c0daf15
feat: classification labels in data browser + kiosk recurring revenue filter
...
- data-browser/companies: resolve classification picklist IDs to labels in
table column and detail modal; also added to DetailModal COMPANY_GROUPS
- DetailModal: add 'classification' FieldType with color-coded badge map
- kiosk stats + activity: switch from label-based exclusion to ID-based
allowlist (included_classifications). Only shows companies with
classification IN (15,16,17,18,203,205,206,207,202,5,12)
= managed service / recurring revenue tiers only
2026-03-30 14:56:02 -04:00
5f0fbb4734
feat: complete companies field sync — 4 missing columns + classification mapping
...
- Migration 060: add bill_to_company_location_id, impersonator_creator_resource_id,
invoice_non_contract_items_to_parent_company, quote_email_message_id
- entity-mapper: mapCompany() now maps all 57 Autotask API fields incl. classification
- autotask.ts: Company interface expanded to cover all API fields
- data-browser/companies: add Classification column + sort to table;
expand detail modal with classification, category, owner, territory, market_segment,
parent_company, create_date
2026-03-27 12:22:53 -04:00
5f4e326804
feat: Separate bypass vs disabled users in Duo UI
...
Bypass = security risk (MFA not enforced) — shown in red, expandable panel
Disabled = locked out, no threat — shown in muted gray, separate expandable panel
- Split /api/duo/status counts into bypass and disabled separately
- /api/duo/users/flagged returns { bypass: [], disabled: [] } instead of flat list
- Overview card: only bypass triggers red warning icon (disabled does not)
- Detail page: two separate expandable sections with distinct severity styling
- Both sections include user, email, account name, enrolled status, last login, notes
- Covers all accounts (parent + children)
2026-03-27 11:41:52 -04:00
5037d64948
feat: Add bypass/disabled users panel to Duo sync page
...
- Created GET /api/duo/users/flagged — returns users with status bypass or disabled, joined with account name
- Clickable warning banner expands to show full user table
- Table shows: user, email, account, status badge (yellow=bypass, red=disabled), enrolled, last login, notes
- Fixed JOIN: duo_users.duo_account_id is varchar account_id, not integer id
2026-03-27 11:31:31 -04:00
72bdc6a241
feat: Add Duo Security card to /admin/sync overview + detail page
...
- Added Duo card to sync overview grid (category: 2FA/MFA, green)
- Shows accounts, users, phones, auth logs counts + bypass/disabled warning
- Created /admin/sync/duo detail page with:
- Stat cards (accounts, users, phones, auth logs, groups, integrations)
- Parent account summary
- Child accounts table with user counts, matched company, sync time
- Sync Now button with polling for completion
- Created GET /api/duo/status endpoint (counts + last sync + bypass count)
- Added duo.ico logo
2026-03-27 11:14:49 -04:00
25bb70cfa6
feat: Mimecast email integration — message logs, threat events, 120d retention, admin UI
2026-03-17 16:23:47 -04:00
b98c67482a
feat: QuickBooks Online integration
...
- Add QBO OAuth2 client with token refresh (lib/services/qbo-client.ts)
- Add QBO sync service for invoices, payments, deposits, purchases, journal entries, reports (lib/services/qbo-sync-service.ts)
- Add QBO types (lib/types/qbo.ts)
- Add API routes: /api/qbo/auth, /api/qbo/sync, /api/qbo/disconnect
- Add /admin/qbo status and sync management page
- Add legal pages: /legal/eula, /legal/privacy (Intuit app assessment)
- Add QBO nav link under Admin
- Fix reports: remove invalid summarize_column_by, add accounting_method from Preferences API, add showrows=all&showcols=all
- Add CashFlow report type alongside P&L and BalanceSheet
- Add NoReportData check to skip empty report months
- Add intuit_tid capture in error messages
- Add redirect: follow for cluster routing
- Migration 051: qbo_tokens, qbo_invoices, qbo_payments, qbo_deposits, qbo_transactions, qbo_reports tables
Also includes earlier work:
- Ping flap suppression pipeline step
- Ticket digest reports with LLM analysis
- Zabbix WAN monitor and gap analysis
- Kiosk is_deleted filter fixes
- Datto RMM ping target enrichment
- Entity sync soft-delete detection
2026-03-17 07:39:55 -04:00
c518eefdb2
feat: Morning NOC Summary adaptive card for Teams
...
- Add MorningSummaryService with Zabbix aggregation and adaptive card builder
- Add webhook delivery system with Teams incoming webhooks
- Add admin UI at /admin/morning-summary for webhook/config management
- Add API routes: /send, /test, /webhooks, /webhooks/[id], /config, /history
- Register morning-summary cron job in SyncScheduler (Mon-Fri 6:30 AM)
- Add outages_only filter (Unavailable triggers only)
- Fix host resolution: use getTriggerEnabledHosts to exclude disabled hosts
- Fix resolved events: event.get value:1 scoped to window with r_eventid filter
- Remove emojis from fact rows and section headers in card
- Remove Open Zabbix button (duplicate of View Problems)
- Add migrations: morning_summary_config + morning_summaries tables
- Add outages_only column to morning_summary_config
2026-03-11 09:34:51 -04:00
19605f82aa
feat: IT Glue integration, workflow engine, pipelines, Zabbix WAN, notification channels, backup status UI improvements, nav alignment fixes
2026-02-27 14:52:14 -05:00
ed6c4a8b65
feat: Add SentinelOne integration
...
- Add SentinelOne API client (lib/services/sentinelone-client.ts)
- Paginated fetching for sites, agents, threats
- JWT token auth via S1_API_URL / S1_API_TOKEN env vars
- Add SentinelOne sync service (lib/services/sentinelone-sync-service.ts)
- Full sync: sites, agents, threats into s1_* tables
- Sync history tracking with per-entity results
- Add DB migration 038: s1_sites, s1_agents, s1_threats,
s1_company_mappings, s1_sync_history tables
- Add API routes:
- POST/GET /api/sentinelone/sync
- GET/POST/DELETE /api/sentinelone/company-mappings
- GET /api/sentinelone/coverage (fixed Cartesian product bug)
- Add UI pages:
- /admin/sync/sentinelone — sync admin with history + stats
- /sentinelone/coverage — AV coverage report per site
- /sentinelone/mappings — map S1 sites to Autotask companies
- Wire SentinelOne into admin sync overview card grid
- Add SentinelOne Sync to app navigation
- Fix docker-compose: remove explicit S1 env var entries that
were overwriting env_file values with empty strings
2026-02-27 05:31:31 -05:00
d7c3dc7168
feat: Autotask webhook integration, TicketNotes, Datto RMM, workflow engine, Veeam agents/alarms, AI triage, misc improvements
2026-02-20 10:28:15 -05:00
root
9f912aed24
feat: add authentication, user management, and admin features
...
Added comprehensive authentication and authorization system:
Authentication System:
- Better Auth integration with session management
- Login/logout pages and API routes
- Middleware for route protection
- Auth utilities and client libraries
User Management:
- User list, detail, and invite pages
- User API endpoints (CRUD operations)
- Session management for users
- Profile settings page
Role-Based Access Control:
- Role management pages (list, create, edit)
- Permission system with granular controls
- Role assignment to users
- Role API endpoints
Admin Features:
- Audit log page for tracking system events
- Admin settings page
- Audit service for logging user actions
Additional Features:
- Quotes management pages and components
- SalesBldr API integration
- Email service for notifications
Configuration & Documentation:
- Updated docker-compose.yml
- MCP server configuration (mcp.json)
- CVE-2025-55182 security review documentation
- Standards guide and PRD documents
- Re-enabling authentication documentation
Database Migrations:
- 012: Auth tables (users, sessions, accounts, verifications)
- 013: Role tables (roles, permissions, role_permissions, user_roles)
- 014: Admin settings table
UI Updates:
- Updated dashboard layout
- Enhanced app layout with auth integration
2026-01-31 12:43:14 -05:00
root
7252d2cfcf
feat: add all new Resource fields to data browser detail modal
...
Updated Resources data browser page to display all 40+ fields in the
detail modal including:
- Name fields (prefix, middle initial, suffix)
- All contact information (3 email addresses, home phone)
- Employment details (payroll, accounting, internal cost)
- Location and availability
- System preferences (date/time/number formats)
- Demographics and security (gender, license, security level)
- Survey ratings
Fields are organized into logical groups with comments for clarity.
2026-01-26 14:57:43 -05:00
root
f117210c9d
feat: add scheduled sync system with admin UI
...
Implements comprehensive scheduled sync system using node-cron with
full admin interface for configuration and monitoring.
Features:
- Configurable sync schedules with cron expressions
- Enable/disable schedules without deletion
- Manual trigger for testing
- Status monitoring (last run, next run, success/failure)
- Error tracking and display
- Incremental and full sync support
- Multiple concurrent schedules
- Admin UI with schedule management
Components:
1. Sync Scheduler Service (lib/services/sync-scheduler.ts)
- node-cron integration for scheduling
- Database-backed schedule configuration
- Automatic initialization on startup
- Prevents concurrent runs of same schedule
- Calculates next run times
- Tracks execution status and errors
2. Database Schema (sync_schedules table)
- Schedule configuration storage
- Execution history tracking
- Last run status and errors
- Next run calculation
3. API Endpoints
- GET /api/sync/schedules - List all schedules
- POST /api/sync/schedules - Create schedule
- GET /api/sync/schedules/[id] - Get schedule
- PATCH /api/sync/schedules/[id] - Update schedule
- DELETE /api/sync/schedules/[id] - Delete schedule
- POST /api/sync/schedules/[id]/trigger - Manual trigger
4. Admin UI (components/admin/SyncScheduler.tsx)
- View all schedules with status
- Create/edit/delete schedules
- Enable/disable toggle
- Manual trigger button
- Cron expression presets
- Real-time status updates
- Error message display
- Next run countdown
5. Default Schedules (created on first startup, disabled)
- Daily Incremental: 2 AM daily (0 2 * * *)
- Weekly Full: 3 AM Sunday (0 3 * * 0)
Admin Interface:
- New 'Schedules' tab in sync page
- Schedule cards with status badges
- Enable/disable with play/pause button
- Manual trigger with clock button
- Edit dialog with cron presets
- Create dialog for new schedules
- Real-time status (running, next run, last run)
- Success/failure indicators
- Error message alerts
Cron Features:
- Full cron expression support
- Validation before saving
- Common presets (daily, weekly, hourly)
- Next run time calculation
- Automatic schedule restart on config change
Monitoring:
- Last run timestamp
- Next run countdown (e.g., 'in 2h 15m')
- Success/failure status with icons
- Error messages for failed syncs
- Running indicator (animated badge)
- Schedule validity check
Dependencies:
- node-cron: ^3.0.3
- @types/node-cron: ^3.0.11
UI Components:
- Alert component added (components/ui/alert.tsx)
- Integrated into sync page tabs
- Responsive design
Documentation:
- Complete guide (docs/SCHEDULED_SYNCS.md)
- Cron expression reference
- Best practices
- Troubleshooting guide
- API reference
- Database schema
Use Cases:
1. Daily incremental sync for recent changes
2. Weekly full sync for data integrity
3. Custom schedules for specific needs
4. Off-peak hour automation
5. Backup for webhook failures
Benefits:
- No manual intervention required
- Consistent data freshness
- Flexible scheduling
- Easy monitoring
- Error tracking
- Manual override available
Next Steps:
1. Restart application to initialize scheduler
2. Navigate to Admin → Sync → Schedules tab
3. Enable default schedules or create custom ones
4. Monitor first runs for success
5. Adjust schedules as needed
Files Added/Modified:
- lib/services/sync-scheduler.ts (new)
- app/api/sync/schedules/route.ts (new)
- app/api/sync/schedules/[id]/route.ts (new)
- app/api/sync/schedules/[id]/trigger/route.ts (new)
- components/admin/SyncScheduler.tsx (new)
- components/ui/alert.tsx (new)
- app/admin/sync/page.tsx (modified - added Schedules tab)
- docs/SCHEDULED_SYNCS.md (new)
- package.json (node-cron added)
2026-01-26 10:24:58 -05:00
root
f85741c993
feat: add tabs to sync page and fix pagination
...
- Separate Sync Status and Sync History into tabs with icons
- Fix pagination in sync history by adding offset parameter
- Update getSyncHistory to support offset for proper pagination
- Update API endpoint to pass offset parameter
- Previous/Next buttons now work correctly to navigate pages
This improves UX by organizing the sync page into logical sections
and enables users to browse through historical sync records.
2026-01-24 07:57:09 -05:00
root
6eee14f8af
Add comprehensive admin features and multi-system integration
...
- Add admin dashboard with sync controls and data browser
- Implement RMM, Auvik, and Addigy organization mappings
- Add chunked ticket sync with progress tracking
- Implement entity sync service with rate limiting
- Add analytics engine and performance optimizer
- Create data browser for all PSA entities
- Add navigation components and UI improvements
- Implement background processing and sync services
- Add comprehensive documentation and migration scripts
- Update configuration items with multi-system support
- Enhance contact management and purchase history
- Add issue type assignment and LLM analyzer
- Improve error handling and logging utilities
2025-11-19 14:18:16 -05:00