WE HAVE APOSTROPHES Y'ALL

I pushed some smaller changes to Subcurrent this week.

The Discord notifier now has better HTML and XML handling. Before I had a gaggle of regex (yes, I know... but I was moving fast) to find and replace special character encoding strings. Now I'm doing it with DOMPurify, which drastically simplified the code and gets us properly formatted apostrophes in the Discord notifications. I also added in featured image support for the notifications.

The site now handles a few things that hadn't come up until recently. For one, pre/code blocks will no longer break the layout. This means that if a code sample appears in an article's description, you'll be able to scroll it horizontally, and the code won't burst out of the right-hand side of the layout.

Also, it seems that different CMS's have different character limits for article descriptions. For some, seemingly the whole article was coming through. It didn't look great on the site, and the amount of text was counter to the point of Subcurrent, which is to direct traffic to the author's site. I've set a hard limit snippet length to approximately 300 characters. We'll see how it goes.

Lastly, I added a CLAUDE.md file. I was making these code updates with the Claude Code CLI. Their CLI includes an init command which generates the file for you based on your code base.

Here's the file in its entirety:

# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Build and Development Commands
- `npm run dev` - Start the development server
- `npm run build` - Build for production
- `npm run preview` - Preview the production build
- `npm run fetch` - Fetch RSS feeds
- `npm run clean` - Clean feed content
- `npm run refresh` - Clean and fetch feeds
- `npm run notify-discord` - Send notifications to Discord

## Linting and Formatting
- `npm run lint` - Run ESLint
- `npm run lint:fix` - Automatically fix ESLint issues
- `npm run lint:clean` - Fix ESLint issues and run Prettier
- `npm run knip` - Analyze unused dependencies

## Code Style Guidelines
- **TypeScript**: Use strict mode with proper typing
- **Formatting**: 2 space indentation, 100 char line limit, single quotes
- **Naming**: camelCase for variables/functions, PascalCase for interfaces/components
- **Error handling**: Use try/catch with specific error logging
- **Imports**: Node.js native modules first, then external packages
- **Components**: Astro components with React integration where needed
- **Astro-specific**: Follow recommended plugin rules and JSX standards

This was 100% auto-generated, and, for me as a human, of dubious utility. I'm letting it ride for now because I don't think the audience is the human, but the LLM.

(Hat tip to Nícolas for prompting me to include an apostrophe in my title.)