Commit Graph

9666 Commits

Author SHA1 Message Date
PieterCK
ec3097bbb7 export_modal: Add missing whitespace between translate blocks. 2025-11-11 08:59:25 -08:00
Sayam Samal
14161ad7f0 invite: Fix user invite user modal tab toggle hidden bug.
The invite user modal's tab toggler was being hidden when all the steps
mentioned in the invite tips banner were fulfilled. This happened due
to an error in logic in commit 8a06a6e108
which returned early in the common codepath, when the banner was not to
be shown, preventing the tab toggler from being initialized & rendered.
2025-11-10 16:05:20 -08:00
Aman Agrawal
7a3a599197 left_sidebar: Fix unable to type some hotkeys in expanded topic search.
`views_util.is_in_focus` didn't account for pill elements, which
resulted in expanded topic search in left sidebar being bugged.

Fixed by checking for `focused_element.isContentEditable` which
is always true for focused pill input elements.
2025-11-10 09:11:23 -08:00
Anders Kaseorg
b571e33c54 typos: Fix typos caught by typos.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-11-09 22:33:12 -08:00
Sayam Samal
ec18e84ba5 invite: Migrate email invite success banner to new banner component.
Some checks failed
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
2025-11-07 17:40:06 -08:00
Sayam Samal
6125faff05 dev: Migrate invite modal's email access info to the new banner system. 2025-11-07 17:40:06 -08:00
Sayam Samal
8a06a6e108 invite: Migrate invite tip banners to the new banner component.
This commit merges the previous invite tips banner into the a single
banner using the new banner component system.
2025-11-07 17:40:06 -08:00
Sayam Samal
77e8731962 invite: Migrate generated invite link banner to new banner component. 2025-11-07 17:40:06 -08:00
Sayam Samal
14deffe350 invite: Consolidate all banners in invite modal to a common container. 2025-11-07 17:40:06 -08:00
Sayam Samal
8b0ec42d17 buttons: Fix line-height for icon-only action buttons.
The default height for the action buttons equalled to 28px at 16px/1em
due to the line-height of 1.25 applied to the label element inside
the button. However, the icons inside the button did not have any
line-height specified, which made the icon-only action buttons slightly
shorter than the buttons with labels. This commit adds the same
line-height to the icons inside action buttons to ensure a consistent
height across all action buttons.

This commit also modifies the padding for the inline topic edit buttons
to counter the increased line-height of the icons, ensuring these
buttons fit the receipient bar.
2025-11-07 17:40:06 -08:00
apoorvapendse
081c5cfe4a compose: Keep composebox closed when reply not allowed.
This fixes the weird behavior that occurs when you click
on some message belonging to a stream where you cannot
post.
Currently, this open the stream recipient dropdown filter
which is confusing.

With this fix, we avoid opening the composebox on clicking
some message belonging to a stream where the user is not
allowed to post.

Using the `R` hotkey triggers a toast stating that
the user cannot reply to that conversation.

And pressing `C` opens up the composebox in the
"Start New Conversation" state with the stream filter
dropdown open.

Fixes: #35866.
Discussion: https://chat.zulip.org/#narrow/channel/9-issues/topic/Recipient.20filter.20appears.20on.20clicking.20some.20message
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-11-07 17:29:56 -08:00
Aman Agrawal
db7bd826a9 inbox: Fix left missing list of topics for old channels.
Since we have the complete list of topics of the channel when
showing list of topics view for the channel, we update
the channel in left sidebar as the new fetched data.

This provides a nicer experince for old channels for which we
don't have any messages to extract any topic info from.
2025-11-07 17:26:01 -08:00
Pratik Chanda
b4b5bb1ec0 compose: Add a + button for adding DM recipients.
This commit adds a `+` button inside compose-direct-recipient box
which on click moves focus to private_message_recipient and opens
up the dm recipient typeahead.

Fixes: zulip#34848.
2025-11-07 17:00:48 -08:00
Pratik Chanda
fe1134c495 compose: Add class for clear topic button in compose.
We use `#recipient_box_clear_topic_button` to apply styles to the
clear topic button. We may end up adding this button to separate
places as well. It will be better to scope the styles to a common
class name and apply it throughout all buttons.
2025-11-07 17:00:48 -08:00
Pratik Chanda
0ee2e4e635 composebox_typeahead: Store dm recipient typeahead instance.
This commit stores private_message_recipient typeahead instance
and exports the instance.
2025-11-07 17:00:48 -08:00
Evy Kassirer
f543ce32bf stream_list: Collapse folders with no active or unmuted channels. 2025-11-07 16:48:07 -08:00
Evy Kassirer
709f1faa93 stream_list_sort: Sort folders with no active channels to the bottom. 2025-11-07 16:26:50 -08:00
Aman Agrawal
86df562eab filter: Only allow specific string values as operator.
This will help us build for the next step where we specifiy
possible operand type for each operand different from just being
a string value.
2025-11-07 16:20:49 -08:00
Lauryn Menard
4934e8e3c0 template-styles: Remove upgrade-tip and upgrade-or-sponsorship-tip.
Removes the CSS rules for upgrade-or-sponsorship-tip and upgrade-tip
as they no longer are in use.

