@cavuno/board 4.42.0 → 4.45.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 +56 -0
- package/dist/{_spec-B2aizgxr.d.mts → _spec-CdNZDaaR.d.mts} +39 -0
- package/dist/{_spec-B2aizgxr.d.ts → _spec-CdNZDaaR.d.ts} +39 -0
- package/dist/bin.mjs +570 -10
- package/dist/{blog-BkACbXY0.d.ts → blog-ZvLJ6w1Q.d.ts} +1 -1
- package/dist/{blog-CYHSnNTZ.d.mts → blog-uV51b4Cg.d.mts} +1 -1
- package/dist/{board-DWeT9Jbl.d.ts → board-3JU14eF3.d.ts} +2 -2
- package/dist/{board-DK4HmSty.d.mts → board-CJw-MJpf.d.mts} +2 -2
- package/dist/{breadcrumbs-nTfIWzRh.d.mts → breadcrumbs-BY1UMCbL.d.mts} +2 -2
- package/dist/{breadcrumbs-CtKa2zPe.d.ts → breadcrumbs-CXvdv6Ry.d.ts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-WSO6JN5C.mjs → chunk-DZD3DAEY.mjs} +2 -0
- package/dist/doctor.d.mts +1 -0
- package/dist/doctor.d.ts +1 -0
- package/dist/doctor.js +570 -10
- package/dist/doctor.mjs +570 -10
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +107 -14
- package/dist/index.d.ts +107 -14
- package/dist/index.js +129 -8
- package/dist/index.mjs +128 -9
- package/dist/{jobs-SAkNWgAB.d.ts → jobs-C7UvN_dW.d.ts} +1 -1
- package/dist/{jobs-C_eO-WfM.d.mts → jobs-D9ERWWda.d.mts} +1 -1
- package/dist/{search-Cb3Aoa4c.d.mts → search-BMSNK85o.d.mts} +1 -1
- package/dist/{search-CVcMFOuJ.d.ts → search-D0TFnn1x.d.ts} +1 -1
- package/dist/{seo-DPVud7SH.d.mts → seo-C3WmgifR.d.mts} +1 -1
- package/dist/{seo-DgFBQTIK.d.ts → seo-CYmVKHsu.d.ts} +1 -1
- package/dist/seo-files.d.mts +25 -3
- package/dist/seo-files.d.ts +25 -3
- package/dist/seo-files.js +44 -10
- package/dist/seo-files.mjs +44 -10
- 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 +1 -1
- package/skills/cavuno-board-filters/SKILL.md +13 -0
- package/skills/cavuno-board-i18n/SKILL.md +10 -0
- package/skills/cavuno-board-post-a-job/SKILL.md +2 -1
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,62 @@
|
|
|
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.45.0 — 2026-10-13
|
|
7
|
+
|
|
8
|
+
- `robotsBody()` and `robotsResponse()` from `@cavuno/board/seo-files` take
|
|
9
|
+
`listingPaths: { jobs, companies, talent }` for boards that rename or
|
|
10
|
+
translate their listing pages (for example `/vacatures` in place of
|
|
11
|
+
`/jobs`). The pagination `Disallow` rules then use those roots. A missing,
|
|
12
|
+
root (`/`) or unsafe value keeps the default root for that group, and
|
|
13
|
+
without the option the body is unchanged.
|
|
14
|
+
- They also take `localeListingPaths`, a list of the same shape, for
|
|
15
|
+
secondary interface languages served under a prefix (for example
|
|
16
|
+
`/fr/emplois`). Each root gets the same pagination rules after the
|
|
17
|
+
base-language rules, and roots already listed are skipped.
|
|
18
|
+
- New exported type: `RobotsListingPaths`.
|
|
19
|
+
- Doctor: a new `read.localizedUrls` check. On a board whose route manifest
|
|
20
|
+
uses translated words, each translated page's English path must answer a
|
|
21
|
+
308 to the board's own path on the same origin, and that path must load.
|
|
22
|
+
English boards skip it with no extra requests.
|
|
23
|
+
- The `cavuno-board-i18n` skill explains how a renamed URL word keeps
|
|
24
|
+
working: list the old word in `src/url-words-previous.json`, and starters
|
|
25
|
+
that read the file redirect it to the current word with one 308.
|
|
26
|
+
|
|
27
|
+
## 4.44.0 — 2026-10-12
|
|
28
|
+
|
|
29
|
+
- Saved searches: `me.companies.talentLists.members.list()` takes `stage`, a
|
|
30
|
+
comma-separated list of pipeline stages, on a saved search linked to a job.
|
|
31
|
+
It keeps the saved people whose application on that job is at one of those
|
|
32
|
+
stages, so a stage view can be paged like any other list. Values match
|
|
33
|
+
stored stages exactly: to match a board column, pass every stage the column
|
|
34
|
+
shows (the Applied column is `applied,review`). `count` reflects the stage
|
|
35
|
+
and filters; `total` is still every saved person you can see. Passing
|
|
36
|
+
`stage` for a saved search with no linked job is a 400.
|
|
37
|
+
|
|
38
|
+
## 4.43.0 — 2026-10-12
|
|
39
|
+
|
|
40
|
+
- Saved searches can hold people. `me.companies.talentLists.members.list()`,
|
|
41
|
+
`.add()` and `.remove()` manage the people saved to a saved search, and
|
|
42
|
+
`me.companies.talentLists.memberships()` lists the saved searches one
|
|
43
|
+
candidate is on. `members.list()` takes the same filters as `talent.list()`,
|
|
44
|
+
including `radius`, and returns `total` (every saved person you can see)
|
|
45
|
+
next to `count` (those matching the filters). Each saved search reports
|
|
46
|
+
`memberCount`. A saved search holds up to 500 people; adding more returns
|
|
47
|
+
409 `talent_list_full`.
|
|
48
|
+
- Saving someone to a saved search that is linked to a job also shortlists
|
|
49
|
+
them on that job, and linking a job later shortlists everyone already
|
|
50
|
+
saved. Removing someone from a saved search never changes their place in a
|
|
51
|
+
job pipeline.
|
|
52
|
+
- Messaging: on boards that sell talent access, sending a message about a
|
|
53
|
+
shortlisted candidate who has not applied needs talent access, as a message
|
|
54
|
+
started from the talent directory does. Messages about people who applied
|
|
55
|
+
are unchanged.
|
|
56
|
+
- Talent directory: signed-in viewers also see profiles that are visible to
|
|
57
|
+
signed-in users only.
|
|
58
|
+
- Job postings: spending an existing credit or subscription through
|
|
59
|
+
`job-postings` requires `billingVerificationToken`, the token you pass to
|
|
60
|
+
`getBillingOptions`. Posts that buy a plan or are free are unaffected.
|
|
61
|
+
|
|
6
62
|
## 4.42.0 — 2026-10-12
|
|
7
63
|
|
|
8
64
|
- Talent search: `talent.list()` takes `radius`, in kilometres (1–250,
|
|
@@ -64,6 +64,9 @@ interface components {
|
|
|
64
64
|
job: string;
|
|
65
65
|
candidateBoardUserId: string;
|
|
66
66
|
};
|
|
67
|
+
AddTalentListMemberBody: {
|
|
68
|
+
candidateBoardUserId: string;
|
|
69
|
+
};
|
|
67
70
|
Alert: {
|
|
68
71
|
/** @description Job-alert preference ID. Also the path key. */
|
|
69
72
|
id: string;
|
|
@@ -1082,6 +1085,8 @@ interface components {
|
|
|
1082
1085
|
id?: string;
|
|
1083
1086
|
planId: string;
|
|
1084
1087
|
};
|
|
1088
|
+
/** @description The `verificationToken` the billing options were listed with. Required when `selectedBilling.type` is `order` or `subscription`; the token's email must match `submission.contactEmail`. */
|
|
1089
|
+
billingVerificationToken?: string;
|
|
1085
1090
|
invoiceBilling?: {
|
|
1086
1091
|
billingName?: string;
|
|
1087
1092
|
address: {
|
|
@@ -2935,6 +2940,22 @@ interface components {
|
|
|
2935
2940
|
*/
|
|
2936
2941
|
offset?: number;
|
|
2937
2942
|
};
|
|
2943
|
+
PublicTalentPlace: {
|
|
2944
|
+
/** @enum {string} */
|
|
2945
|
+
object: "talent_place";
|
|
2946
|
+
/** @description Stable place identity (the same id as `/places`). */
|
|
2947
|
+
id: string;
|
|
2948
|
+
/** @description Parent place's `id`; `null` for a root place. */
|
|
2949
|
+
parentId: string | null;
|
|
2950
|
+
/** @description English source place slug: pass it as the talent directory's `place` filter. */
|
|
2951
|
+
slug: string | null;
|
|
2952
|
+
name: string;
|
|
2953
|
+
placeType: string;
|
|
2954
|
+
countryCode: string | null;
|
|
2955
|
+
regionCode: string | null;
|
|
2956
|
+
/** @description Candidates the viewer can see in the directory whose home is this place or lies within it. Signed out: `public` profiles; signed in: `public` and `logged_in_only` profiles. */
|
|
2957
|
+
candidateCount: number;
|
|
2958
|
+
};
|
|
2938
2959
|
PublicTaxonomyResolution: {
|
|
2939
2960
|
/** @enum {string} */
|
|
2940
2961
|
object: "taxonomy_resolution";
|
|
@@ -3602,6 +3623,8 @@ interface components {
|
|
|
3602
3623
|
createdBy: string;
|
|
3603
3624
|
createdAt: number;
|
|
3604
3625
|
updatedAt: number;
|
|
3626
|
+
/** @description People saved to this list (at most 500). Includes anyone the members list omits for the viewer (blocked, hidden or deactivated). */
|
|
3627
|
+
memberCount: number;
|
|
3605
3628
|
};
|
|
3606
3629
|
TalentListFilters: {
|
|
3607
3630
|
q?: string;
|
|
@@ -3617,6 +3640,22 @@ interface components {
|
|
|
3617
3640
|
permitCountry?: string;
|
|
3618
3641
|
interestedRole?: string;
|
|
3619
3642
|
};
|
|
3643
|
+
TalentListMember: {
|
|
3644
|
+
id: string;
|
|
3645
|
+
/** @enum {string} */
|
|
3646
|
+
object: "talent_list_member";
|
|
3647
|
+
candidate: components["schemas"]["TalentDirectoryEntry"];
|
|
3648
|
+
addedAt: number;
|
|
3649
|
+
/** @description Board-user id of the employer who saved them. */
|
|
3650
|
+
addedBy: string;
|
|
3651
|
+
};
|
|
3652
|
+
TalentListMembership: {
|
|
3653
|
+
/** @enum {string} */
|
|
3654
|
+
object: "talent_list_membership";
|
|
3655
|
+
listId: string;
|
|
3656
|
+
candidateBoardUserId: string;
|
|
3657
|
+
addedAt: number;
|
|
3658
|
+
};
|
|
3620
3659
|
TalentProfile: {
|
|
3621
3660
|
/** @enum {string} */
|
|
3622
3661
|
object: "talent_profile";
|
|
@@ -64,6 +64,9 @@ interface components {
|
|
|
64
64
|
job: string;
|
|
65
65
|
candidateBoardUserId: string;
|
|
66
66
|
};
|
|
67
|
+
AddTalentListMemberBody: {
|
|
68
|
+
candidateBoardUserId: string;
|
|
69
|
+
};
|
|
67
70
|
Alert: {
|
|
68
71
|
/** @description Job-alert preference ID. Also the path key. */
|
|
69
72
|
id: string;
|
|
@@ -1082,6 +1085,8 @@ interface components {
|
|
|
1082
1085
|
id?: string;
|
|
1083
1086
|
planId: string;
|
|
1084
1087
|
};
|
|
1088
|
+
/** @description The `verificationToken` the billing options were listed with. Required when `selectedBilling.type` is `order` or `subscription`; the token's email must match `submission.contactEmail`. */
|
|
1089
|
+
billingVerificationToken?: string;
|
|
1085
1090
|
invoiceBilling?: {
|
|
1086
1091
|
billingName?: string;
|
|
1087
1092
|
address: {
|
|
@@ -2935,6 +2940,22 @@ interface components {
|
|
|
2935
2940
|
*/
|
|
2936
2941
|
offset?: number;
|
|
2937
2942
|
};
|
|
2943
|
+
PublicTalentPlace: {
|
|
2944
|
+
/** @enum {string} */
|
|
2945
|
+
object: "talent_place";
|
|
2946
|
+
/** @description Stable place identity (the same id as `/places`). */
|
|
2947
|
+
id: string;
|
|
2948
|
+
/** @description Parent place's `id`; `null` for a root place. */
|
|
2949
|
+
parentId: string | null;
|
|
2950
|
+
/** @description English source place slug: pass it as the talent directory's `place` filter. */
|
|
2951
|
+
slug: string | null;
|
|
2952
|
+
name: string;
|
|
2953
|
+
placeType: string;
|
|
2954
|
+
countryCode: string | null;
|
|
2955
|
+
regionCode: string | null;
|
|
2956
|
+
/** @description Candidates the viewer can see in the directory whose home is this place or lies within it. Signed out: `public` profiles; signed in: `public` and `logged_in_only` profiles. */
|
|
2957
|
+
candidateCount: number;
|
|
2958
|
+
};
|
|
2938
2959
|
PublicTaxonomyResolution: {
|
|
2939
2960
|
/** @enum {string} */
|
|
2940
2961
|
object: "taxonomy_resolution";
|
|
@@ -3602,6 +3623,8 @@ interface components {
|
|
|
3602
3623
|
createdBy: string;
|
|
3603
3624
|
createdAt: number;
|
|
3604
3625
|
updatedAt: number;
|
|
3626
|
+
/** @description People saved to this list (at most 500). Includes anyone the members list omits for the viewer (blocked, hidden or deactivated). */
|
|
3627
|
+
memberCount: number;
|
|
3605
3628
|
};
|
|
3606
3629
|
TalentListFilters: {
|
|
3607
3630
|
q?: string;
|
|
@@ -3617,6 +3640,22 @@ interface components {
|
|
|
3617
3640
|
permitCountry?: string;
|
|
3618
3641
|
interestedRole?: string;
|
|
3619
3642
|
};
|
|
3643
|
+
TalentListMember: {
|
|
3644
|
+
id: string;
|
|
3645
|
+
/** @enum {string} */
|
|
3646
|
+
object: "talent_list_member";
|
|
3647
|
+
candidate: components["schemas"]["TalentDirectoryEntry"];
|
|
3648
|
+
addedAt: number;
|
|
3649
|
+
/** @description Board-user id of the employer who saved them. */
|
|
3650
|
+
addedBy: string;
|
|
3651
|
+
};
|
|
3652
|
+
TalentListMembership: {
|
|
3653
|
+
/** @enum {string} */
|
|
3654
|
+
object: "talent_list_membership";
|
|
3655
|
+
listId: string;
|
|
3656
|
+
candidateBoardUserId: string;
|
|
3657
|
+
addedAt: number;
|
|
3658
|
+
};
|
|
3620
3659
|
TalentProfile: {
|
|
3621
3660
|
/** @enum {string} */
|
|
3622
3661
|
object: "talent_profile";
|