September 2026
-
Xero joins the native ERP connectors. Connect a Xero organisation in one click — sign in, approve the grant, pick the organisation, and you’re done; there’s no developer account, client id, or client secret to obtain, and PlaidCloud keeps the connection authorized from then on. A Xero: Import Entity step pulls eleven Accounting API entities — chart of accounts, contacts, invoices, credit notes, payments, manual journals, bank transactions, items, tracking categories, tax rates, and currencies — narrowed by status, a date range, and a modified-since cutoff, with no query to write. A Xero: Post Document step posts manual journals, invoices, bills, payments, and credit notes back from a header and lines table, in any mix within one batch, with a test mode that validates every document before anything posts and an idempotent write path that never posts a re-run document twice. Where an outcome is ambiguous, a document is only reported posted once Xero confirms it in a settled state — anything else is held for you to resolve rather than guessed at. Every attempt lands in ERP Post History alongside your other ERP posts. See Connect to Xero.
-
Oracle HFM/FCCS self-serve extract. Pull ad-hoc data slices from Oracle Financial Consolidation and Close (FCCS) directly in a workflow. Connect with a service account, pick a point of view (Scenario, Year, Period, Entity, Account, and more) from metadata-driven selectors, and get a result table back — no ticket to the HFM team. Repeat slices are served from cache, the landed table is row-level-security-ready, and any slice can be promoted to a scheduled recurring load. See Connect to Oracle HFM/FCCS.
-
Import a named range or a cell range from Excel. The Import Excel step can now read a workbook-defined named range or a specific cell range (
Sheet1$A1:J100) as an alternative to reading a whole worksheet, and you can mix worksheets, named ranges, and cell ranges within the same import. The sheet picker lists named ranges alongside worksheets, so selecting one works the same way as selecting a sheet. A named range that refers to more than one disjoint area, or a cell range that’s out of bounds or inverted, is rejected with a clear error instead of being imported wrong. See Import Excel. -
A workflow run can post live, simulate, or skip its ERP posting steps. Every run carries a posting mode, chosen when you start it. Live posts exactly as it always has. Simulate has every ERP posting step build and validate exactly what it would post, then commit nothing and never contact the ERP — the would-post entries land in ERP Post History marked simulated, so you can review them before running live, and clear them independently of real posts. Off skips posting steps entirely. A project also carries its own posting mode cap, which any member with write access to an unlocked project can set, and a run’s effective mode is always the more restrictive of the two — a project capped to Simulate stays simulated no matter what mode the run is started with. A sub-workflow, a macro, a model or loop run, and a run you resume after a stop all inherit their parent run’s mode, so a simulated run can’t post for real anywhere inside itself. SAP posting, attachment, and RFC steps don’t dry-run — under Simulate or Off they’re skipped outright, since SAP’s own test flags still open a real connection. See Choose a Posting Mode.
-
The Posting Register gives finance and accounting one place to review ERP postings across every project — and to act on them in bulk. A tenant-level console, outside any single project, opens straight to an exception queue — postings that are in doubt, unconfirmed, pending, or failed, oldest first, aged against the platform’s own timers rather than a guess, with simulated postings excluded from the queue and counted separately. A connection-health banner shows, for every connection you’re personally granted, the last successful post and whether it’s currently erroring. Beyond the queue, the full grid lists every posting from every project and connection you’re permitted to see, filterable by project, environment, connection, ERP type, entity, posting date, and state, and you can group the register by run, period, or connection for subtotals and a status roll-up — with uncaptured money always rendered blank rather than zero, and amounts in different currencies never blended into one total. From the grid you can also select postings in bulk — by ticking rows, or by matching everything your current filter finds across every page — and see an impact preview before anything runs: how many postings, how much money, and which connections and entities are affected, with anything the action can’t touch called out separately. Two actions are offered: clear simulated postings, a soft delete that never touches a live posting, and retry failed postings, which only runs against postings you’ve individually ticked and only reaches ones the ERP rejected or never received — checking with the ERP first, where it can, so a document the ERP already holds as posted is refused rather than resent. A high-value or high-volume action asks you to type the affected amount before Apply unlocks, a safety prompt rather than an approval step — it authorizes nothing on its own. AI Assist adds a search box that turns a plain-language question into the register’s own filters, seven proactive cards (outstanding to close, near-duplicates, an intercompany net-zero gap, changed vs. last close, confirmed in ERP, aging & owners, and already reversed) with an optional narrative sentence beside their figures, and per-posting advice — a reversal draft or, for a rejected or in-doubt posting, why it failed and what to do next. Every card and draft is computed live over your own grants, and none of it applies anything: reversing and retrying stay separate, gated actions. Trends breaks down failure rate and latency by connection or ERP type, and Lineage drills a posting back to the workflow run that produced it and out to its document in the ERP. Exports & Alerts downloads the register as CSV or JSON — masked, unless you hold the top security tier — and schedules a recurring export or an alert on a failed post, an aging authorization, or a reversal, sent to named recipients under each of their own grants; a schedule’s cadence is recorded but only fires when you press Send Now, since PlaidCloud has no periodic job scheduler yet to fire it on its own. A detail drawer covers the request and response, errors, the posting’s timeline, its reversal if one exists, and an audit trail. Four cumulative security groups control who can open the console, and bulk actions additionally require the operate tier and your personal grant on the connection involved. Visibility follows your existing connection and project grants — an explicit personal, group, or ownership grant on the connection, not merely a connection open to the whole workspace — so a reviewer only ever sees postings they were already entitled to see. The register is built for data minimization: bank, routing, IBAN, tax-id and other personal-identifier fields are stripped from every payload, the ERP’s business key is withheld entirely in favor of the ledger id and the ERP’s own confirmation id, and free-text fields are scrubbed of dimension and worktag values. See Review the Posting Register.
Changed
Section titled “Changed”- Table Explorer’s column details panel profiles every column, flags data quality issues, and shows how numeric columns relate to each other. Select a column and its statistics include null count and percentage, and — for text columns — blank count and percentage (a blank being empty or whitespace-only, distinct from null), plus distinct values as a percentage of non-null rows. Numeric columns also get a skewness figure showing whether their values lean to one side of the average, a histogram showing the shape of their distribution across 10 buckets, and Pearson and Spearman correlation coefficients against up to 10 other numeric columns in view, scoped to the rows that have a value in all of them. Every column is also checked against a five-part data quality radar — outliers, format mismatches, duplicate values in a declared row key, dimension members not found in a linked dimension, and constant columns — with badges on the column itself and a ranked summary window opened from the Actions menu. All of it is computed deterministically, respects row-level security so you only ever see it for rows you’re entitled to, and — except for the correlation coefficients’ own row scope — is independent of any filter you’ve applied. The existing Min, Max, Mean, Sum, and Standard Deviation continue to appear for numeric columns and continue to respect your current filter. See The Details View.
- A cost-trace confidence line no longer follows the column it rates lower with a reassuring word about all of them. Ask why a figure moved on a table that reports several columns at once — income alongside the charges deducted from it — and the answer names any column it is less sure of before giving an overall rating: “medium for the net_contribution column (gross offsetting); high overall across 4 columns”. The overall rating is an average weighted by how much each column moved, and a summary column is the difference between the others, so it is the smallest mover and carries the least weight in its own rating. On a real banking model the three columns outvoting it were the income and charges it is made of — the same movement counted twice — so “high overall” was reassurance about columns nobody had asked about, sitting on the one figure the whole answer is built on. A reader skimming to the end of the line took “high” away. Where the column rated lower is the one the answer is about, the line now states the stronger rating of the other columns — “high for the other 3 columns” — instead of claiming it overall. No rating changes, and the weaker column is still named first, as before. Where the lower-rated column is not the one the answer leads on — a column the assistant chose to search, say — the line is unchanged, because the overall rating is then about the column you asked for. See Analyzing Allocations With AI.
- A cost-trace answer now says on the same line that a “100%” split is arithmetic rather than a cause. Ask why a figure moved and the step-by-step account at the end reads “dominant: the value coming in explains 100% of the move”. An allocation shares out a pool without changing its size, so where a whole-pool answer credits all of a movement to the value coming in, that figure is arithmetic and not a finding about what drove anything — which the answer said, in a different section, and in a short form beneath only one kind of step. Every other step’s line said only that the split describes the whole pool, which reads as a note about scope; so on a four-column banking answer the same 100% appeared four times and was called mechanical once, and the one marked step read as the only doubtful one. The line beneath every such step now says the split is arithmetic and not a driver finding. It quotes no percentage of its own, because that one line also prints where an answer withholds the split entirely, and beside a different column’s figure in the opening summary. No figure changes, and steps that measured a genuine leading factor — a question narrowed to one member — read exactly as before. See Analyzing Allocations With AI.
- Templated emails gain variables and one-click formatting. The Notify Via Email step’s template editor now reaches your project and workflow variables — insert any of them from the Insert menu, or reference them as
variables['<name>'], alongside the built-in project, model, and run-date values. A new Style menu wraps the selected text in email-safe HTML formatting — bold, italic, underline, headings, bulleted and numbered lists, block quotes, and links — without hand-typing tags. See Send Templated HTML Email Notifications. - A cost-trace answer now says in full which of two measures a member’s share is on. Ask why a figure moved and the answer can name one branch, programme or entity as most of the change — and that share is measured one of two ways. Either the member moved on its own, or it took a larger slice of a pool that was moving anyway, and on a transfer-pricing or allocation model the difference is whether the member’s own conduct explains its figure or the basis moved underneath it. The first of those closed on three words, “its own change”, tagged onto the end of the figure. Readers could not tell which measure it named, and the reading it most invited was the other one — that the member had barely moved and merely gained share. The answer now says the share is the member’s own change and not its share of the pool shifting. The second measure’s wording is unchanged, and no figure changes. See How the Assistant Stays Honest.
- A cost-trace answer now reconciles a charge concentrated in one member with a ranking that puts that member last. Ask why a figure moved on a table that reports several columns at once, and the answer can name one branch, programme or entity as most of the change in a charge column while the member list beside it ranks that same member last of four. Both are true — a member whose charges fell alongside its income nets out to almost nothing — but nothing on the page said so, so the two blocks read as contradicting each other, and the natural conclusion was that one of them must be wrong. The member list now says, above the rows, which columns the ranking subtracts, so a member large in a charge and small on the net reads as arithmetic rather than as a mistake. The answer does not claim that is what happened in your figures — only that it can — because saying so needs a measure the answer does not always have. It says nothing at all where the columns do not add up to one another, since there is nothing in those figures that identifies a charge, and nothing where no member is reported as concentrated. See How the Assistant Stays Honest.
- A cost-trace confidence rating covering several columns no longer says it is rating a breakdown only one of them has. Ask why a figure moved on a table that reports several columns at once and the answer can break one of those columns down by a field — programme, line of business, branch — and list its members. The rating above that list named the field and then counted every column: “in this breakdown by programme, high across 3 columns”, while telling you a few lines below, under Honest limits, that two of the three describe the whole pool only. Read as written it promised three member breakdowns where there is one. The rating now says it is in the figures, and the member list keeps naming both the field and the column its members belong to, in its own heading. An answer covering a single column is unchanged and still names the field: there the rating and the breakdown cover the same thing. See Analyzing Allocations With AI.
- A cost-trace summary’s confidence rating now says it covers the breakdown, not the cause — and what qualifies it stands apart from it. Ask why a figure moved and the answer opens with a one-line summary that can name a likely cause, point at the member behind most of the movement, and size the change against last year, before closing with a confidence rating. That rating has only ever covered how the change was broken down and traced back through the steps behind it — never whether the causes above it hold — but nothing on the line said so, and a reader who stopped at “high” took the lot as settled. The line now reads “Confidence in the decomposition, not in why it moved: high”, and leaves off the second half where the summary named no cause, so it never disowns a claim it did not make. Anything qualifying the rating now follows as its own sentence under Caveats:; previously a dash joined the two, and a dash reads as because, so a high rating appeared to rest on the very limit standing beside it. This is the part of an answer most likely to be forwarded on its own, or read by an assistant with none of the page around it. Nothing about the rating itself changes, and the qualifications are unchanged and still set out in full further down. See Answers You Can Trust.
- A cost-trace confidence rating now says what it is rating where the answer has already withdrawn the cause. An allocation shares out a pool without changing its size, so on an answer covering the whole pool the split between “the value coming in” and “the driver” is forced by that arithmetic rather than measured — which the answer sets out twice, once under Honest limits and once against the traced stage. The rating above all of that read “high (clean attribution)”, so a reader who stopped at the confidence line — which is where a reader in a hurry stops — took the cause as settled while the same page was withdrawing it a few lines further down. The rating now reads “high across 3 columns (clean attribution — rated on the arithmetic, not on why it moved)”, so the line refuses that reading on its own rather than relying on being read alongside the limits. The rating itself has not changed: the figures still tie out, and they are still rated high. Where the split was genuinely measured, and where only some of the columns cover the whole pool, the line reads exactly as before. See How the Assistant Stays Honest.
- A cost-trace answer no longer rates several columns with one reassuring word when it has set out a limit on one of them. Ask why a figure moved on a table that reports several columns at once and you get a single confidence rating covering them all. Where the columns all rate the same there is no weaker one to name — but one of them could still carry a limit under Honest limits, and on a real banking model the line read “medium across 4 columns” twelve lines above a limit on the very column the answer leads with. The rating now closes by naming any column carrying such a limit, so the two are read together rather than one contradicting the other a screen later. The limit itself is not repeated in the rating — it is a statement about how a change divides between its causes, not about the figure being weak, and it stays in full under Honest limits. Where every column carries the same limit the rating is unchanged, because the breakdown already says so once above the figures; and where a column is already named as less confident, that naming stands as before. See How the Assistant Stays Honest.
- A cost-trace answer no longer sums up several columns as all moving the same way when some of them are charges. Ask why a figure moved on a table that reports several columns at once — income alongside the charges deducted from it, or revenue alongside cost — and the opening line used to close with a count: “with all 4 columns down”. Two of those four falling were charges, and a charge falling is relief rather than more bad news, so a single count made four different movements read as one story. Where the columns add up to one another exactly, the opening line now names them instead and says which of them the headline figure subtracts, so a fall in a charge reads as what it is. Columns that all count the same way are unchanged, and so are columns that do not add up to one another — there is nothing in those figures that identifies a charge, and the answer does not guess. See How the Assistant Stays Honest.
- A narrowed cost-trace answer now shows how the whole table moved. Ask why a cost moved for one line of business, entity or programme and you get that member’s own figures — which mean little on their own. A line that grew 4.2% inside a book that shrank 6.2% is a different story from one that grew inside a book that grew, and the same number describes both. The answer now lists, beside its own figures, how the whole table moved over the same periods on each column it reports, and says that the narrowed rows are part of that total. Where the two disagree in sign — the member negative at both ends of the period while the table is positive at both — the answer says so in words rather than leaving it to a minus sign. Nothing new is measured: those figures were already what the narrowed change was compared against, and were simply never shown. An unnarrowed answer is unchanged, since it already reports the whole table. See How the Assistant Stays Honest.
- A cost-trace answer now says whether it covers the whole table or one member of it. Ask why a cost moved and you get a figure; ask the same question narrowed to one line of business, entity or programme and you get another. Read one after the other, the two used to look alike, so the narrowed figure could be taken for a component of the wider one — and it need not be, because the members left out can move the other way. Each answer’s opening line now says which it is: a narrowed answer states that it is that member’s own totals in each period with the rest of the table set aside, and an unnarrowed one states that its figures are the table’s own totals in each period with every member included. Where a narrowed answer’s figures are negative at both ends, its percentage carries no extra note, because the answer already says the balance went further below zero. The unnarrowed statement is left off where the answer has already reported a gap in its own working — a table that recombines several allocations, one of which could not be attributed — so it is never read as a claim that nothing was left out. See How the Assistant Stays Honest.
- Builder-seat limits are now enforced. Inviting a new Builder, promoting an existing member to Builder, or reactivating a disabled Builder is blocked with a clear message once your plan’s builder-seat limit is reached, instead of being silently allowed past it. Viewers remain free and unlimited on every plan. See Viewer vs. Builder.
- Loading a hierarchy into a dimension is much faster on large dimensions. Each row of a load re-read the whole membership of the hierarchy it was loading into, and of the main hierarchy, just to answer three yes/no questions about that row’s own parent and child. Most of a load’s time went on that reading, and the cost grew with the dimension — roughly quadrupling each time the number of members doubled — so a load did not merely take longer on a larger dimension — it got slower as it went. Those three questions are now asked about the two members concerned rather than by fetching every member, so the work per row no longer depends on how many members the dimension already holds. Nothing about what a load does changes: the same rows are added, moved, or refused, with the same messages. The gain is largest on a dimension whose main hierarchy is empty or sparse, where every row took the slowest path.
-
Trying to run a workflow that’s already running now tells you so. Clicking Run on a workflow that’s still running used to fail with a bare “Internal Server Error” and no explanation, in both the Workflow Detail window and the Workflow Canvas — it now tells you the workflow is already running, and a REST API client hitting the same endpoint gets an HTTP 409 Conflict with the same message instead of a 500. The fix covers the same “nothing was changed” class of condition everywhere it comes up — stopping an already-stopped workflow, editing a locked dimension — not just starting a workflow twice. See Run a Workflow.
-
A cost-trace answer comparing two scenarios no longer describes them as periods. Asking why a figure moved means naming two things to compare it between, and those need not be periods — point the comparison at a scenario, a version, a case, or budget against actual and you get a sound account of the difference between them. The wording around it, though, was written for a calendar. Comparing version 7 with version 8, the answer stepped back one and reported a year-over-year verdict sizing the change against version 6 — “275% the size of last year’s move; 6 → 7 moved -$400,000” — with every figure in it correct and the subject of the sentence wrong. It called the two versions periods, and called the one with fewer rows possibly still loading. An answer now works out whether the column it compares across is a period at all, from the column’s type, its name and the shape of the values you gave it. Where it is not, the opening line names the values compared rather than periods, no year-earlier verdict is offered and the answer says why under Honest limits, and a difference in row counts is described as a difference in what each side covers rather than as an incomplete period. No figure changes. The test is deliberately cautious — a column counts as a period if its type says so, or its name does, or the values look like dates, months, quarters or years — so a whole-number
fiscal_yearand a text2026-03are both still read as periods, and comparisons across a date, period, month, quarter or year column are unchanged. See Answers You Can Trust. -
Connection fields display correctly — credentials masked, everything else visible. Twelve single-line credential fields across a dozen connection kinds — among them a Stripe access token, a Monday.com access token, a Bill.com password and developer key, several OAuth2 client secrets, and a Workday API refresh token — used to render as plain visible text in the connection dialog; they’re now masked the same way every other password field already was, and a saved value is never redisplayed once you leave the field. Three multi-line credentials (a Postman API key, a Slack incoming-webhook URL, a Teams incoming-webhook URL) are write-only the same way, though they stay visible while you’re actively typing them, since that kind of field can’t be masked. Separately, well over a hundred ordinary configuration fields — a database’s read-only flag, a Snowflake account name, a Postgres database, schema, or hostname, an SSL mode, an SSH port, among others — no longer show as
__REDACTED__the moment you set them, in the connection dialog or over the API; each now shows its real saved value. See Create and Manage a Connection. -
An ERP posting step now previews instead of posting live when its own Validate Only setting is left unset. Every ERP posting step carries its own Validate Only setting (labeled Preview or Test Only Mode on some steps), separate from a run’s posting mode. The step editor has always saved this setting explicitly, but a step configuration written another way — over the REST API, over MCP, or through a workflow bundle import — that left the setting out entirely used to post live by default. It now defaults to preview instead, matching what the step editor has always done; setting it to post live on purpose still posts live. See Choose a Posting Mode.
-
A workflow can no longer end up with the same step listed twice. A workflow step can only appear once. A workflow’s structure used to be able to gain one step in two places — most often by retrying an attach or copy that looked like it had failed, when it had actually already gone through — and that duplicate was silently fatal to a run: a Standard Serial run, and a Standard Parallel run stopped at a chosen end step, got stuck in Running forever, with no error, nothing to stop or resume, and disabling the duplicated step didn’t help. (A Standard Parallel run to completion tolerated the duplicate and simply ran it once — that’s unchanged.) Every way of changing a workflow’s structure — inserting steps, copying a step, cloning a workflow, importing a workflow bundle, and the same operations through the REST API and MCP — now refuses a change that would create the duplicate, naming the step so you know what to fix. A workflow that already has a duplicate from before this fix now fails immediately with a clear error instead of hanging, and reordering it (including drag-and-drop) tells you the same thing rather than letting you keep working with it stuck. Delete the duplicate step to repair it — removing steps was never restricted. See Choosing a Workflow Type and Copy & Paste Steps.
-
Filtering a dimension hierarchy finds members by their property values again. The Filter: box at the bottom of the hierarchy window searches the alternate, alias, property and value columns you have showing, not just the member’s name in the tree — so typing an account code finds the members carrying it in a property. On the main hierarchy pane this had narrowed to matching the name alone, which is why a code plainly visible in a property column returned no rows; the alternate pane was never affected, so the same box behaved differently in the two panes. Choosing Alternate Hierarchy now also clears the filter from the main pane instead of leaving it filtered. See Finding Nodes in a Hierarchy.
-
The Advanced dimension filter can filter on properties, not only aggregations. Its Column list now offers every property column alongside the aggregations, and a property is compared as text —
=,!=orcontains, ignoring case — against either a value you type or another column. Previously only aggregation columns were offered and any non-numeric value was refused, so a property could not be filtered at all; on a dimension with no aggregations the column list came up empty with nothing to pick. Advanced criteria also keep applying after the hierarchy refreshes, rather than lapsing without saying so. See Advanced Filters. -
An AI agent tracing an allocation is no longer told a second, independent check confirmed the answer when no such check was possible. When you ask why a cost moved and narrow the question to one slice — a single programme, product line or legal entity — the answer carries a cross-check of that slice against the driver behind the split. Where you narrowed by the very thing the allocation shares out within (a programme whose cost is spread across cost centres, say), that cross-check was comparing a figure with itself, so it agreed every time and could never have done otherwise. Nothing you read on the page said so, but anything reading the answer’s underlying data — a dashboard, or an AI agent judging how far to trust the answer — took the agreement as independent confirmation. The answer now states that the check could not be made there, and why. Where the driver genuinely no longer accounts for the slice, the disagreement is still reported as before, and narrowing by any other column still gets the real check. The written answer is unchanged. See Tracing Allocations.
-
Sample project content is visible to the whole workspace, and viewers get a welcome. The guided sample project, its workflow, and each sample’s auto-built dashboard are now shared workspace-wide the moment they’re created, so a viewer sees the finished sample the same way a builder does, with no separate sharing step needed. Sample dashboards created before this fix pick up the same workspace-wide visibility automatically. And a viewer who lands in a workspace with no visible content yet now gets a welcome offering a short how-to introduction, a guided tour of the app, and quick access to help — so there’s always a next step. See Start With the Sample Project.
-
Single-sign-on invites no longer send a password-setup email. In a workspace that enforces single sign-on, inviting a new member no longer sends the set-your-password welcome email, since the member signs in through your identity provider and has no PlaidCloud password to set. Workspaces that don’t enforce single sign-on are unchanged. See New Member Welcome Email.
-
The Identity tab no longer appears for members who don’t administer identity. Every signed-in member carries a marker saying they are logged in, and that marker was being read as though it granted access to Identity administration — so the Identity tab appeared in the sidebar for everyone, regardless of their security groups. Opening it showed an empty screen: every screen inside it (Members, Member Directory, Distro Lists, Security Groups, the Security Log) has always been individually permission-checked, so a member without those permissions saw nothing there and no member, group, or security data was reachable. The tab is now shown only to members who hold at least one Identity administration permission. Nothing about your own account moves — your profile, options, View My Current Effective Security, and gravatar settings are in the user menu in the upper right, not in that tab, and are unchanged. A member who holds no application permissions at all now lands on the Home page explaining that, instead of on an empty Identity tab. See Managing Security Groups and Assignments.
-
Asking an AI agent the same “what if” question twice now returns the same answer. Asking what happens if an input rises returns the list of results that change, each with an estimate. That list came back in whichever order your project happened to hold its steps in, so the same question, on a model nothing had touched, could return the same results in a different order the next time it was asked — and anyone reading the first entry as the largest was reading whichever one came out first. The same ordering decided two more things. Where two allocations write the same result and each contributes the same amount to it, the answer names one of them as that result’s source; which of the two got named was decided by that ordering as well. And where a table is fed by more than one route — two allocations feeding it, or an allocation alongside a transform step — the answer followed only one of those routes onward, and that ordering chose which. These are now settled, so two identical runs return an identical answer and a difference between this week’s answer and last week’s is a real change in your model rather than a reshuffle. One thing worth knowing as you compare: an estimate for a result that sits below a table fed by more than one route is now measured along the same route every time, which may not be the route an earlier run happened to take, so such an estimate can differ from one you saw before. Estimates for results whose tables are each fed by a single route are unaffected. See Tracing Allocations.
-
Dash apps open for signed-in users again. Opening a Dash app could fail with “Request Header Fields Too Large” before the app itself was ever reached. Once you were signed in, your browser sent a sign-in cookie larger than the app host would accept, so the request was turned away at the door — and because it never got as far as your app, nothing in the app’s own logs explained why. The host now accepts a much larger cookie. An app that is already published picks this up the next time it is built, so use Rebuild on its row if you are still seeing that error. See Rebuilding a Dash App.
-
Setting a project or workflow variable shows you what each variable holds right now. The Project: Set Variable Values and Workflow: Set Variable Values steps list every variable in scope again — one row each, with its Current Value and Memo read fresh every time you open the step. Tick Set on the rows you want the step to write and leave the rest alone. Until now the step showed only the rows already saved on it, and the Current Value beside them was not the current value: it echoed whatever that variable held the last time that step was saved, which could be months ago — and on a step built since the step forms were rebuilt it had never held anything at all, so the column sat blank. Either way it was no help in deciding what to set, and with no list to pick from you had to type a variable’s name from memory and go to another screen to see its value. Nothing about what the step writes has changed — only ticked rows are ever written — so an existing step goes on doing exactly what it did. See Set Project Variable and Set Workflow Variable.
-
A dimension’s “Referenced in Tables” list shows every table that uses it. Select a dimension and the panel on the right lists the table columns mapped to it. It only ever listed columns on tables built by a workflow step, so a dimension used on a table that no step builds — one created directly with New Table, one restored from a snapshot, or one whose step has since been deleted — came up empty, and the mapping looked as though it had been lost. Every mapped column is now listed, with the step and workflow columns left blank where there is no step that builds the table. Double-clicking the table or column still opens it in Table Explorer.
-
Setting a column’s dimension through the API or the assistant now checks that the dimension exists. You can give the dimension’s name, its folder path and name, or its id — any of the three is accepted, as it is everywhere else a dimension is named, and stored correctly. Where two dimensions share a name, the path tells them apart. A value that doesn’t resolve to exactly one of the project’s dimensions is refused with a clear message instead of being accepted and then quietly ignored: the column would not show in the dimension’s “Referenced in Tables” list, would be left behind when the dimension was deleted, would be invisible to the row-level security coverage check so a real gap went unreported, and would be dropped when the table was brought into another project as a bundle. Setting or clearing the dimension from the column properties panel is unchanged.