Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,19 @@ update-local-binaries: ## Update and rebuild local binaries from .local-binaries
##@ Upgrade

.PHONY: upgrade
upgrade: nix-upgrade overlays-upgrade neovim-upgrade ## Upgrade Nix flake, overlays, Neovim plugins
upgrade: nix-upgrade overlays-upgrade neovim-upgrade llm-upgrade gitalias-upgrade ## Upgrade Nix flake, overlays, Neovim plugins, LLM configs, and gitalias

.PHONY: llm-upgrade
llm-upgrade: ## Regenerate tool configs from models.json.
@echo "🤖 Updating LLM tool configs..."
@./scripts/llm-update.sh
@echo "✅ LLM configs updated"

.PHONY: gitalias-upgrade
gitalias-upgrade: ## Download latest gitalias.txt from upstream.
@echo "📥 Updating gitalias.txt..."
@./scripts/update-gitalias.sh
@echo "✅ gitalias.txt updated"

.PHONY: upgrade-dev
upgrade-dev: ## Upgrade inside the Nix dev shell (mirrors CI).
Expand Down Expand Up @@ -594,6 +606,9 @@ neovim-dev: ## Set up local Neovim development environment.
.PHONY: neovim-upgrade
neovim-upgrade: ## Update Neovim plugins.
@echo "📦 Updating neovim plugins..."
@mkdir -p ~/.config/nvim

@cubic-dev-ai cubic-dev-ai Bot Mar 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: In a home-manager / NixOS setup, ~/.config/nvim is often a symlink into the read-only Nix store. mkdir -p on that path will either fail or behave unexpectedly. The neovim-dev target in this same Makefile already handles this correctly by removing the symlink first. Mirror that pattern here.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At Makefile, line 609:

<comment>In a home-manager / NixOS setup, `~/.config/nvim` is often a symlink into the read-only Nix store. `mkdir -p` on that path will either fail or behave unexpectedly. The `neovim-dev` target in this same Makefile already handles this correctly by removing the symlink first. Mirror that pattern here.</comment>

<file context>
@@ -594,6 +606,9 @@ neovim-dev: ## Set up local Neovim development environment.
 .PHONY: neovim-upgrade
 neovim-upgrade: ## Update Neovim plugins.
 	@echo "📦 Updating neovim plugins..."
+	@mkdir -p ~/.config/nvim
+	@ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" ~/.config/nvim/init.lua
+	@ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json
</file context>
Fix with Cubic

@ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" ~/.config/nvim/init.lua
@ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" ~/.config/nvim/nvim-pack-lock.json
Comment on lines +609 to +611

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The neovim-upgrade target's symlinking logic might conflict with Nix-managed Neovim configurations. If ~/.config/nvim is a symlink to a Nix store path (common in NixOS/home-manager setups), mkdir -p ~/.config/nvim will attempt to create a directory inside the read-only Nix store, which will fail or lead to unexpected behavior. The neovim-dev target (lines 595-605 in the full file) correctly handles this by removing the symlink first before creating the directory and symlinking files. This robust approach should be mirrored in neovim-upgrade to prevent potential issues in Nix environments.

if [ -L "$(HOME)/.config/nvim" ]; then \
		rm "$(HOME)/.config/nvim"; \
	fi
	@mkdir -p "$(HOME)/.config/nvim"
	@ln -sf "$(PWD)/home-manager/programs/neovim/init.lua" "$(HOME)/.config/nvim/init.lua"
	@ln -sf "$(PWD)/home-manager/programs/neovim/nvim-pack-lock.json" "$(HOME)/.config/nvim/nvim-pack-lock.json"

Comment on lines +609 to +611
@nvim --headless +"lua vim.pack.update()" +qa
@echo "✅ Neovim plugins updated"

Expand Down
8 changes: 4 additions & 4 deletions config/ccs/gemini.settings.template.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8317/api/provider/gemini",
"ANTHROPIC_AUTH_TOKEN": "__CLIPROXY_API_KEY__",
"ANTHROPIC_MODEL": "gemini-3-pro-preview",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "gemini-3-pro-preview",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "gemini-3-pro-preview",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "gemini-3-flash-preview"
"ANTHROPIC_MODEL": "gemini-3.1-pro-preview",

