Skip to content

Add release workflow and CHANGELOG for v0.2.0#2

Closed
Copilot wants to merge 2 commits intomainfrom
copilot/configure-release-settings
Closed

Add release workflow and CHANGELOG for v0.2.0#2
Copilot wants to merge 2 commits intomainfrom
copilot/configure-release-settings

Conversation

Copy link
Contributor

Copilot AI commented Feb 25, 2026

  • Create .github/workflows/release.yml — automated release workflow triggered on v*.*.* tags with four jobs:
    • test: runs the test suite across Python 3.10, 3.11, 3.12 before any release artifact is built
    • build: builds sdist + wheel using python -m build (depends on test passing)
    • github-release: creates a GitHub Release with auto-generated notes and attaches the built distribution files
    • publish-pypi: publishes to PyPI using OIDC trusted publishing (no stored secrets needed; requires a pypi GitHub environment to be configured)
  • Create CHANGELOG.md — documents all features in the initial v0.2.0 release

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Co-authored-by: jgravelle <3400540+jgravelle@users.noreply.github.com>
Copilot AI changed the title [WIP] Configure release settings for repository Add release workflow and CHANGELOG for v0.2.0 Feb 25, 2026
Copilot AI requested a review from jgravelle February 25, 2026 15:05
@jgravelle jgravelle closed this Feb 25, 2026
@jgravelle jgravelle deleted the copilot/configure-release-settings branch February 28, 2026 21:32
jgravelle pushed a commit that referenced this pull request Mar 3, 2026
…lity-and-security

Harden IndexStore path handling and repo sanitization; add CLI arg parsing, docs, and tests
jgravelle pushed a commit that referenced this pull request Mar 10, 2026
Feedback #1: Rebase required

  "Large PRs need to be rebased onto current main before merging."

  How addressed: The fork's main was force-reset to match jgravelle/jcodemunch-mcp:main at 971ae14. The
  feat/dbt-sql-support branch (SQL language support) was cherry-picked cleanly onto upstream main as a separate branch.
  This branch (feat-provider-context-encrichment) is also based on 971ae14.

  ---
  Feedback #2: No opt-out path for context providers

  "discover_providers() runs on every index_folder call... no way to disable this."

  How addressed:

  - src/jcodemunch_mcp/tools/index_folder.py — Added context_providers: bool = True parameter to index_folder(). When
  False, or when JCODEMUNCH_CONTEXT_PROVIDERS=0 is set in the environment, provider discovery is skipped entirely — no
  YAML parsing, no doc block scanning, no overhead. Renamed the internal variable from context_providers to
  active_providers to avoid shadowing the new parameter.
  - CONTEXT_PROVIDERS.md — Added a new "Disabling Context Providers" subsection documenting both the env var and
  per-call parameter, including an MCP server config JSON example.
  - README.md — Added JCODEMUNCH_CONTEXT_PROVIDERS row to the environment variables table.
  - USER_GUIDE.md — Added bullet point for the env var in the Claude Desktop setup section.

  ---
  Feedback #3: detect() sets instance state as a side effect

  "If load() is called without detect(), it raises AttributeError."

  How addressed:

  - src/jcodemunch_mcp/parser/context/dbt.py — Initialized self._dbt_yml_path: Optional[Path] = None in __init__().
  Added a guard at the top of load() that logs a warning and returns early if _dbt_yml_path is None.

  ---
  Feedback #4: File context lookup by stem could false-match

  "A file named schema.sql would match a dbt model named schema."

  How addressed:

  - src/jcodemunch_mcp/parser/context/dbt.py — Added _model_path_prefixes list, populated during load() with the
  relative paths of the project's configured model-paths directories. Added _is_in_model_path() method.
  get_file_context() now returns None immediately for files outside model directories, preventing false matches on files
   like scripts/schema.sql or schema.sql at the project root.
  - tests/test_dbt_provider.py — Added test_get_file_context_outside_model_path test verifying that files outside
  models/ don't match even when the stem matches a model name (schema.sql, my_model.sql, scripts/my_model.sql), while
  files inside models/ still match correctly. Updated test_get_file_context_by_stem to reflect the new path-scoped
  behavior.
  - CONTEXT_PROVIDERS.md — Added a "How It Matches Files" subsection to the dbt Provider docs explaining the stem + path
   scoping strategy with examples. Updated the Terraform example's get_file_context comment to recommend path validation
   before stem matching.

  ---
  Feedback #5: bash.exe.stackdump in .gitignore

  "Windows build artifact, not a project file."

  How addressed:

  - .gitignore — Removed the bash.exe.stackdump line.

  ---
  Feedback #6: SQL_SPEC empty dicts

  "Worth adding a pragma or docstring so future contributors don't try to fix it."

  How addressed: Already addressed in the separate feat/dbt-sql-support branch. The SQL_SPEC in languages.py has a
  multi-line comment explaining that the derekstride grammar has no named field accessors and pointing to
  _parse_sql_symbols() in extractor.py where the actual extraction logic lives. No change needed on this branch.

  ---
  Test results

  - 481 passed, 4 skipped, 0 failures (one new test added)
