<?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>Forem: AKP</title>
    <description>The latest articles on Forem by AKP (@akp_2806).</description>
    <link>https://forem.com/akp_2806</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%2F3859837%2F1dc76fd1-12a2-47f1-aacd-3fda5f3e41cd.png</url>
      <title>Forem: AKP</title>
      <link>https://forem.com/akp_2806</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/akp_2806"/>
    <language>en</language>
    <item>
      <title>I Built a Native Windows Music Player with WinUI 3 — Here's What I Learned</title>
      <dc:creator>AKP</dc:creator>
      <pubDate>Mon, 11 May 2026 09:27:11 +0000</pubDate>
      <link>https://forem.com/akp_2806/i-built-a-native-windows-music-player-with-winui-3-heres-what-i-learned-2pgj</link>
      <guid>https://forem.com/akp_2806/i-built-a-native-windows-music-player-with-winui-3-heres-what-i-learned-2pgj</guid>
      <description>&lt;p&gt;There's no shortage of music players out there. Spotify, Apple Music, Foobar2000, MusicBee — the list goes on. But if you're like me and live entirely in a local music library, most of them feel like a compromise. Either they're powerful but look like they were designed in 2009, or they look great but treat local files as an afterthought.&lt;/p&gt;

&lt;p&gt;So I built my own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tunetastic&lt;/strong&gt; is a native Windows music player built with WinUI 3 and C#. It's available on the &lt;a href="https://apps.microsoft.com/detail/9pccnqztd6px?referrer=appbadge&amp;amp;mode=full&amp;amp;hl=en-US&amp;amp;gl=IN" rel="noopener noreferrer"&gt;Microsoft Store&lt;/a&gt; and fully &lt;a href="https://github.com/AMit-KP/Tunetastic" rel="noopener noreferrer"&gt;open source on GitHub&lt;/a&gt;. This post is about why I built it, how it works, and the more interesting technical corners I had to navigate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why WinUI 3?
&lt;/h2&gt;

&lt;p&gt;When I decided to build this, I had the usual suspects to choose from: Electron, WPF, MAUI, WinForms, or WinUI 3. Electron was out immediately — I wanted something that felt &lt;em&gt;native&lt;/em&gt;, not a browser in a trenchcoat. WPF is mature and capable, but its design story in 2026 is rough; you're fighting against the framework to get anything that looks modern.&lt;/p&gt;

&lt;p&gt;WinUI 3 was the obvious choice for what I wanted. It's Microsoft's current-gen UI framework, and it ships with the design language of Windows 11 out of the box: Mica backgrounds, Acrylic blur, rounded corners, smooth animations. The catch is that it's still relatively young, so documentation gaps are real and you occasionally run into issues that require digging into GitHub issues threads from 2022 to solve.&lt;/p&gt;

&lt;p&gt;The payoff is worth it, though. When something works in WinUI 3, it genuinely looks and feels like it belongs on Windows in a way nothing else quite matches.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Design Philosophy
&lt;/h2&gt;

&lt;p&gt;The main player screen is intentionally full-bleed and immersive. The album art fills the background, blurred and darkened, with the track info and controls layered over it. The blur intensity is adjustable — some people want a subtle wash of color, others want it almost imperceptible.&lt;/p&gt;

