# Release v1.27.5

Released: 2026-03-04

## Added

- **Drag-and-drop Kanban board** for JIRA sprint tickets — drag tickets between columns to transition status, with optimistic UI updates and in-flight disable guards
- **Auto-update system** — GitHub release checking with update notification toasts, one-click update execution, progress polling, migration runner, and PM2 restart; includes `portos-update.sh` script and Update tab on app detail view
- **POST (Power On Self Test)** — cognitive self-test system with configurable drill types (mental math powers/multiplication, sequence recall), timed sessions, history tracking, and server-side answer verification
- **Alcohol tracker CRUD** — custom drink buttons with name/ABV/volume/emoji, Modelo Especial default, daily log with add/edit/remove
- **Resilient dependency installation** — retry logic for npm installs with critical package verification per workspace
- **Federation probe hardening** — version tracking on peers, sanitized peer names, `execFileSync` for cross-platform safety
- PostgreSQL status in system health details endpoint (`/api/system/health/details`)
- Backend status banners on CoS Memory and Brain Memory pages with retry button
- Brain-to-Memory bridge: mirrors brain captures into CoS memory system with embeddings for semantic search
- Source filter toggle (All/CoS/Brain) and source badges on Memory tab
- Brain Graph tab (`/brain/graph`): 3D force-directed visualization of brain entities
- `POST /api/brain/sync` endpoint to trigger brain-to-memory sync from the UI
- Brain sidebar sub-navigation with routable children

## Changed

- `setup-db.js` now shows platform-specific Docker install/start instructions
- Setup scripts now show `npm start` as the primary production command
- Removed npm workspaces for exFAT filesystem compatibility
- Cross-platform command chaining in start script (replaced `;` with `&&`)
- OS-agnostic paths and retry logic ported to `update.ps1`

## Fixed

- Federation probe endpoint fix, sanitized peer names, version tracking on peers
- Corrupted JSON guards on `loadCustomDrinks`, `loadSessions`, and `loadDailyLog`
- Atomic update lock, strict index parsing, negative index guard in update system
- Full prerelease preservation in semver compare, atomic update marker writes
- Reject unparseable prompts in `scoreDrill`
- Missing `onTicketsChange` prop, `useEffect` dependency fix in Kanban board
- Allow 0% ABV custom drinks by checking empty string instead of falsy
- Brain Memory tag input now allows typing commas
- Guard `rmSync` cleanup, add pm2 to critical package checks
- Numerous hardening fixes: NaN guards, stale lock recovery, EPIPE guards, idempotent socket setup

## Removed

- `.npmrc` `install-links` override (caused Windows EISDIR errors)

## Full Changelog

**Full Diff**: https://github.com/atomantic/PortOS/compare/v1.26.0...v1.27.5
