fix(markdown): formatting inside bold/italic/strike, monochrome inline code
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m17s
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m17s
Bold, italic and strikethrough render their inside again, so **`code`** shows bold code instead of backticks; inline code uses the theme's code background with the main text colour instead of the accent colour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
05355989a8
commit
e243e328c7
3 files changed
+15
-4
No files matched your search
@@ -16,6 +16,7 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V
|
|||||||
- PWA Web Share Target: Text, Links und Bilder können über den nativen Teilen-Dialog des Smartphones direkt in den MindSift-Posteingang geteilt werden (`share_target` im Manifest, Abfangen im Service Worker via IndexedDB und Übernahme beim App-Start; Fallback-Route `POST /share-target` im Server).
|
- PWA Web Share Target: Text, Links und Bilder können über den nativen Teilen-Dialog des Smartphones direkt in den MindSift-Posteingang geteilt werden (`share_target` im Manifest, Abfangen im Service Worker via IndexedDB und Übernahme beim App-Start; Fallback-Route `POST /share-target` im Server).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
- Inline-Code ist einfarbig (Text in Haupttextfarbe auf dem Code-Hintergrund des Themes) statt in Akzentfarbe, für bessere Lesbarkeit.
|
||||||
- Notizen: Enter in einem leeren eingerückten Punkt rückt ihn nur noch aus, wenn danach kein Punkt mehr auf derselben Ebene folgt; sonst entsteht wie gewohnt ein neuer Punkt darunter (auch nummerierte Listen werden dann nicht beendet).
|
- Notizen: Enter in einem leeren eingerückten Punkt rückt ihn nur noch aus, wenn danach kein Punkt mehr auf derselben Ebene folgt; sonst entsteht wie gewohnt ein neuer Punkt darunter (auch nummerierte Listen werden dann nicht beendet).
|
||||||
- Workspace-Leiste: Live, Geteilt und Speicherstatus ohne Rahmen im gleichen Stil, ein senkrechter Trennstrich vor den Notiz-Knöpfen. Footer ohne Linie darüber.
|
- Workspace-Leiste: Live, Geteilt und Speicherstatus ohne Rahmen im gleichen Stil, ein senkrechter Trennstrich vor den Notiz-Knöpfen. Footer ohne Linie darüber.
|
||||||
- Journal: Panel und Kalender öffnen sich mit einer sanften Animation, die Journal-Ansicht blendet ein.
|
- Journal: Panel und Kalender öffnen sich mit einer sanften Animation, die Journal-Ansicht blendet ein.
|
||||||
@@ -26,6 +27,9 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V
|
|||||||
- Notizen: Beim Einfügen und beim Markdown-Import werden Absätze und Listen unter einer Überschrift eingerückt (H2 unter H1 eine Ebene tiefer), so lassen sich Abschnitte einklappen und fokussieren. Enter am Ende einer Überschrift legt den neuen Punkt als Unterpunkt an; `- `, `* ` oder `+ ` in einem leeren Punkt machen ihn zum normalen Aufzählungspunkt.
|
- Notizen: Beim Einfügen und beim Markdown-Import werden Absätze und Listen unter einer Überschrift eingerückt (H2 unter H1 eine Ebene tiefer), so lassen sich Abschnitte einklappen und fokussieren. Enter am Ende einer Überschrift legt den neuen Punkt als Unterpunkt an; `- `, `* ` oder `+ ` in einem leeren Punkt machen ihn zum normalen Aufzählungspunkt.
|
||||||
- CI: Tests laufen pro Code-Stand nur einmal. `main` baut ohne erneute Tests, wenn derselbe Stand schon als `dev` getestet wurde; ein Release-Tag auf denselben Commit wie `latest` baut nicht neu, sondern taggt `latest` um. Die Zuordnung steht als Label im Image (keine zusätzlichen Image-Tags in der Registry). Dockerfile: `SKIP_TESTS`, BuildKit-Caches für Go und npm.
|
- CI: Tests laufen pro Code-Stand nur einmal. `main` baut ohne erneute Tests, wenn derselbe Stand schon als `dev` getestet wurde; ein Release-Tag auf denselben Commit wie `latest` baut nicht neu, sondern taggt `latest` um. Die Zuordnung steht als Label im Image (keine zusätzlichen Image-Tags in der Registry). Dockerfile: `SKIP_TESTS`, BuildKit-Caches für Go und npm.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Notizen: Formatierung innerhalb von fett, kursiv oder durchgestrichen wird angezeigt, z. B. fetter Inline-Code `**`services`**` (bisher standen Backticks im Text).
|
||||||
|
|
||||||
## [0.10.0] - 2026-10-30
|
## [0.10.0] - 2026-10-30
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -10,6 +10,13 @@ describe('renderInlineMarkdown', () => {
|
|||||||
expect(strong?.textContent).toBe('fettem');
|
expect(strong?.textContent).toBe('fettem');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('renders inline code inside bold text', () => {
|
||||||
|
const { container } = render(<div>{renderInlineMarkdown('Der Block **`services`** startet')}</div>);
|
||||||
|
const code = container.querySelector('strong code');
|
||||||
|
expect(code?.textContent).toBe('services');
|
||||||
|
expect(container.textContent).toBe('Der Block services startet');
|
||||||
|
});
|
||||||
|
|
||||||
it('renders italic text with <em> tag', () => {
|
it('renders italic text with <em> tag', () => {
|
||||||
const { container } = render(<div>{renderInlineMarkdown('Text mit *kursivem* Wort')}</div>);
|
const { container } = render(<div>{renderInlineMarkdown('Text mit *kursivem* Wort')}</div>);
|
||||||
const em = container.querySelector('em');
|
const em = container.querySelector('em');
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ function renderInlineTokens(text: string, options?: InlineMarkdownOptions): Reac
|
|||||||
}
|
}
|
||||||
} else if (token.startsWith('`') && token.endsWith('`')) {
|
} else if (token.startsWith('`') && token.endsWith('`')) {
|
||||||
elements.push(
|
elements.push(
|
||||||
<code key={key} className="px-1.5 py-0.5 rounded bg-panel-elevated text-accent font-mono text-[0.9em] border border-border/50">
|
<code key={key} className="px-1.5 py-0.5 rounded bg-code text-main font-mono text-[0.9em] border border-border/50">
|
||||||
{token.slice(1, -1)}
|
{token.slice(1, -1)}
|
||||||
</code>
|
</code>
|
||||||
);
|
);
|
||||||
@@ -96,7 +96,7 @@ function renderInlineTokens(text: string, options?: InlineMarkdownOptions): Reac
|
|||||||
) {
|
) {
|
||||||
elements.push(
|
elements.push(
|
||||||
<strong key={key} className="font-semibold text-main">
|
<strong key={key} className="font-semibold text-main">
|
||||||
{token.slice(2, -2)}
|
{renderInlineTokens(token.slice(2, -2), options)}
|
||||||
</strong>
|
</strong>
|
||||||
);
|
);
|
||||||
} else if (
|
} else if (
|
||||||
@@ -105,13 +105,13 @@ function renderInlineTokens(text: string, options?: InlineMarkdownOptions): Reac
|
|||||||
) {
|
) {
|
||||||
elements.push(
|
elements.push(
|
||||||
<em key={key} className="italic text-main/90">
|
<em key={key} className="italic text-main/90">
|
||||||
{token.slice(1, -1)}
|
{renderInlineTokens(token.slice(1, -1), options)}
|
||||||
</em>
|
</em>
|
||||||
);
|
);
|
||||||
} else if (token.startsWith('~~') && token.endsWith('~~')) {
|
} else if (token.startsWith('~~') && token.endsWith('~~')) {
|
||||||
elements.push(
|
elements.push(
|
||||||
<del key={key} className="line-through text-muted/80">
|
<del key={key} className="line-through text-muted/80">
|
||||||
{token.slice(2, -2)}
|
{renderInlineTokens(token.slice(2, -2), options)}
|
||||||
</del>
|
</del>
|
||||||
);
|
);
|
||||||
} else if (token.startsWith('[') && match[2] && match[3] && safeHref(match[3])) {
|
} else if (token.startsWith('[') && match[2] && match[3] && safeHref(match[3])) {
|
||||||
|
|||||||
Reference in new issue
Block a user