# Release v1.41.2

Released: 2026-04-04

## Changed

- Status badges in ProcessesTab and StatusBadge now use muted translucent backgrounds (`bg-color/15`) with matching text colors instead of solid full-opacity fills, improving dark mode readability
- Extracted `agentOptionButtonClass()` helper to `cos/constants.js` for shared agent option toggle button styling; applied in ScheduleTab and AutomationTab
- Wrapped `AppOverrideRow` in `memo` to avoid unnecessary re-renders
- ScheduleTab agent option rows made fully tappable on mobile (44px touch targets, whole-row click area)
- Scheduler now synthesizes cron expression from `scheduledTime` + `interval` instead of post-hoc tolerance hack, eliminating drift-based day-skip bug

## Fixed

- Scheduled jobs with `scheduledTime` could drift and skip a day after accumulating small timing errors — now cron is synthesized from `scheduledTime` at compute time for exact daily/weekday scheduling
- Per-app cron scheduled tasks (e.g. `feature-ideas` at 1am) could be delayed up to `eligibleIn` ms when the next check interval was too long — improvement check now caps at 1 hour so per-app schedules are always checked on time
- CoS agents that ran but made no code changes (worktree branch had no commits vs base) now silently clean up their worktree instead of leaving a stale branch and emitting a spurious warning
- Worktree merge/PR failures now auto-spawn a recovery task so stale branches don't accumulate in managed app repos
- Task edit form now closes after a successful save (shows error toast and stays open on API failure)

## Full Changelog

**Full Diff**: https://github.com/atomantic/PortOS/compare/v1.41.1...v1.41.2
