[PR #2622] [MERGED] feat(editor): emoji autocomplete with :shortcode trigger #5776

Closed
opened 2026-04-16 13:51:53 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/go-vikunja/vikunja/pull/2622
Author: @tink-bot
Created: 4/14/2026
Status: Merged
Merged: 4/14/2026
Merged by: @kolaente

Base: mainHead: feat-emoji-autocomplete


📝 Commits (6)

  • 3f278e1 feat(editor): add lazy emoji data loader and filter
  • 44a1c23 feat(editor): add EmojiList popup component
  • 041d4d1 feat(editor): add emoji suggestion handler
  • 24fc294 feat(editor): add emoji TipTap extension
  • 51820ab feat(editor): register emoji autocomplete extension
  • 302d809 test(editor): add e2e for emoji autocomplete

📊 Changes

8 files changed (+550 additions, -0 deletions)

View changed files

📝 frontend/src/components/input/editor/TipTap.vue (+3 -0)
frontend/src/components/input/editor/emoji/EmojiList.vue (+156 -0)
frontend/src/components/input/editor/emoji/emojiData.test.ts (+58 -0)
frontend/src/components/input/editor/emoji/emojiData.ts (+75 -0)
frontend/src/components/input/editor/emoji/emojiExtension.ts (+23 -0)
frontend/src/components/input/editor/emoji/emojiSuggestion.ts (+147 -0)
📝 frontend/src/i18n/lang/en.json (+3 -0)
frontend/tests/e2e/editor/emoji-autocomplete.spec.ts (+85 -0)

📄 Description

Adds an emoji autocomplete popup to the TipTap editor. Typing : after whitespace (or at the start of a line) followed by a shortcode shows a filterable list; selecting an entry inserts the raw unicode glyph.

Notes

  • Emoji index is lazy-loaded from /emojis.json on first trigger and cached.
  • The suggestion plugin uses a dedicated PluginKey to avoid colliding with the existing slash-command Suggestion plugin (the default key is 'suggestion', shared otherwise).
  • Out of scope per plan: :shortcode: auto-replace InputRule, AddTask plain-textarea autocompletion, skin-tone variants, recently-used ordering, and server-side custom emoji.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/go-vikunja/vikunja/pull/2622 **Author:** [@tink-bot](https://github.com/tink-bot) **Created:** 4/14/2026 **Status:** ✅ Merged **Merged:** 4/14/2026 **Merged by:** [@kolaente](https://github.com/kolaente) **Base:** `main` ← **Head:** `feat-emoji-autocomplete` --- ### 📝 Commits (6) - [`3f278e1`](https://github.com/go-vikunja/vikunja/commit/3f278e14f1e45121605e6ad3de418ac41cc963bf) feat(editor): add lazy emoji data loader and filter - [`44a1c23`](https://github.com/go-vikunja/vikunja/commit/44a1c23f9efec1240e304b1c2139f2a064809bd5) feat(editor): add EmojiList popup component - [`041d4d1`](https://github.com/go-vikunja/vikunja/commit/041d4d1a0aab651c6025eb6c3b4f7da57a9a5266) feat(editor): add emoji suggestion handler - [`24fc294`](https://github.com/go-vikunja/vikunja/commit/24fc294d02e4ba6066c110e9f555b02f5ea46d83) feat(editor): add emoji TipTap extension - [`51820ab`](https://github.com/go-vikunja/vikunja/commit/51820ab4343b1539feb52c03f39c6d23c2b2efa5) feat(editor): register emoji autocomplete extension - [`302d809`](https://github.com/go-vikunja/vikunja/commit/302d809c40ee8356bc90ac097270f361f0630900) test(editor): add e2e for emoji autocomplete ### 📊 Changes **8 files changed** (+550 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `frontend/src/components/input/editor/TipTap.vue` (+3 -0) ➕ `frontend/src/components/input/editor/emoji/EmojiList.vue` (+156 -0) ➕ `frontend/src/components/input/editor/emoji/emojiData.test.ts` (+58 -0) ➕ `frontend/src/components/input/editor/emoji/emojiData.ts` (+75 -0) ➕ `frontend/src/components/input/editor/emoji/emojiExtension.ts` (+23 -0) ➕ `frontend/src/components/input/editor/emoji/emojiSuggestion.ts` (+147 -0) 📝 `frontend/src/i18n/lang/en.json` (+3 -0) ➕ `frontend/tests/e2e/editor/emoji-autocomplete.spec.ts` (+85 -0) </details> ### 📄 Description Adds an emoji autocomplete popup to the TipTap editor. Typing `:` after whitespace (or at the start of a line) followed by a shortcode shows a filterable list; selecting an entry inserts the raw unicode glyph. ## Notes - Emoji index is lazy-loaded from `/emojis.json` on first trigger and cached. - The suggestion plugin uses a dedicated `PluginKey` to avoid colliding with the existing slash-command `Suggestion` plugin (the default key is `'suggestion'`, shared otherwise). - Out of scope per plan: `:shortcode:` auto-replace InputRule, AddTask plain-textarea autocompletion, skin-tone variants, recently-used ordering, and server-side custom emoji. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-16 13:51:53 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/vikunja#5776