journal releases

what's new in the journal, newest first. the journal is the memory, on a computer you choose; these are the journal's own changes.

get started

journal 2.0.49

october 17, 2026

Added

  • with solstone journal importer --audio-archive, you can import a folder of Ogg Opus recordings as one archive. give a folder the time zone it was recorded in (times come from Limitless pendant filenames), or a manifest with each recording's time. the import shows its size before saving and says how many recordings it left out and why. interrupted runs resume without replacing parts already saved.
  • on linux, solstone update checks for updates and installs them through the installer that owns your copy. the health page shows the same update availability, including when it cannot tell.
  • the activities app draws your day to scale, and each activity shows where it came from, the segments it's based on, and its history. you can edit an activity or hide it.

Changed

  • imported recordings waiting to be transcribed now wait behind today's recordings, with the most recent recordings first. audio-folder sync also accepts .ogg files.
  • wherever the dashboard shows where something came from, it now names the device or import, like "your mac · screen" or "Apple Health · imported", instead of an internal id.
  • the health page no longer keeps its own list of your devices; it says how many are adding to your journal, shows any that need attention, and links to the network app, where you manage them. the settings page's devices section is gone for the same reason.
  • on large journals, the health page takes less time to open after your journal starts. the speakers calendar and stats also load faster.
  • solstone journal importer --timestamp also takes a date and time with its offset, such as 2025-11-02T01:30:00-07:00, so a recording from the hour that repeats when daylight saving time ends can be placed at its true time. the YYYYMMDD_HHMMSS form works as before.

Fixed

  • home's cards no longer list activities you've hidden.
  • a plan you hid or edited stays that way when it shows up again in what you share, unless its start time, kind of activity or facet changes.
  • while catching up on older recordings, your journal could think about the same recording over and over. this happened when an earlier version had started a step for it, and that step no longer exists. each recording like this now gets at most one more look, and then it is left alone.
  • after you restore your journal onto a new device, you can bring your solstone.me address back to it in the agents app. before, the address stayed off. your journal tells you when the address has come back, and the other copy stops using it.
  • downloading location accuracy no longer pauses to save its progress after every small piece of the download, which could make it very slow on windows.
  • on linux, installing your journal now retries interrupted downloads and temporary download errors. an incomplete download reports a download failure instead of a signature mismatch.
  • on ubuntu 22.04, the installer points you to Minisign's installation page when the verifier is missing.
  • with media offload turned off, its nightly run no longer reports that offload didn't start or didn't finish. it now notes that offload is off and stops there. nothing was removed, and your media stayed on this computer.

journal 2.0.48

october 16, 2026

Changed

  • new imports use creation dates in common filenames, photos, audio and video files instead of the date a file was copied. when no creation date is found, you can choose one. this works from the import page and the command line without installing an extra tool. audio you sync from a folder still uses the time the file was last changed when it has no creation date.
  • returning to health or known voices takes less time on large journals.

Fixed

  • security fix: app updates on mac now check each download address before connecting. before, a redirected update download could contact another website and reveal that you were checking for updates.
  • security fix: on mac, a redirected speech-model download could tell another website that you were using transcription. when a speech model fails to load, your journal now leaves the installed files in place and reports the problem instead of downloading a replacement.
  • security fix: exports from older journals could include private keys for connections to other journals, giving a copy of those keys to anyone you shared the export with. exports now leave out those keys.
  • security fix: a redirect could disclose an install or update request to another website. the linux installer's wget downloads now check each redirect before following it, and windows update checks and downloads refuse redirects.
  • on the command line, audio processing now says when it is waiting or has failed, instead of saying it has finished.
  • photo blocks in transcripts' detail column now have a shaded fill and a visible border. before, they blended into the background with only a faint shadow.
  • after a linux package upgrade, you no longer need to run setup again. your journal refreshes what you've installed on its next start.
  • on mac, installed transcription models now refresh in the background when an update includes changed files, and on every platform installed location data does the same. if the refresh fails, the installed copy stays usable and your journal tries again on a later start.
  • new conversations imported across midnight and daylight saving changes keep their source times. conversations in the repeated hour are kept separately, and timed text that crosses midnight continues on the next day. existing imports stay where they are.
  • fixed an access-denied error when importing a journal archive on windows.
  • when older recordings arrive late, your journal no longer links them as if they were recorded after newer ones.
  • changing your backup recovery key now saves and checks the replacement before removing the old key. if removal is interrupted, trying again finishes the same change.
  • small orange links and labels in your journal dashboard are easier to read in light appearance. if your journal's mark cannot be read, its placeholder now follows the dashboard's appearance. opening support keeps the navigation in place.
  • the location accuracy download prompt now names updates.solstone.app.
  • in the date picker, each day now sits under its day of the week, and the days of the week are labeled along the top. before, every month started in the first column, so most dates looked like they fell on the wrong day. the up and down arrow keys now move a week at a time.
  • on windows, links to saved output from a thinking run open again.
  • on windows, solstone link join can finish pairing and save connection settings.
  • on windows, you can preview an import again.
  • sharing to your journal from your iphone or ipad works again. since 2.0.42, your journal turned away every photo, voice memo, pdf and piece of text you shared from your phone, saying to preview the import first, which the phone has no way to do. anything your phone is still holding goes into your journal on its own once your journal is updated and your phone connects to it again.
  • on the import page, dropping a photo or a pdf into quick import works again. since 2.0.42, its preview stopped with an error instead.
  • media offload runs again on some journals that go back to before version 2.0. 2.0.47 said offload ran again on a large journal, but on these journals the check it runs first still stopped it before it began. nothing was removed, and your media stayed on this computer.
  • Opus recordings you import now keep their opening sound. before, each imported Opus file lost about 20 milliseconds from its start.
  • when part of an audio file can't be imported, the command line now names the part that's missing, and the file is no longer counted as imported. before, trying the file again was turned away as already imported. importing it again adds a second copy of the parts that did get in.

journal 2.0.47

october 15, 2026

Changed

  • with confidential processing, your journal no longer waits between requests while it catches up on older recordings and days, so it gets through them faster.

Fixed

  • with confidential processing, older recordings and days waiting their turn no longer hold up new recordings and recent days. your journal works on one older item at a time, and newer work starts ahead of older work still waiting.
  • stopping or restarting your journal no longer waits several extra seconds when a background job left a helper program running. that time now goes to letting your journal's other programs stop cleanly.
  • media offload runs again on a large journal. a check it runs first mistook your journal's ordinary activity for unfinished work, so offload stopped before it began. nothing was removed, and your media stayed on this computer.
  • when one step of thinking about a recording failed the same way every time, your journal kept running it over and over. once a step has kept failing like that for a couple of hours, your journal now stops repeating it and lists it in health's set-aside work, where you can try again. it also tries once more on its own when the recording changes or an update fixes that failure. while the step is set aside, that day's daily outputs wait for it, so nothing from the recording is left out.
  • health counted some set-aside work, like a story your journal couldn't use, as work still left, so it kept saying your journal was still catching up on older days. everything in the set-aside list now counts as set aside.
  • health's line about older history now moves as your journal works back through older recordings. before, it could stay on one date while a few newer days waited only for their daily outputs to be updated. those updates still count in what's left. the line also stays on screen while your journal checks its work, and no longer switches to "last checked" just because the next check starts a few minutes later than planned.

journal 2.0.46

october 14, 2026

on windows, this version brings every change in 2.0.45 and 2.0.44, including the security fix in 2.0.44, so please update. where 2.0.44 says offload, approving or restoring is paused or isn't available on windows, this version turns it back on.

Fixed

  • on mac, confidential processing works again. in 2.0.45, health said processing needed attention and that your journal's install didn't match. your install was fine: your journal couldn't check the service, so it sent nothing and kept that work for later. it catches up after you update, with nothing for you to redo.

journal 2.0.45

october 14, 2026

2.0.45 isn't available on windows. on windows, your journal stays on 2.0.43 and gets these changes, and those in 2.0.44, in a later version.

Changed

  • your journal now shows some of the objects it finds in screen frames and photos. they appear as an "objects" line beside the frame's description, like "person ×2, car", and opening the frame or photo in transcripts outlines each one on the image. new recordings also list their objects so a search can find them.
  • health now shows how far back your journal has caught up, how many older recordings and daily outputs are left, and the recent pace when it has enough progress to compare. items set aside and days it could not check are listed separately.
  • when you save your own endpoint in thinking settings, your journal now sends it one built-in test image and tells you right away if the model didn't read it, so you can switch models. before, a model that can't read images only showed up later, as screens and photos that failed to process or were described wrongly.

Fixed

  • your journal now renews its access to the relay on its own, so your devices keep reaching your journal from anywhere without you turning your private network off and on.
  • when something said in a recording or shown on your screen begins with words like "I can't", your journal no longer throws away what it wrote about that part of your day or that screen frame. it used to mistake those words for the model refusing the work. when a model turns the work down in plain words, and its provider doesn't mark that as a refusal, its reply now shows up as written, instead of nothing.
  • when an older day has daily results that were never made, your journal now makes them after finishing that day's recordings, before moving on to older recordings. before, those results waited until every older recording was finished.
  • on windows, media offload runs again. you can approve its proposals, and the removals your retention settings propose, from the home page and bring the media back from the backup page or with solstone journal backup offload restore, including media an earlier version offloaded.
  • backups and portable exports now keep entities and facets named cache or indexer. portable exports also keep files ending in .key; your next backup picks up previously skipped entities and facets automatically.
  • home now points to health when your current backup key can't open the destination. changing the setup removes the old warning; ordinary retries stay in backup details.
  • new conversations you import from ChatGPT, Claude or Gemini now label your messages as "You" instead of "Human", so your journal can tell them apart from the assistant's replies. Claude messages without a known sender are labeled "Unknown".
  • when your journal can't set up its solstone.me address, the agents app now says the problem is on this computer and needs a fix, instead of saying this computer isn't reaching solstone.me and will keep trying. solstone journal health logs names the step that failed.
  • solstone journal mcp token create now says that an agent using a new token can't read your journal until you grant it access, and prints the command to do that.
  • when the model copies something said in a recording but makes a small slip, like leaving out an "um", your journal now keeps that quote with what it wrote about that part of your day, in the recording's own words. before, it dropped the quote.

journal 2.0.44

october 13, 2026

2.0.44 isn't available on windows. on windows, your journal stays on 2.0.43 and gets these changes, including the windows ones below, in a later version.

Changed

  • playing a voice sample on the speakers page now reads only the part of the audio your browser asks for, using less memory for long recordings.
  • health now shows recorded backup attempts, successful copies and spot-checks. the backup page also shows a status summary and links to those details.
  • in entities, "block" is now "hide", "unblock" is "unhide", and "blocked" is "hidden". the actions work as before.
  • confidential processing now finishes older recordings and day updates automatically. with your own key, you still choose whether to allow this work and any provider charges.
  • when your journal's thinking runs on a local model, on confidential processing or at your own endpoint, it now settles which kind of app is in a screen frame consistently, rather than sometimes landing on a different kind for the same frame. that choice decides what it reads in detail.
  • when a 5 minute recording of a screen comes down to a single frame, your journal no longer asks the thinking model which frames to read in detail, so it spends fewer tokens. what it keeps is the same.
  • the agents app's steps for connecting Claude through solstone.me now say to choose solstone in Claude's connector directory if it's there, and to add your journal's address as a custom connector if it isn't. through your own hostname the steps are the same as before: a custom connector.

Fixed

  • this is a security fix, please update. text from outside your journal could run as code in your journal's browser pages. the text could come from words written in a photo or on your screen, which your journal describes, or from a place name in the location accuracy download. that code could read your journal and send it to another website, starting when you opened that day's transcripts or went to name that place on the map. your journal keeps no record of what its pages do, so your journal can't tell you whether this happened. those pages now show such text only as text.
  • daily results, like your morning briefing, arrive again after each day ends. since 2.0.42, your journal waited for each of the day's recordings to be checked off one by one, a few every hour or so. when recordings ran all day, those results stopped coming. days already waiting catch up soon after you update, and catching up on older recordings keeps going as each one finishes instead of a few at a time.
  • some long conversations you imported from ChatGPT, Claude, Gemini or a text file were never read. your journal kept waiting on them, so that day's daily results never finished, and nothing said why. they're now read like any other conversation, and when a day's daily results can't finish, your journal's log names the recordings or conversations holding it up.
  • on mac and windows, turning on encrypted backup operated by sol pbc and restoring your journal from it work again. since 2.0.41 both stopped as soon as they started.
  • a failed backup attempt no longer replaces the record of your last successful backup. the backup page shows both, including when a stored copy was incomplete.
  • a missing part of the search index could stop all search updates. your journal now rebuilds that part automatically, keeping the text already indexed. agents limited to a facet may see fewer results while it catches up.
  • facet newsletters no longer change when search is behind or incomplete.
  • fixed a problem that made saved agent notes unreadable after restoring or copying your journal.
  • backup settings appear before the storage measurement finishes. health groups repeated items on hold and pages the list.
  • a failed voice-status check now shows an error instead of asking you to teach your voice again. health uses reported device information instead of assuming an unnamed source is a desktop.
  • on phones, transcripts have a segment picker and more room for text, import history keeps filenames and statuses visible, and dialogs stay above navigation. long names, facet details and settings explanations fit more comfortably.
  • activity filters stay visible after applying them, import source filters cover the full history, and support opens from settings on phones. chart values are available by keyboard and touch, without covering nearby bars.
  • originals waiting for approval now load in pages, each with its own selection. a single item too large to review is identified without offering a deletion action, and you can continue to the next page.
  • dismissed voices could reappear in the speakers app after a scan. the list now applies your earlier dismissals consistently.
  • on linux, media offload could stop proposing anything to move into your backup when one screen or audio recording had a long description or transcript. that no longer stops it.
  • on mac and windows, you can turn off and delete encrypted backup operated by sol pbc again. as on linux, your journal won't delete it while your backup holds the only copy of some of your media.
  • on linux, mac and windows, you can turn off and delete a backup you set up in your own storage again. your journal deletes every snapshot in it, but not while your backup holds the only copy of some of your media. if your storage may keep deleted files anyway, for example when versioning or object lock is on, or a B2 bucket has no rule that removes hidden files, your journal says so, and also says when it couldn't check.
  • on windows, if your computer loses power just as turning off and deleting your backup finishes, your backup may be on again, though what it held is already deleted. turning it off and deleting it again finishes the job.
  • on mac, you can approve the removals your retention settings propose again, from your journal's home page. on windows, approving stays paused.
  • on mac, you can bring back media that offload moved into your backup from the backup page again, including media offloaded by an earlier version of your journal. each file is checked against the record of what was offloaded before it comes back, and a file already on this computer is kept as it is. on windows, restoring stays paused.
  • on mac, media offload runs again. as on linux, before it proposes a file, and again when you approve, your journal reads the file's copy back from your backup and checks that it matches. on windows, offload stays paused.
  • on linux, if your journal stopped suddenly while offload was running, for example when your computer lost power, offload could stay on hold from then on, and so could approving removals and turning off and deleting your backup. your journal now removes the copies offload left on this computer the next time offload runs. your original media was never touched.
  • on linux and mac, solstone journal backup offload restore now brings back media that offload moved into your backup, for one day or with --all, the same way the backup page does. before, it said restoring offloaded files was temporarily unavailable.
  • when bringing back offloaded media left a file out because a different file was already where one belongs, or because a file couldn't be put back, the backup page didn't say why. it now does.
  • your journal's home page no longer offers to delete originals for offload proposals made by an earlier version, which it couldn't do. your originals stay on this computer.
  • when you redo a past day with solstone journal reprocess, your journal now remakes that day's daily results soon after it finishes redoing its recordings. before, they could wait for your journal's next check of its recorded days, close to an hour on a large journal.
  • a screen category in the ignored group in settings was still read in detail when it was the first thing on screen in a recording, or when it was on screen beside another app. it's now never read in detail, and your journal still keeps a short description of it.
  • the help under "frames read in detail" in settings said the number counted frames across your whole screen segment. it counts for each screen separately, and the help now says so.
  • on windows, the health page no longer lists "original media cleanup" as scheduled, and your journal no longer starts it every day. offload isn't available there in this version, so each run stopped without doing anything.
  • your activities, and the people and things your journal detects in each facet, now show up in search as soon as they're saved. before, they waited for your journal's daily search update, and until then the health page said search was catching up.
  • a facet's entity review for a day could stop for good when one entity it added was named by another's alias, for example Ali, and Alice Smith with the alias Ali, or when two of them shared an alias. the later one now leaves that alias out, and the review finishes.
  • if a review already stopped this way, solstone journal reprocess DAY --unit entities:entities_review --facet FACET now runs it again, and solstone journal doctor names that command. what the stopped review already added stays. before, the command said the review couldn't be retried, and nothing else could finish it.
  • when another daily step stopped after its automatic retry, solstone journal doctor suggested solstone journal reprocess --unit, which refuses that step. it now suggests redoing the day with --from-scratch.

journal 2.0.43

october 12, 2026

Changed

  • on windows, the journal app now opens the first-run setup page in your browser. there, along with your mark, you now also add your name and choose how your journal thinks and what happens to your original media. the journal app moves on once you finish.

Fixed

  • security: text that lands in your journal, such as a web page or something said in a conversation, could ask a connected agent to call tools, save notes or send what's in your journal elsewhere. your journal now tells connected agents to treat that text as untrusted data and ignore those requests.
  • if your journal was set up without a way to think, it held new recordings without transcribing them until you chose one. setup leaves a mac without enough memory for local thinking that way, and a linux or windows computer without a usable GPU unless you choose another option on the first-run setup page. your journal now transcribes new recordings before you choose. recordings it already held still wait for your choice, as do describing your screen and the rest of its thinking.
  • on Debian 12, the installer no longer stops with "libstdc++.so.6 was not found" when you run it as yourself and the library is already installed. if it stopped for you, run the install command again.
  • on a large journal, 2.0.42 could keep one processor core busy for as long as your journal ran while it checked your recorded days for unfinished thinking. the larger your journal, the longer each check took, and a new one started a minute after the last. your journal now rests between checks, so checking takes a small share of one core. health also no longer calls the check incomplete because of import records saved by earlier versions, or a long web page in your journal.
  • 2.0.42 set aside redoing the thinking an earlier version did for many recordings, and never went back to it. your journal now redoes that thinking in the background with your other older work, after newer work, and health no longer lists those recordings as set aside.
  • the first-run setup page said it couldn't check whether this computer can run local thinking, and let you choose local on a computer where the install then stopped. it now checks, and says so when local thinking won't run here.
  • the first-run setup page said your name was "saved" as soon as you left the field. it is saved when you finish setup, and the page no longer says otherwise.

journal 2.0.42

october 12, 2026

Added

  • a new map app shows the location the solstone app on your phone adds to your journal, a day at a time. each record is named after the town it was near, like "near Golden, Colorado". visits your iphone reported show when you arrived and left. a small map draws the towns and borders around them. the town and border names come with your journal, so no map service is asked for anything, and streets aren't shown. every record opens in transcripts, where you can delete the segments it came from.
  • your journal now works out stays from your iphone's precise readings: when they keep within 100 m of the first of them for at least five minutes, the day shows one stay instead of a run of readings. approximate location never makes a stay.
  • a spot with visits or stays on two or more dates becomes a place, described by what the record shows, like "visits or stays here on 9 dates". you can name a place, call it home or work, or hide it from the map. what you call a place is used in search and by your journal's own thinking, and agents that may see transcripts across your whole journal can read it too. a place lasts as long as a segment it came from does.
  • the map app offers "location accuracy", a download you choose. with it, a visit your iphone reports, or a stay, is named by the places within its margin of error, like "near Pigtrain Coffee Company", and by the named building or area the whole margin falls inside, like "at Red Rocks Park". a visit, stay or reading whose whole margin falls inside a neighbourhood or town says "in" it. each record says why it reads the way it does. it's the same download for everyone, so getting it says nothing about where you've been, and names are looked up on your computer. search, your journal's own thinking, and agents that may see transcripts across your whole journal find those names too. you can remove it from the same place.
  • a week view in the map app shows the visits and stays of each day.
  • searching your journal now finds a day by the towns your phone's location was near. your journal's own thinking, and agents that may see transcripts across your whole journal, can read these names, never the coordinates.
  • imports now show how many recordings they will add or update, and how many days they cover, before they start. the import page keeps showing how many are ready to find, still waiting or set aside after the recordings are saved.
  • health now brings set-aside work into one list, with a reason and a try-again for each failed step. your request joins the priority order and keeps accepted results. your journal also tries once more on its own when the step's input changes or an update names that failure as fixed.

Changed

  • on mac and windows, and for a backup you set up in your own storage, turning off and deleting your backup isn't available in this version. nothing is deleted when you try.
  • your journal now checks all its recorded days for unfinished thinking. imports and requests to reprocess a day wait in the same order as other work, with today's work first. local model calls follow the same order, with newer recordings first within each priority. work already running can finish. health shows progress and offers one choice to allow older work with your own model or confidential processing. importing recordings already allows their own processing.
  • your journal now looks for your voice by itself each day. from your first day, your journal's home page says when it has found a voice that may be yours, or what it still needs. once you confirm it, your past conversations are updated in the background to show who said what, and the speakers page shows how far along that is. only the speaker names change: stories and weekly reflections already written stay as they were. on the speakers page you can also teach your voice from the last two weeks, teach it again later, or remove your saved voice. a voice you say isn't yours isn't offered again, and after a "no" your journal looks again in 14 days. transcripts now show your lines as "you".
  • on a mac or linux computer, a local thinking install now stops before downloading when that computer is known not to have enough memory for it or has no usable GPU. when its memory cannot be read, the install still starts and the thinking page keeps a warning for that attempt.
  • each tool your journal offers a connected agent now has a short name. saving a note, the one tool that doesn't only read, now says it adds without changing anything already in your journal. when an agent's call has arguments your journal can't use, it's told what to fix.

Fixed

  • on linux, you can bring back media that offload moved into your backup from the backup page again, including media offloaded by an earlier version of your journal. each file is checked against the record of what was offloaded before it comes back, and a file already on this computer is kept as it is. on mac and windows, restoring stays paused.
  • on linux, your journal now won't turn off and delete encrypted backup operated by sol pbc while your backup holds the only copy of some of your media.
  • on linux, media offload runs again, and approving an offload proposal now frees its space even when your settings keep media forever. before it proposes a file, and again when you approve, your journal reads the file's copy back from your backup and checks that it matches. proposals made by an earlier version are withdrawn, and offload proposes again from scratch. on mac and windows, offload stays paused.
  • on linux, you can approve the removals your retention settings propose again, and on every platform you can decline proposed removals again. a file that's already gone, or that your settings now keep, is reported as such instead of holding up the rest. on mac and windows, approving stays paused.
  • turning on solstone.me works again on linux and mac. since 2.0.18 it could stop at "your journal could not prepare its agent address" and not get further. if that happened to you, it finishes on its own once your journal is updated.
  • when your journal tries again on screen video it only partly read, it now keeps what it had if the new try gets less, or can't open the video. before, the new try replaced it. your journal can't open screen video in the format the solstone app on your mac used from january to mid-april 2026, so when it tried again on one it had only partly read, it lost even that partial reading, and this update doesn't bring it back.
  • your weekly page is written again on large journals. in 2.0.41, putting the week together could take longer than the ten minutes your journal allows, so no page was written for that week, and it isn't written later on its own.
  • when your journal can't get a usable story for an activity even after trying again, it now waits until the activity changes, you request a retry in health, or an update names that failure as fixed before it asks again. before, it kept asking again, at least once an hour, with no end, and each try used your thinking provider.
  • importing the same AI conversation export, calendar file or notes again with solstone journal import now skips it, as the import page already does. before, it wrote everything again and your journal processed every day it covered again. to import it again on purpose, add --force.
  • the local model's dropdown label no longer says "8 GB", which could be mistaken for its graphics memory requirement.

