# Release v1.22.3 - Changelog

Released: 2026-02-28

## Overview

Production PM2 process management, dual Launch buttons, and Build support.

## Features

- **Launch Dev button** — apps with a `devUiPort` now show a separate "Launch Dev" button (warning-colored) alongside the existing "Launch" button, so you can open the Vite hot-reload UI vs the production Express UI
- **Build button** — apps with a `buildCommand` show a "Build" button that triggers a production build (e.g. `npm run build`), making it easy to update the prod UI after dev work
- **`devUiPort` field** — new optional port field for the dev UI server, auto-derived from `ports.devUi` in process configs
- **`buildCommand` field** — new optional field specifying how to build the production UI, editable in both create and edit forms

## Fixes

- **PortOS `uiPort` corrected** — changed from 5555 (dev) to 5554 (production Express), with 5555 now set as `devUiPort`
- **PortOS start command** — changed from `npm run dev` to `npm start` which starts both dev and prod servers
- **`npm start` uses PM2** — production start now launches the full ecosystem via PM2 instead of a bare `node` process, so all PortOS services appear in `pm2 list` and can be managed with standard PM2 commands
- **Standardize PM2 button visibility** — button now only appears for apps that are actually missing labeled ports, and is hidden for PortOS itself since it manages its own config
- **PortOS baseline fields reconciled on load** — ensures PortOS process config stays consistent with expected baseline values
