zulip/tools
Shubham Padia a29da706a7 integrations: Integrations page should no longer be an SPA.
Decision made in https://chat.zulip.org/#narrow/channel/19-documentation/topic/integrations.20docs.20per-page.20info/near/2268569

Integrations and the related docs were all running as an SPA. But to run
them in single page, we had a lot of logic on the frontend to make this
happen. We noticed that we missed to replicate page title changes on the
frontend. With the added burden of maintaining that integrations.ts page
navigation code and the uncertainty of not knowing what we might have
missed to replicate on the frontend, we decided to just render all the
pages server side while keeping our search on the backend.

This commit splits index.html into two templates, catalog.html for
integrations catalog and doc.html for the individual integration details
page.

We use a @typed_endpoint instead of a class based view since there are
very few class based views left in our codebase and this felt like a
nice opportunity to have integrations use them as well.

We port over any special non-navigation logic we were doing in
integrations.ts serverside.

We used to use animations for the lozenges when changing categories, we
don't do that anymore, since every category is a new page fetch and
animation does not make sense in that case.

We also port over the logic of adding the `without-category` class to
the lozenge icon on the indivdidual integration doc page.

We have a few integrations with legacy set to true. We used to set
their display to none in the CSS for the catalog page and we used to
remove that legacy class in integrations.ts for the individual doc page.
We remove legacy integrations from `visible_integrations` now, while the
individual doc page of the legacy integration works just fine without
the use of `legacy` class anywhere.
2025-11-07 13:29:34 -08:00
..
ci release-checklist: Prescribe docker build --pull. 2025-09-30 16:35:21 -07:00
documentation_crawler documentation_crawler: Remove wrongly inverted skip_check_fragment flag. 2025-09-03 16:21:23 -07:00
droplets ruff: Fix FURB122 Use of f.write in a for loop. 2025-06-25 11:49:02 -07:00
i18n i18n: Properly handle when a locale is removed from Weblate. 2025-10-27 09:05:06 -07:00
lib info_overlay: Use internationalized strings in keyboard shortcut tab. 2025-10-01 16:54:12 -07:00
linter_lib integrations: Integrations page should no longer be an SPA. 2025-11-07 13:29:34 -08:00
node_lib web: Set "type": "module" and convert various CJS files to ESM. 2024-11-13 09:18:56 -08:00
oneclickapps ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
screenshots integrations: Migrate channel name from Integration to ScreenshotConfig. 2025-11-03 16:08:06 -08:00
setup emoji: Fix aliases for dotted_six_pointed_star. 2025-10-17 15:34:16 -07:00
test-install Remove support for Ubuntu 20.04 and Debian 11. 2024-04-01 13:27:39 -07:00
tests tools: Enforce '_html' suffix for unescaped hbs vars. 2025-08-28 17:33:20 -07:00
zulip-export message: Remove unused recipient_id. 2025-09-09 09:20:40 -07:00
__init__.py
backport-pull-request backport: Fix the commit-ids that are used. 2024-05-06 14:47:22 -07:00
build-docs
build-help-center help: Serve help center build without relative links for zulip.com. 2025-09-03 09:28:15 -07:00
build-release-tarball help: Include dist in release tarball and exclude source code. 2025-10-01 13:10:13 -07:00
cache-zulip-git-version
check-capitalization python: Mark regexes as raw strings. 2024-04-26 12:30:31 -07:00
check-feature-level-updated github_actions: Check if feature levels are updated in API docs. 2025-07-09 09:33:55 -07:00
check-frontend-i18n docs: Explain web app translations before server, and use those terms. 2025-01-31 14:32:47 -08:00
check-issue-labels ruff: Fix PLC1802 len(…) used as condition without comparison. 2025-03-14 17:31:50 -07:00
check-openapi.ts check-openapi: Convert to TypeScript. 2025-09-04 17:02:06 -07:00
check-provision
check-schemas check_schemas: Update event.cjs file name. 2025-10-08 17:05:51 -07:00
check-templates ruff: Fix UP035 Import from collections.abc, typing instead. 2024-07-13 22:28:22 -07:00
check-thirdparty
clean-branches
closed-by-commits closed_by_commits: Add a tool to review issues closed in a commit range. 2025-11-06 11:17:24 -08:00
commit-message-lint
commit-msg
conf.ini-template
coveragerc
create-api-changelog tools: Update docs for create-api-changelog tool. 2025-05-21 12:04:45 -07:00
deploy-branch
diagnose requirements: Migrate to uv. 2025-02-24 22:29:24 -08:00
documentation.vnufilter test-documentation: Remove unneeded HTML validation exemptions. 2025-06-04 16:52:08 -07:00
duplicate_commits.json
fetch-contributor-data install: Remove --cacert and CUSTOM_CA_CERTIFICATES. 2025-02-24 22:29:24 -08:00
fetch-pull-request
fetch-rebase-pull-request
find-unused-css
github-changes-contain-file tools: Fix a linter issue caught by semgrep. 2025-10-23 14:33:58 -07:00
lint check-openapi: Convert to TypeScript. 2025-09-04 17:02:06 -07:00
merge-api-changelogs tools: Add support for viewing updated changelog for testing. 2025-07-02 11:34:34 -07:00
notify-if-api-docs-changed tools: Check if feature level is changed before sending message. 2025-11-07 10:11:16 -08:00
pre-commit
provision requirements: Migrate to uv. 2025-02-24 22:29:24 -08:00
push-to-pull-request push-to-pull-request: Accept intermixed options and arguments again. 2024-02-01 17:08:44 -08:00
python-warnings.bash requirements: Upgrade Python requirements. 2025-09-30 16:47:54 -07:00
README.md
rebuild-dev-database
rebuild-test-database refactor: Rename huddle to direct_message_group in non api files. 2024-07-31 23:25:56 -07:00
release release: Parse version.py using the language it was written in. 2024-07-25 13:17:49 -07:00
release-tarball-exclude.txt help: Include dist in release tarball and exclude source code. 2025-10-01 13:10:13 -07:00
renumber-migrations ruff: Fix SIM115 Use a context manager for opening files. 2024-10-20 18:16:27 -07:00
reset-to-pull-request
review ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
run-codespell
run-dev help: Redirect web app URLs to web app proxy port. 2025-10-06 22:21:39 -07:00
run-mypy ruff: Fix SIM905 Consider using a list literal instead of str.split. 2025-03-14 17:31:50 -07:00
run-tsc
semgrep-py.yml semgrep: Lint unnecessary type=str in argparse. 2025-10-17 15:34:34 -07:00
setup-git-repo
show-profile-results
stop-run-dev
tail-ses ruff: Fix RUF059 Unpacked variable is never used. 2025-09-30 16:47:54 -07:00
test-all starlight_help: Use ‘astro check’ for development only. 2025-09-10 09:44:44 -07:00
test-api groups: Use realm_for_sharding for limiting NamedUserGroup queries. 2025-09-23 12:15:53 -07:00
test-backend zephyr: Remove Zephyr mirroring support. 2025-09-16 11:18:18 -07:00
test-documentation ruff: Fix UP035 Import from collections.abc, typing instead. 2024-07-13 22:28:22 -07:00
test-help-documentation documentation_crawler: Remove wrongly inverted skip_check_fragment flag. 2025-09-03 16:21:23 -07:00
test-js-with-node reload_setup: Convert module to typescript. 2025-11-05 15:05:59 -08:00
test-js-with-puppeteer install-node: Upgrade Node.js from 22.17.1 to 22.18.0. 2025-08-14 21:37:50 -07:00
test-migrations
test-queue-worker-reload ruff: Fix UP007 Use X | Y for type annotations. 2024-07-13 22:28:22 -07:00
test-run-dev ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
test-tools requirements: Migrate to uv. 2025-02-24 22:29:24 -08:00
total-contributions total-contributions: Use a more complete set of repositories. 2025-10-02 12:11:43 -07:00
update-prod-static help: Serve help center build without relative links for zulip.com. 2025-09-03 09:28:15 -07:00
update-zuliprc-api-field
upload-release python: Simplify with str.removeprefix, str.removesuffix. 2024-09-03 12:30:16 -07:00
webpack install-node: Upgrade Node.js from 22.17.1 to 22.18.0. 2025-08-14 21:37:50 -07:00
zanitizer
zanitizer_config.pm.sample

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.