@stack-mode/site-manager-kit 1.46.0 → 1.47.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-mode/site-manager-kit",
3
- "version": "1.46.0",
3
+ "version": "1.47.0",
4
4
  "description": "Reads a site's content from Site Manager and builds its metadata, sitemap, robots, redirects, forms and refreshes. For Next.js App Router sites on Vercel.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
package/src/blog.ts CHANGED
@@ -113,7 +113,18 @@ export function blogPostingJsonLd(post: BlogPost, opts: { publisherName?: string
113
113
  if (image) out.image = [image];
114
114
  if (post.publishedAt) out.datePublished = post.publishedAt;
115
115
  out.dateModified = post.updatedAt;
116
- if (post.author) out.author = { "@type": "Person", name: post.author.name, ...(post.author.url ? { url: post.author.url } : {}) };
116
+ if (post.author) {
117
+ const a = post.author;
118
+ out.author = {
119
+ "@type": "Person",
120
+ name: a.name,
121
+ ...(a.url ? { url: a.url } : {}),
122
+ ...(a.jobTitle ? { jobTitle: a.jobTitle } : {}),
123
+ ...(a.credentials ? { description: a.credentials } : {}),
124
+ // Profiles elsewhere let search engines and AI tools confirm who wrote the article.
125
+ ...(a.sameAs?.length ? { sameAs: a.sameAs } : {}),
126
+ };
127
+ }
117
128
  if (opts.publisherName) out.publisher = { "@type": "Organization", name: opts.publisherName, ...(opts.publisherLogo ? { logo: { "@type": "ImageObject", url: opts.publisherLogo } } : {}) };
118
129
  if (post.categories.length) out.articleSection = post.categories.map((c) => c.name);
119
130
  if (post.tags.length) out.keywords = post.tags.map((t) => t.name).join(", ");
package/src/types.ts CHANGED
@@ -476,7 +476,11 @@ export type BlogTerm = { slug: string; name: string };
476
476
  * Who wrote a post. A `team` author is one of the site's Team members: `slug` is theirs, and `url` their page address,
477
477
  * null until the site has a Team page pattern in Site Manager. Both are absent for other kinds and older Site Manager.
478
478
  */
479
- export type BlogAuthor = { name: string; kind: "user" | "byline" | "team"; slug?: string; url?: string | null };
479
+ /**
480
+ * Team authors also carry their title, a line of credentials and profile addresses elsewhere (Site Manager 2026-11),
481
+ * absent from older servers.
482
+ */
483
+ export type BlogAuthor = { name: string; kind: "user" | "byline" | "team"; slug?: string; url?: string | null; jobTitle?: string | null; credentials?: string | null; sameAs?: string[] };
480
484
 
481
485
  /** A post in a list: everything but the body. `url` is null until the site has a blog page pattern in Site Manager. */
482
486
  export type BlogPostSummary = {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const KIT_VERSION = "1.46.0";
1
+ export const KIT_VERSION = "1.47.0";