The last use of upgrade-or-sponsorship-tip was removed in commit
a93a015b2.

The last use of upgrade-tip was removed in commit 021af590e.
2025-11-07 16:16:51 -08:00
Aman Agrawal
3a8b4959a9 people: Improve fetch users logic to help club mutiple fetch requests.
This will help us club various fetch user calls especially during
initial app load to avoid us hitting API rate limits.

Also, added inifite retry to fetch user on failure.

We do check if the user is in `valid_user_ids` before each retry,
so we will know if the user becomes invalid.
2025-11-07 16:14:17 -08:00
Aman Agrawal
9d5b67c583 peer_data: Provide retry time in miliseconds for setTimeout. 2025-11-07 16:14:17 -08:00
Aman Agrawal
a71b666151 people: Remove test wrapper. 2025-11-07 16:14:17 -08:00
Aman Agrawal
71153535d6 message_edit_history: Better utilize empty space next to media.
We fill the empty text after media with `Link:` text when there
is enough space.
2025-11-07 15:54:10 -08:00
Aman Agrawal
c516e7fccf message_edit_history: Apply highlight colors to links.
This avoids added or deleted links from looking werid due to
changed background color.
2025-11-07 15:54:10 -08:00
Karl Stolley
3748587efb user-pill: Better align display-only pills with creator text. 2025-11-07 14:21:51 -08:00
Karl Stolley
c85fe706e7 user-pill: Correctly render deactivated icons on display pills. 2025-11-07 14:21:51 -08:00
Karl Stolley
679f1a5df4 user-pill: Correctly render bot icons on display pills. 2025-11-07 14:21:51 -08:00
Karl Stolley
457b80ece6 user_groups: Prepare properly sized group icon.
This removes kludgy font-size adjustments on the group
icon, whose path was previously smaller than the 16x16
viewbox.

By adjusting the icon to take up the full width, it is
no longer necessary to fiddle with the icon's size, in
keeping with the app-wide move to 16x16 icons.

That simplifies some headache-inducing sizing and
calculations on the typeahead as well.
2025-11-07 14:21:51 -08:00
Karl Stolley
b34849a90f user-pill: Present purple pills across the UI.
This commit ensures that the pill color is consistently purple across
the app including the display only pills.

Pills appearing inside of .person_picker elements also receive a hover
color.

Display-only pills do not take a border when clicked.

Fixes: #34815.
2025-11-07 14:21:51 -08:00
Maneesh Shukla
ac9fd5794c user-pill: Add pill-image-border element.
Previously, the pill image was hiding the box shadow of the pill upon
hovering.

We correct this by placing the same .pill-image-border element used
in other pills in the app.

Fixes part of #34815.
2025-11-07 14:21:51 -08:00
Maneesh Shukla
a3c0c1bbd8 user-pill-container: Remove padding and border.
Since the pill-container containing display_only_pills
will never be a container with more than one pill, it is sufficient
to override the default pill-container styles.

Fixes part of #34815.
2025-11-07 14:21:51 -08:00
Karl Stolley
d84469ab4c input-pill: Fix icon misalignment on over-generic selector.
The .zulip-icon selector replaced here was introduced in
6f4d14ddde, which was
targeted at channel privacy icons.

This fixes poor alignment especially noticeable on the
closing X icons on input pills, e.g., in the Groups
permissions area.
2025-11-07 14:21:51 -08:00
Shubham Padia
59ce057519 integrations: Rename functions along with other refactors.
- We rename a bunch of functions in integrations.ts to better reflect
  the work they do after integrations page started being rendered server
  side.
- Use .search_input class instead of input[type="text"] for integrations
  searchbar.
- Use elif instead of if in build_integration_doc_html when checking
  the type of an integration.

Co-authored-by: Niloth P <20315308+Niloth-p@users.noreply.github.com>
2025-11-07 13:29:34 -08:00
Shubham Padia
40dedace08 integrations: Change URL scheme for categories and /doc/ page.
We redirect existing URLs to the new URLs. We want to use
`/integrations/category/{category_slug}` for categories and
`/integrations/{integration_name}` instead of
`/integrations/doc/{integration_name}` for individual integrations page.
2025-11-07 13:29:34 -08:00
Shubham Padia
a29da706a7 integrations: Integrations page should no longer be an SPA.
Decision made in https://chat.zulip.org/#narrow/channel/19-documentation/topic/integrations.20docs.20per-page.20info/near/2268569

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

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

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

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

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

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

