Commit Graph
227 Commits
Author SHA1 Message Date
M57andM57 d7ca7b084e fix(#240): notification tap race condition opens new chat instead of correct session (#241)
Two-pronged fix for the race between GatewayReady auto-creating a session
and ChatScreen LaunchedEffect calling switchSession:

1. ChatViewModel: added `initialSessionId` field. GatewayReady now checks
   this before auto-creating a session — if set, it calls switchSession
   instead. The field is set synchronously by ChatScreen via SideEffect
   during composition, before any WS event can be processed.

2. ChatScreen: LaunchedEffect now keys on state.connectionStatus and
   waits for CONNECTED before calling switchSession. This prevents the
   SESSION_RESUME message from being dropped (webSocket is null before
   onOpen, so send() is a silent no-op).

Fixes #240

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-21 18:32:29 +03:00
M57 adc23e3540 Merge pull request #239 from Hy4ri/fix/issue-214-notification-tap-navigation
fix(#214): notification tap now navigates to the correct session
2026-06-21 17:47:28 +03:00
M57 f68841c2a7 fix(#214): update test assertion to match full success message 2026-06-21 17:42:49 +03:00
M57 59f3af0a55 fix: add missing setValue import for mutableStateOf delegate 2026-06-21 17:25:54 +03:00
M57 0828fd8796 Merge pull request #237 from Hy4ri/fix/issue-201-platforms-response-shape
fix(#201): platforms endpoint response shape mismatch
2026-06-21 17:25:10 +03:00
M57 21744fd951 fix: replace .apply block with direct property/extra calls for ktlint 2026-06-21 17:22:35 +03:00
M57 fea7820740 fix: extract long toast string to val, fix indentation 2026-06-21 17:18:59 +03:00
M57 ab92b31d2e fix: ktlint wrapping violations on toast message and intent builder 2026-06-21 17:16:05 +03:00
M57 37fc9d9f17 fix: clarify toast - gateway restart required for platform toggle changes 2026-06-21 17:11:28 +03:00
M57 d2e59b2741 fix(#214): notification tap now navigates to correct session
Root cause: MainActivity had no onNewIntent override. When the app was
backgrounded and a notification was tapped, Android brought the existing
task to the foreground and delivered the intent via onNewIntent — but
since it wasn't overridden, the session ID from the notification was
silently dropped and the user saw the last-active session.

Fix:
1. Changed notificationSessionId from a local val to a Compose
   mutableStateOf so it's observable across recompositions.
2. Added onNewIntent override that reads the session ID from the
   incoming intent and updates the observable state.
3. Added FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP to the
   notification PendingIntent for reliable task management.
2026-06-21 16:40:30 +03:00
M57 262578528b fix: stabilize flaky testAutoReconnect with polling assertion 2026-06-21 16:26:07 +03:00
M57 d4eb36f032 fix: ktlint parameter-list-wrapping on getMessagingPlatforms 2026-06-21 16:12:35 +03:00
M57 35c608b2bf fix(#201): fix platforms endpoint response shape mismatch
GET /api/messaging/platforms returns a JSON object with a platforms
array inside, but the app expected a bare array. Wraps the response
in a new MessagingPlatformResponse model.

- Adds MessagingPlatformResponse.kt wrapper model
- Updates HermesApiService.kt return type + adds profile query param
- Updates ChannelsViewModel.kt to unwrap .platforms
- Updates E2eIntegrationTest.kt mock to match new response shape
2026-06-21 16:03:36 +03:00
M57 a89b932a0e Merge pull request #236 from Hy4ri/feat/issue-208-theme-presets
feat(#208): add Monochrome, Gruvbox, Catppuccin and AMOLED theme presets
2026-06-21 13:10:38 +03:00
M57 50e6ff5f7c fix(#236): resolve merge conflict markers in AuthManager.kt 2026-06-21 13:06:11 +03:00
Hy4ri 8e8fca756a feat(#208): add Monochrome, Gruvbox, Catppuccin and AMOLED theme presets 2026-06-21 13:01:55 +03:00
M57 f738f33fc5 Merge pull request #235 from Hy4ri/feat/issue-207-chat-bubble-contrast
fix(#207): dynamic contrast adjustments for chat bubbles legibility
2026-06-21 12:46:50 +03:00
Hy4ri 315e1097b2 fix(#207): dynamic contrast adjustments for chat bubbles legibility 2026-06-21 12:43:15 +03:00
M57 7d8d2707c6 Merge pull request #234 from Hy4ri/feat/issue-232-dynamic-theme
feat(#232): dynamic theme switch on settings save
2026-06-21 12:39:21 +03:00
Hy4ri 78da6af6be feat(#232): dynamic light/dark theme switch without restart 2026-06-21 12:33:57 +03:00
M57 7ce19cd52c Merge pull request #233 from Hy4ri/feat/issue-232-cron-icons
feat(#232): replace cron action text buttons with compact icons
2026-06-21 12:30:30 +03:00
Hy4ri 4221908bd9 feat(#232): replace cron action text buttons with compact icons 2026-06-21 12:26:54 +03:00
M57 d1d5b0937c Merge pull request #231 from Hy4ri/refactor/issue-78-strings-extraction
refactor(#78): extract hardcoded strings to strings.xml
2026-06-21 12:23:10 +03:00
Hy4ri 69ff66b8de style: remove unused R import in Navigation.kt to pass ktlint 2026-06-21 12:00:08 +03:00
Hy4ri 44e2006434 refactor(#78): extract UI strings for remaining batch 2.3 screens 2026-06-21 11:55:18 +03:00
Hy4ri b1950ece34 refactor(#78): extract UI strings for toolsets webhooks pairing and config screens 2026-06-21 11:48:33 +03:00
Hy4ri dcb23ba0a3 refactor(#78): extract UI strings for logs, system, model, and sessions/history screens 2026-06-21 11:41:41 +03:00
Hy4ri cdad31b555 refactor(#78): extract UI strings for chat, settings, connect, kanban, and skills screens 2026-06-21 11:38:33 +03:00
Hy4ri acd6cbf751 refactor(#78): extract notification strings to resources 2026-06-21 11:31:09 +03:00
Hy4ri 7ca3399a01 chore: enable Android emulator and system images in Nix flake 2026-06-21 11:21:29 +03:00
Hy4ri c34f6f1e47 refactor(#78): extract navigation and drawer labels to string resources 2026-06-21 11:09:44 +03:00
Hy4ri 8efbe02c27 refactor(#78): extract shared components and common strings to resources 2026-06-21 11:00:20 +03:00
Hy4ri 19d44c077b chore: format codebase with ktlint 2026-06-21 10:57:18 +03:00
M57 4087ee0cac fix: switch issue templates to YAML forms, remove broken markdown templates
Markdown-based issue templates with frontmatter were silently ignored
by GitHub (likely an empty-string assignees field or frontmatter
format issue). Switched to the newer YAML-based issue forms which use
a structured schema format that GitHub explicitly supports.

- bug_report.yml: structured form with required fields for description,
  reproduction steps, environment, screenshots
- feature_request.yml: form with problem/motivation, proposed solution,
  alternatives, mockups
- config.yml: unchanged, keeps blank_issues_enabled: false
2026-06-21 10:39:27 +03:00
M57 20b8eae282 Merge pull request #229 from Hy4ri/fix/issue-template-frontmatter
fix: remove invalid assignees field from issue template frontmatter
2026-06-21 10:36:18 +03:00
M57 10a98128b5 fix: remove invalid assignees field from issue template frontmatter
The 'assignees: ''' value breaks GitHub's YAML parser, causing
templates to be silently ignored and falling back to blank issue +
discussions. Removed the field entirely since no auto-assignment
is needed.
2026-06-21 10:35:58 +03:00
M57 52bfadcae8 Merge pull request #228 from Hy4ri/feat/issue-templates
docs: add GitHub issue templates (bug report + feature request)
2026-06-21 10:33:39 +03:00
M57 6ebcb3930d docs: add GitHub issue templates (bug report + feature request)
Adds a config.yml chooser and two markdown templates:
- bug_report.md — structured bug report with reproduction steps,
  environment info, and screenshot slot
- feature_request.md — enhancement/UX/refactor request with
  problem statement, proposed solution, and alternatives

Both follow the project's bracket-prefix title convention.
2026-06-21 10:33:00 +03:00
M57andM57 bc3ddd626b docs: add GitHub PR template (#227)
Adds a .github/PULL_REQUEST_TEMPLATE.md with sections for summary,
type of change, screenshots, testing steps, and project-specific
checklist items (HermesScaffold, NavigationController, room schema,
screen dedup check).

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-21 10:29:03 +03:00
M57andM57 a5c070b353 ux: swap positions of new chat and search buttons in top bar (Issue #212) (#226)
Swapped the order of the Search toggle and New Chat icon buttons
in the ChatScreen top bar actions slot. Search is now on the left
(right-side outer position) which matches user expectations —
the new chat button was accidentally tapped when reaching for search.

Fixes #212

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-21 10:24:32 +03:00
M57 4e8da7b90c fix(security): allow cleartext traffic globally to support LAN IP connections (#200)
* feat(skills): add category and status filters (#111)

* fix(security): allow cleartext traffic globally to support LAN IP connections
2026-06-21 01:09:28 +03:00
M57 63575272c9 feat(skills): add category and status filters (#111) (#199) 2026-06-21 00:49:58 +03:00
M57 081996d376 refactor: extract entryProvider from MainNavigation (#197)
Extract the overly long `entryProvider` lambda out of `MainNavigation` into a separate `appEntryProvider` function to improve code readability and maintainability.
2026-06-21 00:31:59 +03:00
M57 f7a334ecfd Refactor CronExpressionFormatter to improve maintainability (#192)
Extract logic from a single long method `cronToHumanReadable` into distinct parser helpers for shortcuts, day of month, days of week, and general time handling. Move repetitive static properties and small format helpers to the object scope.
2026-06-21 00:30:02 +03:00
M57 5e90a4d1a7 fix(chat): conditional auto-scroll on new messages (#131) (#193) 2026-06-21 00:29:26 +03:00
M57 00c6e75f50 feat(connect): saved connection profiles support (#107) (#191)
* feat(#107): implement saved connection profiles support

* fix(connect): fallback profiles resolution and stubbing in tests
2026-06-21 00:18:35 +03:00
M57 0eed12d18e Refactor: Extract hardcoded "todo" to constant in KanbanScreen (#190)
- Extracted the hardcoded string "todo" to a `DEFAULT_COLUMN` constant in `KanbanScreen.kt` to improve code health and readability.
- Replaced the hardcoded string literal in the `viewModel.createTask` call with the new constant.
2026-06-21 00:17:37 +03:00
M57 63a927fae2 chore: Update softprops/action-gh-release to v3 to use Node 24 (#189)
Fixes the deprecation warning for Node 20 by bumping the action version.
2026-06-21 00:15:29 +03:00
M57 60c4096e9c Performance improvement for chat search filtering (#188) 2026-06-21 00:00:36 +03:00
M57 4547861c71 test: Add HermesWsClient test (#187) 2026-06-20 23:56:04 +03:00