<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://excalibur.photonic.dev/changelog</id>
    <title>Excalibur Blog</title>
    <updated>2026-05-24T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://excalibur.photonic.dev/changelog"/>
    <subtitle>Excalibur Blog</subtitle>
    <icon>https://excalibur.photonic.dev/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[0.6.4]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.6.4</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.6.4"/>
        <updated>2026-05-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.6.4 is a patch release fixing a bug on the app and updating some dependencies.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.6.4 is a patch release fixing a bug on the app and updating some dependencies.</p>
<p>Updating the app is recommended but not necessary. Updating the server is not required.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.6.4#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h4 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.4#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h4>
<ul>
<li class="">🐛 Fixed a bug where the name sorting was not ignoring the case (e.g., uppercase names were sorted before lowercase names of the same letter)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.6.4#%EF%B8%8F-dependencies" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">⬆️ Updated <code>lint-staged</code> development dependency from <code>16.4.0</code> to <code>17.0.5</code> (<a href="https://github.com/PhotonicGluon/Excalibur/pull/29" target="_blank" rel="noopener noreferrer" class="">#29</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.6.4#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies-1">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.6.4#%EF%B8%8F-dependencies-1" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">⬆️ Updated <code>uvicorn</code> from <code>0.46.0</code> to <code>0.47.0</code> (<a href="https://github.com/PhotonicGluon/Excalibur/pull/24" target="_blank" rel="noopener noreferrer" class="">#24</a>)</li>
<li class="">⬆️ Updated <code>ipython</code> development dependency from <code>9.10.1</code> to <code>9.13.0</code> (<a href="https://github.com/PhotonicGluon/Excalibur/pull/25" target="_blank" rel="noopener noreferrer" class="">#25</a>)</li>
<li class="">⬆️ Updated <code>ruff</code> development dependency from <code>0.15.12</code> to <code>0.15.13</code> (<a href="https://github.com/PhotonicGluon/Excalibur/pull/28" target="_blank" rel="noopener noreferrer" class="">#28</a>)</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.6.3]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.6.3</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.6.3"/>
        <updated>2026-05-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.6.3 is a hotfix release fixing several critical issues stemming from the updated dependencies introduced in this update cycle.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.6.3 is a hotfix release fixing several critical issues stemming from the updated dependencies introduced in this update cycle.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.6.3#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.3#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">🚑️ Fixed encryption/decryption of files not working on production builds</li>
<li class="">🚑️ Fixed keyboard entry making the screen uglily on Android</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.6.3#%EF%B8%8F-dependencies" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">⬇️ Downgraded Vite dependencies:<!-- -->
<ul>
<li class=""><code>vite</code> from <code>8.0.12</code> to <code>7.3.2</code></li>
<li class=""><code>@vitejs/plugin-react</code> from <code>6.0.1</code> to <code>5.2.0</code></li>
</ul>
</li>
<li class="">⬇️ Downgraded <code>electron-vite</code> from <code>6.0.0-beta.1</code> to <code>5.0.0</code></li>
<li class="">⬇️📌 Downgraded and pinned Capacitor dependencies:<!-- -->
<ul>
<li class=""><code>@capacitor/android</code> from <code>8.3.3</code> to <code>8.2.0</code></li>
<li class=""><code>@capacitor/core</code> from <code>8.3.3</code> to <code>8.2.0</code></li>
<li class=""><code>@capacitor/cli</code> from <code>8.3.3</code> to <code>8.2.0</code></li>
</ul>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.6.3#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<p>No significant changes.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.6.2]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.6.2</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.6.2"/>
        <updated>2026-05-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.6.2 is a hotfix release fixing several bugs.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.6.2 is a hotfix release fixing several bugs.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.6.2#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-changes">🔄 Changes<a href="https://excalibur.photonic.dev/changelog/v0.6.2#-changes" class="hash-link" aria-label="Direct link to 🔄 Changes" title="Direct link to 🔄 Changes" translate="no">​</a></h3>
<ul>
<li class="">💄 Enhanced obfuscation dialog with more information about the initial retrieval of items on the server</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.2#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">🐛 Fixed obfuscation process including an extra <code>.exef</code> in file names</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.6.2#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes-1">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.2#-bug-fixes-1" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">
<p>🐛 Fixed an inconsistency where uploaded files must end in <code>.exef</code> but renaming files does not enforce this</p>
<ul>
<li class="">Now, failure to provide an <code>.exef</code> extension when renaming a file will return a <code>417 Expectation Failed</code> error</li>
</ul>
</li>
<li class="">
<p>🐛 Fixed backup command (<code>excalibur backup</code>) not including folders' contents</p>
</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.6.1]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.6.1</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.6.1"/>
        <updated>2026-05-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.6.1 is a hotfix release fixing a bug with name obfuscation on the app.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.6.1 is a hotfix release fixing a bug with name obfuscation on the app.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.6.1#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.1#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">🐛 Fixed an issue where trying to upgrade existing files to use obfuscated names would prematurely timeout if there are a lot of files to process</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.6.1#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-new-features">✨ New Features<a href="https://excalibur.photonic.dev/changelog/v0.6.1#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h3>
<ul>
<li class="">✨ Added a new endpoint <code>/api/files/count</code> to count the number of items in the user's file system</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.6.0]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.6.0</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.6.0"/>
        <updated>2026-05-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Welcome to Excalibur 0.6.0! This release brings significant security improvements, numerous bug fixes, and performance improvements. Here are some of the highlights:]]></summary>
        <content type="html"><![CDATA[<p>Welcome to Excalibur 0.6.0! This release brings significant security improvements, numerous bug fixes, and performance improvements. Here are some of the highlights:</p>
<ul>
<li class=""><strong>New Authentication Protocol</strong>: Excalibur now uses the state-of-the-art Augmented Password-based Authenticated Key Exchange (aPAKE) protocol <a href="https://datatracker.ietf.org/doc/html/rfc9807" target="_blank" rel="noopener noreferrer" class="">OPAQUE-3DH</a> as the default authentication protocol instead of the legacy Secure Remote Password (SRP) protocol.</li>
<li class=""><strong>Database-Backed Filesystem</strong>: Excalibur moved away from relying on operating-system file management to a database-backed filesystem for a more "logical" organization of files and folders.</li>
<li class=""><strong>File Name Obfuscation</strong>: File and folder names can now be obfuscated to the server and other users for enhanced privacy.</li>
<li class=""><strong>More Sorting Options</strong>: Added more sorting options for the file explorer page, including file size, file type, and creation time.</li>
</ul>
<p>The Excalibur documentation website was also updated in this release.</p>
<p>Do note that there are several breaking changes to Excalibur in this version. Please follow <a class="" href="https://excalibur.photonic.dev/docs/guide/upgrading/05x-to-06x">the 0.6 upgrade guide</a> to upgrade your Excalibur instance to version 0.6. Do also take note of all the breaking changes made to the server API if you are using it.</p>
<p>Read all about the changes to Excalibur below. Enjoy!</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.6.0#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-security">🔒️ Security<a href="https://excalibur.photonic.dev/changelog/v0.6.0#%EF%B8%8F-security" class="hash-link" aria-label="Direct link to 🔒️ Security" title="Direct link to 🔒️ Security" translate="no">​</a></h3>
<ul>
<li class="">🔒️ Overridden version minima of dependencies in <code>pnpm-workspace.yaml</code> to address security vulnerabilities:<!-- -->
<ul>
<li class="">CVE-2026-34601, CVE-2026-41674, CVE-2026-41675, CVE-2026-41672, CVE-2026-41673: <code>@xmldom/xmldom</code> to <code>0.8.13</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-new-features">✨ New Features<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h3>
<ul>
<li class="">
<p>✨ Implemented the <a href="https://datatracker.ietf.org/doc/html/rfc9807" target="_blank" rel="noopener noreferrer" class="">OPAQUE-3DH</a> protocol to replace the Secure Remote Password (SRP) protocol for increased security</p>
</li>
<li class="">
<p>✨ Implemented obfuscation of file and folder names</p>
<ul>
<li class="">That is, file and folder names would appear to be obfuscated to the server and to other users</li>
<li class="">Names are obfuscated using a key derived from the vault key</li>
<li class="">New users can toggle this feature while signing up</li>
<li class="">This feature is disabled by default for existing users, but can be enabled in the "server settings" submenu</li>
</ul>
</li>
<li class="">
<p>✨ Added more sorting options for the file explorer page:</p>
<ul>
<li class="">File size</li>
<li class="">File type</li>
<li class="">Creation time</li>
</ul>
</li>
<li class="">
<p>✨ Added creation times to file and folder listings</p>
</li>
<li class="">
<p>💄 Added a new server settings submenu that contains the server vault key</p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-changes">🔄 Changes<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-changes" class="hash-link" aria-label="Direct link to 🔄 Changes" title="Direct link to 🔄 Changes" translate="no">​</a></h3>
<ul>
<li class="">
<p>🔄 Changed default login protocol from Secure Remote Password (SRP) to OPAQUE-3DH</p>
<ul>
<li class="">Old accounts can still log in using SRP</li>
<li class="">An option to upgrade to OPAQUE-3DH will be shown when logging in with SRP</li>
</ul>
</li>
<li class="">
<p>🔄 Changed default registration protocol from Secure Remote Password (SRP) to OPAQUE-3DH</p>
</li>
<li class="">
<p>🚸 Updated registration flow so that users are automatically logged in after registration</p>
</li>
<li class="">
<p>🚸 Made the file change listener attempt to reconnect to the server upon initial disconnect</p>
</li>
<li class="">
<p>💄 Split up settings page's contents into multiple subpages for cleaner navigation</p>
</li>
<li class="">
<p>💄 Made the scrollbar for the file explorer breadcrumbs look nicer</p>
</li>
<li class="">
<p>💄 Updated file explorer interface to display the file listener status (i.e., connected or disconnected)</p>
</li>
<li class="">
<p>💄 Added current running Excalibur version to update dialog (to allow comparing with the latest release version)</p>
</li>
<li class="">
<p>⚰️ Removed vault key dialog</p>
<ul>
<li class="">The vault key is now shown in the server settings submenu</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">🐛 Fixed an issue where the login page still shows the user being logged in even though they are not</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-deprecations">🗑️ Deprecations<a href="https://excalibur.photonic.dev/changelog/v0.6.0#%EF%B8%8F-deprecations" class="hash-link" aria-label="Direct link to 🗑️ Deprecations" title="Direct link to 🗑️ Deprecations" translate="no">​</a></h3>
<ul>
<li class="">🗑️ Deprecated Secure Remote Password (SRP) related code<!-- -->
<ul>
<li class="">Code will be removed in a future update</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-code-refactoring">♻️ Code Refactoring<a href="https://excalibur.photonic.dev/changelog/v0.6.0#%EF%B8%8F-code-refactoring" class="hash-link" aria-label="Direct link to ♻️ Code Refactoring" title="Direct link to ♻️ Code Refactoring" translate="no">​</a></h3>
<ul>
<li class="">🚚 Renamed <code>lib/security</code> to <code>lib/auth</code> in the main package</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.6.0#%EF%B8%8F-dependencies" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">
<p>🔒️ Added minimum age that dependencies need to be released before accepting updates</p>
</li>
<li class="">
<p>➕ Added <code>mime</code> dependency</p>
</li>
<li class="">
<p>➕ Added <code>seedrandom</code> dependency (and <code>@types/seedrandom</code> as a development dependency)</p>
</li>
<li class="">
<p>➖ Removed <code>@vitejs/plugin-legacy</code> dependency</p>
</li>
<li class="">
<p>⬆️ Updated Ionic dependencies:</p>
<ul>
<li class=""><code>@ionic/core</code> from <code>8.8.2</code> to <code>8.8.6</code></li>
<li class=""><code>@ionic/react</code> from <code>8.8.2</code> to <code>8.8.6</code></li>
<li class=""><code>@ionic/react-router</code> from <code>8.8.2</code> to <code>8.8.6</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Vite dependencies:</p>
<ul>
<li class=""><code>vite</code> from <code>7.3.1</code> to <code>8.0.12</code></li>
<li class=""><code>vite-plugin-node-polyfills</code> from <code>0.25.0</code> to <code>0.26.0</code></li>
<li class=""><code>vitest</code> from <code>4.1.2</code> to <code>4.1.5</code></li>
<li class=""><code>@vitejs/plugin-react</code> from <code>5.1.4</code> to <code>6.0.1</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Capacitor dependencies:</p>
<ul>
<li class=""><code>@capacitor/android</code> from <code>8.2.0</code> to <code>8.3.3</code></li>
<li class=""><code>@capacitor/app</code> from <code>8.0.1</code> to <code>8.1.0</code></li>
<li class=""><code>@capacitor/core</code> from <code>8.2.0</code> to <code>8.3.3</code></li>
<li class=""><code>@capacitor/cli</code> from <code>8.2.0</code> to <code>8.3.3</code></li>
<li class=""><code>@capacitor/keyboard</code> from <code>8.0.2</code> to <code>8.0.3</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Electron dependencies:</p>
<ul>
<li class=""><code>electron</code> from <code>39.2.7</code> to <code>41.5.1</code></li>
<li class=""><code>electron-vite</code> from <code>5.0.0</code> to <code>6.0.0-beta.1</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated TailwindCSS dependencies:</p>
<ul>
<li class=""><code>tailwindcss</code> from <code>4.2.1</code> to <code>4.3.0</code></li>
<li class=""><code>@tailwindcss/vite</code> from <code>4.2.1</code> to <code>4.3.0</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated React dependencies:</p>
<ul>
<li class=""><code>react</code> from <code>19.2.4</code> to <code>19.2.5</code></li>
<li class=""><code>react-dom</code> from <code>19.2.4</code> to <code>19.2.5</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated <code>immer</code> from <code>11.1.4</code> to <code>11.1.8</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>baseline-browser-mapping</code> from <code>2.10.7</code> to <code>2.10.29</code></p>
</li>
<li class="">
<p>📌 Pinned <code>typescript</code> development dependency version to <code>5.x.x</code> (currently <code>5.9.3</code>)</p>
</li>
<li class="">
<p>⬆️ Updated ESLint development dependencies:</p>
<ul>
<li class=""><code>eslint</code> from <code>9.39.3</code> to <code>9.39.4</code></li>
<li class=""><code>@eslint/js</code> from <code>9.39.2</code> to <code>9.39.4</code></li>
<li class=""><code>eslint-plugin-chai-friendly</code> from <code>1.1.0</code> to <code>1.2.0</code></li>
<li class=""><code>eslint-plugin-cypress</code> from <code>6.1.0</code> to <code>6.4.1</code></li>
<li class=""><code>eslint-plugin-react-hooks</code> from <code>7.0.1</code> to <code>7.1.1</code></li>
<li class=""><code>typescript-eslint</code> from <code>8.56.1</code> to <code>8.59.2</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Prettier development dependencies:</p>
<ul>
<li class=""><code>prettier</code> from <code>3.8.1</code> to <code>3.8.3</code></li>
<li class=""><code>prettier-plugin-tailwindcss</code> from <code>0.7.2</code> to <code>0.8.0</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated <code>globals</code> development dependency from <code>17.4.0</code> to <code>17.6.0</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>lint-staged</code> development dependency from <code>16.3.3</code> to <code>16.4.0</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>start-server-and-test</code> development dependency from <code>2.1.5</code> to <code>3.0.4</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>cypress</code> development dependency from <code>15.11.0</code> to <code>15.14.2</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>@types/node</code> development dependency from <code>25.5.0</code> to <code>25.6.2</code></p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-miscellaneous">🧹 Miscellaneous<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-miscellaneous" class="hash-link" aria-label="Direct link to 🧹 Miscellaneous" title="Direct link to 🧹 Miscellaneous" translate="no">​</a></h3>
<ul>
<li class="">🔨 Added a new <code>update_deps.py</code> script to automate the generation of dependency updates' news fragments</li>
<li class="">🧹 Moved MIME type determination into client (instead of being on the server)</li>
<li class="">🧹 Configured some E2E tests to not run other tests in the suite if any one of the tests fails</li>
<li class="">🧹 Added more Cypress end-to-end tests:<!-- -->
<ul>
<li class="">Item renaming</li>
<li class="">Item deletion</li>
</ul>
</li>
<li class="">🧹 Split the tests that were originally in <code>crud.cy.ts</code> into multiple files for more modular testing</li>
<li class="">🧹 Migrated the android <code>FolderOpenerPlugin</code> to Kotlin</li>
<li class="">🧹 Updated <code>.browserslistrc</code> to Ionic v8 versions</li>
<li class="">🧹 Updated GitHub action <code>android-actions/setup-android</code> to <code>v4</code></li>
<li class="">🧹 Updated GitHub action <code>pnpm/action-setup</code> to <code>v5</code></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.6.0#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-breaking-changes">💥 Breaking Changes<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-breaking-changes" class="hash-link" aria-label="Direct link to 💥 Breaking Changes" title="Direct link to 💥 Breaking Changes" translate="no">​</a></h3>
<ul>
<li class="">
<p>💥 Changed CLI options for the <code>start</code> command:</p>
<ul>
<li class="">Renamed <code>--enable-cors/--disable-cors</code> to <code>--enable-cors-validation/--no-cors-validation</code> (since <code>--disable-cors</code> was misleading)</li>
</ul>
</li>
<li class="">
<p>💥 Added a new option <code>--auth-protocol</code> to the <code>excalibur user add</code> command</p>
<ul>
<li class="">It defaults to the new OPAQUE authentication mechanism (<code>OPAQUE-3DH</code>)</li>
<li class="">For SRP compatibility, use <code>--auth-protocol=SRP</code></li>
</ul>
</li>
<li class="">
<p>💥 The <code>File</code> type no longer returns a <code>mimetype</code> value; it is up to the client to derive the MIME type of the file. This affects the following endpoints:</p>
<ul>
<li class=""><code>/api/files/search</code> (which returns a list of file-score pairs)</li>
<li class=""><code>/api/files/list/{path}</code> (which returns a list of files or directories)</li>
</ul>
</li>
<li class="">
<p>💥 Certain endpoints' response <em>content</em> have been removed as their response <em>codes</em> sufficiently indicate the success/failure of the operation. In particular, these endpoints now no longer return any content for the <code>200 OK</code> status code:</p>
<ul>
<li class=""><code>/api/files/move</code> (previously returned <code>Item Moved</code>)</li>
<li class=""><code>/api/files/mkdir/{path}</code> (previously returned <code>Directory created</code>)</li>
<li class=""><code>/api/files/rename/{path}</code> (previously returned <code>Item renamed</code>)</li>
<li class=""><code>/api/files/upload/{path}</code> (previously returned <code>File uploaded</code>)</li>
</ul>
</li>
<li class="">
<p>💥 We will now use <code>uv</code>'s <code>0.10.x</code> series to build and install the server package, updating the minimum version from <code>0.9.30</code> in <code>pyproject.toml</code> and GitHub actions to <code>0.10.9</code></p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-new-features-1">✨ New Features<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-new-features-1" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h3>
<ul>
<li class="">
<p>✨ Implemented the <a href="https://datatracker.ietf.org/doc/html/rfc9807" target="_blank" rel="noopener noreferrer" class="">OPAQUE-3DH</a> protocol to replace the Secure Remote Password (SRP) protocol</p>
<ul>
<li class="">Added a new registration endpoint (<code>/api/auth/opaque/register</code>) to handle OPAQUE registration flows<!-- -->
<ul>
<li class="">This endpoint also allows existing users using SRP to upgrade to OPAQUE</li>
</ul>
</li>
<li class="">Added a new login endpoint (<code>/api/auth/opaque</code>) to handle OPAQUE login flows</li>
</ul>
</li>
<li class="">
<p>✨ Implemented a new database-backed file management system, moving away from relying on operating-system file management</p>
<ul>
<li class="">Folders are now "logical" and not tied to actual directories on the filesystem</li>
<li class="">Files' names are now stored in the database instead of on the filesystem</li>
<li class="">Files are now stored in a single directory on the filesystem, with their database ID as the filename</li>
</ul>
</li>
<li class="">
<p>✨ Added new endpoints to get and edit additional user info (<code>/api/users/info/{username}</code> and <code>/api/users/edit-info/{username}</code> respectively)</p>
<ul>
<li class="">These additional user info are used solely by the client; the server does not use them</li>
</ul>
</li>
<li class="">
<p>✨ Added a new endpoint (<code>/api/files/all</code>) to get all files and folders in the user's file system</p>
</li>
<li class="">
<p>✨ Added a new backup command to the CLI (<code>excalibur backup</code>)</p>
</li>
<li class="">
<p>✨ Made responses return <code>X-Content-Type-Options</code> and <code>X-Frame-Options</code> headers</p>
<ul>
<li class="">The values are <code>X-Content-Type-Options: nosniff</code> and <code>X-Frame-Options: DENY</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-changes-1">🔄 Changes<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-changes-1" class="hash-link" aria-label="Direct link to 🔄 Changes" title="Direct link to 🔄 Changes" translate="no">​</a></h3>
<ul>
<li class="">
<p>🗃️ Modified the Excalibur database:</p>
<ul>
<li class="">Modified the <code>User</code> table:<!-- -->
<ul>
<li class="">Added <code>auth_protocol</code>, <code>additional_info</code>, and <code>registration_record</code> fields</li>
<li class="">Made <code>srp_group</code>, <code>srp_salt</code>, and <code>srp_verifier</code> fields optional (since they are not used for the OPAQUE-3DH protocol)</li>
</ul>
</li>
<li class="">Added the <code>FSItem</code> table</li>
</ul>
</li>
<li class="">
<p>🗃️ Added authentication protocol information (<code>auth_protocol</code>) to be returned by the security details endpoint (<code>/api/users/security/{username}</code>)</p>
</li>
<li class="">
<p>🗃️ The <code>File</code> and <code>Directory</code> types now return a <code>creation_time</code> field representing the creation timestamp of the item. This affects the following endpoints:</p>
<ul>
<li class=""><code>/api/files/search</code> (which returns a list of file-score pairs)</li>
<li class=""><code>/api/files/list/{path}</code> (which returns a list of files or directories)</li>
</ul>
</li>
<li class="">
<p>🗑️ The following endpoints no longer return the corresponding response codes:</p>
<ul>
<li class=""><code>/api/files/download/{path}</code>: Removed <code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>/api/files/upload/{path}</code>: Removed<!-- -->
<ul>
<li class=""><code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>414 URI Too Long</code>, corresponding to a file path that is too long</li>
</ul>
</li>
<li class=""><code>/api/files/mkdir/{path}</code>: Removed<!-- -->
<ul>
<li class=""><code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>414 URI Too Long</code>, corresponding to a directory path that is too long</li>
</ul>
</li>
<li class=""><code>/api/files/list/{path}</code>: Removed <code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>/api/files/check/path/{path}</code>: Removed<!-- -->
<ul>
<li class=""><code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>414 URI Too Long</code>, corresponding to a directory path that is too long</li>
</ul>
</li>
<li class=""><code>/api/files/check/dir/{path}</code>: Removed <code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>/api/files/delete/{path}</code>: Removed <code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>/api/files/move/{path}</code>: Removed<!-- -->
<ul>
<li class=""><code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path"</li>
<li class=""><code>414 URI Too Long</code>, corresponding to a path that is too long</li>
</ul>
</li>
<li class=""><code>/api/files/rename/{path}</code>: Removed<!-- -->
<ul>
<li class=""><code>406 Not Acceptable</code>, corresponding to an "Illegal or invalid path", replacing it with <code>400 Bad Request</code> corresponding to an "Illegal or invalid name"</li>
<li class=""><code>414 URI Too Long</code>, corresponding to a path that is too long</li>
</ul>
</li>
</ul>
<p>The documentation has been updated to reflect these changes.</p>
</li>
<li class="">
<p>🧹 Subdirectories returned by <code>/api/files/list/{path}</code> will no longer have <code>items</code> returned</p>
<ul>
<li class="">Previously, any subdirectories' <code>items</code> field would be set to <code>null</code>. Now the field is omitted entirely</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes-1">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-bug-fixes-1" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">
<p>🐛 Fixed a bug where unbounded timestamps in the future were allowed as timestamps during the Proof-of-Possession (PoP) validation process</p>
<ul>
<li class="">Now only timestamps within the configured tolerance are allowed</li>
</ul>
</li>
<li class="">
<p>🐛 Fixed wrong exception being returned if the WebSocket credentials are incorrect</p>
</li>
<li class="">
<p>🐛 Fixed certain CLI commands (i.e., <code>excalibur db ui</code> and <code>excalibur test</code>) returning incorrect error codes</p>
</li>
<li class="">
<p>🐛 Fixed an issue where multiple file listener connections with the same communications UUID from the authentication token would override each other, causing all non-latest connections to not receive any updates from the server</p>
</li>
<li class="">
<p>🐛 Fixed a bug where returning nothing in some endpoints gives "Response content shorter than Content-Length" internal server errors</p>
</li>
<li class="">
<p>✏️ Fixed typo in the add user endpoint documentation.</p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-deprecations-1">🗑️ Deprecations<a href="https://excalibur.photonic.dev/changelog/v0.6.0#%EF%B8%8F-deprecations-1" class="hash-link" aria-label="Direct link to 🗑️ Deprecations" title="Direct link to 🗑️ Deprecations" translate="no">​</a></h3>
<ul>
<li class="">
<p>🔥 Removed old operating-system file management code</p>
<ul>
<li class="">Please migrate to the new system using the <code>excalibur db migrate-files</code> command</li>
</ul>
</li>
<li class="">
<p>🗑️ Deprecated Secure Remote Password (SRP) related code</p>
<ul>
<li class="">Users can still register and log in with SRP, but it is recommended to use OPAQUE-3DH instead</li>
<li class="">Endpoints and code relating to SRP will be removed in a future update</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies-1">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.6.0#%EF%B8%8F-dependencies-1" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">
<p>🔒️ Added minimum age that dependencies need to be released before accepting updates</p>
</li>
<li class="">
<p>➖ Removed <code>watchdog</code> dependency</p>
</li>
<li class="">
<p>⬆️ Updated <code>fastapi</code> from <code>0.135.2</code> to <code>0.136.1</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>gitpython</code> from <code>3.1.46</code> to <code>3.1.50</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>packaging</code> from <code>26.0</code> to <code>26.2</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>pydantic</code> from <code>2.12.5</code> to <code>2.13.4</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>pydantic-settings</code> from <code>2.13.1</code> to <code>2.14.1</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>tomlkit</code> from <code>0.14.0</code> to <code>0.15.0</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>typer</code> from <code>0.24.1</code> to <code>0.25.1</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>uvicorn</code> from <code>0.41.0</code> to <code>0.46.0</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>ipython</code> development dependency from <code>9.10.0</code> to <code>9.10.1</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>pytest</code> development dependency from <code>9.0.2</code> to <code>9.0.3</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>rapidfuzz</code> dependency from <code>3.14.3</code> to <code>3.14.5</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>ruff</code> development dependency from <code>0.15.6</code> to <code>0.15.12</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>sqlmodel</code> dependency from <code>0.0.37</code> to <code>0.0.38</code></p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-miscellaneous-1">🧹 Miscellaneous<a href="https://excalibur.photonic.dev/changelog/v0.6.0#-miscellaneous-1" class="hash-link" aria-label="Direct link to 🧹 Miscellaneous" title="Direct link to 🧹 Miscellaneous" translate="no">​</a></h3>
<ul>
<li class="">🧹 Changed the scheme name of the <code>HTTPBearer</code> instance from "SRP-Identity" to "Auth-Identity".</li>
<li class="">🧑‍💻 Added an option to return the ACK as a string for the debug <code>/api/auth/ack</code> endpoint (<code>as_string=true</code>)</li>
<li class="">🔨 Added a new <code>update_deps.py</code> script to automate the generation of dependency updates' news fragments</li>
<li class="">🧹 Fixed bug in the internal <code>_add_new_field()</code> function present in the <code>excalibur config update</code> command</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.5.1]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.5.1</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.5.1"/>
        <updated>2026-03-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.5.1 includes minor changes to the app to improve the overall experience for users.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.5.1 includes minor changes to the app to improve the overall experience for users.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.5.1#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-new-features">✨ New Features<a href="https://excalibur.photonic.dev/changelog/v0.5.1#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h3>
<ul>
<li class="">💄 Added directory item count to the file explorer page</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-changes">🔄 Changes<a href="https://excalibur.photonic.dev/changelog/v0.5.1#-changes" class="hash-link" aria-label="Direct link to 🔄 Changes" title="Direct link to 🔄 Changes" translate="no">​</a></h3>
<ul>
<li class="">💄 Made the breadcrumbs on the top of the file explorer scrollable</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.5.1#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">🐛 Fixed scrollbar appearing on the search dialog if the main window size is too small</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.5.1#%EF%B8%8F-dependencies" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">
<p>⬆️ Updated Capacitor dependencies:</p>
<ul>
<li class=""><code>@capacitor/keyboard</code> from <code>8.0.1</code> to <code>8.0.2</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Ionic dependencies:</p>
<ul>
<li class=""><code>@ionic/core</code> from <code>8.8.1</code> to <code>8.8.2</code></li>
<li class=""><code>@ionic/react</code> from <code>8.8.1</code> to <code>8.8.2</code></li>
<li class=""><code>@ionic/react-router</code> from <code>8.8.1</code> to <code>8.8.2</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated TailwindCSS dependencies:</p>
<ul>
<li class=""><code>tailwindcss</code> from <code>4.2.1</code> to <code>4.2.2</code></li>
<li class=""><code>@tailwindcss/vite</code> from <code>4.2.1</code> to <code>4.2.2</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated <code>baseline-browser-mapping</code> dependency from <code>2.10.7</code> to <code>2.10.11</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>vitest</code> development dependency from <code>4.1.0</code> to <code>4.1.2</code></p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.5.1#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies-1">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.5.1#%EF%B8%8F-dependencies-1" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">⬇️ Downgraded <code>sqlalchemy</code> from <code>2.0.48</code> to <code>2.0.44</code></li>
<li class="">⬆️ Updated <code>fastapi</code> from <code>0.135.1</code> to <code>0.135.2</code></li>
<li class="">⬆️ Updated <code>ruff</code> development dependency from <code>0.15.6</code> to <code>0.15.8</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-miscellaneous">🧹 Miscellaneous<a href="https://excalibur.photonic.dev/changelog/v0.5.1#-miscellaneous" class="hash-link" aria-label="Direct link to 🧹 Miscellaneous" title="Direct link to 🧹 Miscellaneous" translate="no">​</a></h3>
<ul>
<li class="">🐛 Fixed an internal issue where running the alembic database revision creation command would fail<!-- -->
<ul>
<li class="">This is related to the downgrade of the SQLAlchemy version</li>
</ul>
</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.5.0]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.5.0</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.5.0"/>
        <updated>2026-03-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.5 includes many new features and improvements to the project. Here are some of the highlights:]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.5 includes many new features and improvements to the project. Here are some of the highlights:</p>
