Orsn
Introduction
Guide
Release Notes
Download
v2
Contact
Introduction
Guide
Release Notes
Download
v2
Contact
  • v2 Development Diary

    • Search and Command Palette
      • Refactoring
      • Search
      • Command Palette
      • Contact
    • Annotations
    • Footnotes and References
    • New content types for research
    • Revising the Revisions
    • The Big Clean Up
    • Markdown editor updates
    • Moving. Forwards. Slowly.
    • Typescript makes you think
    • Truncating a tab
    • An Idea in Motion
    • Version 2?

Subscribe to updates

17th October 2026

A few months have passed since my last update. A lot has changed in the software since then, much of it behind the scenes, in the shape of refactored code; but some new, visible and vital features have also appeared.

Refactoring

After implementing annotations, I created a script to migrate v1 Orsn sites to the new v2 architecture. This was limited in some ways, as the plugins from the v1 software don't exist yet in v2, so it wasn't possible to port maps, pinboards, etc. However, it was possible to port projects, cards, card annotations, and card stacks. I used the script to migrate my own personal knowledge base, which consists of about 1,500 cards, to Orsn v2. This immediately made some issues visible which weren't obvious when working with just a handful of test cards and pages. As a result I implemented more efficient card loading, when there are multiple open cards in tabs and/or stacks. I also fixed some issues with switching between Orsn projects. Some of the code terminology was overhauled, as was the permissions system for different user roles.

Search

The other thing that became obvious was that it was time to sort out a vital missing feature which hadn't yet been fully ported from version 1: search, both at the project level, and at the level of individual cards.

Search for cards and pages in a project, and across projects, is implemented as a popup search dialog which is available from anywhere, but also as a full search page, which is linked from the dialog. This follows the search model familiar from the Discourse forum software.

search-current-project2.pngSearch within a project

search-page.pngSearch page

search-all-projects.pngSearch across all projects

Search within a card is via a toggleable search input box which is pinned to the top of the card, and is visible even when scrolling the card. For this, I was inspired by the implementation of document search in my IDE and other popular IDEs. The search widget has the following familiar features:

  • option to match on case
  • option to match on whole word
  • option to match on regex
  • step through results ('next' / 'previous'), which scrolls each highlighted match into view and selects it, ready for editing
  • option to display a 'replace' field for doing search and replace
  • option to preserve case when doing replace
  • option to replace one match at a time or all matches at once

These are probably very familiar options to many users, but it's very satisfying to have implemented this and have it working so well.

document-search.pngSearch within a card

document-search-and-replace.pngSearch and replace within a card

Command Palette

Again, inspired by popular IDEs and text editing tools like Sublime Text, I added a basic Command Palette, which is a keystroke-driven popup dialog which allows you to perform actions related to the currently visible content. In the longer term it will also allow for installation of extensions, browsing of extension registries, etc. The Command Palette is good for at least two things: access to unlimited powerful actions (e.g. 'Move current card to project...'; 'Split card into cards...') without cluttering up the user interface with multiple icons and menus; and speeding up interactions by providing a keyboard-driven workflow.

command-palette.pngCommand palette

Contact

Find me on the fediverse (Mastodon) @Lemmy@post.lurk.org, or send an email to: info [at] orsn.io

Next
Annotations