Nexus

Changelog

2026-08-31

  • Lower diskspace-gb thresholds to 3GB/1GB and add ilogus/laravel-honeypotplus dependency

2026-08-27

  • Rename project from Manage2 to Nexus in README, config, and env example
  • Add Laravel/Filament skill library and diskspace server-monitor check
  • Add diskspace-gb server monitor check for free-space thresholds in gigabytes

2026-08-19

  • Schedule backup sync hourly instead of every ten minutes

2026-08-11

  • Sync backups from Primary-role jobs only, using the longest job window when multiple primaries match a server

2026-08-08

  • Add branded landing page with light/dark theming, feature/preview/footer components, and Cursor rule for the product-landing skill
  • Fix APP_URL mismatch by using https://nexus.test in tests, workflows, and CI config, and bump GitHub Actions to v7
  • Add TIA test-impact-analysis baseline workflow, --ci flag for CI runs, and UTC timezone handling for incident timestamps
  • Update WHM credentials label to API and upgrade dependencies (Laravel, Guzzle, Pest 5, Symfony)

2026-08-06

  • Switch api-framework dependency from local path repo to Packagist ^0.28 release
  • Add api-framework path repo and switch WHM listpkgs calls to its Whm client
  • Add WHM credentials column and filter to servers table

2026-07-31

  • Move ticket attachments to private storage with signed email URLs and rich-editor file config

2026-07-26

  • Add Backup Dashboard sync and backup-window alert suppression for CPU/Disk IO monitoring

2026-07-25

  • There are no changes to commit — the working tree is clean and there's nothing staged or unstaged to diff.
  • Add sync_vm_list toggle and manual per-hypervisor VM list sync action
  • Move Proxmox API credentials off global env config onto per-cluster records

2026-07-24

  • Simplify cluster membership to hypervisors only, using an eager-loaded relation instead of a manual union query
  • Make cluster type visibility check handle both enum and raw string values
  • Add per-cluster Proxmox API credentials with fallback and sync VM removals via digest email
  • Add multi-cluster hypervisor grouping so guest servers inherit their cluster from their hypervisor
  • Add cluster member column to clusters table with eager-loaded servers relation
  • Add multi-cluster support with server relation manager for associating and dissociating servers
  • Add multi-cluster support with Filament resource and tenant scoping

2026-07-22

  • Add WHMCS client widgets and enforce non-deferred filters/column manager across Filament tables

2026-07-20

  • Remove last incident IP column from monitored servers incidents widget
  • Clear legacy default CPU threshold duration value on servers table
  • Add API endpoint to read server CPU threshold settings
  • Add CPU threshold duration to monitored servers incidents widget

2026-07-11

  • Add Proxmox Disk IO baseline monitoring with Slack chart alerts and per-tenant enable/disable settings

2026-07-08

  • Add CPU usage chart images to Proxmox threshold Slack alerts with per-tenant enable/disable settings
  • Add time range filters and full-width sizing to CPU/Memory charts, fix default company setting key

2026-07-02

  • Add IPv6 audit page with Up?/PTR checks, sort_key/version migration, seed command for 2c0f:ef18:9fff:1::/64, and nmap IPv4/IPv6 family partitioning

2026-07-01

  • Add an IP v6 Audit page with Up?/PTR checks and a seed command for the 2c0f:ef18:9fff:1::/64 allocations from the phpIPAM export, renaming the existing page to IP v4 Audit
  • Add ip, target, pattern, resolved_at fields to server incidents and bulk create endpoint

2026-06-30

  • Support multiple PTR records per IP by storing them as newline-separated, sorted hostname lists, comparing PTR matches as sets, and flagging multi-record columns in the UI
  • Rework PTR revert action into a staging-PTR reset, allowing it for any record whose staging PTR isn't yet the pool hostname
  • Replace IPAM-based PTR checks with direct DNS dig lookups against separate Atomic/staging authoritative nameservers, renaming related columns, jobs, and UI labels accordingly
  • Change the IP Audit "Up?" action icon from ArrowPath to Signal
  • Run the IP "Up?" check synchronously and surface diagnostics in the notification instead of queueing a background job
  • Add a sync-from-DNS PTR action for IP Audit, including a tenant-scoped artisan command, optional authoritative nameserver lookups, and supporting tests
  • Add IMAP (port 993) as a fallback responding method and add detailed debug logging to the IP responding checker
  • Add a CPU threshold API endpoint for servers, make threshold duration nullable with a configurable platform default, and update Filament/Slack/monitoring to use the new fallback logic

