Skip to content

Give each custom alert its own page; rework the list, builder and trigger pages - #49

Merged
JanGradkowski merged 1 commit into
mainfrom
custom-alert-pages-redesign
Nov 9, 2026
Merged

JanGradkowski merged 1 commit into
mainfrom
custom-alert-pages-redesign

Conversation

@JanGradkowski

Copy link
Copy Markdown
Owner

A redesign of the custom alert pages: the list, a new page for each alert, the builder and the trigger page. An independent reviewer rated screenshots of every page (desktop, tablet and phone, dark and light) after each round of fixes. Over ten rounds its score went from 5.1 to 9.0 out of 10.

What changes

Each alert has its own page at /custom-alerts/{id}, in place of the filtered signals archive.

  • The rule in words, then three figures:
    • Triggers, with a per-day strip over the alert's life. Stocks matched when the alert was saved are a separate marker.
    • Matching now, which opens each stock's state.
    • The median change after the follow-up window, with one dot per measured trigger. Each dot opens that trigger.
  • Triggers table:
    • Filters: All, Unread, Higher and Lower, plus a ticker filter.
    • Sortable change columns at +1, +5 and +10 candles, those inside the window. The page remembers the chosen order.
    • A trigger still being measured shows its change so far, or Pending · due Nov 12.
    • Stocks that matched at save are folded into one row.
    • Select and delete several triggers at once, through the new POST /api/custom-alerts/{id}/triggers/delete.
  • Old /signals?customAlertId=… links redirect here. The email, the home page, the stock page and watchlists link here too, and custom-alert-archive.js is removed.

List

  • One row per alert, with its figures (the number of stocks matching is the largest).
  • An on/off switch that responds at once and offers Undo.
  • A menu: duplicate, pin, email, and delete with a confirm dialog.
  • Shorter rule chips: the condition, then its timing in quieter text ("Insiders sold · last 90 days"). On wide screens they stay on one line, followed by "+N more".
  • A short guide for new users, and the examples behind New alert ▾.

Builder

  • A steps rail; finished steps fold to a one-line summary.
  • Condition cards with their own menu: reverse, start a sequence, duplicate, move.
  • A searchable condition picker.
  • A Save bar that names what is missing and jumps to that step.
  • A saved draft.
  • A preview sheet on phones.
  • Ctrl+Enter tests the rule from any field.

Trigger page

  • Previous and next trigger ("29 of 36"). Stepping between them keeps the chart's zoom and the conditions you hid.
  • The follow-up window shaded on the chart, with its result.
  • What happened next: progress while the trigger is still being measured, the change at each checkpoint, and this alert's median for comparison.
  • Each Why it triggered card lights up its chart marks on hover, keyboard focus or tap.

Also

  • Keyboard shortcuts on the list and alert page. Press ? to see them.
  • Bug fix: the list never refreshed while alerts were being checked. The site's sidebar is an always-open <dialog>, and the refresh treated it as a modal dialog in front of the page. The same mistake blocked Ctrl+Enter in the builder.
  • Design rules: no backdrop blur in design.css and watchlists.css, and small grey text uses the higher-contrast colour.
  • Assistant: the assistant's page guides and its custom-alert reference describe the new pages, including a new pages/custom-alert.md.
  • Translations: every new text is in English and Polish.
  • Database: no migration.

Testing

  • Java: the full suite (./mvnw test) ran 1131 tests: 0 failures, 33 skipped.

  • JS: all 146 tests pass (npm test).

  • Browser (Playwright on Edge, a copy of the dev database):

    • the "?" sheets;
    • Escape in the ticker filter;
    • the Higher/Lower filters;
    • the outcome dots as links;
    • Ctrl+Enter from a condition field and from the name field, one preview request each;
    • the remembered sort;
    • stepping between triggers with a hidden condition;
    • the card-to-chart link by hover, focus and tap.

    Screenshots were taken at 1440, 820 and 390 px wide, in both themes, with no console errors.

🤖 Generated with Claude Code

…gger pages

A custom alert now opens on /custom-alerts/{id} instead of the filtered
signals archive. The page has the rule in words, three figures (triggers
with a per-day strip, stocks matching now, the median change after the
follow-up window with a dot per measured trigger) and a table of triggers:
filters All, Unread, Higher and Lower, a ticker filter, sortable change
columns at 1, 5 and 10 candles, "so far" and "Pending · due" for triggers
still measured, stocks matched at save folded into one row, and bulk
delete (POST /api/custom-alerts/{id}/triggers/delete). Old
/signals?customAlertId links, emails, the home page, the stock page and
watchlists point at it; custom-alert-archive.js is gone.

- List: one row per alert with its figures, an instant on/off switch with
  Undo, a menu (duplicate, pin, email, delete with a confirm dialog),
  shorter rule chips (the condition, then its timing, quieter), a guide
  for new users and the examples behind "New alert".
- Builder: a steps rail, finished steps folded to a summary, condition
  cards with their own menu, a searchable condition picker, a Save bar
  that names what is missing and jumps there, a saved draft, a preview
  sheet on phones, and Ctrl+Enter from any field.
- Trigger page: previous and next trigger (keeping the chart's zoom and
  hidden conditions), the follow-up window and its result on the chart,
  what happened next with this alert's median, and each "Why it
  triggered" card linked to its chart marks.
- Keyboard shortcuts on the list and alert page, listed with "?".
- The list never refreshed while alerts were being checked: the site's
  sidebar is an always-open <dialog>, which the check took for a modal.
- No backdrop blur in design.css and watchlists.css; small grey text
  uses the higher-contrast colour.
- Assistant pages and the reference describe the new pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JanGradkowski
JanGradkowski enabled auto-merge (squash) November 9, 2026 10:51
@JanGradkowski
JanGradkowski merged commit 4eaf2be into main Nov 9, 2026
2 checks passed
@JanGradkowski
JanGradkowski deleted the custom-alert-pages-redesign branch November 9, 2026 10:58
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.

2 participants