-
Updated the Canvas spec to indicate that colors can be stored in 1 or 2 formats:
- as a hex string (i.e. "#FFFFFF")
- as a number "1", "2", etc.
If it's a number, this refers to the palette position. It can be themed via CSS variables.
There are some new CSS variables related to canvas and callouts in 1.1.3+. All the extended palette colors now have an RGB variant that is used for callouts and canvas colors. The hex values are primarily used for syntax highlighting.
body {
--callout-bug: var(--color-red-rgb);
--callout-default: var(--color-blue-rgb);
--callout-error: var(--color-red-rgb);
--callout-example: var(--color-purple-rgb);
--callout-fail: var(--color-red-rgb);
--callout-important: var(--color-cyan-rgb);
--callout-info: var(--color-blue-rgb);
--callout-question: var(--color-yellow-rgb);
--callout-success: var(--color-green-rgb);
--callout-summary: var(--color-cyan-rgb);
--callout-tip: var(--color-cyan-rgb);
--callout-todo: var(--color-blue-rgb);
--callout-warning: var(--color-orange-rgb);
--callout-quote: 158, 158, 158;
}
.theme-light {
--color-red-rgb: 228, 55, 75;
--color-red: #E4374B;
--color-orange-rgb: 217, 108, 0;
--color-orange: #d96c00;
--color-yellow-rgb: 189, 142, 55;
--color-yellow: #BD8E37;
--color-green-rgb: 12, 181, 79;
--color-green: #0cb54f;
--color-cyan-rgb: 45, 183, 181;
--color-cyan: #2db7b5;
--color-blue-rgb: 8, 109, 221;
--color-blue: #086DDD;
--color-purple-rgb: 135, 107, 224;
--color-purple: #876be0;
--color-pink-rgb: 195, 43, 116;
--color-pink: #C32B74;
}
.theme-dark {
--color-red-rgb: 251, 70, 76;
--color-red: #fb464c;
--color-orange-rgb: 233, 151, 63;
--color-orange: #E9973F;
--color-yellow-rgb: 224, 222, 113;
--color-yellow: #E0DE71;
--color-green-rgb: 68, 207, 110;
--color-green: #44CF6E;
--color-cyan-rgb: 83, 223, 221;
--color-cyan: #53DFDD;
--color-blue-rgb: 2, 122, 255;
--color-blue: #027aff;
--color-purple-rgb: 168, 130, 255;
--color-purple: #a882ff;
--color-pink-rgb: 250, 153, 205;
--color-pink: #FA99CD;
}
file-open
event is now fired when focusing a Canvas file card.- Exposed the
activeEditor
on the Workspace. When a markdown view is active, this will point to the underlyingMarkdownEditView
. If a canvas view is active, this will be an EmbeddedEditor component.
With these two changes, plugins should be able to adapt to the new Canvas view quite easily. Custom
views that react the the currently focused views will automatically respond to the user clicking
on file cards in the canvas. If a plugin is currently accessing the Editor
using the following
approach:
let view = app.workspace.getActiveViewOfType(MarkdownView);
if (view) {
let editor = view.editor;
// or
let file = view.file;
}
Instead you can access the editor
or file
by looking under the activeEditor
:
let { activeEditor } = app.workspace;
if (activeEditor) {
let editor = activeEditor.editor;
let file = activeEditor.file;
}
In anticipation of bigger improvements to metadata and frontmatter in Obsidian, we have introduced a new metadata API. It is currently defined as follows:
interface FileManager {
/**
* Atomically read, modify, and save the frontmatter of a note.
* The frontmatter is passed in as a JS object, and should be mutated directly to achieve the desired result.
* @param file - the file to be modified. Must be a markdown file.
* @param fn - a callback function which mutates the frontMatter object synchronously.
* @public
*/
processFrontMatter(file: TFile, fn: (frontMatter: any) => void): Promise<void>
}
To use it:
app.fileManager.processFrontMatter(file, (frontmatter) => {
frontmatter["key1"] = value;
delete frontmatter["key2"];
});
All changes made within the callback block will be applied at once.
setTooltip
now accepts an optional tooltip position.- The
size?: number
parameter has been removed fromsetIcon
. This is now configurable via CSS. You can add override the CSS var--icon-size
on the parent class of your element to override the sizing (e.g..parent-element { --icon-size: var(--icon-xs) }
) The following icon sizes are available out-of-the-box:--icon-xs
,--icon-s
,--icon-m
, and--icon-l
. editorCallback
no longer passes the activeview: MarkdownView
. Instead, it now provides either the MarkdownView or a MarkdownFileInfo object. This change allows for editor commands to work within a Canvas.registerHoverLinkSource
is now available in the API to register your plugin's view with the Page preview core plugin.
- Fixed
Editor.replaceSelection
not working when run immediately after closing a modal.
- Added support for an optional
fundingUrl
field the plugin manifest This is a link for users that want to donate to show appreciation and support plugin development. It's displayed when your plugin is selected in the list of community plugins. - Added macOS calendar entitlements. This allow scripts run from within Obsidian to request calendar access.
- Added standard color picker component.
getLeaf
can now be used to create a leaf in a new tab, a new tab group, or a new window. The preferred usage ofgetLeaf
would begetLeaf(Keymap.isModEvent(evt))
whereevt
is the user's KeyboardEvent. This allows for a consistent user experience when opening files while a modifier key is pressed.
- Workspace information is no longer saved to the
.obsidian/workspace
file. It is now saved toworkspace.json
. - Added
.has-active-menu
class to file explorer item that received the right-click. - Added
.list-bullet
class to HTML markup for unordered list items.