This upgrade does not include any breaking changes for Discourse
themes/plugins. Two of the three deprecations in Ember 6 (array
prototype extensions, component-template resolution) have already been
polyfilled in Discourse. The third (action helper/modifier) is
polyfilled in this commit.
Performance testing shows a 2-3% improvement in Discourse rendering
time, thanks to upstream performance fixes in the glimmer-vm since the
regressions in the Ember 5.x series.
---------
Co-authored-by: David Taylor <david@taylorhq.com>
This change prevents the user from starting a group chat with groups
when the current user does not have permission to view the group's
members.
The group is omitted from both the default list and results list when
searching.
Internal ref: /t/-/145343
When a user card is rendered, there are two phases: first, where a
placeholder is created, then after the user card data is retrieved, the
data is inserted into the user card structure.
This causes an issue where, if the placeholder is too close to the
bottom of the viewport, and there's a lot of data being inserted into
the user card, then the user card will be partially rendered outside of
the viewport, resulting in odd scrolling behaviour.
To address this issue, this change makes use of float-kit's ability to
auto-update the position of the user-card. There are three relevant UX
changes from this:
- When the avatar is close to the bottom of the viewport, the
placeholder renders below the avatar, and the final user card is much
bigger, the user card will jump from being below the avatar, to above
the avatar.
- The user card follows the avatar when the chat window scrolls.
- When the avatar scrolls out of view, the user card is hidden.
New GET endpoint at /data-explorer/queries/ID/run.json
Allows for simple execution of queries based on ID
Previous endpoint was POST and required group name, which makes it
harder to use via API
Previously, the dates within a month could go out of order. We were
using plain javascript objects here with the date (DD) as the key, but
these are unordered, so `12` would often be listed after `03`.
Switching to a map allows us to sort properly.
This commit makes the following changes:
- uses fullcalendar 6
- replaces the server generated upcoming dates for recurring events with
a frontend implementation of the RRULE standard (using the fullcalendar
RRULE plugin)
- displays a preview of the event on click on the upcoming events
calendar
---------
Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
Co-authored-by: Martin Brennan <martin@discourse.org>
This commit introduces deprecation warnings for accessing Site.mobileView or
Site.desktopView during application initialization to prevent
layout-related errors and improve code reliability.
The changes include:
* Added deprecation warnings for Site.mobileView and Site.desktopView
access during the initialization phase.
* Updated multiple plugins and components to avoid these deprecated
calls during startup.
* Refactored initialization logic across discourse-ai, discourse-chat,
discourse-calendar, discourse-reactions, discourse-assign,
discourse-subscriptions, and discourse-user-notes plugins
* Improved error prevention by discouraging early access to
view-dependent properties before the application is fully initialized
* Enhanced code maintainability by establishing clearer boundaries
between initialization and runtime phases
This deprecation helps prevent subtle bugs that can occur when
components try to determine the view type before the application context
is properly established, leading to more robust plugin initialization
patterns.
We recently updated `Chat::ListChannelThreadMessages` to take an option
so its `max_page_size` could be configured.
This behavior should be consistent between
`Chat::ListChannelThreadMessages` and `Chat::ListChannelMessages` since
they’re basically doing the same thing.
This patch updates the behavior of the `Chat::ListChannelMessages`
service.
This PR allows user to choose any emoji in reaction, like the old retort plugin.
* Add a `discourse_reactions_experimental_allow_any_emoji` option, if enabled, will add a button of EmojiPicker in the ReactionsPicker
* When the EmojiPicker is shown, will prevent ReactionsPicker from collapse when clicking at outside(necessary on mobile device) / moving mouse outside of ReactionsPicker
* This is considered a disabled by default experimental feature for now, admins can enable
at their own discretion, as there is not currently a way to limit which reactions can be used here
This was almost exactly identical to the default
`EmailGroupUserChooser`, so we can just use that and update the CSS
selector accordingly.
Also resolves the `select-kit-resolved-components` deprecation
Adds `commands` and `state` keys to the `RichEditorExtension` and uses
them for the spoiler toolbar item, so it shows the current state when
inside a spoiler node, and toggles the state when triggered.
Improves the `keymap` key chaining mechanism to also include the base
keymap as part of the chain, so custom commands can be triggered before
getting to the base keymap.
Extends the ENTER key handling with a different behavior for inline
nodes such as `[spoiler]` or `<kbd>` (inline spoiler and inline html):
- if at the start of a node, moves the node to a paragraph below
- if in the middle of the node, splits it but strips the node from the
second half, keeping it "unstyled"
- if at the end of the node, adds and selects a new paragraph
Appends an empty space (" ") after these inline nodes when they happen
at the end of a block node, allowing to tap/right-arrow out of the
inline node.
Adds a `[spoiler]` input rule which adds an inline spoiler if
mid-sentence or a block spoiler if at the beginning of a text block.
Replaces the "toggle" for revealing the spoiler node, instead of using a
click handler we now track the cursor position and reveal when it's
inside a spoiler node.
Tweaks the `bbcode-block` markdown-it handler to avoid applying a bbcode
block for a scenario like `[spoiler]spoiled[/spoiler] `, with the
trailing space, otherwise our inline node on ProseMirror would be
re-parsed as block on the next markdown-it parsing.
Updates the styling using the default `--d-border-radius`.
<img width="725" height="234" alt="image"
src="https://github.com/user-attachments/assets/6a509fe0-73e8-4f01-98c9-ed96d087ce1c"
/>
We want to temporarily disable user tips and the Discobot welcome PM
on all sites by default until we have time to improve their
functionality, because
right now they create a lot of noise for new members and admins without
providing obvious benefits.
Existing sites which have customized any of these localization strings will have
`disable_discourse_narrative_bot_welcome_post` kept as `false`:
* system_messages.welcome_user.subject_template OR
* system_messages.welcome_user.text_body_template OR
* discourse_narrative_bot.new_user_narrative.hello.message
Followup revert 70859e277f.
Wrapping the expected response with `<output>` tags confuses models,
especially those from the Claude family, which don't have schema support
and rely on prefilling. Relying on prefilling means they only know the
response must start with `{`, and how the JSON looks is only hinted at
in the system prompt.
If a poll is created with `dynamic-poll=true`
then options can be amended after you post poll.
This is useful for polls like: "favorite IDE" where you want
people to easily be allowed to add options.
---------
Co-authored-by: Martin Brennan <martin@discourse.org>
This PR changes the ai-bot-conversations component to use the
floatkit-based autocomplete menu for the AI bot chat interface when
autocompleting hashtags (`#`) and mentions (`@`). Also fixes a bug where autocompleting in the full page search input field results in the search immediately submitting.