journal 2.0.41

october 11, 2026

Added

  • solstone link serve now warns at startup that it is for development on trusted systems, because local callers can use the paired owner's full journal API authority.
  • when an agent you've connected searches your journal and may see transcripts, a result about a conversation now links to the transcript behind it, with its time, so the agent can read what was actually said before telling you who said what.
  • each segment your journal processes from now on also gets a list of what it was about and up to eight short passages copied word for word from what was said, so a search can find a conversation by its subject or by a line someone said in it. a passage is kept only when it matches the transcript exactly.
  • solstone journal reprocess FIRST --through LAST --owed --json reports, for each day in the range, whether the day is marked finished, the state of its daily results, how many there are, and how many are owed and why.

Changed

  • older solstone apps must update to keep syncing with your journal. minimum versions: tmux 2.0.6, linux 2.0.7, macos 2.0.15, windows 2.0.10, android 2.1.9, and ios 2.0.5 (build 107).
  • your journal no longer makes separate lists of decisions or commitments, counts them in profiles, or lets you mark them complete. your morning briefing no longer tells you what you owe or what you're waiting on. activities still describe what happened and who did it, and your weekly page still includes quotations from audio in which your voice is recognized. existing records stay as written.
  • for now, you can't bring back media your journal moved into your backup, or approve or decline the files it proposes to remove. while these are paused, your journal removes no media on its own, and files proposed for removal stay on your journal's computer. if your backup holds media that's no longer on that computer, keep your backup: turning it off and deleting it, or letting encrypted backup run by sol pbc end, deletes the only copy.
  • a connected agent can now list what a day or a range of days holds without searching for a word, and its list of transcripts shows each one's time, can be narrowed to part of a day, and continues past its first page.
  • when you ask a connected agent to remember something, it's now told to save it in your journal.
  • when you import a text or markdown transcript and the journal can't find turn times in it, the import now says so, both in the command's output and on the import's page, with a link to ask us to support how your transcript marks times. the file still lands as one segment at the import's start time, each line as written.
  • after midnight, your journal now waits at least ten minutes, and up to an hour, for what's still coming in from the day that just ended before it makes that day's daily results and your morning briefing. when something was still coming in at midnight, it used to start on the day straight away and make part of it again ten to fifteen minutes later.
  • your morning briefing now stays as it was from noon on the morning it's for. until noon, something that arrives late for the day before, such as audio from your watch, can still change it. before, that could happen until midnight. to have it written again, run solstone journal reprocess DAY --from-scratch for the day before that morning. it redoes that whole day.
  • solstone journal doctor --json and solstone journal doctor --verbose now list which days are still being processed, which are stuck and which it couldn't check, not only how many.

Fixed

  • security fix: agents on your network now stay disconnected while your journal's settings file is missing, unreadable or malformed. before, a file that couldn't be read could turn network access on even when you had turned it off. access resumes when the file is readable and network access is on.
  • copying older media to your backup now waits when your backup hasn't passed a check yet, or its last check can't be read. before, it went ahead.
  • deferred processing now starts during your chosen time window, or when all connected displays have been asleep for two minutes on mac or linux and that option is enabled. new material keeps reaching your journal while processing waits. work already running can finish after the window closes or a display wakes.
  • when a screen summary runs out of room, your journal now retries it more concisely while keeping the same source material.
  • your agents can now see speaker names in transcripts when the speaker is named for those sentences in your journal.
  • when a connected agent searches for a person's or project's full name, the results can now include a short description and notes from the facets you shared with it. for names such as "Project Juniper", the search also finds entries that call the project "Juniper".
  • starting the same connected agent repeatedly for short tasks no longer stops it with "MCP bearer session limit reached". your journal makes room by closing that connection's least recently used session. a quiet agent whose session was closed may have to reconnect.
  • on mac, installing local thinking or transcription now also clears quarantine, macos's marker for downloaded files, inside the downloaded folder.
  • a connected agent can now read transcripts of imported audio, and reads imported AI conversations and imported text transcripts as plain text with their times. before, imported audio couldn't be opened, and the others came back as raw data.
  • a transcript your journal can't read no longer stops a connected agent from listing that day's other transcripts.
  • if the model returns no text for an activity's story, your journal can now try once more through the same thinking provider.
  • home now names devices with rejected uploads, even when another source is still arriving, and shows queued work held for a safety check. both link to their details in health. when status is unavailable, the last known issues stay labeled as such.
  • health shows queued work held for a safety check, with the affected work, technical details and a way to get help. if live status becomes unavailable, the last check stays visible.
  • the backup page and the backup offload status command now count all original media on this device, including files proposed for removal. when a media total can't be checked completely, they show the amount counted so far separately.
  • when a backup action fails, the backup page now shows any guidance the tool gave on what to do next.
  • your journal no longer saves a transcript or description after the media has changed or its segment has been deleted.
  • the health page now shows which source on a device had uploads turned away, even when another source is still adding material. after a successful check, if device status can't be checked again, it keeps that last result and shows when it was checked.
  • backup commands now report when media offload couldn't finish, even if some files were marked for removal first. the backup page shows the latest offload and verification results separately from the last completed run.
  • moving a segment now stops if another operation is changing either its current directory or the directory it would move to. try the move again once that operation finishes.
  • a week your journal makes after you've deleted every segment of a conversation now leaves that conversation's words out of "said by you". before, they could still appear there.
  • solstone call health pipeline --day DAY now says when it couldn't read a day's processing record, as scan_failed with a reason. before, on a day with a very large record, it said the day's recordings hadn't been processed.
  • on the entities page, when your journal refuses something you asked for, such as a merge or a restore, it now says why, for example that one side of a merge is blocked. before, it often said only "Entity request refused".
  • when your journal can't use what the model wrote for an activity's story, such as a story with nothing in it, the health page now says so. the activity is still left without a story; before, nothing said so.
  • the description of what was on your screen during a segment now shows in your search as soon as that segment is processed. before, it waited for the journal's daily search update, so the health page said search was catching up all day.

journal 2.0.40

october 10, 2026

Changed

  • on windows, this release brings everything in 2.0.39 that applies to windows. 2.0.39 wasn't released for windows.
  • on mac and linux, nothing changes from 2.0.39.

journal 2.0.39

october 10, 2026

Changed

  • if you keep your encrypted backup in storage sol pbc runs for you, it no longer carries your computer's name or your username on it. the small files that unlock your backup used to include both, readable without your key. they now say "solstone" instead. a backup you already have changes over at its next daily backup cleanup, and there's nothing for you to do.
  • agents connected to your journal now get guidance on how to search it: a few keywords rather than a sentence, how to write a date, where the things you committed to are kept, and to say so when nothing matched. this helps agents that don't have the solstone skill, such as ChatGPT.
  • when an agent looks up a person or project, it now gets what your journal has noted about them in the facet the agent found them in, and the last day they came up there, not only the name.
  • when an agent searches for a keyword of at least four characters that matches nothing on its own, such as "commit", it now also finds longer words that start with it, such as "commitment".
  • the agents app's ChatGPT steps now name the exact place to add your journal on chatgpt.com, and say that a journal added in ChatGPT's desktop app settings works only in Codex.
  • importing a text or markdown transcript now takes each turn's time, speaker and words from the file when it marks its turns in one of three ways, with times written to the second: headings counted from the start, such as ## 00:05:12, followed by **Ana Lima:** …; [00:05:12] Ana Lima: …; or Ana Lima (14:05:12) with the words after it. in the last two, if the first time is under an hour, every time counts from the import's start time; otherwise each is read as a time of day. any other text file lands as one segment at its start time, each line as written. before, a model could change the times, speakers and words.

Fixed

  • on mac and linux, encrypted backup to storage sol pbc runs for you works again. since 2.0.38, no backup there finished. your backups resume on their own after this update, and everything backed up before 2.0.38 is still there.
  • on windows, a journal saved inside the journal's program folder now refuses to start, because reinstalling or uninstalling removes that folder. the message it shows walks you through moving it.
  • on windows, installing the local model now stops before downloading if the GPU has less than 6 GB of memory or its memory cannot be checked. a new setup leaves thinking for you to choose on those computers. the thinking page now explains why an install failed, or why the local model couldn't start for lack of GPU memory.
  • if you turn on solstone.me or your private network before finishing in the services portal, your journal now finishes turning it on by itself once you do. for your private network, finish there within the hour. before, you had to come back, turn it on again and approve it a second time.
  • when you name someone else's voice, or correct who said a line, the activities your journal already wrote from those conversations now show that person in place of "Speaker 2", as long as that speaker's named lines all name the same person.
  • if, in the past week, your journal wrote commitments or decisions as yours before it had marked which person is you, they now count as yours, including in your morning briefing. commitments and decisions from older days, or from meetings, stay as they were written.
  • in a new meeting, someone who introduces themselves, such as "my name is Dana", is listed as attending even before their voice has a name. before, they were listed only as mentioned.
  • if your own lines read "unknown voice" because something in your journal that isn't a person had been marked as you, your journal no longer counts that mark. the next time it starts, it marks you when exactly one person in your journal has the name in your settings, so your voice can then be set up and your lines can show you.
  • on windows, installing the local model from the thinking page works again. in 2.0.38 it stopped almost as soon as it started and the page said "local setup didn't finish". if that happened to you, choose "try setup again" on the thinking page.
  • on windows, solstone journal service logs now shows the journal's recent output, as on mac and linux.
  • on windows, when a local model install ends partway, the thinking page now says "installation stopped" instead of still showing "setting up".
  • on a new journal, solstone journal setup no longer warns "the journal response couldn't be read." it now says to choose "install local model" on the thinking page once you've created your journal.
  • solstone journal setup now runs its readiness checks against the journal folder you chose, not one you used before or the default one.
  • on linux, the GPU permissions hint in solstone journal check told you to run sol check again, which no longer exists. it now names solstone journal check, and so does the readout's title.
  • when an agent searches your journal by date, a date written as 2026-10-05 now finds the same entries as 20261005. before, it found nothing. a date that isn't a real day is now refused, so the agent can correct it, instead of quietly matching nothing.
  • when an agent searches your journal with a whole sentence and no entry has every word, it now gets entries that match some of the words, and the response says so. before, it got nothing.
  • if your journal restarted while it was downloading the local thinking model or the transcription model, it no longer says the download is still going when nothing is downloading.
  • if your agents couldn't recall the notes they saved in your journal, or entity search wasn't available, both now work once everyday use has brought search up to date with your journal. before, they waited for a full rebuild of search, which everyday use never does.

journal 2.0.38

october 9, 2026

Added

  • solstone journal indexer status shows how far search is behind your journal, without changing either.

Changed

  • on windows, setup's refusal message and the windows removal steps now say to move a journal kept inside the program folder before reinstalling or uninstalling, because either one deletes that folder, journal included. the steps explain how to remove its old background registration and select the moved journal again.
  • on linux, the journal now needs glibc 2.34 or newer with the GCC 11 C++ runtime, such as Ubuntu 22.04, Debian 12, RHEL 9, Fedora 35 or newer releases of each. local transcription also needs the GCC 12 C++ runtime, which RHEL 9 and Fedora 35 don't include.
  • the thinking page now says when confidential processing is no longer active for your sign-in, and how to get it back.
  • on windows, the thinking page now offers confidential processing, as on mac and linux. before sending anything, your journal checks the service's hardware, and sends nothing if it can't verify it.
  • before your journal sends anything to confidential processing, it now also checks most of the boot measurements the service's machine reports, one by one, against their published values, and sends nothing to a machine where any one doesn't match.
  • on mac and linux, your journal no longer downloads tools the first time you use encrypted backup, confidential processing or sound tagging. those tools now come inside the journal package, as the sound-tagging model now does on windows, and your journal checks each one against the package's own record before using it.
  • segments from your phone that hold only location now show in transcripts, so you can delete them like any other segment. the delete dialog now says when a segment holds location.
  • the health page now checks search against your journal: it says when search is up to date, when it's catching up and by how many changes, and when it has stopped updating. solstone call health no longer calls search stale just because it hasn't changed in a week, and solstone journal doctor checks search too.
  • solstone journal indexer --rescan-full now ends with an error when something couldn't be added to search.
  • the encrypted backup screen now says up front that restoring takes two things: your recovery key, and either your storage details or a sign-in to the services portal. restoring from storage sol pbc runs now points you to the services portal.
  • your journal now writes an activity once it has ended and nothing new has arrived for it for at least five minutes, so activities from every source except imports appear later than before. an activity written since this update can grow when more of it arrives, and its story is then written again, which means more requests to your thinking provider.
  • devices paired with your journal now also get the address you chose for your journal when they check its current addresses. while your journal is closed to devices on your network, it no longer gives them addresses it can't be reached at.

Fixed

  • audio from your watch that lands in your journal late or out of order now joins the activity it belongs to far more often. before, some of it could still be left out of every activity. activities from before this update stay as they are.
  • on a journal that had never paired a device or turned on another service, turning on confidential processing no longer stops at "confidential processing couldn't be turned on".
  • on mac and linux, "install local model" on the thinking page no longer says "local setup didn't start" when a local model is already installed.
  • on linux, if you installed local transcription before, your journal now installs what it needs when an update changes it. before, transcription could stop until you installed it again.

journal 2.0.37

october 8, 2026

Changed

  • on windows, this release brings everything in 2.0.36 that applies to windows. 2.0.36 wasn't released for windows.
  • on mac and linux, nothing changes from 2.0.36.

journal 2.0.36

october 8, 2026

Added

  • until a device is paired, the thinking page links to where you pair one. setup ends on that page, so you see the link as soon as your journal is set up.
  • your week now shows things you said, word for word, under "said by you": up to three a day, taken only from conversations where your journal recognized your voice, each with a link to where you said it. you can leave one out of the page, as with a memory.

Changed

  • on windows, setup requires your journal to be outside the program folder. if your journal is already there, follow the windows removal steps to remove its old background registration, move the whole journal folder and select its new location before reinstalling or uninstalling.
  • uninstall cleanup now removes more files outside your journal on linux, mac and windows. it keeps your journal's setup record and removes unedited copies of the solstone skill.
  • each time your journal starts, on mac and linux, it replaces existing copies of the solstone skill with its current one, including copies you edited.

Fixed

  • if your journal thinks on this computer and you installed its local model before, it now installs what local thinking needs on its own when an update changes it, on mac, linux and windows. since 2.0.34, on mac and linux, an update could stop your journal's thinking, and home said "processing needs a setup" until you installed the local model again. you can cancel the download on the thinking page, and it stays cancelled until you install again.
  • when your screen stayed the same at the start of a stretch but changed later, your journal could skip writing about that stretch. it now uses those later changes too.
  • a link to the devices section of the network page now opens the page at that section. before, it could open at the top.
  • on windows, the network page now tells you when Windows Defender Firewall has kept a Block rule for "journal" after you chose Cancel, and how an administrator can remove it. opening your journal to the network alone couldn't get past that rule.
  • the date on each card on the entities page is now the last day its name came up in your journal. before, a card could show the day it was added to your journal or last changed, so after an import every card could say "Today".
  • on a mac, the solstone skill points your agent at the solstone command inside the journal app. before, the skill told your agent solstone wasn't installed.
  • setup and solstone skills install on mac and linux no longer create a folder for an agent you haven't set up.
  • some weeks wouldn't open, and their card on home said they couldn't be read. they open now.
  • when a page in your journal can't load because the connection dropped or took too long, the page now shows its own message instead of the browser's wording, like "Load failed". on the curation page, "show more" now says when the next suggestions didn't load. before, it went quiet.
  • on the entities page, if no one is marked "you" yet, your journal now marks at most one new person whose name matches yours.
  • the agents page now says a browser-paired agent can read for at most 30 days after pairing, or until you disconnect it, and that turning solstone.me back on reuses your certificate only while the one you have is still good.
  • when your phone lost its connection partway through sending, home said your phone "isn't reaching your journal" until something new from it went into your journal, sometimes all night. what was cut off still goes into your journal when your phone tries again, so home no longer shows that line for it.
  • solstone journal doctor no longer warns that a device "had requests turned away" when the last time was more than a week ago.

journal 2.0.35

october 7, 2026

Changed

  • your journal's pages now arrive compressed, so they load faster when you open your journal from another device. a large curation list, for example, arrives at about a tenth of its size.
  • your journal now sends newer Gemini models the thinking setting Google asks for, and your saved thinking choice stays as it was.

Fixed

  • the curation page now loads its long lists 50 suggestions at a time, with "show more" for the next 50, so it no longer waits on thousands of suggestions. if your journal stops answering while it loads, the page now stops after a minute and offers "try again" instead of loading forever.
  • if you couldn't find the developer mode setting the agents app told you to turn on for ChatGPT, the connect steps now say to add your journal's address as a custom MCP server.
  • your morning briefing now includes what you owe and what you're waiting on, with how long older items have been open. since 2.0.33, the briefing your journal makes on its own each morning could leave them out or list them without their age.
  • on windows, solstone journal setup --clean-uninstall now finishes and removes your journal's background task. before, it stopped responding and left the background task running. your journal itself is never removed.

journal 2.0.34

october 6, 2026

Added

  • you can run search classification updates in small batches from the command line with solstone journal indexer classifications --apply, with progress reported after each batch.
  • in the body app, each Strava workout now lists everything else Strava exported for it, like your description, private notes, gear and weather, under "more from Strava".

Changed

  • your Strava workouts now turn up in search and when your agents read your journal, including the description and private notes Strava exported for each. your journal's own thinking now includes workouts from the past seven days, and a large import doesn't start thinking over years of past days.
  • the health page now shows search updates that could not finish and whether search classification is still incomplete.
  • when you name a voice with "everywhere this voice appears", the name now goes only on the segments where that voice closely matches, plus the segment you named it from. in segments where the match is weaker, that voice's sentences read "probably" and the name instead, so you can check them yourself.
  • the body app now shows only what your journal holds: the values your sources recorded, with where each came from, and counts, ranges and dates. it no longer works out its own averages, 90-day medians or a "strongest" contributor, and each section is named for the data it holds. the trends page is now called "daily values" and shows each day's own value instead of weekly medians. what your agents read from the body app follows the same rule.

Fixed

  • security fix: with confidential processing on, your journal now checks who signed the firmware the service's computer starts from, and only uses the service when that signer is the one your journal accepts. before, your journal checked the service's hardware and that its computer booted the exact image we pinned, but not who signed that firmware, so firmware someone else signed could have reported that boot falsely.
  • search now tries to include saved thinking results even when a later step fails. changing a segment's facets also refreshes the search classification of its saved results.
  • workouts from a Strava download now show at their real start time. before, they could land hours off, and an evening workout could land on the wrong day. import your download again and your earlier workouts move to the right time; a workout you deleted stays deleted.

journal 2.0.33

october 5, 2026

Added

  • on windows, open journal from Start to set up your journal, see its mark, start or stop it, and manage updates and paired devices.
  • your agents can now save notes in your journal and recall the notes saved through their own connection, even when you haven't given that connection permission to read anything else. other journal tools keep the permissions you chose in agents.
  • you can bring in your workouts from a Strava download on the import page. only the list of your workouts is read, and the download itself isn't kept after the import. each workout shows in the body app, where you can delete it, and you can delete a whole Strava import from its page.

Changed

  • when you unpair a device on the network page, your journal now tells you that anything still waiting on it goes to the journal you pair it with next.

Fixed

  • on windows, the thinking and health pages could keep saying "brain record missing" while your local model was working. they now check the model and show its health.
  • importing the same chat, calendar, or notes export again no longer brings back a segment you deleted.
  • if a device sent a segment again while you were deleting it, it could end up back in your journal. it now stays deleted.
  • the content tab on the import page could keep showing the title and preview of a conversation, note, or document you had deleted any part of. it's now left off.
  • on windows, your own hostname can now get past the DNS check, which was looking for a file used on mac and linux. it uses the DNS servers configured on your PC.
  • deferred follow-ups stay open, dropped follow-ups are marked dropped, and an earlier completion no longer closes later work.
  • your morning briefing includes what you owe and what you're waiting on, with the age of older open items. activities you've hidden stay out of pulse summaries.
  • deleting the newest segments an import added no longer stops later imports of that source from finishing.
  • on windows, material that arrived late for an earlier day, like what a device was still holding when you paired it again, could be left out of that day's daily results. your journal on windows now brings a day's daily results up to date when something new arrives for it, whatever day it's from, as it does on mac and linux.
  • when you merged another journal's archive into yours, material from one of your sources could be left out if your journal already had different material from that source at the same moment, and the merge was marked incomplete. your journal now keeps it alongside what's there when it can find a free place for it, the way it does when a device sends material for a moment it already holds.
  • Apple Health workouts showed no distance or energy in the body app; now they do, including for imports already in your journal.
  • on windows, importing an unzipped Apple Health export folder from the command line could fail when you'd chosen to keep a complete copy of the export in your journal. it now works.

journal 2.0.32

october 4, 2026

Added

  • on windows, your agents can now reach your journal at a public hostname you own, as they can on mac and linux; your OpenSSH forward goes to a local address, 127.0.0.1:7661, and the agents app shows the command for it. requests stay encrypted until your journal opens them, as long as your route only passes the bytes through; anything that opens them first can read what your agent reads and reuse its access to reach your journal.

Changed

  • you're no longer asked to name your journal. paired devices and solstone status show its mark's two words, and the network page no longer calls your journal "home".
  • on windows, the thinking page no longer offers to turn on confidential processing, because your journal can't check the service's hardware there yet. it now says confidential processing isn't on windows yet, and so do the home page and the health page, which said processing needed attention. if you already turned it on, you can still turn it off on the thinking page. either way, nothing is sent to confidential processing.
  • when activities from two of your sources land in the same facet at the same time, the home page now says where each one came from if your journal can tell, for example "from your watch".
  • when your journal has a meeting's audio, something in that meeting's story written as yours now reads "unknown" unless it quotes your own words from that meeting, from a line your journal recognized as your voice. your morning briefing now works first from your own follow-ups and decisions that quote what you said.
  • solstone call profile full now marks a commitment or decision "said by you" when it quotes a line your journal recognized as your voice, and lists those first among open commitments and decisions. solstone call profile item marks it too. commitments and decisions saved before this release don't carry the mark.

Fixed

  • reprocessing older material, or receiving it late, could end an activity still underway or keep it open after an hour of quiet. older material now leaves the current activity's start and end alone.
  • when material from your phone or watch landed in your journal out of order, one activity could show up as several, and late material could be left out of every activity. your journal now waits a while for earlier material, and anything later joins the activity underway it belongs to or goes into a new one, unless it falls inside one already saved.
  • when two of your sources had material from the same moment, an activity's story could be written from the other source's material. a new activity's story now comes only from its own source's material.
  • when two of your sources started the same kind of activity in the same facet at the same moment, your journal kept only one of them. from this release on, it keeps both.
  • in the story of a meeting, message or email, reading an email, an inbox, an invitation or a settings page could be written as something you owe, finished or decided. your journal now asks for the story to count a message or choice on screen as yours only when you sent or submitted it.
  • retrying processing for part of an earlier day could add an extra activity for the middle of one already in your journal. it now uses the surrounding activity boundaries.
  • when activities ended together and the journal stopped while writing the first one's story, the ones after it could be left out of your journal. every ended activity is now saved before any story is written, and an unfinished story is picked up again on its own.
  • if something new arrived just as an hour of quiet ended the activity before it, the activity it started could be lost, or it could be left out of the activity it continued. ending the quiet activity and thinking through what arrived now happen one at a time.

journal 2.0.31

october 3, 2026

Added

  • on windows, you can now turn on solstone.me in the agents app, so agents anywhere, like Claude on the web, can reach your journal at its own address, the same way they do on mac and linux, and the agents app is still where you choose what each one may see. your own hostname isn't available on windows yet.

Changed

  • command-line help and install instructions now use solstone journal, such as solstone journal setup. journal still runs the same commands.

