feat(workspace): borderless code blocks, round code/audio/dictation blocks
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m15s

Code blocks lose border and header bar: language at the top left, a round
copy button at the bottom right on hover; converting back to text moves to
the bullet's action bubble (also for numbered items). Code, audio and
dictation blocks use fixed round corners whatever radius the theme sets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
sandrodachandClaude Opus 5.5 committed 2026-10-30 22:21:17 +01:00
1 parent e243e328c7
commit 546bcba666
7 files changed
+57 -83

No files matched your search

@@ -77,19 +77,14 @@ describe('CodeBlockEditor', () => {
expect(updates[0].lang).toBe('yaml');
expect(select.value).toBe('yaml');
// "Als Text" converts the code block back to a bullet
fireEvent.click(screen.getByRole('button', { name: 'Als Text' }));
expect(updates[updates.length - 1]?.type).toBe('bullet');
unmount();
// Reader view (!canEdit): shows plain text instead of <select> and hides "Als Text"
// Reader view (!canEdit): shows plain text instead of <select>
const readerView = render(
<CodeBlockEditor block={makeCodeBlock({ lang: 'yaml' })} canEdit={false} />
);
expect(readerView.container.querySelector('select')).toBeNull();
expect(readerView.getByText('yaml')).toBeTruthy();
expect(readerView.queryByText('Als Text')).toBeNull();
});
it('copies the code content to the clipboard and shows "Kopiert!" for 1.5s', () => {
@@ -108,14 +103,14 @@ describe('CodeBlockEditor', () => {
fireEvent.click(copyBtn);
expect(writeTextMock).toHaveBeenCalledWith('echo "hello world"');
expect(screen.getByText('Kopiert!')).toBeTruthy();
expect(screen.getByRole('button', { name: 'Kopiert!' })).toBeTruthy();
act(() => {
vi.advanceTimersByTime(1500);
});
expect(screen.queryByText('Kopiert!')).toBeNull();
expect(screen.getByText('Kopieren')).toBeTruthy();
expect(screen.queryByRole('button', { name: 'Kopiert!' })).toBeNull();
expect(screen.getByRole('button', { name: 'Kopieren' })).toBeTruthy();
});
it('indents by 2 spaces on Tab and outdents on Shift+Tab without indenting the bullet', () => {