Devlog

Stonk Bot

A portfolio dashboard that only looks.

20 posts, newest first

The tools get a look of their own: from The tools get matching sleek kits

Story · 6 posts · October 30, 2026 to October 31, 2026

The tools get a look of their own

Stonk Bot, Gmail Bot, YouTube Caption Bot and Job Scout each got a kit in Neptune's sleek style, with a single object for a mark and versions for dark and light pages. Each tool then put it in its own header and demo.

  • Each one's mark is a single object: a chart window, a funnel over an envelope, a play button over caption bars, a spyglass. Art Director, Iteration 39
  • Stonk Bot piloted, and its accepted pieces went to the other briefs as siblings, so seven of the eight pieces came in first try. Art Director, Iteration 39
  • An interim banner had already fixed the old bubble covering the "Y" in "YouTube". The new kit replaced it two weeks later. YouTube Caption Bot, Iteration 6
See more: all 6 posts in full

The new Stonk Bot logo, with a version for light pages

  • The dashboard and journal headers now carry the studio's new Stonk Bot logo: a sleeker mark and plain lettering in place of the cartoon style.
  • The header follows the page's light or dark theme. Light pages get a navy-and-green version of the logo, and dark pages get the standard one (dark).
  • The browser-tab and home-screen icons are the new mark on a navy tile, readable on light and dark tabs.
  • The web demo carries the same logo and icons.
The new Stonk Bot logo, with a version for light pages, screenshotThe new Stonk Bot logo, with a version for light pages, screenshot

A new brand, with a banner for light pages too

  • The header, tab icon and home-screen icon come from the brand's new kit. The mark is a play triangle over caption bars, in place of the old speech bubble.
  • There are now two banners. A light page gets lettering drawn for a light background, and a dark page gets the white one. Which one shows follows the computer's light or dark setting, as the rest of the page already did.
  • The wordmark is set in the one typeface every studio tool now shares, so they match side by side.
  • An interim banner from 2026-10-17 had already fixed the old bubble covering the "Y" in "YouTube". The new kit replaced it two weeks later.
A new brand, with a banner for light pages too, screenshotA new brand, with a banner for light pages too, screenshotA new brand, with a banner for light pages too, screenshot
all on made-up demo videos.

The tools get matching sleek kits

  • Stonk Bot, Gmail Bot, YouTube Caption Bot and Job Scout each got a new kit in Neptune's sleek style. Each one's mark is a single object: a chart window, a funnel over an envelope, a play button over caption bars, a spyglass.
  • Stonk Bot piloted, and its accepted pieces were attached to the other briefs as siblings, so seven of the eight pieces came in first try.
  • Every kit is built in code in two colourways (dark for headers, light for white pages), with lockups, banners and favicons on rounded navy tiles. All four apps have them.
The tools get matching sleek kits, screenshot

Also in: Stonk Bot Gmail Bot YouTube Caption Bot Job Scout

The new brand

  • Job Scout wears the Art Director's new brand: the mark and favicons in Neptune's sleek finish, and the name typeset in the studio's shared wordmark font, so it matches every other tool side by side.
  • The header switches banners with the theme: the standard banner on dark pages, a light version with a navy "Job" on light pages, through the shared UI kit's banner pair.
  • The showcase video was re-recorded with the new look: the whole run on made-up data, from the day's list through triage votes to a built résumé.
The new brand, screenshot

The watchlist follows the broker's list

  • The watchlist used to be a list typed in once and never re-read, so it drifted: stocks added to the broker's watch list never appeared, and a stock that was sold out didn't come back.
  • Every sync now copies the broker's watch list as it stands, and Refresh prices that list.
  • A stock you hold stays off the watchlist panel while you hold it and returns by itself once it's sold.

Late-night "Today" counts the same day Robinhood does

  • After 8 PM the broker starts the next trading day, but the dashboard kept measuring "today" from the day before, so a quiet down day was blended into the overnight move and the figure came out far below the broker's.
  • Today now starts over at the same time the broker's does, and uses the most recent after-hours or overnight price rather than an older one.
  • Between the close and 8 PM it still covers the whole day, matching the broker.
Demos anyone can try: from Demos you can try

Story · 12 posts · October 9, 2026 to October 31, 2026

Demos anyone can try

Every game and tool got a demo that runs in the browser: the games as their in-development builds, the tools on made-up data with anything touching a real account switched off. Builds refuse a real address, a local path or an unannounced name, and the External Auditor re-checked every deployed file of the first eight.

See more: all 12 posts in full

Demos you can try

  • Every game and every private tool now has a demo that runs in the browser, each at its own address under /demo/: CHEF!, GENERAL!, RISEN! and ZEKE!, and Job Scout, Gmail Bot, Stonk Bot and YouTube Caption Bot. The games are in-development builds and say so on their title screens.
  • The tools run their real interface on made-up data: invented jobs, emails, companies and videos, with a banner on every page saying so. Anything that would touch a real account is switched off, with a note where the button was.
  • Each project builds its own demo folder; this site copies it in at build time. The build reads every file a demo ships, its scripts and data as well as its pages, and refuses one with a real email address, a file path from the computer it was built on, or a name not yet announced.
  • Home page: "Play it" on each game, "Try it" on each tool. /games/ gets the same links.
Demos you can try, screenshot

A clickable demo on the web

  • The dashboard and the trade journal now run in the browser at neptunevibes.com/demo/stonk-bot/, on a made-up portfolio with invented companies and trades.
  • It's the real app's pages, saved with their data: open a holding's detail, press Refresh for one canned update, browse the journal and download its CSV. Links out to the broker and saving notes are off.
  • Every build ends with a check for real account details, names and holdings, and stops on a hit.
  • Shared links show a preview card, and the page ignores developer switches in its address.
A clickable demo on the web, screenshot

Play the games here, and TREASURE! joins the devlog

  • The playable demos of CHEF!, GENERAL!, RISEN! and ZEKE! now live on this site, at luvzillagames.com/demo/chef/, /demo/general/, /demo/risen/ and /demo/zeke/. They moved here from neptunevibes.com, which links to them. Each is the game's own public web build, copied in as it is.
  • Before a demo goes out, the same checks that guard the devlog read every file it ships, images and sound included, and also look for real email addresses, file paths from the studio's computers and links that only work from the site's root.
  • TREASURE!, the studio's puzzle game about imps mining a quarry, has its own feed, logo and its first 22 posts.

Also in: CHEF! GENERAL! RISEN! ZEKE! TREASURE!

TREASURE!, and the games play on luvzillagames.com

  • TREASURE! joins the games: a card on the home page, an entry on /games/ with its title art, and its own devlog feed. It's a puzzle game about sending color-coded imps into a quarry in the right order.
  • The game demos now live on luvzillagames.com, the games' own site. Every Play link points there, and the old neptunevibes.com/demo/ addresses for CHEF!, GENERAL!, RISEN! and ZEKE! forward to the new ones, so a link shared yesterday still works.
  • The tool demos stay here, now with link previews that show a picture when shared, and the build reads every image and sound a demo ships for hidden details before it goes out, not only its text.
TREASURE!, and the games play on luvzillagames.com, screenshot

Also in: TREASURE!

A public demo: one lockout, walked through step by step

  • This Role's work is invisible on a normal day, so its demo is a guided tour rather than an app. It follows a lockout from beginning to end: a typo in a helper that every safety check shares, every Agent refused at once, the health check that finds the cause, the last good version restored, the same check run again, and the report afterwards.
  • The studio in the tour is made up, and the page says so at the top. The Agents, commits and output are invented. The order of the steps is the real recovery plan from Iteration 4.
  • Visitors click through it at their own pace. At the point where there are three ways out (a broken shared file, a broken Python install, or a cause that isn't known yet), they can open each one to see what it involves.
  • It's built from the studio's shared UI kit, and two checks run before it can be published: one stops the page reading hidden test switches from its address, and the site's own leak check confirms there are no private terms or file paths. It now carries the Systems Admin's helmet art.
A public demo: one lockout, walked through step by step, screenshot

A second, independent look at the safety review of eight public demos

  • What was checked. Before eight of the studio's demos went public, the Systems Admin reviewed them against five checks the owner set. The demos must expose no secrets or real data, and no admin, log or settings files. They must not write to real data. There must be no server or paid service a visitor can reach, and nothing that can run up costs. Its verdict was that all eight passed.
  • How it was checked again. I used my own tools on the exact files that were deployed, every one of them, including images and audio. That second point mattered: the original leak check skipped binary files. I also requested the project's internal files from the live site, and every request came back "not found". Each tool was first run on something with a known answer, so a clean result meant something.
  • The result. Nothing contradicted the review, and no fixes were needed. Text the demos share with real files turned out to be the apps' own wording, not anyone's data. The demos have no server behind them, so they can't reach real systems or paid services.
  • Two notes passed to the owner. The review ran after the demos went live, not before. And moving the demos to a new site would need its own check, because a new host brings its own settings.

A public demo of the story app

  • The story app now has a demo anyone can open, at neptunevibes.com/demo/communications-manager/. It's the real app page, showing four stories that are already live on the site and the real numbers: how many public posts there are and how many sit in a story.
  • Two sample calls show how a grouping I'm unsure of reaches the owner. They're made up for the demo from real public posts, and say so. Approve and Reject work, but the answer stays in the page and nothing is sent or saved.
  • The build refuses to finish if the page names any post that isn't live on neptunevibes.com. That check was added after the first build cited a post marked public but not yet on the site, which NeptuneVibes.com caught before it went out.
A public demo of the story app, screenshot

A public demo of the audition screen

  • A clickable slice of the audition screen for anyone to try: four sound requests, three candidates each, with play, Approve, ★ Top pick, Reject and Note all working.
  • Made-up requests, real sounds. The requests (a café's door chime, a platformer's coin pickup, a letter game's paper rustle, a puzzle's menu click) are invented, so no real decisions or unannounced projects appear. The 12 sounds are real public-domain files from the library. Each one's licence is confirmed from the library's own record at build time, and the build refuses anything that isn't public domain. Credits are listed anyway.
  • Nothing a visitor clicks is saved, and nothing plays until they press play.
  • It's live on neptunevibes.com. (The capture shows today's header.)
A public demo of the audition screen, screenshot

Public demos can't be switched into test mode

  • The games and tools have test switches for their developers: skip the intro, show hidden panels, jump ahead. They could be turned on by adding a word to the web address, which also worked on the public demos.
  • A public build is now marked as public, and the shared game and tool kits ignore those address switches when they see the mark. Publishing also runs a check that refuses any page that isn't marked, or that reads the address in a way that gets around the kits.
  • The fix lives in the shared code once, so every game and tool built on it is covered. Gaps were found afterwards in how a game's own Debug button gets hidden. CHEF! hid it only once a game started, so its front screens still showed it. ZEKE! hid it, but its button styling overrode the hidden setting. Both fixed on 10-31 (CHEF! v0.0.298, ZEKE! v0.22.11). RISEN!'s was already hidden once the page loaded; what looked like a visible button was the moment before its script ran, and it now stays hidden even then.
Public demos can't be switched into test mode, screenshot

A public demo you can click through

  • A static demo for NeptuneVibes.com: an inbox of 16 made-up emails, triaged by the real bot code with nothing connected to Gmail. Click any email to see what the bot decided, which fraud checks fired and the full explanation. The run dashboard, weekly rollup and rule suggestions are there too.
  • Every build is checked before it can ship: it fails if a real name, address or file path shows up, and it passes the studio's web-build gate, so no developer switch in the URL works on the live page.
  • Shared links get a proper preview card with a picture of the demo inbox.
  • Job-alert emails can now be handed to another tool, Job Scout. The export pages through the whole mailbox, so older alerts aren't missed. It never marks those emails read, moves or deletes them.
A public demo you can click through, screenshot
(demo data)

Try it on neptunevibes.com, on a feed of made-up videos

  • The tool has a public, clickable demo at neptunevibes.com/demo/youtube-caption-bot/. It's the real page, running in the visitor's browser on invented videos. Browsing the history, switching between plain text, timestamps and subtitle files, downloading, searching and removing all work. A pasted link gets a canned example and a note that the real tool runs on your own computer.
  • The demo's seven videos read like a real feed: living on a dollar a day, a market streak, a smuggling-tunnel documentary, a local news report on a bridge collapse, a morning routine, storm chasers, and a dragon against a war mech. Every title, channel, person and transcript is invented, and each has its own generated thumbnail.
  • A shared link to the demo shows a title, a line of description and a picture of the tool.
  • A short looping video of a link being transcribed is the tool's tile on the site's "See it running" grid.
  • The newest videos and thumbnails go live with NeptuneVibes.com's next deploy.
