• (v0.10.6) Rearrange

    Make the window yours: put the PDF where you want it, and tuck the preview away when you just want to write.

    Layout

    • Swap the editor and PDF sides — a new button in the editor status bar mirrors the whole layout, moving the PDF / AI panel to the left (with the outline and editor together on the right) and back again. Your choice is remembered across launches.
    • Hide the PDF / AI panel — a toggle next to the swap button collapses the panel when you want the whole width for writing. Reopen it from View → Show / Hide PDF & AI Panel (⌥⌘P); it also comes back on its own whenever you jump to the PDF or send a selection to the assistant.

  • (v0.10.5) Focus

    Room to focus: collapse the side panel when you want the whole window for writing, and type without the editor flickering under you.

    Editor

    • No more flicker at the bottom while typing — in some spots, typing could momentarily blank out the lines near the bottom of the editor: the line numbers stayed in the gutter while only the text flashed in and out. The visible text now stays stable as you type.

    Panels

    • Hide the PDF / AI panel — a new toggle in the editor status bar collapses the right-hand PDF / AI column, matching the sidebar and bottom-panel toggles already there. It reopens on its own whenever something needs it — a PDF jump (forward search, an outline or label click, or after a build) or sending a selection to the AI assistant — so an action is never dropped into a hidden pane. The choice is remembered across launches.

    Sidebar

    • Working directory in view — the current working directory is now shown beneath the project dependency tree, so it’s clear where builds and commands run from.

  • (v0.10.4) Icons

    Custom file icons

    • LaTeX & BibTeX documents get their own icons. When texspark is your default editor, .tex, .sty, .cls, and .bib / .bst files now show texspark’s custom document icons in Finder instead of a generic badged page.

  • You ran a build, it failed, and while scrolling the log you found this near the top:

    restricted \write18 enabled.

    It is an informational LaTeX message, not an error. It means restricted shell escape is active: TeX can run certain permitted external commands.

    If your build failed, look further down the log for the first error message—often a line beginning with !. Start with that error and its surrounding lines, rather than changing shell-escape settings just because you saw this status message.

    What the line actually means

    \write18 is TeX’s mechanism for running shell commands during compilation — historically, stream 18 was the one wired to the operating system. A package can use it to call external programs mid-build: syntax highlighters, plotting tools, image converters.

    Running arbitrary shell commands from a document you may have downloaded from the internet is, obviously, a security hazard. So modern TeX distributions ship with a compromise: restricted mode. A short, vetted whitelist of safe programs (like bibtex, kpsewhich, epstopdf) is allowed to run; everything else is blocked. The log line is simply the engine announcing this default state:

    • restricted \write18 enabled — the normal, safe default. Whitelisted helpers can run, nothing else.
    • \write18 enabled (no “restricted”) — full shell access is on, because you passed -shell-escape.
    • \write18 disabled — shell access is fully off, usually via -no-shell-escape.

    It’s an informational status line, printed before your document is even read. It cannot be the reason your build failed.

    So where is the real error?

    Further down. In a TeX log, actual errors start with ! at the beginning of a line — for example:

    ! Undefined control sequence.
    l.42 \includegraphcis
                          {fig/tree.pdf}

    Search the log for a line starting with ! (in a text editor, search for a newline followed by !), and read the l.<number> line below it — that’s the file line where TeX gave up. If there’s no ! at all, check for Emergency stop or a missing-file message like LaTeX Error: File '...' not found.

    When you actually need \write18

    Some packages genuinely need to run external programs, and restricted mode is not enough for them. The usual suspects:

    • minted — calls Pygments for syntax-highlighted code listings
    • gnuplottex / pgfplots with external data pipelines — call gnuplot
    • svg — calls Inkscape to convert SVG figures
    • tikz externalization — compiles each TikZ picture as a separate job to speed up rebuilds

    These packages fail with messages like Package minted Error: You must invoke LaTeX with the -shell-escape flag — which is your cue, and the only situation where changing the default makes sense. Add the flag to your compile command:

    xelatex -shell-escape -synctex=1 main.tex

    One honest caution: -shell-escape means the document can run any command your user can. That’s fine for your own manuscript; it’s worth a moment’s thought before compiling a .tex file a stranger sent you. Turn it on for projects that need it, not globally.

    Setting it per project in texspark

    In texspark, the build command is an editable shell command, remembered per project — so -shell-escape lives only where it belongs. Edit the command in the Terminal panel’s header (or Preferences → Compile) for the project that needs it:

    xelatex -interaction=nonstopmode -synctex=1 -shell-escape {file}

    Your other projects keep the safe default. And when a build does fail, the Issues panel has already parsed the log for you — every ! error listed with its file and line, one click from the offending spot. No scrolling past status lines that were never the problem.


  • (v0.10.3) Themes

    Editor color themes

    A new Appearance tab in Preferences brings the window appearance, editor font, and full color theming together in one place.

    • Built-in presets. Pick from Light, Dark, and popular editor themes — Monokai, Dracula, Nord, One Dark, Solarized (Dark & Light), Gruvbox Dark, and GitHub Light. Choosing a theme also sets the matching light/dark window.
    • Full color control. Fine-tune all 11 editor colors — background, gutter, body text, commands, environments, math, braces, comments, and accents. Tweak any color and the theme switches to Custom.
    • Lightweight color picker. A compact popover with a curated palette, a hex field, and a screen eyedropper — no bulky system color panel. Changes apply to the editor live.

  • texspark’s AI panel talks to Claude, ChatGPT, or Gemini — with your own API key, on your own terms. Setup is one paste per provider. This guide covers getting a key, entering it, and what it actually costs (less than you’d guess).

    1. Get an API key

    An API key is a pay-as-you-go credential — different from a ChatGPT Plus or Claude Pro subscription. You create one in the provider’s console, and you’re billed only for what you use:

    You only need one provider to start — pick whichever you already have an account with. The key is a long string starting with something like sk-; copy it right away, some consoles show it only once.

    2. Enter it in texspark

    Open Preferences → AI, and paste the key into the field for that provider. That’s it — the key is stored in the macOS Keychain automatically, never in a plain file, and it’s sent nowhere except to the provider you chose.

    Each provider has its own field, so you can set up one, two, or all three and switch freely later.

    3. Start a conversation

    Hit ⌘T — the PDF panel flips to the chat. In the panel header, pick the provider and then a model from the dropdown (each provider lists its available models; the default is a sensible middle ground).

    • Attach your document — one toggle sends your source as context, so the assistant answers about your file, not a pasted fragment.
    • Send a selection — highlight a paragraph and press ⌘⇧A to ask about exactly that part.
    • Paste the answer straight back into the editor, and ⌘B.

    What does it cost?

    Far less than people expect. API pricing is per-token (roughly, per word), and LaTeX questions are small: asking about an error, rewording a paragraph, or generating a table costs a fraction of a cent to a few cents, depending on the model and how much of your document you attach. Regular use while writing a thesis typically lands in the range of a coffee or two per month — and every provider’s console shows a live usage page, so nothing surprises you.

    If you’re cost-conscious, pick a smaller model from the dropdown for everyday questions and switch to a bigger one when a derivation actually needs it.

    Questions, or a provider behaving oddly? Email support@texspark.io — it goes straight to the developer.


  • (v0.10.2) Outline

    (v0.10.2) Outline

    Outline

    • Three-level numbering. The outline now numbers three levels deep, matching LaTeX’s defaults — section·subsection·subsubsection in article, and chapter·section·subsection in book/report.

    In-editor diff

    • Consistent external-change actions. Every “changed on disk” prompt now speaks the same language — Use Disk, Keep Editor, Revert to Saved — and each one offers Show Changes… to preview the diff first.
    • Tidier overlay. The inline diff now closes automatically once you resolve a build conflict, and the header’s diff / reload buttons dim consistently when there’s nothing to reload.

  • (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.