<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://volt.build/changelog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://volt.build/" rel="alternate" type="text/html" /><updated>2026-10-08T15:48:19-04:00</updated><id>https://volt.build/changelog/feed.xml</id><title type="html">VoltBuilder | Changelog</title><subtitle>App Builds Made Simple!</subtitle><entry><title type="html">September 2026</title><link href="https://volt.build/changelog/2026-10-02-september-2026/" rel="alternate" type="text/html" title="September 2026" /><published>2026-10-02T00:00:00-04:00</published><updated>2026-10-02T00:00:00-04:00</updated><id>https://volt.build/changelog/september-2026</id><content type="html" xml:base="https://volt.build/changelog/2026-10-02-september-2026/"><![CDATA[<p>This is the first entry in our changelog. From here on, updates land here as they
ship. This one covers roughly the last month.</p>

<p>Most of it went into the upload and sign-in paths. We added front-end error
monitoring in September, and it surfaced a long tail of problems nobody had
reported to us — a browser silently blocking storage, a session expiring
mid-upload, a large project timing out on a slow connection. Each one is rare on
its own. Together they were enough to cost someone their first build. Most of
what follows came out of working through that list.</p>

<h2 id="android-build-agent-beta">Android build agent beta</h2>

<p>The Android build image has been rebuilt from the ground up. It is now built
directly on Ubuntu 26.04 with the toolchain versions pinned explicitly, replacing
an image layered on top of a third-party Android SDK base.</p>

<ul>
  <li>JDK 8, 11, 17 and 21, selected automatically for your <code class="language-plaintext highlighter-rouge">cordova-android</code> version</li>
  <li>Gradle 8.14.5 on the path, with 6.5, 7.1.1, 7.4.2, 7.6, 8.7, 8.13, 8.14.2 and
8.14.3 also cached, so whichever version your project’s Gradle wrapper asks
for is already on the machine</li>
  <li>Kotlin 2.4.20</li>
  <li>Node 24, npm 12.2.0, Cordova 13</li>
  <li>Android build-tools 30.0.3 through 36.1.0; platforms android-29 through android-36.1</li>
  <li>Supports <code class="language-plaintext highlighter-rouge">cordova-android</code> 9 through 15, and Capacitor</li>
</ul>

<p>The image is built by running a real build for every supported
<code class="language-plaintext highlighter-rouge">cordova-android</code> version and for Capacitor, so the npm and Gradle caches are
already warm when your build starts.</p>

<p>Three things worth knowing:</p>

<p><strong><code class="language-plaintext highlighter-rouge">git</code> is now installed in the build image.</strong> Plugins referenced by a git URL
should install correctly.</p>

<p><strong>npm’s git and install-script permissions have been restored.</strong> npm 12 tightened
its defaults around git dependencies and packages that run install scripts, which
broke some plugins. The image restores the previous behaviour.</p>

<p><strong>A note on <code class="language-plaintext highlighter-rouge">cordova-android</code> 9.</strong> Apache’s last 9.x release was 9.1.0, in April
2021, and it resolves its dependencies through JCenter/Bintray, which has since
shut down — so a stock cordova-android 9 project no longer builds anywhere. We
maintain our own engine with that repaired, and it is the only way to build a
9.x project on VoltBuilder. It has to be requested explicitly in <code class="language-plaintext highlighter-rouge">config.xml</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;engine name="android" spec="https://github.com/voltbuilder/cordova-android#9.1.1" /&gt;
</code></pre></div></div>

<p>A plain <code class="language-plaintext highlighter-rouge">spec="9.0.0"</code> is rejected; the minimum numeric engine is 10.0.0. We
keep 9.x working rather than developing it, so if you are still on it, moving
up is worth the time.</p>

<p>This is a beta. To take part, email <a href="mailto:support@volt.build">support@volt.build</a>
to request access, then select the beta agent on the
<a href="https://volt.build/upload/">upload page</a>.</p>

<h2 id="uploads">Uploads</h2>

<p><strong>Fixed</strong></p>

<ul>
  <li>Submitting with no file selected, or with a file that is not a zip, now fails
immediately with a clear message instead of starting a build that cannot succeed.</li>
  <li>Raised upload timeouts. Large projects on slower connections were timing out
before the transfer finished.</li>
  <li>An upload interrupted part-way through now returns a clear incomplete-upload
error rather than a server error.</li>
  <li>Fixed a server error when uploading from an account that had never run a build.</li>
  <li>Fixed an upload failure when the build ID was missing from the page, and made
status polling continue correctly afterwards.</li>
  <li>Authorization problems during upload — an expired subscription, or a plan that
does not allow the requested build — now report what actually went wrong.</li>
</ul>

<p><strong>Added</strong></p>

<ul>
  <li>Upload progress tracking, so a slow upload looks slow rather than stalled.</li>
  <li>When an upload fails because of a problem on our end, you now get a retry option
and a direct route to support.</li>
  <li>Every upload carries a correlation ID. If you report a failed upload we can find
that exact attempt in our logs rather than asking you to reproduce it.</li>
</ul>

<h2 id="signing-in">Signing in</h2>

<p><strong>Fixed</strong></p>

<ul>
  <li>An expired session now returns you to the page you were on after signing back
in, instead of dropping you at the start.</li>
  <li>Browsers that block storage access are now detected and reported clearly rather
than failing silently.</li>
  <li>When the authentication service is slow or unreachable, the upload page degrades
gracefully instead of breaking.</li>
  <li>Fixed several JavaScript errors that could leave a page unusable after a failed
sign-in.</li>
</ul>

<h2 id="builds">Builds</h2>

<p><strong>Fixed</strong></p>

<ul>
  <li>Android builds read the application ID from <code class="language-plaintext highlighter-rouge">android-packageName</code> again. This
had regressed at some point. When <code class="language-plaintext highlighter-rouge">android-packageName</code> is present it takes
precedence.</li>
</ul>

<p><strong>Added</strong></p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">iosDevAppleId</code> and <code class="language-plaintext highlighter-rouge">iosDistAppleId</code> let you specify which Apple ID is used for
App Store Connect validation and upload. This matters if your developer account
is associated with more than one Apple ID.</li>
</ul>

<h2 id="api">API</h2>

<p><strong>Added</strong></p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">/v1/app</code> uploads now return stable, documented reasons when a submission is
rejected, instead of a bare status code. See the
<a href="https://volt.build/docs/api-spec.html">API specification</a>.</li>
  <li>An <code class="language-plaintext highlighter-rouge">API-Version</code> header on every response, plus a documented versioning and
release policy.</li>
  <li>Windows platform support is now documented.</li>
</ul>

<p><strong>Fixed</strong></p>

<ul>
  <li>An expired subscription now returns a clear <code class="language-plaintext highlighter-rouge">EXPIRED_SUBSCRIPTION</code> reason up
front, rather than accepting the upload and rejecting it afterwards.</li>
</ul>

<h2 id="behind-the-scenes">Behind the scenes</h2>

<ul>
  <li>Added front-end error monitoring across the site, which is where most of the
fixes above came from.</li>
  <li>Routine dependency and security updates across all services.</li>
</ul>

<h2 id="next">Next</h2>

<p>iOS builds are the current focus, along with further usability and reliability
work, and something to help you work out which plugins will work with your
project before you build.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[This is the first entry in our changelog. From here on, updates land here as they ship. This one covers roughly the last month.]]></summary></entry></feed>