chore: add F-Droid metadata and fastlane store listing#4
chore: add F-Droid metadata and fastlane store listing#4KoheiYamashita merged 3 commits intomainfrom
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request focuses on enhancing the project's discoverability and distribution by integrating comprehensive F-Droid and Fastlane metadata. The changes enable the application to be listed on F-Droid with detailed descriptions and build instructions, significantly broadening its reach to users who prefer open-source app repositories. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request adds metadata for F-Droid and Fastlane. The changes are mostly correct, but I've found a few critical issues in the F-Droid build recipe (io.clawdroid.yml) that will cause the build to fail. Specifically, the script attempts to download a non-existent Go version, and the build command for Android uses an incorrect operating system target (GOOS=linux instead of GOOS=android). I've also pointed out a minor inconsistency in the AntiFeatures declaration and a stylistic issue regarding missing newlines in all new text files. Please address the critical issues to ensure the F-Droid build is successful.
| init: |- | ||
| cd ../.. | ||
| # Extract Go version from go.mod | ||
| GO_VERSION=$(grep '^go ' go.mod | awk '{print $2}') |
There was a problem hiding this comment.
The go.mod file seems to specify Go version 1.25.6, which is not a valid Go version and will cause the wget command on line 44 to fail with a 404 error. Please correct the Go version in go.mod to a valid, available version (e.g., a recent stable version like 1.22.x). This is critical for the F-Droid build to succeed.
| export PATH=$HOME/go/bin:$PATH | ||
| export GOPATH=$HOME/gopath | ||
| # Build Go backend for all Android architectures | ||
| make build-android |
There was a problem hiding this comment.
The make build-android command is executed here to build the Go backend. However, the build-android target in the Makefile uses GOOS=linux instead of the correct GOOS=android for cross-compiling to Android. This will produce binaries for Linux instead of Android, which will likely fail to run on a device. Please update the Makefile to use GOOS=android for all Android build commands.
| * 16+ built-in tools (file ops, web search, memory, cron, MCP) | ||
| * Multi-channel support (Telegram, Discord, Slack, WhatsApp, LINE) | ||
| * 10+ LLM providers (OpenAI, Anthropic, Gemini, and more) | ||
| * Termux edition for advanced users |
| @@ -0,0 +1,2 @@ | |||
| * Fix CA certificate path for CGO_ENABLED=0 Android builds | |||
| * Fix DNS resolver for CGO_ENABLED=0 Android builds No newline at end of file | |||
There was a problem hiding this comment.
|
|
||
| Requires an LLM API key (OpenAI, Anthropic, Gemini, etc.) to function. | ||
|
|
||
| Source code: https://github.com/KarakuriAgent/clawdroid No newline at end of file |
There was a problem hiding this comment.
| * 16以上のツール(ファイル、Web検索、メモリ、MCP) | ||
| * マルチチャンネル(Telegram、Discord、Slack等) | ||
| * 10以上のLLMプロバイダー対応 | ||
| * Termux版 |
| @@ -0,0 +1,2 @@ | |||
| * CGO_ENABLED=0 Androidビルドの CA 証明書パスを修正 | |||
| * CGO_ENABLED=0 AndroidビルドのDNSリゾルバーを修正 No newline at end of file | |||
|
|
||
| 動作にはLLM APIキー(OpenAI、Anthropic、Gemini等)が必要です。 | ||
|
|
||
| ソースコード: https://github.com/KarakuriAgent/clawdroid No newline at end of file |
There was a problem hiding this comment.
| @@ -0,0 +1 @@ | |||
| Go内蔵AIアシスタント - チャット、音声、デバイス自動操作 No newline at end of file | |||
| antifeatures: | ||
| NonFreeNet: | ||
| en-US: Requires a third-party LLM API to function. | ||
|
|
There was a problem hiding this comment.
Add fastlane metadata (en-US, ja) with app descriptions, changelogs, and 512x512 icon for F-Droid submission. Include fdroiddata YAML template with Go toolchain setup and embedded flavor build recipe. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 7 phone screenshots (chat, voice, overlay) for en-US and ja - Rename changelog to match current versionCode (4) - Remove outdated changelog for versionCode 2 - Auto-generate fastlane changelog from merged PR titles during version bump Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
60df04c to
4b6125d
Compare
- Merge duplicate parameter descriptions in buildParameters (#1) - Use map for DisabledActions lookup in isActionEnabled (#2) - Add URL scheme whitelist (http/https only) for open_url (#3) - Escape SQL LIKE wildcards in ContactsActionHandler (#4) - Fix JSON tag inconsistency: web_actions -> web (#5) - Add comprehensive tests for android tool (#6) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: extend android tool with category-based action system Split monolithic android tool into category-based modules (alarm, calendar, contacts, communication, media, navigation, device control, settings, web, clipboard) with per-category enable/disable config. Privacy-sensitive categories (contacts, communication) default to off. Closes #24 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address PR review feedback - Merge duplicate parameter descriptions in buildParameters (#1) - Use map for DisabledActions lookup in isActionEnabled (#2) - Add URL scheme whitelist (http/https only) for open_url (#3) - Escape SQL LIKE wildcards in ContactsActionHandler (#4) - Fix JSON tag inconsistency: web_actions -> web (#5) - Add comprehensive tests for android tool (#6) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: replace DisabledActions with struct-based per-action toggles Replace the DisabledActions string slice with typed action structs (AlarmActions, CalendarActions, etc.) grouped under AndroidActions. Each action is now a bool field with a label tag, so the schema system auto-generates individual toggles in the settings UI. - Add 10 category action structs + AndroidActions wrapper to config - Update migrateV2ToV3 to convert old DisabledActions to new struct - Add depth field to SchemaField for hierarchical UI rendering - Hide DisabledActions from UI via empty label tag - Update Android app to use depth-based indentation in config screen Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: unify categories and actions into per-category structs Merge the separate Categories/Actions structure into unified category wrappers (e.g. AlarmCategory with Enabled + Actions). This makes each category toggle and its actions appear together in the settings UI with proper depth-based hierarchy. Android UI now disables child action toggles when the parent category is turned off, providing clear visual feedback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: propagate section-level enabled toggle to all child fields When the top-level "Enabled" toggle (e.g. Android tool) is turned off, all child categories and actions are now greyed out in the settings UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use depth instead of group to detect section-level toggle The section-level "Enabled" field (e.g. android.enabled) has a non-empty group ("Android"), so the previous group.isEmpty() check never matched. Use depth <= 1 to identify section toggles and depth > 1 for category toggles. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add runtime permission requests before tool action execution Add permission checking/requesting before ActionHandler execution so users see permission dialogs instead of SecurityException errors. Runtime permissions (calendar, contacts, location) use PermissionRequester with suspendCancellableCoroutine to await the dialog result. Special permissions (DND, write settings) open the settings screen with an error message since they cannot be awaited programmatically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: use ContentResolver.insert for create_event instead of Intent Replace the Intent-based calendar event creation (which opens the calendar app's add screen) with direct ContentResolver.insert() for consistency with update_event, delete_event, and add_reminder. Automatically selects the primary or first writable calendar as default. WRITE_CALENDAR permission is now required and requested via the permission dialog. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add calendar picker for selecting target calendar account Allow users to choose which calendar to use for write actions (create_event, update_event, add_reminder) instead of always auto-detecting the primary calendar. On first use without a configured calendar, a picker dialog is shown and the selection is saved to config. The setting is also editable from the config UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: remove liveCfg from AndroidTool and redesign calendar picker with Compose Remove runtime config mutation (saveCalendarIdToConfig) from CalendarActionHandler — calendar_id is now a value copy from config, changed via settings screen and reflected on restart. Replace android.app.AlertDialog in CalendarPickerActivity with Compose AlertDialog using ClawDroidTheme colors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: change calendar setting label from auto-detect to pick each time When calendar_id is empty, the picker launches every write action. The label should reflect this behavior instead of implying auto-detection. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add input validation and race condition guards for security hardening - Add phone number and email validation (Go + Kotlin) to reject injection attempts - Validate intent extras to only allow primitive types (reject nested maps/arrays) - Return error for invalid settings sections instead of silent fallback - Add URL scheme validation (http/https only) in WebActionHandler - Fix BroadcastReceiver double-unregister race with AtomicBoolean guard - Add comprehensive tests for all new validations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
📝 Description
Add fastlane metadata and fdroiddata YAML template for F-Droid submission.
Fastlane metadata (en-US, ja):
short_description.txt— app summary (≤80 chars)full_description.txt— detailed description basedon README
changelogs/— changelogs for versionCode 1 (v0.1.0) and 2 (v0.2.0)images/icon.png— 512x512 app icon (resized from assets/clawdroid_large.png)fdroiddata template:
fdroid/metadata/io.clawdroid.yml— build recipe with Go toolchain setup,make build-android, andgradle embeddedflavor🗣️ Type of Change
🔗 Linked Issue
📚 Technical Context (Skip for Docs)
how F-Droid's build server compiles the app (Go toolchain + Gradle embedded flavor).
🧪 Test Environment & Hardware
N/A (metadata files only, no code changes)
📸 Proof of Work (Optional for Docs)
Click to view file structure
android/fastlane/metadata/android/
├── en-US/
│ ├── short_description.txt (70 chars)
│ ├── full_description.txt
│ ├── changelogs/
│ │ ├── 1.txt (465 chars)
│ │ └── 2.txt (110 chars)
│ └── images/
│ └── icon.png (512x512, 269KB)
└── ja/
├── short_description.txt (79 chars)
├── full_description.txt
└── changelogs/
├── 1.txt (429 chars)
└── 2.txt (126 chars)
fdroid/metadata/
└── io.clawdroid.yml
☑️ Checklist