Skip to content

feat: add title tooltip to truncated transaction cells#7415

Open
jonathanking wants to merge 6 commits intoactualbudget:masterfrom
jonathanking:feat/truncated-cell-tooltip
Open

feat: add title tooltip to truncated transaction cells#7415
jonathanking wants to merge 6 commits intoactualbudget:masterfrom
jonathanking:feat/truncated-cell-tooltip

Conversation

@jonathanking
Copy link
Copy Markdown

@jonathanking jonathanking commented Apr 7, 2026

Summary

Adds native browser title attributes to truncated cells in the transaction table, so hovering reveals the full content. This is a minimal change (4 lines added, 1 changed) that improves usability for long notes, payee names, and categories.

  • Desktop register: Adds title to UnexposedCellContent in table.tsx. Uses the formatted display value when it's a string (payee/category/account names), falls back to the raw value when the formatter returns JSX (e.g. notes with #tag formatting).

Closes #6735

Changes

File Change
packages/desktop-client/src/components/table.tsx Add title to UnexposedCellContent's <Text> element
packages/desktop-client/src/components/mobile/transactions/TransactionListItem.tsx Add title={notes} to notes <TextOneLine>

Test plan

  • Desktop register: hover over a truncated notes cell → full note text appears as tooltip
  • Desktop register: hover over a truncated payee/category/account → human-readable name appears (not UUID)
  • Notes with #tags: tooltip shows plain text, colored tags render normally in the cell

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 27 12.4 MB → 12.41 MB (+162 B) +0.00%
loot-core 1 4.84 MB 0%
api 1 3.83 MB 0%
cli 1 7.89 MB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
27 12.4 MB → 12.41 MB (+162 B) +0.00%
Changeset
File Δ Size
src/components/transactions/TransactionsTable.tsx 📈 +162 B (+0.18%) 88.41 kB → 88.57 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/useTransactionBatchActions.js 4.33 MB → 4.33 MB (+162 B) +0.00%

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
static/js/index.js 3.31 MB 0%
static/js/BackgroundImage.js 121.09 kB 0%
static/js/FormulaEditor.js 852.77 kB 0%
static/js/ReportRouter.js 1.17 MB 0%
static/js/TransactionList.js 82.49 kB 0%
static/js/ca.js 190.11 kB 0%
static/js/da.js 104.66 kB 0%
static/js/de.js 174.79 kB 0%
static/js/en-GB.js 7.16 kB 0%
static/js/en.js 173.2 kB 0%
static/js/es.js 182.18 kB 0%
static/js/fr.js 177.47 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 166.25 kB 0%
static/js/narrow.js 363.02 kB 0%
static/js/nb-NO.js 152.2 kB 0%
static/js/nl.js 108.93 kB 0%
static/js/pl.js 88.34 kB 0%
static/js/pt-BR.js 177.84 kB 0%
static/js/resize-observer.js 18.06 kB 0%
static/js/th.js 179.94 kB 0%
static/js/theme.js 30.79 kB 0%
static/js/uk.js 213.14 kB 0%
static/js/wide.js 295 B 0%
static/js/workbox-window.prod.es5.js 7.33 kB 0%
static/js/zh-Hans.js 94.19 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 4.84 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
kcab.worker.BkkdkSI8.js 4.84 MB 0%

api

Total

Files count Total bundle size % Changed
1 3.83 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
index.js 3.83 MB 0%

cli

Total

Files count Total bundle size % Changed
1 7.89 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
cli.js 7.89 MB 0%

Add native browser `title` attributes so that hovering over truncated
cells reveals their full content. This applies to all columns in the
desktop transaction register (notes, payee, category, account) via the
shared `UnexposedCellContent` component, and to the mobile transaction
list notes via `TransactionListItem`.

For columns where the formatter returns a display name string (payee,
category, account), the tooltip shows the human-readable name. For
columns where the formatter returns JSX (e.g. notes with colored tags),
it falls back to the raw text value.