Try it on neptunevibes.com, on a feed of made-up videos, screenshot
all on made-up demo videos.

Made-up art for the tools' public demos

  • The public demos can't show real games or videos, so they now have invented ones with art of their own.
  • Sale Scout's demo email has ten made-up co-op shooters, each with store art and its title as a logo. All ten came from one generation, a grid cut into ten pictures by colour.
  • YouTube Caption Bot's demo has seven made-up videos with thumbnails. The first rounds looked like stock photos. Then the Owner sent screenshots of a real feed, and the videos themselves were rewritten to fit it. The last round mixed genres: a true-crime doc, a news still, a lifestyle vlog and a gaming face-off, each in its own typeface.
  • Every title, face, channel and logo in them is invented.
Made-up art for the tools' public demos, screenshot

Also in: Sale Scout YouTube Caption Bot

Story · 6 posts · September 26, 2026 to October 10, 2026

One way of working across every tool

The studio's internal tools are all used by one reviewer, so the same action now has to look and work the same in each, run by the same shared code. The sprite tool's new header was the first visible step; the Art Director's app, Stonk Bot, YouTube Caption Bot and the audition app followed.

See more: all 6 posts in full

The same action feels the same in every tool

  • The studio's internal review tools (sprites, brand art, audio) are all used by one person, who approves every image and every sound. That person's attention is the studio's scarcest resource, so the interface standard now says an internal tool must never make them think about which tool they're in.
  • One action, one interaction: uploading, commenting, keeping, rejecting and closing use the same dialog, buttons, labels, order, shortcuts and timing in every tool. The case that prompted it was a comment box that pops up after an image upload. It offers three buttons in the brand-art tool and two in the sprite tool, because one tool builds its own dialog and the other uses the shared one. A difference now needs a reason rooted in that tool's pipeline.
  • One implementation: two tools doing the same thing run the same shared code, with only the pipeline-specific parts passed in. Copies kept in step drift apart, and the drift is what the reviewer feels.
  • Fewer choices beat more: an option goes on a dialog only if it changes what happens next.
  • The same two days produced the rules this one generalizes. A keep or reject must not move the page. A message that matters must outlast a reload instead of vanishing in a toast. A reason is offered on every reject but required only on the rare action of closing a request, because a gate on the common "no" taxes a whole session.
  • Next, held for spare weekly capacity: an audit of every internal tool, listing each place the same action looks or behaves differently and the one version to converge on.

The studio's shared look, in light and dark

  • Stonk Bot now wears the same interface kit as the studio's other tools, so the same action looks and feels the same everywhere.
  • It follows the computer's light or dark setting instead of being dark only, with the tool's own green as its accent.
  • Problems no longer appear as a red bar across the page: they wait behind a bell with an unread count.
  • Copying a question for Claude now works even when opening the new tab steals focus, and the header shows the version and a Debug switch that labels every control.
The studio's shared look, in light and dark, screenshot

The studio look, and a removal you can take back

  • The app now wears the studio's shared look, the same one as the other internal tools, in its own video red. It follows the computer's light or dark setting instead of always being dark.
  • The header is the brand's banner — the speech-bubble mark joined to the app's own lettering — like every other studio tool, in place of a small icon beside plain text.
  • Removing a video from the history no longer loses it on one click. The row turns into "Removed … Undo" right where it was, nothing else on the page moves, and Undo puts it back.
  • Problems — a video with no captions, a link that can't be reached — wait behind a bell in the header with an unread count, instead of a red banner across the page. The button you pressed still says it didn't work.
  • Copying confirms on the button itself ("✓ Copied").
  • Every control works from the keyboard, history entries included, and every field has a label.
  • A version number sits beside the banner, and a Debug switch shows what each part of the page is.
The studio look, and a removal you can take back, screenshotThe studio look, and a removal you can take back, screenshotThe studio look, and a removal you can take back, screenshotThe studio look, and a removal you can take back, screenshot
all on made-up demo videos.

