Repository navigation
feat: LAN serving — --host CLI option, runtime rebind, status-bar LAN toggle - #92
Merged
Merged
Conversation
added 10 commits
November 3, 2026 12:29
The legacy egg-info could shadow profiles-app metadata in importlib.metadata and report an old version (e.g. 2026.8.0) even after a fresh pip install. install-system-dev now removes it so the editable metadata snapshot always matches pyproject.toml.
host_error() validates IPv4 bind targets (0.0.0.0/127.0.0.1/IPv4 literal); hostname and IPv6 args exit 2 with a clear message. ProFileApp carries host into both GUI and server-only launches. Also unblocks the suite on Windows: tests/utils/test_file_utils_errors.py evaluated os.geteuid() at decoration time (AttributeError, POSIX-only), now guarded.
- Add @testing-library/jest-dom dev dependency to package.json - Update package-lock.json with jest-dom and its dependencies (@adobe/css-tools, css.escape, dom-accessibility-api, redent, etc.) - Create src/setup-tests.ts to import jest-dom matchers - Create src/vitest.d.ts with type references for jest-dom/vitest - Configure vitest.config.ts to use setup-tests.ts as setup file - Update build.py to use npm install instead of npm ci for lock file sync handling - Update tsconfig.tsbuildinfo with new test files
…pt 7.1.4, fast-uri 3.1.9)
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.
Summary
Implements the LAN serving plan (spec:
docs/superpowers/specs/2026-11-03-lan-serving-design.md): the server can now be reached from other machines on the LAN, with the bind address controlled from the CLI at launch or toggled at runtime from the web UI status bar.--hostCLI option (default0.0.0.0), validated against0.0.0.0/127.0.0.1/ literal IPv4 — hostnames and IPv6 are rejected with a clean argparse errorBackgroundServer.rebind()with revert-on-failure: if the new bind fails, the server stays reachable at the original addressapp.state; routes expose bind state and rebind through a structuralBindableServerProtocol (no server→desktop layering inversion)0.0.0.0dist/refreshed)Verification
pytest: 1367 passed, 248 skipped — failing set is identical tomainon this Windows machine (70 pre-existing POSIX-assuming failures, no new ones); coverage gate passesnpx vitest run: 173/173 passed (10 files), incl. newStatusBarLAN-toggle testsReview focus (from the plan)
tests/desktop/test_lifecycle.py::test_rebind_changes_host_and_reversestest_rebind_failure_reverts--host(hostname, IPv6) → clean argparse error —tests/test_app_host.pyGET /api/systemwith no registered server →lan_enabled: null, UI doesn't crash —tests/server/routes/test_system.py::test_system_info_reports_unknown_bind_statetests/desktop/test_launcher.py::test_webview_url_uses_loopback_for_wildcard_bind