summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-19 21:10:30 +0200
committerPaul Buetow <paul@buetow.org>2026-03-19 21:10:30 +0200
commita694dd751eb16d47b0956facd5594ef575c9dce4 (patch)
tree7be0801d61f1daf17a5e96b6e38c16556f458ce9
parentb1faeca09f1cd98a64e5c7c17db990b19803750a (diff)
chore(release): bump version to 0.15.8v0.15.8
Remove aichat support from release notes and showcase AI tool chains. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
-rw-r--r--internal/cmd/release.go4
-rw-r--r--internal/cmd/showcase.go6
-rw-r--r--internal/cmd/sync.go2
-rw-r--r--internal/release/release.go19
-rw-r--r--internal/showcase/showcase.go23
-rw-r--r--internal/version/version.go2
6 files changed, 11 insertions, 45 deletions
diff --git a/internal/cmd/release.go b/internal/cmd/release.go
index 656f4a6..88ce86b 100644
--- a/internal/cmd/release.go
+++ b/internal/cmd/release.go
@@ -20,7 +20,7 @@ var releaseCmd = &cobra.Command{
Short: "Manage releases across platforms",
Long: `Check for version tags without releases and create them across
GitHub and Codeberg. Supports AI-generated release notes via amp (stdin pipeline),
-with fallback to hexai, Claude, or aichat.`,
+with fallback to hexai or Claude.`,
}
var releaseCheckCmd = &cobra.Command{
@@ -109,5 +109,5 @@ func init() {
releaseCreateCmd.Flags().BoolVar(&noAINotes, "no-ai-notes", false, "disable AI-generated release notes (AI notes are enabled by default)")
releaseCreateCmd.Flags().BoolVar(&updateExisting, "update-existing", false, "update existing releases with new AI-generated notes")
releaseCreateCmd.Flags().StringVar(&templatePath, "template", "", "custom template for release notes")
- releaseCreateCmd.Flags().StringVar(&aiTool, "ai-tool", "amp", "AI tool to use for release notes (amp, claude, aichat, or hexai; amp is tried first if available)")
+ releaseCreateCmd.Flags().StringVar(&aiTool, "ai-tool", "amp", "AI tool to use for release notes (amp, claude, or hexai; amp is tried first if available)")
}
diff --git a/internal/cmd/showcase.go b/internal/cmd/showcase.go
index c48dee1..3217318 100644
--- a/internal/cmd/showcase.go
+++ b/internal/cmd/showcase.go
@@ -22,7 +22,7 @@ var showcaseCmd = &cobra.Command{
Short: "Generate AI-powered project showcase",
Long: `Generate a comprehensive showcase of all your projects using AI.
This feature creates a formatted document with project summaries, statistics,
-and code snippets. By default uses opencode (local Ollama), with fallback to amp, hexai, claude, and aichat.`,
+and code snippets. By default uses opencode (local Ollama), with fallback to amp, hexai, and claude.`,
Example: ` # Generate showcase with cached summaries
gitsyncer showcase
@@ -60,9 +60,9 @@ func init() {
// Showcase flags
showcaseCmd.Flags().BoolVarP(&forceRegenerate, "force", "f", false, "force regeneration of cached summaries")
- showcaseCmd.Flags().StringVarP(&outputPath, "output", "o", "", "custom output path (default: ~/git/foo.zone-content/gemtext/about/showcase.gmi.tpl)")
+ showcaseCmd.Flags().StringVarP(&outputPath, "output", "o", "", "custom output eath (default: ~/git/foo.zone-content/gemtext/about/showcase.gmi.tpl)")
showcaseCmd.Flags().StringVar(&outputFormat, "format", "gemtext", "output format: gemtext, markdown, html")
showcaseCmd.Flags().StringVar(&excludePattern, "exclude", "", "exclude repos matching pattern")
- showcaseCmd.Flags().StringVar(&showcaseAITool, "ai-tool", "opencode", "AI tool for summaries: opencode, amp, hexai, claude, claude-code, or aichat (default tries opencode→amp→hexai→claude→aichat)")
+ showcaseCmd.Flags().StringVar(&showcaseAITool, "ai-tool", "opencode", "AI tool for summaries: opencode, amp, hexai, claude, or claude-code (default tries opencode→amp→hexai→claude)")
showcaseCmd.Flags().StringVar(&showcaseRepo, "repo", "", "only generate showcase for a single repository")
}
diff --git a/internal/cmd/sync.go b/internal/cmd/sync.go
index 75d8c88..a4fff84 100644
--- a/internal/cmd/sync.go
+++ b/internal/cmd/sync.go
@@ -194,7 +194,7 @@ func init() {
syncCmd.PersistentFlags().BoolVar(&noReleases, "no-releases", false, "skip release checking after sync")
syncCmd.PersistentFlags().BoolVar(&autoCreate, "auto-create-releases", false, "automatically create releases without confirmation")
syncCmd.PersistentFlags().BoolVar(&noAIReleaseNotes, "no-ai-release-notes", false, "disable AI-generated release notes (AI notes are enabled by default)")
- syncCmd.PersistentFlags().StringVar(&syncAITool, "ai-tool", "opencode", "AI tool to use for release notes when auto-creating (opencode, amp, claude, aichat, or hexai; opencode is tried first if available)")
+ syncCmd.PersistentFlags().StringVar(&syncAITool, "ai-tool", "opencode", "AI tool to use for release notes when auto-creating (opencode, amp, claude, or hexai; opencode is tried first if available)")
syncCmd.PersistentFlags().BoolVarP(&syncForce, "force", "f", false, "force sync even if normal sync interval checks would skip a repository")
syncCmd.PersistentFlags().BoolVar(&throttle, "throttle", false, "throttle syncing based on local repo activity")
}
diff --git a/internal/release/release.go b/internal/release/release.go
index 4ac134a..0b0bcdf 100644
--- a/internal/release/release.go
+++ b/internal/release/release.go
@@ -496,8 +496,7 @@ func (m *Manager) GenerateAIReleaseNotes(repoPath, repoName, tag string, allTags
if releaseNotes == "" && aiTool == "claude" {
fmt.Println(" Running claude CLI command...")
if _, err := exec.LookPath("claude"); err != nil {
- fmt.Println(" claude CLI not found, falling back to aichat...")
- aiTool = "aichat"
+ fmt.Println(" claude CLI not found, all fallbacks exhausted")
} else {
cmd := exec.Command("claude", "--model", "sonnet", fullPrompt)
cmd.Env = append(os.Environ(), "CLAUDE_DEBUG=1")
@@ -505,28 +504,12 @@ func (m *Manager) GenerateAIReleaseNotes(repoPath, repoName, tag string, allTags
notes, err := m.executeAICommand(cmd, "claude")
if err != nil {
fmt.Printf(" Claude CLI failed: %v\n", err)
- fmt.Println(" Falling back to aichat...")
- aiTool = "aichat"
} else {
releaseNotes = notes
}
}
}
- if releaseNotes == "" && aiTool == "aichat" {
- fmt.Println(" Running aichat CLI command...")
- if _, err := exec.LookPath("aichat"); err != nil {
- return "", fmt.Errorf("aichat CLI not found in PATH and fallbacks failed")
- }
-
- cmd := exec.Command("aichat", fullPrompt)
- notes, err := m.executeAICommand(cmd, "aichat")
- if err != nil {
- return "", fmt.Errorf("aichat CLI failed: %w", err)
- }
- releaseNotes = notes
- }
-
if releaseNotes == "" && (aiTool == "opencode" || aiTool == "amp") {
return "", fmt.Errorf("opencode/amp CLI not found in PATH and fallbacks failed")
}
diff --git a/internal/showcase/showcase.go b/internal/showcase/showcase.go
index 24662e9..25f28f9 100644
--- a/internal/showcase/showcase.go
+++ b/internal/showcase/showcase.go
@@ -216,7 +216,7 @@ func findReadmeContent(repoPath string) ([]byte, string, bool) {
func selectSummaryTool(aiTool string) string {
switch aiTool {
case "opencode", "":
- // Default chain: opencode → amp → hexai → claude → aichat
+ // Default chain: opencode → amp → hexai → claude
if _, err := exec.LookPath("opencode"); err == nil {
return "opencode"
}
@@ -229,11 +229,8 @@ func selectSummaryTool(aiTool string) string {
if _, err := exec.LookPath("claude"); err == nil {
return "claude"
}
- if _, err := exec.LookPath("aichat"); err == nil {
- return "aichat"
- }
case "amp":
- // Explicit amp: amp → hexai → claude → aichat
+ // Explicit amp: amp → hexai → claude
if _, err := exec.LookPath("amp"); err == nil {
return "amp"
}
@@ -243,9 +240,6 @@ func selectSummaryTool(aiTool string) string {
if _, err := exec.LookPath("claude"); err == nil {
return "claude"
}
- if _, err := exec.LookPath("aichat"); err == nil {
- return "aichat"
- }
case "claude", "claude-code":
if _, err := exec.LookPath("claude"); err == nil {
return "claude"
@@ -253,10 +247,7 @@ func selectSummaryTool(aiTool string) string {
if _, err := exec.LookPath("hexai"); err == nil {
return "hexai"
}
- if _, err := exec.LookPath("aichat"); err == nil {
- return "aichat"
- }
- case "hexai", "aichat":
+ case "hexai":
if _, err := exec.LookPath(aiTool); err == nil {
return aiTool
}
@@ -297,14 +288,6 @@ func runSummaryTool(selectedTool, prompt, repoPath, readmeFile string, readmeCon
cmd = exec.Command("hexai", prompt)
cmd.Stdin = strings.NewReader(string(readmeContent))
}
- case "aichat":
- fmt.Printf("Running aichat command:\n")
- if readmeFound {
- fmt.Printf(" echo <README content> | aichat \"%s\"\n", prompt)
- fmt.Printf(" Using %s as input\n", readmeFile)
- cmd = exec.Command("aichat", prompt)
- cmd.Stdin = strings.NewReader(string(readmeContent))
- }
}
if cmd == nil {
diff --git a/internal/version/version.go b/internal/version/version.go
index 5be3a9e..feb050c 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -7,7 +7,7 @@ import (
var (
// Version is the current version of gitsyncer
- Version = "0.15.7"
+ Version = "0.15.8"
// GitCommit is the git commit hash at build time
GitCommit = "unknown"