fix(markdown): formatting inside bold/italic/strike, monochrome inline code
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:
sandrodachandClaude Opus 5.5 committed 2026-10-30 22:13:55 +01:00
1 parent 05355989a8
commit e243e328c7
3 files changed
+15 -4

No files matched your search

+4
View File
@@ -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).
### 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).
- 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.
@@ -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.
- 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
### Added
@@ -10,6 +10,13 @@ describe('renderInlineMarkdown', () => {
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', () => {
const { container } = render(<div>{renderInlineMarkdown('Text mit *kursivem* Wort')}</div>);
const em = container.querySelector('em');
+4 -4
View File
@@ -86,7 +86,7 @@ function renderInlineTokens(text: string, options?: InlineMarkdownOptions): Reac
}
} else if (token.startsWith('`') && token.endsWith('`')) {
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)}
</code>
);
@@ -96,7 +96,7 @@ function renderInlineTokens(text: string, options?: InlineMarkdownOptions): Reac
) {
elements.push(
<strong key={key} className="font-semibold text-main">
{token.slice(2, -2)}
{renderInlineTokens(token.slice(2, -2), options)}
</strong>
);
} else if (
@@ -105,13 +105,13 @@ function renderInlineTokens(text: string, options?: InlineMarkdownOptions): Reac
) {
elements.push(
<em key={key} className="italic text-main/90">
{token.slice(1, -1)}
{renderInlineTokens(token.slice(1, -1), options)}
</em>
);
} else if (token.startsWith('~~') && token.endsWith('~~')) {
elements.push(
<del key={key} className="line-through text-muted/80">
{token.slice(2, -2)}
{renderInlineTokens(token.slice(2, -2), options)}
</del>
);
} else if (token.startsWith('[') && match[2] && match[3] && safeHref(match[3])) {