|
12 | 12 | <p align="center"> |
13 | 13 | <a href="https://github.com/SysAdminDoc/CallShield/releases/latest"><img src="https://img.shields.io/github/v/release/SysAdminDoc/CallShield?style=flat-square&color=a6e3a1" alt="Release"></a> |
14 | 14 | <img src="https://img.shields.io/badge/Spam%20Numbers-51%2C363-f38ba8?style=flat-square" alt="51,363 Numbers"> |
15 | | - <img src="https://img.shields.io/badge/JVM%20unit%20tests-1727-94e2d5?style=flat-square" alt="1727 JVM unit tests"> |
| 15 | + <img src="https://img.shields.io/badge/JVM%20unit%20tests-1740-94e2d5?style=flat-square" alt="1740 JVM unit tests"> |
16 | 16 | <img src="https://img.shields.io/badge/Android-10%2B-89b4fa?style=flat-square" alt="Android 10+"> |
17 | 17 | <img src="https://img.shields.io/badge/License-MIT-cba6f7?style=flat-square" alt="MIT License"> |
18 | 18 | <img src="https://img.shields.io/badge/API%20Keys-None-fab387?style=flat-square" alt="No required API keys"> |
@@ -108,7 +108,7 @@ All detection layers implement a shared `IChecker` interface and run in priority |
108 | 108 | |---------:|-------|---------|-------------| |
109 | 109 | | 11000 | **Emergency Number Floor** | Allow | Recognized emergency and public-safety numbers always ring, ahead of every rule (calls only) | |
110 | 110 | | 10900 | **One-Time Code Floor** | Allow | Short texts carrying a verification code are never flagged, so sign-ins keep working (texts only) | |
111 | | -| 10000 | **Manual Whitelist** | Allow | Numbers you marked as always allowed, emergency contacts included | |
| 111 | +| 10000 | **Manual Whitelist** | Allow | Numbers you marked as always allowed, emergency contacts included, and the number block an entry covers when you chose one | |
112 | 112 | | 9000 | **Contact Whitelist** | Allow | Numbers in your phone's contacts always pass through | |
113 | 113 | | 8800 | **Contacts-Only Mode** | Block | Calls outside your contacts and trusted numbers are blocked | |
114 | 114 | | 8500 | **STIR/SHAKEN Failed** | Block | Carrier-authenticated caller ID failure gets blocked before heuristic layers | |
@@ -244,6 +244,7 @@ The same test runs 5,000 real smishing reports sampled from the IMC 2025 dataset |
244 | 244 | - Export/import blocklists as JSON, per-rule enable/disable toggles |
245 | 245 | - Regex validation before adding wildcard rules |
246 | 246 | - Inline priority-conflict warnings name the whitelist, emergency allow, or block rule that wins before an overlapping rule is saved |
| 247 | +- A trusted number can also let its number block through, for an office or a practice that calls from a row of lines. Pick the numbers that differ only in the last 2 or 3 digits and the entry reads `(555) 234-56XX`. It's off until you pick it, and a number in the block that you blocked by itself stays blocked |
247 | 248 |
|
248 | 249 | ### Statistics |
249 | 250 | - Weekly bar chart with daily breakdown |
@@ -514,12 +515,12 @@ RELEASE_KEY_PASSWORD=... |
514 | 515 | ## Testing |
515 | 516 |
|
516 | 517 | ```bash |
517 | | -./gradlew testDebugUnitTest # 1727 tests |
| 518 | +./gradlew testDebugUnitTest # 1740 tests |
518 | 519 | ./gradlew connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.sysadmindoc.callshield.platform.TargetSdkBehaviorSmokeTest |
519 | 520 | ./gradlew verifyPipelineTests # Cloudflare Worker (node) + data-pipeline and translation checks (python) |
520 | 521 | ``` |
521 | 522 |
|
522 | | -The suite is **1727 total JVM unit tests**, run with Robolectric wherever a screen, a service or the database is involved. |
| 523 | +The suite is **1740 total JVM unit tests**, run with Robolectric wherever a screen, a service or the database is involved. |
523 | 524 |
|
524 | 525 | Two GitHub workflows run without building the app. **Validation** runs the Worker and |
525 | 526 | pipeline suites on every push except report-only ones (`run-pipeline-tests.ps1 -CorrectnessOnly`), |
@@ -556,8 +557,8 @@ language in [issue #7](https://github.com/SysAdminDoc/CallShield/issues/7). |
556 | 557 | | Community API | Cloudflare Workers | |
557 | 558 | | URL Safety | Local spam-domain data, with optional PhishTank and OpenPhish | |
558 | 559 | | Verification | Local Gradle, lint, and release-artifact checks | |
559 | | -| Tests | 1727 JVM unit tests (JUnit) | |
560 | | -| Strings | 1726 string resources and 37 plural groups (translation-ready) | |
| 560 | +| Tests | 1740 JVM unit tests (JUnit) | |
| 561 | +| Strings | 1731 string resources and 37 plural groups (translation-ready) | |
561 | 562 | | Accessibility | 100+ content descriptions, 48dp touch targets | |
562 | 563 | | Min SDK | 29 (Android 10) | |
563 | 564 | | Target SDK | 36 | |
|
0 commit comments