> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twine.se/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform

> Changes to Twine itself, not tied to any one integration

## 2026-08-04

* Twine now tells you when its live connection has been degraded. When the browser cannot hold a
  fast connection to Twine, it falls back to a slower one that makes the app feel sluggish and lets
  pages lag behind. A warning appears in the lower right corner when that happens, with a **Fix
  now** button that restores the fast connection. If it cannot be restored, something on the
  network is blocking it, usually a VPN, proxy, or firewall.

## 2026-08-03

* The flow inspector's **Docs** pane lists every field you can set on the shape the selected
  node writes to. Each field is shown by the name you type into a nested path, with the
  connected system's name for it and whether it is required.
* The **Flow Compose** "Add field" list names fields the way the property mapper does, using
  the name the connected system uses (`CustomerNumber`) rather than Twine's internal one
  (`customer_number`). Searching by either still finds the field.
* A **Flow Assign** node with a nested path can set a single field on a struct built earlier
  by **Flow Compose**. Put the composed assign in "Output assign" and the field name in
  "Nested path". A path segment that is not a field on the struct is an error naming the
  struct.
* The audit trail for a domain mapping shows configuration changes only. Sync starts and ends
  are no longer recorded there, and the entries that recorded them have been removed from the
  history.
* Creating an employee mapping that already exists is now a no-op returning `200` and the
  existing mapping, rather than `201`. A create that would
  change an existing mapping, a different `external_id` or `status` for the same employee and
  integration, is refused with `409` rather than quietly repointing it. Use `PUT` to change a
  mapping.
* The API can delete a domain mapping (`DELETE /v1/org/domain-mappings/:id`) and one of its
  sync triggers. Deleting a mapping deletes its triggers with it, deleting a trigger keeps the
  job history that ran off it, and neither can be undone.
* AI assistants connected over MCP can delete domain mappings and sync triggers, if their role
  permits it.
* The role quick start spells out that "Read + Write" covers creating and updating but not
  deleting, and offers deletion as a separate opt-in under Integrations. Existing roles are
  unchanged.
* "Explain job failure" works on every job, shows changes to that job's own integration and
  mapping, and says plainly when the job did not fail. It also takes an option to skip the
  change history entirely, when the question is just whether the job failed.
* Roles whose access is limited to specific integrations or organizations can use the matching
  AI assistant tools.
* The change history an AI assistant sees is scoped to the integrations and mappings its role
  may read, and reports which fields changed rather than the whole record.
* Organization details returned to AI assistants carry the documented fields, matching what
  the API returns.
* The AI capability list names the tool behind each action it says your role is allowed to
  take, so an assistant with an out-of-date tool list can tell that it needs to reconnect. It
  also separates "your role is not permitted to do this" from "Twine's assistant tools cannot
  do this yet".
* A domain mapping's description can be cleared by an AI assistant, not just set.
* The role details panel hides expired tokens behind a "Show expired" toggle, lists the rest
  five at a time, and can revoke every active token on the role in one go.
* The role export button offers a JSON download alongside copy to clipboard.
* Notes are written in Markdown. Existing notes keep their text, but rich-text formatting is
  not carried over.

## 2026-07-27

* The flow and property-mapping canvas zooms, from 10% up to 100%. Press `F` to frame a whole
  graph and `Cmd 0` to reset, and your position is remembered per graph.
* Auto-arrange was rebuilt: far fewer crossed edges, no more overlapping nodes, and edges
  route around nodes instead of through them.
* New **Date Range** value type and node, so "is this date inside this period?" is one node
  instead of three.
* New flow nodes for grouping and accumulating: **Group By**, **Map Put**, **Map Entries**,
  and `collect` / `preserve` on **Flow Each**.
* New **Error Shield** node marks a trailing branch as non-critical, so an experimental branch
  cannot fail the whole run.
* Double-click an output port to add an End node wired to it.
* Time types are enabled by default. Attendance still has to be turned on deliberately, since
  it is far more data than absence.
* File transfers over the Public API: upload a file, deliver it to a connected system, and get
  back the identifier that system assigned it.
* Conversion failures tell you what failed, where, and which property mapping caused it.
* API responses carry rate-limit headers reflecting your actual usage.