<ul>
<li class=""><strong>Refreshed Interface</strong>: We've updated the user interface of the Excalibur app to follow <a href="https://m3.material.io/components" target="_blank" rel="noopener noreferrer" class="">Material Design 3</a> and to use TailwindCSS's colours.</li>
<li class=""><strong>File Upload Progress</strong>: Previously the upload progress of files was left as indeterminate. Now it shows the actual progress of the upload!</li>
<li class=""><strong>New Move Dialog</strong>: The old move dialog was a bit clunky and unpolished. In this update, we've replaced it with a new, more user-friendly dialog.</li>
<li class=""><strong>File Searching</strong>: You can now search for files in the Excalibur app. You can also just download the files directly from the search results!</li>
</ul>
<p>The Excalibur documentation website was also updated in this release.</p>
<p>Do note that there are some breaking changes to the Excalibur server in this release. Please follow <a class="" href="https://excalibur.photonic.dev/docs/guide/upgrading/04x-to-05x">the 0.5 upgrade guide</a> to upgrade your Excalibur instance to version 0.5.</p>
<p>Read all about the changes to Excalibur below. Enjoy!</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.5.0#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-security">🔒️ Security<a href="https://excalibur.photonic.dev/changelog/v0.5.0#%EF%B8%8F-security" class="hash-link" aria-label="Direct link to 🔒️ Security" title="Direct link to 🔒️ Security" translate="no">​</a></h3>
<ul>
<li class="">🔒️ Amended some <code>POST</code> requests to have their bodies encrypted<!-- -->
<ul>
<li class="">Specifically, the <code>/api/files/mkdir</code>, <code>/api/files/move</code>, and <code>/api/files/rename</code> endpoints used to send their <code>POST</code> bodies in the clear. Now they are encrypted using the shared end-to-end encryption key</li>
</ul>
</li>
<li class="">🔒️ Path parameters will now be encrypted by default</li>
<li class="">🔒️ Overridden version minima of several dependencies in <code>pnpm-workspace.yaml</code> to address security vulnerabilities:<!-- -->
<ul>
<li class="">CVE-2026-25547: <code>@isaacs/brace-expansion</code> to <code>5.0.1</code></li>
<li class="">CVE-2025-69873: <code>ajv</code> to <code>6.14.0</code></li>
<li class="">CVE-2026-25639: <code>axios</code> to <code>1.13.5</code></li>
<li class="">CVE-2026-2739: <code>bn.js@&lt;4.12.3</code> to <code>5.2.3</code> and <code>bn.js@&gt;=5.0.0 &lt;5.2.3</code> to <code>5.2.3</code></li>
<li class="">CVE-2026-32141: <code>flatted</code> to <code>3.4.0</code></li>
<li class="">CVE-2026-26996, CVE-2026-27903, and CVE-2026-27904: <code>minimatch@&lt;3.1.4</code> to <code>3.1.4</code>, <code>minimatch@&gt;=5.0.0 &lt;5.1.8</code> to <code>5.1.8</code>, <code>minimatch@&gt;=9.0.0 &lt;9.0.7</code> to <code>9.0.7</code>, and <code>minimatch@&gt;=10.0.0 &lt;10.2.3</code> to <code>10.2.3</code></li>
<li class="">CVE-2026-2391: <code>qs</code> to <code>6.14.2</code></li>
<li class="">CVE-2026-27606: <code>rollup</code> to <code>4.59.0</code></li>
<li class="">CVE-2026-26960, CVE-2026-29786, and CVE-2026-31802: <code>tar</code> to <code>7.5.11</code></li>
<li class="">CVE-2026-31988: <code>yauzl</code> to <code>3.2.1</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-new-features">✨ New Features<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-new-features" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h3>
<ul>
<li class="">💄 Refreshed the look of the app<!-- -->
<ul>
<li class="">Updated colour palette for light and dark modes</li>
<li class="">Changed look of some components to match <a href="https://m3.material.io/components" target="_blank" rel="noopener noreferrer" class="">Material Design 3</a></li>
</ul>
</li>
<li class="">🚸 Added file upload progress to all upload jobs</li>
<li class="">✨ Created a new move dialog</li>
<li class="">✨ Added ability to search for files</li>
<li class="">✨ Added a crypto key strength option in the settings<!-- -->
<ul>
<li class="">The default key strength is 128 bits; you can change it to 192 or 256 bits as needed</li>
</ul>
</li>
<li class="">✨ Added caps lock indicator to login page</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-changes">🔄 Changes<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-changes" class="hash-link" aria-label="Direct link to 🔄 Changes" title="Direct link to 🔄 Changes" translate="no">​</a></h3>
<ul>
<li class="">🚸 Changed the way toasts are displayed to allow new toasts to replace old ones</li>
<li class="">🚸 Modified the server compatibility message to include the version of Excalibur that is incompatible with the server</li>
<li class="">✏️ Changed "Operations" to "Crypto" in the settings</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-bug-fixes">🐛 Bug Fixes<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-bug-fixes" class="hash-link" aria-label="Direct link to 🐛 Bug Fixes" title="Direct link to 🐛 Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">🐛 Fixed an issue where the toast popup on the file explorer will block the floating action button's actions</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-code-refactoring">♻️ Code Refactoring<a href="https://excalibur.photonic.dev/changelog/v0.5.0#%EF%B8%8F-code-refactoring" class="hash-link" aria-label="Direct link to ♻️ Code Refactoring" title="Direct link to ♻️ Code Refactoring" translate="no">​</a></h3>
<ul>
<li class="">♻️ Allowed ExEF strength to be configured independently of the given encryption key</li>
<li class="">⚰️ Removed heartbeat check<!-- -->
<ul>
<li class="">Heartbeat check is no longer necessary as the client can simply observe the responses to the requests made to the server</li>
</ul>
</li>
<li class="">♻️ Changed <code>Cypress.env()</code> calls to <code>Cypress.expose()</code> in tests, following the advice of <a href="https://docs.cypress.io/app/references/migration-guide#Migrating-away-from-Cypressenv" target="_blank" rel="noopener noreferrer" class="">this migration guide</a></li>
<li class="">♻️ Replaced references to <code>process.env.NODE_ENV === "development"</code> and the like with a reference to the new <code>IS_DEV</code> constant</li>
<li class="">🔧 Configured Android project to use <a href="https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:configuring_daemon_jvm" target="_blank" rel="noopener noreferrer" class="">Daemon JVM Toolchains</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.5.0#%EF%B8%8F-dependencies" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">
<p>⬆️ Updated Capacitor dependencies:</p>
<ul>
<li class=""><code>@capacitor/android</code> from <code>8.0.0</code> to <code>8.2.0</code></li>
<li class=""><code>@capacitor/app</code> from <code>8.0.0</code> to <code>8.0.1</code></li>
<li class=""><code>@capacitor/cli</code> from <code>8.0.0</code> to <code>8.2.0</code></li>
<li class=""><code>@capacitor/core</code> from <code>8.0.0</code> to <code>8.2.0</code></li>
<li class=""><code>@capacitor/filesystem</code> from <code>8.0.0</code> to <code>8.1.2</code></li>
<li class=""><code>@capacitor/keyboard</code> from <code>8.0.0</code> to <code>8.0.1</code></li>
<li class=""><code>@capacitor/preferences</code> from <code>8.0.0</code> to <code>8.0.1</code></li>
<li class=""><code>@capacitor/privacy-screen</code> from <code>2.0.0</code> to <code>2.0.1</code></li>
<li class=""><code>@capawesome/capacitor-file-picker</code> from <code>8.0.0</code> to <code>8.0.2</code></li>
<li class=""><code>capacitor-blob-writer</code> from <code>1.1.19</code> to <code>1.1.20</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated ESLint development dependencies:</p>
<ul>
<li class=""><code>eslint</code> from <code>9.39.2</code> to <code>9.39.3</code></li>
<li class=""><code>eslint-plugin-cypress</code> from <code>5.2.1</code> to <code>6.1.0</code></li>
<li class=""><code>eslint-plugin-react-refresh</code> from <code>0.4.26</code> to <code>0.5.2</code></li>
<li class=""><code>typescript-eslint</code> from <code>8.52.0</code> to <code>8.56.1</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Electron dependencies:</p>
<ul>
<li class=""><code>dmg-builder</code> from <code>26.4.0</code> to <code>26.8.1</code></li>
<li class=""><code>electron-builder</code> from <code>26.4.0</code> to <code>26.8.1</code></li>
<li class=""><code>electron-builder-squirrel-windows</code> from <code>26.4.0</code> to <code>26.8.1</code></li>
<li class=""><code>electron-updater</code> from <code>6.7.3</code> to <code>6.8.3</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Ionic dependencies:</p>
<ul>
<li class=""><code>@ionic/core</code> from <code>8.7.16</code> to <code>8.8.1</code></li>
<li class=""><code>@ionic/react</code> from <code>8.7.16</code> to <code>8.8.1</code></li>
<li class=""><code>@ionic/react-router</code> from <code>8.7.16</code> to <code>8.8.1</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated React dependencies:</p>
<ul>
<li class=""><code>react</code> from <code>19.2.3</code> to <code>19.2.4</code></li>
<li class=""><code>react-dom</code> from <code>19.2.3</code> to <code>19.2.4</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated TailwindCSS dependencies:</p>
<ul>
<li class=""><code>tailwindcss</code> from <code>4.1.18</code> to <code>4.2.1</code></li>
<li class=""><code>@tailwindcss/vite</code> from <code>4.1.18</code> to <code>4.2.1</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated Vite dependencies:</p>
<ul>
<li class=""><code>vite-plugin-node-polyfills</code> from <code>0.24.0</code> to <code>0.25.0</code></li>
<li class=""><code>vitest</code> from <code>4.0.16</code> to <code>4.1.0</code></li>
<li class=""><code>@vitejs/plugin-react</code> from <code>5.1.2</code> to <code>5.1.4</code></li>
</ul>
</li>
<li class="">
<p>⬆️ Updated <code>immer</code> from <code>11.1.3</code> to <code>11.1.4</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>cypress</code> development dependency from <code>15.8.2</code> to <code>15.11.0</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>globals</code> development dependency from <code>17.0.0</code> to <code>17.4.0</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>lint-staged</code> development dependency from <code>16.2.7</code> to <code>16.3.3</code></p>
</li>
<li class="">
<p>⬆️ Updated <code>prettier</code> development dependency from <code>3.7.4</code> to <code>3.8.1</code></p>
</li>
<li class="">
<p>⬆️ Updated type dependencies:</p>
<ul>
<li class=""><code>@types/node</code> from <code>25.0.6</code> to <code>25.5.0</code></li>
<li class=""><code>@types/react</code> from <code>19.2.8</code> to <code>19.2.14</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-miscellaneous">🧹 Miscellaneous<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-miscellaneous" class="hash-link" aria-label="Direct link to 🧹 Miscellaneous" title="Direct link to 🧹 Miscellaneous" translate="no">​</a></h3>
<ul>
<li class="">🧑‍💻 Added some internal test pages for development purposes:<!-- -->
<ul>
<li class=""><code>TestPage</code> (<code>/dev/test</code>): Basic test page for development</li>
<li class=""><code>ExEFPage</code> (<code>/dev/exef</code>): Test page for ExEF encryption/decryption</li>
</ul>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.5.0#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-security-1">🔒️ Security<a href="https://excalibur.photonic.dev/changelog/v0.5.0#%EF%B8%8F-security-1" class="hash-link" aria-label="Direct link to 🔒️ Security" title="Direct link to 🔒️ Security" translate="no">​</a></h3>
<ul>
<li class="">🔒️ Path parameters can now be specified as encrypted by adding the <code>X-Encrypted: true</code> header<!-- -->
<ul>
<li class="">The encrypted value must use the ExEF and be URL-safe base64 encoded</li>
</ul>
</li>
<li class="">🔒️ Overridden version minima of <code>pyjwt</code> in <code>pyproject.toml</code> to <code>2.12.0</code> to address CVE-2026-32597 (<a href="https://github.com/PhotonicGluon/Excalibur/issues/15" target="_blank" rel="noopener noreferrer" class="">#15</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-breaking-changes">💥 Breaking Changes<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-breaking-changes" class="hash-link" aria-label="Direct link to 💥 Breaking Changes" title="Direct link to 💥 Breaking Changes" translate="no">​</a></h3>
<ul>
<li class="">💥 Changed CLI options for the <code>start</code> command:<!-- -->
<ul>
<li class=""><code>--host</code> can now be specified with <code>-h</code></li>
<li class=""><code>--port</code> can now be specified with <code>-p</code></li>
<li class=""><code>--encrypt-responses/--no-encrypt-responses</code> no longer has the short forms of <code>-e/-E</code></li>
<li class=""><code>--delay</code> no longer has the short form of <code>-d</code></li>
<li class=""><code>--enable-cors/--disable-cors</code> no longer has the short forms of <code>-c/-C</code></li>
<li class=""><code>--clean-up-logs/--no-clean-up-logs</code> can now be specified with <code>-c/-C</code></li>
</ul>
</li>
<li class="">💥 Removed heartbeat endpoint (<code>/api/well-known/heartbeat</code>)<!-- -->
<ul>
<li class="">We removed this endpoint as its use is no longer necessary. We assume that the client will be able to discern whether they are still connected to the server by observing the responses to the requests made to the server</li>
<li class="">Accordingly, the default template value of the <code>logging.no_log_endpoints</code> configuration option was updated to remove this endpoint</li>
</ul>
</li>
<li class="">💥 Changed the <code>path</code> in upload file endpoint (<code>/api/files/upload/{path:path}</code>) to be the <em>file path</em> instead of the <em>file's containing directory</em>; also removed the <code>name</code> query parameter</li>
<li class="">💥 Renamed <code>/api/files/list/{path}</code>'s <code>with_exef_header</code> query parameter to <code>include_exef_size</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-new-features-1">✨ New Features<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-new-features-1" class="hash-link" aria-label="Direct link to ✨ New Features" title="Direct link to ✨ New Features" translate="no">​</a></h3>
<ul>
<li class="">✨ Added new file searching endpoint at <code>/api/files/search</code></li>
<li class="">🔧 Added a crypto key strength configuration field<!-- -->
<ul>
<li class="">The default key strength is 128 bits; you can change it to 192 or 256 bits as needed</li>
</ul>
</li>
<li class="">✨ Added a new CLI option to the <code>start</code> command to enable or disable Proof of Possession (PoP) checking<!-- -->
<ul>
<li class="">It is recommended to only disable PoP checking when debugging</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-changes-1">🔄 Changes<a href="https://excalibur.photonic.dev/changelog/v0.5.0#-changes-1" class="hash-link" aria-label="Direct link to 🔄 Changes" title="Direct link to 🔄 Changes" translate="no">​</a></h3>
<ul>
<li class="">🔧 Added the <code>/api/docs</code> endpoint as a default endpoint that is ignored in the <code>logging.no_log_endpoints</code> field</li>
<li class="">🗃️ Updated DuckDB from 1.3 Ossivalis to 1.4 Andium (LTS)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-code-refactoring-1">♻️ Code Refactoring<a href="https://excalibur.photonic.dev/changelog/v0.5.0#%EF%B8%8F-code-refactoring-1" class="hash-link" aria-label="Direct link to ♻️ Code Refactoring" title="Direct link to ♻️ Code Refactoring" translate="no">​</a></h3>
<ul>
<li class="">♻️ Replace references to <code>os.getenv</code> and <code>os.environ</code> with calls to functions in <code>env.py</code> for easier management and less repeated code</li>
<li class="">♻️ Renamed internal use of <code>EXCALIBUR_SERVER_POP_ENABLED</code> to <code>EXCALIBUR_SERVER_ENABLE_POP</code></li>
<li class="">♻️ Modified style of cryptography middleware logging to make it show up on the logs again</li>
<li class="">🚚 Renamed <code>listings.py</code> in <code>excalibur_server/src/files</code> to <code>utils.py</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-dependencies-1">⬆️ Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.5.0#%EF%B8%8F-dependencies-1" class="hash-link" aria-label="Direct link to ⬆️ Dependencies" title="Direct link to ⬆️ Dependencies" translate="no">​</a></h3>
<ul>
<li class="">⬆️ Updated minimum <code>uv</code> version from <code>0.9.3</code> in <code>pyproject.toml</code> and <code>0.9.18</code> in GitHub actions to <code>0.9.30</code>
<ul>
<li class="">We will be updating the <code>uv</code> version to the <code>0.10.x</code> series in the future</li>
</ul>
</li>
<li class="">⬆️ Updated <code>alembic</code> from <code>1.18.0</code> to <code>1.18.4</code></li>
<li class="">⬆️ Updated <code>duckdb</code> from <code>1.3.2</code> to <code>1.4.4</code></li>
<li class="">⬆️ Updated <code>fastapi</code> from <code>0.128.0</code> to <code>0.135.1</code></li>
<li class="">⬆️ Updated <code>pydantic-settings</code> from <code>2.12.0</code> to <code>2.13.1</code></li>
<li class="">⬆️ Updated <code>pyjwt</code> from <code>2.10.1</code> to <code>2.12.1</code></li>
<li class="">⬆️ Updated <code>sqlalchemy</code> from <code>2.0.45</code> to <code>2.0.48</code></li>
<li class="">⬆️ Updated <code>sqlmodel</code> from <code>0.0.31</code> to <code>0.0.37</code></li>
<li class="">⬆️ Updated <code>tomlkit</code> from <code>0.13.3</code> to <code>0.14.0</code></li>
<li class="">⬆️ Updated <code>typer</code> from <code>0.21.1</code> to <code>0.24.1</code></li>
<li class="">⬆️ Updated <code>uvicorn</code> from <code>0.40.0</code> to <code>0.41.0</code></li>
<li class="">⬆️ Updated <code>ipython</code> development dependency from <code>9.9.0</code> to <code>9.10.0</code></li>
<li class="">⬆️ Updated <code>ruff</code> development dependency from <code>0.14.11</code> to <code>0.15.6</code></li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.4.4]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.4.4</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.4.4"/>
        <updated>2026-01-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is a security release overriding some dependencies' versions' minima.]]></summary>
        <content type="html"><![CDATA[<p>This is a security release overriding some dependencies' versions' minima.</p>
<div class="theme-admonition theme-admonition-note admonition_EZVI alert alert--secondary"><div class="admonitionHeading__mnS"><span class="admonitionIcon_Q7af"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_Zm0l"><p>Version 0.4.3 was skipped due to a misconfigured dependency version preventing the release action from completing successfully. Its changes were combined with 0.4.4's changes below.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.4.4#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.4.4#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Override <code>diff</code> version minima to <code>^5.2.2</code> in <code>pnpm-workspace.yaml</code> to address CVE-2026-24001</li>
<li class="">Override <code>lodash</code> and <code>lodash-es</code> version minima to <code>^4.17.23</code> in <code>pnpm-workspace.yaml</code> to address CVE-2025-13465</li>
<li class="">Override <code>tar</code> version minima to <code>^7.5.7</code> in <code>pnpm-workspace.yaml</code> to address CVE-2026-24842 and CVE-2026-23950</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.4.4#-dependencies" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>@capacitor/cli</code> from <code>8.0.0</code> to <code>8.0.2</code></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.4.4#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<p>No significant changes.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.4.2]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.4.2</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.4.2"/>
        <updated>2026-01-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.4.2 removes heartbeat checking on the client to fix an annoying (but technically intended) bug.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.4.2 removes heartbeat checking on the client to fix an annoying (but technically intended) bug.</p>
<p>Note that the server still has the heartbeat endpoint, but is now unused. The removal of this endpoint will come in Excalibur 0.5.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.4.2#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.4.2#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed an issue on mobile where navigating to file selection and taking too long would kick the user back to the login screen<!-- -->
<ul>
<li class="">Related to heartbeat checking</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-removals">🗑️ Removals<a href="https://excalibur.photonic.dev/changelog/v0.4.2#%EF%B8%8F-removals" class="hash-link" aria-label="Direct link to 🗑️ Removals" title="Direct link to 🗑️ Removals" translate="no">​</a></h3>
<ul>
<li class="">Removed heartbeat checking</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.4.2#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<p>No significant changes.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.4.1]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.4.1</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.4.1"/>
        <updated>2026-01-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.4.1 is a hotfix release fixing two big issues with the app.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.4.1 is a hotfix release fixing two big issues with the app.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.4.1#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.4.1#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed issue where opening list of active jobs would trigger a refresh of the file list</li>
<li class="">Fixed issue where a token refresh would not prompt the client to reconnect to the file listener</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.4.1#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.4.1#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Made <code>/api/auth/token</code> also disconnect the user from the update manager</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes-1">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.4.1#-fixes-1" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed minor issue where attempting to send messages to disconnected sockets would cause the entire file listener to fail</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.4.0]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.4.0</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.4.0"/>
        <updated>2026-01-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.4 mainly brings performance improvements and bugfixes. Minor quality-of-life improvements to the application, such as the count of items uploaded en masse, have also been added.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.4 mainly brings performance improvements and bugfixes. Minor quality-of-life improvements to the application, such as the count of items uploaded en masse, have also been added.</p>
<p>There are no breaking changes made in Excalibur 0.4, but please still follow <a class="" href="https://excalibur.photonic.dev/docs/guide/upgrading/03x-to-04x">the 0.4 upgrade guide</a> to upgrade your Excalibur instance to version 0.4.</p>
<p>Read all about the changes to Excalibur below. Enjoy!</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.4.0#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-additions" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Show skeleton items to directory list when waiting for directory to load</li>
<li class="">Added check for update button to settings page</li>
<li class="">Added a file count to the snackbar when uploading multiple files</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.4.0#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Adjusted directory list height to accommodate floating action button</li>
<li class="">Made <code>refreshContents()</code> call <code>listdir()</code> three times before giving up</li>
<li class="">Changed sorting algorithm for names from lexicographical sorting to "natural" sorting (using <a href="https://github.com/litejs/natural-compare-lite" target="_blank" rel="noopener noreferrer" class=""><code>natural-compare-lite</code></a>)</li>
<li class="">Slightly modified look of the sidebar menu</li>
<li class="">Modified folder navigation to add a small delay before navigating to allow UI updates and show tap animations</li>
<li class="">Modified check for update dialog slightly:<!-- -->
<ul>
<li class="">Title of dialog changed</li>
<li class="">Link to changelog page changed to Excalibur documentation website</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-performance-improvements">🚄 Performance Improvements<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-performance-improvements" class="hash-link" aria-label="Direct link to 🚄 Performance Improvements" title="Direct link to 🚄 Performance Improvements" translate="no">​</a></h3>
<ul>
<li class="">Use new server info endpoint to reduce requests made to the server during server selection</li>
<li class="">Use maximum upload size returned in server info query to check file sizes before upload (instead of querying server for each file)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed issue where the file list does not update when the current directory changes<!-- -->
<ul>
<li class="">This occurred especially when the server connection was unstable</li>
</ul>
</li>
<li class="">Fixed an issue where, when clicking into a subfolder, the current folder's file list would be requested in addition to the subfolder's file list</li>
<li class="">Fixed <code>listdir()</code> failing badly when timeout occurs</li>
<li class="">Fixed ugliness involved with Android edge-to-edge rendering</li>
<li class="">Fixed inconsistency of URL path encoding, especially with <code>(</code> and <code>)</code>, by following Python's <code>urllib.quote()</code> and <code>urllib.quotePlus()</code> implementations</li>
<li class="">Fixed incorrect parent directory button row highlighting</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-dependencies" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Updated ESLint dependencies:<!-- -->
<ul>
<li class=""><code>eslint-plugin-cypress</code> from <code>5.2.0</code> to <code>5.2.1</code></li>
<li class=""><code>typescript-eslint</code> from <code>8.51.0</code> to <code>8.52.0</code></li>
</ul>
</li>
<li class="">Updated Electron dependencies:<!-- -->
<ul>
<li class=""><code>electron-builder</code> from <code>26.3.1</code> to <code>26.4.0</code></li>
<li class=""><code>electron-builder-squirrel-windows</code> from <code>26.3.1</code> to <code>26.4.0</code></li>
<li class=""><code>dmg-builder</code> from <code>26.3.1</code> to <code>26.4.0</code></li>
<li class=""><code>electron-updater</code> from <code>6.6.2</code> to <code>6.7.3</code></li>
</ul>
</li>
<li class="">Updated <code>@trivago/prettier-plugin-sort-imports</code> from <code>6.0.1</code> to <code>6.0.2</code></li>
<li class="">Updated <code>cypress</code> from <code>15.8.1</code> to <code>15.8.2</code></li>
<li class="">Updated <code>vite</code> from <code>7.3.0</code> to <code>7.3.1</code></li>
<li class="">Updated various type dependencies:<!-- -->
<ul>
<li class=""><code>@types/node</code> from <code>25.0.3</code> to <code>25.0.6</code></li>
<li class=""><code>@types/react</code> from <code>19.2.7</code> to <code>19.2.8</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.4.0#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Added more tests:<!-- -->
<ul>
<li class="">Added <code>validateURL()</code> tests to <code>url.test.ts</code></li>
</ul>
</li>
<li class="">Fixed redundant <code>console.log()</code>/<code>console.debug()</code> calls</li>
<li class="">Restructured workspace</li>
<li class="">Split tests in <code>files.cy.ts</code> into multiple files for better organization and maintainability</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.4.0#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions-1">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-additions-1" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Added a new server info endpoint at <code>/api/well-known/info</code> which returns the following information:<!-- -->
<ul>
<li class=""><code>version</code>: SemVer of the server</li>
<li class=""><code>max_upload_size</code>: Maximum allowed file size in bytes</li>
<li class=""><code>time</code>: ISO 8601 string of the server's current time</li>
</ul>
</li>
<li class="">Added persistence to communications via a file-based communications cache, so that when the server restarts they will not be disconnected<!-- -->
<ul>
<li class="">This unfortunately does not apply to WebSocket sessions</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes-1">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-fixes-1" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed issue with file listener communications failing to be encrypted/decrypted correctly, causing issues with folder updates</li>
<li class="">Fixed incorrect check for configuration values that needed to be positive<!-- -->
<ul>
<li class="">The check used to check if they were negative only. Now it checks if they are less than or equal to 0</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-removals">🗑️ Removals<a href="https://excalibur.photonic.dev/changelog/v0.4.0#%EF%B8%8F-removals" class="hash-link" aria-label="Direct link to 🗑️ Removals" title="Direct link to 🗑️ Removals" translate="no">​</a></h3>
<ul>
<li class="">Removed <code>/api/files/check/size</code> endpoint in favour of the new server info endpoint</li>
<li class="">Removed <code>/api/well-known/clock</code> endpoint in favour of the new server info endpoint</li>
<li class="">Removed debug endpoint for listening to file updates (i.e., <code>/api/files/listen/debug</code> was removed)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies-1">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.4.0#-dependencies-1" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Removed <code>cachetools</code> dependency</li>
<li class="">Updated <code>alembic</code> from <code>1.17.2</code> to <code>1.18.0</code></li>
<li class="">Updated <code>typer</code> from <code>0.21.0</code> to <code>0.21.1</code></li>
<li class="">Updated <code>websockets</code> from <code>15.0.1</code> to <code>16.0</code></li>
<li class="">Updated <code>ruff</code> development dependency from <code>0.14.10</code> to <code>0.14.11</code></li>
<li class="">Added <code>pytest-timeout</code> development dependency as a last-resort method to catch any tests that are hanging</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal-1">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.4.0#%EF%B8%8F-internal-1" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Created own implementation of <code>TTLCache</code> to replace <code>cachetools</code> dependency</li>
<li class="">Added new internal <code>_add_new_field()</code> to config updater CLI to promote code reuse</li>
<li class="">Removed old <code>static</code> folder</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.3.1]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.3.1</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.3.1"/>
        <updated>2026-01-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.3.1 brings about several bugfixes to the project.]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.3.1 brings about several bugfixes to the project.</p>
