跳转至

v0.1.0-alpha.480

Released 2026-10-12.

Features

MCP & AI Integration

  • The external MCP server reaches the graph surface as the UI does. run_cypher runs Cypher under the caller's role through the pipeline every Cypher surface uses and answers its rows and the graph they hold as Cytoscape elements (nodes and edges with the graph page's ids and only the properties the role is served). render_graph draws those elements as the graph page draws them and answers a PNG as MCP image content -- the page's own Cytoscape stylesheet and its force (fcose) or hierarchy (breadthfirst) layout, or the ERD's ELK layout, on the page's light background by default or its dark one when the caller passes theme=dark.

Changes

admin

  • A row rule naming no role or an unknown role is refused with a message
  • A table save checks the caller's right in the table's current domain

api

  • No requirement id in what the API package says to a user or to the assistant
  • A request sees one build of a role's surface, never the schema of one and the context of another

athena

  • Amazon Athena is a source type, reached through its own API

audit

  • The query audit log names each table a statement read, as it was then

codesource

  • One worker for every code source; Node part 4

compiler

  • Govern a view's SQL as part of the one semantic statement

compiler,rest,jsonapi

  • A parameterized table's aggregate and group-by take its parameters; params are keyed by parameter name

core

  • No requirement id in what the core package says to a user

cosmosdb

  • Azure Cosmos DB for NoSQL as a source
  • A container table follows its change feed
  • Register a Cosmos DB source and its tables in the UI

cypher

  • An embedded object of an unregistered type is a node property; a registered reference stays an edge
  • A declared object column is returned as a map on every engine

databricks

  • Read a Databricks source in place from Unity Catalog, by the steward's choice

dq

  • Checker scans accumulate in the control plane, read in place

drafts

  • A draft's record carries the writes its source takes, so its preview builds

duckdb

  • A sorted page of a Postgres-attached relation holds its rows, not only the NULL-key ones

events

  • A table that inherits its source's TTL is polled at that TTL (#209)

export

  • The governed catalog downloads as a dbt sources file

federation

  • Changes to several landed tables are applied together
  • A group of changes removes rows named by part of their key
  • A read gated on freshness waits for a first build that is still filling its replica
  • DuckDB reads Fabric Warehouse and Synapse SQL in place over TDS, signed in with Entra

