Skip to content

Releases: Jersyfi/hubtask

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 17:50
bf25317

BREAKING CHANGE

Before 1.0.0 a minor may break the API (versioning-release.md §1). Compared with v0.2.0-rc.1, the contract (api/openapi.yaml) breaks a client in six places. None of the commits that made these changes was marked, so the generated notes below do not show them. oasdiff breaking v1.33.0 finds the same six with and without --flatten-allof; since v0.2.0-rc.2 the contract only gained new values in response enums. New values in response enums are compatible (versioning-release.md §2) and are not listed.

Endpoint Change What a client does
POST /backups A request body is now required. Send a body as the contract describes.
POST /backups/{backupId}:verify backupId must be a UUID (format: uuid). Send only the identifiers that GET /backups returns.
GET /items/{itemId}/comments data[].body can be null. Handle a comment without a body.
POST /items/{itemId}/comments The response's body can be null. The same.
POST /items:bulk operations needs at least one entry (minItems: 1). Do not send an empty list. An empty list is refused.
GET /meta/health dependencies is optional. Do not rely on the field being there.

A behaviour change that the contract does not show: the identity-provider endpoints changed in feat(identity)!: (#1114). That commit is marked and appears in the list below.

Reported in #1255. New values in response enums since v0.2.0-rc.1 (for example status ANONYMIZED/RESTRICTED, role AUDITOR, a webhook delivery's FILTER_FAILED) are compatible and a client must accept unknown values (versioning-release.md §2).

The list below covers the changes since v0.2.0-rc.2; the earlier ones are in the notes of v0.2.0-rc.2 and v0.2.0-rc.1.

What's Changed

  • docs(identity): a new start password reaches a private hub the account holds a role in by @Jersyfi in #1482
  • fix(webapp): a failed Show more on the runs and jumble lists says so by @Jersyfi in #1481
  • fix(expression): a runtime error is not reported as a timeout by @Jersyfi in #1483
  • fix(webapp): Create hub is offered to who may create one by @Jersyfi in #1485
  • fix(expression): compiling a condition is bounded in depth and time by @Jersyfi in #1486
  • fix(webapp): the personal directory is refused in the provider form, before the save by @Jersyfi in #1487
  • fix(webapp): the token form offers admin:tenants only to an operator by @Jersyfi in #1490
  • fix(lifecycle): the rule sweep counts what a hold keeps as held, not as unfinished by @Jersyfi in #1489
  • test(rest): the idle-streams measurement waits for every first read, not the clock by @Jersyfi in #1495
  • docs(backlog): cut milestone CP against its use cases by @Jersyfi in #1499
  • fix(lifecycle): the rule sweep reads past what it cannot act on by @Jersyfi in #1496
  • fix(privacy): an installation-wide request is carried out by its own job by @Jersyfi in #1503
  • fix(backup): an archive opens after the database is lost by @Jersyfi in #1500
  • feat(identity): a person is told when a way into their account changes by @Jersyfi in #1506
  • fix(queue): finished jobs go after seven days by @Jersyfi in #1508
  • fix(lifecycle): webhook deliveries go after thirty days by @Jersyfi in #1509
  • feat(audit): the trail is kept for its period and no longer by @Jersyfi in #1512
  • feat(privacy): a recovery re-applies the erasures of the rewound period by @Jersyfi in #1516
  • docs: the owner's decisions of 2026-10-15 on the boundary, retention rules, connections and four checks by @Jersyfi in #1519
  • feat(identity): connect a provider from a signed-in session by @Jersyfi in #1510
  • feat(integration): a webhook subscription can be narrowed by a condition and a scope by @Jersyfi in #1514
  • feat(privacy): a case counts one calendar month from the day of receipt by @Jersyfi in #1504
  • docs(backlog): cut milestone PK against its use cases by @Jersyfi in #1527
  • docs(backlog): release milestone PK by @Jersyfi in #1528
  • feat(admin): a workspace in multi-tenant operation exports to an installation-wide target by @Jersyfi in #1517
  • fix(postgres): the doors through the boundary answer on a database the operator brings by @Jersyfi in #1492
  • fix(identity): a provider's admission settings bound which identities may be connected by @Jersyfi in #1529
  • feat(hubctl): invite, place people and create managed accounts by @Jersyfi in #1543
  • feat(deploy): integration's database in production's shape by @Jersyfi in #1518
  • fix(deploy): integration's operations workspace has an address by @Jersyfi in #1558
  • docs(evidence): integration's first restore drill passed by @Jersyfi in #1559
  • docs(usecases): the recovery codes stay while a key remains by @Jersyfi in #1567
  • docs: the owner's decision on workspace addresses, renaming, own domains and switching by @Jersyfi in #1569
  • fix(chart): the master keyring reaches the pods, and integration answers HTTP with HTTPS by @Jersyfi in #1566
  • feat(identity): a person adds a passkey by @Jersyfi in #1547
  • docs(backlog): cut and release milestone PL against its use cases by @Jersyfi in #1542
  • feat(admin): plans and a workspace's plan through the control plane by @Jersyfi in #1570
  • feat(identity): rename and remove a passkey, and count it as a second factor by @Jersyfi in #1557
  • feat(admin): a purchase platform finds its workspaces by @Jersyfi in #1572
  • feat(identity): the sign-in rule and the legal links resolve through the plan by @Jersyfi in #1576
  • fix(lifecycle): a retention rule whose condition fails is seen, and stops no other rule by @Jersyfi in #1501
  • feat(plan): what a plan leaves out rests, and the screens say so by @Jersyfi in #1580
  • fix(lifecycle): a long retention read-past continues across passes instead of starving by @Jersyfi in #1578
  • feat(admin): the installation's events, written and read forward by @Jersyfi in #1581
  • feat(identity): sign in with a passkey by @Jersyfi in #1575
  • test(webapp): the passkey walk waits for the removed row before counting by @Jersyfi in #1593
  • feat(quota): the workspace's own installation events, once per crossing by @Jersyfi in #1586
  • feat(quota): limits and the AI rule resolve through the plan by @Jersyfi in #1579
  • fix(suggestion): an AI ask ends its pending state, and a job says what it came to by @Jersyfi in #1574

Full Changelog: v0.2.0-rc.2...v0.2.0

v0.2.0-rc.2

v0.2.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 21:44
7f86377

BREAKING CHANGE

Before 1.0.0 a minor may break the API (versioning-release.md §1). Compared with v0.2.0-rc.1, the contract (api/openapi.yaml) breaks a client in six places. None of the commits that made these changes was marked, so the generated notes below do not show them. oasdiff breaking v1.33.0 finds the same six with and without --flatten-allof. New values in response enums are compatible (versioning-release.md §2) and are not listed.

Endpoint Change What a client does
POST /backups A request body is now required. Send a body as the contract describes.
POST /backups/{backupId}:verify backupId must be a UUID (format: uuid). Send only the identifiers that GET /backups returns.
GET /items/{itemId}/comments data[].body can be null. Handle a comment without a body.
POST /items/{itemId}/comments The response's body can be null. The same.
POST /items:bulk operations needs at least one entry (minItems: 1). Do not send an empty list. An empty list is refused.
GET /meta/health dependencies is optional. Do not rely on the field being there.

A behaviour change that the contract does not show: the identity-provider endpoints changed in feat(identity)!: (#1114). That commit is marked and appears in the list below.

Reported in #1255.

What's Changed

  • ci(deps): bump docker/login-action from 3.3.0 to 4.6.0 by @dependabot[bot] in #13
  • chore(deps): bump github.com/moby/go-archive from 0.2.0 to 0.3.0 by @dependabot[bot] in #76
  • ci: group the dependency updates, and point the image scan at the published build by @Jersyfi in #75
  • docs: the CI documents describe the pipeline that exists by @Jersyfi in #77
  • ci: sign the provenance with the action whose pin this repository checks by @Jersyfi in #78
  • build(deps): bump alpine from 3.20 to 3.24 in /deploy/docker by @dependabot[bot] in #12
  • docs(backlog): milestone 0.3.0 - collaboration and content by @Jersyfi in #94
  • C-01: members and assignment by @Jersyfi in #95
  • docs(adr): the monorepo layout, the UI delivery, and the token source by @Jersyfi in #96
  • W-02: the workspace scaffold and the design system by @Jersyfi in #102
  • W-03: the UI adapter and the container build by @Jersyfi in #103
  • W-04: a pipeline that runs where the change is by @Jersyfi in #104
  • W-05: keeping the assistant oriented by @Jersyfi in #105
  • ci(deps): one Dependabot pull request for the workspace, not one per manifest by @Jersyfi in #113
  • ci: install one tool for the job that always runs by @Jersyfi in #115
  • chore: Go 1.26 everywhere, and a gate so it stays everywhere by @Jersyfi in #117
  • fix: the Go patch belongs in toolchain and in CI, not in the go directive by @Jersyfi in #118
  • ci(deps): bump the actions group across 1 directory with 16 updates by @dependabot[bot] in #114
  • docs: frontend client stack decided — ADR-0030…ADR-0033, celebrations, onboarding tour by @Jersyfi in #120
  • docs(backlog): W-06–W-09 for the workspace milestone, the frontend track in the roadmap by @Jersyfi in #121
  • fix(ci): the compose smoke check asks the engine, not podman-compose, what runs by @Jersyfi in #126
  • W-06 — The webapp scaffold: Svelte 5 as a plain Vite SPA by @Jersyfi in #127
  • W-07 — Design-system token wiring in the webapp by @Jersyfi in #128
  • W-09 — The workspace dependency lint by @Jersyfi in #129
  • W-08 — The embedded pipeline against the real bundle by @Jersyfi in #130
  • docs: bring the READMEs up to the decided frontend stack by @Jersyfi in #131
  • C-02 — Automatic assignment: every strategy by @Jersyfi in #132
  • C-03 — Comments by @Jersyfi in #133
  • C-05 — Object storage: the port, two adapters, and the upload matrix by @Jersyfi in #135
  • C-04 — The narrowings the role matrix promises by @Jersyfi in #137
  • C-06 — Media: presigned upload, attachments, covers by @Jersyfi in #136
  • C-07 — Custom fields by @Jersyfi in #138
  • C-08 — Full-text search by @Jersyfi in #139
  • C-09 — Notifications: the record, the mail port, and the first email by @Jersyfi in #140
  • C-10 — The SSE stream by @Jersyfi in #141
  • chore(ci): switch both AI workflows off, and say so where you would look by @Jersyfi in #144
  • C-11 — Bulk and duplicate by @Jersyfi in #145
  • C-12 — RT-1 with real dependencies by @Jersyfi in #146
  • C-13 — hubctl grows with the milestone by @Jersyfi in #147
  • docs(backlog): milestone 0.4.0 — time by @Jersyfi in #148
  • D-01 — Due dates: the first writer of the schedule columns by @Jersyfi in #158
  • docs: the client track, one product version, and a joint finish by @Jersyfi in #159
  • docs(backlog): milestone F1 — foundations by @Jersyfi in #161
  • D-07 — Saved views by @Jersyfi in #160
  • D-02 — Reminders: the entity and its writers by @Jersyfi in #174
  • D-03 — The first timed duty: reminders fire by @Jersyfi in #175
  • D-04 — Recurrence: the rule and its writers by @Jersyfi in #176
  • D-05 — Materialisation: occurrences, both modes, the DST proof by @Jersyfi in #177
  • D-06 — Templates by @Jersyfi in #178
  • D-08 — The calendar: the ICS feed and view export by @Jersyfi in #179
  • D-09 — hubctl grows with the milestone by @Jersyfi in #180
  • docs(backlog): milestone 0.4.5 — backup, retention, audit by @Jersyfi in #181
  • E-01 — /jobs/{id}: the resource three responses already promise by @Jersyfi in #194
  • E-02 — Envelope encryption: the port, the key, and its rotation by @Jersyfi in #195
  • E-03 — The backup target: the port, four adapters, and BK-1 by @Jersyfi in #196
  • E-04 — The archive: manifest, JSON Lines, content-addressed media by @Jersyfi in #197
  • E-05 — Backups run: the job, the schedule, generational retention, :verify by @Jersyfi in #198
  • E-06 — Restore: listing at the target, six modes, the deletion journal by @Jersyfi in #199
  • E-07 — Retention becomes the engine ADR-0020 describes by @Jersyfi in #200
  • E-08 — Legal hold, and the safeguard that can finally be placed by @Jersyfi in #201
  • E-09 — The audit becomes readable: query, export, :verify by @Jersyfi in #202
  • E-10 — Data subject requests: the case, its deadline, and its export by @Jersyfi in #203
  • E-11 — The privacy gates the documents have been promising by @Jersyfi in #204
  • E-12 — hubctl grows with the milestone by @Jersyfi in #205
  • fix: a NEW_TENANT restore accepts its own archive by @Jersyfi in #208
  • fix: an abandoned job releases the run it holds, and busy is not success by @Jersyfi in #209
  • docs(backlog): milestone 0.5.0 — automation and webhooks by @Jersyfi in #210
  • F1-12 — The website: SvelteKit, a holding page, and a way to deploy it by @Jersyfi in #224
  • feat(website): the legal pages, and the holding page finds its shape by @Jersyfi in #225
  • feat(website): the content wave, and the privacy page closes its gaps by @Jersyfi in #226
  • feat(website): the HTTPS redirect goes live by @Jersyfi in #227
  • G-01 — Tokens somebody can mint, scope, and revoke by @Jersyfi in #228
  • G-02 — CloudEvents leave the process, and the dispatcher earns "production-ready" by @Jersyfi in #229
  • G-03 — Webhook subscriptions: signed, retried, dead-lettered, replayable by @Jersyfi in #230...
Read more

v0.2.0-rc.1

v0.2.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Aug 16:08
b47688d

What's Changed

  • build: make the toolchain and every gate actually run (A-01) by @Jersyfi in #18
  • docs: split a task into steps, one commit each by @Jersyfi in #19
  • feat(infra): configuration, logging and the error model (A-02) by @Jersyfi in #20
  • docs: the issue is the task, and the pull request closes it by @Jersyfi in #21
  • fix(ci): point the delegation trigger at the label that exists by @Jersyfi in #23
  • feat(infra): PostgreSQL connection with an enforced tenant boundary (A-03) by @Jersyfi in #22
  • feat(infra): the observability skeleton (A-04) by @Jersyfi in #24
  • feat(resilience): the resilience building blocks (A-05) by @Jersyfi in #26
  • fix(deploy): English messages in the self-hosting compose file by @Jersyfi in #25
  • feat(api): the API skeleton from the specification (A-06) by @Jersyfi in #27
  • feat(work): drive CreateContainer through every layer (A-07) by @Jersyfi in #30
  • feat(work): the job queue, the outbox dispatcher, and the leader (A-08) by @Jersyfi in #31
  • feat(deploy): the deployment skeleton (A-09) by @Jersyfi in #32
  • chore(hygiene): finish the repository hygiene (A-10) by @Jersyfi in #33
  • fix(deploy): self-hosting connects as the application role (A-11) by @Jersyfi in #35
  • docs(backlog): milestone 0.2.0 — hierarchy and items by @Jersyfi in #50
  • docs(backlog): B-15 — the support matrix, declared and enforced by @Jersyfi in #52
  • feat(observability): the alert rules, runbooks, dashboards, and the job span (B-01) by @Jersyfi in #53
  • feat(ci): the support matrix, declared and enforced (B-15) by @Jersyfi in #54
  • feat(identity): memberships, groups and invitations (B-02) by @Jersyfi in #55
  • feat(work): the WorkItem aggregate, and CreateWorkItem end to end (B-03) by @Jersyfi in #56
  • docs(adr): ADR-0024 - tenant-scoped foreign keys by @Jersyfi in #57
  • feat(db): tenant-scoped foreign keys (B-16) by @Jersyfi in #59
  • docs(adr): ADR-0025 - the status of a failed precondition by @Jersyfi in #63
  • feat(work): the read side - get, list, and the item projection (B-04) by @Jersyfi in #60
  • feat(work): completion and the roll-up (B-07) by @Jersyfi in #61
  • feat(work): move and reorder - the tree stays a tree (B-08) by @Jersyfi in #62
  • ci: the nightly's action pins, and the scan that never ran by @Jersyfi in #65
  • feat(work): UpdateWorkItem, with the capability profile as the gate (B-05) by @Jersyfi in #66
  • feat(work): the container lifecycle - rename, policies, move, archive (B-06) by @Jersyfi in #67
  • feat(work): buckets and labels (B-09) by @Jersyfi in #68
  • feat(work): trash, archive, and the first retention job (B-10) by @Jersyfi in #69
  • feat(work): the activity history (B-11) by @Jersyfi in #70
  • feat(view): the query DSL (B-12) by @Jersyfi in #71
  • B-13 — hubctl: the first real client by @Jersyfi in #72
  • B-14 — The integration environment, and RT-8 run for real by @Jersyfi in #73
  • fix(ci): a pre-release carries :rc, which the workflow never set by @Jersyfi in #74

New Contributors

Full Changelog: https://github.com/Jersyfi/hubtask/commits/v0.2.0-rc.1