مرحباً بالفريق،
لقد قدمت طلب سحب (PR) لتحديث تكامل زوليب (Zulip) في discourse/discourse:
main ← vijayho1:zulip-update-terminology
opened 09:33AM - 10 Mar 26 UTC
## Zulip: Update terminology and add per-thread topic mapping
### Terminology… update
- Replaces all occurrences of `stream` and `subject` with `channel` and `topic` respectively in user-facing parts
of the Zulip integration, to match current Zulip terminology.
### Per-thread topic mapping
- Makes the `topic` field optional in channel settings.
- When a fixed topic is configured, it is used as before.
- When the topic field is left blank, the Discourse thread title is
automatically used as the Zulip topic, mapping each Discourse thread to its own Zulip topic.
### Optional parameter support in Channel model
- Updates `channel.rb` to support `required: false` on channel parameters,
skipping validation for optional parameters when left blank.
- Updates `edit-channel.gjs` frontend validation to allow saving a channel
when optional parameters are left blank.
## Motivation
Zulip has updated its terminology: `streams` are now called `channels` and `subjects` are now called `topics`. This PR updates the integration to reflect that.
The per-thread topic mapping was requested in this [comment](https://meta.discourse.org/t/discourse-chat-integration/66522/309).
This PR is part of the work tracked in: [#33769](https://github.com/zulip/zulip/issues/33769#issuecomment-4020150075)
## Testing
- Syntax verified via `ruby -c` on all changed files.
- Spec file updated to reflect new keys (`channel`, `topic`) and includes
tests for both fixed topic and thread-title fallback behavior,
with request body assertions to verify the correct topic is sent.
- Full test suite requires a Discourse development environment to run.
هذا جزء من العمل المتتبع في مشروع زوليب (Zulip):
opened 11:42AM - 03 Mar 25 UTC
help wanted
in progress
documentation (integrations)
### Update the Discourse integration:
1. Update the following terminology in all… the user-facing parts of the Discourse-Zulip integration:
1. Replace all occurrences of the term "subject" with "topic".
2. Replace all occurrences of the term "stream" with "channel".
2. Support mapping each Discourse thread to its own Zulip topic, in a reasonable way, as requested in [this comment here](https://meta.discourse.org/t/set-up-zulip-notifications-using-the-chat-integration-plugin/68501).
This requires submitting a PR to [discourse/discourse-chat-integration](https://github.com/discourse/discourse-chat-integration), written in Ruby.
Relevant files to update:
- [lib/discourse_chat_integration/provider/zulip/zulip_provider.rb](https://github.com/discourse/discourse-chat-integration/blob/main/lib/discourse_chat_integration/provider/zulip/zulip_provider.rb)
- [spec/lib/discourse_chat_integration/provider/zulip/zulip_provider_spec.rb](https://github.com/discourse/discourse-chat-integration/blob/main/spec/lib/discourse_chat_integration/provider/zulip/zulip_provider_spec.rb)
You would need access to a Discourse server so that you can test the integration.
For the integration's setup instructions, refer to the [integration doc](https://zulip.com/integrations/doc/discourse).
### Update the documentation:
Once the PR has been merged, the following documentation pages also need to be updated.
- Update the [Zulip integration doc](https://zulip.com/integrations/doc/discourse) to update the setup instructions following the merge, by editing [this file](https://github.com/zulip/zulip/tree/main/templates/zerver/integrations/discourse.md).
- Get Discourse to update [their documentation](https://meta.discourse.org/t/set-up-zulip-notifications-using-the-chat-integration-plugin/68501). Contributors do not have the permission to directly edit the doc, or submit PRs for updating the doc. One would need to compile the list of changes, and get a Discourse team member to update the doc.
- In addition to the above changes made to the codebase, the doc also needs to be updated to use a more recent screenshot example (like the one used in the [Zulip integration doc](https://zulip.com/integrations/doc/discourse)), and being linked to the Zulip integration doc for the setup instructions involving Zulip.
- Once the mapping of Discourse threads to Zulip topics has been added, the [Chat integration instructions](https://meta.discourse.org/t/discourse-chat-integration/66522) needs to be updated too. Especially, update the comparison table and lines like "(Note that at this time, only the Slack integration implements threads.)" once Zulip also supports this, since a Zulip topic is better suited for Discourse threads than Slack threads are.
#### References:
For more on integrations, refer to these docs - [Integrations Overview](https://zulip.com/api/integrations-overview), and [Non-webhook integrations](https://zulip.com/api/non-webhook-integrations).
The Discourse integration is a plugin integration with all the code being located in [discourse/discourse-chat-integration](https://github.com/discourse/discourse-chat-integration).
يشمل طلب السحب ما يلي:
تحديث المصطلحات: stream ← channel، و subject ← topic لتتوافق مع
المصطلحات الحالية لزوليب (Zulip) (أعاد زوليب تسمية هذه العناصر في زوليب سيرفر 10.0)
تعيين المواضيع لكل خيط (Thread): عندما يتم ترك حقل الموضوع فارغاً، يتم استخدام
عنوان خيط ديسكورس (Discourse thread title) تلقائياً كموضوع زوليب (Zulip topic)،
مما يخصص كل خيط ديسكورس لموضوع زوليب خاص به
دعم المعاملات الاختيارية في channel.rb و edit-channel.gjs
تحديث ملف الترحيل (Migration file)
سأكون ممتناً للمراجعة عندما يتسنى لكم الوقت!
شكراً جزيلاً!