Skip to content

Releases: brenoperucchi/omasession

OmaSession 0.6.0

Choose a tag to compare

@brenoperucchi brenoperucchi released this 02 Nov 15:34
  • Each restore keeps its own log in ~/.local/state/omasession/restores/ instead of overwriting last-restore.log, so a manual restore no longer erases what the login restore did. The log records what started the restore, the session it replayed (a copy is kept next to it), the last save, Chrome's profile state before the restore touched it, and the folder and program saved for each terminal it opened. A login restore also records how the previous boot ended. The newest 20 are kept, and last-restore.log is now a copy of the latest one.
  • omasession report [dir] gathers the latest restore log, its session, the state files and the journal lines from this boot and the previous one into a single folder.
  • The panel's Chrome and Ghostty cards moved to an Apps tab next to Windows, Layout and Saved, so the panel is shorter and the tabs sit right under the summary.
  • A new Log tab lists the kept restores with how many windows each one placed and the lines worth reading first. When the latest restore had problems, the tab gets a dot and the header says so. From there you can open the full log or report a problem, which gathers the report and opens a GitHub issue with the outcome filled in for you to review and send.
  • omasession restores [--json] lists the kept restores. Each restore also writes a short result.json next to its log. omasession report takes --restore <name> to pick one and --issue to prepare the bug report.
  • omasession help lists every command again. uninstall and config had been cut off.

This release is tagged at commit 803d9980947dde0cf23953b35a0b4ac4485ab563.

OmaSession 0.5.1

Choose a tag to compare

@brenoperucchi brenoperucchi released this 27 Oct 16:45
  • omarchy plugin add ... --enable is now the whole install. The plugin declares a service that the shell starts once, and it sets up the snapshot timer and the login restore line that used to need a separate omasession install. It runs at every shell start and changes only what is missing or out of date. A login line you deleted stays deleted, a timer you disabled in systemd stays off, and nothing is set up again after omasession uninstall, including when those were done under 0.5.0. Requested in the Omarchy plugin marketplace review.
  • A disabled plugin no longer saves or restores. The timer now runs save --if-enabled, and the login restore checks the same thing: whether omarchy-shell has the plugin enabled. The manual commands still work.
  • After omarchy plugin remove without uninstall, the timer and the login line are inert instead of failing. Both units carry ConditionPathExists, and the login line checks that the CLI exists. A line written by an earlier version gets that check in place, keeping the path it names.
  • The login restore runs once per Hyprland instance. A second login line in autostart.lua, such as one for a development checkout next to the installed plugin, does nothing.
  • The panel says when automatic save is off: the plugin is not enabled, or the snapshot timer is not running.

This release is tagged at commit 04ca2658f23a02739b6aad5e3a893ee33f0b5178.

OmaSession 0.5.0

Choose a tag to compare

