c7c3f21e4b
feat(ai): puter.ai.convo - Preliminary Realtime API implementation ( #4401 )
...
* feat(ai): relay OpenAI's Realtime API as puter.ai.assistant
Adds a WebSocket relay at /puterai/openai/v1/realtime on the api host,
one upstream OpenAI connection per client, frames passed through 1:1.
The client socket is accepted before auth so socket.io's 1 s
unhandled-upgrade timeout can't kill slow handshakes; failures arrive as
OpenAI-shaped error events and a 1008 close. Usage is metered per
response.done at the model's token rates, sessions are capped per user
(realtime.maxConnectionsPerUser), and each node logs counters,
event-loop delay and memory every 30 s.
puter.js gets puter.ai.assistant.connect(), returning a session with
send/on/off/close over the same OpenAI events.
realtime.upstreamUrl points the relay at a mock for load tests;
tools/realtime-stress has the mock upstream, a load generator with a
JSON report, and an agent runbook. The relay README lists its quirks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
* fix(ai): backpressure and upload budget on the realtime relay
Neither direction applied backpressure: a client that stopped reading
grew a queue up to 64 MiB, and a client streaming 16 MiB frames was read
and forwarded as fast as it could send. A few such sockets pinned the
event loop and pushed RSS past 1 GB.
Each side now stops reading the other once 1 MiB is queued toward it,
and a client that keeps the upstream paused for 30 s is closed. Client
uploads are budgeted per session (1 MiB/s sustained, 16 MiB burst,
realtime.maxClientBytesPerSecond), pre-open buffering pauses reads at
1 MiB instead of rejecting at 32 MiB, and clients get a 30 s ping so
half-open sockets release their upstream and slot. Upstream frames use
a zero mask and skip UTF-8 validation, which the relay never needed.
The stats line gains elu. tools/realtime-stress gains abuse.mjs and a
runbook phase for event-loop abuse.
* fix(ai): drain, transcription metering and credential re-check on the realtime relay
Shutdown now drains: a new onServerDrainStart hook (run when SIGTERM
starts the drain, before the listener closes) makes the relay refuse new
sessions with 1012, open ones keep running through the drain window, and
at onServerPrepareShutdown each gets up to 5 s to finish an in-flight
response before closing with 1012 so the client reconnects elsewhere.
Input transcription is metered. The relay reads the type from each text
frame's first 96 bytes and, after forwarding, parses response.done,
input_audio_transcription.completed and session.created/updated (for the
transcription model) on setImmediate, so metering never holds up frames.
Unknown transcription models bill at the highest known rate.
Credentials are re-checked: a successful auth is cached in the kv.js
singleton for 60 s under a hash of the token, and a 15 s sweep
re-authenticates sessions whose entry expired, closing revoked or
suspended ones with invalid_api_key. Lookup errors keep the session and
retry on the next sweep.
* docs(ai): API shape proposal for puter.ai.conversation() across OpenAI, Gemini Live and xAI
* feat(ai): add composable realtime conversations with bounded transport
* fix(ai): realtime billing, subscription gate and conversation reconnects
Relay:
- Cancel and bill a response still generating when the client leaves,
instead of cutting the upstream before response.done.
- Record realtime usage through the AI cost-factor hook.
- Drop the upstream byte and message caps; replies arrive faster than real
time and tripping them closed sessions and skipped billing.
- Price usage as it arrives, before any forwarding decision, so a closing
session never drops a usage event.
- Bill the model the session reports and refuse a session.update that
changes the model.
- Require a paid plan.
SDK (puter.ai.convo):
- Reconnect after a dropped connection with the same settings, keeping
listeners and media; emits reconnecting and ready { reconnected }.
- Errors reject only the operation they name; a failed send rejects only
its own request.
- configure() sends only the given settings and settles on its own ack;
commitAudio follows turn detection set natively.
- interrupt() right after sendText cancels the reply once it starts.
- Microphone: capture at the device rate, drop chunks instead of stopping
on stalls or a congested socket, no timeout on the permission prompt,
permission_denied on refusal.
- Speaker: 300 s playback bound without interrupting, played position
accounts for output latency and gaps between chunks.
- Audio control events keep headroom over queued audio.
- Upgrade prompt on subscription_required / insufficient_funds.
Tests that need the built SDK and Chromium move to the puter.js suite.
* chore: remove stray node_modules symlinks
* feat(ai): retire assistant API and document realtime beta
* test(ai): wait for the matching realtime billing batch
* test(kv): exclude health probes from warm read measurements
* Revert "test(kv): exclude health probes from warm read measurements"
This reverts commit 631003f755 .
* fix(ai): upstream message size, null usage, team 2FA and reconnect settings for realtime
Relay:
- Upstream messages may be up to 4 MiB; client messages stay at 64 KiB.
An OpenAI event above 64 KiB (an echoed item near the client limit, a
long reply, a retrieved audio item) closed the upstream before in-flight
responses reported usage.
- An upstream that closes with a response still in flight raises a
warning alarm.
- A null usage counts as none instead of closing the session.
- Seats whose team requires 2FA need it for realtime too, at connect and
on the credential recheck.
SDK (puter.ai.convo):
- A reconnect reapplies every acknowledged setting, native session.update
events included, split to fit the message limit.
- connect() during a reconnect settles with it.
- Reconnect delays are jittered, and closing cancels a pending delay.
The credential-recheck and browser worklet tests now fail when the
behavior they cover breaks.
* feat(ai): credit holds, attempt limits and late-response billing for realtime (#4407 )
Relay:
- Each response holds 8,000 audio input and 4,096 audio output tokens of
the account's budget, at the session model's rates, from
response.created until its usage is recorded. A session opens only if
one hold fits.
- Session attempts are limited to 60 per minute per credential, checked
before authentication.
- A response the client requested that starts after the client leaves is
cancelled and billed.
- Input transcription is priced at the costlier of the transcription
models in force at commit and at completion.
- rate_limits.updated isn't forwarded, and provider organization IDs are
removed from error messages.
SDK (puter.ai.convo):
- microphone.stop() during the permission prompt rejects the pending
start() with session_closed.
- speaker.start() rejects with { code, message } for browser exceptions.
- connect() waits 20 seconds for the session, past the server's 15-second
setup.
- Convenience events fill IDs the provider leaves out; types cover
turn.done, error, and client events for send().
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
Co-authored-by: Daniel Salazar <daniel.salazar@puter.com >
2026-10-30 14:50:15 -07:00
dependabot[bot]
5a879a4346
chore(deps): bump smtp-server from 3.19.23 to 3.19.24 ( #4383 )
...
Bumps [smtp-server](https://github.com/nodemailer/smtp-server ) from 3.19.23 to 3.19.24.
- [Release notes](https://github.com/nodemailer/smtp-server/releases )
- [Changelog](https://github.com/nodemailer/smtp-server/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodemailer/smtp-server/compare/v3.19.23...v3.19.24 )
---
updated-dependencies:
- dependency-name: smtp-server
dependency-version: 3.19.24
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-27 08:54:33 -07:00
Daniel Salazar
3160b99f11
chore: bump ver ( #4335 )
2026-10-25 08:24:40 -07:00
dependabot[bot]
f70240784f
chore(deps): bump follow-redirects from 1.16.0 to 1.16.1 ( #4287 )
...
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects ) from 1.16.0 to 1.16.1.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases )
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.16.0...v1.16.1 )
---
updated-dependencies:
- dependency-name: follow-redirects
dependency-version: 1.16.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-20 16:53:12 -07:00
dependabot[bot]
0768978111
chore(deps-dev): bump vitest from 4.1.11 to 4.1.12 ( #4275 )
...
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ) from 4.1.11 to 4.1.12.
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.12/packages/vitest )
---
updated-dependencies:
- dependency-name: vitest
dependency-version: 4.1.12
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-20 15:47:43 -07:00
dependabot[bot]
ed531e3992
chore(deps): bump undici from 7.30.0 to 7.30.1 ( #4280 )
...
Bumps [undici](https://github.com/nodejs/undici ) from 7.30.0 to 7.30.1.
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v7.30.0...v7.30.1 )
---
updated-dependencies:
- dependency-name: undici
dependency-version: 7.30.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-20 15:27:17 -07:00
dependabot[bot]
53e27f3d41
chore(deps): bump mysql2 from 3.24.5 to 3.24.6 ( #4279 )
...
Bumps [mysql2](https://github.com/sidorares/node-mysql2 ) from 3.24.5 to 3.24.6.
- [Release notes](https://github.com/sidorares/node-mysql2/releases )
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md )
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.24.5...v3.24.6 )
---
updated-dependencies:
- dependency-name: mysql2
dependency-version: 3.24.6
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-20 15:25:23 -07:00
dependabot[bot]
deac121675
chore(deps-dev): bump eslint-plugin-prettier from 5.5.6 to 5.5.7 ( #4278 )
...
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier ) from 5.5.6 to 5.5.7.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases )
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.6...v5.5.7 )
---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
dependency-version: 5.5.7
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-20 15:22:09 -07:00
dependabot[bot]
73624bf1d0
chore(deps): bump smtp-server from 3.19.21 to 3.19.23 ( #4276 )
...
Bumps [smtp-server](https://github.com/nodemailer/smtp-server ) from 3.19.21 to 3.19.23.
- [Release notes](https://github.com/nodemailer/smtp-server/releases )
- [Changelog](https://github.com/nodemailer/smtp-server/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodemailer/smtp-server/compare/v3.19.21...v3.19.23 )
---
updated-dependencies:
- dependency-name: smtp-server
dependency-version: 3.19.23
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-20 15:19:00 -07:00
dependabot[bot]
f9860b036b
chore(deps-dev): bump prettier from 3.9.9 to 3.9.10 ( #4240 )
...
Notify HeyPuter / notify (push) Canceled after 0s
Backend Tests / changes (push) Canceled after 0s
Backend Tests / typecheck (push) Canceled after 0s
Backend Tests / test shard 1/4 (push) Canceled after 0s
Backend Tests / test shard 2/4 (push) Canceled after 0s
Backend Tests / test shard 3/4 (push) Canceled after 0s
Backend Tests / test shard 4/4 (push) Canceled after 0s
Backend Tests / test (main) (push) Canceled after 0s
Backend Tests / coverage (push) Canceled after 0s
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
Bumps [prettier](https://github.com/prettier/prettier ) from 3.9.9 to 3.9.10.
- [Release notes](https://github.com/prettier/prettier/releases )
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prettier/prettier/compare/3.9.9...3.9.10 )
---
updated-dependencies:
- dependency-name: prettier
dependency-version: 3.9.10
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 14:46:31 -07:00
dependabot[bot]
76e1f79b5e
chore(deps): bump smtp-server from 3.19.17 to 3.19.21 ( #4242 )
...
Bumps [smtp-server](https://github.com/nodemailer/smtp-server ) from 3.19.17 to 3.19.21.
- [Release notes](https://github.com/nodemailer/smtp-server/releases )
- [Changelog](https://github.com/nodemailer/smtp-server/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodemailer/smtp-server/compare/v3.19.17...v3.19.21 )
---
updated-dependencies:
- dependency-name: smtp-server
dependency-version: 3.19.21
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 14:43:54 -07:00
dependabot[bot]
943a3427c6
chore(deps-dev): bump @types/busboy from 1.5.4 to 1.5.5 ( #4241 )
...
Bumps [@types/busboy](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/busboy ) from 1.5.4 to 1.5.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/busboy )
---
updated-dependencies:
- dependency-name: "@types/busboy"
dependency-version: 1.5.5
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 14:38:42 -07:00
dependabot[bot]
38469a3615
chore(deps): bump libphonenumber-js from 1.13.14 to 1.13.15 ( #4239 )
...
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js ) from 1.13.14 to 1.13.15.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md )
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.13.14...v1.13.15 )
---
updated-dependencies:
- dependency-name: libphonenumber-js
dependency-version: 1.13.15
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 14:35:15 -07:00
dependabot[bot]
a4d4a5595e
chore(deps-dev): bump vite from 8.1.5 to 8.1.6 ( #4238 )
...
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) from 8.1.5 to 8.1.6.
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/v8.1.6/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.1.6/packages/vite )
---
updated-dependencies:
- dependency-name: vite
dependency-version: 8.1.6
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 14:35:07 -07:00
dependabot[bot]
de69269b10
chore(deps): bump uuid from 14.0.2 to 14.0.3 ( #4237 );'''"????????????????????
...
Bumps [uuid](https://github.com/uuidjs/uuid ) from 14.0.2 to 14.0.3.
- [Release notes](https://github.com/uuidjs/uuid/releases )
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md )
- [Commits](https://github.com/uuidjs/uuid/compare/v14.0.2...v14.0.3 )
---
updated-dependencies:
- dependency-name: uuid
dependency-version: 14.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-15 13:25:49 -07:00
dependabot[bot]
807368f7b8
chore(deps): bump handlebars from 4.7.9 to 4.7.10 ( #4137 )
...
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js ) from 4.7.9 to 4.7.10.
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases )
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.10/release-notes.md )
- [Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.9...v4.7.10 )
---
updated-dependencies:
- dependency-name: handlebars
dependency-version: 4.7.10
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-08 17:20:25 -07:00
dependabot[bot]
505fd13d97
chore(deps): bump shell-quote from 1.9.0 to 1.12.0 ( #4121 )
...
Bumps [shell-quote](https://github.com/ljharb/shell-quote ) from 1.9.0 to 1.12.0.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md )
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.9.0...v1.12.0 )
---
updated-dependencies:
- dependency-name: shell-quote
dependency-version: 1.12.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-08 11:30:52 -07:00
dependabot[bot]
3d7deaa403
chore(deps): bump smtp-server from 3.19.13 to 3.19.17 ( #4083 )
...
Bumps [smtp-server](https://github.com/nodemailer/smtp-server ) from 3.19.13 to 3.19.17.
- [Release notes](https://github.com/nodemailer/smtp-server/releases )
- [Changelog](https://github.com/nodemailer/smtp-server/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodemailer/smtp-server/compare/v3.19.13...v3.19.17 )
---
updated-dependencies:
- dependency-name: smtp-server
dependency-version: 3.19.16
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 22:36:57 -07:00
dependabot[bot]
accf33a50e
chore(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 ( #4123 )
...
release-please / release-please (push) Canceled after 0s
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
Bumps [source-map-js](https://github.com/7rulnik/source-map-js ) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/7rulnik/source-map-js/releases )
- [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md )
- [Commits](https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2 )
---
updated-dependencies:
- dependency-name: source-map-js
dependency-version: 1.2.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 17:14:30 -07:00
dependabot[bot]
ab175b0fb4
chore(deps): bump proxy-addr from 2.0.7 to 2.0.8 ( #4122 )
...
Bumps [proxy-addr](https://github.com/jshttp/proxy-addr ) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/jshttp/proxy-addr/releases )
- [Changelog](https://github.com/jshttp/proxy-addr/blob/master/HISTORY.md )
- [Commits](https://github.com/jshttp/proxy-addr/compare/v2.0.7...v2.0.8 )
---
updated-dependencies:
- dependency-name: proxy-addr
dependency-version: 2.0.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 17:13:23 -07:00
dependabot[bot]
3fcbd895a7
chore(deps): bump sharp from 0.35.4 to 0.35.5 ( #4081 )
...
Bumps [sharp](https://github.com/lovell/sharp ) from 0.35.4 to 0.35.5.
- [Release notes](https://github.com/lovell/sharp/releases )
- [Commits](https://github.com/lovell/sharp/compare/v0.35.4...v0.35.5 )
---
updated-dependencies:
- dependency-name: sharp
dependency-version: 0.35.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 16:12:01 -07:00
dependabot[bot]
4c9e4d8e79
chore(deps): bump mysql2 from 3.24.4 to 3.24.5 ( #4082 )
...
Bumps [mysql2](https://github.com/sidorares/node-mysql2 ) from 3.24.4 to 3.24.5.
- [Release notes](https://github.com/sidorares/node-mysql2/releases )
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md )
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.24.4...v3.24.5 )
---
updated-dependencies:
- dependency-name: mysql2
dependency-version: 3.24.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-07 16:11:46 -07:00
Daniel Salazar
1f1e5674d8
chore: bump puter js ver ( #4073 )
release-please / release-please (push) Canceled after 0s
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
2026-10-04 17:17:38 -07:00
dependabot[bot]
d0da8c5b1e
chore(deps): bump engine.io from 6.6.9 to 6.6.11 ( #4017 )
...
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
Bumps [engine.io](https://github.com/socketio/socket.io ) from 6.6.9 to 6.6.11.
- [Release notes](https://github.com/socketio/socket.io/releases )
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md )
- [Commits](https://github.com/socketio/socket.io/compare/engine.io@6.6.9...engine.io@6.6.11 )
---
updated-dependencies:
- dependency-name: engine.io
dependency-version: 6.6.11
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 15:03:34 -07:00
dependabot[bot]
303ee6c2c7
chore(deps-dev): bump brace-expansion from 1.1.18 to 1.1.21 ( #4015 )
...
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion ) from 1.1.18 to 1.1.21.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases )
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.18...v1.1.21 )
---
updated-dependencies:
- dependency-name: brace-expansion
dependency-version: 1.1.21
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 15:02:56 -07:00
dependabot[bot]
f387a7aa68
chore(deps): bump fast-uri from 3.1.7 to 3.1.8 ( #4014 )
...
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
Bumps [fast-uri](https://github.com/fastify/fast-uri ) from 3.1.7 to 3.1.8.
- [Release notes](https://github.com/fastify/fast-uri/releases )
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.7...v3.1.8 )
---
updated-dependencies:
- dependency-name: fast-uri
dependency-version: 3.1.8
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 18:39:45 -07:00
dependabot[bot]
376a047ecc
chore(deps): bump @grpc/grpc-js from 1.14.4 to 1.14.5 ( #4010 )
...
Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node ) from 1.14.4 to 1.14.5.
- [Release notes](https://github.com/grpc/grpc-node/releases )
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.14.4...@grpc/grpc-js@1.14.5 )
---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
dependency-version: 1.14.5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 17:50:14 -07:00
dependabot[bot]
fe7b0ce535
chore(deps): bump axios from 1.18.1 to 1.20.0 ( #4008 )
...
Bumps [axios](https://github.com/axios/axios ) from 1.18.1 to 1.20.0.
- [Release notes](https://github.com/axios/axios/releases )
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md )
- [Commits](https://github.com/axios/axios/compare/v1.18.1...v1.20.0 )
---
updated-dependencies:
- dependency-name: axios
dependency-version: 1.20.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 17:49:54 -07:00
dependabot[bot]
e85c6917f7
chore(deps): bump fastify from 5.12.3 to 5.12.5 ( #4009 )
...
Bumps [fastify](https://github.com/fastify/fastify ) from 5.12.3 to 5.12.5.
- [Release notes](https://github.com/fastify/fastify/releases )
- [Commits](https://github.com/fastify/fastify/commits/v5.12.5 )
---
updated-dependencies:
- dependency-name: fastify
dependency-version: 5.12.5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 17:49:42 -07:00
dependabot[bot]
c6da95beb0
chore(deps-dev): bump undici from 7.29.0 to 7.30.0 ( #3991 )
...
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
Bumps [undici](https://github.com/nodejs/undici ) from 7.29.0 to 7.30.0.
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v7.29.0...v7.30.0 )
---
updated-dependencies:
- dependency-name: undici
dependency-version: 7.30.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 09:52:01 -07:00
dependabot[bot]
cd37cf147f
chore(deps): bump socket.io-client from 4.8.3 to 4.8.4 ( #3982 )
...
Bumps [socket.io-client](https://github.com/socketio/socket.io ) from 4.8.3 to 4.8.4.
- [Release notes](https://github.com/socketio/socket.io/releases )
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md )
- [Commits](https://github.com/socketio/socket.io/compare/socket.io-client@4.8.3...socket.io-client@4.8.4 )
---
updated-dependencies:
- dependency-name: socket.io-client
dependency-version: 4.8.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 12:56:15 -07:00
dependabot[bot]
6a31b2af9e
chore(deps): bump libphonenumber-js from 1.13.13 to 1.13.14 ( #3984 )
...
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js ) from 1.13.13 to 1.13.14.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md )
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.13.13...v1.13.14 )
---
updated-dependencies:
- dependency-name: libphonenumber-js
dependency-version: 1.13.14
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 10:11:03 -07:00
dependabot[bot]
3ebb753eb1
chore(deps): bump socket.io from 4.8.3 to 4.8.4 ( #3985 )
...
Bumps [socket.io](https://github.com/socketio/socket.io ) from 4.8.3 to 4.8.4.
- [Release notes](https://github.com/socketio/socket.io/releases )
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md )
- [Commits](https://github.com/socketio/socket.io/compare/socket.io@4.8.3...socket.io@4.8.4 )
---
updated-dependencies:
- dependency-name: socket.io
dependency-version: 4.8.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 10:08:32 -07:00
dependabot[bot]
7eb9ace733
chore(deps-dev): bump prettier from 3.9.8 to 3.9.9 ( #3986 )
...
Bumps [prettier](https://github.com/prettier/prettier ) from 3.9.8 to 3.9.9.
- [Release notes](https://github.com/prettier/prettier/releases )
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prettier/prettier/compare/3.9.8...3.9.9 )
---
updated-dependencies:
- dependency-name: prettier
dependency-version: 3.9.9
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 09:51:06 -07:00
dependabot[bot]
14ae6a69ee
chore(deps): bump postal-mime from 3.0.0 to 3.0.1 ( #3983 )
...
Bumps [postal-mime](https://github.com/postalsys/postal-mime ) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/postalsys/postal-mime/releases )
- [Changelog](https://github.com/postalsys/postal-mime/blob/master/CHANGELOG.md )
- [Commits](https://github.com/postalsys/postal-mime/compare/v3.0.0...v3.0.1 )
---
updated-dependencies:
- dependency-name: postal-mime
dependency-version: 3.0.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 09:50:45 -07:00
Neal Shah
1fc2eae1ae
self hosted mail ( #3932 )
...
* self hosted mail
* update lock
* address daniel review
2026-09-25 21:48:15 -04:00
dependabot[bot]
6debd7df76
chore(deps-dev): bump prettier from 3.9.6 to 3.9.8 ( #3925 )
...
Bumps [prettier](https://github.com/prettier/prettier ) from 3.9.6 to 3.9.8.
- [Release notes](https://github.com/prettier/prettier/releases )
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prettier/prettier/compare/3.9.6...3.9.8 )
---
updated-dependencies:
- dependency-name: prettier
dependency-version: 3.9.8
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 11:33:49 -07:00
dependabot[bot]
70404579f2
chore(deps-dev): bump @types/node from 24.13.4 to 24.13.6 ( #3926 )
...
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) from 24.13.4 to 24.13.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 24.13.6
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 11:33:40 -07:00
Daniel Salazar
45aff36f0c
fix: auto create folders for fs perms ( #3873 )
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
2026-09-15 15:11:13 -07:00
dependabot[bot]
92dfe4019e
chore(deps): bump compression from 1.8.1 to 1.8.2 ( #3861 )
...
Bumps [compression](https://github.com/expressjs/compression ) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/expressjs/compression/releases )
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md )
- [Commits](https://github.com/expressjs/compression/compare/v1.8.1...v1.8.2 )
---
updated-dependencies:
- dependency-name: compression
dependency-version: 1.8.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:30:41 -07:00
dependabot[bot]
61a6820767
chore(deps-dev): bump @types/node from 24.13.3 to 24.13.4 ( #3862 )
...
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) from 24.13.3 to 24.13.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 24.13.4
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:29:37 -07:00
dependabot[bot]
38b131e5e8
chore(deps): bump libphonenumber-js from 1.13.12 to 1.13.13 ( #3863 )
...
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js ) from 1.13.12 to 1.13.13.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md )
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.13.12...v1.13.13 )
---
updated-dependencies:
- dependency-name: libphonenumber-js
dependency-version: 1.13.13
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 10:29:09 -07:00
dependabot[bot]
b901040c14
chore(deps): bump nodemailer from 9.0.6 to 9.1.1 ( #3832 )
...
Maintain Release Merge PR / update-release-pr (push) Canceled after 0s
Notify HeyPuter / notify (push) Canceled after 0s
release-please / release-please (push) Canceled after 0s
Bumps [nodemailer](https://github.com/nodemailer/nodemailer ) from 9.0.6 to 9.1.1.
- [Release notes](https://github.com/nodemailer/nodemailer/releases )
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodemailer/nodemailer/compare/v9.0.6...v9.1.1 )
---
updated-dependencies:
- dependency-name: nodemailer
dependency-version: 9.1.1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-12 00:32:34 -07:00
Neal Shah
883072d144
add email composer api (puter.email.send) ( #3854 )
...
* add email composer
* fix imports
* add import for fetchUrl
* add import for compose
* add API origin to fetchUrl
* CI related fixes
* types fix
* address leaf function nitpick
* tests and validation checks
* Fix lockfile
2026-09-12 01:20:41 +00:00
Daniel Salazar
367d20a55c
test: kv tests ( #3844 )
...
* test: kv tests
* chore: bump deps
2026-09-10 14:35:46 -07:00
dependabot[bot]
84368f8d02
chore(deps): bump otpauth from 9.5.1 to 9.5.2 ( #3820 )
...
Bumps [otpauth](https://github.com/hectorm/otpauth ) from 9.5.1 to 9.5.2.
- [Release notes](https://github.com/hectorm/otpauth/releases )
- [Commits](https://github.com/hectorm/otpauth/compare/v9.5.1...v9.5.2 )
---
updated-dependencies:
- dependency-name: otpauth
dependency-version: 9.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 13:26:41 -04:00
dependabot[bot]
72889d72c8
chore(deps): bump undici from 7.29.0 to 7.29.1 ( #3821 )
...
Bumps [undici](https://github.com/nodejs/undici ) from 7.29.0 to 7.29.1.
- [Release notes](https://github.com/nodejs/undici/releases )
- [Commits](https://github.com/nodejs/undici/compare/v7.29.0...v7.29.1 )
---
updated-dependencies:
- dependency-name: undici
dependency-version: 7.29.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 08:52:50 -07:00
dependabot[bot]
2784feb47d
chore(deps): bump fast-uri from 3.1.5 to 3.1.7 ( #3810 )
...
Bumps [fast-uri](https://github.com/fastify/fast-uri ) from 3.1.5 to 3.1.7.
- [Release notes](https://github.com/fastify/fast-uri/releases )
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.7 )
---
updated-dependencies:
- dependency-name: fast-uri
dependency-version: 3.1.7
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-06 16:43:02 -07:00
Nariman Jelveh
e6cedde732
Add resilient PDF thumbnails to GUI uploads ( #3809 )
...
* Add resilient PDF thumbnails to GUI uploads
* Keep GUI image thumbnails working with SDKs lacking the callback context
The desktop loads puter.js from js.puter.com by default, and the SDK
there predates the thumbnail callback context, so passing the PDF
generator made every image upload lose its thumbnail until the SDK
deploys. Fall back to the SDK's bundled image generator whenever the
running SDK passes no usable context, and cover both paths in the unit
and browser tests.
* Ignore preparation failures that land after an upload is cancelled
Cancelling during preparation already rejects the upload and fires the
abort callback. If the step that was in flight then fails, such as a
dropped directory that cannot be read, the error callback also fired and
the GUI showed an upload error for an upload the user had just
cancelled. Skip error reporting once preparation has been aborted.
* Give each PDF thumbnail worker four seconds
The per-PDF budget covers downloading PDF.js as well as rendering, and
the first PDF of a session on a slower connection ran out of time
before its assets had even loaded. Four seconds fits that first load on
ordinary connections while staying under the five-second batch cap, so
one stuck PDF still leaves the rest of the batch a chance.
2026-09-06 13:51:02 -07:00
dependabot[bot]
b6fb4f3cae
chore(deps-dev): bump @eslint/js from 9.39.4 to 9.39.5 ( #3791 )
...
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js ) from 9.39.4 to 9.39.5.
- [Release notes](https://github.com/eslint/eslint/releases )
- [Commits](https://github.com/eslint/eslint/commits/v9.39.5/packages/js )
---
updated-dependencies:
- dependency-name: "@eslint/js"
dependency-version: 9.39.5
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 23:56:03 -07:00