<?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: Vuk Topalović</title>
    <description>The latest articles on DEV Community by Vuk Topalović (@vtopa).</description>
    <link>https://dev.to/vtopa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3843469%2F89558589-5d4b-4371-a992-435593c2d1ec.jpg</url>
      <title>DEV Community: Vuk Topalović</title>
      <link>https://dev.to/vtopa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vtopa"/>
    <language>en</language>
    <item>
      <title>I made my terminal look like macOS Liquid Glass (iTerm2 + Ghostty)</title>
      <dc:creator>Vuk Topalović</dc:creator>
      <pubDate>Wed, 14 Oct 2026 10:13:44 +0000</pubDate>
      <link>https://dev.to/vtopa/i-made-my-terminal-look-like-macos-liquid-glass-iterm2-ghostty-3ei</link>
      <guid>https://dev.to/vtopa/i-made-my-terminal-look-like-macos-liquid-glass-iterm2-ghostty-3ei</guid>
      <description>&lt;p&gt;After macOS 26 came out, every part of my Mac felt like glass except the window I spend all day in: the terminal. So I built &lt;strong&gt;iglass&lt;/strong&gt;, a theme and small CLI that makes iTerm2 and Ghostty look like they ship with macOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvukkt%2Figlass%2Fmain%2Fdocs%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvukkt%2Figlass%2Fmain%2Fdocs%2Fdemo.gif" alt="iglass demo: an iTerm2 window turning glassier and changing accent color live"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;vukkt/tap/iglass
iglass &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's free and MIT licensed: &lt;strong&gt;&lt;a href="https://github.com/vukkt/iglass" rel="noopener noreferrer"&gt;github.com/vukkt/iglass&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Four variants&lt;/strong&gt; modeled on Apple's own options: &lt;strong&gt;Clear&lt;/strong&gt;, &lt;strong&gt;Frosted&lt;/strong&gt; (default), &lt;strong&gt;Tinted&lt;/strong&gt; and &lt;strong&gt;Solid&lt;/strong&gt; (for Reduce Transparency).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Light and dark palettes&lt;/strong&gt; built from Apple's system colors. The terminal switches with macOS, including automatic day/night.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eight accent colors&lt;/strong&gt; matching the macOS accent set, used for the cursor, selection and links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;--contrast high&lt;/code&gt;&lt;/strong&gt;, following Apple's guidance for Increase Contrast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real Liquid Glass in Ghostty&lt;/strong&gt; on macOS 26+, with a blur fallback everywhere else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-command undo.&lt;/strong&gt; &lt;code&gt;iglass uninstall&lt;/code&gt; puts back exactly what was there before.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Clear&lt;/th&gt;
&lt;th&gt;Frosted&lt;/th&gt;
&lt;th&gt;Tinted&lt;/th&gt;
&lt;th&gt;Solid&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvukkt%2Figlass%2Fmain%2Fdocs%2Fscreenshots%2Fghostty-clear.png" alt="Clear"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvukkt%2Figlass%2Fmain%2Fdocs%2Fscreenshots%2Fghostty-frosted.png" alt="Frosted"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvukkt%2Figlass%2Fmain%2Fdocs%2Fscreenshots%2Fghostty-tinted.png" alt="Tinted"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvukkt%2Figlass%2Fmain%2Fdocs%2Fscreenshots%2Fghostty-solid.png" alt="Solid"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The interesting problems
&lt;/h2&gt;

&lt;p&gt;A color scheme sounds like an afternoon's work. Doing it properly took longer, and these were the parts worth writing about.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Translucent backgrounds break contrast math
&lt;/h3&gt;

&lt;p&gt;Normal contrast checks compare text against a known background color. With a translucent window, the background is &lt;em&gt;whatever is behind the window&lt;/em&gt;: a white web page, a dark wallpaper, anything.&lt;/p&gt;

