Repository navigation
v0.9.0: Merge pull request #160 from pandemicsyn/changeset-release/main
Beachside v0.9.0
@beachside/adapter
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
beachside
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms. -
#164
7b9fa24Thanks @pandemicsyn! - BufferedreadFile/writeFile(and the text variants) have no default size limit: files larger than the adapter's buffered limit move through its file streams underneath.maxBytesstays as an optional guard and the 16 MiB ceiling is gone. Adapters without file streams keep their own limit, and the error names it.capabilities().maxFileBytesnow reports the adapter's buffered limit.execstdinalso accepts anAsyncIterable<Uint8Array>orReadableStream<Uint8Array>, and byte or text input over 1 MiB. These are streamed to the command as it runs on adapters with incremental process stdin (Daytona, E2B, Vercel), withdeadlineSecondsenforced locally.
Patch Changes
- #167
3f414a8Thanks @pandemicsyn! - E2B streamed writes, and buffered writes over 1 MiB, work in sticky directories such as/tmpagain; they used to fail there with "stream completion could not be confirmed". When a streamed E2B write fails, the error now names the step that failed and keeps the provider's original error as itscause. - Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/daytona
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
-
#169
1c36875Thanks @pandemicsyn! - Writing to a path whose folder does not exist yet now creates the missing folders on Daytona, boxd and Vercel, as E2B and Modal already did for writes. This coverswriteFile,writeFileStreamandcopyFile, and E2BcopyFilenow creates them too.Daytona no longer leaves
.beachside-exec-*and.beachside-write-*folders in/tmpafter commands and writes succeed. E2B also removes its command capture files and write stages once an interrupted operation is recovered. -
Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/e2b
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
-
#169
1c36875Thanks @pandemicsyn! - Writing to a path whose folder does not exist yet now creates the missing folders on Daytona, boxd and Vercel, as E2B and Modal already did for writes. This coverswriteFile,writeFileStreamandcopyFile, and E2BcopyFilenow creates them too.Daytona no longer leaves
.beachside-exec-*and.beachside-write-*folders in/tmpafter commands and writes succeed. E2B also removes its command capture files and write stages once an interrupted operation is recovered. -
#170
2b29fddThanks @pandemicsyn! - E2B overwrites of an existing file directly in a sticky directory such as/tmpnow succeed. They used to fail with an HTTP 500 from the sandbox because the kernel refuses to let E2B reopen a file there that belongs to the sandbox user; the adapter now uploads a fresh copy beside the file and copies it over as the sandbox user. -
#167
3f414a8Thanks @pandemicsyn! - E2B streamed writes, and buffered writes over 1 MiB, work in sticky directories such as/tmpagain; they used to fail there with "stream completion could not be confirmed". When a streamed E2B write fails, the error now names the step that failed and keeps the provider's original error as itscause. -
Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/boxd
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
-
#169
1c36875Thanks @pandemicsyn! - Writing to a path whose folder does not exist yet now creates the missing folders on Daytona, boxd and Vercel, as E2B and Modal already did for writes. This coverswriteFile,writeFileStreamandcopyFile, and E2BcopyFilenow creates them too.Daytona no longer leaves
.beachside-exec-*and.beachside-write-*folders in/tmpafter commands and writes succeed. E2B also removes its command capture files and write stages once an interrupted operation is recovered. -
Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/boat
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
- Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/runloop
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
- Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/modal
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
- Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/vercel
Minor Changes
-
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
-
#169
1c36875Thanks @pandemicsyn! - Writing to a path whose folder does not exist yet now creates the missing folders on Daytona, boxd and Vercel, as E2B and Modal already did for writes. This coverswriteFile,writeFileStreamandcopyFile, and E2BcopyFilenow creates them too.Daytona no longer leaves
.beachside-exec-*and.beachside-write-*folders in/tmpafter commands and writes succeed. E2B also removes its command capture files and write stages once an interrupted operation is recovered. -
Updated dependencies [
d137e90]:- @beachside/adapter@0.9.0
@beachside/cli
Minor Changes
-
#161
1015d07Thanks @pandemicsyn! - Report command status on terminal tabs with the Program Status Protocol (OSC 7501): inside Rex, or withBEACHSIDE_PROGRAM_STATUS=on,create,run,exec,rm,gcand other sandbox-changing commands show working, done or error. Reports go to stderr only when it is a terminal, so--jsonand piped output are unchanged. -
#172
a633a1cThanks @pandemicsyn! - Inside Rex (or withBEACHSIDE_PROGRAM_STATUS=on),cpandpushinto a sandbox now show upload progress on the terminal tab, andrun,execandshsend a desktop notification (OSC 777) when they finish after more than 30 seconds.BEACHSIDE_NOTIFY_AFTER=<seconds>|offchanges or turns off the notification. -
#159
d137e90Thanks @pandemicsyn! - Make provider setup consistent. Every first-party package now exports its definition as<provider>Adapterand a factory named after the provider:boxd(),boat(),runloop(),modal()andvercel()joindaytona()ande2b(). Docs, examples and skills show the split form,Beachside.connect({ adapter, credentials, config }), which works for every adapter.Breaking for Vercel: the definition is now
vercelAdapter, andvercelis the factory. Replaceadapter: vercelwithadapter: vercelAdapter, or callBeachside.connect(vercel({ token, teamId, projectId })). Passing a factory where a definition belongs now fails withINVALID_ARGUMENTand names both forms.
Patch Changes
-
#171
fe54090Thanks @pandemicsyn! -snapshot createno longer leaves a Daytona snapshot uncertain when the capture outlives the adapter's wait: the CLI sends the pending source restart and records the snapshot.snapshot rmandsnapshot inspectfinish such a capture the same way, so an uncertain capture can be deleted. A profile's OCIconfig.environmentnow follows the same build rule as--image: create reuses the recordedimage buildinstead of starting another build. -
#164
366a0c9Thanks @pandemicsyn! -cpandcathandle files of any size: they stream where the provider streams files, and otherwise move the file in 1 MiB parts that the sandbox joins or splits. A failed download no longer truncates the local file.exec,shandrunstream--stdinand--stdin-fileas the input arrives where the provider takes incremental stdin (Daytona, E2B, Vercel), so input has no size limit and can stay open (with--jsonor--no-stream, input over 1 MiB uses the SDK's streamed stdin). On other providers, input over 1 MiB fails with a hint to copy it in and redirect it. -
#173
29d0a39Thanks @pandemicsyn! - Clarify in the README that the CLI never prompts for input and that exit codes indicate what to do next. -
Updated dependencies [
d137e90,3f414a8,7b9fa24]:- beachside@0.9.0
- @beachside/adapter@0.9.0