Fixed

  • if the journal stopped partway through processing a segment, for example when it quit or shut down unexpectedly, a temporary copy of that segment's audio could stay behind in your computer's temporary folder. the journal now removes these leftovers on its own.
  • on windows, a request to the local model or your own endpoint could fail when another one got its turn at that same moment. it now waits its turn.
  • something from your phone or watch could end an activity you were in the middle of on your computer, so one activity showed up as two, or it could carry an activity across a break. each source's activities now start and end on their own.
  • with "agents on your network" on, the network page and solstone call link local-network status and open said turning it off would close your journal to devices on your network, even when your journal would have stayed open to them without it. they now say that only when "agents on your network" is what keeps it open.
  • when a backlog from your phone or watch landed in your journal all at once, the journal could think through each part of it two or three times. it now thinks through each part once, unless something new arrived for it in between.

journal 2.0.30

october 3, 2026

Added

  • journal reprocess DAY --unit TALENT resets one failed daily unit for its next eligible run. When that unit has a facet, add --facet FACET. It does not redo the day.
  • run journal about or solstone about to see the journal's version, operating system and architecture.
  • every journal command now also runs as solstone journal, for example solstone journal setup or solstone journal think. journal keeps working as a shorter name for the same commands.

Changed

  • on windows, journal doctor spends less time waiting for status updates.
  • the version line in status details now links to journal update instructions, including when the version is unknown.
  • solstone import no longer accepts --deterministic-only. in 2.x it had no effect on an import. a script that still passes it now stops with an error; drop the flag. journal importer --deterministic-only still works, and its help now says what it does: a file with no readable date is skipped instead of failing.

Fixed

  • security fix: with confidential processing on, your journal now checks whether each GPU certificate sent for confidential processing has been withdrawn, using the certificate that actually issued it. before, an extra certificate slipped in among them could point that check at the wrong certificate. none of your journal data is known to have been exposed.
  • a daily review could stop before finishing when another day changed its merge suggestions, or the calendar changed. It can now recover. After two of these conflicts in a local day, it can retry on a later eligible run. Conflicts involving a recorded change still need attention. journal doctor offers a one-unit reset when it is safe.
  • a day's processing could stop when this computer briefly ran out of capacity. It now retries that step once. A successful retry lets daily processing continue without repeating successful steps. Both attempt logs stay.
  • on windows, a PDF or an image you add on the import page now imports. before, the import failed.
  • after a PDF import failed without making a transcript, adding the same file again could skip it as already imported. adding it again now creates the transcript.

journal 2.0.29

october 2, 2026

Added

  • thinking › your own model can now use ChatGPT, signed in with your own ChatGPT account, so there's no key to paste. pick one of your ChatGPT models after you sign in. your computer talks to OpenAI directly, and OpenAI sees the parts of your journal that processing uses. if a usage limit is reached, thinking says so, and "Manage usage" opens your ChatGPT settings. your journal never switches to another provider on its own.

Changed

  • confidential processing no longer downloads the files used to check the hardware before each request.
  • with confidential processing on, describing your screen, importing text and importing documents with many pages now go faster. your journal now reuses a verified connection while it works through one video, text or document, instead of opening a new one for every step. every connection is still checked before anything is sent over it.
  • the list of journal apps now opens as a panel down the left side, next to the menu, in a wide window. in a narrow window it rises from the bottom, above the menu. before, it opened in the middle of the screen.
  • your journal now asks for each activity's story to say who did, owes, closed or decided each item in it: you, your agent, someone by name, or unknown, and to count a decision only when someone decided, not a suggestion, a question, a draft or a form option nobody submitted. you no longer appear among the people in your activities. activities that end after you update get this; earlier ones stay as they are.

Fixed

  • on windows, setup now finishes on older pcs that could stop while checking the journal's installed files. your journal also does less work to check its files when processing your audio.
  • importing two PDFs at the same time could replace one PDF's original or transcript in your journal. both now keep their own.
  • adding two different files with the same time could replace the first import's details. each now has its own import entry in your journal.
  • when your journal couldn't describe a photo, it left no failure result. it now keeps the failure result, so health can show what happened.
  • when your thinking provider is OpenAI with your own key, your journal now asks OpenAI not to keep the responses it generates. before, OpenAI kept each one for at least 30 days by default. a provider you reach through your own endpoint is unchanged.
  • on windows, your journal couldn't write screen descriptions or describe your images. each run stopped about three seconds in and failed. those runs now go ahead.
  • importing a video, such as an .mp4, .mov or .webm file, now transcribes its sound, the same as importing an audio file. before, the import showed "failed" and no transcript was made. some videos still can't be imported, such as a .mov with uncompressed sound, and show "failed".
  • an import that takes a while to transcribe now shows "completed" once its transcript is ready, including an import from before this update. before, it showed "import unconfirmed" and "this import couldn't be confirmed as finished", and kept showing them after the transcript was ready.
  • a facet's entity review for a day could stop without finishing when other steps changed the merge suggestions it started from, for example when your journal redid past days after an update. it now starts over from the merge suggestions as they are then, which is one more request to your thinking provider, instead of retrying the same result.
  • going to /app/agents without a slash at the end now opens agents. before, it showed a bare "Not Found" page.
  • on the settings page, in import history and in the entities list, the text no longer touches the edge of its panel, and settings now sits in the middle of a wide window instead of off to the left.
  • drop-down lists, buttons and other controls now use the same typeface and size as the rest of the page. on the network page, the "pair a device" button above your devices now looks like the page's other buttons.
  • on the network page, "use a different address" showed two arrows. it now shows one.
  • small labels on a light orange background, such as the step numbers on import and the date-range chip on an entity, are now dark text, which is easier to read.

journal 2.0.28

october 1, 2026

Added

  • agents now lists ChatGPT, Gemini CLI and Grok Build, with steps for adding your journal.
  • your weekly reflection now has its own page, your week, opened from its card on home. it shows a memory from each day that has one, word for word from the next morning's briefing, each with a link to its source, and marks which days are on it and which couldn't be read. you can leave a memory out of the page, and undo it; the memory stays in your journal. search results for a week open its page.
  • thinking › your own model has a new tuning section. turn on its thinking setting to let the model think longer before it answers, with a thinking budget of 8k, 16k or 32k tokens. on your own endpoint, turning it on leaves room for a model that thinks on its own, since processing doesn't turn thinking on or off there.
  • on your transcripts page, you can now name a voice once. pick a person on a "voice 12" line with "everywhere this voice appears" checked, and that voice's sentences with no name take that person's name, in every conversation. names already given stay as they are, and the rest of that voice, now and later, reads "probably" and the name. there's no undo.
  • journal reprocess FIRST --through LAST --owed lists the daily processing your journal still owes for those days, and why, without changing anything.
  • on your transcripts page, an unnamed sentence your journal matched to a voice now shows its voice, such as "voice 12", in place of "unknown voice". the same voice keeps its number across conversations. a voice you named on the speakers page reads "probably" and the name. a number can change when your journal later merges two voices into one.
  • when your week is ready, each phone with notifications turned on now gets one notification, "your week is ready", between 9 in the morning and 9 at night in your home timezone. tapping it opens your week. it never shows anything from your week.
  • on your transcripts page, a day with recordings from a phone or computer set to a timezone other than your home timezone now says so under the day, such as "some of this day's times are on New York time". those recordings' times are on that device's clock. older recordings don't carry their timezone, so they never show this line.

Changed

  • on windows, your journal now starts closed to devices on your network, so windows no longer asks whether journal can use the network when it first starts. if you already paired a device from somewhere other than this computer, or turned on "agents on your network" in agents, your journal stays open to devices on your network. the solstone app on the same computer still pairs: choose "pair a device" on the network page, then "pair the solstone app on this computer". another device can still pair through the relay, once your private network is on. to pair a phone or another computer over your own network, choose "open to devices on your network" on the network page, or run solstone call link local-network open. windows asks then if it hasn't asked before, and on a standard account an administrator has to allow it.
  • journal setup and journal up now end by telling you where to open your journal in your browser, such as http://localhost:5015. the rest of setup happens there, pairing a phone included.
  • solstone activities create --source cogitate now turns down that source. use --source user, or leave --source out, to add an activity. activities already marked cogitate keep their source and can still be read and edited.
  • under thinking › your own model, the GPT choice now says it connects to OpenAI itself. for another OpenAI-compatible provider, it points you to your own endpoint.
  • a morning briefing from an earlier day now stays as it was. before, an update that changed how briefings are written, an edited facet or a different model could rewrite past briefings. to have a past one written again, run journal reprocess DAY --from-scratch for the day before that morning. it redoes that whole day.
  • when an update changes how your journal writes its daily results, or you edit a facet or choose a different model, your journal now redoes only today and the seven days before it, apart from morning briefings. older days keep what they have. they're redone only when something new arrives for that day, or when you ask with journal reprocess DAY --from-scratch.
  • your journal's pages now show days and times in the home timezone in your settings, even when you open it from a phone or computer in another zone. when that device's clock reads differently, the page names your home timezone once, such as "Tokyo time" beside the day. before, each page used the zone of the browser you opened it in, so its "today" could be a different day from your journal's.
  • if your journal thinks with your own model, through a GPT, Claude or Gemini key, your journal now asks it to think as little as that model allows. a model that thinks by default could spend a whole reply thinking and hand back nothing.
  • when your own endpoint doesn't say how much text it can take at once, your journal now plans for 32,768 tokens and trims what it sends from a long day to fit, the same way it does when the endpoint says. before, a long day could be turned away. you don't need to set served_context_window for this.
  • each part of your journal's thinking now has its own reply limit, measured on the local model, and no model you choose raises it. max_output_tokens under talent_overrides in your journal's settings no longer changes it, and your journal ignores it if you added it.

Fixed

  • security fix: text in your journal, including text an agent wrote, could contain a working form. one click on a button in it could point your journal's local thinking at someone else's server, so later thinking could send what it reads from your journal there. your journal's pages no longer show forms or buttons from that text, and your journal now turns away a change sent by a form, apart from file uploads. a checklist in that text now shows ☐ and ☑ in place of checkboxes. if your journal thinks with the local model or your own endpoint, check the endpoint URL under thinking › your own model: it should be empty, or the one you set.
  • connecting Codex to your journal could stop before the page where you choose what it may see.
  • on windows, setup now waits longer for its checks to finish before reporting a timeout.
  • fixes a certificate issue that blocked some agents from connecting on your network.
  • on windows, when the local thinking model isn't set up yet, your journal's status now says to choose "install local model" on the thinking page, where that button sets it up. before, it named a terminal command.
  • if your journal thinks with your own Claude key, it now gives Claude the shape an answer must take, as it already did for GPT and Gemini. before, Claude was only told the shape in words, and Claude Haiku 4.5 answered in a form your journal couldn't read, so that part of its thinking failed.
  • the thinking check now asks your model for a reply without asking it to use tools. before, a model that could write the replies your journal needed could still fail that check because it could not use tools.
  • on the transcripts page, screen readers ran a speaker's name straight into its description. they now pause between the two.
  • if you use your own endpoint, the thinking check and your weekly reflection asked it for the local model by name, not the model you set. an endpoint that checks the name, such as a hosted provider's, turned those requests away, so thinking showed that processing needs attention. your journal now always asks for the model you set.
  • when your own endpoint turns down your key, thinking now says the key is the problem, as it already does for an OpenAI, Anthropic or Google key. if the endpoint needs a key and you haven't set one, thinking says the key is missing. before, it said the endpoint's reply couldn't be used.
  • when your AI provider turns down your key, your journal's health and stats pages now say so and point you to thinking. before, they said the provider was unreachable, or that a processing step kept failing.
  • the thinking status your journal prints, such as after journal thinking set-lane, said your own endpoint couldn't be reached when its address was a name, such as a hosted provider's address or mybox.local. it now says that only when it can't connect to that address.
  • after your journal finished a past day, it could process that same day again and again overnight, finding nothing new and re-reading your whole journal each time. it now processes the day once, and a run that finds nothing new no longer re-reads your whole journal.
  • every night your journal rewrote the morning briefings of the eight days before the day that had just ended. it now leaves them as they are.
  • if your first install into a folder that already existed, such as ~/.local, stopped partway, for example because you pressed Ctrl-C or closed the terminal while it unpacked, running the same install.sh command again could refuse with route-unknown and tell you to run journal setup, which wasn't installed yet. the same command now clears what the stopped install left behind and installs the journal.
  • during a first install with install.sh, if the folder for your journal already held a journal, setup stopped and told you to run journal setup --accept-existing-journal, which wasn't installed yet. it now names the full path of the journal command it just unpacked, so the command runs as shown, and says to run the same install.sh command again after it.
  • source links in your journal now take you to where they came from: the moment in your transcripts, the newsletter, or the run in thinking. a link in a "needs attention" item on your morning briefing now works as a link, not bracketed text. when a source can't be opened, a page says why. before, most of these links did nothing.
  • home could show "Couldn't load pulse" in place of your day when your morning briefing's first line was long and had a long dash, an accented letter or a similar character where home shortens it. it now shows your day.
  • stats, thinking, agents and entities now go by your home timezone for "today" and each day, like the rest of your journal. when your home timezone differed from your computer's, they could put a run, a token count or an agent's request under a different day. what's already filed under a day stays there.
  • the solstone command, journal reprocess and the reprocess button on health now go by your home timezone for "today", like the rest of your journal. when your home timezone differed from your computer's, solstone activities and solstone health pipeline could look up a different day from your journal's today, and reprocess could turn away a finished day or start on one that wasn't over. the times journal talent logs and journal talent log print, the time shown beside your morning briefing, and the time an import shows for a file you imported after this update now read in your home timezone too.
  • an empty reply no longer counts as a result. before, a reply that ran out of room with nothing written could be kept as done. when the model used the whole reply thinking, your journal's health page now says so.
  • if the model behind your own endpoint writes out its thinking between <think> tags, that thinking no longer ends up in your journal.
  • importing a transcript file with the local model now splits it into segments. before, the local model turned the request away, and your journal saved the whole file as one segment while reporting the import complete.
  • on windows, stopping the journal now finishes well inside its 30-second limit, including the first time after you sign in to windows, so journal service restart starts your journal again and journal service uninstall removes the journal's background task. before, a stop could take longer, and both ended before finishing. 2.0.27 said this was fixed, but it could still happen.
  • in settings, a facet's activities include planned kinds, such as call, deadline and appointment, and they described themselves with the name of an internal file. they now say the "upcoming schedule" run adds them from plans in what your journal holds for that day. in thinking, a run that timed out or was cancelled also named internal parts of your journal in its details. it now says what happened to that run.

journal 2.0.27

september 30, 2026

Added

  • the agents app now follows an agent's connection while you set it up. after you make a pairing code, it names the next step for the agent you pick, such as Tiles, Claude Code, Codex or Claude. once the agent connects, the same window says which agent it is, how it reaches your journal and what it may see, then lists each request it makes as it arrives, without a reload. if the code expires, is replaced or is entered wrong too many times, the window says so and offers a new one.
  • you can close a commitment on a person's profile: solstone call profile close <id> --note "..." marks it closed, as done. add --dropped to mark it dropped instead. it then stops counting as open. before, a commitment stayed open until a later story happened to say it was done. solstone call profile item <id> shows whether a commitment is open, closed or dropped, and --dry-run shows what a close would change.
  • when a segment comes from a phone or computer that was in a different time zone from the home timezone in your settings, your transcripts page now names that zone beside the segment's times, such as "Tokyo time". with no home timezone set, that's the time zone of the computer running your journal. segments show their zone once the app they came from reports one. segments from before then show none.

Changed

  • the agents app now says how solstone.me protects what passes between your agents and your journal: your journal holds its own private key, the relay passes along encrypted bytes it can't read, and sol pbc sees that there was an encrypted connection. the details, including what whoever controls the solstone.me name could still do, are under "how this is protected".
  • the home timezone in your settings now decides what "today" is across your journal: the daily summary, scheduled tasks, home, the health page, search, imports and the transcripts page. with none set, your journal uses the time zone of the computer running it.

Fixed

  • on the transcripts page, going back after opening a segment left the transcripts page instead of returning to the segment before it. back now returns to the previous segment, and then to the day.
  • west of UTC, an activity still going in the evening could be ended as if the day were over. it now goes by your time zone.
  • calendar events with no time zone, and all-day events, could be imported a day off. they now go by your time zone.
  • on days across a daylight-saving change, some times on home and the health page were an hour off. they're now right on both sides of the change.
  • settings saved any value as the home timezone, including a misspelled one. it now takes only a real time zone name, such as America/Denver.
  • if a segment couldn't be loaded, the transcripts page could show it as having no transcript. it now shows a loading error.
  • a stuck day's reason could hide the instruction to re-import damaged media, or say to retry a processing step while repair had stalled. health and stats now show the damaged-media or stalled-repair message, and keep an automatic retry's wait message when another step also failed.
  • when health couldn't read the folder from a journal run's check-in, it showed empty brackets after the run's name. it now leaves those brackets out.
  • several speakers-page errors began with a capital letter. they now use lowercase like the rest of the page.
  • segments stored directly under a day folder can now be removed or processed again from the transcripts page.
  • after a journal archive import sets people aside for review, its details now list their names and where to find them. the list used to stay empty.
  • on your journal's page for connecting an agent, sending the code without choosing what the agent may see showed only an error, with no way back to the form. your browser now asks you to choose first. if something is still missing, the page comes back with your choices kept, and the same code still works.
  • on windows, stopping the journal could run past its deadline, leaving journal service restart with the journal off or journal service uninstall with its background task still registered. restart and uninstall now finish after the journal stops.
  • when turning on confidential processing didn't finish, its setup page said why twice. it now says it once, just above the button to turn it on again.
  • after an import finished, its progress could keep showing it as still going for up to ten minutes, and the import detail page until you reloaded. both now show how the import went as soon as it ends.
  • on a mac, the journal app didn't keep your journal's own warnings and errors, so they never reached a log you could read. they now stay in your journal with its other logs, where journal health logs and journal service logs show them.
  • journal health logs left out your journal's own warnings and errors, and --since only looked at today. the command now shows them, and --since 2d reaches back two days.
  • on a journal started on 2.0 or later, adding a person with the name you gave at setup didn't mark them as you, so setting up your voice said your owner identity needed attention. your journal now marks that person as you, when they're added or, if they're already in your journal, the next time it starts. if more than one person already in your journal matches your name, your preferred name or an alias, none of them is marked.
  • on a journal started on 2.0 or later, setting up your voice never found a voice to offer as yours, because transcribed audio didn't add voices to the list it chooses from. audio transcribed from now on adds them, and your journal also adds the voices in audio transcribed before this update, a little each day until it has caught up.
  • after you confirmed your voice, the speakers page said it appears in 0 places. it now shows how many places it appeared in when you confirmed it.
  • on a journal upgraded from 1.x, setting up your voice could stop with "that speaker command didn't finish." it now skips the older voice data it can't use.
  • if the person a journal archive named as its owner was set aside as staged instead of added, the import page didn't warn that the other journal names a different owner. it now does, and says that person wasn't added.
  • filtering the speakers page by a person showed an id instead of their name. it now shows their name.
  • some segments opened empty on the transcripts page, as if they had no transcript. they now open with their transcript, audio and images.
  • the health page counted a journal run that stopped checking in, such as an earlier run that didn't shut down cleanly or one on another computer, as a service that needs attention. it now shows on its own line, under its own name, once no service needs attention.
  • the stats page could give a stuck day a different reason than the health page. both now give the same reason.
  • an image or PDF import started from the import page that ran past 10 minutes showed as stalled while it was still running. it now shows as running until it finishes, with how long it has been going.

Removed

  • your journal no longer builds a weekly profile of you, and the morning briefing no longer reads one. a profile your journal already wrote stays in your journal, untouched, and nothing reads it.
  • your journal no longer asks a model for a health summary every 30 minutes. that summary never reached home, which reads your journal's health directly, so home looks the same and the model does less work.
  • journal identity, journal engage and solstone call sol are gone, and a script or agent that runs one now gets a usage error. journal health shows how your journal is doing, and home shows the morning briefing. to set your name, use settings, or solstone call settings identity set --name in a script. journal engage has no replacement.

journal 2.0.26

september 29, 2026

Fixed

  • security fix: opening text in your journal, including text written by an agent, could make your browser load an image or other resource from an outside website. that could tell the website when you opened the page or send it text placed in the address. your journal's pages now block those loads. outside links in that text still appear, but are no longer clickable.
  • importing two different images whose files were saved in the same second put both in the same place in your journal, and the second replaced the first. each image now gets its own place.
  • if importing an image failed, importing the same file again could be refused because your journal thought it was already imported. you can now import it again, and it finishes in the same place in your journal, with no second copy.
  • if object detection wasn't working on the computer running your journal, photos from your phone's camera never got a description, and your journal kept asking your provider to describe them again. each photo now keeps its description, including ones still waiting.
  • new entities showed Dec 31 (or Jan 1, east of UTC) as the day they were last active, whatever day they actually appeared. each entity now shows the latest day it appears in your journal, and one with no activity yet shows no date instead of a made-up one. sorting by most recent uses the same dates.
  • a search limited to a date range left out entities added since the 2.0 update. it now finds them.
  • merging two entities could keep the wrong dates for when each joined a facet and when it last changed. a merge now keeps the earliest and the latest.
  • in a facet, every entity read "no description", the list showed a dash, and a detached entity offered to detach instead of re-attach. each entity now shows its description, tags and detached state in that facet.
  • a merge's preview always said 0 aliases, 0 facet links, 0 moments and 0 speaker labels. it now shows how many aliases and emails the merge adds, and says the merge may change more. on the curation page, a merge's preview now shows how many aliases it adds.
  • if your journal couldn't read an entity's history, the page said it had no history. it now says the history couldn't be loaded.
  • naming a voice, adding it to someone you already know, or dismissing it from the "who is this" sheet always failed. it now works.
  • assigning or correcting a speaker from a transcript, or marking a line as your own voice, always failed. these changes now go through.
  • voices you confirm or name from now on show when they were actually last heard, instead of showing as heard just now. solstone call speakers backfill-last-seen also set last-heard times off by hours unless your journal's timezone was UTC. it now uses your timezone, or your computer's when none is set.
  • when the people in your journal couldn't be read, a transcript showed every line without a speaker and didn't say why. it now shows a warning.
  • a speaker repair dry run (solstone call speakers repair without --commit) didn't list what it would change. it now lists whose voiceprints it would remove, and how many segments it would fix.
  • in the evening, if you live west of UTC, your journal cleared its own maintenance logs a day early and offered original media for removal a day before your retention setting allowed, so approving the removal failed. both now go by your computer's local day.
  • when an agent used your journal in the evening west of UTC, its activity was filed under the next day in the small hours. agent activity is now filed under your local day and time, and the agents app counts requests "this week" from your local Monday. activity filed earlier stays where it is.
  • activities you added were stamped hours off, so four or more hours west of UTC, as in North America, a new activity never showed in home's recent list. new activities and edits now carry the right time, and ones added earlier keep their old time.
  • home never showed "import complete" after an import finished. it now shows it for an hour after an import finishes.
  • in the evening west of UTC, a person's profile worked out the last day they appear in your journal, their 30-day count and how long they'd gone quiet from tomorrow instead of today. it now counts from your local day.
  • in the evening west of UTC, the body page could show a source as a day staler than it was. it now goes by your local day.
  • in a segment's transcript, speech was placed hours away from what was on screen at the same moment, and clicking a line could play from the wrong spot. speech and screen now line up.
  • the list of background runs showed a run with no saved time with a false time and as 0.0s long, and a run's log could fail to open when an event had a bad time. a missing time or runtime now shows as "-".
  • the health report's note about a quiet facet gave its last time in UTC. it now gives your local time.
  • days from an Apple Health import showed no sleep card, no glucose and no workout times. those days now show them.
  • an activity's story could list commitments or decisions from a meeting or messages happening at the same time. each story now also gets what you were doing in its own facet, so it can leave the rest out.
  • your morning briefing always showed no follow-ups and no decisions from the day before, even when your activities' stories had saved them. it now shows that day's commitments as follow-ups, along with its decisions.
  • solstone call health pipeline showed 0 ms of run time for every kind of thinking run. it now shows each kind's total run time, for runs after this update.
  • in settings, a default activity you added to a facet showed no name or icon, and its priority read high even after you chose normal. it now shows its name, icon and description, and the priority you chose.
  • adding a custom activity with an emoji in settings was refused. the emoji is now saved.
  • the import detail page said "completed at" or "failed at" with no time for every import. it now shows when the import finished and how long it took.
  • importing a journal archive never kept the merge's summary, including the warning that the other journal names a different owner. the import detail page now shows the summary and that warning, with both owners' names.
  • a merged journal archive was listed as a text import. it's now listed as a journal import.
  • choosing "meeting audio" or "quick import" in the import history's source filter always showed no imports. the filter now offers the sources your imports actually have.
  • the status pane never said since when a device's uploads were being turned away, or when the latest one was turned away. it now does.
  • on a mac, the health page never recognized this computer and said its stream wasn't reporting yet. it now recognizes it.
  • on a journal with nothing running, the health page read thinking as unavailable and never showed that everything was quiet. an idle journal now reads as idle.
  • a thinking run that wasn't for a particular day showed no day once it finished, so its links didn't open and its output tab stayed empty. it now uses the day it ran.
  • the backup page showed no reason for some failed backups, including encrypted backup failures, and never warned when a backup stored an incomplete copy. it now says why, and warns about an incomplete copy.
  • keeping several items from the removal list when only some could be kept said none were kept. it now says how many were kept and how many stay on the list.

