From b1fa0177c781f7d401ff9037980df78d0cc69144 Mon Sep 17 00:00:00 2001 From: Dzmitry Senchankau <11807229+DzmitryTheStreak@users.noreply.github.com> Date: Thu, 16 Jul 2026 00:42:41 +0200 Subject: [PATCH 1/3] Ensuring OpenCode state is mounted --- config-lib.sh | 5 +++++ setup.sh | 1 + 2 files changed, 6 insertions(+) diff --git a/config-lib.sh b/config-lib.sh index fc80d80..8cf7f2e 100755 --- a/config-lib.sh +++ b/config-lib.sh @@ -256,6 +256,11 @@ build_standard_volume_args() { config_warning "OpenCode config directory not found at $HOME/.config/opencode" fi + # OpenCode state directory (TUI preferences, UI state, etc.) (read-write) + if [ -d "$HOME/.local/state/opencode" ]; then + VOLUME_ARGS+=(-v "$HOME/.local/state/opencode:/home/coder/.local/state/opencode") + fi + # OpenCode data directory (read-write for auth, logs, sessions, storage) if [ -d "$HOME/.local/share/opencode" ]; then VOLUME_ARGS+=(-v "$HOME/.local/share/opencode:/home/coder/.local/share/opencode") diff --git a/setup.sh b/setup.sh index f7de11e..6ad11a0 100755 --- a/setup.sh +++ b/setup.sh @@ -62,6 +62,7 @@ ensure_dir "$HOME/.config/opencode/agent" ensure_dir "$HOME/.config/opencode/plugin" ensure_dir "$HOME/.config/opencode/command" ensure_dir "$HOME/.local/share/opencode" +ensure_dir "$HOME/.local/state/opencode" ensure_dir "$HOME/.cache/opencode" ensure_dir "$HOME/.cache/oh-my-opencode" ensure_dir "$HOME/.mcp-auth" From df11f1434943352f439c7f641dc7284bc260a2a6 Mon Sep 17 00:00:00 2001 From: Dzmitry Senchankau <11807229+DzmitryTheStreak@users.noreply.github.com> Date: Thu, 16 Jul 2026 02:16:15 +0200 Subject: [PATCH 2/3] Adding ~/.local/state/opencode mount to AGENTS.md --- AGENTS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AGENTS.md b/AGENTS.md index 8c28e4b..897832e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -186,6 +186,7 @@ env.aws_bedrock=AWS_BEARER_TOKEN_BEDROCK | `$PROJECT_DIR` | `$PROJECT_DIR` (with `$HOME` stripped) | rw | Project files | | `~/.config/opencode/` | `/home/coder/.config/opencode/` | ro | Config, skills, agents | | `~/.local/share/opencode/` | `/home/coder/.local/share/opencode/` | rw | Auth, sessions | +| `~/.local/state/opencode/` | `/home/coder/.local/state/opencode` | rw | TUI preferences, UI state | | `~/.cache/opencode/` | `/home/coder/.cache/opencode/` | rw | Provider cache | | `~/.cache/oh-my-opencode/` | `/home/coder/.cache/oh-my-opencode/` | rw | Plugin cache | | `~/.cache/openspec/` | `/home/coder/.cache/openspec/` | rw | OpenSpec cache (when enabled) | From ff2c76374313050af4534a86f506ce17a0539f9c Mon Sep 17 00:00:00 2001 From: Dzmitry Senchankau <11807229+DzmitryTheStreak@users.noreply.github.com> Date: Thu, 16 Jul 2026 02:22:36 +0200 Subject: [PATCH 3/3] Adding missing entries for .local/state/opencode --- Dockerfile | 1 + README.md | 1 + config-lib.sh | 11 ++++++----- opencode-dockerized.sh | 4 ++++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9dcdbb9..938b5de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -105,6 +105,7 @@ USER root RUN mkdir -p /home/coder/.config/opencode && \ mkdir -p /home/coder/.config/openspec && \ mkdir -p /home/coder/.local/share/opencode && \ + mkdir -p /home/coder/.local/state/opencode && \ mkdir -p /home/coder/.cache/opencode && \ mkdir -p /home/coder/.cache/oh-my-opencode && \ mkdir -p /home/coder/.cache/openspec && \ diff --git a/README.md b/README.md index 0b5d03c..366f127 100644 --- a/README.md +++ b/README.md @@ -235,6 +235,7 @@ TERM=xterm-256color | `$PROJECT_DIR` | `$PROJECT_DIR` (with `$HOME` stripped) | read-write | Your project files | | `~/.config/opencode/` | `/home/coder/.config/opencode/` | read-only | OpenCode & oh-my-opencode config, skills, commands, agents | | `~/.local/share/opencode/` | `/home/coder/.local/share/opencode/` | read-write | Auth, logs, sessions, storage | +| `~/.local/state/opencode/` | `/home/coder/.local/state/opencode/` | read-write | TUI preferences, UI state | | `~/.cache/opencode/` | `/home/coder/.cache/opencode/` | read-write | Provider package cache | | `~/.cache/oh-my-opencode/` | `/home/coder/.cache/oh-my-opencode/` | read-write | Oh My OpenCode cache | | `~/.gradle/gradle.properties` | `/home/coder/.gradle/gradle.properties` | read-only | Gradle config (optional) | diff --git a/config-lib.sh b/config-lib.sh index 8cf7f2e..9cb1157 100755 --- a/config-lib.sh +++ b/config-lib.sh @@ -95,6 +95,7 @@ compute_container_path() { # Ensure all required OpenCode directories exist on host ensure_opencode_dirs() { mkdir -p "$HOME/.local/share/opencode" 2>/dev/null || true + mkdir -p "$HOME/.local/state/opencode" 2>/dev/null || true mkdir -p "$HOME/.cache/opencode" 2>/dev/null || true mkdir -p "$HOME/.cache/oh-my-opencode" 2>/dev/null || true mkdir -p "$HOME/.config/opencode" 2>/dev/null || true @@ -256,11 +257,6 @@ build_standard_volume_args() { config_warning "OpenCode config directory not found at $HOME/.config/opencode" fi - # OpenCode state directory (TUI preferences, UI state, etc.) (read-write) - if [ -d "$HOME/.local/state/opencode" ]; then - VOLUME_ARGS+=(-v "$HOME/.local/state/opencode:/home/coder/.local/state/opencode") - fi - # OpenCode data directory (read-write for auth, logs, sessions, storage) if [ -d "$HOME/.local/share/opencode" ]; then VOLUME_ARGS+=(-v "$HOME/.local/share/opencode:/home/coder/.local/share/opencode") @@ -269,6 +265,11 @@ build_standard_volume_args() { config_info "You'll need to run 'opencode auth login' inside the container" fi + # OpenCode state directory (TUI preferences, UI state, etc.) (read-write) + if [ -d "$HOME/.local/state/opencode" ]; then + VOLUME_ARGS+=(-v "$HOME/.local/state/opencode:/home/coder/.local/state/opencode") + fi + # OpenCode provider package cache (improves startup time and prevents API errors) # See: https://opencode.ai/docs/troubleshooting/#ai_apicallerror-and-provider-package-issues if [ -d "$HOME/.cache/opencode" ]; then diff --git a/opencode-dockerized.sh b/opencode-dockerized.sh index 9f128d5..44e5a21 100755 --- a/opencode-dockerized.sh +++ b/opencode-dockerized.sh @@ -81,6 +81,10 @@ check_config() { missing_files+=("$HOME/.local/share/opencode/") fi + if [ ! -d "$HOME/.local/state/opencode" ]; then + missing_files+=("$HOME/.local/state/opencode/") + fi + if [ ${#missing_files[@]} -gt 0 ]; then print_warning "Some OpenCode configuration files are missing:" for file in "${missing_files[@]}"; do