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])
3.8 KiB
3.8 KiB
Участие в разработке — Gitea Mail Templates
Способы участия
Добавление нового стиля
- Создайте каркас через инструмент:
cd tools && go run . create <имя-стиля>— создаёт полную структуру директорий с файлами-заготовками.tmplдля всех 11 типов писем - Отредактируйте каждый
.tmplфайл вthemes/<имя-стиля>/с вашим уникальным дизайном - Перегенерируйте превью:
cd tools && go run . preview all(скрипт автоматически находит все темы вthemes/и динамически генерирует селектор тем) - Отправьте PR со скриншотами (≤ 50 КиБ каждый, рекомендуется 10–20 КиБ)
Рекомендации по стилю
- Каждый стиль должен включать все 11 типов шаблонов
- Используйте только встроенные функции шаблонов Gitea
- Ключи перевода из официальных файлов локали Gitea (
mail.*) - Не используйте
.DisplayNameгде его нет в контексте (collaborator, transfer, release, workflow_run, assigned, default) - Дизайн для 600px email клиентов
- Тестируйте в Gmail, Outlook, Apple Mail
Баг-репорты
- Проверьте переменные Go в шаблонах
- Сверьте ключи перевода с локалью Gitea
- Убедитесь что
.DisplayNameне используется где не надо - Перегенерируйте превью:
cd tools && go run . preview all - Создайте issue с указанием стиля и типа письма
Настройка разработки
- Go 1.21+ для рендеринга шаблонов и CLI
- Node.js 18+ (опционально) для сервера разработки с Juice CSS
Локальный предпросмотр (статический)
- Сгенерируйте данные:
cd tools && go run . preview all - Откройте
preview/index.htmlв браузере — сервер не нужен
Warning
Статическая симуляция Gmail/Outlook приблизительна. Используйте dev-режим для относительно точного рендеринга.
Сервер разработки (live reload + CSS инлайн + симуляция клиентов)
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.