Release notes

Sydal 1.0 release notes

Sydal 1.0 (formerly Arch Studio), by Sydal, LLC. Version 1.0.17, October 2026 (1.0.0 to 1.0.16 were test builds).

Sydal builds one model of your architecture and data from the systems you already run. It reads them read-only, draws architecture diagrams and column-level lineage from what it finds, and re-syncs whenever you choose. Everything from the 0.9 previews is included; live multi-user editing is not part of 1.0.

Install

System Installer First run
Windows 10 / 11 (64-bit) Sydal_1.0.17_x64-setup.exe (per user, no admin rights) or Sydal_1.0.17_x64_en-US.msi (IT-managed) Not code-signed yet: SmartScreen → More info → Run anyway
macOS 11 or later (Apple silicon and Intel) Coming soon: Sydal_1.0.17_universal.dmg (drag Sydal to Applications) Not notarized yet: right-click Sydal → Open the first time
Linux x64 (Ubuntu 22.04+, Debian 12+, Fedora 38+) Coming soon: .deb, .rpm and .AppImage None

Upgrading from Arch Studio 0.9: settings, the trial and license keys carry over, and model files open as before. The Windows setup removes Arch Studio 0.9 for you (keeping its data), and the MSI replaces an Arch Studio MSI install. If you remove Arch Studio yourself, leave Delete the application data unticked: it would also delete Sydal's settings and saved connection details. Once Sydal has been opened, the license and trial are kept either way; before that, re-enter your license key from your purchase email.

Windows only: SQL Server Windows sign-in (use a SQL login or Microsoft Entra ID on macOS and Linux) and the rendering (GPU) settings.

New in 1.0

Updates without reinstalling

Help → Check for updates finds a new version on getsydal.com and installs it from inside Sydal. Usually only the changes are downloaded (a few MB instead of the whole installer), Sydal keeps running, and the new version starts when you restart. If no patch fits your copy, Sydal downloads the installer, installs it with a progress window and opens again. Every update is signed by Sydal, LLC and checked byte for byte before it's used. Sydal also checks once a day when it starts, sending only its version number; turn this off under Settings → Privacy. Copies your IT department installed (the MSI) are updated the way they were installed. Updates install inside Sydal on Windows; on macOS and Linux, download new versions from getsydal.com.

New name

Arch Studio is now Sydal, made by Sydal, LLC. Sydal has a new logo: an S-shaped flow with an arrow, running between two boxes, on the app icon, the toolbar, the About box and the window icon. The app, its messages and its documents use American spelling (Help → License).

Windows, macOS and Linux

Sydal 1.0 is built to run on macOS and Linux as well as Windows. The Windows installers are available now; the macOS and Linux installers follow, built and tested on those systems before release. Keyboard shortcuts take ⌘ on a Mac wherever they say Ctrl.

Grok (xAI) for the AI assistant (Preview)

AI → Assistant → Model runs on → Grok, xAI API lets Grok work on your diagrams with your own xAI key (from console.x.ai). Grok uses the same tools as the other assistants: it reads the model, searches it, looks at views and validation, and proposes new or changed elements, lines, views and layouts as preview cards. Nothing changes until you accept, and accepting is one Undo step. The key is kept in memory until Sydal closes (or read from XAI_API_KEY), never saved. As with every AI service, what Grok reads leaves your computer, with passwords and keys in your model masked first.

Code imports: no more guessing by name

When Sydal reads a code base, every import now resolves by the language's own rules and the project's configuration, never by finding a file with the same name somewhere else. An import that should be in the project but leads nowhere is listed as unlinked (with why) in the scan result, instead of being linked to a look-alike. Libraries and the standard library are left out as before.

  • Roblox (Luau): the project is read as the game's instance tree, from the Rojo *.project.json when there is one, or from the folders (Script Sync). An init script is its folder's own code, so there is no separate "init.luau" box. require paths are followed step by step (script, .Parent, .X, :WaitForChild("X"), :FindFirstChild, :GetService, :FindFirstAncestor, ["X"], and local aliases such as local Shared = ReplicatedStorage.Shared), so modules that share a name (Types, Util) are never mixed up. Script types come from the file name: .server (Script), .client (LocalScript with Rojo, client Script otherwise) and .plugin. "./x", "@self/x" and .luaurc aliases are followed too.
  • TypeScript and JavaScript: tsconfig.json / jsconfig.json baseUrl and paths.
  • Python: packages from the project folder, a src layout, or the roots pyproject.toml / setup.cfg name.
  • Java, Kotlin and Scala: the class each import names, from the files' declared packages.
  • C# / .NET: namespaces, limited to the file's project and the projects its .csproj references.
  • Go: go.mod module paths. Rust: crate::, self::, super:: and workspace crates (Cargo.toml).
  • PHP: composer.json PSR-4 namespaces. Ruby: require_relative and lib/.
  • C and C++: headers beside the file, then the include folders CMake names. Lua and R: from the project folder.

