feat: refine notes workspace and add canvas zoom
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Simplify sidebar selection and note record framing, compact the empty composer, and emphasize note titles. Replace redundant AI comment headings with an accessible panel toggle. Add view-only canvas zoom and fit width, correct PDF import/export icons, and allow image files up to 20 MiB. Include regression coverage and updated design documentation. Release note: Notes have clearer navigation and a more compact writing area. Canvases support zoom and fit width, and image imports accept files up to 20 MiB.
This commit is contained in:
@@ -219,6 +219,22 @@ describe('production preload -> registered IPC -> SQLite canvas persistence', ()
|
||||
expect(await api.get(note.id)).toEqual(saved)
|
||||
})
|
||||
|
||||
it('saves and reopens a 20 MiB canvas image through create and update IPC', async () => {
|
||||
const content = canvas()
|
||||
const bytes = Buffer.alloc(20 * 1024 * 1024)
|
||||
Buffer.from(png.split(',')[1]!, 'base64').copy(bytes)
|
||||
content.assets[0]!.dataUrl = `data:image/png;base64,${bytes.toString('base64')}`
|
||||
const note = await api.create({ title: 'Large canvas image' })
|
||||
const created = await api.createEntry({ noteId: note.id, content })
|
||||
await reopen()
|
||||
const entry = (await api.get(note.id)).entries.find(item => item.id === created.createdEntryId)!
|
||||
expect(entry.content).toEqual(content)
|
||||
content.flow!.ops[0] = { insert: 'Edited large image note' }
|
||||
await api.updateEntry({ entryId: entry.id, expectedRevision: entry.revision, content })
|
||||
await reopen()
|
||||
expect((await api.get(note.id)).entries.find(item => item.id === entry.id)!.content).toEqual(content)
|
||||
})
|
||||
|
||||
it('preserves a real generated PDF and all page references through three reopen/save cycles', async () => {
|
||||
const { jsPDF } = await import('jspdf')
|
||||
const pdf = new jsPDF()
|
||||
|
||||
Reference in New Issue
Block a user