Skip to content

feat: multi-sector watchlist system, reports progress, and UX improvements#4

Merged
atomize merged 7 commits into
developfrom
feature/multi-watchlist-reports-overhaul
Mar 29, 2026
Merged

feat: multi-sector watchlist system, reports progress, and UX improvements#4
atomize merged 7 commits into
developfrom
feature/multi-watchlist-reports-overhaul

Conversation

@atomize

@atomize atomize commented Mar 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Reports panel real-time progress: Replaced the fake 10s setTimeout with actual agentStatus from WebSocket. Shows live spinner, current ticker being analyzed, model info, and queue depth. Auto-clears when report arrives.
  • Test alerts gated behind sandbox: "Fire Test Alert" buttons in Settings and Agent Export are now only visible in sandbox mode with clear "TEST — Synthetic" labeling to prevent confusion in production.
  • Multi-sector watchlist system: Complete overhaul from single-list to full multi-watchlist CRUD. Backend saveWatchlist now resolves by name (was always writing to Default). New create_watchlist, delete_watchlist, rename_watchlist WS messages. UI has a sidebar with all watchlists, create modal with sector templates (AI Supply Chain, Defense, Energy, Biotech, Crypto, etc.), inline rename/delete.
  • Company names everywhere: Added description column to watchlist_items DB with migration. Company names persist from ticker search and display in both the Watchlist Builder table and Market Data table. Filter also searches by company name.
  • Smart ticker autocomplete: 300ms debounced search, loading spinner, keyboard navigation (arrow keys + Enter/Escape) in the search dropdown.
  • Seed data restructured: 7 named sector watchlists seeded on first login instead of one flat "Default" list.

Commits (7)

  1. fix(dashboard): replace fake timer with real agent progress in ReportsPanel
  2. fix(dashboard): gate test alert buttons behind sandbox environment
  3. feat(monitor): support multiple named watchlists in backend
  4. feat: add watchlist CRUD messages and description field to schema
  5. feat(monitor): restructure seed data into multiple sector watchlists
  6. feat(dashboard): multi-watchlist builder with sector templates and smart search
  7. feat: add company name (description) to watchlist items and market data table

Test plan

  • Login to multi-tenant dashboard, verify 7 sector watchlists appear in sidebar
  • Create a new watchlist using a sector template, verify layers populate
  • Rename and delete a watchlist, verify state updates
  • Add a ticker via search, verify company name appears and persists after save
  • Run analysis via "Run Now", verify spinner shows real agent status
  • Switch to production env, verify test alert buttons are hidden
  • Check Market Data tab shows company name column
  • Verify existing single-list users get description column migration

Made with Cursor

atomize added 7 commits March 29, 2026 14:47
…sPanel

The "Run Now" button used a blind 10s setTimeout with no server feedback.
Now uses agentStatus from WebSocket to show real-time processing state,
current ticker, model info, and queue depth. Auto-clears when report arrives.

Made-with: Cursor
Test alert firing in AgentSettings is now only visible in sandbox mode,
matching the existing gating in AgentExportPanel. Button label clarifies
these are synthetic alerts to prevent confusion in production.

Made-with: Cursor
- Add getOrCreateWatchlist(userId, name) to db.ts for named list upsert
- Add deleteWatchlistByName and renameWatchlist to db.ts
- Fix saveWatchlist to resolve by name instead of always targeting Default
- Add createWatchlist, deleteWatchlist, renameWatchlist service exports
- syncFromTastytrade now correctly creates separate named lists

Made-with: Cursor
- Add create_watchlist, delete_watchlist, rename_watchlist WS message types
- Add description field to WatchlistItemSchema for company names
- Add broadcaster handlers for new watchlist operations
- Add client-side callbacks in useMonitorSocket hook

Made-with: Cursor
Replaces single flat WATCHLIST with SEED_WATCHLISTS grouped by sector:
AI Supply Chain, Defense & Aerospace, Energy, AI Semiconductors, Biotech,
Macro Hedges, and Crypto. Each sector has its own layer templates.
Adds company descriptions to all seed entries.
Seed function now creates separate named watchlists per sector.

Made-with: Cursor
…art search

Complete rewrite of WatchlistBuilder with:
- Left sidebar showing all watchlists with create/rename/delete actions
- Sector template picker when creating new watchlists (AI Supply Chain,
  Defense, Energy, Biotech, Crypto, etc.) with pre-populated layers
- Company name column in the watchlist table
- Debounced ticker search (300ms) with loading spinner
- Keyboard navigation (arrow keys + Enter) in search dropdown
- Dynamic layer dropdowns based on active watchlist's sector template

Made-with: Cursor
…ta table

- Add description column to watchlist_items DB schema with migration
- Pass description through save/load/seed pipeline
- Show company name column in WatchlistTable (Market Data view)
- Filter by company name in market data search
- Description persisted from ticker search results when adding symbols

Made-with: Cursor
@cursor

cursor Bot commented Mar 29, 2026

Copy link
Copy Markdown

You have used all of your free Bugbot PR reviews.

To receive reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

@atomize
atomize merged commit e5102c7 into develop Mar 29, 2026
1 check passed
@atomize
atomize deleted the feature/multi-watchlist-reports-overhaul branch March 29, 2026 19:57
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.

1 participant