Skip to content

feat: Laravel queue worker manager, branded installer, robust Start All

Choose a tag to compare

@thayronarrais thayronarrais released this 09 May 19:08

Summary

  • Laravel queue worker manager. New internal/queueworker package runs
    php artisan queue:work per project with start/stop/restart, ring-buffered
    logs, and a split-button + parameters modal on the Projects page. Extra
    args (e.g. --queue=high --tries=3 --timeout=60) are persisted per
    project under Projects.QueueArgs so the modal pre-fills next time, and
    the worker is killed cleanly via taskkill /T /F on app shutdown.
  • Actionable VC++ Redistributable prompt. When PHP / MySQL / Apache
    fail to launch because the Microsoft VC++ runtime is missing, the UI
    now opens a dedicated modal with a copyable URL and a one-click
    download button instead of burying the link inside a 4-second toast or
    a non-selectable log line. Triggered from both Dashboard
    service:error events and the New Project modal create flow.
  • Robust Start All on a fresh install. Replaced the per-service loop
    in the Dashboard's Start/Stop All button with StartManagedAll /
    StopManagedAll, which refresh the FPM registry and explicitly
    start/stop every php-fpm:* worker alongside the user-visible stack.
    This fixes the case where PHP-FPM stayed STOPPED after a one-click
    bootstrap because no projects were registered yet — neededPhpVersions
    now falls back to the active PHP version when the projects list is
    empty, so nginx/apache Deps always wire to a real FPM backend.
  • Branded MSI installer. build-msi.ps1 now generates
    WixDialog.bmp (493x312) and WixBanner.bmp (493x58) from editable
    assets/banner.jpg + assets/logo.png at build time using
    System.Drawing (high-quality bicubic, cover-fit dialog, right-aligned
    logo on white banner). The two BMPs are gitignored — only the source
    art is tracked. laraenv.wxs references them via WixUIBannerBmp /
    WixUIDialogBmp.

Test plan

  • On a clean machine: install LaraEnv, run Bootstrap stack, hit
    Start All on the Dashboard — PHP-FPM card flips to RUNNING.
  • Create a Laravel project, click Queue on the row — worker
    starts, button turns green, PID is shown in the tooltip.
  • Open More → Start with parameters…, enter
    --queue=high --tries=3, Start. Stop. Reopen — args pre-fill.
  • Restart while running re-spawns the worker with the saved args.
  • On a machine without the VC++ redist installed: trigger a service
    start failure → modal opens with copy/open buttons working.
  • Build the MSI with build-msi.ps1 — installer wizard shows the
    branded dialog and progress banner.