Commit Graph

  • 2c1d444348 Merge pull request 'fix(http): don't let a half-open TLS connection wedge the accept loop' (#16) from fix/iris-tls-handshake-wedge into master master Pakobbix 2026-09-23 13:10:53 +00:00
  • 2c20b1c8a5 fix(http): don't let a half-open TLS connection wedge the accept loop ARIA 2026-09-23 15:10:16 +02:00
  • 8657e6afc6 fix(http): test acquire_scoped_lock's bool, not the always-truthy tuple v0.1.3 ARIA 2026-08-31 23:17:30 +02:00
  • 5b78e1566f docs(AGENTS): refresh to match current codebase ARIA 2026-08-29 00:12:37 +02:00
  • 0f5b5a16ab Fix gateway advertising 'unknown' version in production installs ARIA 2026-08-27 09:33:31 +02:00
  • ea375fd88c Fix double notification + double unread count for cron deliveries ARIA 2026-08-27 09:23:49 +02:00
  • b065d1783b Docs: clarify ntfy privacy — default server is public ntfy.sh ARIA 2026-08-27 09:23:44 +02:00
  • fb980d12b4 Release version management: single VERSION file as source of truth v0.1.2 ARIA 2026-08-25 14:42:39 +02:00
  • f3f1b37221 Fix iris setup: embed generated token in the pairing URL/QR ARIA 2026-08-25 13:42:46 +02:00
  • 6f339330c5 Move gateway-plugin tests out of the installable tree; clean plugin scan ARIA 2026-08-25 13:26:12 +02:00
  • 573291fc1e threads: order topic chips newest-first beneath General ARIA 2026-08-25 11:22:00 +02:00
  • 83a67f6fb1 app: smooth streaming markdown via incremental parser + typewriter reveal ARIA 2026-08-25 11:00:22 +02:00
  • c7a16d51e3 gateway setup: offer self-signed TLS cert generation (no openssl needed) v0.1.1 ARIA 2026-08-24 22:46:27 +02:00
  • b1c9bac7d8 docs+plugin: HTTP-only transport cleanup, install guide, review fixes ARIA 2026-08-24 22:22:02 +02:00
  • a61b47a947 docs: replace stale 'android' name mentions with 'iris' ARIA 2026-08-24 21:44:02 +02:00
  • 597a28050f TLS: fingerprint-confirm flow for self-signed gateway certs (issue #14) ARIA 2026-08-24 21:30:42 +02:00
  • f90e40a3fc Fix README limit claims to match reality (issue #13) ARIA 2026-08-24 21:05:13 +02:00
  • 330e63e941 Merge pull request 'Split adapter.py monolith into focused modules; restore Ruff complexity defaults' (#15) from refactor/adapter-split into master Pakobbix 2026-08-24 19:03:15 +00:00
  • b8e756c3dd Split adapter.py monolith into focused modules; restore Ruff complexity defaults (issue #12) ARIA 2026-08-24 20:55:00 +02:00
  • 7faaf2aa1c Per-device tokens with revocation (issue #11) ARIA 2026-08-24 19:37:44 +02:00
  • 746d809d48 Default push backend to ntfy; FCM opt-in with privacy warning (issue #10) ARIA 2026-08-24 19:04:40 +02:00
  • 70282dfb65 fix(release): use Forgejo-style /assets and /tags API routes v0.1.0 ARIA 2026-08-23 19:53:17 +02:00
  • 44e8c7322e fix(release): delete leftover tag on re-run; support \\n in changelog input ARIA 2026-08-23 19:03:59 +02:00
  • 29d0c1a73f Fix two gateway test failures: outbox lane scoping + SSE teardown race ARIA 2026-08-23 14:45:09 +02:00
  • d801a18db5 fix FCM push notifications ARIA 2026-08-23 14:32:40 +02:00
  • 560d9c19b3 Merge pull request 'feat(app): copy messages via bubble context menu + selection toolbar' (#9) from feat/message-copy-context-menu into master Pakobbix 2026-08-23 11:10:30 +00:00
  • 32db7fc4e8 feat(app): copy messages via bubble context menu + selection toolbar ARIA 2026-08-23 13:08:44 +02:00
  • 863ab34915 fix(app): apply whole-review fixes (HIGH/MEDIUM/LOW) + dead code & stale comments ARIA 2026-08-23 12:57:35 +02:00
  • a4e4a4ea63 Fix flaky message deletion: exact lane match in outbox history + message_id fallback on delete ARIA 2026-08-23 11:13:51 +02:00
  • ca622d3a39 added a watchdog to force the SSE stream open ARIA 2026-08-23 10:56:37 +02:00
  • abbed438ec fix(app): don't re-show notification banners on app reopen ARIA 2026-08-23 01:42:55 +02:00
  • 6458c3183c feat(app): unread message indicator (channel view, header, hamburger) ARIA 2026-08-23 01:34:42 +02:00
  • 9c50f2dbc1 feat(approvals): render exec approvals as interactive picker buttons ARIA 2026-08-23 01:16:13 +02:00
  • 487fd1c83c One-line tool cards in truncated mode ARIA 2026-08-23 01:01:04 +02:00
  • 4e9f1d028a docs(07): document media size limits, storage locations, outbound asymmetry ARIA 2026-08-23 00:48:25 +02:00
  • 742916903b Live agent todo list: compact scrollable strip above the composer ARIA 2026-08-23 00:23:02 +02:00
  • 1ff2ef380c Render single-select clarify prompts as interactive pickers ARIAandClaude Opus 4.8 2026-08-22 23:51:14 +02:00
  • 82c5a20848 Add interactive choice-picker menus for finite-choice slash commands ARIAandClaude Opus 4.8 2026-08-22 23:33:53 +02:00
  • 34a64d6e53 AGENTS.md: clarify commit/push scope (all changes, except hermes-agent/) ARIA 2026-08-22 22:46:41 +02:00
  • 7a6d922d12 Add QR pairing (terminal QR, in-app scanner, iris://pair deep link) ARIA 2026-08-22 22:43:13 +02:00
  • 27dc7917f2 Added log handling for failed phone connection to the gateway ARIA 2026-08-22 21:08:06 +02:00
  • 4866f14231 chat: natural reading scroll for user and agent messages ARIA 2026-08-22 20:55:35 +02:00
  • 8fba00ba7f android: shrink composer pill; float it over the message list ARIA 2026-08-22 20:36:33 +02:00
  • 7f0bdcbbc1 Per-tool emoji on tool cards (gateway-resolved via hermes get_tool_emoji) ARIA 2026-08-22 20:26:38 +02:00
  • e6015033b6 HTTP transport: drop WS server, offline send queue + dead-stream watchdog ARIA 2026-08-22 20:10:05 +02:00
  • 2349a95dd4 HTTP fallback leg (docs/19): e2e scenario 13 + docs ARIA 2026-08-22 14:34:14 +02:00
  • 7f936fa596 HTTP fallback leg (docs/19, app): State.HttpFallback + SSE/long-poll receive ARIA 2026-08-22 14:31:46 +02:00
  • e5c7d690b8 HTTP fallback leg (docs/19): POST /v1/frame + SSE /v1/events + long-poll ARIA 2026-08-22 14:10:14 +02:00
  • 524ed8ce53 Fixed tool calling history ARIA 2026-08-22 13:22:07 +02:00
  • dd43033888 Chat: scroll to bottom of newest message on open and on new messages ARIA 2026-08-22 11:37:30 +02:00
  • 6591d7cec0 Gateway restart notices: explicit status{restarting} signal, correct timing ARIA 2026-08-22 11:31:10 +02:00
  • 3a33f6be15 formatting changes ARIA 2026-08-22 11:07:24 +02:00
  • c71636ad55 Release: single build+release job (Gitea has no artifacts API); fakeroot for deb ARIA 2026-08-22 04:12:15 +02:00
  • 5a69e3927b Fix CI: uv sync --extra dev; sdkmanager licenses without SIGPIPE ARIA 2026-08-22 03:42:15 +02:00
  • 1f182a7e7e Release: also build AAB; fix keystore key-password guidance ARIA 2026-08-22 03:33:58 +02:00
  • 7309158e12 Add Gitea CI + release workflows (CI-SETUP.md) ARIA 2026-08-22 03:32:07 +02:00
  • 8c09aecf4a docs: add trailing newline to AGENTS.md ARIA 2026-08-21 21:00:52 +02:00
  • 060420c615 docs: fix Kotlin test task name in AGENTS.md ARIA 2026-08-21 20:56:24 +02:00
  • 81f42ab761 Local message cache: instant start + offline reading (SQLDelight) ARIA 2026-08-21 20:56:20 +02:00
  • 9a519e3c5a Omit null media in history frames (schema-conformant) ARIA 2026-08-21 20:56:16 +02:00
  • 17bf41a0b9 Make thread/channel/message deletion complete (hard delete) ARIA 2026-08-21 19:47:55 +02:00
  • 9286937e2d Runtime footer: app-controlled model/context/cwd/latency/cost under replies ARIA 2026-08-21 19:32:05 +02:00
  • 678c0344c8 Clean up lint/LSP across gateway, Android, and desktop (alpha -> stable) ARIA 2026-08-21 18:47:03 +02:00
  • 9f3f9842c8 Push notification dedupe: one message = one notification — an offline message was notified twice (FCM push, then again when the app synced the outbox and mirrored the replayed frames). Fix: the gateway records the highest outbox cursor delivered per device via push (devices.last_pushed_cursor, advanced only on successful send) and returns it in hello.ack; sync-replayed frames carry their outbox cursor in the envelope; the app skips system notifications for replayed frames at/below the watermark (live frames never suppressed — that is the case where no push fired). Also: 5s per-chat push coalescing so a cron delivery (notification frame + message frame) pushes once, and the FCM handler no longer posts a redundant notification (skips when WS is connected or FCM already displayed the notification payload; data-only messages are the exception). Docs: frames.schema.json, 04-wire-protocol.md, 08-push.md §8.8 ARIA 2026-08-21 17:21:54 +02:00
  • acd5fb4ad0 Ntfy listener: only run when the paired gateway pushes via ntfy — the foreground service (and its permanent 'Listening for messages' notification) is now started/stopped based on the gateway's push backend from hello.ack server_caps (persisted as pushBackend); FCM gateways no longer keep a persistent listener alive, and switching gateways toggles the service on the next connect ARIA 2026-08-21 17:21:47 +02:00
  • 75d491fd30 Added default backdrops to the chat. ARIA 2026-08-21 15:48:30 +02:00
  • 96b60daf08 Update dependencies to latest + migrate to AGP 9.x ARIA 2026-08-21 12:14:09 +02:00
  • ec53769325 Chat bubbles: preserve single newlines in agent messages too — the hard-break rule from user bubbles now applies to agent replies as well, so status lines and model-wrapped text render one line per field instead of collapsing into a wall of text; unit tests for preserveNewlinesAsHardBreaks ARIA 2026-08-21 10:26:35 +02:00
  • 1bcadcf950 Added slash command handling ARIA 2026-08-21 10:18:48 +02:00
  • 10e9565e2e Channels: default-only threading + automation (read-only) channels — threading (topic switcher, Ctrl+T, auto-threading) is now only active on the default channel, and the gateway ignores auto_thread for other channels; new channel.set_automation frame marks a channel read-only for cron/webhook output (app hides the composer behind a notice, gateway rejects message.send, default channel cannot be marked, flag syncs to all devices via the full-entry channel.renamed response, gear badge in the list); header pill drops the 'Bot' subtitle and shows the chat_id on automation channels (tap to copy for cron delivery targeting); also fixes a pre-existing stray brace that made frames.schema.json invalid JSON ARIA 2026-08-21 09:39:32 +02:00
  • d7cd59b685 AGENTS.md: document the uiautomator workflow for ADB UI taps — never guess coordinates from a screenshot; dump the hierarchy, find the node by text/content-desc/resource-id, tap the center of its bounds, re-dump after navigation ARIA 2026-08-21 09:02:52 +02:00
  • 6846ab1e19 Settings screen: add 8dp spacing between cards (they were touching, which read as compressed) and move 'Reset appearance' above the 'Font size' card ARIA 2026-08-21 08:59:38 +02:00
  • abf1374c1e Font size setting: app-wide text scale (0.8x-1.5x, default 1.0x) via Settings > Appearance slider — applied through LocalDensity.fontScale so all sp text scales while dp layout keeps its proportions; the multiplier stacks on top of the system font scale; persisted per platform (EncryptedSharedPreferences / settings.json) like the other appearance settings ARIA 2026-08-21 08:54:48 +02:00
  • f79c54fead README: rewrite for users — what it is, feature list, build-from-source (gateway/Android/desktop/pairing), contributing, Apache-2.0 license; add LICENSE file ARIA 2026-08-21 01:17:23 +02:00
  • 73815b032a HTML artifacts (Android): enable DOM storage + pin a real base URL so localStorage/sessionStorage work — the library defaults domStorageEnabled off and a null base URL leaves the page on the opaque about:blank origin where the storage APIs throw, so interactive artifacts that persist state appeared broken; basic JS (DOM/event handlers) already ran ARIA 2026-08-21 01:05:31 +02:00
  • ac4097e9a1 android gateway: raise MAX_MESSAGE_LENGTH to 1M so long replies (and complete HTML artifacts) aren't chunked across fence-reopened messages — the stream consumer defaults to 4096 when the adapter sets no cap, and WS has no message-size limit ARIA 2026-08-21 00:43:42 +02:00
  • 7ba5632a03 HTML artifacts: render agent-sent HTML/CSS/JS code blocks in an in-app WebView (Android platform WebView, desktop JCEF/KCEF) via a full-screen preview; artifact card with Preview button + code toggle, shown only once the message stops streaming; webview-multiplatform 1.9.40 + KCEF deps, detection + unit tests ARIA 2026-08-21 00:43:39 +02:00
  • a1814d016c User bubbles: move timestamp + delivery checkmarks to their own bottom-right line (Telegram look, matching agent bubbles) instead of inline at the end of the text ARIA 2026-08-21 00:01:13 +02:00
  • f8effb4152 Chat bubbles: render markdown (bold/italic/tables/syntax-highlighted code) for agent + user messages; tap-to-copy inline code with flash, code-block copy button; preserve user newlines; removed stale HANDOFF doc ARIA 2026-08-20 23:29:43 +02:00
  • a8920d8d26 Channel badges: flat Material star (default) + heart (favorite) icons instead of text glyphs, so favorites no longer look like the default channel ARIA 2026-08-20 21:07:52 +02:00
  • d16b47abdf Channel context menu: hide Delete for the default channel (it can be renamed but not deleted; server already enforces this) ARIA 2026-08-20 21:00:36 +02:00
  • 49b7a3f577 Channel context menu: long-press/right-click a row → rename, favorite/unfavorite, add/change/remove icon (color or image), delete; removed star/delete row buttons; favorite + icon/color synced across devices ARIA 2026-08-20 20:55:24 +02:00
  • 079ef664a2 Back-to-bottom button: chevron FAB appears when scrolled up, tap glides to latest; new messages no longer yank the view while reading history; lane switch always lands on latest ARIA 2026-08-20 20:15:12 +02:00
  • 1ec705727a App icon: winged-bubble adaptive icon (Android) + window/jpackage icon (desktop); concept art in app/icons/ ARIA 2026-08-20 19:48:57 +02:00
  • 37c13b4d02 Compact single-row header: tappable status bubble (green/yellow-pulsing/red) + search, status toast on tap; removed overflow menu (rename/forget) ARIA 2026-08-20 19:33:45 +02:00
  • 0e8f69a43c User theme: customizable bubble colors + background (color/image) in Settings → Appearance ARIA 2026-08-20 19:14:35 +02:00
  • 86a4c8ee70 Added official hermes-gateway status messages (new comment category instead of tool calls and messages) ARIA 2026-08-20 18:11:36 +02:00
  • e9e1aed0f2 Long-press message selection + delete (message.delete frame, outbox removal, all-device sync) ARIA 2026-08-20 16:51:19 +02:00
  • efecf2732e Auto-threading, history pagination, streaming toggle + tool/reasoning display settings ARIA 2026-08-20 16:26:52 +02:00
  • e678caafdc Composer auto-grow (1→5 lines) + in-field attach; settings screen + persisted prefs ARIA 2026-08-20 13:12:24 +02:00
  • bf6bf7e8bd M7: polish + E2E + docs (layout pass, theming, states, e2e driver, schema, setup.md, security) ARIA 2026-08-20 12:00:13 +02:00
  • 0cc8b7aafe M6: desktop app (tray, two-pane layout, shortcuts, inspector, jpackage) ARIA 2026-08-19 20:43:47 +02:00
  • 2ecfe1c05c M5: push (FCM + ntfy) + offline catch-up + background notifications ARIA 2026-08-19 19:20:55 +02:00
  • 913ee91024 M4: media upload/download/playback (both directions) ARIA 2026-08-19 17:29:39 +02:00
  • 60296b33fe docs: mark M3 complete (channels/threads/cron/search) ARIA 2026-08-19 14:55:53 +02:00
  • 9b511fdd28 M3: channels/threads + cron delivery + search + outbox sync ARIA 2026-08-19 14:53:48 +02:00
  • 218c50d688 M1+M2: gateway core loop + agent transparency ARIA 2026-08-19 13:56:19 +02:00
  • 59acf66c89 M0: toolchain, monorepo scaffold, gateway plugin skeleton, CMP app ARIA 2026-08-19 11:27:02 +02:00