You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f136f95
Browse filesBrowse the repository at this point in the historyBrowse files
feat(blocklists): refresh external subscriptions on a schedule
A subscription was fetched only when it was added or switched back on, so a
list that changes daily went stale on the device indefinitely.
ExternalBlocklistRefreshWorker runs every six hours on a network and fetches
each enabled list that is due. A list is due a day after its last successful
sync, or on the interval it declares in a uBlock-style header
("# Expires: 12 hours", or a top-level "expires" in JSON), clamped to between
six hours and a week. A failing list is retried no sooner than six hours
after the last attempt.
Nobody reads a preview in the background, so a download that comes back
empty or under half the list's rows is not applied. The last good rows stay
and the row says why, the way a collapsed database or hot-feed publish is
refused. A person can still accept the smaller list by switching it off and
on, which goes through the ordinary apply path. The settings row now shows
when the list last updated.
Tests: a WorkManager test (work-testing, test scope only) drives the real
worker over a real repository through a refresh, a failed refresh, retry
pacing and recovery, plus shrink, empty, Expires and disabled cases. Policy
and parser cases are covered separately. Disabling the shrink guard or the
retry pacing fails them. IsolatedRepositoryFixture takes an optional list
source so the worker test can fake the list server, and WorkerScheduleTest
pins the new request. No existing assertion changed.
The three new strings ship with zh-rCN translations, and the zh coverage
floor is ratcheted to 75.7.
Copy file name to clipboardExpand all lines: README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -553,6 +553,7 @@ by locale and message type without shipping personal data:
553
553
### Data & System
554
554
- Selective backup/restore for rules, non-secret settings, and opt-in logs; CSV log export; auto-cleanup (7/14/30/90 days)
555
555
- Weekly full sync + scheduled hot list refresh, daily digest notification
556
+
- External blocklist subscriptions (Settings > External blocklists) take HTTPS CSV, TXT or JSON number lists of up to 1 MB and 20,000 rows. Each list is fetched again once a day, or on the interval it declares in its header (`# Expires: 12 hours`, or `"expires": "12h"` in JSON), never more often than every six hours and at least weekly. A download that comes back empty or with under half the list's numbers isn't applied in the background. The list keeps its last good copy and says why on its row
556
557
- Quick Settings tile, app shortcuts, home screen widget
557
558
- Protection test validates all layers and permissions, including checker errors and deadline cutoffs
558
559
- Rules surface priority conflicts after sync and edits, with the winning rule and a review path
@@ -808,7 +809,7 @@ language in [issue #7](https://github.com/SysAdminDoc/CallShield/issues/7).
0 commit comments