• (v0.10.1) Markdown

    AI assistant

    Assistant replies are rendered as proper GitHub-flavored Markdown instead of raw text, so structured answers are far easier to read.

    • Full formatting. Headings, nested lists, blockquotes, task lists, links, and tables all render properly — not just bold/italic.
    • Readable code snippets. Fenced code blocks keep their language label and one-click Copy, and long LaTeX lines now wrap to the panel instead of scrolling sideways.
    • Line breaks preserved. Single newlines from the model are kept, so lists and step-by-step answers lay out the way they were written.

  • (v0.10.0) Diff

    In-editor diff

    When a file you have open is changed on disk — by a build script, git, or another editor — texspark can now show you exactly what changed before you decide how to reconcile it, right inside the editor.

    • A diff, in place. A ± button in the editor header lights up (orange) whenever the file has changed on disk. Click it to see a read-only, color-coded diff — added and removed lines — rendered right over the editor in your editor font. Your work underneath is never touched.
    • Decide with one click. From the diff, Use Disk loads the on-disk version into the editor, and Keep Editor writes your version back to disk. Both fully resolve the difference — no accidental defaults, so you always choose deliberately.
    • Right where you need it. The same “Show Changes…” option appears in the save- and build-conflict prompts, so you can review before overwriting or reloading.


  • See your project’s structure in the sidebar

    A multi-file LaTeX project is more than the file you’re editing. There’s now a project tree under the sidebar’s outline that maps out how your document actually fits together — the files your root pulls in and the bibliographies it cites — so you can jump anywhere in the project in one click.

    • Follows your includes, not the folder. Starting from the build target (or the active file), it walks \input, \include, and \subfile recursively and lists your \bibliography / \addbibresource files — in the order they appear in the source, so the tree reads like the document compiles.
    • Catches problems at a glance. A reference that doesn’t resolve on disk shows up as a red “missing” node — an instant check for typos and stale paths. Commented-out includes are ignored, and a file included from two places is flagged instead of expanded twice.
    • Stays in sync as you work. The tree updates as you edit, switch tabs, or build, and highlights the row for the file you’re currently in. Click any file to open it.
    • Sized the way you like. Collapse the whole section from its header, or drag its top edge to resize it freely — up to the full height of the sidebar. Your choice is remembered.

  • AI answers no longer get cut off, and the model list is live

    Longer replies from the AI assistant used to stop mid-sentence at a fixed token limit, and the model menu was a short, hardcoded list. 0.8.6 removes the cap and lets each provider tell texspark what it can do.

    • Answers run to completion. The shared response cap is gone. OpenAI and Gemini now use their full output budget, so long explanations and code blocks finish instead of getting truncated.
    • Each Claude model gets its real limit. Anthropic’s API requires a max, so texspark reads each model’s true output ceiling from the provider and sends exactly that — never over the limit, never needlessly short.
    • The model picker shows what your key can actually use. Preferences → AI and the assistant header now list models fetched live from each provider, so new releases appear on their own. Offline, it falls back to a built-in list.

  • (v0.8.5) Open With

    Getting texspark to open your .tex and .bib files on double-click used to mean digging through Finder’s Get Info panel — especially if another TeX app had already claimed the extension. Now it’s one button.

    • Set as default from Preferences. Preferences → Compile → File associations has a Set as Default button that makes texspark the editor for .tex, .ltx, .latex, .sty, .cls, .bib, and .bst in one go.
    • Shows the current state. The panel tells you whether texspark is already the default, reading the extension’s real handler — so it’s accurate even when another app owns .tex.
    • Nothing sneaky. texspark never seizes an association silently; macOS asks you to confirm the change, and it only happens when you click the button.

  • (v0.8.4) Steady

    Reload polish

    Reloading a file from disk now leaves you exactly where you were:

    • Caret & scroll stay put — reload keeps your current cursor and scroll position instead of jumping to the top or a stale spot.
    • Full re-render in one pass — syntax highlighting, layout, and the minimap all refresh together, so nothing is left looking half-updated.
    • Caret kept in view — if the reloaded file shrank enough to push the caret off-screen, texspark gently scrolls it back into view.

  • (v0.8.3) Projects

    Licensing

    A round of correctness fixes around licensing and saving. Existing texspark licenses keep working exactly as before — nothing changes for paying users.

    • Product-scoped license keys. Activation and the periodic re-check now confirm a key actually belongs to texspark, so a key for a different product from the same store is turned away with a clear “this key isn’t for texspark” message instead of unlocking the app.
    • Save All, without the modal pile-up. Save All (⌥⌘S) is an explicit “write everything” action, so it no longer asks for per-file overwrite confirmation. Files that changed on disk outside texspark are left untouched — never clobbered silently — and reported together at the end so you can resolve each one with ⌘S or the reload button.
    • Steadier save / reload / build. The rules for what happens when a tab has unsaved edits and/or the file changed on disk are now driven by one shared decision path, covered by tests — so every entry point (⌘S, ⌘B, the reload button) behaves consistently.

    Build commands

    If you juggle projects that build differently — one on xelatex, another on latexmk, a third with a makeindex pass — texspark now remembers the build command for each project, and puts it right where you work.

    • A command per project. Each project (its build target 🔨, or the file you’re editing) keeps its own build command. Switch projects and the command follows — set latexmk once for the book and xelatex for the paper, and never swap them by hand again.
    • Command bar in the Terminal panel. Two always-visible, editable rows sit at the top of the Terminal: the build command with a ▶ to build (⌘B), and your custom command with a ▶ to run it (⌃⌘B). No trip to Preferences to tweak a flag.
    • Templates a click away. The 🔨 next to the build command opens Preferences → Compile, where the engine templates (xelatex / pdflatex / lualatex / latexmk / bibtex / makeindex) and options live.

  • Ever had a file change under you — a git checkout, a quick edit in another app, a script rewriting your .bib — and wondered whether the editor was still showing the truth? texspark now watches your open files, flags a tab the moment its file changes on disk, and asks the right question before any save, reload, or build could quietly clobber one side or the other.

    • External-change detection. Every open tab is watched. When a file changes on disk outside texspark, the tab gets an orange badge — a heads-up, never a surprise auto-reload.
    • Reload on demand. Pull the disk version back in from the ↻ button in the editor header, or right-click a tab → Reload from Disk.
    • Conflict-aware save, reload & build. Each action knows whether the tab has unsaved edits and whether the file changed on disk, and offers exactly the choices that make sense — never silently losing either version. Full behavior below.
    • Safer defaults. “Confirm before overwriting” is locked on and background auto-save is locked off while texspark is in active development.

    Legend: Unsaved edits = the tab differs from what texspark last saved. Changed on disk = the file was modified outside texspark since then.

    Save (⌘S)

    Unsaved editsChanged on diskWhat happens
    NoNoNothing to save — no-op
    NoYesAsks: Reload from Disk / Overwrite with Editor’s Contents / Cancel
    YesNoAsks: Overwrite / Cancel, then writes
    YesYesAsks: Overwrite / Discard / Discard & Reload / Cancel

    Reload from Disk (editor header ↻ · tab menu)

    Unsaved editsChanged on diskWhat happens
    NoNoReloads (identical — no visible change)
    NoYesReloads the disk version immediately
    YesNoAsks: Discard & Reload / Cancel
    YesYesAsks: Discard & Reload / Cancel

    Build (⌘B)

    Unsaved editsChanged on diskWhat happens
    NoNoBuilds straight away
    NoYesAsks: Build with Editor’s Contents / Reload from Disk & Build / Cancel
    YesNoAsks: Overwrite / Cancel, then builds
    YesYesAsks: Build with Editor’s Contents / Reload from Disk & Build / Cancel

  • (v0.8.1) Reload

    Ever had a file change under you — a git checkout, a quick edit in another app, a script rewriting your .bib — and wondered whether the editor was still showing the truth? texspark now watches your open files and lets you pull the disk version back in on demand.

    Reload from disk

    • External-change detection. Every open tab is watched. When a file changes on disk outside texspark, the tab gets an orange badge — no surprise auto-reload, just a heads-up that the on-disk copy has moved on.
    • Reload on demand. Pull the disk version back in from the new ↻ button in the editor header, or right-click a tab → Reload from Disk. If the tab has unsaved edits, texspark confirms before discarding them.
    • Smarter save conflicts. Saving over a file that changed underneath you now always asks first — Overwrite, Discard, Discard & Reload, or Cancel — so another editor’s or git’s changes are never clobbered silently.
    • The overwrite-confirmation safeguard is now locked on while texspark is in active development.

  • (v0.8.0) BibTeX

    Finally, texspark supports BibTeX! For the past while I’ve been heads-down writing a full-length book, where citations never really came up — but now that the manuscript is done and I’m back to research papers, I needed BibTeX again. So here it is.

    BibTeX

    • BibTeX tab in the sidebar. Next to Outline and Labels, a new BibTeX tab lists every entry from the .bib files your project references (\addbibresource / \bibliography), discovered recursively across \input / \include. Filter as you type.
      • Click — insert \cite{key} at the editor cursor
      • Double-click — open the .bib file at that entry
    • Citation autocompletion. Typing \cite{, \citep{, \citet{ (and friends) now suggests your BibTeX keys, the same way \ref{ offers labels — one source of truth, drawn from the same entries.
    • .bib syntax highlighting. Open a .bib file and entry types, field names, citation keys, and braces are colored to match your theme.