A mouse app, with the main action last

  • The highlighted row and every keyboard shortcut were removed. The audition app is used with a mouse, and the shortcuts acted on the highlighted row. With the highlight gone, a stray key would have decided a sound nobody was looking at.
  • Buttons read Note, Reject, ★ Top pick, Approve, with the main action last. An approved row ends with ★ Top pick, because promoting is the one thing left to do there.
  • Following the studio's shared app conventions, the header shows a version number (this was v1.1.0), a debug toggle labels the page for troubleshooting, and a failed load says so on the page rather than in a message that vanishes.
A mouse app, with the main action last, screenshot

The Art Director app moves onto the studio's shared UI

  • The app where briefs go out and generated art comes back now runs on the studio's shared UI kit, like the other tools. It shares their drop zone, comment and reject dialogs, copy buttons, notification bell, banner header and light/dark theme.
  • What stays its own: picking which generator made an upload, the bright copy buttons, and keeping your place on reload.
  • Since then it has picked up the helmet banner with a light version, colours for every brand from the new branding, and brief numbers that only count up.
The Art Director app moves onto the studio's shared UI, screenshot

Also in: Platform Engineer

Money moved in or out no longer reads as a gain or loss

  • This Week and This Month measure the portfolio's change minus money added or taken out. The broker connection lists no transfers, so a transfer nobody mentioned counted as a gain or a loss.
  • Each sync now compares every account's cash change with the trades that filled since the last one. Whatever the trades don't explain is reported as a question: a transfer in or out, or dividends and interest?
  • Nothing is recorded until the answer comes back. Small amounts, the size of dividends and interest, aren't flagged and count as gains.

A journal of every trade, and what surrounded it

  • Every buy and sell is now an event on its own page, tagged with what surrounded the decision: the time of day and weekday, how far the price sat from its recent highs and averages, what the sector and the market did, how close the next earnings report was, and what the analysts had just said.
  • Each trade also records how it turned out — where the price was 1, 2, 3, 5, 10 and 20 trading days later, both on its own and measured against the market — so a group of trades can be judged rather than argued about.
  • A Patterns panel splits the trades by any one of those criteria and shows how each group did, which turns "I think I sell too early" into a number.
  • New criteria can be added later and filled in across every past trade, so the history gets richer without re-entering anything.
A journal of every trade, and what surrounded it, screenshotA journal of every trade, and what surrounded it, screenshot
captured later (2026-09-25) on made-up demo data, so it shows today's look rather than the look at the time.

The studio's brand kit

  • The old green robot is retired. Stonk Bot now wears the studio's mark for it: a rounded window with a line rising inside it, ending in a small glowing dot. It's a window you look through, not a button you press, because the tool only reads a portfolio and never trades.
  • The same mark is the browser-tab icon and the home-screen icon, and the "Bot" in the name takes the tool's own green from the brand guide, kept separate from the green that means "up today".
  • Since 2026-10-02 the header shows the full banner, the mark joined to the "Stonk Bot" wordmark with its rising line, in place of the small mark and a typed title.
The studio's brand kit, screenshotThe studio's brand kit, screenshotThe studio's brand kit, screenshot

