Ide Ultra

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_TOKEN tried to upload assets to the GitHub release. Added permissions: contents: write at both the workflow and job level. Future v* 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 manual xattr dance needed.
  • CI fix. The unused-import errors that were tripping RUSTFLAGS=-D warnings on 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 #F4F4F6 against 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.rs as 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: false in 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. Reuses fs_ops::validate_name so 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 Folder lists 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 — IdeUltra instead 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 test runs on macOS and Ubuntu (Linux build verified for the first time). Pushing a v* 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 so don't stays 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 .md tabs.
  • Diff view for external changes. "View diff" on the amber file-changed banner.
  • Recent files. File → Open Recent shows 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_modules hidden.
  • Live file watcher: clean buffers reload silently, dirty buffers show a banner.
  • Window size/position, sidebar state, theme, zoom, open tabs survive a relaunch.