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:
24
starlight_help/.gitignore
vendored
Normal file
24
starlight_help/.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# build output
|
||||
dist/
|
||||
dist_no_relative_links/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
*.md
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
801
starlight_help/astro.config.mjs
Normal file
801
starlight_help/astro.config.mjs
Normal file
@@ -0,0 +1,801 @@
|
||||
// @ts-check
|
||||
|
||||
import * as fs from "node:fs";
|
||||
|
||||
import starlight from "@astrojs/starlight";
|
||||
import {defineConfig, envField} from "astro/config";
|
||||
import compressor from "astro-compressor";
|
||||
import Icons from "unplugin-icons/vite";
|
||||
|
||||
/**
|
||||
* @returns {import("vite").PluginOption}
|
||||
*/
|
||||
function createRedirectPlugin() {
|
||||
const proxyPort = process.env.ZULIP_WEB_APP_PROXY_PORT || "9991";
|
||||
// Astro and starlight middlewares run after astro's vite middleware,
|
||||
// which gives error before our logic here could run, so the only option
|
||||
// left with us was to use a vite plugin.
|
||||
return {
|
||||
name: "redirect-plugin",
|
||||
enforce: "post",
|
||||
/**
|
||||
* configureServer only runs in development mode, we handle the redirects
|
||||
* in production using nginx.
|
||||
* @param {import("vite").ViteDevServer} server
|
||||
*/
|
||||
configureServer(server) {
|
||||
return () => {
|
||||
// The method exposed by the connect app at server.middlewares is `use`.
|
||||
// But `use` appends our middleware at the end of the stack, before which
|
||||
// the trailingSlashMiddleware of astro runs and gives an error before it
|
||||
// can reach our middleware. `stack.unshift` ensures our middleware runs
|
||||
// first.
|
||||
server.middlewares.stack.unshift({
|
||||
route: "",
|
||||
/**
|
||||
* @param {import("http").IncomingMessage} req
|
||||
* @param {import("http").ServerResponse} res
|
||||
* @param {Function} next
|
||||
*/
|
||||
handle(req, res, next) {
|
||||
// Canonical URL for the root of the help center is /help/,
|
||||
// but for all other help URLs, there should be no trailingSlash.
|
||||
// We have set trailingSlash to never in astro. Setting it to ignore
|
||||
// will make our /help/ work, but it causes sidebar and other
|
||||
// components to generate links with a trailingSlash at the end. So
|
||||
// we manually handle this case.
|
||||
if (req.url === "/help/") {
|
||||
req.url = "/help";
|
||||
}
|
||||
|
||||
// Help center dev server often runs on a port different than
|
||||
// the web app. We have relative URLs pointing to the web app
|
||||
// in the help center, but they are not on the port help center
|
||||
// is running on. We redirect here to our web app proxy port.
|
||||
// We skip redirect for non-document requests since astro assets
|
||||
// don't have the /help prefix.
|
||||
if (
|
||||
req.url &&
|
||||
!req.url.startsWith("/help") &&
|
||||
req.headers.accept?.includes("text/html")
|
||||
) {
|
||||
const host = req.headers.host || "localhost";
|
||||
const redirectUrl = new URL(req.url, `http://${host}`);
|
||||
// We run help center on the proxy port in case of
|
||||
// run-dev being run with `--only-help-center` flag.
|
||||
if (redirectUrl.port !== proxyPort) {
|
||||
redirectUrl.port = proxyPort;
|
||||
res.writeHead(302, {Location: redirectUrl.href});
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
next();
|
||||
},
|
||||
});
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
base: "help",
|
||||
compressHTML: "jsx",
|
||||
trailingSlash: "never",
|
||||
vite: {
|
||||
plugins: [
|
||||
// eslint-disable-next-line new-cap
|
||||
Icons({
|
||||
compiler: "astro",
|
||||
customCollections: {
|
||||
// unplugin-icons has a FileSystemIconLoader which is more
|
||||
// versatile. But it only supports one directory path for
|
||||
// a single set of icons. We should start using that loader
|
||||
// if they add support for multiple paths in the future.
|
||||
async "zulip-icon"(iconName) {
|
||||
const iconsPath = `../web/icons/${iconName}.svg`;
|
||||
|
||||
if (fs.existsSync(iconsPath)) {
|
||||
return await fs.promises.readFile(iconsPath, "utf8");
|
||||
}
|
||||
throw new Error("Zulip icon not found.");
|
||||
},
|
||||
},
|
||||
iconCustomizer(collection, icon, props) {
|
||||
if (collection === "zulip-icon" || collection === "fa") {
|
||||
// We need to override some default starlight behaviour to make
|
||||
// icons look nice, see the css for this class to see the reasoning
|
||||
// for each individual override of the default css.
|
||||
props.class = "zulip-unplugin-icon";
|
||||
|
||||
if (collection === "zulip-icon" && icon.startsWith("user-circle-")) {
|
||||
const iconSuffix = icon.replace("user-circle-", "");
|
||||
props.class = `zulip-unplugin-icon user-circle user-circle-${iconSuffix}`;
|
||||
}
|
||||
}
|
||||
},
|
||||
}),
|
||||
createRedirectPlugin(),
|
||||
],
|
||||
ssr: {
|
||||
noExternal: ["zod"],
|
||||
},
|
||||
},
|
||||
env: {
|
||||
schema: {
|
||||
SHOW_RELATIVE_LINKS: envField.boolean({
|
||||
context: "client",
|
||||
access: "public",
|
||||
optional: true,
|
||||
default: true,
|
||||
}),
|
||||
CORPORATE_ENABLED: envField.boolean({
|
||||
context: "client",
|
||||
access: "public",
|
||||
optional: true,
|
||||
default: true,
|
||||
}),
|
||||
SUPPORT_EMAIL: envField.string({
|
||||
context: "client",
|
||||
access: "public",
|
||||
optional: true,
|
||||
default: "zulip-admin@example.com",
|
||||
}),
|
||||
},
|
||||
},
|
||||
integrations: [
|
||||
compressor({
|
||||
gzip: true,
|
||||
brotli: false,
|
||||
zstd: false,
|
||||
}),
|
||||
starlight({
|
||||
title: "Zulip help center",
|
||||
favicon: "../static/images/favicon.svg",
|
||||
components: {
|
||||
Footer: "./src/components/Footer.astro",
|
||||
Head: "./src/components/Head.astro",
|
||||
Sidebar: "./src/components/Sidebar.astro",
|
||||
},
|
||||
pagination: false,
|
||||
routeMiddleware: "./src/route_data.ts",
|
||||
customCss: ["./src/styles/main.css"],
|
||||
sidebar: [
|
||||
{
|
||||
label: "Zulip homepage",
|
||||
link: "https://zulip.com",
|
||||
attrs: {
|
||||
class: "external-icon-sidebar",
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Help center home",
|
||||
slug: "index",
|
||||
},
|
||||
{
|
||||
label: "Guides for getting started",
|
||||
items: [
|
||||
{
|
||||
label: "Getting started",
|
||||
link: "/getting-started-with-zulip",
|
||||
},
|
||||
{
|
||||
label: "Choosing a team chat app",
|
||||
link: "https://blog.zulip.com/2024/11/04/choosing-a-team-chat-app/",
|
||||
attrs: {
|
||||
class: "external-icon-sidebar",
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Why Zulip",
|
||||
link: "https://zulip.com/why-zulip/",
|
||||
attrs: {
|
||||
class: "external-icon-sidebar",
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
},
|
||||
},
|
||||
"trying-out-zulip",
|
||||
{
|
||||
label: "Zulip Cloud or self-hosting?",
|
||||
link: "/zulip-cloud-or-self-hosting",
|
||||
},
|
||||
"moderating-open-organizations",
|
||||
"setting-up-zulip-for-a-class",
|
||||
"using-zulip-for-a-class",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Guides for moving from another app",
|
||||
items: [
|
||||
"migrating-from-other-chat-tools",
|
||||
"moving-to-zulip",
|
||||
"moving-from-slack",
|
||||
"moving-from-teams",
|
||||
"moving-from-discord",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Getting started",
|
||||
items: [
|
||||
"create-an-organization",
|
||||
"demo-organizations",
|
||||
"join-a-zulip-organization",
|
||||
"set-up-your-account",
|
||||
"introduction-to-topics",
|
||||
{
|
||||
label: "Starting a new topic",
|
||||
link: "/introduction-to-topics#how-to-start-a-new-topic",
|
||||
},
|
||||
"finding-a-conversation-to-read",
|
||||
"reading-conversations",
|
||||
"starting-a-new-direct-message",
|
||||
"replying-to-messages",
|
||||
"messaging-tips",
|
||||
"keyboard-shortcuts",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Setting up your organization",
|
||||
items: [
|
||||
"create-your-organization-profile",
|
||||
"create-user-groups",
|
||||
"customize-organization-settings",
|
||||
"create-channels",
|
||||
"customize-settings-for-new-users",
|
||||
"invite-users-to-join",
|
||||
{
|
||||
label: "Set up integrations",
|
||||
link: "/integrations-overview",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Account basics",
|
||||
items: [
|
||||
"edit-your-profile",
|
||||
"change-your-name",
|
||||
"change-your-email-address",
|
||||
"change-your-profile-picture",
|
||||
"change-your-password",
|
||||
"configure-email-visibility",
|
||||
"logging-in",
|
||||
"logging-out",
|
||||
"switching-between-organizations",
|
||||
"import-your-settings",
|
||||
"review-your-settings",
|
||||
"protect-your-account",
|
||||
"deactivate-your-account",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Preferences",
|
||||
items: [
|
||||
"dark-theme",
|
||||
"font-size",
|
||||
"line-spacing",
|
||||
"configure-send-message-keys",
|
||||
"change-your-language",
|
||||
"change-your-timezone",
|
||||
"change-the-time-format",
|
||||
"configure-emoticon-translations",
|
||||
"configure-home-view",
|
||||
"enable-full-width-display",
|
||||
"manage-your-uploaded-files",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Guides for mastering Zulip",
|
||||
items: [
|
||||
"keyboard-shortcuts",
|
||||
"reading-strategies",
|
||||
"mastering-the-compose-box",
|
||||
"format-your-message-using-markdown",
|
||||
{
|
||||
label: "Search filters",
|
||||
link: "/search-for-messages#search-filters",
|
||||
},
|
||||
"using-zulip-via-email",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Writing messages",
|
||||
items: [
|
||||
"format-your-message-using-markdown",
|
||||
"mention-a-user-or-group",
|
||||
{
|
||||
label: "Link to a channel, topic or message",
|
||||
link: "/link-to-a-message-or-conversation",
|
||||
},
|
||||
"format-a-quote",
|
||||
"quote-or-forward-a-message",
|
||||
"emoji-and-emoticons",
|
||||
"insert-a-link",
|
||||
"saved-snippets",
|
||||
"share-and-upload-files",
|
||||
{
|
||||
label: "Animated GIFs",
|
||||
link: "/animated-gifs",
|
||||
},
|
||||
"text-emphasis",
|
||||
"paragraph-and-section-formatting",
|
||||
"bulleted-lists",
|
||||
"numbered-lists",
|
||||
"indent-a-list-item",
|
||||
"tables",
|
||||
"code-blocks",
|
||||
"latex",
|
||||
"spoilers",
|
||||
"me-action-messages",
|
||||
"create-a-poll",
|
||||
"collaborative-to-do-lists",
|
||||
"global-times",
|
||||
"start-a-call",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Sending messages",
|
||||
items: [
|
||||
"open-the-compose-box",
|
||||
"mastering-the-compose-box",
|
||||
"resize-the-compose-box",
|
||||
"typing-notifications",
|
||||
{
|
||||
label: "Preview messages before sending",
|
||||
link: "/preview-your-message-before-sending",
|
||||
},
|
||||
{
|
||||
label: "Verify a message was sent",
|
||||
link: "/verify-your-message-was-successfully-sent",
|
||||
},
|
||||
"edit-a-message",
|
||||
"delete-a-message",
|
||||
"view-and-edit-your-message-drafts",
|
||||
"schedule-a-message",
|
||||
"message-a-channel-by-email",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Reading messages",
|
||||
items: [
|
||||
"reading-strategies",
|
||||
"inbox",
|
||||
"recent-conversations",
|
||||
"combined-feed",
|
||||
"channel-feed",
|
||||
"list-of-topics",
|
||||
"left-sidebar",
|
||||
"message-actions",
|
||||
"marking-messages-as-read",
|
||||
"marking-messages-as-unread",
|
||||
"configure-unread-message-counters",
|
||||
{
|
||||
label: "Configure where you land",
|
||||
link: "/configure-where-you-land",
|
||||
},
|
||||
"emoji-reactions",
|
||||
"view-your-mentions",
|
||||
"star-a-message",
|
||||
"schedule-a-reminder",
|
||||
"view-images-and-videos",
|
||||
"view-messages-sent-by-a-user",
|
||||
"link-to-a-message-or-conversation",
|
||||
"search-for-messages",
|
||||
"scroll-to-date",
|
||||
"printing-messages",
|
||||
{
|
||||
label: "View message content as Markdown",
|
||||
link: "/view-the-markdown-source-of-a-message",
|
||||
},
|
||||
{
|
||||
label: "View when message was sent",
|
||||
link: "/view-the-exact-time-a-message-was-sent",
|
||||
},
|
||||
"view-a-messages-edit-history",
|
||||
"collapse-a-message",
|
||||
"report-a-message",
|
||||
"read-receipts",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "People",
|
||||
items: [
|
||||
"introduction-to-users",
|
||||
"user-list",
|
||||
"status-and-availability",
|
||||
"user-cards",
|
||||
"view-someones-profile",
|
||||
"direct-messages",
|
||||
"find-administrators",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Groups",
|
||||
items: ["user-groups", "view-group-members"],
|
||||
},
|
||||
{
|
||||
label: "Channels",
|
||||
items: [
|
||||
"introduction-to-channels",
|
||||
{
|
||||
label: "Subscribe to a channel",
|
||||
link: "/introduction-to-channels#browse-and-subscribe-to-channels",
|
||||
},
|
||||
"create-a-channel",
|
||||
"pin-a-channel",
|
||||
"change-the-color-of-a-channel",
|
||||
"channel-folders",
|
||||
"unsubscribe-from-a-channel",
|
||||
"manage-inactive-channels",
|
||||
"move-content-to-another-channel",
|
||||
"view-channel-information",
|
||||
"view-channel-subscribers",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Topics",
|
||||
items: [
|
||||
"introduction-to-topics",
|
||||
"rename-a-topic",
|
||||
"resolve-a-topic",
|
||||
"move-content-to-another-topic",
|
||||
"general-chat-topic",
|
||||
"delete-a-topic",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Notifications",
|
||||
items: [
|
||||
"channel-notifications",
|
||||
"topic-notifications",
|
||||
"follow-a-topic",
|
||||
"dm-mention-alert-notifications",
|
||||
"mute-a-channel",
|
||||
"mute-a-topic",
|
||||
"mute-a-user",
|
||||
"email-notifications",
|
||||
"desktop-notifications",
|
||||
"mobile-notifications",
|
||||
{
|
||||
label: "Do Not Disturb",
|
||||
link: "/do-not-disturb",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Apps",
|
||||
items: [
|
||||
{
|
||||
label: "Download apps",
|
||||
link: "https://zulip.com/apps/",
|
||||
attrs: {
|
||||
class: "external-icon-sidebar",
|
||||
target: "_blank",
|
||||
rel: "noopener noreferrer",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Mobile app installation guides",
|
||||
link: "/mobile-app-install-guide",
|
||||
},
|
||||
{
|
||||
label: "Desktop installation guides",
|
||||
link: "/desktop-app-install-guide",
|
||||
},
|
||||
"supported-browsers",
|
||||
{
|
||||
label: "Configure how links open",
|
||||
link: "/configure-how-links-open",
|
||||
},
|
||||
"connect-through-a-proxy",
|
||||
"custom-certificates",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Zulip administration",
|
||||
link: "#",
|
||||
attrs: {
|
||||
class: "non-clickable-sidebar-heading",
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Organization profile",
|
||||
items: [
|
||||
"organization-type",
|
||||
{
|
||||
label: "Communities directory",
|
||||
link: "/communities-directory",
|
||||
},
|
||||
"linking-to-zulip",
|
||||
"change-organization-url",
|
||||
"deactivate-your-organization",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Import an organization",
|
||||
items: [
|
||||
"import-from-mattermost",
|
||||
"import-from-microsoft-teams",
|
||||
"import-from-slack",
|
||||
"import-from-rocketchat",
|
||||
"export-your-organization",
|
||||
{
|
||||
label: "Zulip Cloud to self-hosting",
|
||||
link: "/cloud-to-self-hosting",
|
||||
},
|
||||
{
|
||||
label: "Self-hosting to Zulip Cloud",
|
||||
link: "/self-hosting-to-cloud",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Account creation and authentication",
|
||||
items: [
|
||||
{
|
||||
label: "Configure default new user settings",
|
||||
link: "/configure-default-new-user-settings",
|
||||
},
|
||||
"configure-default-profile-pictures",
|
||||
"custom-profile-fields",
|
||||
"invite-new-users",
|
||||
"restrict-account-creation",
|
||||
"configure-authentication-methods",
|
||||
"saml-authentication",
|
||||
"scim",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "User management",
|
||||
items: [
|
||||
"manage-a-user",
|
||||
"deactivate-or-reactivate-a-user",
|
||||
"change-a-users-name",
|
||||
"manage-user-channel-subscriptions",
|
||||
"manage-user-group-membership",
|
||||
"reset-settings-for-users",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Channel management",
|
||||
items: [
|
||||
"create-a-channel",
|
||||
{
|
||||
label: "Private channels",
|
||||
link: "/channel-permissions#private-channels",
|
||||
},
|
||||
{
|
||||
label: "Public channels",
|
||||
link: "/channel-permissions#public-channels",
|
||||
},
|
||||
"public-access-option",
|
||||
"general-chat-channels",
|
||||
"manage-channel-folders",
|
||||
"channel-permissions",
|
||||
"channel-posting-policy",
|
||||
"configure-who-can-start-new-topics",
|
||||
"configure-who-can-administer-a-channel",
|
||||
"configure-who-can-create-channels",
|
||||
{
|
||||
label: "Configure who can subscribe",
|
||||
link: "/configure-who-can-subscribe",
|
||||
},
|
||||
{
|
||||
label: "Configure who can subscribe others",
|
||||
link: "/configure-who-can-invite-to-channels",
|
||||
},
|
||||
{
|
||||
label: "Configure who can unsubscribe anyone",
|
||||
link: "/configure-who-can-unsubscribe-others",
|
||||
},
|
||||
"subscribe-users-to-a-channel",
|
||||
"unsubscribe-users-from-a-channel",
|
||||
"set-default-channels-for-new-users",
|
||||
"rename-a-channel",
|
||||
"change-the-channel-description",
|
||||
"pin-information",
|
||||
"change-the-privacy-of-a-channel",
|
||||
"enable-mobile-notifications-by-default",
|
||||
{
|
||||
label: "Delete or archive a channel",
|
||||
link: "/archive-a-channel",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Permissions management",
|
||||
items: [
|
||||
"manage-permissions",
|
||||
"manage-user-groups",
|
||||
"deactivate-a-user-group",
|
||||
"user-roles",
|
||||
"guest-users",
|
||||
"restrict-direct-messages",
|
||||
"restrict-wildcard-mentions",
|
||||
{
|
||||
label: "Restrict message editing",
|
||||
link: "/restrict-message-editing-and-deletion",
|
||||
},
|
||||
"restrict-message-edit-history-access",
|
||||
"restrict-moving-messages",
|
||||
"restrict-resolving-topics",
|
||||
"restrict-name-and-email-changes",
|
||||
"restrict-profile-picture-changes",
|
||||
"restrict-permissions-of-new-members",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Organization settings",
|
||||
items: [
|
||||
{
|
||||
label: "Configure organization language",
|
||||
link: "/configure-organization-language",
|
||||
},
|
||||
"custom-emoji",
|
||||
"configure-call-provider",
|
||||
"add-a-custom-linkifier",
|
||||
{
|
||||
label: "Require topics in channel messages",
|
||||
link: "/require-topics",
|
||||
},
|
||||
"image-video-and-website-previews",
|
||||
"hide-message-content-in-emails",
|
||||
"message-retention-policy",
|
||||
"enable-moderation-requests",
|
||||
"digest-emails",
|
||||
"disable-welcome-emails",
|
||||
"configure-a-custom-welcome-message",
|
||||
"configure-automated-notices",
|
||||
"configure-multi-language-search",
|
||||
"analytics",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Bots & integrations",
|
||||
items: [
|
||||
"bots-overview",
|
||||
"integrations-overview",
|
||||
"add-a-bot-or-integration",
|
||||
{
|
||||
label: "Generate integration URL",
|
||||
link: "/generate-integration-url",
|
||||
},
|
||||
"manage-a-bot",
|
||||
"deactivate-or-reactivate-a-bot",
|
||||
"request-an-integration",
|
||||
{
|
||||
label: "Restrict bot creation",
|
||||
link: "/restrict-bot-creation",
|
||||
},
|
||||
"view-your-bots",
|
||||
"view-all-bots-in-your-organization",
|
||||
"non-webhook-integrations",
|
||||
"writing-bots",
|
||||
"interactive-bots-api",
|
||||
"writing-tests-for-interactive-bots",
|
||||
"running-bots",
|
||||
"deploying-bots",
|
||||
"outgoing-webhooks",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Support",
|
||||
items: [
|
||||
"view-zulip-version",
|
||||
"zulip-cloud-billing",
|
||||
{
|
||||
label: "Self-hosted billing",
|
||||
link: "/self-hosted-billing",
|
||||
},
|
||||
"gdpr-compliance",
|
||||
{
|
||||
label: "Move to Zulip Cloud",
|
||||
link: "/move-to-zulip-cloud",
|
||||
},
|
||||
"support-zulip-project",
|
||||
"linking-to-zulip-website",
|
||||
"contact-support",
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "◀ Back to Zulip",
|
||||
link: "../",
|
||||
},
|
||||
],
|
||||
}),
|
||||
],
|
||||
// Redirects in astro are just directories with index.html inside
|
||||
// them doing the redirect we define in the value. The base of
|
||||
// /help/ will apply to the keys in the list below but we will
|
||||
// have to prepend /help/ in the redirect URL.
|
||||
redirects: {
|
||||
"pm-mention-alert-notifications": "/help/dm-mention-alert-notifications",
|
||||
"restrict-private-messages": "/help/restrict-direct-messages",
|
||||
"reading-pms": "/help/direct-messages",
|
||||
"private-messages": "/help/direct-messages",
|
||||
"configure-who-can-edit-topics": "/help/restrict-moving-messages",
|
||||
"configure-message-editing-and-deletion": "/help/restrict-message-editing-and-deletion",
|
||||
"restrict-visibility-of-email-addresses": "/help/configure-email-visibility",
|
||||
"change-default-view": "/help/configure-default-view",
|
||||
"recent-topics": "/help/recent-conversations",
|
||||
"add-custom-profile-fields": "/help/custom-profile-fields",
|
||||
"enable-enter-to-send": "/help/configure-send-message-keys",
|
||||
"change-the-default-language-for-your-organization":
|
||||
"/help/configure-organization-language",
|
||||
"delete-a-stream": "/help/archive-a-channel",
|
||||
"archive-a-stream": "/help/archive-a-channel",
|
||||
"change-the-topic-of-a-message": "/help/rename-a-topic",
|
||||
"configure-missed-message-emails": "/help/email-notifications",
|
||||
"add-an-alert-word": "/help/dm-mention-alert-notifications#alert-words",
|
||||
"test-mobile-notifications": "/help/mobile-notifications",
|
||||
"troubleshooting-desktop-notifications":
|
||||
"/help/desktop-notifications#troubleshooting-desktop-notifications",
|
||||
"change-notification-sound": "/help/desktop-notifications#change-notification-sound",
|
||||
"configure-message-notification-emails": "/help/email-notifications",
|
||||
"disable-new-login-emails": "/help/email-notifications#new-login-emails",
|
||||
// The `help/about-streams-and-topics` and `help/streams-and-topics` redirects are particularly
|
||||
// important, because the old URLs appear in links from Welcome Bot messages.
|
||||
"about-streams-and-topics": "/help/introduction-to-topics",
|
||||
"streams-and-topics": "/help/introduction-to-topics",
|
||||
"community-topic-edits": "/help/restrict-moving-messages",
|
||||
"only-allow-admins-to-add-emoji": "/help/custom-emoji#change-who-can-add-custom-emoji",
|
||||
"configure-who-can-add-custom-emoji": "/help/custom-emoji#change-who-can-add-custom-emoji",
|
||||
"add-custom-emoji": "/help/custom-emoji",
|
||||
"night-mode": "/help/dark-theme",
|
||||
"enable-emoticon-translations": "/help/configure-emoticon-translations",
|
||||
"web-public-streams": "/help/public-access-option",
|
||||
"starting-a-new-private-thread": "/help/starting-a-new-direct-message",
|
||||
"edit-or-delete-a-message": "/help/delete-a-message",
|
||||
"start-a-new-topic": "/help/starting-a-new-topic",
|
||||
"configure-default-view": "/help/configure-home-view",
|
||||
"reading-topics": "/help/reading-conversations",
|
||||
"finding-a-topic-to-read": "/help/finding-a-conversation-to-read",
|
||||
"view-and-browse-images": "/help/view-images-and-videos",
|
||||
"bots-and-integrations": "/help/bots-overview",
|
||||
"configure-notification-bot": "/help/configure-automated-notices",
|
||||
"all-messages": "/help/combined-feed",
|
||||
"create-streams": "/help/create-channels",
|
||||
"create-a-stream": "/help/create-a-channel",
|
||||
"message-a-stream-by-email": "/help/message-a-channel-by-email",
|
||||
"browse-and-subscribe-to-streams": "/help/browse-and-subscribe-to-channels",
|
||||
"unsubscribe-from-a-stream": "/help/unsubscribe-from-a-channel",
|
||||
"view-stream-subscribers": "/help/view-channel-subscribers",
|
||||
"add-or-remove-users-from-a-stream": "/help/subscribe-users-to-a-channel",
|
||||
"pin-a-stream": "/help/pin-a-channel",
|
||||
"change-the-color-of-a-stream": "/help/change-the-color-of-a-channel",
|
||||
"move-content-to-another-stream": "/help/move-content-to-another-channel",
|
||||
"manage-inactive-streams": "/help/manage-inactive-channels",
|
||||
"stream-notifications": "/help/channel-notifications",
|
||||
"mute-a-stream": "/help/mute-a-channel",
|
||||
"manage-user-stream-subscriptions": "/help/manage-user-channel-subscriptions",
|
||||
"stream-permissions": "/help/channel-permissions",
|
||||
"stream-sending-policy": "/help/channel-posting-policy",
|
||||
"configure-who-can-create-streams": "/help/configure-who-can-create-channels",
|
||||
"configure-who-can-invite-to-streams": "/help/configure-who-can-invite-to-channels",
|
||||
"set-default-streams-for-new-users": "/help/set-default-channels-for-new-users",
|
||||
"rename-a-stream": "/help/rename-a-channel",
|
||||
"change-the-stream-description": "/help/change-the-channel-description",
|
||||
"change-the-privacy-of-a-stream": "/help/change-the-privacy-of-a-channel",
|
||||
"channels-and-topics": "/help/introduction-to-topics",
|
||||
"starting-a-new-topic": "/help/introduction-to-topics#how-to-start-a-new-topic",
|
||||
"browse-and-subscribe-to-channels":
|
||||
"/help/introduction-to-channels#browse-and-subscribe-to-channels",
|
||||
"allow-image-link-previews": "/help/image-video-and-website-previews",
|
||||
"getting-your-organization-started-with-zulip": "/help/moving-to-zulip",
|
||||
"quote-and-reply": "/help/quote-or-forward-a-message",
|
||||
"change-a-users-role": "/help/user-roles",
|
||||
"roles-and-permissions": "/help/user-roles",
|
||||
"add-or-remove-users-from-a-channel": "/help/subscribe-users-to-a-channel",
|
||||
"disable-message-edit-history": "/help/restrict-message-edit-history-access",
|
||||
"edit-a-bot": "/help/manage-a-bot",
|
||||
"reading-dms": "/help/direct-messages",
|
||||
"set-up-integrations": "/help/integrations-overview",
|
||||
"animated-gifs-from-giphy": "/help/animated-gifs",
|
||||
},
|
||||
});
|
||||
54
starlight_help/package.json
Normal file
54
starlight_help/package.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"name": "starlight_help",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"start": "astro dev",
|
||||
"check": "astro check",
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/starlight": "^0.41.1",
|
||||
"@iconify-json/fa": "^1.2.1",
|
||||
"astro": "^7.1.4",
|
||||
"astro-compressor": "^1.1.2",
|
||||
"hast-util-from-html": "^2.0.3",
|
||||
"hast-util-to-html": "^9.0.5",
|
||||
"mdast-util-to-string": "^4.0.0",
|
||||
"remark": "^15.0.1",
|
||||
"remark-mdx": "^3.1.0",
|
||||
"sharp": "^0.35.3",
|
||||
"unist-util-visit": "^5.0.0",
|
||||
"unplugin-icons": "^23.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/check": "^0.9.3",
|
||||
"@types/hast": "^3.0.4",
|
||||
"@types/mdast": "^4.0.4",
|
||||
"mdast-util-to-markdown": "^2.1.2",
|
||||
"remark-frontmatter": "^5.0.0",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"remark-lint-fenced-code-flag": "^4.2.0",
|
||||
"remark-lint-file-extension": "^3.0.1",
|
||||
"remark-lint-final-definition": "^4.0.2",
|
||||
"remark-lint-heading-increment": "^4.0.1",
|
||||
"remark-lint-list-item-spacing": "^5.0.1",
|
||||
"remark-lint-maximum-heading-length": "^4.1.1",
|
||||
"remark-lint-maximum-line-length": "^4.1.1",
|
||||
"remark-lint-no-duplicate-headings": "^4.0.1",
|
||||
"remark-lint-no-file-name-irregular-characters": "^3.0.1",
|
||||
"remark-lint-no-file-name-mixed-case": "^3.0.1",
|
||||
"remark-lint-no-unused-definitions": "^4.0.2",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
||||
"remark-preset-lint-markdown-style-guide": "^6.0.1",
|
||||
"remark-preset-lint-recommended": "^7.0.1",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
||||
"unified": "^11.0.5",
|
||||
"unified-lint-rule": "^3.0.1",
|
||||
"vite": "^8.1.5"
|
||||
}
|
||||
}
|
||||
107
starlight_help/src/.remarkrc.js
Normal file
107
starlight_help/src/.remarkrc.js
Normal file
@@ -0,0 +1,107 @@
|
||||
// @ts-check
|
||||
|
||||
// We are using remarkLintRulesLintRecommended and
|
||||
// remarkPresentLintMarkdownStyleGuide as our starting set of rules.
|
||||
// None of the rules were giving an error on the starting set, but some
|
||||
// rules were giving lots of warnings on the generated mdx. They are
|
||||
// set to false in this file, we can add them back later as and when
|
||||
// required.
|
||||
|
||||
/**
|
||||
* @import {Root} from "mdast"
|
||||
* @import {Preset, Processor} from "unified"
|
||||
*/
|
||||
|
||||
import {toMarkdown} from "mdast-util-to-markdown";
|
||||
import remarkFrontmatter from "remark-frontmatter";
|
||||
import remarkGfm from "remark-gfm";
|
||||
import remarkLintFencedCodeFlag from "remark-lint-fenced-code-flag";
|
||||
import remarkLintFileExtension from "remark-lint-file-extension";
|
||||
import remarkLintFinalDefinition from "remark-lint-final-definition";
|
||||
import remarkLintHeadingIncrement from "remark-lint-heading-increment";
|
||||
import remarkLintListItemSpacing from "remark-lint-list-item-spacing";
|
||||
import remarkLintMaximumHeadingLength from "remark-lint-maximum-heading-length";
|
||||
import remarkLintMaximumLineLength from "remark-lint-maximum-line-length";
|
||||
import remarkLintNoDuplicateHeadings from "remark-lint-no-duplicate-headings";
|
||||
import remarkLintNoFileNameIrregularCharacters from "remark-lint-no-file-name-irregular-characters";
|
||||
import remarkLintNoFileNameMixedCase from "remark-lint-no-file-name-mixed-case";
|
||||
import remarkLintNoUnusedDefinitions from "remark-lint-no-unused-definitions";
|
||||
import remarkLintUnorderedListMarkerStyle from "remark-lint-unordered-list-marker-style";
|
||||
import remarkMdx from "remark-mdx";
|
||||
import remarkPresetLintMarkdownStyleGuide from "remark-preset-lint-markdown-style-guide";
|
||||
import remarkPresetLintRecommended from "remark-preset-lint-recommended";
|
||||
import remarkStringify from "remark-stringify";
|
||||
import {lintRule} from "unified-lint-rule";
|
||||
|
||||
const stringifyOptions = {
|
||||
// Number all list items as 1, for compatibility with
|
||||
// remark-lint-ordered-list-marker-value.
|
||||
incrementListMarker: false,
|
||||
};
|
||||
|
||||
/**
|
||||
* Make sure the linter fails if files need to be reformatted. (The other rules
|
||||
* catch some but not all formatting issues, so this is needed to be sure we
|
||||
* don't silently ignore changes that would be made with --fix.)
|
||||
*
|
||||
* @this {Processor}
|
||||
* @param {...unknown} args
|
||||
*/
|
||||
function remarkLintNeedsReformatting(...args) {
|
||||
const settings = this.data("settings");
|
||||
if (
|
||||
settings === undefined ||
|
||||
!("checkReformatting" in settings) ||
|
||||
!settings.checkReformatting
|
||||
) {
|
||||
return undefined;
|
||||
}
|
||||
return lintRule(
|
||||
"needs-reformatting",
|
||||
/** @param {Root} tree */
|
||||
(tree, file) => {
|
||||
const formatted = toMarkdown(tree, {
|
||||
...settings,
|
||||
...stringifyOptions,
|
||||
extensions: this.data("toMarkdownExtensions") || [],
|
||||
});
|
||||
if (formatted !== file.value) {
|
||||
file.message("Would be reformatted");
|
||||
}
|
||||
},
|
||||
)(...args);
|
||||
}
|
||||
|
||||
/** @type {Preset} */
|
||||
const remarkLintRules = {
|
||||
plugins: [
|
||||
remarkPresetLintMarkdownStyleGuide,
|
||||
remarkPresetLintRecommended,
|
||||
[remarkLintFinalDefinition, false],
|
||||
[remarkLintListItemSpacing, false],
|
||||
[remarkLintFileExtension, ["mdx"]],
|
||||
[remarkLintNoUnusedDefinitions, false],
|
||||
[remarkLintMaximumLineLength, false],
|
||||
[remarkLintFencedCodeFlag, false],
|
||||
[remarkLintNoFileNameIrregularCharacters, false],
|
||||
[remarkLintNoFileNameMixedCase, false],
|
||||
[remarkLintMaximumHeadingLength, false],
|
||||
[remarkLintNoDuplicateHeadings, false],
|
||||
[remarkLintHeadingIncrement, false],
|
||||
[remarkLintUnorderedListMarkerStyle, "*"],
|
||||
remarkLintNeedsReformatting,
|
||||
],
|
||||
};
|
||||
|
||||
/** @type {Preset} */
|
||||
const config = {
|
||||
plugins: [
|
||||
remarkGfm,
|
||||
remarkMdx,
|
||||
[remarkFrontmatter, ["yaml"]],
|
||||
remarkLintRules,
|
||||
[remarkStringify, stringifyOptions],
|
||||
],
|
||||
};
|
||||
|
||||
export default config;
|
||||
28
starlight_help/src/components/EmoticonTranslations.astro
Normal file
28
starlight_help/src/components/EmoticonTranslations.astro
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
import {getCollection} from "astro:content";
|
||||
|
||||
const emoticons = (await getCollection("emoticons")).toSorted(
|
||||
(a, b) => a.data.order - b.data.order,
|
||||
);
|
||||
---
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Emoticon</th>
|
||||
<th>Emoji</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{emoticons.map((entry) => (
|
||||
<tr>
|
||||
<td>
|
||||
<code>{entry.id}</code>
|
||||
</td>
|
||||
<td>
|
||||
<img src={entry.data.image.src} alt={entry.data.emoji} class="emoji-big" />
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
41
starlight_help/src/components/FlattenedList.astro
Normal file
41
starlight_help/src/components/FlattenedList.astro
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
/* eslint-disable unicorn/better-dom-traversing */
|
||||
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import {fromHtml} from "hast-util-from-html";
|
||||
import {toHtml} from "hast-util-to-html";
|
||||
|
||||
const tree = fromHtml(await Astro.slots.render("default"), {fragment: true});
|
||||
|
||||
const tree_with_removed_newlines = {
|
||||
type: "root",
|
||||
children: tree.children.filter((child) => {
|
||||
if (child.type === "text" && child.value === "\n") {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}),
|
||||
};
|
||||
const first_element = tree_with_removed_newlines.children[0];
|
||||
assert.ok(first_element?.type === "element" && ["ol", "ul"].includes(first_element.tagName));
|
||||
const flattened = {
|
||||
...first_element,
|
||||
children: tree_with_removed_newlines.children.flatMap((other) => {
|
||||
if (other.type === "comment") {
|
||||
return [];
|
||||
}
|
||||
assert.ok(other.type === "element");
|
||||
// Flatten only in case of matching tagName, for the rest, we
|
||||
// return the elements without flattening since asides, code
|
||||
// blocks and other elements can be part of a single list item
|
||||
// and we do not want to flatten them.
|
||||
if (other.tagName === first_element.tagName) {
|
||||
return other.children;
|
||||
}
|
||||
return [other];
|
||||
}),
|
||||
};
|
||||
---
|
||||
|
||||
<Fragment set:html={toHtml(flattened)} />
|
||||
11
starlight_help/src/components/FlattenedSteps.astro
Normal file
11
starlight_help/src/components/FlattenedSteps.astro
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
import {Steps} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedList from "./FlattenedList.astro";
|
||||
---
|
||||
|
||||
<Steps>
|
||||
<FlattenedList>
|
||||
<slot />
|
||||
</FlattenedList>
|
||||
</Steps>
|
||||
29
starlight_help/src/components/Footer.astro
Normal file
29
starlight_help/src/components/Footer.astro
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
import {CORPORATE_ENABLED, SUPPORT_EMAIL} from "astro:env/client";
|
||||
---
|
||||
|
||||
<footer class="sl-flex">
|
||||
<hr />
|
||||
{CORPORATE_ENABLED ? (
|
||||
<p>
|
||||
Your feedback helps us make Zulip better for everyone! Please{" "}
|
||||
<a href="/help/contact-support">contact us</a> with questions, suggestions, and feature
|
||||
requests.
|
||||
</p>
|
||||
) : (
|
||||
<p>
|
||||
Don't see an answer to your question?{" "}
|
||||
<a href={`mailto:${SUPPORT_EMAIL}`}>Contact this Zulip server's administrators</a> for
|
||||
support.
|
||||
</p>
|
||||
)}
|
||||
</footer>
|
||||
|
||||
<style>
|
||||
@layer starlight.core {
|
||||
footer {
|
||||
flex-direction: column;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
8
starlight_help/src/components/Head.astro
Normal file
8
starlight_help/src/components/Head.astro
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
import Default from "@astrojs/starlight/components/Head.astro";
|
||||
---
|
||||
|
||||
<script src="../scripts/client/adjust_mac_kbd_tags.ts"></script>
|
||||
<Default>
|
||||
<slot />
|
||||
</Default>
|
||||
45
starlight_help/src/components/KeyboardTip.astro
Normal file
45
starlight_help/src/components/KeyboardTip.astro
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
/* eslint-disable unicorn/better-dom-traversing */
|
||||
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import type {Element} from "hast";
|
||||
import {fromHtml} from "hast-util-from-html";
|
||||
import {toHtml} from "hast-util-to-html";
|
||||
|
||||
import keyboard_svg from "../../../web/icons/keyboard.svg?raw";
|
||||
|
||||
const keyboard_icon_fragment = fromHtml(keyboard_svg, {fragment: true});
|
||||
const keyboard_icon_first_child = keyboard_icon_fragment.children[0]!;
|
||||
assert.ok(
|
||||
keyboard_icon_first_child.type === "element" && keyboard_icon_first_child.tagName === "svg",
|
||||
);
|
||||
keyboard_icon_first_child.properties.class = "zulip-unplugin-icon";
|
||||
|
||||
// We want to add the `Keyboard tip: ` prefix without a line break or
|
||||
// wrapping it in a paragraph. If we write `Keyboard tip: <slot />`,
|
||||
// slot will be wrapped in it's own paragraph and thus will be placed on
|
||||
// the next line as `Keyboard tip:`. We have to edit slot HTML tree
|
||||
// directly instead to solve this. Same case applies for the keyboard
|
||||
// icon we are inserting. We just inject the icon as raw svg.
|
||||
const prefix_text_element: Element = {
|
||||
type: "element",
|
||||
tagName: "strong",
|
||||
properties: {},
|
||||
children: [{type: "text", value: " Keyboard tip: "}],
|
||||
};
|
||||
const prefix_element_list = [keyboard_icon_first_child, prefix_text_element];
|
||||
|
||||
const tree = fromHtml(await Astro.slots.render("default"), {fragment: true});
|
||||
const first_element = tree.children[0];
|
||||
assert.ok(first_element?.type === "element");
|
||||
|
||||
first_element.children = [...prefix_element_list, ...first_element.children];
|
||||
tree.children[0] = first_element;
|
||||
---
|
||||
|
||||
<aside aria-label="Keyboard tip" class="starlight-aside starlight-aside--tip keyboard-tip">
|
||||
<div class="starlight-aside__content">
|
||||
<Fragment set:html={toHtml(tree)} />
|
||||
</div>
|
||||
</aside>
|
||||
17
starlight_help/src/components/NavigationSteps.astro
Normal file
17
starlight_help/src/components/NavigationSteps.astro
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
import RelativeSteps from "./RelativeSteps.astro";
|
||||
import SettingsSteps from "./SettingsSteps.astro";
|
||||
|
||||
const {target} = Astro.props;
|
||||
const [navigation_link_type, ...parts] = target.split("/");
|
||||
|
||||
if (navigation_link_type !== "settings" && navigation_link_type !== "relative") {
|
||||
throw new Error("Invalid navigation link type. Only `settings` or `relative` is allowed.");
|
||||
}
|
||||
---
|
||||
|
||||
{navigation_link_type === "settings" ? (
|
||||
<SettingsSteps setting_key={parts[0]} />
|
||||
) : (
|
||||
<RelativeSteps link_type={parts[0]} key={parts[1]} />
|
||||
)}
|
||||
215
starlight_help/src/components/RelativeSteps.astro
Normal file
215
starlight_help/src/components/RelativeSteps.astro
Normal file
@@ -0,0 +1,215 @@
|
||||
---
|
||||
import {CORPORATE_ENABLED, SHOW_RELATIVE_LINKS} from "astro:env/client";
|
||||
|
||||
/* eslint-disable import-x/extensions */
|
||||
import BarChartIcon from "~icons/zulip-icon/bar-chart";
|
||||
import BuildingIcon from "~icons/zulip-icon/building";
|
||||
import CreditCardIcon from "~icons/zulip-icon/credit-card";
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
import GearIcon from "~icons/zulip-icon/gear";
|
||||
import GitPullRequestIcon from "~icons/zulip-icon/git-pull-request";
|
||||
import HashIcon from "~icons/zulip-icon/hash";
|
||||
import HelpIcon from "~icons/zulip-icon/help";
|
||||
import InfoIcon from "~icons/zulip-icon/info";
|
||||
import KeyboardIcon from "~icons/zulip-icon/keyboard";
|
||||
import ManageSearchIcon from "~icons/zulip-icon/manage-search";
|
||||
import RocketIcon from "~icons/zulip-icon/rocket";
|
||||
import ToolIcon from "~icons/zulip-icon/tool";
|
||||
import UserGroupCogIcon from "~icons/zulip-icon/user-group-cog";
|
||||
/* eslint-enable import-x/extensions */
|
||||
|
||||
type Props = {
|
||||
link_type: string;
|
||||
key: string;
|
||||
};
|
||||
|
||||
const SHOW_BILLING_HELP_LINKS = CORPORATE_ENABLED;
|
||||
|
||||
type RelativeLinkInfo = {
|
||||
label: string;
|
||||
relative_link: string;
|
||||
icon?: unknown;
|
||||
};
|
||||
|
||||
type RelativeLinkMapping = Record<
|
||||
string,
|
||||
{
|
||||
data: Record<string, RelativeLinkInfo>;
|
||||
template: (item: unknown) => unknown;
|
||||
is_link_relative: () => boolean;
|
||||
}
|
||||
>;
|
||||
|
||||
const {link_type, key} = Astro.props;
|
||||
---
|
||||
|
||||
{(() => {
|
||||
const default_template_for_relative_links = (item: unknown) => (
|
||||
<ol>
|
||||
<li>
|
||||
Click on the <strong>gear</strong> (<GearIcon />) icon in the upper right corner of
|
||||
the web or desktop app.
|
||||
</li>
|
||||
<li class="navigation-step-relative-type">Select {item}.</li>
|
||||
</ol>
|
||||
);
|
||||
|
||||
const relative_link_mapping: RelativeLinkMapping = {
|
||||
gear: {
|
||||
data: {
|
||||
"channel-settings": {
|
||||
label: "Channel settings",
|
||||
relative_link: "/#channels/subscribed",
|
||||
icon: <HashIcon />,
|
||||
},
|
||||
settings: {
|
||||
label: "Personal Settings",
|
||||
relative_link: "/#settings/profile",
|
||||
icon: <ToolIcon />,
|
||||
},
|
||||
"organization-settings": {
|
||||
label: "Organization settings",
|
||||
relative_link: "/#organization/organization-profile",
|
||||
icon: <BuildingIcon />,
|
||||
},
|
||||
"group-settings": {
|
||||
label: "Group settings",
|
||||
relative_link: "/#groups/your",
|
||||
icon: <UserGroupCogIcon />,
|
||||
},
|
||||
stats: {
|
||||
label: "Usage statistics",
|
||||
relative_link: "/stats",
|
||||
icon: <BarChartIcon />,
|
||||
},
|
||||
integrations: {
|
||||
label: "Integrations",
|
||||
relative_link: "/integrations/",
|
||||
icon: <GitPullRequestIcon />,
|
||||
},
|
||||
"about-zulip": {
|
||||
label: "About Zulip",
|
||||
relative_link: "/#about-zulip",
|
||||
},
|
||||
},
|
||||
template: default_template_for_relative_links,
|
||||
is_link_relative: () => SHOW_RELATIVE_LINKS,
|
||||
},
|
||||
"gear-billing": {
|
||||
data: {
|
||||
plans: {
|
||||
label: "Plans and pricing",
|
||||
relative_link: "/plans/",
|
||||
icon: <RocketIcon />,
|
||||
},
|
||||
billing: {
|
||||
label: "Billing",
|
||||
relative_link: "/billing/",
|
||||
icon: <CreditCardIcon />,
|
||||
},
|
||||
},
|
||||
template: default_template_for_relative_links,
|
||||
is_link_relative: () => SHOW_RELATIVE_LINKS && SHOW_BILLING_HELP_LINKS,
|
||||
},
|
||||
help: {
|
||||
data: {
|
||||
"keyboard-shortcuts": {
|
||||
label: "Keyboard shortcuts",
|
||||
relative_link: "/#keyboard-shortcuts",
|
||||
icon: <KeyboardIcon />,
|
||||
},
|
||||
"message-formatting": {
|
||||
label: "Message formatting",
|
||||
relative_link: "/#message-formatting",
|
||||
icon: <EditIcon />,
|
||||
},
|
||||
"search-filters": {
|
||||
label: "Search filters",
|
||||
relative_link: "/#search-operators",
|
||||
icon: <ManageSearchIcon />,
|
||||
},
|
||||
"about-zulip": {
|
||||
label: "About Zulip",
|
||||
relative_link: "/#about-zulip",
|
||||
icon: <InfoIcon />,
|
||||
},
|
||||
},
|
||||
template: (item: unknown) => (
|
||||
<ol>
|
||||
<li>
|
||||
Click on the <strong>help menu</strong> (<HelpIcon />) icon in the upper
|
||||
right corner of the app.
|
||||
</li>
|
||||
<li class="navigation-step-relative-type">Select {item}.</li>
|
||||
</ol>
|
||||
),
|
||||
is_link_relative: () => SHOW_RELATIVE_LINKS,
|
||||
},
|
||||
channel: {
|
||||
data: {
|
||||
all: {
|
||||
label: "All",
|
||||
relative_link: "/#channels/all",
|
||||
},
|
||||
available: {
|
||||
label: "Available",
|
||||
relative_link: "/#channels/available",
|
||||
},
|
||||
},
|
||||
template: (item: unknown) => (
|
||||
<ol>
|
||||
<li>
|
||||
Click on the <strong>gear</strong> (<GearIcon />) icon in the upper right
|
||||
corner of the web or desktop app.
|
||||
</li>
|
||||
<li>
|
||||
Select <HashIcon /> <strong>Channel settings</strong>.
|
||||
</li>
|
||||
<li>Click {item} in the upper left.</li>
|
||||
</ol>
|
||||
),
|
||||
is_link_relative: () => SHOW_RELATIVE_LINKS,
|
||||
},
|
||||
group: {
|
||||
data: {
|
||||
all: {
|
||||
label: "All groups",
|
||||
relative_link: "/#groups/all",
|
||||
},
|
||||
roles: {
|
||||
label: "Roles",
|
||||
relative_link: "/#groups/roles",
|
||||
},
|
||||
},
|
||||
template: (item: unknown) => (
|
||||
<ol>
|
||||
<li>
|
||||
Click on the <strong>gear</strong> (<GearIcon />) icon in the upper right
|
||||
corner of the web or desktop app.
|
||||
</li>
|
||||
<li>
|
||||
Select <UserGroupCogIcon /> <strong>Group settings</strong>.
|
||||
</li>
|
||||
<li>Click {item} in the upper left.</li>
|
||||
</ol>
|
||||
),
|
||||
is_link_relative: () => SHOW_RELATIVE_LINKS,
|
||||
},
|
||||
};
|
||||
|
||||
const {data, template, is_link_relative} = relative_link_mapping[link_type]!;
|
||||
|
||||
const {label, relative_link, icon} = data[key]!;
|
||||
const formattedItem = is_link_relative() ? (
|
||||
<a href={relative_link}>
|
||||
{icon}
|
||||
{label}
|
||||
</a>
|
||||
) : (
|
||||
<strong>
|
||||
{icon}
|
||||
{label}
|
||||
</strong>
|
||||
);
|
||||
return template(formattedItem);
|
||||
})()}
|
||||
202
starlight_help/src/components/SettingsSteps.astro
Normal file
202
starlight_help/src/components/SettingsSteps.astro
Normal file
@@ -0,0 +1,202 @@
|
||||
---
|
||||
import {SHOW_RELATIVE_LINKS} from "astro:env/client";
|
||||
|
||||
/* eslint-disable import-x/extensions */
|
||||
import BuildingIcon from "~icons/zulip-icon/building";
|
||||
import GearIcon from "~icons/zulip-icon/gear";
|
||||
import ToolIcon from "~icons/zulip-icon/tool";
|
||||
/* eslint-enable import-x/extensions */
|
||||
|
||||
const PERSONAL_SETTINGS_TYPE = "Personal settings";
|
||||
const ORGANIZATION_SETTINGS_TYPE = "Organization settings";
|
||||
|
||||
// This list has been transformed one-off from `help_settings_links.py`, we
|
||||
// have added a comment in that file to update this list in case of any
|
||||
// changes.
|
||||
const setting_link_mapping: Record<
|
||||
string,
|
||||
{
|
||||
setting_type: string;
|
||||
setting_name: string;
|
||||
setting_link: string;
|
||||
}
|
||||
> = {
|
||||
// a mapping from the setting target that is the same as the final URL
|
||||
// breadcrumb to that setting to the name of its setting type, the setting
|
||||
// name as it appears in the user interface, and a relative link that can
|
||||
// be used to get to that setting
|
||||
profile: {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Profile",
|
||||
setting_link: "/#settings/profile",
|
||||
},
|
||||
"account-and-privacy": {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Account & privacy",
|
||||
setting_link: "/#settings/account-and-privacy",
|
||||
},
|
||||
preferences: {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Preferences",
|
||||
setting_link: "/#settings/preferences",
|
||||
},
|
||||
notifications: {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Notifications",
|
||||
setting_link: "/#settings/notifications",
|
||||
},
|
||||
"your-bots": {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Bots",
|
||||
setting_link: "/#settings/your-bots",
|
||||
},
|
||||
"alert-words": {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Alert words",
|
||||
setting_link: "/#settings/alert-words",
|
||||
},
|
||||
"uploaded-files": {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Uploaded files",
|
||||
setting_link: "/#settings/uploaded-files",
|
||||
},
|
||||
topics: {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Topics",
|
||||
setting_link: "/#settings/topics",
|
||||
},
|
||||
"muted-users": {
|
||||
setting_type: PERSONAL_SETTINGS_TYPE,
|
||||
setting_name: "Muted users",
|
||||
setting_link: "/#settings/muted-users",
|
||||
},
|
||||
"organization-profile": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Organization profile",
|
||||
setting_link: "/#organization/organization-profile",
|
||||
},
|
||||
"organization-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Organization settings",
|
||||
setting_link: "/#organization/organization-settings",
|
||||
},
|
||||
"organization-permissions": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Organization permissions",
|
||||
setting_link: "/#organization/organization-permissions",
|
||||
},
|
||||
"default-user-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Default user settings",
|
||||
setting_link: "/#organization/organization-level-user-defaults",
|
||||
},
|
||||
"emoji-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Custom emoji",
|
||||
setting_link: "/#organization/emoji-settings",
|
||||
},
|
||||
"auth-methods": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Authentication methods",
|
||||
setting_link: "/#organization/auth-methods",
|
||||
},
|
||||
users: {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Users",
|
||||
setting_link: "/#organization/users/active",
|
||||
},
|
||||
imported: {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Users",
|
||||
setting_link: "/#organization/users/imported",
|
||||
},
|
||||
deactivated: {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Users",
|
||||
setting_link: "/#organization/users/deactivated",
|
||||
},
|
||||
invitations: {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Users",
|
||||
setting_link: "/#organization/users/invitations",
|
||||
},
|
||||
bots: {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Bots",
|
||||
setting_link: "/#organization/bots",
|
||||
},
|
||||
"default-channels-list": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Default channels",
|
||||
setting_link: "/#organization/default-channels-list",
|
||||
},
|
||||
"linkifier-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Linkifiers",
|
||||
setting_link: "/#organization/linkifier-settings",
|
||||
},
|
||||
"playground-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Code playgrounds",
|
||||
setting_link: "/#organization/playground-settings",
|
||||
},
|
||||
"profile-field-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Custom profile fields",
|
||||
setting_link: "/#organization/profile-field-settings",
|
||||
},
|
||||
"channel-folder-settings": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Channel folders",
|
||||
setting_link: "/#organization/channel-folders",
|
||||
},
|
||||
"data-exports-admin": {
|
||||
setting_type: ORGANIZATION_SETTINGS_TYPE,
|
||||
setting_name: "Data exports",
|
||||
setting_link: "/#organization/data-exports-admin",
|
||||
},
|
||||
};
|
||||
|
||||
const {setting_key} = Astro.props;
|
||||
|
||||
const {setting_type, setting_name, setting_link} = setting_link_mapping[setting_key]!;
|
||||
---
|
||||
|
||||
<ol>
|
||||
{SHOW_RELATIVE_LINKS ? (
|
||||
// The "Bots" label appears in both Personal and
|
||||
// Organization settings in the user interface, so we need special
|
||||
// text for this setting.
|
||||
// As for the case of "Users", it refers to the Users tab in
|
||||
// organization settings. Since the users tab has multiple sub tabs
|
||||
// like active, deactivated etc., we need a way to point to them.
|
||||
setting_name === "Bots" || setting_name === "Users" ? (
|
||||
<li>
|
||||
Navigate to the <a href={setting_link}>{setting_name}</a> tab of the{" "}
|
||||
<b>{setting_type}</b> menu.
|
||||
</li>
|
||||
) : (
|
||||
<li>
|
||||
Go to <a href={setting_link}>{setting_name}</a>.
|
||||
</li>
|
||||
)
|
||||
) : (
|
||||
<>
|
||||
<li>
|
||||
Click on the <b>gear</b> (<GearIcon />) icon in the upper right corner of the web or
|
||||
desktop app.
|
||||
</li>
|
||||
<li>
|
||||
Select{" "}
|
||||
<b>
|
||||
{setting_type === ORGANIZATION_SETTINGS_TYPE ? <BuildingIcon /> : <ToolIcon />}{" "}
|
||||
{setting_type}
|
||||
</b>
|
||||
.
|
||||
</li>
|
||||
<li>
|
||||
On the left, click <b>{setting_name}</b>.
|
||||
</li>
|
||||
</>
|
||||
)}
|
||||
</ol>
|
||||
25
starlight_help/src/components/Sidebar.astro
Normal file
25
starlight_help/src/components/Sidebar.astro
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
import DefaultSidebar from "@astrojs/starlight/components/Sidebar.astro";
|
||||
---
|
||||
|
||||
<DefaultSidebar />
|
||||
|
||||
<script is:inline>
|
||||
const scrollSelectedItemIntoView = () => {
|
||||
const sidebar = document.getElementById("starlight__sidebar");
|
||||
const selectedItem = sidebar?.querySelector('[aria-current="page"]');
|
||||
if (!sidebar || !(selectedItem instanceof HTMLElement)) return;
|
||||
|
||||
const sidebarRect = sidebar.getBoundingClientRect();
|
||||
const selectedItemRect = selectedItem.getBoundingClientRect();
|
||||
const isVisible =
|
||||
selectedItemRect.top >= sidebarRect.top &&
|
||||
selectedItemRect.bottom <= sidebarRect.bottom;
|
||||
|
||||
if (!isVisible) {
|
||||
selectedItem.scrollIntoView({block: "center"});
|
||||
}
|
||||
};
|
||||
|
||||
scrollSelectedItemIntoView();
|
||||
</script>
|
||||
11
starlight_help/src/components/ZulipNote.astro
Normal file
11
starlight_help/src/components/ZulipNote.astro
Normal file
@@ -0,0 +1,11 @@
|
||||
<!--
|
||||
We wanted to have our note without a header that is the ⓘ followed by a title.
|
||||
We can make the title disappear by making the title a single space: " ".
|
||||
The default aside component provided by starlight will always have an icon however.
|
||||
That is why we needed this custom components.
|
||||
-->
|
||||
<aside aria-label="Note" class="starlight-aside starlight-aside--note">
|
||||
<div class="starlight-aside__content">
|
||||
<slot />
|
||||
</div>
|
||||
</aside>
|
||||
65
starlight_help/src/components/ZulipTip.astro
Normal file
65
starlight_help/src/components/ZulipTip.astro
Normal file
@@ -0,0 +1,65 @@
|
||||
---
|
||||
/* eslint-disable unicorn/better-dom-traversing */
|
||||
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import type {Element} from "hast";
|
||||
import {fromHtml} from "hast-util-from-html";
|
||||
import {toHtml} from "hast-util-to-html";
|
||||
|
||||
import lightbulb_svg from "../../../web/icons/lightbulb.svg?raw";
|
||||
|
||||
const lightbulb_icon_fragment = fromHtml(lightbulb_svg, {fragment: true});
|
||||
const lightbulb_icon_first_child = lightbulb_icon_fragment.children[0]!;
|
||||
assert.ok(
|
||||
lightbulb_icon_first_child.type === "element" && lightbulb_icon_first_child.tagName === "svg",
|
||||
);
|
||||
lightbulb_icon_first_child.properties.class = "zulip-unplugin-icon aside-icon-lightbulb";
|
||||
|
||||
// We want to add the `Tip: ` prefix without a line break or wrapping
|
||||
// it in a paragraph. If we write `Tip: <slot />`, slot will be wrapped
|
||||
// in it's own paragraph and thus will be placed on the next line as
|
||||
// `Tip:`. We have to edit slot HTML tree directly instead to solve this.
|
||||
// Same case applies for the ligthbulb icon we are inserting. We just
|
||||
// inject the icon as raw svg.
|
||||
const prefix_text_element: Element = {
|
||||
type: "element",
|
||||
tagName: "strong",
|
||||
properties: {},
|
||||
children: [
|
||||
{
|
||||
type: "text",
|
||||
// Whitespace before the text to ensure space between
|
||||
// this text and the preceding icon.
|
||||
value: " Tip: ",
|
||||
},
|
||||
],
|
||||
};
|
||||
let prefix_element_list = [lightbulb_icon_first_child, prefix_text_element];
|
||||
|
||||
const tree = fromHtml(await Astro.slots.render("default"), {fragment: true});
|
||||
const first_element = tree.children[0];
|
||||
assert.ok(first_element?.type === "element");
|
||||
|
||||
// This is currently happening only in one case, for _ImportSelfHostedServerTips.mdx
|
||||
// where the tip contains an unordered list. Just placing the element as is without
|
||||
// a paragraph does not look good in that case.
|
||||
if (first_element.tagName !== "p") {
|
||||
const paragraph_wrapping_element: Element = {
|
||||
type: "element",
|
||||
tagName: "p",
|
||||
properties: {},
|
||||
children: [...prefix_element_list],
|
||||
};
|
||||
prefix_element_list = [paragraph_wrapping_element];
|
||||
}
|
||||
|
||||
first_element.children = [...prefix_element_list, ...first_element.children];
|
||||
tree.children[0] = first_element;
|
||||
---
|
||||
|
||||
<aside aria-label="Tip" class="starlight-aside starlight-aside--tip">
|
||||
<div class="starlight-aside__content">
|
||||
<Fragment set:html={toHtml(tree)} />
|
||||
</div>
|
||||
</aside>
|
||||
27
starlight_help/src/content.config.ts
Normal file
27
starlight_help/src/content.config.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import {docsLoader} from "@astrojs/starlight/loaders";
|
||||
import {docsSchema} from "@astrojs/starlight/schema";
|
||||
import {z} from "astro/zod";
|
||||
import {defineCollection} from "astro:content";
|
||||
|
||||
import EmojiCodes from "../../static/generated/emoji/emoji_codes.json";
|
||||
|
||||
const emoticonConversions: Record<string, string> = EmojiCodes.emoticon_conversions;
|
||||
const nameToCodePoint: Record<string, string> = EmojiCodes.name_to_codepoint;
|
||||
|
||||
// Using image() in the schema means Astro bundles only the few emoji used for
|
||||
// emoticons, rather than the thousands import.meta.glob would copy.
|
||||
const emoticons = defineCollection({
|
||||
loader: () =>
|
||||
Object.entries(emoticonConversions).map(([emoticon, emoji], order) => ({
|
||||
id: emoticon,
|
||||
order,
|
||||
emoji,
|
||||
image: `../../static/generated/emoji/images-google-64/${nameToCodePoint[emoji.slice(1, -1)]}.png`,
|
||||
})),
|
||||
schema: ({image}) => z.object({order: z.int(), emoji: z.string(), image: image()}),
|
||||
});
|
||||
|
||||
export const collections = {
|
||||
docs: defineCollection({loader: docsLoader(), schema: docsSchema()}),
|
||||
emoticons,
|
||||
};
|
||||
59
starlight_help/src/content/docs/add-a-bot-or-integration.mdx
Normal file
59
starlight_help/src/content/docs/add-a-bot-or-integration.mdx
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Add a bot or integration
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
|
||||
By default, anyone other than guests can add a bot to a Zulip organization.
|
||||
A bot that sends content to or from another product is often called an
|
||||
[integration](/help/integrations-overview).
|
||||
|
||||
Organization administrators can also
|
||||
[restrict bot creation](/help/restrict-bot-creation). Any bot that is added
|
||||
is visible and available for anyone to use.
|
||||
|
||||
## Add a bot or integration
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Your bots">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/your-bots" />
|
||||
|
||||
1. Click **Add a new bot**.
|
||||
1. Fill out the fields, and click **Add**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="All bots">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/bots" />
|
||||
|
||||
1. Click **Add a new bot**.
|
||||
1. Fill out the fields, and click **Add**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
<ZulipNote>
|
||||
See [bots overview](/help/bots-overview) for more information about
|
||||
the various fields.
|
||||
Nearly all third-party integrations should use **Incoming webhook**
|
||||
as the **bot type**.
|
||||
</ZulipNote>
|
||||
|
||||
Depending on the type of bot you're creating, you may need to download its
|
||||
[`zuliprc` configuration file](/help/manage-a-bot#download-zuliprc-configuration-file).
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Bots overview](/help/bots-overview)
|
||||
* [Integrations overview](/help/integrations-overview)
|
||||
* [Manage a bot](/help/manage-a-bot)
|
||||
* [Deactivate or reactivate a bot](/help/deactivate-or-reactivate-a-bot)
|
||||
* [Restrict bot creation](/help/restrict-bot-creation)
|
||||
* [View all bots in your organization](/help/view-all-bots-in-your-organization)
|
||||
* [Generate URL for an integration](/help/generate-integration-url)
|
||||
245
starlight_help/src/content/docs/add-a-custom-linkifier.mdx
Normal file
245
starlight_help/src/content/docs/add-a-custom-linkifier.mdx
Normal file
@@ -0,0 +1,245 @@
|
||||
---
|
||||
title: Add a custom linkifier
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
import ExternalLinkIcon from "~icons/zulip-icon/external-link";
|
||||
import TrashIcon from "~icons/zulip-icon/trash";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Linkifiers make it easy to refer to issues or tickets in third
|
||||
party issue trackers, like GitHub, Salesforce, Zendesk, and others.
|
||||
For instance, you can add a linkifier that automatically turns `#2468`
|
||||
into a link to `https://github.com/zulip/zulip/issues/2468`.
|
||||
|
||||
You can configure linkifiers to work in reverse as well: when you paste a URL
|
||||
that matches the linkifier into the compose box, Zulip will automatically
|
||||
convert it to linked text (e.g., `https://github.com/zulip/zulip/issues/2468`
|
||||
becomes `#2468`).
|
||||
|
||||
If a linkifier pattern (e.g., `#2468`) appears in the name of a topic, Zulip adds
|
||||
an **open** (<ExternalLinkIcon />) button to the right of the topic in the
|
||||
message recipient bar that links to the appropriate URL.
|
||||
|
||||
If you have any trouble creating the linkifiers you want, please [contact Zulip
|
||||
support](/help/contact-support) with details on what you're trying to do.
|
||||
|
||||
## Add a custom linkifier
|
||||
|
||||
All linkifiers automatically turn text matching the specified pattern into
|
||||
links. You can also configure pasted links matching the **URL template** to
|
||||
automatically convert to linked text.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/linkifier-settings" />
|
||||
|
||||
1. Click **Add linkifier**.
|
||||
1. Enter the **Example text to linkify**, and the **Pattern** that will match
|
||||
it and similar text.
|
||||
1. Enter the **URL template** for where text matching the pattern should link.
|
||||
1. *(optional)* To enable automatic conversion of pasted URLs to linked text,
|
||||
fill in **Auto-convert pasted URLs matching the template to**.
|
||||
1. Click **Add**.
|
||||
|
||||
<ZulipTip>
|
||||
Use the same variables in the **Pattern**, **URL template**, and
|
||||
**Auto-convert pasted URLs matching the template to** fields.
|
||||
</ZulipTip>
|
||||
</FlattenedSteps>
|
||||
|
||||
## Edit a custom linkifier
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/linkifier-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **edit** (<EditIcon />)
|
||||
icon for the linkifier you want to edit.
|
||||
1. Edit linkifier information as desired, and click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Delete a custom linkifier
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/linkifier-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **delete** (<TrashIcon />)
|
||||
icon for the linkifier you want to delete.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Reorder linkifiers
|
||||
|
||||
Linkifiers are processed in order, and will not apply to text that
|
||||
is already linkified. You can therefore choose which linkifiers to prioritize
|
||||
when more than one linkifier applies. The same priority order applies for
|
||||
converting URLs to shortened links. See the
|
||||
[overlapping patterns section](#overlapping-patterns) for examples.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/linkifier-settings" />
|
||||
|
||||
1. In the **Example** column, click and drag the vertical
|
||||
dots to reorder the list of linkifiers.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Common linkifier patterns
|
||||
|
||||
The following examples cover the most common types of linkifiers, with a focus
|
||||
on linkifiers for issues or tickets.
|
||||
|
||||
### Link to an issue or ticket
|
||||
|
||||
This is a pattern that turns a `#` followed by a number into a link. It is often
|
||||
used to link to issues or tickets in third party issue trackers, like GitHub,
|
||||
Salesforce, Zendesk, and others.
|
||||
|
||||
* Example text to linkify: `#2468`
|
||||
* Pattern: `#(?P<id>[0-9]+)`
|
||||
* URL template: `https://github.com/zulip/zulip/issues/{id}`
|
||||
* Auto-convert pasted URLs matching the template to: `#{id}`
|
||||
* Automatically links to: `https://github.com/zulip/zulip/issues/2468`
|
||||
|
||||
### Link to issues or tickets in multiple projects or apps
|
||||
|
||||
To set up linkifiers for issues or tickets in multiple projects,
|
||||
consider extending the `#2468` format with project-specific
|
||||
variants. For example, the Zulip development community
|
||||
[uses](https://zulip.com/development-community/#linking-to-github-issues-and-pull-requests)
|
||||
`#M2468` for an issue in the repository for the Zulip mobile app,
|
||||
`#D2468` and issue in the desktop app repository, etc.
|
||||
|
||||
* Example text to linkify: `#F245`
|
||||
* Pattern: `#F(?P<id>[0-9]+)`
|
||||
* URL template: `https://github.com/zulip/zulip-flutter/issues/{id}`
|
||||
* Auto-convert pasted URLs matching the template to: `#F{id}`
|
||||
* Automatically links to: `https://github.com/zulip/zulip-flutter/issues/245`
|
||||
|
||||
### Link to issues or tickets in multiple repositories
|
||||
|
||||
For organizations that commonly link to multiple GitHub repositories, this
|
||||
linkfier pattern turns `org/repo#ID` into an issue or pull request link.
|
||||
|
||||
* Example text to linkify: `zulip/zulip#2468`
|
||||
* Pattern: `(?P<org>[a-zA-Z0-9_-]+)/(?P<repo>[a-zA-Z0-9_-]+)#(?P<id>[0-9]+)`
|
||||
* URL template: `https://github.com/{org}/{repo}/issues/{id}`
|
||||
* Auto-convert pasted URLs matching the template to: `{org}/{repo}#{id}`
|
||||
* Automatically links to: `https://github.com/zulip/zulip/issues/2468`
|
||||
|
||||
### Link to a hexadecimal issue or ticket number
|
||||
|
||||
The following pattern linkfies a string of hexadecimal digits between 7 and 40
|
||||
characters long, such as a Git commit ID.
|
||||
|
||||
* Example text to linkify: `abdc123`
|
||||
* Pattern: `(?P<id>[0-9a-f]{7,40})`
|
||||
* URL template: `https://github.com/zulip/zulip/commit/{id}`
|
||||
* Auto-convert pasted URLs matching the template to: `{id}`
|
||||
* Automatically links to: `https://github.com/zulip/zulip/commit/abcd123`
|
||||
|
||||
## Advanced linkifier patterns
|
||||
|
||||
Linkifiers are a flexible system that can be used to construct rules for a wide
|
||||
variety of situations. Linkifier patterns are regular expressions, using the
|
||||
[re2](https://github.com/google/re2/wiki/Syntax) regular expression
|
||||
engine.
|
||||
|
||||
Linkifiers use [RFC 6570](https://www.rfc-editor.org/rfc/rfc6570.html) compliant
|
||||
URL templates to describe how links should be generated. These templates support
|
||||
several expression types. The default expression type (`{var}`) will URL-encode
|
||||
special characters like `/` and `&`; this behavior is desired for the vast
|
||||
majority of linkifiers. Fancier URL template expression types can allow you to
|
||||
get the exact behavior you want in corner cases like optional URL query
|
||||
parameters. For example:
|
||||
|
||||
* Use `{+var}` when you want URL delimiter characters to not be URL-encoded.
|
||||
* Use `{?var}` and `{&var}` for variables in URL query parameters.
|
||||
* Use `{#var}` when generating `#` fragments in URLs.
|
||||
|
||||
The URL template specification has [brief
|
||||
examples](https://www.rfc-editor.org/rfc/rfc6570.html#section-1.2) and [detailed
|
||||
examples](https://www.rfc-editor.org/rfc/rfc6570.html#section-3.2) explaining
|
||||
the precise behavior of URL templates.
|
||||
|
||||
### Linking to documentation pages
|
||||
|
||||
This example pattern is a shorthand for linking to pages on Zulip's ReadTheDocs
|
||||
site.
|
||||
|
||||
* Example text to linkify: `RTD/overview/changelog.html`
|
||||
* Pattern: `RTD/(?P<article>[a-zA-Z0-9_/.#-]+)`
|
||||
* URL template: `https://zulip.readthedocs.io/en/latest/{+article}`
|
||||
* Auto-convert pasted URLs matching the template to: `RTD/{article}`
|
||||
* Automatically links to: `https://zulip.readthedocs.io/en/latest/overview/changelog.html`
|
||||
|
||||
<ZulipTip>
|
||||
This pattern uses the `{+var}` expression type. With the
|
||||
default expression type (`{article}`), the `/` between `overview` and
|
||||
`changelog` would incorrectly be URL-encoded.
|
||||
</ZulipTip>
|
||||
|
||||
### Linking to Google search results
|
||||
|
||||
This example pattern allows linking to Google searches.
|
||||
|
||||
* Pattern: `google:(?P<q>\w+)?`
|
||||
* URL template: `https://google.com/search{?q}`
|
||||
* Original text: `google:foo` or `google:`
|
||||
* Automatically links to: `https://google.com/search?q=foo` or `https://google.com/search`
|
||||
|
||||
<ZulipTip>
|
||||
This pattern uses the `{?var}` expression type. With the default expression
|
||||
type (`{q}`), there would be no way to only include the `?` in the URL
|
||||
if the optional `q` is present.
|
||||
</ZulipTip>
|
||||
|
||||
### Overlapping patterns
|
||||
|
||||
This example shows how specific linkifiers can be combined with more general
|
||||
ones to offer succinct linked text for the most commonly referenced links. For
|
||||
example, if you could have:
|
||||
|
||||
* A specific linkifier for the `zulip/zulip` GitHub repository, so that `#123`
|
||||
links to an issue or pull request in that repository.
|
||||
* A general linkifier for all GitHub repositories.
|
||||
|
||||
You would set that up with:
|
||||
|
||||
* Specific linkifier (ordered before the general linkifier)
|
||||
* Example text to linkify: `#123`
|
||||
* Pattern: `#(?P<id>[0-9]+)`
|
||||
* URL template: `https://github.com/zulip/zulip/pull/{id}`
|
||||
* Auto-convert pasted URLs matching the template to: `#{id}`
|
||||
* General linkifier
|
||||
* Example text to linkify: `org/repo#123`
|
||||
* Pattern: `(?P<org>[a-zA-Z0-9_-]+)/(?P<repo>[a-zA-Z0-9_-]+)#(?P<id>[0-9]+)`
|
||||
* URL template: `https://github.com/{org}/{repo}/pull/{id}`
|
||||
* Auto-convert pasted URLs matching the template to: `{org}/{repo}#{id}`
|
||||
|
||||
With the specific linkifier ordered first, when both linkifiers match, the
|
||||
specific linkifier will take precedence:
|
||||
|
||||
* Original text: `#123`
|
||||
* Automatically links to: `https://github.com/zulip/zulip/pull/123`
|
||||
* Pasting `https://github.com/zulip/zulip/pull/123` auto-converts to: `#123`
|
||||
|
||||
When only the general linkifier matches:
|
||||
|
||||
* Original text: `django/django#123`
|
||||
* Automatically links to: `https://github.com/django/django/pull/123`
|
||||
* Pasting `https://github.com/django/django/pull/123` auto-converts to: `django/django#123`
|
||||
|
||||
<ZulipTip>
|
||||
This set of patterns has overlapping regular expressions and URL
|
||||
templates. The specific linkifier will only get prioritized over
|
||||
the general linkifier if it is ordered before the more general
|
||||
pattern. The same priority order applies when auto-converting
|
||||
pasted URLs. This can be customized by dragging and dropping
|
||||
existing linkifiers into the desired order. New linkifiers will
|
||||
automatically be ordered last.
|
||||
</ZulipTip>
|
||||
21
starlight_help/src/content/docs/analytics.mdx
Normal file
21
starlight_help/src/content/docs/analytics.mdx
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Usage statistics
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
Zulip provides detailed analytics to help you see how you and your team are
|
||||
using Zulip. The **Organization summary** section of the usage statistics page
|
||||
includes your organization's overall usage information such as the total number
|
||||
of users, guests, messages, and storage in use.
|
||||
|
||||
You will also find interactive graphs that provide a detailed breakdown of
|
||||
your organization's number of active users, messages sent, messages received,
|
||||
and how these statistics have changed over time.
|
||||
|
||||
## View organization statistics
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/gear/stats" />
|
||||
</FlattenedSteps>
|
||||
104
starlight_help/src/content/docs/animated-gifs.mdx
Normal file
104
starlight_help/src/content/docs/animated-gifs.mdx
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
title: Animated GIFs
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import StartComposing from "../include/_StartComposing.mdx";
|
||||
|
||||
import GifIcon from "~icons/zulip-icon/gif";
|
||||
|
||||
<ZulipNote>
|
||||
On self-hosted servers, the GIF picker needs to be
|
||||
[configured][configure-gifs] by a server administrator. You can choose between
|
||||
[GIPHY](https://giphy.com), [Tenor](https://tenor.com/) and [KLIPY](https://klipy.com)
|
||||
as your GIF provider.
|
||||
</ZulipNote>
|
||||
|
||||
Zulip makes it easy to find animated GIFs and use them in your messages, if the
|
||||
GIF picker is [enabled](#disable-the-gif-picker) in your organization.
|
||||
|
||||
You can
|
||||
[customize](/help/image-video-and-website-previews#configure-how-animated-images-are-played)
|
||||
how animated images are played in messages you receive. Administrators can
|
||||
[configure the
|
||||
size](/help/image-video-and-website-previews#configure-image-and-video-thumbnail-size)
|
||||
of GIFs and other images in the message feed.
|
||||
|
||||
## Insert a GIF
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<Steps>
|
||||
1. Click the **add GIF** (<GifIcon />) icon at
|
||||
the bottom of the compose box.
|
||||
1. Find a GIF you'd like to use.
|
||||
1. Click on an image to insert it in the compose box.
|
||||
</Steps>
|
||||
|
||||
<ZulipTip>
|
||||
You can [preview your message](/help/preview-your-message-before-sending)
|
||||
before sending.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
If previews of linked images are
|
||||
[disabled](/help/image-video-and-website-previews#configure-whether-previews-of-linked-images-and-videos-are-shown)
|
||||
in your organization, the GIF will appear as a link, rather than an image.
|
||||
|
||||
## Configure maximum GIFs rating
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
You can configure the maximum rating of GIFs shown in the GIF picker, which by
|
||||
default is set to GIFs rated **G (General audience)**.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Compose settings**, select a rating for **GIF picker**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Disable the GIF picker
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Disabling the GIF picker removes it from the compose box.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Compose settings**, set **GIF picker** to **Disabled**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Privacy
|
||||
|
||||
Zulip’s GIF picker uses a third-party service to provide GIFs
|
||||
([Tenor](https://tenor.com/) for Zulip Cloud). Any text you enter into the GIF
|
||||
search box will be sent from your browser directly to the corresponding
|
||||
service’s API. Because these requests are made client-side, the service you are
|
||||
querying (Tenor, GIPHY or KLIPY) will be able to see your IP address and may use that
|
||||
data for tracking, similar to if you visited their website and performed the
|
||||
same search there.
|
||||
|
||||
Zulip proxies all external images in messages through the server, including
|
||||
GIFs. This prevents images from being used to track recipients.
|
||||
|
||||
[configure-gifs]: https://zulip.readthedocs.io/en/latest/production/gif-picker-integrations.html
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Image, video and website previews](/help/image-video-and-website-previews)
|
||||
* [Share and upload files](/help/share-and-upload-files)
|
||||
* [Insert a link](/help/insert-a-link)
|
||||
109
starlight_help/src/content/docs/archive-a-channel.mdx
Normal file
109
starlight_help/src/content/docs/archive-a-channel.mdx
Normal file
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: Archive a channel
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SelectChannelViewGeneral from "../include/_SelectChannelViewGeneral.mdx";
|
||||
|
||||
import ArchiveIcon from "~icons/zulip-icon/archive";
|
||||
import MoreVerticalIcon from "~icons/zulip-icon/more-vertical";
|
||||
import UnarchiveIcon from "~icons/zulip-icon/unarchive";
|
||||
|
||||
You can archive channels you no longer plan to use. Archiving a channel:
|
||||
|
||||
* Removes it from the left sidebar for all users.
|
||||
* Prevents new messages from being sent to the channel.
|
||||
* Prevents messages in the channel from being edited, deleted, or moved.
|
||||
|
||||
Archiving a channel does not unsubscribe users, or change who can access it.
|
||||
Messages in archived channels still appear in [search
|
||||
results](/help/search-for-messages), the [combined feed](/help/combined-feed),
|
||||
and [recent conversations](/help/recent-conversations). If you prefer, you can
|
||||
configure an archived channel to [hide its
|
||||
content](#hide-content-in-an-archived-channel).
|
||||
|
||||
## Archive a channel
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
1. Click the **archive** (<ArchiveIcon />) icon
|
||||
in the upper right corner of the channel settings panel.
|
||||
1. Click **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## View archived channels
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select **Archived channels** from the dropdown next to the **Filter** box
|
||||
above the list of channels.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Hide content in an archived channel
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select **Archived channels** from the dropdown next to the **Filter** box
|
||||
above the list of channels.
|
||||
1. Select a channel.
|
||||
1. Select the **Subscribers** tab on the right.
|
||||
1. Remove all subscribers.
|
||||
|
||||
<SelectChannelViewGeneral />
|
||||
|
||||
1. Under **Channel permissions**, [make the channel
|
||||
private](/help/change-the-privacy-of-a-channel).
|
||||
1. Click **Advanced configuration** to view advanced configuration options.
|
||||
1. Under **Subscription permissions**, remove everyone from **Who can subscribe
|
||||
to this channel**, and **Who can subscribe anyone to this channel**. These
|
||||
permissions give users content access to the channel.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
You can also make these configuration changes prior to archiving a channel.
|
||||
|
||||
## Unarchive a channel
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select **Archived channels** from the dropdown in the upper left.
|
||||
1. Select a channel.
|
||||
1. Click the **unarchive** (<UnarchiveIcon />)
|
||||
icon in the upper right corner of the channel settings panel.
|
||||
1. Click **Confirm**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Edit a message](/help/edit-a-message)
|
||||
* [Delete a message](/help/delete-a-message)
|
||||
* [Delete a topic](/help/delete-a-topic)
|
||||
* [Message retention policy](/help/message-retention-policy)
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
101
starlight_help/src/content/docs/bots-overview.mdx
Normal file
101
starlight_help/src/content/docs/bots-overview.mdx
Normal file
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: Bots overview
|
||||
---
|
||||
|
||||
Bots allow you to
|
||||
|
||||
* Send content into and out of Zulip.
|
||||
* Send content to and from another product.
|
||||
* Automate tasks a human user could do.
|
||||
|
||||
A bot that sends content to or from another product is often called an
|
||||
[integration](/help/integrations-overview).
|
||||
|
||||
## Pre-made bots
|
||||
|
||||
Zulip natively supports integrations with over one hundred products, and with
|
||||
almost a thousand more through Zapier and IFTTT. If you're looking to add an
|
||||
integration with an existing product, see our
|
||||
[list of integrations](/integrations/), along with those of
|
||||
[Zapier](https://zapier.com/apps) and [IFTTT](https://ifttt.com/search).
|
||||
|
||||
## Anatomy of a bot
|
||||
|
||||
You can think of a bot as a special kind of user, with limited permissions.
|
||||
Each bot has a **name**, **profile picture**, **email**, **bot type** and **API key**.
|
||||
|
||||
* The **name** and **profile picture** play the same role they do for human users. They
|
||||
are the most visible attributes of a bot.
|
||||
* The **email** is used for [HTTP Basic authentication](/api/http-headers).
|
||||
* The **bot type** determines what the bot can and can't do (see below).
|
||||
* The **API key** is how the bot identifies itself to Zulip. Anyone with the
|
||||
bot's API key can impersonate the bot.
|
||||
|
||||
## Bot type
|
||||
|
||||
The **bot type** determines what the bot can do.
|
||||
|
||||
| Bot type | Permissions | Common uses |
|
||||
| ---------------- | ------------------------------------------------------------------ | --------------------------------------------------------------- |
|
||||
| Generic | Like a normal user account | Automating tasks, bots that listen to all messages on a channel |
|
||||
| Incoming webhook | Limited to only sending messages into Zulip | Automated notifications into Zulip |
|
||||
| Outgoing webhook | Generic bot that also receives new messages via HTTP post requests | Third party integrations, most custom bots |
|
||||
|
||||
A **generic** bot acts like a normal Zulip user that can only access Zulip via
|
||||
the API. There's a handful of actions bots can't take, including creating other
|
||||
bots.
|
||||
|
||||
An **outgoing webhook** bot can read direct messages where the bot
|
||||
is a participant, and channel messages where the bot is
|
||||
[mentioned](/help/mention-a-user-or-group). When the bot is DM'd or
|
||||
mentioned, it POSTs the message content to a URL of your choice. The
|
||||
POST request format can be in a Zulip format or a Slack-compatible
|
||||
format. This is the preferred bot type for interactive bots built on
|
||||
top of Zulip Botserver.
|
||||
|
||||
Use the most limited bot type that supports your integration. Anyone with the
|
||||
bot's API key can do anything the bot can, so giving bots unnecessary
|
||||
permissions can expose your organization to unnecessary risk.
|
||||
|
||||
## Channel permissions for bots
|
||||
|
||||
Bots can be subscribed to channels, and assigned [channel
|
||||
permissions](/help/channel-permissions) just like human users. In private
|
||||
channels with protected history, a bot can only access messages sent after it
|
||||
was subscribed to the channel.
|
||||
|
||||
Bots can send messages to any channel that their owner can, inheriting their
|
||||
owner's [sending permissions](/help/channel-posting-policy). You can give a bot
|
||||
channel management permissions, just like you would for a human user.
|
||||
|
||||
## Adding bots
|
||||
|
||||
By default, anyone other than guests can [add a bot](/help/add-a-bot-or-integration) to a
|
||||
Zulip organization, but administrators can
|
||||
[restrict bot creation](/help/restrict-bot-creation). Any bot that is added
|
||||
is visible and available for anyone to use.
|
||||
|
||||
## Integrations that act on behalf of users
|
||||
|
||||
If you want an integration to impersonate you (e.g., write messages that come
|
||||
from your Zulip account), use your [personal API key](/api/api-keys), rather
|
||||
than a bot's API key. You won't need to create a bot.
|
||||
|
||||
If you need a bot to send messages on behalf of multiple users, ask [Zulip
|
||||
support](mailto:support@zulip.com) or your server administrator to run the
|
||||
`manage.py change_user_role can_forge_sender` command to give a bot
|
||||
permission to send messages as users in your organization. Bots with the
|
||||
`can_forge_sender` permission can also see the names of all channels,
|
||||
including private channels. This is important for implementing integrations
|
||||
like the Jabber and IRC mirrors.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Integrations overview](/help/integrations-overview)
|
||||
* [Add a bot or integration](/help/add-a-bot-or-integration)
|
||||
* [Manage a bot](/help/manage-a-bot)
|
||||
* [Request an integration](/help/request-an-integration)
|
||||
* [Deactivate or reactivate a bot](/help/deactivate-or-reactivate-a-bot)
|
||||
* [Restrict bot creation](/help/restrict-bot-creation)
|
||||
* [View all bots in your organization](/help/view-all-bots-in-your-organization)
|
||||
* [Generate URL for an integration](/help/generate-integration-url)
|
||||
60
starlight_help/src/content/docs/bulleted-lists.mdx
Normal file
60
starlight_help/src/content/docs/bulleted-lists.mdx
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Bulleted lists
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import BulletedListsExamples from "../include/_BulletedListsExamples.mdx";
|
||||
import BulletedListsIntro from "../include/_BulletedListsIntro.mdx";
|
||||
import StartComposing from "../include/_StartComposing.mdx";
|
||||
|
||||
import UnorderedListIcon from "~icons/zulip-icon/unordered-list";
|
||||
|
||||
<BulletedListsIntro />
|
||||
|
||||
## Create a bulleted list
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via compose box button">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. *(optional)* Select the text you want to format.
|
||||
1. Click the **bulleted list** (<UnorderedListIcon />) icon at the
|
||||
bottom of the compose box to insert list formatting.
|
||||
1. Press <kbd>Enter</kbd> to automatically add a new bullet to the list.
|
||||
1. When your list is done, press <kbd>Enter</kbd> a second time to remove the
|
||||
bullet.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also use the **bulleted list** (<UnorderedListIcon />) icon
|
||||
to remove existing list formatting from the current line or selected text.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via Markdown">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. Type `*`, `-`, or `+` followed by a space and some text to start a bulleted
|
||||
list.
|
||||
1. Press <kbd>Enter</kbd> to automatically add a new bullet to the list.
|
||||
1. When your list is done, press <kbd>Enter</kbd> a second time to remove the
|
||||
bullet.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Examples
|
||||
|
||||
<BulletedListsExamples />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Message formatting](/help/format-your-message-using-markdown)
|
||||
* [Preview messages before sending](/help/preview-your-message-before-sending)
|
||||
* [Resize the compose box](/help/resize-the-compose-box)
|
||||
* [Numbered lists](/help/numbered-lists)
|
||||
57
starlight_help/src/content/docs/change-a-users-name.mdx
Normal file
57
starlight_help/src/content/docs/change-a-users-name.mdx
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Change a user's name
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import ManageThisUser from "../include/_ManageThisUser.mdx";
|
||||
import ManageUserTabTip from "../include/_ManageUserTabTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
import UserCogIcon from "~icons/zulip-icon/user-cog";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
By default, users can [change their name](/help/change-your-name), though
|
||||
organization administrators can
|
||||
[restrict name changes](/help/restrict-name-and-email-changes).
|
||||
|
||||
Organization administrators can always change any user's name.
|
||||
|
||||
## Change a user's name
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via user profile">
|
||||
<FlattenedSteps>
|
||||
<ManageThisUser />
|
||||
|
||||
1. Under **Name**, enter a new name.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ManageUserTabTip />
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via organization settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/users" />
|
||||
|
||||
1. Find the user you would like to manage. Click the
|
||||
**manage user** (<UserCogIcon />) icon
|
||||
to the right of their name.
|
||||
1. Under **Name**, enter a new name.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Change a user's role](/help/user-roles#change-a-users-role)
|
||||
* [Deactivate or reactivate a user](/help/deactivate-or-reactivate-a-user)
|
||||
* [Manage a user](/help/manage-a-user)
|
||||
80
starlight_help/src/content/docs/change-organization-url.mdx
Normal file
80
starlight_help/src/content/docs/change-organization-url.mdx
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Change organization URL
|
||||
---
|
||||
|
||||
import {Steps} from "@astrojs/starlight/components";
|
||||
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import CloudPlusOnly from "../include/_CloudPlusOnly.mdx";
|
||||
import OwnerOnly from "../include/_OwnerOnly.mdx";
|
||||
|
||||
<OwnerOnly />
|
||||
|
||||
Zulip supports changing the URL for an organization. Users who navigate to the
|
||||
old URL in the browser will see a notice about the organization being moved,
|
||||
prior to being redirected to the new URL. [Links to channels, topics and
|
||||
messages](/help/link-to-a-message-or-conversation) will thus continue to work.
|
||||
|
||||
When you change the URL:
|
||||
|
||||
* All users will be logged out of the web, mobile and desktop apps.
|
||||
* Any [API clients](/api/) or [integrations](/integrations/) will need
|
||||
to be updated to point to the new organization URL.
|
||||
|
||||
<ZulipTip>
|
||||
Consider using a [wildcard
|
||||
mention](/help/mention-a-user-or-group#mention-everyone-on-a-channel)
|
||||
in an announcement channel to let users know about an upcoming change.
|
||||
</ZulipTip>
|
||||
|
||||
## Change your Zulip Cloud subdomain
|
||||
|
||||
Zulip Cloud organizations are generally hosted at `<subdomain>.zulipchat.com`,
|
||||
with the subdomain chosen when the organization was created. Organization
|
||||
[owners](/help/user-roles) can request to change the subdomain.
|
||||
|
||||
Please email [support@zulip.com](mailto:support@zulip.com) with the following
|
||||
information:
|
||||
|
||||
<Steps>
|
||||
1. Your organization's current subdomain.
|
||||
1. The subdomain you would like to move your organization to.
|
||||
1. Whether you want links to the old subdomain to redirect to the new one for an
|
||||
extended period of time. By default, the old subdomain may be freed up for
|
||||
reuse after 3 months.
|
||||
</Steps>
|
||||
|
||||
## Move to a custom URL on Zulip Cloud
|
||||
|
||||
<CloudPlusOnly />
|
||||
|
||||
Because maintaining custom URLs requires effort from our operational team,
|
||||
this feature is available only for organizations with 25+ [Zulip Cloud
|
||||
Plus](https://zulip.com/plans/#cloud) licenses.
|
||||
|
||||
Please email [support@zulip.com](mailto:support@zulip.com) with the following
|
||||
information:
|
||||
|
||||
<Steps>
|
||||
1. Your organization's current URL.
|
||||
1. The URL you would like to move your organization to.
|
||||
</Steps>
|
||||
|
||||
## Change the URL for your self-hosted server
|
||||
|
||||
If you're self-hosting, you can change the root domain of your Zulip
|
||||
server by changing the `EXTERNAL_HOST` [setting][zulip-settings]. If
|
||||
you're [hosting multiple organizations][zulip-multiple-organizations]
|
||||
and want to change the subdomain for one of them, you can do this
|
||||
using the `change_realm_subdomain` [management command][management-commands].
|
||||
|
||||
In addition to configuring Zulip as detailed here, you also need to
|
||||
generate [SSL certificates][ssl-certificates] for your new domain.
|
||||
|
||||
[ssl-certificates]: https://zulip.readthedocs.io/en/stable/production/ssl-certificates.html
|
||||
|
||||
[zulip-settings]: https://zulip.readthedocs.io/en/stable/production/settings.html
|
||||
|
||||
[zulip-multiple-organizations]: https://zulip.readthedocs.io/en/stable/production/multiple-organizations.html
|
||||
|
||||
[management-commands]: https://zulip.readthedocs.io/en/stable/production/management-commands.html#other-useful-manage-py-commands
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: Change a channel's description
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewGeneral from "../include/_SelectChannelViewGeneral.mdx";
|
||||
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
|
||||
Channel descriptions can be used to explain the purpose of a channel, and link
|
||||
to usage guidelines, resources, or related channels. They appear in the
|
||||
navigation bar at the top of the web and desktop apps when you view the channel.
|
||||
You can hover over long channel descriptions with the mouse to view them in
|
||||
full.
|
||||
|
||||
Channel descriptions support Zulip's standard [Markdown
|
||||
formatting][markdown-formatting], with the exception that image previews are
|
||||
disabled. Use Markdown formatting to include a link to a website, Zulip
|
||||
[message][message-link], or [topic][topic-link] in the channel description:
|
||||
`[link text](URL)`.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewGeneral />
|
||||
|
||||
1. Click the **edit channel name and description**
|
||||
(<EditIcon />) icon to the right of the
|
||||
channel name, and enter a new description.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
Access this feature by following the web app instructions in your
|
||||
mobile device browser.
|
||||
|
||||
Implementation of this feature in the mobile app is tracked [on
|
||||
GitHub](https://github.com/zulip/zulip-flutter/issues/1102). If
|
||||
you're interested in this feature, please react to the issue's
|
||||
description with 👍.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Pin information](/help/pin-information)
|
||||
* [View channel information](/help/view-channel-information)
|
||||
* [Rename a channel](/help/rename-a-channel)
|
||||
* [Markdown formatting][markdown-formatting]
|
||||
* [Configure automated notices for channel events](/help/configure-automated-notices#channel-events)
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
|
||||
[markdown-formatting]: /help/format-your-message-using-markdown
|
||||
|
||||
[message-link]: /help/link-to-a-message-or-conversation#get-a-link-to-a-specific-message
|
||||
|
||||
[topic-link]: /help/link-to-a-message-or-conversation#get-a-link-to-a-specific-topic
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: Change the color of a channel
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ChannelActions from "../include/_ChannelActions.mdx";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SelectChannelViewPersonal from "../include/_SelectChannelViewPersonal.mdx";
|
||||
|
||||
Zulip assigns each of your channels a color when you subscribe to the
|
||||
channel. Changing a channel's color does not change it for anyone else.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via left sidebar">
|
||||
<FlattenedSteps>
|
||||
<ChannelActions />
|
||||
|
||||
1. Click **Change color**.
|
||||
1. Select a color from the grid, use the color picker, or enter a hex code.
|
||||
1. Click **Confirm** to save and apply the color change.
|
||||
1. Click outside the box to close the menu.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via channel settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/gear/channel-settings" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPersonal />
|
||||
|
||||
1. Under **Personal settings**, click on the colored square below **Channel color**.
|
||||
1. Select a color from the grid, use the color picker, or enter a hex code.
|
||||
1. Click **Choose** to save and apply the color change.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Introduction to channels](/help/introduction-to-channels)
|
||||
* [Channel folders](/help/channel-folders)
|
||||
* [Pin a channel](/help/pin-a-channel)
|
||||
* [Mute or unmute a channel](/help/mute-a-channel)
|
||||
* [Hide or reveal inactive channels](/help/manage-inactive-channels)
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Change the privacy of a channel
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ChannelPrivacyTypes from "../include/_ChannelPrivacyTypes.mdx";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import ContentAccessDefinition from "../include/_ContentAccessDefinition.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
<ChannelPrivacyTypes />
|
||||
|
||||
Organization administrators and [channel
|
||||
administrators](/help/configure-who-can-administer-a-channel) can always make a
|
||||
channel private. However, they can only make a private channel public or
|
||||
web-public if they have content access to it:
|
||||
|
||||
<ContentAccessDefinition />
|
||||
|
||||
<ZulipNote>
|
||||
**Warning**: Be careful making a private channel public. All past messages
|
||||
will become accessible, even if the channel previously had protected history.
|
||||
</ZulipNote>
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Subscription permissions**, configure **Who can access this channel**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
Access this feature by following the web app instructions in your
|
||||
mobile device browser.
|
||||
|
||||
Implementation of this feature in the mobile app is tracked [on
|
||||
GitHub](https://github.com/zulip/zulip-flutter/issues/1102). If
|
||||
you're interested in this feature, please react to the issue's
|
||||
description with 👍.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [Channel posting policy](/help/channel-posting-policy)
|
||||
* [Configure who can administer a channel](/help/configure-who-can-administer-a-channel)
|
||||
* [Configure automated notices for channel events](/help/configure-automated-notices#channel-events)
|
||||
18
starlight_help/src/content/docs/change-the-time-format.mdx
Normal file
18
starlight_help/src/content/docs/change-the-time-format.mdx
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: Change the time format
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
Based on your preference, Zulip can display times either in a 12-hour
|
||||
format (e.g., 5:00 PM) or a 24-hour format (e.g., 17:00).
|
||||
|
||||
### Change the time format
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **General**, select your preferred option from the
|
||||
**Time format** dropdown.
|
||||
</FlattenedSteps>
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Change your email address
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
|
||||
By default, anyone can change their email address at any time.
|
||||
|
||||
Organization administrators can
|
||||
[restrict users to certain email domains](/help/restrict-account-creation#configuring-email-domain-restrictions), or
|
||||
[prevent users from changing their email](/help/restrict-name-and-email-changes).
|
||||
|
||||
## Change your email address
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/account-and-privacy" />
|
||||
|
||||
1. Under **Account**, click on the
|
||||
**change your email** (<EditIcon />) icon
|
||||
to the right of your current email. If you do not see the
|
||||
**change your email** (<EditIcon />) icon,
|
||||
you do not have permission to change your email address.
|
||||
1. Enter your new email, and click **Change**.
|
||||
1. You will receive a confirmation email within a few minutes. Open it,
|
||||
and click **Confirm email change**.
|
||||
</FlattenedSteps>
|
||||
63
starlight_help/src/content/docs/change-your-language.mdx
Normal file
63
starlight_help/src/content/docs/change-your-language.mdx
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Change your language
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import TranslationProjectInfo from "../include/_TranslationProjectInfo.mdx";
|
||||
|
||||
<TranslationProjectInfo />
|
||||
|
||||
## Change the language of the Zulip app
|
||||
|
||||
Note that this will not change channel names, topic names (other than [*general
|
||||
chat*](/help/general-chat-topic)), or the language of messages you receive.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **General**, select a language from the dropdown under **Language**.
|
||||
Languages are marked as 100% translated only if every string
|
||||
in the web, desktop, and mobile apps is translated, including
|
||||
administrative UI and all error messages that the API can return.
|
||||
1. Click **Reload**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
Access this feature by following the web app instructions in your
|
||||
mobile device browser.
|
||||
|
||||
Implementation of this feature in the mobile app is tracked [on
|
||||
GitHub](https://github.com/zulip/zulip-flutter/issues/1139). If
|
||||
you're interested in this feature, please react to the issue's
|
||||
description with 👍.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Font configuration for unsupported languages
|
||||
|
||||
Zulip uses the Source Sans 3 font, which [supports over 30 languages][adobe-docs].
|
||||
If Source Sans 3 does not support your language, you may need to configure your
|
||||
browser to use a different font or adjust the default font size to properly
|
||||
display all the characters. See the documentation for [Chrome][chrome-docs],
|
||||
[Firefox][firefox-docs], or [Edge][edge-docs] for more information on how to
|
||||
configure your browser's default font.
|
||||
|
||||
[adobe-docs]: https://fonts.adobe.com/fonts/source-sans-3#details-section
|
||||
|
||||
[chrome-docs]: https://support.google.com/chrome/answer/96810
|
||||
|
||||
[firefox-docs]: https://support.mozilla.org/en-US/kb/change-fonts-and-colors-websites-use#w_custom-fonts
|
||||
|
||||
[edge-docs]: https://support.microsoft.com/en-us/microsoft-edge/increase-default-text-size-in-microsoft-edge-c62f80af-381d-0716-25a3-c4856dd3806c
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Configure organization language for automated messages and invitation emails][org-lang]
|
||||
|
||||
[org-lang]: /help/configure-organization-language
|
||||
29
starlight_help/src/content/docs/change-your-name.mdx
Normal file
29
starlight_help/src/content/docs/change-your-name.mdx
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Change your name
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
|
||||
By default, everyone can change their name in Zulip. You can write your name
|
||||
in any language you'd like.
|
||||
|
||||
Organization administrators can [change anyone's name](/help/change-a-users-name), and
|
||||
[prevent users from changing their names](/help/restrict-name-and-email-changes). This
|
||||
is useful when users' names are managed via LDAP or another data source.
|
||||
|
||||
### Change your name
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile" />
|
||||
|
||||
1. Edit the **Name** field.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipNote>
|
||||
**Note:** If you are unable to edit the name field, check
|
||||
that your organization allows name changes. Follow the steps at
|
||||
[prevent users from changing their names](/help/restrict-name-and-email-changes)
|
||||
to view your organization's settings.
|
||||
</ZulipNote>
|
||||
30
starlight_help/src/content/docs/change-your-password.mdx
Normal file
30
starlight_help/src/content/docs/change-your-password.mdx
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: Change your password
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ChangePasswordViaEmailConfirmation from "../include/_ChangePasswordViaEmailConfirmation.mdx";
|
||||
|
||||
You can reset your password at any time, as long as you either know your
|
||||
current password, or have access to the email address associated with your
|
||||
account.
|
||||
|
||||
### If you've forgotten or never had a password
|
||||
|
||||
<ChangePasswordViaEmailConfirmation />
|
||||
|
||||
### If you know your current password
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/account-and-privacy" />
|
||||
|
||||
1. Under **Account**, click **Change your password**.
|
||||
1. Enter your old password and your new password, and click **Change**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Logging in](/help/logging-in)
|
||||
* [Logging out](/help/logging-out)
|
||||
* [Protect your account](/help/protect-your-account)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Change your profile picture
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
import CloseIcon from "~icons/zulip-icon/close";
|
||||
|
||||
When you first create an account, you'll have an automatically generated profile
|
||||
picture in the style [configured](/help/configure-default-profile-pictures) by
|
||||
your organization. You can upload a custom profile picture for your Zulip account.
|
||||
|
||||
When you create a Zulip account using an email address already associated with
|
||||
an account in another Zulip organization, on Zulip Cloud or the same self-hosted
|
||||
Zulip installation, you can [import](/help/import-your-settings) your profile
|
||||
picture and other settings from an existing account.
|
||||
|
||||
If your organization has configured [Gravatar](https://en.gravatar.com/) as the
|
||||
default for profile pictures, and your email address already has a gravatar
|
||||
associated with it, Zulip will use your existing gravatar.
|
||||
|
||||
Organization administrators can [restrict profile picture
|
||||
changes](/help/restrict-profile-picture-changes).
|
||||
|
||||
### Change your profile picture
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile" />
|
||||
|
||||
1. Click on your profile picture on the right, and choose an image to upload.
|
||||
1. Crop the image as desired, and click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
### Reset your profile picture to default
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile" />
|
||||
|
||||
1. Hover over your profile picture on the right, and click the <CloseIcon />
|
||||
icon in the top right corner.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Configure default profile pictures](/help/configure-default-profile-pictures)
|
||||
* [Restrict profile picture changes](/help/restrict-profile-picture-changes)
|
||||
63
starlight_help/src/content/docs/change-your-timezone.mdx
Normal file
63
starlight_help/src/content/docs/change-your-timezone.mdx
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Change your time zone
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
Zulip uses the time zone configured on your computer or mobile device for
|
||||
displaying dates and times, such as when a message was sent.
|
||||
|
||||
You can [configure your **local time**](#configure-your-local-time) as it's
|
||||
shown to other users in your [user card](/help/user-cards) and
|
||||
[profile](/help/view-someones-profile). When your local time doesn't match your
|
||||
computer's time zone, the Zulip web and desktop apps display a banner offering
|
||||
to update it. If you don't want to see this banner, you can [hide
|
||||
it](#hide-banner-when-time-zones-dont-match).
|
||||
|
||||
## Configure your local time
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile" />
|
||||
|
||||
1. Under **Profile**, select a time zone.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Configure time zone used by Zulip to display dates and times
|
||||
|
||||
<Steps>
|
||||
1. Configure the time zone on your computer or mobile device.
|
||||
1. Reload Zulip.
|
||||
</Steps>
|
||||
|
||||
## Hide banner when time zones don't match
|
||||
|
||||
If you local time in Zulip differs from your device's time zone (for example,
|
||||
you changed your computer's time zone while traveling), you'll see a banner in
|
||||
the web and desktop apps offering to update your local time to match your
|
||||
computer's current time zone.
|
||||
|
||||
You can choose to permanently hide this banner.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile" />
|
||||
|
||||
1. Under **Profile**, toggle **Offer to update to my computer's
|
||||
time zone**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [User cards](/help/user-cards)
|
||||
* [View someone's profile](/help/view-someones-profile)
|
||||
* [Edit your profile](/help/edit-your-profile)
|
||||
78
starlight_help/src/content/docs/channel-feed.mdx
Normal file
78
starlight_help/src/content/docs/channel-feed.mdx
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: Channel feed
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import KeyboardTip from "../../components/KeyboardTip.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ChannelActions from "../include/_ChannelActions.mdx";
|
||||
import ConfigureChannelLinks from "../include/_ConfigureChannelLinks.mdx";
|
||||
import MobileChannels from "../include/_MobileChannels.mdx";
|
||||
|
||||
import AllMessagesIcon from "~icons/zulip-icon/all-messages";
|
||||
|
||||
The **Channel feed** is a feed of all the topics that you have not
|
||||
[muted](/help/mute-a-topic) in a particular channel. It's a great way to get a
|
||||
quick overview of recent messages in a channel.
|
||||
|
||||
## Go to channel feed for a subscribed channel
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<ChannelActions />
|
||||
|
||||
1. Click **Go to channel feed**. If you do not see this option, Zulip is
|
||||
[configured](#configure-where-channel-links-in-the-left-sidebar-go) so that
|
||||
clicking on the channel name in the left sidebar will take you directly to
|
||||
the channel feed.
|
||||
</FlattenedSteps>
|
||||
|
||||
<KeyboardTip>
|
||||
Use <kbd>S</kbd> to go from a topic view to the channel feed.
|
||||
</KeyboardTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MobileChannels />
|
||||
|
||||
1. Select a channel.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also go to the channel feed from a conversation view or from the
|
||||
[list of topics in a channel](/help/list-of-topics), by tapping the
|
||||
**channel feed** (<AllMessagesIcon />)
|
||||
icon in the upper right corner of the app.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Go to channel feed for an unsubscribed channel
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/available" />
|
||||
|
||||
1. Select a channel.
|
||||
1. Click the channel name in the top bar.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Configure where channel links in the left sidebar go
|
||||
|
||||
<ConfigureChannelLinks />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Combined feed](/help/combined-feed)
|
||||
* [List of topics in a channel](/help/list-of-topics)
|
||||
* [Left sidebar](/help/left-sidebar)
|
||||
* [Reading strategies](/help/reading-strategies)
|
||||
* [Reading conversations](/help/reading-conversations)
|
||||
69
starlight_help/src/content/docs/channel-folders.mdx
Normal file
69
starlight_help/src/content/docs/channel-folders.mdx
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: Channel folders
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ChannelFoldersIntro from "../include/_ChannelFoldersIntro.mdx";
|
||||
import MoveChannelToFolder from "../include/_MoveChannelToFolder.mdx";
|
||||
|
||||
import MoreVerticalIcon from "~icons/zulip-icon/more-vertical";
|
||||
|
||||
<ChannelFoldersIntro />
|
||||
|
||||
## Move a channel to a folder
|
||||
|
||||
<MoveChannelToFolder />
|
||||
|
||||
## Configure whether channels are grouped by folder in the Inbox view
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via Inbox view">
|
||||
<Steps>
|
||||
1. Click the **ellipsis** (<MoreVerticalIcon />)
|
||||
to the right of the **Filter** box at the top of the Inbox view.
|
||||
1. Click **Group channels by folder** or **Don't group channels by folder**, as
|
||||
desired.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via personal settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Information**, toggle **Group channels by folder in the inbox**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Configure whether channels are grouped by folder in the left sidebar
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via left sidebar">
|
||||
<Steps>
|
||||
1. Click the **ellipsis** (<MoreVerticalIcon />)
|
||||
to the right of the **Filter left sidebar** box in the upper left.
|
||||
1. Click **Group channels by folder** or **Don't group channels by folder**, as
|
||||
desired.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via personal settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Left sidebar**, toggle **Group channels by folder in the left
|
||||
sidebar**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Manage channel folders](/help/manage-channel-folders)
|
||||
* [Introduction to channels](/help/introduction-to-channels)
|
||||
* [Pin a channel](/help/pin-a-channel)
|
||||
* [Mute or unmute a channel](/help/mute-a-channel)
|
||||
* [Hide or reveal inactive channels](/help/manage-inactive-channels)
|
||||
107
starlight_help/src/content/docs/channel-notifications.mdx
Normal file
107
starlight_help/src/content/docs/channel-notifications.mdx
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: Channel notifications
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ChannelActions from "../include/_ChannelActions.mdx";
|
||||
import SelectChannelViewPersonal from "../include/_SelectChannelViewPersonal.mdx";
|
||||
|
||||
import ResetIcon from "~icons/zulip-icon/reset";
|
||||
|
||||
You can configure desktop, mobile, and email notifications on a channel by
|
||||
channel basis.
|
||||
|
||||
Organization administrators can [enable mobile
|
||||
notifications](/help/enable-mobile-notifications-by-default), per channel,
|
||||
as a default for new subscribers.
|
||||
|
||||
## Configure notifications for a single channel
|
||||
|
||||
These settings will override any default channel notification settings. In [muted
|
||||
channels](/help/mute-a-channel), channel notification settings apply only to
|
||||
[unmuted topics](/help/mute-a-topic).
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via channel settings">
|
||||
<FlattenedSteps>
|
||||
<ChannelActions />
|
||||
|
||||
1. Click **Channel settings**.
|
||||
|
||||
<SelectChannelViewPersonal />
|
||||
|
||||
1. Under **Notification settings**, toggle your preferred
|
||||
notifications settings for the channel.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via personal settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. In the **Notification triggers** table, find the name of the channel
|
||||
you want to configure. If the channel is currently set to the default
|
||||
channel notification settings, you can select it from the **Customize
|
||||
another channel** dropdown at the bottom of the table.
|
||||
1. Toggle your preferred notifications settings for the selected
|
||||
channel.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
To reset a channel's notifications to the default settings, hover
|
||||
over its name in the notification triggers table, and click the
|
||||
**reset to default notifications**
|
||||
(<ResetIcon />) icon.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
Access this feature by following the web app instructions in your
|
||||
mobile device browser.
|
||||
|
||||
Implementation of this feature in the mobile app is tracked [on
|
||||
GitHub](https://github.com/zulip/zulip-flutter/issues/1223). If
|
||||
you're interested in this feature, please react to the issue's
|
||||
description with 👍.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Configure default notifications for all channels
|
||||
|
||||
These settings only apply to channels where you have not
|
||||
explicitly set a notification preference.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. In the **Notification triggers** table,
|
||||
toggle the settings for **Channels**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
Access this feature by following the web app instructions in your
|
||||
mobile device browser.
|
||||
|
||||
Implementation of this feature in the mobile app is tracked [on
|
||||
GitHub](https://github.com/zulip/zulip-flutter/issues/661). If
|
||||
you're interested in this feature, please react to the issue's
|
||||
description with 👍.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Desktop notifications](/help/desktop-notifications)
|
||||
* [Email notifications](/help/email-notifications)
|
||||
* [Mobile notifications](/help/mobile-notifications)
|
||||
* [Mute or unmute a channel](/help/mute-a-channel)
|
||||
* [Mute or unmute a topic](/help/mute-a-topic)
|
||||
* [DMs, mentions, and alerts](/help/dm-mention-alert-notifications)
|
||||
* [Do not disturb](/help/do-not-disturb)
|
||||
115
starlight_help/src/content/docs/channel-permissions.mdx
Normal file
115
starlight_help/src/content/docs/channel-permissions.mdx
Normal file
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: Channel permissions
|
||||
---
|
||||
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ChannelAdminPermissions from "../include/_ChannelAdminPermissions.mdx";
|
||||
import ChannelPrivacyTypes from "../include/_ChannelPrivacyTypes.mdx";
|
||||
import ChannelsIntro from "../include/_ChannelsIntro.mdx";
|
||||
import WebPublicChannelsIntro from "../include/_WebPublicChannelsIntro.mdx";
|
||||
|
||||
import GlobeIcon from "~icons/zulip-icon/globe";
|
||||
import HashtagIcon from "~icons/zulip-icon/hashtag";
|
||||
import LockIcon from "~icons/zulip-icon/lock";
|
||||
|
||||
<ChannelsIntro />
|
||||
|
||||
<ChannelPrivacyTypes />
|
||||
|
||||
## Configure channel permissions
|
||||
|
||||
You can configure the following permissions for each channel,
|
||||
regardless of its type.
|
||||
|
||||
Subscription permissions:
|
||||
|
||||
* [Who can administer the channel](/help/configure-who-can-administer-a-channel)
|
||||
* [Who can subscribe themselves](/help/configure-who-can-subscribe)
|
||||
* [Who can subscribe anyone](/help/configure-who-can-invite-to-channels#configure-who-can-subscribe-anyone-to-a-specific-channel)
|
||||
* [Who can unsubscribe anyone](/help/configure-who-can-unsubscribe-others)
|
||||
|
||||
Messaging permissions:
|
||||
|
||||
* [Who can send messages](/help/channel-posting-policy)
|
||||
* [Who can start new topics](/help/configure-who-can-start-new-topics)
|
||||
* [Whether topics are required](/help/require-topics)
|
||||
|
||||
Moderation permissions:
|
||||
|
||||
* [Who can move messages](/help/restrict-moving-messages)
|
||||
* [Who can resolve topics](/help/restrict-resolving-topics)
|
||||
* [Who can delete messages](/help/restrict-message-editing-and-deletion)
|
||||
|
||||
For the organization as a whole, you can:
|
||||
|
||||
* [Restrict channel creation](/help/configure-who-can-create-channels)
|
||||
* [Restrict who can subscribe others to channels](/help/configure-who-can-invite-to-channels#configure-who-can-subscribe-others-to-channels-in-general)
|
||||
|
||||
Any permission, including whether a channel is private, public, or web-public,
|
||||
can be modified after the channel is created.
|
||||
|
||||
## Private channels
|
||||
|
||||
[Private channels](#private-channels) (indicated by <LockIcon />) are for conversations that should be visible to users who
|
||||
are specifically granted access. There are two types of private channels in
|
||||
Zulip:
|
||||
|
||||
* In private channels with **shared history**, new subscribers can access the
|
||||
channel's full message history. For example, a newly added team member can get
|
||||
ramped up on a secret project by seeing prior discussions.
|
||||
* In private channels with **protected history**, new subscribers can only see
|
||||
messages sent after they join. For example, a new manager would not be able to
|
||||
see past discussions regarding their own hiring process or performance management.
|
||||
|
||||
<ChannelAdminPermissions />
|
||||
|
||||
Administrators can [export](/help/export-your-organization) messages in private
|
||||
channels only if [granted permission to do
|
||||
so](/help/export-your-organization#configure-whether-administrators-can-export-your-private-data)
|
||||
by a subscriber.
|
||||
|
||||
Users who do not have special permissions (they are not organization
|
||||
administrators, and have not been granted access to channel metadata) cannot
|
||||
easily see which private channels exist. They can find out that a channel exists
|
||||
only by attempting to create a channel with the same name, if they have
|
||||
[permission to create channels](/help/configure-who-can-create-channels). They
|
||||
can't get any other information about private channels they are not subscribed
|
||||
to.
|
||||
|
||||
<ZulipNote>
|
||||
If you create a [bot](/help/bots-overview) that is allowed to read messages
|
||||
in a private channel (e.g., a **generic bot**, *not* an **incoming webhook bot**,
|
||||
which is more limited), an administrator can in theory gain access to messages
|
||||
in the channel by making themselves the bot's owner.
|
||||
</ZulipNote>
|
||||
|
||||
## Public channels
|
||||
|
||||
Public channels (indicated by <HashtagIcon />) are open to all members of your organization other than
|
||||
[guests](/help/guest-users). Anyone who is not a guest can:
|
||||
|
||||
* See information about the channel, including its name, description, permission
|
||||
settings, and subscribers.
|
||||
* Subscribe or unsubscribe themselves to the channel.
|
||||
* See all messages and topics, whether or not they are subscribed.
|
||||
|
||||
You can configure other permissions for public channels, such as [who is allowed
|
||||
to post](/help/channel-posting-policy).
|
||||
|
||||
Guest users can't see public (or private) channels, unless they have been specifically
|
||||
subscribed to the channel.
|
||||
|
||||
## Web-public channels
|
||||
|
||||
<WebPublicChannelsIntro />
|
||||
|
||||
Web-public channels are indicated with a **globe** (<GlobeIcon />) icon.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [User roles](/help/user-roles)
|
||||
* [Guest users](/help/guest-users)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Public access option](/help/public-access-option)
|
||||
* [Restrict channel creation](/help/configure-who-can-create-channels)
|
||||
* [Configure who can administer a channel](/help/configure-who-can-administer-a-channel)
|
||||
43
starlight_help/src/content/docs/channel-posting-policy.mdx
Normal file
43
starlight_help/src/content/docs/channel-posting-policy.mdx
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: Channel posting policy
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
You can restrict who can send messages to a channel. For example,
|
||||
you can set up an announcement channel where only a specific
|
||||
[group](/help/user-groups) of users can send messages.
|
||||
|
||||
<ZulipTip>
|
||||
You can also [configure who can start new
|
||||
topics](/help/configure-who-can-start-new-topics).
|
||||
</ZulipTip>
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Messaging permissions**, configure **Who can post to this channel**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Configure who can start new topics](/help/configure-who-can-start-new-topics)
|
||||
* [Configure automated notices for channel events](/help/configure-automated-notices#channel-events)
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [User roles](/help/user-roles)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Set default channels for new users](/help/set-default-channels-for-new-users)
|
||||
* [Configure who can administer a channel](/help/configure-who-can-administer-a-channel)
|
||||
28
starlight_help/src/content/docs/cloud-to-self-hosting.mdx
Normal file
28
starlight_help/src/content/docs/cloud-to-self-hosting.mdx
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Move from Zulip Cloud to self-hosting
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
You can move freely between [Zulip Cloud](https://zulip.com/zulip-cloud/)
|
||||
hosting and [self-hosting](https://zulip.com/self-hosting/): you own
|
||||
your data.
|
||||
|
||||
## Move from Zulip Cloud to self-hosting
|
||||
|
||||
<Steps>
|
||||
1. [Export](/help/export-your-organization) your organization's data from
|
||||
Zulip Cloud.
|
||||
1. Follow [the instructions][import-only] to import your data into a
|
||||
self-hosted server.
|
||||
</Steps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Choosing between Zulip Cloud and self-hosting](/help/zulip-cloud-or-self-hosting)
|
||||
* [Export your organization](/help/export-your-organization)
|
||||
* [Change organization URL](/help/change-organization-url)
|
||||
* [Deactivate your organization](/help/deactivate-your-organization)
|
||||
* [Move from self-hosting to Zulip Cloud](/help/move-to-zulip-cloud)
|
||||
|
||||
[import-only]: https://zulip.readthedocs.io/en/stable/production/export-and-import.html#import-into-a-new-zulip-server
|
||||
201
starlight_help/src/content/docs/code-blocks.mdx
Normal file
201
starlight_help/src/content/docs/code-blocks.mdx
Normal file
@@ -0,0 +1,201 @@
|
||||
---
|
||||
title: Code blocks
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import KeyboardTip from "../../components/KeyboardTip.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import CodeBlocksExamples from "../include/_CodeBlocksExamples.mdx";
|
||||
import CodeBlocksIntro from "../include/_CodeBlocksIntro.mdx";
|
||||
import StartComposing from "../include/_StartComposing.mdx";
|
||||
|
||||
import CodeIcon from "~icons/zulip-icon/code";
|
||||
|
||||
<CodeBlocksIntro />
|
||||
|
||||
## Insert code formatting
|
||||
|
||||
Zulip's compose box has a smart **code** (<CodeIcon />) button, which inserts contextually appropriate code
|
||||
formatting:
|
||||
|
||||
* If no text is selected, the button inserts code block (` ``` `) formatting.
|
||||
* If selected text is on one line, the button inserts code span (`` ` ``)
|
||||
formatting.
|
||||
* If selected text is on multiple lines, the button inserts code block (` ``` `)
|
||||
formatting.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via compose box button">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. *(optional)* Select the text you want to format.
|
||||
1. Click the **code** (<CodeIcon />) icon at the
|
||||
bottom of the compose box to insert code formatting.
|
||||
1. *(optional)* To enable syntax highlighting in a code bock, start typing the
|
||||
name of the desired programming language directly after the initial ` ``` `.
|
||||
Select the language from the auto-complete suggestions.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also use the **code** (<CodeIcon />)
|
||||
icon to remove existing code formatting from the selected text.
|
||||
</ZulipTip>
|
||||
|
||||
<KeyboardTip>
|
||||
You can also use <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>C</kbd>
|
||||
to insert code formatting.
|
||||
</KeyboardTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via Markdown">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. To create an inline code span, use single backticks around the text:
|
||||
`text`
|
||||
To create a code block, use triple backticks around the text:
|
||||
```
|
||||
def f(x):
|
||||
return x+1
|
||||
```
|
||||
To enable syntax highlighting, use triple backticks followed by one or more
|
||||
letters, and select the desired programming language from the auto-complete
|
||||
suggestions.
|
||||
```python
|
||||
def fib(n):
|
||||
# TODO: base case
|
||||
return fib(n-1) + fib(n-2)
|
||||
```
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also use `~~~` to start code blocks, or just indent the code 4 or more
|
||||
spaces.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Examples
|
||||
|
||||
<CodeBlocksExamples />
|
||||
|
||||
## Language tagging
|
||||
|
||||
Tagging a code block with a language enables syntax highlighting and
|
||||
(if configured) [code playgrounds](#code-playgrounds). Zulip supports syntax
|
||||
highlighting for hundreds of languages.
|
||||
|
||||
A code block can be tagged by typing the language name after the fence
|
||||
(` ``` `) that begins a code block, as shown here. Typeahead will
|
||||
help you enter the name for the language. The **Short names** values
|
||||
from the [Pygments lexer documentation][pygments-lexers] are the
|
||||
complete set of values that support syntax highlighting.
|
||||
|
||||
````
|
||||
``` python
|
||||
print("Hello world!")
|
||||
```
|
||||
````
|
||||
|
||||
### Default code block language
|
||||
|
||||
Organization administrators can also configure a default language for code
|
||||
blocks, which will be used whenever the code block has no tag.
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Message feed settings**, edit **Default language for code blocks**.
|
||||
</FlattenedSteps>
|
||||
|
||||
When a default language is configured, one can use ` ```text ` to display
|
||||
code blocks without any syntax highlighting (e.g., to paste an error message).
|
||||
|
||||
## Code playgrounds
|
||||
|
||||
Code playgrounds are interactive in-browser development environments
|
||||
that are designed to make it convenient to edit
|
||||
and debug code. Code playgrounds can be configured for any programming language.
|
||||
Zulip code blocks that are tagged with the language will have a button visible
|
||||
on hover that allows you to open the code block in the code playground site.
|
||||
|
||||
### Add a custom code playground
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/playground-settings" />
|
||||
|
||||
1. Under **Add a new code playground**, enter a **Language**, **Name**, and
|
||||
**URL template**.
|
||||
1. Click **Add code playground**.
|
||||
</FlattenedSteps>
|
||||
|
||||
For example, to configure code a playground for Rust, you could specify the
|
||||
language and URL template as `Rust` and `https://play.rust-lang.org/?code={code}`.
|
||||
|
||||
When a code block is labeled as `rust` (either explicitly or by organization
|
||||
default), users would get an on-hover option to open the code block in the
|
||||
specified code playground.
|
||||
|
||||
<ZulipTip>
|
||||
Code playgrounds use [RFC 6570](https://www.rfc-editor.org/rfc/rfc6570.html)
|
||||
compliant URL templates to describe how links should be generated. Zulip's
|
||||
rendering engine will pass the URL-encoded code from the code block as the
|
||||
`code` parameter, denoted as `{code}` in this URL template, in order to
|
||||
generate the URL. You can refer to parts of the documentation on URL
|
||||
templates from [adding a custom linkifier](/help/add-a-custom-linkifier).
|
||||
</ZulipTip>
|
||||
|
||||
### Examples of playground URL templates
|
||||
|
||||
Here is a list of playground URL templates you can use for some popular
|
||||
languages:
|
||||
|
||||
* For Java: `https://pythontutor.com/java.html#code={code}` or
|
||||
`https://cscircles.cemc.uwaterloo.ca/java_visualize/#code={code}`
|
||||
* For JavaScript: `https://pythontutor.com/javascript.html#code={code}`
|
||||
* For Python: `https://pythontutor.com/python-compiler.html#code={code}`
|
||||
* For C: `https://pythontutor.com/c.html#code={code}`
|
||||
* For C++: `https://pythontutor.com/cpp.html#code={code}`
|
||||
* For Rust: `https://play.rust-lang.org/?code={code}`
|
||||
|
||||
### Technical details
|
||||
|
||||
* You can configure multiple playgrounds for a given language; if you do that,
|
||||
the user will get to choose which playground to open the code in.
|
||||
* The **Language** field is the human-readable Pygments language name for that
|
||||
programming language. The language tag for a code block is internally mapped
|
||||
to these human-readable Pygments names; e.g., `py3` and `py` are mapped to
|
||||
`Python`. One can use the typeahead (which appears when you type something
|
||||
or just click on the language field) to look up the Pygments name.
|
||||
* The links for opening code playgrounds are always constructed by substituting
|
||||
the URL-encoded contents of the code block into `code` variable in the URL template.
|
||||
The URL template is required to contain exactly one variable named `code`.
|
||||
* Code playground sites do not always clearly document their URL format; often
|
||||
you can just get the prefix from your browser's URL bar.
|
||||
* You can also use a custom language name to implement simple integrations.
|
||||
For example, a code block tagged with the "language" `send_tweet` could be
|
||||
used with a "playground" that sends the content of the code block as a Tweet.
|
||||
|
||||
If you have any trouble setting up a code playground, please [contact
|
||||
us](/help/contact-support) with details on what you're trying to do, and we'll
|
||||
be happy to help you out.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Message formatting](/help/format-your-message-using-markdown)
|
||||
* [LaTeX](/help/latex)
|
||||
* [Spoilers](/help/spoilers)
|
||||
* [Quote message](/help/quote-or-forward-a-message)
|
||||
|
||||
[pygments-lexers]: https://pygments.org/docs/lexers/
|
||||
|
||||
[get_lexer_by_name]: https://pygments-doc.readthedocs.io/en/latest/lexers/lexers.html#pygments.lexers.get_lexer_by_name
|
||||
100
starlight_help/src/content/docs/collaborative-to-do-lists.mdx
Normal file
100
starlight_help/src/content/docs/collaborative-to-do-lists.mdx
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
title: Collaborative to-do lists
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import EndComposing from "../include/_EndComposing.mdx";
|
||||
import StartComposing from "../include/_StartComposing.mdx";
|
||||
import ToDoListsExamples from "../include/_ToDoListsExamples.mdx";
|
||||
import ToDoListsIntro from "../include/_ToDoListsIntro.mdx";
|
||||
|
||||
import CheckIcon from "~icons/fa/check";
|
||||
import PencilIcon from "~icons/fa/pencil";
|
||||
import RemoveIcon from "~icons/fa/remove";
|
||||
import GripVerticalIcon from "~icons/zulip-icon/grip-vertical";
|
||||
import TodoListIcon from "~icons/zulip-icon/todo-list";
|
||||
import TrashIcon from "~icons/zulip-icon/trash";
|
||||
|
||||
<ToDoListsIntro />
|
||||
|
||||
## Create a to-do list
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via compose box button">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. Make sure the compose box is empty.
|
||||
1. Click the **add to-do list** (<TodoListIcon />) icon at the bottom
|
||||
of the compose box.
|
||||
1. Fill out todo-list information as desired, and click **Create to-do
|
||||
list** to insert todo-list formatting.
|
||||
|
||||
<EndComposing />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
To reorder the list of todos, click and drag the **vertical dots**
|
||||
(<GripVerticalIcon />) to the left of
|
||||
each option. To delete an option, click the **delete**
|
||||
(<TrashIcon />) icon to the right of it.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via Markdown">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. Make sure the compose box is empty.
|
||||
1. Type `/todo` followed by a space, and the title of the to-do list.
|
||||
1. *(optional)* Type each task on a new line, with its description, if
|
||||
any, after a <kbd>:</kbd> and blank space.
|
||||
|
||||
<EndComposing />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You will be able to add tasks after the to-do list is created.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Add tasks to a to-do list
|
||||
|
||||
<Steps>
|
||||
1. Fill out the **New task** field, and optionally the **Description**
|
||||
field at the bottom of the to-do list.
|
||||
1. Click **Add task** to add the new task to the to-do list.
|
||||
</Steps>
|
||||
|
||||
## Edit the to-do list title
|
||||
|
||||
<ZulipNote>
|
||||
Only the creator of a to-do list can edit the title.
|
||||
</ZulipNote>
|
||||
|
||||
<Steps>
|
||||
1. Click the **pencil** (<PencilIcon />) icon
|
||||
to the right of the title.
|
||||
1. Edit the title as desired.
|
||||
1. Click the **checkmark** (<CheckIcon />) icon or press
|
||||
<kbd>Enter</kbd> to save your changes.
|
||||
</Steps>
|
||||
|
||||
<ZulipTip>
|
||||
You can click the <RemoveIcon /> icon or press
|
||||
<kbd>Esc</kbd> to discard your changes.
|
||||
</ZulipTip>
|
||||
|
||||
## Examples
|
||||
|
||||
<ToDoListsExamples />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Message formatting](/help/format-your-message-using-markdown)
|
||||
* [Polls](/help/create-a-poll)
|
||||
24
starlight_help/src/content/docs/collapse-a-message.mdx
Normal file
24
starlight_help/src/content/docs/collapse-a-message.mdx
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
title: Collapse a message
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import MessageActionsMenu from "../include/_MessageActionsMenu.mdx";
|
||||
|
||||
Collapse messages that you don't want to see. Zulip sometimes automatically
|
||||
partially condenses long messages. This feature is different, and will fully
|
||||
remove the message content from view.
|
||||
|
||||
### Collapse a message
|
||||
|
||||
<FlattenedSteps>
|
||||
<MessageActionsMenu />
|
||||
|
||||
1. Click **Collapse message**.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
To expand a message, click **Show more** at the bottom of the collapsed
|
||||
message.
|
||||
</ZulipTip>
|
||||
23
starlight_help/src/content/docs/combined-feed.mdx
Normal file
23
starlight_help/src/content/docs/combined-feed.mdx
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Combined feed
|
||||
---
|
||||
|
||||
import KeyboardTip from "../../components/KeyboardTip.astro";
|
||||
import CombinedFeed from "../include/_CombinedFeed.mdx";
|
||||
|
||||
<CombinedFeed />
|
||||
|
||||
<KeyboardTip>
|
||||
Use <kbd>S</kbd> (go to channel) or <kbd>Shift</kbd> +
|
||||
<kbd>S</kbd> (go to conversation) to zoom in, and <kbd>A</kbd> to
|
||||
get back to **Combined feed**.
|
||||
</KeyboardTip>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Reading strategies](/help/reading-strategies)
|
||||
* [Inbox](/help/inbox)
|
||||
* [Recent conversations](/help/recent-conversations)
|
||||
* [Configure home view](/help/configure-home-view)
|
||||
* [Reading conversations](/help/reading-conversations)
|
||||
* [Channel feed](/help/channel-feed)
|
||||
67
starlight_help/src/content/docs/communities-directory.mdx
Normal file
67
starlight_help/src/content/docs/communities-directory.mdx
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Zulip communities directory
|
||||
---
|
||||
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import CommunitiesDirectoryInstructions from "../include/_CommunitiesDirectoryInstructions.mdx";
|
||||
import CommunitiesDirectoryIntro from "../include/_CommunitiesDirectoryIntro.mdx";
|
||||
|
||||
<CommunitiesDirectoryIntro />
|
||||
|
||||
## Eligibility
|
||||
|
||||
In order to be eligible for listing in the communities directory, an
|
||||
organization must be open to the public. Your organization is eligible
|
||||
if users are allowed to [join without an invitation][join-without-invite]
|
||||
and/or the [public access option](/help/public-access-option) is enabled.
|
||||
|
||||
The directory will be organized by [organization type](/help/organization-type),
|
||||
so it is highly recommended that you make sure the appropriate category
|
||||
is selected.
|
||||
|
||||
Zulip reserves the right to use editorial discretion.
|
||||
Giving Zulip permission to promote your organization in the communities
|
||||
directory does not guarantee that it will be listed.
|
||||
|
||||
### Self-hosted Zulip communities
|
||||
|
||||
Zulip plans to develop support for self-hosted Zulip communities that
|
||||
have registered their servers with the [Zulip mobile push
|
||||
notification service][push-notifications] to sign-up for the Zulip
|
||||
communities directory.
|
||||
|
||||
Until that feature is developed, if you administer a self-hosted Zulip
|
||||
community and would like to be listed in the directory, please contact
|
||||
[Zulip support](mailto:support@zulip.com). Changing the setting in your
|
||||
Zulip organization will not send any information to the Zulip project
|
||||
at this time, even if you use the Zulip mobile push notifications
|
||||
service.
|
||||
|
||||
[join-without-invite]: /help/restrict-account-creation#set-whether-invitations-are-required-to-join
|
||||
|
||||
[communities-directory-permission]: /help/communities-directory#give-permission-to-be-in-the-zulip-communities-directory
|
||||
|
||||
[push-notifications]: https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html
|
||||
|
||||
## Change whether your organization may be listed in the Zulip communities directory
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<CommunitiesDirectoryInstructions />
|
||||
|
||||
<ZulipTip>
|
||||
Organizations that are not open to the public will not be listed at this time.
|
||||
If you administer a non-public organization, please check the box to request
|
||||
to be listed in the future.
|
||||
</ZulipTip>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Create your organization profile](/help/create-your-organization-profile)
|
||||
* [Public access option](/help/public-access-option)
|
||||
* [Linking to the Zulip website](/help/linking-to-zulip-website)
|
||||
* [Support the Zulip project](/help/support-zulip-project)
|
||||
* [Restrict account creation](/help/restrict-account-creation)
|
||||
* [Moderating open organizations](/help/moderating-open-organizations)
|
||||
* [Organization type](/help/organization-type)
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: Configure a custom welcome message
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import InviteUsers from "../include/_InviteUsers.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
You can configure a custom welcome message to be sent to new users in your
|
||||
organization, along with standard onboarding messages from Welcome Bot. For
|
||||
example, you can describe the purpose of important channels, and link to your
|
||||
organization's guidelines for using Zulip.
|
||||
|
||||
Administrators can also customize the message each time they [create an
|
||||
invitation](/help/invite-new-users). Invitations sent by other users will always
|
||||
use the default custom welcome message configured by your organization's
|
||||
administrators.
|
||||
|
||||
<ZulipTip>
|
||||
You can compose the welcome message in the compose box to benefit from
|
||||
buttons and typeahead suggestions for message formatting, and copy it over.
|
||||
</ZulipTip>
|
||||
|
||||
## Configure a default custom welcome message
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Users will receive the message that's configured at the time when they accept
|
||||
the invitation, so there's no need to update or revoke invitations when you
|
||||
change the welcome message.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Onboarding**, enable **Send a custom Welcome Bot message to
|
||||
new users**.
|
||||
1. Under **Message text**, enter a custom welcome message using Zulip's standard
|
||||
[Markdown formatting](/help/format-your-message-using-markdown).
|
||||
1. *(optional)* Click **Send me a test message**, followed by **View message**,
|
||||
to see how the message will look. Follow the instructions above to return to
|
||||
the panel where this setting can be configured.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Customize the welcome message when sending an invitation
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<InviteUsers />
|
||||
|
||||
1. If there is no custom message configured in your organization, enable **Send
|
||||
a custom Welcome Bot message**. Otherwise, disable **Send the default Welcome
|
||||
Bot message configured for this organization**.
|
||||
1. Under **Message text**, enter the welcome message to use for this
|
||||
invitation using Zulip's standard [Markdown
|
||||
formatting](/help/format-your-message-using-markdown).
|
||||
1. Configure other invitation details as desired, and click **Invite** or
|
||||
**Create link**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Invite new users](/help/invite-new-users)
|
||||
* [Set default channels for new users](/help/set-default-channels-for-new-users)
|
||||
* [Configure default new user settings](/help/configure-default-new-user-settings)
|
||||
* [Joining a Zulip organization](/help/join-a-zulip-organization)
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: Configure authentication methods
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import OwnerOnly from "../include/_OwnerOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
<OwnerOnly />
|
||||
|
||||
You can choose which authentication methods to enable for users to log in to
|
||||
your organization. The following options are available on all
|
||||
[plans](https://zulip.com/plans/):
|
||||
|
||||
* Email and password
|
||||
* Social authentication: Google, GitHub, GitLab, Apple, Discord
|
||||
|
||||
The following options are available for organizations on Zulip Cloud Standard,
|
||||
Zulip Cloud Plus, and all self-hosted Zulip servers:
|
||||
|
||||
* Oauth2 with Microsoft Entra ID (AzureAD)
|
||||
|
||||
The following options are available for organizations on Zulip Cloud Plus, and all self-hosted Zulip servers:
|
||||
|
||||
* [SAML authentication](/help/saml-authentication), including Okta, OneLogin, Entra ID (AzureAD), Keycloak, Auth0
|
||||
* [OpenID
|
||||
Connect](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#openid-connect)
|
||||
* [SCIM provisioning](/help/scim)
|
||||
|
||||
The following authentication and identity management options are available for
|
||||
all self-hosted servers. If you are interested in one of these options for a
|
||||
Zulip Cloud organization, contact [support@zulip.com](mailto:support@zulip.com)
|
||||
to inquire.
|
||||
|
||||
* [AD/LDAP user
|
||||
sync](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#ldap-including-active-directory)
|
||||
* [AD/LDAP group
|
||||
sync](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#ldap-including-active-directory)
|
||||
* [Custom authentication
|
||||
options](https://python-social-auth.readthedocs.io/en/latest/backends/index.html#social-backends)
|
||||
with python-social-auth
|
||||
|
||||
### Configure authentication methods
|
||||
|
||||
<ZulipNote>
|
||||
For self-hosted organizations, some authentication options require
|
||||
that you first [configure your
|
||||
server](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html)
|
||||
to support the option.
|
||||
</ZulipNote>
|
||||
|
||||
<ZulipTip>
|
||||
Before disabling an authentication method, test that you can
|
||||
successfully log in with one of the remaining authentication methods.
|
||||
The [`change_auth_backends` management
|
||||
command](https://zulip.readthedocs.io/en/stable/production/management-commands.html)
|
||||
can help if you accidentally lock out all administrators.
|
||||
</ZulipTip>
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/auth-methods" />
|
||||
|
||||
1. To use SAML authentication or SCIM provisioning, Zulip Cloud organizations
|
||||
must upgrade to [Zulip Cloud Plus](https://zulip.com/plans/), and contact
|
||||
[support@zulip.com](mailto:support@zulip.com) to enable these methods.
|
||||
1. Toggle the checkboxes next to the available login options.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Configuring authentication methods](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html)
|
||||
for server administrators (self-hosted only)
|
||||
* [SAML authentication](/help/saml-authentication)
|
||||
* [SCIM provisioning](/help/scim)
|
||||
146
starlight_help/src/content/docs/configure-automated-notices.mdx
Normal file
146
starlight_help/src/content/docs/configure-automated-notices.mdx
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: Configure automated notices
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
The Zulip sends automated notices via Notification Bot to notify users about
|
||||
changes in their organization or account. Some types of notices can be
|
||||
configured, or disabled altogether.
|
||||
|
||||
Notices sent to channels are translated into the language that the organization
|
||||
has configured as the [language for automated messages and invitation
|
||||
emails](/help/configure-organization-language). The topic name is also
|
||||
translated. Notices sent directly to users will use [their preferred
|
||||
language](/help/change-your-language).
|
||||
|
||||
## Notices about channels
|
||||
|
||||
### New channel announcements
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
When creating a new [public](/help/channel-permissions#public-channels) or
|
||||
[web-public](/help/channel-permissions#web-public-channels) channel, the channel
|
||||
creator can choose to advertise the new channel via an automated notice. You can
|
||||
configure what channel Zulip uses for these notices, or disable these notices
|
||||
entirely. The topic for these messages is “new channels”.
|
||||
|
||||
New [private](/help/channel-permissions#private-channels) channels are never
|
||||
announced.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, configure **New channel
|
||||
announcements**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
### Channel events
|
||||
|
||||
You can configure whether Zulip will send an automated message when a channel's
|
||||
settings are updated. If enabled, Notification Bot will send messages about
|
||||
updates to settings such as the channel [name](/help/rename-a-channel),
|
||||
[description](/help/change-the-channel-description),
|
||||
[privacy](/help/change-the-privacy-of-a-channel) and [posting
|
||||
policy](/help/channel-posting-policy). Messages will be sent to the “channel
|
||||
events” topic in the modified channel.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, configure **Send automated
|
||||
messages for channel events**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Notices about topics
|
||||
|
||||
A notice is sent when a topic is [resolved or
|
||||
unresolved](/help/resolve-a-topic). Users can
|
||||
[configure](/help/marking-messages-as-read#configure-whether-resolved-topic-notices-are-marked-as-read)
|
||||
whether these notices are automatically marked as read.
|
||||
|
||||
Additionally, when moving messages to another
|
||||
[channel](/help/move-content-to-another-channel) or
|
||||
[topic](/help/move-content-to-another-topic), users can decide whether to send
|
||||
automated notices to help others understand how content was moved.
|
||||
|
||||
## Notices about users
|
||||
|
||||
You will be notified if someone [subscribes you to a
|
||||
channel](/help/subscribe-users-to-a-channel), or changes your
|
||||
[group](/help/user-groups) membership.
|
||||
|
||||
### New user announcements
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
You can configure where Notification Bot will post an announcement when new
|
||||
users join your organization, or disable new user announcement messages
|
||||
entirely. The topic for these messages is “signups”.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, configure **New user
|
||||
announcements**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
### Notices about changes to user profile
|
||||
|
||||
When an administrator modifies your account settings, you will receive a private
|
||||
message from Notification Bot listing the changes that were made. This includes
|
||||
updates to your full name, [role](/help/roles-and-permissions), and [custom profiles
|
||||
fields](/help/custom-profile-fields).
|
||||
|
||||
The notification will show both the old and new values for each field that was
|
||||
changed, making it easy to see exactly what was modified. Only administrators
|
||||
can change other users' profiles, and these notifications ensure that users are
|
||||
always informed when such changes occur.
|
||||
|
||||
## Zulip update announcements
|
||||
|
||||
Zulip announces new features and other important product changes via automated
|
||||
messages. This is designed to help users discover new features they may find
|
||||
useful, including new configuration options.
|
||||
|
||||
These announcements are posted to the “Zulip updates” topic in the
|
||||
channel selected by organization administrators (usually 1-2x a month
|
||||
on Zulip Cloud). You can read update messages whenever it's
|
||||
convenient, or [mute](/help/mute-a-topic) the topic if you are not
|
||||
interested. If you organization does not want to receive these
|
||||
announcements, they can be disabled.
|
||||
|
||||
On self-hosted Zulip servers, announcement messages are shipped with the Zulip
|
||||
server version that includes the new feature or product change. You may thus
|
||||
receive several announcement messages when your server is upgraded.
|
||||
|
||||
Unlike other notices, Zulip update announcements are not translated.
|
||||
|
||||
### Configure Zulip update announcements
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, configure **Zulip update
|
||||
announcements**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Organization language for automated messages and invitation emails](/help/configure-organization-language)
|
||||
* [Moderating open organizations](/help/moderating-open-organizations)
|
||||
* [Zulip Cloud newsletter](/help/email-notifications#low-traffic-newsletter)
|
||||
66
starlight_help/src/content/docs/configure-call-provider.mdx
Normal file
66
starlight_help/src/content/docs/configure-call-provider.mdx
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: Configure call provider
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
By default, Zulip integrates with
|
||||
[Jitsi Meet](https://jitsi.org/jitsi-meet/), a fully-encrypted, 100% open
|
||||
source video conferencing solution. Organization administrators can also
|
||||
change the organization's call provider. The call providers
|
||||
supported by Zulip are:
|
||||
|
||||
* [Jitsi Meet](/integrations/jitsi)
|
||||
* [Zoom integration](/integrations/zoom)
|
||||
* [BigBlueButton integration](/integrations/big-blue-button)
|
||||
* [Constructor Groups integration](/integrations/constructor-groups)
|
||||
* [Nextcloud Talk integration](/integrations/nextcloud-talk)
|
||||
* [Webex integration](/integrations/webex)
|
||||
|
||||
<ZulipTip>
|
||||
You can disable the video and voice call buttons for your organization
|
||||
by setting the **call provider** to "None".
|
||||
</ZulipTip>
|
||||
|
||||
## Configure your organization's call provider
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Compose settings**, select the desired provider from the
|
||||
**Call provider** dropdown.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Use a self-hosted instance of Jitsi Meet
|
||||
|
||||
Zulip uses the [cloud version of Jitsi Meet](https://meet.jit.si/)
|
||||
as its default call provider. You can also use a self-hosted
|
||||
instance of Jitsi Meet.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Compose settings**, select **Custom URL** from the
|
||||
**Jitsi server URL** dropdown.
|
||||
1. Enter the URL of your self-hosted Jitsi Meet server.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Start a call](/help/start-a-call)
|
||||
* [Jitsi Meet integration](/integrations/jitsi)
|
||||
* [Zoom integration](/integrations/zoom)
|
||||
* [BigBlueButton integration](/integrations/big-blue-button)
|
||||
* [Constructor Groups integration](/integrations/constructor-groups)
|
||||
* [Nextcloud Talk integration](/integrations/nextcloud-talk)
|
||||
* [Webex integration](/integrations/webex)
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: Configure default settings for new users
|
||||
---
|
||||
|
||||
import FlattenedList from "../../components/FlattenedList.astro";
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import DefaultUserSettingsList from "../include/_DefaultUserSettingsList.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
You can configure the default values of personal preference settings for new
|
||||
users joining your organization. This lets you customize the Zulip experience to
|
||||
match how your organization is using Zulip.
|
||||
|
||||
Users will be able to customize their own settings once they join.
|
||||
If needed, administrators can [reset settings for
|
||||
users](/help/reset-settings-for-users) to the organization default.
|
||||
|
||||
Administrators can customize defaults for all personal preference
|
||||
settings, including the following:
|
||||
|
||||
<FlattenedList>
|
||||
* Privacy settings:
|
||||
* Displaying [availability](/help/status-and-availability) to other users
|
||||
* Allowing others to see when the user has [read
|
||||
messages](/help/read-receipts)
|
||||
* Allowing others to see when the user is [typing a
|
||||
message](/help/typing-notifications)
|
||||
|
||||
<DefaultUserSettingsList />
|
||||
</FlattenedList>
|
||||
|
||||
## Configure default settings for new users
|
||||
|
||||
Users will have the initial settings that are configured at the time when they
|
||||
accept the invitation, so there's no need to update or revoke invitations when
|
||||
you change default settings.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/default-user-settings" />
|
||||
|
||||
1. Review all settings and adjust as needed.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Configure default language for new users
|
||||
|
||||
Your organization's [language](/help/configure-organization-language) will be
|
||||
the default language for new users when Zulip cannot detect their language
|
||||
preferences from their browser, including all users [created via the Zulip
|
||||
API](/api/create-user).
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, change the **Language for
|
||||
automated messages and invitation emails**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Reset settings for users](/help/reset-settings-for-users)
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Customize settings for new users](/help/customize-settings-for-new-users)
|
||||
* [Set default channels for new users](/help/set-default-channels-for-new-users)
|
||||
* [Invite users to join](/help/invite-users-to-join)
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: Configure default profile pictures
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
You can configure the style of profile pictures for users who don't have a
|
||||
profile picture uploaded.
|
||||
|
||||
* The default option is an abstract design that looks good in both the
|
||||
light and dark [themes](/help/dark-theme).
|
||||
* [Gravatar](https://en.gravatar.com/) lets users link a profile picture to
|
||||
their email account, which is used across all applications that support it.
|
||||
The default for users who don't have a gravatar configured is an abstract
|
||||
design best suited for light theme.
|
||||
|
||||
## Configure default profile pictures
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Onboarding**, configure **Default profile pictures for new users**.
|
||||
You will see a sample of how the pictures will look.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Change your profile picture](/help/change-your-profile-picture)
|
||||
* [Restrict profile picture changes](/help/restrict-profile-picture-changes)
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: Configure email visibility
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
|
||||
With privacy in mind, Zulip lets you control which
|
||||
[roles](/help/user-roles) in the organization can view your email
|
||||
address. Administrators can set the default email visibility configuration
|
||||
for new users in the organization.
|
||||
|
||||
## Configure who can access your email address
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="On sign-up">
|
||||
<Steps>
|
||||
1. After confirming your email, click **Change** below your email address.
|
||||
1. Configure **Who can access your email address**.
|
||||
1. Click **Confirm** to apply your changes, and continue the account registration
|
||||
process.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/account-and-privacy" />
|
||||
|
||||
1. Under **Privacy**, configure **Who can access your email address**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Configure default email visibility for new users
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/default-user-settings" />
|
||||
|
||||
1. Under **Privacy settings**, configure **Who can access user's email address**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Moderating open organizations](/help/moderating-open-organizations)
|
||||
* [Restrict name and email changes](/help/restrict-name-and-email-changes)
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Configure emoticon translations
|
||||
---
|
||||
|
||||
import EmoticonTranslations from "../../components/EmoticonTranslations.astro";
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
You can configure whether emoticons like `:)` or `:(` will be automatically
|
||||
translated into emoji equivalents like 🙂 or 🙁 by Zulip.
|
||||
|
||||
## Configure emoticon translations
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Emoji**, toggle **Convert emoticons before sending**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## List of emoticon translations
|
||||
|
||||
<EmoticonTranslations />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Emoji and emoticons](/help/emoji-and-emoticons)
|
||||
* [Add custom emoji](/help/custom-emoji)
|
||||
* [Emoji reactions](/help/emoji-reactions)
|
||||
87
starlight_help/src/content/docs/configure-home-view.mdx
Normal file
87
starlight_help/src/content/docs/configure-home-view.mdx
Normal file
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: Configure home view
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
|
||||
import MoreVerticalIcon from "~icons/zulip-icon/more-vertical";
|
||||
|
||||
The home view in Zulip is the view you reach after logging in
|
||||
to the Zulip web app. You can also navigate to the home view via
|
||||
keyboard shortcuts.
|
||||
|
||||
The home views available in Zulip are
|
||||
[**Inbox**](/help/inbox),
|
||||
[**Recent conversations**](/help/recent-conversations), and
|
||||
[**Combined feed**](/help/combined-feed). See
|
||||
[Reading strategies](/help/reading-strategies) for recommendations
|
||||
on how to use these views.
|
||||
|
||||
You can configure which view is set as your home view, and whether
|
||||
the <kbd>Esc</kbd> key navigates to the home view. Also, you can
|
||||
always reach the home view by using the
|
||||
<kbd data-mac-key="Ctrl">Ctrl</kbd> + <kbd>\[</kbd> shortcut.
|
||||
|
||||
## Change home view
|
||||
|
||||
Organization administrators can [configure the home view for their
|
||||
organization](/help/configure-default-new-user-settings) to
|
||||
[**Inbox**](/help/inbox),
|
||||
[**Recent conversations**](/help/recent-conversations), or
|
||||
[**Combined feed**](/help/combined-feed).
|
||||
|
||||
* The **Inbox** view works best if you regularly clear all unread messages in
|
||||
channels you follow.
|
||||
* **Recent conversations** works well for getting an overview of recent activity.
|
||||
* **Combined feed** is convenient for low-traffic organizations, or for skimming
|
||||
messages as they come in.
|
||||
|
||||
You can customize your personal home view regardless of
|
||||
organization settings:
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Navigation**, click on the **Home view** dropdown
|
||||
and select a view.
|
||||
1. To see your changes in action, open a new Zulip tab, or use a keyboard
|
||||
shortcut twice to exit the settings and navigate to your home view
|
||||
(<kbd data-mac-key="Ctrl">Ctrl</kbd> + <kbd>\[</kbd> or <kbd>Esc</kbd>
|
||||
if enabled).
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also hover over your desired home view in the left sidebar, and
|
||||
choose the option to **make it your home view** in the **ellipsis**
|
||||
(<MoreVerticalIcon />) menu.
|
||||
</ZulipTip>
|
||||
|
||||
## Configure whether <kbd>Esc</kbd> navigates to the home view
|
||||
|
||||
Zulip has a number of [keyboard shortcuts](/help/keyboard-shortcuts)
|
||||
designed to enhance the user experience in the app.
|
||||
|
||||
By default, the <kbd>Esc</kbd> key shortcut will ultimately navigate to
|
||||
your home view. You can disable this key binding if you would prefer.
|
||||
This will not disable other <kbd>Esc</kbd> key shortcuts used in Zulip,
|
||||
and will not affect the behavior of the
|
||||
<kbd data-mac-key="Ctrl">Ctrl</kbd> + <kbd>\[</kbd> shortcut.
|
||||
|
||||
### Toggle whether <kbd>Esc</kbd> navigates to the home view
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Navigation**, toggle **Escape key navigates to
|
||||
home view**, as desired.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Reading strategies](/help/reading-strategies)
|
||||
* [Recent conversations](/help/recent-conversations)
|
||||
* [Combined feed](/help/combined-feed)
|
||||
* [Keyboard shortcuts](/help/keyboard-shortcuts)
|
||||
* [Reset settings for users](/help/reset-settings-for-users)
|
||||
27
starlight_help/src/content/docs/configure-how-links-open.mdx
Normal file
27
starlight_help/src/content/docs/configure-how-links-open.mdx
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: Configure how links open in mobile apps
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import MobileSettings from "../include/_MobileSettings.mdx";
|
||||
|
||||
You can configure whether website links will open directly in the Zulip app, or
|
||||
in your device's default browser.
|
||||
|
||||
## Configure whether to open links within the app
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MobileSettings />
|
||||
|
||||
1. Toggle **Open links with in-app browser**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Link to a message or conversation](/help/link-to-a-message-or-conversation)
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Configure multi-language search
|
||||
---
|
||||
|
||||
Zulip supports [full-text search](/help/search-for-messages), which can be
|
||||
combined arbitrarily with Zulip's full suite of [search
|
||||
filters](/help/search-for-messages#search-filters). By default, Zulip search
|
||||
only supports English text, using [PostgreSQL's built-in full-text search
|
||||
feature](https://www.postgresql.org/docs/current/textsearch.html), with a custom
|
||||
set of English stop words to improve the quality of the search results.
|
||||
|
||||
Self-hosted Zulip organizations can instead set up an experimental
|
||||
[PGroonga](https://pgroonga.github.io/) integration that provides full-text
|
||||
search for all languages simultaneously, including Japanese and Chinese. See
|
||||
[here](https://zulip.readthedocs.io/en/stable/subsystems/full-text-search.html#multi-language-full-text-search)
|
||||
for setup instructions.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Configure organization language for automated messages and invitation emails][org-lang]
|
||||
* [Searching for messages](/help/search-for-messages)
|
||||
|
||||
[org-lang]: /help/configure-organization-language
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: Organization language for automated messages and invitation emails
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import TranslationProjectInfo from "../include/_TranslationProjectInfo.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<TranslationProjectInfo />
|
||||
|
||||
Each user can use Zulip with [their preferred language][user-lang].
|
||||
Additionally, if your organization has a primary language other than
|
||||
American English, you can set the language used for the organization's
|
||||
automated messages and invitation emails. This setting:
|
||||
|
||||
* Determines the language used for [automated
|
||||
notices](/help/configure-automated-notices) that are sent to channels, including
|
||||
both the topic name and message content. (Automated messages sent to a single
|
||||
user will use that user's preferred language).
|
||||
* Determines the language used for outgoing
|
||||
[invitation emails](/help/invite-new-users).
|
||||
* Is used as the default language for new user accounts when Zulip
|
||||
cannot detect their language preferences from their browser,
|
||||
including all users [created via the Zulip API][api-create-user].
|
||||
|
||||
## Configure the organization language
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, change the **Language for
|
||||
automated messages and invitation emails**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Change your language][user-lang]
|
||||
* [Configure multi-language search](/help/configure-multi-language-search)
|
||||
* [Configure default settings for new users](/help/configure-default-new-user-settings)
|
||||
* [Configure automated notices](/help/configure-automated-notices)
|
||||
|
||||
[api-create-user]: https://zulip.com/api/create-user
|
||||
|
||||
[user-lang]: /help/change-your-language
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: Configure send message keys
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ComposeBoxMenu from "../include/_ComposeBoxMenu.mdx";
|
||||
import StartComposing from "../include/_StartComposing.mdx";
|
||||
|
||||
By default, the <kbd>Enter</kbd> key adds a new line to your message,
|
||||
and <kbd>Ctrl</kbd> + <kbd>Enter</kbd> sends your message.
|
||||
|
||||
This is convenient for typing multi-line messages, which are more common in
|
||||
Zulip than in most other chat products. However, you can also configure
|
||||
Zulip so that the <kbd>Enter</kbd> key sends your message.
|
||||
|
||||
<ZulipTip>
|
||||
<kbd>Shift</kbd> + <kbd>Enter</kbd> always adds a new line, regardless
|
||||
of whether **<kbd>Enter</kbd> to send** is enabled.
|
||||
</ZulipTip>
|
||||
|
||||
## Configure send message keys
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via compose box">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
<ComposeBoxMenu />
|
||||
|
||||
1. Toggle your preferred option for **Press ... to send**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via personal settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **General**, toggle **<kbd>Enter</kbd> sends when composing a message**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Message formatting](/help/format-your-message-using-markdown)
|
||||
* [Preview messages before sending](/help/preview-your-message-before-sending)
|
||||
* [Mastering the compose box](/help/mastering-the-compose-box)
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Configure unread message counters
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
import MoreVerticalIcon from "~icons/zulip-icon/more-vertical";
|
||||
|
||||
To provide information about unread messages, Zulip can show unread message
|
||||
counters next to channel names in the left sidebar. This is likely to be helpful
|
||||
if you generally read (or otherwise [mark as read](/help/marking-messages-as-read))
|
||||
all the messages in a channel, but may otherwise feel unnecessary.
|
||||
|
||||
## Configure unread message counters
|
||||
|
||||
Zulip offers an option to display a dot instead of an unread counter for channels
|
||||
in the left sidebar. You can use a dot for all channels, or just for channels you
|
||||
have [muted](/help/mute-a-channel). You will still be able to see the number of
|
||||
unread messages in a channel by moving your mouse over it in the left sidebar or
|
||||
opening it.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Left sidebar**, select your preferred option from the
|
||||
**Show unread counts for** dropdown.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Configure unread summary counters
|
||||
|
||||
You can configure whether Zulip displays unread count summaries on your home
|
||||
view in the left sidebar. You will still be able to see the
|
||||
summary counts by moving your mouse over them in the left sidebar. The counter
|
||||
on your home view will also be shown when you're in that view.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via left sidebar">
|
||||
<Steps>
|
||||
1. Hover over your configured [home view](/help/configure-home-view) in the
|
||||
**views** section of the left sidebar.
|
||||
1. Click on the **ellipsis** (<MoreVerticalIcon />).
|
||||
1. Click the option to hide or show the unread counter.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via personal settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/preferences" />
|
||||
|
||||
1. Under **Left sidebar**, toggle **Show unread count total on home view**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Reading strategies](/help/reading-strategies)
|
||||
* [Marking messages as read](/help/marking-messages-as-read)
|
||||
* [Marking messages as unread](/help/marking-messages-as-unread)
|
||||
* [Star a message](/help/star-a-message)
|
||||
* [Desktop notifications](/help/desktop-notifications)
|
||||
45
starlight_help/src/content/docs/configure-where-you-land.mdx
Normal file
45
starlight_help/src/content/docs/configure-where-you-land.mdx
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Configure where you land in message feeds
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import MobileSettings from "../include/_MobileSettings.mdx";
|
||||
|
||||
When you go to a message feed in the Zulip web or desktop app, you'll generally
|
||||
land at your oldest unread message in that view.
|
||||
[Searches](/help/search-for-messages) and [starred
|
||||
messages](/help/star-a-message) put you at the newest message instead.
|
||||
|
||||
In the mobile app, you can choose where message feeds will open:
|
||||
|
||||
* **First unread message**: Recommended if you like to clear your inbox of
|
||||
unread messages.
|
||||
* **First unread message in conversation views, newest message elsewhere**: In
|
||||
Zulip, a **conversation** is a [direct message](/help/direct-messages) thread
|
||||
(one-on-one or with a group), or a [topic in a
|
||||
channel](/help/introduction-to-topics). This option works well if you have old
|
||||
unread messages, and don't want to navigate there in your [Combined
|
||||
feed](/help/combined-feed) and [channel feeds](/help/channel-feed).
|
||||
* **Newest message**: You may be used to this behavior from other chat
|
||||
applications. To avoid accidentally marking messages as read,
|
||||
consider setting [Mark messages as read on
|
||||
scroll](/help/marking-messages-as-read#configure-whether-messages-are-automatically-marked-as-read)
|
||||
to **Never** when using this setting.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MobileSettings />
|
||||
|
||||
1. Tap **Open message feeds at**.
|
||||
1. Select the desired configuration.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Marking messages as read](/help/marking-messages-as-read)
|
||||
* [Reading strategies](/help/reading-strategies)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: Configure who can administer a channel
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ChannelAdminPermissions from "../include/_ChannelAdminPermissions.mdx";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
<ZulipNote>
|
||||
Organization administrators can automatically administer all channels.
|
||||
</ZulipNote>
|
||||
|
||||
<ChannelAdminPermissions />
|
||||
|
||||
## Configure who can administer a channel
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Administrative permissions**, configure **Who can administer
|
||||
this channel**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [User roles](/help/user-roles)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Channel posting policy](/help/channel-posting-policy)
|
||||
* [Configure who can unsubscribe anyone from a channel](/help/configure-who-can-unsubscribe-others)
|
||||
* [Archive a channel](/help/archive-a-channel)
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Restrict channel creation
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Zulip allows you to separately control [permissions](/help/manage-permissions)
|
||||
for creating [web-public](/help/public-access-option), public and private
|
||||
channels.
|
||||
|
||||
For corporations and other organizations with controlled access, we
|
||||
recommend keeping channel creation open to make it easy for users to
|
||||
self-organize.
|
||||
|
||||
Only users in trusted roles (moderators and administrators) can be
|
||||
given permission to create web-public channels. This is intended
|
||||
[to help manage abuse](/help/public-access-option#managing-abuse) by
|
||||
making it hard for an attacker to host malicious content in an
|
||||
unadvertised web-public channel in a legitimate organization.
|
||||
|
||||
### Manage who can create channels
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Public channels">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-permissions" />
|
||||
|
||||
1. Under **Channel permissions**, configure **Who can create public channels**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Private channels">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-permissions" />
|
||||
|
||||
1. Under **Channel permissions**, configure **Who can create private channels**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Web-public channels">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-permissions" />
|
||||
|
||||
1. Under **Channel permissions**, configure **Who can create web-public channels**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [User roles](/help/user-roles)
|
||||
* [Create a channel](/help/create-a-channel)
|
||||
* [Introduction to channels](/help/introduction-to-channels)
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: Configure who can subscribe other users to channels
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import ContentAccessDefinition from "../include/_ContentAccessDefinition.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
You can configure who can subscribe other users to channels. If you have
|
||||
permission to subscribe users [to a specific
|
||||
channel](#configure-who-can-subscribe-anyone-to-a-specific-channel), you can
|
||||
always do so, whether or not you're subscribed yourself.
|
||||
|
||||
There is also a [general
|
||||
permission](#configure-who-can-subscribe-others-to-channels-in-general), which
|
||||
allows subscribing others to all [public
|
||||
channels](/help/channel-permissions#public-channels). For [private
|
||||
channels](/help/channel-permissions#private-channels), you additionally need to
|
||||
have content access to the channel in order to use this permission. Users have
|
||||
content access if:
|
||||
|
||||
<ContentAccessDefinition />
|
||||
|
||||
[Guests](/help/guest-users) are never permitted to subscribe others.
|
||||
|
||||
## Configure who can subscribe others to channels in general
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-permissions" />
|
||||
|
||||
1. Under **Channel permissions**, configure **Who can subscribe others to channels**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Configure who can subscribe anyone to a specific channel
|
||||
|
||||
If you have permission to administer a public channel, you can configure who can
|
||||
subscribe anyone to it. For [private
|
||||
channels](/help/channel-permissions#private-channels), you additionally need to
|
||||
have content access in order to change this configuration.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Subscription permissions**, configure **Who can subscribe anyone to
|
||||
this channel**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [User roles](/help/user-roles)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Configure who can subscribe to a channel](/help/configure-who-can-subscribe)
|
||||
* [Configure who can unsubscribe anyone from a channel](/help/configure-who-can-unsubscribe-others)
|
||||
* [Subscribe users to a channel](/help/subscribe-users-to-a-channel)
|
||||
* [Unsubscribe users from a channel](/help/unsubscribe-users-from-a-channel)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Configure who can start new topics
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
You can restrict who can start new topics in a channel. For example, you can set
|
||||
up:
|
||||
|
||||
* A channel where only some users can post new announcements, but
|
||||
everyone can discuss them.
|
||||
* A channel with just a handful of topics everyone is expected to use.
|
||||
* A channel for mirroring another messaging app, where each topic corresponds to
|
||||
a channel in the other app.
|
||||
|
||||
<ZulipTip>
|
||||
You can also [configure who can send messages](/help/channel-posting-policy)
|
||||
to a channel.
|
||||
</ZulipTip>
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Messaging permissions**, configure **Who can start new topics**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [Channel posting policy](/help/channel-posting-policy)
|
||||
* [Configure whether topics are required](/help/require-topics)
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Configure who can subscribe to a channel
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
You can give users permission to subscribe to a channel. Everyone other than
|
||||
[guests](/help/guest-users) can subscribe to any
|
||||
[public](/help/channel-permissions#public-channels) or
|
||||
[web-public](/help/channel-permissions#web-public-channels) channel, so this
|
||||
feature is intended for use with [private
|
||||
channels](/help/channel-permissions#private-channels). Guests can never
|
||||
subscribe themselves to a channel.
|
||||
|
||||
This permission grants access to channel content: users who are allowed to
|
||||
subscribe to a channel will also be able to read messages in it without
|
||||
subscribing.
|
||||
|
||||
<ZulipTip>
|
||||
For example, you can give your team's [user group](/help/user-groups) permission
|
||||
to subscribe to each of your team's channels. A designer on the team could then
|
||||
follow a [link to a
|
||||
conversation](/help/link-to-a-message-or-conversation#link-to-a-topic-within-zulip)
|
||||
in the private engineering channel, and read it without subscribing. They could
|
||||
subscribe if they need to send a message there, without asking for help.
|
||||
</ZulipTip>
|
||||
|
||||
If you have permission to administer a public channel, you can configure who can
|
||||
subscribe to it. For [private
|
||||
channels](/help/channel-permissions#private-channels), you additionally need to
|
||||
have content access in order to change this configuration.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Subscription permissions**, configure **Who can subscribe to this
|
||||
channel**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Subscribe to a channel](/help/introduction-to-channels#browse-and-subscribe-to-channels)
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [User roles](/help/user-roles)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Configure who can subscribe other users to channels](/help/configure-who-can-invite-to-channels)
|
||||
* [Configure who can unsubscribe anyone from a channel](/help/configure-who-can-unsubscribe-others)
|
||||
* [Subscribe users to a channel](/help/subscribe-users-to-a-channel)
|
||||
* [Unsubscribe users from a channel](/help/unsubscribe-users-from-a-channel)
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: Configure who can unsubscribe anyone from a channel
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ChannelSettingsNavbarTip from "../include/_ChannelSettingsNavbarTip.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
import SelectChannelViewPermissions from "../include/_SelectChannelViewPermissions.mdx";
|
||||
|
||||
Organization administrators and [channel
|
||||
administrators](/help/configure-who-can-administer-a-channel) can automatically
|
||||
unsubscribe anyone from a channel.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/channel/all" />
|
||||
|
||||
1. Select a channel.
|
||||
|
||||
<SelectChannelViewPermissions />
|
||||
|
||||
1. Under **Subscription permissions**, configure **Who can unsubscribe anyone
|
||||
from this channel**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ChannelSettingsNavbarTip />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [User roles](/help/user-roles)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Configure who can administer a channel](/help/configure-who-can-administer-a-channel)
|
||||
* [Restrict who can subscribe other users to channels](/help/configure-who-can-invite-to-channels)
|
||||
* [Unsubscribe users from a channel](/help/unsubscribe-users-from-a-channel)
|
||||
* [Subscribe users to a channel](/help/subscribe-users-to-a-channel)
|
||||
85
starlight_help/src/content/docs/connect-through-a-proxy.mdx
Normal file
85
starlight_help/src/content/docs/connect-through-a-proxy.mdx
Normal file
@@ -0,0 +1,85 @@
|
||||
---
|
||||
title: Connect through a proxy
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import DesktopSidebarSettingsMenu from "../include/_DesktopSidebarSettingsMenu.mdx";
|
||||
|
||||
Some corporate and university networks may require you to connect to Zulip
|
||||
via a proxy.
|
||||
|
||||
## Web
|
||||
|
||||
Zulip uses your browser's default proxy settings. To set a custom proxy just
|
||||
for Zulip, check your browser's instructions for setting a custom proxy for
|
||||
a single website.
|
||||
|
||||
## Desktop
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="System proxy settings">
|
||||
<FlattenedSteps>
|
||||
<DesktopSidebarSettingsMenu />
|
||||
|
||||
1. Select the **Network** tab.
|
||||
1. Click **Use system proxy settings**.
|
||||
1. Restart the Zulip desktop app.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Custom proxy settings">
|
||||
<FlattenedSteps>
|
||||
<DesktopSidebarSettingsMenu />
|
||||
|
||||
1. Select the **Network** tab.
|
||||
1. Click **Manual proxy configuration**.
|
||||
1. Either enter a URL for **PAC script**, or fill out **Proxy rules** and
|
||||
**Proxy bypass rules**.
|
||||
1. Click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Additional tips for custom proxy settings
|
||||
|
||||
In most corporate environments, your network administrator will provide a
|
||||
URL for the **PAC script**.
|
||||
|
||||
The second most common configuration is that your network administrator has
|
||||
set up a proxy server for accessing the public internet, but URLs on the
|
||||
local network must be accessed directly. In that case set **Proxy rules** to
|
||||
the URL of the proxy server (it may look something like
|
||||
`http://proxy.example.edu:port`), and **Proxy bypass rules** to cover local URLs
|
||||
(it may look something like `*.example.edu,10.0.0.0/8`).
|
||||
|
||||
If either of those apply, you can skip the rest of this guide. If not, we
|
||||
document the syntax for **Proxy rules** and **Proxy bypass rules** below.
|
||||
|
||||
### Proxy rules
|
||||
|
||||
A semicolon-separated list of `protocolRule`s.
|
||||
|
||||
```
|
||||
protocolRule -> [<protocol>"="]<URLList>
|
||||
protocol -> "http" | "https" | "ftp" | "socks"
|
||||
URLList -> comma-separated list of URLs, ["direct://"]
|
||||
```
|
||||
|
||||
Some examples:
|
||||
|
||||
* `http=http://foo:80;ftp=http://bar:1080` - Use proxy `http://foo:80`
|
||||
for `http://` URLs, and proxy `http://bar:1080` for `ftp://` URLs.
|
||||
* `http://foo:80` - Use proxy `http://foo:80` for all URLs.
|
||||
* `http://foo:80,socks5://bar,direct://` - Use proxy `http://foo:80` for
|
||||
all URLs, failing over to `socks5://bar` if `http://foo:80` is
|
||||
unavailable, and after that using no proxy.
|
||||
* `http=http://foo;socks5://bar` - Use proxy `http://foo` for `http://` URLs,
|
||||
and use `socks5://bar` for all other URLs.
|
||||
|
||||
### Proxy bypass rules
|
||||
|
||||
A comma-separated list of URIs. The URIs can be hostnames, IP address
|
||||
literals, or IP ranges in CIDR notation. Hostnames can use the `*`
|
||||
wildcard. Use `<local>` to match any of `127.0.0.1`, `::1`, or `localhost`.
|
||||
85
starlight_help/src/content/docs/contact-support.mdx
Normal file
85
starlight_help/src/content/docs/contact-support.mdx
Normal file
@@ -0,0 +1,85 @@
|
||||
---
|
||||
title: Contact support
|
||||
---
|
||||
|
||||
We're here to help! This page will guide you to the best way to reach us.
|
||||
|
||||
## Zulip community
|
||||
|
||||
The primary communication forum for the Zulip community is the Zulip server
|
||||
hosted at chat.zulip.org. Users and administrators of Zulip organizations stop
|
||||
by to ask questions, offer feedback, and participate in product design
|
||||
discussions.
|
||||
|
||||
Everyone is welcome to sign up and participate — we love hearing from our users!
|
||||
Please see the [Zulip development community][development-community] guide for
|
||||
detailed instructions on how to join the community, [community norms][community-norms]
|
||||
and [where][development-community-channels] to ask your questions or give
|
||||
feedback.
|
||||
|
||||
## Support requests
|
||||
|
||||
* For support requests regarding your Zulip Cloud organization, you can request
|
||||
interactive chat support in the [Zulip development
|
||||
community](#zulip-community), or [email Zulip
|
||||
support](mailto:support@zulip.com).
|
||||
* Response time: Usually within 1-3 business days, or within one business
|
||||
day for paid customers.
|
||||
* For support requests regarding your **self-hosted server**:
|
||||
|
||||
* **Business** and **Enterprise** plan customers can request interactive
|
||||
chat support in the [Zulip development community](#zulip-community),
|
||||
or [email Zulip support](mailto:support@zulip.com). Phone support is
|
||||
available for Enterprise customers upon request.
|
||||
* Response time: Usually within one business day.
|
||||
* **Free** and **Community** plan customers can ask for help in the
|
||||
[Zulip development community](#zulip-community). You will usually get a
|
||||
friendly reply within 1-3 business days.
|
||||
|
||||
## Sales, billing, and partnerships
|
||||
|
||||
For **sales**, **billing**, **partnerships**, and **other commercial
|
||||
questions**, contact [sales@zulip.com](mailto:sales@zulip.com). Response time:
|
||||
Usually within one business day.
|
||||
|
||||
## Product feedback
|
||||
|
||||
Your feedback helps us make Zulip better for everyone! Please reach out if you
|
||||
have questions, suggestions, or just want to brainstorm how to make Zulip work
|
||||
for your organization.
|
||||
|
||||
* There are [several
|
||||
ways](https://zulip.readthedocs.io/en/latest/contributing/reporting-bugs.html)
|
||||
to **report possible bugs**.
|
||||
* Response time: Usually within 1-3 business days in the [Zulip development
|
||||
community](#zulip-community) or by email, or within one week [on
|
||||
GitHub](https://github.com/zulip).
|
||||
* You can [**request
|
||||
features**](https://zulip.readthedocs.io/en/latest/contributing/suggesting-features.html)
|
||||
or [**share
|
||||
feedback**](https://zulip.readthedocs.io/en/latest/contributing/suggesting-features.html#evaluation-and-onboarding-feedback).
|
||||
Many improvements to the Zulip app start with a user's suggestion.
|
||||
* Response time: Usually within 1-3 business days in the [Zulip development
|
||||
community](#zulip-community) or by email, or within one week [on
|
||||
GitHub](https://github.com/zulip).
|
||||
* To **report issues or share feedback privately**, contact
|
||||
[feedback@zulip.com](mailto:feedback@zulip.com). This works well if you'd like
|
||||
to include details about your organization that shouldn't be posted in public.
|
||||
* Response time: Usually within 1-3 business days.
|
||||
|
||||
[development-community]: https://zulip.com/development-community/
|
||||
|
||||
[community-norms]: https://zulip.com/development-community/#community-norms
|
||||
|
||||
[development-community-channels]: https://zulip.com/development-community/#channels-for-zulip-users-and-administrators
|
||||
|
||||
## Security
|
||||
|
||||
If you believe you've identified a security issue, please report it to Zulip's
|
||||
security team at [security@zulip.com](mailto:security@zulip.com) as soon as
|
||||
possible, so that we can address it and make a responsible disclosure.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Zulip Cloud billing](/help/zulip-cloud-billing)
|
||||
* [View Zulip version](/help/view-zulip-version)
|
||||
21
starlight_help/src/content/docs/create-a-channel.mdx
Normal file
21
starlight_help/src/content/docs/create-a-channel.mdx
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Create a channel
|
||||
---
|
||||
|
||||
import CreateAChannelInstructions from "../include/_CreateAChannelInstructions.mdx";
|
||||
import DependsOnPermissions from "../include/_DependsOnPermissions.mdx";
|
||||
|
||||
<DependsOnPermissions />
|
||||
|
||||
If you are an administrator setting up channels for the first time, check out our
|
||||
[guide to setting up channels for a new organization](/help/create-channels).
|
||||
|
||||
<CreateAChannelInstructions />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Create channels for a new organization](/help/create-channels)
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [Set default channels for new users](/help/set-default-channels-for-new-users)
|
||||
* [Introduction to channels](/help/introduction-to-channels)
|
||||
* [Restrict channel creation](/help/configure-who-can-create-channels)
|
||||
103
starlight_help/src/content/docs/create-a-poll.mdx
Normal file
103
starlight_help/src/content/docs/create-a-poll.mdx
Normal file
@@ -0,0 +1,103 @@
|
||||
---
|
||||
title: Polls
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import EndComposing from "../include/_EndComposing.mdx";
|
||||
import PollsExamples from "../include/_PollsExamples.mdx";
|
||||
import PollsIntro from "../include/_PollsIntro.mdx";
|
||||
import StartComposing from "../include/_StartComposing.mdx";
|
||||
|
||||
import CheckIcon from "~icons/fa/check";
|
||||
import PencilIcon from "~icons/fa/pencil";
|
||||
import RemoveIcon from "~icons/fa/remove";
|
||||
import GripVerticalIcon from "~icons/zulip-icon/grip-vertical";
|
||||
import PollIcon from "~icons/zulip-icon/poll";
|
||||
import TrashIcon from "~icons/zulip-icon/trash";
|
||||
|
||||
<PollsIntro />
|
||||
|
||||
## Create a poll
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via compose box button">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. Make sure the compose box is empty.
|
||||
1. Click the **add poll** (<PollIcon />) icon at the bottom of the compose box.
|
||||
1. Fill out poll information as desired, and click **Add poll** to insert poll
|
||||
formatting.
|
||||
|
||||
<EndComposing />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
To reorder the list of options, click and drag the **vertical dots**
|
||||
(<GripVerticalIcon />) to the left of each
|
||||
option. To delete an option, click the **delete**
|
||||
(<TrashIcon />) icon to the right of it.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via Markdown">
|
||||
<FlattenedSteps>
|
||||
<StartComposing />
|
||||
|
||||
1. Make sure the compose box is empty.
|
||||
1. Type `/poll` followed by a space, and the question you want to ask.
|
||||
1. *(optional)* Type each option on a new line.
|
||||
|
||||
<EndComposing />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You will be able to add options after the poll is created.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Add options to a poll
|
||||
|
||||
<ZulipNote>
|
||||
To preserve the meaning of votes in the poll, existing poll options cannot
|
||||
be modified.
|
||||
</ZulipNote>
|
||||
|
||||
<Steps>
|
||||
1. Fill out the **New option** field at the bottom of the poll.
|
||||
1. Click **Add option** or press <kbd>Enter</kbd> to add the new option to
|
||||
the poll.
|
||||
</Steps>
|
||||
|
||||
## Edit the question
|
||||
|
||||
<ZulipNote>
|
||||
Only the creator of a poll can edit the question.
|
||||
</ZulipNote>
|
||||
|
||||
<Steps>
|
||||
1. Click the **pencil** (<PencilIcon />) icon
|
||||
to the right of the question.
|
||||
1. Edit the question as desired.
|
||||
1. Click the **checkmark** (<CheckIcon />) icon or press
|
||||
<kbd>Enter</kbd> to save your changes.
|
||||
</Steps>
|
||||
|
||||
<ZulipTip>
|
||||
You can click the <RemoveIcon /> icon or press
|
||||
<kbd>Esc</kbd> to discard your changes.
|
||||
</ZulipTip>
|
||||
|
||||
## Examples
|
||||
|
||||
<PollsExamples />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Message formatting](/help/format-your-message-using-markdown)
|
||||
* [Collaborative to-do lists](/help/collaborative-to-do-lists)
|
||||
56
starlight_help/src/content/docs/create-an-organization.mdx
Normal file
56
starlight_help/src/content/docs/create-an-organization.mdx
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: Create an organization
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import CreateADemoOrganization from "../include/_CreateADemoOrganization.mdx";
|
||||
import DemoOrgsConversion from "../include/_DemoOrgsConversion.mdx";
|
||||
import DemoOrgsIntro from "../include/_DemoOrgsIntro.mdx";
|
||||
import ZulipCloudOnly from "../include/_ZulipCloudOnly.mdx";
|
||||
|
||||
It only takes a minute to create a new organization on Zulip Cloud, or on a
|
||||
self-hosted Zulip server you've set up.
|
||||
|
||||
<DemoOrgsIntro />
|
||||
|
||||
## Create a demo organization
|
||||
|
||||
<ZulipCloudOnly />
|
||||
|
||||
<DemoOrgsConversion />
|
||||
|
||||
<CreateADemoOrganization />
|
||||
|
||||
## Create a regular organization
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Zulip Cloud">
|
||||
<ZulipNote>
|
||||
To import data from another app, follow the import instructions for
|
||||
[Slack](/help/import-from-slack), [Mattermost](/help/import-from-mattermost)
|
||||
or [Rocket.Chat](/help/import-from-rocketchat).
|
||||
</ZulipNote>
|
||||
|
||||
1. Decide on a name and subdomain for your organization.
|
||||
1. Fill out the form at [https://zulip.com/new/](https://zulip.com/new/), and click **Create organization**.
|
||||
1. Click **Complete registration** in the confirmation email you received.
|
||||
1. Fill out your account information, and click **Sign up**.
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Self hosting">
|
||||
1. Follow the [guide to install your server](https://zulip.readthedocs.io/en/stable/production/install.html).
|
||||
1. Decide on a name and subdomain for your organization.
|
||||
1. Fill out the form at the URL provided by the installation script, and click **Create organization**.
|
||||
1. Fill out your account information, and click **Sign up**.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
* [Trying out Zulip](/help/trying-out-zulip)
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Zulip Cloud or self-hosting?](/help/zulip-cloud-or-self-hosting)
|
||||
* [Migrating from other chat tools](/help/migrating-from-other-chat-tools)
|
||||
42
starlight_help/src/content/docs/create-channels.mdx
Normal file
42
starlight_help/src/content/docs/create-channels.mdx
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Create channels
|
||||
---
|
||||
|
||||
import CreateAChannelInstructions from "../include/_CreateAChannelInstructions.mdx";
|
||||
import CreateChannelsIntro from "../include/_CreateChannelsIntro.mdx";
|
||||
|
||||
<CreateChannelsIntro />
|
||||
|
||||
## How to create a channel
|
||||
|
||||
<CreateAChannelInstructions />
|
||||
|
||||
## Tips for creating channels
|
||||
|
||||
* It's often best to start with just a few channels, and add more as
|
||||
needed. For small teams, you can start with the default channels
|
||||
and go from there.
|
||||
* A channel's name can be in any language, and can include spaces, punctuation,
|
||||
and Unicode emoji. For large organizations, we recommend using a consistent naming
|
||||
scheme, like `#marketing/<name>` or `#mk/<name>` for all channels
|
||||
pertaining to the marketing team, `#help/<team name>` for
|
||||
`<team name>`'s internal support channel, etc.
|
||||
* You can [pin reference information](/help/pin-information), such as important
|
||||
messages or topics, and external references, in the
|
||||
[description](/help/view-channel-information#view-channel-description) for a
|
||||
channel.
|
||||
* For open source projects or other volunteer organizations, consider
|
||||
adding default channels like **#announce** for announcements, **#new
|
||||
members** for new members to introduce themselves and be welcomed,
|
||||
and **#help** so that there's a clear place users stopping by with
|
||||
just a single question can post.
|
||||
* For channels where it's important that everyone stays on top of new messages,
|
||||
organization administrators can [enable mobile notifications](/help/enable-mobile-notifications-by-default)
|
||||
as a default for new subscribers.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Channel permissions](/help/channel-permissions)
|
||||
* [Set default channels for new users](/help/set-default-channels-for-new-users)
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
34
starlight_help/src/content/docs/create-user-groups.mdx
Normal file
34
starlight_help/src/content/docs/create-user-groups.mdx
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: Create user groups
|
||||
---
|
||||
|
||||
import CloudPaidPlansOnly from "../include/_CloudPaidPlansOnly.mdx";
|
||||
import HowToCreateAUserGroup from "../include/_HowToCreateAUserGroup.mdx";
|
||||
import UserGroupsApplications from "../include/_UserGroupsApplications.mdx";
|
||||
import UserGroupsIntro from "../include/_UserGroupsIntro.mdx";
|
||||
import UserSubgroupsIntro from "../include/_UserSubgroupsIntro.mdx";
|
||||
|
||||
<CloudPaidPlansOnly />
|
||||
|
||||
<UserGroupsIntro />
|
||||
|
||||
Many organizations find it helpful to create groups for:
|
||||
|
||||
* Each team, e.g., “mobile”, “design”, or “IT”.
|
||||
* Leadership roles, e.g., “managers”, “engineering-managers”.
|
||||
|
||||
<UserSubgroupsIntro />
|
||||
|
||||
<UserGroupsApplications />
|
||||
|
||||
## How to create a user group
|
||||
|
||||
<HowToCreateAUserGroup />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [User groups](/help/user-groups)
|
||||
* [Manage user groups](/help/manage-user-groups)
|
||||
* [Invite users to join](/help/invite-users-to-join)
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Create your organization profile
|
||||
---
|
||||
|
||||
import AddAWideLogo from "../include/_AddAWideLogo.mdx";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import CommunitiesDirectoryInstructions from "../include/_CommunitiesDirectoryInstructions.mdx";
|
||||
import CommunitiesDirectoryIntro from "../include/_CommunitiesDirectoryIntro.mdx";
|
||||
import EditOrganizationProfile from "../include/_EditOrganizationProfile.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Your organization's profile includes its **name**,
|
||||
[**type**](/help/organization-type), **description**, **profile picture**, and
|
||||
**logo**. The name, description and profile picture appear on the registration
|
||||
and login pages for your organization, and (optionally) in the [communities
|
||||
directory](/help/communities-directory).
|
||||
|
||||
* The **organization name** also appears in the title of your Zulip browser tab
|
||||
or Desktop app, and in email and desktop notifications. It's best to keep it
|
||||
short.
|
||||
* The **organization type** is used to customize the experience for users
|
||||
in your organization, including initial organization settings and
|
||||
Welcome Bot messages received by new users.
|
||||
* The **organization description** supports [full Markdown
|
||||
formatting](/help/format-your-message-using-markdown), including
|
||||
**bold**/*italic*, links, lists, and more.
|
||||
* The **organization profile picture** is a square image that is also used for
|
||||
[switching between organizations](/help/switching-between-organizations) in
|
||||
the desktop app. It will be displayed at 100×100 pixels, or more on
|
||||
high-resolution displays.
|
||||
* The [**organization logo**](#add-a-wide-logo) replaces the Zulip logo in the
|
||||
upper left corner of the web and desktop apps.
|
||||
|
||||
## Edit organization profile
|
||||
|
||||
<EditOrganizationProfile />
|
||||
|
||||
## Zulip communities directory
|
||||
|
||||
<CommunitiesDirectoryIntro />
|
||||
|
||||
### Change whether your organization may be listed in the Zulip communities directory
|
||||
|
||||
<CommunitiesDirectoryInstructions />
|
||||
|
||||
For more details, see [Communities directory](/help/communities-directory).
|
||||
|
||||
## Add a wide logo
|
||||
|
||||
<AddAWideLogo />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Customize organization settings](/help/customize-organization-settings)
|
||||
* [Create channels](/help/create-channels)
|
||||
* [Communities directory](/help/communities-directory)
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
91
starlight_help/src/content/docs/custom-certificates.mdx
Normal file
91
starlight_help/src/content/docs/custom-certificates.mdx
Normal file
@@ -0,0 +1,91 @@
|
||||
---
|
||||
title: Use a custom certificate
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import DesktopSidebarSettingsMenu from "../include/_DesktopSidebarSettingsMenu.mdx";
|
||||
|
||||
By default, Zulip requests a generally-accepted certificate during the
|
||||
server install process, for the server's public hostname. In some
|
||||
cases, a server administrator may choose not to use that feature, in
|
||||
which case your Zulip server may be using a self-signed
|
||||
certificate. This is most common for Zulip servers not connected to
|
||||
the public internet.
|
||||
|
||||
## Web
|
||||
|
||||
Most browsers will show a warning if you try to connect to a Zulip server
|
||||
with a self-signed certificate.
|
||||
|
||||
If you are absolutely, 100% sure that the Zulip server you are connecting to
|
||||
is supposed to have a self-signed certificate, click through the warnings
|
||||
and follow the instructions on-screen.
|
||||
|
||||
If you are less than 100% sure, contact your server
|
||||
administrator. Accepting a malicious self-signed certificate would
|
||||
give a stranger full access to your Zulip account, including your
|
||||
username and password.
|
||||
|
||||
## Desktop
|
||||
|
||||
Zulip Desktop uses the operating system's certificate store, like your web
|
||||
browser.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="macOS">
|
||||
<Steps>
|
||||
1. Hit `Cmd` + `Space` to bring up Spotlight Search, type **Keychain
|
||||
Access**, and press Enter.
|
||||
1. From the **File** menu, choose **Import Items...**
|
||||
1. Navigate to the certificate file, then click **Open**.
|
||||
1. Right-click the newly-added certificate, and click **Get Info** from
|
||||
the context menu.
|
||||
1. Expand the **Trust** section.
|
||||
1. Select **Always Trust** for the **Secure Sockets Layer (SSL)** option.
|
||||
1. Close the window. You will be prompted for your password to verify
|
||||
the change.
|
||||
1. Restart the Zulip Desktop application.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows">
|
||||
On Windows, Zulip Desktop shares the certificate store with
|
||||
Google Chrome, so you can add certificates to it from inside
|
||||
Chrome.
|
||||
|
||||
<Steps>
|
||||
1. Open Google Chrome.
|
||||
1. From the Chrome menu (⋮) in the top-right, select **Settings**.
|
||||
1. In the **Privacy and Security** section, click **Security**.
|
||||
1. Scroll down to and click **Manage Certificates**.
|
||||
1. Select the **Trusted Root Certification Authorities** tab.
|
||||
1. Select **Import...**
|
||||
1. Navigate to the certificate file, then click **Open**.
|
||||
1. Select **Done**.
|
||||
1. Restart the Zulip Desktop application.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Linux">
|
||||
The required packages and steps vary by distribution; see the Chromium
|
||||
documentation for [detailed documentation][linux]. On most systems,
|
||||
once the `nss` tools are installed, the command to trust the
|
||||
certificate is:
|
||||
|
||||
```bash "path/to/certificate.pem"
|
||||
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n zulip \
|
||||
-i path/to/certificate.pem
|
||||
```
|
||||
|
||||
You will need to restart the Zulip Desktop application to pick up the
|
||||
new certificate.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
[linux]: https://chromium.googlesource.com/chromium/src.git/+/main/docs/linux/cert_management.md
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Installing SSL certificates](https://zulip.readthedocs.io/en/stable/production/ssl-certificates.html)
|
||||
88
starlight_help/src/content/docs/custom-emoji.mdx
Normal file
88
starlight_help/src/content/docs/custom-emoji.mdx
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: Custom emoji
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import SaveChanges from "../include/_SaveChanges.mdx";
|
||||
|
||||
import TrashIcon from "~icons/zulip-icon/trash";
|
||||
|
||||
Custom emoji can be used by all users in an organization (including
|
||||
bots). They are supported everywhere that Zulip supports emoji,
|
||||
including [emoji reactions][emoji-reactions],
|
||||
[messages][emoji-messages], [channel descriptions][emoji-channels] and
|
||||
[user statuses][emoji-status].
|
||||
|
||||
[emoji-reactions]: /help/emoji-reactions
|
||||
|
||||
[emoji-messages]: /help/format-your-message-using-markdown#emoji-and-emoticons
|
||||
|
||||
[emoji-channels]: /help/change-the-channel-description
|
||||
|
||||
[emoji-status]: /help/status-and-availability
|
||||
|
||||
## Add custom emoji
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/emoji-settings" />
|
||||
|
||||
1. Click **Add a new emoji**.
|
||||
1. Click **Upload image or GIF**, and add a file in the PNG, JPG, or
|
||||
GIF file format. Zulip will automatically scale the image down to
|
||||
25x25 pixels.
|
||||
1. Enter an **Emoji name**, and click **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
**Emoji names** can only contain `a-z`, `0-9`, dashes (`-`), and spaces.
|
||||
Upper and lower case letters are treated the same, and underscores (`_`)
|
||||
are treated the same as spaces.
|
||||
|
||||
### Bulk add emoji
|
||||
|
||||
We expose a [REST API endpoint](/api/upload-custom-emoji) for bulk uploading
|
||||
emoji. Using REST API endpoints requires some technical expertise;
|
||||
[contact us](/help/contact-support) if you get stuck.
|
||||
|
||||
## Replace a default emoji
|
||||
|
||||
You can replace a default emoji by adding a custom emoji of the same
|
||||
name. If an emoji has several names, you must use the emoji's primary name
|
||||
to replace it. You can find the primary name of an emoji by hovering over it
|
||||
in the [emoji picker](/help/emoji-and-emoticons#use-an-emoji-in-your-message),
|
||||
while the search box is empty (you may have to scroll down a bit to find it).
|
||||
|
||||
## Deactivate custom emoji
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/emoji-settings" />
|
||||
|
||||
1. Click the **deactivate** (<TrashIcon />) icon next to the
|
||||
emoji that you would like to deactivate.
|
||||
</FlattenedSteps>
|
||||
|
||||
Deactivating an emoji will not affect any existing messages or emoji
|
||||
reactions. Anyone can deactivate custom emoji they added, and organization
|
||||
administrators can deactivate anyone's custom emoji.
|
||||
|
||||
## Change who can add custom emoji
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
You can configure who can add custom emoji. This permission can be granted to
|
||||
any combination of [roles](/help/user-roles), [groups](/help/user-groups), and
|
||||
individual [users](/help/introduction-to-users).
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-permissions" />
|
||||
|
||||
1. Under **Other permissions**, configure **Who can add custom emoji**.
|
||||
|
||||
<SaveChanges />
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Emoji and emoticons](/help/emoji-and-emoticons)
|
||||
* [Emoji reactions](/help/emoji-reactions)
|
||||
183
starlight_help/src/content/docs/custom-profile-fields.mdx
Normal file
183
starlight_help/src/content/docs/custom-profile-fields.mdx
Normal file
@@ -0,0 +1,183 @@
|
||||
---
|
||||
title: Custom profile fields
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
import TrashIcon from "~icons/zulip-icon/trash";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
[User cards](/help/user-cards) show basic information about a user, and [user
|
||||
profiles](/help/view-someones-profile) provide additional details. You can add
|
||||
custom profile fields to user cards and user profiles, making it easy for users
|
||||
to share information, such as their pronouns, job title, or team.
|
||||
|
||||
Zulip supports many types of profile fields, such as dates, lists of options,
|
||||
account links, and [more](#profile-field-types). You can choose which
|
||||
custom profile fields to [display](#display-custom-fields-on-user-card) on user
|
||||
cards. Custom profile fields can be optional or
|
||||
[required](#make-a-custom-profile-field-required).
|
||||
|
||||
You can [configure](#use-a-custom-profile-field-in--mention-suggestions)
|
||||
**External account** and **Short text** custom profile fields to be used for
|
||||
[@-mention](/help/mention-a-user-or-group) suggestions. For example, users could
|
||||
be mentioned by their GitHub or Mastodon usernames.
|
||||
|
||||
Zulip supports synchronizing custom profile fields from an external
|
||||
user database such as LDAP or SAML. See the [authentication
|
||||
methods][authentication-production] documentation for details.
|
||||
|
||||
## Add a custom profile field
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. Click **Add a new profile field**.
|
||||
1. Fill out profile field information as desired, and click **Add**.
|
||||
1. In the **Labels** column, click and drag the vertical dots to reorder the
|
||||
list of custom profile fields.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Edit a custom profile field
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **edit** (<EditIcon />)
|
||||
icon for the profile field you want to edit.
|
||||
1. Edit profile field information as desired, and click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Delete a custom profile field
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **delete** (<TrashIcon />) icon for the profile field you want to delete.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Reorder custom profile fields
|
||||
|
||||
Users will see custom profile fields in the specified order.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Labels** column, click and drag the vertical dots to reorder the
|
||||
list of custom profile fields.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Display custom fields on user card
|
||||
|
||||
Organizations may find it useful to display additional fields on the
|
||||
user card, such as pronouns, GitHub username, job title, team, etc.
|
||||
|
||||
All field types other than "Person" have a checkbox option
|
||||
that controls whether to display a custom field on the user card.
|
||||
There's a limit to the number of custom profile fields that can be displayed
|
||||
at a time. If the maximum number of fields is already selected, all unselected
|
||||
checkboxes will be disabled.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **edit** (<EditIcon />)
|
||||
icon for the profile field you want to edit.
|
||||
1. Toggle **Display on user card**.
|
||||
1. Click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also choose which custom profile fields will be displayed by toggling
|
||||
the checkboxes in the **Card** column of the **Custom profile fields** table.
|
||||
</ZulipTip>
|
||||
|
||||
## Make a custom profile field required
|
||||
|
||||
If a custom profile field is required, users who have left it blank will see a
|
||||
banner every time they open the Zulip web or desktop app prompting them to fill
|
||||
it out.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **edit** (<EditIcon />)
|
||||
icon for the profile field you want to edit.
|
||||
1. Toggle **Required field**.
|
||||
1. Click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also choose which custom profile fields are required by toggling the
|
||||
checkboxes in the **Required** column of the **Custom profile fields** table.
|
||||
</ZulipTip>
|
||||
|
||||
## Use a custom profile field in @-mention suggestions
|
||||
|
||||
**External account** and **Short text** custom profile fields can be used for
|
||||
[@-mention](/help/mention-a-user-or-group) suggestions.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **edit** (<EditIcon />)
|
||||
icon for the profile field you want to edit.
|
||||
1. Toggle **Use in @-mention suggestions**.
|
||||
1. Click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Configure whether users can edit custom profile fields
|
||||
|
||||
You can configure whether users in your organization can edit custom profile
|
||||
fields for their own account. For example, you may want to restrict editing if
|
||||
syncing profile fields from an employee directory.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile-field-settings" />
|
||||
|
||||
1. In the **Actions** column, click the **edit** (<EditIcon />)
|
||||
icon for the profile field you want to configure.
|
||||
1. Toggle **Users can edit this field for their own account**.
|
||||
1. Click **Save changes**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Profile field types
|
||||
|
||||
Choose the profile field type that's most appropriate for the requested information.
|
||||
|
||||
* **Date**: For dates (e.g., birthdays or work anniversaries).
|
||||
* **Link**: For links to websites, including company-internal pages.
|
||||
* **External account**: For linking to an external account (e.g., GitHub,
|
||||
GitLab, LinkedIn, etc.). You can
|
||||
[configure](#use-a-custom-profile-field-in--mention-suggestions) this field to
|
||||
be used for [@-mention](/help/mention-a-user-or-group) suggestions. Some
|
||||
integrations ([Bitbucket](/integrations/bitbucket),
|
||||
[GitHub](/integrations/github), [GitLab](/integrations/gitlab),
|
||||
[Jira](/integrations/jira)) use [silent
|
||||
mentions](/help/mention-a-user-or-group#silently-mention-a-user) to refer to
|
||||
users if a matching external account is configured.
|
||||
* **Dropdown**: A dropdown with a list of predefined options (e.g.,
|
||||
office location).
|
||||
* **Pronouns**: What pronouns should people use to refer to the user? Pronouns
|
||||
are displayed in [user mention](/help/mention-a-user-or-group) autocomplete
|
||||
suggestions.
|
||||
* **Paragraph**: For multiline responses (e.g., a user's intro message).
|
||||
* **Short text**: For one-line responses up to 50 characters (e.g., team name or
|
||||
role in your organization). You can
|
||||
[configure](#use-a-custom-profile-field-in--mention-suggestions) this field to
|
||||
be used for [@-mention](/help/mention-a-user-or-group) suggestions.
|
||||
* **Users**: For selecting one or more users (e.g., manager or direct reports).
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Edit your profile](/help/edit-your-profile)
|
||||
* [User cards](/help/user-cards)
|
||||
* [View someone's profile](/help/view-someones-profile)
|
||||
|
||||
[authentication-production]: https://zulip.readthedocs.io/en/stable/production/authentication-methods.html
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: Customize organization settings
|
||||
---
|
||||
|
||||
import ReviewOrganizationSettingsInstructions from "../include/_ReviewOrganizationSettingsInstructions.mdx";
|
||||
|
||||
<ReviewOrganizationSettingsInstructions />
|
||||
|
||||
A few settings to highlight:
|
||||
|
||||
* Decide [who can invite new users][who-can-invite], or whether
|
||||
[anyone can join without an invitation][who-can-join].
|
||||
* [Set visibility for users' email addresses][email-address-visibility].
|
||||
* If your organization uses a programming language, set the [default
|
||||
language for code blocks][default-code-block-language]. Also
|
||||
consider setting up [code playgrounds][code-playgrounds].
|
||||
* If your organization uses code repositories, [set up
|
||||
linkifiers](/help/add-a-custom-linkifier) to make it easy to link to
|
||||
issues (e.g., just by typing #1234 for issue 1234).
|
||||
* [Add custom emoji](/help/custom-emoji), including your organization's logo.
|
||||
|
||||
For many other settings, e.g., [message][message-editing-permissions] and
|
||||
[topic][topic-editing-permissions] editing permissions, you can experience how
|
||||
Zulip works for your organization before deciding what settings are best for
|
||||
you.
|
||||
|
||||
[message-editing-permissions]: /help/restrict-message-editing-and-deletion
|
||||
|
||||
[topic-editing-permissions]: /help/restrict-moving-messages
|
||||
|
||||
[default-code-block-language]: /help/code-blocks#default-code-block-language
|
||||
|
||||
[code-playgrounds]: /help/code-blocks#code-playgrounds
|
||||
|
||||
[email-address-visibility]: /help/configure-email-visibility
|
||||
|
||||
[who-can-invite]: /help/restrict-account-creation#change-who-can-send-invitations
|
||||
|
||||
[who-can-join]: /help/restrict-account-creation#set-whether-invitations-are-required-to-join
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Create your organization profile](/help/create-your-organization-profile)
|
||||
* [Create channels](/help/create-channels)
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: Customize settings for new users
|
||||
---
|
||||
|
||||
import CustomizeSettingsForNewUsers from "../include/_CustomizeSettingsForNewUsers.mdx";
|
||||
|
||||
<CustomizeSettingsForNewUsers />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Invite users to join](/help/invite-users-to-join)
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
* [Reset settings for users](/help/reset-settings-for-users)
|
||||
47
starlight_help/src/content/docs/dark-theme.mdx
Normal file
47
starlight_help/src/content/docs/dark-theme.mdx
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: Dark theme
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import MobileSettings from "../include/_MobileSettings.mdx";
|
||||
import PersonalMenu from "../include/_PersonalMenu.mdx";
|
||||
|
||||
Zulip provides both a light theme and a dark theme, which is great
|
||||
for working in a dark space.
|
||||
|
||||
## Manage color theme
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<PersonalMenu />
|
||||
|
||||
1. Select the desired theme using the row of icons in the middle of the menu.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MobileSettings />
|
||||
|
||||
1. Select the desired theme.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
The default is **Automatic** (for the desktop and web apps) or **System** (for the
|
||||
mobile apps). This setting detects which theme to use based on the color scheme
|
||||
used by your device's operating system.
|
||||
|
||||
You can also specify **Light** or **Dark** if you'd like Zulip to use the same
|
||||
color scheme regardless of your operating system configuration.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Set up your account](/help/set-up-your-account)
|
||||
* [Review your settings](/help/review-your-settings)
|
||||
* [Configure default new user settings](/help/configure-default-new-user-settings)
|
||||
* [Font size](/help/font-size)
|
||||
* [Line spacing](/help/line-spacing)
|
||||
65
starlight_help/src/content/docs/deactivate-a-user-group.mdx
Normal file
65
starlight_help/src/content/docs/deactivate-a-user-group.mdx
Normal file
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Deactivate a user group
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
import UserGroupPlusIcon from "~icons/zulip-icon/user-group-plus";
|
||||
import UserGroupXIcon from "~icons/zulip-icon/user-group-x";
|
||||
|
||||
You can deactivate groups you no longer plan to use. Deactivated groups cannot be [mentioned](/help/mention-a-user-or-group), or used for any [permissions](/help/manage-permissions).
|
||||
|
||||
## Deactivate a user group
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/group/all" />
|
||||
|
||||
1. Select a user group.
|
||||
1. Select the **Permissions** tab on the right.
|
||||
1. Remove all permissions.
|
||||
1. Click the **deactivate group** (<UserGroupXIcon />) button in the
|
||||
upper right corner of the user group settings panel.
|
||||
1. Click **Confirm**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## View deactivated user groups
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/group/all" />
|
||||
|
||||
1. Select **Deactivated groups** from the dropdown next to the **Filter** box
|
||||
above the list of groups.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Reactivate a user group
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="relative/group/all" />
|
||||
|
||||
1. Select **Deactivated groups** from the dropdown next to the **Filter** box
|
||||
above the list of groups.
|
||||
1. Select a user group.
|
||||
1. Click the **reactivate group** (<UserGroupPlusIcon />) button in the
|
||||
upper right corner of the user group settings panel.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [User groups](/help/user-groups)
|
||||
* [Create user groups](/help/create-user-groups)
|
||||
* [Manage user groups](/help/manage-user-groups)
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: Deactivate or reactivate a bot
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
|
||||
import UserCogIcon from "~icons/zulip-icon/user-cog";
|
||||
import UserPlusIcon from "~icons/zulip-icon/user-plus";
|
||||
import UserXIcon from "~icons/zulip-icon/user-x";
|
||||
|
||||
By default, users can deactivate and reactivate the bots that they
|
||||
add. Organization admins can prevent users from reactivating bots by
|
||||
[restricting bot creation](/help/restrict-bot-creation).
|
||||
|
||||
Organization administrators can also deactivate or reactivate any existing
|
||||
bot, regardless of who owns them.
|
||||
|
||||
## Deactivate a bot
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Your bots">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/your-bots" />
|
||||
|
||||
1. In the **Actions** column, click the **deactivate bot** (<UserXIcon />)
|
||||
icon for the bot you want to deactivate.
|
||||
1. Approve by clicking **Deactivate**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="All bots">
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/bots" />
|
||||
|
||||
1. In the **Actions** column, click the **deactivate bot** (<UserXIcon />)
|
||||
icon for the bot you want to deactivate.
|
||||
1. Approve by clicking **Deactivate**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Reactivate a bot
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Your bots">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/your-bots" />
|
||||
|
||||
1. Select **Deactivated** from the dropdown above the **Bots** table.
|
||||
1. In the **Actions** column, click the **reactivate bot** (<UserPlusIcon />)
|
||||
icon for the bot you want to reactivate.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="All bots">
|
||||
<AdminOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/bots" />
|
||||
|
||||
1. Select **Deactivated** from the dropdown above the **Bots** table.
|
||||
1. In the **Actions** column, click the **reactivate bot** (<UserPlusIcon />)
|
||||
icon for the bot you want to reactivate.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Bots overview](/help/bots-overview)
|
||||
* [Integrations overview](/help/integrations-overview)
|
||||
* [Add a bot or integration](/help/add-a-bot-or-integration)
|
||||
* [Manage a bot](/help/manage-a-bot)
|
||||
* [Restrict bot creation](/help/restrict-bot-creation)
|
||||
* [View all bots in your organization](/help/view-all-bots-in-your-organization)
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: Deactivate or reactivate a user
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import ManageThisUser from "../include/_ManageThisUser.mdx";
|
||||
import ManageUserTabTip from "../include/_ManageUserTabTip.mdx";
|
||||
|
||||
import UserCircleDeactivatedIcon from "~icons/zulip-icon/user-circle-deactivated";
|
||||
import UserPlusIcon from "~icons/zulip-icon/user-plus";
|
||||
import UserXIcon from "~icons/zulip-icon/user-x";
|
||||
|
||||
## Deactivating a user
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
When you deactivate a user:
|
||||
|
||||
* The user will be immediately logged out of all Zulip sessions, including
|
||||
desktop, web and mobile apps.
|
||||
* The user's credentials for logging in will no longer work, including password
|
||||
login and [any other login options](/help/configure-authentication-methods)
|
||||
enabled in your organization.
|
||||
* The user's [bots](/help/bots-overview) will be deactivated.
|
||||
* [Email invitations and invite links](/help/invite-new-users) created by the
|
||||
user will be disabled.
|
||||
* Other users will be able to see that the user has been deactivated (e.g., on
|
||||
their [user card](/help/user-cards)). In sidebars and elsewhere, a user's
|
||||
[availability](/help/status-and-availability) will be replaced with a
|
||||
deactivated icon
|
||||
(<UserCircleDeactivatedIcon />).
|
||||
* Even if your organization [allows users to join without an
|
||||
invitation](/help/restrict-account-creation#set-whether-invitations-are-required-to-join),
|
||||
this user will not be able to rejoin with the same email account.
|
||||
* You can choose whether to delete the user's name, profile picture,
|
||||
and messages they've sent (e.g., their DMs or channel messages).
|
||||
|
||||
<ZulipNote>
|
||||
You must go through the deactivation process below to fully remove a user's
|
||||
access to your Zulip organization. Changing a user's password or removing
|
||||
their single sign-on account will not log them out of their open Zulip
|
||||
sessions, or disable their API keys.
|
||||
</ZulipNote>
|
||||
|
||||
### Deactivate a user
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via user profile">
|
||||
<FlattenedSteps>
|
||||
<ManageThisUser />
|
||||
|
||||
1. Click **Deactivate user** at the bottom of the **Manage user** menu.
|
||||
1. *(optional)* Select **Notify this user by email?** if desired, and enter a
|
||||
custom comment to include in the notification email.
|
||||
1. Choose whether to delete the user's name, profile picture, and messages
|
||||
they've sent (e.g., their DMs or channel messages).
|
||||
1. Approve by clicking **Deactivate**.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ManageUserTabTip />
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via organization settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/users" />
|
||||
|
||||
1. In the **Actions** column, click the **deactivate user** (<UserXIcon />)
|
||||
icon for the user you want to deactivate.
|
||||
1. *(optional)* Select **Notify this user by email?** if desired, and enter a
|
||||
custom comment to include in the notification email.
|
||||
1. Choose whether to delete the user's name, profile picture, and messages
|
||||
they've sent (e.g., their DMs or channel messages).
|
||||
1. Approve by clicking **Deactivate**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
<ZulipTip>
|
||||
Organization administrators cannot deactivate organization owners.
|
||||
</ZulipTip>
|
||||
|
||||
## Reactivating a user
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
A reactivated user will have the same role, channel subscriptions, user group
|
||||
memberships, and other settings and permissions as they did prior to
|
||||
deactivation. They will also have the same API key and bot API keys, but their
|
||||
bots will be deactivated until the user manually
|
||||
[reactivates](/help/deactivate-or-reactivate-a-bot) them again.
|
||||
|
||||
### Reactivate a user
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via organization settings">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/deactivated" />
|
||||
|
||||
1. Select the **Deactivated** tab.
|
||||
1. In the **Actions** column, click the **reactivate user** (<UserPlusIcon />) icon for the user you want to reactivate.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via user profile">
|
||||
<Steps>
|
||||
1. Click on a user's profile picture or name on a message they sent
|
||||
to open their **user card**.
|
||||
1. Click **View profile**.
|
||||
1. Select the **Manage user** tab.
|
||||
1. Click **Reactivate user** at the bottom of the **Manage user** menu.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</Steps>
|
||||
|
||||
<ManageUserTabTip />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
<ZulipTip>
|
||||
You may want to [review and adjust](/help/manage-user-channel-subscriptions)
|
||||
the reactivated user's channel subscriptions.
|
||||
</ZulipTip>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Mute a user](/help/mute-a-user)
|
||||
* [Change a user's role](/help/user-roles#change-a-users-role)
|
||||
* [Change a user's name](/help/change-a-users-name)
|
||||
* [Deactivate your account](/help/deactivate-your-account)
|
||||
* [Manage a user](/help/manage-a-user)
|
||||
58
starlight_help/src/content/docs/deactivate-your-account.mdx
Normal file
58
starlight_help/src/content/docs/deactivate-your-account.mdx
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Deactivate your account
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
|
||||
In Zulip, you have a dedicated account for each organization you belong to.
|
||||
Deactivating your Zulip account in one organization will have no effect on any
|
||||
other Zulip accounts you may have.
|
||||
|
||||
Once you deactivate your account, you cannot register in the same organization
|
||||
with the email address you used before. If you are re-joining an organization,
|
||||
ask an organization administrator to
|
||||
[reactivate](/help/deactivate-or-reactivate-a-user#reactivate-a-user) your
|
||||
account.
|
||||
|
||||
<ZulipTip>
|
||||
You can find all the Zulip Cloud accounts associated with your email address
|
||||
with the [**Find your accounts**](https://zulip.com/accounts/find/) tool.
|
||||
If you have forgotten your account password, you can
|
||||
[reset it](/help/change-your-password).
|
||||
</ZulipTip>
|
||||
|
||||
## Deactivate your account
|
||||
|
||||
<ZulipNote>
|
||||
If you are the only owner in the organization, you cannot
|
||||
deactivate your account. You will need to
|
||||
[add another owner](/help/user-roles#change-a-users-role) first.
|
||||
</ZulipNote>
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/account-and-privacy" />
|
||||
|
||||
1. Under **Account**, click **Deactivate account**.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## What happens when you deactivate an account
|
||||
|
||||
* Your [user card](/help/user-cards) will have a notice indicating that your
|
||||
account has been deactivated.
|
||||
* Deactivating your account won't delete messages you've sent or files
|
||||
you've shared. If permitted in your organization, delete content you'd
|
||||
like to remove before deactivating your account.
|
||||
* Any bots that you maintain will be disabled.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Logging in](/help/logging-in)
|
||||
* [Logging out](/help/logging-out)
|
||||
* [Change your password](/help/change-your-password)
|
||||
* [Switching between organizations](/help/switching-between-organizations)
|
||||
* [Deactivate or reactivate a user](/help/deactivate-or-reactivate-a-user)
|
||||
* [Deactivate your organization](/help/deactivate-your-organization)
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: Deactivate your organization
|
||||
---
|
||||
|
||||
import {SUPPORT_EMAIL} from "astro:env/client";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import OwnerOnly from "../include/_OwnerOnly.mdx";
|
||||
|
||||
If you are no longer using a Zulip organization, you can deactivate it. When you
|
||||
deactivate an organization, you can specify the time period after which the
|
||||
organization's data will be permanently deleted.
|
||||
|
||||
## Deactivate an organization
|
||||
|
||||
<OwnerOnly />
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-profile" />
|
||||
|
||||
1. Under **Deactivate organization**, click **Deactivate organization**.
|
||||
1. Select when the organization's data (users, channels, messages, etc.)
|
||||
should be permanently deleted.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Restore a deactivated organization
|
||||
|
||||
A deactivated organization can be restored until its data is deleted.
|
||||
If you deactivated your organization by accident, please contact
|
||||
<a href={`mailto:${SUPPORT_EMAIL}`}>{SUPPORT_EMAIL}</a> as soon as possible.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Deactivate your account](/help/deactivate-your-account)
|
||||
128
starlight_help/src/content/docs/delete-a-message.mdx
Normal file
128
starlight_help/src/content/docs/delete-a-message.mdx
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
title: Delete a message
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import DependsOnPermissions from "../include/_DependsOnPermissions.mdx";
|
||||
import MessageActions from "../include/_MessageActions.mdx";
|
||||
import MessageActionsMenu from "../include/_MessageActionsMenu.mdx";
|
||||
import MessageLongPressMenu from "../include/_MessageLongPressMenu.mdx";
|
||||
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
|
||||
Zulip lets you delete the content of your messages or delete messages completely
|
||||
if these actions are allowed in your organization. Only server administrators
|
||||
can restore deleted messages.
|
||||
|
||||
Organization administrators can
|
||||
[configure](/help/restrict-message-editing-and-deletion) who can edit and delete
|
||||
their own messages, and who can delete any message. They can also set time
|
||||
limits on message editing and deletion.
|
||||
|
||||
## Delete message content
|
||||
|
||||
Editing a message to delete its content will cause the message to be displayed
|
||||
as **(deleted)**. The original sender and timestamp of the message will still
|
||||
be displayed, and the original content of the message is still accessible via
|
||||
Zulip's [edit history](/help/view-a-messages-edit-history) feature. This can be
|
||||
the best option for avoiding confusion if other users have already responded to
|
||||
your message.
|
||||
|
||||
<DependsOnPermissions />
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<MessageActions />
|
||||
|
||||
1. Click the **pencil** (<EditIcon />) icon.
|
||||
1. Delete the content of the message.
|
||||
1. Click **Save**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MessageLongPressMenu />
|
||||
|
||||
1. Tap **Edit message**.
|
||||
1. Delete the content of the message.
|
||||
1. Tap **Save**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Delete a message completely
|
||||
|
||||
In some cases, such as when a message accidentally shares secret information, or
|
||||
contains spam or abuse, it makes sense to delete a message completely. Deleted
|
||||
messages will immediately disappear from the UI in all official Zulip clients.
|
||||
|
||||
Any uploaded files referenced only by deleted messages will be immediately
|
||||
inaccessible. Note that an uploaded file shared in multiple messages will be
|
||||
deleted only when *all* of those messages are deleted.
|
||||
|
||||
It's important to understand that anyone who received the message
|
||||
before you deleted it could have made a copy of its content. Even if
|
||||
no one is online when you send the message, users may have received
|
||||
the message via email or mobile notifications. So if you
|
||||
accidentally shared secret information that you can change, like a
|
||||
password, you may want to change that password regardless of whether
|
||||
you also delete the message.
|
||||
|
||||
<DependsOnPermissions />
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<MessageActionsMenu />
|
||||
|
||||
1. Select **Delete message**.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MessageLongPressMenu />
|
||||
|
||||
1. Tap **Delete message**.
|
||||
1. Approve by tapping **Delete**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
<ZulipTip>
|
||||
You can delete messages sent by [bots that you
|
||||
own](/help/view-your-bots) just like messages you sent yourself.
|
||||
</ZulipTip>
|
||||
|
||||
## Restoring deleted messages
|
||||
|
||||
For protection against accidental or immediately regretted
|
||||
deletions, messages deleted directly or via a [message retention
|
||||
policy](/help/message-retention-policy) are archived for 30 days in a
|
||||
format that can be restored by a server administrator. After that
|
||||
time, they are permanently and irrecoverably deleted from the Zulip
|
||||
server. Server administrators can adjust the archival time using
|
||||
the `ARCHIVED_DATA_VACUUMING_DELAY_DAYS` setting.
|
||||
|
||||
## Message notifications
|
||||
|
||||
When a message is deleted, any [pending email
|
||||
notifications](/help/email-notifications#configure-delay-for-message-notification-emails)
|
||||
for that message will be canceled, and
|
||||
[mobile](/help/mobile-notifications) and
|
||||
[desktop](/help/desktop-notifications) notifications will be removed,
|
||||
including [mentions and alerts](/help/dm-mention-alert-notifications).
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Delete a topic](/help/delete-a-topic)
|
||||
* [Archive a channel](/help/archive-a-channel)
|
||||
* [Message retention policy](/help/message-retention-policy)
|
||||
* [Edit a message](/help/edit-a-message)
|
||||
* [Restrict message editing and deletion](/help/restrict-message-editing-and-deletion)
|
||||
59
starlight_help/src/content/docs/delete-a-topic.mdx
Normal file
59
starlight_help/src/content/docs/delete-a-topic.mdx
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Delete a topic
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
import TopicActions from "../include/_TopicActions.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
We generally recommend against deleting topics, but there are a few
|
||||
situations in which it can be useful:
|
||||
|
||||
* Clearing out test messages after setting up an organization.
|
||||
* Clearing out messages from an overly enthusiastic bot.
|
||||
* Managing abuse.
|
||||
|
||||
In most other cases, [renaming a topic](/help/rename-a-topic) is often a
|
||||
better idea, or just leaving the topic as is. Deleting a topic can confuse
|
||||
users who come to the topic later via an email notification.
|
||||
|
||||
Note that deleting a topic also deletes every message with that topic,
|
||||
whereas [archiving a channel](/help/archive-a-channel) does not.
|
||||
|
||||
### Delete a topic
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<TopicActions />
|
||||
|
||||
1. Click **Delete topic**.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
Access this feature by following the web app instructions in your
|
||||
mobile device browser.
|
||||
|
||||
Implementation of this feature in the mobile app is tracked [on
|
||||
GitHub](https://github.com/zulip/zulip-flutter/issues/1549). If
|
||||
you're interested in this feature, please react to the issue's
|
||||
description with 👍.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Note that deleting all of the individual messages within a particular
|
||||
topic also deletes that topic. Structurally, topics are simply an
|
||||
attribute of messages in Zulip.
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Edit a message](/help/edit-a-message)
|
||||
* [Delete a message](/help/delete-a-message)
|
||||
* [Archive a channel](/help/archive-a-channel)
|
||||
* [Message retention policy](/help/message-retention-policy)
|
||||
84
starlight_help/src/content/docs/demo-organizations.mdx
Normal file
84
starlight_help/src/content/docs/demo-organizations.mdx
Normal file
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: Demo organizations
|
||||
---
|
||||
|
||||
import {Steps} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import CreateADemoOrganization from "../include/_CreateADemoOrganization.mdx";
|
||||
import DemoOrgsConversion from "../include/_DemoOrgsConversion.mdx";
|
||||
import DemoOrgsIntro from "../include/_DemoOrgsIntro.mdx";
|
||||
import OwnerOnly from "../include/_OwnerOnly.mdx";
|
||||
import ZulipCloudOnly from "../include/_ZulipCloudOnly.mdx";
|
||||
|
||||
<ZulipCloudOnly />
|
||||
|
||||
<DemoOrgsIntro />
|
||||
|
||||
<DemoOrgsConversion />
|
||||
|
||||
## Create a demo organization
|
||||
|
||||
<CreateADemoOrganization />
|
||||
|
||||
## Configure an email for your account
|
||||
|
||||
To take certain administrative actions, like [inviting other
|
||||
users](/help/invite-new-users) or converting a demo organization to a permanent
|
||||
organization, you'll need to configure an email for your account.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/account-and-privacy" />
|
||||
|
||||
1. Under **Account**, click **Add email**, and fill out the required
|
||||
information. Click **Add**.
|
||||
1. You will receive a confirmation email within a few minutes. Open
|
||||
it and click **Confirm and set password**.
|
||||
1. Configure a password, and click **Submit**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Convert a demo organization to a permanent organization
|
||||
|
||||
<OwnerOnly />
|
||||
|
||||
If you'd like to keep your demo organization's message history and user
|
||||
accounts, you can convert it to a permanent Zulip organization. You'll be able
|
||||
to choose a new subdomain for your organization's URL.
|
||||
|
||||
Everyone will be logged out of existing sessions on the web, mobile and desktop
|
||||
apps, and will need to log in again at the new URL. Any [API clients](/api/) or
|
||||
[integrations](/integrations/) will need to be updated to point to the new
|
||||
organization URL.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-profile" />
|
||||
|
||||
1. Click the **Convert** button in the banner at the top.
|
||||
1. Enter your new **Organization URL**, and click **Convert**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Deactivate a demo organization
|
||||
|
||||
<OwnerOnly />
|
||||
|
||||
Demo organizations are automatically deleted after 30 days, but you can
|
||||
also manually deactivate your organization.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-profile" />
|
||||
|
||||
1. Under **Deactivate organization**, click **Deactivate organization**.
|
||||
1. Select when the organization's data (users, channels, messages, etc.)
|
||||
should be permanently deleted. If you haven't configured an email for your
|
||||
account, data will be deleted immediately.
|
||||
1. Approve by clicking **Confirm**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Getting started with Zulip](/help/getting-started-with-zulip)
|
||||
* [Trying out Zulip](/help/trying-out-zulip)
|
||||
* [Moving to Zulip](/help/moving-to-zulip)
|
||||
* [Invite users to join](/help/invite-users-to-join)
|
||||
255
starlight_help/src/content/docs/deploying-bots.mdx
Normal file
255
starlight_help/src/content/docs/deploying-bots.mdx
Normal file
@@ -0,0 +1,255 @@
|
||||
---
|
||||
title: Deploying bots in production
|
||||
---
|
||||
|
||||
import {Steps} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
|
||||
import DownloadIcon from "~icons/zulip-icon/download";
|
||||
|
||||
Usually, work on a bot starts on a laptop. At some point, you'll want
|
||||
to deploy your bot in a production environment, so that it'll stay up
|
||||
regardless of what's happening with your laptop. There are several
|
||||
options for doing so:
|
||||
|
||||
* The simplest is running `zulip-run-bot` inside a `screen` session on
|
||||
a server. This works, but if your server reboots, you'll need to
|
||||
manually restart it, so we don't recommend it.
|
||||
* Using `supervisord` or a similar tool for managing a production
|
||||
process with `zulip-run-bot`. This consumes a bit of resources
|
||||
(since you need a persistent process running), but otherwise works
|
||||
great.
|
||||
* Using the Zulip Botserver, which is a simple Flask server for
|
||||
running a bot in production, and connecting that to Zulip's outgoing
|
||||
webhooks feature.
|
||||
|
||||
## Zulip Botserver
|
||||
|
||||
The Zulip Botserver is for people who want to:
|
||||
|
||||
* Run bots in production.
|
||||
* Run multiple bots at once.
|
||||
|
||||
The Zulip Botserver is a Python (Flask) server that implements Zulip's
|
||||
outgoing webhooks API. You can of course write your own servers using
|
||||
the outgoing webhooks API, but the Botserver is designed to make it
|
||||
easy for a novice Python programmer to write a new bot and deploy it
|
||||
in production.
|
||||
|
||||
### How Botserver works
|
||||
|
||||
Zulip Botserver starts a web server that listens to incoming messages
|
||||
from your main Zulip server. The sequence of events in a successful
|
||||
Botserver interaction are:
|
||||
|
||||
<Steps>
|
||||
1. Your bot user is mentioned or receives a direct message:
|
||||
|
||||
```
|
||||
@**My Bot User** hello world
|
||||
```
|
||||
|
||||
1. The Zulip server sends a POST request to your Botserver endpoint URL:
|
||||
|
||||
```
|
||||
{
|
||||
"message":{
|
||||
"content":"@**My Bot User** hello world",
|
||||
},
|
||||
"bot_email":"myuserbot-bot@example.com",
|
||||
"trigger":"mention",
|
||||
"token":"XXXX"
|
||||
}
|
||||
```
|
||||
|
||||
This URL is configured in the Zulip web-app in your Bot User's settings.
|
||||
|
||||
1. The Botserver searches for a bot to handle the message, and executes your
|
||||
bot's `handle_message` code.
|
||||
</Steps>
|
||||
|
||||
Your bot's code should work just like it does with `zulip-run-bot`.
|
||||
|
||||
### Installing the Zulip Botserver
|
||||
|
||||
Install the `zulip_botserver` package:
|
||||
|
||||
```
|
||||
pip3 install zulip_botserver
|
||||
```
|
||||
|
||||
### Create a bot in your Zulip organization
|
||||
|
||||
<Steps>
|
||||
1. Navigate to the **Bots** tab of the **Personal settings** menu, and click
|
||||
**Add a new bot**.
|
||||
1. Set the **Bot type** to **Outgoing webhook**.
|
||||
1. Set the **endpoint URL** to `https://<host>:<port>` where `host` is the
|
||||
hostname of the server you'll be running the Botserver on, and `port` is
|
||||
the port number. The default port is `5002`.
|
||||
1. Click **Create bot**. You should see the new bot user in the
|
||||
**Active bots** panel.
|
||||
</Steps>
|
||||
|
||||
### Running a bot using the Zulip Botserver
|
||||
|
||||
<Steps>
|
||||
1. [Create your bot](#create-a-bot-in-your-zulip-organization) in your Zulip
|
||||
organization.
|
||||
1. [Download the `zuliprc` file](/help/manage-a-bot#download-zuliprc-configuration-file)
|
||||
for the bot created above.
|
||||
1. Run the Botserver, where `helloworld` is the name of the bot you
|
||||
want to run:
|
||||
|
||||
```
|
||||
zulip-botserver --config-file <path_to_zuliprc> --bot-name=helloworld
|
||||
```
|
||||
|
||||
You can specify the port number and various other options; run
|
||||
`zulip-botserver --help` to see how to do this.
|
||||
</Steps>
|
||||
|
||||
Everything is set up! Test your Botserver like you would
|
||||
test a normal bot.
|
||||
|
||||
### Running multiple bots using the Zulip Botserver
|
||||
|
||||
The Zulip Botserver also supports running multiple bots from a single
|
||||
Botserver process.
|
||||
|
||||
<Steps>
|
||||
1. [Create your bots](#create-a-bot-in-your-zulip-organization)
|
||||
in your Zulip organization.
|
||||
|
||||
1. Download the `botserverrc` file from the **Bots** tab of the
|
||||
**Personal settings** menu, by clicking the **download**
|
||||
(<DownloadIcon />) icon above the **Bots** table.
|
||||
|
||||
1. Open the `botserverrc`. It should contain one or more sections that look
|
||||
like this:
|
||||
|
||||
```
|
||||
[helloworld]
|
||||
email=foo-bot@hostname
|
||||
key=dOHHlyqgpt5g0tVuVl6NHxDLlc9eFRX4
|
||||
site=http://hostname
|
||||
token=aQVQmSd6j6IHphJ9m1jhgHdbnhl5ZcsY
|
||||
bot-config-file=~/path/to/helloworld.conf
|
||||
```
|
||||
|
||||
Each section contains the configuration for an outgoing webhook bot.
|
||||
|
||||
1. For each bot, enter the name of the bot you want to run in the square
|
||||
brackets `[]` (e.g., the above example applies to the `helloworld` bot).
|
||||
To run an external bot, enter the path to the bot's python file instead,
|
||||
e.g., `[~/Documents/my_bot_script.py]`.
|
||||
|
||||
1. Run the Zulip Botserver by passing the `botserverrc` to it.
|
||||
|
||||
```
|
||||
zulip-botserver --config-file <path-to-botserverrc> --hostname <address> --port <port>
|
||||
```
|
||||
|
||||
If omitted, `hostname` defaults to `127.0.0.1` and `port` to `5002`.
|
||||
</Steps>
|
||||
|
||||
<ZulipNote>
|
||||
The `bot-config-file` setting is needed only for bots that
|
||||
use a config file.
|
||||
</ZulipNote>
|
||||
|
||||
### Running Zulip Botserver with supervisord
|
||||
|
||||
[supervisord](https://supervisord.org/) is a popular tool for running
|
||||
services in production. It helps ensure the service starts on boot,
|
||||
manages log files, restarts the service if it crashes, etc. This
|
||||
section documents how to run the Zulip Botserver using *supervisord*.
|
||||
|
||||
Running the Zulip Botserver with *supervisord* works almost like
|
||||
running it manually.
|
||||
|
||||
<FlattenedSteps>
|
||||
1. Install *supervisord* via your package manager; e.g., on Debian/Ubuntu:
|
||||
|
||||
```
|
||||
sudo apt-get install supervisor
|
||||
```
|
||||
|
||||
1. Configure *supervisord*. *supervisord* stores its configuration in
|
||||
`/etc/supervisor/conf.d`.
|
||||
* Do **one** of the following:
|
||||
* Download the [sample config file][supervisord-config-file]
|
||||
and store it in `/etc/supervisor/conf.d/zulip-botserver.conf`.
|
||||
* Copy the following section into your existing supervisord config file.
|
||||
|
||||
```
|
||||
[program:zulip-botserver]
|
||||
command=zulip-botserver --config-file=<path/to/your/botserverrc>
|
||||
--hostname <address> --port <port>
|
||||
startsecs=3
|
||||
stdout_logfile=/var/log/zulip-botserver.log ; all output of your Botserver will be logged here
|
||||
redirect_stderr=true
|
||||
```
|
||||
|
||||
* Edit the `<>` sections according to your preferences.
|
||||
|
||||
[supervisord-config-file]: https://raw.githubusercontent.com/zulip/python-zulip-api/main/zulip_botserver/zulip-botserver-supervisord.conf
|
||||
|
||||
1. Update *supervisord* to read the configuration file:
|
||||
|
||||
```
|
||||
supervisorctl reread
|
||||
supervisorctl update
|
||||
```
|
||||
|
||||
(or you can use `/etc/init.d/supervisord restart`, but this is less
|
||||
disruptive if you're using *supervisord* for other services as well).
|
||||
|
||||
1. Test if your setup is successful:
|
||||
|
||||
```
|
||||
supervisorctl status
|
||||
```
|
||||
|
||||
The output should include a line similar to this:
|
||||
|
||||
> zulip-botserver RUNNING pid 28154, uptime 0:00:27
|
||||
|
||||
The standard output of the Botserver will be logged to the path in
|
||||
your *supervisord* configuration.
|
||||
</FlattenedSteps>
|
||||
|
||||
If you are hosting the Botserver yourself (as opposed to using a
|
||||
hosting service that provides SSL), we recommend securing your
|
||||
Botserver with SSL using an `nginx` or `Apache` reverse proxy and
|
||||
[Certbot](https://certbot.eff.org/).
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
* Make sure the API key you're using is for an [outgoing webhook
|
||||
bot](/help/outgoing-webhooks) and you've
|
||||
correctly configured the URL for your Botserver.
|
||||
|
||||
* Your Botserver needs to be accessible from your Zulip server over
|
||||
HTTP(S). Make sure any firewall allows the connection. We
|
||||
recommend using [zulip-run-bot](/help/running-bots) instead for
|
||||
development/testing on a laptop or other non-server system.
|
||||
If your Zulip server is self-hosted, you can test by running `curl
|
||||
http://zulipbotserver.example.com:5002` from your Zulip server;
|
||||
the output should be:
|
||||
|
||||
```
|
||||
$ curl http://zulipbotserver.example.com:5002/
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<title>405 Method Not Allowed</title>
|
||||
<h1>Method Not Allowed</h1>
|
||||
<p>The method is not allowed for the requested URL.</p>
|
||||
```
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Non-webhook integrations](/help/non-webhook-integrations)
|
||||
* [Running bots](/help/running-bots)
|
||||
* [Writing bots](/help/writing-bots)
|
||||
202
starlight_help/src/content/docs/desktop-app-install-guide.mdx
Normal file
202
starlight_help/src/content/docs/desktop-app-install-guide.mdx
Normal file
@@ -0,0 +1,202 @@
|
||||
---
|
||||
title: Installing the Zulip desktop app
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import AppWillUpdateTip from "../include/_AppWillUpdateTip.mdx";
|
||||
|
||||
The Zulip desktop app comes with native desktop notifications, support for
|
||||
multiple Zulip accounts, and a dedicated tray icon.
|
||||
|
||||
Installing the latest stable release is recommended for most users. For an early
|
||||
look at the newest features, consider the [beta
|
||||
releases](#install-a-beta-release).
|
||||
|
||||
## Install the latest release
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="macOS">
|
||||
<AppWillUpdateTip />
|
||||
|
||||
#### Disk image *(recommended)*
|
||||
|
||||
<Steps>
|
||||
1. Download [Zulip for macOS](https://zulip.com/apps/mac).
|
||||
1. Open the file, and drag the app into the **Applications** folder.
|
||||
</Steps>
|
||||
|
||||
#### Homebrew
|
||||
|
||||
<Steps>
|
||||
1. Run the command `brew install --cask zulip` from a terminal.
|
||||
1. Run Zulip from **Applications**.
|
||||
</Steps>
|
||||
|
||||
You can run the command `brew upgrade zulip` to immediately upgrade the app.
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows">
|
||||
#### Web installer *(recommended)*
|
||||
|
||||
<AppWillUpdateTip />
|
||||
|
||||
<Steps>
|
||||
1. Download and run [Zulip for Windows](https://zulip.com/apps/windows).
|
||||
1. Run Zulip from the **Start** menu.
|
||||
</Steps>
|
||||
|
||||
#### Offline installer *(for isolated networks)*
|
||||
|
||||
<ZulipNote>
|
||||
The app will not update automatically. You can repeat these steps to upgrade
|
||||
to future versions.
|
||||
</ZulipNote>
|
||||
|
||||
<Steps>
|
||||
1. Download [zulip-x.x.x-x64.msi][latest] for 64-bit desktops
|
||||
(common), or [zulip-x.x.x-ia32.msi][latest] for 32-bit (rare).
|
||||
1. Copy the installer file to the machine you want to install the app
|
||||
on, and open it there.
|
||||
1. Run Zulip from the **Start** menu.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Linux">
|
||||
#### APT *(Ubuntu or Debian)*
|
||||
|
||||
<ZulipTip>
|
||||
The app will be updated automatically to future versions when you do a
|
||||
regular software update on your system, e.g., with
|
||||
`sudo apt update && sudo apt upgrade`.
|
||||
</ZulipTip>
|
||||
|
||||
<Steps>
|
||||
1. Enter the following commands into a terminal:
|
||||
```bash
|
||||
sudo apt install curl
|
||||
sudo curl -fL -o /etc/apt/trusted.gpg.d/zulip-desktop.asc \
|
||||
https://download.zulip.com/desktop/apt/zulip-desktop.asc
|
||||
echo "deb https://download.zulip.com/desktop/apt stable main" | \
|
||||
sudo tee /etc/apt/sources.list.d/zulip-desktop.list
|
||||
sudo apt update
|
||||
sudo apt install zulip
|
||||
```
|
||||
These commands set up the Zulip Desktop APT repository and its signing
|
||||
key, and then install the Zulip client.
|
||||
1. Run Zulip from your app launcher, or with `zulip` from a terminal.
|
||||
</Steps>
|
||||
|
||||
#### AppImage *(recommended for all other distros)*
|
||||
|
||||
<AppWillUpdateTip />
|
||||
|
||||
<Steps>
|
||||
1. Download [Zulip for Linux](https://zulip.com/apps/linux).
|
||||
1. Make the file executable, with
|
||||
`chmod a+x Zulip-x.x.x-x86_64.AppImage` from a terminal (replace
|
||||
`x.x.x` with the actual app version of the downloaded file).
|
||||
1. Run the file from your app launcher, or from a terminal. This file is the
|
||||
Zulip app, so no installation is required.
|
||||
</Steps>
|
||||
|
||||
#### Snap
|
||||
|
||||
<Steps>
|
||||
1. Make sure [snapd](https://docs.snapcraft.io/core/install) is installed.
|
||||
1. Execute following command to install Zulip:
|
||||
```bash
|
||||
sudo snap install zulip
|
||||
```
|
||||
1. Run Zulip from your app launcher, or with `zulip` from a terminal.
|
||||
</Steps>
|
||||
|
||||
#### Flathub
|
||||
|
||||
<Steps>
|
||||
1. Make sure you have [Flatpak](https://flathub.org/setup) installed on your
|
||||
system.
|
||||
1. Use the following command from the official
|
||||
[Flathub page](https://flathub.org/apps/org.zulip.Zulip) to install Zulip:
|
||||
```bash
|
||||
flatpak install flathub org.zulip.Zulip
|
||||
```
|
||||
1. After the installation is complete, you can run Zulip using the following
|
||||
command:
|
||||
```bash
|
||||
flatpak run org.zulip.Zulip
|
||||
```
|
||||
</Steps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Install a beta release
|
||||
|
||||
Get a peek at new features before they're released!
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Most systems">
|
||||
<AppWillUpdateTip />
|
||||
|
||||
<Steps>
|
||||
1. Go to the [Zulip releases][release-list] page on GitHub, and find the latest
|
||||
version tagged with the “Pre-release” label.
|
||||
1. If there's a **Pre-release** that's more recent than the [latest release][latest],
|
||||
download the appropriate Zulip beta installer or app for your system.
|
||||
1. To install and run Zulip, refer to the instructions for your operating
|
||||
system in the [Install the latest release](#install-the-latest-release)
|
||||
section above.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Linux with APT">
|
||||
<ZulipTip>
|
||||
The app will be updated automatically to future versions when you do a
|
||||
regular software update on your system, e.g., with
|
||||
`sudo apt update && sudo apt upgrade`.
|
||||
</ZulipTip>
|
||||
|
||||
#### You don't have the Zulip app installed
|
||||
|
||||
<Steps>
|
||||
1. Enter the following commands into a terminal:
|
||||
```bash
|
||||
sudo curl -fL -o /etc/apt/trusted.gpg.d/zulip-desktop.asc \
|
||||
https://download.zulip.com/desktop/apt/zulip-desktop.asc
|
||||
echo "deb https://download.zulip.com/desktop/apt beta main" | \
|
||||
sudo tee /etc/apt/sources.list.d/zulip-desktop.list
|
||||
sudo apt update
|
||||
sudo apt install zulip
|
||||
```
|
||||
These commands set up the Zulip Desktop beta APT repository and its signing
|
||||
key, and then install the Zulip beta client.
|
||||
1. Run Zulip from your app launcher, or with `zulip` from a terminal.
|
||||
</Steps>
|
||||
|
||||
#### You already have the Zulip app installed
|
||||
|
||||
<Steps>
|
||||
1. Enter the following commands into a terminal:
|
||||
```bash
|
||||
sudo sed -i s/stable/beta/ /etc/apt/sources.list.d/zulip-desktop.list
|
||||
sudo apt update
|
||||
sudo apt install zulip
|
||||
```
|
||||
These commands set up the Zulip Desktop beta APT repository, and then
|
||||
install the Zulip beta client.
|
||||
1. Run Zulip from your app launcher, or with `zulip` from a terminal.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
[latest]: https://github.com/zulip/zulip-desktop/releases/latest
|
||||
|
||||
[release-list]: https://github.com/zulip/zulip-desktop/releases
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Connect through a proxy](/help/connect-through-a-proxy)
|
||||
* [Use a custom certificate](/help/custom-certificates)
|
||||
* [View Zulip version](/help/view-zulip-version)
|
||||
176
starlight_help/src/content/docs/desktop-notifications.mdx
Normal file
176
starlight_help/src/content/docs/desktop-notifications.mdx
Normal file
@@ -0,0 +1,176 @@
|
||||
---
|
||||
title: Desktop notifications
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
|
||||
import PlayCircleIcon from "~icons/fa/play-circle";
|
||||
|
||||
Zulip can be configured to send visual and audible desktop notifications for
|
||||
[DMs, mentions, and alerts](/help/dm-mention-alert-notifications), as well as
|
||||
[channel messages](/help/channel-notifications) and [followed
|
||||
topics](/help/follow-a-topic#configure-notifications-for-followed-topics).
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. Toggle the checkboxes in the **Desktop** column of the **Notification
|
||||
triggers** table.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Notification sound
|
||||
|
||||
You can select the sound Zulip uses for audible desktop notifications. Choosing
|
||||
**None** disables all audible desktop notifications.
|
||||
|
||||
### Change notification sound
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. Under **Desktop message notifications**, configure
|
||||
**Notification sound**.
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
To hear the selected sound, click the <PlayCircleIcon /> to the right of your selection.
|
||||
</ZulipTip>
|
||||
|
||||
## Unread count badge
|
||||
|
||||
By default, Zulip displays a count of your unmuted unread messages on the
|
||||
[desktop app](https://zulip.com/apps/) sidebar and on the browser tab icon. You
|
||||
can configure the badge to only count [direct messages](/help/direct-messages)
|
||||
and [mentions](/help/mention-a-user-or-group), or to include messages in
|
||||
[followed topics](/help/follow-a-topic) but not other
|
||||
[channel](/help/introduction-to-channels) messages.
|
||||
|
||||
### Configure unread count badge
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. Under **Desktop message notifications**, configure
|
||||
**Unread count badge**.
|
||||
</FlattenedSteps>
|
||||
|
||||
### Disable unread count badge
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. Under **Desktop message notifications**, select **None** from the
|
||||
**Unread count badge** dropdown.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Testing desktop notifications
|
||||
|
||||
<ZulipNote>
|
||||
This does not make an unread count badge appear.
|
||||
</ZulipNote>
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. Under **Desktop message notifications**, click **Send a test notification**.
|
||||
If notifications are working, you will receive a test notification.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Troubleshooting desktop notifications
|
||||
|
||||
Desktop notifications are triggered when a message arrives, and Zulip is not
|
||||
in focus or the message is offscreen. You must have Zulip open in a browser
|
||||
tab or in the Zulip desktop app to receive desktop notifications.
|
||||
|
||||
**Visual desktop notifications** appear in the corner of your main monitor.
|
||||
**Audible desktop notifications** make a sound.
|
||||
|
||||
To receive notifications in the desktop app, make sure that [Do Not Disturb
|
||||
mode](/help/do-not-disturb) is turned off.
|
||||
|
||||
### Check notification settings for DMs or channels
|
||||
|
||||
If you have successfully received a [test
|
||||
notification](#testing-desktop-notifications), but you aren't seeing desktop
|
||||
notifications for new messages, check your Zulip notification settings. Make
|
||||
sure you have enabled desktop notifications [for
|
||||
DMs](/help/dm-mention-alert-notifications) or [for the
|
||||
channel](/help/channel-notifications) you are testing. Messages in [muted
|
||||
topics](/help/mute-a-topic) will not trigger notifications.
|
||||
|
||||
### Check platform settings
|
||||
|
||||
The most common issue is that your browser or system settings are blocking
|
||||
notifications from Zulip. Before checking Zulip-specific settings, make sure
|
||||
that **Do Not Disturb mode** is not enabled on your computer.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Chrome">
|
||||
<Steps>
|
||||
1. Click on the site information menu to the left of the URL for your Zulip
|
||||
organization.
|
||||
1. Toggle **Notifications** and **Sound**. If you don't see those options,
|
||||
click on **Site settings**, and set **Notifications** and **Sound** to
|
||||
**Allow**.
|
||||
</Steps>
|
||||
|
||||
Alternate instructions:
|
||||
|
||||
<Steps>
|
||||
1. Select the Chrome menu at the top right of the browser, and select
|
||||
**Settings**.
|
||||
1. Select **Privacy and security**, **Site Settings**, and then
|
||||
**Notifications**.
|
||||
1. Next to **Allowed to send notifications**, select **Add**.
|
||||
1. Paste the Zulip URL for your organization into the site field, and
|
||||
click **Add**.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Firefox">
|
||||
<Steps>
|
||||
1. Select the Firefox menu at the top right of the browser, and select
|
||||
**Settings**.
|
||||
1. On the left, select **Privacy & Security**. Scroll to the **Permissions**
|
||||
section and select the **Settings** button next to **Notifications**.
|
||||
1. Find the URL for your Zulip organization, and adjust the **Status**
|
||||
selector to **Allow**.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Desktop app">
|
||||
**Windows**
|
||||
|
||||
<Steps>
|
||||
1. Click the **Start** button and select **Settings**. Select **System**,
|
||||
and then **Notifications & actions**.
|
||||
1. Select **Zulip** from the list of apps.
|
||||
1. Configure the notification style that you would like Zulip to use.
|
||||
</Steps>
|
||||
|
||||
**macOS**
|
||||
|
||||
<Steps>
|
||||
1. Open your Mac **System Preferences** and select **Notifications**.
|
||||
1. Select **Zulip** from the list of apps.
|
||||
1. Configure the notification style that you would like Zulip to use.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Channel notifications](/help/channel-notifications)
|
||||
* [DMs, mentions, and alerts](/help/dm-mention-alert-notifications)
|
||||
* [Email notifications](/help/email-notifications)
|
||||
* [Mobile notifications](/help/mobile-notifications)
|
||||
* [Do not disturb](/help/do-not-disturb)
|
||||
31
starlight_help/src/content/docs/digest-emails.mdx
Normal file
31
starlight_help/src/content/docs/digest-emails.mdx
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: Weekly digest emails
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Zulip has a beta feature to send weekly emails to users who haven't
|
||||
been active for 5 or more days. These emails include details on new
|
||||
channels created and highlights of traffic (of subscribed channels) that
|
||||
can intrigue users.
|
||||
|
||||
This feature is disabled by default, but an organization administrator
|
||||
can enable it for their organization. Individual users can opt-out in
|
||||
organizations that have enabled it.
|
||||
|
||||
You can view a sample digest email for your account in HTML and
|
||||
plain-text formats by visiting `https://zulip.example.com/digest/`,
|
||||
if `https://zulip.example.com` is your Zulip server URL.
|
||||
|
||||
## Enable digest emails for an organization
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Automated messages and emails**, toggle
|
||||
**Send weekly digest emails to inactive users**.
|
||||
</FlattenedSteps>
|
||||
122
starlight_help/src/content/docs/direct-messages.mdx
Normal file
122
starlight_help/src/content/docs/direct-messages.mdx
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
title: Direct messages
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import DmFeedInstructions from "../include/_DmFeedInstructions.mdx";
|
||||
import FindDmConversationLeftSidebar from "../include/_FindDmConversationLeftSidebar.mdx";
|
||||
import MobileDirectMessages from "../include/_MobileDirectMessages.mdx";
|
||||
import SearchNoteForDmConversations from "../include/_SearchNoteForDmConversations.mdx";
|
||||
import SendDm from "../include/_SendDm.mdx";
|
||||
import ViewDmsLeftSidebar from "../include/_ViewDmsLeftSidebar.mdx";
|
||||
|
||||
import ChevronRightIcon from "~icons/zulip-icon/chevron-right";
|
||||
import SearchIcon from "~icons/zulip-icon/search";
|
||||
import UserListIcon from "~icons/zulip-icon/user-list";
|
||||
|
||||
**Direct messages (DMs)** are conversations with other users that happen outside
|
||||
of a [channel](/help/introduction-to-channels). They are convenient for 1:1 and
|
||||
small group conversations. Direct messages are private to conversation participants. Administrators may be
|
||||
able to [export](/help/export-your-organization) your DMs in a corporate
|
||||
organization, or [with your
|
||||
permission](/help/export-your-organization#configure-whether-administrators-can-export-your-private-data).
|
||||
|
||||
If you find yourself frequently conversing with the same person or group, it
|
||||
often works best to [create a private channel](/help/create-a-channel) for your
|
||||
conversations. This lets you organize your discussion into topics, and subscribe
|
||||
or unsubscribe people as needed.
|
||||
|
||||
## Send a DM
|
||||
|
||||
<SendDm />
|
||||
|
||||
## View your direct message conversations
|
||||
|
||||
There are a few different ways to view your DM conversations.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via left sidebar">
|
||||
<FlattenedSteps>
|
||||
<ViewDmsLeftSidebar />
|
||||
</FlattenedSteps>
|
||||
|
||||
<ZulipTip>
|
||||
To return to the channel list in the left sidebar, click the **back to
|
||||
channels** link above the search box.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via right sidebar">
|
||||
<Steps>
|
||||
1. If the [user list](/help/user-list) in the right sidebar is hidden, click the
|
||||
**user list** (<UserListIcon />) icon in
|
||||
the upper right to show it.
|
||||
1. Click on any user to view your 1:1 DM conversation.
|
||||
</Steps>
|
||||
|
||||
<ZulipTip>
|
||||
You can find a user by typing their name in the **Filter users** box at the
|
||||
top of the right sidebar.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via compose box">
|
||||
<Steps>
|
||||
1. Click the **New direct message** button at the bottom of the app, or use the
|
||||
<kbd>X</kbd> keyboard shortcut to [open the compose box](/help/open-the-compose-box).
|
||||
1. Start typing a user's name in the recipient bar, and select their name from
|
||||
the list of suggestions. Continue to add users for a group DM conversation.
|
||||
1. Click the highlighted **Go to conversation** (<ChevronRightIcon />) button at the top of the compose box, or use
|
||||
the <kbd>Ctrl</kbd> + <kbd>.</kbd> keyboard shortcut to view that DM
|
||||
conversation.
|
||||
</Steps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MobileDirectMessages />
|
||||
|
||||
1. Tap a recent DM conversation to view it.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Find a direct message conversation
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Via left sidebar">
|
||||
<SearchNoteForDmConversations />
|
||||
|
||||
<FindDmConversationLeftSidebar />
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Via search box">
|
||||
<Steps>
|
||||
1. Click the **search** (<SearchIcon />) icon in the top bar to open the [search
|
||||
box](/help/search-for-messages).
|
||||
1. Start typing a user's name. You'll be able to select DMs with that user
|
||||
from the list of suggestions.
|
||||
1. *(optional)* Continue to add users via the search box for a group DM
|
||||
conversation.
|
||||
</Steps>
|
||||
|
||||
<ZulipTip>
|
||||
You can also type `dm-including` in the search box to find all 1:1 and group
|
||||
DM conversations that include a particular user.
|
||||
</ZulipTip>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Go to direct message feed
|
||||
|
||||
You can see all your direct messages in one place.
|
||||
|
||||
<DmFeedInstructions />
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Typing notifications](/help/typing-notifications)
|
||||
* [Open the compose box](/help/open-the-compose-box)
|
||||
25
starlight_help/src/content/docs/disable-welcome-emails.mdx
Normal file
25
starlight_help/src/content/docs/disable-welcome-emails.mdx
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Disable welcome emails
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import AdminOnly from "../include/_AdminOnly.mdx";
|
||||
|
||||
<AdminOnly />
|
||||
|
||||
Zulip sends a handful of emails to new users, introducing them to the Zulip
|
||||
app, when they join an organization. If these emails don't make sense for
|
||||
your organization, you can disable them.
|
||||
|
||||
Note that regardless of this setting, users will receive an initial account
|
||||
email notifying them about their new Zulip account and how to log in.
|
||||
|
||||
## Disable welcome emails
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/organization-settings" />
|
||||
|
||||
1. Under **Onboarding**, toggle
|
||||
**Send emails introducing Zulip to new users**.
|
||||
</FlattenedSteps>
|
||||
@@ -0,0 +1,100 @@
|
||||
---
|
||||
title: DMs, mentions, and alerts
|
||||
---
|
||||
|
||||
import {Steps} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
|
||||
import TrashIcon from "~icons/zulip-icon/trash";
|
||||
|
||||
You can configure desktop, mobile, and email notifications for
|
||||
[direct messages (DMs)](/help/direct-messages),
|
||||
[mentions](/help/mention-a-user-or-group), and [alert
|
||||
words](#alert-words).
|
||||
|
||||
## Configure notifications
|
||||
|
||||
These settings will affect notifications for direct messages, group
|
||||
direct messages, mentions, and alert words.
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. In the **Notification triggers** table, toggle the settings for **DMs, mentions, and alerts**.
|
||||
</FlattenedSteps>
|
||||
|
||||
You can also hide the content of direct messages (and group direct
|
||||
messages) from desktop notifications.
|
||||
|
||||
<Steps>
|
||||
1. Under **Desktop message notifications**, toggle
|
||||
**Include content of direct messages in desktop notifications**.
|
||||
</Steps>
|
||||
|
||||
## Wildcard mentions
|
||||
|
||||
You can configure which types of notifications you want to receive for wildcard
|
||||
mentions (**@all**, **@everyone**, **@channel**) and **@topic** mentions
|
||||
separately from personal @-mentions.
|
||||
|
||||
<ZulipTip>
|
||||
These mentions don't trigger notifications in muted topics, unlike
|
||||
personal mentions. In muted channels, they are suppressed by default,
|
||||
but you can override this by [enabling](/help/channel-notifications#configure-notifications-for-a-single-channel)
|
||||
wildcard mention notifications in the specific channels where you'd like to receive them.
|
||||
</ZulipTip>
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/notifications" />
|
||||
|
||||
1. In the **Notification triggers** table, toggle the **@all** checkbox for
|
||||
**Channels** or **Followed topics**.
|
||||
</FlattenedSteps>
|
||||
|
||||
Additionally, you can override this configuration for individual
|
||||
channels in your [Channel settings](/help/channel-notifications), and
|
||||
administrators can [restrict use of wildcard
|
||||
mentions](/help/restrict-wildcard-mentions) in large channels.
|
||||
|
||||
## Alert words
|
||||
|
||||
Zulip lets you to specify case-insensitive **alert words or phrases** that send you a desktop
|
||||
notification whenever the alert word is included in a message. For example, you
|
||||
can set up an alert for the name of a product you're responsible for. Alerts for
|
||||
problematic words or phrases can help moderators respond quickly when there's an
|
||||
issue.
|
||||
|
||||
<ZulipTip>
|
||||
Alert words in messages you receive while the alert is enabled will be highlighted.
|
||||
</ZulipTip>
|
||||
|
||||
### Add an alert word or phrase
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/alert-words" />
|
||||
|
||||
1. Click **Add alert word**.
|
||||
1. Type a word or phrase, and click **Add**.
|
||||
</FlattenedSteps>
|
||||
|
||||
### Remove an alert word or phrase
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/alert-words" />
|
||||
|
||||
1. Click the **delete** (<TrashIcon />) icon next to the
|
||||
alert word that you would like to remove.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Desktop notifications](/help/desktop-notifications)
|
||||
* [Email notifications](/help/email-notifications)
|
||||
* [Mobile notifications](/help/mobile-notifications)
|
||||
* [Restrict wildcard mentions](/help/restrict-wildcard-mentions)
|
||||
* [Channel notifications](/help/channel-notifications)
|
||||
* [View your mentions](/help/view-your-mentions)
|
||||
* [Do not disturb](/help/do-not-disturb)
|
||||
61
starlight_help/src/content/docs/do-not-disturb.mdx
Normal file
61
starlight_help/src/content/docs/do-not-disturb.mdx
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: Do Not Disturb
|
||||
---
|
||||
|
||||
import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import ZulipNote from "../../components/ZulipNote.astro";
|
||||
import DesktopToggleSidebarTip from "../include/_DesktopToggleSidebarTip.mdx";
|
||||
|
||||
import BellIcon from "~icons/fa/bell";
|
||||
import BellSlashIcon from "~icons/fa/bell-slash";
|
||||
|
||||
The Zulip desktop app offers a **Do Not Disturb (DND)** mode. Turning on **Do Not
|
||||
Disturb** mode disables [desktop notifications](/help/desktop-notifications)
|
||||
across all the organizations you have
|
||||
[added](/help/logging-in#log-in-to-a-new-organization) to the Zulip desktop app.
|
||||
This can be convenient for avoiding interruptions during a meeting, or when you need
|
||||
time to focus on your work.
|
||||
|
||||
<ZulipNote>
|
||||
Other types of notifications will not be affected, including [mobile
|
||||
notifications](/help/mobile-notifications), [email
|
||||
notifications](/help/email-notifications), and [desktop
|
||||
notifications](/help/desktop-notifications) in the Zulip web app.
|
||||
</ZulipNote>
|
||||
|
||||
## Toggle Do Not Disturb
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop">
|
||||
<Steps>
|
||||
1. Click the **bell** (<BellIcon />) or **bell with a slash** (<BellSlashIcon />) icon in the **organizations sidebar** on the
|
||||
left. You can also select **Toggle Do Not Disturb** from the **Zulip** menu in
|
||||
the top menu bar.
|
||||
</Steps>
|
||||
|
||||
<DesktopToggleSidebarTip />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Check whether Do Not Disturb is enabled
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop">
|
||||
<Steps>
|
||||
1. If the **organizations sidebar** on the left shows a **bell** (<BellIcon />) icon, **Do Not Disturb** is disabled. If the **organizations
|
||||
sidebar** on the left shows a **bell with a slash** (<BellSlashIcon />) icon, **Do Not Disturb** is enabled, and you are not
|
||||
receiving desktop notifications.
|
||||
</Steps>
|
||||
|
||||
<DesktopToggleSidebarTip />
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Desktop notifications](/help/desktop-notifications)
|
||||
* [DMs, mentions, and alerts](/help/dm-mention-alert-notifications)
|
||||
* [Channel notifications](/help/channel-notifications)
|
||||
* [Email notifications](/help/email-notifications)
|
||||
* [Mobile notifications](/help/mobile-notifications)
|
||||
79
starlight_help/src/content/docs/edit-a-message.mdx
Normal file
79
starlight_help/src/content/docs/edit-a-message.mdx
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: Edit a message
|
||||
---
|
||||
|
||||
import {TabItem, Tabs} from "@astrojs/starlight/components";
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import ZulipTip from "../../components/ZulipTip.astro";
|
||||
import DependsOnPermissions from "../include/_DependsOnPermissions.mdx";
|
||||
import MessageActions from "../include/_MessageActions.mdx";
|
||||
import MessageLongPressMenu from "../include/_MessageLongPressMenu.mdx";
|
||||
|
||||
import EditIcon from "~icons/zulip-icon/edit";
|
||||
|
||||
Zulip makes it possible to edit the content of your messages, letting you fix
|
||||
typos, clarify your thoughts, etc. Organization administrators can
|
||||
[configure](/help/restrict-message-editing-and-deletion) who can edit messages,
|
||||
and set time limits for this action. However, even organization owners cannot
|
||||
edit the content of a message sent by another user.
|
||||
|
||||
<ZulipTip>
|
||||
You can also [edit message topics](/help/rename-a-topic).
|
||||
</ZulipTip>
|
||||
|
||||
## Edit a message
|
||||
|
||||
<DependsOnPermissions />
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Desktop/Web">
|
||||
<FlattenedSteps>
|
||||
<MessageActions />
|
||||
|
||||
1. Click the **pencil** (<EditIcon />) icon.
|
||||
1. Edit the content of the message.
|
||||
1. Click **Save**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Mobile">
|
||||
<FlattenedSteps>
|
||||
<MessageLongPressMenu />
|
||||
|
||||
1. Tap **Edit message**.
|
||||
1. Edit the content of the message.
|
||||
1. Tap **Save**.
|
||||
</FlattenedSteps>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
<ZulipTip>
|
||||
When you edit a message, everyone will see it labeled as **edited**. You
|
||||
can [view a message's edit history](/help/view-a-messages-edit-history)
|
||||
if it is [allowed](/help/restrict-message-edit-history-access) in your
|
||||
organization.
|
||||
</ZulipTip>
|
||||
|
||||
## Message notifications
|
||||
|
||||
If you edit a message to [mention a user or group](/help/mention-a-user-or-group),
|
||||
the newly mentioned users will receive notifications just as if they had been
|
||||
mentioned in the original message.
|
||||
|
||||
If you edit a message soon after sending it, the edit will be reflected in any
|
||||
[email notifications that have not yet been sent](/help/email-notifications#configure-delay-for-message-notification-emails).
|
||||
This includes canceling notifications for users whose
|
||||
[mention](/help/format-your-message-using-markdown#mention-a-user-or-group) was
|
||||
removed or changed from a regular mention to a
|
||||
[silent mention](/help/mention-a-user-or-group#silently-mention-a-user).
|
||||
|
||||
If you [delete the content of a message](/help/delete-a-message#delete-message-content),
|
||||
any pending email notifications for that message will be canceled, including
|
||||
[mentions and alerts](/help/dm-mention-alert-notifications).
|
||||
|
||||
## Related articles
|
||||
|
||||
* [View, copy, and share message content as Markdown](/help/view-the-markdown-source-of-a-message)
|
||||
* [Restrict message editing and deletion](/help/restrict-message-editing-and-deletion)
|
||||
* [Delete a message](/help/delete-a-message)
|
||||
30
starlight_help/src/content/docs/edit-your-profile.mdx
Normal file
30
starlight_help/src/content/docs/edit-your-profile.mdx
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: Edit your profile
|
||||
---
|
||||
|
||||
import FlattenedSteps from "../../components/FlattenedSteps.astro";
|
||||
import NavigationSteps from "../../components/NavigationSteps.astro";
|
||||
|
||||
By default, your profile includes your name, email, the date you joined, and
|
||||
when you were last active.
|
||||
|
||||
Organization administrators can also
|
||||
[add custom profile fields](/help/custom-profile-fields#add-a-custom-profile-field). Custom profile
|
||||
fields are always optional, and will not appear in your profile unless you
|
||||
fill them out.
|
||||
|
||||
### Edit your profile
|
||||
|
||||
<FlattenedSteps>
|
||||
<NavigationSteps target="settings/profile" />
|
||||
|
||||
1. Edit the fields under **Profile**.
|
||||
</FlattenedSteps>
|
||||
|
||||
## Related articles
|
||||
|
||||
* [Set up your account](/help/set-up-your-account)
|
||||
* [Change your name](/help/change-your-name)
|
||||
* [Change your email address](/help/change-your-email-address)
|
||||
* [Change your profile picture](/help/change-your-profile-picture)
|
||||
* [View someone's profile](/help/view-someones-profile)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user