Skip to content

v0.8.17: ci improvements, outdated docs i18n removal, desktop improvements - #7273

Merged
waleedlatif1 merged 9 commits into
mainfrom
staging
Aug 29, 2026
Merged

v0.8.17: ci improvements, outdated docs i18n removal, desktop improvements#7273
waleedlatif1 merged 9 commits into
mainfrom
staging

Conversation

@waleedlatif1

@waleedlatif1 waleedlatif1 commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

waleedlatif1 and others added 8 commits August 28, 2026 18:34
The docs shipped `es`, `fr`, `de`, `ja`, and `zh` alongside `en` through
fumadocs i18n and a lingo.dev translation pipeline. Neither is used any
more, so this removes the locale layer end to end rather than leaving a
vestigial `en` directory behind it.

- Delete the five translated content trees (995 files) and flatten
  `content/docs/en/**` up to `content/docs/**`.
- Delete `lib/i18n.ts`, `i18n.json`, `i18n.lock`, and the `i18n.cache`
  gitignore entry; drop `createI18nMiddleware` from `proxy.ts` and the
  `i18n` option from the source loader.
- Collapse `app/[lang]/**` into `app/**`, merging the locale layout's
  html/body shell into the root layout. The OpenAPI virtual pages moved
  off `baseDir: 'en/api-reference/(generated)'`, which was the `en`
  segment the dir parser used to consume.
- Strip locale branching from the sitemap, `llms.txt`, `llms-full.txt`,
  the `llms.mdx` route, the sidebar's active-path matching, structured
  data, and the hreflang/`alternateLocale` metadata.
- Simplify the search route to English-only: one `english` text-search
  config, unconditional vector search, and no locale-prefix filtering of
  `sourceDocument`. The docs-embeddings job already runs with `--clear`,
  so the now-unprefixed paths are rewritten on the next run.
- Repoint every script, test, and the CI path filter at `content/docs`,
  and de-loop the API-reference sidebar checks over the six locales. The
  execution-guide wire-shape test covered only the removed locales; it is
  retargeted at the English guides, which already satisfy it.

`check:audits` (39 audits), the docs build (666 paths), the docs and
OpenAPI suites, and the netsuite docs-path test all pass.
The max-cache-size-mb input added in 8fa7f0c never did anything.
setup-docker-builder v1 accepted it and pruned in its own post step, but the v2
rewrite dropped the input, and the repo pins v2.1.0. GitHub only WARNS on an
unknown composite input, so every build since has logged

  Unexpected input(s) 'max-cache-size-mb', valid inputs are ['cache-key', ...]

and pruned nothing. Scanned every tag to confirm: the input exists in v1.8.0
through v1.12.0 and in none of v2.0.0, v2.0.1, v2.1.0.

Rather than downgrade a builder rewrite to reach a config knob, run the prune
ourselves — v1's command verbatim, against the fixed address v2 itself uses for
`buildctl du` and `debug workers`:

  sudo buildctl --addr tcp://127.0.0.1:1234 prune --all --keep-storage <MB>

Both flags read from BuildKit master rather than assumed. buildctl's --all is not
`docker buildx prune --all`: it means "include internal/frontend references", and
cache/manager.go shows the only records skipped without it are those typed
internal or frontend plus refs shared with an external source. It does not wipe
the cache. --keep-storage maps onto the modern MaxUsedSpace field, so it is
buildctl's spelling of --max-used-space, not a deprecated alias, and it is the
only size flag buildctl exposes.

Two guards, both for failure modes that are silent and expensive:

Reject a non-positive-integer budget. buildctl parses --keep-storage as a float,
and BuildKit treats keepBytes==0 as "no cap" (`gcMode := opt.keepBytes != 0`),
pruning everything eligible instead of trimming. A typo like '40GB' — valid in
turbo.json, but this flag is a bare MB number — would empty the cache and make
every later build cold, costing far more than the storage saved.

Wait for `du` to settle after pruning. buildctl prune returns before buildkitd
has finished deleting (moby/buildkit#1198), and the builder's post step SIGTERMs
buildkitd then SIGKILLs it after 30s (shutdownBuildkitd: `const a=3e4`); on
SIGKILL it sets sigkillUsed and skips the sticky disk commit outright, discarding
the run's cache and risking a corrupt bbolt metadata DB. The wait is bounded, and
a steady-state trim settles almost immediately — it is the first catch-up prune
against a 200 GB backlog that would otherwise run into that window.

Warn rather than fail throughout, since an oversized cache is not worth failing a
deploy over — but print `buildctl du` either side, because a silent no-op is
exactly the failure mode that hid this regression for a day.
…7252)

