Skip to content

feat: Alone Roman variant (no italics) - #16

Merged
crypticpy merged 1 commit into
mainfrom
feat/alone-roman
Aug 18, 2026
Merged

feat: Alone Roman variant (no italics)#16
crypticpy merged 1 commit into
mainfrom
feat/alone-roman

Conversation

@crypticpy

@crypticpy crypticpy commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Summary

Plan step 5 of docs/plans/2026-08-18-audit-remediation.md — a fourth contributes.themes entry, Alone Roman: the Standard palette with the italic channel removed, for astigmatic readers (slanted monospace edges fringe) and anyone who dislikes italic code.

How

  • base.yaml gains two font-style tokens: every fontStyle: italic (15 tokenColors rules) becomes ${style.italic} and every semantic italic: true (22 selectors) becomes ${style.semanticItalic}. The Markdown emphasis rule stays literally italic — that's the document's own formatting.
  • alone / alone-soft / alone-focused bind style.italic: italic, style.semanticItalic: true (their JSON is byte-identical to before).
  • New themes/_src/variants/alone-roman.yaml binds "" / false, isStandard: false. Two hexes differ from Standard so the role pairs Standard separates with italics stay ΔE2000 ≥ 5 apart after protan/deutan simulation on colour alone: strings #9A8B60 → #9C8B4A (vs Functions 5.5) and *.defaultLibrary #B08C50 → #AA884C (vs Types 5.4). Everything else, incl. bold keywords/escapes/errors, is Standard.
  • Verifier runs on 4 variants and passes every hard check (Roman: all CVD pairs separable, ANSI closest 12.6).
  • package.json theme entry; README install list + "Alone Roman" blurb + Italic-fringing section now recommends Roman (Soft-only override example kept, shortened) + contributor note; CHANGELOG 2.0.0 "Added — Alone Roman variant".

Test plan

  • npm run check green (4 variants), npm test 26/26
  • vsce ls shows 4 theme JSONs; installed the VSIX and switched through all four
  • Diffed themes/alone*-color-theme.json for the three existing variants: no change

🤖 Generated with Claude Code

Summary by Sourcery

Add an upright Alone Roman theme variant for readers who prefer or require code without italic styling.

New Features:

  • Add the Alone Roman VS Code theme variant with the Standard palette rendered without syntax italics.

Enhancements:

  • Make token and semantic italic styling configurable across all theme variants while preserving the existing variants unchanged.
  • Adjust two Roman palette colors to retain color-based distinction for roles previously differentiated by italics under red-green color-vision deficiency.

Build:

  • Include the generated Alone Roman theme in the extension package.

Documentation:

  • Document Alone Roman, its accessibility rationale, and the remaining customization options in the README.
  • Record the new theme variant in the changelog.

Tests:

  • Verify all four variants, generated theme artifacts, accessibility separation checks, and regression compatibility for existing variants.

…ticItalic tokens

- base.yaml routes every syntax italic through ${style.italic} (tokenColors)
  and ${style.semanticItalic} (semantic); Markdown emphasis stays literal.
- alone/soft/focused bind italic/true; new alone-roman.yaml binds ""/false
  with strings #9C8B4A and defaultLibrary #AA884C so CVD pairs pass on
  colour alone (verified).
- package.json contributes entry, README variant blurb + italic section,
  CHANGELOG.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sourcery-ai

sourcery-ai Bot commented Aug 18, 2026

Copy link
Copy Markdown

Reviewer's Guide

Introduces a new "Alone Roman" VS Code theme variant that reuses the standard palette but removes all syntax italics via new font-style tokens, while keeping existing variants byte-identical and documenting the new option in README and CHANGELOG.

File-Level Changes

Change Details Files
Route all italic styling through configurable tokens to support a non-italic variant without duplicating base rules.
  • Replaced literal italic: true semantic token settings with italic: ${style.semanticItalic} throughout semanticTokenColors.
  • Replaced literal fontStyle: italic TextMate rules with fontStyle: ${style.italic} in tokenColors.
  • Left Markdown emphasis rules using literal italics so document formatting remains unchanged across variants.
themes/_src/base.yaml
Bind the new font-style tokens in existing variants so their generated JSON remains unchanged.
  • Added style.italic: italic and style.semanticItalic: true to each existing variant token map.
  • Documented the role of these font-style tokens in variant YAML comments.
themes/_src/variants/alone.yaml
themes/_src/variants/alone-soft.yaml
themes/_src/variants/alone-focused.yaml
Add an "Alone Roman" variant that disables italics while preserving palette contrast and CVD separability.
  • Added themes/_src/variants/alone-roman.yaml as a copy of the standard token map, binding style.italic: "" and style.semanticItalic: false.
  • Tweaked string and defaultLibrary hexes to keep previously italic-differentiated roles distinguishable by color alone under protan/deutan simulation.
  • Generated themes/alone-roman-color-theme.json from the new variant source.
  • Marked the new variant as non-standard (isStandard: false) while keeping warm wavelength verification and running the full verifier checks.
themes/_src/variants/alone-roman.yaml
themes/alone-roman-color-theme.json
Expose the new theme variant in extension metadata and documentation.
  • Registered "Alone Roman" in package.json contributes.themes with the generated JSON path.
  • Updated README variant list and added an "Alone Roman" section describing behavior and tradeoffs.
  • Reworked the italic fringing guidance to recommend Alone Roman first and simplified per-theme override examples, now scoped to Soft only.
  • Explained the new font-style tokens in the theming source-of-truth section.
  • Documented the new variant in CHANGELOG under an "Added — Alone Roman variant" entry with implementation details.
package.json
README.md
CHANGELOG.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@crypticpy
crypticpy merged commit 3422a7a into main Aug 18, 2026
3 checks passed
@crypticpy
crypticpy deleted the feat/alone-roman branch August 18, 2026 07:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant