snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
22
templates/corporate/activity/activity.html
Normal file
22
templates/corporate/activity/activity.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "activity" %}
|
||||
|
||||
{# Template for installation activity pages #}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ title }} | Zulip analytics</title>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="activity-page">
|
||||
{% if not is_home %}
|
||||
<a class="show-all" href="/activity">Home</a>
|
||||
<br />
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
{{ data|safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
43
templates/corporate/activity/activity_table.html
Normal file
43
templates/corporate/activity/activity_table.html
Normal file
@@ -0,0 +1,43 @@
|
||||
<h3>{{ data.title }} {% if data.title_link %}{{ data.title_link }}{% endif %}</h3>
|
||||
|
||||
{% if data.title == "Remote servers" %}
|
||||
{% include "corporate/activity/remote_activity_key.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if data.header %}
|
||||
<div class="activity-header-information">
|
||||
{% for entry in data.header %}
|
||||
<p class="activity-header-entry"><b>{{ entry.name }}</b>: {{ entry.value }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ data.rows|length}} rows
|
||||
<table class="table sortable table-striped table-bordered analytics-table">
|
||||
|
||||
<thead class="activity-head">
|
||||
<tr>
|
||||
{% for col in data.cols %}
|
||||
<th>{{ col }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in data.rows %}
|
||||
<tr {% if row.row_class %}class="{{ row.row_class }}"{% endif %}>
|
||||
{% for field in row.cells %}
|
||||
<td sortable>{{ field }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
{% if data.totals %}
|
||||
<tfoot class="activity-foot">
|
||||
<tr>
|
||||
{% for total in data.totals %}
|
||||
<td>{{ total }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</tfoot>
|
||||
{% endif %}
|
||||
</table>
|
||||
164
templates/corporate/activity/installation_activity_table.html
Normal file
164
templates/corporate/activity/installation_activity_table.html
Normal file
@@ -0,0 +1,164 @@
|
||||
<h3 class="installation-activity-header">Installation activity: {{ num_active_sites }} active sites</h3>
|
||||
|
||||
<p class="installation-activity-header">{{ utctime }}</p>
|
||||
|
||||
<h4>Other views:</h4>
|
||||
<ul>
|
||||
<li><a href="/stats/installation">Server total /stats style graphs</a></li>
|
||||
<li><a href="/activity/remote">Remote servers</a></li>
|
||||
<li><a href="/activity/integrations">Integrations by client</a></li>
|
||||
{% if not export %}
|
||||
<li><a href="/activity?export=true">Export installation chart</a></li>
|
||||
{% else %}
|
||||
<li><a href="/activity">Non-export installation chart</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
<h4>Counts chart key:</h4>
|
||||
<ul>
|
||||
<li><strong>active (site)</strong> - has ≥5 DAUs</li>
|
||||
<li>sites are listed if ≥1 users active in last 2 weeks</li>
|
||||
<li><strong>user</strong> - registered user, not deactivated, not a bot</li>
|
||||
<li><strong>active (user)</strong> - sent a message, or advanced the pointer (reading messages doesn't count unless advances the pointer)</li>
|
||||
<li><strong>ARR</strong> (Annual recurring revenue) - the number of users they are paying for * annual price/user.</li>
|
||||
<li><strong>Rate</strong> - % of full price the customer pays, or will pay, if on a paid plan.</li>
|
||||
<li><strong>Links</strong>
|
||||
<ul>
|
||||
<li><strong><i class="fa fa-home"></i></strong> - realm's Zulip</li>
|
||||
<li><strong><i class="fa fa-pie-chart"></i></strong> - realm's stats page</li>
|
||||
<li><strong><i class="fa fa-gear"></i></strong> - realm's support page</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>DAU</strong> (daily active users) - users active in last 24hr</li>
|
||||
<li><strong>WAU</strong> (weekly active users) - users active in last 7 * 24hr</li>
|
||||
<li><strong>Human message</strong> - message sent by non-bot user, and not with known-bot client</li>
|
||||
</ul>
|
||||
|
||||
<div class="installation-activity-filter-container">
|
||||
<h4>Current filter: {{ current_filter }}</h4>
|
||||
<p>
|
||||
<b>Filters:</b>
|
||||
<a href="/activity?filter=all">All</a> |
|
||||
<a href="/activity?filter=demo">Demo</a> |
|
||||
<a href="/activity?filter=sponsored">100% sponsored</a> |
|
||||
<a href="/activity?filter=free">On free plan</a> |
|
||||
<a href="/activity?filter=paid">On paid plan</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<table class="table summary-table sortable table-striped table-bordered">
|
||||
|
||||
<thead class="activity-head">
|
||||
<tr>
|
||||
{% if not export %}
|
||||
<th>Links</th>
|
||||
{% endif %}
|
||||
<th>Realm</th>
|
||||
<th>Created (green if ≤12wk)</th>
|
||||
{% if billing_enabled %}
|
||||
<th>Plan type</th>
|
||||
<th>ARR</th>
|
||||
<th>Rate (%)</th>
|
||||
{% endif %}
|
||||
<th>Organization type</th>
|
||||
<th>Referrer</th>
|
||||
<th>DAU</th>
|
||||
<th>WAU</th>
|
||||
<th>Total users</th>
|
||||
<th>Bots</th>
|
||||
{% if not export %}
|
||||
<th></th>
|
||||
{% endif %}
|
||||
<th colspan=8>Human messages sent, last 8 UTC days (today-so-far first)</th>
|
||||
{% if export %}
|
||||
<th>Admin emails</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for row in rows %}
|
||||
<tr>
|
||||
{% if not export %}
|
||||
<td>
|
||||
{{ row.realm_url }}
|
||||
{{ row.stats_link }}
|
||||
{{ row.activity_link }}
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{{ row.support_link }}
|
||||
</td>
|
||||
|
||||
<td {% if row.is_new %}
|
||||
class="good" {% else %}
|
||||
class="neutral" {% endif %} >
|
||||
{{ row.date_created_day }}
|
||||
</td>
|
||||
|
||||
{% if billing_enabled %}
|
||||
<td>
|
||||
{{ row.plan_type_string }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{% if row.arr %}
|
||||
{{ row.arr }}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{% if row.effective_rate != "" %}
|
||||
{{ row.effective_rate }}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
|
||||
<td>
|
||||
{{ row.org_type_string }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ row.how_realm_creator_found_zulip }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.dau_count }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.wau_count }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.user_profile_count }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.bot_count }}
|
||||
</td>
|
||||
{% if not export %}
|
||||
<td> </td>
|
||||
{% endif %}
|
||||
{% if row.history %}
|
||||
{{ row.history|safe }}
|
||||
{% else %}
|
||||
<td colspan=8></td>
|
||||
{% endif %}
|
||||
|
||||
{% if export %}
|
||||
<td>
|
||||
{{ row.admin_emails }}
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<tfoot class="activity-foot">
|
||||
<tr>
|
||||
{% for total in totals %}
|
||||
<td>{{ total }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
23
templates/corporate/activity/remote_activity_key.html
Normal file
23
templates/corporate/activity/remote_activity_key.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<h4>Chart key:</h4>
|
||||
<ul>
|
||||
<li><strong>Server mobile pushes</strong>
|
||||
<ul>
|
||||
<li>Count of forwarded push notifications in last 7 days</li>
|
||||
<li>Includes today's current count</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>ARR</strong> (annual recurring revenue)
|
||||
<ul>
|
||||
<li>If plan has a fixed price, displays that value</li>
|
||||
<li>Otherwise, is an estimate based on the current users multiplied by annual price per user</li>
|
||||
<li>Currently, does not account for first year, flat $20 discount per month</li>
|
||||
<li>Plans with status of <strong>Free trial</strong> show estimated revenue for full year</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Links</strong>
|
||||
<ul>
|
||||
<li><strong><i class="fa fa-pie-chart"></i></strong> - remote server's stats page</li>
|
||||
<li><strong><i class="fa fa-gear"></i></strong> - remote server's support page</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
Reference in New Issue
Block a user