# Release v1.27.0

Released: 2026-03-03

## 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
- PostgreSQL status in system health details endpoint (`/api/system/health/details`) with warnings when DB is disconnected or schema missing
- Backend status banners on CoS Memory and Brain Memory pages showing file-fallback warning with retry button
- `getMemoryBackendStatus` API client helper
- Brain→Memory bridge: mirrors brain captures (projects, ideas, admin, journal, digests, reviews, people) into CoS memory system with embeddings for semantic search by agents
- Source filter toggle (All/CoS/Brain) and source badges on Memory tab
- `appId` filtering on memory list and search APIs
- Migration script for existing brain data (`server/scripts/migrateBrainToMemories.js`)
- Brain Graph tab (`/brain/graph`): 3D force-directed visualization of brain entities with semantic similarity, shared-tag, and linked edges; type filter checkboxes, text search, detail panel
- Shared graph simulation library (`client/src/lib/graphSimulation.js`) extracted from CoS MemoryGraph
- `POST /api/brain/sync` endpoint to trigger brain→memory sync from the UI
- Sync Now button on Brain Graph no-embeddings banner
- Brain sidebar sub-navigation with routable children for all Brain tabs

## Changed

- `setup-db.js` now shows platform-specific Docker install/start instructions and prompts to continue when Docker is unavailable (TTY only; CI/piped scripts keep silent behavior)
- Setup scripts now show `npm start` as the primary production command alongside `npm run pm2:start`
- Removed npm workspaces for exFAT filesystem compatibility; sub-packages install independently
- Cross-platform command chaining in start script (replaced `;` with `&&`)

## Fixed

- Brain Memory tag input now allows typing commas (stores raw string, splits to array on save)
- Allow 0% ABV custom drinks by checking empty string instead of falsy
- Numerous hardening fixes across auto-update system: atomic writes, mutex-protected state, NaN guards, stale lock recovery, EPIPE guards on detached child processes, 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.0
