Change url js and css with .min
Release / release (push) Successful in 17s

Cette révision appartient à :
2026-05-17 11:29:16 +02:00
Parent 372fd2b603
révision bdd4a093db
4 fichiers modifiés avec 231 ajouts et 198 suppressions
+46 -26
Voir le fichier
@@ -1,6 +1,6 @@
# .github/workflows/release.yml # .github/workflows/release.yml
name: Lightweight Release name: Release
on: on:
push: push:
@@ -16,32 +16,16 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Build files - name: Setup Node.js
run: | uses: actions/setup-node@v4
mkdir -p build with:
node-version: 20
cp src/login.html build/ - name: Install esbuild
cp meta.json README.md build/ run: npm install -g esbuild
cat src/styles.css \ - name: Install html-minifier-terser
| tr -d '\n\t' \ run: npm install -g html-minifier-terser
| sed 's/ */ /g' \
| sed 's/ *{ */{/g' \
| sed 's/ *} */}/g' \
| sed 's/ *; */;/g' \
| sed 's/ *: */:/g' \
| sed 's/ *, */,/g' \
> build/styles.min.css
cat src/script.js \
| tr -d '\n\t' \
| sed 's/ */ /g' \
> build/script.min.js
- name: Create archive
run: |
cd build
zip -r ../release.zip .
- name: Generate next tag - name: Generate next tag
id: tag id: tag
@@ -61,6 +45,42 @@ jobs:
echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT
- name: Prepare build
run: |
mkdir -p build
sed \
-e 's|\.\/skins\/skynet\/styles\/styles-skynet\.css|./skins/skynet/styles/styles-skynet.min.css|g' \
-e 's|\.\/skins\/skynet\/script-skynet\.js|./skins/skynet/script-skynet.min.js|g' \
src/login.html > login.raw.html
html-minifier-terser login.raw.html \
--collapse-whitespace \
--remove-comments \
--remove-redundant-attributes \
--remove-script-type-attributes \
--remove-style-link-type-attributes \
--minify-css true \
--minify-js true \
-o build/login.html
esbuild src/styles-skynet.css \
--minify \
--legal-comments=none \
--outfile=build/styles-skynet.min.css
esbuild src/script-skynet.js \
--minify \
--legal-comments=none \
--outfile=build/script-skynet.min.js
- name: Create archive
run: |
VERSION=${{ steps.tag.outputs.tag }}
cd build
zip -r "../roundcube-theme-skynet-${VERSION}.zip" .
- name: Create and push tag - name: Create and push tag
run: | run: |
git config user.name "gitea-actions" git config user.name "gitea-actions"
@@ -73,4 +93,4 @@ jobs:
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
with: with:
tag_name: ${{ steps.tag.outputs.tag }} tag_name: ${{ steps.tag.outputs.tag }}
files: release.zip files: roundcube-theme-skynet-${{ steps.tag.outputs.tag }}.zip
+135 -122
Voir le fichier
@@ -1,133 +1,146 @@
<meta <roundcube:if condition="!env:framed || env:extwin" />
name="viewport" <html>
content="width=device-width, initial-scale=1.0, maximum-scale=1.0" <roundcube:else />
/> <html class="iframe">
<style> <roundcube:endif />
@import url("https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Orbitron:wght@400;700&display=swap");
@import url("./skins/skynet/styles/styles.css");
</style>
<!-- Animated background --> <meta
<canvas id="bg-canvas"></canvas> name="viewport"
<div class="sky-grid"></div> content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
<div class="sky-scanlines"></div> />
<div class="sky-glow"></div> <style>
@import url("https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Orbitron:wght@400;700&display=swap");
@import url("./skins/skynet/styles/styles-skynet.css");
</style>
<!-- Login card --> <!-- Animated background -->
<div class="sky-card" id="sky-login-card"> <canvas id="bg-canvas"></canvas>
<!-- Logo canvas — absolute background, top of card --> <div class="sky-grid"></div>
<div class="sky"> <div class="sky-scanlines"></div>
<canvas id="skc" width="440" height="600"></canvas> <div class="sky-glow"></div>
<div class="crt-s"></div>
<div class="crt-v"></div>
</div>
<!-- Main content — pushed down by margin-top to leave room for logo -->
<div class="sky-card-body">
<div class="sky-brand-title">SKYNET</div>
<div class="sky-brand-sub">
GLOBAL DEFENSE NETWORK &nbsp;//&nbsp; SECURE NODE ACCESS
</div>
<hr class="sky-divider" /> <!-- Login card -->
<div class="sky-card" id="sky-login-card">
<!-- Hidden Roundcube form — handles CSRF token and real submission --> <!-- Logo canvas — absolute background, top of card -->
<div id="rc-form-hidden"> <div class="sky">
<roundcube:form <canvas id="skc" width="440" height="600"></canvas>
id="login-form" <div class="crt-s"></div>
name="login-form" <div class="crt-v"></div>
method="post"
class="propform"
>
<roundcube:object
name="loginform"
form="login-form"
size="40"
submit="true"
class="form-control"
/>
</roundcube:form>
</div>
<!-- Skynet UI — copies values to real form on submit -->
<div id="sky-ui-form">
<div class="sky-error" id="sky-error">
&nbsp; AUTHENTIFICATION ÉCHOUÉE
</div> </div>
<roundcube:object name="message" id="messagestack" /> <!-- Main content — pushed down by margin-top to leave room for logo -->
<div class="sky-card-body">
<div class="sky-brand-title">SKYNET</div>
<div class="sky-brand-sub">
GLOBAL DEFENSE NETWORK &nbsp;//&nbsp; SECURE NODE ACCESS
</div>
<div class="sky-field-wrap"> <hr class="sky-divider" />
<label class="sky-field-label" for="sky-user">Identifiant</label>
<input <!-- Hidden Roundcube form — handles CSRF token and real submission -->
class="sky-input" <div id="rc-form-hidden">
type="text" <roundcube:form
id="sky-user" id="login-form"
placeholder="utilisateur@domaine.tld" name="login-form"
autocomplete="username" method="post"
/> class="propform"
<span class="sky-field-icon"></span> >
<roundcube:object
name="loginform"
form="login-form"
size="40"
submit="true"
class="form-control"
/>
</roundcube:form>
</div>
<!-- Skynet UI — copies values to real form on submit -->
<div id="sky-ui-form">
<div class="sky-error" id="sky-error">
&nbsp; AUTHENTIFICATION ÉCHOUÉE
</div>
<roundcube:object name="message" id="messagestack" />
<div class="sky-field-wrap">
<label class="sky-field-label" for="sky-user">Identifiant</label>
<input
class="sky-input"
type="text"
id="sky-user"
placeholder="utilisateur@domaine.tld"
autocomplete="username"
/>
<span class="sky-field-icon"></span>
</div>
<div class="sky-field-wrap">
<label class="sky-field-label" for="sky-pass">Code d'accès</label>
<input
class="sky-input"
type="password"
id="sky-pass"
placeholder="••••••••••••"
autocomplete="current-password"
/>
<span class="sky-field-icon"></span>
</div>
<button class="sky-submit" id="sky-submit-btn" type="button">
CONNEXION <span class="blink">_</span>
</button>
</div>
<div class="sky-threat">
<span class="sky-threat-label">MENACE</span>
<div class="sky-threat-bars">
<div class="sky-tbar on"></div>
<div class="sky-tbar on"></div>
<div class="sky-tbar on"></div>
<div class="sky-tbar"></div>
<div class="sky-tbar"></div>
<div class="sky-tbar"></div>
<div class="sky-tbar"></div>
</div>
<span class="sky-threat-val">MODÉRÉE</span>
</div>
<div class="sky-status">
<div class="sky-status-item online">
RÉSEAU : <span>EN LIGNE</span>
</div>
<div class="sky-status-item">SÉCURITÉ : <span>NIV.5</span></div>
<div class="sky-status-item">NŒUD : <span>HELIOS</span></div>
</div>
<div class="sky-ticker">
<span class="sky-ticker-inner">
// ACCÈS NON AUTORISÉ SERA TRACÉ ET ÉLIMINÉ
&nbsp;&nbsp;//&nbsp;&nbsp; SKYNET SURVEILLE TOUTES LES CONNEXIONS
&nbsp;&nbsp;//&nbsp;&nbsp; PROTOCOLE DE SÉCURITÉ DELTA ACTIF
&nbsp;&nbsp;//&nbsp;&nbsp; TOUTE INTRUSION SERA NEUTRALISÉE
&nbsp;&nbsp;//&nbsp;&nbsp;
</span>
</div>
<div class="sky-node-id">
SYS-ID: 4A2F-9C01-DELTA &nbsp;|&nbsp; v4.0.2026 &nbsp;|&nbsp; SKYNET
CORP.
</div>
</div> </div>
<!-- /.sky-card-body -->
<div class="sky-field-wrap"> <div class="sky-corner sky-tl"></div>
<label class="sky-field-label" for="sky-pass">Code d'accès</label> <div class="sky-corner sky-tr"></div>
<input <div class="sky-corner sky-bl"></div>
class="sky-input" <div class="sky-corner sky-br"></div>
type="password"
id="sky-pass"
placeholder="••••••••••••"
autocomplete="current-password"
/>
<span class="sky-field-icon"></span>
</div>
<button class="sky-submit" id="sky-submit-btn" type="button">
CONNEXION <span class="blink">_</span>
</button>
</div> </div>
<!-- /.sky-card -->
<div class="sky-threat"> <noscript>
<span class="sky-threat-label">MENACE</span> <p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
<div class="sky-threat-bars"> </noscript>
<div class="sky-tbar on"></div>
<div class="sky-tbar on"></div>
<div class="sky-tbar on"></div>
<div class="sky-tbar"></div>
<div class="sky-tbar"></div>
<div class="sky-tbar"></div>
<div class="sky-tbar"></div>
</div>
<span class="sky-threat-val">MODÉRÉE</span>
</div>
<div class="sky-status"> <script src="./skins/skynet/script-skynet.js" defer></script>
<div class="sky-status-item online">RÉSEAU : <span>EN LIGNE</span></div>
<div class="sky-status-item">SÉCURITÉ : <span>NIV.5</span></div>
<div class="sky-status-item">NŒUD : <span>HELIOS</span></div>
</div>
<div class="sky-ticker"> <roundcube:include file="includes/footer.html" />
<span class="sky-ticker-inner"> </html>
// ACCÈS NON AUTORISÉ SERA TRACÉ ET ÉLIMINÉ &nbsp;&nbsp;//&nbsp;&nbsp; </html>
SKYNET SURVEILLE TOUTES LES CONNEXIONS &nbsp;&nbsp;//&nbsp;&nbsp;
PROTOCOLE DE SÉCURITÉ DELTA ACTIF &nbsp;&nbsp;//&nbsp;&nbsp; TOUTE
INTRUSION SERA NEUTRALISÉE &nbsp;&nbsp;//&nbsp;&nbsp;
</span>
</div>
<div class="sky-node-id">
SYS-ID: 4A2F-9C01-DELTA &nbsp;|&nbsp; v4.0.2026 &nbsp;|&nbsp; SKYNET CORP.
</div>
</div>
<!-- /.sky-card-body -->
<div class="sky-corner sky-tl"></div>
<div class="sky-corner sky-tr"></div>
<div class="sky-corner sky-bl"></div>
<div class="sky-corner sky-br"></div>
</div>
<!-- /.sky-card -->
<noscript>
<p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
</noscript>
<roundcube:include file="includes/footer.html" />
<script src="./skins/skynet/script.js" defer></script>
Voir le fichier
Voir le fichier