Repository navigation
Conversation
Verified hosted Windows CI — 2026-10-28The exact integration commit
This proves that the combined lifecycle #55 + privacy #59 source builds and passes mocked scenarios on hosted Windows. It does not demonstrate correct real Gnirehtet child shutdown timeout, physical USB Android VPN connectivity, or absence of all possible PII. Issue #44's startup delay is separate. Keep DRAFT and UNMERGED pending authentic Windows/Android QA and an explicit integration/merge decision. This comment supersedes the older checkout-time statement in the QA checkpoint that CI had not yet run. |
2026-10-28 additional source-confirmed device Start/Stop race, fixed only in Draft integration #63New audit discovered a gap beyond PR #55's Proposed fix at PR #63 head |
2026-10-28 final CI checkpoint: additional device-Start-vs-Stop race FIXED in Draft integrationHead
Additional vulnerability confirmed before the fix: a device-specific Fix commits Limitations: the in-flight native command cannot itself be synchronously cancelled; Stop can therefore be delayed until it finishes or hits its per-command timeout. Mock/CI success does not prove Android VPN state, active USB Gnirehtet relay behavior, TUN RX/TX or complete personal-data redaction. A noninvasive check of authorized Windows host YASMAN found zero running Wirebound, Gnirehtet and adb processes, so we did not start global/shared ADB or interfere with any VPN to attempt hardware QA. No app installed, no merge/release, and current main remains unchanged. Keep this PR DRAFT until genuine isolated Windows + one-phone validation and explicit merge approval. |
2026-10-28 physical USB/ADB QA preflight — BLOCKED (device not enumerated in ADB)After the maintainer reported connecting their physical phone, a read-only status preflight was conducted on their authorized Windows workstation (no app install, no global ADB kill, no VPN changes):
Outcome: Android USB QA is BLOCKED by USB/ADB detection, not PASS or FAIL of the PR #63 tethering code. Next action for maintainer: unlock the phone, confirm Developer options → USB debugging, respond to any Android USB debugging RSA authorization dialog, check Windows USB data cable/mode/driver, then rerun a strictly isolated ADB enumeration before proceeding. Do not confuse Earlier exact-head PR #63 hosted Windows CI run 40625799886 remains green: 64/64 tests, lint, typecheck, build and package smoke, but that CI does not substitute for physical USB QA. Keep PR Draft, do not merge/release. |
2026-10-29 USB recheck — Windows sees a portable Android-related device, but ADB still sees zeroOn the authorized Windows host YASMAN, read-only process preflight showed no Wirebound/Gnirehtet/ADB processes. ADB enumeration was repeated using a temporary isolated server on port 15379; A separate Windows Physical Gnirehtet/VPN/TUN testing remains BLOCKED, not a product pass/fail. No serial/USB instance IDs were printed in the QA record, no app install, no merge. PR #63 remains draft; previously recorded hosted-Windows mock CI 64/64 is separate evidence. |
2026-10-29 physical handset preflight — ADB AUTHORIZED, shell verified (no VPN test)On authorized Windows computer YASMAN, a fresh check via a temporary isolated ADB server on port 15379 found exactly one authorized Android USB device ( After each ADB check, Outcome: the previously blocking USB/ADB enumeration and RSA authorization gate is now PASS. Real Gnirehtet autorun/Stop/Retry, VPN prompt, TUN traffic, device detachment and crash/timeout recovery are NOT RUN. Keep Draft PR #63 unmerged until an isolated exact-HEAD Windows QA build and physical VPN/network acceptance are executed. Current PR head is |
2026-10-29 live Motorola / Gnirehtet 2.5.1 QA: ADB PASS, VPN BLOCKED, cleanup verifiedAuthorized Windows host YASMAN and one Moto g45 5G Android 15 (SDK 35). These native hardware trials used the already-existing Gnirehtet Rust v2.5.1 + ADB 37.0.1 in an isolated F: QA package, NOT the exact built implementation of PR #63. No private Android serial or native raw error log was committed or posted. Read-only baseline: one authorized ADB First exploratory attempt: temporary script mistakenly set Correct isolation: changed runner to Final host safety: Gnirehtet Windows processes 0; ADB ports 5037 and 15379 not listening, relay 31416 not listening. No installed Wirebound app/profile changed, no global/shared ADB server killed, and no other VPN or Android app intentionally modified. Outcome: USB authorization and native Windows relay listener pass. Actual Android VPN activation, traffic routing/TUN counters, retry and PR #63 live lifecycle correctness remain BLOCKED / NOT VALIDATED. Coarse native error categories and filtered Android logs did not identify a definitive root cause; need maintainer confirmation of VPN permission prompt and bounded, sanitized, stage-specific native diagnostics before another live attempt. Do not infer Android 15 incompatibility or a PR #63 regression without evidence. Local QA checkpoint (not committed) is |
2026-10-29 Android VPN prompt confirmation and diagnosis checkpointThe maintainer confirmed that NO Android VPN permission dialog appeared during the earlier physical Motorola moto g45 5G / Android 15 Gnirehtet native autorun trials. This is important new physical QA evidence; it does not distinguish a previously approved VPN from failure to reach the permission screen. Reviewed the upstream Gnirehtet v2.5.1 Android client implementation GnirehtetActivity.java: A very similar upstream issue #515 includes Motorola + no prompt, but no verified explanation has been demonstrated for this specific phone. Separate Android OEM Attempted an additional read-only isolated ADB inspection of appops/installed package/VPN state and filtered Android log summaries. Windows host was responding too slowly (~77s without tool output), so the session was intentionally terminated without usable data. A subsequent non-destructive final host check completed: ADB processes = 0; Gnirehtet processes = 0; ports 5037/15379/31416 not listening. No further VPN Start/Stop run or host/profile changes occurred. Next safe QA needs stage-specific evidence: a bounded, in-memory, redacted and structured log capture recording GnirehtetActivity |
2026-10-29 Gnirehtet VPN status check — previously authorized, but disconnectedMaintainer checked Android VPN settings and confirmed the Gnirehtet entry reads “Tidak terhubung” (Disconnected). This is direct UI evidence, not an inferred status. Authorized YASMAN Windows workstation subsequently completed a read-only ADB QA on temporary port 15379 after one initially unsuccessful bounded ADB enumeration. Final successful check:
The user also confirmed no VPN permission dialog appeared during native Gnirehtet tests. The AppOps result now supplies a plausible, stronger explanation: permission was already allowed. Gnirehtet's Next stage should collect only narrowly filtered, privacy-safe GnirehtetActivity / GnirehtetService stage markers and Android ActivityTaskManager failure categories, without recording full logcat or device serials; do not repeatedly restart the VPN without observing why it failed. PR stays Draft/unmerged. |
2026-10-29 stage-marker native QA (one bounded retry) — Android VPN still blockedA new bounded, in-memory diagnostic runner at Results: 1 authorized device; native relay TCP 31416 listener active after 12 seconds; Android Gnirehtet app process not detected at sample, Gnirehtet ADB reverse absent, VPN transport absent. Filtered The native Gnirehtet CLI Existing result: Gnirehtet VPN AppOps |
2026-10-29 root cause of isolated hardware QA failure FOUND; native Android VPN connection PASS with single-device
|
2026-10-29 hardware acceptance update: Gnirehtet native VPN + HTTPS + TUN bytes PASSA follow-up bounded, isolated, one-device test using the pinned Gnirehtet Rust v2.5.1 runtime (older F: QA package; not a PR #63 Electron build) ran Proof of real phone network traffic: Android Stop and isolation: Source-confirmed reason previous autorun QA failed: Rust Durable in-repo record: new |
2026-10-29 exact-head Windows QA preparation — checkout verified; local build status UNKNOWN after host disconnectFollowing the native Motorola Android 15 Gnirehtet VPN + HTTPS 200/TUN RX/TX success, prepared a separate local Windows QA checkout:
Local build was started, in the isolated checkout, using Immediate next check when host is accessible: inspect session PID 13632 and related No merge/release; PR #63 remains Draft. |
2026-10-29 local build recovery — OWN QA SESSION termination requested, no app-level hardware testFollow-up after earlier local preparation note: YASMAN briefly came back online. I did not delete any files, recursively clean the Hosted Actions at exact same PR head 40818104050 PASSED, but the PR #63 Electron app's live hardware Start/Stop/Retry remains NOT RUN. Next safe session must first inspect process ownership and build outputs, then choose an appropriate low-impact or hosted build transfer; preserve isolated |
2026-10-29 actual packaged PR #63 Electron lifecycle QA — Windows PASS (no USB phone)New source-of-truth document:
Next real hardware acceptance: restore one authorized Motorola on default ADB 5037, then exercise full app Start/VPN/HTTPS/TUN/Stop/Retry and UI clicks with privacy-safe evidence. Do not mistake successful native CLI or no-phone app engine smoke for that outstanding gate. No merge/release. |
2026-10-29 major milestone — actual packaged PR #63 Electron + Motorola VPN/HTTPS: 2/2 FULL CYCLES PASSThis is NOT merely mock CI or native Gnirehtet CLI: hosted Windows-packaged Wirebound v1.2.0 source from Physical Moto g45 5G / Android 15, exactly 1 USB-authorized device; two full, consecutive cycles driven through actual packaged app renderer
Safety: No real serial, private IP, raw native logs, HTTP content, or arbitrary phone data published. After the app tests, stopped only 5 F: QA Remaining untested: literal UX button clicks/animation, tray Quit, unplug-while-connected, fail-closed native process timeout, physical per-device Start/Stop overlap, and multiple physical phones (one-phone limit noted). Renderer read-only API access was sometimes sluggish; issue #44 startup remains open, do not mistake inspection elapsed time for exact window timing. Source status: original tested application code d9937c9; a verified GitHub compare from |
Purpose
Review-and-test integration only — DRAFT, DO NOT MERGE. Combine the independent, still-unmerged Gnirehtet lifecycle PR #55 and native log privacy PR #59 on actual
mainafter #57, #61 and #62. This addresses their real same-file conflict and gives hosted Windows CI an integrated codebase to validate.Readable.emit('data', Buffer.from(...))rather than incorrect.write().AGENTS.mdpreserving existing main Gnirehtet lifecycle: guard concurrent Start, Stop-during-Start and late child exits #53/ADB privacy and cleanup: mask device IDs in warnings, count successful force-stops #56 notes alongside fix(lifecycle): serialize Gnirehtet start/stop and isolate stale child exits (#53) #55/fix(privacy): redact device serials in Gnirehtet native process logs (#58) #59 notes. No package/binary/dependency changes.Existing evidence: #55 individual Windows CI green, 51 Vitest tests; #59 individual CI failed TypeScript on test-stream
.write(), now corrected at its source branch HEAD. These are NOT proof this combined branch passes. Use this Draft PR's own CI as the next gate.Release blockers remain: no tested real Windows Gnirehtet child shutdown/late-close/retry, real Android USB/VPN/TUN RX/TX, complete PII sanitizer proof, or approval to integrate UX #50 and startup #51. No global/shared ADB kill, other app reverse cleanup, Windows installer or main merge has occurred.
Keep #55 and #59 Draft/open until combined tests and maintainer's merge plan are independently accepted. This is not a release PR.