<?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: GH Health</title>
    <description>The latest articles on DEV Community by GH Health (@gh555com).</description>
    <link>https://dev.to/gh555com</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3934432%2Fc51d2b1d-01ce-451f-a56d-1d7ee1636abf.gif</url>
      <title>DEV Community: GH Health</title>
      <link>https://dev.to/gh555com</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gh555com"/>
    <language>en</language>
    <item>
      <title>qqq IDE Development Progress since 2026.05.16</title>
      <dc:creator>GH Health</dc:creator>
      <pubDate>Wed, 03 Jun 2026 07:38:03 +0000</pubDate>
      <link>https://dev.to/gh555com/qqq-ide-development-progress-since-20260516-e8e</link>
      <guid>https://dev.to/gh555com/qqq-ide-development-progress-since-20260516-e8e</guid>
      <description>&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FFPXKHX4NKOZJ6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FFPXKHX4NKOZJ6.gif" width="799" alt="qqq IDE by GH Health" height="166"&gt;&lt;/a&gt;
  © 2005 &lt;a href="https://www.gh555.com" rel="noopener noreferrer"&gt;gh555.com&lt;/a&gt; All Rights Reserved.
&lt;/p&gt;

&lt;h1&gt;
  
  
  qqq IDE Development Progress since 2026.05.16
&lt;/h1&gt;

&lt;p&gt;qqq IDE is an open-source IDE project based on VS Code, Code-OSS, and VSCodium.&lt;/p&gt;

&lt;p&gt;The core idea of qqq is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make everything pasteable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;qqq lets users paste images, screenshots, files, folders, HTML pages, videos, media resources, documents, and mixed creative materials directly into the editor, with WYSIWYG preview.&lt;/p&gt;

&lt;p&gt;But qqq is not only a paste extension.&lt;/p&gt;

&lt;p&gt;Paste is only the entry point.&lt;/p&gt;

&lt;p&gt;The long-term goal of qqq IDE is to create a new way to orchestrate ideas inside the IDE, making the editor behave more like an operating system for developers, writers, creators, researchers, and AI tool users.&lt;/p&gt;

&lt;p&gt;Useful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Repository / README: &lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;qqq IDE Roadmap: &lt;a href="https://github.com/gh555com/qqq/discussions/6" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/6&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official Download: &lt;a href="https://www.gh555.com/qqq" rel="noopener noreferrer"&gt;https://www.gh555.com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2026.06.07 —
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fa83f957b-9b84-4a23-9068-01c374731808" class="article-body-image-wrapper"&gt;&lt;img width="2752" height="1457" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fa83f957b-9b84-4a23-9068-01c374731808"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;## 2026.06.07 — Three work areas (left, middle, right) start working simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc56e71e4-ac6b-4e3f-adb1-6ff54fd0c07d" class="article-body-image-wrapper"&gt;&lt;img width="2756" height="1459" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc56e71e4-ac6b-4e3f-adb1-6ff54fd0c07d"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fedec503e-af64-4218-a686-0e866faa3cac" class="article-body-image-wrapper"&gt;&lt;img width="2606" height="1447" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fedec503e-af64-4218-a686-0e866faa3cac"&gt;&lt;/a&gt;&lt;br&gt;
qqq IDE is running at full speed, and its own development is carried out within qqq IDE.&lt;/p&gt;



&lt;p&gt;## 2026.06.05 — Within the same floor, you can prompt the AI immediately without creating a new floor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3ef48aca-3c57-427a-b3f9-a57021203ea6" class="article-body-image-wrapper"&gt;&lt;img width="389" height="1457" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3ef48aca-3c57-427a-b3f9-a57021203ea6"&gt;&lt;/a&gt;&lt;br&gt;
Once your message is sent and the AI is halfway through processing it, you may spot errors in your input and want to redirect the AI right away without interrupting it. The qqq IDE supports this functionality and is rigorously engineered to guarantee such capability.&lt;/p&gt;



&lt;p&gt;## 2026.06.02 — Liberation: qqq IDE enables simultaneous opening of three AI chat panels, with the three sandboxes operating independently and continuously without mutual interference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F36c9a463-a7dd-4322-ba24-b2dd172c28b1" class="article-body-image-wrapper"&gt;&lt;img width="2760" height="1462" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F36c9a463-a7dd-4322-ba24-b2dd172c28b1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fab731b22-94a6-41d0-85ef-958d28176bb3" class="article-body-image-wrapper"&gt;&lt;img width="2753" height="1470" alt="(Y61)C8L48BE5SQ~4TR414W" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fab731b22-94a6-41d0-85ef-958d28176bb3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The multi-instance AI task feature native to qqq IDE was developed using qqq IDE itself; in other words, qqq IDE efficiently bootstrapped its own development.&lt;/p&gt;



&lt;p&gt;## 2026.05.30 — qqq IDE can run long-running tasks without interruption.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F78a8136a-32cc-47d4-998b-947a63f6e2ee" class="article-body-image-wrapper"&gt;&lt;img width="2022" height="1318" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F78a8136a-32cc-47d4-998b-947a63f6e2ee"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3e314895-7e71-49b6-9dbc-d0b1b129f922" class="article-body-image-wrapper"&gt;&lt;img width="2022" height="1318" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3e314895-7e71-49b6-9dbc-d0b1b129f922"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--- qqq IDE &lt;/p&gt;
&lt;h2&gt;
  
  
  2026.05.30 — What is qz? Why does it exist?
&lt;/h2&gt;

