<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Matteo Poli</title>
    <description>The latest articles on DEV Community by Matteo Poli (@urion).</description>
    <link>https://dev.to/urion</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4114249%2F046f8127-55cc-475a-bb24-156a081f38c3.png</url>
      <title>DEV Community: Matteo Poli</title>
      <link>https://dev.to/urion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/urion"/>
    <language>en</language>
    <item>
      <title>Your IDE is built for writing code. But you spend most of your day reading it.</title>
      <dc:creator>Matteo Poli</dc:creator>
      <pubDate>Mon, 07 Sep 2026 16:15:16 +0000</pubDate>
      <link>https://dev.to/urion/your-ide-is-built-for-writing-code-but-you-spend-most-of-your-day-reading-it-3o0i</link>
      <guid>https://dev.to/urion/your-ide-is-built-for-writing-code-but-you-spend-most-of-your-day-reading-it-3o0i</guid>
      <description>&lt;p&gt;Every IDE I have ever used optimizes for the moment your fingers are on the keys. Autocomplete, snippets, refactor menus, generate-a-test. All of it aimed at producing new lines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjr5obbmnd2vdus9whvwm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjr5obbmnd2vdus9whvwm.gif" alt="Reado workflow loop" width="599" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But look at how a day actually goes. You open a repo you did not write. You read. You follow a call chain three files deep. You find the thing that looks wrong. You think "someone should fix this," and then you… what? Write a TODO nobody grep's. Open a scratch file. Message yourself on Slack. Try to hold it in your head until you get back to it.&lt;/p&gt;

&lt;p&gt;And that was &lt;em&gt;before&lt;/em&gt; agents. Now Claude Code or Codex writes a large chunk of the code, and the human job shifts even further toward reading, judging, and directing. Yet the tools still assume the human is the one typing.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://github.com/WatermelonBros/reado" rel="noopener noreferrer"&gt;&lt;strong&gt;Reado&lt;/strong&gt;&lt;/a&gt; — a desktop code IDE where &lt;strong&gt;reading is the primary experience&lt;/strong&gt; and the &lt;strong&gt;primary action is leaving a comment anchored to a precise point in the code&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mental model: an inverted code review
&lt;/h2&gt;

&lt;p&gt;You are the reviewer: you read and annotate. The AI is the committer: it implements the fixes.&lt;/p&gt;

