diff --git a/Gemfile.lock b/Gemfile.lock index 59195521cb5..10cc6d42a96 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -540,10 +540,10 @@ GEM actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - sqlite3 (2.4.0-aarch64-linux-gnu) - sqlite3 (2.4.0-arm64-darwin) - sqlite3 (2.4.0-x86_64-darwin) - sqlite3 (2.4.0-x86_64-linux-gnu) + sqlite3 (2.4.1-aarch64-linux-gnu) + sqlite3 (2.4.1-arm64-darwin) + sqlite3 (2.4.1-x86_64-darwin) + sqlite3 (2.4.1-x86_64-linux-gnu) sshkey (3.0.0) stackprof (0.2.26) stringio (3.1.2) diff --git a/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs b/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs index d82dbcad8e4..b250e42ecd0 100644 --- a/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs +++ b/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs @@ -205,7 +205,7 @@ export default class AdminFlagsForm extends Component { - + {{i18n "admin.config_areas.flags.form.alert"}} diff --git a/app/assets/javascripts/admin/addon/components/themes-grid-card.gjs b/app/assets/javascripts/admin/addon/components/themes-grid-card.gjs index 493140dfc09..74b66ed41e8 100644 --- a/app/assets/javascripts/admin/addon/components/themes-grid-card.gjs +++ b/app/assets/javascripts/admin/addon/components/themes-grid-card.gjs @@ -41,7 +41,7 @@ export default class ThemeCard extends Component { } get footerActionIcon() { - return this.args.theme.isPendingUpdates ? "sync" : "ellipsis-h"; + return this.args.theme.isPendingUpdates ? "arrows-rotate" : "ellipsis"; } // NOTE: inspired by -> https://github.com/discourse/discourse/blob/24caa36eef826bcdaed88aebfa7df154413fb349/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-show.js#L366 @@ -116,7 +116,7 @@ export default class ThemeCard extends Component { {{icon "info-circle"}} + >{{icon "circle-info"}} {{/if}}
{{#if @theme.screenshot_url}} @@ -179,7 +179,7 @@ export default class ThemeCard extends Component { @preventFocus={{true}} @icon={{if @theme.default - "far-check-square" + "far-square-check" "far-square" }} class="theme-card__button" diff --git a/app/assets/javascripts/admin/addon/components/version-checks.hbs b/app/assets/javascripts/admin/addon/components/version-checks.hbs index 2e7ba134339..3a3ad1a73e3 100644 --- a/app/assets/javascripts/admin/addon/components/version-checks.hbs +++ b/app/assets/javascripts/admin/addon/components/version-checks.hbs @@ -108,7 +108,7 @@ }}" > {{#if this.versionCheck.behindByOneVersion}} - {{d-icon "far-meh"}} + {{d-icon "far-face-meh"}} {{else}} {{d-icon "far-face-frown"}} {{/if}} diff --git a/app/assets/javascripts/admin/addon/templates/api-keys-index.hbs b/app/assets/javascripts/admin/addon/templates/api-keys-index.hbs index b331a95edca..169bf25277a 100644 --- a/app/assets/javascripts/admin/addon/templates/api-keys-index.hbs +++ b/app/assets/javascripts/admin/addon/templates/api-keys-index.hbs @@ -14,13 +14,13 @@ {{i18n "admin.api.user"}} {{i18n "admin.api.created"}} {{i18n "admin.api.last_used"}} + {{i18n "admin.site_settings.table_column_heading.status"}}   {{#each this.model as |k|}} - {{#if k.revoked_at}}{{d-icon "circle-xmark"}}{{/if}} {{k.truncatedKey}} @@ -57,6 +57,20 @@ {{i18n "admin.api.never_used"}} {{/if}} + +
{{i18n + "admin.site_settings.table_column_heading.status" + }}
+ {{#if k.revoked_at}} +
+
+
+
+ {{i18n "admin.api.revoked"}} +
+
+ {{/if}} + - + {{i18n "admin.dashboard.whats_new_in_discourse"}} - +
{{/if}} diff --git a/app/assets/javascripts/admin/addon/templates/user-index.hbs b/app/assets/javascripts/admin/addon/templates/user-index.hbs index b1a5ac21a9b..a9daf9b951a 100644 --- a/app/assets/javascripts/admin/addon/templates/user-index.hbs +++ b/app/assets/javascripts/admin/addon/templates/user-index.hbs @@ -10,7 +10,7 @@ {{#if this.model.can_view_action_logs}} @@ -850,7 +850,7 @@ {{else}} <:actions as |actions|> diff --git a/app/assets/javascripts/admin/package.json b/app/assets/javascripts/admin/package.json index b28ca1a1db3..8c110ea710a 100644 --- a/app/assets/javascripts/admin/package.json +++ b/app/assets/javascripts/admin/package.json @@ -39,7 +39,7 @@ "ember-source": "~5.5.0", "ember-source-channel-url": "^3.0.0", "loader.js": "^4.7.0", - "webpack": "^5.97.0" + "webpack": "^5.97.1" }, "engines": { "node": ">= 18", diff --git a/app/assets/javascripts/custom-proxy/package.json b/app/assets/javascripts/custom-proxy/package.json index 34daeba3a1c..c0869935aba 100644 --- a/app/assets/javascripts/custom-proxy/package.json +++ b/app/assets/javascripts/custom-proxy/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "clean-base-url": "^1.0.0", - "express": "^4.21.1", + "express": "^4.21.2", "glob": "^10.4.3", "html-entities": "^2.5.2", "html-rewriter-wasm": "^0.4.1", diff --git a/app/assets/javascripts/dialog-holder/package.json b/app/assets/javascripts/dialog-holder/package.json index 343c7288ea0..b8fa7ccf679 100644 --- a/app/assets/javascripts/dialog-holder/package.json +++ b/app/assets/javascripts/dialog-holder/package.json @@ -19,7 +19,7 @@ "@types/jquery": "^3.5.32", "@types/qunit": "^2.19.12", "@types/rsvp": "^4.0.9", - "webpack": "^5.97.0" + "webpack": "^5.97.1" }, "engines": { "node": ">= 18", diff --git a/app/assets/javascripts/discourse-common/package.json b/app/assets/javascripts/discourse-common/package.json index b7efae79963..341878af974 100644 --- a/app/assets/javascripts/discourse-common/package.json +++ b/app/assets/javascripts/discourse-common/package.json @@ -41,7 +41,7 @@ "ember-source": "~5.5.0", "ember-source-channel-url": "^3.0.0", "loader.js": "^4.7.0", - "webpack": "^5.97.0" + "webpack": "^5.97.1" }, "engines": { "node": ">= 18", diff --git a/app/assets/javascripts/discourse-plugins/package.json b/app/assets/javascripts/discourse-plugins/package.json index fd5d48ca5ab..7b171c0fe12 100644 --- a/app/assets/javascripts/discourse-plugins/package.json +++ b/app/assets/javascripts/discourse-plugins/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "ember-cli": "~6.0.1", - "webpack": "^5.97.0" + "webpack": "^5.97.1" }, "engines": { "node": ">= 18", diff --git a/app/assets/javascripts/discourse-widget-hbs/package.json b/app/assets/javascripts/discourse-widget-hbs/package.json index 667c5957179..fbb2b833b56 100644 --- a/app/assets/javascripts/discourse-widget-hbs/package.json +++ b/app/assets/javascripts/discourse-widget-hbs/package.json @@ -36,7 +36,7 @@ "ember-source": "~5.5.0", "ember-source-channel-url": "^3.0.0", "loader.js": "^4.7.0", - "webpack": "^5.97.0" + "webpack": "^5.97.1" }, "engines": { "node": ">= 18", diff --git a/app/assets/javascripts/discourse/app/components/bookmark-icon.gjs b/app/assets/javascripts/discourse/app/components/bookmark-icon.gjs new file mode 100644 index 00000000000..a1facfcbb73 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/bookmark-icon.gjs @@ -0,0 +1,35 @@ +import Component from "@glimmer/component"; +import { + NO_REMINDER_ICON, + WITH_REMINDER_ICON, +} from "discourse/models/bookmark"; +import icon from "discourse-common/helpers/d-icon"; +import { i18n } from "discourse-i18n"; + +export default class BookmarkIcon extends Component { + get icon() { + if (this.args.bookmark?.get("reminder_at")) { + return WITH_REMINDER_ICON; + } + + return NO_REMINDER_ICON; + } + + get cssClasses() { + return this.args.bookmark + ? "bookmark-icon bookmark-icon__bookmarked" + : "bookmark-icon"; + } + + get title() { + if (!this.args.bookmark) { + return i18n("bookmarks.create"); + } + + return this.args.bookmark.get("reminderTitle"); + } + + +} diff --git a/app/assets/javascripts/discourse/app/components/bookmark-icon.hbs b/app/assets/javascripts/discourse/app/components/bookmark-icon.hbs deleted file mode 100644 index fb00ea5f2b7..00000000000 --- a/app/assets/javascripts/discourse/app/components/bookmark-icon.hbs +++ /dev/null @@ -1 +0,0 @@ -{{d-icon this.icon translatedTitle=this.title class=this.cssClasses}} \ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/components/bookmark-icon.js b/app/assets/javascripts/discourse/app/components/bookmark-icon.js deleted file mode 100644 index 11389c548ad..00000000000 --- a/app/assets/javascripts/discourse/app/components/bookmark-icon.js +++ /dev/null @@ -1,42 +0,0 @@ -import Component from "@ember/component"; -import { computed } from "@ember/object"; -import { isEmpty } from "@ember/utils"; -import { - NO_REMINDER_ICON, - WITH_REMINDER_ICON, -} from "discourse/models/bookmark"; -import { i18n } from "discourse-i18n"; - -export default class BookmarkIcon extends Component { - tagName = ""; - bookmark = null; - - @computed("bookmark.reminder_at") - get icon() { - if (!this.bookmark) { - return NO_REMINDER_ICON; - } - - if (!isEmpty(this.bookmark.reminder_at)) { - return WITH_REMINDER_ICON; - } - - return NO_REMINDER_ICON; - } - - @computed("bookmark") - get cssClasses() { - return this.bookmark - ? "bookmark-icon bookmark-icon__bookmarked" - : "bookmark-icon"; - } - - @computed("bookmark.title") - get title() { - if (!this.bookmark) { - return i18n("bookmarks.create"); - } - - return this.bookmark.reminderTitle; - } -} diff --git a/app/assets/javascripts/discourse/app/components/composer-editor.js b/app/assets/javascripts/discourse/app/components/composer-editor.js index dafc514b632..792b2a06753 100644 --- a/app/assets/javascripts/discourse/app/components/composer-editor.js +++ b/app/assets/javascripts/discourse/app/components/composer-editor.js @@ -200,6 +200,7 @@ export default class ComposerEditor extends Component { @bind setupEditor(textManipulation) { this.textManipulation = textManipulation; + this.uppyComposerUpload.textManipulation = textManipulation; const input = this.element.querySelector(".d-editor-input"); diff --git a/app/assets/javascripts/discourse/app/components/d-editor.js b/app/assets/javascripts/discourse/app/components/d-editor.js index 771c9bef2a8..5d228de9830 100644 --- a/app/assets/javascripts/discourse/app/components/d-editor.js +++ b/app/assets/javascripts/discourse/app/components/d-editor.js @@ -306,8 +306,7 @@ export default class DEditor extends Component { this.site.hashtag_configurations["topic-composer"], this.siteSettings, { - afterComplete: (value) => { - this.set("value", value); + afterComplete: () => { schedule( "afterRender", this.textManipulation, @@ -327,8 +326,7 @@ export default class DEditor extends Component { this.textManipulation.autocomplete({ template: findRawTemplate("emoji-selector-autocomplete"), key: ":", - afterComplete: (text) => { - this.set("value", text); + afterComplete: () => { schedule( "afterRender", this.textManipulation, @@ -466,9 +464,7 @@ export default class DEditor extends Component { onRender: (options) => renderUserStatusHtml(options), key: "@", transformComplete: (v) => v.username || v.name, - afterComplete: (value) => { - this.set("value", value); - + afterComplete: () => { schedule( "afterRender", this.textManipulation, diff --git a/app/assets/javascripts/discourse/app/components/group-card-contents.js b/app/assets/javascripts/discourse/app/components/group-card-contents.js index 82ef2b5e201..c3cb1ba0637 100644 --- a/app/assets/javascripts/discourse/app/components/group-card-contents.js +++ b/app/assets/javascripts/discourse/app/components/group-card-contents.js @@ -62,7 +62,7 @@ export default class GroupCardContents extends CardContentsBase.extend( this.setProperties({ group }); if (!group.flair_url && !group.flair_bg_color) { - group.set("flair_url", "fa-users"); + group.set("flair_url", "users"); } if (group.can_see_members && group.members.length < maxMembersToDisplay) { diff --git a/app/assets/javascripts/discourse/app/components/modal/move-to-topic.hbs b/app/assets/javascripts/discourse/app/components/modal/move-to-topic.hbs index db9922572e4..c06d7fe910c 100644 --- a/app/assets/javascripts/discourse/app/components/modal/move-to-topic.hbs +++ b/app/assets/javascripts/discourse/app/components/modal/move-to-topic.hbs @@ -131,6 +131,8 @@ {{/if}} + + {{#if this.existingTopic}}

{{html-safe diff --git a/app/assets/javascripts/discourse/app/components/modal/move-to-topic.js b/app/assets/javascripts/discourse/app/components/modal/move-to-topic.js index 419048cbf7c..5cea8e3fd06 100644 --- a/app/assets/javascripts/discourse/app/components/modal/move-to-topic.js +++ b/app/assets/javascripts/discourse/app/components/modal/move-to-topic.js @@ -3,6 +3,7 @@ import { tracked } from "@glimmer/tracking"; import { action } from "@ember/object"; import { service } from "@ember/service"; import { isEmpty } from "@ember/utils"; +import { applyValueTransformer } from "discourse/lib/transformer"; import DiscourseURL from "discourse/lib/url"; import { mergeTopic, movePosts } from "discourse/models/topic"; import { i18n } from "discourse-i18n"; @@ -145,6 +146,15 @@ export default class MoveToTopic extends Component { }; } + mergeOptions = applyValueTransformer( + "move-to-topic-merge-options", + mergeOptions + ); + moveOptions = applyValueTransformer( + "move-to-topic-move-options", + moveOptions + ); + try { let result; if (this.args.model.selectedAllPosts) { diff --git a/app/assets/javascripts/discourse/app/components/post/menu/buttons/read.gjs b/app/assets/javascripts/discourse/app/components/post/menu/buttons/read.gjs index f6db21b6c76..aec8ecd9bfe 100644 --- a/app/assets/javascripts/discourse/app/components/post/menu/buttons/read.gjs +++ b/app/assets/javascripts/discourse/app/components/post/menu/buttons/read.gjs @@ -25,7 +25,7 @@ export default class PostMenuReadButton extends Component { diff --git a/app/assets/javascripts/discourse/app/components/post/menu/buttons/show-more.gjs b/app/assets/javascripts/discourse/app/components/post/menu/buttons/show-more.gjs index 4f854a64880..d4aaa78c650 100644 --- a/app/assets/javascripts/discourse/app/components/post/menu/buttons/show-more.gjs +++ b/app/assets/javascripts/discourse/app/components/post/menu/buttons/show-more.gjs @@ -11,7 +11,7 @@ export default class PostMenuShowMoreButton extends Component { class="post-action-menu__show-more show-more-actions" ...attributes @action={{@buttonActions.showMoreActions}} - @icon="ellipsis-h" + @icon="ellipsis" @title="show_more" /> diff --git a/app/assets/javascripts/discourse/app/components/topic-list/item.gjs b/app/assets/javascripts/discourse/app/components/topic-list/item.gjs index a5251c4594c..ae3b44cb6b5 100644 --- a/app/assets/javascripts/discourse/app/components/topic-list/item.gjs +++ b/app/assets/javascripts/discourse/app/components/topic-list/item.gjs @@ -185,6 +185,14 @@ export default class Item extends Component { } } + get useMobileLayout() { + return applyValueTransformer( + "topic-list-item-mobile-layout", + this.site.mobileView, + { topic: this.args.topic } + ); + } + diff --git a/app/assets/javascripts/discourse/app/components/topic-list/list.gjs b/app/assets/javascripts/discourse/app/components/topic-list/list.gjs index 71af1e73ad8..549a18c4af2 100644 --- a/app/assets/javascripts/discourse/app/components/topic-list/list.gjs +++ b/app/assets/javascripts/discourse/app/components/topic-list/list.gjs @@ -1,6 +1,6 @@ import Component from "@glimmer/component"; import { cached } from "@glimmer/tracking"; -import { hash } from "@ember/helper"; +import { array, hash } from "@ember/helper"; import { service } from "@ember/service"; import { eq, or } from "truth-helpers"; import PluginOutlet from "discourse/components/plugin-outlet"; @@ -172,6 +172,7 @@ export default class TopicList extends Component { class={{concatClass "topic-list" (if this.bulkSelectEnabled "sticky-header") + (applyValueTransformer "topic-list-class" (array) (hash topics=@topics)) }} > {{i18n "sr_topic_list_caption"}} diff --git a/app/assets/javascripts/discourse/app/components/user-profile-avatar.hbs b/app/assets/javascripts/discourse/app/components/user-profile-avatar.hbs index 7c88f0d1e01..5d86e1763fc 100644 --- a/app/assets/javascripts/discourse/app/components/user-profile-avatar.hbs +++ b/app/assets/javascripts/discourse/app/components/user-profile-avatar.hbs @@ -1,11 +1,21 @@ -