What's Changed
- fix: add beta flag to kv share docs to match kvhandle beta status by @Salazareo in #4337
- fix: app token by @Salazareo in #4338
- fix(dashboard): eighth adversarial review of Files — bugs, UX, a11y, perf by @jelveh in #4330
- feat(dashboard): publish websites and workers from Files in dashboard dialogs by @jelveh in #4342
- fix(hosting): disconnect the directory when update gets a null root_dir by @jelveh in #4345
- docs(fs): drop batch-write fallback notes from puter.fs.upload() by @reynaldichernando in #4332
- KV share handles: hardening, higher limits, batch share, uninstall data deletion, account-deletion cleanup by @Salazareo in #4344
- fix(ai): keep replayed tool-call arguments serialized once by @404oops in #4324
- Codex/kimi k3 1 pro by @ProgrammerIn-wonderland in #4315
- feat(ai): add GPT-6.1 Terra by @404oops in #4350
- fix(dashboard): ninth adversarial review of Files — bugs, UX, a11y, perf by @jelveh in #4356
- perf(permission): read a large holder's user-to-user grants per permission by @Salazareo in #4349
- fix(apps): keep app provenance and permission caches consistent by @Salazareo in #4357
- perf(database): defer primary fallback for user lookups by @Salazareo in #4359
- perf(auth): coalesce session activity writes across processes by @Salazareo in #4360
- fix(cache): widen tombstone window to 5s by @Salazareo in #4381
- fix(hosting): track trashed roots and cached backing misses by @Salazareo in #4363
- fix(fs): preserve paging and file read-copy contracts by @Salazareo in #4367
- perf(permission): resolve default grants through full-access issuers by @Salazareo in #4361
- fix(hosting): use the current authenticated visitor for asset billing by @Salazareo in #4364
- fix(fs): preserve stored path spelling and app ACL identity by @Salazareo in #4368
- fix(fs): remove app data requested during uninstall by @Salazareo in #4369
- fix(apps): compare normalized index URLs before update checks by @Salazareo in #4370
- fix(sharing): preserve team grants and scope link invalidation by @Salazareo in #4371
- fix(hosting): honor user-granted subdomain permissions by @Salazareo in #4372
- perf(dashboard): share launch-app requests and size recent icons by @Salazareo in #4373
- fix(auth): support recovery codes when disabling two-factor auth by @Salazareo in #4374
- fix(puter-js): coordinate sign-in callbacks and filesystem sockets by @Salazareo in #4375
- fix(puter-js): replay requests with fresh body credentials by @Salazareo in #4376
- fix(ui): reject failed desktop IPC requests by @Salazareo in #4378
- perf(thumbnails): keep read URLs stable within an hour by @Salazareo in #4379
- chore(deps): bump smtp-server from 3.19.23 to 3.19.24 by @dependabot[bot] in #4383
- chore(deps): bump fast-uri from 3.1.7 to 3.1.9 in /src/puter-js by @dependabot[bot] in #4336
- fix: seat creation by @Salazareo in #4387
- GUI for custom domains by @ProgrammerIn-wonderland in #4355
- feat(events): simplify onPersistent delivery by @Salazareo in #4395
- fix(ai): finish async media accounting and recheck output access by @Salazareo in #4365
- fix(ai): meter converted audio from reported output duration by @Salazareo in #4366
- fix(networking): recover shared relay clients and preserve write order by @Salazareo in #4377
- fix(workers): bind credentials and cleanup to the owning site by @Salazareo in #4362
- feat(notifications): node-local notif.written hook by @jfcastro92 in #4351
- feat(puter-js): puter.notifications by @jfcastro92 in #4352
- feat(gui): service worker that shows pushes and routes taps by @jfcastro92 in #4353
- feat(gui): notifications settings for push devices and apps by @jfcastro92 in #4354
- feat(gui): turn on browser push when an app is allowed to notify by @jfcastro92 in #4391
- feat(notifications): web push from the browser's own origin by @jfcastro92 in #4397
- docs(notifications): guide for app push notifications, limits and prices by @jfcastro92 in #4399
- feat(notifications): apps can notify the user they act for by @jfcastro92 in #4316
- feat(push): notifications:push app permission by @jfcastro92 in #4317
- fix(gui): a request the server no longer accepts signs the tab out locally by @jfcastro92 in #4390
- feat(notifications): report how each live notification was received by @jfcastro92 in #4403
- docs(notifications): import push-sw.js from the root of js.puter.com by @Salazareo in #4405
- docs(notifications): push setup requirements, browser and device support, and push recipes by @Salazareo in #4406
- fix(notifications): receipts report what the user saw, sticky push opt-in, safer app pushes by @Salazareo in #4413
- feat(ai): puter.ai.convo - Preliminary Realtime API implementation by @404oops in #4401
- feat(ai): realtime reconnect notice, context restore and retry hardening by @Salazareo in #4415
- DNS ui changes by @ProgrammerIn-wonderland in #4417
- fix(notifications): keep app messages in their app, off the desktop by @jfcastro92 in #4410
- fix(install): improve Docker missing error with platform-specific instructions by @rasadregmi in #4384
- feat(puter-js)!: remove notifications.registerDevice by @jfcastro92 in #4409
- docs(install): explain how to install Docker instead of stopping at a dead end by @dafili in #4411
- feat(ai-chat): let requests opt out of provider fallback by @spacedouut in #4343
- fix: update outdated HOME_URL in /etc/os-release by @mahilsaily306-max in #4392
- chore(deps): bump nodemailer from 9.1.1 to 10.1.4 by @dependabot[bot] in #4386
- fix(docker): hoist sharp so the backend can load it from dist by @costajohnt in #4400
- fix: custom domains by @Salazareo in #4419
- fix(ai): accept 128 MiB Anthropic message requests by @404oops in #4408
- fix(ai): bound large AI request bodies per user and to chat by @Salazareo in #4420
- feat(notifications): remove a notification from the dashboard history by @jelveh in #4412
- fix(ai): bill realtime responses the upstream drops before reporting usage by @Salazareo in #4423
- fix(socket): bound acks a receipt ask leaves on sockets that never answer by @Salazareo in #4422
- fix(auth): fail closed on otp-login token reuse check by @Salazareo in #4421
- ci(puterjs): check out the coverage base leg from this repo by @Salazareo in #4431
- fix(events): KV share handle subscription hardening by @Salazareo in #4428
- fix(kv): KV share authz and load hardening by @Salazareo in #4430
- fix(events): KV share handle subscription follow-ups by @Salazareo in #4434
- fix(kv): per-holder share of the KV handle budget by @Salazareo in #4433
- fix(kv): KV share lifecycle hardening by @Salazareo in #4429
- feat(notifications): notify through KV shares, group replacement, fewer push prompts, and events/worker fixes by @Salazareo in #4432
- fix(ai-chat): standard puterIds and chat-only admission for the Alibaba catalog by @sabrimete in #4339
- fix(events): delivery path fixes for queued deliveries, handler failures and per-invocation database load by @Salazareo in #4443
- test(kv): give the batch-deadline retire test room on a loaded runner by @Salazareo in #4444
- fix(notifications): a browser removed in Puter stays off, and status() checks with Puter by @Salazareo in #4458
- docs: refresh KV sharing, Events and Notifications docs; fix router CORS and KV size error by @Salazareo in #4445
New Contributors
- @dafili made their first contribution in #4411
- @spacedouut made their first contribution in #4343
- @mahilsaily306-max made their first contribution in #4392
- @sabrimete made their first contribution in #4339
Full Changelog: 26.10.1...26.11