Releases: gauthierdmn/nominal-code
Release list
0.30.0 - Deprecate Workflow to Update Model Prices
Remove Workflow to update model prices JSON file automatically as this is not a robust enough solution.
0.29.0 — GitLab CI support and full CI configurability
What's new
- GitLab CI template at
ci/templates/gitlab-ci.yml(include viaremote:). - Feature parity across action and template — explorer
provider/model/max_turns, all prompt overrides (inline +_file),language_guidelines_dir, and behavior toggles (inline_suggestions,ignore_existing_comments,dry_run). - Full pipeline cost in CI output — new
aggregate_cost_summarysums reviewer + sub-agent usage. AGENT_MAX_TURNS/AGENT_EXPLORER_MAX_TURNS— per-mode turn budgets. CLI/webhook default to unlimited; CI defaults to8/32.
Breaking changes
coding_guidelinesis now inline content; usecoding_guidelines_filefor the path. Rename existingcoding_guidelines: path/to.md→coding_guidelines_file: path/to.md.INPUT_MODEL,INPUT_MAX_TURNS,INPUT_CODING_GUIDELINESremoved. UseAGENT_MODEL,AGENT_MAX_TURNS,CODING_GUIDELINES_FILE.- Empty env vars now uniformly mean "no override" across all types. Use
INLINE_SUGGESTIONS=false(not"") to force off.
Fixes
- GitHub Action now actually supports the Google provider (
google_api_keyinput +GOOGLE_API_KEYforwarding were missing).
0.28.0 — Structured agent and review errors
Replace the flat is_error / error_type / error_message fields on AgentResult and ReviewResult with a single optional InvocationError value object, so failure classification and message can never drift out of sync.
Rename exhausted_without_review → max_turns_reached so the signal is honest about what actually happened.
0.27.0 - Fetch PR State
Add interface to fetch PR state: open, closed, merged, unknown
0.26.0 — Filter files from review with ignore patterns
Adds a per-org config option to drop file paths matching glob patterns from the diff before they reach the reviewer agent.
What's new
ignore_patterns— new field onReviewerSettings(env:REVIEWER_IGNORE_PATTERNS, YAML:reviewer.ignore_patterns). Comma-separated list of fnmatch shell-glob patterns; matching files are excluded fromReviewContext.changed_filesbefore the reviewer agent runs. Defaults to[](no filtering).*matches across path separators, sovendor/**matches recursively (note: this is fnmatch semantics, not gitignore —*.lockmatchesCargo.lockbut notpnpm-lock.yaml).filter_changed_files— new helper innominal_code/review/diff.pyreturning(kept, removed_paths). Sits next tofilter_findingsand is applied at bothReviewContextconstruction sites in_prepare_review_context.
0.25.0 - Codebase Scope Review
Add ReviewScope to control what the reviewer receives and how findings are validated.
0.24.0 — Skip existing PR comments on demand
Adds a config flag to keep prior PR comments out of the reviewer prompt.
What's new
ignore_existing_comments— new top-level config option (env:IGNORE_EXISTING_COMMENTS, YAML:ignore_existing_comments). Whentrue,_prepare_review_contextskipsplatform.fetch_pr_commentsand builds the prompt without the "Existing discussions" section. Defaults tofalse.
0.23.0 - Fail reviews on empty diff
run_review now raises when platform.fetch_pr_diff returns an empty list — covering both truly empty PRs and silent fetch failures (GitHub/GitLab's fetch_pr_diff swallows HTTPError and returns []).
What's new
- Empty-diff guard —
run_reviewchecksreview_context.changed_filesimmediately after the context is built and raisesValueErrorwith the platform name and PR ref if the list is empty. - Test fixture default fixed —
_make_platform()in the review tests previously returned[]fromfetch_pr_diff, which only "worked" under the old silent-empty behavior. Updated to return one file by default.
0.22.0 — Separate inline and file-based prompt overrides
Replaces the dual-mode prompt override env vars (file path OR inline, detected via Path(value).is_file()) with two explicit siblings per prompt.
What's new
- Split env vars —
REVIEWER_SYSTEM_PROMPT,EXPLORER_SYSTEM_PROMPT, andCODING_GUIDELINESare inline-only. File-based overrides go through the new*_FILEsiblings. Same split for the YAML fields. - Clear precedence —
_FILEwins with a warning if both are set. Missing_FILEpaths raiseValueErrorinstead of silently falling back.
0.21.0 — Explicit account ID for platform auth
This release lets callers pass an explicit account_id to Platform.authenticate() instead of always deriving it from the raw webhook body
What's new
- account_id kwarg on Platform.authenticate() — new optional account_id: int | None parameter on the Platform protocol. When provided, it takes precedence over any context extracted from webhook_body.
- GitHub platform — if account_id is set, the installation ContextVar is populated from it directly; otherwise behavior is unchanged (extract from webhook body, fall back to configured default).
- GitLab platform — accepts the kwarg for protocol compatibility but does not use it (GitLab's PAT auth has no per-account context).