Development and release process
Local workflow
perl Makefile.PL
make
make test
prove -Ilib -v t
node --check lib/Perl/CodeMap/assets/app.js
node t/browser-smoke.js
perl bin/perl-codemap --root examples/sample --parser lite \
--output example.html --json example.json
Node.js is only needed for frontend smoke checks. PPI enables the optional
PPI integration tests; otherwise those tests are skipped and lite tests run.
Run the Chromium end-to-end check after installing Playwright for Python:
python -m pip install playwright
python -m playwright install chromium
python script/browser-smoke.py
This test generates a report from the synthetic fixture only and verifies actual graph interaction, search, source highlighting and line navigation.
Install smoke test
perl Makefile.PL
make
PERL5LIB=blib/lib perl blib/script/perl-codemap \
--root examples/sample --parser lite --output example.html
The assets reside under lib/Perl/CodeMap/assets and are copied by
Makefile.PL to the Perl library path, so installed CLI scripts can find them.
Review requirements
Changes to the parser should add a synthetic Perl fixture and a regression
test. Changes to the visualizer should preserve offline operation, escaping of
JSON, no dynamic remote dependencies, and bounded rendering for large trees.
Do not include real user repository exports in tests or Git commits. Verify
git status --short and consider git grep for internal domains or paths
before public publication.
Versioning and releases
We use semantic versions. Update $Perl::CodeMap::VERSION, CHANGELOG.md,
and README/CLI docs when shipping user-visible changes. Validate on a clean
checkout before running the Release GitHub Actions workflow from main:
git status --short
prove -Ilib t
node t/browser-smoke.js
perl Makefile.PL
make test
make distcheck
make disttest
The release workflow installs PPI, builds the CPAN-compatible tarball, verifies the generated author metadata, tags the tested commit, and uploads a tarball plus SHA-256 checksum to GitHub Releases. See RELEASING.md for the workflow, immutability, and CPAN steps. Generated reports from real source trees must not be part of public releases.
Maintainer
Scott Muller scott@21h.io.
Licensing and provenance
The implementation is MIT licensed. The original Go CodeMap repository was
verified as MIT licensed, and it is credited in NOTICE.md. Bundled PrismJS is
also MIT licensed, with its license shipped alongside the JavaScript assets.