@cavuno/board 4.66.0 → 4.67.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 +17 -0
- package/dist/{_spec-DBI6azWs.d.mts → _spec-BehBmeHK.d.mts} +92 -0
- package/dist/{_spec-DBI6azWs.d.ts → _spec-BehBmeHK.d.ts} +92 -0
- package/dist/{blog--VKuBIdw.d.ts → blog-BLpOmpyQ.d.ts} +1 -1
- package/dist/{blog-Bx-rjH4V.d.mts → blog-BmfbjijG.d.mts} +1 -1
- package/dist/{board-BsUhxdjL.d.mts → board-CXd9Me7_.d.mts} +2 -2
- package/dist/{board-USJ9ZZab.d.ts → board-dV_3NXAI.d.ts} +2 -2
- package/dist/{breadcrumbs-BVN_gIJq.d.mts → breadcrumbs-Cu_SPdRA.d.mts} +2 -2
- package/dist/{breadcrumbs-maV86vZP.d.ts → breadcrumbs-PEsRCVwI.d.ts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-R62XFNS7.mjs → chunk-ZA5TZ6UH.mjs} +4 -0
- 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 +61 -13
- package/dist/index.d.ts +61 -13
- package/dist/index.js +66 -10
- package/dist/index.mjs +63 -11
- package/dist/{jobs-qoVMh_Zd.d.mts → jobs-CbTUedOr.d.mts} +1 -1
- package/dist/{jobs-Dyj1HZ8W.d.ts → jobs-D2mKA65F.d.ts} +1 -1
- package/dist/{search-DPHLf8pI.d.ts → search-CHejx_k7.d.ts} +1 -1
- package/dist/{search-CrXCM8Hq.d.mts → search-CxUViZsz.d.mts} +1 -1
- package/dist/{seo-DRVgmTCQ.d.mts → seo-CWa4rTf7.d.mts} +1 -1
- package/dist/{seo-BDwe8PwT.d.ts → seo-DYyQ8NTh.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 +1 -1
- package/skills/cavuno-board-account/SKILL.md +11 -0
- package/skills/cavuno-board-collections/SKILL.md +31 -2
- package/skills/manifest.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
isSsoRequired,
|
|
29
29
|
isUnauthorized,
|
|
30
30
|
isValidationError
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-ZA5TZ6UH.mjs";
|
|
32
32
|
|
|
33
33
|
// src/query.ts
|
|
34
34
|
function toSearchParams(query) {
|
|
@@ -49,7 +49,7 @@ function toSearchParams(query) {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
// src/version.ts
|
|
52
|
-
var SDK_VERSION = "4.
|
|
52
|
+
var SDK_VERSION = "4.67.0";
|
|
53
53
|
|
|
54
54
|
// src/client.ts
|
|
55
55
|
function isRawBody(body) {
|
|
@@ -770,6 +770,30 @@ function blogNamespace(client) {
|
|
|
770
770
|
};
|
|
771
771
|
}
|
|
772
772
|
|
|
773
|
+
// src/namespaces/collections.ts
|
|
774
|
+
function collectionsNamespace(client) {
|
|
775
|
+
return {
|
|
776
|
+
/**
|
|
777
|
+
* List the active entries of a collection the operator made public,
|
|
778
|
+
* sorted by name, with only its public fields. A collection that is not
|
|
779
|
+
* public reads as not found (`collections_not_found`). Follow
|
|
780
|
+
* `nextCursor` for more.
|
|
781
|
+
*
|
|
782
|
+
* @example
|
|
783
|
+
* const { data, nextCursor } = await board.collections.entries(
|
|
784
|
+
* 'trade_communities',
|
|
785
|
+
* { limit: 50 },
|
|
786
|
+
* );
|
|
787
|
+
*/
|
|
788
|
+
entries(key, query, options) {
|
|
789
|
+
return client.fetch(
|
|
790
|
+
`/collections/${encodeURIComponent(key)}/entries`,
|
|
791
|
+
{ ...options, query }
|
|
792
|
+
);
|
|
793
|
+
}
|
|
794
|
+
};
|
|
795
|
+
}
|
|
796
|
+
|
|
773
797
|
// src/namespaces/companies.ts
|
|
774
798
|
function companiesNamespace(client) {
|
|
775
799
|
const markets = Object.assign(
|
|
@@ -1433,19 +1457,26 @@ function meNamespace(client) {
|
|
|
1433
1457
|
query
|
|
1434
1458
|
});
|
|
1435
1459
|
},
|
|
1436
|
-
/**
|
|
1460
|
+
/**
|
|
1461
|
+
* Retrieve my profile custom-field definitions, current values, and the
|
|
1462
|
+
* saved files of upload fields (`customFieldMedia`).
|
|
1463
|
+
*/
|
|
1437
1464
|
retrieveCustomFields(options) {
|
|
1438
|
-
return client.fetch(
|
|
1439
|
-
|
|
1440
|
-
|
|
1465
|
+
return client.fetch(
|
|
1466
|
+
"/me/profile/custom-fields",
|
|
1467
|
+
{ ...options }
|
|
1468
|
+
);
|
|
1441
1469
|
},
|
|
1442
1470
|
/** Additively update my editable candidate profile custom fields. */
|
|
1443
1471
|
updateCustomFields(body, options) {
|
|
1444
|
-
return client.fetch(
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1472
|
+
return client.fetch(
|
|
1473
|
+
"/me/profile/custom-fields",
|
|
1474
|
+
{
|
|
1475
|
+
...options,
|
|
1476
|
+
method: "PATCH",
|
|
1477
|
+
body
|
|
1478
|
+
}
|
|
1479
|
+
);
|
|
1449
1480
|
},
|
|
1450
1481
|
/** Retrieve editable catalog references on my candidate profile. */
|
|
1451
1482
|
retrieveObjectReferences(options) {
|
|
@@ -1643,6 +1674,26 @@ function meNamespace(client) {
|
|
|
1643
1674
|
method: "POST",
|
|
1644
1675
|
body: form
|
|
1645
1676
|
});
|
|
1677
|
+
},
|
|
1678
|
+
/**
|
|
1679
|
+
* Upload one file to an owner-editable `image_gallery` or `file` field
|
|
1680
|
+
* of my profile (up to 10 MB; galleries take JPEG, PNG, WebP or GIF).
|
|
1681
|
+
* The file is a draft until its `id` is saved to the field with
|
|
1682
|
+
* `updateCustomFields`, as the ordered list of file IDs.
|
|
1683
|
+
*
|
|
1684
|
+
* @example
|
|
1685
|
+
* const image = await board.me.profile.uploadCustomFieldFile('portfolio', file);
|
|
1686
|
+
* await board.me.profile.updateCustomFields({
|
|
1687
|
+
* values: { portfolio: [...savedIds, image.id] },
|
|
1688
|
+
* });
|
|
1689
|
+
*/
|
|
1690
|
+
uploadCustomFieldFile(fieldKey, file, options) {
|
|
1691
|
+
const form = new FormData();
|
|
1692
|
+
form.append("file", file);
|
|
1693
|
+
return client.fetch(
|
|
1694
|
+
`/me/profile/custom-fields/${encodeURIComponent(fieldKey)}/files`,
|
|
1695
|
+
{ ...options, method: "POST", body: form }
|
|
1696
|
+
);
|
|
1646
1697
|
}
|
|
1647
1698
|
},
|
|
1648
1699
|
/**
|
|
@@ -4317,6 +4368,7 @@ function createBoardClient(options) {
|
|
|
4317
4368
|
embed: embedNamespace(client),
|
|
4318
4369
|
companies: companiesNamespace(client),
|
|
4319
4370
|
blog: blogNamespace(client),
|
|
4371
|
+
collections: collectionsNamespace(client),
|
|
4320
4372
|
auth: authNamespace(client, options.board),
|
|
4321
4373
|
me: meNamespace(client),
|
|
4322
4374
|
invites: invitesNamespace(client),
|
package/dist/seo-files.d.mts
CHANGED
package/dist/seo-files.d.ts
CHANGED
package/dist/seo.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
3
|
-
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BmfbjijG.mjs';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-Cu_SPdRA.mjs';
|
|
3
|
+
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-Cu_SPdRA.mjs';
|
|
4
|
+
import './_spec-BehBmeHK.mjs';
|
|
5
|
+
import './board-CXd9Me7_.mjs';
|
|
6
|
+
import './jobs-CbTUedOr.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Blog structured data on the `@cavuno/board` wire types, transcribed from
|
package/dist/seo.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
3
|
-
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BLpOmpyQ.js';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-PEsRCVwI.js';
|
|
3
|
+
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-PEsRCVwI.js';
|
|
4
|
+
import './_spec-BehBmeHK.js';
|
|
5
|
+
import './board-dV_3NXAI.js';
|
|
6
|
+
import './jobs-D2mKA65F.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Blog structured data on the `@cavuno/board` wire types, transcribed from
|
package/dist/server.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './jobs-
|
|
5
|
-
import './board-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-BehBmeHK.mjs';
|
|
3
|
+
import './search-CxUViZsz.mjs';
|
|
4
|
+
import './jobs-CbTUedOr.mjs';
|
|
5
|
+
import './board-CXd9Me7_.mjs';
|
|
6
|
+
import './seo-CWa4rTf7.mjs';
|
|
7
|
+
import './blog-BmfbjijG.mjs';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './jobs-
|
|
5
|
-
import './board-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog
|
|
2
|
+
import './_spec-BehBmeHK.js';
|
|
3
|
+
import './search-CHejx_k7.js';
|
|
4
|
+
import './jobs-D2mKA65F.js';
|
|
5
|
+
import './board-dV_3NXAI.js';
|
|
6
|
+
import './seo-DYyQ8NTh.js';
|
|
7
|
+
import './blog-BLpOmpyQ.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.mjs
CHANGED
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './jobs-
|
|
5
|
-
import './board-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-BehBmeHK.mjs';
|
|
3
|
+
import './search-CxUViZsz.mjs';
|
|
4
|
+
import './jobs-CbTUedOr.mjs';
|
|
5
|
+
import './board-CXd9Me7_.mjs';
|
|
6
|
+
import './seo-CWa4rTf7.mjs';
|
|
7
|
+
import './blog-BmfbjijG.mjs';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './jobs-
|
|
5
|
-
import './board-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog
|
|
2
|
+
import './_spec-BehBmeHK.js';
|
|
3
|
+
import './search-CHejx_k7.js';
|
|
4
|
+
import './jobs-D2mKA65F.js';
|
|
5
|
+
import './board-dV_3NXAI.js';
|
|
6
|
+
import './seo-DYyQ8NTh.js';
|
|
7
|
+
import './blog-BLpOmpyQ.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.mjs
CHANGED
package/dist/suggest.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-CxUViZsz.mjs';
|
|
2
|
+
import './_spec-BehBmeHK.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/dist/suggest.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-CHejx_k7.js';
|
|
2
|
+
import './_spec-BehBmeHK.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/package.json
CHANGED
|
@@ -206,6 +206,17 @@ The SDK builds multipart `FormData` with field `file` from a `Blob` or `File`. A
|
|
|
206
206
|
const { avatarUrl } = await board.me.profile.uploadAvatar(file);
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
+
Image gallery and file custom fields take one upload per call, up to 10 MB; galleries accept JPEG, PNG, WebP or GIF and hold at most 10 images. Only fields with `editableByOwner: true` accept uploads. An upload is a draft until you save its `id` to the field: the field's value is the ordered list of file IDs, so append, remove or reorder IDs and send the whole list. Drafts never saved are deleted after a day. Show previews from the returned `url` and from `customFieldMedia` on `retrieveCustomFields`; both are signed links that expire, so read them fresh rather than storing them.
|
|
210
|
+
|
|
211
|
+
```ts snippet
|
|
212
|
+
const { values } = await board.me.profile.retrieveCustomFields();
|
|
213
|
+
const saved = Array.isArray(values.portfolio) ? values.portfolio : [];
|
|
214
|
+
const image = await board.me.profile.uploadCustomFieldFile('portfolio', file);
|
|
215
|
+
await board.me.profile.updateCustomFields({
|
|
216
|
+
values: { portfolio: [...saved, image.id] },
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
209
220
|
Resume upload starts an asynchronous parse that may populate the profile. Poll within a fixed budget, surface failure, and keep manual editing available if parsing runs long.
|
|
210
221
|
|
|
211
222
|
```ts snippet
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cavuno-board-collections
|
|
3
|
-
description: Custom profile fields
|
|
3
|
+
description: Custom profile fields, collection references and public collections with @cavuno/board. Use for rendering company, talent or job custom fields, collection entries, a page that lists a collection's entries (resources, partners, communities), benefits/technologies/certification sections, or collection-backed filters.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Custom fields and collections
|
|
7
7
|
|
|
8
8
|
An operator defines two kinds of extra data. A **custom field** stores one typed value directly on a company, talent profile, or job. A **collection reference** points that record at reusable entries — benefits, technologies, certifications, learning resources — that the operator maintains once and every record shares.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Your site renders both. The API resolves them and your frontend decides the layout, so this surface is read-heavy: definitions tell you what to draw, resolved selections tell you what to draw it with. A collection the operator made public can also be listed on its own page with `board.collections.entries` (see below).
|
|
11
11
|
|
|
12
12
|
## The read model
|
|
13
13
|
|
|
@@ -76,6 +76,34 @@ for (const field of job.resolvedCollectionFields) {
|
|
|
76
76
|
}
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
## Public collections
|
|
80
|
+
|
|
81
|
+
A collection the operator turned **Public** on (Settings, Collections) can be listed on its own page, such as a Resources or Partners page. Ask the operator for the collection's key; a collection that is not public, archived, or unknown throws `BoardApiError` with code `collections_not_found`.
|
|
82
|
+
|
|
83
|
+
```ts snippet
|
|
84
|
+
const entries = [];
|
|
85
|
+
let cursor: string | undefined;
|
|
86
|
+
do {
|
|
87
|
+
const page = await board.collections.entries('trade_communities', {
|
|
88
|
+
limit: 100,
|
|
89
|
+
cursor,
|
|
90
|
+
});
|
|
91
|
+
entries.push(...page.data);
|
|
92
|
+
cursor = page.nextCursor ?? undefined;
|
|
93
|
+
} while (cursor);
|
|
94
|
+
|
|
95
|
+
for (const entry of entries) {
|
|
96
|
+
renderResource({
|
|
97
|
+
heading: entry.name,
|
|
98
|
+
logoUrl: entry.logoUrl,
|
|
99
|
+
website: entry.values.website,
|
|
100
|
+
href: entry.slug ? `/resources/${entry.slug}` : undefined,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Each entry is `{ id, name, slug?, logoUrl?, fields, values, references? }`, sorted by name: the same `fields` / `values` / `references` shape as a job collection entry, without the per-job `title` and `description`. Take labels from `fields`.
|
|
106
|
+
|
|
79
107
|
Visibility is enforced server-side. Public reads return only public scalar fields, public collection fields, and active entries; private definitions and archived entries are omitted entirely, not nulled. Do not render a placeholder for a key that is absent — the operator meant it to be invisible. An owner read returns the private owner-editable fields too, so the same component can receive either payload; branch on what is present.
|
|
80
108
|
|
|
81
109
|
## Owner writes
|
|
@@ -140,6 +168,7 @@ Finish only after every applicable check passes:
|
|
|
140
168
|
- Rich text renders as formatted HTML, not escaped tags.
|
|
141
169
|
- A private field and an archived entry are absent from the public render, with no empty placeholder left behind.
|
|
142
170
|
- Job pages read `resolvedCollectionFields`, and company or talent pages read `objectReferences` — neither shape is assumed for the other.
|
|
171
|
+
- A page that lists a collection reads `board.collections.entries`, follows `nextCursor` to the end, and handles `collections_not_found` without a broken page.
|
|
143
172
|
- Filter requests carry record IDs from a choices call, and the filter control's options come from the public definition list.
|
|
144
173
|
- A multi-select picker stops at the definition's `maxSelections`, or at 100 when the definition omits it.
|
|
145
174
|
|
package/skills/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
2
|
+
"version": "4.67.0",
|
|
3
3
|
"skills": [
|
|
4
4
|
{
|
|
5
5
|
"name": "cavuno-board-account",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"name": "cavuno-board-collections",
|
|
41
|
-
"description": "Custom profile fields
|
|
41
|
+
"description": "Custom profile fields, collection references and public collections with @cavuno/board. Use for rendering company, talent or job custom fields, collection entries, a page that lists a collection's entries (resources, partners, communities), benefits/technologies/certification sections, or collection-backed filters.",
|
|
42
42
|
"path": "skills/cavuno-board-collections/SKILL.md",
|
|
43
43
|
"framework": null,
|
|
44
44
|
"category": "core"
|