Releases: doughknee/myscrollr
Release list
v1.4.0 — A catalog you can shop, and a Home that briefs you
Two of the app's main screens got rebuilt: the Catalog is now somewhere you can actually shop, and Home tells you what's happening instead of listing everything equally.
✨ New
Add a widget without leaving the Catalog. Every widget card has a + — one click and it's in your ticker. No detour to a separate page and back.
Widget details slide over instead of navigating away. Click a card and the details open beside the shelf you were browsing: what it does, what it looks like in your ticker, what it costs you in slots, how to use it, and a few similar widgets. Close it and you're exactly where you left off — same scroll position, same shelf.
Search the Catalog. Type anything — a name, a word from a description, a category.
Browse by shelf. Instead of "Yours" and "Discover", the Catalog now has a shelf per category — Sports, Finance, News, Fantasy, Predictions, Utilities — in a sensible order, with a Spotlight row up top for good places to start. Sports gets compact tiles, because fourteen league cards all saying "live scores" wasn't helping anyone.
"In your ticker" at a glance. One strip at the top of the Catalog shows everything you've added and how many slots you have left, with empty outlines for the free ones.
💄 Home is now a briefing
A live ticker across the top — your actual chips, drifting past, so you can see what's scrolling without looking at the ticker itself.
"Happening now" surfaces the two or three things worth interrupting you for: a game that's actually live, your biggest market mover. On a quiet day it simply isn't there, rather than padding itself out.
Everything else is grouped sensibly. Scores from all your leagues in one card, headlines from all your feeds in another, your watchlists together, your fantasy matchup, your Kalshi markets, your utilities as tiles. Every row still links straight to the widget it came from.
A widget you haven't set up keeps its place. Instead of an empty card or a disappearing one, it says what it needs and gives you one button to do it.
New here? Home now welcomes you with three good starting picks and a way into the full Catalog.
🐛 Fixes
- The Catalog's category filter now clears your search, so picking "News" after typing something doesn't leave you looking at a confusing result set.
- Widget details deep-link properly — the address updates when you open one, so reloading keeps it open.
v1.3.1 — Selected options read correctly in dark mode
Two fixes for things that landed wrong in 1.3.0.
🐛 Fixes
-
You can tell which option is selected in dark mode. In the settings selectors — Color mode, Display size, Font weight, and the ticker's controls — the highlighted option was nearly invisible against its background on dark themes. It now sits in a recessed track with a defined edge, so the selected choice reads as raised the way it always has in light mode. A couple of themes had it backwards entirely, showing the selected option as pressed in rather than raised; those are right way up now.
-
The Scrollr logo is back on the left on Windows and Linux. It had been pushed to the far right of the title bar on every platform to make room for the macOS window buttons — but those only exist on Mac, so on Windows and Linux it was giving up a corner for nothing. It now leads the title bar there, left of the sidebar button. macOS is unchanged.
v1.3.0 — Settings become one searchable surface
Settings used to be scattered across three pages and a row of tabs. Now they're one place, with a sidebar and a search box.
✨ New
Search your settings. Press ⌘F (Ctrl+F on Windows) anywhere in Settings and start typing. Search knows what things are called and what you'd call them — type "gdpr" to find data export, "a11y" for high contrast, "hotkey" for the shortcuts list. Pick a result and it takes you straight there and highlights the row.
One Settings page instead of three. Appearance, Window & startup, Shortcuts, Ticker, Profile & plan, Data & privacy and Updates all live behind one sidebar. No more hunting for whether a setting lives under Customize, Account or Updates — and no more losing your place when you open Settings to change one thing and remember a second.
Your plan at a glance. Profile & plan opens with who you're signed in as and what your plan includes, instead of burying it in a list.
💄 Improvements
- Every setting explains itself. Descriptions are visible now instead of appearing only when you hover — so you can read down the page and understand what everything does, including details that used to be effectively hidden, like which options are Windows-only.
- Two ticker controls that existed but you couldn't reach. Time per page sets how long each page rests before the ticker advances in Page and Rotate modes. Hover speed sets how far it slows when you hover — all the way to a full stop, if you want.
- Move the ticker from Settings. Top or bottom edge is now a control on the Ticker page, not just a right-click on the ticker itself.
- Controls got a once-over. Bigger switches, clearer selected states, wider sliders with readable values.
- Release notes are easier to scan, with sorting by date or version.
🐛 Fixes
- Sliders now show a visible focus outline when you tab to them.
- Following a search result moves keyboard focus to the setting you picked, not back to the top of the page.
- The Updates page no longer claims you're on the latest version before it has checked — or after a check fails.
🔧 Under the hood
Themes gained a proper "raised surface" color so cards read correctly in all 20 palettes, light and dark. Settings pages that no longer existed were removed, along with six preferences nothing had read in a long time.
v1.2.0 — Settings find a home, the ticker sheds a deck
Settings got a proper home, the ticker got simpler, and Home now shows you what's actually happening instead of what you picked once and forgot.
✨ New
One nav across settings. Home · App · Ticker · Account · Updates sits at the top of all five screens, so moving between them is one click from wherever you are. Opening Customize now lands you on App rather than Ticker.
An Updates page. Checking your version and seeing what shipped used to be two clicks apart — the updater buried under themes and window settings, the release notes on their own page. They're one screen now, with the changelog underneath the update button. "What's new" still lives in the account menu; it just brings you here.
The account menu does more. Settings and Add widget are one click from your name, Support is now Get help, and the menu shows your username instead of your full name.
💄 Improvements
Home shows the interesting things. Each widget used to make you pick up to five items to preview — and then showed those same five forever, no matter what moved. That's gone. Home now surfaces your biggest movers, live games, newest headlines and closest markets automatically, and updates as they change. Nothing to set up.
The ticker is one row. Two- and three-row layouts, per-row source assignment and the row editor are all gone; if you had multiple rows, everything on them now shares a single row. It was the most confusing part of setup for what it gave back, and it'll return in a better form.
A tidier window on macOS. Scrollr now uses the system title bar properly — the traffic lights sit level with the toolbar, and the window chrome is a single row rather than two stacked ones.
A quicker tray menu. Putting a widget on the ticker is one click instead of a submenu.
The sidebar toggle moved next to the back and forward arrows, where the rest of the navigation lives.
🔧 Under the hood
Setting up Scrollr from a fresh clone now works on the first try — several of the generated config files couldn't actually start the app, and make needed Windows. Nothing you'd notice unless you build it yourself.
v1.1.15 — Widgets move as one
✨ New
- Reorder the widgets in your sidebar. Put the feeds you use most exactly where you want them.
- Feeds now keep going as you scroll. The next page loads automatically instead of making you stop and click “Load more.”
💄 Improvements
- The whole desktop app now moves as one. Routes, tabs, menus, cards, loading states, and controls share the same smooth Motion language instead of each surface feeling separate.
- Stocks and Crypto are much easier to browse and manage. Switch cleanly between All and Watchlist, keep category filters available in either view, search the live feed, and add or remove symbols without shifting the card data.
- Kalshi browsing is cleaner and more focused. Primary views stay visible while secondary filters live in compact dropdowns, using the same interaction grammar as the finance widgets.
- Sports and News controls are simpler. Each widget shows only the filters that matter to the view you are currently using.
- Status and What’s New now live in the account menu, keeping the sidebar focused on your widgets.
- Clock, Weather, GitHub, and System Monitor now match the rest of the app, with shared menus and contextual actions that appear without moving the content underneath.
🐛 Fixes
- Fixed widget controls becoming taller or collapsing into an awkward catch-all menu when the window gets narrow.
- Fixed remove controls crowding card data, including the clock timezone label covering its remove action.
- Added clear retry actions and steadier loading, empty, and error transitions across widget feeds.
This is a non-breaking patch release. Existing supported desktop versions continue to work normally.
v1.1.14 — Housekeeping
A housekeeping release. One small fix you'll actually see; everything else is groundwork for what comes next.
🐛 Fixes
- The Predictions widget now tells you what to do when it's empty. If you hadn't tracked any markets yet, Home showed a bare "Nothing to show" and left you there — every other widget offered a proper message and a button to open it. Predictions does too now. (#278)
🔧 Under the hood
Nothing below changes how Scrollr behaves. It's the boring work that makes the next release safer:
- Around 4,300 lines of dead code removed across two cleanup passes, including a browser test harness that nothing had run in months.
- The Home feed was rebuilt so each data source owns how it appears there. Adding a new source — a league, a feed, a market — no longer means editing shared code that every other widget depends on.
- The desktop app's native layer had 18 tests that were quietly running nowhere. They now run on every change. That gap is also why a fix to the sign-in flow sat unshipped for a day: there was no way to prove it was safe.
- Local development went from a seven-file setup ritual to two commands, and every one of the project's 28 documents was checked line by line against the actual code.
No forced update. v1.1.13 keeps working normally — take this one whenever suits you.
v1.1.13 — Spring cleaning
💄 Improvements
- The Home ticker strip reads like the rest of the app now — plain section header, "1 of 3 rows" instead of "1 row / 3 max", and quieter row labels. (#270)
- Right-click menus grew up. They position themselves reliably near screen edges and now support full keyboard navigation. (#271)
- Support page sections announce themselves properly to screen readers. (#271)
- Dollar amounts in Predictions format consistently ($1,234.56) regardless of your system locale. (#271)
- The releases page shows friendlier dates — "last week" instead of "1 week ago". (#271)
🐛 Fixes
- Fixed right-click menus rendering with dark-theme colors while using a light theme. (#271)
🔧 Under the hood
- A full over-engineering audit removed ~1,900 lines of dead and duplicated code and two dependencies — a leaner app that behaves exactly the same, guarded by 500 tests. (#271)
v1.1.12 — Utility widgets are back
Update from v1.1.11 — worth doing now. A server-side change went out ahead of this release, and v1.1.11 can't cope with it: six widgets disappeared from your Library. Updating puts them back.
🐛 Fixes
-
Clock, Timer, Weather, System Monitor, Uptime and GitHub are in the Library again. These six run entirely on your machine, and the app used to tell them apart from the live-data widgets by a label the server attached to every widget. That label has been removed — it was a second copy of something the server already said another way — but v1.1.11 needed it to find each widget's display code, so it quietly skipped all six. Nothing was uninstalled and no settings were lost; the app simply stopped listing them. This version works it out from what the server still sends.
-
Widget pages know which kind they are again. Every widget page was identifying itself as a local-only widget, because the check was looking for a
/channel/address that stopped existing when the old redirects were deleted. That branch could never match, so the answer was always the same one. -
"Which widget?" on the support form now lists actual widgets. It offered four broad groups — Finance, Sports, RSS, Fantasy — so reporting a problem with NFL scores meant picking "Sports". It now lists the real widgets and picks up new ones on its own.
🔧 Under the hood
"Channel" is gone as a word for anything that isn't literally a channel. It was the app's original name for what is now a widget, and it lingered in about five hundred places the interface never showed you — internal names, stored settings, the support form's categories, and one database column. Those all say widget now.
The bigger change is one fewer thing to keep in sync. A widget's source — which feed drives it — already indicated whether it was live-data or local-only, but a separate label said the same thing, and a category tag said it a third time. Two of those could drift out of agreement with the third. Now there's one answer, derived from the source.
💾 Anything to do after updating?
No. Your widgets, layout, and settings carry over. The six local widgets reappear in the Library on first launch.
v1.1.11 — The Unification, actually working
Update from v1.1.10. That release had a bug that made the app look broken: widgets you added never appeared in the sidebar or on your account page. This fixes it.
🐛 Fixes
- Your widgets are visible again. v1.1.10 asked the server for your widget list, got it, and then filed it under the wrong name internally — so the sidebar, the account page, and the ticker all looked for it and found nothing. Adding a widget genuinely worked and genuinely saved; nothing could see the result, and re-adding correctly told you it was already there. Nothing was lost, and the widgets you added on v1.1.10 will simply reappear once you update.
🔧 Under the hood
The bug came from the v1.1.10 rename, where one file kept writing the old field name. The type checker couldn't flag it — the value was cast in a way that suppresses exactly that check — so a test now scans every file that builds this payload and fails the build if the retired name shows up. The previous version of that test only watched four files by hand, which is how this one slipped through.
💾 Still need to re-add your widgets?
If you added widgets on v1.1.10 they're already saved and will show up after updating. If you haven't added any since the v1.1.10 reset, open the Library and pick the ones you want.
v1.1.10 — The Unification: one language, end to end
This update is required. Scrollr's app and its servers now speak one shared language, and older versions can't talk to the new servers at all — if you're on v1.1.9 or earlier you'll see an update prompt until you install this.
There's almost nothing new to look at. That's deliberate: this release is the plumbing job that makes every future one smaller.
✨ New
- New widgets can now arrive without updating the app. The list of available widgets lives on the server and the app fetches it. Adding another league, another news source, or another market is now a server-side change — you'll just find it in the Library one day, no download required. Previously every new widget meant a full app release.
🔧 Under the hood
The whole release is under the hood, so here's the honest version of what moved:
- One vocabulary, everywhere. The same thing used to be called a channel, a data widget, a source, or a widget depending on where you looked — in the app, in the API, and in the database. It's a widget now, in all three, with no translation layer in between. That's what makes this update mandatory: the old names are gone rather than aliased.
- One place that owns the widget list. Names, colors, logos, categories and descriptions all come from a single definition on the server instead of being duplicated in the app. They can't drift out of sync anymore, because there's only one copy.
- One place that owns the database. Five services used to each manage part of the schema on startup, coordinating through a shared version table. Now one service owns all of it and the rest just read and write.
- The ticker no longer has a special case per data source. Each source brings its own renderer, so adding a kind of data doesn't mean touching the ticker.
- The app's data types are generated from the server's. They can't disagree, because one is compiled from the other.
If you're curious about the reasoning, the full architecture charter is in docs/VISION.md in the repo.
💾 You'll need to re-add your widgets
Renaming the database to match the new vocabulary meant resetting it, so widget lists were cleared. Open the Library and add the ones you want back — it takes a minute, and it's a one-time cost of doing this before launch rather than after.
Live data (prices, scores, headlines, markets) refilled itself automatically and needs nothing from you.