feat: add magic note tags and a two-pane notes layout
Keep the notes list beside the open note, compact the detail view with a full-width sticky toolbar, and make Back to overview return to a full-width all-notes grid. Add manual note tags with AND filtering, a tag manager for rename, merge and delete, schema 51 tag tables, and tag support in the note Agent tools.
This commit is contained in:
@@ -44,7 +44,7 @@ async function notesAnalysisRegression() {
|
||||
}
|
||||
throw new Error(`Timed out: ${predicate}`)
|
||||
}
|
||||
const button = (label: string, parent: ParentNode = host) => [...parent.querySelectorAll<HTMLButtonElement>('button')].find(node => node.textContent?.trim() === label)!
|
||||
const button = (label: string, parent: ParentNode = host) => [...parent.querySelectorAll<HTMLButtonElement>('button')].find(node => (node.getAttribute('aria-label') ?? node.textContent?.trim()) === label)!
|
||||
const click = async (label: string, parent: ParentNode = host) => {
|
||||
await wait(() => button(label, parent) && !button(label, parent).disabled)
|
||||
button(label, parent).click()
|
||||
@@ -77,7 +77,6 @@ async function notesAnalysisRegression() {
|
||||
await click('Save changes')
|
||||
await wait(async () => (await entry()).revision >= manualRevision + 2)
|
||||
const editedRevision = (await entry()).revision
|
||||
await click('Cancel')
|
||||
await wait(() => host.querySelector('.magic-note-composer'))
|
||||
await click('Canvas', host.querySelector('.magic-note-composer')!)
|
||||
const composer = () => host.querySelector<HTMLElement>('.magic-note-composer')!
|
||||
|
||||
Reference in New Issue
Block a user