Files
hermes-mobile/CHANGELOG.md
T
2026-07-24 11:58:20 +00:00

7.0 KiB

Changelog

All notable Hermes Mobile source changes are recorded here. Entries are added during the same work loop as their implementation; release artifacts are only listed after source commit, checks, and APK upload are verified.

Unreleased

Added

  • Added B3 foundation contracts for session search plus capability-negotiated session list/create/get/delete requests, without enabling unadvertised gateway routes.
  • Added durable Android selected-session, per-session draft, and pending-send state with fake repository/reducer coverage for duplicate-send protection and restoration.
  • Added one securely stored Hermes gateway profile with optional Local HTTPS and required Remote HTTPS routes, bearer/no-auth configuration, and visible active-route diagnostics.
  • Added bounded, redirect-disabled GET /health probes plus authenticated GET /v1/models compatibility checks and deterministic route, retry, connection-state, and HTTP-header tests.
  • Added foreground, explicit reconnect, connectivity-change, and failed-request re-evaluation hooks backed by immutable per-request route leases.
  • Added docs/DIRECT_GATEWAY_ARCHITECTURE.md to define the direct upstream Hermes gateway architecture, documented endpoints, unverified assumptions, and legacy companion compatibility policy.
  • Added transport DTOs and domain repository contracts for server profiles, authentication, sessions, messages, stream events, tool results, and artifacts.
  • Added DTO-to-domain/UI mappers, stream reducer behavior, and a fake Hermes repository with unit coverage for mappings, stream reduction, and repository fixtures.
  • Added a fake-data Compose chat proving ground with local session rail/list, context controls, keyboard-safe composer, send/cancel/retry, and seeded empty/loading/reconnecting/error states.
  • Added typed user, assistant, system, error, and streaming chat models; selectable markdown-friendly text, copyable horizontally scrollable code blocks, expandable tool results, and reducer unit tests.
  • Added a Compose design-system package with color, semantic status, spacing, typography, shape, elevation, and motion tokens.
  • Added light and dark Hermes Compose themes backed by Material 3 color schemes.
  • Added Compose previews for small phone, normal phone, tablet width, light theme, and dark theme component coverage.
  • Added native Android chat, workspace, settings, local defaults, companion health, and file editing surfaces for the beta client.
  • Added PROJECT_PLAN.md as the project-controlled milestone plan.

Changed

  • Changed Android gateway routing to prefer a compatible Local route and deterministically fall back to Remote without switching an in-flight lease.
  • Changed the Android shell to stop calling undocumented legacy companion /api/* routes; unavailable workspace/chat utilities now remain gated until direct upstream contracts are verified.
  • Changed Android networking to reject cleartext, credential-bearing, path-bearing, duplicate, or missing gateway URLs and disabled application cleartext traffic.
  • Pivoted planning and Android connection/domain terminology toward direct gateway auth, sessions, streaming, and later legacy companion removal.
  • Changed Android transport/domain capability models and fake repository data to describe direct gateway support first, with legacy companion compatibility explicitly flagged.
  • Changed the fake chat seed path to reuse the fake Hermes repository preview state.
  • Extracted shared Compose cards, rows, buttons, text fields, notices, message bubbles, list scaffolds, and code surfaces out of MainActivity.kt.
  • Updated the native Appearance screen to describe system light/dark theming and design tokens.
  • Updated companion /api/chat to call hermes chat -Q --source tool -q <prompt>, sanitize CLI banners/help/control output, truncate large mobile replies, and return structured failures.
  • Reconciled docs/ROADMAP.md to the current native Android beta state.
  • Ignored .gradle-user/ and .dev/ alongside existing generated build artifacts.

Fixed

  • Fixed bearer handling so /health is checked without credentials and the token is sent only to the documented authenticated /v1/models compatibility route.
  • Fixed legacy stored HTTP URLs so they cannot become active routes, and sanitized connection/request diagnostics so tokens and internal URLs are not emitted.
  • Fixed companion/mobile lint issues from missing Node globals and an unused React settings value.

Verification

  • Full Android Kotlin/Compose source and unit-test compilation through the cached Kotlin compiler plus direct JUnit execution — passed, 37 tests including B3 session capability mapping, durable chat JSON/state, fake chat reducer, and fake repositories.
  • GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew :app:testDebugUnitTest — blocked before compilation because this sandbox prohibits Gradle daemon/control sockets (java.net.SocketException: Operation not permitted).
  • npm run typecheck && npm run lint && npm run build — passed for all workspaces.
  • Direct Kotlin/JUnit execution of ConnectionStateTest and GatewayHttpProbeTest — passed, 12 tests.
  • GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew --no-daemon -Pkotlin.compiler.execution.strategy=in-process :app:compileDebugUnitTestKotlin :app:assembleDebug from apps/mobile/android — passed with temporary restored sandbox-only Gradle socket shims; 37 tasks, 6 executed.
  • GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew :app:testDebugUnitTest — test sources compiled, but Gradle's forked test worker could not open its sandbox-prohibited TCP control socket; the same compiled test classes passed through direct JUnit execution.
  • git diff --check — passed for direct gateway planning/contract milestone.
  • GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew :app:testDebugUnitTest :app:assembleDebug from apps/mobile/android — passed for direct gateway planning/contract milestone.
  • Parent preflight immediately before B1 completion — script PASS; Android :app:assembleDebug BUILD SUCCESSFUL, 35 tasks total and 6 executed.
  • Parent preflight immediately before B1 completion — git diff --check passed.
  • git diff --check — passed
  • GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew :app:testDebugUnitTest :app:assembleDebug from apps/mobile/android — passed
  • GRADLE_USER_HOME=/root/hermes-mobile/.gradle-user ./gradlew :app:assembleDebug from apps/mobile/android — passed
  • npm run typecheck --workspace @hermes-mobile/companion — passed
  • npm run lint --workspace @hermes-mobile/companion — passed
  • npm run build --workspace @hermes-mobile/companion — passed
  • npm run typecheck — passed
  • npm run lint — passed
  • npm run build — passed

Release history

No versioned APK releases yet.

Entry format

## [v0.1.0-beta.1] - YYYY-MM-DD

### Added
- Concise user-visible change.

### Changed
- Concise refinement or architectural change.

### Fixed
- Concise defect fix.

### Verification
- `command` — passed

### APK
- `hermes-mobile-v0.1.0-beta.1.apk` — Telegram release topic message <id>