preview/index.html: - Fix scrollbar CSS: scoped webkit pseudo-elements + standards-track fallback, removed deprecated overflow:overlay - Keyboard navigation: arrows cycle focus between Theme/Template/Client selects, up/down select within focused dropdown, d/m toggle viewport - Dev/static mode detection: delayed static warning only when WebSocket absent, WebSocket errors only on disconnect (not on initial fail) - iframe sandbox: removed static sandbox attr, applied dynamically only in dev mode (file: protocol rejects sandboxed srcdoc) - Loading fix: removed double-toggle between init and render(); added 5s safety timeout - Transform clean: returns HTML as-is; CSS stripping moved to server-side - Dev disclaimer: blue info banner shown on WebSocket connect tools/server/inliner.mjs: - Added stripGmail() / stripOutlook() — server-side CSS property stripping for email client simulation tools/server/server.mjs: - Fixed WebSocket upgrade: use app.listen() instead of createServer(app).listen() - Juice post-processing now generates three rendered.js variants (modern/gmail/outlook) - Initial startup runs juice-only pass (avoids duplicate Go compilation) docs/ (all 6 languages — en, zh-CN, zh-TW, ja, ko, ru): - Image size limits: max 50KiB, recommended 10-20KiB - Dev disclaimer: simulation cannot 100% reproduce every client - Changed 'accurate' to 'relatively accurate' across all static-mode warnings - Converted all plain blockquotes to GitHub admonitions ([!WARNING] / [!NOTE])
74 lines
3.8 KiB
Markdown
74 lines
3.8 KiB
Markdown
# Участие в разработке — Gitea Mail Templates
|
|
|
|
## Способы участия
|
|
|
|
### Добавление нового стиля
|
|
|
|
1. Создайте каркас через инструмент: `cd tools && go run . create <имя-стиля>` — создаёт полную структуру директорий с файлами-заготовками `.tmpl` для всех 11 типов писем
|
|
2. Отредактируйте каждый `.tmpl` файл в `themes/<имя-стиля>/` с вашим уникальным дизайном
|
|
3. Перегенерируйте превью: `cd tools && go run . preview all` (скрипт автоматически находит все темы в `themes/` и динамически генерирует селектор тем)
|
|
4. Отправьте PR со скриншотами (≤ 50 КиБ каждый, рекомендуется 10–20 КиБ)
|
|
|
|
### Рекомендации по стилю
|
|
|
|
- Каждый стиль должен включать **все 11 типов шаблонов**
|
|
- Используйте только встроенные функции шаблонов Gitea
|
|
- Ключи перевода из официальных файлов локали Gitea (`mail.*`)
|
|
- **Не используйте `.DisplayName`** где его нет в контексте (collaborator, transfer, release, workflow_run, assigned, default)
|
|
- Дизайн для 600px email клиентов
|
|
- Тестируйте в Gmail, Outlook, Apple Mail
|
|
|
|
### Баг-репорты
|
|
|
|
1. Проверьте переменные Go в шаблонах
|
|
2. Сверьте ключи перевода с локалью Gitea
|
|
3. Убедитесь что `.DisplayName` не используется где не надо
|
|
4. Перегенерируйте превью: `cd tools && go run . preview all`
|
|
5. Создайте issue с указанием стиля и типа письма
|
|
|
|
---
|
|
|
|
## Настройка разработки
|
|
|
|
- **Go 1.21+** для рендеринга шаблонов и CLI
|
|
- **Node.js 18+** (опционально) для сервера разработки с Juice CSS
|
|
|
|
### Локальный предпросмотр (статический)
|
|
|
|
1. Сгенерируйте данные: `cd tools && go run . preview all`
|
|
2. Откройте `preview/index.html` в браузере — сервер не нужен
|
|
|
|
> [!WARNING]
|
|
> Статическая симуляция Gmail/Outlook приблизительна. Используйте dev-режим для относительно точного рендеринга.
|
|
|
|
### Сервер разработки (live reload + CSS инлайн + симуляция клиентов)
|
|
|
|
```bash
|
|
cd tools && go run . dev
|
|
# → http://localhost:3456
|
|
```
|
|
|
|
При изменении `.tmpl` файлов автоматически пересобирает и обновляет браузер.
|
|
|
|
> [!NOTE]
|
|
> Dev-симуляция не может на 100% воспроизвести рендеринг каждого почтового клиента — только для справки. Всегда проверяйте на реальных клиентах.
|
|
|
|
### Интеграционное тестирование
|
|
|
|
Разверните на Gitea: **Site Administration > Configuration > Mailer > Send Test Email**
|
|
|
|
---
|
|
|
|
## Соглашение о коммитах
|
|
|
|
- `style(<имя>):` — изменения шаблонов стиля
|
|
- `preview:` — инструменты предпросмотра
|
|
- `tools:` — Go-скрипт сборки
|
|
- `docs:` — документация и переводы
|
|
- `fix:` — исправления
|
|
- `project:` — README, LICENSE, мета-файлы
|
|
|
|
## Лицензия
|
|
|
|
Участвуя, вы соглашаетесь с лицензией MIT.
|