Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
371f619
feat: implement MD034 no-bare-urls rule with comprehensive validation…
ekropotin Aug 10, 2025
4319102
feat: implement MD022 blanks-around-headings rule with hybrid archite…
ekropotin Aug 11, 2025
586cf64
feat: implement MD031 blanks-around-fences rule with performance opti…
ekropotin Aug 11, 2025
2e119cf
feat: implement MD032 blanks-around-lists rule with comprehensive val…
ekropotin Aug 11, 2025
07302d9
feat: implement MD018 no-missing-space-atx rule with line-based analy…
ekropotin Aug 11, 2025
c49f7a1
feat: implement MD019 no-multiple-space-atx rule with comprehensive t…
ekropotin Aug 11, 2025
99f69f4
feat: implement MD020 no-missing-space-closed-atx rule with comprehen…
ekropotin Aug 11, 2025
23c08ae
feat: implement MD021 no-multiple-space-closed-atx rule with perfect …
ekropotin Aug 11, 2025
21f83ea
feat: implement MD004 ul-style rule with comprehensive validation (#5…
ekropotin Aug 12, 2025
782bf48
feat: implement MD007 ul-indent rule with perfect parity (#59)
ekropotin Aug 12, 2025
1f41335
feat: implement QUICKMARK_CONFIG environment variable support (#60)
ekropotin Aug 12, 2025
76c0f42
feat: implement MD005 list-indent rule with perfect parity (#61)
ekropotin Aug 12, 2025
dbcbd8e
feat: implement MD025 single-h1 rule with perfect parity (#62)
ekropotin Aug 12, 2025
d31167b
feat: implement MD043 required-headings rule with perfect parity (#63)
ekropotin Aug 12, 2025
8672808
feat: implement MD014 commands-show-output rule with perfect parity (…
ekropotin Aug 12, 2025
b6c2ccb
feat: implement MD033 no-inline-html rule with perfect parity (#65)
ekropotin Aug 13, 2025
3990566
refactor: optimize tree-sitter node traversal and improve code qualit…
ekropotin Aug 13, 2025
7248932
feat: implement MD009 trailing spaces rule with perfect parity (#67)
ekropotin Aug 13, 2025
5084672
feat: implement MD010 no-hard-tabs rule with perfect parity (#68)
ekropotin Aug 13, 2025
1d8a433
feat: implement MD011 no-reversed-links rule with perfect parity (#69)
ekropotin Aug 13, 2025
de46adf
feat: implement MD012 no-multiple-blanks rule with perfect parity (#70)
ekropotin Aug 13, 2025
248f74c
chore: minor refactoring (#71)
ekropotin Aug 13, 2025
2bec046
feat: implement MD040 fenced-code-language rule with perfect parity (…
ekropotin Aug 14, 2025
1a6f4d2
feat: implement MD046 code-block-style rule with perfect parity (#73)
ekropotin Aug 14, 2025
cd92f48
feat: implement MD048 code-fence-style rule with perfect parity (#76)…
ekropotin Aug 14, 2025
9acafb3
feat: implement MD023 heading-start-left rule with perfect parity (#75)
ekropotin Aug 14, 2025
fd3bb4f
feat: implement MD023 heading-start-left rule with perfect parity
ekropotin Aug 14, 2025
35293c9
feat: implement MD027 no-multiple-space-blockquote rule with perfect …
ekropotin Aug 14, 2025
215a91a
feat: implement MD028 no-blanks-blockquote rule with perfect parity (…
ekropotin Aug 14, 2025
bc96415
feat: add linting github workflow and rust-toolchain file (#79)
ekropotin Aug 14, 2025
4402631
feat: implement MD030 list-marker-space rule with perfect parity (#80)
ekropotin Aug 15, 2025
a70215c
feat: implement MD035 hr-style rule with perfect parity (#81)
ekropotin Aug 15, 2025
931f6eb
feat: implement MD036 no-emphasis-as-heading rule with perfect parity…
ekropotin Aug 15, 2025
bef2945
chore: fix linting warninings (#83)
ekropotin Aug 15, 2025
eaed719
feat: implement MD037 no-space-in-emphasis rule with perfect parity (…
ekropotin Aug 15, 2025
435315c
feat: implement MD038 no-space-in-code rule with perfect parity (#85)
ekropotin Aug 15, 2025
bde49ff
feat: implement MD039 no-space-in-links rule with perfect parity (#86)
ekropotin Aug 16, 2025
9cb3368
feat: implement MD041 first-line-heading rule with perfect parity (#87)
ekropotin Aug 16, 2025
6565537
feat: implement MD042 no-empty-links rule with perfect parity (#88)
ekropotin Aug 16, 2025
189f533
feat: implement MD045 no-alt-text rule with perfect parity (#89)
ekropotin Aug 16, 2025
de557be
feat: implement MD047 single-trailing-newline rule with perfect parit…
ekropotin Aug 16, 2025
a0f87ab
feat: implement MD049 emphasis-style rule with perfect parity (#91)
ekropotin Aug 16, 2025
16eef7d
feat: implement MD050 strong-style rule (#92)
ekropotin Aug 16, 2025
f451861
feat: implement MD054 link-image-style rule with perfect parity (#93)
ekropotin Aug 16, 2025
f1270f1
feat: implement MD055 table-pipe-style rule with perfect parity (#94)
ekropotin Aug 17, 2025
58a031c
feat: implement MD056 table-column-count rule with perfect parity (#95)
ekropotin Aug 17, 2025
e1a9c95
feat: implement MD058 blanks-around-tables rule with perfect parity (…
ekropotin Aug 17, 2025
4329da6
feat: implement MD059 descriptive-link-text rule with perfect parity …
ekropotin Aug 17, 2025
d0ce15e
feat: implement MD044 proper-names rule with perfect parity (#98)
ekropotin Aug 18, 2025
a5017e9
feat: implement comprehensive MD029 ordered-list-marker-style rule wi…
ekropotin Aug 18, 2025
76e94e0
refactor: Get rid of the quickmark_config crate (#100)
ekropotin Aug 19, 2025
079ad4b
refactor: configs for MD003-MD013 (#101)
ekropotin Aug 19, 2025
4b873c5
refactor: comprehensive config system modernization and cleanup (#102)
ekropotin Aug 19, 2025
2f229e6
feat: implement default rule severity configuration support (#103)
ekropotin Aug 19, 2025
433cc59
feat: implement hierarchical configuration discovery for LSP (#104)
ekropotin Aug 19, 2025
fa0b8bf
feat: implement comprehensive multiple files linting with parallel pr…
ekropotin Aug 20, 2025
a672f30
fix: handle UTF-8 character boundaries in MD013 line length rule (#106)
ekropotin Aug 20, 2025
6e3c7a7
chore: implement comprehensive performance benchmarking infrastructur…
ekropotin Aug 20, 2025
e9b6e3e
chore: implement parallel file discovery and optimize linting perform…
ekropotin Aug 21, 2025
1963f80
Chore: rename crates + introduce initial version of VSCode extension …
ekropotin Aug 21, 2025
26599ce
chore: update project documentation and add GitHub workflow (#110)
ekropotin Aug 22, 2025
67464c6
feat: comprehensive project infrastructure improvements and VSCode ex…
ekropotin Aug 22, 2025
59ece65
chore: add Homebrew tap setup with automated release workflow (#112)
ekropotin Aug 23, 2025
51bd476
feat: implement comprehensive Homebrew tap with extensible package ma…
ekropotin Aug 23, 2025
4042966
feat: implement comprehensive release infrastructure with automated w…
ekropotin Aug 24, 2025
af008d2
fix: configure git identity for crates-version-bump workflow (#115)
ekropotin Aug 24, 2025
2a59a3e
fix: add permissions to write into the repo for the crates-version-bu…
ekropotin Aug 24, 2025
ea80f80
Release 1.0.0-alpha.2
github-actions[bot] Aug 24, 2025
dcc872e
fix: use PAT for bump version workflow (#117)
ekropotin Aug 24, 2025
b926e89
chore: introduce cache for cargo workspaces (#118)
ekropotin Aug 24, 2025
1793d0f
chore: add --force flag for bump version workflow (#119)
ekropotin Aug 24, 2025
b0e79f7
chore: update core crate to test workflow (#120)
ekropotin Aug 24, 2025
27530a8
Release 1.0.0-alpha.3
github-actions[bot] Aug 24, 2025
725b18b
chore: update quickmark-core dependency versions to 1.0.0-alpha.3 (#121)
ekropotin Aug 24, 2025
09f561d
Release 1.0.0-beta.0
github-actions[bot] Aug 24, 2025
bfb4892
chore: update workflow configurations and track core changes (#122)
ekropotin Aug 24, 2025
24ed876
Release 1.0.0-beta.0
github-actions[bot] Aug 24, 2025
269b60e
chore: prepare release beta1 (#123)
ekropotin Aug 24, 2025
286d31c
Release 1.0.0-beta.1
github-actions[bot] Aug 24, 2025
acab6bc
chore: simplify version bump workflow and update dependencies (#124)
ekropotin Aug 24, 2025
a325b77
Release 1.0.0-beta.1
github-actions[bot] Aug 24, 2025
58844ce
fix: resolve binary naming collision in release workflow (#126)
ekropotin Aug 25, 2025
85db946
fix: get rid of printing in stdout to not interfere with Server JSON …
ekropotin Aug 25, 2025
7927f7c
Release 1.0.0-beta.2
github-actions[bot] Aug 25, 2025
2cc217a
chore: update quickmark-core dependency to 1.0.0-beta.2 (#129)
ekropotin Aug 26, 2025
509db60
Release 1.0.0-beta.2
github-actions[bot] Aug 26, 2025
4bf9e40
chore: add link on the VSCode marketplace
ekropotin Aug 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 0 additions & 27 deletions .claude/commands/port-rule.md

This file was deleted.

2 changes: 1 addition & 1 deletion .claude/commands/publish.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
1. Commit all unstaged files
2. Squash commits which were not yet published on the remote.
3. Generate the final commit message based on the diff with the remote branch.
3. Generate the final commit message based on the diff with the remote branch, from which the current branch is originated.
15 changes: 8 additions & 7 deletions .github/workflows/branch-name-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ on:
branches-ignore:
- main
- dev
- development

jobs:
check-branch-name:
runs-on: ubuntu-latest
name: Validate branch naming convention

steps:
- name: Check branch name
run: |
Expand All @@ -22,19 +23,19 @@ jobs:
else
branch="${{ github.ref_name }}"
fi

echo "Checking branch: $branch"

# Skip protected branches
if [[ "$branch" == "main" || "$branch" == "dev" ]]; then
echo "✅ Branch '$branch' is a protected branch, skipping validation"
exit 0
fi

# Define the pattern for branch naming convention
# Format: type/issue-number-description
pattern='^(feature|fix|docs|chore|refactor)/[0-9]+-[a-z0-9-]+$'

# Check if branch name matches the pattern
if [[ ! "$branch" =~ $pattern ]]; then
echo "❌ Branch name '$branch' does not follow naming convention"
Expand All @@ -52,5 +53,5 @@ jobs:
echo "Please rename your branch to follow the convention."
exit 1
fi
echo "✅ Branch name '$branch' follows the naming convention"

echo "✅ Branch name '$branch' follows the naming convention"
80 changes: 80 additions & 0 deletions .github/workflows/crates-version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Crates Version Bump

on:
workflow_dispatch:
inputs:
pre-id:
description: 'Prerelease identifier for prerelease versions'
required: false
default: 'alpha'
type: choice
options:
- beta
- rc
force:
description: 'Force version bump even if no changes detected'
required: false
default: false
type: boolean

jobs:
bump-version:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
token: ${{ secrets.PAT }}
fetch-depth: 0

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo-workspaces
uses: actions/cache@v3
id: cache-cargo-workspaces
with:
path: ~/.cargo/bin/cargo-workspaces
key: cargo-workspaces-${{ runner.os }}-v1
restore-keys: |
cargo-workspaces-${{ runner.os }}-

- name: Install cargo-workspaces
if: steps.cache-cargo-workspaces.outputs.cache-hit != 'true'
run: cargo install cargo-workspaces

- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"

- name: Run version bump
run: |
BRANCH="${GITHUB_REF_NAME}"
PRE_ID="${{ inputs.pre-id }}"
FORCE="${{ inputs.force }}"

echo "Running on branch: $BRANCH"
echo "Prerelease identifier: $PRE_ID"
echo "Force flag: $FORCE"
echo "Will bump version for ALL crates"

FORCE_FLAG=""
if [ "$FORCE" = "true" ]; then
FORCE_FLAG="--force '*'"
fi

case "$BRANCH" in
main)
cargo workspaces version --allow-branch "$BRANCH" --no-global-tag --yes $FORCE_FLAG
;;
development)
cargo workspaces version --allow-branch "$BRANCH" --no-global-tag prerelease --pre-id "$PRE_ID" --yes $FORCE_FLAG
;;
*)
echo "❌ This workflow can only be run on 'main' or 'development'."
exit 1
;;
esac
50 changes: 50 additions & 0 deletions .github/workflows/release-cli.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Release QuickMark CLI

on:
push:
tags:
- 'quickmark-cli@*'

jobs:
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-

- name: Publish quickmark-cli to crates.io
run: cargo publish -p quickmark-cli --token ${{ secrets.CRATES_IO_TOKEN }}

- name: Generate changelog
uses: orhun/git-cliff-action@v4
with:
config: cliff.toml
args: --include-path "crates/quickmark-cli/**" --tag-pattern "quickmark-cli@*"
env:
OUTPUT: CHANGELOG.md

- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
body_path: CHANGELOG.md
draft: false
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50 changes: 50 additions & 0 deletions .github/workflows/release-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Release QuickMark Core

on:
push:
tags:
- 'quickmark-core@*'

jobs:
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-

- name: Publish quickmark-core to crates.io
run: cargo publish -p quickmark-core --token ${{ secrets.CRATES_IO_TOKEN }}

- name: Generate changelog
uses: orhun/git-cliff-action@v4
with:
config: cliff.toml
args: --include-path "crates/quickmark-core/**" --tag-pattern "quickmark-core@*"
env:
OUTPUT: CHANGELOG.md

- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
body_path: CHANGELOG.md
draft: false
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading
Loading