Skip to content
Merged
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
1a625e5
docs: plan headless CLI and persistent serve
guygrigsby Oct 13, 2026
7364cc4
docs: decide headless CLI (0007) and persistent serve (0008)
guygrigsby Oct 13, 2026
d12860f
docs: spec the command-line contract, Name and Port
guygrigsby Oct 13, 2026
5ae5eeb
docs: name resolution is name first, add Endpoint Entry
guygrigsby Oct 13, 2026
f66b544
config: endpoint names, bridge ports and a settings file override
guygrigsby Oct 13, 2026
702631d
docs: help output is part of the command-line surface
guygrigsby Oct 13, 2026
24ead2c
docs: keep single-dash flags, add shorthands, deprecate not remove
guygrigsby Oct 13, 2026
f3accd8
cli: headless command tree with bridge and endpoint groups
guygrigsby Oct 13, 2026
ff723bf
cli: serve runs a persistent bridge on a fixed port
guygrigsby Oct 13, 2026
be13a4a
cli: reset the process-wide settings path between tests
guygrigsby Oct 13, 2026
d8d7171
clients: one headless launch spec per client
guygrigsby Oct 13, 2026
dba1cd9
cli: launch clients directly with argument passthrough
guygrigsby Oct 13, 2026
9dc901b
docs: plan landed
guygrigsby Oct 13, 2026
38c4cb5
cli: close the findings of the security pass
guygrigsby Oct 13, 2026
b312abe
cli: keep the client tail out of aperture's flag rewriting
guygrigsby Oct 13, 2026
fb3844b
cli: warn when a launch reads a non-default settings file
guygrigsby Oct 13, 2026
669e8b1
docs: record why provider and model are not persisted defaults
guygrigsby Oct 13, 2026
484ba89
cli: test the flags that had none
guygrigsby Oct 13, 2026
69cd6dc
e2e: black-box compat and contract suites behind the tailnet tag
guygrigsby Oct 13, 2026
e917299
opencode: remove the temp config file when a write fails
guygrigsby Oct 14, 2026
4f23729
opencode: replay the last headless launch's model
guygrigsby Oct 14, 2026
55bc9c5
config: carry a name across a verified endpoint URL edit
guygrigsby Oct 14, 2026
5f43fe1
bridges: bind the conflict listener to an ephemeral port in the fixed…
guygrigsby Oct 14, 2026
fc39b3e
cli: require a leading flag and honor its value in versionRequested
guygrigsby Oct 14, 2026
0b01e1b
codex: apply the default model when an explicit provider names no model
guygrigsby Oct 14, 2026
4ffe4e1
copilot: apply the default model when an explicit provider names no m…
guygrigsby Oct 14, 2026
e383b65
cli: forward a termination signal to the launched client
guygrigsby Oct 14, 2026
4baaef6
cli: fall back to the environment for an absent tail flag
guygrigsby Oct 14, 2026
83729d8
e2e: let the suite run against an installed binary
guygrigsby Oct 14, 2026
a1e9e32
docs: testing guide with examples for every layer
guygrigsby Oct 14, 2026
711e8b8
ci: run the black-box suites in a Black-box job
guygrigsby Oct 14, 2026
1503066
opencode: run write-failure test in a child process
guygrigsby Oct 15, 2026
a0c3235
runlog: record failed commands, bridge proxy errors and UI failures
guygrigsby Oct 15, 2026
7c23926
cli: skip persistent pre-run config selection for manually parsed com…
guygrigsby Oct 15, 2026
81b70e8
endpoint: print the canonical saved name from settings
guygrigsby Oct 15, 2026
77c0d0e
cli: preserve flag values verbatim during flag rewriting and version …
guygrigsby Oct 15, 2026
ded386c
clients: validate saved model against provider models on headless launch
guygrigsby Oct 15, 2026
8d08922
config: apply replacement name after selecting the candidate entry
guygrigsby Oct 15, 2026
5876034
bridges, cli: add --force flag to bridge delete
guygrigsby Oct 15, 2026
b499193
e2e: clean up tailnet bridge and fix test harness on macOS
guygrigsby Oct 15, 2026
01c76aa
cli: document --force flag in bridge delete help
guygrigsby Oct 15, 2026
13de14e
e2e: fall back to legacy zip archive on darwin in releaseBinary
guygrigsby Oct 15, 2026
07e10f1
Merge branch 'main' into guygrigsby/cli-with-args-and-config
guygrigsby Oct 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions e2e/blackbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,7 @@ import (
func releaseBinary(t *testing.T) string {
t.Helper()
tag := latestReleaseTag(t)
var name string
if runtime.GOOS == "darwin" {
name = fmt.Sprintf("aperture_%s_darwin_%s.zip", tag, runtime.GOARCH)
} else {
name = fmt.Sprintf("aperture-cli_%s_%s.tar.gz", runtime.GOOS, runtime.GOARCH)
}
name := fmt.Sprintf("aperture-cli_%s_%s.tar.gz", runtime.GOOS, runtime.GOARCH)

dir := filepath.Join(userCacheDir(t), "aperture-e2e-releases", tag+"-"+runtime.GOOS+"-"+runtime.GOARCH)
bin := filepath.Join(dir, "aperture")
Expand All @@ -44,6 +39,15 @@ func releaseBinary(t *testing.T) string {
if err != nil {
t.Fatalf("downloading %s: %v", url, err)
}
if resp.StatusCode == http.StatusNotFound && runtime.GOOS == "darwin" {
resp.Body.Close()
name = fmt.Sprintf("aperture_%s_darwin_%s.zip", tag, runtime.GOARCH)
url = "https://github.com/tailscale/aperture-cli/releases/download/" + tag + "/" + name
resp, err = httpClient().Get(url)
if err != nil {
t.Fatalf("downloading %s: %v", url, err)
}
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("downloading %s: %s", url, resp.Status)
Expand Down
Loading