Commit Graph

20469 Commits

Author SHA1 Message Date
0fcb832244 DEV: Setup deprecation workflow earlier (#30768)
In 0ed4b09527857d7751dba7fb2d765e08bf46a65e, this code was moved into
app.js, which means it actually ends up running after all the other
imports have been completed. That's too late, and some deprecations are
triggered before that.

This commit moves `setupDeprecationWorkflow` back into its own module,
with a 'side effect only' import from `app.js`.
2025-01-14 20:17:13 +00:00
c25e53db7e FIX: Full page search result infinite scroll with added results (#30771) 2025-01-14 13:23:08 -06:00
1b19bf690a DEV: Wrap full page search 'no results' container in div (#30770)
We had no container, this allows folks to customize the styling :)
2025-01-14 13:14:55 -06:00
473e37e7b3 Revert "Build(deps-dev): Bump glob from 10.4.5 to 11.0.1 (#30710)" (#30767)
This reverts commit f8c493f3c4ee5e38dff460288996c780a6458e29.
2025-01-14 15:32:50 +01:00
eb64db828e DEV: move d-composer-position to setupEditor (#30717)
Small refactor to move the `DComposerPosition` component to be a
function used on the `setupEditor` editor lifecycle, so it's
recycled/re-added whenever the editor component is mounted.

Additionally, we reference the passed `editor` instead of the
`event.target`, allowing a `contentEditable` editor (which is a DOM
tree) to still work with the positioning hack.
2025-01-14 10:28:46 -03:00
7330cfa76a UX: check category permission before new topic quote (#30753)
Reported here:
https://meta.discourse.org/t/quoting-a-closed-topic-prefills-category-in-composer-that-should-be-off-limits/260009

Currently, if someone tries to quote a topic they don't have permission
to reply to, we'll open a new topic composer with the quote so they can
"continue the discussion". When doing this, we populate the current
category, even if the user doesn't have permission to post in it.

This is misleading, as when the user attempts to submit their topic they
get an error because they lack the category permissions.

This change checks the category permissions before populating it.
2025-01-14 08:28:16 -05:00
f8c493f3c4 Build(deps-dev): Bump glob from 10.4.5 to 11.0.1 (#30710)
Bumps [glob](https://github.com/isaacs/node-glob) from 10.4.5 to 11.0.1.
-
[Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
-
[Commits](https://github.com/isaacs/node-glob/compare/v10.4.5...v11.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-14 13:47:05 +01:00
6cb8b576d0 DEV: Modernize topic-status (#30754)
Deprecates `TopicStatusIcons`. Use "after-topic-status" plugin outlet instead.

Replaces both the widget and gjs header implementations with a new gjs topic-status component.
2025-01-14 13:46:14 +01:00
12c412acc6 Build(deps): Bump @babel/standalone from 7.26.5 to 7.26.6 in the babel group (#30751)
Bumps the babel group with 1 update:
[@babel/standalone](https://github.com/babel/babel/tree/HEAD/packages/babel-standalone).


Updates `@babel/standalone` from 7.26.5 to 7.26.6
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/babel/babel/commits/v7.26.6/packages/babel-standalone)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-14 13:35:58 +01:00
3e14f1c9f9 DEV: add FontAwesome 6 upgrade to deprecation warnings handler (#30760)
Our test suite now shows no deprecation counts from official
themes/plugins for the FA6 upgrade, and we've done a few rounds of
removing these in direct references & known settings, so it's time to
enable the admin banner.
2025-01-14 17:55:29 +08:00
33ea3599c2 FIX: prevent multiple requests when clicking drafts trigger (#30736)
Adds a loading state to prevent multiple requests when clicking the
drafts menu button.

We are also making a very slight adjustment to button spacing (needed
for both desktop and mobile).
2025-01-14 11:37:36 +04:00
dbc9fbfd8b UX: Use DPageHeader on the Components page (#30762)
This change updates the header of the admin Components page to be more consistent with the rest of the admin UI.

The Themes and Components pages share the same templates, so this change switches the header based on which tab is active.
2025-01-14 17:58:08 +11:00
dff1327eba UX: Remove flat icons from wizard step two (#30761)
### What's changed?
This PR removes the flat icons from wizard step 2, as they are not used
elsewhere in the wizard. Keeping the steps consistent with the existing
style improves visual alignment and avoids unnecessary elements.

### Before
<img width="511" alt="image"
src="https://github.com/user-attachments/assets/9e8b6f46-7c35-433b-9f5e-511579bc4768"
/>


### After
<img width="514" alt="image"
src="https://github.com/user-attachments/assets/028e52af-9777-4733-8ff4-1daab5b39e22"
/>
2025-01-13 23:04:42 -07:00
36bbe0a0a6 UX: Use DPageHeader on the Themes page (#30759)
This change updates the header of the admin Themes page to be more consistent with the rest of the admin UI.
2025-01-14 17:00:15 +11:00
dc0bf90069 UX: Apply admin UI guidelines to Reports pages (#30684)
Applies the admin UI guidelines from
https://meta.discourse.org/t/creating-consistent-admin-interfaces/326780
to the reports list and single report page for admins.


![image](https://github.com/user-attachments/assets/2431901f-0225-4658-b408-ab0865d022e6)

![image](https://github.com/user-attachments/assets/6f9e531b-8fec-405f-8429-151fd261ee2c)

---------

Co-authored-by: Ella <ella.estigoy@gmail.com>
2025-01-14 13:22:08 +10:00
f9af19bca9 DEV: remove viewingActionType mixin (#30692)
This removes the viewing action type mixin. It was previously setting a
property `userActionType` on the user controller but this property was
actually removed since https://github.com/discourse/discourse/pull/4771
(Mar 2017) and doesn't seem referenced anywhere else.

It also sets the same property on the user activity controller and this
is a 1-liner so I've opted to duplicate that across the routes that need
this.
2025-01-14 09:43:06 +08:00
f9a000ff9f UX: add placeholder title for drafts (#30747)
Adds a placeholder title for drafts that don't have a saved title.
2025-01-14 01:24:12 +04:00
461dcf44d0 DEV: Add topic-list-item-mobile-avatar wrapper outlet (#30743) 2025-01-13 20:10:37 +00:00
11cc931a64 DEV: Improve composer positioning on tablets (#30745)
Followup to 07e5f89.

See report https://meta.discourse.org/t/-/346876
2025-01-13 15:04:06 -05:00
828c646aab DEV: Add latest-topic-list-item-class value transformer (#30718)
Add transformer to enable adding classes to the component `LatestTopicListItem`
2025-01-13 15:39:00 -03:00
d2ee0609a6 DEV: Remove discourse-common package (#30741)
All modules have now been migrated to `discourse/`
2025-01-13 16:01:51 +00:00
637a6d7928 DEV: before-panel-body outlet (#30739)
We already have after-panel-body outlet and I will need this one for
`*********-******`.
2025-01-13 16:54:04 +01:00
98fa42f2e2 DEV: Move discourse-common/config/environment to discourse/lib (#30738) 2025-01-13 15:29:26 +00:00
8535a8595c FIX: Improve sidebar invite link highlight persisting, link tabbing and activation behavior (#30734) 2025-01-13 09:21:06 -06:00
5a565105c9 DEV: Move discourse-common/resolver to discourse/resolver (#30737)
`discourse-common` was created in the past to share logic between the
'wizard' app and the main 'discourse' app. Since then, the wizard has
been consolidated into the main app, so the separation of
`discourse-common` is no longer useful.

This commit moves `discourse-common/resolver` into `discourse/resolver`,
adds shims for the imports, and updates existing uses in core.
2025-01-13 14:08:25 +00:00
0ed4b09527 DEV: Move discourse-common/(utils|lib) to discourse/lib (#30733)
`discourse-common` was created in the past to share logic between the
'wizard' app and the main 'discourse' app. Since then, the wizard has
been consolidated into the main app, so the separation of
`discourse-common` is no longer useful.

This commit moves `discourse-common/(lib|utils)/*` into
`discourse/lib/*`, adds shims for the imports, and updates existing
uses in core.
2025-01-13 13:02:49 +00:00
03119312b5 FIX: ensure GroupChooser works with localized group names (#30593)
The "Tag Groups Form" component was using group names to handle
permissions. This works just fine when the default locale is "English"
but breaks as soon as it's changed to a different locale.

The fix is to use the group id's for handling the permissions instead of
the group name.

Reported in https://meta.discourse.org/t/221849
2025-01-13 11:29:04 +01:00
79b68bc32b FIX: show both group's full name & name when they differ (#30672)
In the groups page (/g) where we list all the groups, we were only
showing one group "name" per group. If a full name was set, we would
show it, otherwise we would show the group's "display name".

This was somewhat inconsistent because we only show the group's names
in all the various controls we use to filter/search by group.

Plus we used a slightly different logic when displaying the names of a
group on the "group page".

So I updated the "GroupsInfo" component to show either 1 or 2 names
depending on whether a full name is set, and it's different from the
display name or the name of the group.

I used this component in the "group page" so the names will be
consistent between the "groups page" and the "group page".

Also renamed the "GroupsInfo" component to "GroupInfo" since it only
ever deals with 1 group at a time.

Ref - https://meta.discourse.org/t/-/345415

---

## When "full name" differs from the "group's name"

(cf. `@admins`, `@staff`, and `@moderators`)

<img width="1250" alt="Screenshot 2025-01-09 at 15 56 29"
src="https://github.com/user-attachments/assets/f8a0ecdd-2715-40d9-a1ed-26288f638d9f"
/>

## When "full name" is the same as the "group's name"

When `unicode` is allowed in usernames, then the group's full name is
the same as the group's name, so we only show one name.

<img width="1249" alt="Screenshot 2025-01-09 at 16 25 53"
src="https://github.com/user-attachments/assets/03438fbd-04f1-4672-91d5-bd6af2b32475"
/>
2025-01-13 11:28:29 +01:00
979325c500 DEV: Move discourse-common/ helpers to discourse/ (#30728)
`discourse-common` was created in the past to share logic between the
'wizard' app and the main 'discourse' app. Since then, the wizard has
been consolidated into the main app, so the separation of
`discourse-common` is no longer useful.

This commit moves `discourse-common/helpers/*` into
`discourse/helpers/*`, removes `discourse-common` from the Ember
resolver config, and adds shims for the imports.
2025-01-13 09:36:11 +00:00
47c8197ea1 FEATURE: add drafts dropdown menu (#30277)
This change adds a new dropdown trigger next to the "New Topic" button.
When clicked a menu will display a list of topic/post drafts that can be
clicked to resume the draft within the composer.

The "New Topic" button will no longer change text to show "Open Draft"
when a draft topic exists, it will still attempt to load the existing
draft if one exists (this will change later when we support multiple
drafts in a separate PR).

The "My Posts" link in desktop sidebar will now be "My Drafts" and only
appear when the current user has existing drafts.
2025-01-13 13:33:57 +04:00
0caeadd9b1 FEATURE: Add IP Lookup to review queue (#30688)
Moves the theme component
https://github.com/discourse/discourse-review-ip-lookup into core, this
allows looking
up a user's IP directly from the review queue and seeing if
there are other users with the same IP on the forum
2025-01-13 13:03:13 +10:00
3e00e994a6 FIX: Add back API keys plugin outlet lost in translation (#30730)
When converting the admin API keys page to the new admin UI guidelines we lost a plugin outlet. This adds that back.
2025-01-13 10:32:57 +08:00
7a4da92657 DEV: Move topic-list-item-class transformer to a getter (#30726)
See 03bb43f
2025-01-11 12:13:47 +01:00
88888642f7 FIX: correctly position emoji picker when clicking more (#30724) 2025-01-11 00:40:47 +01:00
b2167a79b4 DEV: Remove now unused bootstrap dependency (#30715) 2025-01-10 21:28:31 +01:00
1cbb8b5703 Build(deps-dev): Bump @swc/core from 1.10.6 to 1.10.7 (#30705)
Bumps [@swc/core](https://github.com/swc-project/swc) from 1.10.6 to 1.10.7.
- [Release notes](https://github.com/swc-project/swc/releases)
- [Changelog](https://github.com/swc-project/swc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/swc-project/swc/compare/v1.10.6...v1.10.7)

---
updated-dependencies:
- dependency-name: "@swc/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 20:12:45 +01:00
d223d866ba Build(deps): Bump @babel/standalone in the babel group (#30700)
Bumps the babel group with 1 update: [@babel/standalone](https://github.com/babel/babel/tree/HEAD/packages/babel-standalone).


Updates `@babel/standalone` from 7.26.4 to 7.26.5
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.5/packages/babel-standalone)

---
updated-dependencies:
- dependency-name: "@babel/standalone"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 19:29:22 +01:00
b96a9b9896 FIX: simplify body scroll lock on iOS (#30696)
This will have the following advantages:
- removes a very annoying bug which was making text selection super hard on iOS
- removes the flashing of header when transitioning from disable to enable body scroll lock
2025-01-10 17:13:48 +01:00
07e5f8907e DEV: Consolidate mobile positioning strategies on mobile and iPad (#30241)
This removes some longstanding Safari iOS positioning hacks and refactors the mobile positioning strategy across Safari, Chrome and Firefox. See PR descriptions for more details. 

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2025-01-10 11:00:15 -05:00
690ffcf1d5 UX: Add DPageHeader to watched words and color palettes (#30686)
Part of our admin UI consistency efforts, this is a stop-gap
until we can do a further UI review of these pages.
2025-01-10 15:32:10 +10:00
d566cbbf45 DEV: Add missing root breadcrumb to API keys page (#30690)
Addressing a couple minor inconsistencies on the admin API keys page.

1. Add missing "Admin" root breadcrumb.
2. De-titleize "API Keys" -> "API keys".
2025-01-10 13:19:34 +08:00
4a78999b6f DEV: Add new admin UI header to site texts page (#30689)
This adds the new admin UI header to the site texts page.
2025-01-10 13:19:14 +08:00
b1bae9b785 FIX: Add back missing API key 'peek' step (#30683)
In #30096 we converted the API keys UI to follow the new admin UI guidelines.

During this conversion, the step where you get a chance to copy the API key after creating, was lost due to a rebase mistake.

This re-introduces it.
2025-01-10 10:21:22 +08:00
f4b417462b UX: Final pass of admin setting pages (#30682)
This commit finalises the admin setting page consistency
efforts by:

* Converting all route templates into .gjs
* Adding `@hideTabs={{true}}` for all the page headers so we
  don't show a border line when it's not needed
* Introduce `@showBreadcrumb` and default to true for
  AdminAreaSettings, for all these pages the Settings part of
  the breadcrumb is redundant
2025-01-10 11:03:07 +10:00
06c90614f7 Build(deps): Bump ace-builds from 1.37.3 to 1.37.4 (#30679)
Bumps [ace-builds](https://github.com/ajaxorg/ace-builds) from 1.37.3 to 1.37.4.
- [Release notes](https://github.com/ajaxorg/ace-builds/releases)
- [Changelog](https://github.com/ajaxorg/ace-builds/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ajaxorg/ace-builds/compare/v1.37.3...v1.37.4)

---
updated-dependencies:
- dependency-name: ace-builds
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-09 23:14:23 +01:00
773857848b FIX: lockup when navigating with j/k (#30674)
If, for some reasons, navigating between posts using j/k keyboard
shortcuts does not select any posts, there could be an infinite loop
due to setting the `direction` to `0` and then using it do "iterate"
over the arrays of available "articles".

Despite many attemps, I wasn't able to reproduce the issue reported in
https://dev.discourse.org/t/145565 so this is somewhat of a shot in the
dark.
2025-01-09 20:38:44 +01:00
989064841c DEV: Add outletArgs for search filters PluginOutlet (#30671)
This PR adds an OutletArgs on search filters PluginOutlet.
2025-01-09 10:47:22 -06:00
b1e40d04b9 FIX: emoji picker followups (#30670)
This pull request is doing the following changes:

prevents clicking on a section to scroll the document body
do not show favorites section if empty
do not close the user-status modal on emoji selection
giving its own context for user-status picker, that way if you frequently use same emojis for the picker they will always be in favorites
2025-01-09 14:27:48 +01:00
590b3e11fb DEV: Convert admin API keys to conform to UI guidelines (#30660)
Re-opening of #30096. It was reverted because it was missing a sidebar link to Webhooks in the admin panel.
2025-01-09 10:57:40 +08:00
f8a4c983d1 DEV: replace nameValidation mixin with helper class (#30615)
This PR moves the logic from the nameValidation mixin to a helper class. I've opted to maintain the interface of the previous classes through native getters in combination with dependentKeyCompat so that we limit the amount of changes here (these are referenced in the string form and across classes/templates), and avoid introducing more computed properties from the old reactivity system (alias, readOnly etc.).

We now return a POJO for nameValidation since returning an EmberObject makes no difference here.

Deprecation warning added to the nameValidation mixin as it's still used in a plugin.
2025-01-09 08:20:21 +08:00