Closes actualbudget#6735
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 7, 2026

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit aac18f7
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget/deploys/69d5da9fd2465f0008c355ba
😎 Deploy Preview https://deploy-preview-7415.demo.actualbudget.org
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

👋 Hello contributor!

We would love to review your PR! Before we can do that, please make sure:

  • ✅ All CI checks pass
  • ✅ The PR is moved from draft to open (if applicable)
  • ✅ The "[WIP]" prefix is removed from the PR title
  • ✅ All CodeRabbit code review comments are resolved (if you disagree with anything - reply to the bot with your reasoning so we can read through it). The bot will eventually approve the PR.

We do this to reduce the TOIL the core contributor team has to go through for each PR and to allow for speedy reviews and merges.

For more information, please see our Contributing Guide.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jonathanking jonathanking marked this pull request as ready for review April 7, 2026 22:42
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 7, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: c5bab8a5-fbca-4f0c-b546-f366d12d2a72

📥 Commits

Reviewing files that changed from the base of the PR and between ee1abbe and aac18f7.

📒 Files selected for processing (1)
  • packages/desktop-client/src/components/transactions/TransactionsTable.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/desktop-client/src/components/transactions/TransactionsTable.tsx

📝 Walkthrough

Walkthrough

A new release notes file documents an enhancement that adds hover tooltips to truncated transaction table cells. The TransactionsTable.tsx component now passes explicit title props to Payee, Notes, and Category cells to display full text on hover without requiring edit mode.

Changes

Cohort / File(s) Summary
Release Notes
upcoming-release-notes/7415.md
New release notes entry describing the tooltip enhancement for truncated transaction cells.
Transaction Table Component
packages/desktop-client/src/components/transactions/TransactionsTable.tsx
Added title props to Payee, Notes, and Category cells to enable browser-native hover tooltips showing full truncated text values.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested labels

size small

Poem

🐰 A whisker-twitch, a hover near,
The notes appear crystal clear!
No edit mode, no need to click,
Our tooltip trick does the trick! ✨

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Title concisely and accurately describes the main change: adding title tooltips to truncated transaction cells.
Description check ✅ Passed Description is detailed and directly related to the changeset, explaining the feature, implementation approach, and test plan.
Linked Issues check ✅ Passed The PR implementation meets the core objective from #6735: adding hover tooltips to reveal full transaction notes and other truncated fields in the transaction table.
Out of Scope Changes check ✅ Passed All changes are scoped to adding title attributes to transaction table cells, directly addressing the linked issue requirement without introducing unrelated modifications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 7, 2026
const formatted = formatter ? formatter(value) : value;
return (
<Text
title={typeof formatted === 'string' ? formatted : value}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This causes two popups to show when hovering a payee on a transaction with an imported payee. Can you find a way to suppress the title element on those types of payees?

Image

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! I've tried to address this, but I wasn't able to confirm because I'm not sure how to observe that change in the deploy preview (I haven't yet fully set up a local dev env, my first time contributing!)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problem, thanks for doing this, and welcome to the project!

When a transaction is imported instead of manually added, an imported_payee is set in the background. This is shown by a dashed underline under a payee name, and shows in a popover when it's hovered.

Here's a budget file you can upload to the deploy preview that will let you replicate it.

I imagine the solution here is to set the title attribute only if imported_payee isn't found.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- Remove mobile title prop (no hover on touch devices)
- Add optional title prop to UnexposedCellContent so callers can
  suppress the auto-generated title when they provide their own tooltip
- Suppress title on payee cells with an imported payee to avoid
  duplicate tooltips
coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 8, 2026
@jonathanking jonathanking requested a review from matt-fidd April 8, 2026 03:32
Instead of modifying the shared UnexposedCellContent (which affected
budget sidebar and all tables), add title attributes directly on the
specific transaction table cells that need them:

- Notes InputCell: title={notes}
- Payee CustomCell: title={displayPayee}
- Category CustomCell: title={categoryName}

This avoids unwanted tooltips on budget categories and other non-
transaction table views.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] TX Notes: Tooltip on hover

2 participants