tailscale / tailscale/tailscale
Make the event bus debug UI available on iOS
- 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
Assessment
This issue has not been assessed yet.