tr4mpass
免费、开源的 iCloud 激活锁绕过工具。移除从 iPhone 5s 到 iPhone 15 Pro 的 iCloud 锁(iOS 12-26.1)。完全离线 -- 无服务器、无付款。支持 checkm8(A5-A11)和 ses
AI 翻译
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Get an email when a company changes what it does with your data. Open Terms Archive history + a Jev classifier + a static site + a Cloudflare Worker.
翻译准备中
正在加载完整 README。
查看完整 README ↗Get an email when a company changes what it does with your data. The newsletter is free at tos.watch. The code is Apache-2.0 (see LICENSE).
tos.watch watches about 40 services in five tracks: AI assistants, dating
apps, things you type into (writing tools, keyboards, notes, translation,
transcription, email), developer tools (telemetry, training on your code,
credit-based pricing), and the broad consumer apps most people use every day.
The exact list is pipeline/watchlist.json.
Not affiliated with any company it tracks.
pipeline/: Python 3, stdlib only. For each tracked document it:
pipeline/lib/direct.py);alerts/.pipeline/questions.example.json: the questions Jev answers. It's a generic set that runs but isn't tuned; see "Questions" below.pipeline/draft_emails.py: turns each new alert into a Buttondown draft email. Nothing is ever sent automatically.site/build.py: builds the static site from alerts/:
@pierre/diffs, Apache-2.0;worker/: a Cloudflare Worker for signup, site requests, feature votes, and a mock on-demand check. Emails live only in Buttondown; D1 holds anonymous request counts.tos.watch is open core. The public code runs end to end. What stays private is the judgment built on top of it:
The alerts themselves are public on tos.watch.
This repo is code only. Everything a run reads or writes, apart from pipeline/watchlist.json, lives in a data directory set by TOS_WATCH_DATA: alerts, the Jev cache, run state, snapshots, your own questions.json and the generated site. Its layout mirrors this repo (alerts/, cache/jev/, pipeline/state.json, site/…). Unset, the data directory is this repo, and all of it is gitignored. tos.watch keeps its data in a private repo; see pipeline/lib/paths.py.
scripts/check-public.sh runs in CI and fails if run data, generated pages, local paths or personal addresses are ever committed here.
Policy history comes from Open Terms Archive collections, including:
They're licensed ODC-By 1.0, which requires attribution for any public use. The site footer, the feed and every alert carry it. Alerts quote short excerpts cut to the part that changed, never whole documents.
The fonts are Public Sans and Source Serif 4, both SIL OFL 1.1. They're self-hosted, so the site makes no third-party requests. Their licences are in site/fonts/.
export OPENROUTER_API_KEY=...
python3 pipeline/run.py # pull, diff, score, write alerts, rebuild the site
python3 pipeline/run.py --dry-run # collect, extract and filter; skip scoring and alert writing
python3 pipeline/run.py --no-pull # reuse OTA clones; HTTP sources are still collected
--dry-run is not an offline or read-only mode: source collection runs
before the dry-run exit, so it can clone/pull OTA history, fetch HTTP
sources and write source snapshots. --no-pull only skips OTA clone/pull;
it does not skip the HTTP source collectors. --out also creates its
alerts directory during a dry run.
Reruns are cheap. Jev answers are cached on disk by a hash of the change (cache/jev/), and each alert file is written once per document version. --since YYYY-MM-DD limits Jev spend on a large backfill.
pipeline/lib/jev.py loads its question set from pipeline/questions.json, falling back to pipeline/questions.example.json.
A question set has four parts:
version, which goes into the cache key, so bump it when you change wording;questions themselves;topic_questions that can trigger an alert;alert_threshold.The example set is a starting point. Before trusting a threshold, check your questions against changes you've labelled by hand.
export BUTTONDOWN_API_KEY=...
python3 pipeline/draft_emails.py # one draft per new alert
python3 pipeline/draft_emails.py --dry-run # print the drafts; no API call, no state written
python3 pipeline/test_draft_emails.py # new alert -> one draft; rerun -> none
Without BUTTONDOWN_API_KEY it's a dry run that exits 0. The data directory's
pipeline/drafts_state.json records which alerts already have drafts. The
first authenticated run marks existing history as handled without drafting
it; later runs draft new alerts once.
(cd build && npm ci) # locked fonts and diff-renderer dependencies
python3 site/build.py # alert pages, service pages, RSS feed
Python builds the site without Node dependencies, keeping a plain diff
fallback. Installing build/ dependencies enables @pierre/diffs rendering.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