Commit Graph
123 Commits
Author SHA1 Message Date
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 60c4096e9c Performance improvement for chat search filtering (#188) 2026-06-21 00:00:36 +03:00
M57 49fd12ac34 fix(#115): send enabled flag on config save and propagate configuration errors (#186) 2026-06-20 23:54:43 +03:00
M57 045932ca8b Optimize collection creation in Navigation.kt (#180)
* ⚡ Optimize collection creation in Navigation.kt

Replaced uses of `.map { ... }.toSet()` with `.mapTo(mutableSetOf()) { ... }` in Navigation.kt. This avoids the creation of intermediate ArrayList objects, saving unnecessary memory allocations.

* ⚡ Optimize collection creation in Navigation.kt

Replaced uses of `.map { ... }.toSet()` with `.mapTo(mutableSetOf()) { ... }` in Navigation.kt. This avoids the creation of intermediate ArrayList objects, saving unnecessary memory allocations. Fixed ktlint formatting issues causing CI failure.
2026-06-20 23:44:39 +03:00
M57 34af34af6d perf: avoid intermediate allocation in bottomNavKeys (#184)
Replaces `.map { ... }.toSet()` with `.mapTo(mutableSetOf()) { ... }`
when resolving `bottomNavKeys` to avoid creating and discarding an
intermediate `ArrayList` during recomposition.
2026-06-20 23:42:40 +03:00
M57 838b888f9b ⚡ Optimize Set creation in ChatViewModel (#181)
Refactored `chatMessages.map { it.id }.toSet()` to `chatMessages.mapTo(HashSet(chatMessages.size)) { it.id }` to avoid creating and discarding an unnecessary intermediate ArrayList.

Benchmark results show a ~31% performance improvement on 5000 iterations for typical sizes.
2026-06-20 23:38:36 +03:00
M57 d44df3f339 fix(#102): add EmptyState views for successful empty responses across data screens (#179) 2026-06-20 23:27:17 +03:00
M57 f2e11413cc fix(#66): enable room schema export and configure release migration safe-guards (#177) 2026-06-20 22:57:08 +03:00
M57 64a047f095 feat: move session history to a dedicated history screen (#175)
* feat: move session history to a dedicated history screen

Closes #159.

* fix(ci): fix ktlint style issues and unresolved NavigationController reference
2026-06-20 22:27:54 +03:00
M57 54a195bd94 fix(auth): initialize AuthManager in custom application class (#172)
Closes #68. Redundant initialization in MainActivity has been removed.
2026-06-20 17:43:40 +03:00
M57 8763271056 fix(#101): collect events once in init to prevent duplicate collectors on reconnect (#169) 2026-06-20 17:32:24 +03:00
M57 74714fc1df fix(#99): gate tool and clarify events by session id to prevent leaks (#168) 2026-06-20 17:27:34 +03:00
M57 6cb4e17882 fix(#127): serialize tool event data to JSON for pretty formatting (#167)
* fix(#127): serialize tool event data to JSON for pretty formatting

* fix(test): format tool start test case to satisfy ktlint
2026-06-20 17:22:28 +03:00
M57andM57 3c5fcf504c feat(#154): add word-by-word typing effect toggle and speed slider in settings (#165)
* feat(#154): add word-by-word typing effect toggle and speed slider in settings

* fix(settings): import Slider to fix build failure

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 17:09:42 +03:00
M57 8c9c11df23 refactor(#103): centralize navigation mutations through NavigationController.resetTo() (#164)
* refactor(#103): centralize navigation mutations through NavigationController.resetTo()

* fix(chat): fix scroll-to-bottom FAB compilation errors
2026-06-20 17:01:37 +03:00
M57andM57 ff4649b601 fix(#130): fix compilation errors in scroll-to-bottom FAB (#166)
* fix(#130): fix compilation errors in scroll-to-bottom FAB

* fix(#130): add missing R import, context, and string resources

* fix(#130): use stringResource() instead of context.getString() for Compose lint

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 16:45:05 +03:00
M57andM57 03cfcf8504 feat(#125): fix clarify input pre-filling and parse/route clarify_id (#156)
* feat(#125): fix clarification input pre-filling and parse/route clarify_id

* fix(#156): fix ktlint violations in ChatViewModelTest.kt

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 16:35:58 +03:00
M57andM57 4544d88f8d feat(#130): add scroll-to-bottom FAB that appears when user scrolls up (#163)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 14:12:25 +03:00
M57andM57 ca21e22147 ci(#71): change FGS type from dataSync to remoteMessaging for indefinite WebSocket listener (#162)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 14:07:46 +03:00
M57andM57 87392f5e57 fix(#148): prevent chatTitle being overwritten by response handlers (#161)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 14:04:59 +03:00
M57andM57 0ec70beb84 refactor(#104): prune unused ChatMessageDao APIs and stale test stubs (#160)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 13:57:51 +03:00
M57andM57 3f19224228 feat(#123): add primary screens to drawer categorically (#158)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 13:46:08 +03:00
M57andM57 c6d7a45905 fix(#135): guard goBack() against empty back stack (#157)
goBack() now uses ChatScreen as a fallback when the stack has
only one item, preventing the Settings back-button crash.

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 13:29:19 +03:00
Hy4ri cbd743a5c9 feat(#125): pre-fill clarification input and route response via clarify.respond 2026-06-20 12:51:44 +03:00
Hy4ri 8d31e37baa feat(#125): add free-form text input and option tap/long-press behavior to ClarifyDialog 2026-06-20 12:28:14 +03:00
Hy4ri 98b8588d41 fix(#146): finalize active streaming message before tool execution or new message start 2026-06-20 12:16:11 +03:00
Hy4ri 58ee32cbd1 fix(chat): remove extra closing brace in ChatViewModel.kt 2026-06-20 12:04:42 +03:00
Hy4ri 890ca05d16 fix(chat): align block indents and format multiline expressions 2026-06-20 11:18:08 +03:00
Hy4ri 5ba266cefd fix(chat): resolve compilation errors and formatting violations 2026-06-20 11:12:34 +03:00
Hy4ri d0eedf053f refactor(chat): stabilize streaming, session loading, and connection status
Optimize streaming message updates, correct session load merging, and derive connection state reactively. Add reconnection UI banner.
2026-06-20 11:04:56 +03:00
M57andM57 a2d299e136 feat(#129): remove redundant source archive, add About version card in Settings (#149)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 10:30:18 +03:00
M57andM57 f5edf1569c fix(#141): notification tap opens original session instead of new session (#147)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 10:10:10 +03:00
M57andM57 ae62b05e6d fix(#144): add timestamp to tool/command message bubbles (#145)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 10:01:44 +03:00
M57andM57 7248f66abf feat(#136): visible copy button overlay on long-press of message bubbles (#143)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-20 09:46:10 +03:00
M57andronia 113467a99d fix(#140): fix skills content API endpoints — path params to query params (#142)
Co-authored-by: ronia <ronia@m57>
2026-06-20 02:43:26 +03:00
M57andronia 261ee6379a feat(#132): dynamic session title with ellipsis truncation (#139)
Co-authored-by: ronia <ronia@m57>
2026-06-20 02:37:55 +03:00
M57andronia 913c6fa878 fix(#134): remove settings button from chat top bar (#138)
Co-authored-by: ronia <ronia@m57>
2026-06-20 02:28:36 +03:00
M57andronia 27ac4d72a4 fix(#133): only show status dot red when offline, hide when connected (#137)
Co-authored-by: ronia <ronia@m57>
2026-06-20 02:25:29 +03:00
M57 61d49d2355 fix(chat): don't reload cached msgs on SESSION_RESUME ack 2026-06-20 00:54:16 +03:00
M57 0fabad820d fix(chat): fix old session resume losing server session ID
* fix(chat): reset agent typing status when resuming old sessions

* fix(chat): fix race condition in websocket request registration

* test(chat): update mocks for new send/sendMessage onSent callback

* style(chat): use named onSent param instead of trailing lambda

* style(chat): fix import ordering for ConcurrentHashMap

* test(chat): fix remaining 2-arg verify calls for send()
2026-06-20 00:40:16 +03:00
M57 46b24593f9 feat(#58): implement skill markdown/yaml editor UI (#121) 2026-06-19 23:58:34 +03:00
Hy4ri ce5428f66b feat(#116): add direct reply action to background notifications 2026-06-19 23:44:40 +03:00
Hy4ri a7d730cae5 fix(#114): reduce intrusion of background service notification 2026-06-19 23:36:31 +03:00
Hy4ri 45f78443ab feat(#60): format tool output JSON for readability 2026-06-19 23:28:16 +03:00
Hy4ri 8755338636 Revert "Merge pull request #42 from Hy4ri/feat/sessions-screen"
This reverts commit 7d50b5acd7, reversing
changes made to ee97be50cb.
2026-06-19 23:18:26 +03:00
M57 7d50b5acd7 Merge pull request #42 from Hy4ri/feat/sessions-screen
feat: dedicated Sessions browser screen (Issue #40)
2026-06-19 23:14:40 +03:00
Hy4ri 402664b6f2 fix: fix compilation errors in SessionsScreen.kt 2026-06-19 23:09:55 +03:00