&lt;p&gt;So the palette build checks each variant against the &lt;strong&gt;worst case it could be composited over&lt;/strong&gt;. Tinted and Solid are checked over pure black &lt;em&gt;and&lt;/em&gt; pure white. Frosted is checked over dark and light greys. Clear, the purely aesthetic variant, is checked over mid-grey, and the README says plainly that it can't be legible over everything.&lt;/p&gt;

&lt;p&gt;The same math gives each variant a &lt;strong&gt;minimum safe opacity&lt;/strong&gt;. If you pass &lt;code&gt;--opacity&lt;/code&gt; below that value, iglass warns you and asks for &lt;code&gt;--force&lt;/code&gt;. The full numbers are in a generated &lt;a href="https://github.com/vukkt/iglass/blob/main/docs/contrast-report.md" rel="noopener noreferrer"&gt;contrast report&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. iTerm2 can't do real Liquid Glass (yet)
&lt;/h3&gt;

&lt;p&gt;I wanted the real material, not an imitation. iTerm2's binary does contain glass-effect code, but there's no setting for it, and a pull request adding one was closed: glass forces auto layout and breaks window resizing.&lt;/p&gt;

&lt;p&gt;So in iTerm2, iglass gets as close as it can with tuned transparency, blur and palettes, and the README's FAQ is upfront about that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ghostty is different.&lt;/strong&gt; It has &lt;code&gt;background-blur = macos-glass-regular&lt;/code&gt; and &lt;code&gt;macos-glass-clear&lt;/code&gt;, which use Apple's actual material. Rather than guess from version numbers, iglass asks Ghostty's own config validator whether glass is supported and falls back to classic blur if it isn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. One bad file breaks every profile
&lt;/h3&gt;

&lt;p&gt;iglass installs into iTerm2 as a &lt;em&gt;dynamic profile&lt;/em&gt;: a JSON file in a folder iTerm2 watches. Two things I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A single malformed file in that folder disables all dynamic profiles&lt;/strong&gt;, including other tools' profiles. So iglass writes to a temp file, validates it with &lt;code&gt;plutil -lint&lt;/code&gt;, and only then moves it into place. &lt;code&gt;iglass doctor&lt;/code&gt; also checks the &lt;em&gt;other&lt;/em&gt; files in the folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keys you leave out are inherited from your default profile.&lt;/strong&gt; iglass only sets the keys that control the look, so your fonts, keybindings, shell and working directory stay yours.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. You can't change iTerm2's global settings while it's running
&lt;/h3&gt;

&lt;p&gt;Things like the tab theme and window padding are app-wide preferences. If you write them while iTerm2 is open, iTerm2 overwrites them with its in-memory copy when it quits.&lt;/p&gt;

&lt;p&gt;The opt-in &lt;code&gt;--app-settings&lt;/code&gt; flag therefore records the current values, hands off to a small detached &lt;code&gt;launchd&lt;/code&gt; job that quits iTerm2, applies the change and reopens it. Uninstall restores those exact keys and nothing else.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The bug that hid from my own tests
&lt;/h3&gt;

&lt;p&gt;v1.1.1 fixed a fun one. On macOS, &lt;strong&gt;&lt;code&gt;pgrep&lt;/code&gt; leaves out its own ancestor processes&lt;/strong&gt;. Run iglass from inside iTerm2, and iTerm2 is an ancestor, so iglass decided iTerm2 wasn't running and skipped the restart.&lt;/p&gt;

&lt;p&gt;My tests didn't catch it because the fake &lt;code&gt;pgrep&lt;/code&gt; in the test suite was more helpful than the real one. The fix is &lt;code&gt;pgrep -a&lt;/code&gt;, and the stand-in now behaves like the real thing so the bug can't come back silently.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Plain &lt;strong&gt;bash 3.2&lt;/strong&gt; (the version macOS ships) plus &lt;code&gt;jq&lt;/code&gt;, so there's nothing extra to install.&lt;/li&gt;
&lt;li&gt;Palettes live in one JSON file. A Python build step generates the iTerm2 and Ghostty themes and the contrast report, and CI fails if the generated files are stale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;117 bats tests&lt;/strong&gt; and &lt;strong&gt;19 palette tests&lt;/strong&gt;, all run in a sandbox so they never touch real preferences. &lt;code&gt;shellcheck&lt;/code&gt; is clean, and CI runs on macOS.&lt;/li&gt;
&lt;li&gt;Installs via Homebrew, a &lt;code&gt;curl&lt;/code&gt; script, or prebuilt theme files if you'd rather not run a CLI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The iglass Dark and Light schemes were also merged into &lt;a href="https://github.com/mbadolato/iTerm2-Color-Schemes" rel="noopener noreferrer"&gt;iTerm2-Color-Schemes&lt;/a&gt;, so they're available for the many terminals that project supports.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;vukkt/tap/iglass
iglass &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--variant&lt;/span&gt; clear &lt;span class="nt"&gt;--accent&lt;/span&gt; purple
iglass preview &lt;span class="nt"&gt;--variant&lt;/span&gt; tinted
iglass uninstall   &lt;span class="c"&gt;# everything back the way it was&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/vukkt/iglass" rel="noopener noreferrer"&gt;github.com/vukkt/iglass&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love feedback, especially screenshots of how it looks on your wallpaper, and requests for which terminal to support next (Kitty? WezTerm? Linux?). If it makes your terminal nicer, a ⭐ helps other people find it.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>terminal</category>
      <category>macos</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a Claude Code plugin that only keeps an "agent memory" rule if it can prove it saves tokens</title>
      <dc:creator>Vuk Topalović</dc:creator>
      <pubDate>Sat, 27 Jun 2026 21:52:41 +0000</pubDate>
      <link>https://dev.to/vtopa/i-built-a-claude-code-plugin-that-only-keeps-an-agent-memory-rule-if-it-can-prove-it-saves-tokens-53ho</link>
      <guid>https://dev.to/vtopa/i-built-a-claude-code-plugin-that-only-keeps-an-agent-memory-rule-if-it-can-prove-it-saves-tokens-53ho</guid>
      <description>&lt;p&gt;Most agent-memory setups add a rule because a model thought it sounded useful. I wanted one that has to earn its spot.&lt;/p&gt;

&lt;p&gt;token-warden watches your Claude Code sessions, distills candidate efficiency rules from the expensive ones, then benchmarks each rule on a frozen test suite (with vs without it) and only keeps it if it saves at least 2x the tokens it costs to carry around, and breaks nothing. Everything else gets evicted. It once threw out a rule that saved 38k tokens per run because that "saving" came from the agent giving up and failing the task.&lt;/p&gt;

&lt;p&gt;Honest result so far: on a deliberately wasteful agent, a "grep for the symbol before reading the whole file" rule cut a session from ~67k to ~56k tokens (about 16%, roughly 3 cents/session on Sonnet, ~500x what the rule itself costs). On my already-optimized agents the same rule saves basically nothing and gets auto-evicted, which is the entire point. It refuses to keep junk just to look busy.&lt;/p&gt;

&lt;p&gt;It's measured, not vibes. Open source, MIT. I'd genuinely like people to try to break it or tell me the numbers are wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vukkt/token-warden" rel="noopener noreferrer"&gt;https://github.com/vukkt/token-warden&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>claude</category>
      <category>performance</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Most AI agent memory never pays for itself</title>
      <dc:creator>Vuk Topalović</dc:creator>
      <pubDate>Mon, 22 Jun 2026 21:12:52 +0000</pubDate>
      <link>https://dev.to/vtopa/most-ai-agent-memory-never-pays-for-itself-4afi</link>
      <guid>https://dev.to/vtopa/most-ai-agent-memory-never-pays-for-itself-4afi</guid>
      <description>&lt;p&gt;Built a small tool for Claude Code that tracks whether “agent memory” rules actually pay for themselves in token usage.&lt;/p&gt;

&lt;p&gt;The idea is simple: every persistent instruction should justify itself by reducing future token cost. If it doesn’t, it gets flagged for removal.&lt;/p&gt;

