<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[versionsUrl is not persisted when updating an existing custom app to a community app]]></title><description><![CDATA[<ul>
<li>Cloudron 9.2.0, CLI 8.2.6</li>
<li>Update succeeds using versionsUrl</li>
<li>Package and backup complete normally</li>
<li>Subsequent app inspection still returns versionsUrl: ""</li>
<li>Source trace:</li>
<li>routes/apps.js resolves and passes versionsUrl</li>
<li>apps.js copies it into updateConfig</li>
<li>apptask.js persists appStoreId but omits versionsUrl</li>
<li>Expected fix: persist updateConfig.versionsUrl alongside appStoreId</li>
<li>No private domain, app ID, or credentials</li>
</ul>
<p dir="auto">I attempted to convert an existing custom/dev app into a community app by updating it through a valid <code>CloudronVersions.json</code> URL.</p>
<h2>Reproduction</h2>
<ol>
<li>Start with an installed custom app where:
<ul>
<li><code>appStoreId</code> is empty</li>
<li><code>versionsUrl</code> is empty</li>
</ul>
</li>
<li>Update it through the API using:</li>
</ol>
<pre><code class="language-json">{
  "versionsUrl": "&lt;PUBLIC_VERSIONS_URL&gt;@&lt;VERSION&gt;",
  "skipBackup": false
}
</code></pre>
<ol start="3">
<li>The catalog resolves successfully, the backup completes, the new image is downloaded, and the update task finishes successfully.</li>
<li>Fetch the app again through GET /api/v1/apps/&lt;APP_ID&gt;.<br />
Actual result<br />
The package is updated successfully, but the app still reports:<br />
{<br />
"versionsUrl": ""<br />
}<br />
It therefore remains classified as a custom app and cannot receive automatic community-catalog updates.<br />
Expected result<br />
After a successful update using versionsUrl, the app should persist the base catalog URL in apps.versionsUrl, matching the behaviour of an app initially installed through a community catalog.<br />
Source trace<br />
In Cloudron 9.2.0:</li>
</ol>
<ul>
<li>routes/apps.js resolves the catalog and assigns the base URL to data.versionsUrl.</li>
<li>apps.js copies data.versionsUrl into updateConfig.versionsUrl.</li>
<li>apptask.js persists updateConfig.appStoreId, but does not persist updateConfig.versionsUrl.<br />
Around the final configuration update in apptask.js:<br />
if ('memoryLimit' in updateConfig) values.memoryLimit = updateConfig.memoryLimit;<br />
if ('appStoreId' in updateConfig) values.appStoreId = updateConfig.appStoreId;<br />
+if ('versionsUrl' in updateConfig) values.versionsUrl = updateConfig.versionsUrl;<br />
A regression test could:</li>
</ul>
<ol>
<li>Install an app as a custom app.</li>
<li>Update it using a community versionsUrl.</li>
<li>Wait for the update task to complete.</li>
<li>Assert that the base versionsUrl is persisted and check_update uses that catalog.<br />
As confirmation of the diagnosis, conditionally setting only the missing versionsUrl field made the app’s normal update check use the community catalog successfully.</li>
</ol>
<p dir="auto">#bugs #apps #updates #community-apps</p>
]]></description><link>https://forum.cloudron.io/topic/15730/versionsurl-is-not-persisted-when-updating-an-existing-custom-app-to-a-community-app</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 16:44:18 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/15730.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Jul 2026 16:58:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to versionsUrl is not persisted when updating an existing custom app to a community app on Tue, 28 Jul 2026 08:15:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/marcusquinn" aria-label="Profile: marcusquinn">@<bdi>marcusquinn</bdi></a> thanks for the great report! Fixed - <a href="https://git.cloudron.io/platform/box/-/commit/caf0cc39bec12e0085e52102f7de9b9a6a68394b" target="_blank" rel="noopener noreferrer nofollow ugc">https://git.cloudron.io/platform/box/-/commit/caf0cc39bec12e0085e52102f7de9b9a6a68394b</a></p>
]]></description><link>https://forum.cloudron.io/post/127287</link><guid isPermaLink="true">https://forum.cloudron.io/post/127287</guid><dc:creator><![CDATA[girish]]></dc:creator><pubDate>Tue, 28 Jul 2026 08:15:06 GMT</pubDate></item></channel></rss>