Skip to content

feat: tab emoji badges with flash animation#115

Merged
hydro13 merged 13 commits intomainfrom
feat/tab-emojis
Apr 11, 2026
Merged

feat: tab emoji badges with flash animation#115
hydro13 merged 13 commits intomainfrom
feat/tab-emojis

Conversation

@hydro13
Copy link
Copy Markdown
Owner

@hydro13 hydro13 commented Apr 11, 2026

Summary

  • Add emoji badges to tabs — users assign via right-click context menu (50 popular emojis)
  • AI can set, remove, and flash emojis on tabs via 3 new MCP tools
  • Emoji flash animation lets AI signal the user to look at a specific tab
  • Emoji is per tab session (not persisted to disk)
  • Hide 👤 source indicator for user tabs — only show 🤖 for AI-controlled tabs
  • Everything runs in the shell — no injection into webviews (anti-detect safe)

Changes

  • Tab interface: emoji and emojiFlash fields on Tab
  • API: POST /tabs/:id/emoji (set/flash) + DELETE /tabs/:id/emoji (remove)
  • MCP tools: tandem_tab_emoji_set, tandem_tab_emoji_remove, tandem_tab_emoji_flash
  • Shell: emoji badge rendered before tab title, CSS pulse animation for flash
  • Context menu: emoji picker submenu with 50 popular emojis (sidebar.js)
  • Preload: IPC bridge for tab-emoji-changed events
  • Docs: api.html, CHANGELOG, README, PROJECT.md updated; tool count 236 → 239

Test plan

  • Right-click tab → Set Emoji → badge appears
  • Right-click tab with emoji → Remove Emoji → badge disappears
  • MCP: tandem_tab_emoji_set → badge appears
  • MCP: tandem_tab_emoji_flash → pulsing animation
  • MCP: tandem_tab_emoji_remove → badge removed
  • MCP: tandem_list_tabs → emoji shown in listing
  • Source indicator hidden for user tabs, shown for AI tabs
  • npx vitest run — 1967 tests passing
  • npx tsc --noEmit — 0 errors
  • Tested locally in running Tandem

hydro13 added 11 commits April 11, 2026 23:26
- Add POST /tabs/:id/emoji and DELETE /tabs/:id/emoji to docs/api.html
- Add v0.71.0 changelog entry with new endpoints and MCP tools
- Update tab context menu in PROJECT.md
- Update tool counts 236 → 239 across all docs (via check-consistency)
- Update Tabs & Workspaces category count in README feature table
The actual tab context menu is the custom HTML menu in sidebar.js
(not the Electron native menu in menu-builder.ts). Add emoji grid
submenu with 50 popular emojis, Remove Emoji option, and CSS styling.
… tabs

The 👤 icon on every tab was visual noise. Now the source indicator is
hidden by default and only shown (🤖) when a tab is AI-controlled.
@hydro13 hydro13 self-assigned this Apr 11, 2026
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 11, 2026

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 95.00000% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/api/routes/tabs.ts 90.90% 2 Missing ⚠️
src/mcp/tools/tabs.ts 93.33% 0 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

hydro13 added 2 commits April 12, 2026 00:28
Resolves CodeQL DOM text reinterpreted as HTML warning. The emoji
value comes from DOM textContent which could theoretically contain
HTML metacharacters — use createElement + textContent instead.
@hydro13 hydro13 merged commit 92d71c0 into main Apr 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants