From 1f1dfb761ec520c3f1b921c55aa322f3e0139f5d Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Mon, 15 Sep 2025 18:02:57 +0200 Subject: [PATCH] chore: update CHANGELOG for v0.3.0 release Change-Id: Ice2f0c9362ea35b777499fd1a1d2d255a185f19b Signed-off-by: Thomas Kosiewski --- .github/workflows/update-changelog.yml | 193 ------------------------- CHANGELOG.md | 72 +++++++++ 2 files changed, 72 insertions(+), 193 deletions(-) delete mode 100644 .github/workflows/update-changelog.yml diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml deleted file mode 100644 index b4b44155..00000000 --- a/.github/workflows/update-changelog.yml +++ /dev/null @@ -1,193 +0,0 @@ -name: Update Changelog - -on: - push: - branches: [main] - -permissions: - contents: write - pull-requests: write - -jobs: - update-changelog: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - with: - fetch-depth: 2 # We need at least 2 commits to get the last one - persist-credentials: true - - - name: Get commit message - id: get-commit-msg - shell: bash - # zizmor-disable-next-line template-injection - run: | - # Get only the first line of commit message (subject line) - COMMIT_MSG=$(git log -1 --pretty=%s) - { - echo "commit_msg=${COMMIT_MSG}" - echo "commit_type=$(echo "${COMMIT_MSG}" | grep -o '^feat\|^fix\|^docs\|^style\|^refactor\|^perf\|^test\|^build\|^ci\|^chore' || echo 'other')" - echo "commit_scope=$(echo "${COMMIT_MSG}" | grep -o '([^)]*)')" - echo "commit_desc=$(echo "${COMMIT_MSG}" | sed -E 's/^(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\([^)]*\))?:\s*//')" - } >> "$GITHUB_OUTPUT" - - - name: Update Changelog - id: update-changelog - shell: bash - # zizmor-disable-next-line template-injection - env: - COMMIT_TYPE_ENV: ${{ steps.get-commit-msg.outputs.commit_type }} - COMMIT_SCOPE_ENV: ${{ steps.get-commit-msg.outputs.commit_scope }} - COMMIT_DESC_ENV: ${{ steps.get-commit-msg.outputs.commit_desc }} - run: | - # Assign environment variables directly to shell variables - COMMIT_TYPE="$COMMIT_TYPE_ENV" - COMMIT_SCOPE="$COMMIT_SCOPE_ENV" - COMMIT_DESC="$COMMIT_DESC_ENV" - - # Clean up scope format for display - SCOPE="" - if [ -n "$COMMIT_SCOPE" ]; then - SCOPE=$(echo "$COMMIT_SCOPE" | sed -E 's/^\(([^)]*)\)$/\1/') - SCOPE=" ($SCOPE)" - fi - - # Format changelog entry based on commit type - ENTRY="- $COMMIT_DESC$SCOPE" - - # Determine which section to add the entry to - SECTION="" - case "$COMMIT_TYPE" in - feat) - SECTION="Added" - ;; - fix) - SECTION="Fixed" - ;; - docs) - SECTION="Documentation" - ;; - style|refactor) - SECTION="Changed" - ;; - perf) - SECTION="Performance" - ;; - test|build|ci|chore) - # Skip these commit types for changelog - echo "Skipping changelog update for commit type: $COMMIT_TYPE" - exit 0 - ;; - *) - # For other commit types, put in Changed section - SECTION="Changed" - ;; - esac - - # Prepare a new branch - BRANCH_NAME="changelog/update-$COMMIT_TYPE-$(date +%Y%m%d%H%M%S)" - git checkout -b "$BRANCH_NAME" - - # Check if the section exists, if not, create it - if ! grep -q "### $SECTION" CHANGELOG.md; then - # Add the section after "## [Unreleased]" line - sed -i "/## \[Unreleased\]/a \\\n### $SECTION\n" CHANGELOG.md - fi - - # Add entry to the section - # Ensure ENTRY is quoted to handle potential special characters if it were used in a more complex sed command, - # but for 'a' (append), it's generally safer. - sed -i "/### $SECTION/a $ENTRY" CHANGELOG.md - - # Check if any changes were made - if git diff --quiet CHANGELOG.md; then - echo "No changes made to CHANGELOG.md" - # No temp files to clean up here for commit details if exiting early - exit 0 - fi - - # Write outputs directly to GITHUB_OUTPUT using a block redirect - { - echo "changelog_updated=true" - echo "branch_name=$BRANCH_NAME" - echo "commit_type=$COMMIT_TYPE" - echo "commit_desc=$COMMIT_DESC" - echo "section=$SECTION" - } >> "$GITHUB_OUTPUT" - - # No temp files like commit_type.txt, etc. were created in this block anymore - - - name: Set up git identity for Claude - if: steps.update-changelog.outputs.changelog_updated == 'true' - shell: bash - # zizmor-disable-next-line template-injection - run: | - git config --local user.email "noreply@anthropic.com" - git config --local user.name "Claude" - - - name: Commit changes - if: steps.update-changelog.outputs.changelog_updated == 'true' - shell: bash - # zizmor-disable-next-line template-injection - env: - COMMIT_TYPE_ENV: ${{ steps.get-commit-msg.outputs.commit_type }} - COMMIT_SCOPE_ENV: ${{ steps.get-commit-msg.outputs.commit_scope }} - BRANCH_NAME_ENV: ${{ steps.update-changelog.outputs.branch_name }} - run: | - # Assign environment variables directly to shell variables - COMMIT_TYPE="$COMMIT_TYPE_ENV" - COMMIT_SCOPE="$COMMIT_SCOPE_ENV" - BRANCH_NAME="$BRANCH_NAME_ENV" - - git add CHANGELOG.md - git commit -m "docs(changelog): update for ${COMMIT_TYPE}${COMMIT_SCOPE}" - git push --set-upstream origin "$BRANCH_NAME" - - # No temp files to clean up here - - - name: Create Pull Request - if: steps.update-changelog.outputs.changelog_updated == 'true' - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const commitType = process.env.COMMIT_TYPE; - const commitDesc = process.env.COMMIT_DESC; - const section = process.env.SECTION; - const branchName = process.env.BRANCH_NAME; - - try { - const pr = await github.rest.pulls.create({ - owner: context.repo.owner, - repo: context.repo.repo, - title: `docs(changelog): Update ${section} section for ${commitType} changes`, - head: branchName, - base: 'main', - body: `This PR was automatically generated to update the CHANGELOG.md file. - - ## Changes - - Added to the **${section}** section: - \`\`\` - - ${commitDesc} - \`\`\` - - This change reflects the latest commit to the main branch. - - --- - - πŸ€– Generated with [Claude Code](https://claude.ai/code)` - }); - - console.log(`Pull Request created: ${pr.data.html_url}`); - - } catch (error) { - console.error('Error creating pull request:', error); - core.setFailed('Failed to create pull request'); - } - env: - COMMIT_TYPE: ${{ steps.update-changelog.outputs.commit_type }} - COMMIT_DESC: ${{ steps.update-changelog.outputs.commit_desc }} - SECTION: ${{ steps.update-changelog.outputs.section }} - BRANCH_NAME: ${{ steps.update-changelog.outputs.branch_name }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 84f4d3aa..ce6ca5b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,77 @@ # Changelog +## [0.3.0] - 2025-09-15 + +### Features + +- External terminal provider to run Claude in a separate terminal ([#102](https://github.com/coder/claudecode.nvim/pull/102)) +- Terminal provider APIs: implement `ensure_visible` for reliability ([#103](https://github.com/coder/claudecode.nvim/pull/103)) +- Working directory control for Claude terminal ([#117](https://github.com/coder/claudecode.nvim/pull/117)) +- Support function values for `external_terminal_cmd` for dynamic commands ([#119](https://github.com/coder/claudecode.nvim/pull/119)) +- Add `"none"` terminal provider option for external CLI management ([#130](https://github.com/coder/claudecode.nvim/pull/130)) +- Shift+Enter keybinding for newline in terminal input ([#116](https://github.com/coder/claudecode.nvim/pull/116)) +- `focus_after_send` option to control focus after sending to Claude ([#118](https://github.com/coder/claudecode.nvim/pull/118)) +- Snacks: `snacks_win_opts` to override `Snacks.terminal.open()` options ([#65](https://github.com/coder/claudecode.nvim/pull/65)) +- Terminal/external quality: CWD support, stricter placeholder parsing, and `jobstart` CWD (commit e21a837) + +- Diff UX redesign with horizontal layout and new tab options ([#111](https://github.com/coder/claudecode.nvim/pull/111)) +- Prevent diff on dirty buffers ([#104](https://github.com/coder/claudecode.nvim/pull/104)) +- `keep_terminal_focus` option for diff views ([#95](https://github.com/coder/claudecode.nvim/pull/95)) +- Control behavior when rejecting β€œnew file” diffs ([#114](https://github.com/coder/claudecode.nvim/pull/114)) + +- Add Claude Haiku model + updated type annotations ([#110](https://github.com/coder/claudecode.nvim/pull/110)) +- `CLAUDE_CONFIG_DIR` environment variable support ([#58](https://github.com/coder/claudecode.nvim/pull/58)) +- `PartialClaudeCodeConfig` type for safer partial configs ([#115](https://github.com/coder/claudecode.nvim/pull/115)) +- Generalize format hook; add floating window docs (commit 7e894e9) +- Add env configuration option; fix `vim.notify` scheduling ([#21](https://github.com/coder/claudecode.nvim/pull/21)) + +- WebSocket authentication (UUID tokens) for the server ([#56](https://github.com/coder/claudecode.nvim/pull/56)) +- MCP tools compliance aligned with VS Code specs ([#57](https://github.com/coder/claudecode.nvim/pull/57)) + +- Mini.files integration and follow-up touch-ups ([#89](https://github.com/coder/claudecode.nvim/pull/89), [#98](https://github.com/coder/claudecode.nvim/pull/98)) + +### Bug Fixes + +- Wrap ERROR/WARN logging in `vim.schedule` to avoid fast-event context errors ([#54](https://github.com/coder/claudecode.nvim/pull/54)) +- Native terminal: do not wipe Claude buffer on window close ([#60](https://github.com/coder/claudecode.nvim/pull/60)) +- Native terminal: respect `auto_close` behavior ([#63](https://github.com/coder/claudecode.nvim/pull/63)) +- Snacks integration: fix invalid window with `:ClaudeCodeFocus` ([#64](https://github.com/coder/claudecode.nvim/pull/64)) +- Debounce update on selection for stability ([#92](https://github.com/coder/claudecode.nvim/pull/92)) + +### Documentation + +- Update PROTOCOL.md with complete VS Code tool specs; streamline README ([#55](https://github.com/coder/claudecode.nvim/pull/55)) +- Convert configuration examples to collapsible sections; add community extensions ([#93](https://github.com/coder/claudecode.nvim/pull/93)) +- Local and native binary installation guide ([#94](https://github.com/coder/claudecode.nvim/pull/94)) +- Auto-save plugin note and fix ([#106](https://github.com/coder/claudecode.nvim/pull/106)) +- Add AGENTS.md and improve config validation notes (commit 3e2601f) + +### Refactors & Development + +- Centralize type definitions in dedicated `types.lua` module ([#108](https://github.com/coder/claudecode.nvim/pull/108)) +- Devcontainer with Nix support; follow-up simplification ([#112](https://github.com/coder/claudecode.nvim/pull/112), [#113](https://github.com/coder/claudecode.nvim/pull/113)) +- Add Neovim test fixture configs and helper scripts (commit 35bb60f) +- Update Nix dependencies and documentation formatting (commit a01b9dc) +- Debounce/Claude hooks refactor (commit e08921f) + +### New Contributors + +- @alvarosevilla95 β€” first contribution in [#60](https://github.com/coder/claudecode.nvim/pull/60) +- @qw457812 β€” first contribution in [#64](https://github.com/coder/claudecode.nvim/pull/64) +- @jdurand β€” first contribution in [#89](https://github.com/coder/claudecode.nvim/pull/89) +- @marcinjahn β€” first contribution in [#102](https://github.com/coder/claudecode.nvim/pull/102) +- @proofer β€” first contribution in [#98](https://github.com/coder/claudecode.nvim/pull/98) +- @ehaynes99 β€” first contribution in [#106](https://github.com/coder/claudecode.nvim/pull/106) +- @rpbaptist β€” first contribution in [#92](https://github.com/coder/claudecode.nvim/pull/92) +- @nerdo β€” first contribution in [#78](https://github.com/coder/claudecode.nvim/pull/78) +- @totalolage β€” first contribution in [#21](https://github.com/coder/claudecode.nvim/pull/21) +- @TheLazyLemur β€” first contribution in [#18](https://github.com/coder/claudecode.nvim/pull/18) +- @nabekou29 β€” first contribution in [#58](https://github.com/coder/claudecode.nvim/pull/58) + +### Full Changelog + +- + ## [0.2.0] - 2025-06-18 ### Features