We have a few integrations with legacy set to true. We used to set
their display to none in the CSS for the catalog page and we used to
remove that legacy class in integrations.ts for the individual doc page.
We remove legacy integrations from `visible_integrations` now, while the
individual doc page of the legacy integration works just fine without
the use of `legacy` class anywhere.
2025-11-07 13:29:34 -08:00
PieterCK
0b063878d3 settings_export: Warn if some accounts will be unusable.
Since it is now possible to generate export with no usable owner
accounts, this adds a couple of warning notes in the "Start export?"
confirmation modal:

  - A note indicating the number of unusable user accounts after export
→ import due to inaccessible user emails.

  - If there are any owner/admin accounts in that list, an additional
note will display their names.

Fixes #34275.
2025-11-07 12:53:18 -08:00
Aman Agrawal
7387d75d5d recent_view: Fix incompletely updated UI after topic edits.
If the new message for topic edit arrives before the topic update
event, the recent view ui ends up in a broken state due to the
way we process these events.

Best way to avoid this bug and similar race bugs of this kind is
just to do a complete rerender.
2025-11-07 10:15:16 -08:00
Sahil Batra
8d91b7add6 modals: Fix styling of non-editable text input fields.
This commit updates the CSS to use the background color
as per latest designs for non-editable text input in
modals along with setting the opacity to 0.7 for them.

This helps in maintaining clear distinction between
which text inputs are editable and which are not.
2025-11-07 10:13:58 -08:00
Alya Abbott
a8a420b13b portico: Tweak homepage section. 2025-11-07 10:01:29 -08:00
Sahil Batra
663dfc3ff9 settings: Refactor code to enable and disable group settings.
Some checks failed
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
This commit adds enable_group_permission_setting function,
similar to already existing disable_group_permission_setting,
which is used to enable the group setting pill container.

This commit also updates the code to use
disable_group_permission_setting where we can and were not
using before.
2025-11-06 11:49:28 -08:00
Sahil Batra
d10ba46d76 settings: Refactor code to update default stream and privacy UI.
This commit updates the code to live update stream private stream
options and default stream option in stream settings UI to use
separate functions.

Previously, a single function was used in most of the cases which
updated the default stream option and then called the function to
update private stream options. This is a preparatory commit
to help organize the code for disabling the private stream options
based on the other conditions which does not affect default stream
option.
2025-11-06 11:49:28 -08:00
Sahil Batra
adeee80808 stream-settings: Fix live updating of stream privacy options.
There was a bug where the private stream options were live
updated when a user gained access to create private streams
even if the stream was set as a default stream which cannot
be changed to private.

This was because update_private_stream_privacy_option_state
used "false" as default for "is_default_stream" parameter.
This commit updates the code to compute is_default_stream
value in update_private_stream_privacy_option_state itself
to avoid any such bugs and this also helps in refactoring
in further commits.
2025-11-06 11:49:27 -08:00
Tim Abbott
1192cb740e settings: Clarify disable_group_permission_setting parameter.
Multiple containers are supported.
2025-11-06 11:49:27 -08:00
Pratik Chanda
24c7a73775 topic_list: Fix resolved topic filter persistent even when not in view.
Going to `show more topics` and selecting a topic resolved filter
pill and then navigating back to main left sidebar would result in
the topic list still filtering based on the previously selected
resolved filter.

This commit fixes this behaviour by clearing the topic filter
status on zooming out.
2025-11-06 11:18:34 -08:00
Pratik Chanda
cf7a76383d css: Add gap in subscribe widget in user profile channel modal.
This commit adds a 10px gap in user_profile_subscribe_widget so that
there is space between the channel dropdown and subscribe button
in narrow window.
2025-11-05 16:29:58 -08:00
Pratik Chanda
6ca112024d user_profile: Redesign group membership list to scrollable container.
Earlier, group membership list for users in user_profile was rendered
using table.

This commit redesigns group membership to a scrollable container.

Fixes: zulip#34807.
2025-11-05 16:29:58 -08:00
Pratik Chanda
7d754e92ff user_profile: Redesign subscribed channels to scrollable list.
Earlier, subscribed channels in user_profile channels tab was
rendered using table.

This commit redesigns the subscribed channels list to a
scrollable container list.

Fixes part of zulip#34807.
2025-11-05 16:29:58 -08:00
Pratik Chanda
dadf0560e6 css: Fix user profile groups tab missing css selector.
Several of the styles in this block were intended to apply to both
similar panels of the user profile modal.
2025-11-05 16:29:58 -08:00
Pratik Chanda
95117fb82c css: Use variables to set height and margin in user profile modal.
We use variables to set the values which help in calculating
different element dimensions based on these values.
2025-11-05 16:29:58 -08:00
Pratik Chanda
bc2394a4e3 css: Convert rules to em values for stream/group list in user profile.
This allows the spacing to scale with the font size setting.
2025-11-05 16:29:58 -08:00