The settle loop added in 4f65103 reads `cur="$(total)"`, and composite steps
run under `bash -e -o pipefail`, where an assignment takes its command
substitution's exit status. So any failing `buildctl du` aborts the step and
fails the build. `echo "$(total)"` survives the same failure, which is why this
was invisible in the paths that ran first.

That is not hypothetical. Deleting a sticky disk out from under a running job
makes buildkitd panic inside cache.(*cacheManager).DiskUsage, and it took a
Build AMD64 job down that way. `grep` also exits 1 whenever du prints no Total
line, so an empty cache would have done it too.

A cache-hygiene step must never be able to fail a deploy, so `total()` now always
returns 0. The prune's own failure was already handled — it is an `if` condition,
and a failing condition does not trip `-e`.
…-examples (#7250)

* docs(library): update what-is-an-ai-agent-definition-how-it-works-and-examples

* fix(library): remove markdown from FAQ answer

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
Co-authored-by: Waleed Latif <walif6@gmail.com>
* docs(library): update automation-anywhere-alternative

* fix(library): canonicalize overlapping RPA article

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
Co-authored-by: Waleed Latif <walif6@gmail.com>
* fix(connectors): stop hydration after rate limits

* fix(connectors): normalize provider throttles

* fix(connectors): inspect all drive error reasons
…ny (#7270)

These two harnesses are the template every service copied when the path
hardening sweep began, and both open with `type AnyTool = ToolConfig<any, any>`
plus an `as any` at the `url(...)` call. CLAUDE.md forbids `any` outright, and
because they are the template the violation propagated into ten in-flight PRs
before review flagged it. Fixing the source stops the next copy inheriting it.

The obvious repair does not compile. `ToolConfig` takes its param type in the
contravariant position of `request.url`, so no concrete member of the barrel's
union is assignable to a widened `ToolConfig<Record<string, unknown>, ...>`, and
`filter`'s type-predicate overload intersects rather than replaces -- filtering
the union directly leaves the mismatch standing. Seeding the enumeration as
`Object.values<unknown>(...)` makes the existing `isVercelTool` / `isDaytonaTool`
predicate the single narrowing point, which is the `unknown`-plus-type-guard form
the guidelines actually ask for, and removes the need for a cast at the call site.

Note these files have no type coverage in CI from either direction:
`apps/sim/tsconfig.json` excludes `**/*.test.ts`, and vitest does not typecheck.
Verified with a temporary tsconfig lifting the exclusion, confirming via
`--listFiles` that both files were genuinely in the program -- an empty program
also reports zero errors. That config was not committed.

Behaviour is unchanged: 1129 tests pass, identical to before.
* fix(browser): harden desktop tool lifecycle

* fix(browser): preserve screenshot coordinate contract

* fix(browser): close native execution races

* fix(browser): reconcile native unload claims

* fix(copilot): interrupt pending tool waits on stop
@vercel

vercel Bot commented Aug 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview Aug 29, 2026 7:16am

Request Review

@greptile-apps

greptile-apps Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review (1557 files, 100 file limit).

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 1557 files

Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.
Tip: instead of fixing issues one by one fix them all with cubic

Re-trigger cubic

Comment thread .github/actions/docker-build/action.yml
Comment thread apps/docs/app/[[...slug]]/page.tsx
Comment thread apps/sim/content/library/automation-anywhere-alternative/index.mdx
Comment thread apps/sim/content/library/automation-anywhere-alternative/index.mdx
)

The settle loop initialised prev='' and, after 4795d04 made total() return
empty on failure, two consecutive failed `buildctl du` reads compared equal and
tripped the stability counter. The loop then exited after ~2s instead of its
120s bound — exactly when du is failing and the prune is most likely still
deleting, which is the case the wait exists to cover. Handing back early there
risks the builder post-step SIGKILLing buildkitd and skipping the sticky disk
commit.

An empty reading can only mean du failed. buildctl prints its `Total:` line
unconditionally (cmd/buildctl/diskusage.go), so an empty cache still reports
`Total: 0B` and settles normally. Guarding on a non-empty reading therefore
costs nothing in the healthy paths: verified a steady value and an empty cache
both still exit after 3 iterations, while a persistently failing du now waits
out all 60.

Reported by cubic on #7273.
@waleedlatif1
waleedlatif1 merged commit c20cc1d into main Aug 29, 2026
51 of 53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants