Add quoting by url / in replies #3488

Merged
hj merged 1 commit from iamtakingiteasy/pleroma-fe:gitlab-mr-iid-2164 into develop 2026-03-26 19:22:38 +00:00

Re-created (now deleted/lost) https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/2204 (which will probably start referencing some unrelated changes in the future, when MR ID is re-used not since gitlab is gone and numeration jumped to 3k)
Re-created (botched by migration from gitlab) #3431

Current quoting UI implementation only allows to embed a quote in the first post of a thread, referencing another post in replies in federation-compatible way is not possible. Aside from main limitation, current UI is also sticking out disproportionately, at least in the default theme. This MR aims to address both issues by moving quoting controls to it's own form activated by a status action button, similarly to polls, allowing to quote-by-url and choose whether to start a new thread with quote-reply. URL input accepts both /notice/ and resolvable APID links via search v2 API.

description (v1)

Additionally a convenience setting "When quoting, quote replied post in a new thread by default" is added;

  • When enabled, clicking on new "Quote" button auto-fills the URL with post that is being replied to and checks start-new-thread, so behavior matches the click on current radio-button.
  • When disabled, even in replies URL is not prefilled and start-new-thread is unchecked, allowing to readily paste a link to some other post.

Changes

  • Replaces quote/reply radio buttons with more subdued quote status action button revealing form with quote url input, start-new-thread checkbox and quote preview.
  • Adds a new setting to control whether quote form should be prefilled with replied post url and start-new-thread prechecked.
  • Fixes API data attached to thrown Errors using constructor cause field, rather than otherwise ignored object.
  • Changes external link for local posts from URL to URI if available, effectively replacing /notice/ link that is available anyway from routing with the APID link that isn't currently available for local posts at all.
  • Removes lower bound on grid-gap between status action buttons to fit quote preview nicely in a left column, when drafting new post.

Changes

  • Adds quote status action button revealing form with quote url input and quote preview.
  • Fixes API data attached to thrown Errors using constructor cause field, rather than otherwise ignored object.
  • Changes external link for local posts from URL to URI if available, effectively replacing /notice/ link that is available anyway from routing with the APID link that isn't currently available for local posts at all.
  • Removes lower bound on grid-gap between status action buttons to fit quote preview nicely in a left column, when drafting new post.

As side-effect of using search v2 API, technically a unique combination of terms may also be used to lookup the post to quote.

screenshots (before) Before:

quote-before-initial
quote-before

screenshots (v1) After:

quote-after-initial
quote-after-notice
quote-after-apid
quote-after-text

new-post-quote

screenshots (v2) After:

v2-quote-after-initial
v2-quote-after-thread
v2-quote-after-preview

v2-quote-after-new-post

