Repository navigation
Releases
Tend 2.9
Nudge is now Tend
Same app, new name. Tend changes the words and the layout of a self-contained HTML deck or report without opening a code editor, and leaves everything you did not touch exactly as it was. The name now sits with its siblings, Trellis and Sage: it tends a deck that is already planted, one small change at a time.
Nothing about how it edits has changed.
If you already use Nudge, you do not need to do anything. Nudge 2.8 keeps working. If you do switch:
- Tend installs as a separate app, so it sits alongside Nudge rather than replacing it. Move Nudge to the Bin when you are happy.
- Its backups go to a new folder,
~/Library/Application Support/Tend/Backups. Nudge's backups stay where they were, in~/Library/Application Support/Nudge/Backups; nothing is moved or deleted. - macOS asks once on first launch, as it did for Nudge, because to macOS this is a new app.
- Window size and recent files start fresh.
The About box and the help say "formerly Nudge", and the menu commands for moving things by a step are still called Nudge Left, Right, Up and Down, which is the usual Mac name for that.
Installing
- Download Tend-2.9.zip and unzip it.
- Drag Tend into Applications.
- Double-click it. macOS will refuse and say it cannot check it for malicious software. Open System Settings ▸ Privacy & Security, scroll to the bottom, and click Open Anyway next to Tend. You only do this once.
Apple silicon Macs running macOS 13 (Ventura) or later. About 1 MB: there is no bundled runtime, just AppKit and WebKit.
The guide is attached, and there is more detail at https://chriskeene.me/tend
Nudge 2.8
A typeface built for reading
Nudge is now set in Atkinson Hyperlegible Next instead of Outfit, matching chriskeene.me. The Braille Institute designed it for legibility, particularly for low-vision readers, which suits an interface that is mostly small text. The font travels inside the app, so it looks the same on every Mac.
Nothing needed resizing. Measured label by label, it comes out within a few points of Outfit, and nothing that fitted before stops fitting. One visible difference: zeros have a slash through them, which is how the typeface tells 0 from O.
Also
--fontcheckchecks every weight, not just the family name, so a copy whose weights all collapse onto one face is caught too.- The tests now draw with the faces that ship. The interface checks used to pick the typeface up from whatever the Mac had installed, so a missing face would have been measured as the system font and passed. They now register the bundled faces, and a check fails if any weight falls back.
Installing
- Download Nudge-2.8.zip and unzip it.
- Drag Nudge into Applications.
- Double-click it. macOS will refuse and say it cannot check it for malicious software. Open System Settings ▸ Privacy & Security, scroll to the bottom, and click Open Anyway next to Nudge. You only do this once.
Apple silicon Macs running macOS 13 (Ventura) or later. About 1 MB: there is no bundled runtime, just AppKit and WebKit.
The guide is attached, and there is more detail at https://chriskeene.me/nudge
Nudge 2.7
A small Mac app for adjusting self-contained HTML presentations and reports without coming back to a code editor for every tweak.
Two modes, switched with ⌘E:
- Wording — click any text in the live preview and type, and set how those words look: size, alignment, weight and colour.
- Layout — click any element and adjust its size, spacing, position or order.
Installing
- Download Nudge-2.7.zip and unzip it.
- Drag Nudge into Applications.
- Double-click it. macOS will refuse and say it cannot check it for malicious software. Open System Settings ▸ Privacy & Security, scroll to the bottom, and click Open Anyway next to Nudge. You only do this once.
Apple silicon Macs running macOS 13 (Ventura) or later. About 1 MB — there is no bundled runtime, it is just AppKit and WebKit.
Why it doesn't just use the browser's copy of the page
Almost every "edit HTML visually" tool sets contenteditable and reads back outerHTML. These files run their own JavaScript, so serialising the DOM bakes the current state into the file permanently: save while viewing slide 3 and every other slide gets a hidden attribute. The deck is destroyed.
Nudge never serialises a DOM. It scans the original file with an offset-tracking tokeniser, renders the real unmodified file in a WebKit view, aligns the two sequences, and on save splices your new text into those byte ranges back to front. Everything you did not edit is preserved byte for byte: CSS, JavaScript, indentation, comments, attribute order, entity spelling.
Safety
⌘R shows every pending edit, old against new, before anything is written. Every save leaves a timestamped copy in ~/Library/Application Support/Nudge/Backups. Smart quotes and text substitution are switched off, so nothing silently turns a hyphen into an em dash.
Caveats
A personal project and a work in progress. It is not signed with a paid Apple developer certificate, hence the first-launch step above. Layout changes are written as inline declarations on the element you selected, so they never restyle the other fourteen slides — but review your file before you send it anywhere.
The guide is attached, and there is more detail at https://chriskeene.me/nudge