From 08e0c5a6c7035d9ffcf0fc8900076b8df6912fa9 Mon Sep 17 00:00:00 2001 From: Richard Hightower Date: Wed, 9 Sep 2026 17:44:06 +0000 Subject: [PATCH 1/2] fix: keep the format toolbar fixed while the note scrolls 01M23KYWDKJPH89J1M3TSRM0DB Lock the shell to the viewport so a long note cannot grow the page. Header and format toolbar stay put; only the editor surface scrolls. --- .work/todo.jsonl | 3 ++ CHANGELOG.md | 6 +++ docs/.index/_graph.json | 13 +++++++ docs/.index/_inventory.json | 4 +- docs/.index/publish-manifest.json | 26 +++++++++++-- docs/.index/rendered/releases/v0.6.5.md | 13 +++++++ .../tickets/01M23KYWDKJPH89J1M3TSRM0DB.md | 9 +++++ docs/.index/rendered/traceability.md | 4 ++ docs/roadmap.md | 4 +- e2e/layout.spec.ts | 38 +++++++++++++++++++ src/components/Editor/index.tsx | 8 ++-- src/index.css | 28 +++++++++++--- wireframes/editor.md | 4 +- wireframes/layout.md | 4 +- wireframes/shell.md | 3 +- 15 files changed, 147 insertions(+), 20 deletions(-) create mode 100644 docs/.index/rendered/releases/v0.6.5.md create mode 100644 docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md diff --git a/.work/todo.jsonl b/.work/todo.jsonl index cd397ac..e2edf24 100644 --- a/.work/todo.jsonl +++ b/.work/todo.jsonl @@ -305,3 +305,6 @@ {"actor":"unknown","ev":"01M1PMWVS4Y84XCEVRHZ9QTNW1","item":"01M1PMS8ZBVHA4KDG1W0AX5CHM","op":"update","set":{"status":"in_progress"},"ts":"2026-09-04T16:44:11Z"} {"actor":"unknown","ev":"01M1PMXW2DFK433MTPNSCT0SDK","item":"01M1PMS8ZBVHA4KDG1W0AX5CHM","op":"close","set":{"resolution":"v0.6.4 changelog, Cargo.toml / Cargo.lock / tauri.conf bump, roadmap snapshot, index plane re-rendered. Tag and GitHub release after merge.","status":"done"},"ts":"2026-09-04T16:44:45Z"} {"actor":"richardhightower","ev":"01M1QN6CE0YV9CWFNA4BF0E0ZS","git":"95b9bae","item":"01M1QN6CE0P31CYJZFG7K9D3K7","op":"create","set":{"body":"Three releases shipped a frontend drag fix that could not work. Tauri 2 gates startDragging() behind core:window:allow-start-dragging, and core:default does not include it: core:window:default is 26 read-only queries plus allow-internal-toggle-maximize. Every drag call was rejected by the access control list and swallowed by an empty catch, so nothing was logged. The OS title bar that used to provide dragging for free went away when titleBarStyle became Overlay. Fix: grant allow-start-dragging and allow-toggle-maximize in the capability file, replace the empty catches with a one-time warning, and unit-test the grants.","discovered_during":"01M1MVB300KXXJPZ2XACH7A64K","kind":"bug","level":"task","milestone":"v0.6.4","priority":"P1","status":"todo","title":"Grant the window capability the overlay title bar needs for dragging","unplanned":true},"ts":"2026-09-05T02:08:38Z"} +{"actor":"unknown","ev":"01M23KYWDKPNTDM17MN8V6PX5B","item":"01M23KYWDKJPH89J1M3TSRM0DB","op":"create","set":{"body":"The format toolbar and the app header ride along when a long note scrolls. Lock the shell to the window, keep the toolbar (and find/Ask AI chrome) above the document, and scroll only the editor surface. Header and sidebar stay put. E2E: a tall note scrolls; toolbar and header Y do not change; window.scrollY stays 0.","discovered_during":"01M1MVB2ZZGP7FHW2TX6CNA6BE","kind":"bug","level":"task","milestone":"v0.6.5","priority":"P1","status":"todo","title":"Keep the format toolbar fixed while the note scrolls","unplanned":true},"ts":"2026-09-09T17:37:57Z"} +{"actor":"unknown","ev":"01M23KYYGPJ964ZQHPNMHYQHWN","item":"01M23KYWDKJPH89J1M3TSRM0DB","op":"update","set":{"status":"in_progress"},"ts":"2026-09-09T17:37:59Z"} +{"actor":"unknown","ev":"01M23M9Q6BPQ24HEJ2G8FRSZX3","item":"01M23KYWDKJPH89J1M3TSRM0DB","op":"close","set":{"resolution":"Shell locked to the viewport. Header and format toolbar stay put; only .editor-zoom scrolls. E2E asserts Y and window.scrollY.","status":"done"},"ts":"2026-09-09T17:43:52Z"} diff --git a/CHANGELOG.md b/CHANGELOG.md index a37d1b8..1a009e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to Motion are recorded here. Dates are UTC. ## Unreleased +### Fixed + +- **Format toolbar stays put.** A long note used to grow the window, so the + header and the Bold/Italic toolbar scrolled away with the document. The + shell is locked to the viewport; only the editor surface scrolls. + ## 0.6.4 — 2026-09-04 Editor fills the window; zoom scales notes not chrome; icon toolbar; header drag diff --git a/docs/.index/_graph.json b/docs/.index/_graph.json index cdef725..970f81c 100644 --- a/docs/.index/_graph.json +++ b/docs/.index/_graph.json @@ -905,6 +905,11 @@ "to": "release/v0.6.4", "type": "targets" }, + { + "from": "item/01M23KYWDKJPH89J1M3TSRM0DB", + "to": "release/v0.6.5", + "type": "targets" + }, { "from": "plan/2026-07-26-motion-next-phase", "to": "item/01KYFZ6RBH4J746JDANTQKYVSN", @@ -2114,6 +2119,11 @@ "status": "todo", "title": "Grant the window capability the overlay title bar needs for dragging" }, + "item/01M23KYWDKJPH89J1M3TSRM0DB": { + "doc_type": "item", + "status": "done", + "title": "Keep the format toolbar fixed while the note scrolls" + }, "plan/2026-07-26-motion-next-phase": { "doc_type": "plan", "source": "docs/plans/2026-07-26-motion-next-phase.md", @@ -2222,6 +2232,9 @@ "release/v0.6.4": { "doc_type": "release" }, + "release/v0.6.5": { + "doc_type": "release" + }, "roadmap": { "doc_type": "roadmap", "source": "docs/roadmap.md", diff --git a/docs/.index/_inventory.json b/docs/.index/_inventory.json index b823421..7bd3008 100644 --- a/docs/.index/_inventory.json +++ b/docs/.index/_inventory.json @@ -207,10 +207,10 @@ { "canonical_key": "roadmap", "doc_type": "roadmap", - "generated_at": "2026-09-05T02:08:38Z", + "generated_at": "2026-09-09T17:43:52Z", "slug": "roadmap", "source": "docs/roadmap.md", - "source_hash": "c2f509fd", + "source_hash": "e089aeff", "title": "Roadmap", "truth_state": "current", "wiki": "https://github.com/SpillwaveSolutions/motion/wiki/Roadmap", diff --git a/docs/.index/publish-manifest.json b/docs/.index/publish-manifest.json index ad11143..3bc273b 100644 --- a/docs/.index/publish-manifest.json +++ b/docs/.index/publish-manifest.json @@ -44,7 +44,7 @@ "frozen": false, "page_name": "Index-Traceability", "render": "as-is", - "render_hash": "50595a2f3ed5", + "render_hash": "aad72436dbf4", "source": "docs/.index/rendered/traceability.md", "title": "Traceability Index", "truth_state": "current", @@ -290,6 +290,16 @@ "truth_state": "shipped", "wiki_key": "release/v0.6.4" }, + { + "frozen": false, + "page_name": "Release-v0.6.5", + "render": "as-is", + "render_hash": "dd2860e74a62", + "source": "docs/.index/rendered/releases/v0.6.5.md", + "title": "Release v0.6.5", + "truth_state": "shipped", + "wiki_key": "release/v0.6.5" + }, { "frozen": false, "page_name": "Ticket-01KYDZ4A5HN1AZ7BN8Q2WV3XVN", @@ -1580,6 +1590,16 @@ "truth_state": "open", "wiki_key": "item/01M1QN6CE0P31CYJZFG7K9D3K7" }, + { + "frozen": false, + "page_name": "Ticket-01M23KYWDKJPH89J1M3TSRM0DB", + "render": "as-is", + "render_hash": "bd5f39aa1e2e", + "source": "docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md", + "title": "Keep the format toolbar fixed while the note scrolls", + "truth_state": "done", + "wiki_key": "item/01M23KYWDKJPH89J1M3TSRM0DB" + }, { "banner": "> **Current** \u2014 this is the living version; regenerated at 2026-07-29T23:00:00Z. Historical snapshots are linked from [[Index-Releases]].", "frozen": false, @@ -1669,11 +1689,11 @@ "wiki_key": "plan/2026-09-03-editor-surface-zoom-layout-icons" }, { - "banner": "> **Current** \u2014 this is the living version; regenerated at 2026-09-05T02:08:38Z. Historical snapshots are linked from [[Index-Releases]].", + "banner": "> **Current** \u2014 this is the living version; regenerated at 2026-09-09T17:43:52Z. Historical snapshots are linked from [[Index-Releases]].", "frozen": false, "page_name": "Roadmap", "render": "doc+banner", - "render_hash": "02417f3f7604", + "render_hash": "c0a79b7afa57", "source": "docs/roadmap.md", "title": "Roadmap", "truth_state": "current", diff --git a/docs/.index/rendered/releases/v0.6.5.md b/docs/.index/rendered/releases/v0.6.5.md new file mode 100644 index 0000000..6caf32c --- /dev/null +++ b/docs/.index/rendered/releases/v0.6.5.md @@ -0,0 +1,13 @@ +# Release v0.6.5 + +`release/v0.6.5` · **shipped** + +1 item(s) shipped. + +## Change Log + +- [[Ticket-01M23KYWDKJPH89J1M3TSRM0DB]] Keep the format toolbar fixed while the note scrolls — The format toolbar and the app header ride along when a long note scrolls. + +## Release Tree + +- [[Ticket-01M23KYWDKJPH89J1M3TSRM0DB]] Keep the format toolbar fixed while the note scrolls (task) diff --git a/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md b/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md new file mode 100644 index 0000000..c63388d --- /dev/null +++ b/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md @@ -0,0 +1,9 @@ +# Keep the format toolbar fixed while the note scrolls + +`01M23KYWDKJPH89J1M3TSRM0DB` · task/bug · **done** + +The format toolbar and the app header ride along when a long note scrolls. + +## Release + +- [[Release-v0.6.5]] diff --git a/docs/.index/rendered/traceability.md b/docs/.index/rendered/traceability.md index 3a2cf86..d9f0662 100644 --- a/docs/.index/rendered/traceability.md +++ b/docs/.index/rendered/traceability.md @@ -2,6 +2,10 @@ _The evidence chain: plan → item → ticket → code → release, forward and backward. Generated from `docs/.index/_graph.json`; do not edit._ +### Keep the format toolbar fixed while the note scrolls +`01M23KYWDKJPH89J1M3TSRM0DB` · status: done +- targets: release/v0.6.5 + ### Grant the window capability the overlay title bar needs for dragging `01M1QN6CE0P31CYJZFG7K9D3K7` · status: todo - targets: release/v0.6.4 diff --git a/docs/roadmap.md b/docs/roadmap.md index 24fe03e..143e78f 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -2,8 +2,8 @@ wiki_key: roadmap doc_type: roadmap truth_state: current -source_hash: c2f509fd -generated_at: 2026-09-05T02:08:38Z +source_hash: e089aeff +generated_at: 2026-09-09T17:43:52Z --- diff --git a/e2e/layout.spec.ts b/e2e/layout.spec.ts index 75e0921..959f804 100644 --- a/e2e/layout.spec.ts +++ b/e2e/layout.spec.ts @@ -102,3 +102,41 @@ test("mousedown on the logo does not start a text selection", async ({ page }) = const selected = await page.evaluate(() => window.getSelection()?.toString() ?? ""); expect(selected).toBe(""); }); + +test("scrolling a long note leaves the header and format toolbar in place", async ({ page }) => { + await gotoApp(page); + await page.setViewportSize({ width: 1200, height: 560 }); + const editor = page.locator(".ProseMirror"); + await expect(editor).toBeVisible(); + await editor.click(); + await page.keyboard.insertText( + Array.from({ length: 48 }, (_, i) => `Pad line ${i} so the note is taller than the window.`).join("\n\n"), + ); + + const header = page.locator(".app-header"); + const toolbar = page.locator(".editor-toolbar"); + const surface = page.getByTestId("editor-scroll"); + await expect(toolbar).toBeVisible(); + await expect(surface).toBeVisible(); + + const headerBefore = await header.boundingBox(); + const toolbarBefore = await toolbar.boundingBox(); + expect(headerBefore).toBeTruthy(); + expect(toolbarBefore).toBeTruthy(); + + await expect + .poll(async () => surface.evaluate((el) => el.scrollHeight - el.clientHeight)) + .toBeGreaterThan(200); + + await surface.evaluate((el) => { + el.scrollTop = 360; + }); + + await expect.poll(async () => surface.evaluate((el) => el.scrollTop)).toBeGreaterThan(200); + + const headerAfter = await header.boundingBox(); + const toolbarAfter = await toolbar.boundingBox(); + expect(headerAfter!.y).toBeCloseTo(headerBefore!.y, 0); + expect(toolbarAfter!.y).toBeCloseTo(toolbarBefore!.y, 0); + expect(await page.evaluate(() => window.scrollY)).toBe(0); +}); diff --git a/src/components/Editor/index.tsx b/src/components/Editor/index.tsx index 61989ed..c536ede 100644 --- a/src/components/Editor/index.tsx +++ b/src/components/Editor/index.tsx @@ -994,7 +994,7 @@ function Editor({ {toolbar} {findBar} {askAiPanel} -
+
-
+
-
+
@@ -1061,7 +1061,7 @@ function Editor({ {askAiPanel} {slashMenuPopup} {askAiBubble} -
+
diff --git a/src/index.css b/src/index.css index 2fbc295..e5cfac2 100644 --- a/src/index.css +++ b/src/index.css @@ -90,6 +90,8 @@ html { font-size: 16px; + height: 100%; + overflow: hidden; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -100,11 +102,13 @@ body { line-height: 1.6; color: var(--color-text-primary); background-color: var(--color-bg-primary); - min-height: 100vh; + height: 100%; + overflow: hidden; } #root { - min-height: 100vh; + height: 100%; + overflow: hidden; } /* Focus styles */ @@ -170,9 +174,9 @@ pre { display: grid; grid-template-columns: var(--sidebar-width) 1fr; grid-template-rows: var(--header-height) 1fr; - min-height: 100vh; + height: 100%; min-width: 0; - overflow-x: hidden; + overflow: hidden; } .app-header { @@ -185,6 +189,7 @@ pre { gap: var(--space-4); min-width: 0; user-select: none; + z-index: 10; } .app-header input { @@ -196,6 +201,7 @@ pre { background: var(--color-bg-secondary); border-right: 1px solid var(--color-border-primary); overflow: visible; + min-height: 0; padding: var(--space-4); } @@ -207,7 +213,9 @@ pre { .app-main { background: var(--color-bg-primary); - overflow-y: auto; + min-height: 0; + min-width: 0; + overflow: hidden; display: flex; flex-direction: column; } @@ -321,6 +329,7 @@ pre { width: 100%; min-width: 0; min-height: 0; + overflow: hidden; } /* CSS zoom on content only. Header chrome stays at the 16px root. */ @@ -331,6 +340,7 @@ pre { min-width: 0; display: flex; flex-direction: column; + overflow-y: auto; } .split-panes { @@ -488,6 +498,7 @@ pre { border: 1px solid var(--color-border-primary); border-radius: var(--radius-md); background: var(--color-bg-secondary); + flex-shrink: 0; } .find-bar input { @@ -528,7 +539,7 @@ pre { background: var(--color-bg-secondary); border-radius: var(--radius-lg); border: 1px solid var(--color-border-primary); - min-height: 400px; + min-height: 100%; } .tiptap-editor:focus-within { @@ -718,6 +729,10 @@ pre { border-bottom: none; border-radius: var(--radius-lg) var(--radius-lg) 0 0; flex-wrap: wrap; + flex-shrink: 0; + position: sticky; + top: 0; + z-index: 4; } .toolbar-divider { @@ -829,6 +844,7 @@ pre { display: flex; flex-direction: column; gap: var(--space-3); + flex-shrink: 0; } .ask-ai-chips { diff --git a/wireframes/editor.md b/wireframes/editor.md index 3c1ce9d..4c6a269 100644 --- a/wireframes/editor.md +++ b/wireframes/editor.md @@ -18,6 +18,7 @@ Edit one markdown note in WYSIWYG, raw Markdown, or Split without losing edits a | WYSIWYG: TipTap document (welcome or file) | | selection → floating Ask AI bubble | | tables are real cells, not pipe text | +| this pane scrolls; the toolbar above does not | | Markdown: labeled highlighted source (textarea + color layer) | | Split: TipTap | highlighted read-only markdown (two columns) | +-----------------------------------------------------------------+ @@ -34,7 +35,7 @@ Highlighted source -- see markdown-source.md. | Element | Type | Behavior / Notes | |---------|------|------------------| -| Format buttons | icon toolbar | Bold, Italic, Strike, Inline Code. aria-label from title. aria-pressed when active. | +| Format buttons | icon toolbar | Bold, Italic, Strike, Inline Code. aria-label from title. aria-pressed when active. Stays pinned while the note scrolls. | | Headings | H1 H2 H3 | Toggle | | Lists / quote | icons | Bullet, numbered, blockquote | | Code block / HR | icons | | @@ -68,6 +69,7 @@ Highlighted source -- see markdown-source.md. ## Acceptance Criteria - [ ] Toolbar is visible in all three view modes. +- [ ] Scrolling a long note does not move the format toolbar or the app header; only the document surface scrolls. - [ ] Every icon-only control has an aria-label (not title alone). - [ ] Save status is announced via role=status. - [ ] Cmd/Ctrl+S saves the current file (header Save note is the visible control). diff --git a/wireframes/layout.md b/wireframes/layout.md index b249b08..6613a69 100644 --- a/wireframes/layout.md +++ b/wireframes/layout.md @@ -29,7 +29,9 @@ Split default 50/50, clamp 25–75% of the editor column. | Settings | config | `sidebarWidth` (px) and `splitRatio` (0–1) next to `zoom` in `settings.json`, through `settingsClient.ts`. Debounced 500ms. Unknown keys preserved. | ## States -- **Default**: sidebar 280px, split 50/50, editor fills the main column. +- **Default**: sidebar 280px, split 50/50, editor fills the main column. The + shell is locked to the window; a long note scrolls inside the editor + surface, not the page. - **Dragging**: live CSS update; persist after debounce. - **Reload**: last saved widths apply. - **Narrow (~768px)**: sidebar column is 0; handle is not shown; Notes drawer is unchanged. diff --git a/wireframes/shell.md b/wireframes/shell.md index 9bd51f0..0f39794 100644 --- a/wireframes/shell.md +++ b/wireframes/shell.md @@ -23,7 +23,8 @@ Give the user a workspace of markdown notes they can find by **filename or conte ``` Header action buttons are **icon-only** with the same accessible names as -before (aria-label + title). WYSIWYG / Markdown / Split stay text. +before (aria-label + title). WYSIWYG / Markdown / Split stay text. The header +does not scroll with the note. Sidebar is a **collapsible directory tree** of every .md under the workspace (not a flat list). Folders show relative path segments; files show basename. Sort is name-only within each folder. Trailing edge is a resize handle (see layout.md). From 757a1338bef857a2053261d6f90fb49becbc1558 Mon Sep 17 00:00:00 2001 From: Richard Hightower Date: Wed, 9 Sep 2026 17:44:21 +0000 Subject: [PATCH 2/2] chore: link PR 60 on sticky toolbar work item 01M23KYWDKJPH89J1M3TSRM0DB --- docs/.index/_graph.json | 8 ++++++++ docs/.index/item/01M23KYWDKJPH89J1M3TSRM0DB.yml | 2 ++ docs/.index/publish-manifest.json | 16 +++++++++++++--- docs/.index/rendered/prs/60.md | 13 +++++++++++++ docs/.index/rendered/releases/v0.6.5.md | 4 ++++ .../tickets/01M23KYWDKJPH89J1M3TSRM0DB.md | 4 ++++ docs/.index/rendered/traceability.md | 1 + 7 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 docs/.index/item/01M23KYWDKJPH89J1M3TSRM0DB.yml create mode 100644 docs/.index/rendered/prs/60.md diff --git a/docs/.index/_graph.json b/docs/.index/_graph.json index 970f81c..a0b39d3 100644 --- a/docs/.index/_graph.json +++ b/docs/.index/_graph.json @@ -905,6 +905,11 @@ "to": "release/v0.6.4", "type": "targets" }, + { + "from": "item/01M23KYWDKJPH89J1M3TSRM0DB", + "to": "pr/60", + "type": "lands-in" + }, { "from": "item/01M23KYWDKJPH89J1M3TSRM0DB", "to": "release/v0.6.5", @@ -2211,6 +2216,9 @@ "pr/58": { "doc_type": "pr" }, + "pr/60": { + "doc_type": "pr" + }, "release/v0.1.0": { "doc_type": "release" }, diff --git a/docs/.index/item/01M23KYWDKJPH89J1M3TSRM0DB.yml b/docs/.index/item/01M23KYWDKJPH89J1M3TSRM0DB.yml new file mode 100644 index 0000000..d069975 --- /dev/null +++ b/docs/.index/item/01M23KYWDKJPH89J1M3TSRM0DB.yml @@ -0,0 +1,2 @@ +code: + - {pr: 60} diff --git a/docs/.index/publish-manifest.json b/docs/.index/publish-manifest.json index 3bc273b..2930b1d 100644 --- a/docs/.index/publish-manifest.json +++ b/docs/.index/publish-manifest.json @@ -44,7 +44,7 @@ "frozen": false, "page_name": "Index-Traceability", "render": "as-is", - "render_hash": "aad72436dbf4", + "render_hash": "eeeace256963", "source": "docs/.index/rendered/traceability.md", "title": "Traceability Index", "truth_state": "current", @@ -220,6 +220,16 @@ "truth_state": "not tracked", "wiki_key": "pr/58" }, + { + "frozen": false, + "page_name": "PR-60", + "render": "as-is", + "render_hash": "0fdc515063ea", + "source": "docs/.index/rendered/prs/60.md", + "title": "PR #60", + "truth_state": "not tracked", + "wiki_key": "pr/60" + }, { "frozen": false, "page_name": "Release-v0.1.0+dogfood", @@ -294,7 +304,7 @@ "frozen": false, "page_name": "Release-v0.6.5", "render": "as-is", - "render_hash": "dd2860e74a62", + "render_hash": "50c218fec82e", "source": "docs/.index/rendered/releases/v0.6.5.md", "title": "Release v0.6.5", "truth_state": "shipped", @@ -1594,7 +1604,7 @@ "frozen": false, "page_name": "Ticket-01M23KYWDKJPH89J1M3TSRM0DB", "render": "as-is", - "render_hash": "bd5f39aa1e2e", + "render_hash": "431ad35d7186", "source": "docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md", "title": "Keep the format toolbar fixed while the note scrolls", "truth_state": "done", diff --git a/docs/.index/rendered/prs/60.md b/docs/.index/rendered/prs/60.md new file mode 100644 index 0000000..2af0451 --- /dev/null +++ b/docs/.index/rendered/prs/60.md @@ -0,0 +1,13 @@ +# PR #60 + +`pr/60` · status: **not tracked** + +Changed files: not tracked. Test/Review status: not tracked (see the deferred PR live-metadata sync item). + +## Linked Tickets + +- [[Ticket-01M23KYWDKJPH89J1M3TSRM0DB]] Keep the format toolbar fixed while the note scrolls — The format toolbar and the app header ride along when a long note scrolls. + +## Related Releases + +- [[Release-v0.6.5]] diff --git a/docs/.index/rendered/releases/v0.6.5.md b/docs/.index/rendered/releases/v0.6.5.md index 6caf32c..8a1f81d 100644 --- a/docs/.index/rendered/releases/v0.6.5.md +++ b/docs/.index/rendered/releases/v0.6.5.md @@ -11,3 +11,7 @@ ## Release Tree - [[Ticket-01M23KYWDKJPH89J1M3TSRM0DB]] Keep the format toolbar fixed while the note scrolls (task) + +## Related PRs + +- [[PR-60]] diff --git a/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md b/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md index c63388d..8c2bdde 100644 --- a/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md +++ b/docs/.index/rendered/tickets/01M23KYWDKJPH89J1M3TSRM0DB.md @@ -4,6 +4,10 @@ The format toolbar and the app header ride along when a long note scrolls. +## Linked PRs + +- [[PR-60]] + ## Release - [[Release-v0.6.5]] diff --git a/docs/.index/rendered/traceability.md b/docs/.index/rendered/traceability.md index d9f0662..8f16166 100644 --- a/docs/.index/rendered/traceability.md +++ b/docs/.index/rendered/traceability.md @@ -4,6 +4,7 @@ _The evidence chain: plan → item → ticket → code → release, forward and ### Keep the format toolbar fixed while the note scrolls `01M23KYWDKJPH89J1M3TSRM0DB` · status: done +- lands-in: pr/60 - targets: release/v0.6.5 ### Grant the window capability the overlay title bar needs for dragging