<!-- Feel free to submit merge requests that are work-in-progress, but mark them as Draft: or WIP:. Merge requests that have Draft or WIP status will not be merged and have less chances of being reviewed, but you can still ask people to take a look if you need advice. --> _Re-created (now deleted/lost) https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/2204 (~~which will probably start referencing some unrelated changes in the future, when MR ID is re-used~~ not since gitlab is gone and numeration jumped to 3k)_ _Re-created (botched by migration from gitlab) https://git.pleroma.social/pleroma/pleroma-fe/pulls/3431_ Current quoting UI implementation only allows to embed a quote in the first post of a thread, referencing another post in replies in federation-compatible way is not possible. Aside from main limitation, current UI is also sticking out disproportionately, at least in the default theme. This MR aims to address both issues by moving quoting controls to it's own form activated by a status action button, similarly to polls, allowing to quote-by-url and choose whether to start a new thread with quote-reply. URL input accepts both /notice/ and resolvable APID links via search v2 API. <details><summary>description (v1)</summary> Additionally a convenience setting "When quoting, quote replied post in a new thread by default" is added; - When enabled, clicking on new "Quote" button auto-fills the URL with post that is being replied to and checks start-new-thread, so behavior matches the click on current radio-button. - When disabled, even in replies URL is not prefilled and start-new-thread is unchecked, allowing to readily paste a link to some other post. # Changes * ~~Replaces quote/reply radio buttons with more subdued~~ quote status action button revealing form with quote url input, ~~start-new-thread checkbox~~ and quote preview. * ~~Adds a new setting to control whether quote form should be prefilled with replied post url and start-new-thread prechecked.~~ * Fixes API data attached to thrown `Errors` using constructor [cause](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause) field, rather than otherwise ignored object. * Changes external link for local posts from URL to URI if available, effectively replacing /notice/ link that is available anyway from routing with the APID link that isn't currently available for local posts at all. * Removes lower bound on grid-gap between status action buttons to fit quote preview nicely in a left column, when drafting new post. </details> # Changes * Adds quote status action button revealing form with quote url input and quote preview. * Fixes API data attached to thrown `Errors` using constructor [cause](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause) field, rather than otherwise ignored object. * Changes external link for local posts from URL to URI if available, effectively replacing /notice/ link that is available anyway from routing with the APID link that isn't currently available for local posts at all. * Removes lower bound on grid-gap between status action buttons to fit quote preview nicely in a left column, when drafting new post. As side-effect of using search v2 API, technically a unique combination of terms may also be used to lookup the post to quote. <details><summary>screenshots (before)</summary> Before: ![quote-before-initial](/attachments/c98490f7-838b-4cab-89a5-295661cb2d80) ![quote-before](/attachments/032b85a5-638b-4188-8da6-1d0f9d882def) </details> <details><summary>screenshots (v1)</summary> After: ![quote-after-initial](/attachments/c770e6df-ae38-433d-b1e5-ed079f021bcc) ![quote-after-notice](/attachments/7060a58a-4335-4fc8-b8bb-41d28f566fbd) ![quote-after-apid](/attachments/3f1eec55-e00e-40f8-aff8-cf357b7ec233) ![quote-after-text](/attachments/fce95ee2-e654-47b4-9713-ceb047a528ca) ![new-post-quote](/attachments/5b853734-bf11-439b-9f4b-252febe5a37a) </details> <details><summary>screenshots (v2)</summary> After: ![v2-quote-after-initial](/attachments/26a997cd-a673-44e3-a363-da27b1391aa5) ![v2-quote-after-thread](/attachments/576a1935-4079-4837-abc9-7b62e38b449f) ![v2-quote-after-preview](/attachments/8cb84e52-5cbb-4a08-ba6b-76f48c717665) ![v2-quote-after-new-post](/attachments/24e187e8-41b0-4e0e-9171-fe3b9f7f9034) </details>
iamtakingiteasy force-pushed gitlab-mr-iid-2164 from 702dcc8292 to 7b26819abc 2026-03-26 15:08:54 +00:00 Compare
Owner

"start new thread" combined with a link is a bit confusing. I'd suggest keeping existing buttons + add "quote" icon next to poll one that expands into field "quote post by url" or something

"start new thread" combined with a link is a bit confusing. I'd suggest keeping existing buttons + add "quote" icon next to poll one that expands into field "quote post by url" or something
Author
Member

@hj Won't this be even more confusing, if user selects "Quote this status" in a reply, then provides a link to another post, or provides link to a post, then selects "Quote this post"?

We could try to work-around that with disables: disable quote icon if "Quote this status" is selected and disable "Quote this status" if link/text is provided in a quote field, would you prefer that to the proposed "Start new thread" toggle? If nothing else, with "Start new thread" no non-obvious disables are necessary, everything is as presented.

Also just to clarify: quote icon next to poll expanding the quote form is already present, see screenshots.

@hj Won't this be even more confusing, if user selects "Quote this status" in a reply, then provides a link to another post, or provides link to a post, then selects "Quote this post"? We could try to work-around that with disables: disable quote icon if "Quote this status" is selected and disable "Quote this status" if link/text is provided in a quote field, would you prefer that to the proposed "Start new thread" toggle? If nothing else, with "Start new thread" no non-obvious disables are necessary, everything is as presented. Also just to clarify: quote icon next to poll expanding the quote form is already present, see screenshots.
Owner

Yeah disabling one or the other is right way.

Yeah disabling one or the other is right way.
iamtakingiteasy force-pushed gitlab-mr-iid-2164 from 7b26819abc to 7aefda4211 2026-03-26 18:29:21 +00:00 Compare
Author
Member

Done, updated screenshots and MR description.

Done, updated screenshots and MR description.
hj merged commit 8df10bd595 into develop 2026-03-26 19:22:38 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pleroma/pleroma-fe!3488
No description provided.