Skip to content

feat(cycle): Implement scheme rings#151

Open
bezhermoso wants to merge 3 commits intomainfrom
celebrimbor
Open

feat(cycle): Implement scheme rings#151
bezhermoso wants to merge 3 commits intomainfrom
celebrimbor

Conversation

@bezhermoso
Copy link
Copy Markdown
Member

Addresses #135.

Summary

This adds configurable cycle rings for tinty cycle. Instead of relying on a single preferred-schemes list or inferring light/dark relationships from scheme names, users can now define explicit named groups of schemes and cycle through the group they want.

The issue discussion called out that suffix-based light/dark inference is unreliable because scheme names are conventions, not guaranteed metadata. Explicit rings avoid that ambiguity and also support arbitrary user-defined cycles beyond light/dark groupings.

Configuration

default-cycle-ring = "default"

[[rings]]
name = "dark"
schemes = ["base16-gruvbox-hard-dark", "base16-ayu-dark"]

[[rings]]
name = "light"
schemes = ["base16-gruvbox-medium-light", "base16-github"]

[[rings]]
name = "default"
schemes = ["base16-gruvbox-hard-dark", "base16-github"]
  • tinty cycle uses default-cycle-ring.

  • tinty cycle --ring dark cycles through the named ring directly.

  • Empty selected rings now return an error instead of applying anything.

preferred-schemes

preferred-schemes is no longer used. If it is present, tinty cycle exits with a hard migration message and prints a copy/paste [[rings]] replacement that preserves the old cycle order, including default-scheme prepending behavior.

@bezhermoso bezhermoso requested a review from a team as a code owner April 24, 2026 06:09
@bezhermoso bezhermoso requested review from JamyGolden and tummetott and removed request for a team April 24, 2026 06:09
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