freshness

  • A probe change signal states the cache TTL its probe is asked on (#212)

google-workspace

  • One read of a mailbox gives every message table
  • A mail table's probe asks Gmail whether the mailbox changed
  • A source reads the organisation's mailboxes with its service account
  • A recipient's position counts from 1, and an attachment always has an id
  • The organisation's key is read from its own vault, whoever calls
  • The service account's key is a field that keeps what was typed
  • A mailbox's approval is read from the state store, not the source
  • A label that vanishes is skipped, and a mailbox is judged unreadable only at its profile
  • A read waits out Google's throttle as long as the operator set, and says so
  • A Gmail mailbox's mail lands a part at a time and is kept in place

graphql_remote

  • A column's object type and list flag are stored, so a reload names the same references

grpc

  • Each organisation is served its own gRPC service, as its model stands
  • Reflection describes a caller the service of its role
  • A role's service is what it may call
  • A role's service calls what its Query message lists
  • A Timestamp column is answered with the class of the organisation's own Timestamp
  • A table's parameters are a {Type}Params message on its request

i18n

  • A mail platform's refusals are said in the reader's language
  • translation-memory entries written under the wrong key are under the key the tool reads
  • Translation memory keys of the scan-interval strings name their locale file

install

  • The Linux AppImage's first launch finds the payload it carries
  • A question the AppImage's first launch asks is not part of its answer
  • What an install starts names no path outside the install (#201)

mail

  • Both mail kinds can be checked for changes, so a probing signal on them is taken
  • An organisation that only reads its Google mailboxes enters no OAuth client
  • A mail platform's client secret is resolved in its own organisation's vault, whoever calls
  • The field-named refusal is its own function, beside the resolver the gate already has
  • An owner's approval is sign-in state, kept in the organisation's state store
  • A replica's read waits out a throttle as long as the operator allows, and says it is waiting
  • A mail table is kept by key and stamps each row with when it landed
  • A pass that keeps a mail source's replicas in place, a unit at a time
  • A Microsoft 365 source's replicas are kept in place, readable while they fill
  • A read in units skips a folder removed mid-read, and cached answers are dropped as parts land
  • calendars, events and tasks of Google Workspace and Microsoft 365, read and written

mcp

  • run_cypher answers a Cypher query's graph as Cytoscape elements; render_graph hands back the UI's layout to draw it
  • render_graph draws the graph as the UI's graph page does, as a PNG, with Node in the image

microsoft-365

  • One listing of a mailbox gives every table that comes from its messages
  • A source reads the organisation's mailboxes with the organisation's own credential
  • A group's members are listed with the header and count Graph requires
  • Everyone in the directory is its members, not its guests
  • A refused listing says which permissions the client's token carries
  • A mailbox is read as delta rounds, and a completed build keeps where it reached
  • The check for changes says unchanged only when Graph ends the round with nothing
  • A folder the mailbox does not have is absent, and never makes the mailbox unreadable
  • One mailbox never has more than Microsoft's four requests in flight from this process
  • A mailbox's messages are read as units that land together
  • Only a replica's build stamps its rows; a live fetch gives the reader's columns
  • The four-request cap counts by the mailbox a reader reads, not by its address
  • A source may hold nothing received before a date, as a Google source may
  • With a date, reading past old mail costs a line a message, not the message

mongodb

  • Reach a MongoDB source by a connection string
  • Tables registered from an aggregation pipeline
  • Query commands that run an aggregation pipeline
  • The change-feed listener connects as every other reach does

node

  • Package registries are an organisation setting with its own admin page
  • A Node source's code is fetched pinned, hashed and installed once, its runtime fetched pinned and checked
  • A Node bundle's tables, commands and streams are read from its declarations

ossie

  • The export and import use the document shape Ossie has now (#205)
  • An imported field that is a computation is named, not proposed as a column (#205)

otel

  • A collector that cannot be reached is one line, and one more when it is back
  • Traces and logs that cannot be sent are reported as metrics are, by one shared piece

pg-engine

  • A materialized view on the Postgres engine has its schema

pgwire

  • The SQL plane offers only the columns a remote GraphQL table's relation holds

profiler

  • A profile reads only the columns its table's relation holds
  • Read a temporal column as its recorded type (#238)

release

  • Release notes generated from the range between two tags
  • A commit reverted before the release is left out of its notes, with its revert
  • A revert must name the commit it undoes; the hand-written pair is excluded by name

replicas

  • Several replicas can be built from one read of their source
  • A runner builds the replicas of one read in one job
  • A group table is always built by the group read; a failed read removes every build table
  • One reader for a group's tables; a table's own reason survives a failed read
  • The wait before a failed build is tried again is at least a second
  • A probing table's replica is rebuilt when its probe says so, not every TTL (#210)
  • A copy its probe found unchanged is current as of the probe (#211)
  • A source that could not keep where its read reached says so on the replica
  • A server that read its records before another completed the build does not ask for it again

replication

  • A build says as many things of its copy as it has to say

rest,jsonapi

  • A table's parameters are read from ?params=, and filter values travel as variables

roles

  • A model rebuild does not take a meta-role from under a request acting as it

schema

  • The build's wait is a column of the replica state in the DDL too

secrets

  • The Kaggle token and the Sheets credentials are fields that hold what was typed
  • A secret of an organisation the platform does not hold is refused as not found

seed

  • A boot view whose columns moved is rebuilt, not refused

shutdown

  • A second stop signal cannot deadlock the main thread on the deadline expiry (#237)

site

  • Privacy statement covers license registration, Resend and email sign-in
  • The site's source picker shows AskAmerica's bundled logo, and Google Workspace's mark

start

  • A native demo names no OTel exporter endpoint
  • A demo names no MinIO or OTel receiver, and the Docker-demo lines are gone
  • The perf bench names its own OTel receiver; a demo start runs no docker compose down

state

  • An organisation's API sources and endpoints belong to its runtime

synthetic

  • Read a temporal column as its recorded type in the closeness sample (#238)

tables

  • A table's Preview and Profile are read as their caller, and a draft can be previewed by those who release it
  • The viewer of a draft filters, sorts, groups and pages -- the server writes each statement
  • A draft is not refused its preview for how its source is reached
  • A draft's preview lands its data the way any read does
  • A preview whose copy is still landing says so, in the role's own time
  • A draft view is previewed as a view in service is read
  • A draft view is previewed as a view in service is read

ui

  • The Microsoft 365 form's second shape, the mailboxes a source reads for an organisation
  • A mail platform's entry has a switch for reading the organisation's mailboxes
  • The Microsoft 365 entry says what the administrator grants for organisation mailboxes
  • A column's filter shows one filter icon, and its button takes the text box's background
  • A column with a filter applied shows a filled filter icon, not a coloured button
  • The Microsoft redirect help says where a localhost address works and that organisation sources use none
  • The register form's "+ Table" button is as wide as its label
  • The register-table form ends in Save and Cancel
  • The source form ends in Save and Cancel, when creating as when editing
  • The Replicate option's help says what a Hot entry does
  • A Google mail source chooses to check for changes before it is re-read
  • Replicate's -1 option reads "Live if possible", and its help says each option once
  • A source's Cache TTL is sent with the source's own save
  • One shared form layout -- fields flow in columns and identifiers get a section of their own
  • One form footer -- actions at the start of the bottom line, as wide as their labels
  • The source form flows in columns, with the source's ID and type set apart at the top
  • The OpenAPI source fields flow in columns
  • The SPARQL source fields flow in columns
  • The cloud-ops source fields flow in columns
  • The Iceberg catalog fields flow in columns
  • The Salesforce source fields flow in columns
  • The websocket and RSS source fields flow in columns
  • The Wikipedia source fields flow in columns
  • The data-profiler source fields flow in columns
  • The Kaggle source fields flow in columns
  • The register-table form flows in columns, with what names the table set apart at the top
  • The Google Workspace source fields flow in columns
  • The source's load-management fields flow in columns
  • The Microsoft 365 source fields flow in columns
  • A table that will be a replica states its Cache TTL when it is registered (#208)
  • A refused save shows the reader's wording of the refusal, and a source's Cache TTL is tested at the submit (#208)
  • A Google Workspace source may read the organisation's mailboxes
  • An explanation sits below its field or behind a (?), never between label and control
  • The source form reads as rows of aligned fields, and is never cut off
  • An action at the end of a field sits on the line of the field's control
  • A results grid's column names and filter row stay at the top while its rows scroll
  • A credential field shows again what it holds
  • A Draft box among a table's actions, and a draft's Preview that works
  • A draft's Preview is the full viewer, read through the admin preview
  • A group of fields can take a line to itself, and a section or nested layout takes the full row
  • The register-table form reads as rows of aligned fields
  • The table edit form and its sections follow the form rules
  • One help icon in every form, and the required mark right after the label text
  • One Save and one Cancel for every form, with a spinner while saving
  • The register-table form shows "Columns" only when there are columns
  • "Freshness Query Guarantee", and notes out of labels, in the source and register-table forms
  • A mail source for the organization keeps Check at the end of "Which mailboxes"
  • A native dropdown in a form looks and sits exactly like the others
  • The table edit form reads as rows -- fields, then every tick, then the sections
  • Live delivery and incremental reload are ticks with the table's other ticks
  • A table that is replicating says so, with a ring that shows how far the build has got
  • A field's help is its description, not part of its name
  • Admin > Email -- a mail platform is entered in rows of sized fields
  • Admin > Email -- the mail Provisa sends is set in rows of sized fields
  • A mail source's form offers what the organisation's entry can do, and opens on it
  • The replicating ring says when the build is waiting out its source's throttle
  • A mail replica says it is partial and how many mailboxes have been read
  • The incremental-reload tick reads "Incremental reload"
  • Admin > Email -- every scope to authorize is readable, and Port is a short field
  • The register-table form keeps its five identity fields together
  • The columns table of the register-table form no longer repeats its headers in every row
  • Admin > Email -- a mail platform asks first what it is for, and shows only those fields
  • The top navigation fits a laptop-width window
  • Admin > Deployment settings -- every setting is a sized field with its explanation behind a (?)
  • The settings cards of Admin > Federation, Domains, Cache and Maintenance are rows of sized fields
  • Admin > Federation -- the engine is chosen and configured in rows of sized fields
  • Admin > Security > Posture -- the mode is a sized field and the save is the shared Save
  • Admin > Security > Authentication -- the provider is configured in rows of sized fields
  • Admin > Maintenance -- the banner form is laid out by the shared form layout
  • Admin > Cache -- the storage settings of each tab are rows of sized fields
  • Admin > Security > Encryption -- the provider is a sized form with the shared Save
  • Admin > Org Engine -- an engine of your own is entered in rows of sized fields
  • Admin > Org Secrets -- the Org Key panel uses the shared form layout
  • Admin > Org Secrets and Your Secrets -- "+ Add secret" is above the list and the dialog ends Save, Cancel
  • Admin > Tags -- "+ Add tag" opens a form that ends Save, Cancel
  • Admin > Security > Local Users -- "+ Create user" above the list opens a form that ends Save, Cancel
  • A form whose first action is not a save keeps that action first, before the shared Cancel
  • Admin > Orgs -- the organization and invite forms open from their button and end with their action and Cancel
  • Admin > Scheduler -- "+ Add task" opens a form that starts with Identity and ends Save, Cancel
  • Admin > Email -- a browser does not fill a mail platform's client or key
  • The source form's cache tick reads "Result Cache Allowed"
  • The Uniques bar carries the same (?) as every form
  • Admin > Observability -- the tracing settings are rows of sized fields with the shared Save and Cancel
  • Admin > Export -- the catalog connection is entered in rows of sized fields
  • Admin > Import -- the upload line and the mapping rows use the shared form layout
  • Admin > Reports -- the add-report dialog starts with Identity and ends with the shared Save and Cancel
  • The replicating ring measures a build that lands a mailbox at a time by its mailboxes
  • Admin > AI Models -- keys and model assignments are rows of sized fields with the shared Save
  • The replicating ring turns until the first mailbox is read to its end
  • The Gmail source form says what a search costs once one is typed
  • Admin > Billing -- a plan's button is as wide as its words and the change dialog ends Change plan, Cancel
  • Admin > Domains -- "+ Add Domain" above the list opens a labelled form that ends Save, Cancel
  • Admin > Cache > Materialized Store -- "+ View" is at the start of its row, above the list
  • The platform administrator's welcome dialog ends with its action first, at the start of the row
  • Admin > Observability > Debug tracing -- both rows use the shared form layout
  • The table form's Column Presets row is named, sized fields with Add at its end
  • The shared confirmation dialog ends Confirm, Cancel at the start of its row
  • The guided-tour prompt ends Start tour, Maybe later at the start of its row
  • The add-relationship form is one layout that starts with Identity and ends Save, Cancel
  • The junction-table panel of a relationship is two rows of sized fields
  • The data product form's panels hold sized fields and the form ends with the shared Save and Cancel
  • A data product's custom properties are rows of key, value and Remove
  • Products -- "+ Data Product" hides while its form is open and the delete dialog ends Delete, Cancel
  • The command form's fields flow in rows of sized boxes
  • Commands -- "+ Command" opens a form that starts with Identity and ends Save, Cancel
  • Security -- the role and row-rule forms open from their button and end Save, Cancel
  • The guided tour closes the new-role form with the form's Cancel
  • Admin asks before it deletes a domain, an organization role or a scheduled task
  • A list with a resizable detail panel on its right
  • Tables -- the selected table opens in a detail panel on the right
  • A role, an RLS rule and a relationship are deleted only on confirm
  • The column editor shows a column's attributes on three tabs, with its full definition on the name
  • Polly opens narrower, and its resize is one shared mechanism
  • Tables -- the detail panel has a pinned action bar, expands, holds Preview, and gives way to nothing but itself
  • The detail panel opens at 60% of its row, not of the window
  • A source read only on schedule is a Replicate choice, not a tick beside it
  • Admin > Email -- Microsoft's "own mailbox" tick is on and fixed while the organization's is on
  • Admin > Deployment settings -- a tick that needs a restart says so beside it
  • Admin > Federation -- an engine's secret is typed into a masked box
  • Tables -- a table's detail shows its columns on the same three tabs as the editor
  • Tables -- a create form in the panel is titled for what it is
  • A table read only on schedule is a Replicate choice; one off-peak window control
  • Admin > Email -- Microsoft's "own mailbox" tick is on and fixed while the organization's is on
  • Admin > Deployment settings -- a tick that needs a restart says so beside it
  • Admin > Federation -- an engine's secret is typed into a masked box
  • Admin > Environments -- the Synthetic data tab offers the environments that exist
  • The lineage page and the sandbox sign-in, notice and sign-out are translated
  • Relationships -- a relationship opens in the right-hand panel
  • The off-peak window's label is a field label like its neighbours'
  • Tables -- the new-model form's Dimensions label matches its other labels
  • The Sources page shows a source's detail in a panel at the right of the list
  • A form open in a detail panel has its Save and Cancel in the panel's head
  • Security -- a role or an RLS rule opens in the right-hand panel
  • Metrics -- a metric opens in the right-hand panel
  • The Commands page shows a command's detail in a panel at the right of its lists
  • Relationships -- the list keeps its columns beside the panel
  • A new view is created by a short step and opens in edit; its definition is edited in the panel
  • "+" asks only for what a relationship, a role or a metric needs to exist
  • The profile dialog is on the shared form layout and no longer offers an email preference that nothing honours
  • The Maintenance and Billing tabs and the command form's dataset columns are translated
  • Billing -- the trial's and data transfer's prices are written the same in every language
  • Polly's panel is translated
  • Commands is a full-height page, a new command is asked its domain, and the profile's Save stands clear of the table below it
  • One tooltip -- the shared Tip, and HelpBubble rebuilt on its surface
  • Every form field's (?) help is drawn by the one tooltip
  • A table's column list has one tab bar of four, with Testing the fourth
  • The Tables page's two confirmations put their action first, and its preview is one component
  • The Schema Explorer's graph takes the app's fonts and colours
  • A form's Save in a panel's head can name the form it submits
  • Relationships, Security, Metrics -- Save and Cancel in the panel head
  • Admin -- every tooltip on the admin tabs is the one tooltip
  • The shared pieces, the nav bar, Polly and data products use the one tooltip
  • The explorers use the one tooltip
  • Sources -- the detail panel, the type picker and schema discovery use the one tooltip
  • The explorers' last native hover titles use the one tooltip
  • A tip inside a menu's or popover's trigger lets the trigger through; four more files converted
  • A control's own click runs before its trigger's; the four hinted triggers are click-verified and guarded
  • Every list fills the width it has, and three follow-ups
  • Relationships and Metrics -- the detail panels' hints use the one tooltip
  • Leaving a form in a detail panel with unsaved changes asks first
  • Relationships -- a refused save keeps the form open and says why
  • Security > RLS -- Save on a rule that lacks a field names what is missing
  • A list's columns are capped and give up width before the list passes the window
  • A detail panel holds no discard dialog until a leave is attempted
  • Text drawn beside a badge or above a dimmed line is held like a cell of text
  • A list's text with a space in it wraps at its spaces, however short
  • A detail panel's head actions are borderless, one style, after a divider
  • Local users -- a long username is cut on its expand button and shown whole in the hint
  • A table's detail is six section tabs, the same in its read view and its edit form
  • A table's Quality tab shows the Data Profiler, its contract and its uniques open
  • The MongoDB host explanation is the field's help
  • "+ Table" is a short step: what names the table, then its editor
  • Sources -- Refresh Schema is an icon in the panel's head, beside the other actions
  • A view's Load tab shows Refresh and Snapshot Schedule open, with no toggle
  • Relationships -- the panel shows every value of a relationship, and a junction edge's Cypher type
  • Synthetic data with no environment to hold a dataset offers "Create environment"
  • Invalidate Cache is a table's head action in its detail panel, not a list column
  • Relationships -- the domain filter reads the source and target domains, not an owner nothing sets
  • The Sources form's Load Management panel opens flat, with no toggle
  • Security › Roles -- the panel shows every value of a role, on the grid every panel uses
  • The Commands edit form's lists are laid out as the shared form lays out a list
  • Security › RLS Rules -- the panel shows every value of a rule; both Security heads name their actions in the shared hint
  • runSql says a result landed in the results store, and fails loud on an answer with no columns
  • Metrics -- the panel shows every value of a metric, under its form's labels, on the shared grid
  • Commands -- a function's and a webhook's panels show every value, under the form's labels
  • Glossary -- a term's panel shows its domains and its states beside what it edits
  • Data Products -- a product's detail shows every value of it, its ID among them, under the form's labels
  • "What's new" in the user menu shows the running release's notes
  • Tables -- every hint on the page is the shared Tip; none is the library's or the browser's
  • Amazon Athena in the source picker, with its form
  • The form's column metadata type carries a column's path
  • A table's Load and timeliness tab reads every setting it stores
  • The source picker shows AskAmerica's own logo, bundled, in place of its lettered tile
  • Preview, Profile and Policies are icon actions in a table's panel head
  • A table's Query tab reads every setting it stores
  • A table's Quality tab reads every setting it stores
  • A files source's table reads its glob and source-file column on Identity
  • Tour counts 66 source types; drop the guard exemption for a label the form no longer has
  • A source's read view is its edit form, read
  • The JSON:API Explorer takes a table's parameters
  • Read views keep their values near their labels
  • The JSON:API Explorer lists a table's parameters only under Parameters
  • Deployment settings panels fold by their headers
  • A grouped column is ordered the way it is sorted (#248)
  • The read-policy explanation is the field's hint, per the form rules
    • Source opens the type picker first

views

  • A view's inputs are in service for its readers
  • A draft view keeps its build, and its steward's preview asks for it
  • A view over a table its reader may read nothing of is refused naming it
  • A materialized draft view's preview builds it on the Postgres engine
  • A view stored by an engine with no catalog in its SQL is named without one
  • A bitemporal view is read from its log on every read, its definition governed for the reader (#246)

General

  • A registered parameter records whether its source requires it; Preview and Profile ask first (#204)
  • An unrecorded parameter of a remote GraphQL table is required (#204)
  • A mail source states its Cache TTL, and a refused table says where it is set (#208)
  • A sentinel path is offered only where a source can have one
  • A probing change signal on a mail source is refused until its check is wired
  • No requirement id in what a user reads -- the catalogs and the direct refusals
  • No requirement id in what the remaining packages say to a user; the guard has no list left
  • A credential field keeps what was typed -- the product names no secret and writes no vault
  • Table parameters, required by the source or a steward
  • Profile and preview read as the roles the user acts as; a refusal is a 403