Releases: alonswartz/notesium
0.6.0
This release introduces Vim mode to the Web/App editor, emulating key features of Vim such as motions, operators, visual modes, macro support, incremental highlighted search, search and replace, jump lists, sort, marks, cross-buffer yank/paste, and expected commands for writing, quitting, and adjusting editor settings. It also supports link insertion, link following, and passthrough for Notesium's global and note-tab keybindings.
A StatusBar has been added, displaying the focus state (or Vim mode), editor mode, editor settings, note link counts, and note actions. Additionally, a new Editor sub-section has been introduced in Settings.
To further enhance keyboard usage, Tab
can be used to gain editor focus, and C-s
to save the active note even when the editor is not focused.
This version includes backwards incompatible changes.
Fixed:
- Links: Handle
file-not-found
gracefully instead of hard-fail. - Web/App: Note - focus activeFilename editor on
Tab
.
Added:
-
Web/App: Note - save activeFilename even if not focused on
C-s
. -
Web/App: State - editorVimMode bool set and tracked via state management.
-
Web/App: Vendor - codemirror vim, dialog and searchcursor addons.
-
Web/App: Editor vim-mode - all common motions, operators, and text objects.
-
Web/App: Editor vim-mode - operator-motion orthogonality.
-
Web/App: Editor vim-mode - visual mode - characterwise, linewise, blockwise.
-
Web/App: Editor vim-mode - full macro support (
q @
). -
Web/App: Editor vim-mode - incremental highlighted search (
/ ? # * g# g*
). -
Web/App: Editor vim-mode - search/replace with confirm (
:substitute :%s
). -
Web/App: Editor vim-mode - search history.
-
Web/App: Editor vim-mode - jump lists (
C-o C-i
). -
Web/App: Editor vim-mode - sort (
:sort
). -
Web/App: Editor vim-mode - marks (
` '
). -
Web/App: Editor vim-mode - cross-buffer yank/paste.
-
Web/App: Editor vim-mode - keybind for write and set normal mode (
C-s
). -
Web/App: Editor vim-mode - commands for write and quit (
:w :wq :q :q!
). -
Web/App: Editor vim-mode - commands to set
[no]wrap
and[no]conceal
. -
Web/App: Editor vim-mode - insert link via finder on
[[
. -
Web/App: Editor vim-mode - open link under cursor (
ge
gx
). -
Web/App: Editor vim-mode - unset highlighted search on
Esc
. -
Web/App: Editor vim-mode - passthrough global keybinds (
space n <char>
). -
Web/App: Editor vim-mode - passthrough note-tab keybinds (
C-l|h|6|^
). -
Web/App: Editor vim-mode - autofocus on activeFilename change and match.
-
Web/App: Editor vim-mode - autofocus on note.Linenum change.
-
Web/App: StatusBar - displayed in default and Vim modes.
-
Web/App: StatusBar - default (focus state), Vim (colored mode).
-
Web/App: StatusBar - editor settings for mode, wrap, and conceal.
-
Web/App: StatusBar - note link counts and action icons (if sideBar closed).
-
Web/App: Settings Editor - vimMode lineWrapping concealFormatting toggles.
-
Web/App: Settings Editor - default mode keybinds.
-
Web/App: Settings Editor - vim mode keybinds and info.
-
Web/App: Settings Editor - table support keybinds and info.
Changed:
-
Web/App: Note tabs - switch to recent note keybind,
C-6
(C-o
deprecated). -
Web/App: Settings Keybindings - split into global finder note-tabs sections.
-
Web/App: Settings Keybindings - moved edit and table to Settings Editor.
-
Readme: Web reorganized and updated to include
Editor modes
.
Backwards incompatible changes:
- The Web/App keybinding for switching to the previously active note has been changed from
C-o
toC-6
(C-^
is also supported). This promotes consistency for all editor modes, as Vim usesC-o
for the jumplist, andC-6
to switch to the previous buffer.
0.5.11
This release brings refinements to the Web/App, including improved editor link insertion and concealment enhancements. It also adds support for discarding unsaved changes. The README has been updated with new documentation.
Fixed:
- Web/App: Editor insertLink - move cursor to end of formatted link.
- Web/App: Editor conceal - fix unconceal font-size (firefox).
Added:
-
Web/App: Editor insertLink - apply timing threshold between bracket presses.
-
Web/App: Editor insertLink - change cursor until next keypress or threshold.
-
Web/App: Editor conceal - transition font-size for less jarring effect.
-
Web/App: Support discarding changes on note close.
-
Web/App: Replaced native confirm with custom implementation.
-
Readme: Documented Web/App state and preferences are port specific.
-
Readme: Documented Web/App supported Markdown highlighting and concealment.
-
Readme: Documented installation examples for macOS and Windows.
Changed:
- Readme: Updated bash shell completion to source inline from embedded file.
0.5.10
The Web/App features a brand-new Ribbon, a Force Graph panel that optionally updates in real-time emphasizing the active note and its relationships, and inline toggling of the note metadata side panel.
The Notes list side panel includes more sorting options, note preview on hover, scoped dark mode, detailed and compact views, a compact expandable tree-like labels section, and improved integration with the Labels panel.
Fixed:
- Web/App: Note sidebar - wrap action icons on pane resize when needed.
- Web/App: Notes list panel - handling of future dates (periodic notes).
- Web/App: Preview - adheres to editorLineWrapping state setting.
Added:
-
Web/App: Ribbon - replaces and expands on NavBar action icons.
-
Web/App: Ribbon - includes graph-panel, mtime-list, dangling-links.
-
Web/App: Ribbon - visual identification of panel state.
-
Web/App: Graph panel - side-by-side view of graph and editor tabs.
-
Web/App: Graph panel - node and relationship emphasis of active note.
-
Web/App: Graph panel - automatic re-render only when required.
-
Web/App: Graph panel - maintain position and zoom on re-render.
-
Web/App: Graph panel - collapsed filter, display and forces settings.
-
Web/App: List panel - note preview on hover.
-
Web/App: List panel - sort and density, labels related dropdowns on hover.
-
Web/App: List panel - sort via title, mtime, ctime or link count.
-
Web/App: List panel - detailed and compact view.
-
Web/App: List panel - compact labels-tree, with dedicated sorting.
-
Web/App: List panel - scoped darkmode for detailed and compact views.
-
Web/App: List panel - filter match count and link to full-text search.
-
Web/App: List panel - filter optimizations and
label:
support. -
Web/App: List panel - filter clear icon when applicable.
-
Web/App: List panel - optimized date handling and formatting.
-
Web/App: List panel - new label with verification when label panel closed.
-
Web/App: Labels panel - new label with verification.
-
Web/App: Labels panel - improved integration with Notes panel.
Changed:
- Web/App: NavBar - action icons removed, replaced with Ribbon.
- Web/App: Labels panel - label click opens finder if Notes list closed.
- Web/App: Graph overlay - only full screen, overlay replaced by graph panel.
- Web/App: Periodic notes - refactored into dedicated component and improved.
- Web/App: Note metadata panel - graph link changed to Graph panel.
- Web/App: Note metadata panel - inline toggle instead navbar panels dropdown.
0.5.9
Building upon daily note support introduced in version 0.5.7, weekly note support has now been added in the embedded Web App and Vim, along with a configurable "start of week" setting. The Web App also features a custom datepicker displaying existing daily and weekly notes, and allows for the creation of past and future periodic notes.
Additionally, the Web App now includes a global reactive state management system that retains user preferences across sessions.
Fixed:
- Vim: Use script-local variables to avoid namespace conflicts.
Added:
-
Web/App: Editor line wrapping support.
-
Web/App: State - Global reactive state management.
-
Web/App: State - Exposed in settings.about.runtime.state.
-
Web/App: State - Used by Panels - show state and width.
-
Web/App: State - Used by Editor - line wrapping and conceal.
-
Web/App: State - Used by Datepicker - start of week.
-
Web/App: Datepicker - Custom implementation replacing native HTML5.
-
Web/App: Datepicker - Configurable start of week.
-
Web/App: Datepicker - Existing periodic notes visualized by colored dots.
-
Web/App: Datepicker - Buttons for daily and weekly periodic notes.
-
Web/App: Keybinding to open new or existing weekly note.
-
Vim:
NotesiumWeekly
command/keybinding to open new or existing weekly note. -
Vim:
$NOTESIUM_WEEKSTART
variable for determining weekly note dates. -
Readme: Documented deterministic periodic notes convention.
-
Tests: Weekly note test implementations for bash, vim, and javascript.
Changed:
-
Vim:
NotesiumWeb
keybinding changed from<Leader>nw
to<Leader>nW
. -
Web/App: Native HTML5 datepicker replaced with custom implementation.
-
Web/App: Panel state changed from sessionStorage to new state management.
0.5.8
The Web/App now supports note deletion, first verifying there are no incoming links to avoid dangling links, followed by a confirmation dialog prior to deletion.
Checking for software updates is now supported via the CLI and the Web/App, along with detailed version and runtime information. A handy Report an issue
link is included with the body preset to include version information. The Web/App also features a high-level statistics count section integrated with the Finder.
Fixed:
- Web/App: Editor concealment has been improved for selected lines.
- Web/App: Editor concealed
hr
is now centered horizontally, and darker. - Web/App: Heartbeat will only start if
stop-on-idle
is set. - Web: Absolute path of webroot will be used if set.
Added:
-
Web/App: Note deletion with incoming-links verification and confirmation.
-
Web/App: Settings Stats - Counts with integrated Finder links.
-
Web/App: Settings About - Software update, Resources and Runtime.
-
Web/App: Settings About - Runtime webOptions, build info and memory usage.
-
Web/App: Settings About - Report an issue link with version info as body.
-
Web/App: Nav actions visual notification if new version available.
-
CLI:
version
command now supports--check
and--verbose
options. -
CLI:
web
command now supports--no-check
option to disable daily check. -
API:
api/runtime
GET
is now supported. -
API:
api/raw/stats
GET
is now supported. -
API:
api/raw/version
GET
is now supported. -
API:
api/notes/:filename
DELETE
is now supported. -
API: New endpoints added to specification.
-
Tests: Unit tests for deriving semantic version.
-
Tests: Unit tests for comparing semantic version and latest version.
-
Tests: Integration tests with custom builds and mock release response.
-
Tests: Integration tests for semantic version and new version comparisons.
-
Tests: Integration tests for note deletion via API.
-
Tests: Integration tests for runtime via API.
-
Tests: Integration tests for stats via API.
-
CI/CD: Github Actions updated to run unit tests and print version.
Changed:
- Building from source now uses
gitversion
andbuildtime
flags. - Notesium version is now derived from
gitversion
.
0.5.7
Setting a custom ctime
for new notes is now supported, enabling deterministic note filenames. Using the 00:00:00
convention, daily notes are now supported in the embedded Web App and in Vim via the NotesiumDaily
command.
Fixed:
- Web/App: Avoid losing editor focus on the first save of a new note.
- Web/App: Skip updating
activeFilenamePrevious
if there is no change. - Web/App: Alert dismissal race condition.
Added:
-
CLI:
new
command now supports--ctime=
and--verbose
options. -
API:
api/raw/new
is now available. -
Tests: Added CLI and Web tests for the
new
options. -
Vim:
NotesiumDaily
command/keybinding to open new or existing daily note. -
Web/App: Daily note icon and keybinding to open new or existing daily note.
-
Web/App: Daily note custom date selector on icon hover.
Changed:
- API: Note creation now requires
Ctime
argument. - Web/App: newNote updated to use
api/raw/new
with verbose output. - Web/App: saveNote updated to include
Ctime
requirement.
0.5.6
Fixed:
- CI/CD: Disable CGO to ensure static binary compilation.
0.5.5
Fixed:
- Cache: Skip
non-hex8.md
files instead of hard-fail. - API: Note update
lastMtime
verification now uses UTC for comparison. - Tests: Use
Mtime
from API instead of hardcoding (timezones).
Added:
-
Web/App: Editor softTab insertion on
Tab
. -
Web/App: Editor softTab removal if left-of-cursor on
Bksp
. -
Web/App: Documented default indentation keybindings (Auto, Less, More).
-
Web/App: Sidepanel resize support (Labels, Notes list and Note metadata).
-
Web/App: Sidepanel resize via click-and-drag and dbl-click to restore.
-
Web/App: Sidepanel width preservation with sessionStorage.
-
Web/App: Sidepanel show-state preservation with sessionStorage.
-
CI/CD: Github Actions scripts (install-deps, build-bin, run-tests, release-notes).
-
CI/CD: Github Actions workflow for pull-requests.
-
CI/CD: Github Actions workflow for merges into master and tagged releases.
-
CI/CD: Contrib
release.sh tag
for verification to reduce human error.
Changed:
- Web/App: Navbar sidepanels dropdown on hover instead of click.
- Web: App and Graph updated to use d3.js versioned URL.
0.5.4
Added:
- Web/App: Editor table automatic formatting on
Tab
. - Web/App: Editor table formatting with column alignment.
- Web/App: Editor table formatting with dynamic column adjustment.
- Web/App: Editor table formatting with concealment support.
- Web/App: Editor table header separator auto-match header column count.
- Web/App: Editor table navigation via
Tab
,Shift-Tab
andAlt-Arrow
.
0.5.3
The web/graph
has been rewritten and implemented in web/app
, with all of same features (except cluster settings and darkmode), tighter integration, and additional improvements.
Fixed:
- Web/App: Preview activeline disabled if lineNumber not specified.
Added:
-
Web/App: Graph to visualize the relationships between notes.
-
Web/App: Graph search filter to emphasize nodes and their links.
-
Web/App: Graph node and immediate links emphasis on title click.
-
Web/App: Graph emphasis removal via graph-empty-space click.
-
Web/App: Graph dynamic node radius based on bi-directional link count.
-
Web/App: Graph title visibility toggle and auto-scale per zoom level.
-
Web/App: Graph customizable force, collide radius and strength.
-
Web/App: Graph drag, pan and zoom for a better view or focus.
-
Web/App: Graph different node color for notes considered labels.
-
Web/App: Graph toggleable settings and sub-setting sections.
-
Web/App: Graph toggleable context aware fullscreen and overlay views.
-
Web/App: Graph fullscreen open via navbar, welcome screen and keybind.
-
Web/App: Graph fullscreen node title click opens note preview overlay.
-
Web/App: Graph fullscreen filter single-match
enter
opens note preview. -
Web/App: Graph fullscreen preview includes section with incoming-links.
-
Web/App: Graph fullscreen preview link clicks switch preview and node emphasis.
-
Web/App: Graph fullscreen preview edit icon to open note for editing.
-
Web/App: Graph fullscreen preview close via
x
icon,esc
or outside click. -
Web/App: Graph fullscreen close via
x
icon oresc
. -
Web/App: Graph overlay open via node-sidebar with note emphasized.
-
Web/App: Graph overlay node title click opens note for editing.
-
Web/App: Graph overlay close via
x
icon,esc
or outside click. -
Web/App: Editor conceal support for
~~strikethrough~~
. -
Web/App: Editor conceal support and highlight for
---
(horizontal rule).
Changed:
- Web/App: Graph navbar icon opens integrated graph (was
/graph?noxdg
). - Embedded webroot set to
web/app
(web/graph
no longer included).