APK (0.4.0):
- FIX lost-referrer: persist the WG profile in app-internal filesDir and REUSE
it. /wg/profile/new mints a fresh keypair each call and onboarding runs every
boot, so the device kept re-keying → new sha256(pubkey) identity → stats reset
each reboot. Now one stable identity across reboot/reconnect/restart.
(Reinstall still wipes filesDir; allowBackup stays off for CSPN.)
- Silent root onboarding (CA system-store + native WG) already runs on boot
(#538/#558); it now provisions the STABLE profile.
- Surfaces 🧅 kbin Tor-egress status after onboarding.
webext (0.1.5):
- popup shows a 🧅 Tor indicator (exit anonymised) next to the R3 dot,
via the new public /wg/tor-status endpoint.
toolbox (2.7.5):
- public, kbin-safe GET /wg/tor-status {tor_mode,running,bootstrap,exit_ip}
(mirrors /wg/r3-check; /admin/tor/* stays admin-gated). Verified live on kbin.
13 toolbox tests green. .xpi 0.1.5 built; .apk builds via build-android-apk.yml.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New Protection panel in the popup: ghost savings (blocked/Mo/pages cleaned
via /admin/ghost) + live toggles for ad_ghost / ad_ghost_block / banner /
protective(off|alert|spoof) via /admin/filters. api.js: ghost/getAdminFilters/
setAdminFilters helpers. Top-tracker list stays top-5. webext 0.1.4,
tag-pin -> webext-v0.1.4, secubox-toolbox 2.6.27.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Strengthen the zero-tap root onboarding (keeps it, doesn't kill it):
- launch auto-run: drop the per-host 'onboarded' gate (runs every launch,
idempotent) + retry reachability ~9s so a WiFi/tunnel race no longer
aborts the auto-run.
- boot auto-run: BootReceiver (BOOT_COMPLETED) → OnboardService foreground
service runs the silent sequence WITHOUT opening the app (retries
reachability ~30s), then stops. Rooted device self-onboards after a reboot.
- ⚡ button kept as a manual re-trigger.
Unavoidable (Android-mandated, not bugs): sideload install confirm + first
su grant. versionName 0.3.0 / versionCode 3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- social.js eye-view: site + tracker nodes render the site favicon via the
same-origin /social/favicon/{domain} proxy (7d cached, transparent 1×1
fallback so the tier circle shows through), clipped to the bubble.
- webext popup top-tracker list gains a 16px favicon per row (api.faviconUrl
helper). clients/webext-toolbox 0.1.2 ; /wg/toolbox.xpi tag-pin → webext-v0.1.2.
No IP/ASN displayed anywhere. secubox-toolbox 2.6.19.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On a rooted device the app now runs the full silent onboarding on launch
with no taps: a LaunchedEffect auto-starts the root sequence once when
root is detected and this host hasn't been onboarded yet. The root-auto
logic is extracted into a reusable runRootAuto lambda (shared by the
auto-launch and the ⚡ button, which remains for re-runs). An onboarded
flag is persisted per host in SharedPreferences so reopening doesn't redo
it. versionName 0.2.0 / versionCode 2.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
install-firefox-linux.sh: one call grabs the ToolBoX .xpi (from a cabine
host, --release, or --local) and launches Firefox with it loaded via
'web-ext run' (temporary, works unsigned — fastest), opening /social/me.
Falls back to opening the .xpi for the install prompt when web-ext/npx
is absent, with the unsigned-install note. Detects firefox/-esr/-bin/flatpak.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Real cause of the broken extension: api.js and background.js BOTH did
`const ext = …`. In a Firefox event page the background.scripts array
loads them into one shared scope (same via importScripts in a Chromium
SW), and popup.js's `const ext` collided with api.js's in the popup
page realm too — 'redeclaration of const ext' aborts the script. web-ext
lint misses it because it never concatenates/executes the scripts.
Now only api.js declares `const ext`; background.js and popup.js use
`api.ext`.
Also (defensive + Chromium-correct): replace the SVG action/extension
icon with rasterised PNGs (48/128) and keep the SVG out of the package,
so Firefox never renders SVG in chrome UI. Bump to v0.1.1; the
/wg/toolbox.xpi endpoint + fetch helper + docs point at webext-v0.1.1.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
README + wiki Browser-Extension: add the direct release download URL,
document make_latest:false / tag-pinned design. TODO/WIP: mark the
webext-v0.1.0 release published (downloadable, verified) and note the
remaining board deploy of secubox-toolbox 2.6.14.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
web-ext lint: 0 errors, 2 benign warnings (AMO data-collection
declaration is submission-time, tied to the signing follow-up;
service_worker-ignored is the intentional cross-browser pattern).
optional_host_permissions needed FF128 and was unused at MVP.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- new wiki page Android-ToolBox.md (install via /wg/toolbox.apk, manual +
root onboarding flows, CI build, endpoints) + sidebar link
- README: document the root-mode silent path + revised constraints
- WIP/TODO/HISTORY: Android client section (#531/#536/#538)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add an optional one-tap, zero-interaction onboarding path for rooted
devices. When root is detected the app can:
- install the village3b CA into the SYSTEM trust store (bind-mount over
/system/etc/security/cacerts + conscrypt APEX, SELinux ctx restored),
so every app trusts the cabine CA — not just user-CA opt-in apps;
- bring the WireGuard tunnel up natively via the kernel module
(ip link add … type wireguard + wg set), no WireGuard app needed;
- verify R3 reachability automatically.
Falls back to the existing manual handoff (KeyChain CA prompt + WG app)
when the kernel lacks WireGuard. All root actions are gated behind an
explicit '⚡ Installation automatique (root)' tap — nothing runs as root
without the operator choosing it on their own device.
New: RootShell (su wrapper), RootOnboard (silent sequence + subject_hash_old
in pure Kotlin). MainActivity gains a RootAuto step with a streaming log.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>