## 2026-07-20

* **Competences** are a first-class part of Twine: a catalogue of competences plus
  per-employee assignments, with their own Public API, system data view, and section in the
  employee drawer.
* Organization settings moved into a tabbed page instead of one long form plus four separate
  pages. Old links redirect.
* Deleting system data moved to organization settings and now covers the whole organization,
  with an optional system filter. Schedules can be deleted too.
* The data engine evaluator can load an employee who has never been synced, by picking which
  integration to fetch them from.

## 2026-07-13

* Files are usable in flows: download and upload over SFTP and S3, parse spreadsheets, and
  build JSON files.
* Integration templates carry data engine graphs, so a template applied to a v2 mapping brings
  its logic with it.
* Employee reports can include the Twine ID column for cross-referencing.
* The app works on narrow screens and small laptops. The property mapper inspector becomes an
  overlay rather than permanently taking a quarter of the width.

## 2026-07-06

* Property mappings that are broken but draw no edge are listed in the editor's warning
  banner, so they surface before a sync rather than during one.
* When a mapping cannot read a value, the error names the path it was trying to follow and
  describes what it found.
* Jobs can be filtered by status, type and date, and the filter is in the URL so it can be
  shared.

## 2026-06-29

* A domain mapping that has a sync trigger can be updated over MCP and over the Public API's
  `PATCH`.
* MCP tool errors reach the assistant with an explanation of what went wrong.

## 2026-06-15

* The Public API returns stored property values as they are, whatever type they hold.
* The data update report no longer lists employees who have been inactive for a long time.
  Employees who went inactive during the report window are still included.

## 2026-06-08

* The property mapping editor shows who else is on the page, warns when they have unsaved
  changes, and warns before a save would overwrite someone else's work.
* Salary transactions are available over the Public API.

## 2026-06-01

* Flow runs that handled an error report as **partial** rather than successful, with the
  failure visible on the node and in the run log.
* Mapping tables can be filled from a CSV file, not only by pasting JSON.
* Employee reports: pick your columns, export as PDF or CSV.
* Notification recipients can be organization contacts, so notifications can go to a shared
  mailbox without inviting a user.

## 2026-05-25

* A flow can have several schedules, each seeding its own starting values.
* "Inspect remote data" fetches directly from the source system where supported, with
  pagination and the raw HTTP response.
* Integrations can pause themselves automatically when a sync would change an unusual
  proportion of your data, rather than writing it.

## 2026-05-18

* **MCP server**: connect an AI assistant to your Twine data, with a read-only tool surface,
  sign-in via OAuth, and service-account tokens for headless clients.

## 2026-05-11

* The new property mapping and conditions editors are the default. The previous editors are
  still reachable under "Legacy".
* The Properties page paints immediately and loads its data in the background.
* Inactive-employee cleanup runs nightly, and is skipped for organizations under an onboarding
  suppression.

## 2026-04-27

* Users are invited by email rather than created for them by an admin. Invitees set their own
  name, or sign in with Google or Microsoft and skip the form.
* Profile pictures: upload one, or use the picture from the user's Google or Microsoft
  account.
* Users have a first and last name instead of a single display name.
* Pending invitations are listed with resend and revoke actions.

## 2026-04-20

* A redesigned preview of what a sync will change: field-by-field changes, per-section
  create, update and delete, and validation warnings, instead of raw JSON.
* Preview every employee for a domain mapping at once, not just one at a time.
* Job logs and metrics are kept even when a job crashes or is terminated.
* Bulk sync preview shows a live feed of what it is doing, so you can follow a long run.
* The "would be deactivated" warning says why, and appears only for mappings that are still
  active.
* Cron expressions are validated, so the schedule you see in the preview is the schedule that
  runs.
* Auto-match settings: match incoming entities against existing ones by configured fields
  instead of creating duplicates.

## 2026-04-13

* Integrations can be paused automatically when errors spike or the source system reports an
  outage, and released by hand when it is resolved. Pausing an organization or a system stops
  everything below it.
* New suppression setting, so a newly onboarded customer does not trip on expected noise.
* First UI for flows: see the graph, run it, and read the run history.
