# Changelog ## Unreleased ## [1.3.4](https://github.com/greyfoundry/ursa-android/compare/v1.3.3...v1.3.4) (2026-10-17) ### Added * Open on an attention-first Home that combines every saved server from live, refreshed, or encrypted cached data, with explicit health and freshness details. * Navigate the adaptive Home, Monitors, Incidents, and Browse destinations with global resource search, monitor workspaces, saved views, and server drill-downs. * Create and edit every monitor type verified in Uptime Kuma 2.5.6, with safe browser fallback for server-owned administration that does not belong in URSA. * Clone monitors, save encrypted credential-free presets, build groups, preview bulk edits, import validated CSV/TXT rows, and copy sanitized drafts between servers. * Configure connection access profiles, per-connection cleartext policy, encrypted portable backups, destructive-action confirmation, and scoped Wear actions. * Explain effective phone alert policy, dependencies, grouped thresholds, correlated alert storms, delivery-path failures, binding repair, and alert history. * Export credential-free inventory and exact heartbeat ranges, generate coverage-aware SLA reports, and surface attention on widgets, the tile, and Wear OS. ### Changed * Verify the Socket.IO, public REST, monitor-editor, and round-trip compatibility boundary through Uptime Kuma 2.5.6. * Improve large-fleet stability, cache-first refresh behavior, accessibility, pseudo-locales, right-to-left layout, and phone/tablet system-inset ownership. * Let screenshot protection be Off, Sensitive screens only, or Always while preserving fail-closed behavior for existing installs and unread preferences. * Update the Android build to Kotlin 2.4.21 and Gradle 9.8.1, add release-like Baseline Profile and macrobenchmark infrastructure, and refresh all public guides. ### Fixed * Preserve unexposed Kuma fields across monitor edits and reject unsafe or stale mutations before they can overwrite newer server state. * Keep fleet refreshes bounded and cancellable, distinguish valid empty snapshots from incomplete loads, and retain useful encrypted offline state. * Clear all phone-app lint findings and keep both GitHub and F-Droid variants free of new static-analysis warnings. ## [1.3.3](https://github.com/greyfoundry/ursa-android/compare/v1.3.2...v1.3.3) (2026-09-20) ### Added * Create and edit Uptime Kuma 2.5.4+ SFTP monitors with password or private-key authentication, optional passphrases, and remote paths. * Publish a dedicated reproducible F-Droid APK alongside the standard phone and Wear OS release artifacts. ### Fixed * Keep paused monitors paused when their settings are edited. * Remove Play Services Wearable from the F-Droid build while retaining optional phone-to-watch pairing in the GitHub build. ## [1.3.2](https://github.com/greyfoundry/ursa-android/compare/v1.3.1...v1.3.2) (2026-09-19) ### Added * Recognize Uptime Kuma 2.5.4 SFTP monitors and safely edit their common host, port, scheduling, grouping, tag, and notification settings without removing authentication or path configuration. ### Changed * Verify Socket.IO, public REST, and monitor compatibility through Uptime Kuma 2.5.5. ## [1.3.1](https://github.com/greyfoundry/ursa-android/compare/v1.3.0...v1.3.1) (2026-09-19) ### Fixed * Request Android 17 local-network access for Tailscale MagicDNS names and the `100.64.0.0/10` peer range so direct Kuma connections can proceed. * Parse IP literals strictly so unrelated public hostnames do not trigger the broad local-network permission prompt. ## [1.3.0](https://github.com/greyfoundry/ursa-android/compare/v1.2.3...v1.3.0) (2026-09-04) ### Added * Encrypted per-server custom access headers for Pangolin, Cloudflare Access, and other reverse-proxy gates. * Monitor and maintenance management, bulk actions, groups, tags, notification assignment, and user-triggered local-service discovery. * Incident, certificate, domain, event, aggregate, and pinned-live fleet views. * Advanced filters with saved views, compact monitor rows, scoped deep links, connection help, and a manual update check. * A full Wear OS companion with dashboard, monitor detail, tile, complications, and optional same-signed phone session pairing. ### Changed * Refreshed the phone UI, responsive tablet and glance layouts, startup routing, failure guidance, and notification controls. * Updated compatibility and live verification through Uptime Kuma 2.5.3. ### Fixed * Wait for a connected Socket.IO transport before acknowledged actions and ignore a late failed transport upgrade when the authenticated socket remains connected. * Request Android 17 local-network access only when a user tests or connects to an obvious direct LAN server. ## [1.2.3](https://github.com/greyfoundry/ursa-android/compare/v1.2.2...v1.2.3) (2026-08-24) ### Bug Fixes * **security:** harden local trust boundaries ([#36](https://github.com/greyfoundry/ursa-android/issues/36)) ([c4b7658](https://github.com/greyfoundry/ursa-android/commit/c4b765800b13001559f8d70748d27bc128a4f1ad)) ## [1.2.2](https://github.com/greyfoundry/ursa-android/compare/v1.2.1...v1.2.2) (2026-08-21) ### Bug Fixes * **ci:** scope release permissions by job ([10340b7](https://github.com/greyfoundry/ursa-android/commit/10340b79c8af676933cbab3910aed34568172e2d)) * **release:** add tagged artifact recovery ([2847255](https://github.com/greyfoundry/ursa-android/commit/28472558e9bd57e3aa8da1b657c377ecbade97aa)) * **release:** declare release component ([d3b5f2f](https://github.com/greyfoundry/ursa-android/commit/d3b5f2fc7a766376a9aaba16086868ae2b9fff9b)) * **release:** remove obsolete package name option ([eaa1f98](https://github.com/greyfoundry/ursa-android/commit/eaa1f9888362f63e8c2d2a00801d8b3809ce5458)) ## [1.2.1](https://github.com/greyfoundry/ursa-android/compare/v1.2.0...v1.2.1) (2026-08-21) ### Bug Fixes * **network:** normalize Kuma 2.5 positional ids ([1c280d6](https://github.com/greyfoundry/ursa-android/commit/1c280d67c288ea297e32bff93b3d7f7621dacec4)) ## [1.2.0](https://github.com/greyfoundry/ursa-android/compare/v1.1.3...v1.2.0) (2026-07-18) ### Features * add monitor overview and paused filter ([d3a1cee](https://github.com/greyfoundry/ursa-android/commit/d3a1cee61d068fff9c3a2ea8ec39385d4a1ebb33)) * elevate monitor triage ([98b514d](https://github.com/greyfoundry/ursa-android/commit/98b514d1a1e4b826b7e9355d01b1ad476f467f3d)) * organize monitor triage ([d41ccc8](https://github.com/greyfoundry/ursa-android/commit/d41ccc859f6ddba70d9ed57abf3f812f42059876)) * refine monitor reference layout ([ea20898](https://github.com/greyfoundry/ursa-android/commit/ea208983c0603ae61811e973f238734e4325ba34)) * restore monitor attention cues ([8441507](https://github.com/greyfoundry/ursa-android/commit/84415076c80dc10d2403dc74c351e539b82aad5a)) ### Bug Fixes * clean up actionable lint warnings ([1625752](https://github.com/greyfoundry/ursa-android/commit/1625752d84bf6108a788b4827b50ed01fc664805)) * harden release workflow inputs ([5458475](https://github.com/greyfoundry/ursa-android/commit/545847541564a3d6f945a86c7ac72ad7ad9522d2)) ## [1.1.3](https://github.com/greyfoundry/ursa-android/compare/v1.1.2...v1.1.3) (2026-07-05) ### Bug Fixes * **build:** keep native .so unstripped for reproducible F-Droid builds ([01922fa](https://github.com/greyfoundry/ursa-android/commit/01922fa0d30bef050fafe33f25abedb5b7a32838)) ## [1.1.2](https://github.com/greyfoundry/ursa-android/compare/v1.1.1...v1.1.2) (2026-07-05) ### Bug Fixes * **build:** literal versionName/versionCode so F-Droid checkupdates can parse them ([e793b2e](https://github.com/greyfoundry/ursa-android/commit/e793b2ee936eae84a3d828f3100efa4b94ff481f)) ## [1.1.1](https://github.com/greyfoundry/ursa-android/compare/v1.1.0...v1.1.1) (2026-07-05) ### Bug Fixes * **build:** omit AGP dependency-metadata signing block for F-Droid ([a75ff71](https://github.com/greyfoundry/ursa-android/commit/a75ff719a85d0ab7638645883556146a6457fde6)) ## [1.1.0](https://github.com/greyfoundry/ursa-android/compare/v1.0.0...v1.1.0) (2026-07-05) ### Features * **alerts:** live foreground check + per-monitor override, shared notifier ([#1813](https://github.com/greyfoundry/ursa-android/issues/1813)) ([4948e5e](https://github.com/greyfoundry/ursa-android/commit/4948e5e3b5d371bd081d9eb6cb6f98bf8d8d1a5e)) * **alerts:** periodic background slow-response worker ([#1813](https://github.com/greyfoundry/ursa-android/issues/1813)) ([2737d3a](https://github.com/greyfoundry/ursa-android/commit/2737d3a14ac105e184b15df62af7d669b622fb78)) * **alerts:** response-time threshold evaluator + settings store ([#1813](https://github.com/greyfoundry/ursa-android/issues/1813) groundwork) ([829f336](https://github.com/greyfoundry/ursa-android/commit/829f33609ecf1af0b628ac7c45152e11ee22a793)) * **alerts:** settings toggle + response-time limit ([#1813](https://github.com/greyfoundry/ursa-android/issues/1813)) ([deba08b](https://github.com/greyfoundry/ursa-android/commit/deba08b1a132ac123870cb48ff620ae537bf2284)) * **assets:** bear app icon (adaptive + themed monochrome) + notification icon ([5c99073](https://github.com/greyfoundry/ursa-android/commit/5c99073d5229aa7bb3ddee6c2c4c232f99805c9c)) * **data:** connection storage + monitor repository ([38f76f9](https://github.com/greyfoundry/ursa-android/commit/38f76f9739f1ed81a40a21b147433557bd16d0f5)) * **m2:** encrypt credentials (Tink) + resilient reconnect ([96b0d3b](https://github.com/greyfoundry/ursa-android/commit/96b0d3bbf5288db89283d5131e7bf6a0fc9cee7e)) * **m2:** opt-in self-signed TLS trust per connection ([290bb14](https://github.com/greyfoundry/ursa-android/commit/290bb14511cf87c58dc2d8697d0a74287f504c4e)) * **m3:** push registration UI - distributor picker, endpoint, notif permission ([c77727b](https://github.com/greyfoundry/ursa-android/commit/c77727b5867ce2c827c87ec45657f6ada84ff2b8)) * **m3:** UnifiedPush receive path - PushService, webhook parser, notifications ([9f61207](https://github.com/greyfoundry/ursa-android/commit/9f61207e4d4bf9ae3c9723dfaea616609b7b43d7)) * **m4:** app shortcuts (Push, Settings) with deep-link routing ([5ead908](https://github.com/greyfoundry/ursa-android/commit/5ead90867a886784a659cba531406a70b69f8dd6)) * **m4:** biometric / device-credential app lock + settings toggle ([17a39a2](https://github.com/greyfoundry/ursa-android/commit/17a39a2c852b09d041104851190f5d5712aec67d)) * **m4:** home-screen widget (Glance) with cached up/down counts ([8926d23](https://github.com/greyfoundry/ursa-android/commit/8926d237cc2a78ef5d9bf6561c664c20eb9921ec)) * **m4:** i18n string extraction (part 1: list, login, settings, lock, status) ([16f8f1f](https://github.com/greyfoundry/ursa-android/commit/16f8f1fbbc8bfb852898022dca7aa3a8c6e9c311)) * **m4:** i18n string extraction (part 2: detail, status page, push) ([07a14fc](https://github.com/greyfoundry/ursa-android/commit/07a14fc9718ff75ed282a933e58eb31d76a2e740)) * **m4:** local TLS-expiry reminders (cached cert data + daily WorkManager) ([81be906](https://github.com/greyfoundry/ursa-android/commit/81be906892822f59325f4f39f80bb348415f77b0)) * **m4:** offline last-known monitor cache (encrypted, per-server) [2/2] ([0675e26](https://github.com/greyfoundry/ursa-android/commit/0675e26fec37e6f49595cb9e9f2717e9829f6385)) * **m4:** Pause/Resume actions on monitor notifications ([ec6261a](https://github.com/greyfoundry/ursa-android/commit/ec6261aa5e02af58606a451752a69ee1ca45c97b)) * **m4:** Quick Settings tile with cached up/down status ([8256c66](https://github.com/greyfoundry/ursa-android/commit/8256c66e1c0075a51ee09e494b78fb95ad61de9e)) * **m4:** serializable monitor snapshot model + pure codec (offline cache 1/3) ([3ebbb90](https://github.com/greyfoundry/ursa-android/commit/3ebbb90f5c3b7d30b68a4a0b2e50c1889dce10cc)) * **network:** Kuma domain models + Socket.IO client adapter ([a2a4269](https://github.com/greyfoundry/ursa-android/commit/a2a4269eebf077172b3288a1aa2aeaba9e780db5)) * **push:** report downtime duration on recovery ([#177](https://github.com/greyfoundry/ursa-android/issues/177)) ([3a67915](https://github.com/greyfoundry/ursa-android/commit/3a6791553a0207d647688e7bb2ce69b2545122f0)) * **security:** FLAG_SECURE app-wide to block screenshots/recents leakage ([bb98517](https://github.com/greyfoundry/ursa-android/commit/bb98517d87d27d82f929ab9fcfc9cab01515d94b)) * **theme:** opt-in Material You dynamic color (default keeps Kuma palette) ([5d0f44b](https://github.com/greyfoundry/ursa-android/commit/5d0f44baa7984e35406689631a2b067d1a29578f)) * **ui:** bottom navigation shell (Monitors/Notifications/Settings) + bear logo header ([8a02797](https://github.com/greyfoundry/ursa-android/commit/8a027977a51cab23bb45f7d97f29f74ffa14feba)) * **ui:** Kuma-matched theme with light/dark mode and status colors ([834907d](https://github.com/greyfoundry/ursa-android/commit/834907d79e137144b560ed4c49bcefd7f56b2c6c)) * **ui:** Kuma-style status pill badges + rounded card monitor list ([509e52f](https://github.com/greyfoundry/ursa-android/commit/509e52f6955583dc3062784fd5a060a122829ad4)) * **ui:** login screen + live monitor list ([4c22f45](https://github.com/greyfoundry/ursa-android/commit/4c22f4599e8b60544dd7b1ed16703296b740ea60)) * **ui:** monitor detail - heartbeat history + TLS cert ([ee6e218](https://github.com/greyfoundry/ursa-android/commit/ee6e218160c2c35ed5dc5d24db95d687d5ce7ebb)) * **ui:** per-monitor response-time sparklines on cards (heartbeatList capture) ([a3fe1d5](https://github.com/greyfoundry/ursa-android/commit/a3fe1d5cd3bb4665a119ae8a455f85ffecefb2f3)) * **ui:** public status-page viewer (Ktor) ([6e72617](https://github.com/greyfoundry/ursa-android/commit/6e726172728ccd375084682f2fcb43bc3d15cdea)) * **ui:** redesigned monitor cards (status circle + name/url + pill + uptime) ([a462f3f](https://github.com/greyfoundry/ursa-android/commit/a462f3f0402ca73f106e5b53b95aeb3cf0cdc9f2)) * **ui:** search + status filter in the monitor list top bar ([8666dcc](https://github.com/greyfoundry/ursa-android/commit/8666dccf8ab4dec913ea35483eaa7318ed3f7d3d)) * **ui:** selectable heartbeat range on monitor detail ([#1888](https://github.com/greyfoundry/ursa-android/issues/1888)) ([789095f](https://github.com/greyfoundry/ursa-android/commit/789095fe16b67496f00d772645c716517d8d3ea7)) * **ui:** service favicons in monitor list, status-circle fallback ([#443](https://github.com/greyfoundry/ursa-android/issues/443)) ([1d65700](https://github.com/greyfoundry/ursa-android/commit/1d6570059810caa7e19c7eb664bf05f7c1d3a56a)) * **wear:** FOSS Wear OS module + status tile skeleton (androidx tiles, no GMS) ([00f6ac2](https://github.com/greyfoundry/ursa-android/commit/00f6ac2e79cc3cef63ebe4895f5ffdddeb5cecb3)) * **wear:** live status tile - polls Kuma status page, tap to configure ([3875ac0](https://github.com/greyfoundry/ursa-android/commit/3875ac0aca64c92732073fba4494ab18f26ba215)) ### Bug Fixes * startup crash (repo init order), dark theme (day/night resources + Surface), FLAG_SECURE debug gate ([4326bca](https://github.com/greyfoundry/ursa-android/commit/4326bca25f29100629c0b6bc6947589db9bf59b2)) * **wear:** allow cleartext HTTP so plain-http Kuma status pages load ([1f85591](https://github.com/greyfoundry/ursa-android/commit/1f85591ab1f0ea06af9c307d89fa796c58366bf3)) ## [1.0.0](https://github.com/greyfoundry/ursa-android/compare/ursa-android-v0.1.0...ursa-android-v1.0.0) (2026-07-05) ### Features * **assets:** bear app icon (adaptive + themed monochrome) + notification icon ([5c99073](https://github.com/greyfoundry/ursa-android/commit/5c99073d5229aa7bb3ddee6c2c4c232f99805c9c)) * **data:** connection storage + monitor repository ([38f76f9](https://github.com/greyfoundry/ursa-android/commit/38f76f9739f1ed81a40a21b147433557bd16d0f5)) * **m2:** encrypt credentials (Tink) + resilient reconnect ([96b0d3b](https://github.com/greyfoundry/ursa-android/commit/96b0d3bbf5288db89283d5131e7bf6a0fc9cee7e)) * **m2:** opt-in self-signed TLS trust per connection ([290bb14](https://github.com/greyfoundry/ursa-android/commit/290bb14511cf87c58dc2d8697d0a74287f504c4e)) * **m3:** push registration UI - distributor picker, endpoint, notif permission ([c77727b](https://github.com/greyfoundry/ursa-android/commit/c77727b5867ce2c827c87ec45657f6ada84ff2b8)) * **m3:** UnifiedPush receive path - PushService, webhook parser, notifications ([9f61207](https://github.com/greyfoundry/ursa-android/commit/9f61207e4d4bf9ae3c9723dfaea616609b7b43d7)) * **m4:** app shortcuts (Push, Settings) with deep-link routing ([5ead908](https://github.com/greyfoundry/ursa-android/commit/5ead90867a886784a659cba531406a70b69f8dd6)) * **m4:** biometric / device-credential app lock + settings toggle ([17a39a2](https://github.com/greyfoundry/ursa-android/commit/17a39a2c852b09d041104851190f5d5712aec67d)) * **m4:** home-screen widget (Glance) with cached up/down counts ([8926d23](https://github.com/greyfoundry/ursa-android/commit/8926d237cc2a78ef5d9bf6561c664c20eb9921ec)) * **m4:** i18n string extraction (part 1: list, login, settings, lock, status) ([16f8f1f](https://github.com/greyfoundry/ursa-android/commit/16f8f1fbbc8bfb852898022dca7aa3a8c6e9c311)) * **m4:** i18n string extraction (part 2: detail, status page, push) ([07a14fc](https://github.com/greyfoundry/ursa-android/commit/07a14fc9718ff75ed282a933e58eb31d76a2e740)) * **m4:** local TLS-expiry reminders (cached cert data + daily WorkManager) ([81be906](https://github.com/greyfoundry/ursa-android/commit/81be906892822f59325f4f39f80bb348415f77b0)) * **m4:** offline last-known monitor cache (encrypted, per-server) [2/2] ([0675e26](https://github.com/greyfoundry/ursa-android/commit/0675e26fec37e6f49595cb9e9f2717e9829f6385)) * **m4:** Pause/Resume actions on monitor notifications ([ec6261a](https://github.com/greyfoundry/ursa-android/commit/ec6261aa5e02af58606a451752a69ee1ca45c97b)) * **m4:** Quick Settings tile with cached up/down status ([8256c66](https://github.com/greyfoundry/ursa-android/commit/8256c66e1c0075a51ee09e494b78fb95ad61de9e)) * **m4:** serializable monitor snapshot model + pure codec (offline cache 1/3) ([3ebbb90](https://github.com/greyfoundry/ursa-android/commit/3ebbb90f5c3b7d30b68a4a0b2e50c1889dce10cc)) * **network:** Kuma domain models + Socket.IO client adapter ([a2a4269](https://github.com/greyfoundry/ursa-android/commit/a2a4269eebf077172b3288a1aa2aeaba9e780db5)) * **security:** FLAG_SECURE app-wide to block screenshots/recents leakage ([bb98517](https://github.com/greyfoundry/ursa-android/commit/bb98517d87d27d82f929ab9fcfc9cab01515d94b)) * **ui:** bottom navigation shell (Monitors/Notifications/Settings) + bear logo header ([8a02797](https://github.com/greyfoundry/ursa-android/commit/8a027977a51cab23bb45f7d97f29f74ffa14feba)) * **ui:** Kuma-matched theme with light/dark mode and status colors ([834907d](https://github.com/greyfoundry/ursa-android/commit/834907d79e137144b560ed4c49bcefd7f56b2c6c)) * **ui:** Kuma-style status pill badges + rounded card monitor list ([509e52f](https://github.com/greyfoundry/ursa-android/commit/509e52f6955583dc3062784fd5a060a122829ad4)) * **ui:** login screen + live monitor list ([4c22f45](https://github.com/greyfoundry/ursa-android/commit/4c22f4599e8b60544dd7b1ed16703296b740ea60)) * **ui:** monitor detail - heartbeat history + TLS cert ([ee6e218](https://github.com/greyfoundry/ursa-android/commit/ee6e218160c2c35ed5dc5d24db95d687d5ce7ebb)) * **ui:** per-monitor response-time sparklines on cards (heartbeatList capture) ([a3fe1d5](https://github.com/greyfoundry/ursa-android/commit/a3fe1d5cd3bb4665a119ae8a455f85ffecefb2f3)) * **ui:** public status-page viewer (Ktor) ([6e72617](https://github.com/greyfoundry/ursa-android/commit/6e726172728ccd375084682f2fcb43bc3d15cdea)) * **ui:** redesigned monitor cards (status circle + name/url + pill + uptime) ([a462f3f](https://github.com/greyfoundry/ursa-android/commit/a462f3f0402ca73f106e5b53b95aeb3cf0cdc9f2)) * **ui:** search + status filter in the monitor list top bar ([8666dcc](https://github.com/greyfoundry/ursa-android/commit/8666dccf8ab4dec913ea35483eaa7318ed3f7d3d)) ### Bug Fixes * startup crash (repo init order), dark theme (day/night resources + Surface), FLAG_SECURE debug gate ([4326bca](https://github.com/greyfoundry/ursa-android/commit/4326bca25f29100629c0b6bc6947589db9bf59b2))