Commit 0c98cd1
feat(install): blacklist packages, and fix the dead VirusTotal button
## Blacklist (#101 parity — InstallerX has this, we did not)
Packages the user chooses never to install. Deliberately not an
InstallRisk: a risk warns and lets you push past it, and a blacklist you
can click through is not a blacklist. The gate lives inside
confirmInstall — the single funnel every install path reaches, so a new
entry point cannot bypass it — and reads a hot StateFlow rather than
DataStore, because that runs on the main thread.
Surfaced everywhere the state matters, which was the gap in the first
attempt:
- Manage: a Blocked badge on the row, in error colours next to the
neutral System/Split badges, plus a Blocked filter chip. The chips
generate from AppFilter.entries so the enum entry was enough.
- Install sheet and install dialog: a banner above the footer with the
Install button disabled, and Unblock right there. Learning something
is blocked happens when you try to install it; making the user hunt
through Settings to undo it is the wrong shape.
- Settings → Blocked packages: its own screen, not a collapsed section
buried between Sync and Advanced. Review-and-remove only — no text
field, because nobody types com.example.app from memory and a typo
silently blocks nothing. Adding happens in Manage where the user can
see what they are blocking.
Blocking is a toggle, so the same row unblocks.
## VirusTotal button did nothing without a key
The VirusTotal card lives inside ApkInfoContent's scroll area, which
only exists when the sheet is expanded. Tapping Scan from the compact
sheet set the state and rendered the result into a composable that was
not on screen — no key, no result, no error, just a dead button.
The button now expands the sheet first. And rather than only reporting
"no API key", both the sheet and the dialog offer the fix: Add API key
opens Settings, Get a free key opens virustotal.com.
Verified on device: the dialog's VirusTotal row shows the no-key message
and opens Settings when tapped.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent b16f04b commit 0c98cd1
19 files changed
Lines changed: 629 additions & 11 deletions
File tree
- app/src/main
- java/app/pwhs/universalinstaller
- domain
- manager
- model
- presentation
- install
- dialog
- manage
- setting
- blacklist
- res
- values-vi
- values-zh
- values
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
215 | 215 | | |
216 | 216 | | |
217 | 217 | | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
218 | 222 | | |
219 | 223 | | |
220 | 224 | | |
| |||
Lines changed: 38 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
43 | 45 | | |
Lines changed: 91 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
139 | 140 | | |
140 | 141 | | |
141 | 142 | | |
| 143 | + | |
142 | 144 | | |
143 | 145 | | |
144 | 146 | | |
| |||
332 | 334 | | |
333 | 335 | | |
334 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
335 | 346 | | |
336 | 347 | | |
337 | 348 | | |
| |||
347 | 358 | | |
348 | 359 | | |
349 | 360 | | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
350 | 395 | | |
351 | 396 | | |
352 | 397 | | |
| |||
387 | 432 | | |
388 | 433 | | |
389 | 434 | | |
| 435 | + | |
390 | 436 | | |
391 | 437 | | |
392 | 438 | | |
| |||
397 | 443 | | |
398 | 444 | | |
399 | 445 | | |
400 | | - | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
401 | 454 | | |
402 | 455 | | |
403 | 456 | | |
| |||
418 | 471 | | |
419 | 472 | | |
420 | 473 | | |
421 | | - | |
| 474 | + | |
| 475 | + | |
422 | 476 | | |
423 | 477 | | |
424 | 478 | | |
| |||
530 | 584 | | |
531 | 585 | | |
532 | 586 | | |
533 | | - | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
534 | 596 | | |
535 | 597 | | |
536 | 598 | | |
| |||
574 | 636 | | |
575 | 637 | | |
576 | 638 | | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
577 | 665 | | |
578 | 666 | | |
579 | 667 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
401 | 401 | | |
402 | 402 | | |
403 | 403 | | |
| 404 | + | |
404 | 405 | | |
405 | 406 | | |
406 | 407 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
| 181 | + | |
181 | 182 | | |
182 | 183 | | |
183 | 184 | | |
| |||
249 | 250 | | |
250 | 251 | | |
251 | 252 | | |
| 253 | + | |
252 | 254 | | |
253 | 255 | | |
254 | 256 | | |
| |||
490 | 492 | | |
491 | 493 | | |
492 | 494 | | |
| 495 | + | |
493 | 496 | | |
494 | 497 | | |
495 | 498 | | |
| |||
Lines changed: 48 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
| |||
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| 52 | + | |
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
| |||
119 | 121 | | |
120 | 122 | | |
121 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
122 | 136 | | |
123 | 137 | | |
124 | 138 | | |
| |||
404 | 418 | | |
405 | 419 | | |
406 | 420 | | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
407 | 436 | | |
408 | 437 | | |
409 | 438 | | |
| |||
1547 | 1576 | | |
1548 | 1577 | | |
1549 | 1578 | | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
1550 | 1597 | | |
1551 | 1598 | | |
1552 | 1599 | | |
| |||
2131 | 2178 | | |
2132 | 2179 | | |
2133 | 2180 | | |
| 2181 | + | |
2134 | 2182 | | |
2135 | 2183 | | |
2136 | 2184 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
122 | 123 | | |
123 | 124 | | |
124 | 125 | | |
| 126 | + | |
125 | 127 | | |
126 | 128 | | |
127 | 129 | | |
| |||
Lines changed: 16 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
565 | 565 | | |
566 | 566 | | |
567 | 567 | | |
568 | | - | |
569 | | - | |
570 | | - | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
571 | 583 | | |
572 | | - | |
573 | | - | |
| 584 | + | |
574 | 585 | | |
575 | 586 | | |
576 | 587 | | |
| |||
0 commit comments