&lt;p&gt;The loop is three steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Read and annotate.&lt;/strong&gt; Hover a line, hit the shortcut, leave a comment on a line range. A comment has a type (bug, refactor, performance, question, note) and is either a &lt;strong&gt;task&lt;/strong&gt; (actionable work) or a &lt;strong&gt;note&lt;/strong&gt; (an observation that stays out of the agent's way).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Send review.&lt;/strong&gt; Open the integrated terminal, launch &lt;code&gt;claude&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt; or &lt;code&gt;copilot&lt;/code&gt; with one click, then press &lt;strong&gt;Send review&lt;/strong&gt;. Reado injects a prompt pointing the agent at your open tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The agent resolves.&lt;/strong&gt; It fetches your tasks, makes the changes, and marks each one &lt;code&gt;reado task done &amp;lt;id&amp;gt;&lt;/code&gt; (or &lt;code&gt;reado task fail &amp;lt;id&amp;gt; "&amp;lt;reason&amp;gt;"&lt;/code&gt; when it is blocked). A file watcher reflects the result live in the UI, and resolved comments move to history.&lt;/p&gt;

&lt;p&gt;That is it. Read, annotate, hand off, watch it land.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comments are files, not database rows
&lt;/h2&gt;

&lt;p&gt;This is the design decision I care most about.&lt;/p&gt;

&lt;p&gt;Every comment is a &lt;code&gt;.md&lt;/code&gt; file under &lt;code&gt;.reado/&lt;/code&gt; in your project. Not a row in a hidden SQLite blob, not a cloud service. That matters for three reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They survive external edits.&lt;/strong&gt; The agent rewrites the file you commented on, the line numbers all shift, and the comment still points at the right code. Re-anchoring is fuzzy and diff-free, and when a comment genuinely can no longer be placed it becomes an orphan rather than silently pointing at the wrong line. A comment that lies about its location is worse than no comment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They are yours.&lt;/strong&gt; Plain markdown, in your repo (or gitignored, your call). Readable without Reado. Diffable. Greppable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They accumulate.&lt;/strong&gt; Reading notes are not throwaway. Over time they become a knowledge base about the codebase, which Reado unifies with the project's own docs and specs, full-text searchable, with a knowledge graph linking comments, files, specs and docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the agent actually reaches Reado
&lt;/h2&gt;

&lt;p&gt;There is one &lt;code&gt;reado&lt;/code&gt; binary, and it wears two hats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;An MCP server&lt;/strong&gt; (auto-wired into each agent's config when you open a project) exposes &lt;code&gt;reado://tasks&lt;/code&gt;, &lt;code&gt;reado://comments&lt;/code&gt;, &lt;code&gt;reado://reading-progress&lt;/code&gt; and &lt;code&gt;reado://bookmarks&lt;/code&gt; as read-only context — plus &lt;code&gt;browser_*&lt;/code&gt; tools to drive the in-app browser preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A CLI&lt;/strong&gt; is how the agent &lt;em&gt;acts&lt;/em&gt;: &lt;code&gt;reado task list|show|done|fail&lt;/code&gt;, &lt;code&gt;reado comment add|reply|search&lt;/code&gt;, &lt;code&gt;reado kb search&lt;/code&gt; to consult the docs and specs before touching anything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The binary is the stable contract, which means the on-disk format can evolve without breaking every agent. There is also a Claude Code plugin (and an &lt;code&gt;AGENTS.md&lt;/code&gt; for Codex/Copilot) that teaches the agent the contract properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rest of what is in there
&lt;/h2&gt;

&lt;p&gt;It is a real IDE underneath, not a note-taking toy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CodeMirror 6 viewer&lt;/strong&gt; tuned for reading: broad syntax highlighting, large-file virtualization, comfortable reading width, sticky scope headers, a file outline, go-to-definition, LSP support, and dedicated rendering for markdown, images, PDFs and foldable JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reading progress.&lt;/strong&gt; Reado knows which files you have read. When an agent changes a file you already read, you can diff it against &lt;em&gt;your last-read snapshot&lt;/em&gt; — review only what is new to you, not the whole git diff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guided pair review.&lt;/strong&gt; The agent proposes a review route through a diff, a branch or a PR, reviews file by file and drafts artifacts; you accept or reject each one. It round-trips with GitHub and GitLab through &lt;code&gt;gh&lt;/code&gt;/&lt;code&gt;glab&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic search.&lt;/strong&gt; Ask "where do we handle retries?" — a local SQLite/FTS5 index answers in milliseconds, and you can escalate to the agent when a keyword index is not enough. Answers from the agent are labelled as such, because you should know which kind of answer you are holding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four themes grounded in actual research&lt;/strong&gt; (dark, light, high-contrast, sepia), all held to a WCAG AA contrast floor. The &lt;a href="https://github.com/WatermelonBros/reado/blob/main/docs/research/color-theory-for-reading.md" rel="noopener noreferrer"&gt;research doc&lt;/a&gt; is in the repo, including the part where it admits there is no controlled study proving any palette reduces fatigue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensions from Open VSX&lt;/strong&gt; — themes, icon themes, snippets, grammars. Reado reads what an extension &lt;em&gt;declares&lt;/em&gt; and never runs its code, so the catalogue only lists extensions that will genuinely work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reado Anywhere&lt;/strong&gt;, an opt-in LAN server that lets your phone read and comment on the project over HTTPS, paired by QR with per-device revocable credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Reado is &lt;strong&gt;MIT licensed&lt;/strong&gt;, built with &lt;strong&gt;Tauri 2, React 19 and a Rust backend&lt;/strong&gt;, and runs on &lt;strong&gt;macOS, Linux and Windows&lt;/strong&gt;. Signed builds are on the releases page and the app updates itself from there.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌍 &lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://reado.watermelon-studio.it" rel="noopener noreferrer"&gt;reado.watermelon-studio.it&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/WatermelonBros/reado" rel="noopener noreferrer"&gt;github.com/WatermelonBros/reado&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://github.com/WatermelonBros/reado/releases/latest" rel="noopener noreferrer"&gt;latest release&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is at v1.13 and under very active development — the read → annotate → AI-resolve loop is the thing I want to get right, and honest feedback on where it breaks is more useful to me than politeness. Issues and PRs are open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And if the idea resonates, a ⭐ on the repo genuinely helps&lt;/strong&gt; — it is how a project like this gets found by the people it was built for.&lt;/p&gt;

&lt;p&gt;What does your read-then-fix workflow look like today? I would like to know what I am missing.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>rust</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
