Repository navigation
Releases: sdkasper/lean-launcher
Release list
v2.4.0
Added
- Window switcher (opt-in) - Settings > Tools > Window switcher. Off by default; when on, type
d(d for desktop) and part of a window title or app name to list the open windows that match, then pressEnterto switch to one.dalone lists every window Alt+Tab would show. A minimized window is restored first, a Store app is listed under its real app name, and the launcher never waits on a window that is not responding. The prefix can be changed in Settings. Windows are looked up only when you type the prefix; nothing is kept while the feature is off. It is saved, exported and imported with your other settings. - Keyboard shortcuts for Settings -
Ctrl+,opens Settings on the tab you last used, andCtrl+1toCtrl+6jump to the General, Search, Tools, Snippets, Obsidian and About tabs. They do nothing while you record a hotkey, edit a field or have a dropdown open.Ctrl+,in Settings goes back, likeEsc.
Changed
- The Obsidian "bring to the front" step now shares its window-raising code with the window switcher, and no longer waits on a window that is not responding.
LeanLauncher.exe.sha256 and LeanLauncher.exe.minisig are for automatic update verification. You do not need to download them; just use LeanLauncher.exe.
Full Changelog: v2.3.0...v2.4.0
v2.3.0
Added
- The folder is shown under each file and folder result - a file or folder row now carries its parent folder on a second, smaller line, so files with the same name can be told apart without opening them. A long path is cut from the front so the end of it (the part that differs) stays visible. Applications, commands, notes and the rows of path completion (where you already typed the folder) look as before.
- Open notes in a new Obsidian tab (opt-in) - Settings > Obsidian > Vault search > Open notes in a new tab. Off by default; when on, a note, Base or canvas opened from the launcher (
o <text>, Quick open) opens beside the tab you are using instead of replacing it. It is saved, exported and imported with your other settings. - Bring Obsidian to the front (opt-in) - Settings > Obsidian > Vault search > Bring Obsidian to the front. Off by default; Obsidian's own command line opens the note but leaves the window behind whatever app was in front, so with this on the launcher raises the Obsidian window once the note has opened. If Windows refuses to move the window forward, its taskbar button flashes instead. It is saved, exported and imported with your other settings.
Changed
- The app list was built twice at every start, on two threads at once; it is now built once, which trims the work done in the first seconds after launch.
LeanLauncher.exe.sha256 and LeanLauncher.exe.minisig are for automatic update verification. You do not need to download them; just use LeanLauncher.exe.
Full Changelog: v2.2.0...v2.3.0
v2.2.0
Added
- Find Obsidian Bases and Canvases by name - the note index (the
oprefix) now also lists.baseand.canvasfiles, soo dashboardcan jump straight to a Base or a canvas and open it in Obsidian. They show with their extension (Books Base.base) so they read apart from a note of the same name. Only the name is indexed; the preview panel shows no content for them, since a Base is a query and a canvas is a drawing, not text.
Changed
- Stricter update downloads (NFR-017) - the launcher now checks every redirect while downloading an update and refuses
http://or any host other than GitHub's, instead of letting Windows follow redirects on its own. The download is also capped at 64 MB.
Fixed
- A version number with an absurdly long run of digits could overflow while the launcher compared versions; it now saturates safely.
LeanLauncher.exe.sha256 and LeanLauncher.exe.minisig are for automatic update verification. You do not need to download them; just use LeanLauncher.exe.
Full Changelog: v2.1.1...v2.2.0
v2.1.1
Added
- Support badge - a small heart and "Support" badge in the middle of the launcher's bottom row opens the LeanProductivity shop page (https://kspr.me/cheers) in your browser, for anyone who wants to chip in. It is only a link: the launcher sends nothing and fetches nothing. It makes room for the "Update Available" button and the Pomodoro timer, and you can hide it any time with Settings > General > WINDOW > Show support badge.
LeanLauncher.exe.sha256 and LeanLauncher.exe.minisig are for automatic update verification. You do not need to download them; just use LeanLauncher.exe.
Full Changelog: v2.1.0...v2.1.1
v2.1.0
Added
- Signed update verification (US-040) - every release now publishes
LeanLauncher.exe.sha256(the exe's hash, the release tag) andLeanLauncher.exe.minisig, a minisign signature made with a key that only the release pipeline holds. Before it offers "Restart to update", the launcher downloads both files and checks the signature against the public key built into it, the signed hash against the downloaded exe, and the signed tag against the release. The check is repeated right before the exe is replaced, including in the elevated installer, which no longer needs a second request to GitHub. An update that fails any check is deleted and never installed: the Updates row reads "open release page" and shows "Update couldn't be verified". You only ever needLeanLauncher.exe; the two small files are fetched by the launcher itself. A release must be signed for this version and later to update to it automatically.
Changed
- The updater only takes the asset named exactly
LeanLauncher.exefrom this repository's releases over https, with no fallback to another.exe, and fetches the verification files only from GitHub hosts.
Fixed
- Editing a Settings text field now shows the whole value - the field being edited used to be a small right-aligned box that only showed the end of a long value (a vault path, a note override), and its caret was always drawn at the end even after you moved it with the arrow keys (#6). The field now takes the full width of the row, is left-aligned, scrolls to keep the caret in view, and shows the real caret position and selection.
LeanLauncher.exe.sha256 and LeanLauncher.exe.minisig are for automatic update verification. You do not need to download them; just use LeanLauncher.exe.
Full Changelog: v2.0.4...v2.1.0
v2.0.4
Fixed
- Typed paths and folders that would not open - on some PCs, pressing
Enteror clicking a folder in the path completion results (for example after typingC:\Users\) showed "Could not open this item", andShift+Enterjust closed the launcher (#11). If Windows' normal "open folder" action fails, the launcher now opens the folder with Explorer directly.Shift+Enteralso shows "Could not open this path." instead of closing silently when nothing could be opened.
Full Changelog: v2.0.3...v2.0.4
v2.0.3
Fixed
- High CPU after every edit in your Obsidian vault - with Obsidian integration on, the launcher's note index rescanned the whole vault after every content change (including adding a line from the launcher) and did extra disk work for every note each time, which could use about 35% CPU for 15 to 20 seconds on a small laptop (#7). It now only rescans when a note or folder is created, renamed, or deleted, and building the list no longer touches the disk per note (10,000 notes took about 940 ms before and about 9 ms now in the test). This is separate from the File search setting: turning File search off never stopped the note index, which follows the Obsidian integration setting.
- Ctrl+V works in Settings text fields - pasting into a text row such as the daily note overrides, prefixes, or the snippets file did nothing (#6). It now pastes the first line of the clipboard, trimmed.
Added
- Accent-insensitive search - typing
aprefindsâpre,delivrancefindsdélivrance,cafefindsCafé, and the other way round (#4). It works for apps, files, and notes. Only Latin letters are folded; letters without a plain base such as ø, æ, ł, and ß are unchanged, and other scripts are left alone. The file index rebuilds once after updating so its saved names match. - Stay open when clicking elsewhere - new opt-in setting (Settings > General > WINDOW, off by default): clicking another window no longer hides the launcher.
Esc, the hotkey, or launching something still closes it. If the launcher is visible but not in front, the hotkey brings it to the front (#6). - Remember last search - new opt-in setting (Settings > General > WINDOW, off by default): reopening the launcher brings back your previous search with the text selected, so typing replaces it and
Enterstill works on it (#6). The text is only held in memory while the setting is on.
Full Changelog: v2.0.2...v2.0.3
v2.0.2
Changed
- Graphics memory is released while the launcher is hidden - after the launcher has been hidden for 15 minutes (or has never been opened for 15 minutes after starting), it releases its Direct2D render target and factory, which hands back the graphics driver's memory: about 35 MB of private bytes on a test machine with a dedicated graphics card. Nothing visible is lost. The next time you open the launcher the graphics are rebuilt before the window appears, which took about 125 ms on the test machine; opening it again within 15 minutes is unchanged. The release never happens while the launcher is visible. The README now explains private bytes versus the working set that Task Manager shows by default.
Full Changelog: v2.0.1...v2.0.2
v2.0.1
Fixed
- Import from Espanso keeps your structure - the import used to merge every Espanso file into one flat list and rewrite your snippets file without its comments. It now groups the snippets it adds under a
# From Espanso: <file>header for each Espanso file (for example# From Espanso: 3SS.yml), keeps the section comments from your Espanso files (such as# Invoices), and leaves the comments and layout of your own snippets file as they are. The written file has a blank line between snippets and uses\nfor line breaks in multi-line text, so it is easy to read and edit. Section headers of entries that are skipped (for example ones that use variables) are kept and moved to the next snippet. Comments are only read during an import; nothing extra is held in memory while snippets run.
Full Changelog: v2.0.0...v2.0.1
v2.0.0
Snippets and a reorganised Settings page make this a milestone release. Nothing is removed: every setting, shortcut, and saved value keeps working, and settings exports from earlier versions import unchanged.
Changed
- Settings is reorganised into six tabs - General, Search, Tools, Snippets, Obsidian, and About. The crowded Search tab (27 rows) is split up: File search, Web search, the search engine, prefixes, exclusions, and the preview panel stay in Search; unit and time zone converters, typed URLs, path completion, system commands, and Pomodoro move to Tools; the text expander gets its own Snippets tab. General combines the old Shortcuts and System tabs and also holds Export settings... / Import settings... in a BACKUP card (moved from About). Each tab groups its rows into titled cards. The "All" tab is gone, and Settings now opens on General.
- "Check for updates when Lean Launcher starts" moved to About - it now sits in the UPDATES card as "Check on startup", right above the "Check now" row (previously called "Check for updates"), so both update controls are in one place.
Added
- Snippets (text expander) - opt-in and off by default (Settings > Snippets): type a trigger such as
:sigin any app and it is replaced by your text. Snippets are kept in%APPDATA%\LeanLauncher\snippets.yml, created with two samples the first time you turn the feature on; the Settings row "Edit snippets" opens it. The file uses an Espanso-compatible subset:matches:withtrigger,replace, andlabel, with multi-line text through|blocks or\nin quoted text. Variables,word, multipletriggers, and other Espanso features are not supported yet; such entries are skipped with a warning in Settings. Limits: file 1 MB, 5,000 snippets, replacement 64 KB, trigger 2-32 characters without spaces; a shorter trigger that is the start of a longer one fires first. Short single-line text is typed. Long or multi-line text is pasted only when the clipboard is empty or holds only plain text (the clipboard is then restored afterwards and the pasted text is kept out of Windows clipboard history); otherwise it is typed key by key, and a multi-line snippet typed this way sends Enter for each line, so editors with auto-indent may re-indent it (tip: use short single-line snippets, or avoid having rich text such as a copied web page on the clipboard, if that matters). The,prefix searches your snippets: type,and part of a label (, sig), thenEnterinserts into the window you came from, or copies to the clipboard if there is none. "Import from Espanso" asks first, saves a timestamped backup, skips entries with variables, and never turns the feature on. Settings export and import never include or turn on the Snippets toggle. Privacy: while on, a keyboard listener sees what you type to spot triggers, keeps at most the last 32 characters in memory only, never stores or sends them, and is fully removed when you turn Snippets off. It cannot see into or type into windows running as administrator and may not work in some games or remote desktop windows.
Known limits
- Snippets do not work in windows running as administrator, and may not work in some games or remote desktop windows.
- Espanso variables,
word, and multipletriggersare not supported yet; those entries are skipped with a warning. - The snippets file is read when Snippets is turned on and each time the launcher opens, not while you edit it.
- A mouse click that moves the caret inside the same window does not reset the typed text, which can cause a rare false expansion.
- Password fields still expand snippets, because the listener cannot tell them apart.
- Triggers are case-sensitive, so Caps Lock changes the typed character.
- If expansions ever stop working (Windows removes keyboard hooks that answer too slowly), turn Snippets off and on again.
- Type the last trigger character and release it before pressing the next key; a fast rollover cancels the expansion.
Full Changelog: v1.9.1...v2.0.0