summaryrefslogtreecommitdiff
path: root/internal
AgeCommit message (Collapse)Author
2025-07-13refactor: restructure CLI with cobra command frameworkPaul Buetow
- Replace flat flags with organized command structure - Add commands: sync, list, manage, release, showcase, test - Implement subcommands for better organization: - sync: repo, all, codeberg-to-github, github-to-codeberg, bidirectional - list: orgs, repos - manage: delete-repo, clean, batch-run - release: check, create (with --ai-notes support) - showcase: with --force, --output, --format, --exclude - test: github-token, codeberg-token, config - Add comprehensive help with examples for all commands - Fix config loading bug when path is empty - Update README.md with new command structure and examples - Maintain backward compatibility (old flags still work with warnings) The new structure provides better discoverability, consistent naming, and logical grouping of related functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13fix: improve claude CLI error handling workflowv0.6.2Paul Buetow
- Remove debug script generation for cleaner error handling - Continue processing next releases when claude CLI fails - Simplify error detection for "Execution error" responses - Cache is automatically cleared on failures - Bump version to 0.6.2 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13fix: improve claude CLI error handling and diagnosticsv0.6.1Paul Buetow
- Add detection for "Execution error" responses from claude CLI - Provide detailed error diagnostics when claude CLI fails - Show possible causes and remediation steps - Add test command to verify claude CLI functionality - Fix model names in error messages (opus, sonnet, haiku) - Remove hanging auth status check - Bump version to 0.6.1 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: add vibe-coded project detection to showcasev0.6.0Paul Buetow
- Add detection for "vibe code" mentions in README files - Display vibe-coded indicator in project summaries - Include vibe-coded count in overall statistics - Clarify that AI-assisted count includes vibe-coded projects - Bump version to 0.6.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12fix: remove Full Changelog links from release notesPaul Buetow
- Remove platform-specific changelog links (prevTag...currentTag format) - These links only work on GitHub/GitLab, not universally - Keeps release notes cleaner and more portable 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12fix: remove commit messages from AI generation outputPaul Buetow
- Replace verbose prompt preview with summary statistics - Show number of commits and size of code changes instead - Avoid cluttering output with raw commit messages - Keep focus on the AI-generated release notes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: clear cache and track failed AI release note generationsPaul Buetow
- Clear cache entry when AI generation fails to allow retry - Track all failed generations for summary at end - Save cache immediately after clearing failed entry - Show helpful summary of failed releases at the end - Suggest running again to retry failed generations - Handle both GitHub and Codeberg org names in failure tracking 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: save AI release notes cache after each successful generationPaul Buetow
- Save cache immediately after each Claude CLI success - Prevents losing work if process is interrupted - Remove verbose save messages since saving more frequently - Show cache summary only at the end if new entries were added - More resilient to crashes or user interruptions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: add persistent caching for AI release notesPaul Buetow
- Cache AI-generated release notes to .gitsyncer-ai-release-notes-cache.json - Persist cache between gitsyncer runs to avoid regenerating notes - Only cache when Claude CLI succeeds (not on failures) - Honor --force flag to regenerate notes ignoring cache - Display when using cached vs generating new notes - Save cache file in work directory for easy management 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12fix: abort on Claude CLI failure and show error messagePaul Buetow
- Use CombinedOutput to capture both stdout and stderr - Display exit code and error message when Claude fails - Abort immediately instead of trying fallback models - Makes debugging easier when Claude CLI has issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: show Claude prompt preview when generating release notesPaul Buetow
- Display first 500 characters of the prompt sent to Claude - Helps users understand what information is being provided - Makes the AI generation process more transparent 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12fix: use correct Claude CLI model aliasesPaul Buetow
- Changed from sonnet-4/sonnet-3.5 to sonnet/opus - Claude CLI uses simple aliases, not version numbers - Falls back to opus (most capable) then default model 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: use sonnet-4 as primary model for AI release notesPaul Buetow
- Changed from sonnet-3.5 to sonnet-4 as the primary model - Falls back to sonnet-3.5, then default model if needed - Sonnet-4 is newer and more capable 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: improve AI release notes generationPaul Buetow
- Display Claude CLI command being executed with prompt length - Cache AI-generated release notes to avoid regenerating for same tag - Use cached notes when creating/updating releases on different platforms - Show when falling back to different Claude models 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12fix: make --check-releases scan all repositories in work directoryPaul Buetow
- Previously only checked repositories listed in config (which was empty) - Now scans all git repositories found in work directory - Removed duplicate code for checking public repositories 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12fix: remove verbose token loading messagesPaul Buetow
- Only show warnings when no token is found at all - Silent token loading from files when successful 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: add AI-powered release notes generationPaul Buetow
- Add --ai-release-notes flag to generate prose release notes using Claude CLI - Add --update-releases flag to update existing releases with AI notes - Implement GetDiffBetweenTags to extract code changes between versions - Integrate Claude CLI for intelligent release note generation - Support fallback to multiple Claude models (sonnet-3.5, sonnet-4, default) - Always print release notes to stdout for visibility - Fix token loading messages to only show when falling back from config 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12feat: add automatic release checking and creationPaul Buetow
- Add --check-releases flag for manual release checking - Enable automatic release checking after sync operations by default - Add --no-check-releases flag to disable automatic checking - Add --auto-create-releases flag for unattended release creation - Generate release notes from commit history - Support version tag formats: vX.Y.Z, vX.Y, vX, X.Y.Z, X.Y, X - Use tokens from gitsyncer config (with fallback to env vars and files) - Show release notes preview before creating releases - Group commits by type (features, fixes, other) in release notes
2025-07-09feat: add --batch-run flag for weekly automated syncPaul Buetow
- Add --batch-run flag that enables --full and --showcase - Implement state management to track last batch run timestamp - Enforce one-week minimum interval between batch runs - Save state to .gitsyncer-state.json in work directory - Show state file location in output messages - Bump version to 0.5.0 This feature enables automated weekly full synchronization from cron or shell scripts while preventing excessive API usage. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09feat: improve code snippet line length handling in showcasePaul Buetow
- Prefer code snippets with lines <= 80 characters - Try multiple files to find snippets with good line lengths - Intelligently break long lines at appropriate points (commas, operators, etc.) - Maintain proper indentation for continuation lines This prevents long code lines from breaking the showcase layout. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09fix: change 'open source projects' to 'side projects' in showcase introPaul Buetow
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09feat: add latest release version and date to project summariesPaul Buetow
- Display latest release tag and date for each project - Filter tags to only show version-like tags (e.g., v1.0, 2.3, 1.0.0) - Projects with releases show "🏷️ Latest Release: v1.0.0 (2024-01-15)" - Projects without releases show "🧪 Status: Experimental (no releases yet)" - Added LatestTagDate field to metadata structure 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09feat: add AUTO label to code blocks in showcasePaul Buetow
- Code blocks now use ```AUTO instead of plain ``` - Enables automatic syntax highlighting detection 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09feat: add release status statistics to overall project summaryPaul Buetow
- Count projects with version tags vs experimental projects - Display release statistics in overall stats section - Shows percentage breakdown of released vs experimental projects 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09feat: add SVG image support and experimental project detectionPaul Buetow
- Fix image extraction regex to handle unquoted HTML img src attributes - Add detection of version tags and experimental status for projects - Display "Experimental (no releases yet)" for projects without tags - Successfully extracts SVG images from projects like ior 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: remove unnecessary indentation from code snippetsPaul Buetow
- Add removeCommonIndentation function to strip common leading whitespace - Code snippets now start at column 0 when possible - Preserves relative indentation within the code - Works with both spaces and tabs 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: improve language detection with shebang parsingPaul Buetow
- Always check shebang lines for executable files without extensions - Detect AWK scripts with .cgi extension (like awksite) - Support detecting Python, Ruby, Perl, Raku, JavaScript, PHP, Lua via shebang - Add comprehensive shebang parsing for awk/gawk/mawk variants - awksite now correctly shows as 72.1% AWK 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08chore: bump version to v0.4.0Paul Buetow
Major features in this release: - Add showcase generation feature with Claude AI integration - Generate project summaries in Gemini Gemtext format - Extract and include repository metadata (languages, commits, LOC) - Support image extraction from README files - Add code snippet extraction for projects - Implement AI-assistance detection (CLAUDE.md, GEMINI.md, 'agentic coding') - Add language support for AWK and Raku - Strip comments from code snippets - Add Unicode icons to statistics - Show AI-assisted project ratio - Order projects by recent activity
2025-07-08fix: remove syntax highlighting labels from code blocksPaul Buetow
- Remove language identifiers from code blocks (e.g., ```go becomes ```) - Remove extractLanguageForHighlighting function as it's no longer needed - Keep the language info in the description line above the code block 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add Raku language support and move generation date to topPaul Buetow
- Add Raku (Perl 6) language detection for .raku, .rakumod, .p6, .pm6 files - Add Raku to code extractor and syntax highlighting (uses perl highlighting) - Move 'Generated on' date to the top of the page below main header - guprecords now correctly shows as 100% Raku - ior now shows Raku at 5.4% of the codebase 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08docs: add explanation of project ordering in showcase introductionPaul Buetow
- Update introduction paragraph to explain project ordering - Clarify that projects are sorted by recent activity - Most actively maintained projects appear first 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add AWK language support for syntax highlightingPaul Buetow
- Add AWK to language detection (.awk files) - Add AWK to code extractor language extensions - Add AWK to syntax highlighting mapping - Note: cpuinfo project is detected as Make-only because the main script has no file extension (it's a shell script with embedded AWK) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add syntax highlighting labels and strip comments from code snippetsPaul Buetow
- Add language labels to code blocks for syntax highlighting (e.g., ```go, ```sh) - Map languages to source-highlight compatible identifiers - Strip comments from code snippets to show more actual code - Comments no longer count towards the ~10 line target - Support for multi-line and single-line comment removal - Remove inline comments where appropriate 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08fix: change AI-assisted wording from 'generated' to 'created'Paul Buetow
- Update AI-Assisted bullet point text - Change from 'partially generated with the help of generative AI' - To 'partially created with the help of generative AI' 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add code samples to all projects and AI-assist ratioPaul Buetow
- Show code snippets for all projects, not just those without images - Add AI-Assisted Projects ratio to overall statistics - Display count and percentages of AI-assisted vs human-only projects - All projects now have complete function code samples at the end 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: improve showcase code snippets and add Unicode iconsPaul Buetow
- Refactor code snippet extraction to show complete functions (5-50 lines) - Add findSmallestCompleteFunction to prioritize smaller, complete code units - Move code samples to the end of project descriptions (after links) - Remove '### Code Sample' header for cleaner output - Add AI detection for CLAUDE.md, GEMINI.md, and 'agentic coding' mentions - Add AI-Assisted indicator when AI usage is detected - Add Unicode icons to all statistics for better visual presentation: * 📦 Projects, 📊 Commits, 📈 Lines of Code, 📄 Documentation * 💻 Languages, 📚 Documentation types, 📅 Development Period * 🔥 Recent Activity, ⚖️ License, 🤖 AI-Assisted - Add HCL/Terraform language support (.tf, .tfvars, .hcl files) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add obsolete project notice for inactive projectsPaul Buetow
- Add warning notice for projects with avg commit age > 2 years AND last commit > 1 year - Display "⚠️ Notice: This project appears to be finished, obsolete, or no longer maintained" - Also update abandoned branch threshold from 1 to 3 years in branch analyzer - Helps users identify potentially outdated or unmaintained projects 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: separate documentation from code in showcase statisticsPaul Buetow
- Add new Documentation field to RepoMetadata structure - Update language detector to categorize Markdown, reStructuredText, LaTeX, etc. as documentation - Display documentation statistics separately in both project entries and overall stats - Calculate lines of code and documentation independently - Show "Documentation: Markdown (100.0%)" style formatting 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08fix: change showcase formatting to use Projects section with ### headersPaul Buetow
- Add "## Projects" section header - Change individual project headers from ## to ### - Better structure for the showcase document 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add Overall Statistics section to showcase outputPaul Buetow
- Add total projects, commits, lines of code, and language statistics - Fix showcase update to load from cache instead of parsing Gemtext - Add formatNumber helper for thousand separators - Preserve metadata and images when updating single repos 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08fix: only check for claude command when neededPaul Buetow
- Skip claude command existence check when using cached summary - Prevents unnecessary error when claude is not installed but cache exists - Improves performance for cached showcase generation 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: show language usage percentages in showcasePaul Buetow
- Languages are now counted by lines of code - Displayed with percentages ordered by usage (highest first) - Format: 'Go (88.8%), Markdown (5.5%), ...' - Only shows languages with at least 0.1% usage - More accurate representation of project composition 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08fix: make --force flag only affect Claude summary generationPaul Buetow
- Metadata extraction always happens (not cached) - Image extraction always happens (not cached) - Only Claude summary generation is cached/forced - Ensures metadata and images are always up-to-date 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: add recent activity metric to showcase.gmi.tpl outputPaul Buetow
- Shows average age of last 42 commits as 'Recent Activity' in days - Helps readers quickly identify actively maintained projects - Displayed between Development Period and License in metadata 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08feat: change average commit age calculation to last 42 commitsPaul Buetow
- Changed from 100 to 42 commits for average age calculation - 42 is the answer to life, the universe, and everything! - Updates both the calculation and display messages 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08fix: handle markdown image titles in showcase image extractionPaul Buetow
- Strip text after spaces/quotes in image URLs (e.g. 'image.png "Title"') - Fixes extraction of images from READMEs that use markdown title syntax 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-07bump verisonv0.3.0Paul Buetow
2025-07-07feat: add comprehensive showcase generation with metadata and imagesPaul Buetow
- Add --showcase flag to generate project showcases using Claude - Extract repository metadata (languages, commits, LOC, dates, license) - Support image extraction from README files (local and remote) - Add caching with --force flag to regenerate - Add exclude_from_showcase config option - Add standalone showcase mode (--showcase without sync) - Sort projects by recent activity (avg age of last 100 commits) - Output in Gemini Gemtext template format (.gmi.tpl) - Fix backup location fetching when --backup flag not set 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-03feat: add SSH backup locations with --backup flagv0.2.0Paul Buetow
- Add support for SSH backup locations (e.g., paul@server:git/) - Backup locations are one-way only (push only, never pull) - Automatic bare repository creation on SSH servers - Add --backup flag to opt-in to backup syncing - Backup locations are disabled by default for offline resilience - Update version to 0.2.0 This allows users to maintain private backups on home servers that may be offline without affecting regular sync operations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28feat: add --delete-repo command to delete repositories from all organizationsPaul Buetow
- Added --delete-repo flag that accepts a repository name - Implemented DeleteRepo() methods in both GitHub and Codeberg API clients - Created HandleDeleteRepo handler with interactive confirmation - Shows clear status of repository across all configured organizations - Requires user to type "yes" to confirm deletion - Provides detailed feedback on success/failure for each deletion - Updated documentation and usage help 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>