diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..822d711 --- /dev/null +++ b/.github/workflows/release.yml @@ -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 diff --git a/README.md b/README.md index e69ecb0..5d503dd 100644 --- a/README.md +++ b/README.md @@ -1,139 +1,134 @@ -# ?? Skynet Skin ? Roundcube Webmail - -> 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. - -Aidé par Claude AI - - - - - ---- - -## Aperçu - -- Page de connexion full-screen avec animations canvas (particules + data streams) -- Indicateur de niveau de menace, ticker défilant -- Logo Skynet avec effet de lueur bleue pulsante -- Détection et affichage des erreurs d'authentification Roundcube -- Responsive mobile (viewport adaptatif, anti-zoom iOS) - ---- - -## Prérequis - -- Testé avec Roundcube **1.6.x** -- Skin **elastic** présent dans `/var/www/html/skins/elastic/` (utilisé comme base) -- Accès en écriture au répertoire `/var/www/html/skins/` - ---- - -## Démonstration vidéo - -
- -
- ---- - -## Installation - -### 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**. - -```bash -cp -r /var/www/html/skins/elastic/. /var/www/html/skins/skynet/ -``` - -### 2. Déposer le template de login - -```bash -cp login.html /var/www/html/skins/skynet/templates/login.html -``` - -### 3. Activer le skin dans la configuration Roundcube - -Dans votre fichier `config.inc.php` : - -```php -$config['skin'] = 'skynet'; -``` - -### 4. Vérifier les permissions - -```bash -chown -R www-data:www-data /var/www/html/skins/skynet/ -chmod -R 755 /var/www/html/skins/skynet/ -``` - ---- - -## Installation via Docker - -Si Roundcube tourne dans un container Docker, montez le skin en volume dans votre `docker-compose.yml` : - -```yaml -services: - roundcube: - image: roundcube/roundcubemail:latest - volumes: - - ./skins/skynet:/var/www/html/skins/skynet - environment: - - ROUNDCUBEMAIL_SKIN=skynet -``` - -Puis copiez le skin elastic depuis le container comme base : - -```bash -# Extraire le skin elastic du container -docker cp roundcube:/var/www/html/skins/elastic ./skins/skynet - -cp login.html ./skins/skynet/templates/login.html -cp logo-skynet.png ./skins/skynet/images/logo-skynet.png - -# Inject le skin skynet dans le container -docker cp ./skins/skynet roundcube:/var/www/html/skins -``` - ---- - -## Compatibilité avec les plugins - -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 : - -### Plugins courants et leurs fichiers de skin - -| Plugin | Répertoire skin à vérifier | -| ------------------------- | --------------------------- | -| `managesieve` | `skins/skynet/managesieve/` | -| `enigma` | `skins/skynet/enigma/` | -| `calendar` _(Kolab/Bimi)_ | `skins/skynet/calendar/` | - -Pour vérifier que pour chaque plugin actif il y a un répertoire skins/ - -```bash -bash# Pour chaque plugin actif qui a un répertoire skins/ -for plugin in managesieve enigma zipdownload archive; do - if [ -d "/var/www/html/plugins/$plugin/skins/elastic" ]; then - cp -r /var/www/html/plugins/$plugin/skins/elastic \ - /var/www/html/plugins/$plugin/skins/skynet - echo "? $plugin" - fi -done -``` - ---- - -## Licence - -Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE). +# ~~ Skynet Skin ~ Roundcube Webmail ~~ + +> 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. + +Aidé par Claude AI + + + + + +--- + +## Aperçu + +- Page de connexion full-screen avec animations canvas (particules + data streams) +- Indicateur de niveau de menace, ticker défilant +- Logo Skynet avec effet de lueur bleue pulsante +- Détection et affichage des erreurs d'authentification Roundcube +- Responsive mobile (viewport adaptatif, anti-zoom iOS) + +--- + +## Prérequis + +- Testé avec Roundcube **1.6.x** +- Skin **elastic** présent dans `/var/www/html/skins/elastic/` (utilisé comme base) +- Accès en écriture au répertoire `/var/www/html/skins/` + +--- + +## Démonstration vidéo + ++ +
+ +--- + +## Installation + +### 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**. + +```bash +cp -r /var/www/html/skins/elastic/. /var/www/html/skins/skynet/ +``` + +### 2. Déposer le template de login + +```bash +cp login.html /var/www/html/skins/skynet/templates/login.html +``` + +### 3. Activer le skin dans la configuration Roundcube + +Dans votre fichier `config.inc.php` : + +```php +$config['skin'] = 'skynet'; +``` + +### 4. Vérifier les permissions + +```bash +chown -R www-data:www-data /var/www/html/skins/skynet/ +chmod -R 755 /var/www/html/skins/skynet/ +``` + +--- + +## Installation via Docker + +Si Roundcube tourne dans un container Docker, montez le skin en volume dans votre `docker-compose.yml` : + +```yaml +services: + roundcube: + image: roundcube/roundcubemail:latest + volumes: + - ./skins/skynet:/var/www/html/skins/skynet + environment: + - ROUNDCUBEMAIL_SKIN=skynet +``` + +Puis copiez le skin elastic depuis le container comme base : + +```bash +# Extraire le skin elastic du container +docker cp roundcube:/var/www/html/skins/elastic ./skins/skynet + +cp login.html ./skins/skynet/templates/login.html +cp logo-skynet.png ./skins/skynet/images/logo-skynet.png + +# Inject le skin skynet dans le container +docker cp ./skins/skynet roundcube:/var/www/html/skins +``` + +--- + +## Compatibilité avec les plugins + +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 : + +### Plugins courants et leurs fichiers de skin + +| Plugin | Répertoire skin à vérifier | +| ------------------------- | --------------------------- | +| `managesieve` | `skins/skynet/managesieve/` | +| `enigma` | `skins/skynet/enigma/` | +| `calendar` _(Kolab/Bimi)_ | `skins/skynet/calendar/` | + +Pour vérifier que pour chaque plugin actif il y a un répertoire skins/ + +```bash +bash# Pour chaque plugin actif qui a un répertoire skins/ +for plugin in managesieve enigma zipdownload archive; do + if [ -d "/var/www/html/plugins/$plugin/skins/elastic" ]; then + cp -r /var/www/html/plugins/$plugin/skins/elastic \ + /var/www/html/plugins/$plugin/skins/skynet + echo "? $plugin" + fi +done +``` + +--- + +## Licence + +Ce projet est distribué sous licence **MIT**. Voir le fichier [LICENSE](./LICENSE). diff --git a/login.html b/src/login.html similarity index 100% rename from login.html rename to src/login.html diff --git a/script.js b/src/script.js similarity index 100% rename from script.js rename to src/script.js diff --git a/styles.css b/src/styles.css similarity index 100% rename from styles.css rename to src/styles.css