oficina / sheets Public

Pin home/connect 01166fc and estilo's Sheets corrections

connect 01166fc chains the in-app Sign out to {Issuer}/signout (a 307,
so the POST survives) and skips the form on /signin for a live session.
TestHomeLocalPluginRoundTripAndSignout now asserts the chain.

estilo is pinned at feat/r2-sheets-corrections (50567b1) while both are
in review; estilo merges first, then this re-pins to estilo main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev 191078e9c2d7fda5765cbfdd38dae7119a9192ec parent 300c4d1
3 files changed, +13 −8
  • go.mod +2 −2
  • go.sum +4 −4
  • internal/sheets/home_navigation_test.go +7 −2

CI passed — run details

CI log
amadan: .amadan/timeout: this job's budget is 15m0s (this runner allows up to 30m0s)
=== vet ===
CGO_ENABLED=0 go vet ./...
go: downloading amadan.net/oficina/estilo.git v0.0.0-20260923231144-50567b151510
go: downloading amadan.net/oficina/home/connect v0.0.0-20260923190447-01166fcfc0a9
=== fmt ===
=== build ===
CGO_ENABLED=0 go build ./...
=== migrations ===
rastrillo migration check
rastrillo migration check: models and migrations agree
=== go-test ===
CGO_ENABLED=0 go test -count=1 ./...
?   	amadan.net/oficina/sheets/cmd/sheets	[no test files]
ok  	amadan.net/oficina/sheets/internal/guardstest	0.283s
ok  	amadan.net/oficina/sheets/internal/sheets	10.724s
ok  	amadan.net/oficina/sheets/internal/sheets/calc	0.054s
ok  	amadan.net/oficina/sheets/internal/sheets/format	0.006s
ok  	amadan.net/oficina/sheets/internal/sheets/live	0.070s
ok  	amadan.net/oficina/sheets/internal/sheets/seal	0.016s
ok  	amadan.net/oficina/sheets/internal/sheets/sealtest	0.009s
ok  	amadan.net/oficina/sheets/internal/sheets/store	3.239s
ok  	amadan.net/oficina/sheets/internal/sheets/xlsx	0.391s
?   	amadan.net/oficina/sheets/tools/gencorpus	[no test files]
=== race ===
go test -race -count=1 ./internal/sheets/store/... ./internal/sheets/live/...
ok  	amadan.net/oficina/sheets/internal/sheets/store	46.195s
ok  	amadan.net/oficina/sheets/internal/sheets/live	1.059s
diff --git a/go.mod b/go.mod
index ff8afa0..574ffb5 100644
--- a/go.mod
+++ b/go.mod
@@ -3,8 +3,8 @@ module amadan.net/oficina/sheets
go 1.25.0
require (
- amadan.net/oficina/estilo.git v0.0.0-20260909234655-dec3908b237c
- amadan.net/oficina/home/connect v0.0.0-20260910000424-5b8d8410775f
+ amadan.net/oficina/estilo.git v0.0.0-20260923231144-50567b151510
+ amadan.net/oficina/home/connect v0.0.0-20260923190447-01166fcfc0a9
amadan.net/oficina/home/handoff v0.0.0-20260908102137-481d2d57f489
amadan.net/rastrillo/rastrillo v0.26.1-0.20260908075707-29e4491631bd
github.com/carlosframework/rastrillo v0.23.0
diff --git a/go.sum b/go.sum
index 45e2c16..7b2b05f 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +1,7 @@
-amadan.net/oficina/estilo.git v0.0.0-20260909234655-dec3908b237c h1:LgE7WLm6zMG/qZScoAHb4X2gguzorctB4XGjPYavXts=
-amadan.net/oficina/estilo.git v0.0.0-20260909234655-dec3908b237c/go.mod h1:0R45/vCUAT+kpS7S6K/ZxBdE8f7YxFN4HT3HyDJ3nPY=
-amadan.net/oficina/home/connect v0.0.0-20260910000424-5b8d8410775f h1:lkw3tjzHfZxe74pNfo+tGDz4mkZLg+D6R+FTkmsym6M=
-amadan.net/oficina/home/connect v0.0.0-20260910000424-5b8d8410775f/go.mod h1:YroavXe43Wietec+po8mtSk4a9Bir2h31Q3iAf4MWxI=
+amadan.net/oficina/estilo.git v0.0.0-20260923231144-50567b151510 h1:fLpBbThwaU/dwP0A2yDrM1iQBt/82qLr49F2TVI12gE=
+amadan.net/oficina/estilo.git v0.0.0-20260923231144-50567b151510/go.mod h1:4u0jNBtIdMLOsJyrScfqoEuYDJF7BBM3qM9YWbzt6aw=
+amadan.net/oficina/home/connect v0.0.0-20260923190447-01166fcfc0a9 h1:K/PaOVdQqRMwifPD6ipiwLeGR5nbFSxm9FxjrDJlZcg=
+amadan.net/oficina/home/connect v0.0.0-20260923190447-01166fcfc0a9/go.mod h1:YroavXe43Wietec+po8mtSk4a9Bir2h31Q3iAf4MWxI=
amadan.net/oficina/home/handoff v0.0.0-20260908102137-481d2d57f489 h1:RPKtyry/71i06o8L+gjAaUyexbmG56kO1YPs601URAM=
amadan.net/oficina/home/handoff v0.0.0-20260908102137-481d2d57f489/go.mod h1:YISpzFJ+iMgrM0rUL032OSzsAQbP4/nozvXLCCOcn1k=
amadan.net/rastrillo/native/server v0.0.0-20260923173546-2a5d07b2c8d3 h1:5EFx7BLJj/+G/rt8bTmeyMWVfF5s5Sns7ajTvX4w/I8=
diff --git a/internal/sheets/home_navigation_test.go b/internal/sheets/home_navigation_test.go
index 6998448..9f36663 100644
--- a/internal/sheets/home_navigation_test.go
+++ b/internal/sheets/home_navigation_test.go
@@ -44,9 +44,14 @@ func TestHomeLocalPluginRoundTripAndSignout(t *testing.T) {
t.Fatal("sign-in seeded content", count)
}
f.link(t, "round-trip")
+ // With Home configured, the app's Sign out ends the app session and
+ // then chains to the credential origin (home/connect 01166fc, spec
+ // §9.5): a 307, so the POST survives the hop, to {Issuer}/signout.
+ // That hop is what stops the signed-out page's "Sign in" passing
+ // silently back through a live id.* session.
out := f.request(t, "POST", "/signout", nil, false)
- if out.Code != 303 || out.Header().Get("Location") != "/signed-out" {
- t.Fatal("signout", out.Code)
+ if out.Code != http.StatusTemporaryRedirect || out.Header().Get("Location") != homeTestIssuer+"/signout" {
+ t.Fatal("signout", out.Code, out.Header().Get("Location"))
}
if page := f.request(t, "GET", "/signed-out", nil, false); page.Code != 200 || page.Header().Get("Location") != "" {
t.Fatal("signout restarted Home")