&lt;p&gt;Think of qz as the entire application's "courier company."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before qz&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every module spawned its own child processes — scattered &lt;code&gt;child_process.exec&lt;/code&gt; calls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI panel     → spawn bash       (no timeout)
File manager → spawn rg         (no timeout)
Editor       → spawn python     (no timeout)
LSP          → spawn typescript (no timeout)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The problem: one command hangs → nobody kills it → orphan process sits in memory and keeps running forever. Like ordering food delivery where nobody delivers and nobody cancels — the rider is just out there indefinitely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What qz does&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All child processes go through a single entry point, with three layers of protection built in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Every spawn ships with:
┌─────────────────────────────────┐
│ ① deadline hard timeout        │  30s reached → kill entire process tree
│ ② stall no-output timeout      │  5s no activity → kill
│ ③ tree-kill full cleanup       │  kill parent and all children, no orphans left
└─────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three-tier runner fallback: &lt;code&gt;ghrun&lt;/code&gt; (Rust, fastest) → &lt;code&gt;runner&lt;/code&gt; (Python, fallback) → &lt;code&gt;node&lt;/code&gt; (last resort)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it's called the "Truth Machine"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because it's the only entry point. No spawn can escape qz's watch. All the old scattered &lt;code&gt;child_process.spawn&lt;/code&gt; calls have been refactored away. Now when you read the logs, the &lt;code&gt;[qz]&lt;/code&gt; prefix is the universal passport. 🎯&lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.29 — Building AI Infrastructure from Scratch：&lt;a href="https://github.com/gh555com/qqq-IDE" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq-IDE&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Faad85b77-1642-4c5a-baa5-bfacd5376eea" class="article-body-image-wrapper"&gt;&lt;img width="1400" height="900" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Faad85b77-1642-4c5a-baa5-bfacd5376eea"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3f230db3-cbb6-44a2-b579-4a90b6b72678" class="article-body-image-wrapper"&gt;&lt;img width="1400" height="900" alt="electron_usPBagfvAr" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3f230db3-cbb6-44a2-b579-4a90b6b72678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2026.05.29 has been open-sourced.&lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.28 — There are two color schemes in total.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F381c8548-03fe-438b-8a5d-7cd5bc2e9173" class="article-body-image-wrapper"&gt;&lt;img width="1400" height="900" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F381c8548-03fe-438b-8a5d-7cd5bc2e9173"&gt;&lt;/a&gt;&lt;br&gt;
Today, we built the underlying "qgs" and "qg" data persistence engines. Meanwhile, we introduced the concept of a root folder for the AI viewport, and completed the initial prototype for persisting AI conversation records: hot data is stored in quest.sq3 based on "qgs" (located in the root folder directory of the AI viewport), while locally archived cold data relies on "qg". &lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.26 — Today marks my first day developing with the qqq IDE on my own, working on an extremely large project with a massive context window.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F26af610b-cf4c-469c-9ec4-c516a1e1a1fd" class="article-body-image-wrapper"&gt;&lt;img width="1974" height="1457" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F26af610b-cf4c-469c-9ec4-c516a1e1a1fd"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.25 — qqq IDE has decided to break away from the VSCodium ecosystem and build a 100% self‑developed AI IDE from scratch. We will never forget our original aspiration: to paste everything.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0c5002e9-a7d1-41f8-af00-de24b4b200e5" class="article-body-image-wrapper"&gt;&lt;img width="1779" height="1225" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0c5002e9-a7d1-41f8-af00-de24b4b200e5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Arrange all creative ideas, and deliver a more efficient AI‑powered programming tool. &lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.22 — Server-side Hot Update Module
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0cc78985-3648-463a-97a5-b2f5ecbe04ea" class="article-body-image-wrapper"&gt;&lt;img width="1416" height="939" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F0cc78985-3648-463a-97a5-b2f5ecbe04ea"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F28d97639-3453-483b-8e1a-b664b68a2755" class="article-body-image-wrapper"&gt;&lt;img width="1416" height="939" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F28d97639-3453-483b-8e1a-b664b68a2755"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F6f4287d9-48bd-42fc-bf80-53ca1da5cea3" class="article-body-image-wrapper"&gt;&lt;img width="1416" height="939" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F6f4287d9-48bd-42fc-bf80-53ca1da5cea3"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff5987c5e-efb5-4294-a422-13e204ad0a18" class="article-body-image-wrapper"&gt;&lt;img width="1416" height="939" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff5987c5e-efb5-4294-a422-13e204ad0a18"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.22 — The scaffolding for development and compilation is operating normally.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3fd6e6e3-ff26-400e-ad1d-9f9cd0f1284b" class="article-body-image-wrapper"&gt;&lt;img width="1317" height="839" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3fd6e6e3-ff26-400e-ad1d-9f9cd0f1284b"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A development and loading model centered around “&lt;strong&gt;gaea-loader&lt;/strong&gt;” will be established to enhance the efficiency of both first-party and third-party developers, with the goal of achieving hot-updates for everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.18 — Image content recognition: it actually found it！
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F255e3e75-712e-4473-ba2b-6038a16763c8" class="article-body-image-wrapper"&gt;&lt;img width="453" height="881" alt="}U51Q{W L$)4TIS0)}UH482" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F255e3e75-712e-4473-ba2b-6038a16763c8"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fa46c3512-419b-41a6-991e-a606e969977f" class="article-body-image-wrapper"&gt;&lt;img width="1066" height="1658" alt="_{P(VJ raw `YUMH@@ {5_HWBDGT" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fa46c3512-419b-41a6-991e-a606e969977f"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F45ed0558-ab77-49aa-97c0-af57da0694b8" class="article-body-image-wrapper"&gt;&lt;img width="1458" height="1262" alt="MBDL%37UR@{5~4` endraw M6ZV(XEF" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F45ed0558-ab77-49aa-97c0-af57da0694b8"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2026.05.17 — Rage Meter: a core innovation for AI IDE workflows
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F8fe38879-8387-42b8-8da9-747ecc4294cd" class="article-body-image-wrapper"&gt;&lt;img width="308" height="403" alt="K9468M}%(Z%HA(AUBIEY535" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F8fe38879-8387-42b8-8da9-747ecc4294cd"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Concept summary:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
plaintext
User question
    │
    ▼
Pro + max rage 100 takes a first look
    │ Output:
    │ ① task breakdown
    │ ② information collection checklist
    │ ③ rage value allocation for each subtask
    │
    │ This step is cheap.
    │ It is only a short planning prompt.
    ▼
Flash + disabled rage 0 collects information
    │ Uses tools, reads files, searches code,
    │ and follows the instructions from Pro.
    ▼
Pro / Flash executes subtasks based on assigned rage values
    │ Simple rename      → Flash rage 0
    │ Core algorithm     → Pro high rage 70
    │ Architecture choice → Pro max rage 100
    ▼
Final output to the user
---

## 2026.05.16 — qqq IDE started to exist. GE billing.


On 2026.05.16, qqq IDE started to exist as a real product direction.

Before this point, qqq was mainly an extension that improved paste workflows inside VS Code, Code-OSS, and VSCodium.

After this point, qqq started moving toward qqq IDE.

The direction became clearer:

&amp;gt; Make everything pasteable.  
&amp;gt; Orchestrate ideas.  
&amp;gt; Turn the IDE into an operating system.

The goal is to reduce the distance between seeing something, capturing it, organizing it, and using it.

This was the first development snapshot of qqq IDE.

thank you for watching！
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>qqq AI: Metrics Compass — Complete Manual</title>
      <dc:creator>GH Health</dc:creator>
      <pubDate>Fri, 22 May 2026 04:18:08 +0000</pubDate>
      <link>https://dev.to/gh555com/qqq-ai-metrics-compass-complete-manual-24n</link>
      <guid>https://dev.to/gh555com/qqq-ai-metrics-compass-complete-manual-24n</guid>
      <description>&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FFPXKHX4NKOZJ6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FFPXKHX4NKOZJ6.gif" width="799" alt="qqq IDE by GH Health" height="166"&gt;&lt;/a&gt;
  © 2005 &lt;a href="https://www.gh555.com" rel="noopener noreferrer"&gt;gh555.com&lt;/a&gt; All Rights Reserved.
&lt;/p&gt;
 

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Project discussion and roadmap: &lt;a href="https://github.com/gh555com/qqq/discussions/6" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/6&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official download: &lt;a href="https://www.gh555.com/qqq" rel="noopener noreferrer"&gt;https://www.gh555.com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - qqq IDE Development Progress since 2026.05.16: &lt;a href="https://github.com/gh555com/qqq/discussions/7" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/7&lt;/a&gt; 
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ffd080824-3b91-4f3b-80d9-c2a5b6bce2aa" class="article-body-image-wrapper"&gt;&lt;img width="494" height="286" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ffd080824-3b91-4f3b-80d9-c2a5b6bce2aa"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Metrics Compass — Complete Manual
&lt;/h1&gt;

&lt;p&gt;==============&lt;br&gt;
Last updated: 2026-05-18&lt;br&gt;
Total metrics: 48 (40 in-panel + 5 out-of-panel + 3 hidden)&lt;br&gt;
Location: chat.html #metrics-panel — below the candlestick chart, above the message area&lt;/p&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;
&lt;h2&gt;
  
  
  I. Turn Zone (Per-turn, one-shot metrics) — 16 items
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 1 ]&lt;/strong&gt; id="mv-in"  · Label: "↑"  · Name: Turn Input Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total tokens sent to the AI this turn. Includes system prompt + conversation history + current user message.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → usage.prompt_tokens (accumulated each turn)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 12.3K / 456K / 1.2M&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; ≥1M → "1.2M", ≥1K → "12.3K", otherwise raw value&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text, default opacity 0.65&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 2 ]&lt;/strong&gt; id="mv-out"  · Label: "↓"  · Name: Turn Output Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total tokens generated by the AI this turn. Includes response body + tool-call JSON.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → usage.completion_tokens (accumulated each turn)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 2.1K / 890 / 15.6K&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; Same as mv-in&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 3 ]&lt;/strong&gt; id="mv-think"  · Label: "🧠"  · Name: Deep Thinking Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; reasoning_tokens — tokens consumed by DeepSeek's internal chain-of-thought. Higher = deeper thinking, better quality but higher cost. Only has a value when thinking=enabled tier is active.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → usage.completion_tokens_details.reasoning_tokens&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0 / 3.2K / 12.8K&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 4 ]&lt;/strong&gt; id="mv-cache"  · Label: "💾"  · Name: Prefix Cache Hit Rate&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; cacheHit / (cacheHit + cacheMiss) × 100%. Higher hit rate = more savings, because cached tokens cost ~1/120th of uncached tokens.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-side → Math.round(cacheHitTokens / total * 100)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 85% / 42% / 0%&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;br&gt;
≥60% → green mc-hi (high savings efficiency)&lt;br&gt;
20–59% → yellow mc-warn (average)&lt;br&gt;
&amp;lt;20% → red mc-bad (wasteful)&lt;br&gt;
No data → white&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 5 ]&lt;/strong&gt; id="mv-hit"  · Label: "Hit"  · Name: Cache Hit Token Count&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Tokens that hit the prefix cache this turn. Billed at a very low rate (~¥0.025/M tokens).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → usage.prompt_cache_hit_tokens&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 24.5K / 0 / 890K&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; Always mc-hi green (good news)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 6 ]&lt;/strong&gt; id="mv-miss"  · Label: "Miss"  · Name: Cache Miss Token Count&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Tokens that did not hit the prefix cache this turn. Billed at full price (~¥3/M tokens) — 120× the cached rate.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → usage.prompt_cache_miss_tokens&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 1.2K / 89K / 0&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; Always mc-bad red (reminder: this portion is expensive)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 7 ]&lt;/strong&gt; id="mv-cost"  · Label: "💰"  · Name: Turn ge Cost&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total ge consumed this turn. Billed server-side, includes all API calls + vision analysis fees. 1 ge ≈ ¥1.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _turnCostWge / 10000&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0.0032 / &amp;lt;0.001 / 0.1250&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; ≤0 → "0", &amp;lt;0.001 → "&amp;lt;0.001", &amp;lt;0.01 → 4 decimal places, otherwise 3 decimal places&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 8 ]&lt;/strong&gt; id="mv-tier"  · Label: (none)  · Name: Model Tier&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Which model configuration is used this turn. Normal messages use Pro+Max (deep thinking); casual greetings use Flash (no thinking, extremely cheap).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.turn.tier ("⚡ Flash" or "🧠 Pro+Max")&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; "🧠 Pro+Max" / "⚡ Flash" / "—" (not started)&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text, font-weight: normal, opacity: 0.7&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[ 9 ]&lt;/strong&gt; id="mv-tools"  · Label: "🔧"  · Name: Tool Call Count&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; How many times the AI called tools this turn (read_file / edit_file / run_command / search_text, etc.).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.turn.toolCount (accumulated each turn)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0 / 3 / 12&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[10]&lt;/strong&gt; id="mv-time"  · Label: "⏱"  · Name: Turn Duration&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total time from the user sending a message to the AI completing its full reply (including all tool calls).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → Date.now() - _turnStart&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 2.3s / 850ms / 1.2m&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; ≥60s → "1.2m", ≥1s → "2.3s", otherwise "850ms"&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[11]&lt;/strong&gt; id="mv-tps"  · Label: "tok/s"  · Name: Output Throughput&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; completionTokens / duration (seconds). Measures the AI's text generation speed — higher = faster typing.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-derived → Math.round(completionTokens / durationMs * 1000)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 85 / 120 / 0 (displays "—" when no valid data)&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; mc-hi green&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[12]&lt;/strong&gt; id="mv-save"  · Label: "¥Saved"  · Name: Turn Cache Savings&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Money saved by cache hits this turn (in CNY). Formula: cacheHitTokens × (¥3 − ¥0.025) / 1M.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-derived → cacheHitTokens * 2.975 / 1000000&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; ¥0.0731 / ¥&amp;lt;0.001 / — (no cache hits)&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; mc-hi green (savings are always good)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[13]&lt;/strong&gt; id="mv-retry"  · Label: "retry"  · Name: API Retry Count&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; How many times the API call was automatically retried this turn due to 429/502/503/network errors.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.turn.retries&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0 / 1 / 3&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;br&gt;
≥3 → red mc-bad (very poor network)&lt;br&gt;
≥1 → yellow mc-warn (some instability)&lt;br&gt;
0 → white (normal)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[14]&lt;/strong&gt; id="mv-tavg"  · Label: "t̄ool"  · Name: Average Tool Duration&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Average duration per tool call this turn (ms). Measures tool execution efficiency.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-derived → toolTotalMs / toolCount (rounded)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 45ms / 1.2s / — (no tool calls)&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; ≥1s → "1.2s", otherwise "45ms"&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[15]&lt;/strong&gt; id="mv-ttft"  · Label: "TTFT"  · Name: Time To First Token&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Time To First Token — latency from sending the HTTP request to receiving the first valid token. Lower = better network, faster inference startup.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → Date.now() - _requestStartMs (timestamped on arrival of first content/reasoning/tool_call delta)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 280ms / 1.5s / 4.2s&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;br&gt;
≤500ms → green mc-hi (very fast)&lt;br&gt;
501–1500ms → normal (no color)&lt;br&gt;
1501–3000ms → yellow mc-warn (slightly slow)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;3000ms → red mc-bad (severe latency)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;[16]&lt;/strong&gt; id="mv-free"  · Label: (none)  · Name: Free Billing Window Indicator&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Whether this turn falls within a free billing window. ✨ = free, — = billed normally.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lastBillingFreeWindow (free_window field from server-side billing event)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; "✨" / "—"&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;
&lt;h2&gt;
  
  
  II. Session Zone (Cumulative for current conversation) — 11 items
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[17]&lt;/strong&gt; id="mv-sin"  · Label: "Σ↑"  · Name: Session Cumulative Input Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total input tokens across all turns from the start of this conversation to now.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.promptTokens (adds usage.prompt_tokens each turn)&lt;br&gt;
&lt;strong&gt;Values:&lt;/strong&gt; Cumulative version of mv-in; numbers much larger than single-turn values&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[18]&lt;/strong&gt; id="mv-sout"  · Label: "Σ↓"  · Name: Session Cumulative Output Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total output tokens across all turns in this conversation.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.completionTokens&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[19]&lt;/strong&gt; id="mv-scache"  · Label: "Σ💾"  · Name: Session Cumulative Cache Hits&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total prefix-cache-hit token count for this conversation (tokens that saved you money).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.cacheHitTokens&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[20]&lt;/strong&gt; id="mv-smiss"  · Label: "Σ✗"  · Name: Session Cumulative Cache Misses&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total prefix-cache-miss token count for this conversation.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.cacheMissTokens&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[21]&lt;/strong&gt; id="mv-scost"  · Label: "Σ💰"  · Name: Session Cumulative ge Cost&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total ge consumed in this conversation. Formatted same as mv-cost.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.costGe&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[22]&lt;/strong&gt; id="mv-turns"  · Label: "🔄"  · Name: Session Turn Count&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; How many times the user has sent messages in this conversation (each turn = one user message + one complete AI reply).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.turns&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[23]&lt;/strong&gt; id="mv-sretry"  · Label: "Σretry"  · Name: Session Cumulative Retries&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total retry count across all turns in this conversation. Reflects overall network stability for the session.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.retries&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[24]&lt;/strong&gt; id="mv-ssave"  · Label: "Σ¥Saved"  · Name: Session Cumulative Savings&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total money saved by caching across this entire conversation (CNY). Formatted same as mv-save.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.session.cnySaved&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; mc-hi green&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[25]&lt;/strong&gt; id="mv-savgtps"  · Label: "x̄tok/s"  · Name: Session Average Throughput&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Session total output tokens / session total duration. Reflects average generation speed over the whole conversation.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-derived → sessionCompletionTokens / sessionTotalDurationMs * 1000&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 78 / 0 (displays "—" when no valid data)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[26]&lt;/strong&gt; id="mv-savgsave"  · Label: "x̄¥/turn"  · Name: Average Savings Per Turn&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total savings / total turns. Reflects average per-turn cache optimization benefit.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-derived → sessionCnySaved / sessionTurns&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; ¥0.0412 / ¥&amp;lt;0.001 / — (no data)&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; mc-hi green&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[27]&lt;/strong&gt; id="mv-savgretry"  · Label: "x̄ret/turn"  · Name: Average Retries Per Turn&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total retries / total turns. Reflects network stability. &amp;gt;0.5 = very unstable network.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; Client-derived → sessionRetries / turns&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0.00 / 0.33 / 1.50&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;0.5 → red mc-bad (unstable network)&lt;br&gt;
0.1 → yellow mc-warn&lt;br&gt;
≤0.1 → white (normal)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;
&lt;h2&gt;
  
  
  III. Engine Zone (Context Engine) — 5 items
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[28]&lt;/strong&gt; id="mv-facts"  · Label: "📚"  · Name: Fact Library Count&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Number of structured facts extracted by the context engine from compressed old messages. Each fact contains type/content/keywords, used for subsequent semantic retrieval. More facts = the AI knows more about your project context.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _ctx.facts.length&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0 / 23 / 87 (upper limit: 100)&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[29]&lt;/strong&gt; id="mv-narr"  · Label: "📖"  · Name: Narrative Summary Length&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Character count of the global narrative summary — a coherent overview of compressed conversation history, injected into every system prompt to maintain AI context continuity across turns.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _ctx.narrative.length&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0 / 456 / 1.2K&lt;br&gt;
&lt;strong&gt;Appearance:&lt;/strong&gt; White text&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[30]&lt;/strong&gt; id="mv-ctx"  · Label: "📊"  · Name: Context Window Usage&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; totalTokens / 800K × 100%. 800K is DeepSeek's context window compression trigger threshold. &amp;gt;50% = system begins auto-compressing old messages; &amp;gt;80% = approaching the limit.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → Math.min(100, Math.round(totalTokens / 800000 * 100))&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 12% / 48% / 82%&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;80% → red mc-bad (near the limit)&lt;br&gt;
51–80% → yellow mc-warn (compression underway)&lt;br&gt;
≤50% → green mc-hi (plenty of room)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;[31]&lt;/strong&gt; id="mv-warm"  · Label: "warm"  · Name: Cache Warmup Status&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; 500ms after the panel opens, a lightweight request (max_tokens=1) is sent to DeepSeek in the background to pre-build the KV cache for the system prompt. This way the user's first message can hit the cache, saving up to 120× in cost.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _warmupStatus&lt;br&gt;
&lt;strong&gt;Values:&lt;/strong&gt;&lt;br&gt;
"⏳" = pending — warmup in progress (panel just opened)&lt;br&gt;
"✅" = ok — warmup succeeded (cache built)&lt;br&gt;
"❌" = fail — warmup failed (network/auth issue)&lt;br&gt;
"—" = none — not started (panel never opened)&lt;br&gt;
&lt;strong&gt;Colors:&lt;/strong&gt;&lt;br&gt;
"✅" → green mc-hi&lt;br&gt;
"⏳" → yellow mc-warn&lt;br&gt;
"❌" → red mc-bad&lt;br&gt;
"—" → white&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[32]&lt;/strong&gt; id="mv-lastcall"  · Label: "cache"  · Name: Time Since Last API Call&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; How long since the last API call. Used to determine whether the prefix cache is still within its TTL. DeepSeek cache TTL is approximately 5–10 minutes; after 10 minutes the cache may have expired.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lastCallTs; client calculates Date.now() - _lastCallTs&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; "12s ago" / "3m ago" / "15m ago" / "—" (never called)&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;br&gt;
&amp;lt;1m → green mc-hi (cache definitely still alive)&lt;br&gt;
1–5m → green mc-hi&lt;br&gt;
5–10m → yellow mc-warn (may be expiring soon)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;10m → red mc-bad (cache most likely expired)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;
&lt;h2&gt;
  
  
  IV. Lifetime Zone (Cumulative across IDE restarts) — 8 items
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;br&gt;
These 8 items are prefixed with "∞" to indicate they survive IDE restarts. Data is persisted to VS Code globalState['qqq-ai.lifetimeMetrics'].&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[33]&lt;/strong&gt; id="mv-lturns"  · Label: "∞turns"  · Name: Lifetime Total Turns&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total number of AI conversation turns you have initiated since installing qqq-ai. A cumulative counter that persists across IDE restarts.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.turns&lt;br&gt;
&lt;strong&gt;Persistence:&lt;/strong&gt; globalState, 2s debounce flush + deactivate flush&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[34]&lt;/strong&gt; id="mv-lsess"  · Label: "∞sess"  · Name: Lifetime Total Sessions&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total number of panel sessions you have started (switching tabs or starting a new chat does not count — only creating a new Agent instance counts).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.sessions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[35]&lt;/strong&gt; id="mv-lcost"  · Label: "∞¥spent"  · Name: Lifetime Total Spend&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total ge you have ever spent on qqq AI (approximately equivalent to CNY). Formatted same as mv-cost.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.costGe&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[36]&lt;/strong&gt; id="mv-lsave"  · Label: "∞¥saved"  · Name: Lifetime Total Savings&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total money saved by prefix caching over your entire lifetime. Green highlighted — see how much you've saved.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.cnySaved&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; mc-hi green&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[37]&lt;/strong&gt; id="mv-lin"  · Label: "∞↑"  · Name: Lifetime Total Input Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total input tokens across all your conversations (total context ever sent to the AI).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.promptTokens&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[38]&lt;/strong&gt; id="mv-lout"  · Label: "∞↓"  · Name: Lifetime Total Output Tokens&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total output tokens the AI has ever generated for you.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.completionTokens&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[39]&lt;/strong&gt; id="mv-lret"  · Label: "∞ret"  · Name: Lifetime Total Retries&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total number of automatic API retries you have ever experienced. Lower = more stable network.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.retries&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[40]&lt;/strong&gt; id="mv-ldur"  · Label: "∞⏱"  · Name: Lifetime Total Duration&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Total time you have spent with qqq AI (sum of all turn durations).&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _lifetime.durationMs&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; "23m" / "1.5h" / "3.2h"&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; &amp;lt;60 min → "23m", ≥60 min → "1.5h"&lt;/p&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;
&lt;h2&gt;
  
  
  V. Zone 4 — Token Estimator
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; Above the input box — id="input-est-row" → id="input-est"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Function:&lt;/strong&gt; Real-time estimation of how many tokens your current input will consume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algorithm:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Count characters in the input box&lt;/li&gt;
&lt;li&gt;Detect whether CJK characters are present (Chinese / Japanese / Korean)&lt;/li&gt;
&lt;li&gt;Contains CJK → estimated tokens = character count ÷ 1.5&lt;/li&gt;
&lt;li&gt;Pure English → estimated tokens = character count ÷ 4&lt;/li&gt;
&lt;li&gt;Empty input → display "— tok"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Color rules:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;gt; 4000 tokens → bad (red #d77) ← this turn will be expensive&lt;/li&gt;
&lt;li&gt;1001–4000 → warn (yellow #d4a017) ← moderate cost&lt;/li&gt;
&lt;li&gt;≤1000 → normal grey&lt;/li&gt;
&lt;li&gt;Empty input → default&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Display format:&lt;/strong&gt; "~1.2K tok" or "~890 tok" or "— tok"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About "-100 tot":&lt;/strong&gt; If you see this, the input token estimator displayed a negative value during an abnormal state. The correct value is always a non-negative integer. This is a boundary bug caused by an abnormal input box value.length (e.g., empty string being misidentified). rAF throttling is now in place and this should no longer occur under normal conditions.&lt;/p&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;
&lt;h2&gt;
  
  
  VI. Quick Reference Table
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Zone    #    id              Label        Name
──────────────────────────────────────────────────
Turn    1    mv-in           ↑            Turn Input Tokens
Turn    2    mv-out          ↓            Turn Output Tokens
Turn    3    mv-think        🧠           Deep Thinking Tokens
Turn    4    mv-cache        💾           Cache Hit Rate
Turn    5    mv-hit          Hit          Cache Hit Token Count
Turn    6    mv-miss         Miss         Cache Miss Token Count
Turn    7    mv-cost         💰           Turn ge Cost
Turn    8    mv-tier         —            Model Tier
Turn    9    mv-tools        🔧           Tool Call Count
Turn   10    mv-time         ⏱           Turn Duration
Turn   11    mv-tps          tok/s        Output Throughput
Turn   12    mv-save         ¥Saved       Turn Cache Savings
Turn   13    mv-retry        retry        API Retry Count
Turn   14    mv-tavg         t̄ool        Avg Tool Duration
Turn   15    mv-ttft         TTFT         Time To First Token
Turn   16    mv-free         —            Free Billing Indicator
──────────────────────────────────────────────────
Sess   17    mv-sin          Σ↑           Session Input Tokens
Sess   18    mv-sout         Σ↓           Session Output Tokens
Sess   19    mv-scache       Σ💾          Session Cache Hits
Sess   20    mv-smiss        Σ✗           Session Cache Misses
Sess   21    mv-scost        Σ💰          Session ge Cost
Sess   22    mv-turns        🔄           Session Turn Count
Sess   23    mv-sretry       Σretry       Session Retries
Sess   24    mv-ssave        Σ¥Saved      Session Savings
Sess   25    mv-savgtps      x̄tok/s      Avg Throughput
Sess   26    mv-savgsave     x̄¥/turn     Avg Savings Per Turn
Sess   27    mv-savgretry    x̄ret/turn   Avg Retries Per Turn
──────────────────────────────────────────────────
Eng    28    mv-facts        📚           Fact Library Count
Eng    29    mv-narr         📖           Narrative Summary Length
Eng    30    mv-ctx          📊           Context Window Usage
Eng    31    mv-warm         warm         Warmup Status
Eng    32    mv-lastcall     cache        Time Since Last Call
──────────────────────────────────────────────────
Life   33    mv-lturns       ∞turns       Lifetime Total Turns
Life   34    mv-lsess        ∞sess        Lifetime Total Sessions
Life   35    mv-lcost        ∞¥spent      Lifetime Total Spend
Life   36    mv-lsave        ∞¥saved      Lifetime Total Savings
Life   37    mv-lin          ∞↑           Lifetime Total Input
Life   38    mv-lout         ∞↓           Lifetime Total Output
Life   39    mv-lret         ∞ret         Lifetime Total Retries
Life   40    mv-ldur         ∞⏱          Lifetime Total Duration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;h2&gt;
  
  
  VII. Out-of-Panel Metrics (outside #metrics-panel) — 5 items
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;These metrics are not inside #metrics-panel but are distributed across other parts of the UI. They are still part of the Compass's observable system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[41]&lt;/strong&gt; id="cost-label"  · Location: Status bar top-left  · Name: Window-level Cumulative ge Cost&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Cumulative ge consumed since the panel was opened (window-level accumulator). Adds the current turn's cost each time a cost message arrives.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; chat.html → totalCostGe variable; cost handler → += parseFloat(msg.estimate)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 0.0320 ge / 1.25 ge / 12.80 ge&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; &amp;lt;0.01 → 4 decimal places, otherwise 2 decimal places&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; No special color, follows vscode-foreground&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[42]&lt;/strong&gt; id="rage-fill" + id="rage-label"  · Location: Status bar  · Name: Rage Meter&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Current rage value = current turn cost / baseline, as a percentage. Red progress bar + flame icon with a number.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _emitRageDot() → panel.js → rageDot message&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 🔥 42 (meaning rage = 42%)&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; Integer percentage&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; Fixed red #f14c4c progress bar&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[43]&lt;/strong&gt; id="ge-bar-fill"  · Location: 6px-wide vertical bar on the left side of the message area  · Name: ge Fractional Progress Bar&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Driven by the fractional part of totalCostGe — cycles from 0 to 1 ge. Gives the user a live sense that "money is being spent."&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; chat.html → updateGeBar(); frac = totalCostGe % 1&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; Height 0% ~ 100% (corresponding to ge decimal 0.00 ~ 0.99)&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; h = max(5%, frac * 100)&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; Gradient #f59e0b → #ef4444, pulses during animation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[44]&lt;/strong&gt; id="ctx-bar"  · Location: 4px-tall horizontal bar at the bottom of the panel  · Name: Context Window HP Bar&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; totalTokens / 800K × 100%, representing context window usage. Compression of old messages begins above 50%.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _updateHp() → panel.js → hp message&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 12% (green) / 65% (yellow) / 92% (red)&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; Integer percentage; shows at least 3% when any usage is present&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt; ≤50% green #4ec9b0 / 51–80% yellow #cca700 / &amp;gt;80% red #f14c4c&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[45]&lt;/strong&gt; id="input-est"  · Location: Above the input box  · Name: Input Token Estimator&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Real-time estimate of how many tokens the current input text will consume.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; chat.html → inputEl.addEventListener('input') → rAF throttle&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; ~890 tok / ~1.2K tok / — tok (empty input)&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; ≥1000 → "~N.NK tok", otherwise "~N tok"&lt;br&gt;
&lt;strong&gt;Color rules:&lt;/strong&gt; &amp;gt;4000 red bad / &amp;gt;1000 yellow warn / normal grey / empty input: no class&lt;/p&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;h2&gt;
  
  
  VIII. Hidden Metrics (in agent.js but not rendered in UI) — 3 items
&lt;/h2&gt;

&lt;p&gt;────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;These three fields exist in the _metrics.turn object in agent.js but are never rendered in HTML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[46]&lt;/strong&gt; jsonMode  · Name: JSON Mode Flag&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Marks whether this turn used JSON Mode (response_format: { type: 'json_object' }). Originally planned to be set to true in scenarios that use JSON Mode (such as plan generation/revision), but in the current codebase it is initialized and never set to true — a "reserved but not implemented" field.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.turn.jsonMode (always false)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; false&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; Boolean&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; None (not rendered in UI)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[47]&lt;/strong&gt; maxTokens  · Name: Per-turn Max Output Token Limit&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; The max_tokens parameter in the API request, which limits how many tokens the model can generate in a single turn. Currently fixed at 32768, assigned once when turn metrics are created, never changed thereafter.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _metrics.turn.maxTokens = 32768&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 32768&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; Integer&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; None (not rendered in UI)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[48]&lt;/strong&gt; toolTotalMs  · Name: Cumulative Tool Call Duration&lt;br&gt;
──────────────────────────────────&lt;br&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; Sum of all tool call durations this turn (ms). Accumulated by adding Date.now() - start after each tool completes. Used to derive toolAvgMs = toolTotalMs / toolCount; not displayed directly.&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; agent.js → _executeToolCallsParallel → this._metrics.turn.toolTotalMs += (Date.now() - _toolStart)&lt;br&gt;
&lt;strong&gt;Example values:&lt;/strong&gt; 1250 (ms)&lt;br&gt;
&lt;strong&gt;Formatting:&lt;/strong&gt; Integer milliseconds&lt;br&gt;
&lt;strong&gt;Color:&lt;/strong&gt; None (not rendered in UI; derived as toolAvgMs for panel display)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc95c2acb-b788-456f-b4e1-52a41f58b6e2" class="article-body-image-wrapper"&gt;&lt;img width="586" height="1461" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc95c2acb-b788-456f-b4e1-52a41f58b6e2"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>qqq Extension: the Only real solution for Pasting Images, Rich Media, Videos, HTML with WYSIWYG preview in VS Code / Code-OSS / VSCodium</title>
      <dc:creator>GH Health</dc:creator>
      <pubDate>Wed, 20 May 2026 13:06:16 +0000</pubDate>
      <link>https://dev.to/gh555com/qqq-extension-the-only-real-solution-for-pasting-images-rich-media-videos-html-with-wysiwyg-3e0a</link>
      <guid>https://dev.to/gh555com/qqq-extension-the-only-real-solution-for-pasting-images-rich-media-videos-html-with-wysiwyg-3e0a</guid>
      <description>&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FFPXKHX4NKOZJ6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FFPXKHX4NKOZJ6.gif" width="799" alt="qqq IDE by GH Health" height="166"&gt;&lt;/a&gt;
  © 2005 &lt;a href="https://www.gh555.com" rel="noopener noreferrer"&gt;gh555.com&lt;/a&gt; All Rights Reserved.
&lt;/p&gt;

&lt;h1&gt;
  
  
  qqq IDE: Paste Everything into VS Code / Code-OSS / VSCodium (Project started in October 2025)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href="https://cdn.gh555.com/u/01KK1SAAR5B53SJXGNVQWP5EB6/ELI4U5GG2NB7K.vsix" rel="noopener noreferrer"&gt;v16.5.2 · 2026-05-20&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make everything pasteable. Orchestrate ideas. Turn the IDE into an operating system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;qqq IDE lets you paste images, screenshots, files, folders, HTML pages, videos, and media directly into &lt;strong&gt;VS Code / Code-OSS / VSCodium&lt;/strong&gt; — with &lt;strong&gt;WYSIWYG preview&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;qqq turns VS Code, Cursor, Antigravity, Code-OSS, and VSCodium into an all-media paste-friendly notebook and creative workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Project discussion and roadmap: &lt;a href="https://github.com/gh555com/qqq/discussions/6" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/6&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official download: &lt;a href="https://www.gh555.com/qqq" rel="noopener noreferrer"&gt;https://www.gh555.com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;qqq IDE Development Progress since 2026.05.16: &lt;a href="https://github.com/gh555com/qqq/discussions/7" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/7&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Original &lt;strong&gt;name&lt;/strong&gt;: qqq &lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fgithub%2Fstars%2Fgh555com%2Fqqq%3Fstyle%3Dsocial" alt="GitHub stars" width="102" height="20"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;qqq 16.5.1+ is required for Linux / macOS.&lt;/strong&gt; Details&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgh555.com%2Fpx%3Fg%3Dqqq%26s%3Ddev.3e0a.readme" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgh555.com%2Fpx%3Fg%3Dqqq%26s%3Ddev.3e0a.readme" width="1" height="1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why qqq IDE
&lt;/h2&gt;

&lt;p&gt;You should not need to open a separate note-taking application just to collect screenshots, images, files, folders, videos, HTML pages, and creative materials.&lt;/p&gt;

&lt;p&gt;With qqq IDE, your editor becomes an all-media workspace.&lt;/p&gt;

&lt;p&gt;VS Code / Code-OSS / VSCodium can become a paste-friendly notebook for developers, creators, writers, AI users, and anyone who organizes ideas inside an IDE.&lt;/p&gt;

&lt;p&gt;The core workflow is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copy → Paste → Preview → Organize → Continue&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✦q✦ Ctrl+V: Paste Everything, Anywhere in Any Document
&lt;/h2&gt;

&lt;p&gt;qqq IDE extends paste beyond plain text.&lt;/p&gt;

&lt;p&gt;You can paste screenshots, image files, folders, videos, HTML pages, documents, and media resources directly into the editor.&lt;/p&gt;

&lt;p&gt;This works in plain text files, custom file extensions, and even files with no extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paste screenshots directly into VS Code / Code-OSS / VSCodium
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FYBZ5FHDRYKQF2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FYBZ5FHDRYKQF2.gif" width="720" alt="Paste screenshots directly into VS Code with qqq IDE" height="540"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;qqq IDE lets you paste screenshots directly into any document, including &lt;code&gt;.txt&lt;/code&gt;, &lt;code&gt;.1&lt;/code&gt;, custom file extensions, or files with no extension, and preview them with WYSIWYG rendering.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paste image files directly into VS Code / Code-OSS / VSCodium
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F6QEDZULVO33JW.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F6QEDZULVO33JW.gif" width="600" alt="Paste image files directly into VS Code with qqq IDE" height="450"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;qqq IDE lets you paste image files directly into the editor and preview them in place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paste any file, folder, video, PSD, MP3, EXE, or media resource
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FE2ULPGMCYGGFE.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FE2ULPGMCYGGFE.gif" width="560" alt="Paste files folders videos PSD MP3 and media directly into VS Code with qqq IDE" height="420"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Via qqq, you can paste &lt;code&gt;txt&lt;/code&gt;, &lt;code&gt;exe&lt;/code&gt;, &lt;code&gt;psd&lt;/code&gt;, &lt;code&gt;mp3&lt;/code&gt;, folders, &lt;code&gt;mp4&lt;/code&gt; videos, and many other file types directly into VS Code / Code-OSS / VSCodium with WYSIWYG preview.&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl+V&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;qqq makes paste a universal input action inside the IDE.&lt;/p&gt;

&lt;p&gt;You can organize your ideas immediately without leaving the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✦q✦ Roam File Explorer for VS Code / Code-OSS / VSCodium
&lt;/h2&gt;

&lt;p&gt;To organize ideas, files, screenshots, folders, videos, and media resources, you also need to jump between arbitrary directories quickly.&lt;/p&gt;

&lt;p&gt;qqq includes &lt;strong&gt;Roam&lt;/strong&gt;, a fast file explorer for VS Code / Code-OSS / VSCodium.&lt;/p&gt;

&lt;p&gt;Invoke Roam with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Tab&lt;/code&gt; when not in editing mode&lt;/li&gt;
&lt;li&gt;Roam command&lt;/li&gt;
&lt;li&gt;Roam button&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Space + Q&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Roam file explorer for fast directory navigation
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F75T3DXC3XWJB4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F75T3DXC3XWJB4.gif" width="720" alt="Roam file explorer for VS Code and qqq IDE" height="540"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Roam&lt;/strong&gt;, from qqq, is a file explorer designed for fast navigation, recent locations, keyboard-first workflows, and access to directories outside the current project folder.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Roam matters
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Reach any location&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Roam is not limited to the current project folder. You can jump to any local directory. You can also map remote disks locally and work with them directly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fast file browsing&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Roam is designed for fast directory listing and quick navigation, even on heavy machines, servers, and virtual machines.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Transactional file operations&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Roam uses transactional file operations to make large-scale file deletion, copying, and organization more reliable.&lt;/p&gt;

&lt;p&gt;For details on VS Code's official file manager limitations, see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gh555com/qqq/blob/qq/docs/VS_Code_Official_File_Explorer_Limitations.md" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/blob/qq/docs/VS_Code_Official_File_Explorer_Limitations.md&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Keyboard-first workflow&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Roam supports recent visits, quick filtering, keyboard operation, quick file creation, list preferences, sorting preferences, and direct opening of administrator terminals.&lt;/p&gt;

&lt;p&gt;Example workflow:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Tab → filename → Enter → new file opens and enters editing mode&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Select folders and mixed resources in Roam
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F5EM6FHVNR4KG2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F5EM6FHVNR4KG2.gif" width="800" alt="Select folders and mixed files in Roam file explorer with qqq IDE" height="600"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;With Roam, you can select folders, files, or a mixed set of files and folders to copy, delete, or calculate size in bulk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Most visited folders stay close to you
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FO4H43QFLJ6WHY.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FO4H43QFLJ6WHY.gif" width="8" alt="Most visited folders in Roam file explorer for qqq IDE" height="6"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Roam keeps frequently visited locations close, so you can move between projects, documents, music, videos, games, and media folders faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  Roam keyboard shortcuts
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FXMTOYSWJPSJYU.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FXMTOYSWJPSJYU.gif" width="311" alt="Roam file explorer keyboard shortcuts in qqq IDE" height="104"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Useful Roam shortcuts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Press &lt;code&gt;Space&lt;/code&gt; on a selected item to request its size.&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;1&lt;/code&gt; to scroll to the top of the list.&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;2&lt;/code&gt; to scroll to the bottom of the list.&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;Q&lt;/code&gt; to open selected projects or documents in IDE.&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;W&lt;/code&gt; to open selected music, videos, games, folders, or media resources.&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;Space + Q&lt;/code&gt; to invoke Roam.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ✦q✦ Premium Features: Out of the Box
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Paste HTML directly into VS Code / Code-OSS / VSCodium
&lt;/h3&gt;

&lt;p&gt;qqq IDE supports sniffing &amp;amp; pasting HTML(Rich Text) into the editor.&lt;/p&gt;

&lt;p&gt;Compatibility is best with Chromium-based browsers.&lt;/p&gt;

&lt;p&gt;If you copy from some browsers, such as Edge in certain modes, only plain text may be displayed.&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FICFESEED7ARZM.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FICFESEED7ARZM.gif" width="560" alt="Paste HTML pages directly into VS Code with qqq IDE" height="420"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Test URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9166282253401607575%22%7D&amp;amp;n_type=1" rel="noopener noreferrer"&gt;https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9166282253401607575%22%7D&amp;amp;n_type=1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This test page contains a mix of videos, images, and text.&lt;/p&gt;

&lt;p&gt;Test objectives:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;All videos should be downloaded.&lt;/li&gt;
&lt;li&gt;The order of text, images, and videos should remain correct.&lt;/li&gt;
&lt;li&gt;No garbled characters should appear.&lt;/li&gt;
&lt;li&gt;Repeated operations should save identical resources only once.&lt;/li&gt;
&lt;li&gt;Identical images and videos should be deduplicated by fingerprinting.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Export DOC and DOCX from qqq IDE
&lt;/h3&gt;

&lt;p&gt;qqq supports document export.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.doc&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compatible with Word 2003&lt;/li&gt;
&lt;li&gt;based on RTF&lt;/li&gt;
&lt;li&gt;better compatibility for older workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;.docx&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compatible with Google Docs and Tencent Docs&lt;/li&gt;
&lt;li&gt;based on Office Open XML&lt;/li&gt;
&lt;li&gt;stronger structure&lt;/li&gt;
&lt;li&gt;better compression ratio&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Export ZIP for portable resources
&lt;/h3&gt;

&lt;p&gt;qqq supports ZIP export.&lt;/p&gt;

&lt;p&gt;ZIP export is useful for packaging notes, media resources, documents, images, HTML content, and presentation materials into portable archives.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paste streaming videos into VS Code / Code-OSS / VSCodium
&lt;/h3&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FW5EEPDRQEO4LO.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2FW5EEPDRQEO4LO.gif" width="600" alt="Paste streaming videos into VS Code with qqq IDE" height="450"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;qqq supports workflows for pasting and organizing streaming video resources inside the editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clean up orphaned files
&lt;/h3&gt;

&lt;p&gt;qqq can help clean up orphaned resource files that are no longer referenced by your documents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clipboard history cards
&lt;/h3&gt;

&lt;p&gt;qqq includes clipboard-related workflows for managing pasted content and recent resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Install
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;qqq 16.5.1+&lt;/strong&gt; provides a single universal installer for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows x64&lt;/li&gt;
&lt;li&gt;Linux x64&lt;/li&gt;
&lt;li&gt;macOS x64&lt;/li&gt;
&lt;li&gt;macOS arm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installer is designed to work across common operating systems and processor architectures.&lt;/p&gt;

&lt;p&gt;No installation options or complex choices are required.&lt;/p&gt;

&lt;p&gt;One package works for everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Switch languages after installation
&lt;/h3&gt;

&lt;p&gt;qqq supports multiple UI languages: zh、zh-tw、en、ja、de、ko、ru、ar、es、fr、pt-BR&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F2JTYBVFI3CWBS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.gh555.com%2Fu%2F01KK1SAAR5B53SJXGNVQWP5EB6%2F2JTYBVFI3CWBS.png" alt="Switch qqq IDE language settings in VS Code" width="441" height="309"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  About qqq Resource Footprint
&lt;/h2&gt;

&lt;p&gt;qqq is built on a highly efficient Rust-based underlying architecture with performance optimization.&lt;/p&gt;

&lt;p&gt;Its idle CPU and disk IO overhead are designed to stay close to zero.&lt;/p&gt;

&lt;p&gt;Its low memory footprint is especially useful when multiple IDEs are running at the same time, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Antigravity&lt;/li&gt;
&lt;li&gt;Code-OSS&lt;/li&gt;
&lt;li&gt;VSCodium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For architecture details:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gh555com/qqq/blob/qq/docs/IO_ENGINE_v16.md" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/blob/qq/docs/IO_ENGINE_v16.md&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Issues: &lt;a href="https://github.com/gh555com/qqq/issues" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official download: &lt;a href="https://www.gh555.com/qqq" rel="noopener noreferrer"&gt;https://www.gh555.com/qqq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Reply on the same day: &lt;a href="mailto:ky@gh555.com"&gt;ky@gh555.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.gh555.com" rel="noopener noreferrer"&gt;GH Health&lt;/a&gt; All Rights Reserved.&lt;/p&gt;

&lt;p&gt;Keywords: Paste image,File Explorer,Rich Media,WYSIWYG,Preview,Image preview,Navigator,stream detection,html sniffing,粘贴图片,文件管理器,富媒体,所见即所得,预览,图片预览,导航器,流检测,HTML嗅探,画像の貼り付け,ファイルマネージャー,リッチメディア,WYSIWYG,プレビュー,画像プレビュー,ナビゲーター,ストリーム検出,HTMLスニッフィング,Bild einfügen,Dateimanager,Rich-Media,WYSIWYG,Vorschau,Bildvorschau,Navigator,Stream-Erkennung,HTML-Sniffing,이미지 붙여넣기,파일 관리자,리치 미디어,WYSIWYG,미리보기,이미지 미리보기,네비게이터,스트림 감지,HTML 스니핑,Вставить изображение,Диспетчер файлов,Рич-медиа,WYSIWYG,Предварительный просмотр,Предварительный просмотр изображения,Навигатор,обнаружение потока,HTML-анализ,لصق الصورة,مدير الملفات,وسائط غنية,WYSIWYG,معاينة,معاينة الصورة,ملاحظ,كشف التدفق,استكشاف HTML,Pegar imagen,Administrador de archivos,Medios enriquecidos,WYSIWYG,Vista previa,Vista previa de imagen,Navegador,detección de flujo,olfateo HTML,Coller une image,Gestionnaire de fichiers,Médias riches,WYSIWYG,Aperçu,Aperçu de l'image,Navigateur,détection de flux,reniflage HTML,Colar imagem,Gerenciador de arquivos,Mídia rica,WYSIWYG,Pré-visualização,Pré-visualização de imagem,Navegador,detecção de fluxo,farejamento HTML,छवि चिपकाएं,फ़ाइल प्रबंधक,समृद्ध मीडिया,WYSIWYG,पूर्वावलोकन,छवि का पूर्वावलोकन,नेविगेटर,स्ट्रीम का पता लगाना,HTML स्निफिंग,Dán hình ảnh,Trình quản lý tệp,Phương tiện đa dạng,WYSIWYG,Xem trước,Xem trước hình ảnh,Trình điều hướng,phát hiện luồng,ngửi HTML,Incolla immagine,Esplora file,Media ricchi,WYSIWYG,Anteprima,Anteprima immagine,Navigatore,rilevamento di flusso,sniffing HTML&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>wysiwyg</category>
      <category>navigator</category>
    </item>
    <item>
      <title>qqq (IDE): Paste Everything into VS Code / Code-OSS / VSCodium</title>
      <dc:creator>GH Health</dc:creator>
      <pubDate>Sat, 16 May 2026 08:37:36 +0000</pubDate>
      <link>https://dev.to/gh555com/qqq-ide-paste-everything-into-vs-code-code-oss-vscodium-3j3p</link>
      <guid>https://dev.to/gh555com/qqq-ide-paste-everything-into-vs-code-code-oss-vscodium-3j3p</guid>
      <description>&lt;h1&gt;
  
  
  qqq IDE: Paste Everything into VS Code / Code-OSS / VSCodium (Project started in October 2025)
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgh555.com%2Fpx%3Fg%3Dqqq%26s%3Ddev.3j3p.readme" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgh555.com%2Fpx%3Fg%3Dqqq%26s%3Ddev.3j3p.readme" width="1" height="1"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Make everything pasteable. Orchestrate ideas. Turn the IDE into an operating system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;qqq IDE lets you paste images, files, folders, HTML pages, videos, and media directly into VS Code / Code-OSS / VSCodium — with &lt;strong&gt;WYSIWYG&lt;/strong&gt; preview.&lt;/p&gt;

&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Official download:&lt;br&gt;
&lt;a href="https://www.gh555.com/qqq" rel="noopener noreferrer"&gt;https://www.gh555.com/qqq&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.gh555.com/u/01KK1SAAR5B53SJXGNVQWP5EB6/ELI4U5GG2NB7K.vsix" rel="noopener noreferrer"&gt;qqq Extension for any VSCodium v16.5.2 · 2026-05-20&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project discussion and roadmap:&lt;br&gt;
&lt;a href="https://github.com/gh555com/qqq/discussions/6" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/6&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;qqq IDE Development Progress since 2026.05.16: &lt;br&gt;
&lt;a href="https://github.com/gh555com/qqq/discussions/7" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq/discussions/7&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built qqq
&lt;/h2&gt;

&lt;p&gt;I use the IDE as my main workspace.&lt;/p&gt;

&lt;p&gt;Not only for code.&lt;/p&gt;

&lt;p&gt;I use it for notes, files, references, images, documents, experiments, ideas, and project organization.&lt;/p&gt;

&lt;p&gt;But there is one basic action that still feels too limited in most editors:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Paste.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In most editors, paste mainly means text.&lt;/p&gt;

&lt;p&gt;If you want to paste an image, a folder, an HTML page, a video, or a mixed set of creative materials, the workflow often breaks.&lt;/p&gt;

&lt;p&gt;You need to open another app, save files manually, choose a folder, insert links, convert formats, or rebuild context later.&lt;/p&gt;

&lt;p&gt;qqq tries to remove that friction.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Copy. Paste. Preview. Organize. Continue.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What qqq does
&lt;/h2&gt;

&lt;p&gt;qqq makes many kinds of content pasteable and previewable inside the editor.&lt;/p&gt;

&lt;p&gt;You can paste:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;images&lt;/li&gt;
&lt;li&gt;screenshots&lt;/li&gt;
&lt;li&gt;files&lt;/li&gt;
&lt;li&gt;folders&lt;/li&gt;
&lt;li&gt;HTML pages&lt;/li&gt;
&lt;li&gt;web images&lt;/li&gt;
&lt;li&gt;videos&lt;/li&gt;
&lt;li&gt;media resources&lt;/li&gt;
&lt;li&gt;documents&lt;/li&gt;
&lt;li&gt;mixed creative materials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This works not only in Markdown.&lt;/p&gt;

&lt;p&gt;qqq is designed to work in plain text files, custom file extensions, and even files without extensions.&lt;/p&gt;

&lt;p&gt;The goal is to make the IDE a place where useful materials can be captured immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paste Everything
&lt;/h2&gt;

&lt;p&gt;The core workflow of qqq is enhanced paste.&lt;/p&gt;

&lt;p&gt;You can use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl+V&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to paste images, files, folders, HTML pages, videos, and media directly into VS Code / Code-OSS / VSCodium.&lt;/p&gt;

&lt;p&gt;This turns paste from a text-only operation into a universal input action.&lt;/p&gt;

&lt;p&gt;Instead of treating the IDE only as a code editor, qqq treats it as a workspace that can receive almost anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  WYSIWYG preview
&lt;/h2&gt;

&lt;p&gt;Pasting is not enough.&lt;/p&gt;

&lt;p&gt;If everything becomes only a hidden path or a plain text reference, the workflow is still broken.&lt;/p&gt;

&lt;p&gt;qqq focuses on making pasted content visible and usable inside the editor.&lt;/p&gt;

&lt;p&gt;That is why WYSIWYG preview matters.&lt;/p&gt;

&lt;p&gt;The idea is not only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;paste an image path&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;but:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;paste the image, see it, use it, organize it, and keep moving.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is also why qqq is not only a paste-image extension.&lt;/p&gt;

&lt;p&gt;It is a paste-anything workflow for the IDE.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roam File Explorer
&lt;/h2&gt;

&lt;p&gt;qqq also includes a built-in file explorer called &lt;strong&gt;Roam&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Roam is designed for fast file navigation and creative organization.&lt;/p&gt;

&lt;p&gt;It is not limited to the current project folder.&lt;/p&gt;

&lt;p&gt;It helps you move quickly between directories, recent locations, files, folders, media, and external resources.&lt;/p&gt;

&lt;p&gt;The direction is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the IDE is becoming the main workspace, file navigation must become faster and more flexible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Roam is part of that direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Modern IDEs are becoming more than places for writing code.&lt;/p&gt;

&lt;p&gt;For many developers, writers, creators, and AI tool users, the IDE is already becoming the center of daily work.&lt;/p&gt;

&lt;p&gt;It is where we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;write code&lt;/li&gt;
&lt;li&gt;collect references&lt;/li&gt;
&lt;li&gt;manage files&lt;/li&gt;
&lt;li&gt;talk to AI&lt;/li&gt;
&lt;li&gt;read documentation&lt;/li&gt;
&lt;li&gt;organize projects&lt;/li&gt;
&lt;li&gt;capture ideas&lt;/li&gt;
&lt;li&gt;build products&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But if the IDE cannot easily receive images, folders, HTML pages, videos, documents, and media, then the workspace is incomplete.&lt;/p&gt;

&lt;p&gt;qqq tries to complete that missing layer.&lt;/p&gt;

&lt;p&gt;That is why the direction of qqq is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make everything pasteable.&lt;br&gt;
Orchestrate ideas.&lt;br&gt;
Turn the IDE into an operating system.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Current features
&lt;/h2&gt;

&lt;p&gt;qqq currently supports workflows around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;paste images&lt;/li&gt;
&lt;li&gt;paste files&lt;/li&gt;
&lt;li&gt;paste folders&lt;/li&gt;
&lt;li&gt;paste HTML&lt;/li&gt;
&lt;li&gt;paste videos&lt;/li&gt;
&lt;li&gt;WYSIWYG preview&lt;/li&gt;
&lt;li&gt;media preview&lt;/li&gt;
&lt;li&gt;resource organization&lt;/li&gt;
&lt;li&gt;DOC / DOCX export&lt;/li&gt;
&lt;li&gt;ZIP export&lt;/li&gt;
&lt;li&gt;clipboard-related workflows&lt;/li&gt;
&lt;li&gt;Roam file explorer&lt;/li&gt;
&lt;li&gt;multilingual UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is open source and available for review:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gh555com/qqq" rel="noopener noreferrer"&gt;https://github.com/gh555com/qqq&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Current direction
&lt;/h2&gt;

&lt;p&gt;qqq is currently an extension.&lt;/p&gt;

&lt;p&gt;But the long-term direction is &lt;strong&gt;qqq IDE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;qqq IDE is a Code-OSS / VSCodium based IDE direction focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;paste-anything workflows&lt;/li&gt;
&lt;li&gt;all-media notes&lt;/li&gt;
&lt;li&gt;creative organization&lt;/li&gt;
&lt;li&gt;file and folder orchestration&lt;/li&gt;
&lt;li&gt;WYSIWYG editor experiences&lt;/li&gt;
&lt;li&gt;AI-era IDE workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to make another small editor plugin.&lt;/p&gt;

&lt;p&gt;The goal is to explore a different kind of IDE workspace.&lt;/p&gt;

&lt;p&gt;One where ideas, files, images, HTML pages, videos, documents, and media can all enter through the same simple action:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Paste.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;Feedback is welcome, especially from people interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VS Code workflows&lt;/li&gt;
&lt;li&gt;Code-OSS / VSCodium&lt;/li&gt;
&lt;li&gt;AI IDEs&lt;/li&gt;
&lt;li&gt;all-media notes&lt;/li&gt;
&lt;li&gt;paste image workflows&lt;/li&gt;
&lt;li&gt;paste file workflows&lt;/li&gt;
&lt;li&gt;WYSIWYG editing&lt;/li&gt;
&lt;li&gt;creative organization inside the editor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this direction is useful to you, feel free to open an issue or discussion on GitHub. &lt;/p&gt;

&lt;p&gt;Reply on the same day: &lt;a href="mailto:ky@gh555.com"&gt;ky@gh555.com&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;GH Health&lt;/p&gt;

&lt;p&gt;Keywords: Paste image,File Explorer,Rich Media,WYSIWYG,Preview,Image preview,Navigator,stream detection,html sniffing,粘贴图片,文件管理器,富媒体,所见即所得,预览,图片预览,导航器,流检测,HTML嗅探,画像の貼り付け,ファイルマネージャー,リッチメディア,WYSIWYG,プレビュー,画像プレビュー,ナビゲーター,ストリーム検出,HTMLスニッフィング,Bild einfügen,Dateimanager,Rich-Media,WYSIWYG,Vorschau,Bildvorschau,Navigator,Stream-Erkennung,HTML-Sniffing,이미지 붙여넣기,파일 관리자,리치 미디어,WYSIWYG,미리보기,이미지 미리보기,네비게이터,스트림 감지,HTML 스니핑,Вставить изображение,Диспетчер файлов,Рич-медиа,WYSIWYG,Предварительный просмотр,Предварительный просмотр изображения,Навигатор,обнаружение потока,HTML-анализ,لصق الصورة,مدير الملفات,وسائط غنية,WYSIWYG,معاينة,معاينة الصورة,ملاحظ,كشف التدفق,استكشاف HTML,Pegar imagen,Administrador de archivos,Medios enriquecidos,WYSIWYG,Vista previa,Vista previa de imagen,Navegador,detección de flujo,olfateo HTML,Coller une image,Gestionnaire de fichiers,Médias riches,WYSIWYG,Aperçu,Aperçu de l'image,Navigateur,détection de flux,reniflage HTML,Colar imagem,Gerenciador de arquivos,Mídia rica,WYSIWYG,Pré-visualização,Pré-visualização de imagem,Navegador,detecção de fluxo,farejamento HTML,छवि चिपकाएं,फ़ाइल प्रबंधक,समृद्ध मीडिया,WYSIWYG,पूर्वावलोकन,छवि का पूर्वावलोकन,नेविगेटर,स्ट्रीम का पता लगाना,HTML स्निफिंग,Dán hình ảnh,Trình quản lý tệp,Phương tiện đa dạng,WYSIWYG,Xem trước,Xem trước hình ảnh,Trình điều hướng,phát hiện luồng,ngửi HTML,Incolla immagine,Esplora file,Media ricchi,WYSIWYG,Anteprima,Anteprima immagine,Navigatore,rilevamento di flusso,sniffing HTML&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>ide</category>
    </item>
  </channel>
</rss>