Where does this data come from?

Right-click anything, such as a Power BI report, a table or a dataset, and choose Where does its data come from? (or use Where it comes from… in the trace panel). Sydal follows the data upstream across every connected system to where it starts. It shows the route (for example UKG → Azure Data Factory → ADLS → Databricks → Power BI), the real origins (APIs, files, applications) and the open ends: tables another system only referenced, such as a Databricks table a Power BI model reads that hasn't been read from Databricks itself. With Databricks connected, Follow to the origin reads those tables and their lineage from Databricks, assesses again, and repeats (up to 5 rounds) until the trail reaches real origins. Snowflake and SQL Server open ends link to their connectors.

Databricks: sign in with your Microsoft work account

Connect → Databricks now starts with Microsoft work account. Type your work email and click Find my workspaces. Your browser opens your company's usual Microsoft sign-in page (with MFA), just like Teams. Sydal then lists the Azure Databricks workspaces your account can reach; pick one and click Connect. There's no workspace URL or token to paste, and nothing is saved. Access tokens, workspace URLs and profiles still work as before.

Databricks: map just the tables you need

In Connect → Databricks, you can now leave things out of a ticked catalog. Untick a schema or a single table inside it, and Sydal imports the rest of the catalog without it. Or tick only a few tables. Lineage still brings in the tables those read from and write to, so you see what your design connects to without pulling the whole catalog. A catalog or schema with something picked inside it shows half-ticked, since part of it is imported. Tables on this view ticks the Databricks tables on the diagram you have open. Without a connection, the Single tables field takes catalog.schema.table names for the SQL script and file import.

Feedback and bug reports

Help → Send feedback or report a bug writes an email to [email protected] in your own mail app, for you to check and send (or copies it, for webmail). Sydal sends nothing by itself. Error messages, and anything that goes wrong unexpectedly, offer a Report button that fills in what just happened. Technical details are optional and never include names or content from your model, license keys or connection details.

Keys and secrets: Azure DevOps and Key Vault (Preview)

