@opencode-cloud/core 11.0.0 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Cargo.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "opencode-cloud-core"
3
- version = "11.0.0"
3
+ version = "12.0.1"
4
4
  edition = "2024"
5
5
  rust-version = "1.89"
6
6
  license = "MIT"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencode-cloud/core",
3
- "version": "11.0.0",
3
+ "version": "12.0.1",
4
4
  "description": "Core NAPI bindings for opencode-cloud (internal package)",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -4,7 +4,7 @@
4
4
  # A comprehensive development environment for AI-assisted coding with opencode.
5
5
  #
6
6
  # Features:
7
- # - Ubuntu 24.04 LTS (noble) base
7
+ # - Ubuntu 25.10 (questing) base
8
8
  # - Non-root user with passwordless sudo
9
9
  # - Multiple languages via mise (Node.js, Python, Rust, Go)
10
10
  # - Modern CLI tools (ripgrep, eza, fzf, lazygit, etc.)
@@ -26,13 +26,13 @@
26
26
  # - Self-managing installers (mise, rustup, etc.) trusted to handle versions
27
27
  #
28
28
  # To check for updates: just check-updates
29
- # Last version audit: 2026-01-22
29
+ # Last version audit: 2026-02-03
30
30
  # -----------------------------------------------------------------------------
31
31
 
32
32
  # -----------------------------------------------------------------------------
33
33
  # Stage 1: Base
34
34
  # -----------------------------------------------------------------------------
35
- FROM ubuntu:24.04 AS base
35
+ FROM ubuntu:25.10 AS base
36
36
 
37
37
  # OCI Labels for image metadata
38
38
  LABEL org.opencontainers.image.title="opencode-cloud"
@@ -45,7 +45,7 @@ LABEL org.opencontainers.image.url="https://github.com/pRizz/opencode-cloud"
45
45
  LABEL org.opencontainers.image.source="https://github.com/pRizz/opencode-cloud"
46
46
  LABEL org.opencontainers.image.vendor="pRizz"
47
47
  LABEL org.opencontainers.image.licenses="MIT"
48
- LABEL org.opencontainers.image.base.name="ubuntu:24.04"
48
+ LABEL org.opencontainers.image.base.name="ubuntu:25.10"
49
49
 
50
50
  # Environment configuration
51
51
  ENV DEBIAN_FRONTEND=noninteractive
@@ -58,7 +58,7 @@ ENV LC_ALL=C.UTF-8
58
58
  # -----------------------------------------------------------------------------
59
59
  # Install core system packages in logical groups for better caching
60
60
 
61
- # Group 1: Core utilities and build tools (2026-01-22)
61
+ # Group 1: Core utilities and build tools (2026-02-03)
62
62
  # Use BuildKit cache mount for APT package lists and cache
63
63
  RUN --mount=type=cache,target=/var/lib/apt/lists \
64
64
  --mount=type=cache,target=/var/cache/apt \
@@ -67,51 +67,51 @@ RUN --mount=type=cache,target=/var/lib/apt/lists \
67
67
  tini=0.19.* \
68
68
  dumb-init=1.2.* \
69
69
  # systemd for Cockpit support
70
- systemd=255.* \
71
- systemd-sysv=255.* \
72
- dbus=1.14.* \
70
+ systemd=257.* \
71
+ systemd-sysv=257.* \
72
+ dbus=1.16.* \
73
73
  # Shell and terminal
74
74
  zsh=5.9-* \
75
- tmux=3.4-* \
75
+ tmux=3.5a-* \
76
76
  # Editors
77
77
  vim=2:9.1.* \
78
- neovim=0.9.* \
79
- nano=7.2-* \
78
+ neovim=0.10.* \
79
+ nano=8.4-* \
80
80
  # Build essentials
81
81
  build-essential=12.* \
82
82
  pkg-config=1.8.* \
83
- cmake=3.28.* \
83
+ cmake=3.31.* \
84
84
  # Version control