journal 2.0.25

september 28, 2026

Changed

  • search now includes an activity's saved commitments, closures, decisions and relations, so you and your agents can find an activity by them and read them in its entry. if they don't all fit, the entry says so, and the activity's full record still has every one. when an activity's story and the items saved with it were written from only part of the activity, its entry now says that too. activities from before this update show these once an activity in the same facet on that day changes, or after you rebuild search with journal indexer --reset --rescan-full. a very long activity's entry stays as it was.

Fixed

  • solstone call speakers repair --commit could stop with "the journal didn't answer in time" while the repair kept going. the journal now answers as soon as the repair starts: the command names the repair, shows how many segments have been repaired so far, and waits until the repair finishes. if the repair stops, the command says so, and tells you how to resume it when it can be resumed. repair-resume works the same way, and repair-status now shows where the repair stands.
  • in the journal's thinking app, when something you ask for is turned down or can't be finished, the page now says so in plain words. before, it could show an internal message instead, like a setting's field name or a code. if a change was saved but your journal couldn't add it to its log, the page now says it was saved.
  • on a mac, the transcription settings no longer offer parakeet.cpp, which can't run there. if yours was already set to it, the page now says to choose "Parakeet - local processing" instead.
  • when a day's processing adds an upcoming event to a later day, it no longer keeps trying without finishing because another day added events there too. if one of the events it was adding changed while it worked, like an edit you made, it now starts that step over on its next run, which is one more request to your thinking provider, instead of retrying the same result. when any step stops because something it was about to change changed while it ran, it now tries once more, and then a recent day shows in journal doctor with the reprocess command that finishes it, instead of trying again every day.
  • on a mac, solstone call settings transcribe set-backend no longer accepts parakeet-cpp, which can't run there. use parakeet instead.
  • on windows, the transcription settings now say that parakeet.cpp and its speech model come with the journal and run on your computer's processor. they no longer show a device choice or an install command, since neither applies there.
  • on linux computers with an Arm processor, the transcription settings now show the parakeet.cpp device choice, instead of "platform runtime: unsupported".
  • if you added a reading or browsing activity yourself, journal think --activity can now make a story for it when it has a segment. before, your journal skipped it when its engagement level was absent.
  • on windows, journal install-provider parakeet now says parakeet.cpp and its speech model come with the journal. before, it described a download it doesn't do, then printed an error code.
  • on a mac, journal install-provider parakeet now says parakeet.cpp can't run there and a mac uses the Core ML model, instead of printing an error code.
  • on linux and windows, the transcription settings now ask for about 4 GB of free memory instead of 6 GB.
  • transcripts made with parakeet.cpp now record whether it ran on the processor or the graphics card. before, they recorded the device setting, usually "auto".

journal 2.0.24

september 28, 2026

Added

  • on windows, you can now install the local thinking model from local setup in the journal's thinking app. it runs on your computer using a compatible GPU.
  • on windows, agents on your computer can now connect to your journal, the same way they do on mac and linux, and agents on your wifi or VPN can too once you turn that on in the agents app. each agent needs a pairing code from your journal and reads only what you let it see, and your journal records each thing an agent asks for before it's served. solstone.me and your own hostname aren't available on windows yet.

Changed

  • on a mac, the stats page and the paired-devices error now say where to run the journal command they ask for: in the admin terminal, from the journal app's journal menu. journal doctor no longer looks for the journal and solstone commands in your home folder, and journal setup no longer puts them there or edits your shell files.
  • your journal now also writes a story for terminal, AI conversation, writing, planning, design and productivity activities. each story lists that activity's commitments and decisions. activities that end after you update get one; earlier ones stay as they are. each story is one more request to your thinking provider.
  • search results, including solstone call journal search output, no longer include the match counts by facet and by kind of result.
  • an agent can start connecting to your journal only while you have a pairing code open. make the code first, in agents › connect an agent, then connect from your agent. at any other time, your journal turns the attempt away and stores nothing from it. agents you've already connected keep working. the page where you enter the code no longer shows your journal's mark; the code is what proves it's you.
  • when you import an image and your provider describes it, your journal now sends only a fresh copy of the picture, turned upright and scaled down if it's large. details stored inside the file, like where and when a photo was taken and on what camera, no longer go with it. the image kept in your journal is unchanged.
  • the Kindle importer is gone. highlights you imported before stay in your journal.
  • on mac and linux, when sol pbc runs your encrypted backup, your journal now gets the rclone tool from updates.solstone.app instead of rclone.org.
  • on windows, your journal now also reads Apple Lossless, AC-3, E-AC-3, G.711 phone audio, common ADPCM audio and more kinds of uncompressed audio in the files you import.
  • journal facet doctor --fix now only repairs. it no longer turns leftover folders into new facets: journal facet doctor --adopt registers the ones it can, all at once. a leftover folder named like a facet you already have, like blue_sky beside bluesky, is never added as a second facet. --adopt --merge folds it into the one you have, and a merge can't be undone, so run journal facet doctor first to see what each would do.

