Skip to content

Add configurable Tailscale Funnel public ports - #89

Open
ljyonefineday wants to merge 11 commits into
rebel0789:mainfrom
ljyonefineday:tailscale_port
Open

Add configurable Tailscale Funnel public ports#89
ljyonefineday wants to merge 11 commits into
rebel0789:mainfrom
ljyonefineday:tailscale_port

Conversation

@ljyonefineday

Copy link
Copy Markdown

Summary

  • add configurable Tailscale Funnel public HTTPS ports (443, 8443, and 10000) across the CLI, environment, saved profiles, TUI, and admin settings
  • preserve and canonicalize legacy hostname port suffixes, including explicit :443, while enforcing CLI > environment > saved-profile precedence and same-source conflict checks
  • keep the local listener port independent, update user-facing documentation, expand smoke coverage, and make Node 20 PTY exit handling reliable

Why

Tailscale Funnel supports a small set of public HTTPS ports, but CodexPro previously could not configure that public port independently from its local listener. Existing legacy hostname:port values also need deterministic migration and validation.

Impact

Users can select a supported Funnel port without changing the local MCP server port. Existing default-port profiles remain compatible, and legacy saved/environment hostnames are canonicalized.

Security

No authentication or authorization behavior changes. Funnel port input is restricted to 443, 8443, or 10000, and invalid or conflicting values fail before Tailscale launches.

Validation

  • Node 20.19.4 / npm 10.9.4: npm ci
  • npm run build
  • npm run smoke (all 12 suites)
  • npm run stress (using an rg-free local fallback fixture; the tracked test file was restored and verified unchanged)
  • npm pack --dry-run (101 files)
  • independent code review: no Critical or Important findings

skunkworks and others added 11 commits August 6, 2026 01:14
The PTY helper gated answer injection on pending.endswith(b"\n> "), but the
wizard's first prompt arrives as b'...\r\n> \x1b[3G'. The trailing cursor-column
escape defeated the suffix test, so no answer was ever written and every guided
setup assertion deadlocked until the 20s deadline.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ale_port

# Conflicts:
#	CHANGELOG.md
#	README.md
#	README_ZH.md
The guided setup and setup wizard passed the raw port answer into
normalizeTailscaleEndpoint, which throws on an out-of-range value, so one typo
aborted the whole wizard and discarded every earlier answer. Pasting a hostname
that already carried a :8443 suffix hit the same throw through the conflict
branch. Both sites now split the typed hostname first, use its suffix as the
port default, and re-ask until the answer is 443, 8443, or 10000.

--tailscale-port was silently dropped for non-Tailscale tunnels; it now errors.
An occupied public port reported generic "enable MagicDNS" advice instead of the
real cause, so the failure hint now names the port and offers tailscale serve
status and tailscale funnel --https=<port> off. The start banner drops the URL
scheme so the Tunnel row fits its column at 80 columns.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ljyonefineday
ljyonefineday marked this pull request as ready for review August 12, 2026 14:15

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7da2d54308

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/codexpro.mjs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant