github Oleafly/Oleafly v0.4.8-rc
Oleafly v0.4.8-rc

latest releases: server-v0.1.2, v0.4.12, v0.4.11...
pre-release21 days ago

Release candidate of Oleafly 0.4.8 for beta testers. The auto-updater stays on 0.4.7, so this build only reaches people who download it. On Linux it comes as an AppImage or a .deb. The RPM comes back with the stable release.

What's new in 0.4.8-rc

Thanks

  • Saran Bodda (@ssbodda-powern): a
    composer that grows with your message (#304), files and PDFs in the
    assistant (#305) and any AI provider in Tools (#306).
  • @domiden: Git hosting beyond GitHub (#296).
  • Wahid Mounir (@wahidmounir): pluggable
    research agents (#84), with saved agent sessions (#142), Hermes (#140),
    scheduled and resumable tasks (#141) and a Windows sandbox for tasks, in
    beta (#143).

Added

  • The oleafly command. It builds, checks and inspects your projects from a
    terminal with the same compilers, settings and folders as the app, and
    every command can print one JSON result with stable error and exit codes
    for scripts and coding agents. Commands cover builds and watching, the
    project's map (oleafly context), word counts, exports and conversions,
    citations and bibliography cleanup, Typst versions, templates, the app's
    checkpoints and settings. Turn it on under Settings > General > Terminal
    command. On Windows, Install copies it into your user folder and adds it to
    your PATH. Oleafly's own terminal and the agents it starts have it on their
    PATH.
  • oleafly mcp, an MCP server for Claude Code, Claude Desktop, Codex, Cursor
    and Gemini CLI. It needs no URL, token or Node.js. With the app open it
    passes calls to the app, with your approval rules; on its own it offers
    read tools and compiling. oleafly mcp config --client NAME prints or
    writes the setup. The bundled oleafly-cli skill teaches agents the
    commands.
  • oleafly check runs Preflight from a terminal or CI, and oleafly lint
    runs the LaTeX, BibTeX, spelling and grammar checks. Both print people's
    text, JSON or SARIF for code scanning, and --exit-code fails a CI job on
    findings.
  • oleafly auth, oleafly remote and oleafly server. Sign in to an
    online LaTeX service, download projects, and keep a folder in two-way sync
    through the service's Git bridge, with the same merge as the app and a
    marked-up latexdiff PDF of your changes. Sign the command line in to an
    Oleafly server as its own device to manage sharing and members and to read
    and write comments. Sign-ins live in the encrypted store the app uses.
  • oleafly ask and oleafly agent run run the Oleafly agent on a project
    without opening the app. The agent can always read; --allow adds writing,
    commands or network access. Changes go to a review folder first, and
    oleafly agent apply writes them into the project.
  • Research tasks are experimental in this release and off for everyone.
    Settings > Experimentation has the switch, with a warning next to it: runs
    can stall, fail or leave changes you have to sort out by hand, so turn them
    on at your own risk. Turning it on adds the Research tab and the Research
    section in Settings. While it is off, Files has no Task outputs, the
    assistant and outside agents get no task tools, and nothing moves to the
    background helper; turning it off again stops every running task. The
    assistant, the oleafly command and CLI agents do not depend on the
    switch.
  • Research tasks that keep going after you quit. Mark a task Keep running
    when Oleafly is closed, and a small helper takes it over when you quit,
    experiment runs included. Approvals wait for you with a notification, and
    the app takes the task back when you open it. Settings > Research >
    Background tasks turns this off, can start the helper when you sign in,
    and shows, stops and logs it. Task details show In background or Moving
    back, and Show earlier activity loads what a task did before it moved.
    oleafly daemon run, status and stop work with the helper from a
    terminal.
  • Research task briefs: a goal, success criteria, scope, a main metric and a
    budget for time, cost and runs. With Review the plan first, the agent
    writes plan.md and waits for your approval. Each task keeps a research
    record (plan, ledger, sources, hand-off and report) that comes back with its
    review and applies without a preview, long jobs run as runs
    with logs and metrics, and the Progress tab shows runs, the ledger and the
    budget. When a task finishes, Oleafly checks that the project builds, new
    references resolve, cited numbers match their runs and new figures are
    used. Tasks can start at a set time, and Resume continues where a task
    stopped.
  • Remote compute for research tasks. Add SSH machines and Slurm clusters, or
    Cua Spaces, under Settings > Research > Compute, and send a task's runs
    there. Oleafly checks host keys, and Forget host key works for machines
    from your SSH config too. It reads your SSH config without changing it and
    never stores passwords or keys. Runs choose a profile: Analysis by
    default, or Training with GPUs and longer time limits.
  • A Windows sandbox for research tasks, in beta and off by default. Commands
    run in an AppContainer that reaches only the task's files and the folders
    you allow. With it on, CLI agents can run as tasks on Windows too.
  • Desktop apps. Agents can use the desktop programs and websites you allow,
    such as a journal's submission form or a statistics package, through Cua
    Driver, which you install yourself. Oleafly asks before each action unless
    you allow that kind of action for the chat, session or task, and your own
    signed-in browser and scripts always ask. Common browsers, terminals, code
    editors and password managers can't be added as apps. For a browser, add
    the websites instead. Set it up under Settings > Integrations > Desktop
    apps.
  • Web search and page reading in the assistant. Turn on Web in the composer.
    Recent Claude and OpenAI models use their provider's search; other models
    search with a Brave, Tavily or Serper key you add in Settings.
  • Effort for the built-in assistant and CLI agents, from no reasoning to the
    model's maximum, and a usage meter that shows the context used, tokens and
    cost of the conversation, with your provider's remaining credit where it
    reports one.
  • Files, PDFs and images in the assistant, by attaching them, pasting or
    dragging them into the composer (#305). PDFs send their text (up to 100
    pages) and page images where the model reads images.
  • CLI agents: saved conversations with dates, search, rename and delete,
    exported as Markdown or JSON (#142); Hermes (#140), also on a remote
    machine; routing an agent's model calls through a key you pick; sign-in
    from Oleafly's terminal; the shared composer with attachments, effort and
    usage; text you select in the editor goes with your next message as a
    quote; and version 2 of the Agent Client Protocol, as an experiment.
  • Git hosting beyond GitHub (#296). Sign in to GitLab, Gitea, Forgejo,
    Codeberg and servers you run yourself, with an access token or, on
    github.com, a code in your browser. Publish to any connected account, link
    a project to any repository by its address, import from an account or clone
    by address, and use your organization's certificate authority. Push and
    pull explain SSH and credential problems in plain words.
  • A model for Tools (#306). Image to LaTeX, equation images and scanned PDFs
    can use any model you've set up, a local Ollama model by default, or
    Mathpix with your own keys. A hosted choice says where your files go, and
    long scans show the page count and estimated cost before they start.
  • Terminal settings: the shell (PowerShell 7, Windows PowerShell, Command
    Prompt, Git Bash, WSL or a custom path on Windows), scrollback, copy on
    select, what Shift+Enter sends and Option as Meta on macOS. Find in the
    terminal (Ctrl+Shift+F on Windows and Linux, so Ctrl+F still reaches the
    shell), activity dots on busy tabs, tab titles from programs, Open in
    terminal from the file tree, dragging files in to type their paths, and
    shortcuts for new, close, next and previous terminal.
  • Dropping a file from the Files panel into a document now inserts a link to
    it, written the way that language writes links: [name](<path>) in
    Markdown, #link("path")[name] in Typst and \href{path}{name} in LaTeX,
    relative to the open document. Dropping into an existing \input{…} or
    ](…) still inserts just the path. (#315)
  • Ctrl+Space completes project files inside Markdown and Typst links and in
    LaTeX \href{. The Files panel has Copy link and Insert link, and
    the command palette has Insert link to file. (#315)
  • In Visual mode, Cmd+click (Ctrl+click on Windows and Linux) on a link to a
    project file opens that file in Oleafly. (#316)

Changed

  • The handles between the sidebar, the editor and the preview show their
    grip only while you point at them or drag them.

  • With an Anthropic key, the default model is now Claude Opus 5.5, and the
    model list has Claude Sonnet 5.5, Claude Haiku 5.5 and Claude Fable 5.1.
    Opus 5.5 costs $4 per million input tokens and $20 per million output
    tokens. Opus 5 costs $5 and $25.

  • The other providers' model lists follow their current lineups too. OpenAI
    starts on GPT-6.1 Sol, with GPT-6 Astra and GPT-6 Luna. Google starts on
    Gemini 3.8 Flash and adds Gemini 4 Argon. DeepSeek starts on DeepSeek
    Flash, xAI on Grok 4.7 and OpenRouter on GPT-6 Luna. Z.AI lists GLM-5.3 and
    GLM-5.3 Flash, the two models the GLM Coding Plan serves, and Mistral adds
    Mistral Medium.

  • Models their providers retired are gone from the lists: Magistral on
    Mistral, the older GLM models, and Llama 3.3 70B on Groq, which Groq shut
    down for free and developer accounts. A model you already picked stays
    selected, on any provider.

  • Usage and budget estimates price the new models. Context size, image
    support and prices in the model list come from a fresh copy of the
    models.dev data.

  • Cloud sync asks Dropbox for the four permissions it uses and no others, and
    the docs list them. (#317)

  • The default LaTeX engine is now set on each computer and no longer syncs, so
    a computer without a TeX installation keeps Tectonic. (#317)

  • Cloud sync leaves out .venv and __pycache__ folders. A build file you
    track in Git, such as a log of results, is now backed up. (#317)

  • The assistant's composer grows with your message and keeps a draft per
    chat, with your earlier messages a key press away (#304). Editing an
    earlier message starts a new chat from there and keeps the old one in
    History.

  • Oleafly's terminal sends keys to the shell. Ctrl+C, Ctrl+R, Ctrl+W and
    the other shell keys reach the program running in it, while Toggle
    terminal, the command palette, Settings and the terminal tab shortcuts
    still work. Closing a busy terminal, the project or the app asks first.

  • Terminals pace large output, so a long compile log keeps the window
    responsive, and tabs you aren't looking at keep all of their output.

  • Research tasks ask before each command when you set them to, and the
    requests wait in the Research tab for up to a day.

  • Tools no longer depend on the assistant's provider, and the editor
    toolbar's image button uses the model for Tools. If you haven't picked one
    and no local model can read the image, it still uses the assistant's model,
    as before.

  • Updates and both Windows installers, the .exe and the .msi, stop the
    background helper before they replace Oleafly.

  • A few oleafly changes that scripts may notice. Lines that started with
    note: now start with warning:, and each warning in --json output has
    a code. A failed build now keeps the last good PDF instead of deleting it,
    so check the exit code or ok. Markdown builds need Pandoc 2.19 or later; the
    copy that comes with Oleafly is newer. A main document with &, %, # or $ in its name is
    refused, as the app refuses it. In --json output, build.log holds the
    last 16 KiB of the log unless you pass --log full. In a folder the app
    opened in place, builds go to the app's build folder for it
    (~/.oleafly/linked/<id>/build) instead of .oleafly/build inside the
    folder, and oleafly project info shows that folder.

  • Forks that use their own GitHub OAuth app set its client ID with
    OLEAFLY_DESKTOP_GITHUB_CLIENT_ID at build time. The old
    VITE_GITHUB_CLIENT_ID still works.

Removed

  • The in-app browser and its settings. Desktop apps lets agents use the
    websites you allow in your own browser, the assistant can search and read
    pages, and links open in your default browser. Cookie copy for online LaTeX
    sign-in stays.

Fixed

  • Paper review stopped with an error on Claude Opus 5 and the newer Claude
    models, because they reject the temperature setting it sent. Citation
    suggestions on those models fell back to keyword scores for the same
    reason, without saying so. OpenAI's GPT-5 and GPT-6 models refuse the
    setting as well. Oleafly now leaves it out for every model that rejects or
    ignores it, Gemini 3 and later included.
  • On DeepSeek, the assistant could stop with an error after its first tool
    call. DeepSeek's thinking mode expects the reasoning from every earlier turn
    to be sent back, and Oleafly doesn't keep it. Assistant runs on DeepSeek now
    switch thinking off.
  • Long assistant chats and research tasks stopped with "agent message count
    exceeded its safety limit" after 128 messages. At that point Oleafly should
    summarize the older messages and carry on, but the request for the summary
    contained all of them and hit the same limit. The summary now covers the
    newest messages that fit.
  • Oleafly treated many models that read images as text-only, among them
    Claude Opus 5 and every newer Claude, GPT-6, Grok 4, Mistral Large and
    DeepSeek Flash. The assistant never got the rendered PDF pages and figure
    previews it asks for to check its work, and Refine with AI and Image to
    LaTeX were unavailable. Oleafly now also checks the model details from the
    provider's list, so any model listed with image input gets images.
  • PDF to LaTeX transcribed the wrong pages of a scanned PDF when you picked
    a page range.
  • Preflight's checks for fonts that aren't embedded in the PDF and for files
    attached to it never found anything. Both work now, in the app and in
    oleafly check, and the attachment check also finds files attached to a
    page, as \attachfile adds them.
  • Importing a Git repository left out the files it marks export-ignore,
    and the next commit deleted them from the repository. Tracked files the
    import leaves out on purpose, such as .DS_Store, no longer turn into
    deletions when you stage everything. A repository that changed during an
    import could also get its files from one commit and its history from
    another.
  • Copying your sign-in from a browser didn't sign you in to an online LaTeX
    service. It now does, without opening a window.
  • When you linked a project to an online LaTeX service, Oleafly kept a copy
    of each file the online version replaced, and stopping the sync deleted
    those copies. They're now saved in Oleafly's data folder, and Oleafly
    tells you where.
  • The sync copy of a project linked to an online LaTeX service grew with
    every sync. It's now tidied after a sync, at most once a day.
  • Deleting a project for good from the Recycle Bin left its assistant chats
    on disk and in chat search. They're now deleted with it.
  • Switching to another project while the assistant was replying could lose
    the part of the reply it had already written. Oleafly now keeps it.
  • On macOS and Linux, each Show in folder left a finished process behind
    until you quit Oleafly. It now goes away as soon as it finishes.
  • Review in Files > Task outputs did nothing. It now opens the task in the
    Research tab.
  • Task details showed only a long task's first 100 entries, with newer ones
    appended after an unmarked gap. They now open on the newest activity, and
    Load more shows older entries.
  • A CLI agent conversation could hang while starting on Linux when an
    environment variable wasn't valid UTF-8.
  • Clicking a word in the PDF selects that word in the source, even when it
    appears more than once on the line. Before, Oleafly picked the first one.
    (#314)
  • LaTeX jumps between the PDF and the source land on the right word and line.
    The first word of a source line no longer jumps to the line above, a
    paragraph written as one long line highlights the typeset line the cursor
    is on, LuaLaTeX headings stay in their chapter file, accents typed as TeX
    commands match, and rotated pages work. On 26,000 test clicks, exact words
    went from 95.7% to 99.9%, and right lines from the source went from 28% to
    99.9%. (#314)
  • Typst jumps work word to word too. From the source, the highlight is on the
    line with the word under the cursor instead of the start of its paragraph,
    and a click in the PDF selects the word clicked.
  • Links to project files stay relative paths however you make them: pasted
    from the preview, typed in the link field, dragged in or copied with Copy
    Link. Before, Windows saved them as http://tauri.localhost/…, macOS and
    Linux dropped them, and clicking one in Visual mode opened a dead browser
    page. Links already saved the old way open the right file in the preview.
    (#316)
  • Images whose names have spaces or non-Latin letters keep readable paths
    after an edit in Visual mode, and two images on their own lines no longer
    merge onto one line. (#316)
  • In the Linux AppImage, Git push, pull and fetch failed on recent
    distributions such as CachyOS and Arch with a missing nghttp2 symbol, and
    Python didn't start from the built-in terminal. Programs Oleafly starts no
    longer inherit the AppImage's library paths.
  • Cloud sync fixes (#317):
    • Large files never finished uploading on slow connections.
    • Renaming a file while its new name couldn't upload, for example with
      Dropbox full, deleted the old name on your other computers.
    • When files disappeared from a project's record in Dropbox, for example
      after a restore, Oleafly deleted them on this computer too. It now pauses
      and asks, with Put them back in Dropbox and Delete here too.
    • A project.json from another computer that this version can't open no
      longer replaces the one here.
    • When a conflict copy couldn't upload, the other computer's version was
      replaced anyway. Conflict copies are now named after the computer that
      wrote that version.
    • Editing the same AI persona on two computers made every computer drop
      all personas. Personas now merge one at a time.
    • A project.json this version can't read no longer makes excluded
      folders upload.
    • An upload whose reply got lost, or that Dropbox turned away for too many
      writes, started over from the beginning or stopped the sync.
    • Turning off sync on this computer now stops a sync that's running.
      Disconnecting tells you when Dropbox couldn't be reached to end
      Oleafly's access, and the browser says you're connected only once
      connecting has finished.
    • A damaged sync record no longer stops sync for good, a file another
      program has open on Windows is tried again within minutes, and the first
      backup of a large project no longer holds up saving.
    • A project trusted to run shell commands asks again once files arrive
      from Dropbox, as after a Git pull, and sync waits while a Git command is
      changing the project's files.

Don't miss a new Oleafly release

NewReleases is sending notifications on new releases.