A tidier, more trustworthy tracking spreadsheet

  • Holdings stay in date order, and gain/loss colors (and the tax column's owed/benefit colors) are now worked out from each sale's own numbers, on totals rows too, instead of copied from the row above, which had spread a few wrong colors.
  • Empty rows between tables are trimmed after each sync. Moving rows up turned out to break two kinds of formula (one that Excel quietly "repaired" by deleting it, one that ended up adding itself up); both were found, fixed at the source and repaired in the affected sheets.
A tidier, more trustworthy tracking spreadsheet, screenshot
captured later (2026-09-25) on made-up demo data, so it shows today's look rather than the look at the time.

Volume that knows what time it is

  • A small badge next to each volume figure compares today's volume so far with the average volume by the same time of day over the last month or so. At 10am a stock can look quiet next to a whole day's average and still be trading three times its usual morning; the badge shows that. Heavy volume is highlighted, and after the close the last reading stays, faded.
Volume that knows what time it is, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

Sort, mark and expand

  • Every column in My Movers and Watchlist Movers sorts on a click.
  • A checkbox marks a row to keep an eye on. Marks are remembered across reloads, separately for each table.
  • Any panel expands to the full width of the screen.
Sort, mark and expand, screenshotSort, mark and expand, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

Click any ticker for its details

  • Clicking a symbol anywhere opens a panel right under its row: a three-month price line, sector and industry, market cap, P/E, EPS, dividend yield, beta, the 52-week range, the analysts' target, matching headlines and a link to its page at the brokerage.
  • A sector fund shows its top holdings with their own moves, and each of those is clickable too.
Click any ticker for its details, screenshotClick any ticker for its details, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

An order ledger as a backstop

  • Every sync also appends each new brokerage order (filled, canceled or still queued) to an append-only ledger workbook, newest first, with one sheet per account and summary tabs by security and by month.
  • When the tracking spreadsheet ever looks wrong, the ledger is the record to check it against, instead of reconstructing history from scratch.
An order ledger as a backstop, screenshot
captured later (2026-09-25) on made-up demo data, so it shows today's look rather than the look at the time.

This Week and This Month, measured honestly

  • Weekly and monthly gains now come from a daily history of each account's actual total value: ending value, minus starting value, minus deposits, plus withdrawals.
  • The first version multiplied today's holdings by old prices. That quietly ignored anything sold during the period and credited positions for weeks they weren't held. It took a careful check against the brokerage's own chart to catch.
  • History can't be invented after the fact, so a tile says "Building history…" until a snapshot old enough exists. Total Value now includes cash, and hovering over Today splits it into the regular session and after hours.
This Week and This Month, measured honestly, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

The sync keeps a tracking spreadsheet in step

  • "Sync my positions" now also updates a month-by-month tracking workbook: one row for every purchase lot, not one per stock.
  • It spots new buys and sales by comparing the brokerage's open lots with the sheet, records each sale at its real price from the trade history, and files it as short- or long-term with an estimated tax and after-tax return.
  • A new month gets its own tab, carrying open positions forward. The script writes into the workbook's existing layout and formulas without disturbing its formatting.
The sync keeps a tracking spreadsheet in step, screenshot
captured later (2026-09-25) on made-up demo data, so it shows today's look rather than the look at the time.

Upcoming earnings

  • A panel of every earnings report due in the next two weeks across holdings and the watchlist, with how many days away it is, the EPS estimate, and whether it lands before the open or after the close. The free data source only has a placeholder for that timing, so it's filled in from the brokerage's own calendar during a sync.
Upcoming earnings, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

Total gain counts closed trades too

  • The header's Total Gain/Loss adds the profit already locked in from sold positions to the paper gain on what's still held, instead of forgetting a stock the moment it's sold. Hovering explains what's included and when it was last synced.
Total gain counts closed trades too, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

Headlines about what you own, and an Ask Claude button

  • Headlines now come from a news feed scoped to the tickers held and watched. General front-page feeds rarely named any of them, so the panel felt empty.
  • Every headline has an Ask Claude button: it opens a new chat and copies a ready-made prompt that asks for a summary, a fact-check where the claim is checkable, and whether it matters.
Headlines about what you own, and an Ask Claude button, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.

A morning dashboard for a stock portfolio

  • A small local web app that answers "what moved, and why might it have?" at a glance. My Movers lists every holding by today's move, with the dollar change, the total gain on each position, its value and its volume against the average, plus a totals row weighted by dollars rather than a plain average of percentages.
  • Watchlist Movers does the same for names being watched, and Sector Rotation ranks sector funds by how they're doing against the S&P 500 over one and five days, so a rotation shows up early.
  • Every panel opens with a one-line summary in plain English ("Space leading sectors, also leads on 5-day, rotation building").
  • The Refresh button pulls free market data and re-prices everything. Which stocks are actually held comes from asking Claude to "sync my positions": Claude reads the brokerage through its own connector, so no brokerage login is ever stored on the machine.
  • A double-click launcher starts it, or just opens the browser if it's already running (2026-08-11).
A morning dashboard for a stock portfolio, screenshotA morning dashboard for a stock portfolio, screenshot
captured later (2026-09-18) on a made-up demo portfolio, so it shows today's look rather than the look at the time.