fix: changelog page rendered literal **bold** markup instead of bold text
Entries are plain strings with occasional **bold**/`code` spans, never full markdown — added a tiny inline parser rather than pulling in react-markdown just for this. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,11 @@
|
||||
|
||||
All notable changes to Epicure are documented here. This file is mirrored in-app at `/changelog` (and in the admin dashboard) via `apps/web/lib/changelog.ts` — update both together.
|
||||
|
||||
## 0.12.1 — 2026-07-13 13:25
|
||||
|
||||
### Fixed
|
||||
- Changelog entries showed literal `**bold**` markup instead of rendering it.
|
||||
|
||||
## 0.12.0 — 2026-07-13 12:52
|
||||
|
||||
### Added
|
||||
|
||||
@@ -1,7 +1,29 @@
|
||||
import { Fragment } from "react";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
import { CHANGELOG } from "@/lib/changelog";
|
||||
|
||||
// Changelog entries are plain strings with occasional **bold** and `code`
|
||||
// spans — never full markdown (lists, links, headings) — so a tiny inline
|
||||
// parser is enough and keeps this off the react-markdown dependency used for
|
||||
// full AI chat output elsewhere.
|
||||
function InlineMarkdown({ text }: { text: string }) {
|
||||
const parts = text.split(/(\*\*[^*]+\*\*|`[^`]+`)/g).filter(Boolean);
|
||||
return (
|
||||
<>
|
||||
{parts.map((part, i) => {
|
||||
if (part.startsWith("**") && part.endsWith("**")) {
|
||||
return <strong key={i}>{part.slice(2, -2)}</strong>;
|
||||
}
|
||||
if (part.startsWith("`") && part.endsWith("`")) {
|
||||
return <code key={i} className="rounded bg-muted px-1 py-0.5 text-xs">{part.slice(1, -1)}</code>;
|
||||
}
|
||||
return <Fragment key={i}>{part}</Fragment>;
|
||||
})}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export function ChangelogList() {
|
||||
return (
|
||||
<div className="space-y-8 max-w-2xl">
|
||||
@@ -18,7 +40,7 @@ export function ChangelogList() {
|
||||
<div className="space-y-1.5">
|
||||
<p className="text-xs font-medium uppercase tracking-wide text-muted-foreground">Added</p>
|
||||
<ul className="space-y-1 text-sm list-disc pl-5">
|
||||
{entry.added.map((line, j) => <li key={j}>{line}</li>)}
|
||||
{entry.added.map((line, j) => <li key={j}><InlineMarkdown text={line} /></li>)}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
@@ -27,7 +49,7 @@ export function ChangelogList() {
|
||||
<div className="space-y-1.5">
|
||||
<p className="text-xs font-medium uppercase tracking-wide text-muted-foreground">Fixed</p>
|
||||
<ul className="space-y-1 text-sm list-disc pl-5">
|
||||
{entry.fixed.map((line, j) => <li key={j}>{line}</li>)}
|
||||
{entry.fixed.map((line, j) => <li key={j}><InlineMarkdown text={line} /></li>)}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
@@ -36,7 +58,7 @@ export function ChangelogList() {
|
||||
<div className="space-y-1.5">
|
||||
<p className="text-xs font-medium uppercase tracking-wide text-muted-foreground">Security</p>
|
||||
<ul className="space-y-1 text-sm list-disc pl-5">
|
||||
{entry.security.map((line, j) => <li key={j}>{line}</li>)}
|
||||
{entry.security.map((line, j) => <li key={j}><InlineMarkdown text={line} /></li>)}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Mirrors CHANGELOG.md at the repo root — update both together.
|
||||
export const APP_VERSION = "0.12.0";
|
||||
export const APP_VERSION = "0.12.1";
|
||||
|
||||
export type ChangelogEntry = {
|
||||
version: string;
|
||||
@@ -11,6 +11,13 @@ export type ChangelogEntry = {
|
||||
};
|
||||
|
||||
export const CHANGELOG: ChangelogEntry[] = [
|
||||
{
|
||||
version: "0.12.1",
|
||||
date: "2026-07-13 13:25",
|
||||
fixed: [
|
||||
"Changelog entries showed literal `**bold**` markup instead of rendering it.",
|
||||
],
|
||||
},
|
||||
{
|
||||
version: "0.12.0",
|
||||
date: "2026-07-13 12:52",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@epicure/web",
|
||||
"version": "0.12.0",
|
||||
"version": "0.12.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "epicure",
|
||||
"version": "0.12.0",
|
||||
"version": "0.12.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "pnpm --filter web dev",
|
||||
|
||||
Reference in New Issue
Block a user