Releases: KernAIO/module-chat
Releases · KernAIO/module-chat
Release list
v0.6.2
v0.6.1
0.6.1
Patch Changes
- chore(renovate): drop dead @kernhq automerge rule
v0.6.0
0.6.0
Minor Changes
-
33c85c8: Fill a workspace created with example content: five channels beside the two chat already makes, a
conversation in each and a thread in#engineering.Two things this module has that the others do not, and both decide how the seeder is written.
#generaland#randomexist before anybody has done anything — chat makes them on
core.workspace.created— so a channel is found or made, never assumed either way: the two events
arrive on different subjects with no ordering between them. And the "has anybody used this
workspace?" guard counts messages somebody wrote, because creating a channel posts a system
message announcing it, and a guard that counted those skipped every seed while reporting success.
v0.5.3
0.5.3
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
v0.5.2
0.5.2
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
v0.5.1
0.5.1
Patch Changes
- e0593f9: Peer
@kernhq/contracts@^0.8.0, which addsarchivedAttoWorkspaceSummary. A caret on 0.x does
not cross a minor, so the previous^0.7.0could not reach it.
v0.5.0
0.5.0
Minor Changes
- ca447a2: Incoming webhooks are gone: the
chat.webhooks.incomingprocedure, thePOST /api/chat/webhooks/{token}route and themod_chat.webhookstable. Nothing could ever create a
token — the only thing that ever named achat.webhooks.createprocedure was the comment above the
table, written in the commit that added it — so there was no procedure, no insert and no screen, and
the endpoint could only ever answer 404 against a permanently empty table. It was a feature nobody
could turn on, advertised in the module's OpenAPI document (38 paths before, 37 after). Dropping the
table loses no data on any instance, and0001_drop_webhooks.sqlis guarded withif existsso the
folder still survives a replay. Incoming webhooks can come back as a real feature — create, list and
revoke, with a screen to manage the tokens.
Patch Changes
- c892f45: The conversation header no longer carries a Huddle button. Calls are not built, so the button was
permanently disabled on the busiest screen in the product — in every channel and every direct
message, for everybody — and its only explanation was atitleon a natively disabled button,
which nothing can reach: a disabled button is out of the tab order and receives no pointer events,
so neither a keyboard nor a screen reader nor a hover ever got the reason. It comes back when calls
do. - 02bae7a: The command palette's "New channel" opens the dialog. It runs
/chat?new=1, because a command can
only navigate — and nothing read that parameter, so the command moved you to the chat page and
stopped there. The sidebar consumes it now and puts the URL back without it, so running the command
again after closing the dialog opens it again. - 9f8a3d7: Peer and develop against
@kernhq/kernel^0.10.0. A caret on 0.x does not cross a minor, so the
previous^0.9.1could no longer reach the published framework — invisible locally, where the
workspace copy is linked, and a lint failure in CI, which installs from the registry. - 1100063: Archiving a private channel no longer announces it to the whole workspace.
realtime.change
publishes on the workspace channel, which every socket subscribes to for every workspace it belongs
to the moment it authenticates — so archiving or restoring a private, object or group channel told
everybody in the workspace that the channel exists and what had just happened to it, whether or not
they may open it. The change now goes to the channel's own members, the same audience a private
channel's creation already used, andannounce.test.tsasserts the frames. - b4a1a17: The composer's voice and video buttons say why they cannot record. They were disabled whenever the
browser has noMediaRecorder— which is also every instance served over plain HTTP, where
navigator.mediaDevicesis absent — and a disabled button explains nothing to a pointer, a keyboard
or a screen reader. Pressing one now opens the recorder bar on its "this browser cannot record"
message, which was written and translated but could never be reached. - 800cdb2: A row in the unread-chat widget opens its conversation. It linked to
/<ws>/chat?channel=<id>
while the chat page reads?c=, so every row on the dashboard landed on chat with nothing selected
and the "pick a conversation" empty state.
v0.4.16
0.4.16
Patch Changes
- chore(deps): take @kernhq/testing ^0.1.12, which has permissionMatrixDiff
v0.4.15
0.4.15
Patch Changes
- c5a5b5d: The migration folder survives being applied twice.
0000_init.sqlcreated every table, index and
policy without a guard, so a replay — which drizzle performs the moment any file in the folder is
edited — threw on the first table and stopped thechatservice, and the realtime gateway with
it, from starting. Three tests now guard the module: the folder applied twice to a database created
from nothing, a cross-tenant probe under a role that cannot bypass row-level security, and the
permission matrix blessed in full.
v0.4.14
0.4.14
Patch Changes
- 435c8bb: The chat widget's "Rows" setting shows its label again instead of a raw message key; it now reads
the sharedcommon.setting_rowsstring like every other widget.