v1.2.1 fixes 10 critical bugs discovered during comprehensive integration testing of the Gitea/Forgejo bridge released in v1.2.0. All bugs have been fixed and validated with real-world testing across GitHub, GitLab, and Gitea.
Recommendation: All v1.2.0 users should upgrade immediately to v1.2.1.
Problem: Import router wasn't passing --url and --token flags to provider-specific scripts.
Impact: Could not specify custom Gitea/Forgejo instance URLs or tokens.
Fix: Router now passes all arguments via "$@".
# This now works correctly:
git issue import gitea:owner/repo --url https://gitea.company.com --token abc123Problem: Missing validation before integer arithmetic caused "integer expression expected" errors. Impact: Import failed when API returned invalid/empty responses. Fix: Added proper integer validation with error messages.
Problem: Hard requirement for API token prevented importing from public repositories. Impact: Could not import from public Gitea/Forgejo repos without token. Fix: Token now optional with warning for private repo access.
# Public repos now work without token:
git issue import gitea:gitea/tea --url https://gitea.com --state all
# Imported 50 issues from gitea/tea ✅Problem: curl -f flag hid actual API error messages.
Impact: Debugging failed imports was nearly impossible.
Fix: Removed -f, added JSON validation, show actual API errors.
Before:
error: failed to connect to https://gitea.comAfter:
error: API error: Repository 'owner/repo' not found
response: {"message":"Repository 'owner/repo' not found","url":"..."}Problem: Some Gitea users have empty full_name field, causing git commit failures.
Impact: Import failed with "empty ident name not allowed" error.
Fix: Fallback to username when full_name is empty.
Problem: Same as import - export router didn't pass --url flag.
Fix: Same fix - pass all arguments via "$@".
Problem: Gitea API expects label IDs (integers), but we sent label names (strings).
Impact: Export failed with: "cannot unmarshal number into Go struct field"
Fix: Implemented smart label auto-creation:
Smart Features:
- ✅ Fetches all existing labels from target repository
- ✅ Auto-creates missing labels with intelligent color defaults
- ✅ Returns label IDs for API calls
- ✅ Caches labels for performance
Smart Color Defaults:
bug, fix → red (#d73a4a)
enhancement, feature → light blue (#a2eeef)
documentation, docs → blue (#0075ca)
question → purple (#d876e3)
duplicate → gray (#cfd3d7)
help* → green (#008672)
default → blue (#84b6eb)Example:
# Create local issue with labels
git issue create "Bug fix needed" -l bug,help-wanted
# Export to Gitea (labels auto-created!)
git issue export gitea:owner/repo --url https://gitea.com
# Exported 1 issues
# Created labels: bug (#d73a4a), help-wanted (#84b6eb) ✅Problem: Token check with curl -f blocked dry-run mode.
Fix: Skip token verification in dry-run, removed -f flag.
Problem: Dry-run still attempted API calls. Fix: Dry-run now skips all API calls, works without credentials.
# Dry-run works without token:
git issue export gitea:owner/repo --url https://gitea.com --dry-run
# [dry-run] Would export 5 issues ✅Problem: glab issue view --output json doesn't include notes/comments (glab CLI limitation).
Impact: Comments added on GitLab weren't syncing to local git-issue.
Fix: Use direct API call: glab api "projects/{path}/issues/{iid}/notes"
Now works:
# Add comment on GitLab (via web UI or glab CLI)
# Then sync it:
git issue import gitlab:owner/project --state all
# Updated abc1234 with 1 new comment(s) ✅Test Coverage:
- 97/97 tests passing (76 core + 21 QoL features)
- 14/14 cross-platform tests passing
- All 3 platforms validated: GitHub, GitLab, Gitea
Real-World Testing:
- ✅ 50 issues imported from gitea.com/gitea/tea
- ✅ Cross-platform migration tested (GitHub→GitLab, GitHub→Gitea, GitLab→Gitea)
- ✅ Bidirectional sync verified on all platforms
- ✅ Label auto-creation tested with 10+ different label names
- ✅ Unicode & emoji preservation: 你好 🚀 🌍 🔧 across all platforms
- ✅ Markdown preservation: bold, italic, code blocks
- ✅ Smart duplicate prevention: Provider-ID tracking works correctly
| Test Category | Tests | Passed | Failed |
|---|---|---|---|
| Core functionality | 76 | ✅ 76 | 0 |
| QoL features | 21 | ✅ 21 | 0 |
| Cross-platform import | 4 | ✅ 4 | 0 |
| Cross-platform export | 2 | ✅ 2 | 0 |
| Bidirectional sync | 3 | ✅ 3 | 0 |
| Smart features | 5 | ✅ 5 | 0 |
| TOTAL | 111 | ✅ 111 | 0 |
No breaking changes. Simply upgrade and all existing functionality continues to work, but better.
Via Homebrew:
brew update
brew upgrade git-native-issue
git issue version # Should show 1.2.1Via install script:
cd /path/to/git-native-issue
git pull
sudo make installWhat changes:
- Import/export now work with custom URLs and tokens
- Public repository imports no longer require tokens
- Label auto-creation makes Gitea exports seamless
- Error messages are actually helpful
- GitLab comment sync works properly
Routers:
bin/git-issue-import- Pass all arguments to provider scriptsbin/git-issue-export- Pass all arguments to provider scripts
Gitea/Forgejo Bridge:
bin/git-issue-import-gitea- Fixed 5 bugs (pagination, auth, errors, authors, token)bin/git-issue-export-gitea- Fixed 3 bugs + added label auto-creation (70 lines added)
GitLab Bridge:
bin/git-issue-import-gitlab- Fixed comment sync (direct API call)
Documentation:
CHANGELOG.md- Added v1.2.1 entry with all bug fixesRELEASE-NOTES-v1.2.1.md- This file
Version:
- All scripts updated to version 1.2.1
None! All features working as designed across all platforms.
| Platform | Import | Export | Sync | Comments | Labels | Status |
|---|---|---|---|---|---|---|
| GitHub | ✅ | ✅ | ✅ | ✅ | ✅ | Production |
| GitLab | ✅ | ✅ | ✅ | ✅ | ✅ | Production |
| Gitea | ✅ | ✅ | ✅ | ✅ | ✅ auto-create | Production |
| Forgejo | ✅ | ✅ | ✅ | ✅ | ✅ auto-create | Production |
Testing & Bug Discovery: Comprehensive integration testing across all platforms Bug Fixes: All 10 bugs fixed in single patch release Validation: Real-world testing with gitea.com, gitlab.com, github.com
- Project: https://github.com/remenoscodes/git-native-issue
- Installation:
brew install remenoscodes/git-native-issue/git-native-issue - Documentation: See README.md, QUICKSTART.md, docs/
- Report Issues: https://github.com/remenoscodes/git-native-issue/issues
- Test your workflows - existing imports/exports continue to work
- Try label auto-creation - export to Gitea with labels
- Import public repos - no token needed for public Gitea/Forgejo repos
- Use dry-run - test exports safely without credentials
- Check error messages - now actually helpful for debugging
Thank you for using git-native-issue! 🎉