feat: Android in-app APK auto-update with download progress modal#159
Draft
feat: Android in-app APK auto-update with download progress modal#159
Conversation
Agent-Logs-Url: https://github.com/DodoraApp/DodoStream/sessions/d3a57268-42a0-4792-ac8f-d25fa6cd4067 Co-authored-by: Kombustor <4238281+Kombustor@users.noreply.github.com>
Agent-Logs-Url: https://github.com/DodoraApp/DodoStream/sessions/d3a57268-42a0-4792-ac8f-d25fa6cd4067 Co-authored-by: Kombustor <4238281+Kombustor@users.noreply.github.com>
Agent-Logs-Url: https://github.com/DodoraApp/DodoStream/sessions/d3a57268-42a0-4792-ac8f-d25fa6cd4067 Co-authored-by: Kombustor <4238281+Kombustor@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Implement auto-updating functionality for Android app
feat: Android in-app APK auto-update with download progress modal
Apr 20, 2026
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.
Adds Android-only auto-update support: instead of redirecting to the GitHub releases page, the app downloads the APK directly and triggers the system installer — with a clean progress modal for the download step.
GitHub API
GithubReleaseAssettype;GithubRelease.assetsnow populated from API responsepickApkAsset()helper selects the best APK from release assets (prefers arm64, excludes TV builds)Core hook —
useAndroidApkInstallidle → downloading → ready → error) with cancellation and 0–1 progress viaexpo-file-system/legacyFileSystem.getContentUriAsync+Linking.openURL(no new native dependencies)UI
ApkInstallModal— minimal download-progress modal: contextual icon, filename,ProgressBar, percentage, Cancel / Install actions; no-ops on non-AndroidGithubReleaseModal— shows "Download & Install" on Android when an APK asset is present; rendersApkInstallModalfor the progress stepAboutSettingsContent— "Download & Install" row in the Releases card (Android only, update available)Permissions / config
android.permission.REQUEST_INSTALL_PACKAGEStoapp.config.tsexpo-file-systemas an explicitpackage.jsondependency (was transitive)Original prompt
start
[Chronological Review: The conversation began with the user requesting a plan for implementing auto-updating functionality for an Android app, including user permissions and an update button. The user then expressed a preference for a cleaner second modal. Following this, the user requested to start the implementation and create a pull request (PR). The user later canceled this request, delegating the task to a cloud agent.][Intent Mapping:
[Technical Inventory:
[Code Archaeology: No specific files or code changes were discussed in detail during this conversation.]
[Progress Assessment:
[Context Validation: All necessary context for continuing the work on the auto-update feature is captured, including user preferences for UI design and the decision to delegate the task.]
[Recent Commands Analysis:
1. Conversation Overview: - Primary Objectives: - "how can we implement auto-updating (only for android)..." - User seeks a plan for auto-updating an Android app. - "second modal is cleaner" - User prefers a cleaner design for the second modal. - "Start implementation" and "start implementation and create PR" - User requests to initiate the implementation and create a pull request. - "Cancel: 'Delegate to cloud agent'" - User decides to delegate the task to a cloud agent. - Session Context: The conversation flowed from planning the auto-update feature to discussing UI preferences, followed by requests to start implementation and ultimately delegating the task. - User Intent Evolution: The user initially sought to implement a feature, then refined UI preferences, and finally opted to delegate the task.- Technical Foundation:
- Auto-updating functionality: Aimed at allowing the app to update itself by fetching APKs from GitHub releases.
- User permission handling: Ensuring the app can install updates with user consent.
- Codebase Status:
- No specific files or code changes were discussed in detail during this conversation.
- Problem Resolution:
- Issues Encountered: No specific technical problems were identified, but the user expressed a need for a cleaner UI.
- Solutions Implemented: No solutions were implemented as the task was delegated before any coding began.
- Debugging Context: No ongoing troubleshooting efforts were noted.
- Lessons Learned: User preferences for UI design were highlighted.
- Progress Tracking:
- Completed Tasks: User outlined requirements for the auto-update feature.
- Partially Complete Work: Implementation was requested but not started before the task was delegated.
- Active Work State:
- Current Focus: The user was focused on implementing the auto-update feature for the Android app.
- Recent Context: The last few exchanges involved requests to start implementation and create a PR, followed by a cancellation to delegate the task.
- Working Code: No specific code snippets were discussed recently.
- Immediate Context: The user was preparing to start implementation when the task was canceled.
- Recent Operations:
- Last Agent Commands: "start implementation and create PR", "Cancel: 'Delegate to cloud agent'".
- Tool Results Summary: No specific tool results were generated as the implementation was not initiated.
- Pre-Summary State: The agent was preparing to start the implementation of the auto-update feature when the user decided to delegate the task.
- Operation Context: The commands were executed in the context of implementing an auto-update feature for an Android app.
- Co...
Created from VS Code.