chore(deps): bump actions/stale from 10 to 11 - #134
Closed
dependabot[bot] wants to merge 197 commits into
Closed
Conversation
- Strip ReviewHelper (both FOSS and Play Store variants) - Remove onAppOpens / trackAppOpen plumbing from App.kt and AppSettings.kt - Delete review request callback from MainActivity.kt - Add beer-build.yml workflow for FOSS debug APK builds No functional changes — just removing play store review nags and app-open tracking that fed into them.
…eAll in test MutableList.replaceAll requires @OptIn(ExperimentalNativeApi::class) on native targets, breaking iOS test compilation.
- Rename package com.inspiredandroid.kai -> com.beer.app across all 321 source files and 10 module directories - Change app name from 'Kai 9000' to 'Beer' in all localized strings - Add sanitizeToolSequences() to prevent orphaned tool-call pairs from causing OpenAI API validation errors - Wire sanitization into buildOpenAIMessages and trimMessagesForContext
…-native-api fix: add missing @OptIn(ExperimentalNativeApi) for MutableList.replaceAll in test
…nding - Remove website (site/, docs/, mkdocs.yml), web target (wasmJsMain), iOS (iosApp/, iosMain/) - Remove packaging: flatpak, AUR, fastlane, WinGet + their CI workflows - Rename kai-ui -> beer-ui: file/class/function names across dynamic UI, parser, renderer, TTS - Rename KaiChip/Slider/SearchField/OutlinedTextField -> Beer* components - Update branding strings: window/tray titles, User-Agent, MCP client name, heartbeat - Remove api.kai9000.com endpoint, kai9000.com/docs/ link - Bulk update generated resource namespace: kai.composeapp -> beer.composeapp - Update finetuning golden files and training data - Add naming conventions to CLAUDE.md - Pin rootProject.name warning in settings.gradle.kts
* chore: scrub remaining Kai branding and naming Renamed all 28 files with leftover Kai references to Beer equivalents: - kaiAdaptiveCardColors/ Border/ Surface -> beerAdaptiveCard* - kaiSliderColors/TrackColors -> beerSlider* - Notification channel IDs: kai_ -> beer_ - SharedPrefs: kai_secure_prefs -> beer_secure_prefs - Desktop dir: ~/.kai -> ~/.beer - Debug property: kai.debug -> beer.debug - Shell internals: KAIBASHPID, .kai_cmd_, __kai_st -> beer - Monkey test: package, activity, temp file - URLs: SimonSchubert/Kai -> adrielGGmotion/Kai - Env vars: KAI_* -> BEER_* - Finnish translation: Kain -> Beerin - BotMessage: kaiUiCallback -> beerUiCallback - kai-settings baseName -> beer-settings * fix: address PR review feedback - migration paths and remaining env vars - data_extraction_rules: keep both legacy and new secure prefs excluded - Platform.android.kt: add one-time file rename migration kai_secure_prefs → beer_secure_prefs + also delete legacy file on corruption recovery - Platform.jvm.kt: add one-time directory migration ~/.kai → ~/.beer - BeerUiValidationTest.kt: rename remaining env vars (DeepSeek, xAI, Cerebras, Moonshot, Together, REPORT_DIR, MIN_SUCCESS_RATE, REPLAY_STRICT) * fix: handle renameTo failure in secure prefs migration --------- Co-authored-by: Beer Cleanup Bot <adriel@github.com>
* feat: stable debug keystore via CI secret
- Add debug signingConfig that decodes DEBUG_KEYSTORE_BASE64 into debug.keystore
- Pin debug build type to stable keystore for consistent signatures across CI runs
- Pass DEBUG_KEYSTORE_BASE64 secret in beer-build workflow
- Add debug.keystore to .gitignore
* feat: unify keystore config — both debug and release use base64 decode
- Release signing reads KEYSTORE_B64 from env and writes release.keystore
- Debug signing reads DEBUG_KEYSTORE_BASE64 from env and writes debug.keystore
- Both keystores in .gitignore
- Release build type checks for release.keystore existence, falls back to debug
* ci: pass release signing secrets to Gradle build step
* docs: document build secrets in CLAUDE.md
* fix: address PR review - Base64 import, debug signing config, release workflow
- Add import java.util.Base64 (build was broken without it)
- Use getByName("debug") instead of create("debug") to modify default config
- Remove error() calls from release signing — fall back to android defaults
- Revert release workflow env vars — signing action handles it separately
---------
Co-authored-by: Beer Cleanup Bot <adriel@github.com>
Co-authored-by: Beer Cleanup Bot <adriel@github.com>
…CONTRIBUTING - Dependabot for Gradle + GitHub Actions deps (weekly) - CodeQL static analysis on main + PRs + weekly - Stale bot: issues stale at 60d, PRs at 30d, close at 7d - SECURITY.md with vulnerability reporting instructions - CONTRIBUTING.md with workflow guidelines - Updated FUNDING.yml to point to adrielGGmotion - Added feature request issue template
- PR template with checklist and type selection - Auto-labeler: tags PRs by changed files (android, ci, docs, etc.) - PR title check: enforces conventional commits format - Release Please: auto-changelog + release creation on main
Renamed package com.beer.app -> com.oak.app Renamed classes: BeerApplication -> OakApplication, BeerChip -> OakChip, BeerUi* -> OakUi*, etc. Moved directories com/beer/ -> com/oak/ Updated all imports, declarations, and references Updated CI workflows (beer-build -> oak-build) Updated translation strings Updated documentation Part of the standalone Oak project migration.
Replaced Apache 2.0 LICENSE.txt with GPLv3. Added NOTICE.md crediting Kai's original Apache 2.0 code as required for compliance.
Replace purple color scheme with sage green seed (#5B8C5B) using Material 3 tonal palette derivation. Introduce OakTheme composable with dynamic colors support (Android 12+). Remove all gradients and purple references. Add Dynamic Colors toggle in Settings (Android-only). Append .debug suffix to debug builds to coexist with release installs. New files: - Theme.android.kt — dynamic color resolution on Android 12+ - Theme.jvm.kt — green static scheme on Desktop
Add MaterialKolor (com.materialkolor:material-kolor:4.1.1) dependency and replace the hand-rolled lerp-based tonal() function with its proper HCT-based dynamicColorScheme() derivation. Changes: - gradle/libs.versions.toml: add materialKolor version and library - composeApp/build.gradle.kts: add implementation(libs.materialKolor) to commonMain dependencies - Theme.kt: replace tonal() + greenLightColorScheme() + greenDarkColorScheme() with single greenColorScheme(darkTheme) backed by MaterialKolor's dynamicColorScheme() - Theme.android.kt / Theme.jvm.kt: update actuals to call greenColorScheme(darkTheme)
Add workflow_dispatch inputs so users can choose between debug (com.oak.app.debug), release, or both APK variants, and select android, desktop, or all targets. Push-triggered runs default to the original debug-APK-only behavior.
- Adaptive icons: foreground now shows oak leaf (filled, green #5B8C5B) - Monochrome layer: same leaf in white for Material You tinting - Background: dark green #1A2A1A (was white) - composeApp module: now includes monochrome layer (was missing) - Top-level icon.svg and icon.png replaced with oak leaf - Animated SVGs added to composeResources for splash/loading use later
The old desktop job was a single job on ubuntu-latest that built Linux
packages only. Now each desktop platform gets its own job + runner:
- desktop-linux (ubuntu-latest) — builds Deb, Rpm, AppImage
- desktop-macos (macos-latest) — builds Dmg
- desktop-windows (windows-latest) — builds Msi
Each artifact is named separately (oak-desktop-{linux,macos,windows}).
No Android SDK setup needed for desktop jobs.
- Convert oak leaf SVGs to Android Vector Drawable XML for cross-platform support - Replace purple orbiting circles with oak leaf SVG tinted by Material You - Add BotAvatar composable with oak leaf in circular background - Integrate BotAvatar into BotMessage layout - Fix remaining Kai references: URLs, settings export filename, test prefix
build-mode: none doesn't work for compiled languages — CodeQL couldn't build a database from the Kotlin source. Switched to autobuild with explicit Java 17 setup so it can compile and analyze properly.
Moves SelectionContainer to only wrap content so the copy button lives outside the selectable area. Reuses existing ic_copy drawable and string resource. Click copies the full message text to clipboard.
feat: add skills system and improve prompt injection architecture
## Summary Splits `SkillsSection.kt` (691 lines) into smaller, focused files following the pattern used by other settings sections. ## Changes - **`SkillCard.kt`** — new file containing `SkillCard` and `SkillBadge` composables - **`SkillImportDialog.kt`** — new file containing `ImportSkillDialog` composable - **`SkillEditDialog.kt`** — new file containing `EditSkillDialog` composable - **`SkillsSection.kt`** — reduced from 691 to ~150 lines, now only contains the main `SkillsSection` composable All extracted functions were previously `private` and are now `internal` (same visibility within the module, required since they live in separate files). ## Verification - `./gradlew :composeApp:compileKotlinDesktop` — BUILD SUCCESSFUL - `./gradlew :composeApp:allTests` — BUILD SUCCESSFUL Closes #97 @adrielGGmotion can click here to [continue refining the PR](https://app.all-hands.dev/conversations/6a980996-b1b1-4763-a40d-acc430b92f3d) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added skill cards with enable/disable controls, editing, removal, reset options, status badges, and required-tool details. * Added skill editing with fields for name, description, content, and required tools. * Added skill importing with prefilled details and required-tool support. * **User Experience** * Added confirmation prompts to prevent accidentally discarding edits or resetting modified built-in skills. * Save and import actions are enabled only when required information is complete. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: openhands <openhands@all-hands.dev>
…ring resources Move four hardcoded strings to Compose Multiplatform string resources: - Dynamic Colors (Android 12+) - Adapt to your system wallpaper colors - ⚠ High memory usage — may cause slowdowns or crashes - Badge count with format argument Co-authored-by: openhands <openhands@all-hands.dev>
## Description Remote SSH support is being removed as it was not well elaborated. This strips all SSH-related code from the codebase: - **Deleted source files**: `SshClient.kt`, `SshServerConfig.kt`, `SshServerManager.kt`, `SshClientImpl.kt` - **Deleted tools**: `SshTools.kt` (931 lines — SSH command execution, file ops, port forwarding, connection management) - **Deleted UI**: `SshSection.kt` (422 lines — settings UI for SSH server management) - **Deleted tests**: `SshToolsTest.kt` (500 lines of unit tests) - **Purged all references** from `AppModule.kt`, `DataRepository.kt`, `RemoteDataRepository.kt`, `FakeDataRepository.kt`, `Platform.android.kt`, `Platform.jvm.kt`, `Platform.kt`, `AppSettings.kt`, `SettingsViewModel.kt`, `SettingsUiState.kt`, `SettingsScreen.kt`, `SettingsActions.kt` - **Removed SSHD dependencies** from `build.gradle.kts` and `libs.versions.toml` - **Removed SSH strings** from `strings.xml` (en + sq) - **Removed `createSshClient`** expect/actual declarations ## Related Issue Fixes #116 (superseded — original test PR now repurposed to remove SSH) ## Type of Change - [ ] feat: new feature - [ ] fix: bug fix - [x] chore: maintenance, config, deps - [ ] docs: documentation only - [ ] refactor: code change with no functional impact - [ ] test: adding or fixing tests ## Checklist - [x] Code builds and runs (`./gradlew :composeApp:allTests`) - [x] Changes are focused on a single concern - [x] PR description explains what and why <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added user-facing error messages for context window exceeded, insufficient credits, and quota exhausted. * Improved tool availability by including enabled MCP server tools. * **Changes** * Removed SSH server configuration, connection, and remote execution/file-transfer functionality across platforms. * Removed the SSH settings UI and SSH-related import/export data handling. * MCP server management remains available in settings and tool interactions. * **Chores** * Updated related settings and prompt/tool-refresh logic, plus minor UI/import cleanups.
… to string resources (#129) Closes #75, #76 This PR extracts two remaining sets of hardcoded user-facing strings to Compose Multiplatform string resources. ### #75 — HeartbeatSection.kt (cron and time descriptions) - Cron expression descriptions: "Daily at %s", "Every %s at %s", "Monthly on day %s at %s" - Day name abbreviations: Sun through Sat - Relative time labels: "just now", "%sm ago", "%sh ago", "%sd ago" ### #76 — PopularMcpServers.kt (MCP server descriptions) - Added `localizedDescription()` composable extension function on `PopularMcpServer` that resolves descriptions from string resources - All 9 server descriptions moved to strings.xml @adrielGGmotion can click here to [continue refining the PR](https://app.all-hands.dev/conversations/c8df5cb4-28a6-4ef3-abf7-d0d7875f6f41) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added localized descriptions for popular MCP servers. * Added localized labels for compute preferences, backend status, heartbeat schedules, chat actions, and question flows. * Added clearer sandbox file messages for empty directories and unsupported previews. * **Improvements** * Improved chat messaging when another conversation is generating. * Improved terminal output refresh when switching sessions. * Strengthened streaming response line handling. * **Localization** * Replaced additional hardcoded interface text with translatable resources across chat, settings, heartbeat, sandbox, and markdown views. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
…ring resources (#100) fix: extract hardcoded user-facing strings in SettingsScreen.kt to string resources
Bumps `kotlin` from 2.3.21 to 2.4.10. Updates `org.jetbrains.kotlin.plugin.compose` from 2.3.21 to 2.4.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](JetBrains/kotlin@v2.3.21...v2.4.10) Updates `org.jetbrains.kotlin.multiplatform` from 2.3.21 to 2.4.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](JetBrains/kotlin@v2.3.21...v2.4.10) Updates `org.jetbrains.kotlin.plugin.serialization` from 2.3.21 to 2.4.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](JetBrains/kotlin@v2.3.21...v2.4.10) --- updated-dependencies: - dependency-name: org.jetbrains.kotlin.plugin.compose dependency-version: 2.4.10 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.jetbrains.kotlin.multiplatform dependency-version: 2.4.10 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.jetbrains.kotlin.plugin.serialization dependency-version: 2.4.10 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
The import com.oak.app.mcp.localizedDescription was added in commit f8e9338 but the corresponding extension function was never defined. This causes a compilation error under Kotlin 2.4.10, which rejects unresolved import references. Since the function is never called in the file, simply remove the dead import. Co-authored-by: openhands <openhands@all-hands.dev>
…2.4.10 deps: bump kotlin from 2.3.21 to 2.4.10
Adds serviceConfigVersion counter to DataRepository that increments on every service config mutation (add/remove/reorder/update key or model). Both ChatViewModel and SettingsViewModel now observe this flow reactively instead of relying on manual snapshot reads at init time. - ChatViewModel: availableServices now updates reactively when config changes, not just on init or manual refreshSettings() calls - SettingsViewModel: service/MCP lists refresh reactively from external changes (import, background ops); model list observed as a flow so API fetch results appear without manual refreshInstanceModels call - App.kt: DisposableEffect preserved for desktop tab-bar navigation where onNavigateBack isn't called; handles non-reactive conversation state restoration - FakeDataRepository tracks version bumps for test consistency
Adds unit tests for files identified as lacking coverage in open issues. Covers data layer, email, MCP, network, tools, and markdown packages. Files added: - data: ConversationTest, EmailStoreTest, FileClassificationTest, HeartbeatManagerTest, MemoryStoreTest, ServiceTest, TaskSchedulerTest - email: ImapClientTest, SmtpClientTest - mcp: McpClientTest, McpServerManagerTest - network: RequestsTest - tools: CommonToolsTest, EmailToolsTest, SkillToolsTest, SmsToolsTest - ui/markdown: BlockScannerSupplementTest, MathParserSupplementTest Fix: Remove unused import (localizedDescription) in McpSection.kt that prevented compilation. Closes #67, #68, #71, #72, #78, #79, #81, #82, #90, #91, #94, #98, #103, #105, #106, #108, #109, #112, #117, #118, #122, #123
…rage test: add unit test coverage across 19 source files
- Expand toolCallMarkerRegex to match <tool_calls> (plural) variants - Replace single-pass parseInlineToolCalls with parseAnyToolCalls that tries json format as second fallback before returning text - Fix nested json args in tool calls via position-based balanced-brace extraction instead of lazy regex capture - Add repeated-result bailout across all 3 providers: if same tool returns same content 5 times, force final synthesize call - Remove dead parseInlineToolCalls and InlineToolCallResult
Bumps actions/labeler from 6 to 7. v7 migrates to ESM internally with no config format changes.
Bumps [actions/stale](https://github.com/actions/stale) from 10 to 11. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](actions/stale@v10...v11) --- updated-dependencies: - dependency-name: actions/stale dependency-version: '11' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps actions/stale from 10 to 11.
Release notes
Sourced from actions/stale's releases.
... (truncated)
Changelog
Sourced from actions/stale's changelog.
... (truncated)
Commits
4391f3dFix 24 high severity vulnerabilities by overriding brace-expansion to 5.0.8 (...eaf9131refactor: update imports to use ES module syntax and improve test structure (...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)