Files
GiteaMailTemplates/docs/CONTRIBUTING.ru.md
T
KenanZhu d8a714b2b5 feat(preview): cross-browser scrollbar, keyboard nav, dev-mode client simulation, docs overhaul
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])
2026-06-04 16:01:42 +08:00

3.8 KiB

Участие в разработке — 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 инлайн + симуляция клиентов)

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.