&lt;p&gt;Every UI material option — Mica, Mica Alt, Acrylic, Acrylic Thin, Transparent — works on both Windows 10 and Windows 11. Getting Mica to behave correctly on Windows 10 (where it isn't natively supported) required some creative workarounds, since Mica normally samples the desktop wallpaper through DWM APIs that aren't available on older builds. The fallback path needed to feel intentional, not broken.&lt;/p&gt;

&lt;p&gt;The app also responds to your Windows accent color. Certain player controls pick it up automatically, so Tunetastic feels like it genuinely belongs to your system rather than imposing its own palette on top of it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lyrics — More Nuanced Than It Looks
&lt;/h2&gt;

&lt;p&gt;Lyrics support sounds straightforward until you actually implement it.&lt;/p&gt;

&lt;p&gt;Tunetastic handles two types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Synced lyrics&lt;/strong&gt; (&lt;code&gt;.lrc&lt;/code&gt; format) — timestamps paired with lines, scrolling in real time with playback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unsynced lyrics&lt;/strong&gt; — plain text embedded in the file's metadata tags&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The priority chain matters here. When a track has both embedded synced lyrics &lt;em&gt;and&lt;/em&gt; an external &lt;code&gt;.lrc&lt;/code&gt; file sitting alongside it, the embedded version wins. This is intentional — if someone has manually embedded corrected lyrics, they probably don't want an external file overriding them.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.lrc&lt;/code&gt; parser handles the usual messiness of real-world files: inconsistent timestamp formatting, lines out of order, extended attributes, and blank lines used as spacers. Getting scroll timing to feel &lt;em&gt;good&lt;/em&gt; — not just technically correct — required some tuning around how far ahead the highlighted line jumps and the easing on the scroll animation.&lt;/p&gt;

&lt;p&gt;Users can also edit and clear embedded lyrics directly in the app, which writes back to the file's metadata tags via TagLib.&lt;/p&gt;




&lt;h2&gt;
  
  
  System Integration — The Details That Make It Feel Native
&lt;/h2&gt;

&lt;p&gt;This is where a lot of music players phone it in, and it's the area I spent the most time on.&lt;/p&gt;

&lt;h3&gt;
  
  
  System Media Transport Controls (SMTC)
&lt;/h3&gt;

&lt;p&gt;SMTC is the Windows API that powers the media flyout in the notification center, the lock screen media widget, and the keyboard media keys. Full SMTC integration means Tunetastic responds correctly to every play/pause/next/previous signal from anywhere in the system — keyboard, Bluetooth headphones, the notification flyout, third-party SMTC clients, all of it.&lt;/p&gt;

&lt;p&gt;It also means Tunetastic pushes track metadata (title, artist, album art) back to the system, so whatever's showing in the media flyout is always accurate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Taskbar Progress
&lt;/h3&gt;

&lt;p&gt;The taskbar icon shows a live progress indicator for the current track using the &lt;code&gt;ITaskbarList3&lt;/code&gt; interface. It's a small thing, but glancing at the taskbar and knowing you're 70% through a song without switching windows is the kind of detail that adds up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thumbnail Toolbar
&lt;/h3&gt;

&lt;p&gt;The taskbar thumbnail preview — the popup that appears when you hover over any app in the taskbar — can host up to seven buttons via the thumbnail toolbar API. Tunetastic puts previous, play/pause, and next there, so you can control playback without the app ever coming to the foreground.&lt;/p&gt;

&lt;h3&gt;
  
  
  System Tray
&lt;/h3&gt;

&lt;p&gt;Minimizing to the tray on close keeps Tunetastic running silently. Click the tray icon to toggle play/pause; hover it to see the current track and artist in the tooltip. The implementation uses a &lt;code&gt;NotifyIcon&lt;/code&gt; backed by a WinForms assembly (yes, really — it's still the cleanest way to do system tray in a WinUI app), bridged carefully so it doesn't fight with the WinUI message loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Volume Control &amp;amp; the Windows Volume Mixer
&lt;/h3&gt;

&lt;p&gt;The in-app volume slider can operate in two modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System Volume&lt;/strong&gt; — controls the master output, in sync with the Windows volume flyout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Volume&lt;/strong&gt; — controls only Tunetastic's audio channel, reflected live in the Windows Volume Mixer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two-way sync for app volume was the trickier piece. Changes made in the Volume Mixer need to propagate back to the in-app slider, and vice versa, without creating feedback loops. The solution uses the Core Audio APIs (&lt;code&gt;IAudioSessionControl&lt;/code&gt;, &lt;code&gt;ISimpleAudioVolume&lt;/code&gt;, &lt;code&gt;IAudioSessionEvents&lt;/code&gt;) to register as a session listener and selectively ignore change events that originated from within the app itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pause on Mute&lt;/strong&gt; hooks into the same session listener — when volume hits zero from any source (the slider, a mute keypress, another app changing the mixer), playback pauses automatically. When audio is restored, it resumes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Library &amp;amp; Playlists
&lt;/h2&gt;

&lt;p&gt;The library scanner walks your configured folders, filters by extension and minimum duration (handy for excluding 2-second sound effect files), and builds an indexed collection organized into songs, artists, albums, genres, and years.&lt;/p&gt;

&lt;p&gt;Three smart playlists update automatically: Recently Added, Recently Played, and Most Played. They're backed by a lightweight SQLite database that tracks play counts and timestamps without you having to think about it.&lt;/p&gt;

&lt;p&gt;Duplicate detection is configurable — you can choose how aggressively Tunetastic identifies tracks that appear more than once (same title + artist, same file fingerprint, etc.).&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;A few things I'm actively thinking about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Folder watching&lt;/strong&gt; — automatically picking up new files added to library folders without a manual rescan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mini player mode&lt;/strong&gt; — a compact always-on-top view for when you want music controls without the full UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Taskbar Control Buttons&lt;/strong&gt; — Dedicated playback controls pinned to the taskbar itself, so you can play, pause, and skip without hovering or switching windows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID3 Tag Editing from the Internet&lt;/strong&gt; — Look up and apply track metadata (title, artist, album art, genre, year) directly from online databases, no manual typing required&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It / Contribute
&lt;/h2&gt;

&lt;p&gt;Tunetastic is on the &lt;a href="https://apps.microsoft.com/detail/9pccnqztd6px?referrer=appbadge&amp;amp;mode=full&amp;amp;hl=en-US&amp;amp;gl=IN" rel="noopener noreferrer"&gt;Microsoft Store&lt;/a&gt; — no sideloading, no certificate trust, just install and play. It runs on Windows 10 (1903+) and Windows 11.&lt;/p&gt;

&lt;p&gt;The source is on &lt;a href="https://github.com/AMit-KP/Tunetastic" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; under GPL v3. If you run into a bug, have a feature idea, or want to contribute, issues and PRs are open. Just open an issue first to discuss larger changes before putting in the work.&lt;/p&gt;

</description>
      <category>music</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Got Tired of XML Doc Comments, So I Built My Own Visual Studio Extension</title>
      <dc:creator>AKP</dc:creator>
      <pubDate>Fri, 03 Apr 2026 18:24:03 +0000</pubDate>
      <link>https://forem.com/akp_2806/i-got-tired-of-xml-doc-comments-so-i-built-my-own-visual-studio-extension-3hd6</link>
      <guid>https://forem.com/akp_2806/i-got-tired-of-xml-doc-comments-so-i-built-my-own-visual-studio-extension-3hd6</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;If you've written any serious C# code, you know the pain. Your &lt;code&gt;///&lt;/code&gt; doc comments&lt;br&gt;
are packed with useful information — but reading them in the editor looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;/// &lt;span class="nt"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
/// Calculates the total price including &lt;span class="nt"&gt;&amp;lt;paramref&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"taxRate"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt; for a given
/// &lt;span class="nt"&gt;&amp;lt;see&lt;/span&gt; &lt;span class="na"&gt;cref=&lt;/span&gt;&lt;span class="s"&gt;"Order"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;. Returns &lt;span class="nt"&gt;&amp;lt;c&amp;gt;&lt;/span&gt;0&lt;span class="nt"&gt;&amp;lt;/c&amp;gt;&lt;/span&gt; if the order has no items.
/// &lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
/// &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"order"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;The order to calculate.&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
/// &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"taxRate"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;The tax rate as a decimal, e.g. &lt;span class="nt"&gt;&amp;lt;c&amp;gt;&lt;/span&gt;0.2&lt;span class="nt"&gt;&amp;lt;/c&amp;gt;&lt;/span&gt; for 20%.&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
/// &lt;span class="nt"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;The total price as a &lt;span class="nt"&gt;&amp;lt;see&lt;/span&gt; &lt;span class="na"&gt;cref=&lt;/span&gt;&lt;span class="s"&gt;"decimal"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
/// &lt;span class="nt"&gt;&amp;lt;exception&lt;/span&gt; &lt;span class="na"&gt;cref=&lt;/span&gt;&lt;span class="s"&gt;"ArgumentNullException"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Thrown when &lt;span class="nt"&gt;&amp;lt;paramref&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"order"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt; is null.&lt;span class="nt"&gt;&amp;lt;/exception&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Raw XML noise everywhere. Every single method.&lt;/p&gt;

&lt;p&gt;I tried &lt;strong&gt;PrettyDocComments&lt;/strong&gt;. The concept was right but the aesthetics drove me&lt;br&gt;
crazy — it looked out of place in a modern IDE. So I built &lt;strong&gt;Render Doc Comments&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;Render Doc Comments transforms those cluttered &lt;code&gt;///&lt;/code&gt; tags into clean, formatted&lt;br&gt;
documentation blocks — rendered &lt;strong&gt;inline in your editor&lt;/strong&gt;, not in a separate window&lt;br&gt;
or hover popup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Raw XML tags cluttering your view  &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsv9pzfud6g0j4e4s4s3b.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsv9pzfud6g0j4e4s4s3b.png" alt="Before" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After (Free):&lt;/strong&gt; Clean, readable documentation with proper formatting, styled parameters,&lt;br&gt;
and clickable &lt;code&gt;cref&lt;/code&gt; links&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhqyplmmms6dlms0htx3.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhqyplmmms6dlms0htx3.png" alt="After" width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Interaction Model
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Caret-Based Mode (Default — Free)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Click into a comment and it reverts to raw XML for editing. Move your cursor away&lt;br&gt;
and the polished render returns. Zero friction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Margin Glyph Mode (Premium)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A glyph in the editor margin lets you toggle between raw and rendered manually,&lt;br&gt;
regardless of cursor position.&lt;/p&gt;




&lt;h2&gt;
  
  
  Language Support
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;C#&lt;/strong&gt; — &lt;code&gt;///&lt;/code&gt; XML doc comments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;F#&lt;/strong&gt; — &lt;code&gt;///&lt;/code&gt; XML doc comments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C++&lt;/strong&gt; — Doxygen-style &lt;code&gt;///&lt;/code&gt; comments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VB.NET&lt;/strong&gt; — &lt;code&gt;'''&lt;/code&gt; XML doc comments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Free vs Premium
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Free Edition&lt;/th&gt;
&lt;th&gt;Premium License&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-Language Support (C#, F#, C++, VB.NET)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;High-Fidelity Rendering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interactive &lt;code&gt;cref&lt;/code&gt; Links&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Caret-Based Auto-Hide&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ (Always On)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;🔘 Selectable&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Margin Glyph Toggle&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;🔘 Selectable&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Theme Synchronization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manual (Reopen)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Instant Auto-Sync&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typography&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Segoe UI (Fixed)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Fully Custom&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Accent Bars&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Left Side Only&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Multi-side Layout&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Color Profiles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Full Customization&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The core rendering engine is &lt;strong&gt;free and open source&lt;/strong&gt; (GNU GPL v3). Premium features&lt;br&gt;
fund continued development.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;Documentation should aid readability — not add to the noise. Every other part of&lt;br&gt;
the modern IDE has been polished. Doc comments were stuck in 2005. This is my&lt;br&gt;
attempt to fix that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get It
&lt;/h2&gt;

&lt;p&gt;Search &lt;strong&gt;"Render Doc Comments"&lt;/strong&gt; in the Visual Studio Marketplace, or go to&lt;br&gt;
Extensions → Manage Extensions inside VS.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/AMit-KP/RenderDocComments" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=AMit-KP.RenderDocComments" rel="noopener noreferrer"&gt;Visual Studio Marketplace&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Would love feedback — especially from C#, F#, C++ and VB.NET users!&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
