Repository: zulip/zulip

Issue:
Remove the "Show user list on left sidebar in narrow windows" display option
As [discussed on CZO](https://chat.zulip.org/#narrow/stream/101-design/topic/user.20list.20in.20left.20sidebar.20option/near/1460450), we have a "Show user list on left sidebar in narrow windows" display option, which puts the user list at the bottom of the left sidebar when the window is too narrow to display it on the right.

This option is not commonly used, and does not work very well with the addition of the new PMs section in the left sidebar. (Having two scrollbars in the sidebar looks quite awkward.) The new PMs section also addresses some of the use cases for always keeping the Users list visible, even in narrow windows.

We should therefore remove the "Show user list on left sidebar in narrow windows" display option (including all the code for implementing that setting). The help center page for this feature (https://zulip.com/help/move-the-users-list-to-the-left-sidebar) and any links to it should be dropped.

However, to make this decision reversible, we should keep (for now) the data for which users have turned on this feature.


Discussion:
Hello @zulip/server-sidebars members, this issue was labeled with the "area: left-sidebar" label, so you may want to check it out!

<!-- areaLabelAddition -->

@amanagr It would be great if you could take this one on!

Resolving patch:
diff --git a/zerver/models.py b/zerver/models.py
--- a/zerver/models.py
+++ b/zerver/models.py
@@ -1485,10 +1485,13 @@ class UserBaseSettings(models.Model):
     created after the change.
     """
 
-    # UI settings
+    ### Generic UI settings
     enter_sends = models.BooleanField(default=False)
 
-    # display settings
+    ### Display settings. ###
+    # left_side_userlist was removed from the UI in Zulip 6.0; the
+    # database model is being temporarily preserved in case we want to
+    # restore a version of the setting, preserving who had it enabled.
     left_side_userlist = models.BooleanField(default=False)
     default_language = models.CharField(default="en", max_length=MAX_LANGUAGE_ID_LENGTH)
     # This setting controls which view is rendered first when Zulip loads.


Test patch:
diff --git a/docs/testing/manual-testing.md b/docs/testing/manual-testing.md
--- a/docs/testing/manual-testing.md
+++ b/docs/testing/manual-testing.md
@@ -486,7 +486,6 @@ Do these tasks as Cordelia.
 - Display settings
   - Right now, these unfortunately require reloads to take effect.
   - Default language (change to Spanish)
-  - Show user list on left sidebar in narrow windows (verify by making window thinner)
   - 24-hour time (and then test going back to AM/PM)
 - Notifications
   - Stream message
diff --git a/frontend_tests/node_tests/dispatch.js b/frontend_tests/node_tests/dispatch.js
--- a/frontend_tests/node_tests/dispatch.js
+++ b/frontend_tests/node_tests/dispatch.js
@@ -743,11 +743,6 @@ run_test("user_settings", ({override}) => {
     dispatch(event);
     assert_same(user_settings.default_language, "fr");
 
-    event = event_fixtures.user_settings__left_side_userlist;
-    user_settings.left_side_userlist = false;
-    dispatch(event);
-    assert_same(user_settings.left_side_userlist, true);
-
     event = event_fixtures.user_settings__escape_navigates_to_default_view;
     user_settings.escape_navigates_to_default_view = false;
     let toggled = [];
diff --git a/frontend_tests/node_tests/i18n.js b/frontend_tests/node_tests/i18n.js
--- a/frontend_tests/node_tests/i18n.js
+++ b/frontend_tests/node_tests/i18n.js
@@ -100,7 +100,6 @@ run_test("tr_tag", ({mock_template}) => {
             avatar_url: "http://example.com",
         },
         user_settings: {
-            left_side_userlist: false,
             twenty_four_hour_time: false,
             enable_stream_desktop_notifications: false,
             enable_stream_push_notifications: false,
diff --git a/frontend_tests/node_tests/lib/events.js b/frontend_tests/node_tests/lib/events.js
--- a/frontend_tests/node_tests/lib/events.js
+++ b/frontend_tests/node_tests/lib/events.js
@@ -898,13 +898,6 @@ exports.fixtures = {
         value: true,
     },
 
-    user_settings__left_side_userlist: {
-        type: "user_settings",
-        op: "update",
-        property: "left_side_userlist",
-        value: true,
-    },
-
     user_settings__presence_disabled: {
         type: "user_settings",
         op: "update",