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
+96 -76
Voir le fichier
@@ -1,76 +1,96 @@
# .github/workflows/release.yml
name: Lightweight Release
on:
push:
branches:
- main
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build files
run: |
mkdir -p build
cp src/login.html build/
cp meta.json README.md build/
cat src/styles.css \
| tr -d '\n\t' \
| 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
id: tag
run: |
git fetch --tags
LAST_TAG=$(git tag -l "v*" | sort -V | tail -n1)
if [ -z "$LAST_TAG" ]; then
NEXT=1
else
NUM=${LAST_TAG#v}
NEXT=$((NUM + 1))
fi
NEW_TAG="v$NEXT"
echo "tag=$NEW_TAG" >> $GITHUB_OUTPUT
- name: Create and push tag
run: |
git config user.name "gitea-actions"
git config user.email "actions@local"
git tag ${{ steps.tag.outputs.tag }}
git push origin ${{ steps.tag.outputs.tag }}
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
files: release.zip
# .github/workflows/release.yml
name: Release
on:
push:
branches:
- main
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install esbuild
run: npm install -g esbuild
- name: Install html-minifier-terser
run: npm install -g html-minifier-terser
- name: Generate next tag
id: tag
run: |
git fetch --tags
LAST_TAG=$(git tag -l "v*" | sort -V | tail -n1)
if [ -z "$LAST_TAG" ]; then
NEXT=1
else
NUM=${LAST_TAG#v}
NEXT=$((NUM + 1))
fi
NEW_TAG="v$NEXT"
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
run: |
git config user.name "gitea-actions"
git config user.email "actions@local"
git tag ${{ steps.tag.outputs.tag }}
git push origin ${{ steps.tag.outputs.tag }}
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.tag }}
files: roundcube-theme-skynet-${{ steps.tag.outputs.tag }}.zip
+135 -122
Voir le fichier
@@ -1,133 +1,146 @@
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
/>
<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.css");
</style>
<roundcube:if condition="!env:framed || env:extwin" />
<html>
<roundcube:else />
<html class="iframe">
<roundcube:endif />
<!-- Animated background -->
<canvas id="bg-canvas"></canvas>
<div class="sky-grid"></div>
<div class="sky-scanlines"></div>
<div class="sky-glow"></div>
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
/>
<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 -->
<div class="sky-card" id="sky-login-card">
<!-- Logo canvas — absolute background, top of card -->
<div class="sky">
<canvas id="skc" width="440" height="600"></canvas>
<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>
<!-- Animated background -->
<canvas id="bg-canvas"></canvas>
<div class="sky-grid"></div>
<div class="sky-scanlines"></div>
<div class="sky-glow"></div>
<hr class="sky-divider" />
<!-- Hidden Roundcube form — handles CSRF token and real submission -->
<div id="rc-form-hidden">
<roundcube:form
id="login-form"
name="login-form"
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
<!-- Login card -->
<div class="sky-card" id="sky-login-card">
<!-- Logo canvas — absolute background, top of card -->
<div class="sky">
<canvas id="skc" width="440" height="600"></canvas>
<div class="crt-s"></div>
<div class="crt-v"></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">
<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>
<hr class="sky-divider" />
<!-- Hidden Roundcube form — handles CSRF token and real submission -->
<div id="rc-form-hidden">
<roundcube:form
id="login-form"
name="login-form"
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>
<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>
<!-- /.sky-card-body -->
<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 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 -->
<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>
<noscript>
<p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
</noscript>
<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>
<script src="./skins/skynet/script-skynet.js" defer></script>
<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>
<!-- /.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>
<roundcube:include file="includes/footer.html" />
</html>
</html>
Voir le fichier
Voir le fichier