Commit Graph
61503 Commits
Author SHA1 Message Date
Gary Pendergast e0cb29ed4c DEV: Improve validity checking of JSON param values. (#35401)
The validity checking for parameter values being passed in expects them
all to be strings, then casts them to their appropriate type after
confirming that they're valid.

Rather than bypassing these checks, it's safer to convert the values to
strings, then continue with the existing validity checks.
2025-10-15 14:31:12 +11:00
Martin Brennan 66179c60cd FEATURE: Always show All, Topics, and Replies subtabs for unified new (#35292)
Currently, if a user is part of a group in
`experimental_new_new_view_groups`,
they will see tabs for All, Topics, and Replies underneath the New tab
in the
/new  topic list.

However, if one of the tabs has no topics (i.e. no more unread replies
or no more new topics), we hide the tabs entirely. This can be confusing
and inconsistent for members.

This commit changes the behavior so that the tabs are always shown.
Also, we change the text and route of the empty topic list CTA based on
the subtab
the user is on:

* Topics subtab, when there are new Replies:
  * Button text: Browse new replies
  * Button points to the Replies subtab
* Replies subtab, when there are new Topics:
  * Button text: Browse new topics
  * Button points to Topics subtab
* All subtab, or any subtab when there are no new topics of any kind:
  * Button text: Browse latest topics
  * Button points to /latest
2025-10-15 09:47:23 +10:00
Alan Guo Xiang Tan df6a38a1e2 DEV: Add debugging assertion for a flaky test (#35369)
The test being fixed is flaky and the difference in hash is insufficient
information for us to debug it.

```
Failure/Error: expect(SvgSprite.path(1)).to eq("/svg-sprite/#{Discourse.current_hostname}/svg-1-#{version}.js")

  expected: "/svg-sprite/test.localhost/svg-1-d110e8387cd2da5cb435355de1a1f384552374e0.js"
       got: "/svg-sprite/test.localhost/svg-1-f6c1243dedd2c8296ca6581fe5610047a0d9ba16.js"

  (compared using ==)

./spec/lib/svg_sprite/svg_sprite_spec.rb:21:in `block (2 levels) in <main>'
./spec/rails_helper.rb:704:in `block (3 levels) in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/benchmark-0.4.1/lib/benchmark.rb:305:in `measure'
./spec/rails_helper.rb:704:in `block (2 levels) in <top (required)>'
./spec/rails_helper.rb:662:in `block (3 levels) in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:185:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:192:in `timeout'
./spec/rails_helper.rb:652:in `block (2 levels) in <top (required)>'
./spec/rails_helper.rb:609:in `block (2 levels) in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/rspec.rb:39:in `block (2 levels) in <top (required)>'
```
2025-10-15 07:32:27 +08:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b89f6a34a7 Build(deps-dev): Bump rspec-mocks from 3.13.5 to 3.13.6 (#35395)
Bumps [rspec-mocks](https://github.com/rspec/rspec) from 3.13.5 to
3.13.6.
-
[Changelog](https://github.com/rspec/rspec/blob/rspec-mocks-v3.13.6/rspec-mocks/Changelog.md)
-
[Commits](https://github.com/rspec/rspec/compare/rspec-mocks-v3.13.5...rspec-mocks-v3.13.6)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-15 01:20:30 +02:00
Renato Atilio 6e714c1ea6 DEV: make formatCode action more context-aware on rich editor (#35362)
Refactors `formatCode` as a `code-block` extension command.

Changes its behavior:
1. Inside code block: convert back to paragraphs (respecting \n\n
splits)
2. Empty selection in empty block: create code block
3. Empty selection in non-empty block: toggle stored inline code mark
4. Multi-block selection: create single code block with full content
selected
5. Full block selection: create code block with full content selected
6. Partial text selection: toggle stored inline code marks
2025-10-14 19:29:55 -03:00
David Taylor 6247fdc255 DEV: Resolve 'unknown OID' warnings for pgvector columns (#35393)
ActiveRecord prints these warnings when loading the db schema into its
internal cache. We don't need to do this for the AI embeddings tables,
since we don't use ActiveRecord models for them.

Reverts the system-spec-specific workaround from 446ff04e
2025-10-14 22:30:06 +01:00
Jarek Radosz 855c6f6149 DEV: Remove unnecessary preventFocus args (#35388)
The "dismiss composer" button(s) by design either close the composer
immediately or open a modal, so there's no reason to try to keep focus
on the textarea.

This _seems_ to fix the bug that makes the view scroll up after
dismissing the composer.
2025-10-14 22:54:08 +02:00
David Taylor 613cf3f969 DEV: Normalize discourse-cakeday route/controller/template names (#35391)
See 6081bc2249 for context
2025-10-14 21:45:13 +01:00
Rafael dos Santos Silva 70ece55d97 FEATURE: Support for newer Gemini Embedding model (#35390) 2025-10-14 17:13:22 -03:00
Rafael dos Santos Silva 78ae5dbc46 FIX: Handle nil @post in CookedProcessorMixin for chat messages (#35386)
Chat::MessageProcessor includes CookedProcessorMixin but only sets
@model, leaving @post as nil. The process_hotlinked_image method was
attempting to access @post.post_hotlinked_media, causing undefined
method errors when processing chat messages with images.
2025-10-14 16:04:25 -03:00
David Taylor 2f8975c05d DEV: Move tags-admin-dropdown to admin bundle (#35376)
This is only shown to staff. Moving it to the admin bundle will reduce
bundle size for regular users, and simplify the code.

Also moves the action code inside the dropdown, so we don't need the
old-fashioned `.send()` calls.
2025-10-14 19:23:28 +01:00
David Taylor 6088959693 DEV: Move edit-category route to admin bundle (#35374)
This route is only accessible to staff, so no need to have it in the
main bundle. This means we no longer need the `optionalRequire` for the
color-input component.

Also updates the `edit-category/tabs` route-template to avoid the need
for `lookup()`, and updates the plugin APIs to use transformers.
2025-10-14 19:23:14 +01:00
Renato Atilio f4dd4ae889 FIX: update composer placeholder when toggled (#35383)
Make sure we're re-rendering the composer placeholder when toggling
between modes.
2025-10-14 15:21:38 -03:00
Chris Alberti 35fbaebe04 FIX: Moving a topic's first post to an existing topic resets bumped_at (#35373)
When one of the moved posts was the first post in it's originnal topic,
it was setting the bumped_at timetamp of the destination post to the
created_at timestamp of the moved first post.

With this fix, instead it leaves the bumped_at timestamp alone.

dev /t/164974
2025-10-14 13:06:22 -05:00
Keegan George 51f323ef37 DEV: Allow seeded models in enumerator (#35385)
With out AI credit system being rolled out, we no longer rely on
allowing/disallowing seeded models in the enumerator. This update allows
seeded models to be selected and used in the `LlmEnumerator`.
2025-10-14 11:05:33 -07:00
Régis Hanol f8a7cc92d5 PERF: cache requests when navigating user directory (#35371)
When changing the sorting column/order, we would always make a request

- to retrieve the list of groups ("/groups/search.json")
- to retrieve the list of columns ("/directory-columns.json")

This adds some client-side cache to ensure we don't unecessarily
requests those information over and over again.

I'm also 50% hopeful that it might also fix the race condition described
in https://meta.discourse.org/t/-/385110/4 - but I wasn't able to
reproduce locally
2025-10-14 19:14:38 +02:00
David Taylor 60d8bf9534 DEV: Delete unused route file (#35379)
This was unused, and had a broken import. The resetController
functionality was already implemented in another way, and the titleToken
is the same as the parent route.
2025-10-14 18:06:43 +01:00
David Taylor b83733c6df DEV: Move email-logs-list-test to correct directory (#35378) 2025-10-14 18:06:33 +01:00
David Taylor fa43632f1b FIX: Missing topic properties in category-featured-topics (#35380)
`category.topics` is already an array of `Topic` objects. Calling
`.create()` again is unnecessary, and leads to strange behavior,
especially when `@tracked` fields are involved.

New `@tracked` were introduced in
075d0b8ea1, which is what surfaced this
issue
2025-10-14 17:38:46 +01:00
Kris bf53b4e8ff A11Y: make ariaLabelledBy conditional for topic lists (#35334)
Previously `"topic-list-heading"` was added as a reference for all topic
lists because a hidden screenreader-only H1 was added to the topic lists
on discovery pages (latest/top/hot/etc)

On other pages that use the topic list component, like suggested topics
at the bottom of topic pages, the headings are visible on-page so
`aria-labelledby` is referencing a non-existent element.

This removes `aria-labelledby` when it's not needed.
2025-10-14 11:53:01 -04:00
Kris ab6a3e489f A11Y: remove aria-controls from expandable replies in topic (#35333)
This was a reasonable attempt to connect the button to the replies it
controlled (above/below a post) but the fact that the content isn't
rendered at all until expanded means we have invalid ID references and
accessibility errors. In practice this seems to cause more issues than
it solves, and we can rely on `aria-expanded` instead (already present
and properly indicates button state).
2025-10-14 11:52:44 -04:00
Kris b044638292 A11Y: remove aria-controls from search input, fix result count (#35332)
`aria-controls` doesn't really make sense here, the input was being
associated with the number of search results... but it's not really the
expected way to use it (more for interactive controls like accordion
menus and dropdowns). This was also causing a accessibility validation
issue because `search-result-count` isn't initially present and
`aria-controls` was pointing at nothing. Removing it fixes that.

While testing this I also noticed a race condition with the result count
being announced, the count would lag and on a new search the old count
would be read by the screenreader. Clearing the count while searching
with `{{#unless @controller.searching}}` fixes the issue.
2025-10-14 11:52:31 -04:00
Kris d27172e19b A11Y: add aria-label to search results region (#35327)
This region on /search should have an `aria-label` — this adds one and
includes the search term when present, e.g. "Search results for foo"
2025-10-14 11:52:08 -04:00
Kris 18f9bf787a A11Y: add role to video thumbnail button (#35326)
We markup video thumbnail `div`s in posts with `tabindex="0"` which
makes them tabbable, but without a role it's unclear they're
interactive.

Since on click or keypress these play the video, it should have
`role="button"` as well as an an accessible label.

I also noticed that `onKeyPress` was added here but isn't wired up to
anything... so I've included that and also added the space key as a
trigger in addition to enter.
2025-10-14 11:51:51 -04:00
David Taylor 4880af9b22 DEV: Remove unneeded comment (#35377) 2025-10-14 16:46:19 +01:00
David Taylor 6091175fcc DEV: Defer lookup of ip-lookup component in reviewable-item (#35375) 2025-10-14 16:28:06 +01:00
Penar Musaraj ee0e151359 DEV: Add 2FA to setting descriptions (#35372)
Makes it easier to find by searching for "2fa" in the admin UI.
2025-10-14 11:17:03 -04:00
Keegan George 902fd7494b FEATURE: Hosted LLM credit system (#35162)
## 🔍 Overview
This update adds a credit system under the hood which will be used for
our CDCK Hosted LLM models so we can make our features more accessible
to our hosted customers!

## 📷 Screenshots
<img width="1105" height="268" alt="Screenshot 2025-10-02 at 12 48 58"
src="https://github.com/user-attachments/assets/2a07d89b-7510-4565-82bb-26b46fbcf5c4"
/>

_☝🏽 ` ProblemCheck` notices to inform customers_

<img width="1077" height="472" alt="Screenshot 2025-10-02 at 12 49 41"
src="https://github.com/user-attachments/assets/b72028f7-5df2-45a8-8c71-65cf750755ab"
/>

_☝🏽 AI Usage page for easy monitoring_

<img width="1112" height="1083" alt="Screenshot 2025-10-02 at 18 17 01"
src="https://github.com/user-attachments/assets/a01992d5-15a0-472a-9501-bc3bc9a54ade"
/>

_☝🏽 Credit bars underneath relevant LLM models_

<img width="866" height="267" alt="Screenshot 2025-10-03 at 11 35 19"
src="https://github.com/user-attachments/assets/e7b4c0e7-c93d-4b0f-923d-79ac5d53028b"
/>

_☝🏽 Dialog box when trying to use without available credits_
2025-10-14 07:48:20 -07:00
Keegan George 7d4f756a4f FEATURE: Auto enable AI search (full page) when no regular results (#35336)
## 🔍 Overview

In full page search, when there are no regular results, this update
ensures that AI search gets automatically toggled on with its results.
This update also fixes a minor issue with the checkmark icon in the AI
search toggle being incorrectly overridden by a CSS selector.

No system tests as there is a separate todo pending adding all semantic
search related specs.

## 📹 Screen Recording


https://github.com/user-attachments/assets/86ceee81-6c70-40ac-a0c8-ce67d32373d8


## 📸 Screenshots

Before
<img width="1479" height="152" alt="Screenshot 2025-10-10 at 14 36 32"
src="https://github.com/user-attachments/assets/8bacb549-7422-49ae-9cfd-0518aec78c03"
/>

After
<img width="1491" height="170" alt="Screenshot 2025-10-10 at 14 36 26"
src="https://github.com/user-attachments/assets/1d1c72b5-7aac-45e5-b634-033e344cb385"
/>
2025-10-14 07:17:08 -07:00
Blake Erickson 66c63774ac DEV: Fix api docs openapi spec validation errors (#35361)
When validating the openapi spec we were getting the following errors:

```
{
  "messages": [
    "attribute paths.'/categories.json'(post).responses.200.content.'application/json'.schema. is not of type `object`",
    "attribute paths.'/categories/{id}.json'(put).responses.200.content.'application/json'.schema. is not of type `object`",
    "attribute paths.'/c/{id}/show.json'(get).responses.200.content.'application/json'.schema. is not of type `object`",
    "attribute paths.'/posts.json'(get).responses.200.content.'application/json'.schema.items is not of type `object`",
    "attribute paths.'/groups/by-id/{id}.json'(get).operationId is repeated"
  ]
}
```

These changes resolve those openapi spec validation errors.

See:
https://github.com/discourse/discourse_api_docs/pull/139#issuecomment-3393138056
2025-10-14 07:32:58 -06:00
Alan Guo Xiang Tan effe1c98f7 DEV: Double timeout for spec in spec/defer_spec.rb (#35368)
We get the following failure from time to time on CI. Just double the
timeout for now.

```
Failure/Error: expect(x).to eq(3)

  expected: 3
       got: 2

  (compared using ==)

./spec/lib/scheduler/defer_spec.rb:95:in `block (2 levels) in <main>'
./spec/rails_helper.rb:704:in `block (3 levels) in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/benchmark-0.4.1/lib/benchmark.rb:305:in `measure'
./spec/rails_helper.rb:704:in `block (2 levels) in <top (required)>'
./spec/rails_helper.rb:662:in `block (3 levels) in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:185:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:192:in `timeout'
./spec/rails_helper.rb:652:in `block (2 levels) in <top (required)>'
./spec/rails_helper.rb:609:in `block (2 levels) in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/rspec.rb:39:in `block (2 levels) in <top (required)>'
```
2025-10-14 17:13:26 +08:00
Régis Hanol 4d4de3e63d FIX: watching_first_post topic filter & query (#35353)
The "watching first post" notification level is not a topic notification
level but a category/tag notification level.

This fixes both the "topics_filter.rb" and "topic_query.rb" to account
for this and allow the filter to work.

Ref - meta/t/385316
2025-10-14 11:12:24 +02:00
Régis Hanol c5b32aff76 FEATURE: disable link notification user preference (#35352)
This adds a new notification's user preference to allow users to control
whether they are notified whenever one of their topic is being linked in
another post.

Internal ref - t/160259
2025-10-14 10:53:05 +02:00
Martin Brennan b74640a059 FEATURE: Link to "All settings" for real in the admin sidebar (#35263)
This will take admins to the full list of settings, not just the
Required category, saving a click.

c.f.
https://meta.discourse.org/t/menu-item-all-site-settings-please-point-to-admin-site-settings-category-all-results/384952
2025-10-14 15:51:01 +10:00
Arpit Jalan 0a6b3857c5 FEATURE: Update India Diwali 2025 Holiday (#35354)
https://economictimes.indiatimes.com/news/new-updates/when-is-diwali-in-2025-is-deepawali-on-october-20-or-21-kashi-council-has-cleared-confusion-about-the-real-date/articleshow/124518482.cms
2025-10-14 10:34:02 +05:30
Gary Pendergast 0154286caa FIX: Treat the topic status enabled param as a truthy value. (#35366)
When making requests to `/t/:id/status.json`, the behaviour of the
`enabled` parameter is a bit confusing: only the string `"true"` is
treated as a true value, everything else is false (including boolean
`true`, for example).

This change makes use of the ActiveModel Boolean type to cast
falsey/truthy values to `false` and `true`.
2025-10-14 16:00:19 +11:00
Martin Brennan e4b2c51f6a DEV: Add missing in_reply_to_id to sendChatMessage chat plugin API (#35365)
This option is necessary for plugins to be able to reply to a specific
message in a chat channel, when not using threading.
2025-10-14 13:00:56 +10:00
Krzysztof Kotlarek d953089854 FIX: remove unused service (#35364)
Bug introduced in this PR
https://github.com/discourse/discourse/pull/34677
2025-10-14 10:38:00 +08:00
Alan Guo Xiang Tan cf4193e6e1 FIX: Resolve race condition where draft is not loaded for a chat channel (#35351)
1. In `initializers/chat-setup`, we call the async
`this.chatService.loadChannels()` function which we do not call `await`
on.
2. `ChatChannelRoute`'s `model` calls
`this.chatChannelsManager.find(params.channelId)` which will trigger an
API call if the `this.chatService.loadChannels` function has not loaded
the given channel yet.
3. The `ChatChannel` component is then rendered once the route's model
resolves and the `setup` function is called.
Within the `setup` function,
`this.chatChannelsManager.find(params.channelId)` is called to set the
channel's draft.

If the async call in step 1 does not resolve before step 3 happens, the
channel draft will be blank until the component is rerendered. To
resolve this, we can move the responsibility of loading a channel's
draft into `chatDraftsManager` from the `chat` service into the
`chatChannelsManager` service
instead so that a channel's drafts are populated whenever we store a
channel into `chatChannelsManager`.
2025-10-14 10:14:51 +08:00
Krzysztof Kotlarek 568a9328b1 UX: Add exact URL matching for sidebar section links (#34677)
Implements exact URL matching to prioritize specific URL patterns over
Ember route matching in sidebar navigation. When a sidebar link's URL
exactly matches the current URL, it will be highlighted with the
'exact-url-match' class instead of relying on Ember's route-based active
state detection.
2025-10-14 10:11:17 +08:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Discourse CI
714a823365 Build(deps): Bump @rollup/plugin-babel from 6.0.4 to 6.1.0 (#35357)
Bumps
[@rollup/plugin-babel](https://github.com/rollup/plugins/tree/HEAD/packages/babel)
from 6.0.4 to 6.1.0.
-
[Changelog](https://github.com/rollup/plugins/blob/master/packages/babel/CHANGELOG.md)
-
[Commits](https://github.com/rollup/plugins/commits/url-v6.1.0/packages/babel)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Discourse CI <ci@ci.invalid>
2025-10-14 00:35:57 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 65d4ec373d Build(deps-dev): Bump puppeteer-core from 24.24.0 to 24.24.1 (#35359)
Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from
24.24.0 to 24.24.1.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
-
[Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.24.0...puppeteer-core-v24.24.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 00:35:47 +02:00
Sérgio Saquetim 346e815f76 DEV: Replace deprecated Ember's array .clear() (#35158)
Refactor array-clearing logic across the codebase by replacing
`.clear()` with `.length = 0` for improved clarity and compatibility
with standard JavaScript arrays. 
Updated relevant tests and utilities to ensure consistency.

These changes align array management with modern JavaScript 
practices while preserving existing functionality.
2025-10-13 18:11:00 -03:00
Sérgio Saquetim 0c4f285618 DEV: Replace deprecated Ember's array uniq and uniqBy (#35227)
This commit replaces several instances of `.uniq`, `.uniqBy`, and related
array deduplication methods with a new utility function
`uniqueItemsFromArray`. This change ensures proper deduplication logic
across the codebase while addressing the deprecation issues.

**Main Changes:**

* Created new utility function `uniqueItemsFromArray`: Located in a new
file, `array-tools.js`, this function provides a reusable and
configurable alternative for deduplication.
* Replaced old methods: Updated multiple files to use the new utility
function instead of deprecated or custom implementations for
deduplication.
* Replaced manual deduplication: Replace uses of `[...new Set(array)]`
to standardize the deduplication logic across the codebase.
* Added unit tests: Introduced thorough test coverage
(`array-tools-test.js`) to validate functionality and edge cases for the
utility function.
* Updated deprecation workflow: Added logging for deprecated uniq and
uniqBy methods to the `deprecation-workflow.js`.

This change is primarily focused on code quality improvements, ensuring
future-proof deduplication, and maintaining alignment with deprecation
guidelines.
2025-10-13 16:47:36 -03:00
JsBergbau a225da4fd3 DEV: Enhance MyLittleForum importer (#34696)
This extends the **MyLittleForum (MLF) importer** with several optional features to make migrations more complete and reliable.

### New Features (optional via environment variables)
 **Uploads import**: supports attachments and images from the MLF uploads table.  
  - Imported uploads are stored with relative links, ensuring they continue to work even if the forum domain changes.  
- **Legacy link rewriting**: absolute links (`index.php?id=...`) are converted into working Discourse permalinks.  
  - Rewritten links are also created as relative links, so they remain valid after a domain move.  
- **Parent category option**: all imported MLF categories can be placed under a chosen existing category.  
- **Upload repair pass / incremental imports:** already-imported posts can be rescanned to fix broken or newly available upload references, allowing the importer to be run again later with a more up-to-date dataset.  
- **Relaxed upload constraints**: temporarily increases file size limits and allows all extensions during the import step.  

### Other Improvements
- Adjusted for MyLittleForum 2.x schema changes (e.g. `user_location` instead of `user_place`).  
- User import now respects already staged users; avoids errors that would otherwise occur when trying to create them again.  
- Improved BBCode → Markdown conversion: lists and quotes are converted more reliably.  
  - Especially improves handling of quotes at the beginning of posts and ensures following text is not mistakenly included in the quoted block.  
- Thread interlinking restored: legacy links between threads are now rewritten to point to the correct Discourse topics.  

### Environment Variables
- `PARENT_CATEGORY` – import all categories under an existing Discourse category.  
- `REWRITE_LINKS` – rewrite absolute legacy links.  
- `UPLOADS_DIR` – path to the MLF uploads directory (flat namespace).  
- `REPAIR_UPLOAD_LINKS` – repair pass for already-imported posts with links.  
- `LOOSEN_UPLOAD_CONSTRAINTS` – relax upload size/extension checks during import and increases file size limits and allows all extensions during the import step.
2025-10-13 21:23:34 +02:00
Sérgio Saquetim 68b07535fd DEV: Replace deprecated Ember's array compact (#35259)
This commit replaces the use of `.compact()` with `.filter((item) => item !=
null)` across multiple JavaScript files in the codebase. Additionally,
it introduces a new logging handler for a specific deprecation in the
deprecation workflow.

**Main Changes:**

* Replaced `.compact()` with `.filter((item) => item != null)` to
eliminate the Ember Array dependency and align with native JavaScript
practices.
* Deprecation Workflow: Added a log handler for
discourse.native-array-extensions.compact.
2025-10-13 16:10:36 -03:00
Sérgio Saquetim 075d0b8ea1 DEV: Modernize post-stream to remove Ember array deprecations (#35100)
This commit refactors the post-stream module to eliminate deprecated
EmberArray methods and modernize code for improved maintainability.

- Replaces deprecated EmberArray methods with native array operations
and tracked arrays
- Migrates discourseComputed and `.get()` to native getters and fields
- Updates state management to use `@trackedArray` for improved
reactivity
- Aligns computed logic with Ember Octane conventions
- Focuses on deprecation cleanup; no user-facing changes intended
2025-10-13 15:55:15 -03:00
Roman Rizzi f26f894bfc DEV: Re-introduce PG Vector 0.8.0 upgrade (#35233) 2025-10-13 10:55:03 -03:00
Renato Atilio b6772cf5c5 FEATURE: switch to markdown when unsupported tokens are found on rich editor (#35044)
Displays an alert to the user the loaded or pasted markdown isn't fully
supported, and reverts back to markdown mode.
2025-10-13 10:46:54 -03:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 6560341ff8 Build(deps-dev): Bump qunit from 2.24.1 to 2.24.2 (#35343)
Bumps [qunit](https://github.com/qunitjs/qunit) from 2.24.1 to 2.24.2.
- [Release notes](https://github.com/qunitjs/qunit/releases)
- [Changelog](https://github.com/qunitjs/qunit/blob/2.24.2/History.md)
- [Commits](https://github.com/qunitjs/qunit/compare/2.24.1...2.24.2)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 14:54:34 +02:00