2026-06-29

  • Batch nmap port scans across the whole chunk instead of one-by-one, and tighten nmap timing flags for faster probing
  • Add an excludeFreePool scope so the "Show free IPs" filter excludes free-pool IPs when set to No
  • Add nmap fallback for port probing, add a sortable WHMCS status column to IP Audit, and drop status from the description label.
  • Hide the Filters header on above-content tables and reorder the Up? filter options
  • Add Up? select filter and a revert-PTR-to-pool action for IP Audit
  • Replace checks_excluded with a free-pool detection scope, add WHMCS description/search column, PTR obfuscation action, and table search/filter improvements on the IP Audit page
  • Parse fping's verbose batch output format and dedupe results from stderr/stdout
  • Simplify Up? column labels and show the responding method inline instead of in a tooltip
  • Restrict Horizon dashboard access to super admins and require authentication
  • Add IpAddress::ptrMatch() to highlight matching PTR records in green on the IP Audit table
  • Add IP Audit page with WHMCS billing sync, PTR resolution via DNS/IPAM, and Up? responding checks
  • Update guzzlehttp/guzzle dependency to 7.13.0
  • Rename server incident IP field to source, add structured payment methods, and integrate Scramble API docs with IP-gated access
  • Use latestIncident relation for last-incident timestamp to fix timezone handling, replacing the manual UTC-parsing helper
  • Fix CPU last-read timestamp handling to avoid timezone misinterpretation and switch the column to a plain datetime
  • Replace WHMCS package client with direct API calls and fix VM sync to match servers by name across tenants, including soft-deleted ones
  • Add Proxmox CPU threshold monitoring with PRTG integration and server incident tracking

2026-06-20

  • Add Sanctum-backed API order submission with WHMCS forwarding, user management, and impersonation to the admin Filament panel

2026-06-17

  • Add passkey (WebAuthn) and Google OAuth authentication to the admin Filament panel
  • Add feature gating (Laravel Pennant) and client-visibility controls for admin panels, locations, and server types across Filament resources
  • Add tenant self-registration with email verification and onboarding gating to the admin Filament panel
  • Update dependencies (composer, npm) and rebuild Filament/welcome page assets, removing the unused pull-db.sh script

2026-06-11

  • Send TicketClosed notification only to the relevant requester based on ticket origin

2026-05-05

  • Ignore .pull-db.conf configuration file
  • Send TicketClosed mail to both from_email and to_email recipients and shorten close action labels
  • Add CloseTicketAction, TicketObserver, and TicketClosed mail for ticket closure workflow

2026-05-04

  • Remove debug output statements from TicketTest
  • Replace php-imap/php-imap with webklex/laravel-imap and update IMAP client integration throughout email services
  • Fix plan boundary detection to match exact "plan name" key instead of any key containing "name"

2026-05-01

  • Scope plan warning message to WHM/cPanel servers only
  • Add backup job service layer with Virtualmin and cPanel JetBackup providers
  • Remove Example model and Filament resource scaffolding
  • Add Example model with tenant relationship and factory support
  • Refactor ticket and server resources to extract reusable form/table schema classes and add WHM API key support with cPanel plan provider
  • Add pagination options to sources table
  • Show admin panel version as hint in server form
  • Add BACKLOG.md with IMAP migration notes and known failing test
  • Upgrade Node.js to v24 and remove npm cache in CI workflow
  • Add version tracking for admin panels via SSH cPanel version check

2026-04-30

  • Remove package-lock.json from version control

2026-04-29

  • Add Virtualmin plan retrieval service with Filament UI integration

2026-04-18

  • Rewrite pull-db.sh with confirmation prompt, timestamped backups, error handling, and elapsed time reporting
  • Add IMAP email fetching with FetchEmails command, department mailbox config, and tests
  • Remove redundant per-source backup schedules and add troubleshooting docs

2026-04-17

  • Add ScheduleCheck to spatie/laravel-health checks
  • Add spatie/laravel-health with Redis, queue backlog, and Horizon checks

2026-04-01

  • Replace whatsapptwilio.com with whatsappslack.com in backup schedule

2026-03-31

  • Make healthy toggle read-only in SourceResource form
  • Add sortable columns and default sort to SourceResource, add openbank-api.com backup and sort backup schedules alphabetically

2026-03-28

  • Update GitHub Actions workflow to use PHP 8.5
  • Comment out deprecated MYSQL_ATTR_SSL_CA option in database config for PHP 8.5

2026-03-27

  • Upgrade to Laravel 13, PHP 8.5, and update Symfony 8, Flux, Livewire, and other dependencies
  • Improve SSH config audit failure messages with permission-denied detection and unit tests

2026-03-24

  • Add Flare config, enable error handling, and downgrade to ^2.2
  • Add package-lock.json to gitignore after Forge deployment issues
  • Add ServiceCheck factory, fix dot-key config resolution, and add monitored services tests
  • Upgrade dependencies including Filament v5.4.1, Pest v4, laravel/tinker v3, spatie/laravel-backup v10, and rename pull-dev-db.sh to pull-db.sh

2026-02-21

  • Add Laravel Boost config, skills, MCP setup, drive migration, and Filament server resource updates

2026-01-10

  • Upgrade both npm and composer

2025-12-11

  • Add imunify-antivirus checks

2025-08-18

  • More resilience when fetching name servers to report on DNS provider

2025-06-19

Ran composer update.

Changed

  • Minimised the wording on the Ticket Created email and made it clear as in-house ticket
  • On Forge changed the MAIL_FROM_NAME to 'Vander Host Technical Team' and changed it in Google Workspace from the email to a friendly name too.

Added

  • Added io_stats_collection_enabled setting and left the boilerplate one
  • MVP settings but nothing is wired yet
  • Added tenant_id to companies_table
  • Added a resource to edit companies in the CRM menu group
  • Hardcoded a seeder value for tenant_id 1 on companies

Removed

  • Removed Clients Filament resource and it's directories. It seemed pretty default and it was confusing between clients and company. Clients seems to be able to log in, but at the moment the application is more focussed on having servers attached to companies for email notifications.
  • Removed clients seeder in DatabaseSeeder.php