Commit Graph
92 Commits
Author SHA1 Message Date
M57 209ce331b8 Merge pull request #83 from Hy4ri/refactor/issue-77-remove-workmanager
[refactor] Remove unused WorkManager dependency (#77)
2026-06-19 20:13:37 +03:00
Hy4ri 39b1d94ad4 Refactor: Remove unused WorkManager dependency (#77) 2026-06-19 20:13:28 +03:00
M57 028b490fd3 Merge pull request #62 from Hy4ri/fix/issue-45-ws-stuck
Fix WebSocket connection stuck on subsequent launches (Issue #45)
2026-06-19 20:05:36 +03:00
Hy4ri 23ff263641 Fix WebSocket connection stuck on subsequent launches (Issue #45) 2026-06-19 19:56:50 +03:00
M57 6b9bab9c25 Merge pull request #61 from Hy4ri/fix/issue-59-keyboard-gap
Consume window insets in NavDisplay to eliminate keyboard gaps (Issue #59)
2026-06-19 19:49:56 +03:00
Hy4ri 4ecde51e2c Consume window insets in NavDisplay to eliminate keyboard gaps (Issue #59) 2026-06-19 19:47:49 +03:00
M57 379c9e07e7 Merge pull request #57 from Hy4ri/fix/issue-44-chat-search
Fix chat search breaking vertical scrolling and layout (Issue #44)
2026-06-19 19:41:20 +03:00
Hy4ri 80578b93d6 Render SearchBarRow inside the main Column container below the top app bar 2026-06-19 19:36:20 +03:00
Hy4ri 3734cb361f Use height-constrained CompactSearchInput inside SearchBarRow to prevent topbar height dynamic expansion 2026-06-19 19:17:55 +03:00
Hy4ri 11c5da260d Pin top app bar in ChatScreen and support pinTopBar parameter in HermesScaffold 2026-06-19 19:09:04 +03:00
M57 95b6106b4c Merge pull request #55 from Hy4ri/feat/source-archive-release
feat: attach source code archive to release assets (closes #54)
2026-06-19 19:00:48 +03:00
M57 77ed9c9120 Merge pull request #56 from Hy4ri/fix/issue-51-cron-human-readable
Implement human-readable cron schedule formatter (Issue #51)
2026-06-19 19:00:40 +03:00
Hy4ri f7132a76cd Fix chat search breaking vertical scrolling and layout (Issue #44) 2026-06-19 18:59:43 +03:00
Hy4ri 055b3381b1 Implement human-readable cron expression formatter on CronJobsScreen 2026-06-19 18:49:41 +03:00
ronia 4e6525689d feat: attach source code archive to release assets (closes #54) 2026-06-19 18:47:50 +03:00
M57 3e093aaa72 Merge pull request #53 from Hy4ri/fix/issue-47-reorder-nav-items
feat: add bottom nav reordering in settings (closes #47)
2026-06-19 18:46:09 +03:00
M57 9d5e46e769 Merge pull request #52 from Hy4ri/fix/issue-48-chat-input-space
fix: remove space between bottom bar and chat input field (closes #48)
2026-06-19 18:45:07 +03:00
Hy4ri 2fce6ad97a feat(settings): add up/down arrow buttons to reorder bottom nav items 2026-06-19 18:41:02 +03:00
Hy4ri 54ebe8714e fix(chat): remove double padding and zero out nested Scaffold window insets 2026-06-19 18:37:48 +03:00
M57 a7fcfd4088 Merge pull request #50 from Hy4ri/fix/issue-49-always-show-bottom-bar
fix: keep bottom navigation bar always visible (closes #49)
2026-06-19 18:36:26 +03:00
Hy4ri 0cdf8fd779 fix(navigation): show bottom bar on all screens except ConnectScreen 2026-06-19 18:31:37 +03:00
M57 2e56e2d9da Merge pull request #46 from Hy4ri/fix/issue-43-bottom-navbar
fix: bottom navbar updates dynamically (closes #43)
2026-06-19 18:29:21 +03:00
Hy4ri 3a610c7c80 fix(ci): fix trailing spaces and revert visibility/padding changes 2026-06-19 18:23:17 +03:00
Hy4ri 9e3a7ab339 fix: always show bottom bar, resolve chat input double padding, and format codebase 2026-06-19 18:14:41 +03:00
Hy4ri 91ad09b5f2 fix(navigation): dynamically update bottom navigation items 2026-06-19 18:02:49 +03:00
Hy4ri 67c633396e ci: cache ktlint binary in GitHub Actions workflows 2026-06-19 17:57:22 +03:00
M57 1b188b6b31 Merge pull request #41 from Hy4ri/fix/release-signing
fix: sign release APKs with stable keystore from secrets
2026-06-19 17:44:19 +03:00
ronia 34e4c2aed4 fix: sign release APKs with stable keystore from secrets 2026-06-19 17:34:34 +03:00
M57andronia 59e0d4f817 feat: search within chat history (Issue #31) (#39)
- Add search icon toggle in top bar with animated search field
- Real-time message filtering on search query match
- Match counter with previous/next navigation arrows
- Case-insensitive text highlighting in user and assistant bubbles
- Dismiss search restores full message list
- Empty state for no search results

Co-authored-by: ronia <ronia@m57>
2026-06-19 16:35:07 +03:00
M57 fb605d1bc0 feat: clickable URLs and long-press copy in chat bubbles (Issues #29, #30) (#36)
Add clickable URL detection with primary color + underline styling and browser launch via UriHandler. Add long-press to copy raw message text to clipboard for both user and assistant chat bubbles.

Fixes #29, Fixes #30
2026-06-19 14:16:56 +03:00
M57 2cfe1f71fc fix: bottom navigation bar customization not reflected in NavigationBar (Issue #37)
fix: bottom navigation bar customization not reflected in NavigationBar (Issue #37)
2026-06-19 13:36:25 +03:00
ronia 5d4f211f17 fix: bottom navigation bar customization not reflected in NavigationBar (Issue #37) 2026-06-19 13:35:57 +03:00
M57 66da56ca24 feat: connection status indicator in drawer (Issue #28)
feat: connection status indicator in drawer (Issue #28)
2026-06-19 12:40:32 +03:00
M57 27e513f0a3 feat: show app version in Settings screen (Issue #32)
feat: show app version in Settings screen (Issue #32)
2026-06-19 12:39:20 +03:00
M57 0f6625c66e fix: migrate deprecated Compose/Room APIs (Issues #25, #26, #27)
fix: migrate deprecated Compose/Room APIs (Issues #25, #26, #27)
2026-06-19 12:38:16 +03:00
ronia 71d3b975af style: fix ktlint import ordering (LaunchedEffect before collectAsState) 2026-06-19 12:31:43 +03:00
ronia 1db55c57c6 style: fix ktlint import ordering in Navigation.kt 2026-06-19 12:21:20 +03:00
ronia a2c9bb638a style: fix ktlint errors in Navigation.kt 2026-06-19 12:19:29 +03:00
M57 0038606c05 feat: add connection status indicator (Issue #28)
Adds a colored dot next to the '⚡ Hermes' brand header in the
navigation drawer:
  - Green: connected
  - Yellow: connecting / reconnecting
  - Red: disconnected

Uses a StateFlow on HermesWsClient that tracks the WebSocket
connection lifecycle and is collected in the drawer header.
2026-06-19 12:07:44 +03:00
M57 12c60dce16 feat: show app version in Settings screen (Issue #32)
Displays version name and build code at the bottom of the Settings
screen using BuildConfig.VERSION_NAME and VERSION_CODE.
2026-06-19 12:03:37 +03:00
M57 1c1961426a fix: migrate deprecated APIs (Issues #25, #26, #27)
- Icons.Filled.ArrowBack/ListAlt → Icons.AutoMirrored.Filled (Issue #25)
- ScrollableTabRow → PrimaryScrollableTabRow (Issue #26)
- fallbackToDestructiveMigration() → fallbackToDestructiveMigration(false) (Issue #27)
2026-06-19 12:02:07 +03:00
M57 0fa61148a3 Create LICENSE 2026-06-18 22:28:27 +03:00
M57 34df198c4d feat: configurable bottom navigation bar (Issue #23)
## What
Adds a new Navigation Bar section to Settings where users can customize which items appear in the bottom navigation bar.

## Features
- Pick from any of the 19 drawer screens (max 5 items)
- Remove items with a close/delete button
- Items persist via SharedPreferences (CSV format)
- Invalid names are silently dropped
- Existing screens and auth-aware filtering respected

Closes #23
2026-06-18 21:16:21 +03:00
M57andM57 837678c590 fix(#21): remove double spacing above top bar and below chat input (#22)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-18 20:36:56 +03:00
M57andM57 7048985e06 ci(#19): add wrapper validation, remote build cache, and drop dependency-submission (#20)
* ci(#19): add wrapper validation, remote build cache, and dependency submission

* ci(#19): remove flaky dependency-submission job — core CI is enough

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-18 19:32:19 +03:00
M57andM57 b01e6d2fee feat(#17): replace default icons with custom Hermes-branded adaptive icon (#18)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-18 19:16:27 +03:00
M57andM57 7c4735ed1c docs(#15): add comprehensive README (#16)
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-18 19:09:46 +03:00
M57andM57 4892572bcc feat(#13): add pull-to-refresh to HermesScaffold (#14)
- HermesScaffold: added isRefreshing param, wraps content in PullToRefreshBox when onRefresh is set
- All 16 data screens: pass isRefreshing = state.isLoading
- Initial loading only shows full-screen LoadingState when data is empty (no spinner over existing content)
- AchievementsScreen already had the correct pattern, just needed isRefreshing param

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-18 18:58:08 +03:00
M57 d37de1d223 feat(#11): make HermesScaffold title a @Composable slot, convert ChatScreen (#12)
- HermesScaffold: title now @Composable () -> Unit (M3-idiomatic)
- HermesScaffold: added modifier and snackbarHost parameters
- Updated all 18 callers from title="X" to title={Text("X")}
- ChatScreen: converted from raw Scaffold to HermesScaffold
- Removed unused Menu icon import (ktlint fix)
2026-06-18 18:43:45 +03:00
M57andM57 7c27ca624c refactor(#5): convert SettingsScreen to use HermesScaffold
* refactor(#5): convert SettingsScreen to use HermesScaffold

Replace raw Material3 Scaffold + manual TopAppBar with the shared
HermesScaffold wrapper. Removes ~30 lines of duplicated boilerplate
and gives SettingsScreen scroll-aware top bar behavior.

Closes #5

* fix(#5): restore ExperimentalMaterial3Api import for SegmentedButton

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
2026-06-18 18:00:51 +03:00