85
- git=1:2.43.* \
86
- git-lfs=3.4.* \
85
+ git=1:2.51.* \
86
+ git-lfs=3.6.* \
87
87
  # Core utilities
88
- curl=8.5.* \
89
- wget=1.21.* \
88
+ curl=8.14.* \
89
+ wget=1.25.* \
90
90
  # UNPINNED: ca-certificates - security-critical root certs, needs auto-updates
91
91
  ca-certificates \
92
92
  # UNPINNED: gnupg - key management security, needs auto-updates
93
93
  gnupg \
94
94
  lsb-release=12.* \
95
- software-properties-common=0.99.* \
95
+ software-properties-common=0.114* \
96
96
  sudo=1.9.* \
97
97
  # UNPINNED: openssh-client - security-critical, needs auto-updates
98
98
  openssh-client \
99
99
  # Process/system tools
100
- htop=3.3.* \
100
+ htop=3.4.* \
101
101
  procps=2:4.0.* \
102
- less=590-* \
103
- file=1:5.45-* \
104
- tree=2.1.* \
102
+ less=668-* \
103
+ file=1:5.46-* \
104
+ tree=2.2.* \
105
105
  # JSON/YAML processing
106
- jq=1.7.* \
106
+ jq=1.8.* \
107
107
  # Network tools
108
- netcat-openbsd=1.226-* \
109
- iputils-ping=3:20240117-* \
110
- dnsutils=1:9.18.* \
108
+ netcat-openbsd=1.229-* \
109
+ iputils-ping=3:20240905-* \
110
+ bind9-dnsutils=1:9.20.* \
111
111
  # Compression
112
112
  zip=3.0-* \
113
113
  unzip=6.0-* \
114
- xz-utils=5.6.* \
114
+ xz-utils=5.8.* \
115
115
  p7zip-full=16.02* \
