Repository navigation
v0.5.0
One platform version — every image and every module inside it carries v0.5.0.
| repository | moved |
|---|---|
| core | 4 commits |
| shell | 4 commits |
| chat | no change |
| no change | |
| collab | 1 commits |
Modules
| module | was | now |
|---|---|---|
| billing | 0.5.16 | 0.5.19 |
| chat | 0.5.1 | 0.6.0 |
| hr | 0.23.7 | 0.24.2 |
| inventory | 0.5.3 | 0.6.1 |
| 0.6.3 | 0.6.5 | |
| quire | 0.17.1 | 0.18.1 |
| tracker | 0.12.1 | 0.13.1 |
billing 0.5.16 → 0.5.19
0.5.17 — release
Patch Changes
- test: fail on a tenant table with no policy, not only an unforced one
0.5.18 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.5.19 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
chat 0.5.1 → 0.6.0
0.5.2 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.5.3 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
0.6.0 — release
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.
hr 0.23.7 → 0.24.2
0.23.8 — release
Patch Changes
- test: fail on a tenant table with no policy, not only an unforced one
0.23.9 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.23.10 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
0.24.0 — release
Minor Changes
-
a3f4b5c: Fill a workspace created with example content: five departments, eight positions, twelve people with
employments and managers, four leave types with a year's entitlement in the ledger, seven leave
requests (four decided, three waiting) and a week of attendance for three of them.Nobody seeded here has a Kern account — a person is HR's noun and an account is core's, and inventing
accounts would put strangers in the workspace's member list and mention picker. The one exception is
a person for whoever asked for the demo, so the directory has a face they recognise.Written through the module's own services (
changeEmployment,LedgerService.append,
AttendanceService.record/recomputeDay) so the derived rows agree with the raw ones: a balance is
the sum of the ledger and an attendance day is computed from punches, not written beside them.
0.24.1 — release
Patch Changes
-
946bc52: Give the seeded leave types icons that exist.
palmtree,thermometer,babyandcircle-minusare all real lucide icons and none of them is
in@kernhq/ui's registry, which is a hand-maintained subset — so each rendered as a blank square
with nothing thrown.scripts/check-icons.mjsis the only thing that sees this, and it is the
reason it exists.
0.24.2 — release
Patch Changes
-
a148c63: Scope the demo seeder's emptiness guard to the workspace.
The guard left
workspace_idto row-level security. The transaction is bound to the workspace, so
on a correctly-configured instance RLS scopes it — and on any database whose owner can bypass a
policy it does not, so the guard saw the previous workspace's rows and reported an empty workspace
as used. Measured on a development database: the first workspace filled, and every one after it was
created empty while the log said "workspace not empty". The predicate is written out now, and each
seeder's test seeds a second workspace in the same database, which is what reproduces it.
inventory 0.5.3 → 0.6.1
0.5.4 — release
Patch Changes
- test: fail on a tenant table with no policy, not only an unforced one
0.5.5 — release
Patch Changes
-
dff8780: Bind the
'*'sentinel for the registry read the nightly sweeps start frommod_inventory.workspacesis the table both nightly sweeps enumerate, and it was readable by a
transaction with no workspace bound — so any code path that reached it having forgotten to bind
got rows back rather than a refusal, silently.module-chatandmodule-mailanswer the same
question with a sentinel the caller types on purpose, and0010_workspace_registry_all_binding.sql
brings this module into line: afor selectpolicy admittingapp.workspace_id = '*', and
activeWorkspacesbinds it.Append-only, and both policies stand for one release. The previous version enumerates this table
unbound, and a rolling deploy runs two adjacent releases against one schema — so dropping the
unbound policy now would hand the image being replaced zero rows and the silent do-nothing sweep it
was written to fix. The migration header names the release that may drop it.
0.5.6 — release
Patch Changes
- docs(rls): drop the version numbers from the 0010 comments
0.5.7 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.5.8 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
0.6.0 — release
Minor Changes
-
5bda66a: Fill a workspace created with example content: forty items across six categories, three workspace
fields, three handovers and two repairs.The categories are found rather than created —
onWorkspaceEnabledalready puts five there, and
CategoryService.createrefuses a duplicate name with a conflict that would abort the whole seed on
its first statement. Custody goes throughCustodyService.assign, so a handed-over item has the
period behind it that its own history screen reads, rather than a column somebody set.
0.6.1 — release
Patch Changes
-
4c3e235: Scope the demo seeder's emptiness guard to the workspace.
The guard left
workspace_idto row-level security. The transaction is bound to the workspace, so
on a correctly-configured instance RLS scopes it — and on any database whose owner can bypass a
policy it does not, so the guard saw the previous workspace's rows and reported an empty workspace
as used. Measured on a development database: the first workspace filled, and every one after it was
created empty while the log said "workspace not empty". The predicate is written out now, and each
seeder's test seeds a second workspace in the same database, which is what reproduces it.
mail 0.6.3 → 0.6.5
0.6.4 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.6.5 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
quire 0.17.1 → 0.18.1
0.17.2 — release
Patch Changes
- test: ask the RLS question in the shape the other modules ask it
0.17.3 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.17.4 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
0.18.0 — release
Minor Changes
-
c0951f3: Fill a workspace created with example content: three spaces (handbook, engineering, product) with a
nested page tree, real prose in every page, and a roadmap database with its own properties and rows.A page's body is a CRDT the collab service holds, not a column here, so each one is encoded as a Y
update, handed tocollab.document.replaceand mirrored ontopages.text— the same three steps
templates.tsperforms, so a seeded page is findable before anybody opens it.
0.18.1 — release
Patch Changes
-
d230114: Scope the demo seeder's emptiness guard to the workspace.
The guard left
workspace_idto row-level security. The transaction is bound to the workspace, so
on a correctly-configured instance RLS scopes it — and on any database whose owner can bypass a
policy it does not, so the guard saw the previous workspace's rows and reported an empty workspace
as used. Measured on a development database: the first workspace filled, and every one after it was
created empty while the log said "workspace not empty". The predicate is written out now, and each
seeder's test seeds a second workspace in the same database, which is what reproduces it.
tracker 0.12.1 → 0.13.1
0.12.2 — release
Patch Changes
- test: fail on a tenant table with no policy, not only an unforced one
0.12.3 — release
Patch Changes
- build(deps): raise @kernhq/testing to ^0.1.14
0.12.4 — release
Patch Changes
- build: force one @kernhq/kernel copy with pnpm.overrides
0.13.0 — release
Minor Changes
-
bccf578: Fill a workspace created with example content: three projects, twenty-five issues across the board,
labels, components, a version, a milestone and four cycles.Written through the module's own services rather than as inserts, so the issues have keys from the
project counter, ranks, the template's workflow and the status history the cycle report reads. Two
things it cost a run to learn, both recorded in the file:StatusCategoryis
backlog | todo | in_progress | done | cancelled | triageand an invented name moves nothing while
reporting success, and the support project uses thesimpletemplate because thesupportone
installs a workspace-levelimpactfield marked required — which then refuses every issue in every
other project in the workspace.
0.13.1 — release
Patch Changes
-
bea0aec: Scope the demo seeder's emptiness guard to the workspace.
The guard left
workspace_idto row-level security. The transaction is bound to the workspace, so
on a correctly-configured instance RLS scopes it — and on any database whose owner can bypass a
policy it does not, so the guard saw the previous workspace's rows and reported an empty workspace
as used. Measured on a development database: the first workspace filled, and every one after it was
created empty while the log said "workspace not empty". The predicate is written out now, and each
seeder's test seeds a second workspace in the same database, which is what reproduces it.
Services
core
Feat
- feat: ask every module to fill a workspace created with seedDemo
Fix
- fix(workspaces): reserve the livekit slug the Caddyfiles route away
Docs
- docs(updates): drop the menu path from the update notifications
Test
- test(core): assert the schema's RLS exceptions against the catalogue
shell
Feat
- feat(settings): move instance settings under Settings on self-host
- feat: offer example content when a workspace is created
Fix
- fix(shell): close the workspace switcher when you click outside it
Docs
- docs: note why the workspace switcher stayed open
collab
Other
- build: force one @kernhq/kernel copy with pnpm.overrides