Connect → Azure DevOps & Key Vault answers "if this key is updated, what else uses it, and where else does it need changing?".

  • Where each key lives: a Key Vault, a DevOps variable group, a pipeline's or release stage's own variables, or a service connection, with exactly where to change it.
  • What uses it: the pipelines and classic releases that use each key, through variable groups, $(name) references, Key Vault tasks and service connections. Right-click a key → Trace lineage & impact for everything that depends on it.
  • Kept in more than one place: a key stored in Key Vault and in DevOps, or in several variable groups or pipelines, is flagged with a dashed amber outline and collected in its own view with the pipelines using each copy, because updating one copy leaves the others stale.
  • Only names are kept, never values. Secret values are never requested; the plain variable values and pipeline files Azure DevOps returns are read in memory to find references, then dropped. For least access, use a personal access token with read-only scopes and the Key Vault Reader role (an Entra sign-in carries your account's full access, though Sydal only reads). Don't read pipeline files keeps the YAML unread. A new Secret element kind holds the names.

Security and licensing (from the 1.0 security review)

  • Trial and license: the trial is kept in two records, each sealed to the computer. Deleting or damaging one doesn't restart the trial, editing the dates ends it, and setting the clock back doesn't add days or revive a key that has ended. License keys can now be withdrawn: a key that leaks is refused by every later build.
  • License notices: LICENSE.txt, THIRD-PARTY-NOTICES.md and THIRD-PARTY-LICENSES.txt (every license text, about 1 MB) are installed with the app; Help → About → Open-source licenses shows and saves them.
  • Secrets in shared output: passwords, keys and tokens typed into descriptions show as *** in the published site, text exports (Markdown, data dictionary, CSV, Mermaid, DBML), every picture export (PNG, SVG, PDF, web page, share card, slides) and what AI services and AI apps are given. That covers Password=… and its kin, JSON fields, credentials in addresses (postgres://user:…@host), Bearer tokens and well-known key formats (AWS, GitHub, Slack, OpenAI-style, Databricks, JWTs). The web-page export's element and relationship tables are masked as well as its diagram. The model keeps what you typed; files for other diagram tools (draw.io, Visio, Structurizr, PlantUML) keep it too.
  • Published site: diagrams are cleaned of anything that could run or load from elsewhere (scripts, embedded HTML, styles, animations, event handlers, and links other than the diagram's own, however they are written) before they go into the site.
  • AI app connection (MCP): requests from web pages (including Origin: null) and requests addressed to any other host name are refused.
  • draw.io import: a small file that unpacks to something huge is refused at once (over 32 MB a page, 64 MB or 200 pages a file) instead of freezing the app.

Fixed (from Preview testing)

  • From the 1.0.15 follow-up review:
    • Snowflake tokens only go to Snowflake, over HTTPS: an account such as http://localhost:@evil.example passed the check meant for local testing and sent the token elsewhere in plain HTTP. Released builds no longer accept a local test address at all.
    • Editing stays smooth during long work: edits, undo and redo run off the window's thread (in order), and survey answers, draft comparison, web-page publishing, tracing and "Where does its data come from?" work on a copy of the model, so dragging a box never waits for them.
    • Undo memory has a ceiling: besides the step count, the undo history now stays under about 400 MB, dropping its oldest steps first on very big models. Data assessment snapshots are shared between undo steps instead of copied.
    • A finished import only lands in the model it started on: if another model was opened, made new, restored or an example loaded meanwhile, nothing is merged into it and Sydal says why.
    • The code panel only reads folders you chose: a model names the folder its code was scanned from; a folder you didn't scan on this computer is read only after you agree.
    • "Follow to the origin" no longer stops on one odd table name: a Databricks table named with spaces or accented letters is listed, but not sent by name (read its schema from the Databricks dialog instead).
    • The trial can't freeze: if neither the settings folder nor the license record can be written, the trial is treated as ended (with a notice saying why) until one of them can.
    • Saving is safer: two saves of the same file at once (such as autosave) can't mix, a file held briefly by antivirus or OneDrive is retried, and a shortcut (symbolic link) is followed instead of replaced.
    • Sign-in details are kept out of logs and error messages for every connector: Databricks, Power BI, dbt Cloud, Tableau and the other sources, schedulers, Git hosts, PostgreSQL, and the AI keys.
    • A security advisory in a library used for PostgreSQL sign-in (ctutils) is fixed, and every release is now checked for known advisories before it's built.
  • From the 1.0.13 code review:
    • The trial can't be kept open by making settings.json read-only: if Sydal can't save its settings, the license check still decides, and anything unexpected locks editing rather than unlocking it. Trial records without a seal now count as edited.
    • Saving can't corrupt your model: models, autosave copies, settings and exports are written to a temporary file, flushed to disk and then swapped in, so a crash, power cut or full disk leaves the old file or the new one, never a broken one.
    • Undo no longer multiplies saved versions: each undo step used to copy every saved version and draft; they're now shared. A model with 20 saved versions could grow to gigabytes of memory after a few hundred edits.
    • A draw.io file can't crash Sydal: a % next to an accented letter or emoji in a compressed page crashed the import. It's fixed, and any future parser bug on an odd diagram file shows an error instead.
    • Values passed to the Azure, Databricks and Google Cloud command-line tools are checked: a scope, host or profile containing &, |, %, quotes or spaces is refused, so it can't run other commands.
    • Snowflake tokens only go to Snowflake: an account value like evil.example# is refused.
    • Imports, autosave and web-page publishing no longer freeze the window on big models: they run in the background.
    • The open model can't be swapped while an import runs, so a long sync can't land in a different model.
    • The code panel only shows source files a code scan reads, never hidden files such as .env or keys, even if a model file points it there.
    • Sign-in details for Snowflake, SQL Server and Microsoft Entra ID can't be written to a log by mistake.
  • Confirmation questions were skipped (important): in 1.0.0 to 1.0.12, Sydal didn't wait for your answer to "Are you sure?" questions and carried on as if you'd said yes. This affected New, Open and loading an example with unsaved changes; deleting elements, a view, a glossary term or a draft; restoring a version; removing the license key; resetting settings; and forgetting saved connections. It also showed the error "plugin:dialog|confirm not allowed by ACL". Sydal now asks in its own box and waits: Cancel or Esc stops the action.
  • ML models in a chosen catalog didn't import: Databricks rejected the request with "Cannot have an empty schema if the catalog is set". Sydal now lists a catalog's models schema by schema.
  • Databricks rate limits (429): when Databricks says Sydal is asking too fast, Sydal now waits (as long as Databricks asks, or 1 to 16 seconds) and tries again, up to 5 times. This applies to every Databricks request. ML models now uses the same tree as the Databricks connector: open a catalog to see its schemas and a schema to see its models, then tick a whole catalog, a schema or single models. A schema or single models is much faster than a whole catalog. Many refusals now show as one line instead of one per schema.
  • Long catalog names overlapped in the ML models, Snowflake and Power BI pick lists. They now end in "…", with the full name on hover.
  • "Something went wrong" said nothing: the error notice now shows what actually failed, for example Databricks' own message, and where in Sydal it happened. Report includes the last few errors in full.
  • A "Something went wrong" error during Databricks sign-in and sync (status.scrollIntoView is not a function) is fixed.
  • Imports could look stuck: while an import or sync runs, its status line now shows a spinner and a running clock, and scrolls into view. Schemas and tables loading in the Databricks picker show a spinner too.
  • Populate froze the app: on a view with Lines route around boxes turned on, Populate (which can add a hundred or more boxes at once) could freeze Sydal for most of a minute while every line was routed. Routing is now far faster (about 45 s → 2 s on the HR example's largest view), and it never takes more than about two seconds: on very busy views the remaining lines are drawn directly, with a note saying so.
  • License notices in view: a key that is refused (withdrawn, changed or ended) or a computer clock that is wrong is now explained in a notice when Sydal starts and in the toolbar chip's tooltip, not only under Help → License.
  • Draft review: a name whose only change is capitals or spacing says so, instead of "renamed from" a name that looks the same.
  • Text past the edge of boxes: in the Executive, C4, Databricks and other styles, text could spill over the next box or be cut off mid-word where the screen draws fonts wider than expected. Each line is now checked as drawn: one that is too wide drops whole words and ends in "…".
  • Duplicates on re-import: re-importing your own draw.io or Visio export, into a new model or into the one it came from, no longer duplicates boxes.
  • Dialog error: opening a dialog from inside another one (for example Versions, then Compare) raised an error.
  • AWS draw.io diagrams: VPCs, subnets and other cloud groups drawn over their contents (as in the official AWS examples) now become groups that hold those contents, instead of solid boxes covering them. The same applies to the official Azure templates (filled group boxes titled at the top, translucent backdrops) and Google Cloud groups. Drop shadows and background panels are left out, and a frame that can't be nested (such as an availability zone drawn across subnets) is named in the import notes.
  • Toolbar out of reach: at large text sizes or in small windows, toolbar buttons such as Settings and Connect could be pushed off-screen. The toolbar now wraps onto a second row when it has to, and the smallest window size grows with the text size (but never beyond the screen, title bar included).
  • Rename leftovers: the program is Sydal.exe (it was arch-studio.exe), the Snowflake connection identifies as this Sydal version, and "an Sydal" now reads "a Sydal".

Everything in Sydal 1.0

Model and diagrams

  • One model, many views: rename an element once and every diagram updates. 18 viewpoints, from C4 and application landscape to data lineage, ERDs, infrastructure, security and threat models.
  • Auto layout (flow, zones, big picture), lines that route around boxes and spread along box edges, labels that keep clear of each other, path between two elements (P), presentation mode (F5).
  • Design styles in one click: Microsoft Azure, AWS, Google Cloud, Databricks, C4, ArchiMate 3.2, Visio / Office and Executive, with title block, legend and a standards check.
  • Versions and changes: save versions, compare, and see what changed on the diagram; drafts with review before anything changes the model.

Data

  • Table- and column-level lineage; trace lineage and impact from any element or column.
  • Data assessment: likely foreign keys with evidence, renamed columns, copies of tables, read-only profiling.
  • Table usage: when tables were last read and written, with filters to hide what nobody uses.
  • Load schedules on one 24-hour timeline, flagging loads that start before their inputs are ready.
  • Reference architecture planner for the Databricks lakehouse.

Portfolio

  • Application portfolio (fit, criticality, cost, TIME), capability heat map, roadmap, notifications, and offline data-quality surveys for owners.

Sources (Connect), all read-only

  • Databricks (Unity Catalog, lineage, jobs, ML models), SQL Server / Azure SQL, Snowflake, Azure, Power BI, APIs (OpenAPI, GraphQL), code repositories (16 languages), dbt and OpenLineage, data model files and Mermaid.
  • Preview (built to the vendors' documented APIs and tested with sample data): Microsoft Fabric, PostgreSQL / Redshift, BigQuery, Oracle, MySQL, Db2, Teradata and SAP HANA by paste, Purview, Collibra, Alation, Tableau, Looker, Qlik Cloud, Terraform / Bicep, AWS, Google Cloud, Kafka / Event Hubs, Jira, Confluence, ServiceNow, schedulers and orchestrators, Azure DevOps & Key Vault.
  • Sources stitch together: the same table found by several of them is one element.
  • Passwords, tokens and keys are used for the read and never saved.

Share

  • Export to PNG, SVG, PDF (print sizes), PowerPoint, draw.io, Visio, Structurizr and C4-PlantUML; import from draw.io, Visio, Structurizr and PlantUML.
  • A read-only published site with diagrams, a searchable catalog, glossary and lineage, with links that reopen the same view; a share card for Teams, Slack or a pull request.
  • A browser version for viewing and editing models stored as files on each person's computer.

AI (optional, on your own provider)

  • Preview: an assistant on Databricks, Snowflake Cortex, Azure OpenAI, the Claude API or Grok (xAI) that proposes changes you approve, Genie and Cortex Analyst answers, and a local connection for other AI apps (MCP).

License

  • 30-day trial, then an offline license key. After the trial without a key, models still open, show, trace and export.

Download Sydal 1.0.17 for Windows