Answer the review (Claude Fable 5.1); estilo 846b397
- estilo's busy.js now holds only a submit with a spinner showing (rastrillo discussion 51), so script submits no longer stall. - Scripts that submit on the visitor's behalf pass the form's button, so it shows the spinner (Calendar quick-add, Sheets file drop). - Slides' presenter Next/Previous/Blackout opt out (data-busy="false"): a live talk wants those instant. Memoria's old vendoring tool no longer writes rastrillo.js, which would bring the old busy rule back.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 files changed,
+9
−5
go.mod+1 −1go.sum+2 −0internal/sheets/static/drop.js+6 −4
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-20260929165053-846b39772f3c === 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.088s ok amadan.net/oficina/sheets/internal/sheets 11.068s ok amadan.net/oficina/sheets/internal/sheets/calc 0.008s ok amadan.net/oficina/sheets/internal/sheets/format 0.003s ok amadan.net/oficina/sheets/internal/sheets/live 0.054s ok amadan.net/oficina/sheets/internal/sheets/seal 0.003s ok amadan.net/oficina/sheets/internal/sheets/sealtest 0.003s ok amadan.net/oficina/sheets/internal/sheets/store 3.000s ok amadan.net/oficina/sheets/internal/sheets/xlsx 0.310s ? 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 53.506s ok amadan.net/oficina/sheets/internal/sheets/live 1.060s
diff --git a/go.mod b/go.mod| index fd236f8..096e607 100644 |
| --- a/go.mod |
| +++ b/go.mod |
| @@ -3,7 +3,7 @@ module amadan.net/oficina/sheets |
| go 1.25.0 |
| require ( |
| - amadan.net/oficina/estilo.git v0.0.0-20260929095838-0994675f496e |
| + amadan.net/oficina/estilo.git v0.0.0-20260929165053-846b39772f3c |
| 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 |
diff --git a/go.sum b/go.sum| index 68b0de3..cb4ad0f 100644 |
| --- a/go.sum |
| +++ b/go.sum |
| @@ -6,6 +6,8 @@ amadan.net/oficina/estilo.git v0.0.0-20260929095046-d0664ee49914 h1:V0AyxXYCxqGZ |
| amadan.net/oficina/estilo.git v0.0.0-20260929095046-d0664ee49914/go.mod h1:4u0jNBtIdMLOsJyrScfqoEuYDJF7BBM3qM9YWbzt6aw= |
| amadan.net/oficina/estilo.git v0.0.0-20260929095838-0994675f496e h1:LTSmIWUS8RjPb6m94Ynf7moyFYeBXr08rdOr3nmNqvg= |
| amadan.net/oficina/estilo.git v0.0.0-20260929095838-0994675f496e/go.mod h1:4u0jNBtIdMLOsJyrScfqoEuYDJF7BBM3qM9YWbzt6aw= |
| +amadan.net/oficina/estilo.git v0.0.0-20260929165053-846b39772f3c h1:YYocIz3r3b4oIA0K/58JkSsmyTOCzMT/2GaW/MFbbPo= |
| +amadan.net/oficina/estilo.git v0.0.0-20260929165053-846b39772f3c/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= |
diff --git a/internal/sheets/static/drop.js b/internal/sheets/static/drop.js| index 3a89703..6d84b5f 100644 |
| --- a/internal/sheets/static/drop.js |
| +++ b/internal/sheets/static/drop.js |
| @@ -122,10 +122,12 @@ |
| say('Use the button to choose that file.'); |
| return; |
| } |
| - /* requestSubmit fires the submit event, which is what rastrillo's |
| - * shim listens for to show the button busy. form.submit() skips |
| - * it, so it is the fallback and not the first choice. */ |
| - if (typeof form.requestSubmit === 'function') form.requestSubmit(); |
| + /* requestSubmit fires the submit event, which is what the busy |
| + * rule listens for; passing the form's button is what makes that |
| + * button show the spinner. form.submit() skips the event, so it is |
| + * the fallback and not the first choice. */ |
| + var button = form.querySelector('button[type=submit]'); |
| + if (typeof form.requestSubmit === 'function') form.requestSubmit(button || undefined); |
| else form.submit(); |
| } |