github HeyPuter/puter 26.11

3 hours ago

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

Full Changelog: 26.10.1...26.11

Don't miss a new puter release

NewReleases is sending notifications on new releases.