Skip to content

chore: release main - #3

Open
hyuki0130 wants to merge 1 commit into
mainfrom
release-please--branches--main
Open

chore: release main#3
hyuki0130 wants to merge 1 commit into
mainfrom
release-please--branches--main

Conversation

@hyuki0130

@hyuki0130 hyuki0130 commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

🤖 I have created a release beep boop

openstoa-sdk: 0.1.3

0.1.3 (2026-09-05)

Features

  • chat: pick several photos at once, and send them independently (0baf51f)
  • chat: reclaim delivered ciphertext, encrypt media, and close the key-management hole (5f204f8)
  • chat: send attachments as binary, and let people save them (750d7cd)
  • mobile: recovery codes, device erase, and chat state fixes (c054851)
  • push: TAK-based push preview, notification prefs, tap routing (5419072)
  • web,cli: chat rail fixes, web i18n, and API-key-scoped AI capability (c8603db)

Bug Fixes

  • chat: an attachment you are told you can send actually sends (eab4a72)
  • chat: give a DM a key that can actually reach the other device (08f2cf0)
  • ci: install mls for the mcp smoke, and unstick two real test defects (023f661)
  • mls: keep the device identity out of the key that can vanish (380a3e5)
  • mls: serve HPKE AES-GCM from noble on mobile so web can open its commits (4d32284)

Refactoring

  • mls: collapse 27 hand-synced crypto copies into one package (6eaa8a5)
openstoa-channel: 0.1.3

0.1.3 (2026-09-05)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • @masselabs/openstoa bumped from ^0.1.2 to ^0.1.3
      • @masselabs/openstoa-commands bumped from ^0.1.2 to ^0.1.3
openstoa-cli: 0.1.3

0.1.3 (2026-09-05)

Features

  • chat: reclaim delivered ciphertext, encrypt media, and close the key-management hole (5f204f8)
  • web,cli: chat rail fixes, web i18n, and API-key-scoped AI capability (c8603db)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • @masselabs/openstoa-commands bumped from ^0.1.2 to ^0.1.3
    • devDependencies
      • @masselabs/openstoa bumped from ^0.1.2 to ^0.1.3
openstoa-commands: 0.1.3

0.1.3 (2026-09-05)

Features

  • chat: reclaim delivered ciphertext, encrypt media, and close the key-management hole (5f204f8)
  • web,cli: chat rail fixes, web i18n, and API-key-scoped AI capability (c8603db)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • @masselabs/openstoa bumped from ^0.1.2 to ^0.1.3
openstoa-mcp: 0.1.3

0.1.3 (2026-09-05)

Features

  • chat: reclaim delivered ciphertext, encrypt media, and close the key-management hole (5f204f8)
  • web,cli: chat rail fixes, web i18n, and API-key-scoped AI capability (c8603db)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • @masselabs/openstoa-commands bumped from ^0.1.2 to ^0.1.3
    • devDependencies
      • @masselabs/openstoa bumped from ^0.1.2 to ^0.1.3
openstoa-server: 0.1.2

0.1.2 (2026-09-05)

Features

  • account: a default name that works, and no gate behind it (e645b9e)
  • api: log a served attachment, as the stored one already was (689af7d)
  • auth: prove a device by a key it holds, not a name it claims (c1fa9fc)
  • auth: serve Digital Asset Links so Android can use passkeys (bce6cde)
  • chat: copy from a message, and identify the link fetcher honestly (ef6c622)
  • chat: deliver history keys without waiting for a room to be opened (b0b6648)
  • chat: let the reader choose a sidebar or modal expansion (d3252e0)
  • chat: move the read cursor to the server (e3a0fb0)
  • chat: move web chat into a right rail with list and room views (b53bd95)
  • chat: one phone per person, key recovery requests (a1edd40)
  • chat: pick several photos at once, and send them independently (0baf51f)
  • chat: reclaim delivered ciphertext, encrypt media, and close the key-management hole (5f204f8)
  • chat: replay key-needed on connect, so a closed app is not a dead end (97860d6)
  • chat: send attachments as binary, and let people save them (750d7cd)
  • chat: tier policy, invite control, and the server-held root for public topics (1553a73)
  • client: put a deadline on every request, web and mini-app (c832735)
  • dm: peer profile cards and shared-topic DM candidate picker (e69ca49)
  • e2ee: fill archive gaps left by messages that were never archived (36b0469)
  • media: cap how fast one caller can pull images (722436e)
  • media: close the two gates that keep the bucket readable by anyone (2bd76d4)
  • media: store image URLs without a host, and give a shared link something to show (aaa0588)
  • media: strip image metadata before anything is published or sealed (72bd29c)
  • posts: an author can describe each picture, and it reaches the reader (aab1bb7)
  • push: TAK-based push preview, notification prefs, tap routing (5419072)
  • recovery: offer the key while the phone that holds it is still here (9a662c6)
  • recovery: switch passkey recovery off until it works everywhere (ca06795)
  • server: device signing keys and recovery code backups (922482a)
  • topics: pin the personal space, beside the list rather than inside it (66345f9)
  • topics: the space that comes with the account (ec895fe)
  • topics: unlock the scoped tiers, and say when a door is closed (345bdb6)
  • ui: shared design tokens, web i18n scaffold, chat UX round 2 (9c7df8c)
  • web,cli: chat rail fixes, web i18n, and API-key-scoped AI capability (c8603db)
  • web: finish the screens the token pass only recoloured (3ab1de1)
  • web: give the phone a phone layout, and say what chat guarantees (81964eb)
  • web: make components read the design tokens they already had (b2d6aca)
  • web: retire the header's duplicate nav, and let the room list pop out (38e6795)
  • web: the phone header is a hamburger and a mark, nothing else (4f5b119)
  • web: widen chat panel, add maximize, and use the right column (73978c0)

Bug Fixes

  • account: deleting an account no longer fails once a room has chat (cb4a483)
  • account: retire the identity on withdrawal, and stop lying about it (b14986b)
  • account: the space an older account never got, on its next sign-in (5cf0975)
  • acting on a post requires reading it, deleted posts leave listings, and the image build survives a cold cache (0520ee4)
  • api: a malformed id is the caller's mistake, so answer 400 (51f1abd)
  • api: stop handing internal errors to the caller, and refuse a token whose account is gone (55c89ae)
  • auth: a rename is not a new session (2cf2948)
  • auth: renaming or refreshing must not sign the old token out (8d4c9af)
  • auth: restore the login QR — a CSS variable is not a colour argument (229ccfc)
  • chat: a Korean message is one message, and a bubble opens on the right side (8f7359a)
  • chat: a message this device cannot open is locked, not broken (f7cd455)
  • chat: a picture keeps its row from the moment it is announced (2b757a6)
  • chat: acknowledge sends in place, and report the state the tick actually reached (3f07001)
  • chat: an attachment you are told you can send actually sends (eab4a72)
  • chat: an unsent message must survive leaving the room (906793d)
  • chat: centre the room name, mend the picture viewer, say why a preview failed (c4ca217)
  • chat: close the web surface the API had already closed (dc89ecf)
  • chat: deliver the archive root to devices that join late, and stop the composer waiting on the network (85c0b50)
  • chat: duplicate sends, a buried new room, and loading noise on every entry (7426b57)
  • chat: give a DM a key that can actually reach the other device (08f2cf0)
  • chat: locked messages always surface the way out (04c3afd)
  • chat: make the composer reachable, and the unread count real (31e8d2a)
  • chat: make the grant answer readable, and purge behind one client (e0af988)
  • chat: mount one panel per viewport and resolve own messages without decrypt (20dbdf6)
  • chat: own bubbles start on the right, and the spinner waits for the decrypt (1148bcd)
  • chat: scroll only the panel, pop chat out bare, surface entry points (13fa62c)
  • chat: scroll to the bottom after rows decrypt (bac425f)
  • chat: size a chat picture by aspect ratio, not by height (6a762bf)
  • chat: stop the app crashing on locked messages, and show sent text at once (8d16437)
  • chat: stop the app spending its own request budget, and mend the link card (acf332c)
  • chat: stop the message list from shifting, and never lose a message (2a64949)
  • chat: tell a new device its history is on the way, instead of showing padlocks (a6b8ab5)
  • chat: the connect replay must not die with Redis (9980cdd)
  • chat: the recovery offer was hidden behind the condition it detects (157a83c)
  • chat: unlock reported success when it had restored nothing (210d4b3)
  • ci: install mls for the mcp smoke, and unstick two real test defects (023f661)
  • ci: install packages/mls, so the packages that re-export it can compile (91879fc)
  • db: backfill the space every account was supposed to have (55235db)
  • db: do not give a deleted account its space back (68631c4)
  • db: make the follow-the-key state true wherever a database starts from (8b8acdd)
  • db: stop 0037 adding a second identical foreign key (e14c671)
  • dev-login: a named login comes back as the same person (84010c8)
  • e2ee: back up the TAK keychain so history survives a new device (d3d9503)
  • e2ee: merge the TAK keychain backup instead of replacing it (12f0fcb)
  • e2ee: one unverifiable root no longer blocks the whole keychain backup (f34609e)
  • e2ee: recovery no longer erases the history of the device that runs it (470e6b2)
  • e2ee: report the device keychain before the guards that skip it (fcda277)
  • e2ee: report what the web device actually holds, orphan roots included (253b649)
  • e2ee: stop a keyless device from taking the archive-holder role (e2f2e0d)
  • e2ee: stop an orphan archive root from erasing everyone's history (d25d9b5)
  • e2e: let the suite say "not configured" again (36a96ca)
  • e2e: make the suite name the environment it cannot run against (e8bd8e7)
  • give the two request paths that had no deadline one (11a4168)
  • i18n: the last screens that still answered in English (7f8846f)
  • media: send the mini-app's credentials with a gated image (847baca)
  • mls: keep the device identity out of the key that can vanish (380a3e5)
  • mls: let a DM claim an archive root when rows predate it (0815541)
  • mls: serve HPKE AES-GCM from noble on mobile so web can open its commits (4d32284)
  • mobile: surface every failure, and keep endpoints out of the copy (c348f84)
  • og: read far enough to find the metadata, and drop the empty image block (5e1e057)
  • polls: voting in a poll is acting on the post that carries it (77adb1e)
  • push: accept the FCM credential base64-encoded (e719507)
  • push: deliver Android notifications on a named channel (9f7ab05)
  • push: drop android.notification so the message stays data-only (7dc7213)
  • push: route by the token, not by the platform alone (11e9277)
  • push: send Android straight to FCM as a data message (719059e)
  • push: stop dropping every recipient when the preference query fails (123f51b)
  • security: a post or comment body cannot run in the reader's browser (bb5240a)
  • security: a tag written in a private space is not public (6909809)
  • security: an uploaded SVG cannot run, and a filename is not a path (9f53b36)
  • security: the link preview cannot fetch our own network (992d789)
  • security: web sessions cannot reach the chat archive or key delivery (43f8f22)
  • stats: totalTopics counts the community, not every row in the table (0d49e99)
  • topics: a personal space cannot be left or deleted, and says so truthfully (fddfade)
  • topics: the clients have to show the space the server sends beside the list (b8de0b5)
  • topics: the space is never inside the browse array, filter or no filter (95ac629)
  • web: give the web a way out — delete a topic, a live button, a real 404 (fd81a9c)
  • web: stop the mobile header overflowing by removing, not shrinking (1fc227c)
  • web: the four English sentences a reader could actually hit (e34cac3)
  • web: the theme is a choice, and light mode is finally legible (0bfdef8)

