// updates

What's new

Every release, newest first. The notes are the same ones as on GitHub, in plain words. Small fixes sit together under the change they followed, so the timeline stays readable.

RSS · Download · GitHub

  1. Add a static updates page #46

    GitHub · Full changes

  2. Publish a release when the push skips the prepare job. #50

    • Add a design language for the app and the website #47
    • Cut releases through a pull request #48

    GitHub · Full changes

  3. One hover card, and name fields that edit normally #45

    GitHub · Full changes

  4. Lock pages and folders with real encryption #44

    GitHub · Full changes

  5. Share a page's variables with other pages through @handle.name #43

    • Typing @ lists pages by handle and title, then that page's variables with their values.
    • Renaming a variable, or the handle, updates every reference in one undo step.
    • A missing page, a missing name, a deleted page, or a cycle stays a quiet hint.
    • Hover shows the value and the source page.

    GitHub · Full changes

  6. Add a command-line for pages and an MCP server #41

    • Evaluate an expression or a whole page from the command line, as text or JSON
    • List, show, create, append, remove, and export pages, as Markdown or PDF
    • Serve those tools over stdio with omacus mcp for Claude Desktop and Cursor

    GitHub · Full changes

  7. Add folders and drag-and-drop to the sidebar #42

    • Use neutral names in examples and tests #40
      • Sample pages in tests and the export preview use Trip Budget, Weekend Plans, and a seats-and-cost line.

    GitHub · Full changes

  8. Rename a variable everywhere on the page #39

    • F2, the right-click menu, or Rename variable on hover opens a field. Enter applies, Esc cancels, and one undo puts the page back.
    • On a phone, long-press the name or tap Rename.
    • Editing the definition offers to update the other references.
    • A name that does not start with a letter, or one that is already used, is refused.
    3 smaller updatesv0.2.1 – v0.2.3Oct 22 – Oct 23
    1. v0.2.3

      Recalculate the page as soon as a phone keyboard types #38

      • A new line such as test=100 shows 100 immediately, and a later test*2 shows 200. Lines below the edit stay current.
      • Composition and autocorrect text is committed while the keyboard is open.
      • A no-break space, smart quote, or en dash still calculates, so 100 – 20 is 80.

      GitHub

    2. v0.2.2

      Keep preview, export, and update checks in step with the page #37

      • Scroll a long page in the web editor, answers included, and scroll the preview
      • Keep each source line, blank line, and comment in the preview and the PDF
      • Line answers up in a column, or inline, following the answers setting
      • Save the PDF under the page title in Downloads, and replace it in place
      • Open Settings as a tab beside About
      • Run Check for updates again after each result

      GitHub

    3. v0.2.1

      Fix hover tooltips, typeset print, and open Settings from the sidebar #36

      • Hover values stay on one line, in a tooltip that sizes to the amount and stays inside the window.
      • Print and Export PDF set the page like a short document: margins, headings, tables, and no line split across a page break.
      • Inline answers keep Avi's brackets, in each theme's accent colour on screen and a dark ink in print, for example [ $1,450 ].
      • Settings opens from a gear at the bottom of the sidebar and the collapsed rail, from Ctrl+, and from typing settings in the page switcher.

      GitHub

    GitHub · Full changes

  9. Keep the web app opening offline, and say when rates may be stale #35

    • The app shell is precached and served from cache, then refreshed in the background so the next visit picks up a new version.
    • Only a successful response is stored. Offline, the app page falls back to that cache.
    • When a rates refresh is due and fails, the page says rates may be stale. A cache younger than 12 hours does not.
    • Show a value on hover, and describe autocomplete suggestions #34
      • Hover a variable or a number such as 1.5k to see its value
      • Click an answer to copy it, with a short confirmation
      • Autocomplete shows a kind and a short description
      • Enter accepts a suggestion only after Ctrl+Space
      • A defined name, a use of it, and keywords or units are three colours
      • A # comment is drawn in the comment colour
    • Preview a page as notes, and calculate math after a markdown prefix #33
      • Ctrl+P previews the page as rendered notes, with each answer in a pill. Esc returns to editing. Print and Export PDF use that view.
      • A list, task, quote or heading can hold a calculation, so "- hotel = 3 nights * $180" defines hotel. Tables render in the preview, and a cell is not calculated.
      • Edit mode stays plain text, with headings larger and bold.
    • Add settings for the theme, the answers column, and update checks #32
    • Call a sheet a page in the app, docs and site #31
    1 smaller updatev0.1.29Oct 22
    1. v0.1.29

      Draw the sidebar's icons, and line them up #30

      GitHub

    GitHub · Full changes

  10. Expect the desktop sidebar to anchor its resize handle.

    • Open a deleted sheet before restoring it, and keep long names on one row.
    1 smaller updatev0.1.27Oct 20
    1. v0.1.27

      Keep the sheet switcher from moving keyboard focus.

      GitHub

    GitHub · Full changes

  11. Give long sheets enough stack on macOS

    • Add Phase 1 pre-launch sheet functions, shortcuts, and restore
    1 smaller updatev0.1.25Oct 19
    1. v0.1.25

      Read m, mm, and b on a currency amount as a scale #25

      GitHub

    GitHub · Full changes

  12. For founders: runway, burn, MRR and dilution #24

    GitHub · Full changes

  13. web-mobile test: wait for the new page after navigating #23

    • Homebrew: brew install --cask avinashjoshi/tap/omacus #22
    • Keep the phone web app still while typing, and fix the sheet drawer #21
    • Realistic sheets: labels read as units, totals with rates, and more #20
      • "Income - total" (Income being a label, not a variable) was minus the total: a word in front of an operator is no longer dropped.
      • "rate = $85/hour" or "discount = 10%" in a block broke its total. Rates and percentages are left out when the amounts don't add up with them.
      • A label's words that fend knows as units were multiplied in: "Nails $8" was 8 nail $, "Apartment 4B rent $1,900" 7,600 B $, "Food 6 days * $80" 480 day $. Money times another unit is retried with those words as prose.
      • "$1.5B" was 1.5 bytes; after a currency symbol, B and bn are billions.

    GitHub · Full changes

  14. Percentages follow the order of operations #19

    GitHub · Full changes

  15. total in calculations, totals of dollars and plain numbers, lone unit words #18

    • "total + 1" was 1: total only worked on a line of its own. total, sum and average now work in a calculation ("total * 1.08", "100 - total", "total in EUR", "total - 10%"), when next to an operator, a bracket or a conversion; "rent + total vibes" and "Total cost $40" stay prose, and a variable named total wins. A line using a total isn't counted in the next. "average + 1" gave fend's function "\\x.((mean x)+1)" and spoiled the total below it.
    • "$5", "6", "total" said "Units don't match"; it's $11 now, as "$5 + 6" is on one line. Other mixes ($ and kg) still don't add up.
    • A line of one word that only names a unit ("r" was 1 Rankine, "kg", "k" 1,000, "c" the speed of light) shows nothing. Variables, pi, e, tau and phi still answer.

    GitHub · Full changes

  16. Windows: leave the unused OpenGL backend out of the build

    • Tests: slow the first-line clock five times, not twenty
    1 smaller updatev0.1.19Oct 18
    1. v0.1.19

      Windows: open without OpenGL 2; first line's time limit excludes setup #16

      GitHub

    GitHub · Full changes

  17. Windows: runs on a fresh install, one-click and one-line installers; a styled .dmg #15

    • omacus-windows-x86_64-setup.exe (Inno Setup, installer/omacus.iss): installs for the user with no admin prompt into %LOCALAPPDATA%\Programs\Omacus, adds Omacus to Start (and the desktop if ticked) and omacus to the PATH, opens it, and uninstalls from Settings > Apps. Its wizard art is in the site's fonts.
    • irm https://omacus.com/install.ps1 | iex: downloads that installer, checks it against SHA256SUMS.txt, installs it silently and opens Omacus.
    • omacus.exe has its icon (and a 16-256 px .ico, 19 KB instead of 359 KB).
    • tests/windows-installer.ps1, in CI and before every release: no runtime DLLs, the installer builds, the one-liner installs (Start entry, PATH once, the right version, the app answers), installs again over the top, refuses a tampered download, and uninstalls cleanly.
    • macOS: the .dmg opens to a window with the app, Applications and an arrow between (dmgbuild, installer/dmg-settings.py).
    • Site: Windows downloads the installer; the download page puts the visitor's system first; docs and README updated.

    GitHub · Full changes

  18. Answers fill in as they're worked out, copies never freeze or land late, impossible dates say so #14

    GitHub · Full changes

  19. Position test: count steps instead of timing, so a slow machine can't fail it

    • Exact rounding, more number and date formats, web app calculates in a worker #13
      • Halves round on the exact digits, away from zero: $1.005 is $1.01 and 2.675 is 2.68 (an f64 made them $1 and 2.67). Negative money is rounded and grouped too.
      • "$-5" is minus five dollars (it showed -$4).
      • "1.000,50" and "1.000.000" read as European grouping (1.000,50 + 1 showed 2).
      • "1 lakh" and "2 crore" are 100,000 and 20,000,000 (they showed 1 and 2).
      • A date on its own is that date: "2026-12-25" showed 1,989 and "Dec 25" showed 25.
      • "today + 3 weeks" across a clock change no longer lands on the day before: days, weeks, months and years move along the calendar, hours are time that passes.
      • After "I = 3", "I spent $40" is still $40: a short word that's also a variable is the variable only next to an operator.

    GitHub · Full changes

  20. Calculate off the window's thread, reuse unchanged lines, same limit for every line #12

    • The engine saves the state after each line (fend's variables, the total's block, prev, names). Engine::eval_sheet resumes from the first line that changed, so typing at the end of a long sheet redoes one line; answers from the clock (today, time in Tokyo) are refreshed every time.
    • The desktop app calculates on a worker thread (src/calc.rs) that keeps each sheet's saved calculation and drops older text when newer arrives: the window never waits on math. Copying the sheet on screen reuses its answers when they match its text exactly.
    • The web app reuses each sheet's calculation the same way.
    • The sheet-wide budget is gone: every line gets the same 150 ms, so a line's answer no longer depends on where it sits (from the second review).
    • Tests: reused answers equal a full recalculation at every keystroke of every sheet in cases.txt and through random edits; identical lines get identical answers; the worker never blocks its caller and ends on the newest text.

    GitHub · Full changes

  21. Accuracy: the second review's fixes, a fend rounding workaround, and checks against exact maths #11

    • A redefined percentage variable uses its newest value ($100 + tax).
    • Percentage terms follow precedence: 100 + 10% * 2 is 120, 100 + 10% / 2 is 105.
    • 10% off 20% off $100 is $72 (it gave 14.7-style answers before).
    • C$, A$, US$, NZ$, HK$ and S$ amounts read as their currencies.
    • Date maths from any date: Jan 31 + 1 month, Dec 25 - Dec 1 is 24 days.
    • Decimal commas: a comma followed by anything but three digits (1,5; €12,50).
    • 10% * 200 is 20, not 2,000%; 50% / 2 stays 25%.
    • fend 1.5.8 rounds 2/3/10^10 to "approx. 1" (and 725 + that to 726): Omacus now reads approximate answers at 20 more decimal places and rounds them itself. Tiny answers keep three significant digits instead of showing 0.
    • 2 kg / 1e9 works (1e9 was read as a unit after a slash).
    • Faster source installs: ./install.sh builds with a local profile #10

    GitHub · Full changes

  22. Fixes from an independent review: no freezes, no confident wrong answers #9

    • Each line gets a time limit (150 ms; 20 ms once a sheet has taken a second), so 100000! or 10^10^7 can't freeze the window, the web app or a shared link that opens with one. Without a clock, a cap on fend's work instead.
    • A line with no answer can say why, quietly in the answer's place: "Can't divide by zero", "Units don't match", "Too big to work out".
    • The prose fallback no longer skips past operators or variables, so rent + 5 is never answered "5". A plain number added to an amount takes its currency: rent + 5 is $1,005, and "prev + 1" after $10 is $11.
    • Variables named a, I, the, at or my are kept as variables.
    • 2 x 3 x 4 is 24 and Tickets 2 x $14 is $28.
    • Percentages apply in order ($100 - 10% - 10% is $81), and a percentage variable works the same way ($100 + tax, where tax = 8%).
    • A title-case word that spells a currency code ("Lunch for Cad $40") is prose unless it follows a number or "in"/"to".
    • Updates install exactly the version whose checksums the app checked, and install.sh now checks every download against the release's SHA256SUMS.txt.
    • engine/tests/cases.txt: sheets with the answer each line should get, including every case from the review.

    GitHub · Full changes

  23. Answers after the line, on the web and the desktop #8

    • omacus.com/app moves to CodeMirror (bundled into site/app/editor.js by site/tools/editor). Lines wrap at the full width; each answer floats right at the end of its line and drops to its own row when the line is full, so phones no longer squeeze every line into half the screen. Undo is kept per sheet.
    • The desktop app does the same: full-width lines, the answer on the line's last row or on a row made for it below.
    • Phones: Share link and Private move into the ⋯ menu.
    • Installed on iPhone, the top bar leaves room for the status bar and notch.
    • The offline worker drops caches from older versions, and steps aside on localhost so previews never run stale files.
    • Deploy versions editor.js by content hash like the other scripts.

    GitHub · Full changes

  24. Try Omacus on the homepage, a privacy page, and privacy in About #4

    • Homepage hero: Watch / Try it yourself above the demo window. Try it swaps the replay for the real editor (omacus.com/app in a new embed mode: no chrome, nothing read or saved), on the sheet that was playing, loaded only on demand.
    • Under the installer, a clearer "Open the web app" card.
    • /privacy: what Omacus stores and sends, in plain words, with a short terms note pointing at the MIT license. Linked from the footer, homepage, /app.
    • Desktop About: a "Private by design" paragraph and a Privacy link.
    • Screenshots retaken with the new Share and ⋯.
    • Visible sheet actions, web app on the homepage, install banner, privacy #3
      • Desktop: Share and ⋯ above the sheet, and a ⋯ on the selected or hovered sheet row, open the same menu as a right-click, with shortcuts shown.
      • Homepage: a web app section, a privacy section, and a guide or docs link on each feature card.
      • /app: a first-visit banner offers Install, or the Add to Home Screen steps on iPhone and iPad; a "Private" chip explains where sheets live.
      • "Open in the web app" links open a new tab.

    GitHub · Full changes

  25. Share links everywhere: from the app, into the app, and an installable /app

    • Share link (Ctrl+Shift+L, or the sheet's right-click menu) copies https://omacus.com/app#v1.… for any sheet. The format lives in the engine (engine/src/share.rs), so the desktop app and the web app make and read the same links; a link can expand to 1 MB at most.
    • Shared sheets open in the app: omacus:// links (Linux .desktop + xdg-mime, macOS Info.plist and an Apple Event handler, Windows per-user registry on first run), pasting a link into a sheet, or omacus open <link>. An opened sheet is new, or switches to the copy you already have.
    • omacus.com/app: Open in Omacus on shared sheets; installable (manifest, icons) and offline (service worker); a Home Screen note on iPhone.
    • Docs: Sharing & the web app, opening links, CLI, shortcut, FAQ. Every sheet on the use cases page and in the guides opens in the web app. Three new feature cards on the home page. README, llms.txt and in-app tips.
    • CI checks the macOS bundle declares omacus:// and the Linux install does.
    • omacus.com/app: Omacus in the browser, with share links
      • Sheets are saved in this browser (localStorage, persistent storage requested), kept in step across tabs, and export/import as a .zip of .txt files.
      • Share link puts the sheet after the # (deflate + base64url, "v1." prefix), so it never reaches a server; opening one shows it as a shared sheet to save.
      • Exchange rates come from the same source as the desktop app, cached 12 hours.
      • The site deploy builds the engine and versions its files; /app is in the header, the sitemap, and under the hero's installer.
    • Add omacus-web: the engine for JavaScript, via WebAssembly
    • Move the math engine into its own crate, ready for the browser

    GitHub · Full changes

  26. Tips and splits, download times, day counting, CSS units, colours, Markdown copy

    • 18% tip on $62, $84 split 3 ways, split $240 between 4 people. Before, "split 3 ways" answered 3.
    • 4 GB at 100 Mbps -> 5 min 20 s (was "400 GB Mbps").
    • days until Dec 25, weeks until Christmas, days since Jan 1, workdays in November, days between Mar 1 and Jun 30.
    • 16px in rem, 12pt in px, 24px in rem at 18px.
    • #ff8800 in rgb, rgb(...) in hex, hsl(...), with a swatch beside the answer (rgb(255,136,0) used to multiply out). "#ff8800" is a colour, "# Budget" still a header.
    • Ctrl+Shift+M (or the right-click menu) copies a sheet as a Markdown table.
    • One download page for every platform; short links no longer download
    1 smaller updatev0.1.8Oct 17
    1. v0.1.8

      Smaller downloads: a .dmg per Mac chip, lean fonts, full LTO

      • macOS ships omacus-macos-arm64.dmg and omacus-macos-x86_64.dmg instead of one universal .dmg, halving the Mac download. The installer picks by chip (even under Rosetta) and falls back to the universal .dmg for releases up to 0.1.7. Before publishing, each .dmg is checked to hold the right architecture and run.
      • egui's bundled fonts are replaced by JetBrains Mono, a 6 KB currency-symbol subset of Noto Sans and Noto Emoji, all stored deflated.
      • Full LTO; regex keeps only the Unicode tables it uses; zip is Windows-only.
      • Keep two Omacus windows in step, and never let one overwrite the other

      GitHub

    GitHub · Full changes

  27. Check for updates on launch and every 4 hours, not once a day

    GitHub · Full changes

  28. README: say how Omacus is pronounced, matching the video

    • Add the launch video to the site and README
    • Add the launch video's build pipeline
    • Fix a Windows-only lint in the updater's private folder
    • Use https in the install one-liner everywhere; docs for the new shortcut
    • Make deleting a sheet undoable, and never lose a save quietly
      • Deleting a sheet is Ctrl+Shift+Delete (Ctrl+Delete deletes a word in the editor) and shows Undo; the trash gets the text as it was, unsaved edits included
      • A failed save shows a message instead of retrying silently forever
      • Saves are flushed to disk before replacing the file, with temporary names unique to each window
      • The settings check and the help examples no longer run every frame
    • Harden the installer and the updater
      • Piped from curl, the installer never trusts files in the current folder (a shared /tmp could hold someone else's "release"), runs everything from main() so a cut-off download does nothing, refuses to run as root, and only fetches over HTTPS
      • macOS: updates replace the exact app bundle (even renamed), copying beside it first so a failed copy never leaves no app
      • Hyprland keys are validated before they go into the Lua config, backups are restored by copying (symlinked configs survive), and existing config errors no longer trigger a rollback
      • The updater downloads the release's own install.sh (or Windows zip) from GitHub for that version, checks it against the release's SHA256SUMS, and runs it from a private folder; the Windows swap cleans up on every failure
      • zip 9 (RustSec advisories in 2.x extraction code, which Omacus didn't use); network requests have timeouts
    • Fix silently wrong answers found in an audit
      • Numbers in labels no longer multiply into the amount: "Day 3 $50" and "iPhone 15 $799" give $50 and $799, not $150 and $11,985
      • half, twice, double, triple, a third, a quarter and percent count: "half of 50" is 25, "50 percent off 80" is 40
      • I, a, an, the, at are prose unless they follow a number: "I spent $40" is $40 (not imaginary), "$4 a day" is $4 / day, "3 pizzas at $12" is $36
      • A time of day that isn't a conversion ("Movie at 7pm") gets no answer instead of picometres; lines with until/since/ago get none instead of a guess
      • Big numbers keep every digit, tiny ones show as 1e-12 instead of 0, negative money reads -$5, and 0x10 stays hex
      • "$1200 / 12 in EUR" works again; labels may contain digits ("Item 2:")
      • Adding days to a time shows the date, and dates outside this year show it
      • GMT is a fixed offset; huge durations give no answer instead of crashing
      • prev on the first line gets no answer; very long lines are skipped

    GitHub · Full changes

  29. Copy a sheet with its answers, jump to sheets with Ctrl+P, and count from now

    • Ctrl+Shift+S (or Copy with answers in a sheet's right-click menu) copies the sheet with each answer lined up after its line, ready to paste anywhere
    • Ctrl+P finds a sheet by name, or by something written in it; arrows and Enter to go
    • "in 90 minutes", "3 hours from now in Tokyo", "3pm + 45 min" and "9:30am PST + 2 hours in London"
    • Exchange rates and the update check now refresh on schedule while Omacus stays open, instead of only at launch; offline, they try again later
    • Find the latest version even when GitHub's API rate-limits
    • Fix the macOS installer exiting with an error after installing

    GitHub · Full changes

  30. Update in one click on Windows, update Macs in place, and fix links

    • Links in About (website, docs, releases, issues, source) now open in the browser; they did nothing before
    • Windows: Update now downloads the new omacus.exe and swaps it in where the old one is, then restarts; the old copy is cleaned up on the next launch
    • macOS: an update replaces Omacus.app where it is, instead of possibly installing a second copy in another Applications folder
    • After each release, CI installs the previous one on Linux, macOS and Windows, runs omacus update, and checks it lands on the new version
    • Redo the help window, and put the logo and version in the sidebar
      • The sidebar ends in one quiet row: logo, name and version, and ? for help. A dot after the version marks a new release; clicking it opens the update.
      • Help has a rail on the left (Keyboard, Syntax, Tips & tricks, About) with the logo at the top and the version at the bottom
      • About shows the logo, version and Check for updates (or Update now when a new version is out), with links to the website, docs, releases, issues and source
      • The update notice no longer adds lines to the sidebar

    GitHub · Full changes

  31. Tell people when a new version is out, and update in one click

    • At most once a day, Omacus asks GitHub for the latest version number in the background; nothing about you or your sheets is sent
    • When there's a newer one, "vX available" appears at the bottom of the sidebar and next to the version in the help window
    • Update now installs it with the one-line installer (keybind, settings and sheets stay), then offers to restart; What's new opens the release notes
    • omacus update does the same from a terminal
    • Installed from a .deb or .rpm, or on Windows, it opens the download page
    • check_for_updates = false in settings.toml turns the check off
    • Show Omacus's own version, in the terminal and the app
      • omacus --version, -V and omacus version print the installed version, like "omacus 0.1.3"; omacus version used to print the math engine's version (1.5.8)
      • The help window shows the version next to the name; clicking it opens that release's notes
      • "version" in a sheet is prose, not the engine's version number

    GitHub · Full changes

  32. Understand imperial measures and currency codes before amounts

    • Imperial (or UK) gallons, quarts, pints and fluid ounces, both ways: "2 imperial pints in ml", "40 liters in imperial gallons"
    • "CHF 300" and "USD 30" work like "300 CHF"
    • The built-in help shows dates on times and imperial pints
    • Convert times on a specific date
      • "3pm PST on Dec 1 in London" gives "11:00 PM GMT, Tue 1 Dec", with daylight saving for that date
      • Dates can be written as on Dec 1, 1 December 2026, 2026-12-01, tomorrow, Friday or next Monday, before or after the time
      • Words that only start like a day (Sunset, Wedding) stay labels
    • Lead the built-in help and README with globally familiar examples

    GitHub · Full changes

  33. Fix wrong answers for percentages, divided units and two-word units

    • "6 is what % of 120" gave 7.2; it's 5%
    • "$100 - 20%" and "$50 + 8% tax" take a percentage of the amount
    • "40 is 20% of what" works backwards to the whole
    • "60 km / 2 hours" is a speed, not km·hours; divisors keep their units
    • Two-word units: nautical mile, fl oz, sq ft, metric ton, short ton, US gallon
    • A word that qualifies a unit ("imperial gallon") is no longer dropped, so the line gets no answer instead of a wrong one
    • Money divided by a unit keeps cents: $362.50 / week
    • Zones with only numeric abbreviations show a name: 3:00 AM GST, not +04
    • Add omacus.com: home page, docs, short links and screenshots
      • Home page with a live replay of real sheets, theme gallery, shortcuts, CLI and per-platform downloads; docs covering syntax, sheets, shortcuts, themes, CLI, Omarchy setup, files, FAQ and how it works
      • Every example result comes from the engine (site/tools/gen.py), and screenshots are captured by the app itself across eight Omarchy themes (site/tools/screenshots.sh)
      • omacus.com/install serves install.sh; /mac, /windows, /linux, /deb, /rpm, /github and /issues are short links
      • Deployed to GitHub Pages by the Site workflow
      • README points to omacus.com, asks for issues, and gets issue templates
    • Read more prose, keep totals in variables, and install on macOS
      • Lines with symbols in the prose ("Food & drinks ₹2,000 * 4") now start at the first number instead of showing nothing
      • subtotal = sum (or total/average) stores a block total in a variable
      • Time conversions can have a label first: "Sunset 6:12pm IST in Sydney"
      • The help's syntax and shortcut tables are left-aligned
      • The installer now handles macOS: it installs Omacus.app from the .dmg without a Gatekeeper prompt and links the CLI
      • New install test workflow runs the one-line installer on Linux and macOS after each release and weekly

    GitHub · Full changes

  34. Ask before changing Hyprland config, and default to SUPER+CTRL+ALT+=

    • The installer now asks whether to add a keybind and floating-window rule (reading the terminal, so it works under curl | bash)
    • The suggested key is SUPER+CTRL+ALT+=; SUPER+ALT+= is Omarchy's "shrink window left a little"
    • Any key is checked against the live Omarchy bindings first; a taken key is never overridden
    • Optionally bind the keyboard's Calculator key too
    • --hyprland, --key "..." and --no-hyprland for unattended installs
    • Keep sheet ids unique when sheets are created back to back
      • Sheet ids were the current time in nanoseconds, but macOS's clock ticks in microseconds, so two sheets made in a row could share an id and the second would overwrite the first one's file
      • Ids now add a per-process counter and are checked against existing sheets and files
    • License under MIT
      • Add the MIT license and set it in Cargo.toml, so the .deb and .rpm carry it too
      • Tidy the README intro, package keywords and code comments
    • Automate releases from version bumps, with notes and installers
      • Pushing a new Cargo.toml version to main runs CI on all three OSes, builds every package, then tags and publishes the GitHub release
      • Release notes come from commit subjects since the last release, with body bullets nested, plus per-platform install instructions
      • New .rpm for Fedora/openSUSE and SHA256SUMS.txt alongside the .dmg, .zip, .deb and .tar.gz
      • install.sh is now a one-line installer (curl | bash) that also works from an unpacked release or a source checkout; --hyprland adds the Omarchy keybind and float rule, with backups and no duplicates
      • README covers installing on Omarchy, macOS, Windows, Ubuntu/Debian, Fedora and other Linux, and how releasing works
      • Actions moved to Node 24 versions
    • Omacus: a notepad calculator in Rust
      • Math, units, percentages, currencies (live rates), variables, prev/sum/total/average, dates and time zones (3pm PST in IST)
      • Multiple sheets in a sidebar, saved as you type and restored with cursors, Sublime-style; deleted sheets go to trash
      • Autocomplete for variables, units, keywords and time zones
      • Built-in help: shortcuts, live syntax examples, tips
      • Follows the Omarchy theme live, else the system light/dark mode
      • Runs on Linux, Windows and macOS; CI tests all three and the release workflow builds .tar.gz/.deb, .zip and a universal .dmg
      • CLI: omacus '$100 in INR' and omacus - for whole sheets

    GitHub

42 releases