Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Dev ScrollNew to Visual Studio Code? Get it now.
Dev Scroll

Dev Scroll

devscroll

|
1 install
| (0) | Free
A calm, infinite feed of short, sourced tech news, research and developer facts for the minutes your AI agent is busy.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Dev Scroll

A calm, infinite feed of short, sourced technology content for the minutes your AI coding agent is busy.

Productive doomscrolling: scroll as long as you like, but every card is developer-relevant and carries a real source.

What it is

One full-height card at a time, in a narrow sidebar panel that looks like the rest of your editor. Each card is a headline, two to four sentences, a factual note on why it matters, and a link to the original source. Scroll or press j for the next one.

Content comes from four places:

Source What you get Key required
Hacker News Stories above 40 points, newest first No
arXiv Recent preprints from cs.AI, cs.SE, cs.LG, cs.CR, cs.PL, cs.DB, cs.DC No
GitHub Repositories created in the last 45 days with 150+ stars No
Bundled 61 sourced developer and computer-science facts, plus a few text memes No

No account, no login, no API keys, no configuration required.

Install

Grab the .vsix and sideload it.

code --install-extension devscroll-0.1.0.vsix

In Cursor, use Extensions: Install from VSIX... from the Command Palette, or:

cursor --install-extension devscroll-0.1.0.vsix

Then click the Scroll icon in the activity bar, or run Dev Scroll: Open.

Commands

Command What it does
Dev Scroll: Open Focuses the feed
Dev Scroll: Next Story Moves to the next card
Dev Scroll: Previous Story Moves to the previous card
Dev Scroll: Refresh Clears the cache and starts the feed over
Dev Scroll: Open Source of Current Story Opens the visible card's source in your browser

Inside the panel, j / k and the arrow keys move between cards.

Settings

Setting Default Purpose
devScroll.enableNetwork true Turn off for bundled facts only, with no network access at all
devScroll.categories [] Restrict to specific categories; empty means all
devScroll.includeMemes true Occasional text-only developer memes, capped at roughly one in ten
devScroll.cacheTtlMinutes 360 How long the first page stays fresh before refetching
devScroll.pageSize 20 Items requested per page as you scroll

Categories: ai, programming, software-engineering, web, open-source, cloud, databases, security, devtools, computer-science, research, industry, fun.

How content is chosen

Hacker News covers far more than software, so admission is an allow-list rather than a filter. A story enters the feed only if its headline matches a technical keyword, its host is a known technical domain, it looks like a software release, or it is a Show HN. Anything unrecognised is dropped rather than pushed into a vague catch-all category. General news outlets are deliberately excluded from the host list, so their stories only appear when the headline itself is technical.

On top of that, a deny list removes politics, geopolitics, crime, macroeconomics, gadget reviews, and clickbait phrasing.

Ranking combines recency decay, source weight (primary sources and official project sites above aggregators), and content type. The result is then reordered so that consecutive cards rarely share a category.

Sourcing rules

Every non-meme card links to a real https source, and anything without one is discarded before it reaches the UI. Nothing is ever summarised by a language model, so no card can contain an invented claim.

Where an API gives a headline but no prose (Hacker News in particular), the card is filled in from the article's own og:description meta tag, fetched only when you actually scroll to that card. Memes are original, carry no source link, and say so on the card.

Performance

  • No runtime dependencies. Node's built-in fetch handles networking and a small tag reader parses arXiv's Atom, so there is no HTTP or XML library.
  • No timers, no polling, no background work. Requests happen on open with a stale cache, on explicit refresh, or when you scroll near the bottom.
  • The first page is cached in globalState, so reopening the panel renders instantly.
  • The feed keeps at most 60 cards in the DOM and recycles older ones, so a long session does not grow memory.
  • Enrichment reads only the head of a document, up to 96 KB, and stops at </head>.

Failure behaviour

Situation What happens
Offline Bundled facts are shown with an "offline" notice
One source down The others carry the feed; a quiet notice appears
All sources down Falls back to the last cached page, then to bundled facts
GitHub rate limit That provider is skipped for the page
Malformed feed Only that provider's items are dropped
Nothing left A footer offers Refresh instead of spinning forever

Local development

Requires Node 18 or newer.

npm install
npm run compile     # or: npm run watch

Press F5 to launch an Extension Development Host, then open Dev Scroll from the activity bar.

Packaging

npx @vscode/vsce package

This produces devscroll-0.1.0.vsix in the project root.

Project structure

src/
  extension.ts               activation, wiring
  commands/index.ts          command registration
  models/content.ts          TechContent, categories, categorisation rules
  providers/
    types.ts                 ContentProvider interface, fetch helpers
    hackerNewsProvider.ts    Algolia API, paged
    arxivProvider.ts         Atom API, two sections per page
    githubProvider.ts        Search API, paged
    bundledProvider.ts       facts and memes from data/
  services/
    feedService.ts           provider orchestration, paging, dedupe
    cacheService.ts          globalState cache and seen-id tracking
    rankingService.ts        scoring, deny list, category interleave
    enrichmentService.ts     on-demand og:description lookup
    sourceService.ts         url validation, open in browser
  webview/panel.ts           webview view provider, CSP, message handling
media/                       style.css, main.js, icon.svg
data/                        facts.json, memes.json

Adding a source means writing one file that implements ContentProvider and registering it in feedService.ts. Nothing else needs to change.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft