mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-26 11:49:16 +00:00
b5acfd8f58
* feat(scaffold): fully automate release blog post publishing Eliminates the manual PR-review step from the release blog scaffold pipeline. The workflow now commits the generated post directly to sencho-website main. scaffold-release-post.mjs changes: - Remove renderPrBody and all body_file handling - Update findLastAnchor to accept any post with a version: field, not just category: release posts. This allows narrative retrospectives to anchor the 5-release window. - Add buildHeadline: generates a post title from the top two added items and the total item count, e.g. "Sencho v0.69: Custom OIDC provider, Trivy scanning, and 12 more" - Add buildDescription: auto-generates a ~160-char SEO description from the version range and top three added items - Add calcReadingTime: estimates reading time from changelog word count - Add coveredVersionsProse: formats "v0.65.0 through v0.69.0" - Add updateMeta: inserts the new post into src/data/blog/meta.ts for Worker-side SEO meta injection - Remove the tmpdir/os import (no longer needed) release-blog-template.tsx.tmpl changes: - Replace all TODO placeholders with template variables (__TITLE__, __DESCRIPTION__, __READING_TIME__, __COVERED_VERSIONS_PROSE__) - Remove the screenshot placeholder section (auto-generated posts have no screenshot; the intro links to docs.sencho.io instead) release-blog-scaffold.yml changes: - Remove permission-pull-requests: write from app token (no PR created) - Replace "Commit and open draft PR" step with a simple git commit + push to sencho-website main. No duplicate-check step needed. - Include src/data/blog/meta.ts in the git add so the Worker SEO mapping stays in sync automatically. * fix(ci): use escapeTsxString in updateMeta to handle backslashes in blog post title and description CodeQL flagged two high-severity alerts: title and description written into meta.ts via updateMeta were only single-quote-escaped, leaving raw backslashes unescaped. A value containing a backslash followed by a special character would produce a malformed escape sequence in the generated TypeScript source. The escapeTsxString helper already handles both cases; use it consistently instead of an open-coded replace.
29 lines
764 B
Cheetah
29 lines
764 B
Cheetah
import { ChangelogSection } from '../../../components/blog/ChangelogSection'
|
|
import { Prose } from '../../../components/blog/Prose'
|
|
import type { BlogPost } from '../types'
|
|
|
|
export const __EXPORT_NAME__: BlogPost = {
|
|
slug: '__SLUG__',
|
|
title: '__TITLE__',
|
|
description: '__DESCRIPTION__',
|
|
date: '__DATE__',
|
|
category: 'release',
|
|
version: '__VERSION__',
|
|
tags: ['release'],
|
|
readingTime: '__READING_TIME__',
|
|
content: (
|
|
<Prose>
|
|
<p>
|
|
This rollup covers __COVERED_VERSIONS_PROSE__. Head to the{' '}
|
|
<a href="https://docs.sencho.io/">Sencho docs</a> for setup guides and
|
|
full feature walkthroughs.
|
|
</p>
|
|
|
|
<h2>What's in this release</h2>
|
|
__ADDED_BLOCK__
|
|
__FIXED_BLOCK__
|
|
__CHANGED_BLOCK__
|
|
</Prose>
|
|
),
|
|
}
|