Skip to content

Releases: KernAIO/module-template

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 06 Sep 14:27

0.3.3

Patch Changes

  • chore(renovate): drop dead @kernhq automerge rule

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 06 Sep 14:23

0.3.2

Patch Changes

  • chore: check the packed tarball can resolve its own imports

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Sep 12:01

0.3.1

Patch Changes

  • be1ffc9: Scope the example seeder's guard to the workspace, and import eq.

    The guard left workspace_id to row-level security, which is exactly the mistake the template
    should not be teaching: the transaction is bound to the workspace, so RLS scopes it on a
    correctly-configured instance and silently does not on one whose owner can bypass a policy. Every
    first-party seeder had the same defect and every workspace after the first was created empty.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 11:23

0.3.0

Minor Changes

  • 2832ea0: Show how a module fills a workspace created with example content.

    demo: { seed } is the extension point; the kernel subscribes it for you. The example is deliberately
    two rows and a guard, because the guard is the part a module author has to get right: delivery is
    at-least-once, so a seeder can be asked twice for one workspace, and the check is "is this workspace
    empty?" rather than a marker somebody has to maintain.

v0.2.17

Choose a tag to compare

@github-actions github-actions released this 06 Sep 10:51

0.2.17

Patch Changes

  • build: force one @kernhq/kernel copy with pnpm.overrides

v0.2.16

Choose a tag to compare

@github-actions github-actions released this 06 Sep 10:40

0.2.16

Patch Changes

  • 89feda5: Resolve a single @kernhq/kernel copy

    The template pulled two kernels into a consumer's tree: @kernhq/testing@0.1.12 declared a
    @kernhq/kernel: ^0.9.0 it never imported, and @kernhq/ui@0.14.0 depends on ^0.9.0 too. With
    the module's own kernel at ^0.10.3, both floors are raised so everything resolves one copy —
    @kernhq/testing to ^0.1.14, which dropped the phantom dependency, and @kernhq/ui to ^0.14.4,
    which depends on ^0.10.2.

    Two structurally identical declarations of ServerModule are not assignable to each other, so a
    duplicate kernel is a type error in whatever hosts the module — and it is invisible in the umbrella
    workspace, which pins one copy regardless.

v0.2.15

Choose a tag to compare

@github-actions github-actions released this 06 Sep 10:23

0.2.15

Patch Changes

  • b15e900: Require @kernhq/kernel ^0.10.3, whose rlsPolicySql emits the policy drop

    rlsPolicySql omitted the drop policy if exists before its create policy until
    @kernhq/kernel@0.10.3, so an author following the documented path got a policy that could not be
    applied twice. The kernel is fixed; this raises the floor so a fresh checkout of the template
    resolves a kernel where the helper and migrations/0001_rls.sql actually agree.

    The floor is what makes it true rather than the range alone: degit copies pnpm-lock.yaml, and
    pnpm does not re-resolve a version that still satisfies its range — so ^0.10.0 kept installing
    0.10.0. The migration comment and README step 5 now say the helper emits all four statements, dated
    to the kernel version that made it so.

v0.2.14

Choose a tag to compare

@github-actions github-actions released this 06 Sep 10:12

0.2.14

Patch Changes

  • af8faeb: Make 0001_rls.sql replayable, and ship the migration test that proves it

    create policy has no if not exists, so applying the migration folder a second time answered
    policy "notes_ws_isolation" for table "notes" already exists. A module's migrations are the first
    thing the kernel runs, so that is a host service that never binds its port — not a broken feature.
    The policy is now preceded by drop policy if exists, as it is in every first-party module.

    src/server/migrations.test.ts is new and ships in the tarball. It applies the folder to a database
    created from nothing, applies it again, and asks the Postgres catalogue which tables carrying
    workspace_id are actually secured — so a tenant table added without a policy fails by name rather
    than being silently readable. It needs a DATABASE_URL it can create databases from; CI already
    starts one.

v0.2.13

Choose a tag to compare

@github-actions github-actions released this 05 Sep 21:03

0.2.13

Patch Changes

  • fe17fa3: The client module documents overlays, the contribution a navigation does not destroy.

    Everything else the template declares — the route, the sidebar, the widget — lives inside a page,
    so opening something else unmounts it. @kernhq/kernel@0.10.2 adds overlays for the cases where
    that is wrong: something in progress, an upload, a countdown. The example is commented out, because
    a module with nothing to keep should ship no overlay rather than an empty one, and it names the two
    rules that are easy to get wrong — an overlay is mounted on every page of the workspace, so it must
    draw nothing until it has something to say, and it is handed no location, because the route it was
    mounted on is not the route the person is on now.

v0.2.12

Choose a tag to compare

@github-actions github-actions released this 05 Sep 19:32

0.2.12

Patch Changes

  • 1e80aaa: Peer @kernhq/contracts@^0.8.0, which adds archivedAt to WorkspaceSummary. A caret on 0.x does
    not cross a minor, so the previous ^0.7.0 could not reach it. The template is what a third party
    starts a module from, so a stale peer here is the first thing they would hit.