&lt;p&gt;Over time, a surprising amount of memory ends up being neutral or negative ROI once measured. Check it out, would mean a lot :)&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/vukkt/token-warden" rel="noopener noreferrer"&gt;https://github.com/vukkt/token-warden&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>claude</category>
      <category>showdev</category>
    </item>
    <item>
      <title>"make your AI better" is guesswork — token-warden only keeps changes it can prove, with real numbers on a fair repeatable test, made the work cheaper.</title>
      <dc:creator>Vuk Topalović</dc:creator>
      <pubDate>Mon, 15 Jun 2026 09:57:06 +0000</pubDate>
      <link>https://dev.to/vtopa/make-your-ai-better-is-guesswork-token-warden-only-keeps-changes-it-can-prove-with-real-53me</link>
      <guid>https://dev.to/vtopa/make-your-ai-better-is-guesswork-token-warden-only-keeps-changes-it-can-prove-with-real-53me</guid>
      <description>&lt;p&gt;token-warden is a thrifty office manager for your AI assistants. It does four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keeps the receipts. Every time the AI finishes a task, it quietly notes how much that cost — like saving every taxi receipt in a drawer.&lt;/li&gt;
&lt;li&gt;Notices waste. When a task costs far more than usual, it asks a cheap junior AI: "Why was that so expensive? What habit would've made it cheaper?" — and writes down a suggested habit, e.g. "search for the right file before opening files at random."&lt;/li&gt;
&lt;li&gt;Tests the habit for real — this is the important part. It doesn't just trust the suggestion. It keeps a fixed set of practice tasks (like a standardized test that never changes), and runs them twice: once with the new habit, once without. Now it has hard numbers on whether the habit actually saved money, instead of a hunch.&lt;/li&gt;
&lt;li&gt;Keeps only what pays off. A habit takes up room in the AI's memory, and that room itself costs a little every single time. So the rule is strict: a habit must save at least twice what it costs to keep, or it's thrown out. Winners get written into the AI's permanent memory so it uses them automatically forever after; losers are discarded (but remembered as "tried it, didn't work" so the same bad idea won't come back).
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/vukkt" rel="noopener noreferrer"&gt;
        vukkt
      &lt;/a&gt; / &lt;a href="https://github.com/vukkt/token-warden" rel="noopener noreferrer"&gt;
        token-warden
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude Code plugin that makes coding agents measurably cheaper over time: collect token costs, distill candidate rules, benchmark them on a frozen golden suite, and keep only rules that earn their context rent.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;token-warden&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/vukkt/token-warden/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/vukkt/token-warden/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vukkt/token-warden/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A Claude Code plugin that makes coding agents measurably cheaper over time.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most "agent memory" accumulates advice nobody ever verifies. token-warden treats agent
memory as an engineering problem: every rule that wants space in an agent's context must
&lt;strong&gt;prove, on a fixed benchmark, that it saves more tokens than it costs&lt;/strong&gt; — or it gets
evicted. The result is a per-agent memory file containing only rules with measured
positive return.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Measured, not vibes&lt;/strong&gt; — every rule carries a token delta from real benchmark runs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-funding&lt;/strong&gt; — rules must save ≥ 2× their own context rent to stay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-auditing&lt;/strong&gt; — active rules are re-benchmarked round-robin and evicted when they
stop earning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero session overhead&lt;/strong&gt; — collection runs in a Stop hook that never blocks or fails
your work&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#how-it-works" rel="noopener noreferrer"&gt;How it works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#getting-started" rel="noopener noreferrer"&gt;Getting started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#commands" rel="noopener noreferrer"&gt;Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#the-benchmark-system" rel="noopener noreferrer"&gt;The benchmark system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#the-agents" rel="noopener noreferrer"&gt;The agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#inter-agent-approval-gate-experimental" rel="noopener noreferrer"&gt;Inter-agent approval gate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vukkt/token-warden#design-invariants" rel="noopener noreferrer"&gt;Design invariants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vukkt/token-warden#a-recorded-demonstration" rel="noopener noreferrer"&gt;A recorded&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/vukkt/token-warden" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
