Releases: jayeshmepani/cssforge
Release list
v0.3.1 — Comment Carry & Nest Merge
Safety-first semantic CSS refactoring and modernization workbench.
🩹 Patch on 0.3.0
Gather/nest selectors are unchanged from 0.3.0 (including :focus-visible { .skip-link:focus:not(&) }). This release only fixes how comments and duplicate nested blocks are assembled.
- Leading comments travel with gathered rules: a
/* … */immediately above a moved rule is copied into the parent (just above the nest) and removed from the old location. No more orphan comments after gather. - Same nested selector merges:
&.flash { animation }plus&.flash { @media { animation: none } }become one&.flashblock.
📦 Version
0.3.0 → 0.3.1
Compatible with 0.3 (cssforge-core = "0.3" will pick this up).
Official Multi-Platform Binaries
| Platform | Architecture | Archive File |
|---|---|---|
| Windows | Intel / AMD x64 | cssforge-v0.3.1-windows-x64.zip |
| Windows | Snapdragon / ARM64 | cssforge-v0.3.1-windows-arm64.zip |
| Linux | Intel / AMD x64 | cssforge-v0.3.1-linux-x64.tar.gz |
| Linux | Snapdragon / ARM64 | cssforge-v0.3.1-linux-arm64.tar.gz |
| macOS | Apple Silicon M-Series | cssforge-v0.3.1-macos-arm64.tar.gz |
Checksums
SHA256 checksums are available in SHA256SUMS.txt.
Verification Example
sha256sum -c SHA256SUMS.txtv0.3.0 — Smart Gather & Nesting
Safety-first semantic CSS refactoring and modernization workbench.
🧠 Smart Gather & Nesting
gather-related-selector-rules and the nest family now pick one home per rule instead of copying the same declarations into every matching parent.
- Strongest existing parent wins: specificity first (
.skip-linkbeats*; a class beatsbody). On a tie, prefix nesting (+ *,&:has(*)) beats appended&. - Appended
&(MDN): when no stronger prefix home exists, reverse the context —.featured .card→.card { .featured & { } },:not(.card)→:not(&). - Gather through conditionals: related rules inside
@media/@supports/@container/@starting-stylecan invert into the parent (.skip-link { :not(*) { @media (width <= 1024px) { … } } }). - Busy at-rules stay grouped: if an at-block has 3+ inner style rules that would land in 2+ different homes, the
@media(etc.) is left populated. One or two inners, or every inner assigned to the same home, still nest into that selector. - Universal / document roots are weak homes:
*,html,body,:root, and:hostno longer absorb component rules via appended&(no more.skip-link+&/.skip-link:has(&)inside*).
🛡️ Safer Transformations
- Selector lists are not combinators:
::view-transition-old(root), ::view-transition-new(root)is no longer rewritten as::view-transition-new(root) { ::view-transition-old(root), & { } }. A comma list stays a list. - Pseudo-elements are not gather homes:
&cannot represent::…, so::view-transition-*/::beforerules are not used as merge targets for other selectors. - Selector-list lines stay intact:
&,/&::before,/&:hover,are not treated as declarations, so they no longer become&::before,;or a stray;. - Missing semicolons repaired: last declarations without
;get one before a nested{, sodisplay: block !importantno longer runs into+ .tabpanel {. - Media range syntax modernizes features with or without spaces:
(max-width:60rem)→(width <= 60rem).
📦 Version
0.2.1 → 0.3.0
This is a 0.x minor: same CLI and the same 26 rule IDs, but default gather/nest output can change. Dependents pinned to 0.2 will not pick this up automatically.
Official Multi-Platform Binaries
| Platform | Architecture | Archive File |
|---|---|---|
| Windows | Intel / AMD x64 | cssforge-v0.3.0-windows-x64.zip |
| Windows | Snapdragon / ARM64 | cssforge-v0.3.0-windows-arm64.zip |
| Linux | Intel / AMD x64 | cssforge-v0.3.0-linux-x64.tar.gz |
| Linux | Snapdragon / ARM64 | cssforge-v0.3.0-linux-arm64.tar.gz |
| macOS | Apple Silicon M-Series | cssforge-v0.3.0-macos-arm64.tar.gz |
Checksums
SHA256 checksums are available in SHA256SUMS.txt.
Verification Example
sha256sum -c SHA256SUMS.txtv0.2.1 — Smart Safe File Discovery
Safety-first semantic CSS refactoring and modernization workbench.
📁 Smart Safe File Discovery Engine
CSSForge now applies zero-config safety ignore filters when scanning workspaces recursively, protecting build artifacts and preventing recursion loops:
- Generated & Artifact Exclusions: Automatically ignores
*.modern.css(prevents recursive re-modernization on output files),*.min.css,*.bundle.css,*.chunk.css,*.map.css, and backup files (*.bak.css,*.backup.css). - Directory Exclusions: Automatically skips
node_modules/,target/,dist/,build/,out/,.next/,.nuxt/,.turbo/,.svelte-kit/,vendor/,.git/,.hg/,.svn/, and.cache/. - Explicit Target Override: Explicitly targeting any file path directly (e.g.
cssforge interactive ./dist/bundle.min.css) continues to process the requested file.
📦 Version
0.2.0 → 0.2.1
Official Multi-Platform Binaries
| Platform | Architecture | Archive File |
|---|---|---|
| Windows | Intel / AMD x64 | cssforge-v0.2.1-windows-x64.zip |
| Windows | Snapdragon / ARM64 | cssforge-v0.2.1-windows-arm64.zip |
| Linux | Intel / AMD x64 | cssforge-v0.2.1-linux-x64.tar.gz |
| Linux | Snapdragon / ARM64 | cssforge-v0.2.1-linux-arm64.tar.gz |
| macOS | Apple Silicon M-Series | cssforge-v0.2.1-macos-arm64.tar.gz |
Checksums
SHA256 checksums are available in SHA256SUMS.txt.
Verification Example
sha256sum -c SHA256SUMS.txtv0.2.0 — Gather Related Selectors, Select All & Windows TUI Scroll Fix
Safety-first semantic CSS refactoring and modernization workbench.
Gather related selector rules
CSSForge can now gather scattered, non-adjacent occurrences of the same selector into one canonical rule block.
/* before — same selector, far apart */
.skip-link { position: absolute; font-weight: 700; }
/* …unrelated rules, comments, @keyframes… */
.skip-link { font: optional; }
.skip-link+* { display: block; }
.skip-link::backdrop { background-color: gray; }
.skip-link:has(*) { color: #27ca3f; }/* after */
.skip-link {
position: absolute;
font-weight: 700;
font: optional;
+ * { display: block; }
&::backdrop { background-color: gray; }
&:has(*) { color: #27ca3f; }
}What is gathered:
- Exact selector duplicates — later blocks merge into the first; declarations are promoted to the top of that block
- Directly attached pseudo-classes / elements →
&:hover,&:has(*),&::backdrop - Combinator variants →
+ *,> .child,~ .peer - Whitespace descendants →
:not(*),.child(no spurious&)
Intervening rules, comments, and @keyframes are left untouched.
Safety: REVIEW. Requires --allow-review on the CLI, or enabling the rule in the TUI. Verify cascade order after apply.
TUI
- Windows scroll fix on Select Rules: wrapped descriptions no longer bleed into the next row or desync the cursor. Each rule is one clipped line; only the list pane scrolls; header and enabled-count stay fixed.
PgUp/PgDnmove the rules (and files) cursor by a page.- Select All (
a) on the rules screen — same toggle-all behavior as files. Press again to deselect all.
Fixes
- Worktree preservation:
GatherRelatedSelectorRulespreviously replacedfirst.start..last.end, deleting everything between non-adjacent matches (including@keyframes). It now writes one replacement atfirst.start..first.endand a deletion plan per later occurrence. - Descendant
&prefix:extract_related_nested_selectorno longer prepends&to whitespace-separated descendants..skip-link :not(*)nests as:not(*), not&:not(*).
Version
0.1.0 → 0.2.0
Official Multi-Platform Binaries
| Platform | Architecture | Archive File |
|---|---|---|
| Windows | Intel / AMD x64 | cssforge-v0.2.0-windows-x64.zip |
| Windows | Snapdragon / ARM64 | cssforge-v0.2.0-windows-arm64.zip |
| Linux | Intel / AMD x64 | cssforge-v0.2.0-linux-x64.tar.gz |
| Linux | Snapdragon / ARM64 | cssforge-v0.2.0-linux-arm64.tar.gz |
| macOS | Apple Silicon M-Series | cssforge-v0.2.0-macos-arm64.tar.gz |
Checksums
SHA256 checksums are available in SHA256SUMS.txt.
Verification Example
sha256sum -c SHA256SUMS.txtCSSForge v0.1.0
CSSForge v0.1.0
Safety-first semantic CSS refactoring and modernization workbench.
Official Multi-Platform Binaries
| Platform | Architecture | Archive File |
|---|---|---|
| Windows | Intel / AMD x64 | cssforge-v0.1.0-windows-x64.zip |
| Windows | Snapdragon / ARM64 | cssforge-v0.1.0-windows-arm64.zip |
| Linux | Intel / AMD x64 | cssforge-v0.1.0-linux-x64.tar.gz |
| Linux | Snapdragon / ARM64 | cssforge-v0.1.0-linux-arm64.tar.gz |
| macOS | Apple Silicon M-Series | cssforge-v0.1.0-macos-arm64.tar.gz |
Checksums
SHA256 checksums are available in SHA256SUMS.txt.
Verification Example
sha256sum -c SHA256SUMS.txt