NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #1712 by repository stars
Last release 5 days ago
03 Oct 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
132 releases · first in 2025
One column per month.
fix(analyzer): make circular dependency detection match Python's import-time behavior by @DaisukeYoda in #830
Full Changelog: v1.32.2...v1.32.3
fix(analyzer): penalize asymmetric call evidence ( #792 ) by @DaisukeYoda in #806
Full Changelog: v1.32.1...v1.32.2
examples, docs, demo and samples directories by default (#816)min_lines in SLOC and lower the default to 8 (#813)chore: reduce README demo screenshot size by @DaisukeYoda in #781
Full Changelog: v1.32.0...v1.32.1
community_score so it measures structure, not sparsity (#787).pyscn.toml from relocating the project root (#783)complete_linkage, and unknown config keys are rejected (#797)fix(deadcode): don't report the bare yield that keeps a function a generator by @DaisukeYoda in #773
Full Changelog: v1.31.3...v1.32.0
.gitignore into the output directory (#778)min_lines/min_nodes when skip_docstrings is set (#777)yield that keeps a function a generator as dead code (#773)fix(parser): accept unparenthesized except lists with three or more types (PEP 758) by @DaisukeYoda in #769
Full Changelog: v1.31.2...v1.31.3
except lists with three or more types (PEP 758) (#769)ci: publish Linux arm64 wheels by @DaisukeYoda in #758
Full Changelog: v1.31.1...v1.31.2
--config file's directory as the project root (#765)manylinux_2_34 so pip refuses them on unsupported glibc (#762)coupling_count or the risk level; they remain visible in type_hint_dependencies. The from __future__ import annotations special case is removed (#761)pyscn-pre-commit mirror instead of a repo: local hook (#759)Nothing published for this version
feat: add schema_version and document the v1.30.0 key rename by @7487 in #750
Full Changelog: v1.31.0...v1.31.1
analyze writes every requested report format from a single run instead of one per invocation (#752)schema_version field on analyze JSON/YAML output, and migration docs for the v1.30.0 key rename (#750)from pkg import mod namespace members in CBO the same way as import pkg as mod (#751)fix(analyzer): cap semantic Type-4 similarity below the Type-1 threshold by @7487 in #735
Full Changelog: v1.30.2...v1.31.0
-o, --output <path> flag for analyze; - streams the report to stdout and skips .pyscn/reports/ (#748)complexity.functions and dead_code collections as [] instead of null (#747)chore(deps): bump the go-dependencies group with 3 updates by @dependabot [bot] in #725
Full Changelog: v1.30.1...v1.30.2
project_root config key, and report internal import resolution counts in all reports (#740)LoadDefaultConfig free of config discovery (#745)Nothing published for this version
Clean up complexity reporting after PR #697 by @DaisukeYoda in #723
Full Changelog: v1.30.0...v1.30.1
elif arms as extra nesting levels (#729)AnalyzedFunctions (#723)Nothing published for this version
docs: replace README demo video with report screenshot by @DaisukeYoda in #716
Full Changelog: v1.29.1...v1.30.0
deps_max_depth now matches the top-ranked chain (#711)analyze JSON/YAML object key to snake_case (#718). The complexity, cbo, lcom, and system objects emitted Go PascalCase field names, and the config objects of cbo, lcom, and community_analysis emitted lowerCamelCase. Consumers reading those keys must be updated; see the output schemas.
Functions -> functions, Metrics -> metrics, Summary -> summary, Classes -> classes, Name -> name, FilePath -> file_path, StartLine -> start_line, EndLine -> end_line, RiskLevel -> risk_level, Complexity -> complexity, CognitiveComplexity -> cognitive_complexity, NestingDepth -> nesting_depth, SLOC -> sloc, CouplingCount -> coupling_count, DependentClasses -> dependent_classes, AverageCBO -> average_cbo, LCOM4 -> lcom4, AverageLCOM -> average_lcom, ProjectRoot -> project_root, DependencyAnalysis -> dependency_analysis, CircularDependencies -> circular_dependencies, ArchitectureAnalysis -> architecture_analysis, SRPViolations -> srp_violations.complexity.request and dead_code.request objects follow the same rule (Paths -> paths, MinComplexity -> min_complexity, MinSeverity -> min_severity, ...). The config objects change from lowerCamelCase: minCBO -> min_cbo, maxLCOM -> max_lcom, lowThreshold -> low_threshold, sortBy -> sort_by, minCommunitySize -> min_community_size, includeStdLib -> include_std_lib, ...summary, the dead_code findings, clone, community_analysis (other than config), module_quality, and suggestions were already snake_case.check --allow-parse-errors to syntax and parser failures (#704). Missing, unreadable, and permission-denied files still fail the gate.main*.py now also matches pkg/main_utils.py; add a directory segment to constrain the rule.__init__, __new__, and __post_init__ initialize every attribute of a class, so keeping them in the graph joined all the responsibility clusters they set up. The attributes they introduce still count toward instance_variables.Nothing published for this version
feat(complexity): add per-function SLOC metric and long-function warnings ( #551 ) by @DaisukeYoda in #660
Full Changelog: v1.29.0...v1.29.1
check, not just the reported ones (#712)check gate on files that cannot be parsed and gate clone detection (#703)--min-complexity from shrinking the analyzed function set and health score (#697)fix(domain): preserve architecture suggestion identity by @yhay81 in #652
Full Changelog: v1.28.0...v1.29.0
file_path/start_line (#648)Nothing published for this version
docs: point cross-language link to polyscan instead of archived jscan by @DaisukeYoda in #681
Full Changelog: v1.27.0...v1.28.0
migrate: adopt core/clone from polyscan (grouping, dedup, similarity gates, classifier) by @DaisukeYoda in #664
Full Changelog: v1.26.4...v1.27.0
Nothing published for this version
fix(analyzer): exclude same-file top-level peer classes from CBO ( #637 ) by @DaisukeYoda in #639
Full Changelog: v1.26.3...v1.26.4
recursive override in MCP analyze tool (#656)check command on malformed discovered .pyscn.toml (#654)fix: ignore module constants in CBO dependencies by @sanmaxdev in #638
Full Changelog: v1.26.2...v1.26.3
functions_total) in complexity summary (#635)re.DOTALL) in CBO dependencies (#638)feat(analyzer): exclude abstract methods from LCOM4 grouping ( #559 ) by @DaisukeYoda in #625
Full Changelog: v1.26.1...v1.26.2
docs(readme): refresh Features section with five analysis angles by @DaisukeYoda in #621
Full Changelog: v1.26.0...v1.26.1
test_*.py, *_test.py) not matching files in nested directories (#532)fix(cbo): don't count a class defined within a class as coupling by @StressTestor in #562
Full Changelog: v1.25.0...v1.26.0
cli-analysis Agent Skill for CI setup and report generation without MCPhealth-check, refactoring, and architecture-review skills for better trigger accuracyskills/<name>/SKILL.md so Claude Code discovers it; the previous flat skills/SKILL.md layout was never loadedclaude mcp add, not claude_desktop_config.json)feat(analyzer): build CommunityGraph from DependencyGraph (issue #579 ) by @DaisukeYoda in #587
Full Changelog: v1.24.3...v1.25.0
--select communities and [communities] config, opt-in (#583)pyscn analyze; opt out with --skip-communities or [communities] enabled = false (#605)Nothing published for this version
Integrate clone statistics into detector result types
Use cognitive complexity metrics for complexity risk assessment
Populate fragment hash in clone output
Nothing published for this version
Speed up clone detection by reusing APTED DP matrices and parallelizing pair comparison
Nothing published for this version
Stop counting imported function calls as class dependencies in CBO analysis
Soften CBO coupling scoring calibration
Architecture style presets (layered, hexagonal, clean, mvc) for dependency rule configuration (#520, #521, #523, #526)
layered, hexagonal, clean, mvc) for dependency rule configuration (#520, #521, #523, #526)Nothing published for this version
Clear dependency CVEs and suppress math/rand false positive in security report
Nothing published for this version
Register plugin MCP server by moving the manifest into a nested .claude-plugin/ directory
.claude-plugin/ directory (#509)Nothing published for this version
Collect module imports from else/except/finally branches with branch-aware TYPE_CHECKING filtering
id and type in clone group output (#503)Nothing published for this version
Propagate nested function CFGs and reset builder state between builds
Fix analyzer import and report contracts (dependency traversal, module imports, comprehension fields)
Exclude Django migration files from analysis defaults
Nothing published for this version
Preserve clone group type classification
skip_docstrings config in clone detection (#483)Resolve CBO dependency identity and tighten import contracts to fix coupling miscounts
WeightedViolations so architecture ComplianceScore is reproducible (#476)Populate SystemAnalysisResponse.Summary so analyze reports aggregate system metrics correctly
SystemAnalysisResponse.Summary so analyze reports aggregate system metrics correctly (#472)Preserve complexity metric fallbacks and use AST counts for consistent reporting
app/di_antipattern_usecase.go (#461)Gate Type-4 clone classification on minimum CFG cyclomatic complexity to cut linear-shape false positives
Speed up the full analyze pipeline by reusing parsed files and the system dependency graph, scoring APTED pairs once, and using integer LSH candidates
analyze pipeline by reusing parsed files and the system dependency graph, scoring APTED pairs once, and using integer LSH candidates (#438)ComplianceScore denominator (#448, #426)analyze command (#437, #249)Honor semantic Type-4 clone classification with unified parser traversal and DFA field contracts
Fix DFA extraction for with statement alias targets
with statement alias targets (#424)with-statement aliases in DFA via NodeWithItem (#430)Nothing published for this version
Report module-scope code as instead of __main__ in complexity output
<module> instead of __main__ in complexity output (#417)with context expressions in LCOM4 instance variable access detection (#419)Tighten Type-2 clone classification to reduce class body false positives
self.<ivar> accesses (#415)Main sequence architecture metrics with abstractness, instability, and zone classification
Your coding agent can read these notes before it upgrades. Set up the MCP server →