Bridge: install from release, copy user files + params after. Bump 03.10.12
Some checks failed
Repo Health / Access control (push) Successful in 2s
Auto-Update SHA Hash / Update SHA-256 Hash in updates.xml (release) Failing after 6s
Repo Health / Release configuration (push) Failing after 4s
Repo Health / Scripts governance (push) Successful in 5s
Repo Health / Repository health (push) Failing after 5s
Some checks failed
Repo Health / Access control (push) Successful in 2s
Auto-Update SHA Hash / Update SHA-256 Hash in updates.xml (release) Failing after 6s
Repo Health / Release configuration (push) Failing after 4s
Repo Health / Scripts governance (push) Successful in 5s
Repo Health / Repository health (push) Failing after 5s
1. Download & install MokoOnyx from Gitea release 2. Copy user files (custom themes, user.css/js) to MokoOnyx 3. Migrate template styles with params Fallback: if download fails, copy user files only (MokoOnyx must be installed manually) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,13 +9,13 @@
|
|||||||
INGROUP: MokoCassiopeia.Documentation
|
INGROUP: MokoCassiopeia.Documentation
|
||||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia
|
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia
|
||||||
FILE: ./README.md
|
FILE: ./README.md
|
||||||
VERSION: 03.10.11
|
VERSION: 03.10.12
|
||||||
BRIEF: Documentation for MokoCassiopeia template
|
BRIEF: Documentation for MokoCassiopeia template
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# MokoCassiopeia → MokoOnyx
|
# MokoCassiopeia → MokoOnyx
|
||||||
|
|
||||||
> **This template is being renamed to MokoOnyx.** Version 03.10.11 is the bridge release that automatically migrates your settings. After updating, MokoOnyx will be your active template and MokoCassiopeia can be safely uninstalled.
|
> **This template is being renamed to MokoOnyx.** Version 03.10.12 is the bridge release that automatically migrates your settings. After updating, MokoOnyx will be your active template and MokoCassiopeia can be safely uninstalled.
|
||||||
|
|
||||||
**A Modern, Lightweight Joomla Template Based on Cassiopeia**
|
**A Modern, Lightweight Joomla Template Based on Cassiopeia**
|
||||||
|
|
||||||
|
|||||||
@@ -46,27 +46,23 @@ class MokoBridgeMigration
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. Download MokoOnyx ZIP
|
// 1. Try downloading and installing MokoOnyx from Gitea release
|
||||||
|
$installed = false;
|
||||||
$zipPath = self::downloadRelease();
|
$zipPath = self::downloadRelease();
|
||||||
if (!$zipPath) {
|
if ($zipPath) {
|
||||||
$app->enqueueMessage(
|
$installed = self::installPackage($zipPath);
|
||||||
'MokoOnyx migration: could not download the MokoOnyx template package. '
|
@unlink($zipPath);
|
||||||
. 'Please install MokoOnyx manually from '
|
|
||||||
. '<a href="https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/releases" target="_blank">Gitea Releases</a>.',
|
|
||||||
'warning'
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Install MokoOnyx via Joomla's installer
|
// 2. Fallback: copy from MokoCassiopeia and rename
|
||||||
$installed = self::installPackage($zipPath);
|
if (!$installed) {
|
||||||
|
self::log('Bridge: download/install failed, falling back to file copy');
|
||||||
// Clean up downloaded ZIP
|
$installed = self::copyAndRename();
|
||||||
@unlink($zipPath);
|
}
|
||||||
|
|
||||||
if (!$installed) {
|
if (!$installed) {
|
||||||
$app->enqueueMessage(
|
$app->enqueueMessage(
|
||||||
'MokoOnyx migration: installation failed. '
|
'MokoOnyx migration: automatic installation failed. '
|
||||||
. 'Please install MokoOnyx manually from '
|
. 'Please install MokoOnyx manually from '
|
||||||
. '<a href="https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/releases" target="_blank">Gitea Releases</a>.',
|
. '<a href="https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/releases" target="_blank">Gitea Releases</a>.',
|
||||||
'warning'
|
'warning'
|
||||||
@@ -74,10 +70,13 @@ class MokoBridgeMigration
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Migrate template styles
|
// 3. Copy user files (custom themes, user.css, user.js)
|
||||||
|
self::copyAndRename();
|
||||||
|
|
||||||
|
// 4. Migrate template styles and params
|
||||||
self::migrateStyles();
|
self::migrateStyles();
|
||||||
|
|
||||||
// 4. Notify admin
|
// 5. Notify admin
|
||||||
self::notifyUser($app);
|
self::notifyUser($app);
|
||||||
|
|
||||||
self::log('Bridge migration completed successfully.');
|
self::log('Bridge migration completed successfully.');
|
||||||
@@ -245,6 +244,58 @@ class MokoBridgeMigration
|
|||||||
self::log('Migrated ' . count($oldStyles) . ' template style(s).');
|
self::log('Migrated ' . count($oldStyles) . ' template style(s).');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy user-specific files from MokoCassiopeia to MokoOnyx.
|
||||||
|
* Only copies custom themes, user.css, and user.js — not the full template.
|
||||||
|
* MokoOnyx must already be installed (via download or manual).
|
||||||
|
*/
|
||||||
|
private static function copyAndRename(): bool
|
||||||
|
{
|
||||||
|
$oldMedia = JPATH_ROOT . '/media/templates/site/' . self::OLD_NAME;
|
||||||
|
$newMedia = JPATH_ROOT . '/media/templates/site/' . self::NEW_NAME;
|
||||||
|
|
||||||
|
if (!is_dir($newMedia)) {
|
||||||
|
self::log('Bridge: MokoOnyx media dir not found — cannot copy user files', 'warning');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$copied = 0;
|
||||||
|
|
||||||
|
// Copy custom theme palettes
|
||||||
|
$userFiles = [
|
||||||
|
'css/theme/light.custom.css',
|
||||||
|
'css/theme/dark.custom.css',
|
||||||
|
'css/theme/light.custom.min.css',
|
||||||
|
'css/theme/dark.custom.min.css',
|
||||||
|
'css/user.css',
|
||||||
|
'css/user.min.css',
|
||||||
|
'js/user.js',
|
||||||
|
'js/user.min.js',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($userFiles as $relPath) {
|
||||||
|
$srcFile = $oldMedia . '/' . $relPath;
|
||||||
|
$dstFile = $newMedia . '/' . $relPath;
|
||||||
|
if (is_file($srcFile) && !is_file($dstFile)) {
|
||||||
|
$dstDir = dirname($dstFile);
|
||||||
|
if (!is_dir($dstDir)) {
|
||||||
|
mkdir($dstDir, 0755, true);
|
||||||
|
}
|
||||||
|
copy($srcFile, $dstFile);
|
||||||
|
$copied++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy favicon directory
|
||||||
|
$faviconSrc = JPATH_ROOT . '/images/favicons';
|
||||||
|
if (is_dir($faviconSrc)) {
|
||||||
|
self::log('Bridge: favicons already at images/favicons — shared between templates');
|
||||||
|
}
|
||||||
|
|
||||||
|
self::log("Bridge: copied {$copied} user file(s) to MokoOnyx");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private static function notifyUser($app): void
|
private static function notifyUser($app): void
|
||||||
{
|
{
|
||||||
$app->enqueueMessage(
|
$app->enqueueMessage(
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
"defgroup": "Joomla.Template.Site",
|
"defgroup": "Joomla.Template.Site",
|
||||||
"ingroup": "MokoCassiopeia.Template.Assets",
|
"ingroup": "MokoCassiopeia.Template.Assets",
|
||||||
"path": "./media/templates/site/mokocassiopeia/joomla.asset.json",
|
"path": "./media/templates/site/mokocassiopeia/joomla.asset.json",
|
||||||
"version": "03.10.11",
|
"version": "03.10.12",
|
||||||
"brief": "Joomla asset registry for MokoCassiopeia"
|
"brief": "Joomla asset registry for MokoCassiopeia"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -39,13 +39,13 @@
|
|||||||
</server>
|
</server>
|
||||||
</updateservers>
|
</updateservers>
|
||||||
<name>MokoCassiopeia</name>
|
<name>MokoCassiopeia</name>
|
||||||
<version>03.10.11</version>
|
<version>03.10.12</version>
|
||||||
<scriptfile>script.php</scriptfile>
|
<scriptfile>script.php</scriptfile>
|
||||||
<creationDate>2026-04-15</creationDate>
|
<creationDate>2026-04-19</creationDate>
|
||||||
<author>Jonathan Miller || Moko Consulting</author>
|
<author>Jonathan Miller || Moko Consulting</author>
|
||||||
<authorEmail>hello@mokoconsulting.tech</authorEmail>
|
<authorEmail>hello@mokoconsulting.tech</authorEmail>
|
||||||
<copyright>(C)GNU General Public License Version 3 - 2026 Moko Consulting</copyright>
|
<copyright>(C)GNU General Public License Version 3 - 2026 Moko Consulting</copyright>
|
||||||
<description><![CDATA[<p><img src="https://img.shields.io/badge/version-03.10.11-blue.svg?logo=v&logoColor=white" alt="Version 03.10.11" /> <img src="https://img.shields.io/badge/license-GPL--3.0--or--later-green.svg?logo=gnu&logoColor=white" alt="License" /> <img src="https://img.shields.io/badge/Joomla-5.x%20%7C%206.x-red.svg?logo=joomla&logoColor=white" alt="Joomla" /> <img src="https://img.shields.io/badge/PHP-8.1%2B-777BB4.svg?logo=php&logoColor=white" alt="PHP" /></p> <h3>MokoCassiopeia Template Description</h3> <p> <strong>MokoCassiopeia</strong> continues Joomla's tradition of space-themed default templates— building on the legacy of <em>Solarflare</em> (Joomla 1.0), <em>Milkyway</em> (Joomla 1.5), and <em>Protostar</em> (Joomla 3.0). </p> <p> This template is a customized fork of the <strong>Cassiopeia</strong> template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting. </p> <h4>Custom Colour Themes</h4> <p> Starter palette files are included with the template. To create a custom colour scheme, copy <code>templates/mokocassiopeia/templates/light.custom.css</code> to <code>media/templates/site/mokocassiopeia/css/theme/light.custom.css</code>, or <code>templates/mokocassiopeia/templates/dark.custom.css</code> to <code>media/templates/site/mokocassiopeia/css/theme/dark.custom.css</code>. Customise the CSS variables to match your brand, then activate your palette in <em>System → Site Templates → MokoCassiopeia → Theme tab</em> by selecting "Custom" for the Light or Dark Mode Palette. A full variable reference is available in the <em>CSS Variables</em> tab in template options. </p> <h4>Custom CSS & JavaScript</h4> <p> For site-specific styles and scripts that should survive template updates, create the following files: </p> <ul> <li><code>media/templates/site/mokocassiopeia/css/user.css</code> — loaded on every page for custom CSS overrides.</li> <li><code>media/templates/site/mokocassiopeia/js/user.js</code> — loaded on every page for custom JavaScript.</li> </ul> <p> These files are gitignored and will not be overwritten by template updates. </p> <h4>Code Attribution</h4> <p> This template is based on the original <strong>Cassiopeia</strong> template developed by the <a href="https://www.joomla.org" target="_blank" rel="noopener">Joomla! Project</a> and released under the GNU General Public License. </p> <p> Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards. </p> <p> It includes integration with <a href="https://afeld.github.io/bootstrap-toc/" target="_blank" rel="noopener">Bootstrap TOC</a>, an open-source table of contents generator by A. Feld, licensed under the MIT License. </p> <p> All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable. </p>]]></description>
|
<description><![CDATA[<p><img src="https://img.shields.io/badge/version-03.10.12-blue.svg?logo=v&logoColor=white" alt="Version 03.10.12" /> <img src="https://img.shields.io/badge/license-GPL--3.0--or--later-green.svg?logo=gnu&logoColor=white" alt="License" /> <img src="https://img.shields.io/badge/Joomla-5.x%20%7C%206.x-red.svg?logo=joomla&logoColor=white" alt="Joomla" /> <img src="https://img.shields.io/badge/PHP-8.1%2B-777BB4.svg?logo=php&logoColor=white" alt="PHP" /></p> <h3>MokoCassiopeia Template Description</h3> <p> <strong>MokoCassiopeia</strong> continues Joomla's tradition of space-themed default templates— building on the legacy of <em>Solarflare</em> (Joomla 1.0), <em>Milkyway</em> (Joomla 1.5), and <em>Protostar</em> (Joomla 3.0). </p> <p> This template is a customized fork of the <strong>Cassiopeia</strong> template introduced in Joomla 4, preserving its modern, accessible, and mobile-first foundation while introducing new stylistic enhancements and structural refinements specifically tailored for use by Moko Consulting. </p> <h4>Custom Colour Themes</h4> <p> Starter palette files are included with the template. To create a custom colour scheme, copy <code>templates/mokocassiopeia/templates/light.custom.css</code> to <code>media/templates/site/mokocassiopeia/css/theme/light.custom.css</code>, or <code>templates/mokocassiopeia/templates/dark.custom.css</code> to <code>media/templates/site/mokocassiopeia/css/theme/dark.custom.css</code>. Customise the CSS variables to match your brand, then activate your palette in <em>System → Site Templates → MokoCassiopeia → Theme tab</em> by selecting "Custom" for the Light or Dark Mode Palette. A full variable reference is available in the <em>CSS Variables</em> tab in template options. </p> <h4>Custom CSS & JavaScript</h4> <p> For site-specific styles and scripts that should survive template updates, create the following files: </p> <ul> <li><code>media/templates/site/mokocassiopeia/css/user.css</code> — loaded on every page for custom CSS overrides.</li> <li><code>media/templates/site/mokocassiopeia/js/user.js</code> — loaded on every page for custom JavaScript.</li> </ul> <p> These files are gitignored and will not be overwritten by template updates. </p> <h4>Code Attribution</h4> <p> This template is based on the original <strong>Cassiopeia</strong> template developed by the <a href="https://www.joomla.org" target="_blank" rel="noopener">Joomla! Project</a> and released under the GNU General Public License. </p> <p> Modifications and enhancements have been made by Moko Consulting in accordance with open-source licensing standards. </p> <p> It includes integration with <a href="https://afeld.github.io/bootstrap-toc/" target="_blank" rel="noopener">Bootstrap TOC</a>, an open-source table of contents generator by A. Feld, licensed under the MIT License. </p> <p> All third-party libraries and assets remain the property of their respective authors and are credited within their source files where applicable. </p>]]></description>
|
||||||
<inheritable>1</inheritable>
|
<inheritable>1</inheritable>
|
||||||
<files>
|
<files>
|
||||||
<filename>component.php</filename>
|
<filename>component.php</filename>
|
||||||
|
|||||||
26
updates.xml
26
updates.xml
@@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<!-- Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
<!-- Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||||
SPDX-License-Identifier: GPL-3.0-or-later
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
VERSION: 03.10.11
|
VERSION: 03.10.12
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<updates>
|
<updates>
|
||||||
@@ -13,11 +13,11 @@
|
|||||||
<element>mokocassiopeia</element>
|
<element>mokocassiopeia</element>
|
||||||
<type>template</type>
|
<type>template</type>
|
||||||
<client>site</client>
|
<client>site</client>
|
||||||
<version>03.10.11</version>
|
<version>03.10.12</version>
|
||||||
<creationDate>2026-04-19</creationDate>
|
<creationDate>2026-04-19</creationDate>
|
||||||
<infourl title='MokoCassiopeia Dev'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/development</infourl>
|
<infourl title='MokoCassiopeia Dev'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/development</infourl>
|
||||||
<downloads>
|
<downloads>
|
||||||
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/development/mokocassiopeia-03.10.11-dev.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/development/mokocassiopeia-03.10.12-dev.zip</downloadurl>
|
||||||
</downloads>
|
</downloads>
|
||||||
<sha256>1e34ddbe6a28114100fcb1bb995b9a7b4ccbec8468a7a1f73022440f4ac3ddfc</sha256>
|
<sha256>1e34ddbe6a28114100fcb1bb995b9a7b4ccbec8468a7a1f73022440f4ac3ddfc</sha256>
|
||||||
<tags><tag>development</tag></tags>
|
<tags><tag>development</tag></tags>
|
||||||
@@ -34,11 +34,11 @@
|
|||||||
<element>mokocassiopeia</element>
|
<element>mokocassiopeia</element>
|
||||||
<type>template</type>
|
<type>template</type>
|
||||||
<client>site</client>
|
<client>site</client>
|
||||||
<version>03.10.11</version>
|
<version>03.10.12</version>
|
||||||
<creationDate>2026-04-19</creationDate>
|
<creationDate>2026-04-19</creationDate>
|
||||||
<infourl title='MokoCassiopeia Alpha'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/alpha</infourl>
|
<infourl title='MokoCassiopeia Alpha'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/alpha</infourl>
|
||||||
<downloads>
|
<downloads>
|
||||||
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.11.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.12.zip</downloadurl>
|
||||||
</downloads>
|
</downloads>
|
||||||
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
||||||
<tags><tag>alpha</tag></tags>
|
<tags><tag>alpha</tag></tags>
|
||||||
@@ -55,11 +55,11 @@
|
|||||||
<element>mokocassiopeia</element>
|
<element>mokocassiopeia</element>
|
||||||
<type>template</type>
|
<type>template</type>
|
||||||
<client>site</client>
|
<client>site</client>
|
||||||
<version>03.10.11</version>
|
<version>03.10.12</version>
|
||||||
<creationDate>2026-04-19</creationDate>
|
<creationDate>2026-04-19</creationDate>
|
||||||
<infourl title='MokoCassiopeia Beta'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/beta</infourl>
|
<infourl title='MokoCassiopeia Beta'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/beta</infourl>
|
||||||
<downloads>
|
<downloads>
|
||||||
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.11.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.12.zip</downloadurl>
|
||||||
</downloads>
|
</downloads>
|
||||||
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
||||||
<tags><tag>beta</tag></tags>
|
<tags><tag>beta</tag></tags>
|
||||||
@@ -76,12 +76,12 @@
|
|||||||
<element>mokocassiopeia</element>
|
<element>mokocassiopeia</element>
|
||||||
<type>template</type>
|
<type>template</type>
|
||||||
<client>site</client>
|
<client>site</client>
|
||||||
<version>03.10.11</version>
|
<version>03.10.12</version>
|
||||||
<creationDate>2026-04-19</creationDate>
|
<creationDate>2026-04-19</creationDate>
|
||||||
<infourl title='MokoCassiopeia RC'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/release-candidate</infourl>
|
<infourl title='MokoCassiopeia RC'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/release-candidate</infourl>
|
||||||
<downloads>
|
<downloads>
|
||||||
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.11.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.12.zip</downloadurl>
|
||||||
<downloadurl type='full' format='zip'>https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.11.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.12.zip</downloadurl>
|
||||||
</downloads>
|
</downloads>
|
||||||
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
||||||
<tags><tag>rc</tag></tags>
|
<tags><tag>rc</tag></tags>
|
||||||
@@ -98,12 +98,12 @@
|
|||||||
<element>mokocassiopeia</element>
|
<element>mokocassiopeia</element>
|
||||||
<type>template</type>
|
<type>template</type>
|
||||||
<client>site</client>
|
<client>site</client>
|
||||||
<version>03.10.11</version>
|
<version>03.10.12</version>
|
||||||
<creationDate>2026-04-19</creationDate>
|
<creationDate>2026-04-19</creationDate>
|
||||||
<infourl title='MokoCassiopeia'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/v03</infourl>
|
<infourl title='MokoCassiopeia'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/tag/v03</infourl>
|
||||||
<downloads>
|
<downloads>
|
||||||
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.11.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.12.zip</downloadurl>
|
||||||
<downloadurl type='full' format='zip'>https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.11.zip</downloadurl>
|
<downloadurl type='full' format='zip'>https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/download/v03/mokocassiopeia-03.10.12.zip</downloadurl>
|
||||||
</downloads>
|
</downloads>
|
||||||
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
<sha256>fac226ed62e79a01dd01b6184e832a4e8c927c7b7a5ac18cc645332cd87af33d</sha256>
|
||||||
<tags><tag>stable</tag></tags>
|
<tags><tag>stable</tag></tags>
|
||||||
|
|||||||
Reference in New Issue
Block a user