Skip to content

Oleafly v0.4.9

Choose a tag to compare

@github-actions github-actions released this 01 Nov 17:00
v0.4.9
af02822

What's new in 0.4.9

Added

  • The interface speaks Vietnamese. Choose Tiếng Việt under
    Settings > General > Language, or leave the language on System default and
    Oleafly follows your computer. The collaboration server, the browser
    project page, the sign-in pages it serves and the file manager's
    Open with Oleafly action are translated as well.
  • Cloud sync works with Google Drive and S3-compatible storage as well as
    Dropbox (#317). Choose one under Settings > Data storage > Cloud sync.
    Google Drive keeps your projects in an Oleafly folder in My Drive. Files you
    delete go to Google Drive's trash, and Oleafly checks Drive for changes from
    your other computers once a minute. For S3 you enter the endpoint, the
    bucket and your keys. Amazon S3, Google Cloud Storage with HMAC keys and
    MinIO all work. Before it connects, Oleafly tries a few writes in the
    bucket. A service that ignores conditional writes is turned down, because
    without them two computers syncing at once could overwrite each other. When
    two computers change the same file at the same moment, the one that syncs
    second keeps both versions.
  • Storage usage has a bar of everything in the Oleafly data folder, split by
    what takes the space. Below it, each part has its size: documents and code,
    images, PDFs, Git history, build cache, the TeX distribution, tools Oleafly
    downloaded such as Typst and Quarto, AI agents, research tasks, checkpoints
    and the rest.
  • Cut, Copy, Paste and Select all in the editor's right-click menu (#319).
    Formatting, inserting, and import and export each moved into a submenu, so
    the menu is much shorter. In Markdown files, type /table or /equation
    to insert one, as LaTeX and Typst files already allowed. The Ask AI popup
    also takes your own request next to the preset actions.
  • Oleafly's MCP server is in the MCP Registry as io.github.Oleafly/oleafly.
    Each release carries oleafly.mcpb, which installs it in Claude Desktop
    when you open it. It runs the oleafly command the app installs, so you
    need the app with Settings > Integrations > Oleafly MCP turned on.
  • A CLI agent that is still starting has a Cancel button.
  • Suggesting mode for shared projects. Switch the editor from Editing to
    Suggesting and your edits become tracked changes: added text is
    highlighted, and deleted text stays visible, struck through. Owners and
    editors accept or reject each suggestion, or every suggestion in a file at
    once, and whoever suggested a change can withdraw it. The Comments pane
    lists suggestions next to the comments, and you can reply to one like a
    comment.
    AI edits and inserted citations made while suggesting become suggestions
    too. A compile or export with suggestions waiting tells you how many. One
    suggested deletion can be up to 20,000 characters. Delete more than that at
    once and the text comes back, with a note that says why.
  • Reviewer and Commenter roles for shared projects. A reviewer comments and
    suggests changes, and every edit they make is a suggestion. A commenter
    reads and comments. Both can use the chat. You can give these roles to
    people you add, to guests and to the project's link. The server checks
    every change a reviewer or commenter sends, so an edit their role doesn't
    allow never reaches anyone.
  • A chat for each shared project, in a Chat tab next to Comments. Everyone
    but viewers can post, people can delete their own messages, and the owner can
    clear the chat.
  • History for shared projects, in the collaboration pane. It lists changes by
    time and person. Open any version to read it, compare two versions, restore
    one file or the whole project, or give a version a name such as "Sent to
    the reviewers". Owners and editors restore and name versions. Restoring the
    whole project brings back every file's text and the files deleted since.
    Renamed files keep their new names, figures and files added later stay as
    they are, and suggestions made after that version are dropped. A restore is
    a new change, so the text it replaces stays in the history.
  • Add server now offers the Oleafly server as a one-click choice above the
    address field. Any other server's address still works as before.
  • Co-authors can open a shared project in their browser when the
    collaboration server has browser access turned on. Without installing
    Oleafly, they can edit as their role allows, comment, handle suggestions,
    chat and read the latest PDF, and the project's web page gets an Open in
    browser
    button. Whoever runs the server turns it on with
    OLEAFLY_WEB=true, and the published server image already includes the
    browser app.
  • After a successful compile of a shared project's main document, an owner's
    or editor's app uploads the PDF and its SyncTeX file to the server, at most
    once a minute, so people reading the project in a browser see the newest
    PDF and who compiled it. The uploaded SyncTeX file names files only by
    their place in the project. A build that read files you keep out of the
    shared project isn't uploaded.
  • In the browser, click a word in the compiled PDF to open the source line
    it came from, or press Show in PDF (Ctrl+Shift+J, or Cmd+Shift+J on a Mac)
    to find the line you're on in the PDF. It works with the PDF and SyncTeX
    file the app uploads, whichever computer compiled them.
  • Oleafly Server's OLEAFLY_WEB_CONNECT_SRC lists the other sites the
    browser app may connect to, by default https://mirrors.oleafly.com.
  • Oleafly Server can let anyone sign up. With OLEAFLY_OPEN_SIGNUP=true,
    anyone who signs in with one of the server's sign-in options gets an
    account, and each account gets 100 MB of storage, 50 shared projects and
    300 uploads an hour. OLEAFLY_ACCOUNT_STORAGE_MB,
    OLEAFLY_MAX_PROJECTS_PER_ACCOUNT and OLEAFLY_UPLOADS_PER_HOUR change
    those limits, and also work without open sign-up. Compiled PDFs count
    toward storage but not toward uploads.
  • Quarto and Calepin engines. Quarto turns .qmd and .Rmd documents into a
    PDF, a web page or slides, and Calepin runs the code in a Typst document
    and puts the results in the PDF. Oleafly uses the copy on your computer, or
    downloads a pinned, checksum-verified one from Settings > Engines when you
    ask. Code runs with your own R, Python or Julia, and only after you allow
    code for that project in the Compile menu. Until then Quarto shows the code
    without running it, and Calepin shows the results from its last run. New
    templates: Quarto article, Quarto slides and Calepin report. Quarto's
    working folders (.quarto and a document's _files folder) stay out of
    cloud sync, shared projects and checkpoints. Calepin's .calepin folder is
    shared and synced like any other, so co-authors who haven't allowed code
    still see its stored results.
  • When a Typst document has Chinese, Japanese or Korean text that no font on
    this computer can show, Oleafly says so and offers to download the free
    font pack that covers it.
  • Add custom provider in Settings > AI has presets for Qwen (DashScope),
    Kimi (Moonshot), Zhipu GLM, SiliconFlow and Volcengine Ark. Pick one and it
    fills in the name and base URL, so you only add your API key.
  • App icon, a section below Theme customization in Settings > Appearance,
    offers eleven icons for the Dock or taskbar while Oleafly is open: classic,
    pastel, blue, light, prism, iridescent, ocean, mint, aurora, sunset and
    coral. Classic, the green quill, is still the default. The quill next to the
    Oleafly name and the one on the startup screen take on the colours of the
    icon you pick.
  • Template authors can give their own Typst functions a form. Describe the
    arguments in [tool.oleafly] in a package's typst.toml, or in
    oleafly-forms.toml at the project root, and Visual mode shows each call as
    a card with labelled fields. Inside a paragraph, the call is a chip that
    opens the same fields. Changing a field rewrites only that argument. A field
    can hold text, Typst markup, a choice from a list, a number or an on/off
    switch. Mistakes in oleafly-forms.toml, or in the typst.toml of a
    package vendored into the project, show as markers when you open the file.

Changed

  • Document settings reads Typst strings the way Typst does: an unknown escape
    such as \q, or a \u{..} that names no character, stays as written.
  • CLI agents are no longer marked beta.
  • Errors from CLI agents, such as a disconnect, a timeout, a missing Node.js
    or a refused file request, now show in your interface language instead of
    English, with the agent's own last output kept as it was.
  • DeepSeek thinks during assistant runs again. Oleafly now keeps each reply's
    reasoning and sends it back, which DeepSeek requires once tools are in use,
    and the effort menu offers Off, Low, High and Max for DeepSeek models.
    Chats saved before this change keep thinking off for tool runs.
  • Cost estimates, budgets and research task spending limits count DeepSeek's
    peak rates, which are double the off-peak rates on weekdays from 01:00 to
    04:00 and 06:00 to 10:00 UTC.
  • Agents started from the Dock, Finder or Start menu get the proxy settings,
    API keys and endpoints you set in your shell profile, such as
    HTTPS_PROXY, ANTHROPIC_BASE_URL or DEEPSEEK_API_KEY. A value Oleafly
    already has wins, keys are hidden in transcripts and errors, and traffic to
    Oleafly's own tool servers skips the proxy. Research tasks get the proxy
    settings but not the keys.
  • Installing an agent bridge uses the registry, proxy and certificate
    settings from your .npmrc. An unreachable registry fails within about a
    minute and the message names it, and large bridges get 15 minutes to
    download.
  • Claude Code's bridge is now 0.95.0.
  • "Let agents use my Oleafly API keys" can send Claude Code through a
    DeepSeek or Z.ai key, using their Anthropic-compatible endpoints. Codex is
    only offered your OpenAI key, the only kind it accepts.
  • Codex can use your own Codex CLI when it is at least as new as the one its
    bridge bundles, and starts in the mode you last picked.
  • Oleafly loads less code when it starts. Settings, the tour guide, the
    diagram composer and most dialogs load the first time you open them. PDF
    page rendering loads when something first needs it, and KaTeX when you
    first open a LaTeX or Markdown file. Once you've finished the tours, the
    library screen loads about 2 MB less. Mermaid diagrams in chat use the
    app's KaTeX instead of bundling an older copy. Cloud sync only loads its
    background code on a computer connected to Dropbox, Google Drive or an S3
    bucket, or once you open Settings.
  • GitLab, Codeberg, Gitea and Forgejo accounts show their real logos, GitLab's
    and Codeberg's in their own colours: in the add-account choices, in
    Settings, in the remote menu, in the publish dialog and beside each
    repository. The publish dialog's account picker moved to
    the bottom left, beside the button.
  • In Settings, each Git hosting account keeps its actions on the right and
    signs out with an icon button. The server name shows only when it differs
    from the badge.
  • Live collaboration is no longer an experiment and is always on. Settings >
    Collaboration is there from the start, and the switch under Settings >
    Experimentation is gone.
  • With Oleafly in Chinese, DeepSeek is the suggested AI provider. It comes
    first in the provider list and is preselected until you set up a provider.
  • Desktop apps is now called Computer Use. Its tab in Settings > Integrations
    has a cursor icon and comes after Oleafly MCP, and the app picker shows
    each app's icon.
  • Computer Use doesn't ask before each action anymore. Agents still reach
    only the apps and websites you list, and when you turn Computer Use on,
    Oleafly first tells you that actions will run without asking. To approve
    each click, keystroke, page change and script, turn on Ask before each
    action in Settings > Integrations > Computer Use. If Computer Use was
    already on when you updated, Ask before each action stays on until you turn
    it off.
  • Choosing Full access in the chat's approval menu applies right away,
    without a confirmation dialog.

Fixed

  • Scrolling the new project gallery after downloading a template from a pack
    no longer crashes the app (#359). If a dialog or panel does run into an
    error, only that part closes now and the details go to the log. Before, the
    whole window switched to the crash screen.
  • PubMed ID lookups and PubMed literature search keep working when PubMed's
    summary service is down. Oleafly then gets the records from NCBI's
    citation exporter. Before, Add citation and oleaflyc cite said PubMed had
    no record for a real paper, and search showed no PubMed results.
  • Computer Use works with Cua Driver 0.38, the version its installer gives
    you now. Oleafly refused to start every 0.38 driver, saying it wasn't
    running with Oleafly's limits, because 0.38 words that check's answer
    differently.
  • Computer Use can find the windows of the apps you allowed again. Cua
    Driver 0.38 refuses to list every app or window, so agents saw nothing and
    were told the app wasn't allowed. Oleafly now finds the allowed apps that
    run and asks for their windows one app at a time.
  • Computer Use only opens apps on your list. Cua Driver 0.38 opens any app
    it's asked to, so Oleafly now checks the app first.
  • Clicks and typing in an allowed app work again. Cua Driver 0.38 refuses
    them unless the call names the app's process, and agents usually name only
    the window or element they saw, so you could approve an action and then
    watch it fail. Oleafly now adds the process the driver reported for that
    window.
  • Websites in Computer Use work with Cua Driver 0.38. The driver now acts
    in a tab only after it binds the browser's window, and agents had no way
    to do that, so every page change was refused. Oleafly now connects to the
    browser it opened, fills in the tab on later calls and passes the page's
    text to the agent. A site that isn't on your list is turned down before
    you're asked.
  • An agent on a model that reads only text, such as GLM-5.3, no longer
    fails when a tool returns a picture, for example a Computer Use
    screenshot. The provider turned the whole request down. Now the picture is
    left out and the model works from the text.
  • More code editors can't be added to Computer Use, because they run code
    or commands without asking you: Sublime Text, BBEdit, Nova, Xcode,
    Antigravity, Kiro, MacVim and Emacs.
  • Computer Use's setup is clearer. Settings asks for the macOS permissions
    only once Cua Driver is installed and new enough, says when Cua Driver
    hasn't checked them yet instead of "couldn't read", and shows the grant
    command to copy when no project is open. After you run a step in the
    terminal, Settings opens on Computer Use again, and the command in the
    terminal's confirmation wraps instead of running off the edge. A Cua Driver
    start that stops at its own permissions prompt says so.
  • The Oleafly icon no longer looks bigger than other apps' icons in the Dock
    and Finder on macOS 15 and earlier. The bundled icon now leaves the margin
    macOS expects around an app icon.
  • Deleting a file or folder in the file tree asks first again, and so do
    restoring an earlier chat checkpoint and replacing an equation or diagram
    file. The question never showed up in the app, so all of these went ahead
    without asking. That included the permanent delete on a system with no
    trash.
  • CLI agents and research tasks keep your NO_PROXY list when you set only one
    spelling of it. On Linux and macOS the other spelling held only the local
    addresses, and agents that read it sent internal hosts through your proxy.
  • In Typst document settings, clearing two values of one #set rule, or
    clearing one and setting another, could leave a broken rule such as
    #set par( without its closing parenthesis. Clearing a value on the line
    after a // comment, or in a rule written with its commas first, could
    break the rule too.
  • In a Typst table cell, one bracket without its pair turned every bracket in
    the cell into plain text, and a cell that ended in \ broke the table. A
    $ without its pair, as in a price like $5, a // or /*, or a lone
    backtick broke the table too, and did the same to a figure caption. Now
    only what has no pair is escaped. No borders also works when the table's
    stroke value comes after a comment.
  • In a Visual mode table cell, Ctrl+Z (Cmd+Z on macOS) undid the document
    instead of your typing in the cell, and Ctrl+B or Ctrl+I added bold or
    italic markup somewhere else in the text.
  • Vendor packages skipped a package whose name has capital letters or other
    letters Typst allows, such as @local/AcmeReport:1.0.0.
  • Custom providers that need no API key, such as a local Lemonade, LM Studio
    or llama.cpp server, stopped working after the first save. Oleafly lost the
    "no key needed" setting when it saved, so every request failed with "No API
    key is set". It now keeps the setting and repairs providers saved by
    earlier versions.
  • With a key-less custom provider selected, the assistant showed "Connect a
    provider", and picking one of its models in the chat hid the message box.
  • Adding a custom provider now fetches its model list first and tells you
    what went wrong if that fails, for example that the server isn't running or
    the key was refused. An address entered without /v1, like
    http://localhost:13305, is saved as http://localhost:13305/v1 when that
    is where the models are. You can still add a provider that lists no models
    and type the model names yourself.
  • The custom provider dialog turns down a base URL that has your key or a ?
    in it, and tells you to put the key in the API key field (#344).
  • When a custom provider had no models, requests went to another provider you
    had set up, which could be a cloud one, without any sign. Now the assistant
    says the provider needs a model.
  • A model that took a while to load on its first request, or a server that
    was briefly unreachable, got marked as unable to use tools until you
    checked it again. Now only the model's actual answer decides that. Local
    and custom servers get two minutes to answer the check, and models that
    were blocked this way get checked again.
  • A model that failed the tool check is still used for requests that need no
    tools. Before, Oleafly refused those too (#344).
  • When you changed a custom provider's address, the dialog said the saved key
    would be sent to the new one, but Oleafly removed it. The dialog now says
    the key stays behind: enter it again, or leave it blank for a server that
    needs no key.
  • Custom providers now appear in the inline edit model picker. Research tasks
    and the Tools converters work with custom providers that need no key, and
    Image to LaTeX works offline with one running on your computer.
  • If a local server sends an error partway through a reply, Oleafly shows
    that error instead of "The connection closed".
  • The single API key from early versions is no longer sent to a custom
    provider.
  • A base URL pasted with /chat/completions or /models on the end is trimmed.
  • Some local models, such as Bonsai-4B on Lemonade, write a tool call into
    the reply as plain text, like {"name": "ping", "arguments": {}} </tool_call>.
    Oleafly showed that text as the answer, and the tool check said the model
    couldn't use tools. It now runs a call written this way when the call names
    a tool Oleafly offered and has valid JSON arguments. Any other reply stays
    text. A reply that starts like a tool call appears once it is finished
    instead of word by word.
  • DeepSeek Harness couldn't open a conversation and said "The agent
    disconnected." It prints a log line on its output while a session starts,
    and Oleafly closed the connection at the first line that wasn't a protocol
    message. Oleafly now skips such lines and shows them with the agent's other
    output if something goes wrong.
  • DeepSeek Harness is found in its usual install folder on macOS and Windows
    when dsh isn't on your PATH, and a missing or rejected DeepSeek key now
    shows its sign-in steps.
  • Pressing Enter or New conversation while an agent was starting launched a
    second copy and left the first one running. Messages sent during a start
    now wait for it.
  • Hermes with no model provider set up said only "Internal error". Oleafly
    shows Hermes's own message and its setup steps. Picking a model no longer
    removes Oleafly's research tools from Hermes, a conversation from another
    Hermes profile says so when you reopen it, and Settings shows the installed
    Hermes version even when GitHub is slow or unreachable.
  • Pi gave a blank reply when its model provider failed. Oleafly now shows
    the provider's error, and any agent that ends a turn without replying says
    so. Pi no longer shows two pickers with the same choices, and an older
    pi-acp on your PATH isn't used.
  • Claude Code disconnected when it asked to write a file larger than about
    half a megabyte. The permission card now opens without the preview.
  • Reopening a conversation that never got a message failed with Claude Code
    and DeepSeek Harness. It now starts again.
  • After reconnecting, Codex went back to its default mode and model, and
    Claude Code to its default effort. Oleafly now restores the model, mode
    and effort the conversation had, and remembers the model you pick.
  • Codex asked you to sign in when the real problem was its config.toml or
    a rejected key from another provider. Oleafly now shows Codex's own error
    or names the provider and its key variable. Failed Codex turns no longer
    look like normal replies.
  • Claude Code users with their own API endpoint were told to sign in to
    Anthropic, and the account line read "Signed in with Not logged in".
  • A CLI agent that crashed while starting, for example on a network
    timeout, asked you to sign in when its error output happened to contain a
    word like "OAuth" or "unauthorized", as file paths in a stack trace often
    do. Oleafly now shows the crash, and asks you to sign in only when the
    agent itself says so.
  • Permission requests expired after two minutes. They now wait for you, and
    a request for a file outside the project is refused with a note naming it.
  • A failed start left an empty conversation in History.
  • Hermes couldn't reach Oleafly's research tools behind an HTTP proxy, and a
    stalled tool server could hold up a start for minutes.
  • Agent errors on Windows set to a language without UTF-8 output came out
    garbled, Node.js warnings could hide the real error, and a timed-out start
    dropped the agent's last output.
  • Some agent errors, such as asking you to trust the folder, showed as raw
    codes.
  • On DeepSeek, a reply cut short when DeepSeek ran out of capacity now
    retries or shows an error, and long tool calls are no longer cut off at
    about 8,000 tokens. DeepSeek Flash is treated as reading images.
  • When the assistant's request times out, the provider has a server error,
    the request is turned down or the reply comes back empty, the error now
    tells you what to try next. This works with every provider (#338).
  • When Tectonic crashed while looking for a font that isn't installed, the
    build failed with nothing in the error list, and only the last line of the
    log said the compiler had crashed. Tectonic 0.17 does this on some
    documents instead of reporting the missing font. The error list now names
    the font and the line Tectonic had reached, and suggests installing the
    font or switching to XeLaTeX or LuaLaTeX. Other compiler crashes show an error
    too, in the app and from the oleafly command.
  • The assistant saw only the start of a long command's output, without the
    exit code, and missed the error at the end. It now gets the exit code and
    the start and end of the output, and an error printed after a long log is
    kept.
  • Open files in a library project reload when a terminal, an agent or
    another app changes them, as files in an opened folder already did. If you
    have unsaved edits, a bar above the editor lets you compare both versions,
    keep yours, or reload. When a save stops because the file changed on disk,
    you get the same bar instead of a separate message (#339).
  • Some PDFs showed pages with images or text missing, or with colours a
    little off, because Oleafly didn't ship the extra files the PDF viewer
    needs for them. It now includes the standard fonts for PDFs that don't
    embed their own, decoders for the JPEG 2000 and JBIG2 images common in
    scans, the character maps some Chinese, Japanese and Korean fonts rely on,
    and the CMYK colour profile. The preview, presentation mode, PDF to
    LaTeX and PDFs you attach in the assistant all use them.
  • On macOS and Windows, when \input spelled a file's name with other
    capitals than the file has, such as \input{Chapters/Intro} for
    chapters/intro.tex, Show in PDF and clicks in the PDF did nothing for
    that file, and its compile errors weren't marked in the editor. Oleafly now
    falls back to a match that ignores case when only one file fits.
  • A Typst equation preview that failed for a reason outside the equation,
    such as a render that timed out during a long compile, kept showing that
    error until you changed the equation. It now tries again the next time the
    equation is drawn.
  • App font size in Settings > Appearance now also sizes the editor's search
    bar buttons, the cards that open when you point at a label or command, and
    the Visual mode table's toolbar and dialogs. Their text used to stay the
    same size.
  • In the Linux AppImage, the programs a build starts, such as a TeX Live
    installed on your system or Pandoc, still inherited the AppImage's
    library paths, which Git and the terminal stopped doing in 0.4.8. They now
    start without them.
  • If getting Pandoc ready for a Markdown build failed after you had already
    switched to another project, that project's preview showed the Pandoc
    error instead of its own build.
  • Disconnecting cloud sync during a long sync and then connecting another
    account within a few minutes could let the old sync keep going. It could
    bring back files you had deleted and add conflict copies, which the new
    account then uploaded, and an error from it could mark the new account as
    disconnected. Connecting now stops a running sync first, and a sync stops
    when the account changes.
  • Clicking Apply again in a research task's details while its changes were
    being applied started a second apply. It now applies once.

Security

  • Updated zip, the library that reads and writes ZIP files, from 4.6.1 to
    9.1.3. Oleafly unpacks ZIP files you import and ones it downloads, such as
    TinyTeX, language servers, agent bridges and projects from an online LaTeX
    service. The update fixes several GitHub security advisories in zip. One is
    critical: zip could read an archive differently from other ZIP tools.
    Another, rated high, is about where a symbolic link in an archive points.
    The updater, tauri-plugin-updater, moved from 2.11.0 to 2.14.1 so it uses
    the new zip as well.
  • Math in the assistant's replies now uses only KaTeX 0.18.7, the version the
    rest of the app uses. A Markdown math package still brought in KaTeX
    0.16.47, which has a security advisory (GHSA-238p-pmpm-9mq7).
  • Updated zstd, the compression library behind file history and the file
    snapshots taken during agent turns, from 0.13.3 to 0.14.3. It fixes four
    security advisories in how zstd handles memory (RUSTSEC-2026-0391,
    RUSTSEC-2026-0398, RUSTSEC-2026-0403 and RUSTSEC-2026-0410).
  • Updated pulldown-cmark, the Markdown parser behind spelling and grammar in
    oleafly lint, from 0.13.4 to 0.13.5 (#348). It fixes a security advisory
    where a small Markdown file with crafted wiki links could use up all
    memory (RUSTSEC-2026-0414).
  • Saving an MCP server that runs a program on this computer asks first, in a
    system dialog that shows the command and names any environment variables
    it sets. It asks again when you change the program, its arguments or its
    environment. If you say no, the server isn't saved (#336).
  • Each Oleafly window can only use the app commands it needs, and web pages
    shown inside Oleafly can use none. Exports, imports, checkpoint archives,
    skills, templates and other files outside a project only work with a file
    or folder you picked in a file dialog, or on Linux one you just dropped on
    the window. Saved connector keys, such as an alphaXiv key, no longer reach
    the app window (#336).
  • With code off, Quarto reads all of a document's settings before it builds:
    every YAML block, _quarto.yml, _metadata.yml and any metadata files
    they name. If anything there could run a program, such as a Lua filter, a
    pre- or post-render script, an unusual PDF engine, an engine option like
    -shell-escape or a shortcode Quarto doesn't ship, Oleafly doesn't build
    and asks you to allow code. Inline R anywhere in the document or the files
    it includes counts as code too. Included files and metadata files must be
    inside the project.
  • Oleafly Server checks comments and chat messages from reviewers and
    commenters whatever app they use, not only in the browser. They can add
    comments, replies and messages and change or delete their own, but they
    can't delete other people's or clear the chat.
  • On a server that runs over https without a path prefix, the browser app's
    session cookie is now __Host-oleafly_web, so a site on another subdomain
    can't slip in a session of its own. If you already used the browser app on
    such a server, you sign in again once. Behind a path prefix, a browser that
    sends two different session cookies is treated as signed out.
  • A browser app session closes its open connection the moment it expires,
    and the page asks you to sign in again.

Downloads: grab your platform's installer below (macOS Apple Silicon .dmg, Windows x86_64 .msi / -setup.exe, Linux x86_64 or ARM64 .AppImage / .deb / .rpm).