Rewrite roadmap to match the code, complete M1 cleanup, and remove dead modules - #4
Draft
MadTinker wants to merge 3 commits into
Draft
Rewrite roadmap to match the code, complete M1 cleanup, and remove dead modules#4MadTinker wants to merge 3 commits into
MadTinker wants to merge 3 commits into
Conversation
The roadmap had drifted about a year behind implementation. It listed visual testing, network inspection, DOM tooling, and WebSocket control as unstarted while all four were built and shipping, and never mentioned the MCP server at all. Changes: - Verified status table citing implementing files and test counts (~70 BrowserCommand variants, 147 tests across 27 files) - Restructure into dual tracks: agent surface and testing workbench, over a shared foundation - M1 targets documentation drift; M2 adds CI, which no workflow covers today despite the existing test suite - Reframe the multi-JS-engine goal as cross-engine comparison over the CI matrix: wry binds the OS webview, so macOS/Linux already run WebKit/JavaScriptCore and Windows runs Chromium/V8. Embedding V8 or SpiderMonkey is recorded under "Explicitly not doing" with reasoning - Note the cold-clone build failure on missing GTK/WebKitGTK headers Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pg53xf5xcUV7oc5CkaiCpz
Documentation had drifted about a year behind the code. Verified every claim against a real build and test run on Linux. Docs: - Rewrite readme status section; it billed the project "production-ready" while listing built features as in-progress. Now states what works, what's missing, and what's unproven. - Document the undocumented API surface: the readme listed ~20 endpoints, the router has ~55. Performance, console, recording, and playback were absent. - Add docs/getting-started.md with the native dependencies, the exact build failure they cause, and package names for Debian/Fedora/Arch. Verified by installing them and building from cold. - Retire CURRENT_STATUS.md (July 2025, wrong on nearly every point) and the two point-in-time implementation summaries, superseded by docs/. - Delete fix_plan.md; its blockers were fixed in March 2026. Salvaged its profile-management idea into the roadmap. Dead code: - Delete src/browser/tests.rs and src/cli/. Neither was declared in lib.rs or main.rs, so neither had ever compiled. src/cli/mod.rs was the riskier one: a stub Args::parse() that ignored all input, shadowed by the real clap parser in main.rs. Housekeeping: - Untrack a committed session transcript and error_log.txt; extend .gitignore. - Move seven root-level Python scripts into tests/integration/ with a README covering prerequisites and what each exercises. Roadmap updates from findings during this pass: - keyboard.rs is reachable from neither the API nor MCP, so keyboard-driven testing (tab order, accessibility) isn't scriptable. Added to Track A. - main.rs re-declares modules lib.rs already exports, so the crate compiles twice and shared tests run twice. Added to M2. - A clean build emits 91 warnings. Added to M2. Verified: cargo build succeeds; cargo test reports 164 passed, 0 failed, 3 ignored. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pg53xf5xcUV7oc5CkaiCpz
This was referenced Aug 22, 2026
None of these files was declared in lib.rs, main.rs, or any mod.rs, so none had ever compiled: src/browser/navigation.rs 167 lines src/browser/state_manager.rs 199 lines src/browser/window_manager.rs 158 lines src/browser/error.rs 153 lines src/browser/native_ui.rs 137 lines src/platform/macos.rs 124 lines src/browser/menu.rs 50 lines The cluster was self-referential: error.rs was imported only by navigation.rs, window_manager.rs, and state_manager.rs, all themselves dead. A naive "is this imported anywhere?" check finds references and concludes the code is live. Every remaining file under src/browser/ now maps to a declared module. Also corrects two errors in ROADMAP.md introduced when it was written from a static scan rather than a build: - It cited browser/navigation.rs as implementing per-tab navigation history. That file never compiled; the implementation is in browser/tabs.rs. - Its per-module test counts included tests in files that never ran. Verified: cargo build succeeds; cargo test reports 167 passed, 0 failed, 0 ignored — identical to before the removal, confirming the ~21 #[test] functions in the deleted files were never executed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pg53xf5xcUV7oc5CkaiCpz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The roadmap and readme had drifted roughly a year behind the implementation. The roadmap listed visual testing, network inspection, DOM tooling, and WebSocket control as unstarted while all four were built and shipping — and never mentioned the MCP server, by now one of the largest modules in the repo. The readme billed the project "production-ready" while marking built features as in-progress.
This PR rewrites the roadmap against the actual code, then executes its first milestone.
Three commits: rewrite the roadmap → do the M1 cleanup → remove dead modules.
1. Roadmap rewrite
Reorganized into two tracks over a shared foundation, matching the project's two audiences:
Every "built" claim cites its implementing file and test count, so the next reader can spot-check instead of trusting prose.
On the multi-JS-engine item
The old "JavaScript Engine Workshop" proposed embedding V8, SpiderMonkey, and JavaScriptCore with a switching mechanism. That isn't reachable from
wry, which delegates to the OS webview and its bundled engine.The underlying goal — seeing whether a bug reproduces across engines — is real, and Tinker is closer to it than the roadmap suggested.
wrybinds the native webview per platform, so the macOS and Linux builds already run WebKit/JavaScriptCore and the Windows build runs Chromium/V8. Two engine families, already covered, never compared. That becomes M4: run the same recorded session across the CI matrix and diff results, reusing the comparison machinery inbrowser/visual.rs. Engine embedding is recorded under "Explicitly not doing" with reasoning so it doesn't get re-proposed.2. M1 cleanup
docs/getting-started.mdwith native dependencies, the exact build failure they cause, and package names for Debian/Fedora/Arch.CURRENT_STATUS.md(July 2025, wrong on nearly every point) and both point-in-time implementation summaries, superseded by the fuller guides indocs/.fix_plan.md— its blockers were fixed in March 2026. Salvaged its profile-management idea into the roadmap as M6.error_log.txt; extended.gitignore.tests/integration/with a README.3. Dead module removal
Nine files, ~1,100 lines, none declared in
lib.rs,main.rs, or anymod.rs— so none had ever compiled:#[test]fns (never ran)src/browser/state_manager.rssrc/browser/navigation.rssrc/browser/window_manager.rssrc/browser/error.rssrc/browser/native_ui.rssrc/platform/macos.rssrc/browser/menu.rssrc/browser/tests.rssrc/cli/Two of these were more than clutter:
src/cli/mod.rsheld a stubArgs::parse()returning defaults and ignoring all input, shadowed by the real clap parser inmain.rs— an easy trap for anyone who found it first.browser/error.rswas imported only bynavigation.rs,window_manager.rs, andstate_manager.rs, themselves dead. The cluster was self-referential, so an "is this imported anywhere?" check finds real references and concludes the code is live. Only comparing files on disk againstmoddeclarations reveals it.native_ui.rsis worth a note: its tests build real windows viaWindowBuilderand are#[ignore]d on macOS but not elsewhere. Had it ever been wired up, it would have failed on any CI runner without a display.Every remaining file under
src/browser/now maps to a declared module.Verification
Installed the native dependencies and built from cold on Linux, which also confirms the package names documented in the getting-started guide:
The test count is identical before and after the dead-module removal, confirming the ~21
#[test]functions in those files were never executed.Note on scope
One idea from
fix_plan.mdwas deliberately not carried forward: it framed profile support partly as "anti-detection," spoofing fingerprints to evade bot detection. The roadmap keeps the testing half — configurable user agent, viewport, timezone, locale — and says why the evasion framing was dropped. Per discussion these were future/half-formed plans, so this is a deferral, not a rejection.