Tom Lienard
90d · built 2026-09-08
Performance
What Tom Lienard shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+6.6engineers
delivers like 7.6 (7.6x pre-AI)
Output (ETV)
1.1ETV
−47.5% vs 2.0 prior
Features share
24.5%
−35.4 pp vs prior window
Fixes share
12.3%
+8.8 pp vs prior window
Work mix
24.5% Features3.8% Maintenance53.8% Tests5.7% Docs12.3% Fixes
9 commits over 90 days, ending 2026-09-08.
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 0.4ETVfeat(sdk): single API call to run, wait and get logs of command (#223) The run-command endpoint now supports a new `logs` boolean field alongside the previous `wait` boolean field, that returns logs inside the ND-JSON stream. That allows us to do a single API call to run, wait and get the logs of a command, instead of two to run and wait, and get the logs This is supported when providing `stdout` or `stderr` within `runCommand()`, or later on when calling `logs()`/`output()`/`stdout()`/`stderr()` on the `CommandFinished`. It is also only supported if we are not running commands in detached mode, as otherwise we are not waiting for the command to complete/not waiting for its logsgithub.com-vercel-sandbox · 387675a3 · 2026-06-16
- 0.2ETVfeat(sdk): respect `retry-after` for up to 20s (#270) Follow-up to https://github.com/vercel/sandbox/pull/254: removing the `retry-after` logic made us always go through the 2 retries (with backoff) if a client keeps hitting a rate limit This PR adds back the `retry-after` logic and bails if it's more than 20s, while taking into account any `AbortSignal` passed in. It does keep the fewer retries (only 2)github.com-vercel-sandbox · 2bd5c12d · 2026-07-30
- 0.1ETVfeat(sdk): reduce default API call retries (#254) The current retries are quite expensive: 5 retries with 10ms-12s delay Reduce to 2 retries with 400-800ms delay, and remove the unused `retry-after` logic: since we bucket in per-minute, the `maxRetryAfter` of 20s always opted out of waiting 1mingithub.com-vercel-sandbox · 79a9c8ae · 2026-07-18
- 0.1ETVfeat(sdk): add `durationMs` to commands (#243) The API is now returning a `durationMs` field on commands. Similar to the exit code, it's only populated when the command finished executing This PR adds a new `durationMs` field to the commands classesgithub.com-vercel-sandbox · 68d7fd6b · 2026-07-07
- 0.1ETVfix(sdk): limit JWKS cache size on `defineSandboxProxy` (#309) This PR adds an LRU cache instead of a simple `Map` for the JWKS cache of `defineSandboxProxy` to prevent unbounded memory growth. The max size of 100 issuers is arbitrary but a good balance to prevent high memory usage/high number of open sockets while still avoiding to create new issuers all the timegithub.com-vercel-sandbox · 2023195e · 2026-08-20
- 0.1ETVfeat(sdk): clarify usage of `transform` and `forwardURL` (#251) Within network policies, `transform` and `forwardURL` are exclusive and should not be used together The API currently accepts this combinaison and doesn't reject it: `forwardURL` takes precedence and `transform` doesn't apply. We cannot currently update the API without a breaking change/new version because some customers might already accidentaly depend on it This PR updates the JS doc and validation of the SDK only, so that customers upgrading it have a chance to remove any usage of both `transform` and `forwardURL` within the same network policygithub.com-vercel-sandbox · 9cb06e6a · 2026-07-15
- 0.1ETVfeat(cli): un-deprecate `sandbox sh` (#241) We had some feedback that `sandbox sh` was useful as a quick way to run a sandbox and SSH into it directly, without having to type `sandbox create --connect` This PR un-deprecates `sandbox sh`, and supports all the options of `sandbox create`github.com-vercel-sandbox · 9f9d413d · 2026-07-06
- 0.0ETV[frameworks] update container logo (#16842) Update the container framework logo to match the dashboard, instead of using Docker's logo, using the Geist box icon: https://vercel.com/geist/geistcn-icons?q=boxgithub.com-vercel-vercel · acddddfa · 2026-06-29