Fixed

  • if you turned confidential processing off before turning it on had finished, it could finish turning on anyway. it now stays off, and you can turn it on again straight away.
  • in local setup, in the journal's thinking app, if "install local model" or "cancel" is turned down, or the page can't check local setup, the page now says so until you do something else there or leave it. before, the message showed for a moment and then disappeared, so the button looked like it did nothing. if local setup is already running, the page now says that without showing it as an error.
  • in the journal's thinking app, when local thinking isn't ready, the local card on the main page now says so, like "not set up on this computer yet." before, it could show an internal phrase or code instead.
  • an activity's story is now kept when it has no topics worth saving. before, your journal threw that story away.
  • if a task ends and the journal cannot prove its processes are gone, that kind of task is held, journal health shows it as held, and the next one waits until they are gone. on mac and linux, a hold lasts when your journal restarts, and journal doctor shows it while the journal is stopped.
  • a recording that finishes importing from this release on isn't added a second time if you import it again. journal importer now says the file was already imported, and --force imports it again. an audio-folder sync also leaves out a recording you imported by hand from this release on. recordings imported before this release aren't recognized, so importing one again still adds a second copy.
  • calendar files, Obsidian and Logseq notes, and conversation exports from ChatGPT, Claude and Gemini go into your journal again. until this release, importing any of them showed a preview and then saved nothing. each lands on a day in your own time zone: a conversation on the day its messages were sent, a note on the day you last changed it, and a calendar event on the day it was added or last changed, not the day it's scheduled for. you can search them as soon as the import finishes.
  • Plaud device sync, Obsidian sync and audio-folder sync go into your journal again, including the hourly Plaud and Obsidian syncs you turn on in settings. until this release they only listed what was new. a Plaud recording you already imported by hand is not brought in a second time.
  • in a rare case, importing an archive could replace an entity already in your journal: when a new entity in the archive had the same folder name, and the file in that folder was damaged or named a different entity. the import now sets the archive's entity aside and lists it as staged. an entity replaced this way by an earlier import isn't brought back by this update.
  • if the weekly reflection or your profile's weekly update stopped partway through a busy week, they now search one day at a time instead of the whole week at once.
  • solstone call journal search --day now limits results to that day instead of being ignored, and can't be combined with --day-from or --day-to.
  • on linux, if minisign (the tool that checks the download's signature) is missing, the journal installer now says that nothing was changed, names the command that adds minisign on Arch, openSUSE Tumbleweed, AlmaLinux and Rocky as well as Debian, Ubuntu and Fedora, and tells you to run the installer again afterward.
  • on windows, journal doctor now checks your installation and reports what it finds, as it does on mac and linux. before, it skipped every check.
  • on windows, a new screen description now shows up in the journal while it's open, without a refresh.
  • on windows, if journal install-models finds the installed journal doesn't match its signed contents, it now says so and asks you to reinstall, instead of pointing at the sound-tagging files.
  • on windows, when journal service start can't confirm your journal started, it now tells you to run journal service logs to see why.
  • on windows, journal health now shows your journal's status while your journal is running. before, it always said it couldn't connect.
  • a recording with a very short remark in it, about a quarter of a second, now gets its full transcript. before, your journal couldn't finish transcribing it and kept trying again without ever writing one.
  • when the model your journal uses turns down the work with a reply like "I'm sorry, I can't", in a summary your journal writes automatically, or on a page of a document you import, your journal now counts that as a failure instead of saving the reply as the result. the imported page says its text or image description is unavailable and keeps the page image. a summary or page already saved that way isn't changed by this update.
  • with confidential processing, your journal could stop sending work to the service after about ten quiet minutes and hold it until the next run. it now checks the service again and carries on.
  • when an agent searches your journal for "yesterday" or "last week", it now gets the days you'd expect in your own time zone. before, those dates followed UTC, so for part of each day they could be a day off.
  • with confidential processing, if turning it on didn't finish, for example because you took longer than about fifteen minutes in your browser, the journal's thinking app said it couldn't verify the service, and that message disappeared half a minute later. it now says confidential processing isn't on and what went wrong, and the message no longer disappears after half a minute.
  • if you drop a text file or a recording on the import page without picking what kind it is, it now imports, and so does a calendar file or a ChatGPT, Claude or Gemini export. before, the import never started, and the page said it was running for an hour before saying "Import never completed". the page now says a file your journal can't recognize failed within a second or so, not an hour later.
  • the thinking and health apps now say "run" or "thinking" where they used to say "talent".
  • when your exact search finds nothing and the search page shows broader matches instead, it now says so. before, it said the search had few results.
  • an import that stops partway, because your journal restarted or something went wrong while it ran, now shows as unconfirmed as soon as you look, instead of saying it was running for up to an hour, and you can start it again. a long document your journal is still importing now stays running until it's done, instead of turning unconfirmed after an hour. and when you try a failed import again, it shows running while it waits to start, instead of still saying it failed.
  • when no intake reaches your journal for an hour, for example because your screen is locked, your journal now finishes your last activity after that hour and writes its story. before, that activity stayed open until intake resumed, sometimes the next day.
  • activities you bring in from another journal's archive can now be edited, hidden and summarized like your own. before, the ones that landed in a facet you already had couldn't be changed. activities imported before this update aren't changed by it.
  • after you merge two entities, when the speakers pages suggest who an unknown voice might be, the conversations and meetings the one you merged away was in now count for the one you kept. that includes merges from earlier versions, unless an earlier version brought the merged-away entity back.
  • search now finds an entity's description and tags in a facet under that entity, even when they're kept under the name of one you merged away earlier. results already in search catch up on their own.
  • with confidential processing, when your journal can't verify the service right before sending it work, the thinking app and the home page now say so straight away, and the work waits until it can. before, they only showed it after the journal's next regular check of the service, which could be several minutes later.
  • with confidential processing, if your thinking runs on your own model or the local one and your journal can't verify the service right before sending it work, the thinking app and the home page now say so, and the work waits until it can. before, the thinking app showed confidential processing as available.
  • if you use confidential processing, when your journal can't reach the service, or is still getting ready to check it, the home page and the thinking and health apps no longer say "processing needs a setup". they now say "can't reach confidential processing right now" or "checking confidential processing", and processing waits until your journal can verify the service.
  • while your journal is installing or starting its local model, the home page and the thinking and health apps now say "setting up local processing" instead of "processing needs a setup", and the home page no longer lists it as something that needs your attention.
  • if you use confidential processing and this computer can't run the check on the service's hardware, or something it needs isn't installed, the home page and the thinking and health apps now say "processing needs attention" instead of "processing needs a setup". journal brain refresh now describes a check that couldn't reach the service, or one that's still getting ready, in the same words as the thinking app.
  • with confidential processing, if your journal couldn't verify the service for more than about two hours, it gave up pulling the details out of documents you imported in that time. from this update on, it waits and pulls them out once it can verify the service again. documents it gave up on before this update aren't picked up again automatically.
  • in a rare case, turning confidential processing off could leave the service's address in your thinking settings. it's now always removed.
  • on the curation page, accepting a suggestion to merge two entities you've already merged somewhere else, like on the entities page, now closes it. before, the merge failed and the suggestion stayed open. for two speakers, if that merge didn't keep the other name, the page asks you to first add it to the alternative names of the one you kept, so the one you kept still goes by that name.
  • an archive import no longer writes over a change you make to an entity or facet while the import runs.
  • an entity that showed up twice on pages that list your entities, like speakers, now shows once. the other copy stays in your journal as it was.
  • journal facet doctor no longer fails when an entity link in a facet points to nothing. it reports that link as unreadable and checks the rest.
  • for some entities, the people they spoke with in conversations were missing from their connections. conversations your journal reads from this release on include them, and your journal adds the earlier ones at its weekly refresh, or right away when you run journal indexer --rebuild-edges.

journal 2.0.23

september 27, 2026

Added

  • journal entities doctor finds entities you deleted before 2.0.22, from what your journal's action log still shows. --fix records those deletions, so your journal never brings those names back on its own. it leaves out an entity that's back in your journal or was merged after you deleted it, and it tells you which days of the log it could read.

Changed

  • when you merge two entities, your journal no longer keeps a copy of the one you merged away. copies from earlier merges remain until you merge the entity holding them into another.
  • if the token an agent uses to stay connected is used twice, your journal now disconnects that agent and tells you in the agents app. connect it again with a new pairing code.

Fixed

  • security fix: when solstone link join paired with a journal whose private network was on, it sent the pairing link's one-time secret through the relay before checking it had reached that journal, so someone who could sit where the relay sits could have read the secret and used it to pair their own device. it now checks first that it's talking to the journal that made the link. please install this update before you pair again. if you paired this way, open your journal's network app and remove any device you don't recognize, including under "nothing added yet".
  • security fix: another website could show your journal's web app inside its own page, where a click you meant for that site could land on your journal instead. your journal's web app now refuses to be shown inside another site's page, and http://localhost:5015 works as before.
  • journal describe --frames-only FILE now lists the frames in a video instead of rejecting --frames-only.
  • on linux, journal setup now shows progress while it downloads the parakeet speech model. a slow connection can finish without a 30-minute cutoff.

journal 2.0.22

september 27, 2026

Changed

  • your journal now sends what solstone.me needs to lock your solstone.me address to your journal, so certificates for your address are issued only to your journal, not to the relay that carries its traffic. once sol pbc turns on the lock at solstone.me, a journal without this update won't be able to use solstone.me until it's updated.
  • on mac and linux, your journal now reads fewer formats in the files you import. flac, m4a, mov, mp3, mp4, ogg, opus, wav and webm imports keep working with AAC, Apple Lossless, AC-3, E-AC-3, FLAC, MP3, Opus, Vorbis, G.711 phone audio, uncompressed and common ADPCM audio. rarer audio inside those files, such as G.723.1 or Yamaha ADPCM in a wav, no longer imports, so convert it to one of those first.
  • journal packages on mac and linux now include the third-party licence and model notices for the components they carry.
  • when you connect an agent, you now choose between an agent on this computer and one that reaches your journal through solstone.me, instead of one choice for both. each pairing code works only the way you chose it for, so a code for an agent on this computer can't be used through solstone.me.
  • journal mcp pairing generate now makes a code for an agent on this computer unless you pass --door lan, --door solstone.me or --door hostname, and says which way the code works.
  • renaming a facet now changes only its title. its name, the one commands and agent permissions use, stays the same, so what's filed under it stays put and every agent you've given it to keeps its access.
  • from this version on, once you delete or merge a facet, its name is never used again. a new facet with the same title gets a new name, so nothing filed under the old facet can end up in the new one.
  • merging facets can't be undone, so journal facet merge now needs --yes to run. check first what a merge would lose with --dry-run.
  • merging entities can't be undone any more, and the confirmation before a merge now says so. an entity that was merged away is never created again: a new mention of its name doesn't bring it back, and adding it yourself is refused with the name of the entity it joined.
  • solstone call entities merge --commit, solstone call entities accept-merge-candidate --commit, solstone call speakers merge-names and solstone call speakers resolve-names --commit now need --yes. solstone call entities undo-merge is gone. a script that runs one of these needs to add --yes.
  • when you delete an entity, your journal now remembers that you deleted it, so it never brings the entity back on its own when the name comes up again. if you add the name yourself later, you get a new entity, and the one you deleted stays gone. adding notes to the deleted name is refused until you add it again. this applies to entities you delete from this version on.
  • importing an archive no longer brings back an entity you delete in this journal from this version on. the archive's copy shows as staged in the import's details, and its links and notes aren't added. if you've added the name again, the archive's copy joins the one you added instead, as any matching entity does.

Removed

  • your journal can no longer read screen video saved as HEVC, the format the solstone app on your mac used from January to mid-April 2026. what your journal already holds from it stays, but it can't read it again or show frames from it.
  • your journal no longer deletes every segment that holds your location when a phone asks it to, and anything already deleted that way stays deleted. an older solstone app on your iphone that still offers this will say it couldn't reach your journal, and nothing is deleted.
  • the import screen and the command line no longer offer heic, heif or tiff images. your journal can't read those formats, so an import of one couldn't succeed. save the picture as jpeg or png first, then import that.

Fixed

  • journal grab no longer quits on screen video that was cut off partway. it now says it couldn't read the video.
  • security fix: since 2.0.9, anyone who could reach your journal could see your facets' names and colors on the page your browser opens to finish connecting an agent, before a pairing code was entered, and a wrong code could confirm whether a guessed facet name existed. that page now shows your facets only after the code matches, so if you limit an agent to chosen facets, you choose them on the next step.
  • when you import an m4a audio file sampled below 16 kHz, your journal now uses its full length for transcription.
  • merging away an entity whose id is part of a longer one, like sam inside samantha_ortiz, could fail on a large journal with a "No file descriptors available" error, because the merge held open every file that mentioned the longer id. it now holds only the files it changes.
  • when you delete a segment, search and the agents you've connected stop finding that segment as soon as the delete finishes. before, it could keep turning up in search until your journal next processed that day, and on some setups indefinitely.
  • a facet's entity review no longer stops for the day when another facet saved merge suggestions while it was running. if journal doctor already names a day that stopped this way, the reprocess command it suggests finishes that day's review.
  • after you merge one facet into another, search and the agents you've given the remaining facet now find what was filed under the old one. an agent you'd given only the old facet needs the remaining one.
  • journal facet doctor --fix can now record facets you renamed, merged or deleted before this version, so material from a renamed or merged facet shows up under the facet it became. run it before you create new facets. journal facet doctor --retire NAME --into FACET does the same for a name the journal has no record of.
  • adding an entity could erase the aliases, emails and "this is you" mark of an existing entity when the added name matched that entity's original name, even with different punctuation. it now uses the existing entity and leaves its details alone. entities already affected aren't changed by this update.
  • after you merge two entities, their connections show together right away. before, connections were unavailable for up to about an hour after a merge while your journal updated them. connections filed under an entity you merged away, including merges from earlier versions, now count toward the entity it joined, unless an earlier version brought the merged-away entity back.
  • in a facet that held an entity you later merged into another, mentions of the entity it joined weren't counted as connections. they are now. mentions your journal already passed over are counted at its weekly connections rebuild, or sooner if you run journal indexer --rebuild-edges.
  • after you merge one facet into another, days filed under the facet you merged away now count for the facet it joined, so that facet's daily and weekly work runs for them. before, it skipped them. for a merge made before this version, run journal facet doctor --fix first.
  • activities that came across in a facet merge can be edited and hidden again. before, they still showed but every change to them was refused. activities from some merges made before this version may still refuse changes.
  • merging two facets could list an entity twice when both facets had it, or put one entity's notes under a different entity. now each entity ends up once in the remaining facet, with the notes from both.
  • merging one entity into another could bring back notes your journal had removed, and could leave some notes behind when the entity was listed more than once in a facet. every note now carries over as it was, and removed ones stay removed.
  • moving an entity's notes to another facet could file them under a different entity, and so could importing an archive. an import could also replace notes your journal already kept under the same name in the facet. both now file every note they bring with the entity it's about, and an import keeps the notes already there. notes already replaced that way aren't restored by this update.
  • journal facet doctor now also finds an entity listed more than once in a facet. --fix combines those entries into one, and moves notes still filed under an entity you merged away to the entity it joined. notes already filed under another entity, or brought back after your journal removed them, aren't changed by this update. if a merge or a move stops and points you to journal facet doctor, run it with --fix, and try again once it lists that folder as repaired.
  • moving an entity to the facet it was already in could delete it from that facet, notes included. that move is now refused.

journal 2.0.21

september 26, 2026

Added

  • the journal now installs on windows 11 computers with Intel or AMD 64-bit processors, for your windows account, without needing administrator access. after installing, open a new terminal window and run journal setup.
  • on windows, the speech model for transcription comes with the journal and runs on your computer. the local thinking model isn't available on windows.
  • the journal on windows can run beside the solstone app for windows, which connects to it on the same computer. connecting your agents to the journal isn't available on windows yet.
  • this windows build is signed by sol pbc. transparency.solstone.app has no signed evidence for it.
  • this release is windows only; the journal on mac and linux doesn't change.

journal 2.0.19

september 26, 2026

Added

  • your agents, wherever they run, can now reach your journal at a public hostname you own. it's off until you set it up in the agents app: you provide the public server, DNS pointing straight at it and an OpenSSH forward, and your journal gets its own certificate. requests stay encrypted until your journal opens them, as long as your route only passes the bytes through; anything that opens them first can read what your agent reads and reuse its access to reach your journal. each agent still needs a pairing code made for this address and gets only what you let it see; a key you created won't work there. the certificate puts your hostname in public certificate logs permanently.

Fixed

  • security fix: if you renamed, merged or deleted a facet, an agent you had limited to chosen facets could read a segment filed under both that facet and one the agent was allowed. those segments are now out of reach for agents limited to chosen facets. agents you let see your whole journal aren't affected.
  • merging or undoing entities no longer waits for connections to update. while they update, connections say they're unavailable instead of appearing empty, and your journal keeps processing.
  • when you accept a merge suggestion, it now stays marked accepted if the request disconnects after acceptance begins. other open suggestions for the merged-away entity are resolved.
  • merge previews now distinguish alias and email additions from other changes they can't show.
  • descriptions missing from profiles after an entity merge can appear again.
  • if journal setup can't tell which installation its command-line tools or background support belong to, the error now asks you to leave them in place and include the details in a support request.
  • agents you connect can now read what was said in recorded audio segments when you grant transcript access.
  • a segment you delete in transcripts is now deleted even if your journal stops during the 10 seconds you have to cancel. the delete finishes when your journal starts again, unless the segment changed in between.
  • if your journal can't delete a segment, transcripts now tells you and puts the segment back, instead of showing it as deleted. cancel says a segment was already deleted only when it was.
  • the delete dialog now says what it deletes: the segment's own audio, screen frames, transcript and the analysis stored with it. summaries made from it elsewhere in your journal aren't deleted and may still mention it.
  • after you erase location data, the list of what wasn't removed no longer shows an activity summary for a day that has none.
  • an entity you delete is now deleted even if your journal stops during the 10 seconds you have to cancel. the delete finishes when your journal starts again, unless your journal can't confirm it's still the entity you chose.
  • if your journal can't delete an entity, entities now tells you and shows it again, instead of showing it as deleted. cancel says an entity was already deleted only when it was.
  • if your journal's setup isn't finished, saving a provider key or model in thinking settings now takes you to setup instead of showing a JSON error.

journal 2.0.18

september 25, 2026

Added

  • agents on the same computer as your journal can now connect to it directly, at http://127.0.0.1:7659/mcp, without solstone.me. it's on unless you turn it off in the agents app, and each agent still needs your pairing code, or a key you created, and gets only what you let it see.
  • agents on other computers on the same wi-fi or VPN as your journal can now reach it too, at its addresses on that network. it's off until you turn it on in the agents app. each agent still needs a pairing code made for network connections and gets only what you let it see; don't give it a key you created, which won't work there. your journal makes its own certificate for these addresses, so the browser on the other computer warns that the connection isn't private; check the page shows your journal's mark before you enter the code.

Changed

  • the agents app is laid out like network and backup now, and connect an agent walks you through the address, your journal's mark and a pairing code. the agents app works with your own route or with solstone.me; solstone.me is the address, agents is where you manage what connects.
  • when an agent's search finds nothing, it now gets a plain-words note saying so, so it can tell you instead of reading through your journal one piece at a time.

Fixed

  • security fix: the page your browser opens to finish connecting an agent showed an empty circle where your journal's mark belongs, with the words only on hover, so a page pretending to be your journal to collect your pairing code, and use it to connect an agent to your journal, looked the same as the real one. it now shows the mark in full, both icons and both words, and agents › connect an agent shows the same mark beside the pairing code, so you can check they match before you enter the code.
  • in Chrome and possibly other browsers, connecting an agent stopped after you entered the pairing code and never finished. it now finishes and returns you to the agent.
  • your journal labels every tool it offers agents as read-only again. agents that look for that label can see that these tools only read.
  • in a journal with no transcripts yet, an agent that asks for transcripts now gets an empty list instead of an error.
  • if your journal runs out of disk space, the message now says it's out of space and to free some up, instead of saying its installation is incomplete and needs reinstalling.

journal 2.0.17

september 24, 2026

Added

  • journal facet merge --dry-run shows what a merge would lose before you merge: how many records and entity fields in each file would give way to a different version with the same id or field, the files both facets have that can't be combined, and the settings of the facet you merge away. it changes nothing.

Changed

  • names to clarify groups repeated questions across facets. choose which names your answer applies to. questions about missing entities, speaker labels, and weak name matches move to automatic review, where you can see why and bring them back.
  • your journal's web app now follows your device's light or dark setting, and so does the page where you let an agent read your journal. search now puts its text on a panel.

Fixed

  • this is a security fix. if you use confidential processing, the tool your journal installs to check the confidential hardware could have been made to run someone else's code as you. on linux, it looked for some of the files it loads in whatever folder you ran a command from, when that command used confidential processing, so a file someone else put there (a shared temporary folder, or a download or project you unpacked) could have run as you. your journal now always starts the tool from a folder only an administrator can change. on a mac, it looked for its settings in the home folder of an account with one particular name, so another account on your mac with that name could have put a settings file there that ran code as you. the tool no longer looks there. please install this update.
  • if a device's backup was replaced by a newer one somewhere else, it used to keep trying every hour, forever, without telling you. this release notices it once, clears the backup settings, and lets you know to run journal backup enable if you want a new backup here.
  • importing a file you already imported now says so. when a name clarification fails, it now distinguishes a busy journal, a missing suggestion or match, and a choice it could not apply.

journal 2.0.16

september 24, 2026

Removed

  • journal transfer send is gone. it couldn't deliver into another journal, so nothing that worked was lost. to bring one journal into another, download it from the journal card in that journal's import app, or run journal archive export. then merge the zip with the journal card in the receiving journal's import app, or run journal archive merge.
  • journal sources, the receiving end of journal transfer send, are gone too: journal importer journal-source, and solstone call import list-staged, resolve-entity, resolve-staged-facet, resolve-config and resolve-config-all. anything a source already merged stays in your journal. items a source left waiting for your review can no longer be resolved.
  • pairing a device as a peer is no longer offered. a device you paired that way before stays paired until you unpair it.
  • journal export, journal transfer export, journal transfer import and journal config journal PATH --merge are gone. they only printed a message. use journal archive export and journal archive merge.
  • the --remote option on journal supervisor and journal start is gone. it did nothing except stop parts of your journal from running. if a script passes it, remove it, or your journal won't start.
  • your journal no longer reads the .tgz day archives journal transfer export made before 2.0. if you have one, merge it before you install this update. if you've already updated, export that day again as a zip from the journal it came from (journal archive export --day YYYYMMDD) and merge that zip, or merge the .tgz into a new, empty journal on an earlier 2.x release, export that journal as a zip, and merge that zip into your journal.

Changed

  • the background of your journal's web app no longer turns dark brown at sunset, so the search hints and the settings sidebar are easy to read at night. after sunset a warm glow stays in the corner where the sun went down, fading out around the middle of the night.

Fixed

  • if sol pbc runs your encrypted backup and media offload moved older media into it, you can now bring that media back. before, every try failed, though the media itself stayed in your backup.
  • journal backup status now shows the schedule your backups actually run on. before, it showed the schedule as off and daily while backups ran every hour.
  • journal facet merge now lists the files it didn't keep because both facets had a file with that name. the facet you merge into keeps its own copy, and the other copy is deleted with the facet you merged. before, that happened without a word. a facet.json file inside a folder both facets had is now handled like any other file in that folder; before, it was deleted.
  • on a new journal, home said something needed your attention before the journal had had a single night to catch up, or while processing wasn't set up yet, and the morning briefing card said a briefing wasn't prepared when none was due yet. home, the health page and the stats page now say when you'll see whether your journal is caught up, and the briefing card says when your first briefing is due. if it's still unclear after the first night, they say so, as before.
  • your journal could keep your computer busy while a paired device had nothing new to send, because each time that device checked in, your journal looked through every day and everything in it. it now looks only at that device's own folders.

journal 2.0.15

september 23, 2026

Added

  • your journal's health page now shows when search last caught up. if search couldn't update, or it's been more than a week, it tells you recent moments may not turn up in search yet.

Changed

  • journal sources no longer use an API key. journal importer journal-source create doesn't give you one, and a key from a source you made earlier stops working and is removed from that source. sending into a source you made now works only from the computer your journal runs on. paired devices are unchanged and keep reaching your journal through their pairing.
  • your journal now keeps at least one facet unmuted. when your journal starts with every facet muted, or with none, it unmutes Personal, or adds it if you don't have one. you can't mute or delete the last unmuted facet.
  • when you use your own provider key, you now type the model id yourself, exactly as your provider lists it. the short built-in list of models is gone, because it went out of date every time a provider released new models. your journal still checks the model with your provider before saving it.
  • on the thinking page, "how it works" for confidential processing now sits in the card's description and opens the card's own page, instead of expanding underneath the card. that page now also says who confidential processing is available to.

Fixed

  • with a local model installed, opening home or thinking could wait while your journal reread the model's files. those pages now check setup quickly; starting the model still checks its files before it runs.
  • on the first-run setup page, the icon beside "your own model" showed as an empty box on some linux computers. the three thinking options no longer have icons.
  • adding and renaming devices, using the journal's agents app and erasing location data worked only on the computer your journal runs on. they now work from any device you've paired, like your phone.
  • a recent update left most of what went into your journal under none of your facets, so it was missing from your activity lists, including today's. new additions again go under the unmuted facet that fits best. this release doesn't refile what already went in under no facet.
  • with your own Anthropic key, newer Claude models like Claude Sonnet 5 could turn away much of your journal's work, such as understanding screens and importing documents. your journal no longer sends the settings those models refuse, so they work again.
  • with your own Gemini key, some models, such as Gemini 3.1 Pro Preview and Gemini 3.5 Flash Lite, failed your journal's model check and couldn't be chosen. they can now.
  • when you add a key for a different provider, your journal now checks it with that provider, not the one you were already using.
  • a mistyped model id now tells you your provider doesn't offer it to your key, instead of showing a general error.
  • in rare cases, audio from right after your journal started could go untranscribed, with no warning shown. it's now transcribed once the app catches up on what it missed.
  • the health page could say your journal was all caught up based on an update from days earlier. it now tells you when it can't tell, and how long ago it was last updated.
  • if your journal couldn't finish processing an activity on a day that was otherwise done, the problem disappeared from the health page. it now says how many couldn't finish, with a link to the oldest day affected, and journal doctor mentions them too.
  • the stats page warned that your stats were in an older format and asked you to regenerate them. the warning was mistaken, so regenerating couldn't clear it, and it no longer appears.
  • the first-run setup page said your journal's mark was "locked in" before you had locked it. it now says so only after you press "lock it in".
  • on the thinking page, the local card said "checking whether this computer can run a local model." when nothing was checking. once your local model is installed, it now says "installed. waiting for processing to confirm it's ready." and the card updates on its own once processing does.
  • the health and stats pages said "still checking where your journal stands." when nothing was checking, such as on a new journal before its first full day. they now say "it's unclear whether your journal is caught up right now.", the same as the home page.
  • after you set up your local model, the home page and the thinking page could keep saying "processing needs a setup" while the model was already running, for up to a day. your journal now checks again as soon as the local model is ready.
  • when journal backup run saves a partial backup, it now says how many files it couldn't read and gives the first reason. until now it only said "some files couldn't be read".

journal 2.0.14

september 22, 2026

Fixed

  • your morning briefing works again when your journal uses the configured SGLang local-model service. the last update could stop every briefing before the model answered.
  • reading documents, understanding screens and writing stories no longer stop before the local model included with your journal can answer. the last update could send format rules that stopped this work before the model answered.
  • when a local-model service rejects the same daily request, your journal now waits until the next day before trying it again instead of repeatedly retrying it.

journal 2.0.13

september 22, 2026

Added

  • agents can now read from your journal, once you turn it on. Claude, Codex, or any agent that speaks MCP can search and read your journal, within what you let it see: your whole journal, or only the facets you choose. it reads only, and can't add, change or delete anything. this is off by default; nothing is reachable until you turn it on, and you can turn it off any time.
  • turning it on gives your journal an address on the internet through solstone.me, a paid agent-connector service operated by sol pbc. the solstone.me relay passes the traffic along and can't read it: sol pbc can see that an agent connected to your journal, when, and how much passed, nothing inside. the address is public once it's issued, and stays public for good, even after you turn this off or ask sol pbc to delete everything it holds for you. it's an identifier, not your data: eight random characters with nothing of yours in it. every request an agent makes is recorded in your journal: what it asked and what it got or was refused.

Fixed

  • this is a security fix. a paired device could ask for a speaker recording using a path built to reach outside where your journal keeps them. it's now rejected before your journal reads anything, and naming or reviewing a speaker works the same as before.
  • on mac, the journal could silently stall backfilling a missed day, or finishing today's day, with no error shown. both now run reliably.
  • viewing an entity with a lot of connections in its network could stall or time out. it now loads reliably, with the same results as before.
  • your morning briefing could show a broken time for something that spans a range, like a meeting from 9 to 10; it now shows the real start and end. this also holds your own local model to the same format rules as every other provider, for your schedule and morning briefing.

journal 2.0.12

september 21, 2026

Fixed

  • this is a security fix. on the computer your journal runs on, your journal's web app used to accept requests from other websites. it now only works at localhost, 127.0.0.1 or [::1], and turns away a change sent to it by another website. http://localhost:5015 and your paired devices work as before.
  • an import still in progress, unconfirmed, unavailable, or failed no longer says where it landed. completed imports still show where to find what they added, and image and document imports use the same source name in their detail and history views.
  • an audio import used to read as failed about an hour after you started it, even though the audio had already imported successfully. it now shows its real outcome, and the import history now names it "audio" instead of leaving it blank.

journal 2.0.11

september 20, 2026

Added

  • your journal's web app now shifts its background with the time of day, a glow that follows the sun and goes by your device's time zone.

Fixed

  • a facet name your journal suggested, but that you had never created, could still be used to file an activity and hold its results. an activity now goes only to a facet that exists, and its results stay with the facet that started it.
  • editing an activity could drop a damaged entry from its saved settings. the edit now stops and leaves those settings unchanged, and damaged activity settings show an error when you open them.
  • at the command line, restoring, backup cleanup, rotating your recovery key, turning off backup, and moving older media to your backup and bringing it back now say what went wrong in plain language when they fail, instead of a raw internal code.
  • a saved home address your journal can't use for pairing no longer goes into pairing links, and no longer counts as your journal being reachable on your own network. the network page says the saved address can't be used and leaves it under "use a different address" so you can correct it, and pairing looks for a working address instead.
  • home now catches up after a dropped connection. if your journal finished your "recent activity" summary or your "morning briefing" while the connection was down, they show up when it reconnects, without a reload.
  • if an image or PDF import still stalled on "preparing…" after the last update, this resolves it. the progress panel now shows when the import has finished and what you can browse, and "import another image" (or document) goes straight to a fresh upload instead of back to the list of sources. an import that only partly worked says so, and one that can't be confirmed as finished offers "check status" in place of a spinner.
  • the install command on solstone.app now works on a computer that still has the older version of solstone. it used to stop and point you back to the older journal command, and install nothing. it now installs the current version, replaces the old one, and leaves the memories already in your journal as they were.
  • when the journal app set up your journal on a mac that still had the older version's command-line tools, sol and journal kept answering as the older version. when it recognizes them as the older version's, setup now removes them and saves a backup of each in ~/.local/share/solstone/setup-backups, so sol and journal stop answering. installing the current command-line tools gives you journal and solstone, but not sol.
  • when setup stopped because the command-line tools or background support on your computer were set up by a different solstone installation, it listed commands that would delete them. it now lists none and says nothing was changed. when setup does list commands, it now includes a leftover sol from the older version.
  • when setup can't verify an installation, the commands it lists did nothing in the Application Support folder on a mac, because its name has a space in it. they now work there too.
  • journal service start said "service started" as soon as it asked your computer to start it, even if your journal never came up. it now waits for your journal to be ready, as journal service restart and journal up already did, and reports an error if it isn't.
  • a large upload from a device could fail over and over on a connection that was working fine. while saving an upload, or listing what a device already had, your journal went quiet on that connection, and the device treated the silence as a dropped connection and started the upload again. your journal now stays responsive while that work runs.

journal 2.0.10

september 19, 2026

Changed

  • a device doing several things at once has more room before your journal starts refusing requests. it now handles sixteen at a time on one connection instead of eight; a ninth at the same time used to be refused.
  • pairing a device directly with your journal now works at a public address too. it already worked at the addresses your journal has on a home or Tailscale network, so a journal reachable only at a public address had to pair through the relay.
  • confirming your own voice now happens in the browser only. the confirm button waits until a sample's audio has loaded and can play, and until that sample still matches the recording it was built from. you can now set a suggestion aside as well as reject it. solstone call speakers confirm-owner no longer saves a voiceprint or starts naming speakers across your recordings; it points you at the review page instead.

Fixed

  • a backup that saved your journal but could not read every file now reports as a partial backup, not a failed one, and names how many files it couldn't read and the first reason given. a run with no snapshot at all is still a failure, and when a backup does fail it now says what went wrong in a sentence instead of an internal code.
  • naming or correcting a speaker now works on recordings stored directly under a day, not only on recordings grouped by device. those used to be refused.
  • solstone call speakers backfill no longer gives up while the work is still running. on a long backfill it used to stop after about twenty seconds, with the run carrying on out of sight; it now follows the operation to the end, and stopping the command does not cancel it.
  • an entity that changes while your journal is reviewing it no longer leaves the day retrying without end. the review retries once on its own, then stops and leaves the day unfinished, and journal doctor names the day, the facet and what to do next.

journal 2.0.9

september 18, 2026

Added

  • solstone link join now shows your journal's mark right after pairing, so you can confirm you connected to the journal you meant.
  • your journal's mark is now read aloud by screen readers on first-run setup and the network page, not just shown.

Changed

  • settings now name updates.solstone.app as the source for the parakeet-cpp server and speech model, along with their licenses and where to find the notices.

Fixed

  • the journal now cleans up an earlier start that stopped partway through before starting again; if it cannot prove cleanup is safe, it still stops rather than risk two copies
  • journal setup now sets a twenty-second stop limit on linux.
  • a damaged recoverable bookkeeping file no longer stops the journal from starting or finishing its day; the damaged file is kept beside the original and journal doctor lists it
  • days with a lot of context about a person or thing no longer get stuck while your journal considers new memories. it now fits source excerpts and existing memories within the available space before asking the model.
  • the network page's pairing confirmation no longer asks you to compare a fingerprint nothing else shows; it points at the journal mark shown on the same page instead.
  • first-run setup and the network page now show the plain "your journal" mark instead of an error message when your journal's mark isn't ready yet or can't be read.
  • solstone link status now says "unknown journal seen at" an address, matching the wording used elsewhere.
  • turning on "keep audio with no speech" now clears matching audio from your pending removal list, not just future recordings.
  • transcribing everything at once now finds audio that was stored directly under a day instead of grouped by device, rather than silently skipping it; and a day the journal could not scan for recordings is now reported instead of silently counting as nothing to transcribe.

journal 2.0.8

september 16, 2026

Added

  • pairing and solstone link status now explain more of what they find: why no reachable address could be used, when something else answered where your journal was expected, whether this device is unpaired or your journal is only unreachable, and how to pair again. a sighting through the relay is called out as weaker evidence than an address on your own network. linked devices are also told when your journal cannot check its paired-device list or when they are no longer paired.

Fixed

  • "keep audio with no speech" now works from storage settings: when it is on, that audio stays off the deletion list, anything already listed comes off at the next daily rebuild, and the home page and first-run setup describe the setting accurately. nothing on the list is deleted until you say so, and an existing choice to keep this audio is preserved.
  • a transcript or journal grab no longer says missing original media was removed by retention when the reason is unknown. for deletions made through your journal from this release on, it shows the saved deletion reason; otherwise it simply says the media is no longer in your journal. a picture, recording or video that stops arriving partway through solstone link serve now fails to load instead of appearing complete.
  • a day no longer retries forever when punctuation or accents kept a recurring person or thing from matching. a memory is now treated as a repeat only when its words, day and relationship all match, so the same words can still belong to another day or relationship.
  • on linux, pressing "install local model" started local setup, and setup stopped a few seconds later, every time. trying again, restarting your journal and rebooting all did the same, and installing from the terminal with journal install-provider local was the only way through. this release fixes that install failure.
  • the import page's progress panel stayed on "preparing…" for the whole import and after it had finished, and reloading the page left it there. it now follows the import as it runs, and once it finishes shows what the import wrote, with links to browse what was imported or import another source.

journal 2.0.7

september 15, 2026

Added

  • journal doctor now reports when a linked device cannot sync a recent day because that day in your journal cannot be read, naming the day and linked device. the device can appear offline; until this release, the journal kept no note of why.

Changed

  • an entity now opens with its 50 most recent moments and tells you when older ones are available. choose show all to load the rest.

Fixed

  • transfers to a journal you have already paired with are no longer refused just because recordings from one source on different days share the same start time and length. two recordings from one source on the same day with the same start time and length are still refused, and the message names the day.
  • moving recordings and pictures to your backup, and restoring them, now handles the same cross-day case.

journal 2.0.6

september 15, 2026

Added

  • journal health now shows how many segments are still waiting to have their audio transcribed or pictures described, instead of only reporting once everything is caught up.

Changed

  • the agent-connection permissions announced in 2.0.5 are not available yet. this release does not turn them on.
  • daily processing now waits until each part of the day has been saved before calling the day complete, and interrupted work resumes without starting over.
  • default importance settings for screen categories now take effect during picture description, so categories set to low importance capture fewer pictures, and ignored categories are skipped while still keeping the first picture of each capture.

Fixed

  • unless you've set processing to deferred, work interrupted by a restart now resumes the next time your journal starts, instead of waiting until the next day.
  • journal doctor now identifies audio that cannot be transcribed, instead of leaving it in a retry loop that cannot succeed.
  • reprocessing a past day no longer says the work is queued when no model is chosen, or when this copy of the journal is following another machine.

journal 2.0.5

september 14, 2026

Added

  • agent connections now have read-only permissions you can set, review, or clear before they search or fetch from your journal. each connection sees only the tools its current permission allows.

Fixed

  • pictures from your screen no longer stall before description when the journal runs with detailed diagnostics. journal health now also recognizes pictures that were already handled another way instead of leaving them marked as waiting.
  • when a connected device asks for too many things at once, journal doctor now identifies the connection and explains that it stayed up.

journal 2.0.4

september 13, 2026

Changed

  • encrypted backup setup now gets restic from updates.solstone.app instead of github.

Fixed

  • details your journal remembers about people could be updated without the passages behind them. those source passages now take priority, and a malformed memory entry stops the whole update before anyone's memory is partly changed.
  • support reports opened from an error now keep the page, error code, and recent error text from that failure, even if you move elsewhere before sending.
  • long or structured text sent to a local model now gets progressively shorter working copies if the model still says it is too large, instead of stopping after the first size error.

journal 2.0.3

september 12, 2026

Fixed

  • on apple silicon, local transcription no longer gets turned away because available-memory readings dip below a fixed threshold.
  • journal health no longer reports false long gaps or places activity in the wrong hour when your local clock differs from utc.

journal 2.0.1

september 11, 2026

Added

  • you can now install a local model from thinking in your journal, see download progress, cancel setup, and choose it once installed. interrupted setup offers a retry, and a failed check no longer says your computer is unsupported.

Changed

  • "report this" and the support page now let you review a report in your journal, edit its recent error lines, and continue to the support website. the journal's built-in support agent and ticket controls are gone.

Fixed

  • generated text now replaces its previous version in one step, avoiding a partly written entry in your journal. a failed save no longer appears first as completed work.
  • when a model returns structured results in the wrong format or cuts them short, the journal tries once more before stopping.
  • on linux, text that is too long for a local model now gets a shorter working copy instead of stopping immediately. the original journal text stays intact, and work that still cannot fit reports why.
  • on apple silicon macs, local transcription can start when there is enough memory. the journal had treated the memory check as unavailable. transcription also follows your saved choice of where it runs.

journal 2.0.0

september 10, 2026

Changed

  • the journal-access command is now solstone only. sol as a command name is gone, with no alias: a script, cron job, or muscle memory that still types sol needs to type solstone instead. journal is unchanged: it is still the journal's own command, separate from day-to-day journal access. solstone call <app> <verb> is the form that used to be sol call. the solstone app on your devices is unchanged by this rename.
  • chat is gone. you have a working chat today. this upgrade takes it away. the chat bar in your journal, the chat page, and solstone chat are gone. on iphone, the ask bar on the day home is gone too, and nothing takes its place. that screen is your day.
  • chats you already have in your journal stay on your disk, untouched. they are no longer shown, and they no longer come up in search.
  • solstone is a personal memory platform. to ask questions of your journal, use your own agent, or the command line.
  • filing support through the chat bar is gone. compose, review, and send now happen on the support page. the review card shows every field and every diagnostic value before anything leaves your machine.
  • chat requests to your phone are paused, not gone.
  • the timeline view is gone. your journal no longer picks a headline event out of every five-minute slice, or picks the few events it judged most important to stand for a day, a month, or a year. the timeline entries it already wrote stay on your disk, untouched, and nothing reads them. a link that used to open a day in the timeline opens it in the transcripts view now.

journal 1.0.22

august 1, 2026

Changed

  • turning on confidential processing finishes on its own now. once you finish turning it on in your browser, your journal runs its check and shows "confidential processing is ready" when it passes, instead of stopping short until you press check again. that button is still there, and a setup that needs repair, or one still in progress, is left alone.
  • your journal no longer gets you a Gemini key. that option is gone from the thinking app and from the command line. the scout program itself is still running. a Gemini key already saved in your journal keeps working, untouched, with nothing to re-enter and nothing to reconfigure. choosing Gemini and adding your own Google AI Studio key is unchanged: same field, same models, same check that the key works.
  • pairing your browser with your journal, and sending pages to it that way, is gone. sol in the browser is on hold for now. pages already in your journal stay exactly as they are, searchable and readable.
  • on an Intel mac, the journal now says plainly that Apple Silicon is what it needs on a mac, and points you at where it does run: an Apple Silicon mac, or supported linux.

Fixed

  • your journal turns away malformed device authorization it used to let through. an entry in its list of authorized devices could be damaged in a way that still read as a valid certificate. separately, a device whose pairing was stored as empty could skip the check that ties it to that list. both are refused now, before anything gets in. neither shape is one your journal writes, so a device you paired the ordinary way authorizes as it always has. if a device does stop authorizing after this update, pair it again.

journal 1.0.21

august 1, 2026

Changed

  • adding a device by hand is gone. the page in your journal that lists your devices no longer offers it, and the request behind it now refuses. pairing is how a device joins your journal.
  • sol export --to <url> --key <key> is retired. it refuses now and points at the paired form instead. sol export --to <label>, sending to a journal you have already paired with, is unchanged and works as it always has.
  • the part of your journal that carries the private network is now native Rust in place of Python. your paired devices reach your journal exactly as before, over the same private network, with nothing to re-pair and nothing to set up. it runs as a single program that starts and stops with your journal, with no Python in between.
  • two devices with the same name are told apart now. a second device calling itself "iPhone" is listed as "iPhone (2)" rather than reading the same as the first. on a journal that already holds two devices sharing a name, one of them takes its number on its own the first time the journal starts after this upgrade, so a device whose name reads differently afterwards is that, not a fault. the name you give a device is the name that shows, and the name a device proposed for itself at pairing is noted separately.

Fixed

  • unpairing a device by name could take away the wrong device's access. when two of your devices shared a name, unpairing by that name acted on whichever one it found first. separately, a device that was reinstalled and paired again would revoke the older entry with the same name on its own, whether or not it was the same device. unpairing by name now only proceeds when the name points at exactly one device, and when it does not, it lists each candidate with the date it was paired and the exact command for the one you mean. pairing again revokes nothing, and an entry you no longer want stays until you remove it.
  • speaker analysis works on your audio again. on the last two releases every clip was turned away at that step as invalid, so nothing was analyzed for who was speaking.
  • a local model that has finished starting is left running. a model server that had loaded and was answering could be stopped about a minute later, because the check for whether there was room to start one was re-run against memory the model itself was now holding. it would start again and be stopped again, so a day's work could never finish and a backlog could sit still. that check now only decides whether to start a model, never whether to stop one that is already serving.
  • an import you open while it is still working now says it is running. the import history listed it correctly, but opening that same import showed it as failed until it finished — on every file type, and most noticeable on longer imports. the page now also keeps up on its own while the import runs, instead of waiting for a reload. reported and fixed by ha-ye.

journal 1.0.20

july 30, 2026

Added

  • journal reprocess <start> --through <end> --from-scratch --yes redoes a range of days rather than one at a time. days queue oldest first and run one at a time, so a long range can take hours and the current day waits until it finishes. journal top and journal health show where it is.

Changed

  • importing from Granola is gone. Granola removed the local file access this import read from, and every remaining route to that data needs a paid Granola plan and a network call, which this import never made. a scheduled Granola sync goes with it, so nothing is left retrying every hour. Granola transcripts already in your journal stay exactly as they are, searchable and readable.

Fixed

  • an upload your journal turns away now leaves a trace. something can arrive carrying a key your journal does not know, or one that has since been withdrawn, and it is refused. until now that left no sign anywhere: no way to see it had happened, or how often. a refusal is now noted while it is going on, and again once it stops, with how many were turned away.
  • what sol takes in on a paired device reaches your journal byte-for-byte. a read over the link could add two stray bytes to the front of a file while still reporting that the transfer finished.
  • a day that stalled on a local model moves again. work could be handed to a model that was still loading and fail there, and in chat a reply that was still being written could be ended with an error while the answer arrived moments later. queued work now waits for the models it needs to finish starting instead of waiting on a timer, and a reply still being written is no longer read as a stopped one. when a day is held back for a retry, process now says so instead of reporting it queued.
  • a model that declines a piece of work no longer has its refusal kept as the answer. text along the lines of "I cannot view images" could be written into your journal as a screen description, or come back in chat as a reply. that now ends with a stated reason and nothing written, and a model that keeps declining the same frame is no longer asked over and over.
  • an import started while another one is running now waits its turn. it used to report that it started and then never run, and the file it came from could not be started again afterwards. an import that failed or never ran can now be started again, and a start that cannot be handed off to run says so instead of reporting success.

journal 1.0.19

july 29, 2026

Added

  • the entities overview in your journal now shows what each entity is, read from that entity's own record and never guessed from its name. an entity with no type of its own still appears in the list with everything else about it unchanged.

Changed

  • speaker analysis now uses the native helper only. if the helper is missing, damaged, or returns invalid data, journal startup and transcription fail loudly instead of falling back to the old python speaker path.
  • new transcript headers name solstone-core-speakers-analyze-v1 as the speaker-analysis producer whenever the helper actually ran, including when it declines speaker labels. transcripts with no speech-bearing statements still omit the field because no speaker-analysis producer touched them.
  • long audio no longer quietly changes engines. with confidential processing turned on, audio longer than the confidential service accepts used to be handed to the built-in local engine instead. it now stops with a stated reason and the audio is kept as it is, so nothing gets processed somewhere you didn't choose.

Fixed

  • what sol takes in on your paired devices keeps reaching your journal. an unsteady connection could leave a transfer stalled and holding one of the journal's slots for incoming work indefinitely. enough of those and nothing arrived at all, with no error, and with pairing, the connection, and the device's last-seen time all still reading healthy until the journal was restarted. stalled transfers are now bounded and cleared, everyday arrivals have room reserved for them so long streams can't take every slot, and a stall that does happen is logged with how long it waited.
  • a day sol is thinking through no longer stalls on unusual text. a stray half of an emoji, or another unpaired character, could stop the request while it was still being built on your machine, and the failure was reported against the endpoint, which never received it. that text is repaired before the request is built now, and text that was already valid is unchanged.

journal 1.0.18

july 28, 2026

Added

  • sol link join and sol link serve are now native commands, like sol and solstone before them. same commands, same pairing, and no python on any path they own.

Changed

  • journal link is gone. listing paired devices, checking a device's status, unpairing one, and seeing what's authorized now live in the network app in your journal, with no command-line equivalent. anything built on journal link needs the network app instead.
  • the base install is thinner. pip install solstone no longer brings along the compiled cryptography and websocket libraries only the journal needs; they install with solstone-journal and solstone-journal-cuda, so a journal install is unchanged and pairing works the same way. anything that relied on those libraries being present in a base install needs a journal package now.

Fixed

  • installing the Apple Silicon solstone-core wheel no longer leaves its signing facts as a stray file in site-packages. the signing evidence stays in the release rail instead of the installed package.
  • sol thinks through your days more reliably. a run through a local model, confidential processing, or an endpoint you bring could be refused for being too long: the length sol measured before sending came out under what the model itself counted, so sol now leaves room for the difference. a run could also stall on sol retrying a command in a form your journal doesn't accept; sol now gets the working form back instead.
  • the voice evidence in your journal stays with the voice it came from. when your journal grouped a conversation's voices again and came out with a different number of them, statements could shift onto a different voice, either one it was still learning or a person you had already named. a voice now carries the statements it was built from, so this can no longer happen. entries from before this release that carry none are skipped rather than guessed at, and a maintenance pass recovers the ones it can.
  • a day's record of sol's thinking is no longer cleared before its time. those records were aged by the date in their filename while the runs inside them could be from the last day, so a recent one could be removed early. a record is now kept unless everything in it is genuinely past the cutoff, and one that can't be read is kept rather than discarded.
  • the apps in your journal read and behave better. faint text in the health logs, in empty-state messages, and on the body app's main button now has enough contrast to read; the charts in stats no longer overlap their own labels or push the page sideways on a phone; and tokens shows the day you're looking at, where an earlier day used to show today's numbers. Tab stays inside an open dialog instead of jumping out to the browser, the network app's pair dialog closes when you click outside it, and closing a dialog no longer leaves part of the page behind it unresponsive.

journal 1.0.17

july 26, 2026

Fixed

  • setting up your journal now finishes cleanly. two of its own steps were failing on every run, so setup reported a problem at the end even when your journal was fine, and on a Mac a brand new install could sit waiting at the last step and never finish.

journal 1.0.16

july 25, 2026

Fixed

  • pairing a device with your journal over your own network now completes. attempts your journal had already authorized were reaching the device as a failure, often reading there as a pairing code that had expired. every attempt that failed this way still left an authorized device behind, so open the network app and remove any unnamed devices you don't recognize.
  • sol link join now reads a pasted pair link in full before it connects to anything. an address in the link that sits outside your own network refuses the whole link rather than being skipped, the identity of the journal you're joining is confirmed from the connection itself before the request goes out, and each run makes exactly one pairing request. a run that fails partway no longer leaves a half-written credentials folder behind.
  • if you use Google as your AI provider, sol can think about your days. Google was refusing nearly every request sol sent about a day, so your days were taken into your journal and never thought through, while your journal's health still reported that sol could think.
  • home now tells you when a day in your journal is stuck, or when it can't tell whether your journal is caught up. before, home could still show as healthy in both cases.
  • on a Mac, doctor no longer warns that your sol and journal commands were installed by something else and asks you to run journal setup. every install done by the macOS app got that warning, and running setup would have replaced a working launcher.

journal 1.0.15

july 25, 2026

Fixed

  • installing with uv tool install solstone now puts the sol and solstone commands on your path. the 1.0.14 install could finish without them.

Changed

  • the main package now owns the public sol and solstone commands, and the native package owns the compiled program they run.

journal 1.0.14

july 24, 2026

Added

  • sol and solstone are now native commands on supported Linux and Apple Silicon Mac systems, with the same Python compatibility commands still available while the final porting work finishes.
  • unsupported platforms now stop during installation with a clear message instead of installing without a working sol.

Changed

  • the native command package now owns sol, solstone, and solstone-core, so installs have one deterministic owner for each executable.

journal 1.0.13

july 24, 2026

Added

  • the sol command can now turn confidential processing on, check its verification again, turn it off, and show where setup stands.

Changed

  • thinking through a local model, confidential processing, or an endpoint you bring now fits each request to the model's real working limit. longer prompts and image-heavy work retry once at a tighter limit instead of repeating the same failure.

Fixed

  • confidential processing now renews its verification before it expires, so a journal can stay connected across long unattended runs. if verification cannot renew, the connection stays closed before any request is sent and recovers on its own after verification succeeds again.
  • a routine confidential-processing status check now shows the operation phase without repeating its one-time setup link.
  • damaged or empty screen video now reaches a finished error state instead of leaving the whole day waiting for analysis forever.

journal 1.0.12

july 22, 2026

Added

  • every release now publishes signed evidence of exactly what shipped at transparency.solstone.app. anyone can check a release against it independently.

Changed

  • one version number for the journal everywhere now. the pip-installed journal and the native journal apps used to count releases separately; from this release they share the same version, which is why the number jumps. same journal, nothing was skipped.
  • on supported machines, the journal's index is now updated by new native code. what the index holds is unchanged, and a setting can put the previous indexer back at any time.

Fixed

  • a journal with leftover confidential processing settings, but with the built-in local model doing its thinking, could stop thinking entirely. sol now goes by where thinking actually runs, not by what's left in settings, so the built-in model keeps working. while confidential processing is on, switching providers now requires turning it off first, so a settings change can't leave the journal in that state again.
  • the same leftover settings could quietly stall transcription while everything else looked fine, leaving new audio waiting. transcription now falls back to local speech-to-text in that state. the separate safeguard that decides whether audio may leave your machine is unchanged.

journal 0.9.1

july 22, 2026

Added

  • recurring voices now open in one who-is-this sheet from home, speakers, or a transcript. it shows the evidence, searches known people before offering a new person, keeps similar names separate only after confirmation, routes your own voice to its teaching path, and lets you preview, apply, or undo corrections across matching statements. speaker identification is also more cautious when voices sound alike.
  • the journal now names which brain produced each new image description and each run of screen descriptions.

Changed

  • thinking status now agrees everywhere it appears. background checks, blank replies, and model readiness all resolve to one state with one next action.
  • sol now suggests exact Gemini models instead of moving aliases and keeps confidential processing active while saving a model for later. confidential processing sets up verification on first use and names setup or integrity problems, while a failed local-model replacement leaves the working model available.

Fixed

  • image imports now reach each brain in a format it understands, including webp with local models. markdown with accented or non-latin text keeps the same size and grouping rules as other text, and an interrupted index update no longer leaves a partial result.
  • links inside the journal on ios now open reliably instead of stalling. journal doctor now finds background launchers that keep reopening the legacy mac app, and a full index rescan explains why it found no new relationships and how to rebuild them.

journal 0.9.0

july 19, 2026

Added

  • the calendar day grid now reaches entities and news. pick a day on an entity to narrow its page to that day, and browse news one day at a time.

Changed

  • setting up a local AI model no longer loses your settings when two changes save at the same time, and the install status now reflects what's actually ready instead of showing a model as ready before it can run.
  • speaker naming is more accurate. sol is less likely to mistake another person's voice for yours, and busy conversations with many similar-sounding voices now settle to the true set of speakers for you to review and confirm.
  • on Linux, local speech-to-text now uses much less memory, so more graphics cards can run it on the GPU instead of the CPU. transcription quality is unchanged.

Fixed

  • when you send anonymous feedback, it now uses a generated handle instead of your device's name, no longer attaches diagnostic details automatically, and scrubs secrets from any error text before it's included.
  • if a local AI model stops responding, your settings now show a repair action that gets it working again in place, without restarting your whole journal.

journal 0.8.9

july 17, 2026

Added

  • journal installs now carry a native solstone-core helper on Linux x86_64, Linux aarch64, and Apple Silicon macOS. the Linux wheels are static manylinux2014 builds, and startup now checks that the helper beside your active Python belongs to the installed solstone-core package before the supervisor touches the journal. the helper is installed and checked now; the journal does not use it for work yet.
  • your journal can now keep older media in your backup instead of on disk. it's off until you turn it on: you set a media budget and a free-space floor, and when the original screen and audio files pass them, the oldest fully-processed media your backup has confirmed moves out, oldest first, with the local copy removed only after that confirmation. transcripts and everything else your journal holds stay where they are, and any offloaded day restores on demand. once media has moved, your backup holds the only copy of it: turning offload on walks through your recovery key first, offloaded media is pinned so your backup's normal rotation can't age it out, and a weekly read-back check samples the backup itself. if a backup lapses or a check fails, offload halts with nothing deleted and says so on the backup page, and turning your backup off now tells you what it holds the only copy of and offers to restore everything first.
  • timeline, search, speakers, and reflections now show your days as a calendar grid. timeline reaches back through your whole journal instead of stopping twelve months ago, search lets you drag a date range right on the grid, speakers shows which days still need names, and reflections shows which weeks have one.

Changed

  • analysis that stops partway now picks itself back up. your journal sizes its analysis work to what your model can actually serve, treats a busy endpoint as busy rather than unreachable, and re-runs a failed day on the next daily pass, paying only for the frames that failed and keeping the ones that already worked. before, the densest screen days could sit unanalyzed indefinitely, and a day that failed stayed failed until you re-ran it by hand. after three tries your journal stops and the day completes with the gap named in its health summary rather than holding the day open.

Fixed

  • a segment whose analysis had failed could still be marked finished, and the check that removes raw media once it's processed trusted that mark. the mark is now written after every stage completes, and any unresolved error holds the raw media in place. your journal keeps raw media unless you've asked for it to be removed after processing, so that setting is who this reached. it's the same mark offload reads before any media moves.
  • changing your retention settings from the backup page now saves. if you tried and got an error, this resolves it.
  • naming yourself as a speaker now works on a fresh journal. before your voice had been identified, tagging a sentence as you failed on every sentence, which left no way to seed it. when detection can't find your voice, the speakers page and the sol command now name the next step rather than stopping.
  • journal doctor now detects when the macOS app and the legacy background service both target one journal, and points to the single service removal step before other repair actions.

journal 0.8.8

july 16, 2026

Added

  • your journal now keeps pages from the solstone browser extension: what you read in the browser shows up in the timeline and transcripts, site by site, and sol's thinking works from pages along with everything else.

Changed

  • journal audio transcription now uses only the local Parakeet paths or the confidential lane; legacy Rev.ai/Gemini STT, default transcript enrichment, noisy-audio cloud upgrade, and the google-genai dependency were removed.
  • machines below the local STT memory floor now surface a local/confidential setup requirement instead of falling back to hosted Google transcription.
  • thinking now has one active brain for every task: bundled local by default, a personal OpenAI, Anthropic, or Google AI Studio key, or an owner-supplied OpenAI-compatible endpoint. legacy split lanes, tier and talent routing, Vertex support, and duplicate cloud-provider adapters have been removed.

Fixed

  • a key set for an owner-supplied thinking endpoint could appear in error details when a request failed. keys are now removed from every error, event, and trace.
  • the settings page's data included whether cloud thinking keys were set. it no longer does; thinking is the only place that holds provider configuration.
  • pointing thinking at your own compatible endpoint is more dependable: requests no longer carry local-only fields some endpoints rejected, and an endpoint that can't be reached now says so quickly instead of timing out.
  • the bundled local model now downloads at full speed on first setup; some installs saw it crawl at a fraction of their connection's speed.

journal 0.8.7

july 15, 2026

Added

  • older journals with repeated copies of the same segment can now preview and safely remove only proven duplicates, including copies filed under different start times.

Changed

  • pdf imports now handle each page separately, keep extracted text distinct from model-assisted text, and preserve a page image anywhere a model helps.
  • dated journal views now use one in-page date control, with day, month, and year zoom plus week-by-week movement for reflections.

Fixed

  • when sol sends the same moment again, your journal now reuses what it already has instead of creating extra copies.
  • text, markdown, and document imports that produce nothing now say so clearly and can be retried without a false "already imported" result.
  • private-network errors now stay contained, so one failed request no longer drops the whole link or forces repeat pairing.

journal 0.8.6

july 14, 2026

Fixed

  • on a fresh install, checking your thinking providers now reaches every provider instead of stopping before the checks begin.

journal 0.8.5

july 14, 2026

Added

  • confidential processing can now be enabled from the thinking app and includes a separate audio transcription switch. when audio transcription is on, that step uses the same verified confidential connection as thinking; the rest of audio processing stays local.
  • you can now bring Apple Health exports and Oura into your journal, then explore sleep, activity, heart, recovery, and other signals by day or across trends. your raw-retention choice is enforced when the import is saved, saved health material has owner-only file access, and its summary cards stay out of sol's thinking.
  • the home and entities views now show how people and organizations connect. identity changes keep a history, merges can be undone, and an ambiguous name waits for your choice before the journal changes anything.
  • when you add a Google, Anthropic, or OpenAI key, the thinking app checks it before anything is saved. then you can choose from three model options or name a specific model, which is checked before it becomes sol's active brain.

Changed

  • sol now uses one brain chosen in the thinking app for each lane and no longer ranks or switches engines behind the scenes. older tier, routing, and fallback settings remain untouched but no longer steer model choice. if you bring a paid vendor key, some frequent work may cost more because it now uses the model you chose.

Fixed

  • long hosted backups and restores no longer lose access partway through. each job now uses narrowly scoped access that lasts for the operation, while older snapshots remain append-only.

journal 0.8.4

july 12, 2026

Added

  • when solstone suggests merging duplicate people or companies in your journal, you can now review several of those suggestions at once. select a batch and accept or dismiss them together instead of one by one; if some can't be merged, the rest still go through and the ones that need attention stay listed.

Changed

  • sol's chat replies now display formatting properly, so lists, emphasis, and code render instead of showing as raw text, and long code blocks stay contained inside the reply rather than stretching it wider. when you ask sol about your own life or history, it also now checks your journal by default instead of answering from general knowledge, while everyday conversation like greetings and follow-ups still answers directly.
  • setting up local thinking now shows live progress while the model downloads and installs, picks up where it left off if you reload the page, and shows a clear error with a retry if an install doesn't finish.

Fixed

  • the words in your transcripts are never meant to appear in solstone's internal error reports. we closed a gap where a failed transcription could put a short fragment of that text into one, and made the guarantee structural: those reports now carry only the kind of error, never any of your content.
  • local thinking and transcription handle their limits more honestly now. when a request is too long for the local model or your machine is busy, sol says so in plain words instead of showing a raw code; when local transcription can't finish a clip, sol keeps the audio and retries next time instead of quietly treating it as finished; and truncated local runs no longer leave partial results in your journal.

journal 0.8.3

july 10, 2026

Added

  • the journal now builds a rebuildable relationship layer from evidence already in your journal. it connects people, projects, decisions, and documents without invented links.

Changed

  • setup and thinking settings now separate the three ways for sol to think: local on this machine, confidential processing, or an engine you bring yourself. on capable machines, local setup starts in the background; when no engine is chosen, sol says so plainly instead of choosing one silently.

Fixed

  • local thinking on your own machine is steadier under busy stretches and backlogs. sol now keeps repeat loops from taking over a run, waits out brief overload, and avoids starting more work than the local engine can handle.
  • on machines where local model work shares system memory, sol now waits for memory to free up before starting heavy work, instead of launching into out-of-memory failures.
  • speaker review can get through the first speaker setup on fresh or migrated journals. it finds a starting voice sample quickly, plays audio from mac journals, and offers your own name when the journal is new.

journal 0.8.2

july 7, 2026

Added

  • sol now notices calendar and scheduling moments and files them as their own category in your journal, so appointments and plans are easier to find.

Fixed

  • the screen and combined-transcript tabs no longer go blank when a moment comes through in an unexpected shape. if you'd seen either tab empty out, this resolves it.
  • the home page no longer shows the same thing to do twice across its "needs you" and "needs attention" lists.
  • adding an alternate name to a person or company no longer trips a false "name already in use" warning against that same person or company. real conflicts between different ones still flag.
  • local thinking on your own machine is more reliable. sol now uses the right runtime for your hardware instead of quietly falling back to cpu, and local requests that use time-like patterns no longer fail before the model starts.
  • on linux, sol check no longer reports "no usable gpu" when the gpu is present but the current user lacks permission to reach it. it now flags this as a permission problem you can fix instead of a wrong "no gpu" verdict.

journal 0.8.1

july 7, 2026

Added

  • sol check (also journal check) gives a one-shot readiness verdict for whether this computer can run the journal with the bundled local models — a zero-install pre-flight you can run with uvx solstone check, human-readable by default or --json for agents.

Fixed

  • sol-only installs now render provider readiness in sol call health summary without importing journal-only model setup code.

journal 0.8.0

july 7, 2026

Added

  • journal search now starts with exact matches for agent calls and returns an honest zero when nothing matches, so agents can broaden their own query instead of getting silent near-misses.
  • sol can now add local media, social, and ambient-sound hints to material already kept in your journal, using local model installs that stay on your machine.
  • the journal can prepare and verify local vision and audio helper models from settings, including host-fit checks before a download starts.

Changed

  • journal screens now stay in one app frame, so moving between home, health, settings, search, transcripts, and the other screens is faster and steadier.
  • media and social classification now use one shared prompt, so the same moment is described more consistently across install paths.

Fixed

  • search totals and segment details are now de-duplicated, so agent and journal search results no longer over-count the same stretch of the day.
  • settings pages no longer flash or blank when switching views in the new app frame.

journal 0.7.0

july 5, 2026

Added

  • sol doctor and journal doctor now check that the installed packages fit together, and name the exact fix when they don't. the checks read only what's installed locally, nothing goes over the network.
  • the journal command now refuses to start when an upgrade left packages out of step, and prints the fix command instead of running with mismatched pieces.

Changed

  • the journal is now its own package: install solstone-journal (or solstone-journal-cuda for NVIDIA GPUs) and sol comes included. bare solstone still installs just sol.
  • the old install spellings (solstone[journal], solstone[journal-cuda], and solstone-journal-host) are retired. they now stop at install time with a message pointing at the new packages, instead of quietly producing an install missing the journal command.
  • a sol-only install is much smaller: the speech models that used to ship inside every install now come with the journal, so a plain solstone install (and uvx solstone one-shots) drops from about 34 MB to about 3 MB, and journal upgrades no longer re-download models that haven't changed.

migrating from an earlier version

if you already have solstone installed, run the one line that matches how you installed it:

`

pip uninstall solstone-journal-host && pip install solstone-journal

pipx uninstall solstone && pipx install solstone-journal && pipx install solstone

uv tool uninstall solstone && uv tool install solstone-journal && uv tool install solstone

`

journal 0.6.24

july 4, 2026

Fixed

  • if screen processing fell a few days behind, sol now catches up instead of stalling. it used to chip away at a backlog in one short nightly window, one piece at a time, so a pile could sit for days; sol now works through more at once and keeps going until the backlog clears.
  • a stretch of the day still being processed is no longer mistaken for an empty one. sol used to sometimes mark that stretch done too soon, so what was on your screen never made it into the day's summary; it now waits and comes back, so the summary in your journal reflects the full day.

journal 0.6.23

july 4, 2026

Added

  • a browser observer can now sync to your journal even when the journal runs on a different machine. it reaches your home over the private relay and seals what it sends end to end, so the relay only moves the bytes and can't read them.

Changed

  • the journal's own screens and the customer-facing docs now follow the sol naming model: sol lives on your devices and keeps everything in your journal.

Fixed

  • sol reports its own health and a day's processing truthfully. status and health views now show a real state instead of an optimistic guess, a day where every image read failed is marked done-until-you-redo instead of looking stuck, and work that already retried and finished is no longer counted as a problem.
  • your journal holds onto your data more safely. a single corrupt reading no longer aborts the whole day, imported data is checked against its fingerprint before it's trusted, a segment copy either finishes or leaves nothing half-written, backups keep the health record they used to drop, and older media is only cleared once sol can confirm the results derived from it are safely stored.
  • hardened the journal's local connections. the local web surface now turns away requests from unexpected sites, audio and segment files are only served from inside your journal, and searching with an apostrophe no longer errors out.

journal 0.6.22

july 3, 2026

Added

  • you can now pair a device to your journal over a Tailscale network, not only a shared wi-fi. if your phone and your journal are on the same Tailscale network but different wi-fi, that direct connection now works for pairing.

Fixed

  • sol's summary of a day's processing now reflects what actually happened. the 'yesterday's processing' view used to flag problems on nearly every normal day, counting work that had already retried and finished, or that belonged to a different day, and cutting long lists short. it now shows only what genuinely didn't finish for that day, grouped by name with an honest count.
  • sol gets through a full day's processing more reliably. scheduled work that didn't run at its set time is now retried instead of waiting out a full cycle, the switch to a new day at midnight no longer gets stuck, and if one step runs into trouble sol keeps going with the rest instead of stalling. work that sol used to occasionally lose track of now either finishes or is recorded as a clear failure.

journal 0.6.21

july 2, 2026

Changed

  • on linux, sol now uses a single local engine to turn your speech into text. it runs entirely on your own machine, and your audio never leaves it.
  • the first time that engine runs, it downloads the model files it needs to work, the same as the previous engine did. that download only brings files in; nothing from your journal goes out.

journal 0.6.20

july 1, 2026

Added

  • on linux, you can now opt into an alternative local transcription engine. the default engine is unchanged.

Changed

  • sol now does less repeated work on the video and on-screen activity it takes in. it skips near-identical moments while keeping the ones where something on screen changed, so nothing that changed gets missed.

Fixed

  • catching up on past days is steadier. sol re-does only the parts of a day that didn't finish rather than walking the whole day from the start, and it skips audio it has already turned into text.
  • if one audio file in your day couldn't be read, it used to be able to stop the rest of the day from being transcribed. now sol sets that one file aside and keeps going, so the rest of your day still becomes text in your journal.

journal 0.6.19

july 1, 2026

Fixed

  • a stretch of your day with nothing for sol to think about, like a quiet passage with no speech or one where your phone only had your location, used to keep the day from finishing. sol would keep re-trying that stretch and never mark the day done. now sol recognizes there's nothing there to read, marks that stretch done, and moves on, so the day completes.
  • if one step sol runs on a stretch of your day kept failing, it could hold the whole day open, re-attempted each time solstone caught up and never finishing. now sol sets a step aside after it fails enough times in a row, so the day completes, and leaves it there to try again later. your transcript and media stay in your journal the whole time.
  • asking sol to re-process part of a day is steadier now. it used to be able to get wedged partway and not restart, and now it recovers. and if an earlier version already left days stuck this way, running journal backfill-processing-records clears them so they can finish, previewing the change before you apply it.

journal 0.6.18

june 30, 2026

Added

  • you can now pair a device to your journal over your private network from the command line, even when that device isn't on the same local network as your home. your home opens a brief pairing window directly to do it, instead of relying on a short code that kept rotating, so it's more reliable and there's no shared code sitting anywhere in between. if the window isn't ready yet, pairing waits for it and tells you plainly when it's unavailable, rather than failing with a confusing error.

Fixed

  • your private network's status now stays honest while it's running. it used to be able to read as connected while the link that reaches your journal from afar was actually failing. now it tells those apart, recovers on its own when the link goes stale, and never puts access tokens or connection secrets into its status or logs.
  • a local command that talks to your journal no longer waits forever if the journal stops responding. it now stops after a set wait and tells you "the journal didn't answer in time," instead of hanging.
  • status about finishing up your days is honest now too. when sol re-processes part of a day or re-analyzes a transcript, a step that had only started, or hadn't been verified, used to be able to read as done. your health could even read as well while it hadn't. anything that hasn't truly finished and produced a result now shows as still running or as a clear error, and a day that didn't finish re-processing no longer reads as fully caught up.
  • catching up on your days is steadier when something goes wrong. if sol gets stuck finishing one day, solstone now keeps working through the rest of your days instead of letting that one hold everything up, and a single stalled step can no longer tie up sol's daily work.

journal 0.6.17

june 29, 2026

Added

  • you can now begin pairing over your private network without waiting for the whole pairing to finish first. start it and carry on while it completes.

Changed

  • your home screen now shows your solstone's health as a single honest verdict. it rolls every signal into one line, always reflects the most serious thing happening, and never reads "everything's working" while something is failing or can't be checked. anything it flags is now a link you can follow to learn more or fix it, and it will tell you if sol has no working way to think. day-to-day activity counts moved off the glance so it stays focused on what needs your attention.

Fixed

  • deleting a location source now also removes location data that was bundled inside mixed mobile observations, where it used to be left behind.
  • if an observer was running but its observations were silently never reaching your journal, solstone used to show it as fine, unknown, or stale. that state now shows up clearly wherever you check on solstone, in red, with what went wrong and how to recover.
  • observations from a terminal or screen-only observer, which have no separate media to send, were being turned away and set aside. they're now accepted into your journal.
  • when turning on your private network runs into a problem, you now get the specific reason and what to do about it, instead of one generic error message.

journal 0.6.16

june 28, 2026

Added

  • setting up solstone now gives your journal its own identity. you'll see your journal's mark, a small visual of two icons and two words derived from your journal's own key, and you can regenerate it until you like the one you get, then lock it in. your journal id comes from that same key, so it's unique to your journal and the same wherever it appears. after setup, your mark and journal id also stay visible where your devices connect to your journal.

Changed

  • if you run solstone fully on your own device, sol's local work, like summarizing your day and your weekly reflection, now stays on your device as intended even when no cloud key is set up. before, some of it could stop with a setup error. this keeps more of sol's work on your device.
  • re-registering an observer after a restart or reinstall no longer creates a duplicate entry; it reuses the one already there. a new observer reconcile command also collapses any duplicate observer entries you already have.

Fixed

  • re-pairing a device after a reinstall or restore used to leave its previous credential active, so old credentials could accumulate over time. re-pairing now retires the credential it replaces, leaving one current credential per device.
  • a chat reply that took too long to finish could later appear as the answer to a different message. that no longer happens. a reply that times out is now closed out cleanly and can't carry into your next message.
  • when sol prepared a message to solstone support for you to review, it could be described as a failure to reach support even though the draft was ready. the wording now matches what happened: your draft is prepared for you to review and send.

journal 0.6.15

june 26, 2026

Added

  • you can now give any facet its own icon. open a facet's appearance settings, search the icon set, see each option in your facet's color, and apply the one you want. your emoji stays the default, so you can switch back to it anytime.

Changed

  • the menu in your journal's web app and your facets now show clean, consistent icons. each facet's icon comes from its emoji by default; the icons are simply a crisper way to render it.
  • for new owners, the welcome now sets a more accurate expectation: sol's insight starts to feel useful after about a week, not the third or fourth week.

journal 0.6.14

june 25, 2026

Added

  • pairing a new device to your journal now matches how you're pairing it. pick phone, computer, or glasses, and solstone shows the right hand-off for each: a large QR code for glasses to point at, a copy-to-clipboard link for a computer, and the usual flow for a phone. and when your journal can be reached more than one way, you can pick which to use.
  • solstone can now tidy up its own behind-the-scenes logs and caches on a schedule, so they don't pile up over time. in your storage settings there's a cleanup that removes only these dated housekeeping files (health logs, run logs, and similar caches) once they age out, on by default at 30 days. it never touches what sol has taken in or anything in your memories, only solstone's own bookkeeping. you can preview exactly what a cleanup would remove before anything is deleted, and run it by hand anytime.

Changed

  • your journal's web app is easier to read. text that used to sit on bright facet-colored fills (a selected facet, your chat bubble, the active settings tab) now has stronger contrast, the app matches sol pbc's current look, and a spot where the home screen could get clipped on a narrow window is fixed.
  • sol now scopes each lookup in your journal to just the part it needs, rather than reaching across the whole journal at once. this keeps what sol reads tightly scoped, and keeps sol quick to respond even when your journal has grown large.

Fixed

  • a piece of work sol finished could show as failed even though it completed and saved its result. that's resolved; each run now reflects its true outcome.
  • when a single activity spanned several facets, each of those facets' history could end up showing the same description copied from one of them. each facet now keeps its own accurate activity history.

journal 0.6.13

june 24, 2026

Changed

  • importing the same thing twice no longer doubles it up in your journal. when you import a file or paste text, whether from the web import page or sol import, solstone now recognizes content it has already taken in and skips it instead of creating a second copy. re-running an import that got interrupted picks up where it left off rather than starting over.
  • imported items now get the right date straight from the file when solstone can tell. for filenames that already carry a full timestamp, exports from tools that stamp their own times, and media that carries the time it was taken, solstone reads the date directly instead of asking a model to guess it. anything ambiguous still falls back to a best guess as before.

journal 0.6.12

june 23, 2026

Added

  • a new way to run sol on a box that can't keep up with heavy local analysis in real time. pick "deferred" in your processing settings and solstone takes in your day exactly as before, in real time, nothing dropped, while the heavier analysis waits and runs in a window you choose (overnight by default) or while your display is asleep. your journal's health view shows how many segments are waiting and when they last caught up. built for owners running sol on their own hardware, like a single GPU, who want to observe all day and let the deep work happen while the machine is idle.
  • while you're in deferred mode, if you ask sol about today and the answer would come up empty, sol now tells you it has taken your day in but hasn't analyzed it yet and will during your chosen window, instead of just coming back with nothing.

Changed

  • your journal's activity records read cleaner. a single moment used to spawn several near-duplicate entries that all shared one summary, including minor ones that didn't warrant their own; now only the ones worth their own entry get one, each described in its own words. existing records are untouched.

Fixed

  • running sol on a local model no longer stalls or comes back empty on a dense, busy day. on constrained hardware a packed day could overflow the local model and produce nothing for that stretch with an opaque error; the local model now sizes itself to your graphics card and fits each request to what it can hold, so a long day finishes cleanly. surfaced by an owner running this on an AMD card.
  • the row of active-work dots next to the chat bar reflects what's actually running again. it had been collecting grey "finished" dots and replaying them every time you reloaded or restarted; now it shows only work in flight and clears each item as it finishes.

journal 0.6.11

june 23, 2026

Changed

  • a plain solstone install now carries only the thin client commands, sol and solstone. it no longer puts journal-host commands on your PATH. the journal and mlx-vlm-server host commands now come with solstone[journal] or solstone[journal-cuda], through the new solstone-journal-host package. with uv tool, install with uv tool install --with-executables-from solstone-journal-host 'solstone[journal]'; with pipx, use pipx install --include-deps 'solstone[journal]'; with pip, pip install 'solstone[journal]' exposes them on its own.
  • a couple of settings rough edges are smoothed. naming sol in the sol identity section now commits the name you typed when you press Enter, instead of quietly resetting it to "sol," and a quiet notification in the status-icon list now opens to its full text instead of clipping to a one-line snippet you couldn't expand.
  • a day waiting on a local model that's still loading or installing now reads "try again" rather than "a setting's missing," so the days-that-need-a-hand list points you at the right next step.

Fixed

  • observer uploads are being saved to your journal again. on a 0.6.10 install, everything your observers took in returned an error and nothing new landed in your journal; this restores it. if you upgraded to 0.6.10, please install this update.
  • on a Mac, your local "how sol thinks" choice sticks. on Apple Silicon it could silently fall back to "no provider chosen" even with a working on-device model; it now reads the actual model state on your Mac. linux is unchanged.
  • a partial journal-host install now tells you what to do instead of looping. if the host pieces aren't fully in place, setup stops with reinstall guidance up front rather than starting and failing over and over.

journal 0.6.10

june 22, 2026

Changed

  • the feature that connects all your devices to your journal is now called your private network, in the labels, the setup screens, and the toggle. it's the same encrypted connection among your devices it has always been, just named for what it does. you'll see "your private network" where it used to say "private link."
  • the journal backup feature is now called encrypted backup, and its setup copy reads the same way: only you can read your backup, not even sol pbc. nothing about how it works changed, just the name and the wording.
  • your health page now reads "all data stored locally on your device" wherever it shows where your journal lives, and notifications now show as built in rather than coming later. the trust details didn't change, the wording is just clearer and current.

Fixed

  • the "minimum requirements" help link now opens a live page. if you're on linux without a supported gpu, the link shown when local models can't run pointed at a page that no longer existed; it now goes to the right support article so you can see what you need.

journal 0.6.9

june 19, 2026

Fixed

  • the error view on your health page now opens the way you'd expect. the "errors today" count jumps you to recent errors every time you click it, not just the first time, and each error row opens in place to show the full plain-language message (and the technical detail when there is one). before, some rows wouldn't open at all. the "api keys" link in settings also now jumps you to the right section on a repeat click.

journal 0.6.8

june 18, 2026

Added

  • you can now import a single image, and sol describes what's in it and adds the entry to your journal. drop in a png, jpeg, webp, gif, or tiff from the web interface or the command line, the same way you import a recording.

Changed

  • chatting with sol no longer makes you wait. when sol kicks off a longer piece of work from a chat, it tells you what it's doing right away and keeps the conversation open, then folds the answer back in once it's ready. the chat shows how many jobs sol has running so you can keep going in the meantime.

Fixed

  • settings now save again. for the past several days, changes you made in settings would quietly revert on reload, with no save button and no error to tell you why. this resolves the underlying cause, so every section saves and sticks.
  • finishing the private link setup no longer looks unfinished. when you turned link on and paired a device, a leftover "continue to approve" prompt could linger next to the success message, and the pairing screen could show the wrong text and a code that didn't refresh. the screen now reflects what's actually happening.
  • on linux, installing solstone with gpu support no longer fails partway through. some installs pulled a graphics runtime that didn't match the rest of the install, so transcription couldn't load. the install now keeps the pieces in step.
  • previewing an import no longer imports it for real. on the command-line importer, asking for a preview while also passing the save flag would import the media live instead of just showing you what it found. a preview now always wins, so you can look before you commit.

journal 0.6.7

june 18, 2026

Changed

  • stretches where nothing on your screen changes (a long overnight, a static window left open) now fold into a single continuation entry in your journal instead of many near-identical ones. sol skips re-describing what hasn't moved, so those stretches process faster and your journal reads cleaner.

Fixed

  • imported recordings now get their own activity record. before, an imported meeting that ran as one continuous stretch could finish without an activity record for it; now it gets one like everything else.
  • scheduled tasks that had quietly stopped running now run again on their own, with no action needed from you. an earlier change to how commands are named had left some saved schedules pointing at a form that no longer worked, and this repairs them.
  • a settings change you made could be lost if another change landed at the same moment. settings now save one at a time, so concurrent edits all stick.
  • your weekly reflection now completes and writes its summary reliably. before, it could spend its whole time budget looking in the wrong place and finish with nothing; it now reads from the right source and lands every time.

journal 0.6.5

june 17, 2026

Added

  • you can mark a single day to be processed again with journal reprocess DAY --mark-updated. it re-queues that day even if it already finished, so you can pick up a day that needs another pass without re-running everything.

Changed

  • when sol files something with solstone support on your behalf, you now see and confirm the exact message before it leaves your machine. sol drafts the report, your journal shows you the full contents plus the diagnostic details that would be attached, and nothing is sent until you press send. sol has no path to send on its own; pressing send is the only way anything reaches support, and you can cancel instead and nothing leaves.
  • the local web interface no longer has its own password, login page, session cookie, or localhost-trust switch. once setup is complete, the local interface serves directly on the journal machine; linked devices continue to use their paired-device identity through link.
  • the connection-and-health indicator now shows the sol ring, with the ring itself carrying live status: whether your journal is reachable, whether observing is healthy, and whether a quiet notification is waiting. it updates continuously while the page is open.

Fixed

  • closed a window during device pairing where someone on your local network could have placed themselves in the middle of the exchange. when a new device pairs with your journal over the local network, it now cryptographically verifies it is talking to your real journal and refuses to continue if anything doesn't match. if you pair devices on shared or untrusted wi-fi, please update.
  • pairing a phone or tablet to your journal now works when the journal's machine has more than one network connection. before, the pairing code could advertise an address your other device couldn't actually reach, so the pairing would fail; it now offers every local address so your device can find one that works.
  • your journal keeps making progress even when one piece of work stalls. before, a single stuck step (transcribing a clip, thinking through a day, or a model call that never returned) could quietly freeze that part of your journal for hours or days while everything behind it waited; now every piece of work has a time limit, a stall surfaces instead of hiding, and the rest keeps flowing. re-processing a day that had no new activity also no longer loops on itself.
  • setting up a hosted service (private link or scout) from the web interface now works when your journal runs on a remote or headless machine. before, the approval step could stall at "setting up…" and never show you the link to continue; it now always gives you a one-tap link to approve.
  • installing from source on an aarch64 nvidia machine no longer fails partway through, and transcription works there. if you ran into this, this resolves it.

journal 0.6.4

june 15, 2026

Added

  • sol link serve --direct keeps a linked machine's traffic on your private link's direct path and never falls back to the relay — useful when the journal's machine is reachable on the same network, so there's no dependency on the relay.

Fixed

  • an observer on a machine you've linked to your journal can now send everything it takes in over your private link, no matter the size. before, anything larger than a small message stalled partway and never arrived, so those observers couldn't finish uploading and uploads timed out; now they go through reliably. a separate cleanup issue that could leave a stale connection behind after a reconnect is also resolved.

journal 0.6.3

june 15, 2026

Fixed

  • a machine that reaches your journal over your private link now stays connected. before, that connection would go quiet after a minute or two and not recover on its own, so observers on that machine stopped reaching your journal; it now sends a steady heartbeat to stay alive and reconnects automatically if it ever drops, so they keep streaming without interruption.

journal 0.6.2

june 15, 2026

Changed

  • an observer running on another machine you've linked now streams to your journal over your private link. each observer is identified by its own handle, kept fully separate from the machine's link identity, so the two can change independently and one never stands in for the other. observers running on the same machine as your journal are unaffected. what your observers take in, and where your journal lives, are unchanged.

journal 0.6.1

june 15, 2026

Changed

  • desktop observers now use the journal's current callosum connection path, with the observer key kept in the authorization header.

journal 0.6.0

june 14, 2026

Added

  • you can now run sol from one machine against a journal that lives on another. once you've paired the two over your solstone private link, sol chat and sol call reach the remote journal the same way they reach a local one, with live progress and answers streaming back as sol works. a machine set up this way runs its own observers and its own sol, while its journal stays on the machine that holds it.
  • managing your paired devices now has its own home in journal link: list what's paired, check a device's status, and unpair one when you're done with it. sol link stays the device-side command for joining and serving a link.

Changed

  • installing solstone now gives you the lightweight sol client by default. pip install solstone (or uv tool install solstone, or uvx solstone) installs a small client that talks to a journal running elsewhere, without the full set of components a journal host needs. to run a journal on this machine, install solstone[journal] for the full stack, or solstone[journal-cuda] for the version that uses your graphics card for transcription. the macOS app is unaffected; it still includes everything to run a journal.
  • your journal's local web and api address is now reachable only from the same machine. the older option that opened it to your network behind a password is gone. to use a journal from another device, you now pair that device over your solstone private link, the same pairing flow as before, rather than opening a port. this is a tightening of how a journal can be reached; what your observers take in, where your journal lives, and what leaves the machine are all unchanged.

journal 0.5.6

june 14, 2026

Added

  • the backup page now lets you choose where your encrypted backup lives. keep using your own bucket as before, or pick solstone hosted, which is on the way and shown as coming later with a clear path back to your own bucket in the meantime.

Changed

  • the backup page got a clearer pass over its layout and wording, the routine actions sit apart from the one that erases a backup, and the page now carries the same naming as the rest of solstone, including the journal backup terminal command's help text.
  • the link page now matches the rest of solstone's look. the pairing button and links on that surface read in the warm palette instead of an off-tone blue, so the page reads as one piece.

Fixed

  • pairing a new device over your solstone private link now completes instead of stalling. before, the join would reach your journal but hang for about half a minute and then give up; it now connects cleanly, with a plain one-line message if anything goes wrong. what travels and where your journal lives are unchanged; this is the connection itself finishing the way it should.
  • the recovery-key Copy button on the backup page now copies your key, where before it could copy a stray bit of internal text. some loose setup labels that were never meant to show are gone too.
  • when sol's background thinking is cut short at a budget or step limit, that run now closes honestly and its cost shows up on your spending view like any other. before, a cut-short run could sit in limbo and its spend never appeared, so your spending view was lower than what was actually used. a cut-short run now reads plainly as cut short rather than as a clean finish, and keeps whatever partial work it had.

journal 0.5.5

june 14, 2026

Added

  • before sol reaches solstone support on your behalf, it now asks first. reaching support is the one moment something may leave your machine, so sol offers it in the chat bar and waits for your yes; decline and the conversation stays entirely local. when you do say yes, the chat bar shows the reach-out plainly as it happens, and the offer survives a reload so you never lose your place.
  • there's a new Thinking app in your journal that owns how sol thinks. provider, key, and on-device setup all live there now, with three clear lanes: become a solstone scout, bring your own key for Claude, Gemini, or GPT, or run local thinking models on your own device. first-run setup now routes you straight into Thinking to pick your lane instead of asking for a single key up front.
  • you can now point the local (on-device) option at your own OpenAI-compatible server instead of the bundled engine. when you configure an endpoint, sol's generation and background thinking run there, including screen content for vision; transcription always stays on your machine, and there is no silent fallback to the cloud. it's your server, by your choice, and the local card spells out plainly what goes where.
  • linux machines with an arm64 GPU (like the NVIDIA DGX Spark / GB10) can now run the local on-device option, and on-device transcription defaults to whisper on those boxes. previously these setups had no on-device path for sol's thinking.

Changed

  • pairing a new device over your home network is smoother and clearer. a brand-new device on your local network now reaches the pairing step to earn its credentials, the same step it always had to pass; it still has to present your one-shot pairing code, can only talk to the pairing endpoint, and your journal stays local-only until you pair. the pairing command now hands you a ready-to-use link to paste on the other device, and a refused or mistyped attempt now tells you exactly what went wrong instead of a generic error. a paired device also keeps both the name you give it and its own hostname, so they no longer overwrite each other in the list.
  • setting up how sol reaches the world is reorganized around the apps that own each piece. Thinking owns scout and your provider setup, Link owns your solstone private link, and the old "your services" switchboard is gone; Settings now opens to a simple guide that points you to each app. the Thinking app also reads scout's real status directly (requested, invited, on), with a "check now" option, instead of guessing from local state.

Fixed

  • the web app's search summary now counts results correctly, reading "1 result" or "2 results" as it should.
  • internal stability improvements.

journal 0.5.4

june 12, 2026

Added

  • you can now back up your journal to your own cloud storage, encrypted before it ever leaves your machine. set up a destination you own (an S3 or B2 bucket), and solstone keeps an encrypted copy there on a schedule, with restore and prune built in. you hold the keys: a daily key that runs the backup and a separate recovery key you save somewhere safe, and you need the recovery key to restore. nothing routes through sol pbc, ever; the backup goes straight from your machine to your bucket and back. set it up from the new backup page in your journal, or from the terminal with journal backup.
  • your journal now has a "your services" page that gathers the optional extras you can turn on, like scout and your private link, in one place. each one shows whether it's on and lets you turn it on or off from inside your journal, with backup linked from there too.
  • on-device transcription can now tell voices apart on its own. when the local engine handles your audio, it now labels who's speaking the same way the hosted option already did, so a conversation reads as a back-and-forth rather than one undivided block. this runs entirely on your machine; nothing new leaves it.
  • the curation page now suggests when two speaker names look like the same person, alongside the facet and entity merges it already offered, so tidying up who's who has one clear place to happen. it only ever suggests; you decide.

Changed

  • solstone no longer includes todos, skills, routines, or the daily digest. these came out as a deliberate narrowing of what solstone does. anything you'd already saved under them stays untouched on disk; nothing is deleted.
  • on Linux, the on-device (local) option now runs on your graphics card instead of the processor. it needs a usable GPU; a Linux machine without one uses a hosted option instead. on macOS, the local option runs on Apple's MLX, as before.
  • turning on solstone scout is now a single sign-in link that works the same on every machine, including headless ones. the older code-based path could stall or report a confusing failure on some setups; that path is gone.

Fixed

  • a computer running more than one observer no longer blends them into a single stream. if you ran, say, a desktop observer and a terminal observer on the same machine, they could collapse into one and overwrite each other; each observer now registers itself and keeps its own identity. this happens locally on your machine; nothing new leaves it.

journal 0.5.3

june 10, 2026

Added

  • whether your journal is reachable over your local network is now a setting in journal settings, alongside everything else. it used to live only behind a command-line flag. the default is unchanged: your journal stays local-only until you turn this on.

Changed

  • your journal's own config is now the single source for your managed provider keys. a key set only in your shell environment, and not in your journal config, is no longer picked up. this keeps where your keys come from predictable, and your journal config the one place that decides. nothing about what leaves your machine changes.
  • the words across health, settings, and sol now read "talents" where they used to say "agents," with a few labels clarified along the way (disk usage, error counts, and a stray "None" that no longer shows up on the command line).

Fixed

  • search in the web app works again. every search was failing with a generic error; this resolves the underlying cause, and results come back as they should.
  • importing a transfer or peer archive now refuses anything that would write outside your journal folder. a malformed or hostile archive is turned away whole, writing nothing — your journal folder stays the only place an import can land.
  • marking a todo done or cancelled when it was already finished is now refused with a clear message, instead of leaving it recorded as both at once.
  • an entity active right now no longer shows "Last active: Tomorrow" in the evening. the day is computed on your local time, so it reads correctly.
  • the chat box no longer shows a provider-setup notice as its placeholder on every page, and a day with nothing in it now gets the same friendly empty state as the other timeline views.
  • on macOS, installing or upgrading the journal service no longer fails on a slow machine. some upgrades could stop on an input/output error while the old service was still unloading; this now waits and retries instead of giving up.

journal 0.5.2

june 5, 2026

Changed

  • terminal sol chat now runs through the same chat that the web app uses, so you get the same answer whichever way you ask. it shows its progress as it works and prints the final answer at the end.

Fixed

  • on-device transcription no longer splits words apart. transcripts from the local engine were coming through with letters scattered ("Tak ing out the m one y" instead of "Taking out the money"); new transcriptions now read as natural words and sentences. anything already stored garbled needs a fresh re-transcription to clean up.
  • asking sol about your own journal now gets an answer. questions that look something up in your memory, like past conversations, your notes, a quote, or your name, used to get declined; sol answers them now. reflection-style questions are unchanged.
  • on macOS, setup and upgrade no longer stall at the readiness check. a diagnostic step could take long enough to time out on a fresh or cold machine; it now runs in a fraction of a second.
  • syncing a folder of audio now tells you what it couldn't read. sol import --sync audio used to fold an unreadable file in with the ones it intentionally skipped; an unreadable file is now called out on its own line, with a reason, and the per-file list shows up with -v. --auto guidance also works alongside --sync --save now.
  • on Linux, installing or reinstalling the journal service no longer removes other services you set up. if you had your own solstone-related units, like a desktop observer or your own backup job, an upgrade could delete them. that cleanup step is gone.

journal 0.5.1

june 5, 2026

Fixed

  • macOS installs now get the same clean journal package as every other platform. the Apple Silicon wheel no longer carries retired internal talent prompts from an earlier build, so provider readiness stays available after install.

journal 0.5.0

june 5, 2026

Added

  • you can now point solstone at a folder of audio files and keep it in sync with your journal. sol import --sync audio --path <folder> shows what is new, and --save imports only what has not already been brought in.
  • sol now surfaces suggested facets and entity merges for review, so organizing the journal has a clear place to happen.

Changed

  • provider readiness is now one signal across Settings, Health, support diagnostics, chat, and the command line. when a provider or model is blocking work, solstone shows the affected task and the next step instead of scattering the reason across pages.
  • on Apple Silicon, the local setup path now matches the on-device engine the journal actually runs, including the right memory requirement before activation.
  • transcription setup is more careful about memory. when the local model is a poor fit for the machine, solstone says so up front and points to a hosted option instead of trying to push through.

Fixed

  • provider settings load cleanly from a direct link and show each task's defaults.
  • audio folder sync retires missing skipped files when the source folder changes, so a dry run does not keep warning about files that are no longer there.

journal 0.4.10

june 2, 2026

Added

  • pdfs and still images that come in with your day are now read into your journal and made searchable, the same way a transcript is. sol can find what a document or an image actually contains, not just that one was there. on a scanned pdf with no selectable text, sol reads the page itself. nothing new leaves your machine, and what's kept on disk is unchanged.

Fixed

  • if you run the on-device option on a Mac, it works again. on apple silicon, on-device thinking and vision had started turning away every request, so the day's processing stalled; this resolves it. and if the on-device engine ever restarts, your journal now catches up on anything it missed while it was down.
  • solstone no longer tells you an update is available when there isn't one. if you were already on the latest build, or running a pre-release or development build that's ahead of it, the check could nudge you for nothing. it now points to an update only when a genuinely newer published version exists.

journal 0.4.9

june 2, 2026

Fixed

  • upgrading on macos is steadier when the journal service is already running. setup waits for the old service to finish unloading and uses the service's real start time, so a healthy upgrade does not stall at readiness.
  • solstone raises the file limit for the installed journal service, giving long-running journals more room for observers, local providers, and background work.
  • revealing a provider key in settings is now only visual. clicking the eye button no longer triggers an unwanted save, validation, or clear.

journal 0.4.8

june 1, 2026

Fixed

  • macos setup now tolerates a launchd race where the journal service starts and becomes healthy even though launchctl kickstart reports a transient error. setup trusts the supervisor readiness marker, so an upgrade can continue to observer registration instead of stopping at "service up failed".

journal 0.4.7

may 31, 2026

Fixed

  • upgrading over an older install no longer stops because the sol or journal shortcut in your shell points somewhere stale. setup now repairs the shortcuts it owns and keeps going, whether solstone came from the macos app or from the terminal.
  • sol's background thinking can ask the journal for identity, routines, health, and talent context again. those approved journal tools were being turned away before sol could use them; now they work without widening what sol is allowed to run.
  • fresh installs from PyPI resolve cleanly when pip chooses the dependencies. the journal now pins matching versions of a few libraries its thinking depends on, so install no longer lands on an incompatible mix.

journal 0.4.6

may 31, 2026

Added

  • you can now re-run sol's thinking on any day from the page, either "process now" to pick up where it left off or "redo from scratch" to start the day over. the same is available in the terminal with sol reprocess <day>.

Changed

  • your journal now tells you plainly whether it's caught up. the stats and health pages show an honest "is my journal caught up?" answer plus a "days that need a hand" list for any day it can't finish on its own, like one with corrupted data or a step that keeps failing. catch-up runs on its own in the background, never leaves older days behind, and journal doctor reports the same answer from the terminal.
  • the on-device option is now a single "Local (on-device)" choice on both macOS and linux. on a Mac it now runs entirely on your machine, including sol's thinking, so the local-only path covers more of your journal without anything leaving your machine.
  • on linux, the default on-device transcription now works the moment you install, with no extra to add. the runtime ships with the install and journal setup fetches the model. owners with an NVIDIA GPU can still opt into a GPU-accelerated build, and journal doctor now reports whether the default transcription runtime and model are ready.
  • local journal commands now live with the journal service. things like navigating, routines, identity, on-device provider install, health, and stats moved from sol to journal (for example journal navigate, journal health, journal reprocess). the old sol forms now point you to the new one.

Fixed

  • your journal no longer shows finished work as still pending. days that had an earlier error but later completed were being counted as outstanding, so the backlog looked larger than it was. the count now reflects what's actually still incomplete.

journal 0.4.5

may 30, 2026

Added

  • you can now reach your journal from your phone or laptop even when they aren't on the same network as your home machine. setup lives at the connections page, which is now the single home for how you connect, your network access, and your paired devices. pairing shows a fresh code, lets you name each device, and lets you see and remove any device with one tap.
  • the local model that runs entirely on your machine can now take in images as well as text, so the on-device option works on more of what's in your journal. nothing new leaves your machine.

Changed

  • the local model is now kept running for you in the background instead of starting up on demand, so it's ready the moment sol needs it. fresh installs launch it reliably the first time, and a model download now shows real progress instead of sitting at 0 percent through several gigabytes.
  • diagnostics are now two clearer commands. sol doctor checks that the sol command itself is working, from anywhere. the new journal doctor checks the health of your journal and its background service. each asks only the question that fits where you run it, so neither raises a false alarm.
  • the entities and devices views read more clearly: plain empty states when there's nothing yet, a retry when something fails to load, and detaching a facet now spells out what will happen and offers a one-tap way to undo it.

Fixed

  • your journal now shows when a moment has been transcribed but not yet thought through, instead of looking finished, and catches those moments up on its own. day-by-day status and the transcripts view reflect this honestly, so nothing sits half-processed without you knowing.

journal 0.4.4

may 27, 2026

Changed

  • when sol is catching up on a backlog, today's thinking no longer waits in line behind it. on a busy journal, or right after an install, the day's catch-up work and sol's thinking on fresh observations now run alongside each other, so new moments get attended to in seconds instead of waiting hours.

Fixed

  • transcripts come through on every audio format again. if you run a transcription backend other than whisper, some audio was making it into your journal but quietly producing no transcript. this resolves it, so the moments you spoke are written down the way you'd expect.
  • upgrading from an older install no longer trips a setup check. if you first installed solstone a different way and then moved to the current method, sol doctor now adjusts the older sol and journal shortcuts for you instead of stopping. if you hit this, this resolves it.

journal 0.4.3

may 27, 2026

Added

  • a dedicated reader for facet newsletters at /app/news/. reverse-chrono index across all your facets, per-day detail with a copy button and a pdf download, and a sample newsletter so you can see the shape before your first one lands. newsletters sit next to reflections in the sidebar.

Changed

  • the participation tab on an activity now shows a structured list of people, grouped into attendees and mentioned, with a short note next to each name about how that person showed up in the activity. low-confidence entries appear muted with a "less certain" tag, and empty or unavailable states read in plain language instead of raw json.

Fixed

  • weekly reflection writes a full reflection to your journal again. on busy journals it was running out of room mid-gather and either saving nothing or saving only a short summary; both paths are resolved, and the reflections page renders again.
  • attendee lists are stricter about who counts as an attendee. someone whose name only appeared in a transcript, without other corroboration, is now demoted to mentioned rather than surfaced as an attendee. reported by Ryan during a walkthrough.
  • background work sol runs through google (morning briefings and other scheduled talents) no longer fails silently on a size limit. a request-budget calculation was landing one over the supported maximum, rejecting every call on the default settings; the calculation is corrected.
  • sidebar labels in the expanded menu no longer truncate. entities, transcripts, and other longer labels show in full at narrower window widths. reported by Ryan.

journal 0.4.2

may 26, 2026

fixed

  • on a fresh install, journal setup could stop on a doctor check that flagged the sol command on your machine as out of place — even when it was the one journal had just put there. if you hit this setting up 0.4.1, this resolves it.

journal 0.4.1

may 26, 2026

fixed

  • some 0.4.0 installs didn't come back up after upgrading — sol wouldn't start, and journal commands timed out. this resolves it.

## [0.4.0] — 2026-05-26

changed

  • service commands moved fully to journal. Service commands (supervisor, cortex, heartbeat, setup, transcribe, services, etc.) are no longer surfaced under sol — they live exclusively under journal. Your existing solstone service migrates itself automatically on the next service restart; no action needed.
  • journal start is now the canonical run command (replaces journal supervisor as the service-unit entry point — old units self-migrate).
  • the sol CLI continues to be your day-to-day surface (chat, call, top, import, search across the journal).
  • cogitate is now baseline — the openhands-sdk runtime that powers sol's tool-calling agents ships in the wheel, so a fresh install with a hosted provider key runs cogitate immediately with no extra install step. wheel size grows by about 337 MB on install to carry openhands-sdk, litellm, and their transitive dependencies.
  • minimum python is now 3.12 (was 3.11) — required by the openhands-sdk runtime that ships baseline. if you installed solstone with a 3.11 interpreter, reinstall under 3.12+ before updating.

removed

  • sol <service-cmd> paths typed by a human now redirect to journal <cmd> with a clear error and exit non-zero. Service units still pointing at the old paths self-migrate; nothing on disk breaks.
  • the built-in sol observer install command is gone. linux and tmux observers now install from their own published packages: pipx install solstone-linux (or solstone-tmux), then solstone-linux install-service (or solstone-tmux install-service) pairs with the running journal. the macOS observer continues to come from the signed app bundle at solstone.app/observers.
  • the bundled per-provider install commands are gone — sol call settings providers install now accepts local only (cogitate runs out of the box for hosted providers with a key set), and uninstall/disable/enable/validate-key are removed entirely. local install continues to work via sol call settings providers install local.

## [0.3.10] — 2026-05-26

Added

  • journal CLI — solstone now installs two CLI binaries: sol (the day-to-day surface for talking to your journal — chat, call, top, import, etc.) and journal (host operations — supervisor, setup, install-models, the daemons that tend your journal). sol --help shows both surfaces; journal --help shows just the host commands. Existing sol <cmd> invocations all keep working. Internal docs and scripts use journal <cmd> for host operations going forward.

journal 0.3.9

may 25, 2026

Added

  • solstone now has a "services" layer for the optional cloud-backed extras sol pbc offers alongside your local solstone. today that means solstone scout, the alpha-tester program that provisions a Google Gemini key for you and unlocks scout-only features. services are off by default; you turn them on from services.solstone.app or sol services enable scout, and solstone itself still runs entirely on your machine.
  • you can now move days or whole journals between your own machines, and connect an observer on one machine to a journal on another, over a direct private link between your devices. sol link join pairs them; sol transfer send --to <peer> and sol export --to <peer> push from one to the other. revoking a paired device at the /link dashboard, with sol observer revoke, or with sol call link unpair cuts the connection at TLS the moment you revoke.
  • a new "Local (on-device)" provider runs sol from a bundled llama-server on your own machine with a pinned Qwen model. zero-egress: when sol is set to local, it never falls through to a cloud provider.
  • a new daily journal/identity/health.md surface tells you whether solstone is OK at a glance. sol reads its own signals, auto-recovers from things like stuck transcripts, and the home page and morning briefing now read its summary.

Changed

  • a few of the surfaces you touch most are now more direct. creating a facet lands you on a real detail page that confirms what you just made and offers next steps. clicking a "needs you" item on the home page opens a fresh chat with editable starter text already in the box (not as ghost placeholder), and sol knows which item you came from. each modality on segment-detail pages has its own "analyze now" button so you can re-run analysis on one part of a day without dropping to a terminal. the health, tokens, and service-log pages were rebuilt around a glance row that answers the first question (is solstone OK, is this costing too much, where did the pipeline fail) with the detail kept under progressive disclosure; service log lines now carry severity colors with screen-reader announcements on errors.

Fixed

  • segments that were already analyzed sometimes painted as still-pending on the day timeline; they now render correctly. audio playback on segment pages now shows the real duration and the right format, transcript lines no longer carry a doubled timestamp, the day view scrolls naturally on short windows, and a cold-load race on transcripts pages is resolved. internal stability improvements across providers install, background tasks, and the convey wizard.

journal 0.3.8

may 22, 2026

Added

  • you can now run sol's on-screen analysis fully on your own Mac. on Apple Silicon with at least 16 GB of memory, "MLX (Local, Apple Silicon)" appears in Settings under Providers; choose it once, sol downloads a local model in the background, and from then on the part of sol that makes sense of your screen runs on your machine, with nothing sent to a cloud provider. it's opt-in and covers vision today; the rest of sol stays on whichever provider you've chosen.
  • you can now power sol with Anthropic or OpenAI without installing anything extra. choose the provider in Settings and solstone sets it up for you, with no separate command-line tool to install first. running on a hosted Google key needs no extra setup either.
  • sol setup --clean-uninstall removes the pieces setup added to your machine, behind a confirmation that lists exactly what it will remove. your journal is never touched.

Changed

  • the timeline view is rebuilt. it opens straight into your real journal, fits any window from a phone-width pane to a wide desktop, and every entry shows which AI produced it with a link to that day. when sol finishes summarizing a new day, the view updates on its own.
  • long todo lists now load fast and stay readable: solstone shows the most recent items first with a "show more" control for the rest, instead of rendering everything at once.
  • api keys in setup and Settings are now masked as you type, and the validate button tells you plainly whether the key connected or failed.
  • on Linux, bringing an observer online no longer needs git or a build step on the host; observers now install straight from their published packages.

Fixed

  • video and audio in your journal that showed "format not supported" now play. some entries with video or audio hit this; it's resolved.
  • on installs from PyPI, sol's meeting-screen analysis was coming back as freeform notes instead of the structured entries it was built to produce. the missing piece now ships with the package, so meeting frames return to their intended shape.
  • transcription that gave up on a long, dense stretch of audio now retries and recovers, so days that previously failed to transcribe complete. this also recovered a backlog of past days that had errored.
  • pages that occasionally didn't finish loading now load cleanly.
  • on some machines the background service could stop overnight and not restart; it now restarts as intended.
  • pairing a phone by QR code now works in Safari on iPhone and Mac, where the code could previously render too small to scan.
  • internal stability improvements, plus quieter local logs.

journal 0.3.6

may 18, 2026

Changed

  • solstone now uses each provider's current models, and the structured results sol asks providers for are validated the same way across every provider, including the backup one. this makes the AI features more reliable, with no change to how you use solstone.

Fixed

  • in some cases what sol wrote to your journal from a screen could be off. a frame with little on it could pick up names from your own contacts as if they'd been on screen, and an occasional runaway from the model could write a long block of repeated text into an entry. both are now caught before anything is written, so your journal reflects what was actually there.
  • when sol fell back to a backup AI provider for a task that involved an image, the image could be left out of the request, so the result was a confident guess instead of something grounded in what was on screen. images are now sent correctly on every provider, and structured results from the backup provider are read correctly.
  • upgrading solstone over an existing install now works cleanly. before, an upgrade could stop partway: setup could wrongly report that port 5015 was in use when it was solstone's own running service, and re-registering this machine's observer could fail as "already exists." if an upgrade left you stuck, this resolves it.

journal 0.3.5

may 17, 2026

Added

  • a new data-flow page explains, in plain language, what solstone sends to your chosen AI provider and what never leaves your machine. it covers local-first processing, that each task is scoped (not your whole journal), that the keys and the account are yours, and the things sol pbc is bound never to do with your data. it's linked from setup, the install guide, and the readme so you can read it before you connect a provider.
  • the install guide now has a section on how to power sol: starting with a hosted provider key is recommended, running fully local is a real supported goal but not yet the default daily experience, with a heads-up on the hardware that takes. setup and the api-key settings now also tell you, per provider, to use a developer api key from the provider's console rather than your consumer chat login, with the right console link for each.

Changed

  • in-app support and feedback now point to support.solstone.app, and that's the default in support settings for new journals. if your settings still point at the old support address, nothing breaks and you can leave it as is. setup, the install guide, and the readme now also lead with following and tagging @solstone.app on Bluesky for feedback, then GitHub issues, then the support site.

journal 0.3.4

may 16, 2026

Added

  • a fresh journal now opens with a useful set of starred apps in the nav rail instead of a blank one. if you've already arranged your own starred apps, your choices are left exactly as they are.

Changed

  • the deprecated precision setting for parakeet transcription has been removed. quantization (auto, fp32, or int8) is the setting to use. if your journal config still carries the old precision line it's now simply ignored, with no change to how transcription runs.

Fixed

  • browsing back from the all-facets entity edit view now returns you to the entity you were looking at, in the same facet. before, back could land you on a different view.
  • the bundled transcripts read documentation now shows the correct options. the previous example listed the wrong units for --start and --length, so following it as written would have failed.

journal 0.3.3

may 16, 2026

Added

  • a validate button now sits next to the gemini api key on the setup page, so you can confirm the key works before finalizing.

Changed

  • the setup page is reworked: cleaner typography, retention preferences as three explicit choices (always keep, keep for a set number of days, don't retain), enter-to-submit from any field, and your journal version and path surfaced up top.
  • a fresh sol setup now installs the solstone bundle into all three coding-agent configs (claude, codex, gemini) at once, and lands the per-talent skill files in your journal so sol's sub-agents can find them.

Fixed

  • the setup page works end-to-end on a fresh install. earlier builds had a silent javascript bug that left the validate button, retention radios, and finalize submit unresponsive.
  • on macos, your local timezone now resolves correctly on first setup. earlier installs could land in utc because the resolver missed where macos stores zone data.