Skip to content

feat(link): trust manual asset pick, skip re-download verification#627

Merged
rainxchzed merged 1 commit into
mainfrom
feat/manual-match-no-redownload
May 16, 2026
Merged

feat(link): trust manual asset pick, skip re-download verification#627
rainxchzed merged 1 commit into
mainfrom
feat/manual-match-no-redownload

Conversation

@rainxchzed
Copy link
Copy Markdown
Member

@rainxchzed rainxchzed commented May 16, 2026

Sprint 3 Task 15. Email feedback (vbidv): manual app matching re-downloaded the picked APK to verify package + signing key, then linked. User already saw the asset in the picker and chose deliberately — re-download wastes bandwidth + time for verification the user can't override anyway.

Changes:

  • `validateWithAsset` collapsed: drop `downloader.download` + `apkInfo` extraction + signing-fingerprint check. Call `linkAppToRepo` directly with the picked asset metadata.
  • `installSource = MANUAL` (already set by `linkAppToRepo`) drives the existing `LinkedRepoBanner` on Details.
  • Banner body text refreshed: "Manually linked — verified by you. Unlink to re-scan." — communicates the trust model explicitly. 13 locale translations updated.
  • Whatsnew bullet × 13 locales.

Removed code paths (re-download progress UI, signing-key error state, file cleanup) stay in the codebase implicitly — `Res.string.signing_key_mismatch_link`, `downloading_for_verification`, `download_failed`, `verifying_signing_key` are now orphan but harmless.

Test plan

  • Compile clean
  • Device: open link sheet, pick app, paste repo URL, select asset — link should complete in <500ms (no download). Banner shows on Details.

Summary by CodeRabbit

Release Notes

  • New Features

    • Details view now displays a banner indicating when an app was manually linked.
  • Bug Fixes

    • Manually linked apps no longer require re-downloading for verification; the selected version is automatically trusted.
    • Improved rendering of expandable sections and adjacent badge/button layouts.

Review Change Stack

Copy link
Copy Markdown

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

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

rainxchzed has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@rainxchzed rainxchzed merged commit ec94daf into main May 16, 2026
1 check was pending
@rainxchzed rainxchzed deleted the feat/manual-match-no-redownload branch May 16, 2026 17:36
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 16, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: b52f0de4-6cc0-405b-bf25-9e7f8b03dc3d

📥 Commits

Reviewing files that changed from the base of the PR and between 2d94504 and ffe7c66.

📒 Files selected for processing (27)
  • core/presentation/src/commonMain/composeResources/files/whatsnew/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/ar/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/bn/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/es/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/fr/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/hi/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/it/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/ja/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/ko/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/pl/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/ru/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/tr/18.json
  • core/presentation/src/commonMain/composeResources/files/whatsnew/zh-CN/18.json
  • core/presentation/src/commonMain/composeResources/values-ar/strings-ar.xml
  • core/presentation/src/commonMain/composeResources/values-bn/strings-bn.xml
  • core/presentation/src/commonMain/composeResources/values-es/strings-es.xml
  • core/presentation/src/commonMain/composeResources/values-fr/strings-fr.xml
  • core/presentation/src/commonMain/composeResources/values-hi/strings-hi.xml
  • core/presentation/src/commonMain/composeResources/values-it/strings-it.xml
  • core/presentation/src/commonMain/composeResources/values-ja/strings-ja.xml
  • core/presentation/src/commonMain/composeResources/values-ko/strings-ko.xml
  • core/presentation/src/commonMain/composeResources/values-pl/strings-pl.xml
  • core/presentation/src/commonMain/composeResources/values-ru/strings-ru.xml
  • core/presentation/src/commonMain/composeResources/values-tr/strings-tr.xml
  • core/presentation/src/commonMain/composeResources/values-zh-rCN/strings-zh-rCN.xml
  • core/presentation/src/commonMain/composeResources/values/strings.xml
  • feature/apps/presentation/src/commonMain/kotlin/zed/rainxch/apps/presentation/AppsViewModel.kt

Walkthrough

This PR implements and documents a simplified manual app linking flow: user-selected assets are immediately trusted without downloading and verifying the signing key. Release notes, all 14 localized banner strings, and the app linking logic are updated together to support this behavior change.

Changes

Manual App Linking Trust Flow

Layer / File(s) Summary
Release notes for v1.8.3 manual linking
core/presentation/src/commonMain/composeResources/files/whatsnew/**/18.json
13 locales (en, ar, bn, es, fr, hi, it, ja, ko, pl, ru, tr, zh-CN) updated with new bullet documenting that manually matched apps no longer re-download and that Details shows a banner indicating manual linkage.
Localized Details banner messages for manual linking
core/presentation/src/commonMain/composeResources/values**/strings*.xml
details_linked_repo_banner_body string updated across all 14 locales (English + ar, bn, es, fr, hi, it, ja, ko, pl, ru, tr, zh-rCN). Message changed from "Wrong app? Unlink to re-scan." to "Manually linked — verified by you. Unlink to re-scan."
Trust-selected-asset logic in AppsViewModel
feature/apps/presentation/src/commonMain/kotlin/zed/rainxch/apps/presentation/AppsViewModel.kt
validateWithAsset simplified to skip download and APK signing-key verification; selected assets are immediately trusted. Exception handling refactored to catch generic Exception and set unified repoValidationError state.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • OpenHub-Store/GitHub-Store#603: Introduces the LinkedRepoBanner UI component that displays the details_linked_repo_banner_body string updated in this PR; manual linking banner and unlink action rendered together.

Poem

🐰 No more downloads to verify,
Trust what users pick—oh my!
"Linked by hand," the banner states,
Fourteen tongues now celebrate,
Swift and sure, no APK waits! 🎉

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/manual-match-no-redownload

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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