<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://itb.banian.ch/user-docs/changelog-webapp</id>
    <title>Information Toolbench by Banian Blog</title>
    <updated>2026-08-28T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://itb.banian.ch/user-docs/changelog-webapp"/>
    <subtitle>Information Toolbench by Banian Blog</subtitle>
    <icon>https://itb.banian.ch/user-docs/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[0.1.2 (Client)]]></title>
        <id>https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2</id>
        <link href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2"/>
        <updated>2026-08-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ITB 0.1.2 turns the model into something you install into and can question: a Marketplace for packs, declarative quality rules, and a SQL console over the model itself.]]></summary>
        <content type="html"><![CDATA[<p><strong>ITB 0.1.2</strong> turns the model into something you install into and can question: a Marketplace for packs, declarative quality rules, and a SQL console over the model itself.</p>
<blockquote>
<p><strong>Part of ITB 0.1.2 release</strong> - See <a class="" href="https://itb.banian.ch/user-docs/changelog/itb-0.1.2">master release</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-new-features">✨ New Features<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="marketplace--browse-and-install-models-template-packs--config">Marketplace — browse and install models, template packs &amp; config<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#marketplace--browse-and-install-models-template-packs--config" class="hash-link" aria-label="Direct link to Marketplace — browse and install models, template packs &amp; config" title="Direct link to Marketplace — browse and install models, template packs &amp; config" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A <strong>Marketplace</strong> button in the top toolbar opens a catalog dialog where you can browse and install ready-made content into your workspace: whole <strong>models</strong>, <strong>template packs</strong>, and <strong>config</strong> bundles (type &amp; custom-property definitions). Items are organised by <strong>tier</strong> (Company / Banian / Community) and by <strong>group</strong> (All / Model / Template / Config), each with a live count, and every item can be expanded to inspect what it contains before you install it.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="show-which-templates-apply-to-an-entity">Show which templates apply to an entity<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#show-which-templates-apply-to-an-entity" class="hash-link" aria-label="Direct link to Show which templates apply to an entity" title="Direct link to Show which templates apply to an entity" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A <strong>Show templates</strong> action on any entity (canvas node, left tree, or right sidebar) previews which template definitions would generate for that entity and lists them in a new <strong>Templates</strong> tab in the bottom panel. Each match shows its definition, the artifact it produces and the pack it comes from, with per-row <strong>"Explain why"</strong> (why this template matched) and <strong>"View code"</strong> (the generated artifact) actions.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="zoom-level-attribute-detail-on-large-viewpoints">Zoom-level attribute detail on large viewpoints<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#zoom-level-attribute-detail-on-large-viewpoints" class="hash-link" aria-label="Direct link to Zoom-level attribute detail on large viewpoints" title="Direct link to Zoom-level attribute detail on large viewpoints" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>On large viewpoints the canvas now shows attribute detail only when you are zoomed in enough to read it. Below a configurable zoom threshold, entities collapse to their headers and attribute-mapping edges merge to one line per entity pair; zooming back in restores the full attribute rows and individual connections. A top-left badge indicates when detail is hidden because of the zoom level.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="model-level-custom-properties">Model-Level Custom Properties<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#model-level-custom-properties" class="hash-link" aria-label="Direct link to Model-Level Custom Properties" title="Direct link to Model-Level Custom Properties" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Custom properties can now be defined and set at the <strong>model level</strong>, closing the last gap in the typing system's object model — entity, attribute and relation instances already had custom properties; there was no scope for the model as a whole. A new <strong>Model</strong> category joins the existing three in Settings → Custom Properties: define typed properties there (text or enum, no type-scope narrowing since there are no "model types" to scope to), then set their values once, globally, via <strong>Model Actions → Properties</strong>.</p>
<p><img decoding="async" loading="lazy" alt="ui-084-new_model-level-custom-properties_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-084-new_model-level-custom-properties_001-1da0fb77279bcb0e77239280c4493f20.png" width="1400" height="900" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-084-new_model-level-custom-properties_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-084-new_model-level-custom-properties_002-e356df9ab8131edfb401cbaaca0143e5.png" width="448" height="320" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="key-field-on-relation--viewpoint-types--type-key-uniqueness">Key Field on Relation &amp; Viewpoint Types + Type-Key Uniqueness<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#key-field-on-relation--viewpoint-types--type-key-uniqueness" class="hash-link" aria-label="Direct link to Key Field on Relation &amp; Viewpoint Types + Type-Key Uniqueness" title="Direct link to Key Field on Relation &amp; Viewpoint Types + Type-Key Uniqueness" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Relation types and viewpoint types now carry a <strong>key</strong>, matching entity types and attribute types — all four type families are consistent again. The Add/Edit dialogs for relation and viewpoint types require a key, and the Settings ▸ Types tables show it as a new column. Alongside this, <strong>key uniqueness is now validated for all four type families</strong> (previously none of them checked it).</p>
<p><img decoding="async" loading="lazy" alt="ui-085-new_type-keys-relation-viewpoint_001.png" src="data:image/png;base64,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" width="448" height="288" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="quality-rules-engine-model-validation">Quality Rules Engine (Model Validation)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#quality-rules-engine-model-validation" class="hash-link" aria-label="Direct link to Quality Rules Engine (Model Validation)" title="Direct link to Quality Rules Engine (Model Validation)" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>ITB now validates models against declarative quality rules. A new <strong>Quality</strong> tab in the bottom panel lists the rule groups the user has installed from the marketplace (e.g. the <em>Core Model Quality</em> pack with <em>Referential Integrity</em>, <em>Custom Properties</em> and <em>Model Hygiene</em>) and runs them — all at once, per group, or a single rule — against the current model. While a run is in progress the panel shows live feedback (rules executed out of total, with a per-rule status log). The result is a report with pass/fail/error status per rule, severity counts, and an expandable table of the exact offending records (capped at 100 rows, with the true total shown).</p>
<p><img decoding="async" loading="lazy" alt="ui-086-new_quality-rules-engine_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-086-new_quality-rules-engine_001-080eca811e7afa18875a59d804d65034.png" width="819" height="166" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-086-new_quality-rules-engine_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-086-new_quality-rules-engine_002-ad7b90527b7c76f11a8e478eca0332be.png" width="768" height="380" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="sql-console-tab">SQL Console Tab<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#sql-console-tab" class="hash-link" aria-label="Direct link to SQL Console Tab" title="Direct link to SQL Console Tab" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A new <strong>SQL</strong> tab in the bottom panel lets power users and support engineers query the current model with real SQL. The model is projected into a read-only, in-browser SQL database (the same engine the Quality tab uses), so joins, aggregations and JSON functions work against familiar table names (<code>entities</code>, <code>attributes</code>, <code>relations</code>, …). The console ships with syntax highlighting, table/column autocompletion, a formatter, a query history (last 10), and a schema reference listing every table and its columns.</p>
<p><img decoding="async" loading="lazy" alt="ui-087-new_sql-console-tab_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-087-new_sql-console-tab_001-00613a90c2124740aa68173631bf8400.png" width="819" height="166" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="where-an-installed-pack-came-from">Where an installed pack came from<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#where-an-installed-pack-came-from" class="hash-link" aria-label="Direct link to Where an installed pack came from" title="Direct link to Where an installed pack came from" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A pack can reach your installation two ways: through the Marketplace, or as a bundle you upload yourself. <strong>Until now that was not visible.</strong> Both routes produced the same result on disk, and neither the Marketplace nor the pack dialog could say which one it had been.</p>
<p><img decoding="async" loading="lazy" alt="ui-100-new_pack-install-provenance_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-100-new_pack-install-provenance_001-206768bf6e8e741fe67150f710f7bf75.png" width="672" height="438" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-100-new_pack-install-provenance_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-100-new_pack-install-provenance_002-703b98d7a589f081d3388b431d8fb7df.png" width="672" height="314" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="a-retail-data-vault-demo-pack-on-the-automatedv-standard-macros">a Retail Data Vault demo pack, on the AutomateDV standard macros<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#a-retail-data-vault-demo-pack-on-the-automatedv-standard-macros" class="hash-link" aria-label="Direct link to a Retail Data Vault demo pack, on the AutomateDV standard macros" title="Direct link to a Retail Data Vault demo pack, on the AutomateDV standard macros" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A new template pack, <strong><code>demo_retail_dv</code></strong>, generates a small Raw Vault from three seed files: three staging views, two hubs, one link and one satellite. It is deliberately small, and deliberately <strong>not</strong> the Banian implementation — its templates call the AutomateDV standard macros (<code>automate_dv.hub</code>, <code>.link</code>, <code>.sat</code>, <code>.stage</code>, v0.11), so the generated models are readable against that package's own documentation.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="the-client-wears-the-itb-corporate-design">The client wears the ITB corporate design<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#the-client-wears-the-itb-corporate-design" class="hash-link" aria-label="Direct link to The client wears the ITB corporate design" title="Direct link to The client wears the ITB corporate design" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The application's accent colour is now the ITB brand pink, <code>#E9337F</code>, and the ITB logo has replaced the placeholder mark in the sidebar and on the sign-in screen. Until now the client shipped the stock colour of the component library it is built on — a violet nobody chose — so the product looked like its toolkit rather than like itself.</p>
<p><img decoding="async" loading="lazy" alt="ui-117-new_itb-corporate-design_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-117-new_itb-corporate-design_001-594f08e1088d01a41759c04e5aa0f46a.png" width="1280" height="720" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-117-new_itb-corporate-design_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-117-new_itb-corporate-design_002-09514612f8932ca28054de989695f56f.png" width="1280" height="720" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-117-new_itb-corporate-design_003.png" src="https://itb.banian.ch/user-docs/assets/images/ui-117-new_itb-corporate-design_003-46e2d1654283c2db337632adbc2cfbd5.png" width="1280" height="720" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="a-status-bar-and-panes-you-can-put-away">A status bar, and panes you can put away<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#a-status-bar-and-panes-you-can-put-away" class="hash-link" aria-label="Direct link to A status bar, and panes you can put away" title="Direct link to A status bar, and panes you can put away" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The workspace has a strip along its bottom edge holding four toggles — the left sidebar, the panel area, the properties pane, and the console. Each pane can also be shut by a chevron in its own top corner.</p>
<p><img decoding="async" loading="lazy" alt="ui-118-new_status-bar-and-collapsible-panes_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-118-new_status-bar-and-collapsible-panes_001-9cd669b4e40da9d9d7de4d22a480032b.png" width="1280" height="720" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-118-new_status-bar-and-collapsible-panes_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-118-new_status-bar-and-collapsible-panes_002-09514612f8932ca28054de989695f56f.png" width="1280" height="720" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-118-new_status-bar-and-collapsible-panes_003.png" src="https://itb.banian.ch/user-docs/assets/images/ui-118-new_status-bar-and-collapsible-panes_003-98e03a560e1175ba48378918098fd4c3.png" width="819" height="157" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="the-same-business-world-modelled-twice">The same business world, modelled twice<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#the-same-business-world-modelled-twice" class="hash-link" aria-label="Direct link to The same business world, modelled twice" title="Direct link to The same business world, modelled twice" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The retail demo gains a second, entirely different half. <code>demo_retail_dv</code> already turns customers, products and orders into dbt models for a Data Vault. The new <code>demo_retail_ebo</code> pack takes the <strong>same business world</strong> and treats it as business objects — producing a JSON Schema per object and an HTML data-catalog page for the whole model.</p>
<p><img decoding="async" loading="lazy" alt="model-009-new_demo-retail-business-objects_001.png" src="https://itb.banian.ch/user-docs/assets/images/model-009-new_demo-retail-business-objects_001-37289cf3fe0141e0aa4c70336f9db4fe.png" width="512" height="400" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="bonsai-runs-quality-rules--sql">Bonsai Runs Quality Rules &amp; SQL<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#bonsai-runs-quality-rules--sql" class="hash-link" aria-label="Direct link to Bonsai Runs Quality Rules &amp; SQL" title="Direct link to Bonsai Runs Quality Rules &amp; SQL" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>The Bonsai assistant can now validate and query the model the same way a power user does. Three new agent tools were added: run the quality rule groups (all or one) and get a compact pass/fail report with violation samples, run read-only SQL against the model projection, and look up the queryable schema. A <code>findGroups</code> lookup was also added so the assistant can resolve entity-group ids by name.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="wizards-show-what-they-will-change-on-existing-objects">Wizards show what they will change on existing objects<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#wizards-show-what-they-will-change-on-existing-objects" class="hash-link" aria-label="Direct link to Wizards show what they will change on existing objects" title="Direct link to Wizards show what they will change on existing objects" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>The Business Object (BO+) wizard gained a final <strong>Review changes</strong> step. It lists every change the wizard is about to make to objects that <strong>already exist</strong> in the model — today the <em>Generate Link+</em> setting on each link the business object includes — with the current and the new value. Continuing applies those changes together with the business object, as one undoable step.</p>
<p><img decoding="async" loading="lazy" alt="ui-090-new_wizard-change-review_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-090-new_wizard-change-review_001-c4f1e6ef161cfbe5c1b074103268ab9c.png" width="1178" height="398" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="column-picker-grouped-by-entity-and-renaming-without-the-mouse">Column picker grouped by entity, and renaming without the mouse<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#column-picker-grouped-by-entity-and-renaming-without-the-mouse" class="hash-link" aria-label="Direct link to Column picker grouped by entity, and renaming without the mouse" title="Direct link to Column picker grouped by entity, and renaming without the mouse" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>The column picker used across the Data-Vault wizards now groups the <em>Available</em> pane by the entity each column belongs to, with a heading per group and its own <strong>Add all</strong>. In the Business Object wizard, where columns arrive from several satellites at once, that turns a long flat list into one block per source.</p>
<p><img decoding="async" loading="lazy" alt="ui-108-new_column-picker-grouping-and-keyboard_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-108-new_column-picker-grouping-and-keyboard_001-68a9f0944894c48caf09b17bc8053ae4.png" width="1136" height="433" class="img_weVP"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="️-infrastructure">🏗️ Infrastructure<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#%EF%B8%8F-infrastructure" class="hash-link" aria-label="Direct link to 🏗️ Infrastructure" title="Direct link to 🏗️ Infrastructure" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="open-documentation-with-licence-badges-and-the-use-case-as-a-dimension">Open documentation with licence badges, and the use case as a dimension<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#open-documentation-with-licence-badges-and-the-use-case-as-a-dimension" class="hash-link" aria-label="Direct link to Open documentation with licence badges, and the use case as a dimension" title="Direct link to Open documentation with licence badges, and the use case as a dimension" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The documentation site no longer withholds material by licence level — it publishes it and marks it. Every changelog entry carries a badge saying which licence the change needs (<strong>Standard</strong> or <strong>Enterprise</strong>), and the release overview groups its counts by licence so the split is visible before you read a single entry.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="a-pack-declares-how-it-is-delivered">A pack declares how it is delivered<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#a-pack-declares-how-it-is-delivered" class="hash-link" aria-label="Direct link to A pack declares how it is delivered" title="Direct link to A pack declares how it is delivered" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A capability pack now states in its own configuration whether it is delivered encrypted or in the open. The field is <code>distribution</code>, it takes exactly two values — <code>encrypted</code> and <code>open</code> — and it is mandatory for a capability pack: there is no default value, and a pack without the field stops the scripts that read it rather than being guessed at in either direction.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="one-marketplace-item-installs-several-components">One marketplace item installs several components<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#one-marketplace-item-installs-several-components" class="hash-link" aria-label="Direct link to One marketplace item installs several components" title="Direct link to One marketplace item installs several components" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The marketplace has a sixth group, <strong>Bundles</strong>. A bundle is one item that installs several components at once — a model with its type configuration, template packs, capability packs and quality rule groups — in the order that makes them work.</p>
<p><img decoding="async" loading="lazy" alt="infra-016-new_marketplace-bundles_001.png" src="https://itb.banian.ch/user-docs/assets/images/infra-016-new_marketplace-bundles_001-6d8ae99f8b21fb84bf1e4e3e9ef0c7c7.png" width="768" height="592" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="infra-016-new_marketplace-bundles_002.png" src="https://itb.banian.ch/user-docs/assets/images/infra-016-new_marketplace-bundles_002-50056173d1750d6a8487ce01ac9161fc.png" width="512" height="380" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="infra-016-new_marketplace-bundles_003.png" src="https://itb.banian.ch/user-docs/assets/images/infra-016-new_marketplace-bundles_003-25fe5320295abaa9cd0b8260ea350cc4.png" width="718" height="111" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="infra-016-new_marketplace-bundles_004.png" src="https://itb.banian.ch/user-docs/assets/images/infra-016-new_marketplace-bundles_004-e40ee773496e75afdf8691c0822eaeea.png" width="512" height="336" class="img_weVP"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-fixes">🐞 Fixes<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#-fixes" class="hash-link" aria-label="Direct link to 🐞 Fixes" title="Direct link to 🐞 Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="large-viewpoints-render-and-pan-smoothly">Large viewpoints render and pan smoothly<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#large-viewpoints-render-and-pan-smoothly" class="hash-link" aria-label="Direct link to Large viewpoints render and pan smoothly" title="Direct link to Large viewpoints render and pan smoothly" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Opening, panning, selecting and expanding entities on large viewpoints (100+ entities, thousands of attribute mappings) is now fast and no longer flickers. Previously such viewpoints could take tens of seconds to appear, stutter badly while panning, and flash the whole canvas when a single node was expanded or selected.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="the-app-becomes-usable-immediately-after-loading-a-large-model">The app becomes usable immediately after loading a large model<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#the-app-becomes-usable-immediately-after-loading-a-large-model" class="hash-link" aria-label="Direct link to The app becomes usable immediately after loading a large model" title="Direct link to The app becomes usable immediately after loading a large model" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Loading a model (on startup or via reload-from-server) now makes the app interactive right away instead of freezing while the model is written to the local browser cache. On a large model the local write can take many seconds; that work now happens in the background.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="version-drift-dialog-no-longer-flashes-over-the-app">Version-drift dialog no longer flashes over the app<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#version-drift-dialog-no-longer-flashes-over-the-app" class="hash-link" aria-label="Direct link to Version-drift dialog no longer flashes over the app" title="Direct link to Version-drift dialog no longer flashes over the app" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The "version mismatch detected" dialog now opens as a real, standing dialog you resolve deliberately, instead of flashing over the whole app and dismissing itself. It also no longer appears at all during dev render-performance testing.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="smooth-canvas-gestures-on-large-viewpoints-calm-culling">Smooth canvas gestures on large viewpoints (calm culling)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#smooth-canvas-gestures-on-large-viewpoints-calm-culling" class="hash-link" aria-label="Direct link to Smooth canvas gestures on large viewpoints (calm culling)" title="Direct link to Smooth canvas gestures on large viewpoints (calm culling)" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Panning and zooming large viewpoints no longer stutters from the canvas engine's own visibility bookkeeping. Rendering off-screen elements is now managed by a "calm" culling scheme that does all its work between gestures instead of on every frame — the worst measured pan gesture is twice as fast, and zooming a large expanded viewpoint up to ~3× faster.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="slim-attribute-rows-delegated-events-no-per-cell-tooltips">Slim attribute rows (delegated events, no per-cell tooltips)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#slim-attribute-rows-delegated-events-no-per-cell-tooltips" class="hash-link" aria-label="Direct link to Slim attribute rows (delegated events, no per-cell tooltips)" title="Direct link to Slim attribute rows (delegated events, no per-cell tooltips)" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Attribute rows in canvas entity nodes are now render-only: row clicks, keyboard activation and the right-click context menu are handled by one delegated handler set per entity table instead of three listeners on every row, the per-cell hover tooltips were removed, and the 🔑 identifier emoji was replaced by a small vector icon. Rows look and behave the same.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="batched-attribute-edge-layer-on-large-viewpoints">Batched attribute-edge layer on large viewpoints<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#batched-attribute-edge-layer-on-large-viewpoints" class="hash-link" aria-label="Direct link to Batched attribute-edge layer on large viewpoints" title="Direct link to Batched attribute-edge layer on large viewpoints" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>On large ("heavy") viewpoints, the thousands of attribute-mapping lines between expanded entities are now drawn as a handful of merged vector paths instead of one component per line. The lines look pixel-identical and stay fully interactive (click to select the relation, right-click for its context menu), but panning and zooming an expanded large viewpoint runs essentially zero per-line code — the measured worst case (200 entities, dense mappings) spent 5.4 s of script per pan before, 23 ms after.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="pack-settings-show-readable-names-instead-of-internal-keys">Pack settings show readable names instead of internal keys<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#pack-settings-show-readable-names-instead-of-internal-keys" class="hash-link" aria-label="Direct link to Pack settings show readable names instead of internal keys" title="Direct link to Pack settings show readable names instead of internal keys" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>When a template pack needs a setting your model does not have yet, the <em>Align model with template pack</em> action creates it for you. Those auto-created settings arrived carrying their <strong>internal key</strong> as their name, so the properties panel listed entries like <code>gen_link_eff_sat</code>, <code>hub_bk_mode</code> and <code>meta_dt_filter</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="installing-a-capability-pack-no-longer-fails-when-its-base-is-missing">Installing a capability pack no longer fails when its base is missing<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#installing-a-capability-pack-no-longer-fails-when-its-base-is-missing" class="hash-link" aria-label="Direct link to Installing a capability pack no longer fails when its base is missing" title="Direct link to Installing a capability pack no longer fails when its base is missing" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A capability pack — the Data Vault wizards, for example — needs the template pack whose vocabulary those wizards create. In the Marketplace the capability pack offered <strong>Load</strong> even when that base was not installed, and the attempt then failed with a conflict message.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="the-quality-tab-failed-once-a-rule-pack-was-installed">The Quality tab failed once a rule pack was installed<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#the-quality-tab-failed-once-a-rule-pack-was-installed" class="hash-link" aria-label="Direct link to The Quality tab failed once a rule pack was installed" title="Direct link to The Quality tab failed once a rule pack was installed" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Installing a quality rule pack from the Marketplace broke the <strong>Quality</strong> tab: the list of rule sets stopped loading and reported an error instead.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="renaming-a-relation-type-no-longer-switches-its-templates-off">Renaming a relation type no longer switches its templates off<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#renaming-a-relation-type-no-longer-switches-its-templates-off" class="hash-link" aria-label="Direct link to Renaming a relation type no longer switches its templates off" title="Direct link to Renaming a relation type no longer switches its templates off" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Relation types are matched by their <strong>key</strong> now, the way entity and attribute types always were. Rename <em>Business Key Mapping</em> to something that suits your model, and generation keeps working.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="wizards-keep-your-input-when-you-step-back">Wizards keep your input when you step back<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#wizards-keep-your-input-when-you-step-back" class="hash-link" aria-label="Direct link to Wizards keep your input when you step back" title="Direct link to Wizards keep your input when you step back" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Every multi-step wizard now redisplays what you already entered when you go back a step, and carries it through to Finish unchanged. Previously a step you returned to came up as if it had never been filled in — and the blank fields it showed were then written over your real answers, so the object was created from the wizard's defaults rather than from what you typed.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="auto-arrange-runs-again-when-you-pick-the-same-layout">Auto-arrange runs again when you pick the same layout<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#auto-arrange-runs-again-when-you-pick-the-same-layout" class="hash-link" aria-label="Direct link to Auto-arrange runs again when you pick the same layout" title="Direct link to Auto-arrange runs again when you pick the same layout" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Clicking a layout in the Auto-Arrange menu now re-runs it, including the one already ticked. Previously, picking a directional layout — Layered or Tree — only opened the Direction row and waited, so choosing the layout you already had did nothing at all.</p>
<p><img decoding="async" loading="lazy" alt="ui-102-fix_auto-arrange-reruns-on-click_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-102-fix_auto-arrange-reruns-on-click_001-20e51a5dd025a7d83111c9663c9f27b4.png" width="220" height="376" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="the-attribute-collapse-arrow-on-a-canvas-node-points-the-right-way">The attribute collapse arrow on a canvas node points the right way<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#the-attribute-collapse-arrow-on-a-canvas-node-points-the-right-way" class="hash-link" aria-label="Direct link to The attribute collapse arrow on a canvas node points the right way" title="Direct link to The attribute collapse arrow on a canvas node points the right way" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The arrow that shows and hides an entity's attributes on the canvas pointed the wrong way round. A collapsed node showed an upward arrow and an expanded node a downward one — the opposite of the collapsible sections in the left sidebar, where a closed section points down and an open one points up.</p>
<p><img decoding="async" loading="lazy" alt="ui-103-fix_node-collapse-chevron-direction_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-103-fix_node-collapse-chevron-direction_001-a359fece72318c9e0c423969ecded57d.png" width="686" height="418" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="the-relation-between-two-collapsed-entities-is-the-one-you-see">The relation between two collapsed entities is the one you see<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#the-relation-between-two-collapsed-entities-is-the-one-you-see" class="hash-link" aria-label="Direct link to The relation between two collapsed entities is the one you see" title="Direct link to The relation between two collapsed entities is the one you see" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>When two entities on the canvas are collapsed, the line between them is now the entity-to-entity relation. Previously an attribute relation was drawn over it: collapsing an entity merges its attribute lines onto the same route as the entity relation, and the attribute line was painted last, so it covered the relation underneath.</p>
<p><img decoding="async" loading="lazy" alt="ui-104-fix_entity-relation-paint-order_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-104-fix_entity-relation-paint-order_001-b08be8d754f937f92d3b39ec0b718f02.png" width="977" height="593" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="which-packs-are-installed">Which packs are installed<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#which-packs-are-installed" class="hash-link" aria-label="Direct link to Which packs are installed" title="Direct link to Which packs are installed" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Two places in the client answered the question "what do I have installed?" wrongly, in opposite directions.</p>
<p><img decoding="async" loading="lazy" alt="ui-101-fix_which-packs-are-installed_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-101-fix_which-packs-are-installed_001-9d0c019b5c65d7e3b2c7a37128fd9754.png" width="672" height="384" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-101-fix_which-packs-are-installed_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-101-fix_which-packs-are-installed_002-3935784b3f3fc86b432f891a4148e137.png" width="672" height="362" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-101-fix_which-packs-are-installed_003.png" src="https://itb.banian.ch/user-docs/assets/images/ui-101-fix_which-packs-are-installed_003-b8abc5b804ced965e1fdf491002e1c26.png" width="672" height="338" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="auto-arrange-opens-with-nothing-selected">Auto Arrange opens with nothing selected<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#auto-arrange-opens-with-nothing-selected" class="hash-link" aria-label="Direct link to Auto Arrange opens with nothing selected" title="Direct link to Auto Arrange opens with nothing selected" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The <strong>Auto Arrange</strong> menu on the canvas no longer opens with a layout ticked and a direction highlighted. It opens as a plain list of layouts, and it returns to that state after every run. Picking a directional layout — Layered or Tree — shows the Direction row and waits for you to choose; picking a direction runs it.</p>
<p><img decoding="async" loading="lazy" alt="ui-115-fix_arrange-opens-neutral_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-115-fix_arrange-opens-neutral_001-1d77262290472f5761fdf76e89857281.png" width="220" height="315" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-115-fix_arrange-opens-neutral_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-115-fix_arrange-opens-neutral_002-6babda49da9e87b37210c805a56ba607.png" width="220" height="376" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="a-search-in-the-entity-tree-keeps-the-folders-above-its-matches">A search in the entity tree keeps the folders above its matches<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#a-search-in-the-entity-tree-keeps-the-folders-above-its-matches" class="hash-link" aria-label="Direct link to A search in the entity tree keeps the folders above its matches" title="Direct link to A search in the entity tree keeps the folders above its matches" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Searching the left sidebar no longer throws the tree away. A match is shown where it lives — inside its folder, with the folders above it — and folders holding nothing that matches drop out entirely. Search a folder's own name and it comes back whole, with everything in it.</p>
<p><img decoding="async" loading="lazy" alt="ui-119-fix_tree-search-keeps-hierarchy_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-119-fix_tree-search-keeps-hierarchy_001-492d767e3bea91eaa20677ee34e7e7f0.png" width="256" height="720" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-119-fix_tree-search-keeps-hierarchy_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-119-fix_tree-search-keeps-hierarchy_002-6c9ec6553534779d8db14e6aae52fe7f.png" width="256" height="720" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="propagate-attributes-finds-a-path-over-any-modelled-relation">Propagate Attributes finds a path over any modelled relation<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#propagate-attributes-finds-a-path-over-any-modelled-relation" class="hash-link" aria-label="Direct link to Propagate Attributes finds a path over any modelled relation" title="Direct link to Propagate Attributes finds a path over any modelled relation" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p><em>Propagate Attributes Along Lineage</em> now finds a path whenever the two entities are connected at entity level. Previously it only followed relations that already carried column mappings, so a target joined by an ordinary relationship or a dependency reported <strong>"No lineage path between these entities"</strong> and left the path picker greyed out.</p>
<p><img decoding="async" loading="lazy" alt="ui-105-fix_lineage-over-entity-relations_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-105-fix_lineage-over-entity-relations_001-4b1cb785bcb6bb9e7c8ea82fb8569378.png" width="448" height="586" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="an-empty-workspace-is-no-longer-reported-as-a-version-conflict">An empty workspace is no longer reported as a version conflict<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#an-empty-workspace-is-no-longer-reported-as-a-version-conflict" class="hash-link" aria-label="Direct link to An empty workspace is no longer reported as a version conflict" title="Direct link to An empty workspace is no longer reported as a version conflict" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Your first edit in a workspace that has never been saved raised <strong>"Version mismatch detected"</strong> and then failed to save. There was no mismatch — there was simply no model on the server yet. The first edit now takes the lock and the first save creates the model, which is what was always intended.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="installing-a-capability-pack-now-sets-your-model-up-for-it">Installing a capability pack now sets your model up for it<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#installing-a-capability-pack-now-sets-your-model-up-for-it" class="hash-link" aria-label="Direct link to Installing a capability pack now sets your model up for it" title="Direct link to Installing a capability pack now sets your model up for it" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Installing the Data Vault pack into a fresh model gave you the wizards and nothing to build with — the model had none of the entity types, relation types or custom properties those wizards create. The install reported success, and nothing said otherwise.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="propagate-attributes-offers-only-targets-it-can-actually-reach">Propagate Attributes offers only targets it can actually reach<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.2#propagate-attributes-offers-only-targets-it-can-actually-reach" class="hash-link" aria-label="Direct link to Propagate Attributes offers only targets it can actually reach" title="Direct link to Propagate Attributes offers only targets it can actually reach" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>The <strong>Target entity</strong> list in <em>Propagate Attributes Along Lineage</em> now contains only the entities that are actually connected downstream of the source, sorted by name. The lineage path list is sorted shortest route first and names the relation type of every hop. The attribute picker gained <strong>Select all</strong>, <strong>Remove all</strong> and a filter, and lists the source entity's columns in the entity's own order.</p>
<p><img decoding="async" loading="lazy" alt="ui-116-fix_propagate-reachable-targets_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-116-fix_propagate-reachable-targets_001-4156209feed1926ab089d99585714cb0.png" width="1600" height="1000" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-116-fix_propagate-reachable-targets_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-116-fix_propagate-reachable-targets_002-6652b87013047e4b9b57a987296946cd.png" width="448" height="618" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-116-fix_propagate-reachable-targets_003.png" src="https://itb.banian.ch/user-docs/assets/images/ui-116-fix_propagate-reachable-targets_003-4557faa6a14d28b53fa9f45bcebc7ae9.png" width="448" height="618" class="img_weVP"></p>
<hr>]]></content>
        <category label="ITB APP" term="ITB APP"/>
        <category label="UI" term="UI"/>
        <category label="Model" term="Model"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.1.1 (Client)]]></title>
        <id>https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1</id>
        <link href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1"/>
        <updated>2026-08-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ITB 0.1.1 makes a model traceable end to end — lineage for attributes and entities — and opens it to models managed elsewhere, with Bonsai arriving as a modelling assistant.]]></summary>
        <content type="html"><![CDATA[<p><strong>ITB 0.1.1</strong> makes a model traceable end to end — lineage for attributes and entities — and opens it to models managed elsewhere, with Bonsai arriving as a modelling assistant.</p>
<blockquote>
<p><strong>Part of ITB 0.1.1 release</strong> - See <a class="" href="https://itb.banian.ch/user-docs/changelog/itb-0.1.1">master release</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-new-features">✨ New Features<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="system-information-sections--license-details">System Information Sections &amp; License Details<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#system-information-sections--license-details" class="hash-link" aria-label="Direct link to System Information Sections &amp; License Details" title="Direct link to System Information Sections &amp; License Details" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The System Information dialog (Ctrl + I) now groups version details into clear sections — <strong>Client</strong>, <strong>API</strong>, and <strong>License</strong> — instead of a single flat list. The <strong>Client</strong> section shows the client version, build, and model version; the <strong>API</strong> section shows the API version, library version, and a new <strong>Build</strong> value sourced from the server (shown as "none" until the server reports it). A new <strong>License</strong> section displays the running instance's licensing: type, who it was issued for, its validity window with a colour-coded status badge, and the version range it covers.</p>
<p><img decoding="async" loading="lazy" alt="ui-045-new_system-info-sections-and-license_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-045-new_system-info-sections-and-license_001-6b9327f3f45c5e582f21fee54eeaddb6.png" width="672" height="850" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="richer-auto-arrange-per-algorithm-elk-options-direction--spacing-persisted-defaults">Richer auto-arrange (per-algorithm ELK options, direction &amp; spacing, persisted defaults)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#richer-auto-arrange-per-algorithm-elk-options-direction--spacing-persisted-defaults" class="hash-link" aria-label="Direct link to Richer auto-arrange (per-algorithm ELK options, direction &amp; spacing, persisted defaults)" title="Direct link to Richer auto-arrange (per-algorithm ELK options, direction &amp; spacing, persisted defaults)" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The canvas <strong>Auto Arrange</strong> control now configures ELK correctly per algorithm and exposes two new controls:</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="hide--show-viewpoints--entity-groups-in-the-left-sidebar">Hide / show viewpoints &amp; entity groups in the left sidebar<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#hide--show-viewpoints--entity-groups-in-the-left-sidebar" class="hash-link" aria-label="Direct link to Hide / show viewpoints &amp; entity groups in the left sidebar" title="Direct link to Hide / show viewpoints &amp; entity groups in the left sidebar" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The left sidebar can get long. You can now <strong>declutter</strong> it by hiding viewpoints and entity-group folders you don't currently care about, via the right-click menu. Each list (Viewpoints, Entities) gets a small <strong>show-hidden toggle</strong> in its header that appears only once something is hidden — flip it to reveal hidden items (dimmed, with an eye-off icon) so you can unhide them.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="in-app-documentation-follows-the-ui-language">In-app documentation follows the UI language<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#in-app-documentation-follows-the-ui-language" class="hash-link" aria-label="Direct link to In-app documentation follows the UI language" title="Direct link to In-app documentation follows the UI language" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The Help menu's <strong>Documentation</strong> link now opens the user guide in the <strong>same language as the app</strong>. When the UI is set to German, it opens the German documentation (<code>…/user-docs/de/</code>); in English it opens the English guide (<code>…/user-docs/</code>). The interactive <strong>API Documentation</strong> (Swagger) link is unchanged.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="wizards-can-open-wide-and-picker-rows-read-attribute-first">Wizards can open wide, and picker rows read attribute-first<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#wizards-can-open-wide-and-picker-rows-read-attribute-first" class="hash-link" aria-label="Direct link to Wizards can open wide, and picker rows read attribute-first" title="Direct link to Wizards can open wide, and picker rows read attribute-first" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Two readability capabilities for any wizard, both driven by a user report that wizard modals were too narrow on large screens and that column-picker rows cut off exactly the text which distinguished them:</p>
<p><img decoding="async" loading="lazy" alt="ui-071-new_wizard-size-and-labels_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-071-new_wizard-size-and-labels_001-f6cf73328b56de3ebb1553902a332057.png" width="1178" height="612" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="configurable-copy-with-relation-wizard">Configurable Copy-with-Relation Wizard<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#configurable-copy-with-relation-wizard" class="hash-link" aria-label="Direct link to Configurable Copy-with-Relation Wizard" title="Direct link to Configurable Copy-with-Relation Wizard" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>The <strong>Copy (original → new)</strong> and <strong>Copy (new → original)</strong> actions now open a short wizard so you can configure the copy before it is created. You can edit the <strong>name</strong> of the copy, choose whether to create the <strong>entity-level</strong> and <strong>attribute-level</strong> relations and which <strong>relation type</strong> each uses, and choose whether to <strong>place the copy on the current viewpoint</strong>. Everything is prefilled with sensible defaults, so accepting them reproduces the familiar copy — plus the copy now appears on the canvas.</p>
<p><img decoding="async" loading="lazy" alt="ui-041-new_copy-with-relation-wizard_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-041-new_copy-with-relation-wizard_001-30742181842246f833b2eb9e82aca65b.png" width="1600" height="1000" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="create-entities-from-json-canvas-background-menu">Create Entities from JSON (Canvas Background Menu)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#create-entities-from-json-canvas-background-menu" class="hash-link" aria-label="Direct link to Create Entities from JSON (Canvas Background Menu)" title="Direct link to Create Entities from JSON (Canvas Background Menu)" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Right-clicking the empty canvas now opens a menu with <strong>Add entity</strong>, <strong>Add entity from JSON</strong>, and <strong>Deselect all</strong>. <strong>Add entity from JSON</strong> (full edition) opens a wizard where you paste a JSON object — or an array of objects — and the modeller creates the matching entities locally. <code>name</code> becomes the entity name, <code>attributes</code> its attributes (a list of names, or objects with <code>datatype</code>/<code>mandatory</code>/…), and every other key becomes a custom property on the entity. New entities are placed on the canvas at the point you clicked.</p>
<p><img decoding="async" loading="lazy" alt="ui-042-new_canvas-from-json_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-042-new_canvas-from-json_001-4639ab5aa66ab071fe0db5c0614abec2.png" width="1600" height="1000" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-042-new_canvas-from-json_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-042-new_canvas-from-json_002-ef617db0aea90a8d0e3ba93913da9e60.png" width="1600" height="1000" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="duplicate-viewpoint--duplicate-entity-name-form">Duplicate Viewpoint + Duplicate Entity name form<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#duplicate-viewpoint--duplicate-entity-name-form" class="hash-link" aria-label="Direct link to Duplicate Viewpoint + Duplicate Entity name form" title="Direct link to Duplicate Viewpoint + Duplicate Entity name form" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>You can now <strong>duplicate a viewpoint</strong>: right-click a viewpoint in the left sidebar and choose <strong>Duplicate Viewpoint</strong>. A short form opens, pre-filled with the viewpoint's name (suffixed <code>(Copy)</code>), description, and type — edit any of them and confirm to create a copy. The new viewpoint shows the <strong>same entities in the same layout</strong> as the original (the entity boxes are re-placed at their original positions, and their relationships appear automatically).</p>
<p><img decoding="async" loading="lazy" alt="ui-048-new_duplicate-viewpoint-and-entity-form_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-048-new_duplicate-viewpoint-and-entity-form_001-d618dd393a6b0baf0651148facbd474a.png" width="448" height="504" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-048-new_duplicate-viewpoint-and-entity-form_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-048-new_duplicate-viewpoint-and-entity-form_002-3fc2171b476eaa7806c1944b4097f3d6.png" width="448" height="504" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="import--sync-externally-managed-data">Import &amp; sync externally-managed data<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#import--sync-externally-managed-data" class="hash-link" aria-label="Direct link to Import &amp; sync externally-managed data" title="Direct link to Import &amp; sync externally-managed data" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>The modeller can now <strong>import data that is owned by an external source</strong> (a dbt project, a Snowflake or Power BI model, …) and keep it in sync. A new <strong>Model Actions → External → Import External Data</strong> wizard takes an itb-shaped JSON payload, shows a <strong>preview of exactly what will change</strong> (create / update / delete, with warnings where a change touches your own work), and on confirmation applies it as a single, undoable operation.</p>
<p><img decoding="async" loading="lazy" alt="ui-050-new_external-data-sync_003.png" src="https://itb.banian.ch/user-docs/assets/images/ui-050-new_external-data-sync_003-8b32d12e6d31b0137592adf6a7dbbf8f.png" width="512" height="614" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-050-new_external-data-sync_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-050-new_external-data-sync_001-21dc4139878a1c05f24d256a9f78e4a9.png" width="512" height="458" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-050-new_external-data-sync_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-050-new_external-data-sync_002-1fd6c6f65f8a9602b56e073c93419ecb.png" width="256" height="870" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-050-new_external-data-sync_004.png" src="https://itb.banian.ch/user-docs/assets/images/ui-050-new_external-data-sync_004-3c5c932e8e0a8be192ba4331863b66fc.png" width="256" height="295" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-050-new_external-data-sync_005.png" src="https://itb.banian.ch/user-docs/assets/images/ui-050-new_external-data-sync_005-dd7e612c3fcc00fbc76a8c45de4a637b.png" width="1400" height="900" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-050-new_external-data-sync_006.png" src="https://itb.banian.ch/user-docs/assets/images/ui-050-new_external-data-sync_006-a10accc79f1ff6bd85d02a97bc40a9d2.png" width="1600" height="600" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="sync-relation-custom-properties--load-the-payload-from-a-file">Sync relation custom properties + load the payload from a file<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#sync-relation-custom-properties--load-the-payload-from-a-file" class="hash-link" aria-label="Direct link to Sync relation custom properties + load the payload from a file" title="Direct link to Sync relation custom properties + load the payload from a file" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Two Phase-2 additions to <strong>Import External Data</strong> (ui-050), shipped together:</p>
<p><img decoding="async" loading="lazy" alt="ui-052-new_sync-relation-cps-and-file-upload_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-052-new_sync-relation-cps-and-file-upload_001-885d784e902e1f9fbbbdb308bd072bfc.png" width="512" height="614" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="propagate-attributes-along-a-lineage-path">Propagate attributes along a lineage path<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#propagate-attributes-along-a-lineage-path" class="hash-link" aria-label="Direct link to Propagate attributes along a lineage path" title="Direct link to Propagate attributes along a lineage path" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>When a source entity gains a new attribute, you can now carry it <strong>downstream</strong> to a target entity in one step. Right-click a source entity on the canvas → <strong>Propagate Attributes…</strong>, pick the target, the <strong>lineage path</strong>, and the <strong>attribute(s)</strong> to carry. The tool creates the attribute on each entity along the path where it's missing and wires the attribute-level <code>mapping</code> relations so the column is traceable <strong>end-to-end</strong>. (Enterprise / full edition.)</p>
<p><img decoding="async" loading="lazy" alt="ui-055-new_attribute-propagation_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-055-new_attribute-propagation_001-696487271353ff3c3f521f90619a0206.png" width="448" height="586" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="external-sync-adopts-objects-you-already-added-by-hand">External sync adopts objects you already added by hand<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#external-sync-adopts-objects-you-already-added-by-hand" class="hash-link" aria-label="Direct link to External sync adopts objects you already added by hand" title="Direct link to External sync adopts objects you already added by hand" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>When you import &amp; sync externally-managed data, the sync now reconciles incoming external objects against ones you previously created by hand. If the source starts delivering an object that matches something already in your model (but that wasn't yet managed by that source), the sync <strong>adopts</strong> it — the existing object is claimed by the source and becomes managed (read-only) from then on — instead of silently creating a duplicate.</p>
<p><img decoding="async" loading="lazy" alt="ui-057-new_sync-collision-adoption_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-057-new_sync-collision-adoption_001-16da2e341396f2eff44093f26d0d12f5.png" width="512" height="490" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="trace-an-attributes-lineage-into-a-viewpoint">Trace an attribute's lineage into a viewpoint<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#trace-an-attributes-lineage-into-a-viewpoint" class="hash-link" aria-label="Direct link to Trace an attribute's lineage into a viewpoint" title="Direct link to Trace an attribute's lineage into a viewpoint" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>You can now trace where a specific <strong>attribute's</strong> data comes from or flows to and see it as a dedicated diagram. Pick an attribute, choose a direction and which relation kinds count, and the tool walks only the relations that attribute participates in — upstream and/or downstream — and generates a freshly named <strong>"Attribute Lineage" viewpoint</strong> containing just the involved entities, laid out left to right by hop distance. The attribute-level lineage edges render automatically on the new viewpoint. When the viewpoint is created the app immediately switches to it so you can see the result straight away. (Enterprise / full edition.)</p>
<p><img decoding="async" loading="lazy" alt="ui-058-new_attribute-lineage-viewpoint_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-058-new_attribute-lineage-viewpoint_001-4138ce644540f8d85eaf89b9a356c3c4.png" width="448" height="478" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-058-new_attribute-lineage-viewpoint_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-058-new_attribute-lineage-viewpoint_002-e4bdae4e6b3ea396206f307978a51741.png" width="1600" height="1000" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="trace-an-entitys-lineage-into-a-viewpoint">Trace an entity's lineage into a viewpoint<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#trace-an-entitys-lineage-into-a-viewpoint" class="hash-link" aria-label="Direct link to Trace an entity's lineage into a viewpoint" title="Direct link to Trace an entity's lineage into a viewpoint" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>You can now trace where an <strong>entity's</strong> data comes from or flows to and see it as a dedicated diagram. From any entity, choose a direction (downstream / upstream / both) and which relation kinds count, and the tool walks <strong>all of the entity's relations</strong> — both attribute-level and entity-level — and generates a freshly named <strong>"Entity Lineage" viewpoint</strong> of the involved entities, laid out in flow order. The app immediately switches to the new viewpoint on creation. (Enterprise / full edition.)</p>
<p><img decoding="async" loading="lazy" alt="ui-059-new_entity-lineage-viewpoint_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-059-new_entity-lineage-viewpoint_001-151afd2d676259948b7fe7c649a76414.png" width="448" height="478" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-059-new_entity-lineage-viewpoint_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-059-new_entity-lineage-viewpoint_002-e9ac7a6ac2a22244f8b7dbbb7183b574.png" width="1600" height="1000" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="bonsai--ai-modelling-assistant-review-mode">Bonsai — AI modelling assistant (Review mode)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#bonsai--ai-modelling-assistant-review-mode" class="hash-link" aria-label="Direct link to Bonsai — AI modelling assistant (Review mode)" title="Direct link to Bonsai — AI modelling assistant (Review mode)" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>A new <strong>Bonsai</strong> tab in the bottom panel lets you chat with an AI assistant about your model. The first mode is <strong>Review</strong>: you ask it to critique the model and it streams back a structured, Data Vault / DWH-aware assessment — untyped objects, layer/type/suffix mismatches, malformed hubs/ satellites/links, naming and datatype inconsistencies, orphaned entities, and more. Review is <strong>read-only</strong>: the assistant can inspect the model but cannot change it.</p>
<p><img decoding="async" loading="lazy" alt="ui-061-new_ai-bonsai-review-mode_001.png" src="data:image/png;base64,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" width="819" height="166" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="bonsai--command-flyout--localized-command-messages">Bonsai — command flyout &amp; localized command messages<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#bonsai--command-flyout--localized-command-messages" class="hash-link" aria-label="Direct link to Bonsai — command flyout &amp; localized command messages" title="Direct link to Bonsai — command flyout &amp; localized command messages" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Typing <code>/</code> in the Bonsai chat now opens a <strong>command flyout</strong> listing the available chat commands (<code>/clear</code>, <code>/undo</code>, <code>/mode</code>, <code>/help</code>) with a short description of each. The list filters as you type (<code>/u</code> narrows to <code>/undo</code>), and once you type <code>/mode </code> it offers the available modes (Review · Alter · Generate). Choosing an entry — by clicking or with ↑/↓ then Enter/Tab — <strong>completes it into the input</strong> so you can review (and add an argument) before sending; Esc dismisses the flyout.</p>
<p><img decoding="async" loading="lazy" alt="ui-062-new_bonsai-command-flyout_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-062-new_bonsai-command-flyout_001-8fb9de630451a41ea23d6e30806bfc9d.png" width="819" height="166" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="bonsai-write-modes--alter-and-generate">Bonsai write modes — Alter and Generate<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#bonsai-write-modes--alter-and-generate" class="hash-link" aria-label="Direct link to Bonsai write modes — Alter and Generate" title="Direct link to Bonsai write modes — Alter and Generate" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Bonsai gained two modes beyond Review, switched with the buttons above the chat or with <code>/mode</code>:</p>
<p><img decoding="async" loading="lazy" alt="ui-093-new_bonsai-write-modes_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-093-new_bonsai-write-modes_001-b7eb276f404a2de8094ea98f5d39e349.png" width="819" height="386" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-093-new_bonsai-write-modes_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-093-new_bonsai-write-modes_002-91cd033f2668bead9424a9aafc85c4b2.png" width="819" height="386" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="field-engine-default-primitives-smarter-safer-wizard-fields">Field-engine default primitives (smarter, safer wizard fields)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#field-engine-default-primitives-smarter-safer-wizard-fields" class="hash-link" aria-label="Direct link to Field-engine default primitives (smarter, safer wizard fields)" title="Direct link to Field-engine default primitives (smarter, safer wizard fields)" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Four generic, descriptor-only enhancements to the shared form/wizard field engine that make prefilled fields both <strong>safer</strong> and <strong>less typing</strong>, wired into the Data-Vault wizards (Hub / Satellite / Link / Business Object / Attach-source):</p>
<p><img decoding="async" loading="lazy" alt="ui-069-new_field-engine-primitives_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-069-new_field-engine-primitives_001-4eed91770725bcd3d61d25e9dec48a80.png" width="1178" height="390" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="ui-069-new_field-engine-primitives_002.png" src="https://itb.banian.ch/user-docs/assets/images/ui-069-new_field-engine-primitives_002-323360c26a7045ad0ad6cfeee0725744.png" width="1178" height="418" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="transfer-list-ordering-source-order-default-az-view-toggle-selected-pane-reorder">Transfer-list ordering (source-order default, A–Z view toggle, selected-pane reorder)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#transfer-list-ordering-source-order-default-az-view-toggle-selected-pane-reorder" class="hash-link" aria-label="Direct link to Transfer-list ordering (source-order default, A–Z view toggle, selected-pane reorder)" title="Direct link to Transfer-list ordering (source-order default, A–Z view toggle, selected-pane reorder)" translate="no">​</a></h3>
<span class="badge badge--warning">Enterprise</span>
<p>Three improvements to the shared dual-pane column picker (the transfer list) used by every Data-Vault wizard step that picks columns — satellite payload, hub / attach-source business keys, link hub slots, and the Business-Object column list:</p>
<p><img decoding="async" loading="lazy" alt="ui-070-new_transfer-list-ordering_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-070-new_transfer-list-ordering_001-22e835ffed8ecaf171c4d0a71b8574ca.png" width="1178" height="612" class="img_weVP"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="️-infrastructure">🏗️ Infrastructure<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#%EF%B8%8F-infrastructure" class="hash-link" aria-label="Direct link to 🏗️ Infrastructure" title="Direct link to 🏗️ Infrastructure" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="lazy-elkjs-sync-messages-in-i18n-pocketbase--itb-rename-new-field-widgets">lazy <code>elkjs</code>, sync messages in i18n, <code>PocketBase</code> → <code>ITB</code> rename, new field widgets<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#lazy-elkjs-sync-messages-in-i18n-pocketbase--itb-rename-new-field-widgets" class="hash-link" aria-label="Direct link to lazy-elkjs-sync-messages-in-i18n-pocketbase--itb-rename-new-field-widgets" title="Direct link to lazy-elkjs-sync-messages-in-i18n-pocketbase--itb-rename-new-field-widgets" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Four unrelated cleanups that landed together with the ELK layout variety work:</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="api-deliverable-capability-i18n">API-deliverable capability i18n<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#api-deliverable-capability-i18n" class="hash-link" aria-label="Direct link to API-deliverable capability i18n" title="Direct link to API-deliverable capability i18n" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Capability labels (button/menu titles, form field labels, placeholders, wizard steps, toast messages) used to live in the client's monolithic <code>messages.ts</code> dictionary, mixed in with app-shell strings. They are now split out so a capability owns its strings as data: every descriptor references its own overlap-free <code>capabilities.&lt;id&gt;.*</code> namespace, and those strings live in per-locale JSON under <code>registry/i18n/{public,enterprise}/{en,de}.json</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="transform-auto-registration-primitive-coverage-diagnostic-declarative-source-prefill">transform auto-registration, primitive-coverage diagnostic, declarative source-prefill<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#transform-auto-registration-primitive-coverage-diagnostic-declarative-source-prefill" class="hash-link" aria-label="Direct link to transform auto-registration, primitive-coverage diagnostic, declarative source-prefill" title="Direct link to transform auto-registration, primitive-coverage diagnostic, declarative source-prefill" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Three capability-architecture improvements toward the "adding a capability = JSON, adding a primitive = a file" goal (retro gap-analysis #3, #4, #6):</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-fixes">🐞 Fixes<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#-fixes" class="hash-link" aria-label="Direct link to 🐞 Fixes" title="Direct link to 🐞 Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="copy-in-between-wizard--finish-feedback-configurable-direction-no-discard-prompt">Copy In Between Wizard — Finish Feedback, Configurable Direction, No Discard Prompt<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#copy-in-between-wizard--finish-feedback-configurable-direction-no-discard-prompt" class="hash-link" aria-label="Direct link to Copy In Between Wizard — Finish Feedback, Configurable Direction, No Discard Prompt" title="Direct link to Copy In Between Wizard — Finish Feedback, Configurable Direction, No Discard Prompt" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Three issues raised during testing of the <strong>Copy In Between</strong> wizard have been fixed:</p>
<p><img decoding="async" loading="lazy" alt="ui-043-fix_copy-in-between-wizard-fixes_001.png" src="https://itb.banian.ch/user-docs/assets/images/ui-043-fix_copy-in-between-wizard-fixes_001-0fc49c6420597e82dc003a863a5fbd42.png" width="1600" height="1000" class="img_weVP"></p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="add-entity-from-json--testing-feedback-fixes">"Add entity from JSON" — testing-feedback fixes<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#add-entity-from-json--testing-feedback-fixes" class="hash-link" aria-label="Direct link to &quot;Add entity from JSON&quot; — testing-feedback fixes" title="Direct link to &quot;Add entity from JSON&quot; — testing-feedback fixes" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>A round of fixes to the <strong>Add entity from JSON</strong> feature based on user testing:</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="relationship-lines-stay-aligned-on-large-entities">Relationship lines stay aligned on large entities<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#relationship-lines-stay-aligned-on-large-entities" class="hash-link" aria-label="Direct link to Relationship lines stay aligned on large entities" title="Direct link to Relationship lines stay aligned on large entities" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Attribute-to-attribute relationship lines on the canvas now connect to the exact attribute row they belong to, regardless of how many attributes an entity has. Previously, on very large entities (e.g. 100+ attributes) the connection points drifted away from their rows and the lines appeared to float below the entity.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="cancelling-a-wizards-discard-changes-prompt-stopped-all-wizards-from-opening">cancelling a wizard's "Discard changes?" prompt stopped all wizards from opening<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#cancelling-a-wizards-discard-changes-prompt-stopped-all-wizards-from-opening" class="hash-link" aria-label="Direct link to cancelling a wizard's &quot;Discard changes?&quot; prompt stopped all wizards from opening" title="Direct link to cancelling a wizard's &quot;Discard changes?&quot; prompt stopped all wizards from opening" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Cancelling the <strong>Discard changes?</strong> confirmation on any wizard left the entire wizard system unusable: afterwards <strong>no</strong> wizard would open again — <em>Add entity from JSON</em>, <em>Copy source to stage</em>, <em>Copy in between</em>, <em>Copy with relation</em> — until the page was reloaded. Ordinary form dialogs (<em>Add entity</em>, <em>Edit entity</em>) were unaffected. The fix re-wires the shared wizard host's open state so the dialog can never desynchronise from the underlying surface.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="fast-bulk-operations-on-large-entities-delete--duplicate--copy">Fast bulk operations on large entities (delete / duplicate / copy)<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#fast-bulk-operations-on-large-entities-delete--duplicate--copy" class="hash-link" aria-label="Direct link to Fast bulk operations on large entities (delete / duplicate / copy)" title="Direct link to Fast bulk operations on large entities (delete / duplicate / copy)" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>Operations that touch many records at once — deleting, duplicating, or copying an entity together with its attributes, relations, and custom properties — were extremely slow on large entities. Deleting an entity with ~136 attributes and relations took roughly <strong>60 seconds</strong>. The same operation now completes in well under a second.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="explain-why-add-property-is-disabled-when-no-custom-property-matches-the-type">Explain why "Add Property" is disabled when no custom property matches the type<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#explain-why-add-property-is-disabled-when-no-custom-property-matches-the-type" class="hash-link" aria-label="Direct link to Explain why &quot;Add Property&quot; is disabled when no custom property matches the type" title="Direct link to Explain why &quot;Add Property&quot; is disabled when no custom property matches the type" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>In the right sidebar's <strong>Properties</strong> panel (for entities, attributes, and relations), when an object has no custom-property entries the <strong>Add Property</strong> button is disabled if no custom-property <em>definition</em> applies to that object's type. Previously this looked like a silent, unexplained greyed-out button. It now shows a short message explaining why and where to fix it:</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="auto-arrange-no-longer-crashes-on-self-referencing-relations">Auto-arrange no longer crashes on self-referencing relations<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.1#auto-arrange-no-longer-crashes-on-self-referencing-relations" class="hash-link" aria-label="Direct link to Auto-arrange no longer crashes on self-referencing relations" title="Direct link to Auto-arrange no longer crashes on self-referencing relations" translate="no">​</a></h3>
<span class="badge badge--success">Standard</span>
<p>The canvas auto-arrange now works on models that contain a self-referencing relation — a relation whose source and target are the same entity. Previously, choosing the <strong>Radial</strong> (or <strong>Tree</strong>) layout on such a model silently failed: the nodes never moved and the browser console logged <code>Failed to arrange nodes: RangeError: Maximum call stack size exceeded</code>.</p>
<hr>]]></content>
        <category label="ITB APP" term="ITB APP"/>
        <category label="UI" term="UI"/>
        <category label="Model" term="Model"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.1.0 (WebApp)]]></title>
        <id>https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0</id>
        <link href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0"/>
        <updated>2026-03-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Version 0.1.0 of the ITB WebApp introduces a modernized storage layer and targeted usability improvements for entity management.]]></summary>
        <content type="html"><![CDATA[<p>Version 0.1.0 of the ITB WebApp introduces a modernized storage layer and targeted usability improvements for entity management.</p>
<blockquote>
<p><strong>Part of ITB 0.1.0 release</strong> - See <a class="" href="https://itb.banian.ch/user-docs/changelog/itb-0.1.0">master release</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-new-features">✨ New Features<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="entity-name-middle-truncation">Entity Name Middle Truncation<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0#entity-name-middle-truncation" class="hash-link" aria-label="Direct link to Entity Name Middle Truncation" title="Direct link to Entity Name Middle Truncation" translate="no">​</a></h3>
<p>Long entity names now display as the first 12 characters + ellipsis + last 12 characters. This keeps the canvas readable without hiding meaningful parts of the name.</p>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="duplicate-entity-via-context-menu">Duplicate Entity via Context Menu<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0#duplicate-entity-via-context-menu" class="hash-link" aria-label="Direct link to Duplicate Entity via Context Menu" title="Direct link to Duplicate Entity via Context Menu" translate="no">​</a></h3>
<p>Right-click any entity to duplicate it with all its attributes. The copy is created immediately and can be renamed and repositioned independently.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="️-breaking-changes">⚠️ Breaking Changes<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0#%EF%B8%8F-breaking-changes" class="hash-link" aria-label="Direct link to ⚠️ Breaking Changes" title="Direct link to ⚠️ Breaking Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="indexeddb-replaces-pocketbase">IndexedDB Replaces PocketBase<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0#indexeddb-replaces-pocketbase" class="hash-link" aria-label="Direct link to IndexedDB Replaces PocketBase" title="Direct link to IndexedDB Replaces PocketBase" translate="no">​</a></h3>
<p>The WebApp storage backend has been migrated from PocketBase to browser-native IndexedDB. This change improves offline capability and removes the dependency on an external database process.</p>
<p><strong>Action required:</strong> Existing users must perform a one-time model migration after upgrading. Follow the migration guide to export your model from the previous version and re-import it.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="summary">Summary<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.1.0#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary" translate="no">​</a></h2>
<p>ITB WebApp 0.1.0 modernizes the storage layer and adds practical shortcuts for day-to-day modeling work. The IndexedDB migration is a breaking change but sets the foundation for better offline support and simpler deployment going forward.</p>]]></content>
        <category label="ITB APP" term="ITB APP"/>
        <category label="UI" term="UI"/>
        <category label="Model" term="Model"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.0.8 (WebApp)]]></title>
        <id>https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8</id>
        <link href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8"/>
        <updated>2026-03-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're excited to announce version 0.0.8 of the ITB WebApp, featuring 7 new advanced features and significant performance optimizations. This focused release brings sophisticated interaction patterns, customizable user preferences, and dramatically improved canvas performance for large-scale models.]]></summary>
        <content type="html"><![CDATA[<p>We're excited to announce version 0.0.8 of the ITB WebApp, featuring 7 new advanced features and significant performance optimizations. This focused release brings sophisticated interaction patterns, customizable user preferences, and dramatically improved canvas performance for large-scale models.</p>
<blockquote>
<p><strong>Part of ITB 0.0.8 release</strong> - See <a class="" href="https://itb.banian.ch/user-docs/changelog/itb-0.0.8">master release</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-new-features">✨ New Features<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="-advanced-interaction-workflows">🎯 Advanced Interaction Workflows<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#-advanced-interaction-workflows" class="hash-link" aria-label="Direct link to 🎯 Advanced Interaction Workflows" title="Direct link to 🎯 Advanced Interaction Workflows" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="1-drag-entity-from-sidebar-to-canvas">1. Drag Entity from Sidebar to Canvas<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#1-drag-entity-from-sidebar-to-canvas" class="hash-link" aria-label="Direct link to 1. Drag Entity from Sidebar to Canvas" title="Direct link to 1. Drag Entity from Sidebar to Canvas" translate="no">​</a></h4>
<p>Add entities to viewpoints intuitively by dragging them directly from the left sidebar tree onto the modeling canvas. The grab cursor indicates draggable entities when a viewpoint is active.</p>
<p><strong>Key Benefits:</strong></p>
<ul>
<li class="">More intuitive than context menu workflows</li>
<li class="">Entities appear at the exact drop position</li>
<li class="">Error handling prevents duplicate additions</li>
<li class="">Existing context menu option remains available</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Drag Entity to Canvas" src="data:image/png;base64,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" width="333" height="165" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="2-drag--context-menu-for-related-entities">2. Drag &amp; Context Menu for Related Entities<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#2-drag--context-menu-for-related-entities" class="hash-link" aria-label="Direct link to 2. Drag &amp; Context Menu for Related Entities" title="Direct link to 2. Drag &amp; Context Menu for Related Entities" translate="no">​</a></h4>
<p>Explore and add related entities directly from the relations panel without manually searching in the sidebar tree. Right-click for context menu or drag to place on canvas.</p>
<p><strong>Features:</strong></p>
<ul>
<li class="">Context menu for quick "Add to viewpoint" / "Remove from viewpoint"</li>
<li class="">Drag and drop related entities onto canvas</li>
<li class="">Works for all relation categories:<!-- -->
<ul>
<li class="">Outgoing entity relations</li>
<li class="">Incoming entity relations</li>
<li class="">Outgoing attribute relations</li>
<li class="">Incoming attribute relations</li>
</ul>
</li>
<li class="">Grab cursor indicates draggable rows when a viewpoint is active</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Relation Drag and Context Menu" src="https://itb.banian.ch/user-docs/assets/images/ui-011-new_relation-drag-and-context-menu_001-c990e95d3b633226870945996b1a47fb.png" width="523" height="175" class="img_weVP"></p>
<p><img decoding="async" loading="lazy" alt="Relation Drag Example" src="https://itb.banian.ch/user-docs/assets/images/ui-011-new_relation-drag-and-context-menu_002-38c5dd11a2546eb816da18e672de5044.png" width="1236" height="249" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="3-comprehensive-canvas-context-menus">3. Comprehensive Canvas Context Menus<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#3-comprehensive-canvas-context-menus" class="hash-link" aria-label="Direct link to 3. Comprehensive Canvas Context Menus" title="Direct link to 3. Comprehensive Canvas Context Menus" translate="no">​</a></h4>
<p>Right-click anywhere on the canvas to access context-sensitive actions. Menus are available for:</p>
<p><strong>Entity Node Headers:</strong></p>
<ul>
<li class="">Edit Entity</li>
<li class="">Expand / Collapse Attributes</li>
<li class="">Remove from Viewpoint</li>
<li class="">Copy Source to Stage (ITB API)</li>
<li class="">Delete Entity (with confirmation)</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Entity Node Context Menu" src="https://itb.banian.ch/user-docs/assets/images/ui-012-new_canvas-context-menus_001-46f581595c01cb503f373b61edf209aa.png" width="403" height="274" class="img_weVP"></p>
<p><strong>Relation Edges:</strong></p>
<ul>
<li class="">Go to Source Entity</li>
<li class="">Go to Target Entity</li>
<li class="">Edit Relation</li>
<li class="">Delete Relation (with confirmation)</li>
<li class="">20px invisible hit area makes thin edges easy to click</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Relation Edge Context Menu" src="https://itb.banian.ch/user-docs/assets/images/ui-012-new_canvas-context-menus_002-a103772f3925ca36c8e42f0b9573d382.png" width="564" height="328" class="img_weVP"></p>
<p><strong>Canvas Background:</strong></p>
<ul>
<li class="">Deselect All</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Canvas Background Context Menu" src="data:image/png;base64,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" width="466" height="163" class="img_weVP"></p>
<p>All delete actions show confirmation dialogs for safety.</p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="4-user-settings-dialog">4. User Settings Dialog<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#4-user-settings-dialog" class="hash-link" aria-label="Direct link to 4. User Settings Dialog" title="Direct link to 4. User Settings Dialog" translate="no">​</a></h4>
<p>Centralized settings panel accessible via the gear icon in the header bar. All preferences are persisted to localStorage across sessions.</p>
<p><strong>General Tab:</strong></p>
<ul>
<li class="">Language selection (English, German)</li>
<li class="">Theme selection (Light, Dark, System)</li>
</ul>
<p><img decoding="async" loading="lazy" alt="User Settings - General Tab" src="https://itb.banian.ch/user-docs/assets/images/ui-014-new_user-settings-dialog_001-cf4651a1a9294efd62c49c39ece1639c.png" width="762" height="520" class="img_weVP"></p>
<p><strong>Canvas Tab:</strong></p>
<ul>
<li class=""><strong>Pan Mode</strong> - Choose mouse button: Left Click (default), Right Click, or Middle Click</li>
<li class=""><strong>Background</strong> - Dots, Lines, Cross, or None</li>
<li class=""><strong>Snap to Grid</strong> - Toggle with adjustable grid size (10-50px)</li>
<li class=""><strong>Show Minimap</strong> - Toggle minimap overlay</li>
</ul>
<p><img decoding="async" loading="lazy" alt="User Settings - Canvas Tab" src="https://itb.banian.ch/user-docs/assets/images/ui-014-new_user-settings-dialog_002-42a8b763d05a4b17422001609ecd0a47.png" width="759" height="691" class="img_weVP"></p>
<p><strong>Reset to Defaults</strong> button available to restore original settings. All changes take effect immediately.</p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="5-generate-all-artifacts-button">5. Generate All Artifacts Button<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#5-generate-all-artifacts-button" class="hash-link" aria-label="Direct link to 5. Generate All Artifacts Button" title="Direct link to 5. Generate All Artifacts Button" translate="no">​</a></h4>
<p>One-click generation of all artifacts from the header bar. A modal dialog tracks progress through each step: preparing, saving, generating, with success/error feedback.</p>
<p><strong>Workflow:</strong></p>
<ol>
<li class="">Click the play icon button in header</li>
<li class="">Dialog automatically saves workspace data to backend</li>
<li class="">Backend generates all artifacts</li>
<li class="">Real-time progress indication</li>
<li class="">Auto-dismisses on completion or error</li>
</ol>
<p><img decoding="async" loading="lazy" alt="Generate All Artifacts Dialog" src="data:image/png;base64,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" width="321" height="118" class="img_weVP"></p>
<p><em>Only visible when backend supports generate-all endpoint.</em></p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="-navigation--discovery">🎯 Navigation &amp; Discovery<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#-navigation--discovery" class="hash-link" aria-label="Direct link to 🎯 Navigation &amp; Discovery" title="Direct link to 🎯 Navigation &amp; Discovery" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="6-entity-tree-auto-reveal-on-canvas-selection">6. Entity Tree Auto-Reveal on Canvas Selection<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#6-entity-tree-auto-reveal-on-canvas-selection" class="hash-link" aria-label="Direct link to 6. Entity Tree Auto-Reveal on Canvas Selection" title="Direct link to 6. Entity Tree Auto-Reveal on Canvas Selection" translate="no">​</a></h4>
<p>Selecting an entity on the canvas automatically expands all parent folders in the left sidebar entity tree and scrolls the selected entity into view. Keeps sidebar and canvas perfectly in sync.</p>
<p><strong>Behavior:</strong></p>
<ul>
<li class="">Auto-reveal disabled when search filter is active</li>
<li class="">No redundant scrolling when selecting from tree directly</li>
<li class="">Smooth scroll animation brings entity into view</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="-performance-optimization">⚡ Performance Optimization<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#-performance-optimization" class="hash-link" aria-label="Direct link to ⚡ Performance Optimization" title="Direct link to ⚡ Performance Optimization" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="7-comprehensive-canvas-rendering-performance-boost">7. Comprehensive Canvas Rendering Performance Boost<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#7-comprehensive-canvas-rendering-performance-boost" class="hash-link" aria-label="Direct link to 7. Comprehensive Canvas Rendering Performance Boost" title="Direct link to 7. Comprehensive Canvas Rendering Performance Boost" translate="no">​</a></h4>
<p>Massive performance improvements targeting large viewpoints. Initial render time for ~30 entities with ~40 edges dropped from ~25 seconds to under 10 seconds.</p>
<p><strong>Key Optimizations:</strong></p>
<ul>
<li class=""><strong>Viewport Culling</strong> - Only visible nodes and edges are mounted in DOM</li>
<li class=""><strong>Shared Data Maps</strong> - Entity types, attributes resolved once at canvas level instead of per-entity/edge</li>
<li class=""><strong>Structural Equality Guards</strong> - Update arrays only when content changes</li>
<li class=""><strong>Debounced Viewpoint Switch</strong> - Node and edge generation batched via requestAnimationFrame</li>
<li class=""><strong>Pre-resolved Edge Data</strong> - All display data precomputed, eliminating per-edge store subscriptions</li>
<li class=""><strong>Lazy Edge Labels</strong> - Labels hidden below 50% zoom</li>
<li class=""><strong>Cached Handle Positions</strong> - Map lookups instead of linear searches</li>
<li class=""><strong>Inline SVG Icons</strong> - Replaced component-based icons with inline SVG</li>
<li class=""><strong>Singleton Dialogs</strong> - One shared AlertDialog and ContextMenu instance</li>
<li class=""><strong>Optimized CSS Transitions</strong> - Scoped properties to avoid full layout recalculations</li>
<li class=""><strong>Automatic Minimap Optimization</strong> - Auto-hides on viewpoints with 50+ entities</li>
</ul>
<p><strong>Results:</strong></p>
<ul>
<li class="">Faster viewpoint opening</li>
<li class="">Smoother panning and zooming</li>
<li class="">Faster viewpoint switching</li>
<li class="">Significantly reduced jank</li>
<li class="">Production-ready performance for real-world data models</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="summary">Summary<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.8#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary" translate="no">​</a></h2>
<p>ITB WebApp 0.0.8 introduces powerful new interaction patterns and user customization options while delivering dramatic performance improvements. Advanced drag-and-drop workflows, contextual menus, and customizable settings enable sophisticated modeling workflows, while canvas rendering optimizations make large-scale data models responsive and usable.</p>
<p>Thank you to all contributors and users who provided feedback!</p>]]></content>
        <category label="ITB APP" term="ITB APP"/>
        <category label="UI" term="UI"/>
        <category label="Model" term="Model"/>
        <category label="performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.0.7 (WebApp)]]></title>
        <id>https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7</id>
        <link href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7"/>
        <updated>2026-02-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We're excited to announce version 0.0.7 of the ITB WebApp (Information Technology Blueprint), bringing significant improvements to the user interface and data model capabilities. This release includes 10 new features and 1 important bug fix.]]></summary>
        <content type="html"><![CDATA[<p>We're excited to announce version 0.0.7 of the ITB WebApp (Information Technology Blueprint), bringing significant improvements to the user interface and data model capabilities. This release includes 10 new features and 1 important bug fix.</p>
<blockquote>
<p><strong>Part of ITB 0.0.7 release</strong> - See <a class="" href="https://itb.banian.ch/user-docs/changelog/itb-0.0.7">master release</a> and <a class="" href="https://itb.banian.ch/user-docs/changelog-api/api-0.0.7">API Details</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-new-features">✨ New Features<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="ui-enhancements">UI Enhancements<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#ui-enhancements" class="hash-link" aria-label="Direct link to UI Enhancements" title="Direct link to UI Enhancements" translate="no">​</a></h3>
<p>This release brings substantial improvements to the user experience with 8 new UI features:</p>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="1-model-filter-for-entity-type">1. Model Filter for Entity Type<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#1-model-filter-for-entity-type" class="hash-link" aria-label="Direct link to 1. Model Filter for Entity Type" title="Direct link to 1. Model Filter for Entity Type" translate="no">​</a></h4>
<p>Filter viewpoint displays by entity type to reduce visual complexity. A new funnel button in the model canvas toolbar allows you to toggle visibility of entity types, helping you focus on what matters most.</p>
<p><strong>Key Benefits:</strong></p>
<ul>
<li class="">Improved readability of complex models</li>
<li class="">Focus on relevant entity types</li>
<li class="">Quick toggle on/off for each type</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Model Filter for Entity Type" src="https://itb.banian.ch/user-docs/assets/images/ui-001-new_model-filter-entity-type_001-2ad9a2fc6938bfed69d1f3ca9d3141e1.png" width="457" height="715" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="3-add-entity-to-center-of-canvas">3. Add Entity to Center of Canvas<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#3-add-entity-to-center-of-canvas" class="hash-link" aria-label="Direct link to 3. Add Entity to Center of Canvas" title="Direct link to 3. Add Entity to Center of Canvas" translate="no">​</a></h4>
<p>Entities are now added to the center of the visible canvas area rather than at a fixed position, providing a more intuitive editing experience.</p>
<p><img decoding="async" loading="lazy" alt="Add Entity to Center of Canvas" src="https://itb.banian.ch/user-docs/assets/images/ui-003-new_add-entity-to-center-of-canvas_001-2a6479a5c48f60424aaa2eae8eb2b677.png" width="1220" height="1102" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="4-entity-usage-indicator-across-viewpoints">4. Entity Usage Indicator Across Viewpoints<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#4-entity-usage-indicator-across-viewpoints" class="hash-link" aria-label="Direct link to 4. Entity Usage Indicator Across Viewpoints" title="Direct link to 4. Entity Usage Indicator Across Viewpoints" translate="no">​</a></h4>
<p>New visual indicator shows where entities are used across different viewpoints, making it easier to understand entity relationships and dependencies throughout your model.</p>
<p><img decoding="async" loading="lazy" alt="Entity Usage Indicator" src="https://itb.banian.ch/user-docs/assets/images/ui-004-new_usage-of-enitity-in-viewpoints-indicator_001-830b301c2e88a9c04e372e1892df50cb.png" width="679" height="276" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="5-edge-highlighting-for-selected-entity">5. Edge Highlighting for Selected Entity<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#5-edge-highlighting-for-selected-entity" class="hash-link" aria-label="Direct link to 5. Edge Highlighting for Selected Entity" title="Direct link to 5. Edge Highlighting for Selected Entity" translate="no">​</a></h4>
<p>When selecting an entity, all connected edges are now highlighted, making it easier to trace relationships and understand connections at a glance.</p>
<p><img decoding="async" loading="lazy" alt="Edge Highlighting for Selected Entity" src="https://itb.banian.ch/user-docs/assets/images/ui-005-new_edge-highlighting-for-selected-entity_001-f650a6e552b14717883a34227fa1790c.png" width="1132" height="189" class="img_weVP">
<img decoding="async" loading="lazy" alt="Edge Highlighting Example 2" src="https://itb.banian.ch/user-docs/assets/images/ui-005-new_edge-highlighting-for-selected-entity_002-cb1509179096444d0b82f187585de603.png" width="1149" height="179" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="6-attribute-drawer-with-pagination">6. Attribute Drawer with Pagination<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#6-attribute-drawer-with-pagination" class="hash-link" aria-label="Direct link to 6. Attribute Drawer with Pagination" title="Direct link to 6. Attribute Drawer with Pagination" translate="no">​</a></h4>
<p>The drawer concept has been extended to attributes, now accessible via <strong>CTRL+4</strong>. All drawers (viewpoints, entities, relations, and attributes) are now paginated, significantly improving performance in large models.</p>
<p><strong>Available Shortcuts:</strong></p>
<ul>
<li class=""><strong>CTRL+1</strong> - Viewpoints</li>
<li class=""><strong>CTRL+2</strong> - Entities</li>
<li class=""><strong>CTRL+3</strong> - Relations</li>
<li class=""><strong>CTRL+4</strong> - Attributes (New!)</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Attribute Drawer" src="https://itb.banian.ch/user-docs/assets/images/ui-006-new_attribute-drawer_001-e60aaf380795c8e5f80987e415cb217a.png" width="2822" height="767" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="7-save-canvas-as-image">7. Save Canvas as Image<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#7-save-canvas-as-image" class="hash-link" aria-label="Direct link to 7. Save Canvas as Image" title="Direct link to 7. Save Canvas as Image" translate="no">​</a></h4>
<p>Export your viewpoint canvas as a high-quality image for documentation, presentations, or sharing with stakeholders.</p>
<p><img decoding="async" loading="lazy" alt="Save Canvas as Image" src="https://itb.banian.ch/user-docs/assets/images/ui-007-new_save-canvas-as-image_001-acb6453bdaf711cfb7addf0e0f190186.png" width="318" height="226" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="8-auto-arrange-canvas">8. Auto Arrange Canvas<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#8-auto-arrange-canvas" class="hash-link" aria-label="Direct link to 8. Auto Arrange Canvas" title="Direct link to 8. Auto Arrange Canvas" translate="no">​</a></h4>
<p>Automatically arrange entities in your viewpoint for optimal layout. A layout algorithm now helps organize complex models with minimal manual effort.</p>
<p><img decoding="async" loading="lazy" alt="Auto Arrange Canvas" src="https://itb.banian.ch/user-docs/assets/images/ui-008-new_auto-arrange-canvas_001-568aab2c8f3e09ac77efb0a79be24d10.png" width="352" height="387" class="img_weVP"></p>
<hr>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="9-resizable-left-sidebar">9. Resizable Left Sidebar<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#9-resizable-left-sidebar" class="hash-link" aria-label="Direct link to 9. Resizable Left Sidebar" title="Direct link to 9. Resizable Left Sidebar" translate="no">​</a></h4>
<p>The left sidebar can now be resized to accommodate different screen sizes and user preferences, providing more flexibility in workspace organization.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="model-improvements">Model Improvements<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#model-improvements" class="hash-link" aria-label="Direct link to Model Improvements" title="Direct link to Model Improvements" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_yXhU" id="10-mandatory-attribute-field">10. Mandatory Attribute Field<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#10-mandatory-attribute-field" class="hash-link" aria-label="Direct link to 10. Mandatory Attribute Field" title="Direct link to 10. Mandatory Attribute Field" translate="no">​</a></h4>
<p>Attributes can now be marked as mandatory using a new boolean field. This enhancement provides:</p>
<ul>
<li class="">Clear documentation of required fields</li>
<li class="">Better data quality and validation rules</li>
<li class="">Support for generating database schemas with NOT NULL constraints</li>
<li class="">Backward compatibility (defaults to <code>false</code>)</li>
</ul>
<p><strong>Display Features:</strong></p>
<ul>
<li class="">Visual indicator <code>*</code> (asterisk) in table columns to mark mandatory fields</li>
<li class="">Compact icon-based display saves screen space compared to text labels</li>
<li class="">Consistent indicator across main canvas, entity attributes table, and sidebar panels</li>
</ul>
<p><strong>Example:</strong></p>
<div class="language-json codeBlockContainer_qfSK theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_cVdU"><pre tabindex="0" class="prism-code language-json codeBlock_g_eR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_zmw5"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"attr_123"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"customer_id"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"string"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"mandatory"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"description"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Unique customer identifier"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="-bug-fixes">🐞 Bug Fixes<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#-bug-fixes" class="hash-link" aria-label="Direct link to 🐞 Bug Fixes" title="Direct link to 🐞 Bug Fixes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_yXhU" id="2-model-edge-routing-on-collapse">2. Model Edge Routing on Collapse<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#2-model-edge-routing-on-collapse" class="hash-link" aria-label="Direct link to 2. Model Edge Routing on Collapse" title="Direct link to 2. Model Edge Routing on Collapse" translate="no">​</a></h3>
<p>Fixed an issue where edge routing was not properly updated when collapsing entity nodes in the canvas, ensuring proper visual representation of relationships.</p>
<p><img decoding="async" loading="lazy" alt="Model Edge Routing on Collapse Fix" src="https://itb.banian.ch/user-docs/assets/images/ui-002-fix_model-edge-routing-on-collapse_001-5bfa3c6c382af3f551089ace9cc92d4f.png" width="508" height="472" class="img_weVP"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_yXhU" id="summary">Summary<a href="https://itb.banian.ch/user-docs/changelog-webapp/webapp-0.0.7#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary" translate="no">​</a></h2>
<p>Version 0.0.7 represents a significant step forward in usability, performance, and data model capabilities. The UI improvements make working with large models more efficient, while the new mandatory field enhances data modeling best practices.</p>
<p>Thank you to all contributors and users who provided feedback!</p>]]></content>
        <category label="ITB APP" term="ITB APP"/>
        <category label="UI" term="UI"/>
        <category label="Model" term="Model"/>
    </entry>
</feed>