@cavuno/board 4.25.0 → 4.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/dist/{_spec-CEaM1PL9.d.mts → _spec-B_pBNVUd.d.mts} +497 -47
  3. package/dist/{_spec-CEaM1PL9.d.ts → _spec-B_pBNVUd.d.ts} +497 -47
  4. package/dist/bin.mjs +7989 -10
  5. package/dist/{blog-Ba5ErHVO.d.ts → blog-DzGRUsj5.d.ts} +1 -1
  6. package/dist/{blog-lnpzj7Ay.d.mts → blog-fhXRik6k.d.mts} +1 -1
  7. package/dist/{board-BowjJTqF.d.mts → board-DEiEHcpe.d.mts} +25 -4
  8. package/dist/{board-Bm0VOdJ3.d.ts → board-fVAXZ8T5.d.ts} +25 -4
  9. package/dist/{breadcrumbs-CiBoJ3Aq.d.ts → breadcrumbs-DNaaP3xa.d.ts} +2 -2
  10. package/dist/{breadcrumbs-tkJIGz6x.d.mts → breadcrumbs-qE3CD--N.d.mts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/{chunk-DP2ZZZEO.mjs → chunk-DUTQOLOF.mjs} +1 -0
  13. package/dist/doctor.js +7989 -10
  14. package/dist/doctor.mjs +7989 -10
  15. package/dist/filters.d.mts +19 -3
  16. package/dist/filters.d.ts +19 -3
  17. package/dist/filters.js +10 -1
  18. package/dist/filters.mjs +10 -1
  19. package/dist/format.d.mts +4 -4
  20. package/dist/format.d.ts +4 -4
  21. package/dist/index.d.mts +182 -13
  22. package/dist/index.d.ts +182 -13
  23. package/dist/index.js +183 -23
  24. package/dist/index.mjs +183 -24
  25. package/dist/{jobs-FSqG6zA8.d.ts → jobs-BRysn2m0.d.ts} +25 -3
  26. package/dist/{jobs-BbX7BRpH.d.mts → jobs-R-h3A3kl.d.mts} +25 -3
  27. package/dist/{search-BL6adxbK.d.ts → search-BK_zHHNQ.d.ts} +1 -1
  28. package/dist/{search-G3-XEo3f.d.mts → search-BlB690ma.d.mts} +1 -1
  29. package/dist/{seo-DcLmhDtr.d.mts → seo-0mbZ7M_E.d.mts} +1 -1
  30. package/dist/{seo-DU0YYnOj.d.ts → seo-C7gMl6Y7.d.ts} +1 -1
  31. package/dist/seo-files.d.mts +2 -2
  32. package/dist/seo-files.d.ts +2 -2
  33. package/dist/seo.d.mts +6 -6
  34. package/dist/seo.d.ts +6 -6
  35. package/dist/server.d.mts +6 -6
  36. package/dist/server.d.ts +6 -6
  37. package/dist/server.mjs +1 -1
  38. package/dist/sitemap.d.mts +6 -6
  39. package/dist/sitemap.d.ts +6 -6
  40. package/dist/sitemap.mjs +1 -1
  41. package/dist/suggest.d.mts +2 -2
  42. package/dist/suggest.d.ts +2 -2
  43. package/package.json +2 -1
  44. package/skills/cavuno-board-account/SKILL.md +95 -1
  45. package/skills/cavuno-board-collections/SKILL.md +148 -0
  46. package/skills/cavuno-board-companies/SKILL.md +43 -1
  47. package/skills/cavuno-board-filters/SKILL.md +71 -1
  48. package/skills/cavuno-board-paywall/SKILL.md +5 -2
  49. package/skills/cavuno-board-post-a-job/SKILL.md +64 -0
  50. package/skills/manifest.json +11 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,103 @@
3
3
  This changelog records changes that affect Board API compatibility, exported
4
4
  types, runtime behavior, or supported integration patterns.
5
5
 
6
+ ## 4.27.0 — 2026-09-23
7
+
8
+ - **Collections and profile fields.** Company and talent responses carry
9
+ public `customFieldValues` and resolved collection selections in
10
+ `objectReferences`: title, description, logo, slug, the entry's public
11
+ fields and the profile's own details. `board.profileFields.retrieve` and
12
+ `board.profileFields.choices` list the public definitions and active
13
+ choices, and the signed-in owner methods on `board.me` read and update
14
+ editable fields and selections.
15
+ - **Collection fields on jobs.** Jobs return `resolvedCollectionFields`, with
16
+ each selected entry's `title` and `description` already resolved for that
17
+ job. `board.jobs.collectionChoices` lists a field's active choices. When a
18
+ field sets `allowOverrides`, operator and employer job writes accept
19
+ `collectionOverrides` to give a selected entry its own plain-text title and
20
+ description; on `PATCH`, an omitted list keeps the stored wording and `[]`
21
+ clears it.
22
+ - **Form layouts.** The board context's `forms` lists the job, company and
23
+ talent form fields in the operator's order, with visibility and required
24
+ flags, so a frontend can render forms the way the board is configured.
25
+ Operators read and replace layouts with `GET` and `PUT
26
+ /settings/form-layouts`.
27
+ - **Deprecated:** writing `logoUrl` on collection records. Mark an image
28
+ field as the collection's logo with `logoFieldKey` instead. Resolved
29
+ selections, job entries and choices still return `logoUrl`.
30
+
31
+ - **Custom fields on the employer job surface.** `POST` and `PATCH
32
+ /boards/{identifier}/me/companies/{slug}/jobs` accept `customFieldValues`,
33
+ the board-defined custom fields keyed by field `key`, with the same
34
+ additive write semantics as the operator job endpoints (`null` / `""` /
35
+ `[]` clear a key, omitted keys are preserved, unknown keys are ignored).
36
+ Every employer job read (`EmployerJobSummary`, `EmployerJob`) now carries
37
+ `customFieldValues` (`{}` when empty) so an edit form can prefill them. The
38
+ definitions to render — label, type, option keys, required — are the
39
+ board context's `customFields.job`. Writes are validated against the
40
+ board's Job form configuration: a required custom field left empty, a
41
+ wrong-typed value or an undefined option is rejected with `400
42
+ jobs_constraint_violation`. On employer create, custom fields are checked
43
+ only when the request carries `customFieldValues` (an empty object counts),
44
+ so a client that does not yet send them is not rejected for a custom field
45
+ it cannot supply. Employer creates are now held to the board's built-in Job
46
+ form rules (required salary or seniority, allowed options, allowed
47
+ countries) on the server as well, with the same error.
48
+ - **Job updates are checked against the board's Job form rules.** `PATCH
49
+ /jobs/{id}` and the employer job `PATCH` check each field group the request
50
+ sends (salary, seniority, employment type, work arrangement, office
51
+ locations, remote eligibility, custom fields) against the updated job, so
52
+ clearing a required salary or moving a job onto a work arrangement the board
53
+ does not allow is refused with `400 jobs_constraint_violation`. Groups the
54
+ request omits are not re-checked, so a job that predates a rule stays
55
+ editable.
56
+ - **The default work arrangement is checked too.** A job saved with an
57
+ office location but no `remoteOption` is stored as `on_site`. Creates and
58
+ updates now check that saved value against the board's allowed work
59
+ arrangements, so on a board that does not allow `on_site` such a write is
60
+ refused with `400 jobs_constraint_violation` instead of saving an on-site
61
+ job. This applies to any edit of an existing job that has an office
62
+ location but no work arrangement, even one that changes only other fields:
63
+ send an allowed `remoteOption` with it.
64
+ - **`jobs_constraint_violation` errors carry structured details.**
65
+ `error.details.violations` lists each broken rule as `{ code, path, params }`
66
+ (for example `{ code: "custom_field_required", path: ["customFieldValues",
67
+ "team"] }`), so a client can show its own localized message.
68
+
69
+ - **`cavuno-board doctor`**: the new `read.attribution` check uses the board's
70
+ `showCavunoBranding` setting to require a real Cavuno backlink when branding
71
+ is enabled. Marker attributes, scripts, templates and explicitly hidden
72
+ markup do not count. Branding disabled permits the link to be absent;
73
+ unreadable branding settings fail verification. This HTML diagnostic does
74
+ not evaluate external stylesheets or client-side changes.
75
+
76
+ - **Blocking a company can also remove it from the board.** `POST
77
+ /companies/{id}/block` accepts an optional `remove` flag. Left off, blocking
78
+ behaves as before: the public profile stays up and currently published jobs
79
+ are archived. Set to `true`, the company's jobs and its profile are taken off
80
+ the board — its directory, sitemap, and search entries go with them — while
81
+ the company stays on the blocklist, so automated sourcing cannot bring it
82
+ back. Sending `remove: true` for a company that is already blocked upgrades it
83
+ to that outcome.
84
+ - **New fields on the block result**: `removed` reports the resulting state and
85
+ `removal_scheduled` reports whether this call started the removal.
86
+ - **New field on the unblock result**: `was_removed` reports whether the company
87
+ had also been taken off the board. Unblocking such a company brings it back as
88
+ an empty profile; its jobs are not restored.
89
+ - **Deleting a blocked company no longer unblocks it.** `DELETE
90
+ /companies/{id}` on a company that is on the blocklist keeps the block and
91
+ removes the company from the board instead of purging it. To purge one
92
+ completely, unblock it first and then delete it. Deleting a company that is
93
+ not blocked is unchanged, and the response is still `204`.
94
+
95
+ ## 4.26.0 — 2026-09-07
96
+
97
+ - **`board.me.talentAccess.claim()`** claims a public free `talent_access`
98
+ plan for an approved company without a Stripe checkout hop. The call is
99
+ idempotent: claiming a plan the company already holds returns the existing
100
+ grant and does not top the credit balance back up. Exports
101
+ `TalentAccessClaimBody` and `TalentAccessClaim`.
102
+
6
103
  ## 4.25.0 — 2026-09-06
7
104
 
8
105
  - **`buyerAnswers` on invoice collection**: the public job-submission invoice