116
116
  && rm -rf /var/lib/apt/lists/*
117
117
 
@@ -123,32 +123,32 @@ RUN systemctl mask \
123
123
  systemd-tmpfiles-setup.service \
124
124
  systemd-remount-fs.service
125
125
 
126
- # Group 2: Database clients (2026-01-22)
126
+ # Group 2: Database clients (2026-02-03)
127
127
  # Use BuildKit cache mount for APT package lists and cache
128
128
  RUN --mount=type=cache,target=/var/lib/apt/lists \
129
129
  --mount=type=cache,target=/var/cache/apt \
130
130
  apt-get update && apt-get install -y --no-install-recommends \
131
- sqlite3=3.45.* \
132
- postgresql-client=16+* \
131
+ sqlite3=3.46.* \
132
+ postgresql-client=17+* \
133
133
  default-mysql-client=1.1.* \
134
134
  && rm -rf /var/lib/apt/lists/*
135
135
 
136
- # Group 3: Development libraries for compiling tools (2026-01-22)
136
+ # Group 3: Development libraries for compiling tools (2026-02-03)
137
137
  # Use BuildKit cache mount for APT package lists and cache
138
138
  RUN --mount=type=cache,target=/var/lib/apt/lists \
139
139
  --mount=type=cache,target=/var/cache/apt \
140
140
  apt-get update && apt-get install -y --no-install-recommends \
141
141
  # libssl-dev depends on libssl3t64 with exact version match
142
- libssl3t64=3.0.* \
143
- libssl-dev=3.0.* \
144
- libffi-dev=3.4.* \
142
+ libssl3t64=3.5.* \
143
+ libssl-dev=3.5.* \
144
+ libffi-dev=3.5.* \
145
145
  zlib1g-dev=1:1.3.* \
146
146
  libbz2-dev=1.0.* \
147
- libreadline-dev=8.2-* \
148
- libsqlite3-dev=3.45.* \
149
- libncurses-dev=6.4+* \
150
- libpam0g-dev=1.5.* \
151
- liblzma-dev=5.6.* \
147
+ libreadline-dev=8.3-* \
148
+ libsqlite3-dev=3.46.* \
149
+ libncurses-dev=6.5+* \
150
+ libpam0g-dev=1.7.* \
151
+ liblzma-dev=5.8.* \
152
152
  && rm -rf /var/lib/apt/lists/*
153
153
 
154
154
  # -----------------------------------------------------------------------------
@@ -198,16 +198,24 @@ ENV PATH="/home/opencode/.local/bin:${PATH}"
198
198
  RUN curl https://mise.run | sh \
199
199
  && echo 'eval "$(/home/opencode/.local/bin/mise activate zsh)"' >> /home/opencode/.zshrc
200
200
 
201
- # Install language runtimes via mise (2026-01-22)
202
- # - node@lts: mise handles LTS resolution (currently 22.x)
203
- # - python@3.12: pinned to minor version
204
- # - go@1.24: pinned to minor version (was @latest)
205
- RUN /home/opencode/.local/bin/mise install node@lts \
206
- && /home/opencode/.local/bin/mise install python@3.12 \
207
- && /home/opencode/.local/bin/mise install go@1.24 \
208
- && /home/opencode/.local/bin/mise use --global node@lts \
209
- && /home/opencode/.local/bin/mise use --global python@3.12 \
210
- && /home/opencode/.local/bin/mise use --global go@1.24
201
+ # Install language runtimes via mise (2026-02-03)
202
+ # - node@25: pinned to major version
203
+ # - python@3.13: pinned to major version (3.13 has precompiled binaries available)
204
+ # - go@1.25: pinned to minor version
205
+ #
206
+ # MISE_PYTHON_COMPILE=0: Disable Python compilation from source.
207
+ # If no precompiled binary exists, mise will fail fast instead of hanging
208
+ # during a 30+ minute compilation that may timeout in CI.
209
+ #
210
+ # Timeout: 10 minutes max for all runtime installations as safety net.
211
+ RUN timeout 600 sh -c '\
212
+ export MISE_PYTHON_COMPILE=0 && \
213
+ /home/opencode/.local/bin/mise install node@25 && \
214
+ /home/opencode/.local/bin/mise install python@3.13 && \
215
+ /home/opencode/.local/bin/mise install go@1.25 && \
216
+ /home/opencode/.local/bin/mise use --global node@25 && \
217
+ /home/opencode/.local/bin/mise use --global python@3.13 && \
218
+ /home/opencode/.local/bin/mise use --global go@1.25'
211
219
 
212
220
  # Set up mise shims in PATH for non-interactive shells
213
221
  ENV PATH="/home/opencode/.local/share/mise/shims:${PATH}"
@@ -230,24 +238,25 @@ ENV PATH="/home/opencode/.cargo/bin:${PATH}"
230
238
  # Switch to bash for mise activation (mise outputs bash-specific syntax)
231
239
  SHELL ["/bin/bash", "-c"]
232
240
 
233
- # Install pnpm 10.x via corepack (2026-01-22)
241
+ # Install pnpm 10.x via corepack (2026-02-03)
234
242
  RUN eval "$(/home/opencode/.local/bin/mise activate bash)" \
243
+ && npm install -g corepack \
235
244
  && corepack enable \
236
- && corepack prepare pnpm@10.28.1 --activate
245
+ && corepack prepare pnpm@10.28.2 --activate
237
246
 
238
247
  # Set up pnpm global bin directory
239
248
  ENV PNPM_HOME="/home/opencode/.local/share/pnpm"
240
249
  ENV PATH="${PNPM_HOME}:${PATH}"
241
250
  RUN mkdir -p "${PNPM_HOME}"
242
251
 
243
- # bun - self-managing installer, trusted to handle versions
252
+ # bun - self-managing installer, pinned to version (2026-02-03)
244
253
  RUN curl -fsSL https://bun.sh/install | bash -s "bun-v1.3.5" \
245
254
  && rm -rf /home/opencode/.bun/install/cache /home/opencode/.bun/cache /home/opencode/.cache/bun
246
255
 
247
256
  ENV PATH="/home/opencode/.bun/bin:${PATH}"
248
257
 
249
- # uv - self-managing installer, trusted to handle versions (fast Python package manager)
250
- RUN curl -LsSf https://astral.sh/uv/install.sh | sh
258
+ # uv - pinned installer (fast Python package manager) (2026-02-03)
259
+ RUN curl -LsSf https://github.com/astral-sh/uv/releases/download/0.9.21/uv-installer.sh | sh
251
260
 
252
261
  # Install pipx for isolated Python application installs
253
262
  # Use BuildKit cache mount for pip cache
@@ -260,7 +269,7 @@ RUN --mount=type=cache,target=/home/opencode/.cache/pip,uid=1000,gid=1000,mode=0
260
269
  # Install global TypeScript compiler
261
270
  # NOTE: Avoid cache mount here to prevent pnpm store permission issues
262
271
  RUN eval "$(/home/opencode/.local/bin/mise activate bash)" \
263
- && pnpm add -g typescript
272
+ && pnpm add -g typescript@5.9.2
264
273
 
265
274
  # -----------------------------------------------------------------------------
266
275
  # Modern CLI Tools (Rust-based) - pinned versions (2026-01-22)
@@ -315,7 +324,7 @@ RUN mkdir -p /home/opencode/.cargo/registry /home/opencode/.cargo/git \
315
324
  # RUN eval "$(/home/opencode/.local/bin/mise activate bash)" \
316
325
  # && go install mvdan.cc/sh/v3/cmd/shfmt@v3.12.0
317
326
 
318
- # Install btop system monitor (2026-01-22)
327
+ # Install btop system monitor (2026-02-03)
319
328
  # Use BuildKit cache mount for APT package lists and cache
320
329
  USER root
321
330
  RUN --mount=type=cache,target=/var/lib/apt/lists \
@@ -342,7 +351,7 @@ USER opencode
342
351
  # Cockpit Web Console (2026-01-22) - temporarily disabled
343
352
  # -----------------------------------------------------------------------------
344
353
  # Cockpit provides web-based administration for the container
345
- # Ubuntu noble has cockpit 316 in main repos
354
+ # Ubuntu questing has cockpit 346 in main repos
346
355
  # Use BuildKit cache mount for APT package lists and cache
347
356
  # USER root
348
357
  # RUN --mount=type=cache,target=/var/lib/apt/lists \
@@ -527,8 +536,11 @@ USER opencode
527
536
  # -----------------------------------------------------------------------------
528
537
  # Clone the fork and build opencode from source (as non-root user)
529
538
  # Pin to specific commit for reproducibility
539
+ # NOTE: OPENCODE_COMMIT is not tied to releases/tags; it tracks the latest stable
540
+ # commit on the main branch of https://github.com/pRizz/opencode.
541
+ # Update it by running: ./scripts/update-opencode-commit.sh
530
542
  # Build opencode from source (BuildKit cache mounts disabled for now)
531
- RUN OPENCODE_COMMIT="8a63844a3d3166273a83d5e94d8820d62ad82510" \
543
+ RUN OPENCODE_COMMIT="cfe79755427fd8d3b94be76e1c7912bdc943a8ab" \
532
544
  && rm -rf /tmp/opencode-repo \
533
545
  && git clone --depth 1 https://github.com/pRizz/opencode.git /tmp/opencode-repo \
534
546
  && cd /tmp/opencode-repo \
@@ -726,7 +738,7 @@ RUN /opt/opencode/bin/opencode --version
726
738
  # Note: If this fails in container builds due to "~" path resolution, retry with
727
739
  # OPENCODE_CONFIG_DIR=/home/opencode/.config/opencode set explicitly.
728
740
  RUN mkdir -p /home/opencode/.npm \
729
- && npx --yes get-shit-done-cc --opencode --global \
741
+ && npx --yes get-shit-done-cc@1.11.1 --opencode --global \
730
742
  && rm -rf /home/opencode/.npm/_cacache /home/opencode/.npm/_npx
731
743
 
732
744
  # -----------------------------------------------------------------------------
@@ -7,9 +7,9 @@ https://github.com/pRizz/opencode-cloud (mirror: https://gitea.com/pRizz/opencod
7
7
 
8
8
  ## What is included
9
9
 
10
- - Ubuntu 24.04 (noble)
10
+ - Ubuntu 25.10 (questing)
11
11
  - Non-root user with passwordless sudo
12
- - mise-managed runtimes (Node.js LTS, Python 3.12, Go 1.24)
12
+ - mise-managed runtimes (Node.js 25, Python 3.14, Go 1.25)
13
13
  - Rust toolchain via rustup
14
14
  - Core CLI utilities (ripgrep, eza, jq, git, etc.)
15
15
  - opencode preinstalled with the GSD plugin
@@ -801,7 +801,7 @@ mod tests {
801
801
  #[test]
802
802
  fn format_build_error_includes_recent_logs() {
803
803
  let mut logs = VecDeque::new();
804
- logs.push_back("Step 1/5 : FROM ubuntu:22.04".to_string());
804
+ logs.push_back("Step 1/5 : FROM ubuntu:24.04".to_string());
805
805
  logs.push_back("Step 2/5 : RUN apt-get update".to_string());
806
806
  logs.push_back("E: Unable to fetch some archives".to_string());
807
807
  let error_logs = VecDeque::new();
@@ -44,9 +44,9 @@ pub struct DistroInfo {
44
44
  pub family: DistroFamily,
45
45
  /// Distribution ID (e.g., "ubuntu", "amzn", "debian")
46
46
  pub id: String,
47
- /// Pretty name (e.g., "Ubuntu 22.04.3 LTS")
47
+ /// Pretty name (e.g., "Ubuntu 24.04 LTS")
48
48
  pub pretty_name: String,
49
- /// Version ID (e.g., "22.04", "2023")
49
+ /// Version ID (e.g., "24.04", "2023")
50
50
  pub version_id: Option<String>,
51
51
  }
52
52
 
@@ -327,18 +327,18 @@ mod tests {
327
327
  #[test]
328
328
  fn test_parse_os_release_ubuntu() {
329
329
  let content = r#"
330
- PRETTY_NAME="Ubuntu 22.04.3 LTS"
330
+ PRETTY_NAME="Ubuntu 24.04 LTS"
331
331
  NAME="Ubuntu"
332
- VERSION_ID="22.04"
333
- VERSION="22.04.3 LTS (Jammy Jellyfish)"
334
- VERSION_CODENAME=jammy
332
+ VERSION_ID="24.04"
333
+ VERSION="24.04 LTS (Noble Numbat)"
334
+ VERSION_CODENAME=noble
335
335
  ID=ubuntu
336
336
  ID_LIKE=debian
337
337
  "#;
338
338
  let info = parse_os_release(content).unwrap();
339
339
  assert_eq!(info.family, DistroFamily::Debian);
340
340
  assert_eq!(info.id, "ubuntu");
341
- assert_eq!(info.version_id, Some("22.04".to_string()));
341
+ assert_eq!(info.version_id, Some("24.04".to_string()));
342
342
  }
343
343
 
344
344
  #[test]
@@ -375,8 +375,8 @@ ID=debian
375
375
  let debian_info = DistroInfo {
376
376
  family: DistroFamily::Debian,
377
377
  id: "ubuntu".to_string(),
378
- pretty_name: "Ubuntu 22.04".to_string(),
379
- version_id: Some("22.04".to_string()),
378
+ pretty_name: "Ubuntu 24.04".to_string(),
379
+ version_id: Some("24.04".to_string()),
380
380
  };
381
381
  let commands = get_docker_install_commands(&debian_info).unwrap();
382
382
  assert!(!commands.is_empty());