From 89ae2e6f46ef849a188926efd7db5b974cad0075 Mon Sep 17 00:00:00 2001 From: Phantasm Date: Wed, 11 Feb 2026 14:03:59 +0100 Subject: [PATCH 01/13] Forgejo: Add PR template from Gitlab --- .gitea/pull_request_template.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .gitea/pull_request_template.md diff --git a/.gitea/pull_request_template.md b/.gitea/pull_request_template.md new file mode 100644 index 000000000..d2d7689bd --- /dev/null +++ b/.gitea/pull_request_template.md @@ -0,0 +1,12 @@ +### Checklist +- [ ] Adding a changelog: In the `changelog.d` directory, create a file named `.`. + + From 8d06ccb04e8e8efd336bed2a654fb61c33076377 Mon Sep 17 00:00:00 2001 From: Phantasm Date: Wed, 11 Feb 2026 14:47:48 +0100 Subject: [PATCH 02/13] Forgejo: Remake Gitlab Bug issue template --- .gitea/issue_template/bug.yaml | 87 ++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .gitea/issue_template/bug.yaml diff --git a/.gitea/issue_template/bug.yaml b/.gitea/issue_template/bug.yaml new file mode 100644 index 000000000..082ee496e --- /dev/null +++ b/.gitea/issue_template/bug.yaml @@ -0,0 +1,87 @@ +name: 'Bug report' +about: 'Bug report for Pleroma FE' +labels: + - Bug +body: +- type: input + id: env-browser + attributes: + label: Browser and OS + description: What browser are you using, including version, and what OS are you running? + placeholder: Firefox 140, Arch Linux + validations: + required: true +- type: input + id: env-instance + attributes: + label: Instance URL + validations: + required: false +- type: input + id: env-backend + attributes: + label: Backend version information + description: Backend version being used. (See Settings->Show advanced->Developer) + placeholder: Pleroma BE 2.10 + validations: + required: true +- type: input + id: env-frontend + attributes: + label: Frontend version information + description: Frontend version being used. (See Settings->Show advanced->Developer) + placeholder: Pleroma FE 2.10 + validations: + required: true +- type: input + id: env-extensions + attributes: + label: Browser extensions + description: List of browser extensions you are using, like uBlock, rikaichamp etc. If none leave empty. + validations: + required: false +- type: input + id: env-modifications + attributes: + label: Known instance/user customizations + description: Whether you are using a Pleroma FE fork, any mods mods or instance level styles among others. + validations: + required: false +- type: textarea + id: bug-text + attributes: + label: Bug description + description: A short description of the bug. Images can be helpful. + validations: + required: true +- type: textarea + id: bug-reproducer + attributes: + label: Reproduction steps + description: Ordered list of reproduction steps needed to make the bug happen. If you don't have reproduction steps, leave this empty. + placeholder: | + 1. Log in with a fresh browser session + 2. Open timeline X + 3. Click on button Y + 4. Z broke + validations: + required: false +- type: textarea + id: bug-seriousness + attributes: + label: Bug seriousness + value: | + * How annoying it is: + * How often does it happen: + * How many people does it affect: + * Is there a workaround for it: +- type: checkboxes + id: duplicate-issues + attributes: + label: Duplicate issues + hide_label: true + description: Before submitting this issue, search for same or similar issues on the [Pleroma FE bug tracker](https://git.pleroma.social/pleroma/pleroma-fe/issues). + options: + - label: I've searched for same or similar issues before submitting this issue. + required: true + visible: [form] From 3b9187694c8cd5bf3f4636682731496b13dab67d Mon Sep 17 00:00:00 2001 From: Phantasm Date: Wed, 11 Feb 2026 18:29:19 +0100 Subject: [PATCH 03/13] Forgejo: Readd feature request/suggestion issue template from Gitlab --- .gitea/issue_template/suggestion.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .gitea/issue_template/suggestion.yaml diff --git a/.gitea/issue_template/suggestion.yaml b/.gitea/issue_template/suggestion.yaml new file mode 100644 index 000000000..c1531d8e3 --- /dev/null +++ b/.gitea/issue_template/suggestion.yaml @@ -0,0 +1,22 @@ +name: 'Feature request / Suggestion / Improvement' +about: 'Feature requests, suggestions and improvements for Pleroma FE' +labels: + - Feature Request / Enhancement +body: +- type: textarea + id: issue-text + attributes: + label: Proposal + placeholder: Make groups happen! + validations: + required: true +- type: checkboxes + id: duplicate-issues + attributes: + label: Duplicate issues + hide_label: true + description: Before submitting this issue, search for same or similar requests on the [Pleroma FE bug tracker](https://git.pleroma.social/pleroma/pleroma-fe/issues). + options: + - label: I've searched for same or similar requests before submitting this issue. + required: true + visible: [form] From 23fae89413eb230102648062956c60e547b1c516 Mon Sep 17 00:00:00 2001 From: Phantasm Date: Wed, 11 Feb 2026 18:50:54 +0100 Subject: [PATCH 04/13] Change .gitea to .forgejo This is not really needed as Forgejo can handle it right now. --- {.gitea => .forgejo}/issue_template/bug.yaml | 0 {.gitea => .forgejo}/issue_template/suggestion.yaml | 0 {.gitea => .forgejo}/pull_request_template.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {.gitea => .forgejo}/issue_template/bug.yaml (100%) rename {.gitea => .forgejo}/issue_template/suggestion.yaml (100%) rename {.gitea => .forgejo}/pull_request_template.md (100%) diff --git a/.gitea/issue_template/bug.yaml b/.forgejo/issue_template/bug.yaml similarity index 100% rename from .gitea/issue_template/bug.yaml rename to .forgejo/issue_template/bug.yaml diff --git a/.gitea/issue_template/suggestion.yaml b/.forgejo/issue_template/suggestion.yaml similarity index 100% rename from .gitea/issue_template/suggestion.yaml rename to .forgejo/issue_template/suggestion.yaml diff --git a/.gitea/pull_request_template.md b/.forgejo/pull_request_template.md similarity index 100% rename from .gitea/pull_request_template.md rename to .forgejo/pull_request_template.md From 208600bd16332f158559264dbeeefa59ea65e81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Mon, 16 Feb 2026 13:56:27 +0100 Subject: [PATCH 05/13] Fix HTML attribute parsing for escaped quotes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- changelog.d/attrs-parsing.fix | 1 + src/services/html_converter/utility.service.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog.d/attrs-parsing.fix diff --git a/changelog.d/attrs-parsing.fix b/changelog.d/attrs-parsing.fix new file mode 100644 index 000000000..e36e59a86 --- /dev/null +++ b/changelog.d/attrs-parsing.fix @@ -0,0 +1 @@ +Fix HTML attribute parsing for escaped quotes \ No newline at end of file diff --git a/src/services/html_converter/utility.service.js b/src/services/html_converter/utility.service.js index 5cdcf33cd..4c36eda2f 100644 --- a/src/services/html_converter/utility.service.js +++ b/src/services/html_converter/utility.service.js @@ -23,7 +23,7 @@ export const getAttrs = (tag, filter) => { .replace(/\/?$/, '') .trim() const attrs = Array.from( - innertag.matchAll(/([a-z]+[a-z0-9-]*)(?:=("[^"]+?"|'[^']+?'))?/gi), + innertag.matchAll(/([a-z]+[a-z0-9-]*)(?:=((?:"(?:\\.|[^"\\])*")|(?:'(?:\\.|[^'\\])*')))?/gi), ) .map(([, key, value]) => [key, value]) .map(([k, v]) => { From 38444f3165db376d3ca4e5a70c77ce7beac1bb5e Mon Sep 17 00:00:00 2001 From: Yonle Date: Fri, 27 Feb 2026 04:12:47 +0700 Subject: [PATCH 06/13] attachment: fix over reliance on fileType() Signed-off-by: Yonle --- src/components/attachment/attachment.js | 26 +++++++------------ src/components/attachment/attachment.vue | 24 ++++++++--------- .../chat_list_item/chat_list_item.js | 4 +-- src/components/gallery/gallery.js | 12 +++------ src/components/media_modal/media_modal.js | 11 ++------ src/components/media_modal/media_modal.vue | 8 +++--- .../post_status_form/post_status_form.js | 4 --- src/components/status_body/status_body.js | 4 +-- .../entity_normalizer.service.js | 6 +++++ src/stores/media_viewer.js | 5 +--- 10 files changed, 41 insertions(+), 63 deletions(-) diff --git a/src/components/attachment/attachment.js b/src/components/attachment/attachment.js index db5171c80..f7c5340e3 100644 --- a/src/components/attachment/attachment.js +++ b/src/components/attachment/attachment.js @@ -1,7 +1,6 @@ import { mapGetters } from 'vuex' import nsfwImage from '../../assets/nsfw.png' -import fileTypeService from '../../services/file_type/file_type.service.js' import Flash from '../flash/flash.vue' import StillImage from '../still-image/still-image.vue' import VideoAttachment from '../video_attachment/video_attachment.vue' @@ -61,9 +60,7 @@ const Attachment = { hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw, preloadImage: this.$store.getters.mergedConfig.preloadImage, loading: false, - img: - fileTypeService.fileType(this.attachment.mimetype) === 'image' && - document.createElement('img'), + img: this.attachment.type == "image" && document.createElement('img'), modalOpen: false, showHidden: false, flashLoaded: false, @@ -84,7 +81,7 @@ const Attachment = { '-editable': this.edit !== undefined, '-compact': this.compact, }, - '-type-' + this.type, + '-type-' + this.attachment.type, this.size && '-size-' + this.size, `-${this.useContainFit ? 'contain' : 'cover'}-fit`, ] @@ -97,14 +94,14 @@ const Attachment = { }, placeholderName() { if (this.attachment.description === '' || !this.attachment.description) { - return this.type.toUpperCase() + return this.attachment.type.toUpperCase() } return this.attachment.description }, placeholderIconClass() { - if (this.type === 'image') return 'image' - if (this.type === 'video') return 'video' - if (this.type === 'audio') return 'music' + if (this.attachment.type === 'image') return 'image' + if (this.attachment.type === 'video') return 'video' + if (this.attachment.type === 'audio') return 'music' return 'file' }, referrerpolicy() { @@ -112,14 +109,11 @@ const Attachment = { ? '' : 'no-referrer' }, - type() { - return fileTypeService.fileType(this.attachment.mimetype) - }, hidden() { return this.nsfw && this.hideNsfwLocal && !this.showHidden }, isEmpty() { - return this.type === 'html' && !this.attachment.oembed + return this.attachment.type === 'html' && !this.attachment.oembed }, useModal() { let modalTypes = [] @@ -134,7 +128,7 @@ const Attachment = { : ['image'] break } - return modalTypes.includes(this.type) + return modalTypes.includes(this.attachment.type) }, videoTag() { return this.useModal ? 'button' : 'span' @@ -159,7 +153,7 @@ const Attachment = { if (this.useModal) { this.$emit('setMedia') useMediaViewerStore().setCurrentMedia(this.attachment) - } else if (this.type === 'unknown') { + } else if (this.attachment.type === 'unknown') { window.open(this.attachment.url) } }, @@ -192,7 +186,7 @@ const Attachment = { if ( this.mergedConfig.useOneClickNsfw && !this.showHidden && - (this.type !== 'video' || this.mergedConfig.playVideosInModal) + (this.attachment.type !== 'video' || this.mergedConfig.playVideosInModal) ) { this.openModal(event) return diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue index 696d3bb8a..0db86ff8a 100644 --- a/src/components/attachment/attachment.vue +++ b/src/components/attachment/attachment.vue @@ -6,7 +6,7 @@ @click="openModal" > @@ -80,7 +80,7 @@ class="attachment-buttons" >