Skip to content

Fix/agent crashes v0.4.1 - #3

Open
Devil1716 wants to merge 34 commits into
mainfrom
fix/agent-crashes-v0.4.1
Open

Fix/agent crashes v0.4.1#3
Devil1716 wants to merge 34 commits into
mainfrom
fix/agent-crashes-v0.4.1

Conversation

@Devil1716

Copy link
Copy Markdown
Owner

Summary

  • what changed
  • why it changed

Validation

  • android/gradlew lintDebug
  • android/gradlew testDebugUnitTest
  • android/gradlew connectedDebugAndroidTest
  • Physical-device checklist items completed where applicable

Risk Review

  • No new silent destructive actions
  • Risky actions still require confirmation
  • No secrets or credentials added to the repo
  • Release notes/changelog updated if needed

Devil1716 added 19 commits April 7, 2026 03:56
…ation dialogs, notification listener, onboarding, tests

- Material Design theming with deep indigo/teal brand colors and card-based UI
- Voice input via RecognizerIntent with ActivityResultContracts
- Execution history (JSON persistence, FIFO capped at 50, tap-to-rerun)
- Confirmation dialog flow for risky actions (calls, messages)
- NotificationListenerService for real notification summaries
- Onboarding activity with accessibility & notification permission setup
- Generated AI agent app icon across all mipmap densities
- 31 new unit tests (ExecutionCoordinator, IntentExecutor, BrowserExecutor, AccessibilityExecutor)
- All 39 unit tests pass, build successful
- New build-and-publish.yml: builds debug APK on every push to main, creates a GitHub Release with direct download link
- CI now triggers on all branches (not just main)
- Changelog updated for v0.2.0 with all new features
- Fix Android 12+ installation by exporting system-bound services
- Add package name to manifest for better tool compatibility
- Add User-Agent header to GitHub API requests in UpdateManager
- Extract direct APK download URL from GitHub assets
- Enable build-time versionName injection via Gradle properties
- Ensure CI/CD passes the build tag to embedded versionName

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c51cb8b195

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

for (i in 1..MAX_AUTONOMOUS_STEPS) {
try {
val result = executor.execute(step, currentStepObservation)
result.externalAction?.let(externalActions::add)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Execute autonomous step actions before recapturing state

This loop queues result.externalAction but does not execute it before taking the next observationService.capture(), so each iteration can reason over unchanged UI and enqueue duplicate intents instead of progressing step-by-step. This is especially problematic for structured model outputs (for example OPEN_APP/WEB_SEARCH) because those actions are only launched later in MainActivity after run() returns.

Useful? React with 👍 / 👎.

externalAction = actionParser.parse(
command = step.payload.orEmpty(),
responseSummary = response.summary
) ?: AgentAccessibilityService.dispatchAutonomousAction(response.summary)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove unsafe fallback for unparsed autonomous responses

When parsing fails, this falls back to AgentAccessibilityService.dispatchAutonomousAction(response.summary), whose default branch performs global RECENTS+BACK navigation for unknown text. In practice, many non-structured summaries will hit this path, causing unsolicited device navigation instead of a safe no-op/error and creating risky user-visible behavior.

Useful? React with 👍 / 👎.

.build()

val startTime = System.currentTimeMillis()
val response = client.newCall(httpRequest).execute()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Close relay HTTP responses after inference

The synchronous OkHttp call result is used without closing the Response. Repeated inferences can leak sockets/file descriptors and degrade or fail subsequent requests; wrapping the response in use { ... } (for both success and error paths) avoids connection/resource leaks.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant