Skip to content

Releases: Linkuistics/Modaliser

Release v4.4.2

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 02 Oct 15:56

Modaliser v4.4.2

This release includes the existing VSCode development changes alongside
the F1–F20 leader-key support introduced in v4.4.1.

The bundled Companion 1.3.0 adds the VisualJJ focus action and updates editor
activation to target the listed editor group, slot, and label. Editor rows
include every input kind and editor-grid terminals. Activation refuses a
missing or renamed slot; stale-file cleanup still requires the original tab.

(modaliser apps vscode) exports focus-visualjj, so configurations using
that action load successfully. The shipped VSCode example includes a
VisualJJ binding. Existing F17/F18 leaders remain supported, and F2/F1 can
be added as global/local leaders in the same leaders setting.

Adoption

Upgrade Modaliser and relaunch it. If Companion 1.3.0 is not already
installed, use Install VSCode Companion, then restart VSCode.
Your configuration is preserved during an upgrade.

Release v4.4.1

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 02 Oct 15:23

Modaliser v4.4.1

All function keys, F1 through F20, are now available as named keycodes
from (modaliser keyboard). Previously only F17 through F20 were
exported, so configurations referring to other function keys failed to load.

Existing F17/F18 bindings continue to work. To also use F2 for global
activation and F1 for app-local activation, add them to your existing
leaders setting:

(leaders
  (leader 'global F18)
  (leader 'local  F17)
  (leader 'global F2)
  (leader 'local  F1))

Upgrade Modaliser, edit ~/.config/modaliser/config.scm, and relaunch it.
Upgrading does not rewrite your configuration; preserve any modifiers or
arm-when-frontmost options on your existing leader entries.

Release v4.4.0

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 11 Sep 05:20

Modaliser v4.4.0

The Grove Leaf action now clears stale task tabs left behind when Grove
renames, moves, or deletes task files, then reveals the current task as before.
Cleanup also runs when no live task remains or the grove directory is gone.

Only clean, missing Grove task tabs from the initiating workspace are eligible,
including Markdown previews and tabs open in multiple editor groups. Existing
files, unsaved edits, unrelated deleted files, and other workspaces' tabs remain
open. Cleanup preserves focus and leaves tabs alone when a file check is uncertain.

Adoption

  1. Install Modaliser v4.4.0.
  2. Use Install VSCode Companion to install the bundled companion 1.1.0,
    then restart VSCode.
  3. Copy the updated Grove Leaf composition and its imports from
    ~/.config/modaliser/sys/scheme/examples/vscode.scm into your own config,
    then relaunch Modaliser.

Your existing config is not rewritten by an upgrade. Older companions continue
to support listing and focusing; without the updated companion, task reveal
still works but stale tabs are not cleaned up.

Release v4.3.0

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 10 Sep 05:13

Modaliser v4.3.0

VSCode becomes a first-class citizen: a dedicated screen, three jump-label
panels over what is actually open, and a companion extension that answers what
lives inside a VSCode window.

VSCode screen

A screen that appears while VSCode is frontmost, carrying:

  • Projects — a jump-label panel over every open VSCode window, one row per
    project, reachable without a fuzzy search.
  • Terminals and Editors — jump-label panels listing what is open inside
    the frontmost window, each with its own alphabet.
  • Previous / next editor, focusing the editor first when it does not
    already have focus.
  • Open this window's live grove leaf — resolves the window to its worktree
    through VSCode's own state file, opens the task file and lands the explorer
    on it.

The machinery ships as the (modaliser apps vscode) and (modaliser tools grove)
libraries plus (modaliser jump-list); the keys, labels and alphabets are yours
and live in your own config.scm (ADR-0021). A complete, copyable screen ships
as examples/vscode.scm in the sys/ mirror —
~/.config/modaliser/sys/scheme/examples/vscode.scm.

The VSCode companion extension

The Terminals and Editors panels need a peer running inside VSCode, because
nothing outside VSCode carries that state. This release ships that extension
inside the app bundle (ADR-0028) — but Modaliser installs it only when you
ask and confirm, never on its own.

How to get it:

  1. Bind the install op in your config.scm — examples/vscode.scm ships it as
    the Install VSCode Companion row:

    (key "I" "Install VSCode Companion" code:install-companion!
         'hidden code:companion-installed?)
  2. Press it and confirm the dialog. It copies the bundled payload into
    ~/.vscode/extensions, removing any earlier copy of the same extension so
    VSCode does not load two.

  3. Restart VSCode. It scans ~/.vscode/extensions only at startup, so
    Modaliser cannot reach the companion until you do.

The row hides itself once the shipped version is installed, and reappears when
a later Modaliser upgrade carries a newer payload.

Two things worth knowing: this installs extension code, which VSCode then
activates in every window it opens; and uninstalling Modaliser does not
remove it — brew uninstall --zap modaliser, or deleting the directory by
hand, is what takes it away.

Everything else on the VSCode screen works without the companion. Terminals and
Editors simply come back empty.

Fixes

  • A Scheme error raised on a keypress inside a modal now tears down the modal
    state as well as deregistering the handler, so it no longer leaves an overlay
    standing on screen over a live state machine.

Release v4.2.1

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 14 Aug 11:36

Release v4.2.1

Release v4.2.0

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 13 Aug 07:17

Release v4.2.0

Release v4.1.0

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 04 Aug 05:26

Release v4.1.0

v4.0.0 — configuration is one explicit value

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 26 Jul 15:57

Modaliser v4.0.0 — configuration is one explicit value

A major release. The authoring surface changed: configuration is now a single
value you compose and hand off once, replacing the registration-based model.
Configurations written for 3.x will not load.

Breaking

  • No register! / set-*! on the authoring surface. Library exports are
    pure constructors returning fragments; ordinary Scheme composes them,
    (configuration fragment…) purely merges them into one Configuration value,
    and (modaliser:start! config) is the only effectful moment — it lowers,
    installs and arms the leaders exactly once. The merge rejects conflicting
    contributions instead of silently absorbing them. See ADR-0018 and
    docs/specs/configuration-value.md.
  • (modaliser state-machine) and (modaliser leader) are gone, replaced
    by (modaliser fsm), (modaliser configuration), (modaliser handoff) and
    (modaliser activation).
  • Bundled app-trees/ includes are retired. Setups a fresh install does
    not seed (tmux, Chrome) now ship as never-loaded reference configurations
    under examples/, to copy from rather than include. default-config.scm
    grows into the full composed configuration.
  • Clipboard history is removed — all five primitives resolved at the
    Scheme prompt and permanently returned null, because the store and monitor
    they guarded on were never assigned.
  • No library authors a key or a label (ADR-0021). Libraries export ops,
    blocks, providers and wiring; your config.scm binds them into screens.

Upgrading

A 3.x config no longer wedges the app: when a config fails to load, Modaliser
evaluates the bundled default in its place, keeps every leader key working,
and reports the error on the menu bar and in a dialog (ADR-0022). So the
upgrade path is: install, let it fall back, then port your config against
docs/reference/dsl.md and the seeded config.scm — Reset Config to Bundled Default… in the menu bar backs yours up first.

~/.config/modaliser/sys/scheme/ is re-mirrored from the new bundle on first
launch, so the shipped library tree is always fresh; only your config.scm is
yours to migrate (ADR-0019).

Also in this release

  • Display-value model with two-layer rendering (ADR-0011) — dispatch
    structure carries an attached display; Scheme builds data and pushes JSON,
    JavaScript renders into the DOM.
  • herdr socket transport (ADR-0020) — herdr is driven over a Unix socket
    rather than by shelling out, with one read seam.
  • Terminal context-map activation completed (ADR-0013), plus explicit FSM
    graph validation at load time (ADR-0015).
  • Outward reach is host-installed (ADR-0023) — shell spawning and HTTP
    fetching sit behind seams that are inert until the host wires them, so the
    test suite reaches nothing outside the process.
  • New scripts/check-decision-free.sh enforces the decision-free library
    contract alongside the portability check.

Requires macOS 14+ (Sonoma), Apple silicon.

Release v3.3.0

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 22 Jul 05:14

Release v3.3.0

Release v3.2.0

Choose a tag to compare

@AntonyBlakey AntonyBlakey released this 22 Jul 05:03

Release v3.2.0