<p>One pressing issue is with the rate limiting of file uploads. This is caused by the default token capacity and refill limit being too small for mass file uploads. As a temporary fix, modify your server's <code>config.toml</code> file as follows:</p>
<div class="language-diff codeBlockContainer__BMQ theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_MBKj"><pre tabindex="0" class="prism-code language-diff codeBlock_iMWe thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_kHyQ"><div class="token-line" style="color:#F8F8F2"><span class="token plain">[server.rate_limit]</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"># The capacity of the rate limiter (e.g., number of allowed bursts)</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">capacity = 20</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">capacity = 250</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)"></span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"># The refill rate of the rate limiter, in tokens per second</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:rgb(255, 85, 85)">-</span><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)">refill_rate = 1</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token deleted-sign deleted line" style="color:rgb(255, 85, 85)"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(80, 250, 123)">+</span><span class="token inserted-sign inserted line" style="color:rgb(80, 250, 123)">refill_rate = 25</span><br></div></code></pre></div></div>
<p>This will increase the rate limit for requests made to the server.</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.3.1#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.3.1#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>qs</code> transitive dependency from <code>6.14.0</code> to <code>6.14.1</code> to address CVE-2025-15284</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.3.1#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed drag-and-drop overlay to be blurred instead of darkened</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.3.1#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed an issue with uploading a folder</li>
<li class="">Fixed an issue where uploading a folder within a subfolder fails</li>
<li class="">Fixed flickering drag and drop overlay on Electron app on Windows</li>
<li class="">Fixed an issue where updating jobs on the file explorer would constantly send requests for the current file list</li>
<li class="">Fixed janky file refresh behaviour (especially when pulling down to refresh)</li>
<li class="">Fixed an issue where attempting to create a new user when the server is unreachable would cause the application to hang</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.3.1#-dependencies" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">
<p>Updated Ionic dependencies:</p>
<ul>
<li class=""><code>@ionic/core</code> from <code>8.7.15</code> to <code>8.17.6</code></li>
<li class=""><code>@ionic/react</code> from <code>8.7.15</code> to <code>8.17.6</code></li>
<li class=""><code>@ionic/react-router</code> from <code>8.7.15</code> to <code>8.17.6</code></li>
</ul>
</li>
<li class="">
<p>Updated <code>@trivago/prettier-plugin-sort-imports</code> development dependency from <code>6.0.0</code> to <code>6.0.1</code></p>
</li>
<li class="">
<p>Updated <code>immer</code> from <code>11.1.0</code> to <code>11.1.3</code></p>
</li>
<li class="">
<p>Updated <code>typescript-eslint</code> development dependency from <code>8.50.1</code> to <code>8.51.0</code></p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.3.1#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Cleaned up internal uses of <code>useDirectory()</code> to use <code>useExplorerContext()</code></li>
<li class="">Cleaned up internal uses of <code>useUploadFile()</code> to use <code>useExplorerContext()</code></li>
<li class="">Created new jobs-related context</li>
<li class="">Moved <code>.vscode</code> folder to app's main directory (<code>app/packages/main</code>)</li>
<li class="">Moved <code>Jobs</code>-related things into <code>components/explorer/jobs</code></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.3.1#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes-1">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.3.1#%EF%B8%8F-changes-1" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed default rate limit to from 20 requests total with 1 refill per second to 250 requests total with 25 refills per second<!-- -->
<ul>
<li class="">This is to allow for more simultaneous uploads at once</li>
<li class="">Running <code>excalibur config update</code> will also update the rate limit in the config file during the config update process</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-performance-improvements">🚄 Performance Improvements<a href="https://excalibur.photonic.dev/changelog/v0.3.1#-performance-improvements" class="hash-link" aria-label="Direct link to 🚄 Performance Improvements" title="Direct link to 🚄 Performance Improvements" translate="no">​</a></h3>
<ul>
<li class="">Made folder updates be queued so that the client does not get spammed with too many folder update notifications</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies-1">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.3.1#-dependencies-1" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>fastapi</code> from <code>0.127.0</code> to <code>0.128.0</code></li>
<li class="">Updated <code>gitpython</code> from <code>3.1.45</code> to <code>3.1.46</code></li>
<li class="">Updated <code>sqlmodel</code> from <code>0.0.29</code> to <code>0.0.31</code></li>
<li class="">Updated <code>typer</code> from <code>0.20.1</code> to <code>0.21.0</code></li>
<li class="">Updated <code>ipython</code> development dependency from <code>9.8.0</code> to <code>9.9.0</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal-1">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.3.1#%EF%B8%8F-internal-1" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Changed rate limit source code to use the <code>HTTP_429_TOO_MANY_REQUESTS</code> constant instead of using the status code directly</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.3.0]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.3.0</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.3.0"/>
        <updated>2025-12-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Excalibur 0.3 brings about huge changes to the project. Here are some of the highlights:]]></summary>
        <content type="html"><![CDATA[<p>Excalibur 0.3 brings about huge changes to the project. Here are some of the highlights:</p>
<ul>
<li class=""><strong>Desktop Support</strong>: Excalibur now runs as a standalone desktop application on Windows, macOS, and Ubuntu!</li>
<li class=""><strong>Multiple Concurrent Jobs</strong>: Support for multiple current uploads/downloads is here! Folder uploads are now also possible.</li>
<li class=""><strong>Auto Token Refreshing</strong>: There's no more token expiry countdown! The authentication token now refreshes automatically.</li>
<li class=""><strong>Item Moving</strong>: You can now move items between folders.<!-- -->
<ul>
<li class="">The user interface for moving items is a bit clunky. This will be worked on in the next update.</li>
</ul>
</li>
</ul>
<p>The Excalibur documentation website was also updated in this release.</p>
<p>Unfortunately, this release does bring about some breaking changes. Please follow <a class="" href="https://excalibur.photonic.dev/docs/guide/upgrading/02x-to-03x">the 0.3 upgrade guide</a> to upgrade your Excalibur instance to version 0.3.</p>
<p>Read all about the changes to Excalibur below. Enjoy!</p>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.3.0#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Updated the Excalibur Encryption Format (ExEF) to version 3, which includes the following changes:<!-- -->
<ul>
<li class="">Reduced size of the <code>Version</code> field from 2 bytes to 1 byte</li>
<li class="">Replaced <code>Key Size</code> field with <code>Cipher ID</code> field for greater flexibility of choice of encryption algorithm, and reduced its size from 2 bytes to 1 byte</li>
<li class="">Added <code>Header MAC</code> field for quick verification of the decryption key (solving the issue of 'decrypting' the entire file before seeing that the AES-GCM tag does not match)</li>
</ul>
</li>
<li class="">Use proof-of-possession token along any heartbeat request that asks for authentication validity</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-additions" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Added auto token refreshing, eliminating the need for a countdown before logout</li>
<li class="">Added support for multiple in-progress upload/download tasks</li>
<li class="">Added ability to cancel in-progress upload/download tasks</li>
<li class="">Added support for full-folder uploads</li>
<li class="">Added ability for the app to listen for any folder changes from the server</li>
<li class="">Added support for Electron desktop builds</li>
<li class="">Added ability to move items between folders<!-- -->
<ul>
<li class="">The current UI for moving items is a bit clunky; this will be improved upon in a future release</li>
</ul>
</li>
<li class="">Added support for drag-and-drop uploads for non-mobile builds</li>
<li class="">Created a new user sign up page<!-- -->
<ul>
<li class="">New users will now need to provide the Account Creation Key (ACK) mnemonic to create an account</li>
<li class="">In particular, we now use <a href="https://github.com/bitcoin/bips/blob/c9a6ca6/bip-0039.mediawiki" target="_blank" rel="noopener noreferrer" class="">BIP39</a> to generate a mnemonic from ACK</li>
</ul>
</li>
<li class="">Added a "parent directory" option to subfolders to allow you to navigate back to the parent directory</li>
<li class="">Made right-clicking bring up the context menu</li>
<li class="">Added a new setting to allow users to change files'/folders' icon types:<!-- -->
<ul>
<li class="">Default: files' icons are outlined, folders' icons are solid</li>
<li class="">Reversed: files' icons are solid, folders' icons are outlined</li>
<li class="">All Outlined: all icons are outlined</li>
<li class="">All Solid: all icons are solid</li>
</ul>
</li>
<li class="">Added automatic checking for updates</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed vault key dialog to show a mnemonic of the vault key instead of the raw hex<!-- -->
<ul>
<li class="">The mnemonic is generated using BIP39</li>
</ul>
</li>
<li class="">Changed the default crypto chunk size from 512 KiB to 256 KiB</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-performance-improvements">🚄 Performance Improvements<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-performance-improvements" class="hash-link" aria-label="Direct link to 🚄 Performance Improvements" title="Direct link to 🚄 Performance Improvements" translate="no">​</a></h3>
<ul>
<li class="">Moved most encryption/decryption operations to crypto workers</li>
<li class="">Refactored code that handles encryption/decryption of requests. This should improve the speed and responsiveness of the cryptographic operations in the file explorer</li>
<li class="">Use chunked file reads on native systems to improve the efficiency of the app</li>
<li class="">Included local font files in the app to make loading faster</li>
<li class="">Made the server URL check in the server choice page run in parallel, reducing the total time needed to check all possible API URLs</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed an issue where scrolling the file list does not keep the breadcrumbs and file header at the top of the page</li>
<li class="">Fixed an issue where the server version does not refresh even after the server gets updated</li>
<li class="">Fixed a bug where kicking back to the login screen did not log out the user, still displaying the username on the side menu on the login page</li>
<li class="">Fixed several dark/light mode inconsistencies</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-deprecations">⚠️ Deprecations<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-deprecations" class="hash-link" aria-label="Direct link to ⚠️ Deprecations" title="Direct link to ⚠️ Deprecations" translate="no">​</a></h3>
<ul>
<li class="">Deprecated ExEF version 2 in favour of ExEF version 3</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-removals">🗑️ Removals<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-removals" class="hash-link" aria-label="Direct link to 🗑️ Removals" title="Direct link to 🗑️ Removals" translate="no">​</a></h3>
<ul>
<li class="">Removed credits from app; moved credits to the website instead</li>
<li class="">Removed support for PWA-on-server builds</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-dependencies" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Switched to <code>pnpm</code> for dependency management</li>
<li class="">Updated <code>js-yaml</code> transitive dependency version from <code>4.1.0</code> to <code>4.1.1</code> to address CVE-2025-64718</li>
<li class="">Updated <code>glob</code> transitive dependency version from <code>11.0.3</code> to <code>11.1.0</code> to address CVE-2025-64756</li>
<li class="">Updated Capacitor to Version 8. This required updates to a few dependencies:<!-- -->
<ul>
<li class=""><code>@capacitor/android</code> from <code>7.4.3</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/app</code> from <code>7.1.0</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/core</code> from <code>7.4.3</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/cli</code> from <code>7.4.3</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/filesystem</code> from <code>7.1.4</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/keyboard</code> from <code>7.0.3</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/preferences</code> from <code>7.0.2</code> to <code>8.0.0</code></li>
<li class=""><code>@capacitor/privacy-screen</code> from <code>1.1.1</code> to <code>2.0.0</code></li>
<li class=""><code>@capacitor/screen-orientation</code> from <code>7.0.2</code> to <code>8.0.0</code></li>
<li class=""><code>@capawesome/capacitor-file-picker</code> from <code>7.2.0</code> to <code>8.0.0</code></li>
</ul>
</li>
<li class="">Updated android dependencies:<!-- -->
<ul>
<li class="">AGP from <code>8.13.0</code> to <code>8.13.2</code></li>
<li class="">AndroidX activity from <code>1.9.2</code> to <code>1.11.0</code></li>
<li class="">AndroidX core from <code>1.15.0</code> to <code>1.17.0</code></li>
<li class="">AndroidX Espresso Core from <code>3.6.1</code> to <code>3.7.0</code></li>
<li class="">AndroidX fragment from <code>1.8.4</code> to <code>1.8.9</code></li>
<li class="">AndroidX JUnit from <code>1.2.1</code> to <code>1.3.0</code></li>
<li class="">AndroidX WebKit from <code>1.12.1</code> to <code>1.14.0</code></li>
<li class="">Core splash screen from <code>1.0.1</code> to <code>1.2.0</code></li>
<li class="">Cordova Android from <code>10.1.1</code> to <code>14.0.1</code></li>
</ul>
</li>
<li class="">Updated Cypress from <code>15.3.0</code> to <code>15.8.1</code></li>
<li class="">Updated ESLint dependencies:<!-- -->
<ul>
<li class=""><code>eslint</code> from <code>9.37.0</code> to <code>9.39.2</code></li>
<li class=""><code>@eslint/js</code> from <code>9.37.0</code> to <code>9.39.2</code></li>
<li class=""><code>eslint-plugin-react-hooks</code> from <code>7.0.0</code> to <code>7.0.1</code></li>
<li class=""><code>eslint-plugin-react-refresh</code> from <code>0.4.23</code> to <code>0.4.26</code></li>
<li class=""><code>typescript-eslint</code> from <code>8.46.1</code> to <code>8.50.1</code></li>
</ul>
</li>
<li class="">Updated Ionic dependencies:<!-- -->
<ul>
<li class=""><code>@ionic/core</code> from <code>8.7.5</code> to <code>8.7.15</code></li>
<li class=""><code>@ionic/react</code> from <code>8.7.5</code> to <code>8.7.15</code></li>
<li class=""><code>@ionic/react-router</code> from <code>8.7.5</code> to <code>8.7.15</code></li>
</ul>
</li>
<li class="">Updated Prettier dependencies:<!-- -->
<ul>
<li class=""><code>prettier</code> from <code>3.6.2</code> to <code>3.7.4</code></li>
<li class=""><code>prettier-plugin-tailwindcss</code> from <code>0.6.14</code> to <code>0.7.2</code></li>
<li class=""><code>@trivago/prettier-plugin-sort-imports</code> from <code>5.2.2</code> to <code>6.0.0</code></li>
</ul>
</li>
<li class="">Updated React dependencies:<!-- -->
<ul>
<li class=""><code>react</code> from <code>19.2.0</code> to <code>19.2.3</code></li>
<li class=""><code>react-dom</code> from <code>19.2.0</code> to <code>19.2.3</code></li>
</ul>
</li>
<li class="">Updated TailwindCSS dependencies:<!-- -->
<ul>
<li class=""><code>tailwindcss</code> from <code>4.1.14</code> to <code>4.1.18</code></li>
<li class=""><code>@tailwindcss/vite</code> from <code>4.1.14</code> to <code>4.1.18</code></li>
</ul>
</li>
<li class="">Updated Vite dependencies:<!-- -->
<ul>
<li class=""><code>vite</code> from <code>7.1.11</code> to <code>7.3.0</code></li>
<li class=""><code>@vitejs/plugin-react</code> from <code>5.0.4</code> to <code>5.1.2</code></li>
</ul>
</li>
<li class="">Updated <code>globals</code> from <code>16.4.0</code> to <code>16.5.0</code></li>
<li class="">Updated <code>jsonwebtoken</code> from <code>9.0.3</code> to <code>9.0.4</code></li>
<li class="">Updated <code>lint-staged</code> from <code>16.2.3</code> to <code>16.2.4</code></li>
<li class="">Updated <code>lint-staged</code> from <code>16.2.4</code> to <code>16.2.6</code></li>
<li class="">Updated <code>vitest</code> from <code>3.2.4</code> to <code>4.0.16</code></li>
<li class="">Updated various type dependencies:<!-- -->
<ul>
<li class=""><code>@types/node</code> from <code>24.10.1</code> to <code>25.0.3</code></li>
<li class=""><code>@types/react</code> from <code>19.2.0</code> to <code>19.2.7</code></li>
<li class=""><code>@types/react-dom</code> from <code>19.2.0</code> to <code>19.2.3</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Made end-to-end Cypress tests more reliable</li>
<li class="">Added more Cypress end-to-end tests</li>
<li class="">Added tests for invalid ExEF file handling</li>
<li class="">Bump GitHub actions' actions versions<!-- -->
<ul>
<li class=""><code>actions/checkout</code> from <code>v5</code> to <code>v6</code></li>
<li class=""><code>actions/setup-node</code> from <code>v5</code> to <code>v6</code></li>
<li class=""><code>actions/setup-python</code> from <code>v5</code> to <code>v6</code></li>
<li class=""><code>actions/upload-artifact</code> from <code>v5</code> to <code>v6</code></li>
<li class=""><code>astral-sh/setup-uv</code> from <code>v6.5.0</code> to <code>v7</code> (with corresponding <code>uv</code> version bumped from <code>0.8.17</code> to <code>0.9.18</code>)</li>
</ul>
</li>
<li class="">Fixed incorrect attestation path for the PWA in the <code>release-builds.yml</code> workflow</li>
<li class="">Refactored the structure of the <code>FileExplorer</code> page to be less complex and more maintainable</li>
<li class="">Slightly modified TailwindCSS class specification to be aligned to the "canonical form" and also reduce spurious styling</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.3.0#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security-1">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-security-1" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Updated the Excalibur Encryption Format (ExEF) to version 3, which includes the following changes:<!-- -->
<ul>
<li class="">Reduced size of the <code>Version</code> field from 2 bytes to 1 byte</li>
<li class="">Replaced <code>Key Size</code> field with <code>Cipher ID</code> field for greater flexibility of choice of encryption algorithm, and reduced its size from 2 bytes to 1 byte</li>
<li class="">Added <code>Header MAC</code> field for quick verification of the decryption key (solving the issue of 'decrypting' the entire file before seeing that the AES-GCM tag does not match)</li>
</ul>
</li>
<li class="">Added a requirement for a proof-of-possession (PoP) token to be sent along any heartbeat request that asks for authentication validity</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions-1">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-additions-1" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Added SRP proof-of-possession checking for some WebSocket endpoints</li>
<li class="">Added <code>config</code> subcommands to the CLI:<!-- -->
<ul>
<li class=""><code>config validate</code>: Validates the config file</li>
<li class=""><code>config update</code>: Updates the config file to the latest version</li>
</ul>
</li>
<li class="">Added a WebSocket endpoint (<code>/api/files/listen</code>) that allows clients to listen for directory changes</li>
<li class="">Added an endpoint for token refreshing</li>
<li class="">Added an endpoint that allows moving of items</li>
<li class="">Added an option (<code>--log/--no-log</code> or <code>-l/-L</code>) that enables/disables logging to console</li>
<li class="">Added a new configuration field to automatically delete old logs</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes-1">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-changes-1" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed account creation key to be a 32-byte random key<!-- -->
<ul>
<li class="">Using <code>excalibur user ack</code> will now print the mnemonic for the key instead of the key itself</li>
</ul>
</li>
<li class="">Changed delay parameter in the CLI to accept both an incoming and outgoing delay (both in milliseconds)</li>
<li class="">Changed option that enables/disables logging to file from <code>--logging/--no-logging</code> (<code>-l/-L</code>) to <code>--log-to-file/--no-log-to-file</code> (<code>-f/-F</code>)</li>
<li class="">Changed the WebSocket ping interval from the Uvicorn default 20 seconds to 30 seconds</li>
<li class="">Disabled WebSocket logs</li>
<li class="">Edited some API endpoints' descriptions to be more descriptive</li>
<li class="">Tags that are not relevant to the current running of the server (e.g., non-debug mode, non-PWA) are now hidden</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes-1">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-fixes-1" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed issue with server not correctly handling delay for WebSockets' requests</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-deprecations-1">⚠️ Deprecations<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-deprecations-1" class="hash-link" aria-label="Direct link to ⚠️ Deprecations" title="Direct link to ⚠️ Deprecations" translate="no">​</a></h3>
<ul>
<li class="">Deprecated ExEF version 2 in favour of ExEF version 3</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-removals-1">🗑️ Removals<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-removals-1" class="hash-link" aria-label="Direct link to 🗑️ Removals" title="Direct link to 🗑️ Removals" translate="no">​</a></h3>
<ul>
<li class="">Removed support for PWA server builds</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies-1">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.3.0#-dependencies-1" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>aiofiles</code> from <code>24.1.0</code> to <code>25.1.0</code></li>
<li class="">Updated <code>alembic</code> from <code>1.16.5</code> to <code>1.17.2</code></li>
<li class="">Updated <code>cachetools</code> from <code>6.2.0</code> to <code>6.2.4</code></li>
<li class="">Updated <code>fastapi</code> from <code>0.118.0</code> to <code>0.127.0</code></li>
<li class="">Updated Pydantic dependencies:<!-- -->
<ul>
<li class=""><code>pydantic</code> from <code>2.11.9</code> to <code>2.12.5</code></li>
<li class=""><code>pydantic-core</code> from <code>2.33.2</code> to <code>2.41.5</code></li>
<li class=""><code>pydantic-settings</code> from <code>2.11.0</code> to <code>2.12.0</code></li>
</ul>
</li>
<li class="">Updated <code>sqlalchemy</code> from <code>2.0.43</code> to <code>2.0.45</code></li>
<li class="">Updated <code>sqlmodel</code> from <code>0.0.25</code> to <code>0.0.29</code></li>
<li class="">Updated <code>typer</code> from <code>0.19.2</code> to <code>0.20.1</code></li>
<li class="">Updated <code>uvicorn</code> from <code>0.37.0</code> to <code>0.40.0</code></li>
<li class="">Updated <code>ipython</code> development dependency from <code>9.6.0</code> to <code>9.8.0</code></li>
<li class="">Updated <code>pytest</code> development dependency from <code>8.4.2</code> to <code>9.0.2</code></li>
<li class="">Updated <code>ruff</code> development dependency from <code>0.13.3</code> to <code>0.14.10</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal-1">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.3.0#%EF%B8%8F-internal-1" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Updated minimum supported <code>uv</code> package manager version from <code>0.8.17</code> to <code>0.9.3</code></li>
<li class="">Added an internal debugging endpoint that generates a PoP header</li>
<li class="">Changed internal PoP check flag from <code>EXCALIBUR_SERVER_HMAC_ENABLED</code> to <code>EXCALIBUR_SERVER_POP_ENABLED</code></li>
<li class="">Changed references to RFC7231 status codes to the latest RFC9110 names (see <a href="https://github.com/Kludex/starlette/pull/2939" target="_blank" rel="noopener noreferrer" class="">Starlette #2939</a>):<!-- -->
<ul>
<li class=""><code>HTTP_413_REQUEST_ENTITY_TOO_LARGE</code> to <code>HTTP_413_CONTENT_TOO_LARGE</code></li>
<li class=""><code>HTTP_414_REQUEST_URI_TOO_LONG</code> to <code>HTTP_414_URI_TOO_LONG</code></li>
<li class=""><code>HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE</code> to <code>HTTP_416_RANGE_NOT_SATISFIABLE</code></li>
<li class=""><code>HTTP_422_UNPROCESSABLE_ENTITY</code> to <code>HTTP_422_UNPROCESSABLE_CONTENT</code></li>
</ul>
</li>
<li class="">Edited the <code>excalibur test</code> command to allow running specific tests</li>
<li class="">Refactored the code in the <code>files</code> subdirectory of the API</li>
<li class="">Removed reference to <code>license-files</code> in <code>pyproject.toml</code></li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.2.2]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.2.2</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.2.2"/>
        <updated>2025-11-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.2.2#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.2.2#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>vite</code> from <code>7.1.9</code> to <code>7.1.11</code> to address CVE-2025-62522 (<a href="https://github.com/PhotonicGluon/Excalibur/issues/13" target="_blank" rel="noopener noreferrer" class="">#13</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.2.2#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Increased timeout for fetches from 3 to 5 seconds</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.2.2#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed issues with hanging fetches if the fetch errors out</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.2.2#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<p>No significant changes.</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.2.1]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.2.1</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.2.1"/>
        <updated>2025-10-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.2.1#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.2.1#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Hide "Open Excalibur Folder" button if on PWA/Web instead of disabling it</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-performance-improvements">🚄 Performance Improvements<a href="https://excalibur.photonic.dev/changelog/v0.2.1#-performance-improvements" class="hash-link" aria-label="Direct link to 🚄 Performance Improvements" title="Direct link to 🚄 Performance Improvements" translate="no">​</a></h3>
<ul>
<li class="">Reduced API check timeout from 5 seconds to 3 seconds</li>
<li class="">Removed an instance of a redundant server API compatibility check</li>
<li class="">Resolved <code>react-hooks/set-state-in-effect</code> lint errors. The app should now run slightly faster</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.2.1#-dependencies" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>typescript-eslint</code> from <code>8.45.0</code> to <code>8.46.1</code> and <code>eslint-plugin-react-hooks</code> from <code>6.1.1</code> to <code>7.0.0</code></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.2.1#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.2.1#-additions" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Added a command that prints out the account creation key (<code>excalibur user ack</code>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.2.1#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Changed references to RFC7231 status codes to the latest RFC9110 names (see <a href="https://github.com/Kludex/starlette/pull/2939" target="_blank" rel="noopener noreferrer" class="">Starlette #2939</a>):<!-- -->
<ul>
<li class=""><code>HTTP_413_REQUEST_ENTITY_TOO_LARGE</code> to <code>HTTP_413_CONTENT_TOO_LARGE</code></li>
<li class=""><code>HTTP_414_REQUEST_URI_TOO_LONG</code> to <code>HTTP_414_URI_TOO_LONG</code></li>
<li class=""><code>HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE</code> to <code>HTTP_416_RANGE_NOT_SATISFIABLE</code></li>
<li class=""><code>HTTP_422_UNPROCESSABLE_ENTITY</code> to <code>HTTP_422_UNPROCESSABLE_CONTENT</code></li>
</ul>
</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.2.0]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.2.0</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.2.0"/>
        <updated>2025-10-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.2.0#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Added an account creation key requirement in order to sign up to the server</li>
<li class="">Changed authentication protocol to use a Proof-of-Possession (PoP) in addition to bearer token</li>
<li class="">Bumped <code>vite</code> from <code>7.1.3</code> to <code>7.1.5</code> to address CVE-2025-58751 and CVE-2025-58752 (<a href="https://github.com/PhotonicGluon/Excalibur/issues/8" target="_blank" rel="noopener noreferrer" class="">#8</a>)</li>
<li class="">Bumped <code>tar-fs</code> versions to address CVE-2025-59343 (<a href="https://github.com/PhotonicGluon/Excalibur/issues/12" target="_blank" rel="noopener noreferrer" class="">#12</a>)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-additions" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Added multi-user support</li>
<li class="">Added ability to rename files/folders</li>
<li class="">Added a button to open the Excalibur folder to the file explorer ellipsis menu</li>
<li class="">Added a better enrolment process</li>
<li class="">Added a new welcome page</li>
<li class="">Added autodetection of API server that is running on the same host<!-- -->
<ul>
<li class="">The app will now check for an API server on port <code>52419</code> and, if it finds one, use it as the API server URL</li>
</ul>
</li>
<li class="">Added a popup that shows the vault key when a new user is registered via the app<!-- -->
<ul>
<li class="">Does not show up if the user already exists on the server or is created on the server</li>
</ul>
</li>
<li class="">Added a small warning if the vault key has changed manually by the user</li>
<li class="">Added more details to the slideover menu on the main file explorer page</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.2.0#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed key generation process to include username</li>
<li class="">Changed native file saving behaviour to better deal with errors</li>
<li class="">Made all network fetches have a default timeout of 3 seconds</li>
<li class="">Changed how directory items are deleted<!-- -->
<ul>
<li class="">Instead of swiping to reveal delete option, it is now placed in the ellipsis menu</li>
</ul>
</li>
<li class="">Changed behaviour of server URL entry to check for port <code>52419</code> if no port is specified</li>
<li class="">Changed options for the crypto chunk size (and also made the default value 512 KiB instead of 256 KiB)</li>
<li class="">Updated app credits</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-performance-improvements">🚄 Performance Improvements<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-performance-improvements" class="hash-link" aria-label="Direct link to 🚄 Performance Improvements" title="Direct link to 🚄 Performance Improvements" translate="no">​</a></h3>
<ul>
<li class="">Use manual chunking in Vite build to split imported NodeJS modules into smaller chunks</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed an issue where the keyboard on android devices may cover up the password field when typing</li>
<li class="">Fixed a small inconsistency of how directories with an <code>.exef</code> suffix are displayed<!-- -->
<ul>
<li class="">They will now <em>correctly</em> display the <code>.exef</code> suffix</li>
</ul>
</li>
<li class="">Fixed a misalignment of the heights of the toolbar and slideover menu on the main file explorer page</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-dependencies" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>react</code> and <code>react-dom</code> from <code>19.1.1</code> to <code>19.2.0</code></li>
<li class="">Updated <code>vite</code> from <code>7.1.5</code> to <code>7.1.9</code>, and upgraded <code>@vitejs/plugin-react</code> from <code>5.0.1</code> to <code>5.0.4</code></li>
<li class="">Upgraded CapacitorJS dependencies:<!-- -->
<ul>
<li class=""><code>@capacitor/app</code> from <code>7.0.2</code> to <code>7.1.0</code></li>
<li class=""><code>@capacitor/keyboard</code> from <code>7.0.2</code> to <code>7.0.3</code></li>
</ul>
</li>
<li class="">Upgraded Cypress from <code>14.5.4</code> to <code>15.3.0</code></li>
<li class="">Upgraded <code>@ionic/react</code> and <code>@ionic/react-router</code> from <code>8.7.3</code> to <code>8.7.5</code></li>
<li class="">Upgraded <code>eslint</code> from <code>9.33.0</code> to <code>9.37.0</code>, and upgraded <code>typescript-eslint</code> from <code>8.40.0</code> to <code>8.45.0</code></li>
<li class="">Upgraded <code>globals</code> from <code>16.3.0</code> to <code>16.4.0</code></li>
<li class="">Upgraded <code>tailwindcss</code> and <code>@tailwindcss/vite</code> from <code>4.1.12</code> to <code>4.1.14</code></li>
<li class="">Upgraded <code>typescript</code> from <code>5.9.2</code> to <code>5.9.3</code></li>
<li class="">Upgraded android dependencies:<!-- -->
<ul>
<li class="">AGP from <code>8.12.1</code> to <code>8.13.0</code></li>
<li class="">AndroidX JUnit from <code>1.2.1</code> to <code>1.3.0</code></li>
<li class="">AndroidX Espresso Core from <code>3.6.1</code> to <code>3.7.0</code></li>
</ul>
</li>
<li class="">Upgraded various types dependencies:<!-- -->
<ul>
<li class=""><code>@types/react</code> from <code>19.1.10</code> to <code>19.2.0</code></li>
<li class=""><code>@types/react-dom</code> from <code>19.1.7</code> to <code>19.2.0</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.2.0#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Added more tests</li>
<li class="">Changed the WebSocket format in the authentication protocol to use a more standardized format</li>
<li class="">Disabled privacy screen for android builds if using a prerelease version</li>
<li class="">Split <code>CHANGELOG.md</code> file contents into per-version changes</li>
<li class="">Updated internal scripts</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.2.0#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security-1">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-security-1" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Added an account creation key requirement in order to sign up to the server</li>
<li class="">Added missing encryption in some routes</li>
<li class="">Changed authentication protocol to use a Proof-of-Possession (PoP) in addition to bearer token</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-additions-1">✨ Additions<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-additions-1" class="hash-link" aria-label="Direct link to ✨ Additions" title="Direct link to ✨ Additions" translate="no">​</a></h3>
<ul>
<li class="">Added multi-user support</li>
<li class="">Added server-side configuration file to more easily set up and configure server</li>
<li class="">Added the Excalibur Progressive Web App (PWA) to some server distributables</li>
<li class="">Added an endpoint that renames a file or folder</li>
<li class="">Added logging to files (i.e., server logs will now be written to files)</li>
<li class="">Added a banner that appears upon running CLI commands</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes-1">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.2.0#%EF%B8%8F-changes-1" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed the WebSocket format in the authentication protocol to use a more standardized format</li>
<li class="">Changed behaviour for invalid path of directory name in the directory creation endpoint<!-- -->
<ul>
<li class="">It now returns <code>406 Not Acceptable</code> instead of <code>400 Bad Request</code> if the directory name is invalid</li>
</ul>
</li>
<li class="">Changed default host when starting the server to <code>localhost</code> (was <code>0.0.0.0</code>)</li>
<li class="">Changed default port from <code>8888</code> to <code>52419</code></li>
<li class="">Made the warnings for 'non-standard' flags (e.g., debug mode) nicer</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes-1">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-fixes-1" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed a server-side issue where the encryption/decryption of chunked requests would fail on the app with a message saying "footer must be 16 bytes (got 32 bytes)"</li>
<li class="">Fixed an issue where an equivalent endpoint was exposed at a path without the <code>/api</code> prefix</li>
<li class="">Fixed <code>well-known</code> endpoint names</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-dependencies-1">📦 Dependencies<a href="https://excalibur.photonic.dev/changelog/v0.2.0#-dependencies-1" class="hash-link" aria-label="Direct link to 📦 Dependencies" title="Direct link to 📦 Dependencies" translate="no">​</a></h3>
<ul>
<li class="">Upgraded <code>cachetools</code> from <code>6.1.0</code> to <code>6.2.0</code></li>
<li class="">Upgraded <code>fastapi</code> from <code>0.116.1</code> to <code>0.118.0</code></li>
<li class="">Upgraded <code>ipython</code> in dev dependencies from <code>9.4.0</code> to <code>9.6.0</code></li>
<li class="">Upgraded <code>pydantic</code> from <code>2.11.7</code> to <code>2.11.9</code>, and upgraded <code>pydantic-settings</code> from <code>2.10.1</code> to <code>2.11.0</code></li>
<li class="">Upgraded <code>ruff</code> in dev dependencies from <code>0.12.9</code> to <code>0.13.3</code></li>
<li class="">Upgraded <code>sqlmodel</code> from <code>0.0.24</code> to <code>0.0.25</code></li>
<li class="">Upgraded <code>typer</code> from <code>0.16.1</code> to <code>0.19.2</code></li>
<li class="">Upgraded <code>uvicorn</code> from <code>0.35.0</code> to <code>0.37.0</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal-1">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.2.0#%EF%B8%8F-internal-1" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Added a new <code>excalibur build</code> command for generating builds</li>
<li class="">Added a lot more tests</li>
<li class="">Added a debug endpoint for generating authentication tokens</li>
<li class="">Sped up the <code>test_token_bucket.py</code> tests by mocking the time instead of using <code>time.sleep</code></li>
<li class="">Split <code>CHANGELOG.md</code> file contents into per-version changes</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.1.4]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.1.4</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.1.4"/>
        <updated>2025-09-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.1.4#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.1.4#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Fixed missing encryption in some routes</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-performance-improvements">🚄 Performance Improvements<a href="https://excalibur.photonic.dev/changelog/v0.1.4#-performance-improvements" class="hash-link" aria-label="Direct link to 🚄 Performance Improvements" title="Direct link to 🚄 Performance Improvements" translate="no">​</a></h3>
<ul>
<li class="">Added a Comlink worker to encrypt files</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.1.4#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed an issue where the user would not be kicked out of the session when the token expires (and the countdown shows negative time)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.1.4#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.1.4#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed parameters for the file upload endpoint to accept file data in the body instead of as a <code>multipart/form-data</code> request</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.1.3]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.1.3</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.1.3"/>
        <updated>2025-08-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.1.3#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-security">🔒 Security<a href="https://excalibur.photonic.dev/changelog/v0.1.3#-security" class="hash-link" aria-label="Direct link to 🔒 Security" title="Direct link to 🔒 Security" translate="no">​</a></h3>
<ul>
<li class="">Updated transient <code>sha.js</code> dependency from <code>2.4.11</code> to <code>2.4.12</code> to address CVE-2025-9288</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.1.3#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed minimum supported Android version from 6.0 to 13.0</li>
<li class="">Changed privacy screen and screen orientation handling to be more platform-dependent (instead of relying on checking if the capability is available)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixes">🔧 Fixes<a href="https://excalibur.photonic.dev/changelog/v0.1.3#-fixes" class="hash-link" aria-label="Direct link to 🔧 Fixes" title="Direct link to 🔧 Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed issue with the app GUI going out of bounds</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.1.3#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Changed Vite config to ignore android directory (which helps to reduce spurious page reloads)</li>
<li class="">Updated dependencies' versions</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.1.3#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal-1">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.1.3#%EF%B8%8F-internal-1" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Updated <code>uv.lock</code>'s dependencies' versions</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.1.2]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.1.2</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.1.2"/>
        <updated>2025-08-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.1.2#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-changes">✏️ Changes<a href="https://excalibur.photonic.dev/changelog/v0.1.2#%EF%B8%8F-changes" class="hash-link" aria-label="Direct link to ✏️ Changes" title="Direct link to ✏️ Changes" translate="no">​</a></h3>
<ul>
<li class="">Changed privacy screen of app to be pure black (originally is the Excalibur splash screen)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.1.2#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="️-internal">⚙️ Internal<a href="https://excalibur.photonic.dev/changelog/v0.1.2#%EF%B8%8F-internal" class="hash-link" aria-label="Direct link to ⚙️ Internal" title="Direct link to ⚙️ Internal" translate="no">​</a></h3>
<ul>
<li class="">Added <code>--disable-cors</code> option for debugging</li>
<li class="">Changed <code>typer</code> minimum version to <code>0.16.1</code></li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[0.1.1]]></title>
        <id>https://excalibur.photonic.dev/changelog/v0.1.1</id>
        <link href="https://excalibur.photonic.dev/changelog/v0.1.1"/>
        <updated>2025-08-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[App]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="app">App<a href="https://excalibur.photonic.dev/changelog/v0.1.1#app" class="hash-link" aria-label="Direct link to App" title="Direct link to App" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_QaNT" id="-fixed">🔧 Fixed<a href="https://excalibur.photonic.dev/changelog/v0.1.1#-fixed" class="hash-link" aria-label="Direct link to 🔧 Fixed" title="Direct link to 🔧 Fixed" translate="no">​</a></h3>
<ul>
<li class="">Fixed a bug where sometimes, after full decryption, downloading file for the first time reloads the page, and attempting to download same file will give "must start with ExEF header" error</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_QaNT" id="server">Server<a href="https://excalibur.photonic.dev/changelog/v0.1.1#server" class="hash-link" aria-label="Direct link to Server" title="Direct link to Server" translate="no">​</a></h2>
<p>No significant changes.</p>]]></content>
    </entry>
</feed>