The workspace
BetaYou get an IDE-shaped workspace for notes, charts, whiteboards, file previews, and meetings: a file tree, tabbed and split editors, and a command palette that ties it together.
Resize panels
Drag the divider between panels to give either side more room. You can also focus a divider with Tab and use the arrow keys to resize it; Home and End move it to its size limits. This works for the Files sidebar, split editors, Assistant and its terminal, utility panels, Workflows, and Meetings.
You can also resize the conversation and preview in Plugin Builder, Settings navigation, plugin settings pages, the History timeline and detail view, and the relationship explorer's graph and details. These splits remember your chosen sizes on this device, with separate preferences for side-by-side and stacked layouts. Window resizing may temporarily limit a panel's size without replacing your saved preference.
Drag the right edge of the chart Shapes library or the left edge of the whiteboard library to change its width, including when it floats over the canvas. These widths are remembered on this device. The chart library still fills its pane in compact mode and restores your preferred width when space allows. Panel size preferences do not sync between devices.
Window header and focus mode
At the top of the window, the current vault menu sits on the left. When a note is open, its folder path appears next to the menu as clickable segments you can jump to. Open the vault menu and choose Copy Root Path when you need the vault's absolute filesystem path. On the right, use Search, New tab (+), and the Enter focus mode / Show side panels button. Note-specific actions show up only when a note is the active document, so a chart, whiteboard, or another workspace tab doesn't inherit note commands.
When both side panels are open, Enter focus mode collapses the left workspace rail and the right-side panels so the active editor can use the full window. Whenever either side panel is hidden, the button becomes Show side panels: one click exits focus mode and opens both the file sidebar and the selected right-hand panel, including a sidebar closed with Cmd/Ctrl+B. Previously closed optional utility panels stay closed.
The Toggle Focus Mode command and keyboard shortcuts retain the previous panel layout: exiting focus mode through those controls restores panels that were open before entering it and leaves manually collapsed panels closed.
File tree
The file tree shows your local vault structure. Use it to move between notes and folders, create files and folders, rename or move visible items, and soft-delete them into the app-managed trash area. Wrengle's internal and hidden files remain protected and do not appear in the tree.
While the left sidebar is open, changing the active note, chart, or whiteboard expands its parent folders and scrolls the matching file-tree row into view. A collapsed sidebar and focus mode stay closed; when you show the sidebar again, it catches up to the active document. App-owned tabs such as Graph view and Workflows do not select a vault file.
The same New tab (+) menu appears in the window header, the Files header, and every editor tab strip. Open it for New note, New chart, New whiteboard, Graph view, Workflows, and Plugin Builder. A note, chart, or whiteboard you create from this shared menu lands in the configured default note folder; use a folder's own context menu when you want to create and rename an item inside that specific folder.
When you create an item from the file tree's context menu, its name is selected in place. Type to replace the default name, then press Enter or click elsewhere to save it. Press Escape to keep the default name.
Select and manage items
Click a file row to select and open it. The open document has its own highlight, separate from the rows selected for file actions. Cmd-click toggles individual rows; Shift-click selects a range of visible rows. Right-click an unselected row to act on it, or right-click a selected row to keep the current group. When you collapse a folder, rows hidden inside it leave the selection.
With the tree focused, use Up and Down to move between visible rows, Right and Left to expand or collapse folders, and Home, End, or typing a name to jump to a row. Press Space to select a row, or hold Shift while moving to extend the selection. Enter opens a file or toggles a folder. F2 renames the focused item; Delete moves the selected items to Trash.
Use Move to… or drag a selected row within the tree to move the selected group; dragging an unselected row moves only that row. A selected folder already includes its contents, so selected descendants are not moved or deleted twice. Move destinations exclude folders that cannot accept the whole group. Group deletion always asks for confirmation; the single-item confirmation follows your existing preference. Group moves run one item at a time. If one fails, Wrengle stops, reports what moved and what remains, and keeps unfinished items selected so you can retry.
Drag files and folders
Drag files, folders, or several selected items from Finder onto the file tree
to copy them into the current vault. Drop onto a folder to copy them into that
folder. Dropping onto a file uses that file's parent folder, and dropping into
blank space in the tree uses the vault root. Wrengle never removes the Finder
source. If a name already exists, the imported item is kept alongside it with
a numbered name such as Report (2).pdf; folders are renamed as a whole and
are never merged into an existing folder.
Drag a file or folder row out through the edge of the Wrengle window to copy it to Finder or another macOS application. Wrengle saves dirty open documents covered by the selection before the native drag starts; if a document cannot be saved safely, the export is cancelled and the vault is left unchanged. Dragging within the tree remains a move rather than a copy.
Imports copy regular file bytes and folder structure. Hidden entries and filesystem links or other special entries are skipped, and permissions, extended attributes, and resource forks are not reproduced. Imports and exports show errors without overwriting existing vault content. Arbitrary imported files stay local to this computer; existing sync behavior still applies to supported notes, charts, whiteboards, and managed assets.
Renaming or moving a generic attachment does not rewrite links to that file in your notes, so update those links yourself. Folders inside the managed Notes, Projects, and People roots cannot be dragged across the managed-root boundary; move their individual generic files instead.
File previews
Open a file from the vault tree or a local attachment in a note to view it in a workspace tab. Click a file attachment's name, or choose Open File Preview from an image, file, audio, or video block's side menu. Previews are read-only. They do not convert files into notes, save edits, or add their content to the assistant's note context. Attachments and other user folders are visible alongside the editable note folders; Wrengle's internal and hidden files stay out of the tree. Preview content stays read-only in its viewer, but its file-tree entry can be renamed, moved, copied out, or soft-deleted.
| Format | Controls |
|---|---|
| Pages, printed page labels, document outline, page links, zoom, selectable text, search, and a password prompt when needed | |
| HTML / HTM | Full-bleed interactive rendering with scripts and online HTTPS resources; temporary Find bar |
| PNG, JPEG, GIF, WebP, SVG | Zoom and fit to the available space |
| Text and code | Read-only text, line numbers, wrapping, find, and Go to line |
| CSV / TSV | Paged tables, find, Go to row, optional headers and delimiter selection; values stay as text |
| Audio and video | Playback and seeking for codecs supported by your computer |
For previews other than HTML, use Refresh in the preview toolbar after changing a file outside Wrengle. This rescans the tree and reloads the preview; missing files show an unavailable state with Refresh available to retry. HTML previews reload when Wrengle observes a new file revision; close and reopen the tab to force a fresh preview session. Refresh file list above the tree rescans the file list without reloading existing preview content. Preview tabs can be moved between panes and restored when you reopen the workspace. Opening a preview never automatically launches another application.
With Reopen last session enabled, open preview tabs remember their positions and view settings across restarts: PDF page and zoom, image zoom and scroll, HTML scroll position, text position and wrapping, CSV position and header/delimiter choices, and media playback position. Media resumes paused. Closing the last tab for a file forgets its position. Split panes can show different positions; the last interacted view of a file supplies its remembered position. Searches and passwords are not saved in the workspace snapshot.
Finding and navigating preview content
Focus a PDF, HTML, text, or CSV preview and press Cmd/Ctrl+F to focus its search field. In an HTML preview, this opens a temporary Find bar over the full-bleed page and searches its rendered text. HTML, text, and CSV find use literal, case-insensitive matching. Enter and Shift+Enter move between matches; Escape clears search and returns focus to the preview. Go to line and Go to row jump directly to a source line or parsed CSV record. If an HTML page reloads itself repeatedly in a few seconds, Find pauses and shows a notice; reopen the tab to retry.
CSV and TSV values remain strings, including leading zeros and formula-like text. First row as headers changes only the presentation: blank and duplicate headings remain intact, and source record numbers do not change. Choose Auto, Comma, Tab, Semicolon, or Pipe in Delimiter. CSV defaults to Comma and TSV to Tab; Auto displays the detected delimiter. The 10,000-record preview limit includes the optional header row. Find covers the loaded records and displayed columns, with truncation stated beside the controls.
PDFs with a document outline offer a Contents panel. Printed page labels
appear alongside physical page numbers when available. Copy page link
copies a Markdown link to the current physical page. A local link such as
[Report](reports/report.pdf#page=12) opens that page even when the PDF is
already open. A page link takes precedence over the remembered position.
Interactive HTML previews
HTML opens full-bleed directly below the tab strip, without a preview toolbar
or resource controls. Its Find bar appears only while searching. Each preview
runs JavaScript in an isolated frame from an immutable snapshot of the HTML
file. It cannot read sibling files or other vault
content, so a page must be self-contained or load its scripts, styles, fonts,
images, media, and data over HTTPS. Self-contained bundles can create embedded
pages and scripts from in-memory Blob URLs and compile JavaScript at runtime
(for example, with new Function). Embedded pages share the preview's sandbox
and cannot load external pages. Find and saved scroll positions apply to the
outer page, not to its embedded pages.
When an external editor or AI agent changes an open HTML file, Wrengle waits
briefly and coalesces nearby writes before refreshing the preview. The refreshed
page keeps the previous top-level horizontal and vertical scroll position, or
the nearest valid position if the updated page is shorter.
Each HTML path gets a stable, origin-bound browser-storage scope. localStorage
and IndexedDB therefore survive preview reloads, closing and reopening the tab,
and app restarts on the same installation. Another HTML path or vault gets a
different scope. Renaming or moving a file, or moving the vault, starts a new
scope; deleting and later recreating the same path can reuse its previous scope.
This state lives in the system webview's app data, not in the vault, so vault
sync and vault backups do not include it.
Normal browser CORS restrictions still apply, so some online APIs will not work;
Wrengle does not proxy requests around those restrictions. Scripts, including
online libraries loaded by the page, can send page content and other data
available inside the preview to HTTPS services. They cannot access Wrengle's
editor, app storage, native commands, or local sibling files. Forms and popups
are disabled. Links to sections in the same page work, while navigation to
other pages remains blocked. This interactive preview is separate from HTML
preserved inside a Markdown note, which remains inert.
WebKit can share a cookie deliberately set with Domain=localhost between
sibling preview hosts, so cookie isolation is not guaranteed. Do not treat HTML
from an untrusted source as a safe place for secrets.
Find selects matches inside the page. Scripts in that HTML can observe a selected
match and infer the matching search term.
Preview limits
HTML is limited to 6 MiB, text to 5 MiB, CSV/TSV to 10 MiB and 10,000 rows, images to 64 MiB and 40 million pixels, and PDFs/audio/video to 2 GiB. Tables show up to 200 rows per page and at most 500 columns, and indicate truncated data. Wide tables use fewer rows to keep each page within 10,000 data cells (20 rows for 500 columns). Text shows 500 lines per page; find searches the whole loaded file. Individual lines or cells longer than 32,768 characters display a labeled text window with previous/next controls. Search still covers the full loaded value and shows the window containing the active match. Unsupported formats, codecs, and damaged files display an explanation. Office documents, source editing, PDF annotation, and OCR are not supported. Text-based previews require UTF-8 encoding.
Previews read files already in the vault; there is no separate picker for previewing files outside it. This feature does not add attachment syncing: see Sync for what is copied between computers.
Editor
Write in an editor built for structured notes without giving up local file ownership: the content model is deliberately constrained so a note can round-trip through Markdown plus sidecar data safely. In a short note, click the blank canvas below the final block to focus the editor and place your cursor at the end of the note. When a note ends in a table or another block with no trailing text position, Wrengle adds an empty paragraph after it and places your cursor there.
Markdown paste compatibility
Paste Markdown from anywhere and Wrengle parses it as CommonMark with GitHub
Flavored Markdown (GFM), importing ATX and Setext headings, paragraphs,
CommonMark hard line breaks, thematic breaks, block quotes, bullet and numbered
lists, task lists, backtick- or tilde-delimited and indented code, emphasis,
strong text, strikethrough, inline code, safe links, and unaligned GFM tables
into editable blocks. Table cells can contain emphasis, strong text,
strikethrough, inline code, and safe links. When inline code is nested inside
another style, code takes precedence: for example, **`value`** imports
as code-only text, while surrounding text keeps its own formatting.
Links inside editable tables use the same safe destination allowlist as other
pasted Markdown: https:, http:, and mailto:. Table alignment, hard line
breaks, images, raw HTML, titled or reference links, relative destinations,
unsafe destinations, action: links, and formatted runs whose text begins or
ends with whitespace remain unsupported. Keep boundary spaces in a separate
unstyled run. If any cell uses unsupported syntax, Wrengle preserves the whole
table as one inert source block instead of partially converting it. Rare
delimiter-adjacent formatting that cannot be proven lossless across Wrengle's
Markdown codecs is preserved the same way.
A trailing backslash, two trailing spaces, or an exact inline <br> creates a
line break inside the same paragraph, equivalent to pressing Shift+Enter in
the editor. Saving normalizes ordinary hard breaks to the trailing-backslash
form. A break at the end of a paragraph, or in a paragraph whose surrounding
container needs normalization, uses Wrengle's reserved
<br data-wrengle-hard-break="\q"> storage form so it stays lossless. Existing
literal <br> text remains literal. A saved paragraph can contain at most
4,096 hard line breaks; larger inputs remain inert or are refused at the save
boundary rather than being partially converted. Other inline HTML remains
unsupported. As a narrow literal-text exception, Wrengle imports the exact
placeholder <reason text> as editable text when it appears in prose or a
supported Markdown container. Saving escapes the opening angle bracket so the
visible placeholder reopens unchanged. Other angle-bracket tokens, standard
HTML, custom elements, and standalone tag-shaped source remain inert.
CommonMark's zero-to-three-space block indentation is supported, so headings
and lists copied with two leading spaces stay structured. Simple loose lists
and list items with continuation paragraphs also stay editable, and
continuation paragraphs remain ordered with any nested lists under their
owning item. YAML or TOML frontmatter is preserved as inert source rather
than mistaken for headings, dividers, or note metadata. Wrengle parses
ordinary text/plain as Markdown only when the pasted text contains Markdown
structure; otherwise it stays ordinary prose. A complete, valid JSON object or
array is the exception: compact and multiline JSON paste as one verbatim code
block with the json language, preserving indentation, line breaks, and
wildcard characters. Within the parser's work limits, JSON primitives and
invalid JSON keep the ordinary prose/Markdown behavior. JSON-shaped input that
is extremely deep or high-cardinality is preserved in an unlabelled verbatim
code block instead of being parsed into an in-memory value graph. This detection
limit doesn't apply inside an existing code block, where JSON-shaped text is
inserted literally at the selection. More generally, when both ends of the
selection are in the same existing code block, readable clipboard
text/plain takes precedence over Markdown, editor metadata, editor-native
HTML, and styled web HTML. Wrengle inserts that text into the current code
block without changing its ID or language. Spaces (including one or more at
the end), tabs, and line breaks are preserved; CRLF and lone CR line endings
are normalized to LF, and the usual clipboard control-character sanitization
still applies. A selection spanning more than one code block uses the normal
paste rules instead. If the current container can't hold the resulting
structured block, such as a table cell or restricted nested list, Wrengle
inserts a sanitized literal fallback without interpreting it as Markdown; that
container still controls its line layout. If the clipboard also supplies safe
structured HTML, valid plain-text JSON takes precedence;
otherwise the richer HTML representation wins over plain text that would be
entirely inert source.
When Wrengle opens recovery content created by an older version, it upgrades untouched raw-source hard-break paragraphs automatically only when the result still matches the current Markdown file exactly. Recovery content with later edits or any mismatch is left unchanged.
The editor schema can't represent every CommonMark or GFM distinction without
losing information, so Wrengle preserves each unsupported top-level
container as an inert, verbatim source block while continuing to import
supported neighboring containers. Examples include raw HTML other than the
supported hard-break forms, footnotes and reference definitions, titled or
unsupported links, multi-paragraph quotes, ordered lists that start somewhere
other than 1, list items containing unsupported block types, code-block
language metadata, remote or inline images, and tables with alignment or cell
content outside the supported subset above.
These source blocks stay inert across save and reopen, and the editor
doesn't rich-format them. In the Markdown file, Wrengle normally surrounds
each verbatim source span with invisible wrengle:raw HTML comments so
malformed syntax and anchor-looking text can't become active after an edit;
the source between those comments stays unchanged. Complete backtick- or
tilde-delimited or toggle containers already inside a matched Wrengle-managed
report or workflow region keep their original container bytes instead. For a
metadata-backed managed region, Wrengle first verifies that the complete body
can be edited and serialized byte-for-byte; if not, it preserves that body as
one inert source block, which keeps the backend body hash valid during
unrelated note edits. Wrengle sanitizes clipboard control characters and
intentionally removes its own block anchors before preserving source.
Wrengle never executes HTML or activates links in a source block — but
another Markdown renderer may interpret that source after the file leaves
Wrengle, so review preserved HTML and links before publishing the note
elsewhere.
These parser improvements apply when Wrengle newly parses or imports the
Markdown. Existing content already enclosed by wrengle:raw markers is not
automatically upgraded: its source frame remains inert and byte-preserved
across save and reopen. To use newer parsing support for that content, import
the original source again as new content.
Every non-empty paste into an editable note with remaining file capacity
inserts a saveable result. Wrengle first imports supported Markdown, the
editor's own rich HTML format or plain web HTML, and VS Code clipboard data
as structured blocks. Valid plain-text JSON objects and arrays become one
verbatim JSON code block before generic Markdown or web HTML conversion; VS
Code metadata, editor-native HTML, and explicit text/markdown remain
authoritative outside the same-code-block plain-text exception described
above. When native clipboard HTML would flatten a list, Wrengle can restore
matching list items from Markdown or semantic HTML while retaining existing
inline formatting. Each block's text and position must match; this recovery
does not introduce links from another clipboard format. Common copy artifacts
such as terminal-style nested numbering,
blank lines inside tables, and obvious broken emphasis are normalized during
import. Web and editor-native HTML are reduced to an
attribute-free set of text, list, table, and formatting elements before
import; resource URLs, event handlers, styles, embedded content, and
app-internal block metadata are discarded. Pasted managed-region metadata and
hashes are never installed as authoritative note controls. When a clipboard
selection consists exactly of report metadata, its visible report body, and
the terminal report marker, Wrengle discards that control wrapper and
imports the visible body as ordinary editable Markdown. Pasting a
byte-matching selection at an empty insertion point inside the same
single-raw-block degraded report replaces that raw body while
retaining the note's existing report boundaries. A valid report-tail selection that
does not match the degraded body is inserted normally
without replacing existing content. Malformed, partial, and full-region control wrappers remain inert.
If a structured result still cannot be saved safely, Wrengle
inserts its visible text as ordinary paragraphs instead.
Deeply nested or unusually syntax-dense Markdown that exceeds the structured parser's work limits is inserted in full as literal plain text, with a formatting-degraded notice, when it fits the note. File-only, image-only, opaque, inaccessible, whitespace-only, control-only, oversized, and unusually high-line-count clipboard payloads receive a visible plain-text placeholder, so a handled paste doesn't disappear silently while the note has capacity. File and image clipboard data isn't uploaded by this path; use the media insertion controls to copy a local asset into the vault. When a file placeholder includes metadata, only the sanitized basename and MIME type are written into the note and sync like other note text; source directory paths are discarded. Wrengle caps the aggregate clipboard representations it will hold, and checks the prospective Markdown file (including retained frontmatter) and editor sidecar independently against the vault's 16 MiB per-file limit before committing the paste and again at the final save boundary. If a note is already too close to that limit to hold even the short fallback placeholder, Wrengle leaves it unchanged and reports the capacity error; shorten the note before pasting more.
Well-formed terminal tables that use light Unicode box-drawing borders (┌,
┬, │, ├, ┼, └, and related closing characters) are converted into
editable tables; malformed layouts and other border families remain plain
text. Generic pasted Markdown links become active links only for https:,
http:, and mailto: destinations. Other destinations — including
javascript:, data:, file:, relative paths, and action: — remain inert
source. Pasted markers or block anchors are not treated as authority to
activate an action: reference. Action references created by an explicit
Wrengle integration can persist in an existing structured block, but they
never launch an operating-system protocol handler, and running an action
remains an explicit, consented Wrengle operation. If pasted content includes
Wrengle block anchors like ^block-id, Wrengle regenerates internal block
IDs instead of reusing anchors from the source note. Only standalone images
under vault-relative assets/images/ paths become image blocks; inline,
remote, data, absolute, traversal, malformed, or non-round-trippable image
syntax remains inert source and is never fetched by the paste importer.
Notes are temporarily read-only while an AI edit preview is active, because
preview blocks aren't persistable user content; accept or discard the
preview before pasting or typing.
If a concurrent edit reaches unaccepted AI text while an AI write is pending, Wrengle recovers only the added text it can distinguish from that private preview, as plain paragraphs. Formatting, structure, and characters shared with the preview may be omitted from this recovery.
Arrange open notes in tabs and split editor panes. Tab actions include close variants, copying a path, revealing the file in the system file manager, and revealing it in the project panel.
Notes auto-save every 15 seconds by default. Change the interval or turn autosave off under Settings → General → Autosave. Autosave writes the current file without creating a version-history checkpoint; press Cmd+S on macOS or Ctrl+S on Windows/Linux to save dirty notes and commit the version checkpoint explicitly.
Press Cmd+Z on macOS or Ctrl+Z on Windows/Linux while the editor is focused to undo note edits, and Cmd+Shift+Z or Cmd+Y on macOS or Ctrl+Shift+Z or Ctrl+Y on Windows/Linux to redo them. The desktop Edit menu routes Undo and Redo to the focused note editor when a note has focus. Press Cmd+A on macOS or Ctrl+A on Windows/Linux to select the full note contents.
An AI edit becomes one undo step after Wrengle confirms that the accepted content was written. Undo reverses that accepted edit while retaining your earlier edits and unrelated changes received through sync; redo reapplies the accepted edit. Preview revisions, rejected proposals, and disk reloads do not enter the note's undo history. A disk reload becomes the new baseline and clears older note undo entries.
Press Cmd+F on macOS or Ctrl+F on Windows/Linux to find literal text within the focused note; Enter moves to the next match, Shift+Enter moves to the previous match, and Escape closes the find bar. Expand the replace row from that bar, or press Cmd+Option+F on macOS / Ctrl+Alt+F on Windows and Linux, to replace the current match or all current matches. Search is case-insensitive and current-note-only; regular expressions, whole-word mode, and case-preserving replacement aren't included. Replace All is one undo step, preserves formatting shared by the matched text, and syncs to another pane showing the same note. Replacement is unavailable while an AI edit preview is active, and Wrengle refuses unusually large match/replacement operations so the editor stays responsive.
Inline Assist
For a focused, selection-sized AI edit, select non-empty text and choose the sparkle Inline Assist action in the selection toolbar, or press Mod+Enter. Inline Assist is selection-only in this release; a caret without a selection does not open it. It captures the current assistant backend and effective model, then runs in a fresh ephemeral session that belongs to the editor. Its prompt, progress, result, and errors do not appear in the Assistant panel, conversation history, or pending queue. A normal Assistant turn and an Inline Assist request can run at the same time without sharing context.
Press Enter to send, Shift+Enter for a new line, and Escape to close an unsent prompt and return focus to the selection. While the request is working, Escape or Stop cancels only that Inline Assist turn and keeps the prompt available. If an edit is proposed, review it with the editor's existing Accept, Reject, and Retry controls. Review is mandatory even when the Assistant is set to auto-approve or Full access. Accept changes exactly the captured range as one undoable edit, including selections that start and end inside different text blocks; surrounding text and formatting are kept. Wrengle refuses a stale or structurally unsafe replacement instead of expanding its scope. If no valid edit is proposed, the compact result offers Retry and Close. Inline Assist remains blocked in a note while that note has an AI edit preview or local recovery awaiting a decision.
When one fully selected paragraph should become a bullet point,
convert_selection previews a real bullet list item with the same text and
formatting. Accept makes that block conversion as one undoable edit. A partial
selection or a paragraph changed before review cannot be converted this way.
The inline session can read the current note and explicitly attached Resources, and can propose one selection replacement or one fully selected paragraph bullet conversion. It cannot list or search notes, rewrite the whole note, or perform general block edits through Wrengle. External coding agents still run with their ambient operating-system file, process, command, and network permissions; the narrow inline session is not an OS sandbox, so review imported or untrusted selected text before sending it.
The slash menu and other command surfaces offer basic text blocks, tables,
toggles, media, and semantic workflow blocks. Media insertions copy selected
local files into vault-relative assets/images/, assets/files/,
assets/audio/, or assets/video/ paths. Wrengle's persistence guards
reject remote URLs, absolute paths, traversal paths, and malformed asset
links. Images serialize as Markdown image links; file, audio, and video
assets serialize as Wrengle asset markers.
Semantic workflow blocks include callout, meeting section, transcript region, decision, task, citation, and action result. Their visible Markdown representation keeps stable fields such as kind or status, while additional metadata — owner, due date, speaker, source, locator, action id, and references — is stored as sidecar data.
Chart documents
Chart files are local vault documents for desktop diagrams and flows, with shape and connector editing, a searchable responsive Shapes library, direct drag-to-canvas placement, and stable contextual formatting controls. Create one from the workspace's file actions, then open it again from the file tree, quick open, or recent files like any other vault document. Rename, move, duplicate, soft-delete to trash, or reveal it in the system file manager from the same local file-management surfaces you use for notes. Renaming or moving updates the vault document path; duplicating creates a separate local chart file; deleting or trashing removes the active document from normal workspace navigation.
A local chart file opens in the desktop workspace as a diagram document on a theme-aware surface — the Neutral chart theme follows the app's light or dark theme. Open Shapes to browse the local shape library. The drawer groups up to 256 distinct shape-and-style combinations already used in the document under Shapes in use, followed by Basic, Flowchart, Annotation, and Presets. Search filters those local choices without making a network request. At 960 pixels and wider the 288-pixel drawer can stay pinned beside the canvas. From 640 to 959 pixels it opens over the canvas, and below 640 pixels it becomes a full-pane drawer; use Close shapes to return the whole pane to the diagram.
Click a shape in the drawer, then click the canvas to use its default size or drag on the canvas to draw an exact size. At pane widths of 640 pixels or more, you can also drag a shape from the drawer and drop it at the intended canvas position. The compact full-pane drawer uses click-to-arm so it can close before you place or draw on the canvas. Whichever placement route you use, the new shape opens ready for its label. Directional spawn arrows and dragging a connector onto empty canvas remain faster ways to extend an existing flow.
Selecting a shape, connector, or multiple objects shows one contextual toolbar in a stable canvas position. Its controls follow the selection: node fill, stroke, and text styling for shapes; color, line style, and arrowheads for connectors; and the applicable edit, duplicate, and delete actions. The main tool pill provides Undo, Redo, and Arrange, with tidy, alignment, distribution, and z-order actions. A floating zoom pill shows the current percentage alongside zoom, 100% reset, and fit controls. Click the percentage to open the menu and reset to 100%.
Charts use the same mouse and trackpad navigation gestures as the Excalidraw whiteboard canvas. Scroll to pan in both directions, or hold Shift while scrolling to pan horizontally. Hold Cmd/Ctrl while scrolling to zoom around the pointer, or pinch on the trackpad. Gesture zoom ranges from 10% to 3000%.
Hold Space while dragging with the left mouse button to pan, including over shapes and connectors. Middle-button drag also pans. Space temporarily pauses shape placement; release it to continue with the armed shape, or press Enter to place the shape from the keyboard. Right-click opens the matching canvas menu. Left-drag on empty canvas still draws the chart selection box.
Chart edits stay local to the vault and update live across split panes attached to the same chart file, including in-progress object moves while you drag on the canvas.
Dragging a single shape shows alignment and equal-spacing guides. Directly connected shapes prefer center-to-center alignment on the connector's axis when they are nearby, so unequal widths or heights do not trap the shapes on a closer edge alignment and leave a small connector bend. Unconnected shapes keep the normal edge and center guides. With grid snapping on, the connected-center range is the larger of one grid step or six canvas pixels; with grid snapping off, the range is six canvas pixels. Explicit connector sides that turn onto different axes can still require a bend. Sibling elbow connectors that naturally branch from one shared side center keep their crossbars on the same level. Wrengle separates connectors into parallel channels only when their segments overlap along a corridor; staggered shapes and obstacle avoidance can still produce independent bend levels.
Node labels support multiple lines on every ordinary chart shape. While a label is open, press Shift+Enter to insert a line, press Enter or click away to commit, and press Escape to cancel. A node grows vertically when its explicit or wrapped lines no longer fit; it does not automatically shrink dimensions you have already authored. Connector labels and swimlane lane headers remain single-line.
You can dictate into node labels, connector labels, swimlane lane headers, and page names with the same Dictate / Voice status-bar control and Cmd/Ctrl+Shift+D or Cmd/Ctrl+Shift+V shortcuts used in notes. Focus the text field first; bare speech goes to that exact field, while Voice Control keeps its normal trigger behavior. Spoken paragraph breaks work in multiline node labels. Connector labels, lane headers, and page names reject paragraph breaks and stay single-line.
Right-click the canvas, a node, or an edge for the matching context menu. Use the page-tab menu to add and rename pages, move a page left or right, or delete a page. These controls operate on the current local chart document — they don't create a hosted collaboration space.
Wrengle keeps local recovery data for chart documents so recently unsaved or recovered edits can survive an app reload or an ordinary crash. If the recovery data and the saved chart projection no longer match safely, the workspace shows a repair-needed state instead of silently discarding your local changes. Repair keeps the chart tied to the current local vault document when Wrengle can reconcile the recovery state; Reset clears the local recovery state for that chart and reopens it from the saved projection on disk.
With a chart canvas focused, use the chart-local shortcuts: duplicate (Mod+D), copy/cut/paste (Mod+C/X/V), select all (Mod+A), delete (Delete or Backspace), zoom in (Mod++ or Mod+=), zoom out (Mod+-), fit view (Mod+0), undo (Mod+Z), redo (Mod+Shift+Z or Ctrl+Y), and arrow-key nudging. These shortcuts don't fire from node or edge label text fields. Chart undo and redo are also available from the chart toolbar when the focused chart has matching history, and both are disabled for read-only or recovery surfaces.
Chart editing runs in the desktop app. Charts in a synced vault stay the same on your own computers through optional sync. If simultaneous edits remove one of a connector's endpoint shapes, that connector is hidden from the chart and its saved file; restoring the missing shape makes the connector visible again. Hosted collaboration is available through shared vaults only where sharing is enabled. Remote presence is not included. Grouping, layers, comments, and reusable document templates are not included. Browser editing and analytical spreadsheet charts are not included.
Whiteboard documents
Whiteboards are freeform local canvases stored as .wrboard files in your
vault. Create one with New whiteboard from a New tab menu or a folder's
context menu. Whiteboards use the same tabs and file actions as other vault
documents: reopen, rename, move, duplicate, reveal, or move one to Trash without
converting it to a Markdown note.
Wrengle embeds the Excalidraw editor for drawing. It saves boards as .wrboard
vault documents and uses vault-aware file and image actions. The reusable shape
library belongs to one vault and syncs when vault sync and bucket storage are enabled, up to 16 MiB. Competing library changes preserve an importable .excalidrawlib conflict copy. Excalidraw's hosted rooms, web
embeds, and AI generation are unavailable; shared-vault editing, where enabled,
uses Wrengle sync without remote cursors or presence.
You can also control a board through the Assistant: create editable diagrams, change selected shapes, insert existing images or library items, and control selection, pan, and zoom. Content changes use the Assistant's approval policy and normal whiteboard saving and undo. Proposals stay separate from the board until accepted; a changed drawing requires a fresh proposal.
The editor supports drawing, text, shapes, arrows, sticky notes, selection, pan
and zoom, and local undo and redo. Choose the sticky-note tool in the toolbar
or press N, then click the canvas to create a note. Sticky notes stay editable
when saved, reopened, exported, reused in the library, or synced. Paste, drop, or use Insert image for PNG, JPEG,
GIF, and WebP files. Wrengle copies those images into the
vault's assets/images/ folder and stores vault-relative references in the
whiteboard instead of embedding remote URLs. Each image can be up to 8 MiB,
8,192 pixels on either side, and 16,777,216 pixels; a whiteboard can retain up to
16 image references. The editor also bounds the total decoded image pixels it
loads at once. Animated GIF and WebP images are rejected so animation frames
cannot bypass those decode limits. Deleted images continue to count toward the
reference limit even after reopening, so undo on another computer can still
recover them.
You can also copy a selection from another Excalidraw board and paste it into the active whiteboard. Supported shapes stay editable, and embedded PNG, JPEG, GIF, or WebP images are copied into the vault with their crop and size preserved. The pasted selection is one undoable change. Known legacy drawing fields are converted before saving. Supported arrow binding modes and fixed anchors, explicit arrow-label positions, groups, fonts, and creation timestamps are preserved. Unsupported fields or missing image data reject the whole selection without changing the drawing. An image already referenced by the current whiteboard can reuse that reference when clipboard image data is unavailable. Images use the same limits as Insert image. Editing or undoing and redoing a drawing can reflow text and connected arrows using the loaded font metrics; the original label text, fonts, groups, and connector anchors are retained.
New whiteboards inherit Wrengle's active drawing surface and default ink. The
toolbar, menus, and inherited canvas update when you change the Light or Dark
theme, including custom themes. A background chosen from Excalidraw's canvas
color picker is saved with the board and stays fixed. Choose Use Wrengle
background from the canvas menu to make the surface follow the theme again.
Existing shape and text colors remain part of the drawing and are not recolored
by a theme change. Imported Excalidraw drawings keep their chosen background.
For older .wrboard files, a saved #ffffff background is treated as
theme-inherited because that format did not record the distinction; choosing
white again saves it as an explicit color.
Older Wrengle whiteboards and their local recovery data are upgraded automatically when opened. This preserves the drawing and document identity while converting supported older editor fields. Unknown editor versions are rejected with an explanation. Update Wrengle on every computer and for every editor of a shared vault before using upgraded boards; older offline clients cannot safely round-trip the newer drawing fields. See sync.
Exchange drawings
Use Import Excalidraw as new whiteboard… from the canvas menu or command
palette to open an .excalidraw drawing or a PNG/SVG containing editable
Excalidraw scene data
(including .excalidraw.png and .excalidraw.svg files). Dropping these files
on the canvas uses the same importer. Import creates a new .wrboard beside
the active whiteboard, or at the vault root when no whiteboard is active.
Ordinary PNG drops insert an image; plain SVG images cannot be inserted.
Imports preserve supported editable arrows and labels, including fixed anchors and inside or orbit bindings, as well as groups, text fonts, and sticky notes. Imports validate the drawing before creating a board. Unsupported elements, missing image data, or exceeded limits stop the import with an explanation. Scene exchange files can be up to 128 MiB, but the existing board limits still apply: 5,000 elements, 16 image references, the per-image limits above, and a combined image budget of 64 MiB and 67,108,864 decoded pixels. Imported images are copied into the vault. Cancelling the picker or changing vaults stops the import.
Use Export Excalidraw… to save a self-contained editable drawing with its
image data. Missing images block editable export. The exported file does not
contain Wrengle's internal document identity or vault asset paths; your
.wrboard remains the editable vault document. An inherited background is
written as the current theme's concrete color for use outside Wrengle.
Export images
Choose Export as PNG or Export as SVG from the canvas menu to open an export preview. Choose the whole board or selected content, a background or transparency, light or dark appearance, and, for PNG, 1×, 2× or 3× scale. Defaults are the whole board, background included, the current appearance, and a display-appropriate PNG scale capped at 3×.
For boards using the Wrengle background, PNG and SVG exports with a background include the selected appearance's theme surface. An explicitly chosen canvas background and the drawing's colors stay as authored in either appearance. Choose transparency to omit the background from the exported image.
Include editable drawing data is off by default. Enable it to reopen the image as an editable Excalidraw drawing later. Selection exports include the selected content and its associated labels or frame contents; embedded drawing data contains only that exported content. Unavailable images block embedded exports. Ordinary snapshots can export with unavailable images left blank and a warning. PNG rendering also has dimension and pixel limits; use a smaller selection, lower scale, or SVG when the preview reports an oversized image.
Reuse shapes and insert Mermaid
Open Excalidraw's Library sidebar to save a selection, insert saved shapes,
rename an item, or delete it. Load library imports a
local .excalidrawlib file. Export saves the complete library for the
current vault rather than only selected items. Library publishing is not
available in Wrengle.
Choose Browse libraries only when you want to visit Excalidraw's official
library catalog. Wrengle opens the catalog in your system browser; opening the
sidebar itself makes no network request. Choosing Add to Excalidraw on the
catalog returns the selected library to the same Wrengle pane and vault. Wrengle
downloads only the chosen .excalidrawlib file from the official
libraries.excalidraw.com catalog and does not send your board or vault
content.
The library supports vector shapes, text and groups. Compatible older official
vector libraries are upgraded during import. Images, embeds, deleted or empty
items, unsafe links, invalid bindings, and unsupported or lossy content are
rejected without partially installing the library. A library can contain up to
500 items and a .excalidrawlib file can be up to 16 MiB. Across the whole
library there can be at most 5,000 elements, 100,000 points, and 2,000,000 text
characters.
A library is shared by the boards in one vault and persists across restarts.
It is stored in .app/whiteboard-library.excalidrawlib; copy the whole vault,
including hidden .app/, to back it up. It is not part of Git history or live
network sync. Save errors remain visible so you can retry without silently
replacing the last valid library.
Choose Insert Mermaid… or paste Mermaid source to preview a diagram before inserting editable shapes at the centre of the viewport. Conversion runs locally and insertion can be undone in one step. Flowcharts and sequence diagrams are supported. Class, ER and state syntax is accepted only when the converter produces supported vector elements; image fallbacks are rejected. Conversion is one-way: after insertion, edit the shapes with the drawing tools. Mermaid source is not kept in sync with later drawing edits.
Edits update live in another split pane showing the same whiteboard on this
device. Wrengle also keeps local recovery data under the vault's .app folder
so recent unsaved changes can survive a renderer reload or ordinary crash. The
saved .wrboard file remains the portable projection; back up the whole vault
to keep its referenced images, reusable library and local recovery data with it.
If recovery data cannot be read safely, editing pauses and the recovery banner
offers Retry. For corrupt local recovery data, Reset local recovery
discards only that unsaved recovery payload and reopens the saved .wrboard;
the saved whiteboard and its referenced vault images remain unchanged. If a
referenced image is missing, invalid, or exceeds the board's bounded load
budget, the canvas remains available and reports that image as unavailable.
Optional sync keeps whiteboards and their referenced images on your own computers, including closed boards. Images can arrive after the board; the canvas refreshes when they finish downloading. Where sharing is enabled, invited editors can use the same synced vault. There is no remote cursor or presence service, shared room UI, hosted editor, or browser editor. Excalidraw AI generation and web embeds are not included.
Command palette
Open the command palette for the fast path through the workspace: open files, trigger actions, search the workspace, ask AI, rebuild the search index, or jump anywhere else in the app.
Type a query and Wrengle prioritizes matching notes. Press Enter to open the top note result when notes are available; Ask workspace sits below the note results, with matching workspace, editor, and plugin actions after that. When no notes match but actions do, the matching actions appear before Ask workspace. If nothing matches, Ask workspace becomes the explicit fallback. Unrelated actions stay hidden while a query is active.
With an empty query, the palette shows starred notes first, recent notes second, and a compact set of common commands.
Many of these actions also respond to voice control where it's supported.
Open Workflows opens the singleton Workflows tab, and the same surface is available as Workflows in any New tab (+) menu. Workflow drafts auto-save locally; Dry run steps through the debug path, while Run executes the current autonomous-safe draft end to end. Automate… adds a daily or specific-days trigger and pins a live workflow version for future scheduled runs — later draft edits aren't live until you explicitly update that version. Run now immediately shows the execution in progress and keeps its terminal detail; scheduled runs move through queued and running state to a terminal summary. Queued can mean the run is waiting for the app's finite automation queue and bounded, shared heavy-work capacity. Run history covers the selected workflow or all workflows in the current vault, including deleted workflows, in pages of up to 50 runs. Encrypted details remain seven days from creation and content-free metadata remains 90 days. Needs attention is independent of the current history page. Safe interrupted runs preserve completed steps and original deadlines; Resume appears only when continuation is safe, and Close recovery acknowledges an unverified outcome without replaying effects. AI and Fetch have at most three total attempts for transient failures. Pausing or deleting suppresses automatic recovery. Action, Terminal, and Coding agent steps stay human-gated. During an active or approval-waiting run, workflow identity and canvas-edit controls are disabled. Dismissal, pause, or deletion does not cancel work the app has already claimed; a queued or running execution can continue. See Workflows for starters, activation, privacy, and scheduler limits.
Keyboard shortcuts
Open Settings → Keyboard Shortcuts to search workspace and note editor actions and change their bindings. You can also open it from the Keyboard Shortcuts entry in the command palette. Select an action to record a key combination, add another combination for the same action, or remove a binding. Reset restores one action's defaults; Reset all restores every default. Changes take effect immediately and are saved on this device. They do not sync to other devices.
The table shows common default combinations. Use Cmd on macOS or Ctrl on Windows/Linux wherever a shortcut uses the platform's primary modifier. Your current combinations appear in Keyboard Shortcuts.
| Action | macOS | Windows/Linux |
|---|---|---|
| Save all dirty notes | Cmd+S | Ctrl+S |
| Open command palette | Cmd+K | Ctrl+K |
| Quick open files | Cmd+P | Ctrl+P |
| Undo focused note edit | Cmd+Z | Ctrl+Z |
| Redo focused note edit | Cmd+Shift+Z or Cmd+Y | Ctrl+Shift+Z or Ctrl+Y |
| Select all focused note text | Cmd+A | Ctrl+A |
| Find in focused note | Cmd+F | Ctrl+F |
| Find in focused PDF/HTML/text/CSV preview | Cmd+F | Ctrl+F |
| Find and replace in focused note | Cmd+Option+F | Ctrl+Alt+F |
| Open Inline Assist for selected note text | Cmd+Enter | Ctrl+Enter |
| Search all notes | Cmd+Shift+F | Ctrl+Shift+F |
| Close current editor tab | Cmd+W | Ctrl+W |
| Next editor tab | Cmd+Shift+] | Ctrl+Shift+] |
| Previous editor tab | Cmd+Shift+[ | Ctrl+Shift+[ |
| Split editor right | Cmd+Backslash | Ctrl+Backslash |
| Toggle left sidebar | Cmd+B or Cmd+Shift+B | Ctrl+B or Ctrl+Shift+B |
| Toggle agent panel | Cmd+Shift+A | Ctrl+Shift+A |
| Open backlinks | Cmd+Shift+L | Ctrl+Shift+L |
| Toggle Terminal | Ctrl+Backquote | Ctrl+Backquote |
| Toggle selected dictation/voice mode | Cmd+Shift+V | Ctrl+Shift+V |
| Hold for Quick Dictation | Cmd+Shift+D | Ctrl+Shift+D |
Cmd/Ctrl+B toggles the file sidebar when focus is outside text editing and the Terminal. Inside the note editor it keeps its Bold behavior; in the Terminal it remains available to the terminal application. Cmd/Ctrl+Shift+B also toggles the sidebar while editing. Settings, dialogs, and the command palette suppress both sidebar shortcuts. Existing custom sidebar bindings stay unchanged; Reset restores both defaults.
Most workspace shortcuts in this table can be customized, including the command palette, quick open, search, tabs, panels, and voice mode. The editor's Find in Note, Find and Replace in Note, and Inline Assist bindings can also be customized. Keyboard Shortcuts includes other workspace actions without a default binding, such as charts, whiteboards, views, history, focus mode, and help.
Record one key combination at a time; two-step sequences are not supported. Wrengle rejects reserved combinations and ordinary typing keys without a modifier. If a combination belongs to another customizable action, the editor names that action and offers to reassign it. Native menu shortcuts, Terminal controls, Hold for Quick Dictation, Escape behavior, and the editor's Undo, Redo, Select All, and structural editing keys stay fixed. Plugin keybindings are also fixed here and cannot be edited in Keyboard Shortcuts.
When the Terminal is focused, Cmd+F / Ctrl+F opens terminal search, and Cmd+Shift+] / Cmd+Shift+[ on macOS and Ctrl+Shift+] / Ctrl+Shift+[ on Windows/Linux switch Terminal tabs instead of editor tabs. Shift+Enter sends the same line-feed input as Ctrl+J, which multiline terminal programs can treat as a newline without submission.
Meetings panel
Record beside the editor so you can review notes and transcript material together, where supported. The meeting panel keeps recording controls simple, with a context picker, and opens the saved meeting note automatically after you save.
Search and backlinks
Use search, recent notes, and starred notes to move across your local notes. The sections below cover how notes link to one another and how Wrengle surfaces those connections.
Workspace Search, History, and Backlinks all open in a far-right utility panel. The utility panel and the agent panel toggle independently, so closing either one leaves the other open and returns the freed space to the editor.
Wiki-style links
Link notes to each other with Markdown wikilinks: [[notes/project.md]],
[[Project Title]], [[Project Title|label]], [[Project Title#Heading]],
and [[Project Title#^block-id]]. Path-based links are the most stable
form; title and simple frontmatter alias links resolve when they uniquely
match one note. Resolution tries exact path, extensionless path, unique
title, then unique alias.
Type [[ to open an inline picker that suggests matching note titles and
aliases as you type. Pick one to insert the link, or create a new note from
the same menu when nothing matches.
Backlinks panel
Open the panel with Cmd+Shift+L on macOS or Ctrl+Shift+L on Windows/Linux. It centers the active note and groups every reference to and from it as incoming and outgoing links. Each reference shows the surrounding text so you can see the context, and selecting one jumps to that exact spot in the source note and briefly highlights it.
Link health
Wrengle flags links whose target can't be reached, both inline in the editor and in an Issues list in the panel:
- a missing note (no matching target),
- an ambiguous target (the link matches more than one note), and
- a missing anchor (a link to a heading or block that doesn't exist in an otherwise-resolved note).
From the Issues list, create a missing note (under notes/, projects/,
or people/), open one of the candidate notes for an ambiguous link, or
jump to the resolved note for a missing anchor.
Renaming and moving notes
Rename or move a note, and Wrengle rewrites every wikilink that points to it in a single update, so links keep working as you reorganize the vault. Links in notes that are open with unsaved changes are updated in place too.
Unlinked mentions
The panel also lists notes that name the active note by its title or alias in plain text without linking it. Each one shows the surrounding text and offers a one-click action to turn that mention into a link.
Relationship graph
Show graph opens a visual map centered on the active note, with connected notes arranged around it. A depth control expands the view from direct links out to two or three hops to explore how notes connect. Filter the connections by incoming links, outgoing links, or issues (links that don't resolve yet), and select any connection — on the map or in the list — to see its details: where it points, whether it resolves, and one-click actions to open the linked note, copy a link to it, or create the note when it's missing.
Vault graph
Open Graph View — from the command palette, Graph view in any New tab (+) menu, or the View menu — opens an interactive map of the whole vault rather than a single note's neighborhood. Every note is a point and every link a line between them, including notes that aren't linked to anything yet. Pan, zoom, and drag to explore: labels fade in as you zoom toward a cluster and thin out for a clean overview, hovering a note highlights it along with its direct connections, and clicking a note opens it. Notes you currently have open are highlighted, and a link to a note that doesn't exist yet appears as a hollow marker. Fit re-frames the whole map and Refresh rebuilds it; very large vaults show the most-connected notes first.
Pinning metadata exists, but pinned notes aren't exposed in the current interface. Everything above searches your own notes inside the app; these documentation pages have no search of their own in v1.
Settings
Settings are grouped as General, Models, Meetings, Dictation, Keyboard Shortcuts, Appearance, Connections, Plugins, Agents, Privacy & Data, and About. Use those visible category names when following setup instructions — for example, OpenAI/Anthropic generation lives under Settings → Models, while any retired app-owned local-generation files are reviewed under Settings → Privacy & Data.