Performance

  • chat: a reconnect does not redo every grant it was just replayed (a8db2d1)
  • chat: keep decrypted history on the device (e32d2bb)
  • chat: open a message once per process, not once per screen (ad0bc9a)
  • chat: open a room without the blank pane and the wrong remedy (bf885c5)
  • chat: paint a room from the device before asking the server (bf65289)
  • chat: remember the reader's id so a restored room can draw (27c7190)
  • chat: stop the sender re-fetching the image it just sent (92595b6)
  • chat: stop three archive reads pulling the whole conversation (3cdfa07)
  • mobile: stop the sender downloading back the photo it just sent (2dc4bc6)
  • web: one session lookup and one in-flight GET per page (f0876c8)

Refactoring

  • api: one set of request deadlines for both clients (2408638)
  • chat: a public topic's archive root comes from the server, not from a peer (9b4575d)
  • chat: one hook loads and orders the conversation list; failed sends stay put (0fef25d)
  • mls: collapse 27 hand-synced crypto copies into one package (6eaa8a5)
  • mobile: one definition of the undecryptable-body sentinel (ed38f43)
  • ui: migrate web to design tokens and i18n across all surfaces (2f431c9)
  • web: adopt TanStack Query, the layer the mini-app already used (9b689f6)

This PR was generated with Release Please. See documentation.

@hyuki0130
hyuki0130 force-pushed the release-please--branches--main branch 27 times, most recently from 48c1928 to 3b899c9 Compare August 5, 2026 10:51
@hyuki0130
hyuki0130 force-pushed the release-please--branches--main branch 2 times, most recently from 60c8937 to 324a19f Compare August 5, 2026 12:50
@hyuki0130
hyuki0130 force-pushed the release-please--branches--main branch 8 times, most recently from ced1098 to c0f69ac Compare August 14, 2026 08:06
@hyuki0130
hyuki0130 force-pushed the release-please--branches--main branch 11 times, most recently from 0c0ec5c to 7d2e100 Compare August 22, 2026 16:02
hyuki0130 pushed a commit that referenced this pull request Aug 22, 2026
…e numbers

Staging is done, so the section that said "NOT run from here" is now the
record of what was actually run. Open question #3 — which of R2's two
public surfaces staging had on — is answered: no r2.dev URL, one custom
domain, disabled rather than removed so rollback stays a one-field PUT
instead of a DNS change.

The before/after is a real object, not a 404 probe. A missing key answers
404 whether the bucket is open or shut, so the first probe proved nothing;
the measurement that counts is 200 with 12856 bytes becoming 401.

Also written down, because both nearly undid the flip and neither is
obvious from the code:

- R2_PUBLIC_URL has to be RELATIVE. The absolute form reaches the gate and
  looks right while re-creating exactly the rows the cleanup deleted. The
  warning was already in this file and got read too late.
- Editing Cloud Run alone does not survive a deploy: deploy.yml uses
  --set-env-vars and sources the value from a GitHub secret, so the next
  deploy silently reverts it. And the secret is the _NEW-suffixed one —
  the unsuffixed name belongs to the old project.

The order staging used (truncate, flip, then fix the URL) was wrong and
survived only because the database was empty. That is stated plainly so
production does not inherit it.

The #83 / #81 references throughout were never real — the repo has only
#4 and #5. They are replaced with the checklist items that actually block.
@hyuki0130
hyuki0130 force-pushed the release-please--branches--main branch 9 times, most recently from 77394f6 to ca6ca74 Compare August 24, 2026 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant