Ahtapot follows Semantic Versioning 2.0.0 (SemVer) for predictable and meaningful version numbers.
MAJOR.MINOR.PATCH
Example: 2.1.3
- 2 = Major version
- 1 = Minor version
- 3 = Patch version
Increment when making backward-incompatible changes that break existing functionality.
Examples:
- Removing support for a threat intelligence provider (e.g., removing VirusTotal)
- Changing API response structure in breaking ways
- Removing or renaming public APIs
- Major architectural changes requiring user migration
- Changing storage format incompatibly
Impact: Users may need to reconfigure or adapt their workflows
Migration: Always provide migration guide in release notes
Increment when adding new features in a backward-compatible manner.
Examples:
- Adding a new threat intelligence provider (e.g., AbuseIPDB, MalwareBazaar)
- Adding new IOC detection types (e.g., cryptocurrency addresses)
- Implementing new UI components or pages
- Adding new API endpoints or optional parameters
- Performance improvements without breaking changes
- New language support (i18n)
Impact: Users get new functionality without breaking existing features
Note: Reset PATCH version to 0 when incrementing MINOR
Increment for bug fixes and minor improvements that don't add features.
Examples:
- Fixing IOC detection regex bugs
- Correcting API rate limit handling
- UI styling fixes
- Typo corrections in UI text
- Security patches
- Performance optimizations
- Documentation updates
Impact: Users get fixes without workflow changes
Use for testing and development:
2.1.0-alpha.1 # Early testing, unstable
2.1.0-beta.1 # Feature complete, testing phase
2.1.0-rc.1 # Release candidate, final testing
Format: X.Y.Z-<label>.<number>
Use for local development:
2.1.0-dev
2.1.0-dev.20251019
Current: 2.0.0
Planning: 2.1.0-dev
Feature branch: feature/malwarebazaar-integration
Development version: 2.1.0-dev
2.1.0-alpha.1 → Internal testing
2.1.0-beta.1 → Public beta testing
2.1.0-rc.1 → Release candidate
2.1.0 → Official release
2.1.1 → Bug fixes
2.1.2 → More fixes
Use this matrix to determine version increment:
| Change Type | Breaking Change? | New Feature? | Bug Fix? | Version |
|---|---|---|---|---|
| Remove provider | ✅ Yes | ❌ No | ❌ No | MAJOR |
| Change API structure | ✅ Yes | ❌ No | ❌ No | MAJOR |
| Add new provider | ❌ No | ✅ Yes | ❌ No | MINOR |
| Add IOC type | ❌ No | ✅ Yes | ❌ No | MINOR |
| Fix detection bug | ❌ No | ❌ No | ✅ Yes | PATCH |
| Fix UI styling | ❌ No | ❌ No | ✅ Yes | PATCH |
| Security patch | ❌ No | ❌ No | ✅ Yes | PATCH |
| Documentation update | ❌ No | ❌ No | ✅ Yes | PATCH |
Every version must have changelog entries in BOTH CHANGELOG.md and README.md following Keep a Changelog format.
When releasing a new version, you MUST update these files in order:
- Location:
/CHANGELOG.md(project root) - Format: Keep a Changelog standard
- Content: ALL versions with complete details
- Order: Newest version at the TOP (reverse chronological)
- Purpose: Comprehensive historical record
Update Process:
- Add new version entry at the TOP of the changelog (after
## [Unreleased]) - Use format:
## [X.Y.Z] - YYYY-MM-DD - Include all changes in appropriate categories
- Keep all previous versions below
- Location:
/README.md(project root) - Section:
## 🆕 What's New in vX.Y.Z - Content: ONLY the latest version (concise bullet points)
- Link: Must include link to CHANGELOG.md for full history
- Purpose: Quick overview for new users
Update Process:
- Replace entire "What's New" section with latest version
- Use concise bullet points (5-7 items max)
- Focus on user-facing changes
- Add link:
📜 **[View Complete Changelog](CHANGELOG.md)**
Use these categories in order (include only if applicable):
## [2.1.0] - 2025-10-19
### Added
- New features and capabilities
- New integrations or providers
- New UI components
### Changed
- Changes to existing functionality
- Improvements to existing features
- Updated dependencies
### Deprecated
- Features marked for removal (deprecate in MINOR, remove in MAJOR)
### Removed
- Features removed (requires MAJOR version bump)
### Fixed
- Bug fixes
- UI/UX corrections
- Performance fixes
### Security
- Security vulnerability patches
- Security improvements# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Features in development but not yet released
## [2.3.1] - 2025-10-25 ← NEWEST AT TOP
### Added
- ...
## [2.3.0] - 2025-10-21 ← OLDER VERSIONS BELOW
### Added
- ...- Be Specific: "Added GreyNoise integration" not "Added new feature"
- User-Focused: Describe impact, not implementation details
- Grouping: Group related changes under same category
- Links: Include links to issues, PRs, or documentation when relevant
- Breaking Changes: Clearly mark with
⚠️ or BREAKING prefix
## [2.3.0] - 2025-10-21
### Added
- **GreyNoise Integration** - Internet-wide noise detection and threat classification
- Rate limit protection system with user confirmation prompts
- Smart provider confirmations for GreyNoise (50 searches/week) and Shodan (100 results/month)
### Changed
- Complete i18n localization for new features in English and Turkish
- Enhanced provider management with quota protection
### Fixed
- API rate limit handling for time-based quotas
- Provider card rendering in dark modeWhen updating README for new version:
## 🆕 What's New in vX.Y.Z
### Latest Release (Month Day, Year)
- 🎯 **Feature Name** - Brief description (5-10 words)
- 🔧 **Improvement** - What was improved
- 🐛 **Bug Fix** - What was fixed
### Active Threat Intelligence Providers
- ✅ **Provider1** • **Provider2** • **Provider3** ...
- 🎯 **Key Feature** - Brief description
- ⚠️ **Important Note** - Critical information
📜 **[View Complete Changelog](CHANGELOG.md)** - Full version history and detailed release notesImportant: Remove all previous version details from README - keep ONLY latest version.
- Identify change type: Feature, fix, or breaking change?
- Check current version: Read
package.jsonversion - Plan version increment: Use decision matrix above
- Create feature branch:
feature/descriptive-nameorfix/bug-description
- Update version: Increment version in
package.jsonandsrc/manifest.json - Write changelog: Add entry to changelog section in README or CHANGELOG.md
- Update documentation: Reflect changes in README
- Test thoroughly: Ensure backward compatibility for MINOR/PATCH
Include in PR description:
- Change type: MAJOR/MINOR/PATCH
- Version bump: Old version → New version
- Changelog entry: What changed and why
- Breaking changes: Migration guide if MAJOR
- Testing done: How you verified the changes
feat: Add MalwareBazaar integration (v2.1.0)
fix: Correct IPv6 detection regex (v2.0.1)
breaking: Remove Shodan provider (v3.0.0)
- PATCH versions: Always safe to update, no breaking changes
- MINOR versions: New features, backward compatible, safe to update
- MAJOR versions: May require configuration changes, read migration guide
- Announce deprecation in MINOR version with warnings
- Maintain functionality for at least one MINOR version
- Remove deprecated features only in MAJOR version
Example:
v2.1.0: Deprecate Shodan (add warnings)
v2.2.0: Still functional but deprecated
v3.0.0: Shodan removed (breaking change)
1.0.0 → Initial release (VirusTotal only)
2.0.0 → Major rewrite (OTX integration, tab UI, i18n)
2.1.0 → New providers (AbuseIPDB, MalwareBazaar)
2.1.1 → Bug fixes (detection regex, UI styling)
2.2.0 → New IOC types (Bitcoin, Ethereum)
3.0.0 → Breaking change (remove deprecated providers)
- semantic-release: Automate version bumping based on commit messages
- conventional-commits: Standardize commit message format
- changelog: Auto-generate changelog from commits
Following Conventional Commits:
feat: Add MalwareBazaar integration → MINOR bump
fix: Correct IPv6 detection regex → PATCH bump
fix!: Change API response structure → MAJOR bump (note the !)
docs: Update README with new examples → PATCH bump
CRITICAL: All version numbers must be synchronized across the following locations:
Every version change MUST update these files:
package.json→versionfieldsrc/manifest.json→versionfielddocs/VERSIONING.md→Current Versionat bottom of file
The extension automatically displays the version from manifest.json in:
- Popup footer: Shows
v{version}fromchrome.runtime.getManifest().version - No manual UI updates needed - version is read dynamically
Before committing version changes:
# Verify all versions match
grep '"version"' package.json src/manifest.json
grep 'Current Version:' docs/VERSIONING.mdAll three outputs should show the same version number.
Before releasing a new version, complete ALL items in order:
- Version incremented in
package.json - Version incremented in
src/manifest.json - Version updated in
docs/VERSIONING.md(Current Version section at bottom) - Verify all three versions match using grep command:
grep '"version"' package.json src/manifest.json && grep 'Current Version:' docs/VERSIONING.md
- CHANGELOG.md - Add new version at TOP (after
## [Unreleased])- Use format:
## [X.Y.Z] - YYYY-MM-DD - Include all changes with proper categories (Added, Changed, Fixed, etc.)
- Keep all previous versions below
- Use format:
- README.md - Replace "What's New" section with latest version ONLY
- Remove all old version details
- Keep only new version (5-7 concise bullet points)
- Include link to CHANGELOG.md
- Update "Current Version" at bottom
- Verify CHANGELOG link works in README
- All tests passing
- Build successful (
npm run build) - Extension tested in Chrome
- Verify version displays correctly in popup footer (dynamic from manifest.json)
- Test all new features introduced in this version
- Verify i18n translations for new features (EN & TR)
- All changes committed with descriptive messages
- Git tag created:
git tag vX.Y.Z - Tag pushed:
git push origin vX.Y.Z - GitHub release created with changelog content
- Chrome Web Store updated (if published)
- Verify GitHub release displays correctly
- Check Chrome Web Store listing (if applicable)
- Confirm CHANGELOG.md renders properly on GitHub
- Test fresh installation from store/release
# 1. Update version numbers
# Edit: package.json, src/manifest.json, docs/VERSIONING.md
# 2. Verify version sync
grep '"version"' package.json src/manifest.json && grep 'Current Version:' docs/VERSIONING.md
# 3. Update documentation
# Edit: CHANGELOG.md (add new version at top)
# Edit: README.md (replace "What's New" section)
# 4. Build and test
npm run build
# Test extension in Chrome
# 5. Commit and tag
git add .
git commit -m "chore: Release v2.3.1
- Updated version to 2.3.1 across all files
- Added CHANGELOG entry for v2.3.1
- Updated README with latest release notes"
git tag v2.3.1
git push origin master
git push origin v2.3.1
# 6. Create GitHub release with CHANGELOG contentIf unsure about version increment:
-
Ask yourself: "Will this break existing users?"
- Yes → MAJOR
- No → Continue
-
Ask yourself: "Am I adding new functionality?"
- Yes → MINOR
- No → PATCH
-
When in doubt: Ask maintainers in the pull request
Last Updated: 2025-12-04 Current Version: 2.8.1