Changelog
What shipped, newest first. Every entry describes behavior you can use today.
2026-09-27
- A view-only spreadsheet gets the right advice. When you can open a sheet but not change it, every run used to stop with a message about your Google account, which was never the cause. The panel now says what it is and what fixes it: File, then Make a copy, and run Sortia on your copy; or ask the owner for edit access.
- A blocked panel shows its card at once. When Google refuses the panel's requests, the first refusal now stops the rest and shows the recovery card straight away, instead of every call failing one by one while you wait.
- A panel that sat open too long tells you to reopen it. If the panel's link to Google lapses after it has already worked, the card now says to close it and open it again from Extensions, which is the fix, before suggesting anything about accounts.
- Copying a template no longer breaks an open panel. A copied file, or a renamed tab, used to leave the panel looking for a tab by an id that no longer existed. It now finds the tab by name, and recreates a missing report tab rather than refusing.
- Every report opens in plain words. A short summary at the top of each report says what was decided, the odds, and what drives them, in everyday language, written from the same numbers the report shows below.
- Words on the sheet are explained where they appear. Terms like cohort, completion percentile and predecessor carry their meaning in the cell note, on the sheet's rail and on the report.
- Every input cell says where its number comes from. The note on each estimate names what it is and where to find the figure.
- Templates are named for the decision they help with. Thirty-four titles and forty-four descriptions were rewritten so the name says what you are deciding and who it is for; every page kept its address.
- Describe your decision understands "what can Sortia do for me?" With the experiment on in Settings, the home search answers that question in plain words and asks what you are deciding, and your answer goes straight into the guided builder.
- The Guide, experimental. A chat box under the home search, off until you switch it on in Settings, that talks about what Sortia can do for your situation and what shape a model for it should have. It never sees your spreadsheet: only the list of ready-made models, a result you choose to attach, and what you type. A suggested shape is filled in by you, number by number.
- A second refusal says so. When the same range stops a run twice, the message says it is the second time and names the new cell, and a single-cell refusal says there may be more than one.
- The AI reading shows progress. While a Pro reading is being written, the card says so and counts the seconds, and a reading that does not arrive says the numbers above are still the result.
- Live estimate cells have a page. The kit is at sortia.io/live-cells; in Settings the experiment says plainly that the workbook is still coming.
- What's new, in Settings. The newest changelog entry is listed under the build line, with a link here.
- On the website: the getting-started page's "If something looks wrong" section now covers every message the panel can show, including view-only files, copied files, timeouts and used-up free runs.
2026-09-26
- Every result now carries a receipt. Under the verdict there is a line naming the spec version, the engine version, the seed, the trials and the sampler, with a fingerprint of the model and a fingerprint of the result. Verify runs the same seed again and compares the two fingerprints; Copy JSON puts the whole receipt on your clipboard. The same block is written on the report tab, so a number in a sheet and a number in the sidebar can be shown to be the same computation. A receipt with any field missing does not render at all rather than render half.
- The verdict names the estimate that matters most. When one input clearly drives the outcome, the card and the report say which one, in plain words. When no single input stands out, they say that instead. The line never appears when the drivers were not computed.
- Share a result as a link. After a run with a complete receipt, Share opens a preview listing exactly what the page will hold: the verdict, the odds, your assumptions as ranges (with a switch to leave them out), the line about what matters most, and the receipt. Nothing from your spreadsheet beyond that list travels. The page is a plain address you can paste anywhere, and Settings lists your shared links with a Revoke on each. An organisation can switch sharing off for its whole domain.
- Copy for your AI assistant. One press on a built model copies its portable spec and a pointer to the page that tells an assistant how to read it. A spec with errors shows the errors instead of copying.
- One name for the cells Sortia is allowed to change. Risk and Optimization each had their own label for the same idea. Both now say "Cells Sortia may change", bounds are "Lower" and "Upper" everywhere, and the same sentence explains the same concept in every panel, the guide, the templates and the site. Those cells also accept a range such as C40:C69 in Risk, the way Optimization already did, and What-If result cells take a range the same way.
- The two things called Optimize now point at each other. The Risk panel's Optimize mode says when to use it and when to use Optimization instead, with a link that carries your cells across; Optimization says the mirror. Each engine in the Optimization dropdown has a one-line reason to pick it.
- Ask about the odds of staying under budget and land in the right place. "Odds of finishing under budget" went to Schedule Risk, and the same question in Spanish went to Decision Tree. Budget questions now reach Risk, and the core words of a question in Spanish, Portuguese or French are read.
- Fixed: the A/B test said a filled box was empty. One bad number and three placeholders produced a message about the wrong field. Every box is now judged on its own and the message sits beside the box it is about.
- Fixed: a stale refusal stayed after Use selection filled the range. The message is cleared the same way a keystroke clears it.
- Trials and the Output cell are remembered between sessions, per spreadsheet.
- Fixed: "quota capacity" found nothing in the home search. Both searches now read the tab name as well as the template name.
- Fixed: "How to read it" in the risk report landed in a hidden column. The explanation now starts under the chart, in a column you can read.
- Fixed: "Open Sortia" on the first-result screen sometimes needed two presses. Two causes, both gone: the card replaced its buttons a moment after opening, and the opening curtain took the first press during its own fade-in. A press now reaches the button on the first try, and a press during the fade lifts it at once.
- Fixed: the Close link in Settings was hard to hit. It has a proper button-sized target now. "Use this template" in the library also answers a hover visibly.
- On the website: the footer names the listing in quotes so it no longer reads as a dangling colon, "Google Sheets" is two words to a screen reader, and the number of distribution families is drawn from the engine's own list on every page that mentions it.
- Experimental, behind Settings, off for everyone until you switch it on. Live estimate cells: type
=EST(28, 10.5)in a cell, it shows 28, and an odds formula over your estimate cells moves when an estimate changes, with no run button. It needs a template workbook of named functions imported through Sheets' own Data menu; the link to that workbook is coming, and until it is here the section says so. Describe your decision: four questions in plain words become a validated model that opens in the panel, ready to run. Neither uses an AI model, neither sends your spreadsheet data anywhere, and either can change or disappear.
2026-09-24
- A Run that looked like it did nothing was telling you what was wrong, off the top of your screen. The Run button is pinned to the bottom of the panel while messages appeared further up, so on a long form a refusal could render above the fold and a press looked like silence. The message now comes to you, names the field it is about and says what to enter. This was the same fault in four separate places, including the Data Table, where a bad entry also produced a warning that your browser could not read the model, which was not true. Each panel had grown its own fix for this; there is now one, so the next panel cannot miss it.
- The report tab's charts were being drawn below where anyone scrolls. The distribution and the driver chart were anchored under the last table, which on a full report is 90 to 200 rows beneath the numbers. They now sit beside the summary, on the same screen as the verdict. The hidden band that holds the chart data was also hiding the wrong column after the sheet is indented, so a report could come out with its explanation hidden and its raw draws on show.
- The percentile rows read as English. They printed as 0.01, 0.05 and 0.1, because the labels were written as text and the sheet parsed them back into numbers. They now read "1st percentile", "5th percentile", "50th percentile (median)". A percentile that is not a whole percent says "the 99.9% mark" rather than inventing an ordinal it cannot support.
- The example cards stop coming back. They used to reappear on every launch, forever. You now meet each of the six once, one per open, and then never again. The link on the card stops them all at once, and it is on every card now rather than some of them.
- Controls that did nothing now answer. The home icon in the panel header, the settings gear, About Sortia, the whole "Start from a template" card rather than only its arrow, and the tool filter in the template browser, which was rebuilding its own menu inside its own click and losing the choice. Settings also shows which version of Sortia you are on, which was not readable anywhere in the product.
- Searching for a tool by the name the product shows you now finds it. "risk analysis" returned nothing, because the library stored that tool under its engine's name. Searching in either vocabulary works now, in the add-on and on the website.
- Your seed is recorded, and one press keeps it. A run with the Seed box empty used to report "(random)", which is visible but not reproducible. The report now prints the seed the draws actually came from, and the panel offers to keep it so the next run repeats those exact trials.
- The wait during a run says what is happening. The three waits that have no progress to report, where Sortia is waiting on Google Sheets, now change their wording as they go instead of showing a dimmed button. Nothing spins, because a spinner on a wait nobody can bound is a decoration rather than information. There is also a line after a run naming the tab the report was written to.
- A small picture beside the verdict. The plain-language verdict now carries a strip showing the middle eight tenths of the outcomes, the median, and your goal when you set one. It is drawn in shapes rather than colours alone, so it survives a grayscale print, and a run with no spread draws nothing rather than a misleading picture.
- Impossible values are refused where you typed them. The A/B test shipped with a negative number of conversions prefilled. Fields that had a nonsensical default now open empty with the shape in the placeholder, and a value that cannot be true is refused beside the box rather than after a round trip. A remembered range pointing at a tab that no longer exists is no longer filled in for you.
- On the website: the numbers in the example now come from the engine. The homepage showed three different figure sets for what it called one run, because the live demo had moved on and the text around it had not. Every figure is regenerated from a real run at seed 42, and a check now re-runs that engine and fails the build if the page ever drifts again. The free and Pro explanation is one paragraph used word for word in both places it appears, the permissions description says plainly that Google adds two scopes of its own, and the templates page now answers a search that finds nothing instead of showing a blank panel.
- Fixed: two labels on a chart could come back identical. Shortening on a word boundary could turn "Catering costs" and "Catering staff" both into "Catering", which is worse than an ugly cut. Labels are now shortened as a set, so a cut only runs into a word when that is what tells two of them apart.
2026-09-23
- Every written report now opens by saying what it says. A "What this says" block sits at the top of the report tab, above every table and every chart, in the same sentences the sidebar card gives you: "Your chance of Cash runway landing at or above 12 is 58%", or "The best first choice is Launch in Q1, worth 57,000 more than the next". One generator writes both surfaces, so the card and the tab can never drift apart, and the older report writers that had no reading at all, including the legacy Monte Carlo output, Scenario Summary, Data Table output, Fuzzy Lookup, the efficient frontier and fourteen of the Data Analysis tools, all have one now. A summary with nothing in it produces no block rather than an empty heading.
- Every Risk run can carry a goal, and answers it in odds. Under your outputs there is now an optional Goal row: at least or at most, and a number, one per output. The card and the report then lead with your chance of hitting it, counted as the share of trials that got there, which is the same arithmetic the threshold table already used. The goal is saved with your model and restored, and templates that have a target fill it in for you. A run with no goal set produces exactly the results it did before.
- Six new templates that ask the question in their title. "What deadline gives 90% odds of finishing?", "How much cash gives 95% odds of not running out?", "What price keeps 80% odds of hitting the margin target?", "How many units to stock for 90% odds of no stockout?", "What bid wins with 70% odds and still makes money?", and "What launch date has even odds of beating the plan?" Each arrives with its goal already set, so the first thing you see is the answer to the question on the card. Six more followed the same day, for hiring, plant capacity, marketing spend, budget contingency, event tickets and monthly saving, so there are now twelve. That takes the library to 378.
- Ask the search box a question with a number in it. Type "what deadline gives 90% odds of finishing?" into the box at the top of the home panel and the matching goal-first template comes up first, and opens with the Goal row already set to the odds level you asked for. The report then tells you whether the run clears it: "You asked for 90% odds, and this run clears that." A question without a number in it searches exactly as it did before. This is a search over the template library, not a chatbot, and nothing you type leaves your spreadsheet.
- Data Analysis fills the range in from what you have selected, and spots a header row. Open a tool with a block of cells selected and the range arrives filled. If the first row is text sitting over numbers, Labels in first row is ticked for you and the note says so, which is the single most common reason a run used to be refused: a column heading read as data. Anything you typed, anything a template filled and anything restored from last time is left alone.
- Nothing selected on your first visit? One click runs a real example. If you have never run anything and open a tool with an empty form and no selection, Sortia offers to run the example: it writes a small sample table onto its own tab and runs it, so the first thing you see is a finished result rather than an empty form. Dismiss it and the form stays exactly as it was.
- Data Analysis refusals name the cell and tell you what to change. Instead of a general failure, you get the specific one: "Cell B14 holds text ("pending"), and this tool needs numbers. Delete it, pick a range without it, or tick Labels in first row if it is a header." The panel also checks your range before it sends anything, so not a range, a single cell or a range over the limit are caught on your screen rather than after a round trip. Thirteen places that could still print a bare failure or "Unknown error" now say something specific.
- The Decisions tab fills the range in from what you have selected. Select at least a two-by-two block before opening it and the range arrives filled, with Labels in first row ticked when the top row is text over numbers, and the panel says it did so. Anything you have typed, anything a template filled and anything restored from last time is left alone.
- Fixed: a template's named chances never appeared. A template's events were handed to the panel without the same shift its outputs got, so the block listing the chance of each named event did not render for anyone loading a template.
2026-09-22
- Sortia reads and writes real .SIPmath files. SIPmath is the open standard for carrying a distribution from one tool to another as a small file instead of as a column of random numbers, and Sortia now speaks it properly: the Standard's own container, the .SIPmath extension its tools open, and the portable generator it specifies, validated against the Standard's published schema. Our files reproduce the published check values in the standard's own reference libraries to twelve decimal places, and 28 of the 30 published trials across all ten of them.
- Export from the tools that produce trials, and import as inputs. Risk exports every output column as one library, and offers to share your inputs the same way. Schedule Risk, the Monte Carlo panel and Data Analysis, both fitting and random draws, all offer a SIPmath export. An import card takes a file or pasted text and adds the distributions you tick as input rows on your Risk model. Distribution kinds we cannot read are listed as skipped with a plain reason rather than guessed at. Decisions has no export on purpose: its result is a handful of discrete outcomes, and a smooth curve fitted over them would misrepresent it.
- Imported inputs can stay correlated trial for trial. A new Coherent with SIPmath option under the seed, off by default, carries the file's correlation structure and every column's seeds, so a library written by another tool reproduces in Sortia the way its author intended. Correlation you add inside Sortia on top of that is still matched in distribution rather than trial for trial, and the guide says so.
- The limits are written down. No finite fit of this kind can carry a Cauchy's tails, so a Cauchy input exports with its tails understated, and at three terms its P1 and P99 come out about 12% of their span short. Every other family round-trips within 1% of its P1 to P99 range. A point mass cannot be carried, so a mostly-zero compound is better shared as two variables, the frequency and the severity, than as their product. We fit up to nine terms today where the standard allows sixteen, and a sixteen-term file from another tool is read and sampled in full.
- A new template: Delay Claim, who owns the days? Forensic schedule analysis for an overrun project: which delays belong to whom, and what the defensible number is.
- Fixed: three exports said "Saved" over a download that never started. The Data, Project and Monte Carlo exports all did this. Whole-number random draws from the Data tool were also exported as a smooth curve, so a Poisson with a median of 4 came back as 3.76; the exported trials now carry their rounding.
- Fixed: the side-rail icon came and went. The add-on's logo address pointed at the bare domain, which has redirected to the www address since 29 August, and a redirect is not always followed there.
2026-09-21
- A sidebar Google refuses to open now tells you how to get in. If Google will not serve the panel, you get a recovery card that names the two usual causes, being signed into more than one account in the same window, or third-party cookies being blocked, with a Retry button. A panel left open after its spreadsheet has gone gets its own card. Opening Sortia from the menu makes one attempt and then says plainly what to allow and to press again, instead of doing nothing.
- Refusals carry a reason, and a repeated one offers help. Every refusal is now classified by why it happened, 344 of the 409 refusal sentences in the product and 133 of the 144 in the Data tool. If you hit the same refusal twice in a row, Sortia opens the guide for that tool and offers to load a working example rather than repeating itself.
- Optimization checks your model before it runs it. A pre-run check names a missing objective or missing variable cells instead of letting the solve fail. There are also two starter models, a product mix and a staffing week, behind a Load example button.
- Try it on sample data. An account that has never run anything gets an offer on the home screen that writes a sample tab, opens the Data tool already filled in, and runs it.
- A Data Analysis result too big for the sheet offers a summary instead of nothing. Before, going over the limit on how much can be written simply refused.
- Risk runs start quicker and say what they are waiting on. Starting a run went from six calls to Google's servers down to four, and while your spreadsheet is slow to answer the status says which stage it is in. A run whose save was refused or failed no longer quietly continues as if it had not.
- Fixed: data with no spread was refused with a reason nobody could act on. Nine Data tool refusals, every value identical, zero variance, columns that duplicate each other, were all collapsed into one general category. They are now recognized as their own case.
- The retention promise is enforced by the data itself. Every token and every record the gate writes now carries its own expiry, 30 days for the one and 24 hours for the other, matching what the privacy page says rather than depending on a cleanup running.
2026-09-16
- A large-run export uses the same column names as the ordinary one. The in-browser export labels columns the way you would read them, like "Parent 1 lifespan (years, uncertain) (C7)", while the server path had only the internal short name to work with. It now carries the real labels across, and where the column count does not match exactly it falls back to the honest internal name rather than guessing.
2026-09-15
- Export the trial data from a Risk run. A new download on the result card writes one row per trial with every input paired with its output, for SimDec or any other tool that analyses inputs against outputs. Up to 250,000 paired trials, built in slices so the panel stays responsive while it works, with the filename taken from your sheet. It is not offered on the sheet-engine path, which never holds the raw trials in the browser.
- Bigger runs export from the server, on Pro. Past what a browser can hold, a Pro account's export runs on Sortia's servers instead of failing, up to the panel's existing ceiling of one million trials, measured at 2.86 seconds for a million trials and a 94.7MB file. It happens automatically rather than as a separate button. A free account gets a plain upgrade message and never reaches the network. The download link is good for an hour, and the file is deleted when it expires.
- Export a fitted distribution instead of a column of numbers. A second download beside the trial data fits a curve to the run's main output and packages it as a portable distribution file.
- Both exports sit under one heading, and each says what it is for. One "Export trial data" group with a short line under each button naming the format it writes, and each button's status line under that button rather than both stacked together after the pair.
- Fixed: the exports did not actually work when they first appeared. The trial-data button never appeared for any real run, and would have wiped the visible result card had it been pressed. The server export could tell a genuine Pro subscriber they needed Pro if their plan had not finished loading when they clicked, read the wrong sheet and refused over a cell that plainly has a formula, and said "Saved 1,000,000 trials" while nothing landed anywhere. All of it was found and fixed the same day, most of it on a live run.
- Fixed: the first open after a fresh install could miss your sheet. The scan that looks at the shape of your data could fire while a permission you had just granted was still propagating, and it threw rather than retrying. It now waits two seconds and asks again.
2026-09-14
- A solve that will be cut off at five minutes asks first. On the sheet-engine path, Google stops any script at five minutes, and Sortia had been quietly shrinking the run to fit without saying so. It now tells you before it starts, so you can cut the scope down yourself rather than reading a truncated answer. Most solves never reach this branch.
- The getting-started instructions name the side panel, and a wrong one was corrected. The start page never actually told anyone to open the side panel, so a new user went hunting through the Extensions menu for a button nobody had mentioned. Worse, the support page told people to activate a Pro key from a menu item that does not exist; the real route is the gear on the panel's home screen.
2026-09-13
- Five Data Analysis tools crashed on an empty range. They now refuse politely. Regression, Neural Network, Logistic Regression, Chi-Square Independence and Random Numbers all threw a raw platform error whenever their input range came back with no usable rows, which happens for entirely ordinary reasons: an empty range, running before pasting, a header row read as data. All five now say what is wrong in a sentence you can act on, each pinned by a test.
- Fixed: one-way ANOVA printed a confident wrong answer. Given one observation per group it returned success, wrote a p-value of NaN into a real sheet, and stated a verdict. It now refuses before the division, the same way it already refused too few groups.
- Weighted Scoring stops showing a trustworthy-looking answer over broken numbers. Lowering a criterion's maximum below a score you had already typed left the totals sitting there unchanged, and the bold Leading chip and highlighted bar still read as the answer. The offending cell is now marked, Create is blocked, and the verdict names the score to fix. The note about what would flip the result also says what a points-mode flip assumes.
- Google's own error text no longer reaches you. Thirteen places could print the platform's wording or an engine's internal name straight through, including after a redeploy, when what a reader needs is a sentence and a Reconnect Sortia button. An invalid file now says "That file is not valid JSON" rather than repeating the parser.
- A finished answer whose save fails is shown, not thrown away. A simulation that completed and then could not write its report now renders the figures and the charts with a line saying they are this run's real answer and nothing has to be simulated again, plus the one missing step: save the report to the sheet again. Optimization does the same when the write hits Google's time limit, and saving again re-sends the same answer rather than re-solving.
- One word per thing. The main button says Run on both tabs in both modes, "Std deviation" and "P5 (5th pct)" are spelt out, the Optimize result rows print sheet-shaped numbers instead of seven significant figures, and success says Done followed by the name of the tab the report is on. The builders say Create model tab, then Writing the tab, then Done. A missing verdict value says the word the case means, "not found" or "no winner", never a dash. 47 template notes say Click Run and name the tool where that helps.
- The home screen speaks plainly. The tile descriptions dropped the method names, the Decisions tile says games rather than a size of game, and the group is called Decide and plan. Hub hints trim to the last whole word that fits instead of cutting mid-word.
- Charts fit what they are drawn in. Outputs that cannot honestly share one value axis now get a panel each, in their own format. The finding on a chart clamps to two lines, a drawing bigger than its window opens at Fit rather than cropped, and a chart with no title is named by what it is rather than "Chart". The frontier's best point kept losing its label at narrow widths, and now moves into the chart's key when there is no room beside the data.
- Refusals and waits are honest on screen. "No input distributions" rings the first card's cell box in red rather than stating it somewhere else. A trial count above the engine ceiling says so in the button while the run goes. The wait before a solve says what it is and stays in view.
- "Recommended by the advisor" now only appears when the advisor sent you. Anything that preselected a tool used to claim the advisor had chosen it. A template now announces itself by name instead.
- Load a saved model from any tool. The save-or-load fold, and the Load a saved model link with it, was only mounted for tools that had an exporter, so the first tool many people open had neither. It is on every tool now, and the Risk tab has one fold worded and ordered like everywhere else.
- Fixed, from a tester round: nothing in the visible instructions ever told you to click a cell, which is now a line in every template that has input cells; three-point estimates got a glossary hint for optimistic and pessimistic; and several templates whose notes opened by describing themselves now open with the plain answer, including the Monty Hall one, whose title now says what it does.
2026-09-12
- Decisions and Project Planning draw their subject. These tools used to answer with a table and a sentence. Seven new kinds of picture now draw the thing itself: decision trees, payoff tables, Gantt charts with a network view, the critical chain fever chart, earned value, the risk matrix and stacked comparisons. Trees draw left to right with the rolled-back values on them, the best path picked out and a cut mark on each rejected branch. Gantts draw float as a hatched extension, dependencies as elbow connectors, and critical bars picked out, with an activity-on-node network one click away. They draw live in the builder as you type, and again as the result.
- A two-way sensitivity map. Vary two inputs at once and get a grid colored by which option wins in each square, with your base case outlined and named, and a hover that gives both input values, the winner and its value. It is the picture that answers "over what range does my answer actually hold".
- The Gantt shows criticality before and after mitigation. Risk events attach to tasks, and each bar carries a two-tone edge with a legend reading before and after mitigation, so what your mitigations bought is visible on the schedule rather than in a separate table.
- Charts zoom, pan, print and save as SVG. Wheel or pinch to zoom about the pointer, drag to pan, a four-button bar for out, in, Fit and 100%, and keyboard equivalents. Print or save as PDF prints just the title, the chart at page width and its reading. Save chart as an SVG sits beside the existing image export. The payoff grid in the dialog is editable and re-solves as you change it.
- Game Theory solves any size of game. It was two-by-two only. It now reads any block you select, finds best responses, pure equilibria, strict and weak dominance and iterated elimination, and a four-by-four selection is understood as the three-by-three game it holds rather than refused or cropped.
- See the model before you solve it. Point the Decisions or Project Planning tab at a table and it reads it and draws the model in place, before any run. A table it cannot read draws the reason with the offending sheet row lifted to the front.
- A tool picker a stranger can use. Instead of a list of method names, one line per tool naming the question it answers, and an Open a working example button that loads that tool's template in a single press. At rest the picker collapses to one row, the chosen tool and its question, so the range box is on the first screen.
- No dead ends after a result. Every result now offers what comes next: change a number and run again, try it on your own table, save this model as a file, or open it in the builder, and the builders open on the table you were just working with.
- Schedule Risk runs in the tab. It runs in slices with a real progress bar and a Cancel that stops it, rather than as one long wait.
- Save or load a model as a file, on most tools. Weighted Scoring, criteria scoring, Game Theory, Critical Path, Critical Chain, Risk Register, Earned Value and the S-curve can all write their model out and read it back. Loading now previews before it writes: the plan box names the tab it will make, where it opens, its size and every cell with what that cell is and its note, and only then does the confirm button write anything, with exactly the text the preview showed you.
- Fixed: text beginning with an equals sign landed as a live formula. An option name, a task owner or a label starting with "=" went into the sheet as a formula through every one of these doors. It lands as text now, and only the cells the layout step marked are ever live.
- Fixed: a failure part way through writing a tab left the wreckage behind. It used to leave a title-only tab, and a retry then landed on "Name (2)". The half-written tab is now taken away again and the panel says so in one sentence.
- Weighted Scoring sensitivity reads as shares. The table now says a criterion is at 25% of the weight now and flips the winner once it reaches 40%, with a line on how to read it, rather than leaving you to interpret a weight. Ranks mode solves the flip point exactly rather than approximating it, no longer misreads points-shaped scores, and the chart stopped showing raw weights multiplied by a hundred.
- Fixed: the Neural Network was always a regression. The Classification or Regression choice never left the panel, so every network was fitted as a regression whatever you picked.
- Fixed: a developer warning appeared when you opened a tool from home.
- A dropped connection in a builder no longer loses what you typed. If Create fails because the connection went stale, the model you were about to send is kept, and the dialog offers to restore or discard it.
- Example tabs are named "Example: something". All 52 of them, consistently, and each remembers its old name so reloading replaces the old tab rather than leaving two.
- Fixed: the shortest-route template gave a different answer every time. It now carries a seed, so the distance its own notes quote is the distance you get.
2026-09-07
- Every number a template promises was checked by running it. The notes inside 323 templates carried 5,846 numeric claims, and nothing had ever run them. We executed 2,174 of those figures through the same route a reader takes, and corrected 131 of them, plus 39 more that were inconsistent with each other. One example is worth naming: a template whose whole subject is reproducibility opened by asking you to set a rate to 42, seed 2026 and press Run to see a stated number, and since the generator change on 2 September those were no longer the numbers you got.
- Fixed: a template that cannot load completely now says so. If a template declared a field the panel did not recognize, the field was dropped in silence, and the panel then ran a model that was not the one the template described. Every surface downstream went on to describe the wrong model with complete confidence. It now collects what it could not apply and refuses out loud, naming each field and what to do about it.
2026-09-06
- Fixed: a wrong percentile on the sheet-engine path. The report built on that path sorted the trial values as text rather than as numbers, so a set of results like 0, 3,000 and 20,865 came back in the wrong order. On the model that found it, P90 read 35,284 where the right answer is 42,430. This was not a mis-drawn chart, it was a wrong number, and it is now sorted numerically.
- A new template: how big should the emergency fund be? It sizes the fund against your own income and spending, and then says whether to add a specific amount or free one up, with the return you give up by holding it stated and the extra said in months of coverage. It runs on free distributions, because learning how this works should not be gated.
- Three charts that were hard to read, fixed. A histogram title claimed the 80th percentile while the readout directly beneath it said 90 in 100. Marker labels were drawn into the y-axis gutter, so the reader saw two labels printed over each other. An axis printed the same rounded label at five different heights. The arithmetic behind all three was right; what you were shown was not.
- Chart titles are no longer crushed by their own buttons. A title like "Each driver walked alone, P10 to P90" could render as two characters plus an ellipsis, which is nothing at all of the sentence the chart exists to say. Titles now wrap by default.
- One distribution card can name several cells. Typing C15, C22 into a single card is the obvious way to say that two cells share a distribution, and it used to fail with "Could not read". Each cell named on a card now becomes its own input with its own draws, and the field says what it takes instead of saying "Input cell" and quietly accepting a pair.
- Fixed: loading an Optimization template from the gallery arrived with nothing to solve. The constraint table came through empty, and the solve then refused with a message about nothing stopping the objective improving, which is true but useless when the reason is that the template never got its constraints. The same pass fixed a threshold marker printing its value twice and a count that read "1 more variable cells".
- The template shelf stops spending your free runs before you have seen anything. Of the first 24 cards a new user met, 23 were Pro. The shelf now interleaves, the first card is always free, and nothing was dropped, duplicated or reordered inside its group. Searching still returns the library's own order.
- Fixed: running out of free runs showed a failure instead of the upgrade card. The refusal arrived as a red "Simulation failed" with an unclickable web address in it, because the panel was answering from a cached copy of your plan and never learned it had hit the limit. You now get the card, and the button.
- Watching a run fill in works in the full-size chart window. Opening a chart full size used to take the replay control away with it.
2026-09-05
- Optimization draws its answer, not just its search. A new chart walks each decision cell from its starting value to its final one, biggest move first, and names the largest mover in the title. A second chart measures every constraint against its own limit, with the limit as the zero line and the binding rows marked, so what is actually holding the answer back is visible rather than inferred. The stochastic optimizer gets the same charts, and the written report carries the constraint chart too.
- Two new engines: project schedules and decision trees. Schedule Risk runs a full simulation over a task network rather than a single critical path, drawing durations from any of the 34 distribution families and reporting how often each task lands on the critical path and which tasks drive the finish date. Decision trees roll back a tree of choices and chances, extract the best policy, price what perfect information would be worth, and sweep a probability to find the point where the recommendation flips.
- Optimization under uncertainty got an efficient frontier. Ask for the best answer at each level of risk and get the whole trade-off curve, with every point using the same random draws so the points are comparable, and an infeasible request stated as a verdict rather than left as a shrug.
- Forecasting got real models underneath it. Eight exponential-smoothing models with damped variants, chosen automatically and with the choice named in the output, plus a stepwise automatic ARIMA. Both carry exact prediction bands rather than an approximation of them.
- Correlated inputs can be pasted as a matrix. If you already have a correlation matrix on a sheet, point at it instead of typing pairs. The diagonal is forced to one, an asymmetric matrix is averaged, and if the matrix is not one a sampler can actually use it is repaired and every pair that moved is named in plain words.
- A forecast can become a simulation in one step. A new door on a forecast result writes a simulation model from the forecast's own bands and fills in the Risk panel. The forecast stays free; the door says plainly that running the simulation spends a run.
- Optimization now handles models up to 10,000 decision cells. Past the size the ordinary engine covers, a sparse engine takes over with a progress ticker, and every answer it returns is checked by an independent verifier before you see it. At full size the measured time is 22.7 seconds when each constraint touches only a few cells, and minutes when everything is coupled to everything, and the panel tells you which to expect before it starts. If the check fails, the model falls back to the proven path where it fits and refuses honestly where it does not.
- Every chance the product states now reads as a count out of 100. "23 in 100 runs" rather than a bare percentage, in one voice everywhere, with a bar under the threshold control that splits the runs below, between and above and always adds to 100.
- You can watch the histogram fill while the run goes. The distribution builds up as trials arrive, the percentiles settle in front of you, and any finished run replays on demand from the draws it kept. Reduced motion gets the ticker instead.
- Hold a driver high or low and see what happens to the answer. A new explorer takes the top or bottom third of any driver's own draws and redraws the histogram, the chances and the budget bar from just those trials, with the condition named, the number of trials in the subset printed, and a reminder on screen that this is not the same as causation.
- Charts got a great deal better at saying what they found. Every chart now leads with the computed result in its title and demotes the variable to a subtitle, labels never overlap, numbers are formatted one way throughout, values sit on the marks where they fit, series are named on the line rather than in a legend, and every chart carries a plain-language line describing what it shows. Hovering or tabbing to a point gives you a tooltip, and in the wide window you can pin one, drag a threshold and read the chance live, set the axis by hand and change the bin density. Exports drop the interactive layer.
- Multi-output runs draw their outputs together. One chart with every output's cumulative curve, directly labelled, which is honest here because the outputs share the same draws. There is also a quantile dotplot beside the histogram for anyone who would rather count dots, a box-plot row, a percentile-band trend chart when the outputs form a series, and scatter plots for the six ranked drivers that you can reach by clicking a tornado bar or with the keyboard.
- Fixed: charts that dramatised noise. Five places scaled a value axis from the smallest and largest value they had and only guarded against them being exactly equal, so an objective that barely moved was stretched across the whole plot and read as a steep decline. That mattered most for the optimizer, whose objective is a statistic of a simulation and therefore wanders by construction. Flatness is now judged relative to the size of the numbers themselves, and a run that did not move says so instead of drawing a story.
- Fixed: reports that never stated a finding. The two-factor ANOVA finding read a field its engine does not produce, so it came back empty on every single run, and nine more report surfaces shipped with no finding line at all. There is now one way to build a report panel and it demands a purpose line and a run-specific finding, with the Optimization finding placed in the first row of the first table so the answer comes before the tables.
- Template quantities say what they are. A corner header read as a title, columns carried no units, durations were printed as decimal hours, paired columns went unexplained and judgment inputs named no source. Six labelling rules and a check against them took 796 findings across 255 templates to zero, and decimal hours now read back as hours and minutes everywhere.
- Reports talk about your problem, not about themselves. The copy was written from the software's point of view and read like documentation of a form rather than an answer to a question. Nine report surfaces and all 48 Data Analysis purpose lines were rewritten. Wording only: no number, threshold or claim moved.
- Progress now measures the thing that will actually stop the run, and names it. An Evolutionary run could read "Solving 1%" at generation 11 of 2,000 while 102 of its 300 seconds were already gone. Every ticker, on Evolutionary, Nonlinear, the simulation, the stochastic optimizer, the frontier sweep and the Monte Carlo panel, now shows the limit that will end the run first and says "Ends on" in the same words everywhere.
- A finished run is no longer lost to a stale session. If your sidebar session has gone stale by the time a long solve finishes, the answer is held and shown rather than failed: the values, the objective and the charts are drawn from what the page is holding, with a link to save it to the sheet once you have reconnected. Notices that are not urgent now wait until a run ends instead of landing on top of the ticker.
- Fixed: a convergence chart that contradicted the report beside it. A run whose report said the objective moved from 249,620 to 243,443 sat next to a chart titled "did not move: 243k at every iteration". Both engines now start their history at the objective's starting value, which also fixes the live sparkline showing only the tail of the run.
- Fixed: a run refused because the active tab was the report from the last run. Writing a report inserts a tab and Google makes it the active one, so the next run read its ranges against our own output. The recovery for this existed but only five entry points used it, and Optimization, Risk and What-If were not among them. It now lives where the reading actually happens, so no tool can forget it.
- Report panels breathe, and Open full size says why it did not open. Every paragraph claimed nearly twice the height it needed and floated in its own pool of empty space. The button that failed silently now revives the connection once, retries, and if it still will not go, says so underneath, naming the cause and the one thing that fixes it. The ceilings table on the performance page stopped running off the page.
2026-09-04
- Four more distributions, bringing the set to 34. Log-uniform, inverse Gaussian, F-ratio and inverse gamma, each with a guide page and an entry in the guided questions, and every count in the product moved to 34 in the same release. All thirty existing families produce bit-identical results to before.
- Set a threshold before you run and the report answers it. Say what number matters and the chance of clearing it appears in the report. Some tools call this a certainty level.
- Two more ways to read the tornado. A third view shows each input's share of the variation rather than its swing, with the caveat that goes with that on screen rather than buried in a tooltip, and a spider chart is available behind a Draw it button. Drawing it spends nothing.
- Optimization stops refusing models it can work through. A linear model too big to solve instantly used to be refused outright. Models up to 5,000 decision cells now run in slices with a progress bar and a live pivot count, and cancelling says the honest thing: stopped before the proof, no answer written. Whole-number models keep the instant ceiling and their refusal says why, and what dropping the whole-number requirement buys you.
- The ceilings went up, on measurement. The instant linear ceiling moved from 1,000 decision cells and 400 constraints to 2,000 and 600, measured at 1.3 seconds at full size, and the whole-number ceiling moved from 100 to 500, with 500 yes/no decisions proved in 1.6 seconds. A long-standing anti-cycling rule was being held on when it was no longer needed, which had left some models unsolvable; one benchmark model went from never finishing to 3,646 steps in 431 milliseconds.
- The performance page says what a ceiling counts. The ceilings read low if you think they measure the size of your spreadsheet. They measure decision cells, the simultaneous unknowns the engine solves for, and 40 of those can be fed by 200,000 cells of data. The page now gives the definition, that example, the separate limit on how much data is read, and where the ceilings come from.
- Fixed: a correlation of 0.995 was printed as a perfect 1. The verdict line rounded any correlation at or above 0.995 up to r = 1, which claims a perfect relationship the data does not support. Correlations now have their own formatter that refuses to round to a number it cannot certify.
- 362 templates reconciled. Tab names standardized, the last places that still said Solver reworded to Optimization, input cells that claimed to drive something wired to what they claim, and guidance that told you to edit blue cells that do not exist removed. Several templates had figures in their notes that were simply wrong, including best and worst cases written as constants rather than computed, and those were recomputed from the real runs.
- Fixed, from a reliability pass: pressing Enter could fire one run for every time you had visited that panel; an error inside the progress ticker could leave a panel stuck as busy with a Cancel button that did nothing; a missing timeout meant plan badges could silently never appear; and saving your forty-eighth scenario crossed a cell size limit with no message at all.
- The search box understands more of the words other tools use. Certainty, correlation matrix and the fitting and convergence words now find what they mean here.
2026-09-03
- The guides and the chart expander open instantly. The distribution guide, the optimization method guide, the tool guide and expanding a chart all used to ask Google's servers to build a window, which takes about two and a half seconds no matter how little work it involves. They now open in the panel from what is already loaded, in about twenty milliseconds. Every one of them keeps an Open full size link for the wide window when you want it, and expanding a chart now shows the whole result rather than a trimmed copy of it.
- Coming back to a tool you have used before fills most of the form instantly. Everything that does not depend on which tab you are looking at, your options, trial counts and settings, now appears the moment the panel does instead of after a wait. The cell addresses still wait, because only the server can say which tab you are on.
- Panels appear before they start talking to Google. The one call a panel makes when it opens now happens after the panel is on screen rather than while you are waiting for it.
- Fixed: the cell you had selected sometimes did not fill in. On the first panel you opened in a session it silently filled nothing, and on later panels it could use a selection you had already moved away from. It now waits for the answer to the question it is asking.
- The home button no longer asks Google for a panel you already have. Pressing the house icon rebuilt the whole sidebar on the server, about two and a half seconds, to show a screen that was already loaded in the tab. It now switches instantly. The older standalone panels still have to ask, and they now answer the press immediately instead of sitting silent.
- Starting a simulation is about five seconds quicker. Every click that reaches Google's servers pays roughly two and a half seconds of the platform's own overhead before any of our code runs, and Risk Analysis was paying it three times over, one after another, before the first trial. Saving your inputs, reading your model and reading its number formats now all go out together instead of queueing behind each other. Optimization gained the same treatment. This does not make Google faster; it stops us asking three times when once will do.
- The tools you are about to open start loading before you click. Hovering a door that opens a window now begins the work, so the click lands on something already in progress rather than starting from nothing.
- Buttons that reach the server say so immediately. Several controls, including Activate your key, sat silent for the whole wait with nothing on screen. Every one of them now answers the press in the same instant.
- A measurement you can check. The timings above come from a rig that drives the real interface in a browser with the server delay held at its measured value, and it is committed alongside the code, so the next change to any of this can be measured the same way.
- Sortia opens as soon as it is ready. The opening screen used to stay up for a set time even when the tool was already loaded behind it, which spent about a second of every open on branding. It now lifts the moment the panel is there, and the drawing on it finishes early or late depending on how long the real load takes.
- The cell you already had selected fills itself in. Open Risk Analysis with your uncertain input cell selected and the first row arrives filled, marked as coming from your selection, with one click to clear it. Selecting a block of cells offers to set up a row for each one rather than doing it without asking. Nothing is filled if you have started typing, or if the field already has a value.
- The dialogs move the way the sidebar does. The template library, the tool advisor and the two reference guides now share one set of transitions with the panels, one hover behavior, and the same treatment of depth. If you have reduced motion turned on, motion in these windows is now removed rather than merely quicker.
- Every panel now opens with one quiet line of help at the top. Guide, Templates, and where they apply, Open in builder and Load a saved model. The guide used to sit underneath the form it explains, which is the wrong end for anyone who does not already know what the form wants.
- Where results go is a setting you can see before you run. It sat below the results on every panel, so it drifted further down the page after each run and most people found it only after a run had gone somewhere they did not want.
- Re-running after reading a report no longer risks running the wrong sheet. Opening a report makes its tab the active one, so a second run could read the report instead of your model. Sortia now remembers the tab your model was on and reads that, unless you have deliberately moved to another sheet of your own.
- Results lead with the answer. The card used to headline the run, trials and seconds, with the answer smaller underneath. The answer is now the headline, in your own cell's format, and Optimization states its answer in the panel instead of leaving it on the tab. Opening the report is the first action offered, where before the only thing you could click was Undo.
- Choosing a tool in Data Analysis is a search box that browses. Thirty-eight tools sat behind a plain dropdown with no search. It now shows everything grouped by category when you focus it, keeps your recent tools at the top, and filters as you type.
- Earned Value stops one click from a verdict built on example numbers. The tool shipped with figures already in the boxes. They are now shown as examples, and the button says so, until you type your own.
- The tool advisor and the template library got their keyboard and focus behavior fixed, and the home panel keeps its three doors in place instead of letting suggestions push them down the screen.
- Reports gained the charts they were missing: Schedule Risk now draws the completion curve and the critical-path shares it was only describing in numbers, and an Optimization report shows what each decision changed. Shared optimization runs record their seed, so someone else can reproduce them.
- Fixed, same day: loading a template could still replace a tab without asking. The confirmation shipped this morning was never able to run, because the gallery did not tell the dialog which tab a template writes. That made the new one-click load button on each card a one-click replacement of your work in the case where a tab from a previous load was already there. The gallery now carries the tab name, the confirmation fires, and a test checks the data rather than the wording, so it cannot go quiet again.
- Fixed: pressing Enter no longer runs a model you have not looked at. Enter has always run the panel you are in, and this morning it started reaching forms that arrive already filled, from a template or from your last session. Enter now waits until you have typed, changed or clicked something in the panel, so a form Sortia filled in cannot be run by a stray keystroke.
- Fixed: the sheet-engine wait told you a number nobody measured. It estimated the wait at 2.5 seconds per sheet recalculation, which is this product's figure for a completely different thing. It now says how many recalculations the run needs and what the time limit is, and leaves the speed to your sheet, because that is the part we do not know.
- Fixed: a paid report reprinted the product name it paid to remove. The new provenance line stamped Sortia's name on every report. Paid reports keep the build reference, which is what makes a shared tab traceable, without the branding.
- Loading a template is one click, and it asks before it replaces anything. Every template card now carries its own button, so going from the gallery to a filled-in model no longer passes through a details page first: the path from the gallery to results is three clicks, down from four. And if loading would overwrite a tab from a previous load of that template, Sortia says so and asks first, instead of replacing it silently.
- A simulation now tells you whether the answer has settled. Every run, not just the ones with early stopping switched on, reports how much the average is still moving: a running figure with its 95% confidence range, in your own cell's number format, and one word for the state of it, Still moving, Settling or Steady. When the run finishes, the convergence curve is kept as a chart rather than thrown away, so you can see whether more trials would have changed anything.
- A finished simulation no longer loses its results to a busy document. Optimization got this in the last release; Risk Analysis has it now. If the sheet is busy when a long run finishes, the results are held and the write retries, and the message says the writing failed rather than blaming the simulation.
- The optimizer shows the number you are actually optimizing. On a model with constraints, the running best value was an internal search figure that included a penalty, not your objective. It now shows the objective. The stall counter, which was a bare number, now says in words how long the search has gone without improving, what it does next, and what Cancel keeps.
- Reports carry their own provenance. A written report now records the date, the model tab, the engine, the trial count and the seed where there is one, so a tab you forward to someone else can answer what produced it. A run that was cancelled or stopped early says so in the report, where before it was indistinguishable from one that finished.
- The interface got a pass for depth, motion and feel. Buttons and controls now answer a press. Panels, cards and fields sit at deliberate depths, built with light rather than shadow, because a shadow on a near-black background does nothing. Everything that appears does so with one consistent gesture rather than four different ones, and everything that moved for decoration rather than meaning was removed. If you have reduced motion turned on, the motion is gone rather than merely quicker.
- Fixed: the free-plan footer stamp wrote over the Mean row of the Monte Carlo statistics table; the older histogram charted the header cell and dropped the last two trials; the reproducibility seed could govern an optimization run while its field was hidden; and a button in the results destination control rendered unstyled.
- The optimization engine prices its pivots by measurement. Inside a whole-number search, 94% of the linear programs the engine solves start from the parent's answer and repair it with a few dual simplex steps rather than solving from scratch; that path now chooses its pivot row by steepest edge, which cut the benchmark's hardest instance by about 15% with every proof intact. The same rule was also tried on the main pivot loop, measured slower at this engine's sizes, and declined: both experiments and their numbers live in the benchmark, and the default is whatever the benchmark proved faster.
- Answers survive a busy document. When a solve finishes in the browser and the sheet is busy taking writes from another run, the write-back now waits the contention out on its own: the server retries with widening pauses inside a single call, the panel retries three times on top, and if the tab is in the background when retries run out, the finished answer is held and saved the moment you switch back. A blank report tab left by an interrupted write is now recognized as ours and cleaned up instead of being preserved as an empty "(backup)" tab. Real tabs with your own data on them are still never deleted.
- Runs keep full speed in background tabs. Browsers slow a hidden tab's timers to once a second, and after five minutes to once a minute, which stretched a simulation or solve left in a background tab from minutes into hours and kept the document busy for every other tab the whole while. The long engines now schedule their work through a channel the browser does not throttle, so switching tabs mid-run no longer slows the run or anyone else's.
2026-09-02
- The sidebar and dialogs open faster. Every open used to assemble its page on Google's servers from parts, about 1.4MB of assembly work per open, and the browser then parsed a 300KB search index before showing anything. The pages are now assembled once at build time and served ready-made at 792KB, and the search index loads quietly in the background after the panel is already on screen. If you type a question before it arrives, the answer appears the moment it lands; nothing is dropped. The template library, distribution guide and advisor dialogs got the same treatment.
- Models that look up their numbers now export. A VLOOKUP or HLOOKUP with a plain key against a plain key column, the way a ratings model looks up each team's rating by name, always lands on one cell decided before the run starts. Exporting a model as a spec now resolves the lookup to that cell instead of refusing. A lookup whose landing row genuinely could move at run time still refuses, and the refusal now names the reason and the fix, down to the one-word change when the fix is adding FALSE.
- The random number generator was upgraded. The engine's generator moved from a 32-bit-state design to sfc32, which carries 128 bits of state, because at a ceiling of one hundred million trials times dozens of draws per trial, 32 bits stops being a margin. Runs stay bit-identical for the same spec and seed on any machine, as before. Seeded results differ from the old generator's, which is why this happened now, while the product is young: nothing outside the engine depended on the old stream, and the homepage demo runs the same sfc32 the product ships.
- Long runs are priced before they start, from a measurement. Above a million trials, Risk Analysis now times the first two thousand trials of your actual model on your actual machine and tells you the projected total before it commits, replacing a fleet-average figure that was wrong for any particular model. During the run, the ticker shows time left measured from the run's own pace, updating as it goes.
- A new template: Did the Automation Deliver? Twelve recurring tasks timed before and after an automation rollout, run through a paired comparison. The sheet turns the verified saving into hours a year, a dollar figure and a payback date without anyone typing a conclusion, and the note spends its honesty on the two tasks that got worse, the post-rollout weeks that flatter, and the maintenance hours that erode the win.
- Counted: the clicks from a model to its results. Eleven mouse clicks from a model on your sheet to a distribution of results, nine with the default bell curve, four from a template, no dialogs, under a convention strict enough to count clicking into a field. The count and its method are on the performance page, and the build fails if the interface changes without a re-count.
- Stop early once the answer is steady. An opt-in check in Risk Analysis: every 5,000 trials, once the average's 95% confidence interval is inside 1% of the answer's own scale, the run stops and says so, and the report shows the trials actually run. Checks land on fixed trial marks, so a seeded run stops at the same trial on every machine. Some tools call this precision control.
- Enter distributions as percentiles. If what you know is a P10 and a P90 (and a P50 for triangular), a new control on Normal, Lognormal, Uniform and Triangular inputs solves the parameters that reproduce exactly those percentiles, shows its work, and stores only the solved parameters.
- Scenario analysis in every simulation report. After the tornado: for the trials where the output landed in its highest and lowest 10%, what each input's median was, and how far that sits from its usual value in units of that input's own spread. The question a planning meeting actually asks of a bad quarter.
- Distribution fitting grew up. Fit every column of a range at once (one block per column plus a best-fit summary), and every candidate now carries three verdicts: the worst single gap, a tail-weighted statistic, and a likelihood score that charges for extra parameters, with plain guidance on when to trust which.
- A new distribution: Compound (events × cost). The total of a random number of events, each with a random cost: claims in a year, outages, warranty hits. One input instead of a fixed-count column, with its own entry in the distribution guide and the guided questions.
- Models that speak another tool's dialect are understood. Search the template gallery for assumptions, iterations, solver or spider and it now finds what those words mean here, and the panels say so in their own help text. Exporting a model that looks values up with XLOOKUP or INDEX/MATCH now works the same way VLOOKUP does.
- Fixed: the status dashboard now shows which build a tab is running and reloads itself once if it gets stuck, so a long-open tab can no longer sit quietly on yesterday's page.
2026-09-01
- Two new tools: Association Rules and Classification Tree. Association Rules is market basket analysis: give it one row per basket and one column per item, and it finds what genuinely gets bought together. It sorts by lift rather than confidence, because confidence rewards whatever is simply popular, and in a cafe every rule ends in coffee. Classification Tree learns a stack of yes/no questions that sorts rows into categories, and then prints the questions, so the rule is something you can read out loud, argue with, and apply by hand rather than a score you have to take on faith.
- The classifiers now tell you what they are actually worth. Logistic Regression used to score itself on the same rows it learned from, which flatters every model ever fitted. It now keeps a quarter of your rows back, never fits them, and reports both figures side by side so the gap between them is visible: a wide gap means it has memorised rather than learned. It also reports AUC, which is the number to trust when the outcome is rare, because accuracy can look excellent by predicting "no" every single time. The Classification Tree prints the same held-out score next to what you would get by always guessing the commonest class, and says plainly whether it beat it.
- A new table: what happens if you act on only the top of the list. Ranked by predicted probability, how much of what you are looking for sits in the top ten per cent, twenty, and so on. This is the question a targeting decision actually asks, and until now the answer only existed as a sentence in one template's notes.
- Choosing a solving method has a guide of its own. The "?" beside Solving method in Optimization opens the same kind of surface as the distribution guide: answer two questions and it recommends Simplex, Nonlinear or Evolutionary, or browse all three with what each one does, what it cannot tell you, and the real cell ceilings.
- Exporting a model no longer refuses on ordinary data. A column of raw numbers feeding a total would be rejected once it passed a thousand rows, even though the same model ran on the sheet without complaint. Those columns now export cleanly.
- Fixed: a lost connection now offers the one-click way back on every panel rather than only two of them; a long optimization checks the connection before it starts rather than dying five minutes in; AI readings that were complete and useful were being discarded for being a hundred characters too long, and now arrive; a run that is interrupted says so instead of going quiet; and the results chart from a previous run no longer sits on screen during the next one.
2026-08-30
- Optimization proves more, and never pretends. The whole-number solver was rebuilt: problems that used to time out after seconds now come back proven in milliseconds, and one case that quietly returned a wrong answer labelled optimal is gone. When a search does stop early, the result now says so plainly instead of borrowing the word "Optimal". The Nonlinear engine gained a gradient method that reaches better answers in a fraction of the time, and its result names the method that produced it. Every published ceiling on the performance page was measured, and the build fails if the site and the engine ever disagree about a limit.
- Simulations run several times faster. The Monte Carlo engine was rewritten in its hot loop: ten thousand trials in a few milliseconds, one hundred thousand in under a tenth of a second, with correlated inputs faster still. Seeded results are unchanged to the last digit, and the same speed-up reaches Schedule Risk.
- Editing a template can no longer produce confident nonsense. Deleting or adding rows moves your formulas but could leave the Sortia panel pointing at the wrong cells, and a solve would then return zeros with no warning. Both engines now check before running and, if the panel has drifted, stop and say which box to fix.
- Analysis reports carry your names. A summary of a column used to drop who each row was about, so a roster fairness report could not say who was carrying the weekends. Reports now keep your labels, and the two-factor tables name your factors.
- Every cell is yours to change. The color key on every template now opens by saying so, including the title, and then explains what each color is for. On the nursing templates, "call out" became "call off", mandatory overtime says what it means, and the 2,080 hours figure explains itself (40 a week times 52).
- A new page: Performance. The measured ceiling of every engine, the benchmark that produced each figure, and what the tool does when you reach a limit. Only our own numbers, re-measured on every engine change.
- Fixed: heavy statistics runs got dramatically faster at large sizes (a two-factor ANOVA at the 500,000-cell ceiling dropped from ten seconds to a fraction of one) with results identical to the last bit; the Evolutionary engine finds noticeably better answers on the same budget and says why it stopped.
2026-08-29
- Plain words everywhere a template used shorthand. Column headings that assumed you already knew the jargon now spell it out: Preds is Predecessors and Prob is Probability, on every template that used the short forms. The histogram guide says what a bin actually is and what happens to the picture when you make them wider. Mean against median gives you the rule for what counts as far apart instead of only the phrase. Skewness and kurtosis keep their precise wording and gained a plain sentence underneath. Five more fields that named the tool's own machinery, like Trials per candidate and Generations, now say what they are for.
- Six templates renamed. Catch the Fat-Finger Entry is now Catch the Outlier Entry. Deadline Brinkmanship and Find the Long Pole went the same way, along with three others whose names were a joke at the reader's expense rather than a description of the work. Names people actually search for, like Hurdle Rate and EOQ, stayed exactly as they were.
- Reports call your things by your own names. A two-factor ANOVA used to report on "Sample" and "Columns" when your sheet already said Deck oven, Convection, Sourdough and Rye. Every tool that prints a table now reads the labels off your sheet and uses them, instead of printing the textbook's words over the top of yours.
- The gallery opens on the Starter models rather than on all 355 at once, and every template now carries a line on adding and removing rows. The color key says which cells are labels you are meant to rename.
- Fixed: running a tool, clicking the output tab to read the answer, then running again was refused, because Sortia was looking at a tab it had written rather than at your model, so every report now remembers the sheet it came from; a grid that asked for Rise did not say whether it wanted centimetres or degrees; Goal Seek, which moves a single cell, now points you to Optimization when one cell is not enough instead of simply stopping; step three of the instructions now says the report is written to a new tab in the same spreadsheet and that nothing is downloaded.
2026-08-28
- The AI reading waits long enough for the model to answer. Longer results were being cut off part way through, so the reading either arrived truncated or did not arrive at all. It now allows the time the model actually takes.
- Fixed: the "Sortia was updated, reconnect" notice could reappear immediately after you reconnected, and keep reappearing, because it compared two different things and never agreed with itself; switching to another tab in the middle of a run no longer breaks the run; the figures in a risk report are named and formatted the same way on every surface that prints them.
2026-08-27
- Template 355: What Is This Comp Package Really Worth? Base, bonus, equity and the odds attached to each, valued as one package rather than as a list of best cases.
- Fixed: the first click on Sortia's card, before Google's permission prompt had been answered, could show a raw error instead of asking for access, which meant a new install's very first action could fail with a message written for a developer.
2026-08-26
- Every template in the gallery run end to end and audited. All 354 were opened, run and checked against what they promise. Fifteen serious problems were fixed, most of them shared by families of templates rather than confined to one, so the fix reached every template with the same shape.
- Template notes state their own numbers. Around a hundred worked notes were rewritten to walk through the result the template actually produces, with the figures from that sheet, instead of describing the method in the abstract. Forty of them named a column by its letter where they should have named the column.
- Every template card asks one short question, so the gallery reads as a list of questions you might have rather than a list of techniques.
- Fixed: the homepage advertised 224 templates while the gallery served 354, and a test now fails the build if those two ever disagree again; a job-shop template ran the wrong engine; a wedding template offered a figure it had no way to compute.
2026-08-25
- Four claims that were not true came off the site, along with every comparison written against another product by name. What is left is what the product does.
2026-08-24
- Every error message rewritten. Roughly 285 messages across the add-on now say what happened, where it happened and what to do about it, instead of restating the rule you just broke. Score an option 30 on a criterion whose Max points is 20 and Weighted Scoring used to tell you that 30 was above 20 and stop; it now names the cell, says what Max points means, and gives you both ways out and what each one costs. A selection too big to read says how many cells it covers, why that is the ceiling, and what a range that works looks like. An expired key says Pro is switched off, that every free tool still works as before, where to renew, and what to do if you have already renewed. Nine in ten messages now end in something you can do, against fewer than two in ten before, and half of them name the exact cell, row or range.
- Error messages no longer repeat back what you typed. A failure used to quote your option names, criterion names, tab names, column headers, or the contents of the cell that would not parse, and error text is written to the add-on's log where a developer can read it. Every one of those now names the location instead: the cell, the row, the range. What is left in a message is a number, a position, a cell reference or Sortia's own vocabulary, and a test now fails the build if that stops being true.
- Type that holds its shape when the web fonts do not load. The site and the sidebar use one stack per role now, and each fallback was picked to keep the page looking like itself rather than merely landing in the right category: Georgia then Cambria behind the serif, the platform humanist sans behind the body text, the platform monos behind the figures. On a slow connection, on a locked-down network, or anywhere a web font is stripped, the page keeps its proportions.
- Fixed: four Project Planning readers reported a row's position in the table they were handed rather than its row on your sheet, so a duplicate ID on row 15 of a table starting at row 10 was reported as row 5.
2026-08-23
- The site rebuilt as one site. Every page carries the same header and the same footer, so install, pricing, templates and support are one click from anywhere. Every template page now links up to a method hub, where most of them used to link nowhere, and five hubs are new: statistics, machine learning, forecasting, optimization and what-if. Two new pages: Start here, a walkthrough for anyone who has barely used Google Sheets, and Tell someone, the message you would send a colleague.
- A warmer palette. The cold near-black behind shaded sections is gone for a deep forest green, the accent that stands for a range moved to the yellow-green a firefly actually emits, and the light sections moved from cool paper to golden light. Every text color on every ground was measured again, and not one pair reads worse than it did.
- Template sheets describe themselves accurately. The color key and the side rail now match the sheet in front of you: 76 templates had promised a dark answer cell they do not have, and 70 advertised a color for calculated cells they never used. A name you type is colored like a figure. Nineteen worked notes answer, on the sheet itself, the things people were getting stuck on: what Max points means, what the scoring scale is, which row is the root, how a volume price break is entered.
- Contact by purpose: privacy@sortia.io for data rights, support@sortia.io for support and license questions, hello@sortia.io for developers, billing@sortia.io for a team quote.
- Fixed: two decision templates printed figures inside their branch labels, so a root row went on asking "Accept $19,000 now or counter at $21,000?" after those values had changed; Pricing said a written reading comes with every result, when four of the 35 data tools return no reading; the Academic price was published in the page's machine-readable offers as though it were open to anyone.
2026-08-22
- Written readings of the result. After a run, a "What this means" card reads the result back in plain language: the probability that matters, the biggest driver, what to tighten first. Every install gets a reading the engine writes from its own figures. On Pro the same figures also get an AI reading, written by a language model, which is sent only the shape of the result (ratios, correlations, cell references) and never cell values, labels or formulas; any figure it invents is discarded. There is a switch per person, and a policy per domain that starts off, and a "See what was sent" disclosure on every Pro reading. The privacy policy inventories the payload field by field.
- Team and site licenses on one page. Three named licenses on one invoice, or one key for everyone at your domain. Details at Teams.
- 184 templates in the gallery, every figure computed by the engines.
2026-08-21
- The Project Planning tab grew from four tools to seven and now gates as one Pro engine. Earned Value and the S-Curve completion forecast were free before this date and are inside that gate now; anyone first using Sortia before 2026-08-13 keeps both, free and uncapped, under the Grandfathering Policy. Five full-quality Pro runs still cover them on the free plan.
- A Decisions tab shipped alongside it: weighted scoring, priced tradeoffs and 2x2 game theory, gated as one Pro engine, each with a guided builder dialog. The three new Project Planning tools are critical path, a risk register and resource load.
- Fixed: payoff pairs like "8, 8" were read as dates by Sheets, so Game Theory could not run; the S-curve looped on stalled progress and crashed at 100% complete; six verdict branches read field names their engines never emitted, so the three t-tests, Correlation and the two forecasters shipped with no explanation at all.
2026-08-15
- Anonymous usage counting, disclosed and durable. The add-on now reports opens, tool views and finished runs with day-scoped anonymous tokens; the privacy policy gained an exact inventory of every message in the same release.
- 27 new templates for construction risk (P80 schedules, contingency survival), FP&A (13-week cash, covenant headroom, budget envelopes), and the classics classroom (Monty Hall, the wildcat well, diversification). Every figure computed by the engines.
- License management: "Manage license" now shows your plan, end date and billing links, with a back button.
- Fixed: million-trial simulations no longer stall while writing the report; multi-output runs write every report; long panels always scroll to the bottom.
2026-08-14 to 2026-08-15
- The new home screen. The sidebar opens on a compact hub that fits without scrolling: three launch doors (Start from a template, Find the right tool, About Sortia) and the six tools. The template library became a full-screen searchable dialog with topic, level, tool and plan filters and a worked-note preview per template.
- One visual system across template sheets, output reports and charts: same header treatment, same color key, same tab color, readable figures everywhere.
- Faster: the sidebar payload shrank by roughly 60KB across two passes, dialogs pre-warm on hover, and the template gallery paints instantly.
2026-08-13
- Grandfathering published: anyone using decision trees, Schedule Risk or Critical Chain before the 2026-08-13 line keeps them, permanently and unmetered. Policy at /grandfathering.
- Team and site licenses: named-seat bundles (3/10/25/custom) and school/company site licenses, with seat management on /activate.
2026-08-12
- Engine pages: a public reference page per Pro engine, figures computed by the shipped engines.
- Gate messages rewritten to state exactly what stops and what stays free; free runs are full-quality, at the same size and trial depth a Pro license gets.
2026-08-10
- The free plan grew: every plan-tier size cap deleted. Free is the whole toolbox (statistics, machine learning, all three optimization engines, what-if tools), plus five full-quality runs of any Pro engine. Pro is the five risk and decision engines plus unbranded output. Correction, 30 August 2026: this entry originally said that every size cap had gone and that free was uncapped. That was true of the caps the license used to impose and was never true of the engine ceilings, which apply to everyone alike. The engine ceilings are now stated on /pricing and on each method page.
2026-08-06
- Sortia listed on the Google Workspace Marketplace.