jgravelle pushed a commit that referenced this pull request Mar 10, 2026
Feedback #1: Rebase required

  "Large PRs need to be rebased onto current main before merging."

  How addressed: The fork's main was force-reset to match jgravelle/jcodemunch-mcp:main at 971ae14. The
  feat/dbt-sql-support branch (SQL language support) was cherry-picked cleanly onto upstream main as a separate branch.
  This branch (feat-provider-context-encrichment) is also based on 971ae14.

  ---
  Feedback #2: No opt-out path for context providers

  "discover_providers() runs on every index_folder call... no way to disable this."

  How addressed:

  - src/jcodemunch_mcp/tools/index_folder.py — Added context_providers: bool = True parameter to index_folder(). When
  False, or when JCODEMUNCH_CONTEXT_PROVIDERS=0 is set in the environment, provider discovery is skipped entirely — no
  YAML parsing, no doc block scanning, no overhead. Renamed the internal variable from context_providers to
  active_providers to avoid shadowing the new parameter.
  - CONTEXT_PROVIDERS.md — Added a new "Disabling Context Providers" subsection documenting both the env var and
  per-call parameter, including an MCP server config JSON example.
  - README.md — Added JCODEMUNCH_CONTEXT_PROVIDERS row to the environment variables table.
  - USER_GUIDE.md — Added bullet point for the env var in the Claude Desktop setup section.

  ---
  Feedback #3: detect() sets instance state as a side effect

  "If load() is called without detect(), it raises AttributeError."

  How addressed:

  - src/jcodemunch_mcp/parser/context/dbt.py — Initialized self._dbt_yml_path: Optional[Path] = None in __init__().
  Added a guard at the top of load() that logs a warning and returns early if _dbt_yml_path is None.

  ---
  Feedback #4: File context lookup by stem could false-match

  "A file named schema.sql would match a dbt model named schema."

  How addressed:

  - src/jcodemunch_mcp/parser/context/dbt.py — Added _model_path_prefixes list, populated during load() with the
  relative paths of the project's configured model-paths directories. Added _is_in_model_path() method.
  get_file_context() now returns None immediately for files outside model directories, preventing false matches on files
   like scripts/schema.sql or schema.sql at the project root.
  - tests/test_dbt_provider.py — Added test_get_file_context_outside_model_path test verifying that files outside
  models/ don't match even when the stem matches a model name (schema.sql, my_model.sql, scripts/my_model.sql), while
  files inside models/ still match correctly. Updated test_get_file_context_by_stem to reflect the new path-scoped
  behavior.
  - CONTEXT_PROVIDERS.md — Added a "How It Matches Files" subsection to the dbt Provider docs explaining the stem + path
   scoping strategy with examples. Updated the Terraform example's get_file_context comment to recommend path validation
   before stem matching.

  ---
  Feedback #5: bash.exe.stackdump in .gitignore

  "Windows build artifact, not a project file."

  How addressed:

  - .gitignore — Removed the bash.exe.stackdump line.

  ---
  Feedback #6: SQL_SPEC empty dicts

  "Worth adding a pragma or docstring so future contributors don't try to fix it."

  How addressed: Already addressed in the separate feat/dbt-sql-support branch. The SQL_SPEC in languages.py has a
  multi-line comment explaining that the derekstride grammar has no named field accessors and pointing to
  _parse_sql_symbols() in extractor.py where the actual extraction logic lives. No change needed on this branch.

  ---
  Test results

  - 481 passed, 4 skipped, 0 failures (one new test added)
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.

2 participants