diff --git a/CHANGELOG.md b/CHANGELOG.md index fd9e364..6401d2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +## [v1.1.0] - 2025-09-08 + +### Added + +- Update api documentation to match latest backend implementation (79c1094) +- Enhance national historical data documentation (ae9edbb) +- Implement gitflow workflow automation following pico-api-go pattern (1178589) +- Complete api documentation overhaul with logo-matching design (04a2e51) +- Update api documentation with correct parameters and new endpoints (03eba28) + +### Changed + +- Redesign documentation sections with clean table-based layout (3b9de06) + +### Fixed + +- Workflow syntax and formatting improvements (5a0dca6) +- Remove outdated exclude_latest_case parameter from provinces endpoint (f1828d5) + +### Maintenance + +- Prepare v1.1.0 release (c269896) +- Remove unnecessary image.png file (e7807a8) + +### Style + +- Add trailing newlines to all source files (a970f94) + # Changelog for v1.0.0 Generated on 2025-09-08 @@ -8,94 +36,95 @@ All changes ## ✨ Features - implement complete i18n translations for documentation sections ( -c24cc38) + c24cc38) - redesign Documentation page with sidebar layout ( -7b7f287) + 7b7f287) - implement comprehensive national endpoint documentation ( -94f6aab) + 94f6aab) - add MIT license and API source code reference ( -95ed65b) + 95ed65b) - create reusable Navigation component with mobile support ( -49f042a) + 49f042a) - implement comprehensive responsive design and mobile navigation ( -073591f) + 073591f) - add comprehensive deployment system with health checks and rollback ( -ecafbf5) + ecafbf5) - include version in backmerge PR titles ( -a2f029c) + a2f029c) - add changelog generation script and release automation workflow ( -05d2b27) + 05d2b27) - add htaccess with api proxy and spa routing configuration ( -fe0d0e3) + fe0d0e3) - add partner logos and maintenance page ( -fd23051) + fd23051) - implement vue spa with modern hero, features, and responsive design ( -cee2d15) + cee2d15) - add html entry point with comprehensive seo meta tags ( -1fc22b6) + 1fc22b6) ## 🐛 Bug Fixes - create separate branch for release preparation to avoid conflicts (c197f16f) - handle multiline commit messages in changelog generation for first release ( -5edb93c) + 5edb93c) - update API response examples to match actual response structure ( -3d09518) + 3d09518) - update branding and contact links ( -3f1961d) + 3f1961d) - resolve CSS conflict in DataSources component ( -136a545) + 136a545) - update data source URLs to correct endpoints ( -25ee3b8) + 25ee3b8) - update backmerge PR titles to use conventional commit style ( -99f59c7) + 99f59c7) ## 📝 Documentation - update README with MIT license and API source references ( -17c22a2) + 17c22a2) ## 💎 Style - add trailing newlines to all code files ( -71dcbee) + 71dcbee) ## 📦 Build System - add vite, typescript, and tailwind configuration ( -9876bed) + 9876bed) ## 👷 CI/CD - add github action workflow for automatic backmerge to develop branch ( -8f7f494) + 8f7f494) ## 🔧 Chores - Fix LaTeX rendering and clean up duplicate i18n setup ( -cc77722) + cc77722) - Add LaTeX rendering for mathematical formulas in Rt calculation ( -495256f) + 495256f) - Fix glossary section by removing broken i18n implementation ( -031088b) + 031088b) - Fix i18n implementation in GlossarySection component ( -0aff2ef) + 0aff2ef) - Add Rt formula, references, and Vue i18n internationalization ( -98933e0) + 98933e0) - Add Indonesian COVID-19 terminology to glossary ( -2ea7fde) + 2ea7fde) - Refactor Documentation into subcomponents and add Glossary ( -5eed45c) + 5eed45c) - Fix mobile layout spacing and improve Coming Soon styling ( -0685343) + +685343. + - initial project setup with gitignore and readme ( -2960bc5) + 2960bc5) --- ## 📊 Statistics - Total commits: 33 ---- - +--- diff --git a/scripts/generate_changelog.rb b/scripts/generate_changelog.rb index aa46570..012bb2b 100755 --- a/scripts/generate_changelog.rb +++ b/scripts/generate_changelog.rb @@ -33,7 +33,8 @@ class ChangelogGenerator 'chore' => { category: 'Maintenance', breaking: false }, 'ci' => { category: 'CI/CD', breaking: false }, 'build' => { category: 'Build', breaking: false }, - 'revert' => { category: 'Reverted', breaking: false } + 'revert' => { category: 'Reverted', breaking: false }, + 'merge' => { category: 'Merged Features', breaking: false } }.freeze # Release and hotfix branch patterns @@ -226,20 +227,20 @@ def fetch_commits_since_last_release puts "📋 Fetching commits since #{last_tag || 'beginning'}..." - commit_format = '%H|%s|%b|%an|%ae|%ad' + commit_format = '%H|%s|%an|%ae|%ad' commits_output = `git log #{range} --pretty=format:"#{commit_format}" --date=iso` commits = commits_output.split("\n").map do |line| - parts = line.split('|', 6) - next if parts.length < 6 + parts = line.split('|', 5) + next if parts.length < 5 { hash: parts[0], subject: parts[1], - body: parts[2], - author_name: parts[3], - author_email: parts[4], - date: parts[5] + body: '', + author_name: parts[2], + author_email: parts[3], + date: parts[4] } end.compact @@ -301,6 +302,26 @@ def categorize_commits(commits) # @param subject [String] Commit subject line # @return [Array] [type, scope, description, breaking] def parse_conventional_commit(subject) + # Handle merge commits from pull requests + if subject.start_with?('Merge pull request') + # Extract PR info and try to parse meaningful content + pr_match = subject.match(/Merge pull request #(\d+) from .+\/(.+)/) + if pr_match + branch_name = pr_match[2] + # Try to infer type from branch name (feature/fix/etc) + if branch_name.match(/^(feature|feat)\//) + return ['feat', nil, "Merge #{branch_name}", false] + elsif branch_name.match(/^(fix|bugfix|hotfix)\//) + return ['fix', nil, "Merge #{branch_name}", false] + elsif branch_name.match(/^chore\//) + return ['chore', nil, "Merge #{branch_name}", false] + else + return ['merge', nil, "Merge #{branch_name}", false] + end + end + return ['merge', nil, subject, false] + end + # Match conventional commit format: type(scope): description match = subject.match(/^(\w+)(?:\(([^)]+)\))?(!)?: (.+)$/) @@ -327,9 +348,6 @@ def parse_conventional_commit(subject) # @param commit [Hash] Commit information # @return [Boolean] true if commit should be skipped def should_skip_commit?(type, commit) - # Skip merge commits - return true if commit[:subject].start_with?('Merge ') - # Skip certain types if configured skip_types = options[:skip_types] || [] skip_types.include?(type)