add workflow
Cette révision appartient à :
@@ -0,0 +1,76 @@
|
|||||||
|
# .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
|
||||||
+23
-28
@@ -1,9 +1,9 @@
|
|||||||
# ?? Skynet Skin ? Roundcube Webmail
|
# ~~ Skynet Skin ~ Roundcube Webmail ~~
|
||||||
|
|
||||||
> Thème de connexion sci-fi pour Roundcube, inspiré du réseau de défense Skynet (Terminator).
|
> Thème de connexion sci-fi pour Roundcube, inspiré du réseau de défense Skynet (Terminator).
|
||||||
> Fond animé, particules, data streams, palette bleu nuit / bleu science-fiction.
|
> Fond animé, particules, data streams, palette bleu nuit / bleu science-fiction.
|
||||||
|
|
||||||
Aidé par Claude AI
|
Aidé par Claude AI
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
@@ -11,34 +11,29 @@ Aid
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Aperçu
|
## Aperçu
|
||||||
|
|
||||||
- Page de connexion full-screen avec animations canvas (particules + data streams)
|
- Page de connexion full-screen avec animations canvas (particules + data streams)
|
||||||
- Indicateur de niveau de menace, ticker défilant
|
- Indicateur de niveau de menace, ticker défilant
|
||||||
- Logo Skynet avec effet de lueur bleue pulsante
|
- Logo Skynet avec effet de lueur bleue pulsante
|
||||||
- Détection et affichage des erreurs d'authentification Roundcube
|
- Détection et affichage des erreurs d'authentification Roundcube
|
||||||
- Responsive mobile (viewport adaptatif, anti-zoom iOS)
|
- Responsive mobile (viewport adaptatif, anti-zoom iOS)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
- Testé avec Roundcube **1.6.x**
|
- Testé avec Roundcube **1.6.x**
|
||||||
- Skin **elastic** présent dans `/var/www/html/skins/elastic/` (utilisé comme base)
|
- Skin **elastic** présent dans `/var/www/html/skins/elastic/` (utilisé comme base)
|
||||||
- Accès en écriture au répertoire `/var/www/html/skins/`
|
- Accès en écriture au répertoire `/var/www/html/skins/`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Démonstration vidéo
|
## Démonstration vidéo
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<video src="assets/preview.webm"
|
<video autoplay muted loop playsinline width="500" height="400">
|
||||||
width="500"
|
<source src="assets/preview.webm" type="video/webm">
|
||||||
height="400"
|
|
||||||
controls
|
|
||||||
autoplay
|
|
||||||
loop
|
|
||||||
muted>
|
|
||||||
</video>
|
</video>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -48,13 +43,13 @@ Aid
|
|||||||
|
|
||||||
### 1. Copier le skin elastic comme base
|
### 1. Copier le skin elastic comme base
|
||||||
|
|
||||||
Le skin Skynet ne remplace que la page de login. Toutes les autres vues (messagerie, contacts, paramètres) héritent du skin **elastic**.
|
Le skin Skynet ne remplace que la page de login. Toutes les autres vues (messagerie, contacts, paramètres) héritent du skin **elastic**.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp -r /var/www/html/skins/elastic/. /var/www/html/skins/skynet/
|
cp -r /var/www/html/skins/elastic/. /var/www/html/skins/skynet/
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Déposer le template de login
|
### 2. Déposer le template de login
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp login.html /var/www/html/skins/skynet/templates/login.html
|
cp login.html /var/www/html/skins/skynet/templates/login.html
|
||||||
@@ -68,7 +63,7 @@ Dans votre fichier `config.inc.php` :
|
|||||||
$config['skin'] = 'skynet';
|
$config['skin'] = 'skynet';
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Vérifier les permissions
|
### 4. Vérifier les permissions
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chown -R www-data:www-data /var/www/html/skins/skynet/
|
chown -R www-data:www-data /var/www/html/skins/skynet/
|
||||||
@@ -106,23 +101,23 @@ docker cp ./skins/skynet roundcube:/var/www/html/skins
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Compatibilité avec les plugins
|
## Compatibilité avec les plugins
|
||||||
|
|
||||||
Certains plugins Roundcube incluent leur propre partie skin (templates, styles).
|
Certains plugins Roundcube incluent leur propre partie skin (templates, styles).
|
||||||
Lors de la copie d'elastic, ces fichiers sont automatiquement inclus, mais vérifiez les répertoires suivants après installation :
|
Lors de la copie d'elastic, ces fichiers sont automatiquement inclus, mais vérifiez les répertoires suivants après installation :
|
||||||
|
|
||||||
### Plugins courants et leurs fichiers de skin
|
### Plugins courants et leurs fichiers de skin
|
||||||
|
|
||||||
| Plugin | Répertoire skin à vérifier |
|
| Plugin | Répertoire skin à vérifier |
|
||||||
| ------------------------- | --------------------------- |
|
| ------------------------- | --------------------------- |
|
||||||
| `managesieve` | `skins/skynet/managesieve/` |
|
| `managesieve` | `skins/skynet/managesieve/` |
|
||||||
| `enigma` | `skins/skynet/enigma/` |
|
| `enigma` | `skins/skynet/enigma/` |
|
||||||
| `calendar` _(Kolab/Bimi)_ | `skins/skynet/calendar/` |
|
| `calendar` _(Kolab/Bimi)_ | `skins/skynet/calendar/` |
|
||||||
|
|
||||||
Pour vérifier que pour chaque plugin actif il y a un répertoire skins/
|
Pour vérifier que pour chaque plugin actif il y a un répertoire skins/
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
bash# Pour chaque plugin actif qui a un répertoire skins/
|
bash# Pour chaque plugin actif qui a un répertoire skins/
|
||||||
for plugin in managesieve enigma zipdownload archive; do
|
for plugin in managesieve enigma zipdownload archive; do
|
||||||
if [ -d "/var/www/html/plugins/$plugin/skins/elastic" ]; then
|
if [ -d "/var/www/html/plugins/$plugin/skins/elastic" ]; then
|
||||||
cp -r /var/www/html/plugins/$plugin/skins/elastic \
|
cp -r /var/www/html/plugins/$plugin/skins/elastic \
|
||||||
@@ -136,4 +131,4 @@ done
|
|||||||
|
|
||||||
## Licence
|
## Licence
|
||||||
|
|
||||||
Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE).
|
Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE).
|
||||||
|
|||||||
Référencer dans un nouveau ticket
Bloquer un utilisateur