tailscale / tailscale/tailscale

Make the event bus debug UI available on iOS

Open
#15,297 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Go
Stars
36.5k
Forks
3.2k
Avg merge
2d 3h
Merged PRs (30d)
123

Description

The debug UI uses html/template, which forces a bunch of reflect-based pessimization in the compiler that bloats the iOS build an unacceptable amount.

To make initial progress, we'll build-flag the debug UI out of the iOS build. This is a tracking issue to bring the debug UI back to iOS. Options for that:
- Rewrite the debug UI to output hand-constructed HTML, using plain io.WriteString and html.EscapeString. Unfortunate, but the debug UI isn't too complex and so should be feasible.
- Expose the necessary APIs over plain HTTP, and make a standalone debug client that connects to tailscaled and does the UI rendering and such outside of the NetworkExtension sandbox. Quite feasible, albeit a bit clunkier to use.
- Write an "html/template compiler", in similar spirit to [Templ](https://templ.guide), and generate the Go code for the templates ahead of time. At a glance this looks feasible, in that html/template exposes its sanitized parse tree in the package public API, but after an hour of poking it's not trivial either, so I deferred further work in that direction for now.

Roadmap x-ref: TINY-23

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.