@cubic-dev-ai cubic-dev-ai Bot Mar 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This upgrade leaves the installed Factory config pinned to gemini-3-pro-preview, so Gemini clients in the repo no longer stay in sync with models.json.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At config/ccs/gemini.settings.template.json, line 5:

<comment>This upgrade leaves the installed Factory config pinned to `gemini-3-pro-preview`, so Gemini clients in the repo no longer stay in sync with `models.json`.</comment>

<file context>
@@ -2,9 +2,9 @@
-    "ANTHROPIC_DEFAULT_OPUS_MODEL": "gemini-3-pro-preview",
-    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gemini-3-pro-preview",
-    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gemini-3-flash-preview"
+    "ANTHROPIC_MODEL": "gemini-3.1-pro-preview",
+    "ANTHROPIC_DEFAULT_OPUS_MODEL": "gemini-3.1-pro-preview",
+    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gemini-3.1-pro-preview",
</file context>
Fix with Cubic

"ANTHROPIC_DEFAULT_OPUS_MODEL": "gemini-3.1-pro-preview",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "gemini-3.1-pro-preview",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "gemini-3.1-flash-preview"
}
}
2 changes: 2 additions & 0 deletions config/claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
"hooks": [
{
"command": "git-ai checkpoint claude --hook-input stdin",
"timeout": 10,
"type": "command"
}
],
Expand Down Expand Up @@ -147,6 +148,7 @@
"hooks": [
{
"command": "git-ai checkpoint claude --hook-input stdin",
"timeout": 10,
"type": "command"
}
],
Expand Down
24 changes: 12 additions & 12 deletions config/openclaw/openclaw.template.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
"maxTokens": 32000
},
{
"id": "gpt-5.2",
"name": "GPT 5.2",
"id": "gpt-5.4",
"name": "GPT 5.4",
"reasoning": false,
"input": [
"text",
Expand Down Expand Up @@ -99,8 +99,8 @@
"maxTokens": 32000
},
{
"id": "gemini-3-pro-preview",
"name": "Gemini 3 Pro",
"id": "gemini-3.1-pro-preview",
"name": "Gemini 3.1 Pro",
"reasoning": false,
"input": [
"text",
Expand All @@ -116,8 +116,8 @@
"maxTokens": 32000
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash",
"id": "gemini-3.1-flash-preview",
"name": "Gemini 3.1 Flash",
"reasoning": false,
"input": [
"text",
Expand Down Expand Up @@ -285,7 +285,7 @@
"name": "Code Reviewer (Gemini Pro)",
"workspace": "__WORKSPACE__/agents/code-review",
"model": {
"primary": "cliproxy/gemini-3-pro-preview",
"primary": "cliproxy/gemini-3.1-pro-preview",
"fallbacks": [
"cliproxy/glm-4.7",
"cliproxy/free"
Expand Down Expand Up @@ -391,7 +391,7 @@
"name": "Sales Agent",
"workspace": "__WORKSPACE__/agents/sales",
"model": {
"primary": "cliproxy/gpt-5.2",
"primary": "cliproxy/gpt-5.4",
"fallbacks": [
"cliproxy/glm-4.7",
"cliproxy/free"
Expand All @@ -409,7 +409,7 @@
"name": "Twitter (Gemini)",
"workspace": "__WORKSPACE__/agents/twitter",
"model": {
"primary": "cliproxy/gemini-3-pro-preview",
"primary": "cliproxy/gemini-3.1-pro-preview",
"fallbacks": [
"cliproxy/glm-4.7",
"cliproxy/free"
Expand Down Expand Up @@ -521,7 +521,7 @@
"name": "Product Manager",
"workspace": "__WORKSPACE__/agents/product",
"model": {
"primary": "cliproxy/gemini-3-pro-preview",
"primary": "cliproxy/gemini-3.1-pro-preview",
"fallbacks": [
"cliproxy/glm-4.7",
"cliproxy/free"
Expand Down Expand Up @@ -557,7 +557,7 @@
"name": "Strategy (GPT)",
"workspace": "__WORKSPACE__/agents/strategy",
"model": {
"primary": "cliproxy/gpt-5.2",
"primary": "cliproxy/gpt-5.4",
"fallbacks": [
"cliproxy/glm-4.7",
"cliproxy/free"
Expand All @@ -575,7 +575,7 @@
"name": "Strategy (Gemini)",
"workspace": "__WORKSPACE__/agents/strategy",
"model": {
"primary": "cliproxy/gemini-3-pro-preview",
"primary": "cliproxy/gemini-3.1-pro-preview",
"fallbacks": [
"cliproxy/glm-4.7",
"cliproxy/free"
Expand Down
24 changes: 12 additions & 12 deletions config/opencode/opencode.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,17 @@
"claude-haiku-4-5-20251001": {
"name": "Claude Haiku 4.5 (via shunkakinoki's CLIProxy)"
},
"gpt-5.2": {
"name": "GPT 5.2 (via shunkakinoki's CLIProxy)"
"gpt-5.4": {
"name": "GPT 5.4 (via shunkakinoki's CLIProxy)"
},
"gpt-5.3-codex": {
"name": "GPT 5.3 Codex (via shunkakinoki's CLIProxy)"
},
"gemini-3-pro-preview": {
"name": "Gemini 3 Pro (via shunkakinoki's CLIProxy)"
"gemini-3.1-pro-preview": {
"name": "Gemini 3.1 Pro (via shunkakinoki's CLIProxy)"
},
"gemini-3-flash-preview": {
"name": "Gemini 3 Flash (via shunkakinoki's CLIProxy)"
"gemini-3.1-flash-preview": {
"name": "Gemini 3.1 Flash (via shunkakinoki's CLIProxy)"
},
"z-ai/glm-4.7": {
"name": "GLM 4.7 (via shunkakinoki's CLIProxy)"
Expand All @@ -67,17 +67,17 @@
"claude-haiku-4-5-20251001": {
"name": "Claude Haiku 4.5 (via local CLIProxyAPI)"
},
"gpt-5.2": {
"name": "GPT 5.2 (via local CLIProxyAPI)"
"gpt-5.4": {
"name": "GPT 5.4 (via local CLIProxyAPI)"
},
"gpt-5.3-codex": {
"name": "GPT 5.3 Codex (via local CLIProxyAPI)"
},
"gemini-3-pro-preview": {
"name": "Gemini 3 Pro (via local CLIProxyAPI)"
"gemini-3.1-pro-preview": {
"name": "Gemini 3.1 Pro (via local CLIProxyAPI)"
},
"gemini-3-flash-preview": {
"name": "Gemini 3 Flash (via local CLIProxyAPI)"
"gemini-3.1-flash-preview": {
"name": "Gemini 3.1 Flash (via local CLIProxyAPI)"
},
"glm-4.7": {
"name": "GLM 4.7 (via local CLIProxyAPI)"
Expand Down
12 changes: 6 additions & 6 deletions config/pi/models.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
"maxTokens": 128000
},
{
"id": "gpt-5.2",
"name": "GPT 5.2 [ChatGPT Pro]",
"id": "gpt-5.4",

@cubic-dev-ai cubic-dev-ai Bot Mar 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This renames the entry to GPT-5.4 but leaves the surrounding cost/context metadata on the older profile, so downstream configs will advertise the wrong limits and pricing for this model.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At config/pi/models.json, line 26:

<comment>This renames the entry to GPT-5.4 but leaves the surrounding cost/context metadata on the older profile, so downstream configs will advertise the wrong limits and pricing for this model.</comment>

<file context>
@@ -23,8 +23,8 @@
         {
-          "id": "gpt-5.2",
-          "name": "GPT 5.2 [ChatGPT Pro]",
+          "id": "gpt-5.4",
+          "name": "GPT 5.4 [ChatGPT Pro]",
           "reasoning": true,
</file context>
Fix with Cubic

"name": "GPT 5.4 [ChatGPT Pro]",
"reasoning": true,
"input": [
"text",
Expand All @@ -40,8 +40,8 @@
"maxTokens": 128000
},
{
"id": "gemini-3-pro-preview",
"name": "Gemini 3 Pro",
"id": "gemini-3.1-pro-preview",
"name": "Gemini 3.1 Pro",
"reasoning": true,
"input": [
"text",
Expand All @@ -57,8 +57,8 @@
"maxTokens": 65536
},
{
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash",
"id": "gemini-3.1-flash-preview",
"name": "Gemini 3.1 Flash",
Comment on lines +60 to +61

@cubic-dev-ai cubic-dev-ai Bot Mar 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: gemini-3.1-flash-preview does not match Google's documented Flash model ID. Keep gemini-3-flash-preview here or requests from the generated agent config will fail.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At config/pi/models.json, line 60:

<comment>`gemini-3.1-flash-preview` does not match Google's documented Flash model ID. Keep `gemini-3-flash-preview` here or requests from the generated agent config will fail.</comment>

<file context>
@@ -57,8 +57,8 @@
         {
-          "id": "gemini-3-flash-preview",
-          "name": "Gemini 3 Flash",
+          "id": "gemini-3.1-flash-preview",
+          "name": "Gemini 3.1 Flash",
           "reasoning": false,
</file context>
Suggested change
"id": "gemini-3.1-flash-preview",
"name": "Gemini 3.1 Flash",
"id": "gemini-3-flash-preview",
"name": "Gemini 3 Flash",
Fix with Cubic

"reasoning": false,
"input": [
"text",
Expand Down
4 changes: 2 additions & 2 deletions home-manager/programs/fish/functions/_coxe_function.fish
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ function _coxe_function --description "Run Codex with a free-form prompt"
# Usage: cxe [<prompt words...>]

if test (count $argv) -eq 0
codex --model 'gpt-5.3-codex' --full-auto -c model_reasoning_summary_format=experimental
codex --model 'gpt-5.4' --full-auto -c model_reasoning_summary_format=experimental
else
set -l prompt (string join " " -- $argv)
codex exec --model 'gpt-5.3-codex' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
codex exec --model 'gpt-5.4' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
end
end
4 changes: 2 additions & 2 deletions home-manager/programs/fish/functions/_coxe_function.tpl.fish
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ function _coxe_function --description "Run Codex with a free-form prompt"
# Usage: cxe [<prompt words...>]

if test (count $argv) -eq 0
codex --model '__GPT_CODEX__' --full-auto -c model_reasoning_summary_format=experimental
codex --model '__GPT__' --full-auto -c model_reasoning_summary_format=experimental

@cubic-dev-ai cubic-dev-ai Bot Mar 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Use the Codex-specific placeholder here instead of __GPT__; otherwise coxe regenerates to the generic GPT model while the rest of the Codex config still points at gpt-codex.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At home-manager/programs/fish/functions/_coxe_function.tpl.fish, line 6:

<comment>Use the Codex-specific placeholder here instead of `__GPT__`; otherwise `coxe` regenerates to the generic GPT model while the rest of the Codex config still points at `gpt-codex`.</comment>

<file context>
@@ -3,9 +3,9 @@ function _coxe_function --description "Run Codex with a free-form prompt"
 
   if test (count $argv) -eq 0
-    codex --model '__GPT_CODEX__' --full-auto -c model_reasoning_summary_format=experimental
+    codex --model '__GPT__' --full-auto -c model_reasoning_summary_format=experimental
   else
     set -l prompt (string join " " -- $argv)
</file context>
Fix with Cubic

else
set -l prompt (string join " " -- $argv)
codex exec --model '__GPT_CODEX__' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
codex exec --model '__GPT__' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
end
end
2 changes: 1 addition & 1 deletion home-manager/programs/fish/functions/_coxeh_function.fish
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ function _coxeh_function --description "Run Codex headlessly with a prompted inp
return 1
end

codex exec --model 'gpt-5.3-codex' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
codex exec --model 'gpt-5.4' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
end
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ function _coxeh_function --description "Run Codex headlessly with a prompted inp
return 1
end

codex exec --model '__GPT_CODEX__' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
codex exec --model '__GPT__' --full-auto -c model_reasoning_summary_format=experimental -- "$prompt"
end
4 changes: 2 additions & 2 deletions home-manager/programs/git/gitalias.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1718,8 +1718,8 @@
fi; \
};f"

topic-end = topic-finish
topic-finish = topic-end

# Update the current topic branch by synchronizing changes.
#
# Example:
Expand Down
Loading