- Add module-level compiled regexes (DISCORD_LINK_PATTERN, URL_PREFIX_PATTERN,
NON_BREAKING_SPACE_PATTERN, EMPTY_CODE_BLOCK_PATTERN, SQUARE_BRACKETS_PATTERN,
BALL_PATTERN, REFERENCE_MARK_PATTERN, ESCAPED_STAR_PATTERN,
CIRCLED_NUMBER_PATTERNS)
- Use .sub on those compiled patterns in format_discord_links and
generate_atom_feed instead of repeated re.sub calls
- Consolidate circled-number replacement and simplify escaped-star handling
- Improves readability and avoids recompiling regexes on each use
- Switch to anyio.Path for non-blocking filesystem operations (mkdir, glob)
so article directory creation and listing are async-friendly.
- Replace blocking sync glob with an async comprehension to build existing_files.
- Harden mdformat usage: call formatter inside try/except and fall back to
unformatted markdown on error to avoid crashes from unsupported options.
- Set logging to DEBUG for more verbose output during runs.
- Miscellaneous cleanups: reformat imports/long lists, collapse multi-line
constructs, and simplify timestamp parsing/formatting.