[PR #6523] [CLOSED] feat: tag people in notes with @ symbol #25190

Closed
opened 2026-04-16 18:26:47 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/6523
Author: @shawalli
Created: 1/2/2026
Status: Closed

Base: masterHead: feature/people-tagging


📝 Commits (10+)

  • f26fbe7 chore(db): add tag-type column to tags table
  • 97ea0d0 feat(loot-core): people core functionality
  • c6f4684 feat(desktop): basic people functionality
  • 9959e84 feat(desktop-client,loot-core): person filtering logic
  • b8a0afb refactor(desktop-client): person tag colors
  • e26d17e feat(desktop-client): people editor
  • 2de8858 fix(desktop-client,loot-core): allow case-sensitive names for people
  • ef34b81 docs: add release notes for people tags
  • 9760cfe refactor(desktop-client): renamed people-notes files and imports
  • 68e8387 [autofix.ci] apply automated fixes

📊 Changes

71 files changed (+1525 additions, -21 deletions)

View changed files

📝 packages/component-library/src/theme.ts (+4 -0)
📝 packages/desktop-client/e2e/bank-sync.test.ts-snapshots/Bank-Sync-checks-the-page-visuals-1-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/bank-sync.test.ts-snapshots/Bank-Sync-checks-the-page-visuals-2-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/bank-sync.test.ts-snapshots/Bank-Sync-checks-the-page-visuals-3-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-1-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-2-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-3-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-4-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-5-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-6-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-1-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-2-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-3-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-4-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-5-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-6-chromium-linux.png (+0 -0)
📝 packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png (+0 -0)

...and 51 more files

📄 Description

Resolves #3266.

This PR implements a new kind of tag that sits alongside the "normal" tag. While a normal tag begins with the "#" symbol, people tags are prefixed with the "@" symbol. The tag table is augmented to understand tag types and can delineate between normal tags and people tags.

In terms of functionality, people tags work almost identically to normal tags in all ways. The only differences are:

  • people tags default to a different color (light blue rather than light purple)
  • people tags are case-sensitive to store, but case-insensitive for uniqueness, filtering, and matching. This allows people tags to support FirstnameLastname but accept searches for firstnamelastname.
  • people tags have their own management page to manage people tags. While the page itself is separate from the tag management page, the functionality is identical.

Screenshots

The two screenshots shows basic entry of a person tag, as well as existing people tags.

Screenshot 2026-01-01 at 8 18 33 PM Screenshot 2026-01-01 at 8 19 10 PM

The next screenshot shows people tags and normal tags co-existing in the same transaction's notes field.

Screenshot 2026-01-01 at 8 23 12 PM

The following screenshot shows the people management page. Note how some people are lowercased while others are mixed case, and some are first-name only, while others are first-name last-name.

Screenshot 2026-01-01 at 8 20 19 PM

Next, we see that you may add people with a custom color and description, like normal tags in the tag management page.

Screenshot 2026-01-01 at 8 21 43 PM Screenshot 2026-01-01 at 8 21 54 PM

This screenshot shows that the filtering people works the same as normal tags.

Screenshot 2026-01-01 at 8 20 51 PM

This screenshot shows that the filter menu has a new "has people" selector.

Screenshot 2026-01-01 at 8 28 42 PM

The following screenshot shows that multiple people filters can work together, just like multiple tag filters work together.

Screenshot 2026-01-01 at 8 21 08 PM

The last two screenshots show how the theming is consistently applied to people tags.

Screenshot 2026-01-02 at 7 41 34 AM Screenshot 2026-01-02 at 7 41 40 AM

Summary by CodeRabbit

  • New Features

    • Full "People" feature: dedicated People page and management UI to add/edit/delete people, colors, and descriptions
    • Sidebar entry and navigation route for People
    • Clickable @mentions in notes that filter transactions by person
    • New "has people" filter operator supported throughout UI and rules
  • Backend

    • Server APIs and sync support for people (fetch/create/update/delete/find)
  • Tests

    • Added tests for @mention parsing
  • Style

    • New theme tokens for people styling (backgrounds, hover, text)

✏️ Tip: You can customize this high-level summary in your review settings.


🔄 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/actualbudget/actual/pull/6523 **Author:** [@shawalli](https://github.com/shawalli) **Created:** 1/2/2026 **Status:** ❌ Closed **Base:** `master` ← **Head:** `feature/people-tagging` --- ### 📝 Commits (10+) - [`f26fbe7`](https://github.com/actualbudget/actual/commit/f26fbe710420f2d39ab1ac848fe755d2837440b9) chore(db): add tag-type column to tags table - [`97ea0d0`](https://github.com/actualbudget/actual/commit/97ea0d0e756d92e32c9d427eedb3adb1efe856db) feat(loot-core): people core functionality - [`c6f4684`](https://github.com/actualbudget/actual/commit/c6f46840ec3b942162cba2f9e25fe0a4c3570fc2) feat(desktop): basic people functionality - [`9959e84`](https://github.com/actualbudget/actual/commit/9959e84cb37a43f958a6acecd979317bca21630d) feat(desktop-client,loot-core): person filtering logic - [`b8a0afb`](https://github.com/actualbudget/actual/commit/b8a0afb943fead44b4981aa02016f5197ea29dc9) refactor(desktop-client): person tag colors - [`e26d17e`](https://github.com/actualbudget/actual/commit/e26d17e104af0e4417da6fb6bef158808b03e7cc) feat(desktop-client): people editor - [`2de8858`](https://github.com/actualbudget/actual/commit/2de8858447ef9e5804da9b62847227f72b695104) fix(desktop-client,loot-core): allow case-sensitive names for people - [`ef34b81`](https://github.com/actualbudget/actual/commit/ef34b813bebe1131114e2dad57d651fdb2e94dac) docs: add release notes for people tags - [`9760cfe`](https://github.com/actualbudget/actual/commit/9760cfe102c499deaa41c2e4e6ce5706f46efc1b) refactor(desktop-client): renamed people-notes files and imports - [`68e8387`](https://github.com/actualbudget/actual/commit/68e8387bb983c4c40444b62329ab24326df38a2d) [autofix.ci] apply automated fixes ### 📊 Changes **71 files changed** (+1525 additions, -21 deletions) <details> <summary>View changed files</summary> 📝 `packages/component-library/src/theme.ts` (+4 -0) 📝 `packages/desktop-client/e2e/bank-sync.test.ts-snapshots/Bank-Sync-checks-the-page-visuals-1-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/bank-sync.test.ts-snapshots/Bank-Sync-checks-the-page-visuals-2-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/bank-sync.test.ts-snapshots/Bank-Sync-checks-the-page-visuals-3-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-1-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-2-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-3-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-4-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-5-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-6-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-1-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-2-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-3-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-4-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-5-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-6-chromium-linux.png` (+0 -0) 📝 `packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png` (+0 -0) _...and 51 more files_ </details> ### 📄 Description Resolves #3266. This PR implements a new kind of tag that sits alongside the "normal" tag. While a normal tag begins with the "#" symbol, people tags are prefixed with the "@" symbol. The tag table is augmented to understand tag types and can delineate between normal tags and people tags. In terms of functionality, people tags work almost identically to normal tags in all ways. The only differences are: - people tags default to a different color (light blue rather than light purple) - people tags are case-sensitive to store, but case-insensitive for uniqueness, filtering, and matching. This allows people tags to support FirstnameLastname but accept searches for firstnamelastname. - people tags have their own management page to manage people tags. While the page itself is separate from the tag management page, the functionality is identical. ## Screenshots The two screenshots shows basic entry of a person tag, as well as existing people tags. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 18 33 PM" src="https://github.com/user-attachments/assets/c2559b65-9d44-4291-b5ae-15804d1cb533" /> <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 19 10 PM" src="https://github.com/user-attachments/assets/23cf8abd-e3c5-4033-b153-e6902c42be81" /> The next screenshot shows people tags and normal tags co-existing in the same transaction's notes field. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 23 12 PM" src="https://github.com/user-attachments/assets/8aee6464-7587-46dc-a200-69e7599a766a" /> The following screenshot shows the people management page. Note how some people are lowercased while others are mixed case, and some are first-name only, while others are first-name last-name. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 20 19 PM" src="https://github.com/user-attachments/assets/732214a9-9aa7-4ce9-a51a-a9b51ef27c64" /> Next, we see that you may add people with a custom color and description, like normal tags in the tag management page. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 21 43 PM" src="https://github.com/user-attachments/assets/c7e6a769-45b2-48b6-975f-c4cbe559a2f0" /> <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 21 54 PM" src="https://github.com/user-attachments/assets/13d1f1b7-e172-4322-8b2b-a9b96a3dcadf" /> This screenshot shows that the filtering people works the same as normal tags. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 20 51 PM" src="https://github.com/user-attachments/assets/07cb1501-f415-4af4-9aac-85746b668295" /> This screenshot shows that the filter menu has a new "has people" selector. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 28 42 PM" src="https://github.com/user-attachments/assets/ea82b3b5-b139-4f57-8b39-dd1003eeeab0" /> The following screenshot shows that multiple people filters can work together, just like multiple tag filters work together. <img width="1423" height="559" alt="Screenshot 2026-01-01 at 8 21 08 PM" src="https://github.com/user-attachments/assets/6b018b66-5892-4cc5-8a57-2c0bf16d4114" /> The last two screenshots show how the theming is consistently applied to people tags. <img width="1423" height="559" alt="Screenshot 2026-01-02 at 7 41 34 AM" src="https://github.com/user-attachments/assets/707dc141-e377-4523-a4e4-12b0e66d4915" /> <img width="1423" height="559" alt="Screenshot 2026-01-02 at 7 41 40 AM" src="https://github.com/user-attachments/assets/f9d328cd-6056-4c30-9b00-fe4065ce7e85" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Full "People" feature: dedicated People page and management UI to add/edit/delete people, colors, and descriptions * Sidebar entry and navigation route for People * Clickable @mentions in notes that filter transactions by person * New "has people" filter operator supported throughout UI and rules * **Backend** * Server APIs and sync support for people (fetch/create/update/delete/find) * **Tests** * Added tests for @mention parsing * **Style** * New theme tokens for people styling (backgrounds, hover, text) <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> --- <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 18:26:47 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#25190