Commit Graph

33852 Commits

Author SHA1 Message Date
Martin Brennan
8a89a77248
FIX: Discard empty bundles for reviewables (#30121)
Followup c7e471d35a

It is currently possible to add a bundle (which is a collection
of actions used for a dropdown on the client) for a reviewable
via actions.add_bundle and then never add any actions to it.

This causes the client to explode, as seen in the referenced
commit, because of the way our store expects to resolve objects
referenced by ID that are passed down by the serializer, which
then causes Ember to have an unrecoverable render error.

Fixing this on the serializer level is not really possible because
of all the ActiveModel::Serializer magic that serializes
objects by ID reference when doing things like has_many.
`Reviewable#actions_for` is a better place to do this anyway,
because this is the main location where the bundles and actions
are built for every action via the serializer.
2024-12-05 15:41:13 +10:00
Gary Pendergast
bb2e9645f2
FIX: Move granted badges to the end of the post header. (#30095) 2024-12-05 09:22:03 +11:00
dependabot[bot]
3b27ef9bbd
Build(deps-dev): Bump @swc/core from 1.9.3 to 1.10.0 (#30113)
Bumps [@swc/core](https://github.com/swc-project/swc) from 1.9.3 to 1.10.0.
- [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.9.3...v1.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 06:18:46 +08:00
Kris
19f530a827
UX: refactor title editing CSS to improve layout (#30109) 2024-12-04 16:30:48 -05:00
Kris
5c2e05cf5d
UX: fix topic map padding in low-content situations (#30101) 2024-12-04 09:39:14 -05:00
Joffrey JAFFEUX
3ddb1cfbad
FIX: ensures tabbing from trigger focus content (#30064)
`DMenu` is using in-element, which means the content is detached from the trigger, and pressing tab from the trigger is not going to jump into the content. This commit catches the tab event and attempts to focus the first focusable element of the content.
2024-12-04 12:46:02 +01:00
Régis Hanol
d2d8fbcf3b
FIX: properly quote videos (#30099)
Follow up to f294f984cf

All that was needed was a little fix to our markdown engine to use the
"image src" as the "video src" when the "data video src" was not
defined.

That way we can use the regular image markdown with the "|video" option
(?).
2024-12-04 12:39:38 +01:00
Régis Hanol
f294f984cf
FIX: unable to quote video (#30077)
This replaces the video container / thumbnail with a proper "<video>" element when quoting a video.

It's not the best UX, especially when "morphing" is disabled.

Needs more work.

Internal ref - t/143321
2024-12-04 11:56:28 +01:00
Krzysztof Kotlarek
28b4ff6cb6
FIX: update flag reason message with default value (#30026)
Currently only system flags are translated. When we send message to the user that their post was deleted because of custom flag, we should default to custom flag name.
2024-12-04 14:46:52 +11:00
Martin Brennan
9c5eb7952e
UX: Improve error when trying to edit globally shadowed setting (#30092)
Previously when attempting to edit a globally shadowed setting, the
error message was not very helpful, it said "You are not allowed to
change hidden settings". This commit changes the error message to
reflect the actual problem, which is that the setting is shadowed by
a global setting via ENV var.
2024-12-04 13:41:32 +10:00
dependabot[bot]
545cafe657
Build(deps): Bump @faker-js/faker from 9.2.0 to 9.3.0 (#30078) 2024-12-04 01:30:39 +01:00
dependabot[bot]
313eddec7f
Build(deps-dev): Bump qunit from 2.22.0 to 2.23.0 (#30079) 2024-12-04 01:30:03 +01:00
Juan David Martínez Cubillos
7b70905326
FIX: Sanitization issue when replacing default emoji with custom emoji that contains or ~/Discourse/discourse symbols (#30053) 2024-12-03 19:27:12 -05:00
dependabot[bot]
cb82d798ef
Build(deps-dev): Bump webpack from 5.96.1 to 5.97.0 (#30082) 2024-12-04 00:45:25 +01:00
Mark VanLandingham
a5636afb08
DEV: Add posts_moved DiscourseEvent in PostMover (#30066) 2024-12-03 13:16:20 -06:00
Jarek Radosz
94697467af
DEV: Add topic-list-item-class transformer (#30008) 2024-12-03 14:22:13 +01:00
Jarek Radosz
48323230a4
FIX: Stick to then/finally in history-store (#30061)
async/await doesn't play well with transitions (to be investigated… later)
2024-12-03 14:13:26 +01:00
David Taylor
c3e87b5036
UX: Only add user-badge-buttons wrapper when badges exist (#30060)
Followup to 2513339955
2024-12-03 13:12:44 +00:00
Jarek Radosz
9389bf295c
DEV: Make history-store work in non-accceptance tests (#30059) 2024-12-03 13:32:37 +01:00
Régis Hanol
806e37aaec
FIX: better edit conflict handling (#29789)
* FIX: better edit conflict handling

Properly keep track of the original title and tags when dealing with edit conflicts.

Internal ref - t/141218
2024-12-03 10:12:04 +01:00
Ella E.
ef9d7579df
UX: Add admin filter row styling (#30057)
* DEV: add scss file for admin filter

* UX: apply styling for the filter row
2024-12-03 18:22:13 +11:00
Gary Pendergast
2513339955
FEATURE: Show when a badge has been granted for a post (#29696)
Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
2024-12-03 13:43:27 +11:00
Kelv
435fbb7408
DEV: unsilence deprecation warning for old Font Awesome icons (#30028)
* DEV: unsilence deprecation warnings for old Font Awesome icon names

* update fa-user to user font awesome icon name
* update pencil-alt to pencil font awesome 6 icon name
2024-12-03 10:28:39 +08:00
Gabriel Grubba
98ba5f2dfa
FEATURE: Add plugin outlets to parent category row for desktop (#30002)
* FEATURE: Add plugin outlets to parent category row

Added 3 plugin outlets:

- `category-list-above-category-section` (above `td.category`)
- `category-list-above-topics-section` (above `td.topics`)
- `category-list-below-topics-section` (below `td.topics`)

* DEV: Add value transformer for changing classes in parent category row.

renamed connectors and added connector for mobile view

* DEV: order transformers by name
2024-12-02 18:27:30 -03:00
Renato Atilio
85691a7f31
DEV: refactor composer-editor/d-editor, a little more (#29973)
Adds setupEditor to ComposerEditor so it can setup/destroy events when the underlying editorComponent is switched.

Moves putCursorAtEnd uses (which implementation is textarea-specific) to TextareaTextManipulation.

Moves insertCurrentTime and a corresponding test, which is discourse-local-dates specific, to the plugin.

Moves applyList and formatCode from DEditor to the TextareaTextManipulation.

Moves DEditor._applySurround to TextareaTextManipulation.applySurroundSelection

Avoids resetting the textarea value on applyList and formatCode, keeping the undo history.
2024-12-02 18:24:14 -03:00
Gabriel Grubba
706987ce76
FIX: Rate limiting when moving posts with freeze option (#30041)
before this commit, when moving posts with freeze option, the rate limit was being applied leading to errors. This commit fixes that.

and also adds tests for the scenarios of moving posts with freeze option.
2024-12-02 15:48:13 -03:00
David Taylor
7750441c43
DEV: Correct ember-template-lint commands (again) (#30038)
This was fixed in 5563e9dc03, but then regressed again by an unintentional change in 6f7c581a80
2024-12-02 18:13:40 +00:00
Juan David Martínez Cubillos
31dadc8373
DEV: Add plugin wrappers required to fix template overrides (#29825)
* DEV: Add plugin wrappers required to fix tempalte overrides

* updated search-result-entry file

* activity file unintended changes fixed
2024-12-02 13:07:27 -05:00
Loïc Guitaut
cf2b4d9934 DEV: Apply new Rubocop linting on services 2024-12-02 17:31:36 +01:00
Jordan Vidrine
3b334f54fc
FIX: adjust codeblock link styling (#30036) 2024-12-02 09:49:54 -06:00
Jan Cernik
cb663b89cc
FIX: Virtual keyboard for fullpage login/signup (#29543)
This change allows the form to resize when the virtual keyboard is shown on Chrome/Android
2024-12-02 12:33:51 -03:00
Jarek Radosz
72f3cd252f
DEV: Use new qunit-dom's includesValue/doesNotIncludeValue (#30034) 2024-12-02 16:30:56 +01:00
Régis Hanol
9bdd97db42
FIX: editing post while replying (#29985)
BEFORE: if you click the "reply" button on a post and then decided that you want to "edit" the same post, clicking the "edit" button would do nothing. Clicking "edit" on another post works, but editing the same post would appear broken.

AFTER: if you click the "edit" button, it will properly load the content of the post you're trying to edit. No matter which one it is.

This was somewhat tricky to track down as the system specs seemed to contradict the qunit tests until I realized that the qunit tests were only testing the edit on the 1st post and the system specs were testing on replies.

I improved the qunit tests to test both editing OP and a reply and (hopefully) made the system specs a little bit clearer.

This is a follow up to bbe62d88d2.
2024-12-02 16:06:36 +01:00
Régis Hanol
ab32623c07
UX: disable scrolling when modal is open on desktop (#30035)
Uses the `htmlClass` to automagically set the `modal-open` class to
`<html>` so that we can do `overflow: hidden` and prevent the
"background" behind the modal from scrolling while the modal is open.

Internal ref - t/142760
2024-12-02 15:08:43 +01:00
dependabot[bot]
62fc2a383a
Build(deps): Bump @glimmer/syntax from 0.92.3 to 0.93.1 (#30032)
Bumps [@glimmer/syntax](https://github.com/glimmerjs/glimmer-vm) from 0.92.3 to 0.93.1.
- [Release notes](https://github.com/glimmerjs/glimmer-vm/releases)
- [Changelog](https://github.com/glimmerjs/glimmer-vm/blob/main/CHANGELOG.md)
- [Commits](https://github.com/glimmerjs/glimmer-vm/commits)

---
updated-dependencies:
- dependency-name: "@glimmer/syntax"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 12:19:33 +00:00
dependabot[bot]
08542400ad
Build(deps-dev): Bump jsuites from 5.7.2 to 5.8.0 (#30033)
Bumps [jsuites](https://github.com/jsuites/jsuites) from 5.7.2 to 5.8.0.
- [Release notes](https://github.com/jsuites/jsuites/releases)
- [Changelog](https://github.com/jsuites/jsuites/blob/master/changelog.md)
- [Commits](https://github.com/jsuites/jsuites/commits)

---
updated-dependencies:
- dependency-name: jsuites
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 12:18:52 +00:00
dependabot[bot]
7d5d1dcc51
Build(deps-dev): Bump qunit-dom from 3.3.0 to 3.4.0 (#30030) 2024-12-02 13:18:28 +01:00
Arpit Jalan
746d145258
FEATURE: pass faqOverridden to about-wrapper plugin outlet (#29994)
Ref: https://github.com/discourse/discourse-woot-theme/pull/29
2024-12-02 12:55:06 +05:30
Jarek Radosz
c4d86635d1
DEV: Update decorator-transforms to 2.3.0 (#30020)
1. the patch is no longer needed
2. this unblocks dependabot (it's been erroring out for a bit)
2024-12-02 01:04:20 +01:00
Jarek Radosz
b3423c40b0
DEV: Fix random typos (#30023)
(late) Nov 2024 edition
2024-12-02 07:34:05 +08:00
Krzysztof Kotlarek
6d4c6ee154
UX: admins users page follows admin ux guideline (#29873)
Conversion of `/admin/users` page to follow admin UX guidelines.

In addition, add the username to the title on the user admin page.
2024-12-02 10:11:23 +11:00
Jarek Radosz
6e4baaf092
DEV: Use qunit-dom's hasValue wherever possible (#30018) 2024-12-01 20:37:24 +01:00
Jarek Radosz
efa2589204
DEV: Finish qunit-dom hasText migration (#30017) 2024-12-01 14:00:48 +01:00
Jarek Radosz
1396aef99f
DEV: Make the logIn helper replace current-user service (#30010) 2024-11-30 17:23:51 +01:00
Jarek Radosz
dfb74d90c3
DEV: Extensively use qunit-dom's hasText (#30012) 2024-11-30 16:44:51 +01:00
Jarek Radosz
bf3e75ca70
DEV: Reduce async/indirection in site-header (#30011) 2024-11-30 15:33:38 +01:00
Jarek Radosz
fa4a37fd7d
DEV: Deprecate componentTest (#30001) 2024-11-30 15:33:27 +01:00
Jarek Radosz
2f932812e0
DEV: Add topic-list-header-sortable-column transformer (#29917)
For conditionally disabling ability to sort on specific columns in the topic list.
2024-11-29 21:32:48 +01:00
Jarek Radosz
a2c8177a4c
DEV: Deprecate discourseModule (#30000)
We're now using QUnit's `module` directly in core and all plugins/themes.
2024-11-29 20:08:52 +01:00
David Taylor
f20db92512
UX: Improve loading-slider behavior (#29995)
- Use `requestAnimationFrame` when transitioning from `ready` -> `loading`. The previous `next()` implementation was unreliable, particularly in Safari, and would cause the loading slider to jump backwards instead of forwards

- Double the minimum transition time to 200ms. This avoids the rolling average being skewed too much by routes which load quickly without network access.
2024-11-29 16:32:59 +00:00
Osama Sayegh
1497b298d2
DEV: Include controller namespace in X-Discourse-Route (#29783)
* DEV: Include controller namespace in X-Discourse-Route

* use same separator
2024-11-29 17:11:17 +11:00
Sérgio Saquetim
4cfc350b09
DEV: Fix linting issue and failing post test (#29989) 2024-11-28 18:13:32 -03:00
Sérgio Saquetim
d3595b6118
FIX: Reset likeAction when updating a cached post from JSON data (#29971)
This commit addresses an issue where the like button would not be updated properly when reloading a post that lost the only like it had received.
2024-11-28 17:20:20 -03:00
Sérgio Saquetim
a710d3f377
DEV: Ensure post.updateFromPost syncs tracked properties (#29970)
This commit ensures that tracked properties added to the post model are correctly synced when using `post.updateFromPost`.

It also introduces a plugin API to allow plugins to register new tracked properties in the post model without needing to modify the class.
2024-11-28 17:19:35 -03:00
Penar Musaraj
ba85fba1e4
FIX: Bug with edit reason on iOS (#29987) 2024-11-28 13:47:39 -05:00
David Taylor
c98335e4e5
UX: Drop post-background highlighting on navigation (#29986)
Animating the background-color property like this is not compositable for the browser, which means the animation is not smooth, and can contribute to the Cumulative Layout Shift web vital.

For now, we're removing this, and may consider re-introducing an alternative version in future based on user feedback.
2024-11-28 16:55:13 +00:00
Bianca Nenciu
5b19e2ca0f
FIX: Filter out secured categories first (#29916)
The hierarchical search for categories is composed of several complex
nested queries. This change ensures that the secured categories are
filtered out as soon as possible to ensure that the default limit of 5
categories is reached.

Without this fix, the search can return less than 5 categories if any
of the first 5 categories cannot be displayed due to permissions.
2024-11-28 17:09:16 +02:00
Jan Cernik
3c884e693c
FIX: Localization for custom signup form descriptions (#29982) 2024-11-28 11:48:58 -03:00
Penar Musaraj
cd4de88e4a
FIX: Correctly toggle bulk select checkboxes for regular users (#29984)
Non-admin/moderator users can bulk select items in new/unread, but not in
latest/top/hot. This commit ensures that when the user can no longer
bulk select items in a list, the bulk select checkboxes in the topic list
rows are hidden.
2024-11-28 09:39:17 -05:00
Joffrey JAFFEUX
89ec7d8b98
DEV: more reactive field data for form-kit (#29819)
A lot of the data of fields is decided at insertion time and is not dynamic afterwards, this commit attempts to solve this problem by making the fk-field-data a component with getters on the all the properties we need. It allows for example to implement a dynamic @disabled without having to pass @disabled everywhere. Generally speaking this solution limits props-drilling.

@format has received the same treatment than @disabled.
2024-11-28 14:30:36 +01:00
Jarek Radosz
2137f2bb74
DEV: Update content-tag to 3.0.0 (#29980) 2024-11-28 14:07:01 +01:00
Jarek Radosz
ef7518d4ad
DEV: Fix no-loose-assertions lint (#29965)
and enable some of qunit lints
2024-11-28 11:22:27 +01:00
Martin Brennan
1f538a81a8
DEV: Consistent AdminConfigAreaEmptyList options (#29975)
Followup ccc8e37dde

The fix above was good, but I would prefer to give
the option of untranslated vs translated label like
I have for other admin components for consistency.
2024-11-28 15:31:04 +10:00
Sam
cb819ab49a
FIX: Rerender Chart component if config changes (#29955)
The chart component was not rerendering if the chart
config passed to it was changed, this commit fixes the issue
by getting the config from `this.args` before trying to
access it inside an async call, so if the args change Ember
correctly rerenders. Also adds tests for this and general
chart rendering.

---------

Co-authored-by: Martin Brennan <martin@discourse.org>
2024-11-28 13:37:59 +10:00
Amanda Alves Branquinho
397ebea25c
DEV:Add plugin outlet for liked posts (#29899)
* DEV:Add plugin outlet for liked posts

* sort imports
2024-11-28 10:02:15 +11:00
Penar Musaraj
ccc8e37dde
FIX: Missing translations for empty config area (#29966) 2024-11-27 15:49:58 -05:00
Angus McLeod
6acf673f8d
FIX: topic post counts for webhook post_destroyed event (#29853)
* FIX: topic post counts for webhook post_destroyed event

- Generate webhook data after posts are destroyed
- Don't count user_deleted posts

* Remove unnecessary conditional
2024-11-27 11:36:51 -08:00
Mark VanLandingham
8c311dcbd5
FEATURE: Allow add group member endpoint to skip invite emails (#29962) 2024-11-27 11:33:09 -06:00
Jan Cernik
b4ef3456d9
FEATURE: Allow to customize the signup form descriptions (#29959) 2024-11-27 14:23:14 -03:00
Guhyoun Nam
f186e3e80b
DEV: Add categories_and_hot Route (#29948)
This PR adds a route to categories_and_hot and methods in categories_controller.
2024-11-27 11:11:33 -06:00
Penar Musaraj
43ae59bb9c
FIX: Do not ignore redirects containing "/login" in the path (#29960) 2024-11-27 11:22:45 -05:00
Keegan George
469374e063
DEV: Add new plugin outlets to edit topic area (#29951)
This PR adds new wrapper plugin outlets in the edit topic area. Adding these wrapper plugin outlets gives us easy access to `__before` and `__after`.
2024-11-27 08:12:16 -08:00
Jarek Radosz
5db0eba0a8
DEV: Autofix (w/ manual follow up) various qunit lints (#29950) 2024-11-27 13:02:55 +01:00
Arkshine
e4bb727d33
DEV: Add emoji-picker-footer plugin outlet (#29900) 2024-11-27 12:55:59 +01:00
Loïc Guitaut
d6bec460a8 DEV: Upgrade Rails to version 7.2 2024-11-27 10:48:47 +01:00
Ted Johansson
f4d0a77d5f
DEV: Add "delete user" options to illegal flag review (#29956)
We already add the "delete user" and "delete and block user" options to the drop-down for potential spam, but we should do this for potentially illegal posts as well.

This is entirely based on the implementation for the potential spam one, including caching the status on the reviewable record.

Also note that just as for potential spam, the user must be "deletable" for the option to appear.

I also took the liberty to move the options in the drop-down to what I think is a more intuitive place. (Between delete post and suspend/silence user.)
2024-11-27 17:23:57 +08:00
Ella E.
ea2a0f2c8e
DEV: refactor SCSS structure for admin table styling (#29953) 2024-11-26 22:08:52 -07:00
dependabot[bot]
c129d20322
Build(deps-dev): Bump rubocop from 1.68.0 to 1.69.0 (#29947)
* Build(deps-dev): Bump rubocop from 1.68.0 to 1.69.0

Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.68.0 to 1.69.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.68.0...v1.69.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: indirect
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* autofix

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2024-11-27 01:51:01 +01:00
Martin Brennan
2ef9d6ac47
FEATURE: Allow admins to force refresh "What's new?" (#29911)
Sometimes changes to "What's new?" feed items are made or the feed items are
removed altogether, and the polling interval to check for new features is 1 day.

This is quite long, so this commit introduces a "Check for updates"
button for admins to click on the "What's new?" page which will bust
the cache for the feed and check again at the new features endpoint.
This is limited to 5 times per minute to avoid rapid sending of
requests.
2024-11-27 09:40:55 +10:00
Jarek Radosz
ed73d80cbd
DEV: Updates all assert.equal to qunit-dom or strictEqual (#29945)
There will eventually be lint for this.
2024-11-26 22:41:29 +01:00
Gabriel Grubba
51aa5ac43f
FIX: Solve flaky tests in PostMover (#29943)
* FEATURE: Add `freeze_original` option to `PostMover`

This option will allow the api user to specify if the original topic should be `frozen`(locked and posts not deleted neither moved)

With this option when moving topic posts your posts will be `copied` to the new topic and the original topic will be kept there.

* DEV: update tests to check raw instead of ids

* DEV: Implement `freeze_original` option for `PostMover`

update specs to use `*array` matcher

* DEV: add tests to `MovedPost` model in post mover

* DEV: Update `MovedPost` model rspec

* DEV: add back empty line to `post_mover.rb`

* FIX: Solve flaky tests in `PostMover`
2024-11-26 16:30:25 -03:00
David Taylor
d4d939bd66
PERF: Remove dynamic <template> invocations (#29942)
Using Ember's `<template>` dynamically is not supported. For every invocation, glimmer-vm has to run one-time setup, and will cache the result indefinitely. This leads to significant memory leaks, and eventual OOM errors.

This commit updates a handful of cases. We'll be following up with the more complex ones, and a linting rule to avoid re-introducing the problem in future.
2024-11-26 18:54:26 +00:00
Keegan George
5605bab2c2
FIX: Preserve history when routing to /filter route (#29929) 2024-11-26 13:26:25 -05:00
Kris
fd22dd179a
UX: attempt to reduce jumpy topic scroll in Firefox (#29941) 2024-11-26 13:17:06 -05:00
Gabriel Grubba
1c03a9f078
Revert "FEATURE: Add freeze_original option to PostMover (#29880)" (#29940)
This reverts commit b6ec07c3ef.
2024-11-26 14:47:39 -03:00
Gabriel Grubba
b6ec07c3ef
FEATURE: Add freeze_original option to PostMover (#29880)
* FEATURE: Add `freeze_original` option to `PostMover`

This option will allow the api user to specify if the original topic should be `frozen`(locked and posts not deleted neither moved)

With this option when moving topic posts your posts will be `copied` to the new topic and the original topic will be kept there.

* DEV: update tests to check raw instead of ids

* DEV: Implement `freeze_original` option for `PostMover`

update specs to use `*array` matcher

* DEV: add tests to `MovedPost` model in post mover

* DEV: Update `MovedPost` model rspec

* DEV: add back empty line to `post_mover.rb`
2024-11-26 14:25:55 -03:00
Jordan Vidrine
cddc018959
FIX: remove duplicate id (#29939) 2024-11-26 10:40:55 -06:00
Joffrey JAFFEUX
96b88f34a2
FIX: correctly destroy menu/tooltip when removed from dom
This fix will ensure we correctly play the close/destroy sequence in this situation.
2024-11-26 15:55:35 +01:00
Jan Cernik
93443adf22
DEV: Remove the experimental_ prefix for fullpage login (#29546) 2024-11-26 11:08:27 -03:00
Martin Brennan
c7e471d35a
FIX: Empty post reviewable ignore bundle causing client errors (#29932)
We ran into an edge case where it was possible for a
ReviewableFlaggedPost to end up in a state where it was hidden
and the topic was already deleted. This meant that the Ignore
action bundle for the reviewable ended up empty, with no associated
actions.

This commit fixes the server-side issue where this was ending up
empty. A further commit will aim to make the client more resilient
to these issues by gracefully failing if a reviewable action bundle
is detected with no associated actions.
2024-11-26 16:18:32 +10:00
Ted Johansson
15a61a0c1f
DEV: Change admin emoji delete button from icon to text (#29931)
The Admin UI guidelines states that buttons should have text, not icons. This was an oversight on the admin emoji listing.

Part of this change is also opportunistically removing the CSS file for admin emojis, none of which is used any more since the conversion.
2024-11-26 14:10:14 +08:00
Martin Brennan
e708c99e12
FIX: Hide broken theme about/license URLs (#29930)
At the top of the theme show page we have a link
to the theme About and License, which are supposed
to be URLs. However some themes have left placeholder
text in these metadata fields, which leads to a wonky
experience.

Instead, we can just not serialize these fields if they
are not valid URLs, then they will not show as links
in the UI.
2024-11-26 13:53:10 +10:00
Jarek Radosz
6e1d01802e
DEV: Clean up assertions in transformer-test (#29928) 2024-11-26 00:40:03 +01:00
Jarek Radosz
613dea61a2
DEV: Allow ember hash as a context in applyValueTransformer (#29922)
This unlocks the ability to use that function directly in templates:

```hbs
{{applyValueTransformer
  "foo-bar"
  @defaultValue
  (hash arg1=@arg1 arg2=@arg2)
}}
```
2024-11-25 22:48:00 +01:00
Jan Cernik
a964e62cd8
FIX: Discourse Connect fixes for full page login (#29915) 2024-11-25 18:06:14 -03:00
Bianca Nenciu
5e734516db
DEV: Drop DISCOURSE_LIVE_SLOTS_SIDEKIQ_LIMIT (#29920)
This was used to track jobs that may leak memory, but proved to be too
noisy and not very useful.
2024-11-26 07:21:14 +11:00
Keegan George
1c4d5dae1c
DEV: Allow async calls to finish before removing uploads (#29918)
This PR simply moves the call to remove in progress uploads **after** the async markdown resolvers finish resolving. This is specifically for the case when markdown resolvers are async functions, such as in the case of Discourse AI's image caption feature. This ensures that the in progress upload doesn't get removed causing replace text having nothing to replace once the async call is finished.

No tests as there currently are no tests for this plugin API function, and it's a little tricky to test, especially with in progress uploads being a private property.
2024-11-25 11:10:27 -08:00
Penar Musaraj
e6fdfcdcd2
DEV: Remove experimental_topics_filter setting (#29902) 2024-11-25 10:49:40 -05:00
Jarek Radosz
433543a516
DEV: Refactor gjs topic-list (#29792)
Based on the initial review in #28934
2024-11-25 14:15:34 +01:00
David Taylor
bfe0eccdd9
FIX: Extension-less secure uploads (#29914)
Previously, the secure-upload redirection logic would fail for extension-less files. This commit updates it to work, and adds a spec for the behavior.

Extension-less file uploads are not allowed by default, so this is a very niche situation.
2024-11-25 12:18:21 +00:00
Osama Sayegh
118f7869bb
FEATURE: Add bulk destroy to admin users list (#29744)
This commit introduces a new feature that allows staff to bulk select and delete users directly from the users list at `/admin/users/list`. The main use-case for this feature is make deleting spammers easier when a site is under a large spam attack.

Internal topic: t/140321.
2024-11-25 11:13:35 +03:00
Ted Johansson
fd39753e58
DEV: Ignore normalize_emails when using SSO (#29890)
We recently tried to default the normalize_emails site setting to true to avoid spam. What this does is it considers e-mails the same regardless of plus addressing, e.g. bob+1@mail.com == bob+2@mail.com. This caused some problems for SSO users.

This PR makes it so that DiscourseConnect never normalizes e-mails.
2024-11-25 11:55:27 +08:00
Ted Johansson
88af23e1ca
DEV: Modernize admin user fields (#29843)
This PR modernizes the user fields area of the admin UI. It is largely based on the work on the emoji section.
2024-11-25 11:54:43 +08:00
Joffrey JAFFEUX
66409fa8b4
UX: improved collapsed drawer state/interactions (#29850)
- Clicking the channel title of a collapsed drawer will only open the drawer, and not open settings
- Remove the back button when the drawer is collapsed
- Uses same icon for toggling on chat that composer
- add max-width to minimised drawer + add hover effect
---------

Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
2024-11-25 03:39:03 +01:00
dependabot[bot]
1396dfabba
Build(deps-dev): Bump @swc/core from 1.9.2 to 1.9.3 (#29905)
Bumps [@swc/core](https://github.com/swc-project/swc) from 1.9.2 to 1.9.3.
- [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.9.2...v1.9.3)

---
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>
2024-11-24 22:45:28 +01:00
Juan David Martínez Cubillos
08440b0035
DEV: Add tl3_custom_promotions plugin modifier to tl3_promotions.rb (#29834)
* DEV: Add tl3_custom_promotions plugin modifier to tl3_promotions.rb

* added tests

* added tests for demotions

* changed argument order in test
2024-11-22 15:28:43 -05:00
Gerhard Schlager
0295b4165c
FIX: Permalink.create didn't work as expected anymore (#29895)
This moves the logic of setting the correct permalink values back into the controller. And it replaces the validation with a simpler one, that always works, even when the model is loaded from the DB.

Follow-up to #29634 which broke import scripts and lots of documentation on Meta.
2024-11-22 21:11:26 +01:00
Jordan Vidrine
44fbf1048c
UX: Multiple codeblocks fixes (#29898) 2024-11-22 13:52:23 -06:00
Penar Musaraj
a97ac905d1
Revert "UX: Codeblocks edits (#29893)" (#29896)
This reverts commit 667a09b159.
2024-11-22 12:09:40 -05:00
Joffrey JAFFEUX
f24d2b926f
FIX: makes tags reactive with docked header (#29894)
No test as it's complicated to have a very simple test for this and I don't want to write a system spec for such a very specific thing.
2024-11-22 18:00:11 +01:00
Jordan Vidrine
667a09b159
UX: Codeblocks edits (#29893) 2024-11-22 09:05:48 -06:00
Jarek Radosz
0641d3e4b3
DEV: Improve hbr topic list detection (#29892)
1. `addRawTemplate` is called too early for deprecation handlers to process its deprecation call, so toggle the hbr flag directly
2. move the deprecation handler to an initializer so that other (non-template) calls are always handled
3. move the debug logging to the handler
2024-11-22 14:28:01 +01:00
Jarek Radosz
b9838d6066
DEV: Fix theme name in this deprecation notices (#29888)
A followup to 019ba099c8
2024-11-22 10:24:02 +00:00
Régis Hanol
d71016522e
FIX: hide chat button in user card (#29887)
when the user isn't able to receive DMs (either because they've disabled it or because they're suspended for example).

Internal ref - t/142198
2024-11-22 09:05:58 +01:00
Akshay Birajdar
b138eaf9e5
FEATURE: Add Bulk actions to /filter page (#29420)
- Add bulk actions component on /filter page for both desktop & mobile view.
- Add system specs to assert bulk actions to be available on /filter page.
2024-11-22 11:51:06 +11:00
Bianca Nenciu
250a145361
DEV: Fix undefined variable (#29876)
Follow up to commit 429cf656e7.
2024-11-21 20:23:20 +02:00
Amanda Alves Branquinho
02ad1f9cd5
Dev/add outlet for participant (#29864)
* DEV: add outlet for topic participant

* format topic participant file

* Update app/assets/javascripts/discourse/app/components/topic-map/topic-participant.gjs

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

---------

Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2024-11-21 14:41:03 -03:00
David Taylor
019ba099c8
DEV: Unsilence this-property-fallback deprecation (#29855)
This one has the potential to be very noisy, so a special dedupliation handler is introduced.

https://meta.discourse.org/t/337276
2024-11-21 16:35:05 +00:00
Renato Atilio
6e5d4ee492
DEV: refactor composer references on composer-container/-editor (#29629)
Most of it is removing the ComposerContainer > ComposerEditor indirect references to the composer service, so ComposerEditor now deals with the service directly.

Form template was moved from DEditor to ComposerEditor.
2024-11-21 13:29:12 -03:00
Jarek Radosz
2589545623
DEV: Detect hbr topic list customizations (#29793) 2024-11-21 16:00:49 +01:00
Gabriel Grubba
db15e11cb9
FEATURE: Add modifier to delete after merge (#29872)
while it is ok to have the check for if the person can delete a topic, for this feature some times you might want some more flexibility.

Instead of relying on patching this class and method, it would be better to have a modifier that can be decide if the topic should be deleted after the merge.
2024-11-21 11:12:06 -03:00
Joffrey JAFFEUX
0b210e0fc3
FIX: correctly closes search menu on escape (#29848)
Prior to this fix the menu would not close if a child was in focus, and the search suggestions had a special implementation to handle this. The fix now relies on trapping the keydown escape event on the top dip of the search menu.
2024-11-21 07:39:47 +01:00
Bianca Nenciu
429cf656e7
FIX: Use FinalDestination::HTTP to push notifications (#29858)
Sometimes `Jobs::PushNotification` gets stuck, probably because of the
network call. This commit replaces `Excon` with `FinalDestination::HTTP`
which is safer.
2024-11-21 14:11:51 +11:00
Ella E.
a0cf8f64f9
UX: Update sidebar invite button to use correct title attribute text (#29875)
This PR updates the sidebar's Invite button to use the intended text for its title attribute.
2024-11-21 12:22:01 +10:00
chapoi
58edabc2b5
DEV: Dmenu add modifier (#29846) 2024-11-21 03:14:46 +01:00
Jordan Vidrine
34e6c8f3dd
UX: Codeblocks experiment merge (#29870) 2024-11-20 17:24:41 -06:00
dependabot[bot]
4f4b4e74c7
Build(deps): Bump ember-resolver from 13.0.2 to 13.1.0 (#29868)
Bumps [ember-resolver](https://github.com/ember-cli/ember-resolver) from 13.0.2 to 13.1.0.
- [Release notes](https://github.com/ember-cli/ember-resolver/releases)
- [Changelog](https://github.com/ember-cli/ember-resolver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ember-cli/ember-resolver/compare/v13.0.2...v13.1.0)

---
updated-dependencies:
- dependency-name: ember-resolver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-20 23:39:31 +01:00
Amanda Alves Branquinho
71a8d48d21
DEV: add outlet wrapper for small user list (#29763)
* DEV: add outlet wrapper for small user list

* DEV: use value transformer to extend small user attrs function

* Update app/assets/javascripts/discourse/app/components/small-user-list.gjs

Co-authored-by: Jarek Radosz <jradosz@gmail.com>

---------

Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2024-11-20 19:22:02 -03:00
Kris
fdfc9284fa
DEV: add order to posters column so it gets a classname (#29866) 2024-11-20 17:09:21 -05:00
Kris
9db6bd08a2
FEATURE: add transformer to pass topic ID to simple invite generation (#29861) 2024-11-20 16:08:08 -05:00
David Taylor
daa34b9e11
DEV: Unsilence d-section deprecation (#29851) 2024-11-20 15:27:19 +00:00
David Taylor
6f7c581a80
DEV: Bump @discourse/lint-configs and autofix (#29847)
In particular, this applies:

- new `discourse/no-implicit-this` template-lint rule
- `init`/`willDestroy` ordering enforcement
- `lines-between-class-members`
2024-11-20 14:15:04 +00:00
Joffrey JAFFEUX
67ce111861
DEV: converts do-not-disturb to gjs (#29840) 2024-11-20 09:50:15 +00:00
Joffrey JAFFEUX
704a5f4cab
DEV: converts insert-hyperlink to gjs (#29841) 2024-11-20 09:49:44 +00:00
Joffrey JAFFEUX
8271010387
DEV: converts grant-badge to gjs (#29842) 2024-11-20 09:49:09 +00:00
Joffrey JAFFEUX
a8ca82b11f
DEV: convert keyboard-shortcuts-help to gjs (#29831) 2024-11-19 23:25:02 +01:00
Joffrey JAFFEUX
ad034a5947
DEV: converts user-status to gjs (#29832) 2024-11-19 23:24:49 +01:00
Joffrey JAFFEUX
921416a741
DEV: converts activation-edit modal to gjs (#29827)
* DEV: converts activation-edit modal to gjs

* Update app/assets/javascripts/discourse/app/components/modal/activation-edit.gjs

---------

Co-authored-by: Jarek Radosz <jarek@cvx.dev>
2024-11-19 23:19:51 +01:00
Joffrey JAFFEUX
e02a37b0d7
DEV: converts jump-to-post modal to gjs (#29830)
* DEV: converts jump-to-post modal to gjs

* Update app/assets/javascripts/discourse/app/components/modal/jump-to-post.gjs

---------

Co-authored-by: Jarek Radosz <jarek@cvx.dev>
2024-11-19 23:14:10 +01:00
David Taylor
32665cf9dd
DEV: Consolidate i18n import paths (#29804)
Enables our new eslint rules which enforce consistent i18n imports. For more info, see 0d58b40cd7
2024-11-19 20:45:18 +00:00
Kris
acc7caa816
A11Y: make the uppy image uploader keyboard navigable (#29807) 2024-11-19 15:38:13 -05:00
Kris
84fecd370c
A11Y: convert sortable topic list headers to proper buttons (#29808) 2024-11-19 15:38:03 -05:00
Angus McLeod
ec7de0fd68
Require permitted scopes when registering a client (#29718) 2024-11-19 15:28:04 -05:00
David Taylor
79b3cb8289
DEV: Bump @discourse/lint-configs and apply fixes (#29823) 2024-11-19 19:10:02 +00:00
David Taylor
d606ac3d8e
DEV: add i18n named export to "discourse-i18n" (#29820)
Soon, we intend to consolidate all js/gjs translation calls to this new function. See https://github.com/discourse/lint-configs/pull/67 and https://github.com/discourse/discourse/pull/29804
2024-11-19 11:25:22 +00:00
Ted Johansson
682e8df007
FIX: Amend broken settings link in emoji admin breadcrumbs (#29818)
Because of an oversight in a previous PR, the breadcrumb link when visiting Admin > Emoji > Settings was broken. The correct path is customize, not config.
2024-11-19 17:24:49 +08:00
Ted Johansson
c3367c329c
DEV: Make breadcrumb separators unclickable icons (#29817)
The current breadcrumb separators are ">" characters that are added as pseudo-elements. These become part of the clickable area for the links, which causes mis-clicks.

This PR does two things:

- Replace the pseudo-element with a DIcon.
- Make sure the separator is not clickable.
2024-11-19 16:42:43 +08:00
Ted Johansson
d96b8d1001
DEV: Modernize admin emoji JavaScript (#29714)
app/assets/javascripts/admin/addon/templates/emojis.hbs
2024-11-19 15:44:34 +08:00
Martin Brennan
01a160d8af
UX: Add AdminConfigAreaEmptyList component (#29816)
This component can be used as a placeholder on
admin pages where the table has no data as per
the admin UI guidelines.
2024-11-19 16:49:57 +10:00
Joffrey JAFFEUX
582de0ffe3
DEV: adds blocks support to chat messages (#29782)
Blocks allow BOTS to augment the capacities of a chat message. At the moment only one block is available: `actions`, accepting only one type of element: `button`.

<img width="708" alt="Screenshot 2024-11-15 at 19 14 02" src="https://github.com/user-attachments/assets/63f32a29-05b1-4f32-9edd-8d8e1007d705">

# Usage

```ruby
Chat::CreateMessage.call(
  params: {
    message: "Welcome!",
    chat_channel_id: 2,
    blocks: [
      {
         type: "actions",
         elements: [
           { value: "foo", type: "button", text: { text: "How can I install themes?", type: "plain_text" } }
         ]
      }
    ]
  },
  guardian: Discourse.system_user.guardian
)
```

# Documentation

## Blocks

### Actions

Holds interactive elements: button.

#### Fields

| Field | Type | Description | Required? |
|--------|--------|--------|--------|
| type | string | For an actions block, type is always `actions` | Yes |
| elements | array | An array of interactive elements, maximum 10 elements | Yes |
| block_id | string | An unique identifier for the block, will be generated if not specified. It has to be unique per message | No |

#### Example

```json
{
  "type": "actions",
  "block_id": "actions_1",
  "elements": [...]
}
```

## Elements

### Button

#### Fields

| Field | Type | Description | Required? |
|--------|--------|--------|--------|
| type | string | For a button, type is always `button` | Yes |
| text | object | A text object holding the type and text. Max 75 characters | Yes |
| value | string | The value returned after the interaction has been validated. Maximum length is 2000 characters | No |
| style | string | Can be `primary` ,  `success` or `danger` | No |
| action_id | string | An unique identifier for the action, will be generated if not specified. It has to be unique per message | No |

#### Example

```json
{
  "type": "actions",
  "block_id": "actions_1",
  "elements": [
    {
      "type": "button",
      "text": {
          "type": "plain_text",
          "text": "Ok"
      },
      "value": "ok",
      "action_id": "button_1"
    }
  ]
}
```

## Interactions

When a user interactions with a button the following flow will happen:

- We send an interaction request to the server
- Server checks if the user can make this interaction
- If the user can make this interaction, the server will:

  * `DiscourseEvent.trigger(:chat_message_interaction, interaction)`
  * return a JSON document
  
  ```json
  {
    "interaction": {
        "user": {
            "id": 1,
            "username": "j.jaffeux"
        },
        "channel": {
            "id": 1,
            "title": "Staff"
        },
        "message": {
            "id": 1,
            "text": "test",
            "user_id": -1
        },
        "action": {
            "text": {
                "text": "How to install themes?",
                "type": "plain_text"
            },
            "type": "button",
            "value": "click_me_123",
            "action_id": "bf4f30b9-de99-4959-b3f5-632a6a1add04"
        }
    }
  }
  ```
  * Fire a `appEvents.trigger("chat:message_interaction", interaction)`
2024-11-19 07:07:58 +01:00