<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Mountit changelog</title>
  <subtitle>Every release, security entries tagged. Development milestones until the first public release ships.</subtitle>
  <id>https://mountit.app/changelog.xml</id>
  <link rel="self" href="https://mountit.app/changelog.xml"/>
  <link rel="alternate" href="https://mountit.app/changelog"/>
  <updated>2026-09-03T00:00:00Z</updated>
  <author><name>Mountit</name></author>
  <entry>
    <id>https://mountit.app/changelog#1.0.0-dev.4</id>
    <title>Mountit 1.0.0-dev.4</title>
    <link rel="alternate" href="https://mountit.app/changelog#1.0.0-dev.4"/>
    <updated>2026-09-03T00:00:00Z</updated>
    <summary>The picker reaches 38: put.io and Premiumize.me become selectable. Eleven conformance lanes run against real servers, and the first sixty-two findings are on record.</summary>
    <content type="html">&lt;p&gt;The picker reaches 38: put.io and Premiumize.me become selectable. Eleven conformance lanes run against real servers, and the first sixty-two findings are on record.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — put.io and Premiumize.me added to the service picker — both had complete, tested client crates (mountit-putio, mountit-premiumize) that the picker never listed, the ninth and tenth backends this repository has produced that way. 38 services are now selectable.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — A conformance harness: roughly a hundred and twenty protocol assertions per backend, run against a real server rather than an in-process mock. Eleven lanes are committed today — OpenSSH, Samba, MinIO, moto, rclone’s WebDAV server, wsgidav, pyftpdlib, Azurite, fake-gcs-server, a folder on disk and the in-memory reference backend — each contributing a dated evidence record with the server’s own version string.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — The first conformance run found sixty-two must-failures and thirteen capability contradictions across the ten live lanes — real defects, including an SFTP client that reports &quot;already exists&quot; as a generic I/O error and a WebDAV reader that panics on a server whose listings put a trailing slash on a file. Each service now carries its own conformance status rather than one verified/not-verified word; see /compatibility.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://mountit.app/changelog#1.0.0-dev.3</id>
    <title>Mountit 1.0.0-dev.3</title>
    <link rel="alternate" href="https://mountit.app/changelog#1.0.0-dev.3"/>
    <updated>2026-08-31T00:00:00Z</updated>
    <summary>The picker reaches 36: SMB, MEGA and Box become selectable, and the preset endpoint catalog lands.</summary>
    <content type="html">&lt;p&gt;The picker reaches 36: SMB, MEGA and Box become selectable, and the preset endpoint catalog lands.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — SMB, MEGA and Box added to the service picker — all three had complete, tested client crates that the picker never listed. 36 services are now selectable.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — Preset endpoints in the picker: 19 providers (Amazon S3, Cloudflare R2, Wasabi, Nextcloud, Synology and friends) pre-fill the endpoint, region and addressing style.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — The combine, hasher and compress composition layers: several backends side by side under fixed names; content hashes for backends that cannot answer; seekable per-block compression.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — Multi-round audit fixes across the storage, cache and protocol layers.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — MEGA mounted writable would have been a lie: it is presented read-only until the upload path exists, because a wrong MAC yields uploads that succeed and are later reported corrupt.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://mountit.app/changelog#1.0.0-dev.2</id>
    <title>Mountit 1.0.0-dev.2</title>
    <link rel="alternate" href="https://mountit.app/changelog#1.0.0-dev.2"/>
    <updated>2026-08-30T00:00:00Z</updated>
    <summary>OAuth moves into the Rust core, the composition and block layers land, and five services are live-tested without needing an account.</summary>
    <content type="html">&lt;p&gt;OAuth moves into the Rust core, the composition and block layers land, and five services are live-tested without needing an account.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — OAuth sign-in rewritten in the Rust core: Mountit now carries its own registrations the way rclone and ExpanDrive do, sign-in runs in the system browser, and tokens renew inside the extension that holds the mount. The registrations themselves are still to be created — the machinery is done, the console work is not.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — Client-side encryption (mountit-crypt), byte-compatible with rclone’s crypt and differentially verified against a real rclone binary; union and chunker composition layers; the Box client; the iSCSI adapter onto the block stack.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — Six services added, all confirmed to cross-compile to iOS: Azure Data Lake Gen2, Databricks DBFS, WebHDFS, Alluxio, IPFS MFS and the local folder.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — Every encrypted flush failed against a real backend: a write-only open cannot serve the read-modify-write the cipher needs. Writable opens now take read access too.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — Box corrupted every non-text file — the HTTP layer decoded binary bodies as UTF-8 and substituted replacement characters, at the right length and silently.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — Every iSCSI session failed its first command: the UNIT ATTENTION SCSI raises on a new nexus was not consumed. Handled with one retry, not a loop.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;fix&lt;/strong&gt; — HTTP servers that ignore Range answered partial requests with the whole object, which broke every file open past the first chunk. Reads now fall back to slicing the full object, only after a ranged read is actually refused.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://mountit.app/changelog#1.0.0-dev.1</id>
    <title>Mountit 1.0.0-dev.1</title>
    <link rel="alternate" href="https://mountit.app/changelog#1.0.0-dev.1"/>
    <updated>2026-08-23T00:00:00Z</updated>
    <summary>The repository’s first commit: the Rust core, the SwiftUI app, the cache and the first protocols.</summary>
    <content type="html">&lt;p&gt;The repository’s first commit: the Rust core, the SwiftUI app, the cache and the first protocols.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;feature&lt;/strong&gt; — Initial import — the caching VFS core, the SwiftUI app, and the first reachable services (SFTP, WebDAV, S3, FTP, pCloud, HTTP).&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
</feed>
