CHANGELOG.md
Rama main · réplica de lectura del repositorio original.
# 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))