zulip/tools
Daniil Fadeev 2f203f4de1 emails: Inline CSS in emails in build_email.
Previously, we had an architecture where CSS inlining for emails was
done at provision time in inline_email_css.py. This was necessary
because the library we were using for this, Premailer, was extremely
slow, and doing the inlining for every outgoing email would have been
prohibitively expensive.

Now that we've migrated to a more modern library that inlines the
small amount of CSS we have into emails nearly instantly, we are able
to remove the complex architecture built to work around Premailer
being slow and just do the CSS inlining as the final step in sending
each individual email.

This has several significant benefits:

* Removes a fiddly provisioning step that made the edit/refresh cycle
  for modifying email templates confusing; there's no longer a CSS
  inlining step that, if you forget to do it, results in your testing a
  stale variant of the email templates.
* Fixes internationalization problems related to translators working
  with pre-CSS-inlined emails, and then Django trying to apply the
  translators to the post-CSS-inlined version.
* Makes the send_custom_email pipeline simpler and easier to improve.

Signed-off-by: Daniil Fadeev <fadeevd@zulip.com>
2023-04-05 12:22:29 -07:00
..
ci dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
documentation_crawler web: Save a 301 redirect from /help to /help/. 2023-03-24 14:51:01 -07:00
droplets run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00
i18n i18n: Unescape Unicode sequences in JSON. 2023-01-17 13:19:45 -08:00
lib emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
linter_lib emails: Replace Premailer with CSS-inline. 2023-04-03 15:15:05 -07:00
node_lib node_tests: Move to web/tests. 2023-02-23 16:04:17 -08:00
oneclickapps oneclick: Wait in a loop until the image build droplet gets an IP. 2022-11-18 12:45:08 -08:00
setup install-transifex-cli: Upgrade Transifex CLI from 1.6.5 to 1.6.7. 2023-04-04 00:16:04 -07:00
test-install install: Support Ubuntu 22.04. 2022-02-25 14:49:07 -08:00
tests black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
wsl
zulip-export
README.md
__init__.py
build-docs tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
build-release-tarball emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
cache-zulip-git-version build-release-tarball: Override merge-base for full official releases. 2022-11-15 12:50:41 -08:00
check-capitalization tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
check-frontend-i18n docs: Capitalize Handlebars consistently. 2022-06-27 13:35:10 -07:00
check-issue-labels docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
check-openapi dependencies: Upgrade Prettier to 3.0.0-alpha.4. 2022-11-02 16:50:37 -07:00
check-provision
check-schemas node_tests: Move to web/tests. 2023-02-23 16:04:17 -08:00
check-templates emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
check-thirdparty check-thirdparty: License under GPLv2+. 2022-06-26 17:33:11 -07:00
clean-branches Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
commit-message-lint commit-message-lint: Take release branches into account. 2022-07-22 10:39:05 -07:00
commit-msg requirements: Install gitlint from its Debian package. 2021-09-17 17:05:18 -07:00
conf.ini-template
coveragerc models: Remove type prefixes from __str__ values. 2023-03-08 22:56:55 -08:00
deploy-branch Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
diagnose provision: Avoid distutils; keep PROVISION_VERSION as a tuple. 2022-07-20 22:03:30 -07:00
documentation.vnufilter dependencies: Upgrade JavaScript dependencies. 2022-10-11 10:50:57 -07:00
duplicate_commits.json
fetch-contributor-data web: Save a needless 301 redirect from /team to /team/. 2023-03-24 14:51:01 -07:00
fetch-pull-request tools: Avoid `readlink -f` in *-pull-request scripts. 2021-04-30 14:57:13 -07:00
fetch-rebase-pull-request Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
find-unused-css web: Move web app to ‘web’ directory. 2023-02-23 16:04:17 -08:00
generate-integration-docs-screenshot run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00
lint dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
message-screenshot.js puppeteer_tests: Move to web/e2e-tests. 2023-02-23 16:04:17 -08:00
pre-commit
provision docs: Rename setup-vagrant.md -> setup-recommended.md. 2022-09-15 15:54:14 -07:00
push-to-pull-request scripts: Pass --retry 3 to curl. 2022-11-08 08:07:36 -08:00
rebuild-dev-database
rebuild-test-database
release api-docs: Move markdown files to top level directory. 2023-02-02 17:25:40 -08:00
release-tarball-exclude.txt puppeteer_tests: Move to web/e2e-tests. 2023-02-23 16:04:17 -08:00
renumber-migrations black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
reset-to-pull-request tools: Avoid `readlink -f` in *-pull-request scripts. 2021-04-30 14:57:13 -07:00
review python: Use Python 3.8 shlex.join function. 2022-04-27 12:57:49 -07:00
run-codespell dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
run-dev run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00
run-mypy tools: Support running mypy daemon for better performance. 2022-07-06 17:33:13 -07:00
run-tsc
semgrep.yml semgrep: Detect some unsafe uses of markupsafe.Markup. 2023-03-22 11:23:27 -07:00
setup-git-repo
show-profile-results
stop-run-dev
tail-ses ruff: Fix RSE102 Unnecessary parentheses on raised exception. 2023-02-04 16:34:55 -08:00
test-all install-shellcheck: Upgrade ShellCheck to 0.9.0. 2023-01-04 14:01:34 -08:00
test-api test_helpers: Rename reset_emails_in_zulip_realm. 2023-03-01 12:17:11 -08:00
test-backend sentry: Provide a server-side tunnel. 2023-03-24 15:16:38 -07:00
test-documentation
test-help-documentation tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
test-js-with-node Revert "ts: Convert css_variables.js to TypeScript." 2023-04-04 10:54:01 -07:00
test-js-with-puppeteer dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
test-locked-requirements test-locked-requirements: Rename may_be_setup_cache to maybe_set_up_cache. 2022-01-12 13:21:35 -08:00
test-migrations requirements: Upgrade Python requirements. 2021-04-15 21:47:33 -07:00
test-queue-worker-reload run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00
test-run-dev run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00
test-tools tools: Use root-based absolute import for tools.lib, etc. 2021-07-05 12:21:52 -07:00
total-contributions black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
update-locked-requirements requirements: Remove unused mypy.txt lock file. 2022-09-08 11:08:06 -07:00
update-prod-static emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
update-zuliprc-api-field python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
upload-release upload-release: Update SHA256SUM for existing files if changed. 2023-01-23 17:41:29 -08:00
webpack dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
zanitizer zanitizer: Reformat with perltidy. 2021-03-24 12:12:04 -07:00
zanitizer_config.pm.sample zanitizer: Reformat with perltidy. 2021-03-24 12:12:04 -07:00

README.md

This directory contains scripts that are used in building, managing, testing, and other forms of work in a Zulip development environment. Note that tools that are also useful in production belong in scripts/ or should be Django management commands.

For more details, see https://zulip.readthedocs.io/en/latest/overview/directory-structure.html.