dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
Check your DNS security, connection speed, ad blocker effectiveness, and any site's security headers, entirely in your browser.
SecurityTypeScript · CSSGitHub @acchuangOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Browser-based network diagnostics: DNS security (8 resolvers probed over RFC 8484 wire format, ECS leak + DNSSEC checks), speed/bufferbloat test, ad blocker analysis, security header scanning. No installs, no accounts — Cloudflare Workers + TypeScript + Vite.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Browser-based network diagnostics toolkit — DNS security, speed test, ad blocker analysis, and HTTP security header scanning. No installs, no accounts; every check runs client-side against Cloudflare's edge network.Read the full README ↗
Browser-based network diagnostics toolkit — DNS security, speed test, ad blocker analysis, and HTTP security header scanning. No installs, no accounts; every check runs client-side against Cloudflare's edge network.
Live: netcheck.oilygold.xyz
speed.cloudflare.com, Netflix's fast.com, or Ookla Speedtest servers (nearest found via your city — proxies only the tiny discovery call; speed traffic goes browser → server direct)ReadableStreamwrangler devOff by default, and off on netcheck.oilygold.xyz. This is the one check that needs a server outside Cloudflare, because Workers cannot serve UDP/53.
probe-server/ is an authoritative nameserver for a zone you delegate to it. The browser resolves <label>.<your-zone>, which forces every recursive resolver in the visitor's real path to query that nameserver directly — so it sees their actual resolver IPs, and any EDNS Client Subnet forwarded. A DoH-only page can never learn this about its visitor, because it only ever talks to the one resolver it picked.
The label is the SHA-256 of a read key the visitor's tab keeps to itself. Every resolver in the path sees the label, and so do the nameserver's own logs, so observing a query must not be enough to read the result back: only the key names the session, and it never travels in a DNS query. The Worker presents the key over TLS to fetch the result.
Enable it by setting all three on the Worker:
| Variable | Where | Example |
|---|---|---|
PROBE_SERVER_URL | wrangler.toml [vars] | https://ns-probe.example.com:8443 |
PROBE_ZONE | wrangler.toml [vars] | p.example.com |
PROBE_SECRET | wrangler secret put | — |
The URL must be https:// (localhost excepted): PROBE_SECRET travels in a request header, so a plaintext URL is refused and reported as unconfigured rather than sent in the clear.
With any of them missing, the client is told the probe does not exist here: it skips the lookup entirely, and the DNS card drops both the encrypted-DNS row and the "your recursive resolver" block rather than showing a check it cannot answer.
Running the nameserver — GCP always-free VM, zone delegation, systemd unit, and the reflection-hardening notes — is documented in probe-server/README.md.
@cloudflare/vite-plugin — Workers runtime integrated directly into Vite dev/build#08090a canvas, indigo-violet accentssrc/shared/dns-wire.ts; interactive lookups via Cloudflare DNS-over-HTTPSnetcheck-site/
├── wrangler.toml # Cloudflare Worker config
├── vite.config.ts # Vite build configuration (Cloudflare plugin)
├── tsconfig.json # TypeScript configuration
├── index.html # Single-page app shell
├── probe-server/ # Authoritative nameserver for recursion-path probing
├── src/
│ ├── client/ # Frontend logic (TypeScript)
│ │ ├── app.ts # Entry point — tab routing, UI orchestration
│ │ ├── i18n.ts # Bilingual (en/zh-TW) translation strings
│ │ └── ... # Domain-specific logic (dns-check, speed-test, adblock-test, etc.)
│ ├── shared/ # Code shared between client, worker and probe server
│ │ ├── dns-wire.ts # RFC 8484 wire-format encoder/decoder
│ │ └── resolvers.ts # Public DNS resolver list
│ └── worker/ # Backend logic (TypeScript)
│ └── index.ts # Worker — API routes
└── public/
├── icon.svg, manifest.json, sw.js
└── css/styles.css # Linear design system implementation
npm install
npm run dev # Vite dev server with the Cloudflare Workers runtime
npm run typecheck # tsc --noEmit
npm test # node --test — no framework, no browser, no network
To exercise the recursion probe locally, put the three variables in a gitignored
.dev.vars and run the nameserver alongside the dev server — see
probe-server/README.md for the local port to use
(5354; mDNS holds 5353 on macOS).
npm run deploy # vite build && wrangler deploy
MIT