Skip to content

Commit 898a44a

Browse files
committed
feat(allow): let a trusted number cover its number block
An office that calls from a row of lines needed every one allowed by hand. A permanent allow-list entry of 8 digits or more can now also allow the numbers that differ only in its last 2 or 3 digits. It's off by default, the entry shows the block as (555) 234-56XX, and a number inside the block that the user blocked by itself stays blocked, since the allow list outranks the user's own blocks. Room v19 adds whitelist.rangeDigits (default 0). Backups carry it without a format bump; an older reader ignores the field.
1 parent fc4fb3c commit 898a44a

22 files changed

Lines changed: 1349 additions & 18 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ All notable changes to CallShield will be documented in this file.
44

55
## Unreleased
66

7+
- A trusted number can let its whole number block through. A doctor's office
8+
that calls from 555-234-5601 one day and 555-234-5617 the next needed every
9+
line allowed by hand. Now the entry's menu offers the numbers that differ
10+
only in the last 2 digits (100 numbers) or 3 (1,000), and the entry shows
11+
the block it covers as `(555) 234-56XX`. It's off by default, only a
12+
permanent entry of 8 digits or more can take one, and a number inside the
13+
block that you blocked by itself stays blocked. Backups carry the block.
714
- Settings > External blocklists opens with Recommended lists: OpenCallShield
815
(Colombia), SpamChile (Chile) and Turkish Spam Numbers (Turkey), each showing
916
its country and license beside an Add button. Nothing is downloaded until you

‎README.md‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<p align="center">
1313
<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>
1414
<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">
1616
<img src="https://img.shields.io/badge/Android-10%2B-89b4fa?style=flat-square" alt="Android 10+">
1717
<img src="https://img.shields.io/badge/License-MIT-cba6f7?style=flat-square" alt="MIT License">
1818
<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
108108
|---------:|-------|---------|-------------|
109109
| 11000 | **Emergency Number Floor** | Allow | Recognized emergency and public-safety numbers always ring, ahead of every rule (calls only) |
110110
| 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 |
112112
| 9000 | **Contact Whitelist** | Allow | Numbers in your phone's contacts always pass through |
113113
| 8800 | **Contacts-Only Mode** | Block | Calls outside your contacts and trusted numbers are blocked |
114114
| 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
244244
- Export/import blocklists as JSON, per-rule enable/disable toggles
245245
- Regex validation before adding wildcard rules
246246
- 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
247248

248249
### Statistics
249250
- Weekly bar chart with daily breakdown
@@ -514,12 +515,12 @@ RELEASE_KEY_PASSWORD=...
514515
## Testing
515516

516517
```bash
517-
./gradlew testDebugUnitTest # 1727 tests
518+
./gradlew testDebugUnitTest # 1740 tests
518519
./gradlew connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.sysadmindoc.callshield.platform.TargetSdkBehaviorSmokeTest
519520
./gradlew verifyPipelineTests # Cloudflare Worker (node) + data-pipeline and translation checks (python)
520521
```
521522

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.
523524

524525
Two GitHub workflows run without building the app. **Validation** runs the Worker and
525526
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).
556557
| Community API | Cloudflare Workers |
557558
| URL Safety | Local spam-domain data, with optional PhishTank and OpenPhish |
558559
| 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) |
561562
| Accessibility | 100+ content descriptions, 48dp touch targets |
562563
| Min SDK | 29 (Android 10) |
563564
| Target SDK | 36 |

0 commit comments

Comments
 (0)