Changelog
Every release. Latest first.
v0.23.2
- Auto-release works end-to-end. The release
workflow was failing with HTTP 403 when the default
GITHUB_TOKENtried to upload assets to the GitHub release. Addedpermissions: contents: writeat both the workflow and job level. Futurev*tag pushes now build the universal DMG on GitHub Actions and attach it to the release automatically — no manual step.
v0.23.1
- One-line installer. The README and the install
page now lead with
curl -fsSL https://raw.githubusercontent.com/MPJHorner/IdeUltra/main/scripts/install.sh | bash. The script downloads the latest universal DMG, copies the app to/Applications, and clears the Gatekeeper quarantine flag — no manualxattrdance needed. - CI fix. The unused-import errors that were
tripping
RUSTFLAGS=-D warningson macOS + Ubuntu CI are gone.
v0.23.0
- Luxury light is the new default theme. White
editor canvas, near-white sidebar / status bar (a single lightness
step from the canvas), deep-ink accent (
#18181B— reads as "a really nice black" against white). All status colors rolled back to deep / muted hues — never neon. Borders barely there (~6 %α black), shadows almost imperceptible. The code does the colour work; the chrome stays out of the way. - Dark mode refined. Charcoal/zinc rather than
indigo — a true "night shift" of the light theme rather than a
different product. Ivory accent
#F4F4F6against near-black backgrounds. - STYLE_GUIDE.md grows an "Aesthetic direction" section that codifies the luxury-light intent so future contributors don't accidentally reach for neon.
v0.22.0
- Design system sweep, part 2. The remaining feature surfaces — diff modal, project-search panel, in-file find bar, quick switcher overlay, and the external-change banner — all now route through the shared components. Tokens drive every color and spacing decision; modal shadows and selection states are uniform across every dialog. The whole app feels like one product.
v0.21.0
- Design system overhaul. A new
STYLE_GUIDE.md
distils Zed, Linear, Cursor, Raycast, Vercel Geist, JetBrains Fleet,
and shadcn/ui into one design contract for IdeUltra. The runtime
expression lives in
src/style.rsas semantic tokens (surface ramp, foreground ramp, accent, status-with-tint, VCS palette, shadow tiers, spacing grid, type scale, radii). - Reusable components. New
src/ui/components/module: Card, ModalFrame, PrimaryButton, GhostButton, IconButton, ListRow (4-state lifecycle), Section, EmptyState, Pill (neutral + status), Hint, SearchInput, Banner. Every component pulls colors/spacing from the tokens. - UI sweep. Finder, command palette, preferences, keymap picker, close/delete/replace/recovery/name-prompt modals, and the update banner all now use the shared components. Modals have proper shadows, the type scale is consistent, the 4-state row lifecycle (default → hover → selected → focused) is uniform.
v0.20.0
- Find within selection. Open the find bar (⌘F) or find-and-replace (⌥⌘F) with a multi-line selection active and the search is automatically scoped to that range. A blue In selection chip appears in the find bar; click it to drop the scope and search the whole buffer.
- Tab drag-to-reorder. Drag any tab along the strip to reposition it. The active-tab index, MRU order, and split-view's secondary pointer all reindex correctly so ⌃Tab, ⌘1..9, and the split pane keep working.
v0.19.0
- Update checker. On launch, IdeUltra asks the
GitHub Releases API whether a newer tag is available. If yes, a
banner shows under the menu bar with the current → latest version
and a View release button that opens the GitHub
page in your browser. The check runs in a background thread so
startup latency is unchanged; the request fails silently when
offline. Disable via
check_for_updates: falsein settings.json (not yet exposed in the Preferences UI).
v0.18.0
- Create new file from ⌘P. Type a relative path
like
src/foo.rs; if nothing matches, an extra+ Create file: …row appears at the bottom of the results. Enter writes an empty file (creating intermediate directories), refreshes the workspace index + git status, and opens it in a new tab. Reusesfs_ops::validate_nameso reserved names and traversal (..) are rejected.
v0.17.0
- Recent files surface first in ⌘P. The fuzzy file finder now lists recently-opened files at the top when the query is empty (most-recent first). When you type a query, recent files get a position-weighted score bonus so they outrank otherwise-equal matches — most useful is "type two letters and the file you were just in jumps to the top".
v0.16.0
- Open Recent Folder.
File → Open Recent Folderlists the last 10 workspaces you've opened. Same MRU semantics as Open Recent (file-level): each open pushes to the head; entries whose directories have been deleted are pruned on startup. - Workspace name in window title. The macOS title bar
now shows
filename — WorkspaceName — IdeUltrainstead of just the filename, so the Dock and ⌘Tab switcher show context.
v0.15.0
- Sidebar file operations. Right-click a folder for
New File…, New Folder…; right-click a
file for Rename…. Both contexts get Delete
(with confirmation), Reveal in Finder, and
Copy Path. Name input rejects empty values, separators,
NUL bytes, reserved Windows names, and
./..— inline error explains why if the validation fails. Open tabs whose paths are renamed or deleted are updated or closed in place; the workspace file index and git status refresh automatically.
v0.14.0
- New untitled buffer (⌘N). Creates an in-memory tab labelled
Untitled N. The recovery store and autosave both skip it; the only way to persist it is Save As. - Save As (⇧⌘S). Picks a destination via the native save panel (defaults to the workspace root). Promotes an untitled tab to a real file, applies on-save normalisation, refreshes git status, drops the recovery snapshot, and adds the path to Recent files. Save on an untitled tab now routes through Save As automatically.
v0.13.0
- Select next occurrence (⌘D). With no selection, picks the word under the cursor. With a selection: jumps to the next match in the buffer (wraps at the end). Identifier-aware —
_and Unicode letters count as word characters. - Split state persists. Quit with two panes open and you come back to two panes, focused on the same side.
v0.12.0
- Replace in project. Project search panel grows a Replace toggle and "Replace All in files" button. Confirmation modal shows the file + match counts before touching disk. Open tabs for affected files update in place; git status + file index invalidated.
v0.11.0
- Split editor pane (⌘\). A second editor pane opens beside the first, each with its own active tab. Click a tab in either pane's strip to both focus that pane and activate the clicked file. Toggle again to collapse.
v0.10.0
- Trim trailing whitespace on save and ensure final newline on save, both default on.
- Indent style preference — Tab, 2 spaces, 4 spaces (default), or 8 spaces. Multi-line Tab/Shift+Tab uses the chosen unit.
- Soft wrap toggle — optional word-wrap for long lines.
v0.9.0
- Bracket-pair matching. Place the caret on or just after
(,[, or{— both it and its match get a subtle tint. - Preferences window (⌘,). Real settings UI for theme, zoom, markdown preview, autosave, keymap.
v0.8.0
- Quick switcher (⌃Tab). Hold ⌃, press Tab to cycle through the most-recently-used tabs; release to switch.
- CI on every push.
cargo testruns on macOS and Ubuntu (Linux build verified for the first time). Pushing av*tag auto-builds and uploads the universal DMG.
v0.7.0
- Universal binary. Fat binary for both arm64 and x86_64. Runs on every Mac released since 2020.
- Auto-pair brackets and quotes. Typing
(,[,{,",', or`inserts the matching closer; cursor parks between them. Skip-over when typing the closer next to its match. Quote pairing suppressed inside words sodon'tstays a contraction.
v0.6.0
- Toggle line comment (⌘/). Comments / uncomments the current line or selection with the language-appropriate token.
- Indent / dedent on selection with Tab / Shift+Tab.
- Dirty-close confirm. Closing a tab with unsaved changes prompts Save, Don't Save, or Cancel.
- Tab right-click menu: Close, Close Others, Close All, Copy Path, Reveal in Finder.
- Word count + reading time in the status bar for prose tabs.
v0.5.0
- Keymap presets. Pick IdeUltra Default, VS Code, or PhpStorm on first launch.
- Visual overhaul. Calmer chrome, deeper indigo background in dark, real modal shadows, softer corners.
- Logo. Stylised
< >glyph in cyan→blue gradient. - Fuzzy finder fixes. Original-case filenames, file-type icons, redesigned modal frame.
v0.4.0
- Auto-save on focus loss.
- Text transformations: Sort Lines, Unique Lines, Upper/Lower Case via command palette.
- Git status decorations. M / A / ? / D / R / U / ! badges in the sidebar.
v0.3.0
- Markdown preview (⌥⌘M). Live side-pane for
.mdtabs. - Diff view for external changes. "View diff" on the amber file-changed banner.
- Recent files.
File → Open Recentshows the last 10 opened files.
v0.2.0
- Fuzzy file finder (⌘P).
- Project-wide search (⇧⌘F).
- Command palette (⇧⌘P).
- Crash recovery for dirty buffers.
v0.1.0
Initial MVP. Ten deliverables (D1–D10), all shipped.
- File tree, tabs, monospace editor.
- Syntax highlighting for 100+ languages via syntect.
- Find & replace with case/whole-word/regex toggles.
- Go to line, sidebar toggle, zoom.
- Lazy file tree, gitignore-aware.
.git,target,node_moduleshidden. - Live file watcher: clean buffers reload silently, dirty buffers show a banner.
- Window size/position, sidebar state, theme, zoom, open tabs survive a relaunch.