@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.
- package/CHANGELOG.md +97 -0
- package/dist/{_spec-CEaM1PL9.d.mts → _spec-B_pBNVUd.d.mts} +497 -47
- package/dist/{_spec-CEaM1PL9.d.ts → _spec-B_pBNVUd.d.ts} +497 -47
- package/dist/bin.mjs +7989 -10
- package/dist/{blog-Ba5ErHVO.d.ts → blog-DzGRUsj5.d.ts} +1 -1
- package/dist/{blog-lnpzj7Ay.d.mts → blog-fhXRik6k.d.mts} +1 -1
- package/dist/{board-BowjJTqF.d.mts → board-DEiEHcpe.d.mts} +25 -4
- package/dist/{board-Bm0VOdJ3.d.ts → board-fVAXZ8T5.d.ts} +25 -4
- package/dist/{breadcrumbs-CiBoJ3Aq.d.ts → breadcrumbs-DNaaP3xa.d.ts} +2 -2
- package/dist/{breadcrumbs-tkJIGz6x.d.mts → breadcrumbs-qE3CD--N.d.mts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-DP2ZZZEO.mjs → chunk-DUTQOLOF.mjs} +1 -0
- package/dist/doctor.js +7989 -10
- package/dist/doctor.mjs +7989 -10
- package/dist/filters.d.mts +19 -3
- package/dist/filters.d.ts +19 -3
- package/dist/filters.js +10 -1
- package/dist/filters.mjs +10 -1
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +182 -13
- package/dist/index.d.ts +182 -13
- package/dist/index.js +183 -23
- package/dist/index.mjs +183 -24
- package/dist/{jobs-FSqG6zA8.d.ts → jobs-BRysn2m0.d.ts} +25 -3
- package/dist/{jobs-BbX7BRpH.d.mts → jobs-R-h3A3kl.d.mts} +25 -3
- package/dist/{search-BL6adxbK.d.ts → search-BK_zHHNQ.d.ts} +1 -1
- package/dist/{search-G3-XEo3f.d.mts → search-BlB690ma.d.mts} +1 -1
- package/dist/{seo-DcLmhDtr.d.mts → seo-0mbZ7M_E.d.mts} +1 -1
- package/dist/{seo-DU0YYnOj.d.ts → seo-C7gMl6Y7.d.ts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/server.mjs +1 -1
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/sitemap.mjs +1 -1
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +2 -1
- package/skills/cavuno-board-account/SKILL.md +95 -1
- package/skills/cavuno-board-collections/SKILL.md +148 -0
- package/skills/cavuno-board-companies/SKILL.md +43 -1
- package/skills/cavuno-board-filters/SKILL.md +71 -1
- package/skills/cavuno-board-paywall/SKILL.md +5 -2
- package/skills/cavuno-board-post-a-job/SKILL.md +64 -0
- 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
|