@brenoperucchi brenoperucchi released this 22 Oct 19:24
  • The panel has three tabs. Windows is the old list. Layout draws the screens to scale from the saved monitor geometry (position, size, scale, rotation) with each workspace's windows where they sit, so an ultrawide, a row of monitors or a portrait screen all look like themselves. Saved lists named sessions and the history with Preview and Restore, plus Save as. New omasession layout [name] gives the panel that geometry as JSON. Contributed by @dmkenney in #5.
  • Browser app windows are named for their desktop entry or site ("X", not "Com Profile 4"), and a terminal saved with its program shows "runs btop" instead of "directory not recoverable". Contributed by @dmkenney in #5.
  • A history of earlier sessions. Each save of last is also kept as history-<time> when the desktop's shape changed (windows, workspaces, slots, commands; not titles), thinned to every change for 15 minutes, one per 15 minutes for 2 hours, one per hour for a day and one per day for a week. omasession list shows them with named sessions (omasession save <name>); omasession restore <name> brings any back. Contributed by @dmkenney in #5.
  • Every browser profile that had a window comes back, not only Default. The save records the browser's open profiles (Local State last_active_profiles); restore marks each as cleanly closed and launches each with --profile-directory. Before, only Default reopened and the other profiles' windows were lost or came back empty. The Chrome and Chromium close-all repair runs on each profile's session, and all of them together never reopen more windows than the save had. A single profile starts at once; with several, the rest are handed over as soon as the browser shows its first window. Contributed by @dmkenney in #9.
  • Browser app windows (--app=URL, including Omarchy's web apps) reopen on their own profile and URL, rebuilt from the window class (brave-x.com__-Profile_4, or chrome-x.com__-Default for both Chrome and Chromium). The browser to start comes from the window's process. Before, they were saved with the browser's shared command line and reopened as a normal browser window. Contributed by @dmkenney in #9.
  • A terminal can come back running the program it had open instead of a bare shell. List programs with terminalPrograms (for example nvim,btop); only listed ones are relaunched, since rerunning whatever was in the foreground could repeat a build or a delete. When one Ghostty process serves several windows, each program goes to the window whose title names it, then by elimination. Works with Ghostty (-e), foot and kitty (--). The program runs inside your shell, so it finds what your shell config puts on PATH and quitting it leaves you at a prompt. Contributed by @dmkenney in #5.
  • Windows come back in their slots on Lua layouts and other layouts that place windows by arrival order. Restore opened each window onto its workspace in snapshot order, so those layouts put windows in the wrong slots, and a swapped window came back unswapped. Each window's position in its workspace is now saved; during restore, windows wait on a hidden workspace and then move in that order. A Lua config can report the real slot order through a global window_slot_order() (see the README). Ordering runs only when that function exists, so Dwindle and Master users see no change; restoreOrder true or false overrides that. A save taken while windows are parked is skipped, so last never loses them. Contributed by @dmkenney in #8.

Thanks to @dmkenney, who wrote all of these changes in #5, #8 and #9. This release is tagged at commit 9cdf6b0987c3ae22cabecdf393aec7a8b02a0e3c.

OmaSession 0.4.1

Choose a tag to compare

@brenoperucchi brenoperucchi released this 21 Oct 13:44
  • The session panel shows window titles, commands and error messages as plain text. A saved window title containing markup, such as an image tag, could make the panel load a remote image when it was opened. Reported in the Omarchy plugin marketplace review.
  • Chromium and Electron windows saved through the /proc cmdline fallback now restore. Their rewritten process title was saved as one quoted word, and uwsm failed with Path "<whole command line>" does not exist!. Contributed by @paracycle in #4 (#3).

Thanks to @HANCORE-linux for catching the panel issue in the marketplace review, and to @paracycle for the cmdline report and fix. This release is tagged at commit 2ab11590c01d5101a181409389077409df9d141a.

OmaSession 0.4.0

Choose a tag to compare

@brenoperucchi brenoperucchi released this 21 Oct 13:37

OmaSession 0.4.0 restores Dwindle tiled layouts and fixes Chrome windows that went missing after a reboot from the Omarchy menu.

Highlights

  • Restores Dwindle tiled layouts from the saved window geometry. After the windows come back, OmaSession rebuilds the split tree and checks the result against the snapshot. Contributed by @Tech0001 in #2; requirements and limits are in docs/tiled-layout.md.
  • Chrome and Chromium now bring back every window after a reboot, shutdown or logout from the Omarchy menu. The menu closes windows one at a time, Chrome kept only the last one, and the restore filled the rest with empty windows. OmaSession now undoes those closes in the session file before launching the browser, keeps the original file aside and logs the decision in last-restore.log.
  • A cleanup step that fails after a tiled layout was rebuilt and verified, such as handing focus back to a window that is gone, is reported as a warning instead of a failed restore.

This release is tagged at commit 5b217ad360f8c78cd48deb5942d9f9584736cc02.

Thanks

@Tech0001 wrote the tiled-layout reconstruction in #2, adapted from the work first proposed in #1.

OmaSession 0.3.1

Choose a tag to compare

@brenoperucchi brenoperucchi released this 20 Sep 12:17

mise ~/.config/mise/config.toml tools: gh@2.101.0
OmaSession 0.3.1 improves restoring browser application windows from the panel.

Highlights

  • Added separate Restore App Windows cards for Google Chrome and Ghostty, with independent app toggles.
  • Chrome can ask its native session restore to bring back saved windows and tabs, then OmaSession applies the saved Hyprland workspace placement.
  • Existing Chrome repair remains available for windows that are already open.
  • Browser title matching now reserves exact matches before approximate matches.
  • Added safer behavior when browser title metadata or an auxiliary status read is unavailable.
  • Added an isolated Chrome restart diagnostic and expanded command/panel coverage.

This release is tagged at commit 2e8fb36e77c1876cc90988f759f004946be462ee. Marketplace verification for that exact commit is tracked separately in issue #7522.

Thanks

@Tech0001's #1 flagged the same browser-restore failures on a real reboot and proposed fixes for them. That branch is not merged here — this release's implementation was written independently — but the report was the right call, and the tiled-layout reconstruction in that PR is being evaluated next.