<?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: Usamah Klair</title>
    <description>The latest articles on DEV Community by Usamah Klair (@usamahklair).</description>
    <link>https://dev.to/usamahklair</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%2F3993354%2F6b588122-3f38-4156-834f-4c7629fdaa94.jpg</url>
      <title>DEV Community: Usamah Klair</title>
      <link>https://dev.to/usamahklair</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/usamahklair"/>
    <language>en</language>
    <item>
      <title>Raw Markdown Syntax Surfacing in Chat Search Previews - ChatGPT</title>
      <dc:creator>Usamah Klair</dc:creator>
      <pubDate>Tue, 08 Sep 2026 18:16:22 +0000</pubDate>
      <link>https://dev.to/usamahklair/raw-markdown-syntax-surfacing-in-chat-search-previews-chatgpt-38b3</link>
      <guid>https://dev.to/usamahklair/raw-markdown-syntax-surfacing-in-chat-search-previews-chatgpt-38b3</guid>
      <description>&lt;p&gt;Search preview snippets display raw markdown syntax (**, #, ##, ---,``) instead of rendered text, while the same content renders correctly inside the actual conversation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open any chat containing markdown-formatted text (bold, headings, dividers, inline code).&lt;/li&gt;
&lt;li&gt;Use the chat search feature.&lt;/li&gt;
&lt;li&gt;The preview snippet shows raw syntax tokens, unrendered. &lt;em&gt;&lt;small&gt;See the screenshots below&lt;/small&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Opening the same chat shows the content rendered correctly, confirming the content itself is fine, only this display path is affected.&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53m770npss2ac80s4lbk.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53m770npss2ac80s4lbk.png" alt=" " width="800" height="430"&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxtdx856mcwg2fibvfaht.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxtdx856mcwg2fibvfaht.png" alt=" " width="799" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Search is a high-intent moment, people are trying to locate something specific. Surfacing raw syntax at that moment adds friction, especially for non-technical users who won’t recognize **, --- or ## as formatting rather than a bug.&lt;/p&gt;

&lt;h4&gt;
  
  
  Suggested fix
&lt;/h4&gt;

&lt;p&gt;Either render markdown in preview snippets to match the conversation view, or strip the syntax tokens so previews show plain readable text. For a compact row, stripping is probably the simpler, more scannable option.&lt;/p&gt;

&lt;h5&gt;
  
  
  Another Example.
&lt;/h5&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futdegjqulw2qi3p1vum9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futdegjqulw2qi3p1vum9.png" alt=" " width="800" height="434"&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm4agd5p6ruoig52joase.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm4agd5p6ruoig52joase.png" alt=" " width="800" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>ux</category>
      <category>ui</category>
    </item>
    <item>
      <title>Gmail Username Change: What Happens to Your Third-Party Accounts</title>
      <dc:creator>Usamah Klair</dc:creator>
      <pubDate>Tue, 08 Sep 2026 17:56:29 +0000</pubDate>
      <link>https://dev.to/usamahklair/gmail-username-change-what-happens-to-your-third-party-accounts-1380</link>
      <guid>https://dev.to/usamahklair/gmail-username-change-what-happens-to-your-third-party-accounts-1380</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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frsefctqrrbim2gby6pkq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frsefctqrrbim2gby6pkq.png" alt=" " width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;On March 31, 2026, Google announced that users can now change their Gmail username for the first time. A feature millions of people had been waiting for. Sundar Pichai shared the news publicly, and the response was overwhelmingly positive.&lt;br&gt;
But while everyone was celebrating, I was asking a different question.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnnuqv81i1wl276ba34m3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnnuqv81i1wl276ba34m3.png" alt=" " width="742" height="352"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;I raised my first flag: when you change your Gmail username, does mail sent to the old address still reach you? Years of institutions only know you by that old email, banks, universities, services you signed up for years ago and forgot about. The question sounds simple until you realize you can't notify all of them.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkx2462u5z0apsfv46pu.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkx2462u5z0apsfv46pu.png" alt=" " width="662" height="529"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;My second flag is where it got serious.&lt;/p&gt;

&lt;p&gt;For most people, a Gmail address is not just an inbox. It is their identity across the internet. Every time someone tapped "Sign in with Google" instead of creating a password, on Spotify, Canva, Notion, Airbnb, hundreds of other platforms, that Gmail address became the key those platforms used to recognize them. Years of account history, saved data, purchases, preferences, all tied to that one address.&lt;/p&gt;

&lt;p&gt;So what happens to all of that when the address changes?&lt;/p&gt;

&lt;p&gt;Those platforms are not inside Google's ecosystem. They built their own databases. They stored your identity their own way. Google can update its own systems instantly, but it cannot reach into thousands of independent platforms and update their records at the same time.&lt;/p&gt;

&lt;p&gt;That gap is the problem.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdo5b08ihkq46uwj84to.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdo5b08ihkq46uwj84to.png" alt=" " width="591" height="800"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Explanation
&lt;/h2&gt;

&lt;p&gt;Here is what happens to a user after changing their Gmail username. They come back weeks later and tap "Sign in with Google." Google authenticates them successfully and their account is fine. But when Google passes their identity to that platform, it sends the new email address. The platform looks it up. Finds nothing. As far as that system is concerned, this person has never existed.&lt;/p&gt;

&lt;p&gt;No warning. No explanation. A duplicate empty account gets created. In the worst case, they are locked out entirely, losing years of data, history, and access without understanding why.&lt;/p&gt;

&lt;p&gt;Why does this happen to some platforms and not others? It comes down to a decision made long before you ever changed your username.&lt;/p&gt;

&lt;p&gt;When a platform integrates "Sign in with Google," it has to decide how it will identify returning users. Many platforms took the simpler path: they stored your email address as your identifier. It was easier to build, easier to read, easier to manage. And for years it worked perfectly because Gmail addresses never changed.&lt;/p&gt;

&lt;p&gt;Until now.&lt;/p&gt;

&lt;p&gt;The right way to do it is to use something Google calls a Subject ID, a permanent internal identifier tied to your Google account. It never changes. Regardless of what happens to your email address, your Subject ID stays the same forever. Platforms built this way are completely safe. A username change is invisible to them.&lt;/p&gt;

&lt;h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgcbcjiibclho3zu5uz5p.jpg" alt=" " width="788" height="444"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Google Confirmation
&lt;/h2&gt;

&lt;p&gt;I raised both flags publicly under Sundar Pichai's announcement. The first on April 1st, the second on April 2nd. That same day, Google's developer team published an official article titled "Supporting Google Account username change in your app," confirming exactly what I had identified: platforms using email address as the primary identifier may fail to recognize users after a username change, potentially resulting in duplicate accounts or complete loss of access to existing data.&lt;/p&gt;

&lt;p&gt;The first flag, about email delivery, Google's feature design had already solved. The old address stays active as an alias, both addresses point to the same inbox, nothing gets lost.&lt;/p&gt;

&lt;p&gt;The second one, the identity risk across third-party platforms, Google confirmed as a real and ongoing problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.googleblog.com/supporting-google-account-username-change-in-your-app/" rel="noopener noreferrer"&gt;Supporting Google Account username change in your app →&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What You Should Do
&lt;/h2&gt;

&lt;p&gt;If you're considering changing your Gmail username, don't do it without taking these steps first.&lt;/p&gt;

&lt;p&gt;Before switching, open your Google Account, go to Security, and find "Your connections to third-party apps &amp;amp; services." This gives you the full list of every platform tied to your Google identity. Go through it. For anything important such as banking, productivity tools, subscriptions, anything with years of history behind it, log in and confirm your access now, while your current address is still active.&lt;/p&gt;

&lt;p&gt;After switching, go back to those same platforms one by one and manually update your email in their account settings, wherever that option exists. Don't wait for a failed sign-in to find out which ones were vulnerable.&lt;/p&gt;

&lt;p&gt;For platforms with no manual update option, reach out to their support before you need to. Keep a record, a screenshot, an email, anything that shows the account was yours.&lt;/p&gt;

&lt;p&gt;The feature is available today. The risk is real today. A few hours of preparation now is the difference between a smooth transition and losing years of access you can't easily get back.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnn2qygdq2815em1hefj4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnn2qygdq2815em1hefj4.png" alt=" " width="799" height="411"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thought
&lt;/h2&gt;

&lt;p&gt;Google built a genuinely useful feature. Giving people the option to change an address they've outgrown, tied to an old name, an old version of themselves. This is a good thing to add.&lt;/p&gt;

&lt;p&gt;But identity-level features carry a different kind of responsibility than most. For years, thousands of platforms built their systems around the assumption that a Gmail address doesn't change, without ever really questioning it. That assumption doesn't hold anymore, and most of those platforms don't know it yet. Most users don't either.&lt;/p&gt;

&lt;p&gt;Google told developers. But developers aren't the ones clicking "change username" on a random Tuesday because they finally can.&lt;/p&gt;

&lt;p&gt;That's really the gap here. The people actually taking the risk are the ones least likely to know it exists.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;em&gt;Visual references in this article are adapted from Google Developers blog, Source: developers.googleblog.com&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;

</description>
      <category>google</category>
      <category>discuss</category>
      <category>news</category>
      <category>analysis</category>
    </item>
    <item>
      <title>Unrendered Markdown in the Ask ChatGPT Reply feature</title>
      <dc:creator>Usamah Klair</dc:creator>
      <pubDate>Sat, 29 Aug 2026 10:45:09 +0000</pubDate>
      <link>https://dev.to/usamahklair/unrendered-markdown-in-the-ask-chatgpt-reply-feature-1mlg</link>
      <guid>https://dev.to/usamahklair/unrendered-markdown-in-the-ask-chatgpt-reply-feature-1mlg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Ask ChatGPT reply feature, where selecting text from a response creates a reference chip above the input box, displays raw markdown syntax instead of rendered text. Bold markers, headers, table pipes, and dividers all show up as literal characters (*, #, |, -, =) rather than the clean formatting visible in the conversation itself. This is confirmed across two distinct content types: divider-separated text and full markdown tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br&gt;
When you select part of a response and use the Ask ChatGPT feature, the chip that appears above the input box shows the raw markdown source of that selection such as asterisks, hash marks, table pipes, dividers, etc. (*, -, =, |, #), instead of the clean text you just read in the conversation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In any response with markdown formatting (a heading, bold text, a table, or a — divider), select a span that includes that formatting.&lt;/li&gt;
&lt;li&gt;Trigger the Ask ChatGPT action.&lt;/li&gt;
&lt;li&gt;The chip above the input box renders the literal markdown characters instead of formatted text.&lt;/li&gt;
&lt;li&gt;Confirmed with two distinct cases: a divider-separated text block and a full markdown table with headers and bold values.&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe59vlen9ydace1p6y654.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe59vlen9ydace1p6y654.png" alt=" " width="800" height="291"&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F68iccxmn7bfmmm49yo2o.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F68iccxmn7bfmmm49yo2o.png" alt=" " width="628" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;
Users need to see what they’re about to reply to or ask about. That only works if the chip looks like the thing it was copied from. Right now it doesn’t - a bolded table cell becomes &lt;strong&gt;text&lt;/strong&gt;, a section header becomes ### text, and other symbols like ===, ***, | , and — show up unrendered too. For anything table-shaped, the reply chip turns into a wall of pipes and dashes that’s genuinely hard to parse. The feature is supposed to reduce ambiguity about what’s being referenced; instead it introduces a confusion moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suggested fix:&lt;/strong&gt;&lt;br&gt;
Have the chip render through the same markdown pass as the conversation view, or fall back to a stripped plain-text version if a lightweight render isn’t feasible in that component.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>ux</category>
      <category>ui</category>
    </item>
  </channel>
</rss>
