Changelog
What is new in each version of Refto for Mac. Open a line for its details.
0.1.0-beta.5
BetaChanged1
The licence points to Refto's terms
the licence that comes with Refto (LICENSE) now links its terms at https://refto.one/terms.
Fixed2
Activating, checking for updates and the changelog work through your proxy
they reach refto.one the way models and downloads do — the proxy in Settings → Network, or the system's (System Settings) when it is set to automatic — and, when an automatic proxy cannot be reached, they go direct instead of failing. Where the direct way is slow, activating no longer said “Cannot reach refto.one” the first time and the daily check no longer failed with a timeout.
The changelog shows your language right after you switch
after changing Refto's language, Settings → About → Show Changelog no longer showed the notes in the language before until opened again. While it reads the notes again it says Refreshing… over those shown, and if that fails, says so.
0.1.0-beta.4
BetaAdded32
See what each library takes, and let go of old versions
Settings → Advanced lists every open library — where it is and its size, split into files and attachments, thumbnails and previews, versions, the library's trash, and the database with its backups. It is measured in the background from what the library already records (only the rest is walked, so a big library is quick), kept until you click Refresh. Delete other versions… first says how many versions and how much, then moves to the Trash, where you can still get them back, every version that is not an item's file — each item keeps its file, its original and the versions you made its file once; linked files are not touched. The versions a tool keeps beyond its five newest still go to the Trash as before. When the model catalogue moves a model on to newer files, the old ones Refto downloaded are deleted once the new ones are downloaded and checked — unless another ActNow app uses them, or the model folder is shared and read only — and the Models part shows what older versions still take, with Clean up.
A post's pictures and videos, one after another, in its Screenshot view
on the page of a saved post (an X post, a 小红书 note) with two or more pictures or videos, Screenshot shows them one at a time, not only the first: arrows at its sides with the pointer over it, two fingers sideways, or ← → turn them, sliding (at once with Reduce motion), and “2 / 4” at the top right says where you are. Past the first or the last, ← → go to the item before or after as before; ⌥← ⌥→ always do. A video plays there as on the card (its controls, no sound on its own; a GIF loops, muted) once it is shown and stops as you turn away. Double-click a picture on the Card — or right-click it and choose Show in Screenshot — to open it there.
Search from the notch shelf
a magnifier after the tabs' + opens a search field there (the button turns into ×, which closes it). What you type searches the shelf's library — all of it, whatever tab shows, and the library chosen for the shelf when it has its own — a moment after the last key, as Refto's search field does: by words and meaning, with filters such as
tag:posterortype:pdf. The hits show in place of the tab's items, in a waterfall of their whole pictures in a taller shelf, scrolling down and reading more as you near the end. They work as the shelf's cards: click, ⌘-click and ⇧-click to choose, double-click or Return to open in Refto, Space to Quick Look, ⌘C to copy, ⌘E or the pencil to edit, and drag them out into any app. Items of a locked folder are left out. Esc clears what you typed (the tab shows again where it was scrolled), then closes the field; closing the shelf closes it too.Drag from the notch shelf onto a board
a card dragged from the shelf onto a board in Refto's window goes on it as the item itself, as one dragged from the grid does — no copy imported. One from another library (the shelf's own) is copied in, the board asking for a folder as for files from Finder, and Refto says so.
Agents ask before collecting files from outside your home folder
when an agent (MCP, the
reftocommand) adds a file or folder whose real place — links followed — is outside your home folder, or in a hidden or system folder of it (~/.ssh,~/.config,~/Library…), Refto asks first in its own dialog, listing them — even for an agent you always allow, once per request. Skip these files (or no answer in 60 seconds) leaves them out — the agent is told (outside_home_declined) — and adds the rest; Add them adds them. External disks (/Volumes), temporary folders (where agents put what they make), your libraries and Refto's own caches are not asked about; what you drop, paste or import yourself never is.The menu bar icon shows an agent connected
while an agent is connected to Refto over MCP (ChatGPT / Codex, WorkBuddy, Claude Code, the
reftocommand…: Connected in the settings' list of agents), the dot at the top right of the menu bar icon turns violet — before the blue of something to look at, which comes back once the agents have gone (or the dot goes). The top line of the icon's menu, in grey, names the agents connected. Settings → General → Show connected agents on the icon turns it off on its own (on by default).The menu bar icon shows an agent using Refto
while an agent is using Refto over MCP (ChatGPT / Codex, WorkBuddy, Claude Code, the
reftocommand…: calling a tool, reading a resource — all the while one waits for you to allow it or runs long — and 45 seconds after its last request), the dot at the top right of the menu bar icon turns violet — before the blue of something to look at, which comes back once the agents have gone quiet (or the dot goes). Merely connected does not count: ChatGPT keeps its connections open with a heartbeat while a chat is open. The top line of the icon's menu, in grey, names the agents using Refto. Settings → General → Show a violet dot while agents use Refto turns it off on its own (on by default).Copy link for agents
right-click an item (in the grid, on its page, in quick look, on a board), several items, a folder (or several), a smart folder, a tag (in the sidebar or the tag manager), a board (its card, or the empty canvas) or the library (its menu) and choose Copy link for agents (⌃⌘C for the items chosen; a stack gives all its items, as its menu does): each is copied as a line
[name](refto://item/…). Paste it into WorkBuddy, ChatGPT (Codex) or another agent's chat and the agent finds exactly that through Refto's MCP tools or thereftocommand — no search by name. On a video's or a sound's page the menu also copies the link at the second playing, on a PDF's at its page. Every MCP tool that takes an item, a folder, a tag, a smart folder or a board takes such a link (or its Markdown line, or the id) and says plainly when a link is of another kind; the new tool resolve_link (andrefto resolve) tells what pasted links are (given intext,linkorlinks, a string or a list) and what to do with them. Copy as › Refto link is gone (this replaces it).Agents look at fewer pictures, and a saved video keeps its link
(MCP): every item an agent lists has a
tone— dark, light or mixed, from its main colours — andget_itemits colours, so a dark UI is told without looking at it;get_thumbnailandrender_boardtakeinclude_image: falseto give only the file (to show the user) without the picture in the agent's context. A link saved withvideo: truebecomes the video item once its video is downloaded: the link's id, and itsrefto://item/…link, still lead to the video (get_itemsayssupersedes), and saving the same page's video again returns the video Refto has instead of another bookmark. Searches match by words and by meaning by default — the first after a start now waits for the search model to load, and a search that matched by words only says why — and a rare word's exact matches come before unsure matches by meaning.list_toolsalso lists the tools not installed yet, with what to do in Refto's Tools page. The skill for agents is a third of its size (10 KB), read in full by every task.Agents read whole texts and tables
the MCP tool read_text reads an item's text a part at a time — a long PDF page by page (every page's start listed), a document or a saved page's article by offset, a recording's transcript as lines with their start and end times (from any second), a CSV's or an Excel sheet's rows — each part saying where the next starts.
get_itemgives code, Markdown, JSON and CSV files as written (indents kept), a table's first rows by sheet, every tool version's file path and size (andget_thumbnailshows a version:<item>/<version>), and says why a text is missing (no speech found, the ePub extension off, not read yet).add_itemslists what a folder's import left out (hidden files, keys, developer folders…) and why;accept_suggestions/reject_suggestionstakeall: truefor every item's suggestions of some types and confidence.Connect ChatGPT and WorkBuddy
under Settings → Collect → AI agents (MCP) → Connect an agent, each client has its row — Claude Code, ChatGPT / Codex, WorkBuddy, Cursor — with Copy; over a command, ChatGPT / Codex, WorkBuddy and Cursor also have Add, which puts Refto in their own configuration (
~/.codex/config.toml,~/.workbuddy-ai/mcp.json,~/.cursor/mcp.json): only Refto's entry changes, the rest stays as it was, a backup goes beside the file first, nothing is written when Refto is there already, and a form Refto does not recognise is left for you to edit. Ordinary ChatGPT chats cannot reach MCP servers on this Mac: use the ChatGPT app's Codex workspace. In WorkBuddy, click Trust under Experts · Skills · Connectors → Custom connectors → MCP management once it is added.The skill for several agents
Refto skill for agents lists Claude Code, ChatGPT / Codex and WorkBuddy with where each stands (installed, an older version, not installed, not found on this Mac), those on this Mac chosen; Install or Update puts it in each (
~/.claude/skills/refto,~/.codex/skills/refto,~/.workbuddy-ai/skills/refto), replacing an older copy whole.The question before an agent's change says what changes
the items by name, the rating (→ ★★★★★), a new name (old → new), the note, the tags and the folder. When the same agent asks again in the same conversation (its MCP session) or within 3 minutes (ChatGPT starts a new session each turn), or more of its changes wait, Allow for 1 minute lets them through for the next minute (Allow once is still once). While you are asked, clients that can show it say Refto is waiting for you to confirm.
refto --versionprints Refto's version (JSON with
--json), without reaching Refto.Choose the accent colour
Settings → Appearance → Accent colour, under Theme: teal (as before, the default), blue, purple, pink, orange, graphite, or a colour of your own from the last dot — a picker with a saturation square, the hue, the screen's eyedropper, HEX and RGB/HSB/HSL. Selection, progress, switches, focus rings, links, chosen rows and the notch shelf (blue with teal, as before) follow it at once, in Light and Dark Mode alike (each a little lighter in the dark); text on it stays readable (white, or near black on a pale colour). Green, orange and red states, tags' and folders' colours keep theirs.
Open with › shows each app's icon
the apps in an item's menu (Open with ›) have their own icons before their names, in colour, as in Finder — the default app too.
Choose several folders in the sidebar
⌘-click adds a folder or takes it away, ⇧-click chooses every folder shown from the one chosen to the one clicked (unfolded subfolders included, folded ones not), ⇧↑ ⇧↓ grow or shrink the run, ⌘A (or Edit → Select All) with the sidebar in use chooses every folder shown, Esc goes back to one. The grid shows the items of them all, each once, titled “3 folders”. A right-click on one of them acts on all: New folder with these folders, Move to, Icon and colour, Export as a pack (one pack) and Delete 3 folders (asked once; their items stay); a move and a new folder around them can be undone from their note. Dragging one of them moves them all.
Scanned PDFs are searchable
the AI now reads the text in the pages of a PDF that have little text of their own — a scan, a photographed page, a poster — with Apple Vision on this Mac (Chinese, English, Japanese and Korean, as for pictures). Search finds their words and opens the PDF at the page they are on; the PDF's Text view shows them with a note naming the recognised pages (it may have mistakes) — opened from a search hit, or after ⌘F turned the PDF to a page, it starts at that page's text — ⌘F finds in them, and agents get them with the item (its OCR text, page by page). A PDF with text of its own reads only its pages without; a long one reads its first 30 pages at once and the rest in the background (at most 500 pages), going on from where it stopped after a pause on battery, a cancel or a quit. The inspector says Recognising text…, how many pages were read, or that it failed, with Try again. PDFs already in a library are read in the background once it opens.
Refto keeps room on your disk
when a disk Refto writes to — its data and caches, the model folder, an open library's — has less free than 2 GB or 2 % of it, whichever is more, Refto's background work waits: links filled in later and a list's sync, post covers, waveforms, scheduled backups, the AI's analysis. A card at the sidebar's foot says Disk almost full, with Tasks paused · 1.2 GB left under it, and opens Settings → Advanced, where what takes room is listed and the caches cleared; with room again (emptying the trash is noticed at once) the work goes on by itself, nothing lost. What you start goes on — an import, a page you save, a tool, a model download — and says plainly when it does not fit. A sync of X bookmarks or likes pauses with the reason (browser extension 0.6.3) and goes on when you click Resume. A model download checks its whole size against the same floor before it starts.
Copy a post's pictures and videos
on a saved X post's page or quick look (and other cards: 小红书, GitHub, video pages), a right-click on a picture or a video opens Refto's own menu: Copy image or Copy video, and Show in Finder; a video also has Copy the cover. In a post with several pictures it is the one you clicked, a quoted post's too. What is copied is the original file kept in Refto: Finder pastes the picture or the .mp4, and chats, documents and image editors paste it too (a GIF or animated WebP keeps moving). A video not saved is greyed, the menu says The video is not saved in Refto yet and offers the card's Save the video or Turn on and save the video. Click a picture (it gets an outline) and ⌘C copies it; with text selected, ⌘C copies the text as before. In the grid, a post's menu has Copy picture or video › listing each of them; a post with a single picture or video shows Copy image or Copy video at once. Refto's clipboard card does not offer these copies back to be collected.
X posts kept in your language
(browser extension 0.6.2): a post X shows translated — you clicked Show translation, or X translated it by itself — is saved (its Refto button, the menu, the shortcut) and synced from bookmarks and likes as its translation, not its original, so Refto's search finds it in your language. Its card says so beside the time — Translated from English · X Translate — a quoted post its own. Posts shown in their original are saved as before. A post Refto already has in its original takes the translation when it comes again translated (synced again, or saved again) — its text, and its name while it is still the one Refto gave it; a name you gave it, its tags, notes and folders stay as they are. One Refto has as a translation already keeps it. The extension's settings → Sites → X → Preset → Keep translations (on) turns it off. Built from X's own page code; not yet tried on X itself, nor in Safari.
Posts of words alone have their own covers
a saved X post without a picture of its own — and a 小红书 note without pictures, a GitHub issue or pull request, a Reddit or Hacker News post, a synced bookmark — no longer shows in the grid as the site's logo and name, every one alike. Refto draws its card as its cover: the avatar (else its initial), the name and handle, the time, the first lines of its text, a quoted post and a link card, on a light sheet of paper (light in Dark Mode too). A post with pictures keeps its first picture. The posts saved before get theirs in the background as their library opens, with the progress at the sidebar's foot; a cover you picked, or a custom thumbnail, stays. The inspector's cover choices list it as Post card, beside the browser's screenshot when there is one.
Sync X quietly
(browser extension 0.6.1): X's sync question and its settings (the extension's settings → Sites → X → Preset) have Quietly: no “collected” notes under the notch, off by default. On, what a sync of X bookmarks or likes saves is not announced under the notch (no island, no organizer); its progress still shows at the foot of the sidebar, and what could not be saved is still told.
Quick look with depth
Space on the grid now grows the item from its thumbnail into a panel shaped as the item, while the whole window — sidebar and toolbar included — steps back behind it, a little smaller, blurred and darker; closing (Space, Esc, or a click beside the panel) flies it back to its cell. The arrows change the item without the window moving again, Space pressed again on the way turns it round, and Return flies the picture on to the item's page. Reduce motion fades instead, Reduce transparency darkens without blurring, and Settings → Browse → Background depth turns the effect off.
Notch shelf
with more than one library, a small ⌄ beside the library's name at the top left switches the library the shelf collects into and shows — for the shelf alone: the windows keep theirs, and the choice is kept. What is dropped on it goes into that library, and so do the screenshots, screen recordings and voice memos (from the shelf, the shortcuts or the menu bar icon), what the browser extension saves and the menu bar icon's Recently Collected; its recent items, tabs and folders show, and its locked folders stay locked. A capture goes where the shelf collected as it began, even if the shelf is switched meanwhile. Follow Main Window, the menu's first item, goes back to the front window's library, as before. Watched folders keep their own library; agents (MCP, the command line) the window's. A library open in no window is analysed by the AI once a window opens it (the menu says so). A library taken off the list goes back to the window's.
To review → All
accept or dismiss every suggestion the filter shows at once, after a confirmation — Apple Vision's and the file info's tags, folders, names and summaries included, whatever their confidence. Many at once are saved in the background, with their progress at the sidebar's foot.
A PDF's page
its zoom, open and save buttons are a small capsule under the page (36 points high, it was about 64), and a button at the PDF's top left hides the page thumbnails beside it and shows them again — the choice is kept for every PDF, on the item's page, beside the grid and in an item's window.
Sync X bookmarks and likes to Refto
(browser extension 0.6.0): on X's History → Bookmarks or Likes, click Sync to Refto at the top. The extension scrolls the page slowly, as a reader would (3–6 seconds a screen, a 20–40 second rest every 40–60 posts, and it asks after 15 minutes or 500 posts), reads what the page itself fetched and saves the posts as cards — a long post's whole text, the original pictures, videos, the quoted post, link cards, articles — their pictures and videos downloading slowly in the background. Read only: it does nothing on X for you and reads no cookie; it stops at once at any sign of X limiting or failing, without retrying, and pauses while the tab is in the background. By default they go into folders Refto makes, X Bookmarks and X Likes (a bookmark folder into a subfolder of its name), tagged X; the first time it asks where to, whether to tag them and whether to download videos. A bookmark's date added is when it was bookmarked. Afterwards a click syncs only what is new (it stops at what it synced), and a sync stopped half way goes on next time; Full check tags what Refto has and X no longer does Not in X bookmarks, for you to decide. The sidebar's foot shows the progress too. Not yet tried in Safari.
Site presets in the browser extension
Settings → Sites, each site can have its own folder, tags and whether its videos are downloaded; whatever is saved from that site (its buttons, the menu, shortcuts, the popup) follows them, the rest the defaults.
A sound when emptying the trash
Empty trash, confirmed, plays a short crumple of paper, as Finder does — on by default, even with the tasks' sounds off, at the sounds' volume, and quiet when macOS's "Play user interface sound effects" is off. Settings → General → Sounds turns it off and has a Try button. Delete permanently and what agents empty (MCP, the API, the command line) stay silent. The sound is cut from a CC0 recording by Joseph Sardin (BigSoundBank).
Agents can show you pictures
when an agent (MCP) looks at a thumbnail or a board, the picture is also saved as a temporary file (in Refto's cache, cleared after a day, never in the library), and the agent is told where it is, with a ready Markdown image — ChatGPT (Codex) shows it by writing it in its answer, WorkBuddy and others open it with their own show-file tool. Upscaled, erased and other tools' new versions come with their files' places too.
Agents can save playable videos
an agent saving a video page (YouTube, Vimeo, X…) can ask for its video to be downloaded (
video), not only a bookmark.
Changed27
Refto has its own website, refto.one
updates, licences and Refto's pages moved from actnow.dev to https://refto.one. Refto checks for updates at refto.one, reads its release notes there, and activates and checks its licence there; Website, Release notes, Download, the browser extension's download page and guide (Settings → Browser extension) and the licence's links (Manage on refto.one, Request early access, How activation works) open refto.one, and the download needs no sign-in. Support is now hi@refto.one, and the activation page asks for the code from your email or your refto.one account. Licence codes come from refto.one and start with
RF-; codes from actnow.dev (AC-…) no longer work with Refto — ask for early access on refto.one, or write to hi@refto.one for a new code. The browser extension's Download Refto link goes to refto.one too (extension 0.8.3). The other ActNow apps' links, models and the shared ActNow settings are unchanged.Refto gives memory back when the Mac runs short
when macOS reports memory pressure, Refto's engine at once unloads the AI models nobody is using and returns its caches, and the AI's background work on new items and its scans waits: a minute at warning (a Mac can sit at warning for hours with memory to spare, so it does not stop the AI), and at critical until the pressure is back under critical for a minute, at most 10 minutes at a time (then it runs for 2 minutes before Refto looks again). What you wait for — a chat, a search, a transcription you asked for — goes on. Under critical pressure a model that would leave the Mac short is not loaded; its work is tried again later. By default the models may take at most 60 % of the memory or the memory less 8 GB, whichever is less, and at least 3 GB: 8 GB on a 16 GB Mac (it was 9.6 GB), 14.4 GB on 24 GB.
The engine settings are the engine's
Unload idle models and Memory budget (Settings → General → Memory) now reach the engine itself, at once: left as it was, models are unloaded after 5 minutes idle as before; set to Never (0 on the slider), models are no longer unloaded after 5 minutes anyway, and a budget of a few gigabytes makes room before a model loads, not after.
The engine stops when it has nothing to do
with no model loaded and no work for 10 minutes, the engine's processes exit and give back all they held; the next AI task or media job starts them again (it takes a few seconds more that once). The engine page says Not running: starts when needed meanwhile, and no longer keeps listing a job that has ended.
A stuck engine no longer stops the AI for good
an AI task the engine does not finish in a generous time (its model's load, then several times what the work takes) is stopped and fails with a timeout; an engine that does not stop is restarted, and the next tasks go on.
The engine's logs stay small
engine-gpu.logandengine-media.logstart over past 10 MB while Refto runs, keeping the previous one, not only when the engine starts.The third-party plugins setting says what they can do
Settings → Tools → Allow third-party plugins (developer preview) now reads “Plugin commands can start programs on this Mac. Install only plugins you trust.” (it said each runs with only the permissions you grant, which their commands' sandbox does not hold to yet).
Agents' searches page through their first 300 hits
(MCP
search_items): a search's words find 300 items at most, so its pages now stop there (they were said to go to 1000); the answer's newcapped: truesays more items may match thantotalcounts — narrow it with filters.The strip of items under an item's page can hide until you need it
it still shows by default (under the preview, taking its room); set Settings → Browse → Item page → Items strip to Hidden by default and it is gone, the picture, video or page taking its room; bring the pointer near the page's bottom and it slides up over it on a floating bar (the picture does not move), its items as before — click one to go there, ← → still go through them. The pointer gone, it stays a moment and slides down. A video's or a sound's controls and a PDF's capsule rise above it while it shows; under them a narrow band at the page's bottom brings it, so going for the controls does not. With Reduce motion it shows and hides without sliding.
Plugins search as the search field does
a plugin's
refto.items.searchreads filters (tag:,type:,folder:…) as Refto's search field, the MCP tools and the local API do, and matches by meaning too when the search model is installed. A list synced from the browser extension whose folder name holds a/(a Pinterest board's) is made with the full-width/in its place, so the name never reads as a path.Agents look at several pictures at once, and tell a design on a backdrop
(MCP):
get_thumbnailtakesids(up to 16) and gives one picture, a numbered grid, saying which item each number is. An item'stonenow comes from its thumbnail withdarkShare, the share of its dark pixels; a design shown on a backdrop — a dark phone screen on a light or coloured stage — also says itssubjectTone, so the agent need not look to find dark UIs.list_toolsgives the tools not installed yet in a line each (what it does, how to install it), about half the size.Agents arrange boards better
arranging again first takes away the section labels the last arrangement added (a label you rewrote or locked stays), instead of grouping the old labels as notes; by colour, a dark or light UI screenshot goes by its accent colour, no longer always under Neutrals; a presentation frame can grow round what it holds (
fit_frame). A note's# titlenow shows as a bold, larger title, without the hash.Shorter, clearer instructions for agents
the board tools' and others' descriptions are about a tenth shorter (some 4.6 KB less in every turn); agents are told not to operate Refto's windows (its confirmations, its settings) but to tell you what to do in Refto; the Claude Code skill is rewritten from real use (the tool id
refto.image-compress, multi-word tags searched by parameter, reading long items, showing you pictures, the AI eraser, video pages, waiting for a confirmation, plain links).No more trailing “…” on commands
buttons, menu items (the menu bar, right-click menus, ⌘K, the menu bar icon), settings rows, dialog buttons and search fields no longer end in “…” — Open library, Rename, Export, Settings, Check for Updates; what is still in progress keeps it (Loading…, Saving…). The browser extension too (0.8.2).
A smaller clipboard badge
shown as a badge (Settings → Collect), what you copied is a smaller round badge at the sidebar's foot — 22 points across, it was 30, with a smaller icon and a thinner ring of the time left — centred over the Settings icon; it opens into the same card under the pointer.
Settings rows breathe
a state or a link under a setting (another app on the same shortcut, Open Keyboard Shortcuts, the next backup, a trackpad warning) is part of its row, as far from the next hairline as any line; rows keep 10 points above and below; buttons that would squeeze a setting's text into a narrow column (an agent's Ask again / Disconnect / Forget, yt-dlp's two) go under it instead; an empty shortcut shows as a field; Forget asks before an agent's record goes.
Lighter type
the main window and boards no longer use bold text — the library's name, the sidebar's chosen row and section titles, page titles (now 15 points, they were 16 semibold), the board's and layers' drop-downs, settings, inspectors, dialogs and lists are all in the regular weight — so are the notch shelf, the screenshot and recording overlays and the browser extension's settings, popup and buttons (browser extension 0.8.1); what is chosen shows by its fill and darker colour, and no longer shifts as its text widens.
The app is Refto
its name, its package (Refto.app,
dev.hehehai.refto), its data folder, thereftocommand,refto://links, the MCP serverrefto,.refliblibraries and.refpackpacks — and the browser extension (0.8.0, Save to Refto). Nothing of the former Refto is read or kept: it is installed and set up as a new app.Synced posts skip the local language model
posts that a sync of X bookmarks or likes brings in are no longer each given a summary and tags by the local language model one by one (500 posts kept the GPU busy for a long time). They still get their text, search by meaning and the tags Refto picks without the model; the model's summary and tags come when you open the post (its page or the inspector) or choose Analyse again, one at a time, after what you are waiting for. What you save yourself is analysed as before.
Lighter in the background
after a picture, a page or a post is saved and analysed, the AI now looks again only at what it just did (a picture's sharper second pass, a long PDF's later pages) instead of going through the whole library each time — about 1.7 seconds and 230 MB of work per save in a library of 30,000 items — and Analyse again redoes only the items chosen. While Refto works in the background (analysing, importing, syncing X, a tool running, a download), macOS no longer slows it down with App Nap; the Mac can still go to sleep as usual.
Less power when idle
with Detect clipboard off, Refto no longer looks at the clipboard at all (it did every second or two); the AI engine, idle with no model loaded, no longer wakes every 2 seconds; the menu bar icon's blue dot checks the menu bar's colour ever more seldom while it stays lit (once a minute at most, at once when dark mode or the displays change); the screenshot stack reads the pointer 20 times a second only near it or unfolded. A video playing in the quick look is redrawn as its position bar moves (about once a second for a 10-minute video, it was 6–7 times) — on each whole second, so its time still ticks on time. Posts saved from a list's sync no longer each force a memory clean-up after them (a page's snapshot or screenshot still does). On battery, in Low Power Mode or when the Mac is hot, links filled in later and the covers of posts saved before wait, as the AI's analysis does, and go on by themselves once plugged in.
A large library's sidebar scrolls lighter
with hundreds of folders the sidebar builds only the folders near what it shows — it looks and scrolls as before, and ↑↓ and typing a folder's first letters still reach the others — so scrolling a large library is about half the work it was; a folder chosen with the keys, or just made, scrolls into view. Reading a few items by id (the grid catching up with what changed, To review, the AI looking back, duplicates) looks them up directly instead of walking every item: 20 items of 30,000 in well under a millisecond, instead of 1.5–10.
Rounder dialogs, alike
every dialog — Settings, confirmations, the command palette, the shortcuts, the setup and the other dialogs — now has the same, a little rounder corners; menus, pop-overs and drop-down lists theirs, a step smaller, and toasts and tooltips are a little rounder too.
Making a folder through the local API is once per name
POST /v1/folders(for scripts with the API token) now does what agents'create_folderdoes: a folder of that name already under the same parent, whatever its case, is answered (existing: true) instead of a second one made — sent twice (a double click, a retry), it makes one folder; a name with “/” is refused (parentputs it inside another folder). Tags given to the API are cleaned the same way too (a name given twice in another case counts once).Downloads of the link tools and the format extensions go around a dropping proxy
yt-dlp, QuickJS and the format extensions' files (Ruffle…) are now retried when a connection drops, as models are, and with the automatic proxy the last tries go direct (Settings → Models & network says so).
Settings read cleaner
each setting keeps one short line of what it does; the details, exceptions and advanced notes (paths, formats, the network, limits, keyboard shortcuts) moved behind an ⓘ after its name, which shows them on hover, from the keyboard, or on a click. Warnings you need before deciding — files deleted, a download's size, what leaves this Mac — stay in the line.
Times and sizes read the same everywhere
a position — the player's, a transcript line's or a chapter's start, an annotation's — is cut to the second as players show it (59.6 s is 0:59), a length — an item's, a recording's — rounded (1:00), so a moment no longer reads one second apart in the transcript panel and in Ask AI or an export. Sizes are written alike: the Models page says 1.2 GB as Settings does (it said 1.23 GB), download progress and the engine's memory are exact, and only a model's download size before it is downloaded says ≈. A failed task whose details could not be read says so in words. Audio extracted from part of a video over an hour long is named with its hours (1.02.03).
Removed2
- The logs panel under the pages and its icon at the sidebar's foot (⇧⌘L): the logs are a page of their own, opened from Settings → About → Logs or the command palette.
- Leftovers kept for settings and libraries from before 0.1.0-beta.2: a screenshot setting with no switch in Settings (on in an old settings file, it announced each screenshot under the notch, as what the shelf collects; now screenshots behave alike for everyone), the move of quick collect's old default keys ⌃⌥⌘A, the covers of web captures made before their candidates were kept, and repairing a library from a backup older than its palettes' accents. Settings and libraries of 0.1.0-beta.2 and later are not affected; only development builds from before it could have left them.
Fixed81
EPS files are drawn once Ghostscript can draw them, and say why not
EPS files without a preview inside whose thumbnail failed because no Ghostscript would draw them — none installed, too old, its use turned off, or it could not start in its sandbox — are drawn again, in the background, once one would: after
brew install ghostscriptorbrew upgrade ghostscript(noticed within a minute, or when the library opens), after turning it on in Tools → EPS, or after an update of Refto changes Ghostscript's sandbox. Files that failed for another reason stay as they are. When Ghostscript draws nothing, the file's page now says why — not installed, turned off, too old, no sandbox it could start in, or it failed (an error, too long, a picture too big) — instead of always “Install Ghostscript”, and the log notes it in a line (the file's path and how gs ended, never what it printed).No “AI analysis done · 1 item” after deleting what was being analysed
when every item of the AI's batch is deleted or moved to the Trash before it is analysed, its card goes without a “done” card; one that went through some counts only those.
Deleted items no longer keep the AI's progress waiting
items moved to the trash or deleted while their AI analysis waited (behind a backlog, or held while the Mac is short of memory) now leave it at once — the jobs of nothing but such items are cancelled and the sidebar's AI analysis card finishes — instead of staying until those jobs had run.
Imports, saved videos and preview copies no longer fill the disk
what you start that writes much — an import from Eagle, a .refpack or .eaglepack, files dropped or pasted, files an agent or the API adds, a Finder mirror, a video saved with yt-dlp, a preview copy of a video — now checks first that it leaves the disk Refto keeps free (2 GB or 2 % of it, whichever is more); before, a copy from another disk could write the system disk down to nothing. When it does not fit, an import stops whole and says how much it needs and how much is free — what came in stays, and run again once there is room it goes on where it stopped — instead of listing thousands of items as failed; a disk found full partway (another app filled it) stops it the same way. A video may take at most what the temporary folder's disk and the library's leave over that floor (and 4 GB, as before), and an .eaglepack is unpacked only when all of it fits.
Stopping a video's download stops its ffmpeg too
yt-dlp runs in a process group of its own, so a cancelled download (or one over its size) no longer leaves the ffmpeg it started merging or fetching the stream, writing into a folder already removed.
Searching while the AI analyses new items no longer stalls
each time the AI had stored an item's vectors, the next search by meaning (the search field, the notch shelf's search, agents, plugins) read every item's vectors again — about 0.3 s and 250 MB of memory churn in a library of 50,000 items, for every search while an import was analysed. It now reads only the items that changed: about 14 ms instead of 0.3 s and 11 MB instead of 250 MB; what it finds is the same.
A large thumbnail that could not be read once is tried again
a grid cell whose larger thumbnail failed to load (not made yet, say) showed its small one for the rest of the run, blurry when zoomed in. It is now tried again after 10 seconds, then less and less often (at most every 5 minutes).
Changes save at once while a long scanned PDF is read
as the AI read the text of a long scanned PDF (a few thousand pages of Chinese), each time it saved what it had read held up a rating, a tag or a rename made meanwhile by up to half a second; the text is now prepared for search before.
Watched folders with many subfolders start faster
watching a folder with its subfolders, Refto went through every file it knew once for each subfolder as it started — about 1.3 s for 1,000 subfolders of 20 files, at every launch; now about 0.06 s.
Importing thousands of files is lighter on the window
the activity card under the sidebar copied and sorted every waiting job each time one moved on — about 34 MB of memory churn for each update with 10,000 files queued, up to ten times a second. It now only counts them; the Tasks page sorts them when open.
The AI's vocabulary cache stays small
the vectors of tag names the AI suggests from were all written again (about 85 MB for 10,000 tags) every time a new tag appeared, and those of renamed or deleted tags were kept for good. New ones are now added to the end of the file, renamed or deleted tags' go, and at most 20,000 are kept.
Long WebM and MKV videos no longer swell Refto's memory
the AI cut the sound of a video Apple's frameworks cannot read (WebM, MKV, AVI…: through ffmpeg) by reading all of it into memory at once — about 450 MB more for each hour, while a newly added video was analysed in the background. It now reads a window at a time: a few MB, however long the video; what the AI finds is the same.
Fewer leftovers on disk
the daily clean-up now also removes what a web page's capture left in a library when Refto quit or crashed in the middle (they no longer go into full backups either), the larger thumbnails of items deleted from the trash or given another version as their file, unfinished video copies, frames and waveforms in the caches, the thumbnails of format extensions and plugins being made, and — once unused for a month — the caches of libraries Refto no longer lists. Hover strips and waveforms are kept under 512 MB a library, the oldest going first (they are made again when needed).
Searching is lighter with many transcripts or long PDFs
a word found in recordings' transcripts or PDFs' text no longer has each hit's line looked up in every text, every search: only the hits on show (the grid's first screen, an agent's page) are placed at their second or page, the others as you open them; a long PDF's text is no longer cut into pages to find a line in it. In a library of 100,000 items (300 transcripts, 300 long PDFs), a search for a common word in the grid takes about 20 ms instead of 47 ms and makes 4.5 MB of garbage instead of 39 MB; the notch shelf's search reads its hits once (to 300) and shows the next pages from them — scrolled to its end, 5 ms instead of 0.5 s and 370 MB; an agent paging through a search 20 at a time, 0.2 s instead of 1 s.
Linked files gone from a folder no longer cost seconds every few minutes
Refto looked for each missing linked file in its folder and the one around it again on every check (when a library opens, then every 10 minutes): 500 files deleted from a folder of 3,000 were 3–6 s of work each time. A folder is now listed once for all its missing files, and a file missing already is looked for again after half an hour, then twice as long each time (6 hours at most), or as soon as its folder changes: 1–10 ms. Those checks, the scheduled backups' list of linked files and Settings → Collect's posts without their videos also read the library on their own connection, not in front of the grid's.
Arrow keys on a post's Screenshot view turn its pictures after a click on the views' switch
clicking Card, Screenshot or Live page above an item's page left the keyboard on the switch, so ← → switched the views instead of turning the pictures (or the items). A click now gives the keyboard back to the page; reached with Tab, the switch still takes ← → as before.
A post's next picture no longer flashes blank as it slides in
a picture shown for the first time in the Screenshot view slid in as the page's colour while it was being decoded. The pictures beside the one shown are now decoded ahead, and a small version stands in until the full one is ready.
Browsing posts takes less memory
on an item's page, the posts you turned away from no longer keep their Screenshot view's pictures decoded (up to 64 MB each, two of them beside the one shown); going back to one shows the picture you left it on, small for a moment as it is decoded again. A long animated GIF on its page now plays whole, a little smaller, within 64 MB of frames (160 MB before), instead of stopping after its first frames.
A closed or minimized window gives its memory back
closing Refto's window (it keeps running in the menu bar and the notch) or minimizing it no longer keeps its pictures decoded for hours — the grid's thumbnails (64 MB or more), an item page's picture, the pages beside it and a post's pictures (up to a few hundred MB). Once the window has been away 30 seconds they go; shown again, it looks as you left it (the item, its zoom, the slide) and decodes what shows, as after switching libraries. Another library's window that stays open keeps its own. The notch shelf and the captures' shelf let go of their cards' pictures 30 seconds after they are closed or put away the same way.
Toasts on a board show above its toolbar
messages such as "It is on the board already" covered the board's tools at the bottom; on a board they now sit above the toolbar. Other pages are unchanged.
A chosen picture's outline on a post's card follows its corners
the outline of a picture clicked or right-clicked on the card (Card view) was square at the grid's round corners — its inside edge showed a sharp corner under the rounded one. It now runs inside the picture with the grid's corners, in every layout (one picture, two, three, four, a note's album), in Light and Dark Mode; a video's focus ring too.
The open shelf no longer covers Refto's menu bar icon
the open notch shelf reaches into the menu bar beside the notch, and where Refto's icon sat under it (a menu bar with few icons), a click on the icon went to the shelf instead — the shelf stayed open and kept the keyboard. With the pointer on the icon the shelf now lets the click through: the icon closes the shelf as it should. An icon hidden behind the notch is left alone.
Clicking the menu bar icon to close the shelf no longer opens it again
with another app in front (Finder, say), after using the notch shelf opened from the menu bar icon, the shelf closed by itself as the pointer left it on the way to the icon, and the click then opened it again with the keyboard — what you typed next went to the shelf instead of the app you were in. A click on the icon right after the shelf closed that way now counts as that close. And a shelf closing now gives the keyboard back whenever its window has it.
The keyboard goes back to Refto's window as the shelf lets go of it
closing the notch shelf's search with ×, or the shelf itself (after a drag out, from the menu bar icon, with Esc), left the keyboard with the shelf's hidden window — what you typed next was lost until you clicked Refto's window. The keyboard now goes back to Refto's main window when Refto is in front, else to the app you are in, without bringing Refto forward.
"It is on the board already" for one item
adding an item again to a board that has it said "They are on the board already".
Dragging out of the notch shelf no longer closes it half way
with Refto in front, a card dragged out of the shelf opened from the menu bar icon closed the shelf as the pointer left it, and the drag (its picture) went with it. The shelf now stays open, as it was, until the drag ends — dropped or cancelled — and then closes if the pointer is away.
A click in Refto's window takes the keyboard from the shelf's search
with words in the shelf's search, clicking Refto's main window (its search field, say) left the keyboard with the shelf, and what you typed went into the shelf's search. The click now moves the keyboard to the window clicked; the shelf stays open with its words and results, and clicking its field again goes on typing there.
The shelf's search field no longer nudges the shelf
opening it made the row of tabs 2 points taller, so the tabs and items moved a little. The field is now as tall as the tabs.
"Moved to the trash" without stray text
deleting one item said "Moved to the trash%!(EXTRA int=1)" (also "Already in the library", "Link copied", "Organized" and the shelf's locked item note for one).
The notch shelf lets clicks through under it, and heeds Refto's Reduce motion
the open shelf's window is larger than what it shows, and the transparent strip under it (and beside it) took the clicks meant for the windows below — a right-click on a board card there did nothing while the shelf was open. Now the shelf takes the mouse only with the pointer on it (or content dragged onto it); elsewhere clicks reach what is under it. With Refto's own Reduce motion on (Settings → General), not only the system's, the shelf opens and closes at once and its search field appears without growing out of the button.
An agent's file waiting for macOS's permission
the first time a newly installed Refto reads your Desktop, Documents or Downloads folder (or iCloud Drive, a volume), macOS asks whether it may; until you answer, an agent's
add_itemsonly saw its job running and some added the file again. Refto now looks first: while macOS is asking, the agent is told to ask you to answer the prompt; when macOS does not let Refto read the folder, the file is skipped (macos_permission_denied) with where to allow it (System Settings → Privacy & Security → Files and Folders). Anything still being added when the wait ends says how to wait longer, and the same request again returns the same job instead of adding the file twice.A PDF opened from a video's page shows the PDF
with a video's page open, a link to a PDF (
refto://item/…, also with?page=) showed the video's last frame, still, in place of the PDF until a page in the column was clicked. Leaving a video or a sound for any other item (a PDF, a picture, a link, a document, another video) or closing its page now lets go of the view it played in, and the next item opens in a fresh one.Videos that play are no longer converted for good
about one opening in six of a video the preview plays as it is (an MP4 of H.264 or HEVC) was taken as not playing when its first frame took more than 3 seconds, and the video was converted for the preview — and so every time after (a large video converts for a while, Preview copy at the sidebar's foot). Refto now converts a video for good only when it reports it cannot decode it; one slow to start gets 10 seconds, counted only while its player shows in a window in front, and then is converted that once. Videos marked so before play as they are again.
From a PDF to a video being converted, no PDF under the note
while Converting for the preview… showed, the player still showed the PDF opened before. The video's thumbnail shows until it plays.
From a video to one being converted, the new one plays
going from a video that played to one the preview converts (an MKV, an AVI…) sometimes left the video before playing on under Converting for the preview…, and some 15 seconds later said This file cannot be played here. though the copy was made in under 3 seconds. The video before now stops as you go, and once the copy is made it plays; a video that has data but shows no picture (stuck at 0:00 with the one before's picture, or black while its time runs on, as a damaged MP4's does) is converted that once after 10 seconds, or says Can't preview: when it cannot be.
A video that cannot be converted says so
when the preview's copy of a damaged video fails, the page says Can't preview: and why, with Open with the default app and Show in Finder, instead of Converting for the preview… forever; the log has it, and opening it again does not start the same failing conversion over and over.
Preview streams cleaned up
the temporary stream files of converted videos (
*.live.mp4in Refto's cache) are removed once the video is closed or its conversion fails, and leftovers after a while.An agent's question when Refto is behind
when an agent asks to change the library or to add files from outside your home folder while you are in another app, Refto's Dock icon now bounces until you come to it, the menu bar icon gets its dot, and the notification is posted — without taking the front from the app you are using. Coming to Refto shows the main window with the question (restored if minimized); once the last question is answered or times out, the bouncing stops (also when the question came just after you switched away: macOS can still count Refto as in front for a moment, and the bounce is asked again). Before, the question could wait unseen until the agent gave up.
Forget in Settings → Agents asks at once
its question did not show until another key was pressed (any dialog whose open state was worked out each time could stay invisible). An agent connected from more than one client window says how many (3 client windows) in its row — counting each client process once (ChatGPT keeps about ten
Refto mcprunning for one window: one, not “10 sessions”), and only those that sent something in the last 90 seconds:Refto mcpnow ends its session when its client stops it (SIGTERM, SIGHUP) or quits without closing it (an orphan), which ChatGPT does each turn, so the row no longer counts 19 sessions for 4 conversations.Board and thumbnail pictures no longer flood ChatGPT
the pictures agents get from
render_boardandget_thumbnail(a contact sheet too) are JPEGs of at most 600 KB of base64, made smaller when they must be (imageScalethen says how to map them back); an 820 KB PNG of a board reached ChatGPT's Codex as a megabyte of text and doubled a moodboard task's tokens (2.47 M). The copy written for you (file,markdown) stays a sharp PNG.No question for a tool that is not installed
run_tool,upscale_imageanderase_imageon a tool not installed or turned off answer at once with why (tool_not_installed…) and what to do (how), instead of asking you to allow a change first.
Agents' searches with quoted filters
tag:"dark mode",folder:"Fintech & Banking"and the like in an agent's query (MCP, thereftocommand, the local API) found nothing; a quoted value is now one value, as in Refto's search field.folder:also takes a folder's path (folder:"Mobile/Onboarding"), in the search field too. A search'stotalis how many it found (it was the page's), somoreis right. An Excel workbook's text is read from its cells — inline text, numbers and every sheet (only its shared strings were, so many workbooks had none); those already in a library are read again.A playing video's position moves smoothly
the knob and the played part of the bar under a video or a sound (on its page, in the quick look, in a window of its own, on a board) went on in jumps — a 10-second video's about 13 points every 150 ms. They now move a little each frame of the display, the page itself built only once a second for the time shown (and the readings of the video's time, a little off, are caught up gently, never back); a long video's bar is painted only when it moves half a pixel, a paused one, one out of sight or a window in the Dock not at all. A sound's waveform fills as smoothly.
A link’s downloaded video keeps what you gave the link
a video page saved to have its video downloaded (the local API’s
video: true) became a new video item that kept only the link’s name, note, first folders and tags — its rating, the date added, its pin, its place in a stack and on boards, and whatever you did to the link while the video downloaded were lost. The video now takes all of it (a rejected tag stays rejected), and the link is gone instead of a second card of it waiting in the trash (one with annotations or highlights still goes to the trash). A video the library had keeps its own name and date, and gets the link’s folders, tags, the higher rating and its note.A library is always a
.reflibfoldermaking a library in a folder not named as one (
~/Pictures/Reftoitself, by a script) is now refused instead of turning that folder into a library; a new library’s name typed with.reflib(or.actlib) no longer gets a second extension (Mood.reflib.reflib). Libraries made before as.actlibopen as ever.A folder whose items are all in its subfolders no longer looks empty
under its subfolders' cards it said Nothing here yet; it now says Everything is in the subfolders and how many items they hold (each once), and that files dropped there go into the folder itself. With empty subfolders too it says so.
WebM videos no longer fail the AI's sound jobs
a WebM (and an MKV, Ogg, AVI… — what macOS does not read) is now cut, listened to for speech, transcribed and timed word by word through the built-in ffmpeg at once, instead of asking the engine first, which logged
unsupported_media: Cannot readfor each. A WebM without a sound track is recorded as having no sound, not as a failed speech detection and transcript, and a transcript of a WebM made from its panel now times its words too (they were left untimed). Videos marked failed before: choose Analyse again in their menu.Agents' board sections in your language
when an agent arranges a board by tag, colour or kind (MCP
arrange_board), the sections' labels — Other, Untagged, the colours and the kinds — follow Refto's language; they were always Chinese. A tag named like one of them stays a section of its own. Asking to highlight, upscale or erase, an agent's first change now says which.Fewer stray tag suggestions after a video is transcribed
tags made only to suggest them on other items (a YouTube or Dribbble page's keywords: design, uidesign, ui design tutorial) are no longer suggested to every item that looks alike — a tag joins the AI's vocabulary once you take it. Suggestions also leave out the words your library's name and the item's folders already say (unless you tag things with them), one of each way of writing a name (ui design, uidesign), and a page's keyword that is a chosen tag plus words like “tutorial” or “for beginners”.
Rejected tag suggestions no longer leave empty tags behind
a tag the AI (or the file info: a website, a camera) made only to suggest it — a page's keyword, a site's name — is gone from the tag list once its suggestions are all rejected or dropped, and it is still not suggested to those items again. Tags you made, coloured, starred, grouped or took stay, even empty. Libraries from before are tidied once (only the tags that can be told made by a suggestion).
Colour values are no longer suggested as tags
a post or page that writes colours as
#1D2026,#fffor#A1B2C3no longer gets them as hashtag tag suggestions; hashtags such as #design, #UI2026, #c4d or #cafe still count.A PDF's zoom stays with that PDF
after zooming a PDF out (or in) with its controls, the next item no longer shows zoomed too — another PDF opens at its fit again, and an X post's card, a saved web page or a video at their own size, their text no longer small. Within the same item (another of its pages, its quick look and its page) the zoom stays.
The folder picker’s search field shows again
in the inspector’s Add to folder, the search field had collapsed to a magnifier on top of the first folder; it now sits above the list, which scrolls under it. ↑↓ mark a folder, Return adds to it (a search marks its first match), very deep folders stay readable. The boards drop-down’s search had the same fault.
Refto leaves less behind on your disk
a pasted picture (⌘V, Paste, a thumbnail from the clipboard) no longer leaves a copy in the temporary folder, and what interrupted work leaves there goes after a day. The AI models compiled for this Mac (tens to hundreds of MB each, for AI Upscale and the AI eraser) go with their model, when it is updated, and after a month unused; a Live Photo's sounds keep to 64 MB; of the indexes saved before restoring a backup, the latest 3 stay. A video ffmpeg cannot read no longer holds its thumbnail, a frame made its cover or a Live Photo's sound for ever: a minute at most.
Tagging many items at once is faster
tagging or untagging 1,000 items — as an X list's full check does — takes under a second instead of several (their files are written several at a time).
- Making a version the item's file while its tool's older versions go to the Trash is refused, saying why, instead of leaving the item's file in the Trash.
X sync keeps each list apart
(browser extension 0.6.4): each list's progress has its own place in the extension's storage, written every few pages instead of every page, all of them together kept under 6 MB (the list synced longest ago is forgotten first: its next sync reads it again, nothing saved twice); should the storage be full, the sync stops and says so.
Refto no longer quits suddenly while it draws post covers
a little after starting, as it drew the covers of the posts saved before — or a post's cover as it was saved, or a board's picture (export, Copy as picture, an agent's look at a board) — Refto could quit at once, the window drawing at the same time. Those pictures are now drawn between the window's frames, one at a time, and the window keeps moving smoothly meanwhile. Should Refto ever quit unexpectedly, its report is now kept in ~/Library/Logs/Refto/crash.log (with the version and the time), and the log notes it at the next start.
Lighter on the Mac while things come in
during an import, an X sync or the posts’ covers being drawn, the window is rebuilt at most 10 times a second instead of once per event (an import of 100 pictures: 133 rebuilds, now about 20); an X sync’s card at the sidebar’s foot shows how many it has seen without a moving bar, so the window is no longer redrawn every frame for the whole sync, and any bar that cannot say how far it is stops moving after 5 seconds. Checking a new file against the library for duplicates looks it up directly instead of reading every item (in 30 000 items about 4 ms each time, now well under 0.1 ms).
A library from someone else can no longer freeze Refto or use up its memory
a library holding, in place of one of its small files (its settings, quick access, a page's details, a sidecar), a link to a device or a special file no longer makes Refto read without end as it opens — every start, since Refto opens the last library again — and such a file counts as missing; a file far larger than Refto writes is refused. A very long name — of an item, a tag, a folder, a smart folder, a board — no longer stops the window: names are cut to 1,000 characters (an item's) or 255 (the others'), line breaks become spaces, as they are saved and as they are read. The library menu no longer waits for a library on a disconnected network volume.
No more flash as an X post opens or shows in the quick look
opening a post with a picture from the grid (double-click or Return) or pressing Space on it no longer blows its thumbnail up into one big picture that then turns into the post's card at once; the picture now flies to its own place in the card, and the card — avatar, text, counts — fades in around it before the picture hands over seamlessly (a card without the picture, or with it in another shape, cross-fades with it once it lands). Closing the quick look fades the card out with the panel instead of dropping it. In the quick look a picture grows from its cell keeping its shape and place all the way, rather than sitting small in the panel's corner and jumping to size as it lands; pictures, video posters and web cards in it have round corners concentric with the panel's (its radius less its padding), going from the thumbnail's corners on the way. With Reduce motion everything just fades.
Nothing plays on unseen
a video, a sound or a page's media now stops once nothing on screen shows it. Before, it played on with no way to tell from where: in the column beside the grid once no item was chosen (and under the quick look, which played the item too), on a board as a presentation started or another board opened, in an SWF movie or a plugin's preview after its item's page was left, in a post's card behind its live page loading, and anywhere in the main window once it was closed into the Dock. Minimizing a window or closing the main window pauses what plays in it, as Photos does; hiding Refto (⌘H) or switching to another app does not. Back, it shows paused where it was.
Browser extension speaks Refto's language
(extension 0.6.1): its settings, popup, menus and notes, and what it shows on pages — the drop zone, the site buttons, X's Sync to Refto, its question, progress and notes — are now all in the language of Refto's interface (Refto's local API tells it), where the settings could be in Chinese and X's sync in English. The extension's settings can choose Chinese or English instead (Connection → Language). Until it has reached Refto once, the browser's interface language.
Quick look
no longer stutters as it opens and closes, in a large window too: as the panel flew, the clipping of what is in it was drawn again on the CPU every frame (9 ms a frame in a 1280×800 window on a MacBook Air, up to 30 ms in a large one, longer than a refresh); it now takes about 2 ms. Space after a pause no longer uploads the grid's thumbnails again before the first frame, and a large picture decoded while the panel flies shows once it lands. In Low Power Mode the window behind darkens without blurring. Space held down opens it once, as Finder's, instead of opening and closing it with the key's repeat.
Quick look
closing it (Space, Esc, a click beside it, Return to the item's page) or an arrow to another item stops a video's or a sound's audio at once; it could play on after the quick look closed.
- A screenshot or recording set to go into a folder of another library (the settings' folder, chosen in another library) no longer fails: it goes in without that folder.
Notch shelf
content dragged onto what was just saved (the bar under the notch, or the island) shows Release to collect at once, as on the notch; it stayed the last save's bar before. Dragged away with nothing let go of, the bar comes back; dropped, the new save has a bar of its own. The bar has a Back button at its right end: the open shelf as it is — Recently Collected with what came in first and ringed, the tabs, pin — to drag it out or look at it right away.
Turning pages with two fingers
the item turned to shows from its top. The gesture that turned the page — scrolling an X post's card to its end and on — glided on after the fingers lifted and scrolled the next post's card (or its screenshot, snapshot, reading view, live page, a PDF or a document) half way down as it showed; a text turned to took that glide too, and the end of the drag as it slid under the fingers. The glide now stops with the turn; the next gesture scrolls the new item as ever.
Pinch to go back on a PDF
pinching in on a PDF's page goes back to the grid again, as on a card (its pinch was lost the same way). A PDF fitting its view wide — a slide, say — no longer shrinks instead each time, and one zoomed in (by pinching, a two-finger double tap or its zoom buttons) pinches back to its fit and stops there; pinch once more to go back.
Pinch to go back
on an X or GitHub post's card (and its screenshot, snapshot and reading views): the page no longer shrinks under the fingers and springs back as they lift unless pinched very small — the rest of the pinch was lost once the page's picture stood in for it. Everywhere (pictures too) the page now closes under 85 % of its size, or under 94 % when the fingers are still closing fast as they lift; opening them again as they lift keeps it open.
To review
no longer looks as if accepting did nothing: "Accept N tags" says how many suggestions are left and why (less confident than the threshold, or not tags); an item answered no longer comes back for a moment while the AI keeps adding suggestions; the sidebar's count only counts what the page lists (a suggested name the item has already, or a locked item, kept it from reaching zero).
Duplicates → Look alike
finds one picture saved again: bigger or smaller, sharper or blurrier, recompressed or in another format, on a wider canvas or with a margin, or cut a little (a site's thumbnail beside the full picture, a design shot with and without its background). Such a group says Same picture; pages of one app that only share their frame are not taken for one. Pictures are compared by themselves in the background as they come in (and those already in a library once, after the update), with their progress at the sidebar's foot and on the page — no need to click Check existing items first.
Duplicates
suggests which one to keep and why — the most pixels, then the largest file, then the first collected — and shows where the items of a group differ (format, dimensions, size), the best of each in the accent colour.
Duplicates
stays quick with a picture saved thousands of times: comparing 4,000 copies of one screenshot took 17 minutes and wrote 8 million rows into the library; it now takes about a second and one row a copy. Such copies are one group (its card shows 24 of them and says how many more), and the page with thousands of groups scrolls as smoothly as with a few. Comparing pictures in the background takes a pause after half a minute of work and goes on by itself.
Watched folders that ask
no longer slow down when thousands of files arrive at once (an archive unpacked in Downloads): the notch lists the first 500 and says the others were left where they are; files moved away one by one no longer rewrite the list each time.
- Saving a post again with the browser extension's sync while it is still being saved no longer saves it once for each time: the latest waits for the one under way.
- Leftovers of a post's video download or a cover made from a frame, after a crash, are cleaned up after a day.
Large libraries feel quicker
the grid, search and the sidebar no longer wait behind the AI reading every item in the background (30,000 items: the grid's first page came 0.2 s late each time a library opened or a batch of analysis ended); the item page and the Tools page no longer make garbage on every frame (1–2 MB a frame while a video plays or the page scrolls); the sidebar and Settings → Tags with thousands of tags, To review while the AI keeps adding suggestions, and the grid during a large import do much less work each time.
Background scans stay out of the way
comparing a library's pictures for Duplicates the first time takes half the memory (30,000 items: 2.1 GB of work, now 0.9 GB). It, the posts' covers drawn in the background, the background capture of older links and X's Full check now read on the background's own connection, so the grid and search no longer wait behind them. The background capture reads its list of links once a round instead of before each link (3,000 links: about 50 ms and 10 MB each time, now well under a millisecond); the posts' covers read each saved page's details once instead of twice; trying again what the AI gave up no longer holds up saving while it looks for it.
- An item's page reads its neighbours one at a time, and only the latest ones: holding an arrow key through a folder of documents no longer starts a converter for each document passed. Leaving the page lets go of the pictures it kept for the pages beside (up to about 120 MB).
- The library's write-ahead log is cut back to 8 MB after a burst of writes, and the welcome tour's pulsing notch stops while Refto is in the background.
Security11
Logs keep no link's query
the web log and yt-dlp's no longer write the part of a link after its path (a 小红书 link's xsec_token, a signed media link). At most 50 browsers stay paired with the local API (the one unseen longest goes first), and the sidebar's foot shows at most 8 list syncs.
Saved web pages are bounded
a page's HTML is parsed up to 8 MB and 250,000 nodes (the browser extension's "save the whole page" and the rendered page could send any size: 8 MB of tags took 1.5 GB of memory, now about 100 MB); a capture stops after 5 minutes and its snapshot's resources after 2 minutes, 300 at most, 4 at a time from one site (a page of pictures that never answer held a network slot for hours); a browser's screenshot is read up to 25 megapixels, a library's
web.jsonup to 4 MB.Libraries from someone else are not visited
older links get their covers in the background, and posts their drawn covers, only in libraries made or trusted on this Mac (nothing is written into another's library, nor its avatars decoded, until you trust it); Settings → Collect says when a library is paused and can trust it.
Oversized pictures are not decoded for thumbnails
on the Mac, a picture whose header says more than 64 megapixels (a PNG of 1 MB can say 16000×16000: a gigabyte decoded) is no longer handed to ImageIO for its thumbnail, a thumbnail shown in the grid, an avatar or a post's picture: its thumbnail comes from Quick Look, outside Refto, or none shows. A picture of more than 268 megapixels is not decoded whole, as it was not by Refto's other decoders.
The local API takes less at once
requests that send something are served 16 at a time, large bodies 2 at a time (others wait, then get 429), each token 6,000 requests a minute, 64 connections; a request's body must arrive within 5 minutes. A note is at most 64 KB everywhere (a 60 MB note took 200 MB of disk); a request has at most 200 tags and folders.
The notch shelf, a post's Screenshot view and agents' thumbnails decode within 64 megapixels too
the shelf's cards (whatever library it shows), a saved post's pictures in its Screenshot view and on its card while the page loads, a board's thumbnails, and MCP's
get_thumbnailand contact sheet (a version's file too) refuse a picture whose header says more than 64 megapixels, as the grid does, instead of decoding up to 268; agents' thumbnails are decoded small on the Mac rather than whole.Third-party plugin pages stay in their place
a plugin's page can no longer save a file into Downloads (a download link, a blob) or go to another web site in its panel, window or preview; it moves between its own pages only, opens no window, and a web link clicked in it opens in your browser when the plugin may open links (its open-url permission). The format extensions' pages (ePub, SWF, EPS) and a board's PDF follow the item page's rules too: links out open in the browser, nothing is downloaded.
Downloads and plugins unpack safely
a format extension's component, the yt-dlp release and an
.actpluginare all unpacked the same careful way — no file outside the folder, no link, nothing overwritten, at most 20,000 entries and a size counted as it is written (a zip that claims to be small and unpacks to gigabytes stops at the limit). Paths are checked the same way everywhere: moving Refto's data folder into a folder of it whose name starts with ".." is refused like any other folder of it; a built-in tool's export folder is checked once..is resolved; removing a plugin named "." no longer touches the other plugins. Names Refto makes for files (a board's export, a dropped text, a library, a backup) no longer start with a dot (a hidden file) nor hold control characters.Refto runs only its own helpers
the released app no longer takes
ACT_ENGINE,ACT_FFMPEG,ACT_RECORDER,ACT_CJXL,ACT_OXIPNG,ACT_LIBWEBPorREFTO_API_TOKENfrom its environment (a program of yours could set one withlaunchctl setenv, and what Refto started in place of its engine, ffmpeg or recorder would have had Refto's screen recording, microphone and folder permissions, or the local API's token would have been known beforehand). It says in its log that it ignored one; development builds and the scripted checks still take them, andrefto mcpstill takesREFTO_API_TOKEN.EPS files are drawn by Ghostscript only when they must be, and in a sandbox
an EPS file with a preview inside (a TIFF, Photoshop's image or thumbnail, an EPSI preview) is shown by it, and no PostScript is run; only one without is drawn by the Ghostscript you installed — before, Ghostscript drew every EPS file when it was there, its
-dSAFERthe only guard, and that has been got round more than once (CVE-2024-29510 was used with EPS files). Ghostscript now runs in a sandbox that lets it read only the file, itself and the system's fonts and libraries, write only a new temporary folder, and reach no network and start no other program — no sandbox, no drawing; never older than 10.03.1 (Settings → Tools → EPS says when yours is, and to runbrew upgrade ghostscript, as does the file's page); on a page of a size Refto sets (its long side at most 4096 pixels, whatever the file asks for), one page, within 30 seconds.- Browser extension 0.5.4: "save the whole page" cuts a page's DOM over 8 million characters (and says so) and turns at most 4 MB of canvases into pictures.