v0.0.1-rc.1
Pre-release
Pre-release
What's Changed
- docs: remove references to removed specs by @ness-EE in #160
- chore: update org references for bojectify transfer by @ness-EE in #161
- fix(entry-editor-pane): a11y pass — dialog semantics, focus trap, keyboard close by @ness-EE in #162
- fix(graphql): expose IMAGE fields via shared ImageFile object type by @ness-EE in #164
- fix(webhooks): close DNS-rebinding SSRF bypass (#103) by @ness-EE in #167
- chore(ui): brand pass — fonts, palettes, semantic surfaces, label alignment by @ness-EE in #168
- feat: API Key CLI + REST endpoints by @ness-EE in #170
- feat(cli): boject perf CLI — read-only path (#126) by @ness-EE in #173
- docs(cli): note localhost ephemeral-port limit when running graphql-flat by @ness-EE in #174
- feat(cli): schema-aware perf seed generator + CLI seeded mode (#159) by @ness-EE in #175
- feat(cms): content:write API key scope + writable paths (#172) by @ness-EE in #176
- chore: perf db task by @ness-EE in #178
- feat(cli): --allow-database flag for perf DB-name guard (#182) by @ness-EE in #188
- feat(cli): mode-aware perf metadata.json + conditional banner (#181) by @ness-EE in #189
- feat(cli): --http-seed end-to-end + content:write preflight + rate-limit log (#183) by @ness-EE in #190
- feat(cli): pg-sampler re-vendor + DB connection-pool panel (#180) by @ness-EE in #192
- feat(cli): rest-crud-cycle scenario + Bearer-auth refactor (#179) by @ness-EE in #193
- feat(cli): skip seed step for rest-crud-cycle (#195) by @ness-EE in #196
- chore: gitignore perf CLI cwd artifacts at repo root by @ness-EE in #197
- feat(cli): graceful uniqueness-conflict handling in writeViaSql + writeViaHttp (#194) by @ness-EE in #198
- feat(cli): cascade-skip entries whose references were skipped (#199) by @ness-EE in #200
- docs(cli): harden --allow-database + reset destructive-surface copy (#191) by @ness-EE in #201
- chore(cli): writeViaSql real-pg integration test (#186) by @ness-EE in #202
- feat(cli)!: remove --http-seed transport from @boject/cli (closes #184) by @ness-EE in #203
- feat(cli): auto-synthesize IMAGE field JSON during perf seed (#185) by @ness-EE in #204
- fix(cli): portable bundles work end-to-end through perf seed by @ness-EE in #206
- chore(cms): PR #176 cleanup follow-ups (#187) by @ness-EE in #207
- feat!: portable entry refs as stored immutable entryKey (#205) by @ness-EE in #208
- chore(cms): richtext editor follow-ups (#118) by @ness-EE in #209
- chore(cms): tighten richtext walker/validator/enricher test coverage (#116) by @ness-EE in #210
- refactor(cms): dedupe parseEntryData + FieldTypeOptions slot (#117) by @ness-EE in #211
- refactor(cms): typed FieldOptions discriminated union (#117 task 3) by @ness-EE in #213
- docs: refresh Perf CLI entry in CLAUDE.md by @ness-EE in #215
- fix(cms): validate RELATION/MULTIRELATION options on PUT field (#214) by @ness-EE in #216
- fix(cms): drop pre-seeded SLUG row from content-type create form (#212) by @ness-EE in #217
- feat(cms,cli): GraphQL query complexity scoring (#122) by @ness-EE in #218
- chore: upgrade pnpm 10 → 11.1.2 with supply-chain hardening by @ness-EE in #233
- chore: containerised dev environment for supply-chain hardening by @ness-EE in #237
- docs: split root README into workspace + CMS-specific docs (#238) by @ness-EE in #239
- fix(cms): make prisma studio scripts dev-container friendly by @ness-EE in #240
- refactor(test): pull integration-test DB URLs behind env-overridable helpers (#236) by @ness-EE in #241
- docs: surface PERF_DATABASE_URL in .env.example + docker-compose by @ness-EE in #242
- refactor: DRY fake DB in CLI by @ness-EE in #243
- fix(test): use local prisma + fall back on empty env var by @ness-EE in #244
- chore(devcontainer): install Wallaby + replace deprecated typescript.tsdk by @ness-EE in #245
- fix(perf): fall back on empty PERF_DATABASE_URL by @ness-EE in #246
- chore(dev-container): mount .git read-only instead of hiding it by @ness-EE in #247
- chore: tidy up devcontainer extensions by @ness-EE in #248
- chore: add nuke:packages script for workspace dep-tree recovery by @ness-EE in #249
- refactor(cms): break webhookUrl ↔ resolvePublicHost circular dependency by @ness-EE in #250
- Richer 429 error shape (REST + GraphQL) by @ness-EE in #251
- GraphQL rate-limit + cost headers by @ness-EE in #252
- Drop unnecessary as-unknown-as casts where direct casts work by @ness-EE in #253
- Consolidate FieldType literals into a shared FIELD_TYPES registry by @ness-EE in #266
- Consolidate ContentStatus literals into a shared CONTENT_STATUSES registry by @ness-EE in #267
- Workspace-wide lint coverage + single typecheck job by @ness-EE in #269
- Bundle format versioning + migrate() runner (closes #32) by @ness-EE in #268
- Drop dev-targeted prisma:seed; replace with scoped commands by @ness-EE in #270
- Entry conflict-handling flags (--on-conflict, --dry-run) (closes #29) by @ness-EE in #271
- Flaky account-password test fix + honest Prisma.DbNull cast in importBundle by @ness-EE in #272
- Content bundle: include image bytes (sidecar layout) (#31) by @ness-EE in #273
- Content bundle: remote entries import (closes #28) by @ness-EE in #275
- fix(cli): guard entries export against trailing-slash redirects and non-JSON 200s by @ness-EE in #280
- Guard non-portable bundle import against dangling cross-entry references (closes #276) by @ness-EE in #278
- fix(cli): fall back to data.message when the top-level error message is empty by @ness-EE in #282
- fix(content-bundle): surface import error message at top-level for RE… by @ness-EE in #284
- test(content-bundle): extract test fixtures into co-located .fixtures.ts files by @ness-EE in #285
- docs: add in the native set-up docs by @ness-EE in #286
- feat(content-bundle): tarball (.tar.gz) wire format for the local CLI by @ness-EE in #287
- docs: document backup & disaster recovery; close #30 by @ness-EE in #288
- fix(content-bundle): portable dangling ref import returns 400, not 500 by @ness-EE in #289
- Test/scope fileparallelism integration by @ness-EE in #290
- perf(content): fetch one version per entry on /api/content + /api/content-entries (#264) by @ness-EE in #291
- feat(search): Meilisearch infrastructure + connection plumbing (#221) by @ness-EE in #292
- feat(search): entry → search document transformer (#222) by @ness-EE in #293
- feat(webhooks): CONTENT_TYPE_SCHEMA_CHANGED event (#220) by @ness-EE in #295
- chore(search): test harness + entries_test index (#223) by @ness-EE in #296
- feat(search): reindex command — pnpm search:reindex (#226) by @ness-EE in #297
- feat(search): syncToSearchIndex handler (#225) by @ness-EE in #298
- feat(webhooks): internal-transport WebhookDelivery for search sync (#224) by @ness-EE in #299
- feat(search): public /api/search REST + searchEntries GraphQL field (#227) by @ness-EE in #300
- Search: query builder Vue component by @ness-EE in #309
- chore: add dev container allowlist by @ness-EE in #313
- chore: free registry port 5555 and isolate dev-registries compose pro… by @ness-EE in #314
- Search: query builder wire-up + Meilisearch compiler by @ness-EE in #310
- Search: query-builder QA polish (draft-chip focus, launcher bar, ENTRY_TITLE, snippet gate) by @ness-EE in #317
- Search: re-edit a committed filter chip in the query builder by @ness-EE in #318
- chore: test tasks by @ness-EE in #319
- Search: keyboard navigation + WAI-ARIA listbox for the query builder by @ness-EE in #320
- Search: persist results pagination in the URL by @ness-EE in #321
- Search: render results through ContentTable; retire SearchResults by @ness-EE in #325
- Search: keep input focus after removing a filter chip with the mouse by @ness-EE in #326
- refactor(search): extract shared QueryChips chip-row component (#323) by @ness-EE in #327
- feat(search): resolve RELATION filter chip values to entry titles (#322) by @ness-EE in #328
- feat(search): per-field-type filter operators on /api/search + GraphQL (backend) (#301) by @ness-EE in #329
- fix(content-entries): fire ENTRY_PUBLISHED when a new entry is published on create (#330) by @ness-EE in #331
- feat(search): surface single-value rich operators in the ⌘K palette (#332) by @ness-EE in #343
- feat(search): multi-value list filter editors in the ⌘K palette (#333) by @ness-EE in #347
- feat(search): DATETIME calendar editors in the ⌘K palette (#345) by @ness-EE in #348
- feat(search): widen the ⌘K palette to 1080px + wrap filter chips (#346) by @ness-EE in #349
- feat(search): filter by envelope/system fields — entry title + $entryKey (#315) by @ness-EE in #350
- feat(search): index DRAFT/CHANGED versions + status filter (#302) by @ness-EE in #351
- refactor(search): STEPS object-const for query-builder Step values (#353) by @ness-EE in #354
- feat(search): bulk publish on search results + row selection (#304) by @ness-EE in #356
- fix(search): $status filter scopes to the working version (editorial status) by @ness-EE in #357
- fix(search): palette submit button + keep focus after a pointer toggle by @ness-EE in #358
- feat(search): results-table field columns + column picker — data grid (#303) by @ness-EE in #361
- fix(search): re-edit the in-progress draft's operator in the query builder (#360) by @ness-EE in #362
- fix(search): persist + edit free-text q as a chip in the ⌘K palette (#363) by @ness-EE in #365
- docs(search): note FreeTextChip + free-text q chip in CLAUDE.md (#363) by @ness-EE in #366
- fix(ui): size the archive filter control to match the New Entry button by @ness-EE in #367
- fix(search): cap the ⌘K palette height + scroll the option list (#364) by @ness-EE in #368
- feat(search): field-type icon + label on the ⌘K palette field rows (#369) by @ness-EE in #370
- feat(search): "is not set" / "is set" (empty/null) filter operators (#359) by @ness-EE in #371
- docs(search): final search-epic docs pass — operator README + env row (#230) by @ness-EE in #372
- feat: per-field default values (BOOLEAN/NUMBER/SELECT), applied at create (#344) by @ness-EE in #373
- feat(editor): clearable optional SELECT in the entry editor (#374) by @ness-EE in #375
- chore(cache): stand up dormant Redis cache backend (#255) by @ness-EE in #377
- docs(cache): document the Redis sidecar + REDIS_URL (#255) by @ness-EE in #378
- refactor(api): rename /api/content-entries → /api/entries (#382) by @ness-EE in #383
- refactor(search): migrate SearchPalette picker to /api/entries (#380) by @ness-EE in #384
- refactor(api): rename /api/content → /api/all-content (#381) by @ness-EE in #385
- perf: admin cursor (keyset) pagination + keyset infrastructure (#265) by @ness-EE in #386
- feat: public /api/public/entries read endpoint + /api/public/* namespace (#256) by @ness-EE in #387
- fix(graphql): reserve envelope field identifiers so a colliding field can't crash the schema build by @ness-EE in #388
- feat(cache): tagged cache primitive over useStorage + native redis sets (#258) by @ness-EE in #389
- docs: split CMS guidance into nested apps/cms/CLAUDE.md by @ness-EE in #390
- feat(cache): public read cache-aside + content-type tag on /api/public/entries (#259) by @ness-EE in #391
- feat(cache): internal cache-invalidation subscriber (#261) by @ness-EE in #392
- feat(cache): GraphQL response cache plugin (#260) by @ness-EE in #394
- feat(public-write): /api/public/entries write surface (#376) by @ness-EE in #397
- perf(crud): migrate rest-crud-cycle to the public namespace (#395) by @ness-EE in #398
- feat(auth): default-deny token allowlist — admin content session-only (#257) by @ness-EE in #400
- test(cache): cache test infrastructure — FLUSHDB-DB1 + cacheAssertions harness (#262) by @ness-EE in #402
- Feat/263 caching docs by @ness-EE in #403
- fix(test): reset boject_test after every integration file (independent-run isolation) (#406) by @ness-EE in #408
- feat: bulk writes fire cache + search reconcile events (#393) by @ness-EE in #407
- fix: content-bundle scripts boot under tsx in the docker image (#405) by @ness-EE in #410
- test: parallelize the integration suite with per-worker isolated resources (#409) by @ness-EE in #411
- test: sweep orphaned worker resources + coverage follow-ups (#412) by @ness-EE in #413
- refactor: drop dead API-key version-resolution branches from admin content reads (#399) by @ness-EE in #414
- refactor: drop dead API-key version-resolution branches from admin co… by @ness-EE in #415
- test: retrofit existing cache tests onto the #262 cacheAssertions harness (#401) by @ness-EE in #416
- First Release: adopt BSL 1.1 licensing (#334) by @ness-EE in #417
- First Release: npm publish config + package metadata (#335) by @ness-EE in #419
- First Release: PR CI + trusted-publish workflows (#337) by @ness-EE in #421
- First Release: publish multi-arch CMS image to GHCR (#336) by @ness-EE in #422
- chore: globally gitignore .env files (#341 pre-public hardening) by @ness-EE in #423
- ci: bump TEST_MAX_WORKERS 2 → 4 now the repo is public (#337) by @ness-EE in #424
- fix(#336): smoke-test CI gate — readable schema mount + non-silent apply-schema by @ness-EE in #425
- First Release: release pipeline — version coordination + tag-push publish (#338) by @ness-EE in #426
- First Release: security + dependency pre-release audit (#341) by @ness-EE in #427
- docs(#340): public-audience README + per-package npm badges/license by @ness-EE in #428
- docs(#339): community health files (CONTRIBUTING, CoC, SECURITY, templates) by @ness-EE in #430
- chore(deps-dev): bump nuxt from 4.3.1 to 4.4.7 by @dependabot[bot] in #429
- chore: add Dependabot config (npm + actions + docker) by @ness-EE in #431
- chore(#342): Contributor License Agreement + CLA Assistant enforcement by @ness-EE in #435
- chore(release): publish v0.0.1-rc.1 by @ness-EE in #437
New Contributors
- @dependabot[bot] made their first contribution in #429
Full Changelog: https://github.com/bojectify/boject-cms/commits/v0.0.1-rc.1