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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and M57
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
M57 and ronia
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
M57 and ronia
261ee6379a
feat( #132 ): dynamic session title with ellipsis truncation ( #139 )
...
Co-authored-by: ronia <ronia@m57>
2026-06-20 02:37:55 +03:00
M57 and ronia
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
M57 and ronia
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