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
6 changes: 6 additions & 0 deletions .beans.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
beans:
path: .beans
prefix: df-
id_length: 4
default_status: draft
default_type: task
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
# df-96x0
title: BUG gemini install fails on windows without node
status: draft
type: task
priority: normal
created_at: 2026-03-12T15:26:49Z
updated_at: 2026-03-12T15:30:09Z
---

gemini install fails on windows when using devcontainer json without node already installed. THe install OCI feature funtion appears from the logs to correctly install node, however, the remainder of the gemini install script can't seem to find the node installation, and so fails. THis doesn't seem to be reproducible in tests, even when using the published tests in _global, however attempts to install the feature on an ubuntu image without node preinstalled, on a windows host, fail.
11 changes: 11 additions & 0 deletions .beans/df-9ui4--migrate-todo-folder-to-beans.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
# df-9ui4
title: migrate todo folder to beans
status: draft
type: task
priority: normal
created_at: 2026-03-12T15:19:23Z
updated_at: 2026-03-12T15:26:18Z
---

prior to installing beans to the project, todo tasks were tracked in md files in the todo folder. Items should be migrated to beans, by creating a bean for each file in the todo folder, and applying the corresponding status, inferred from the file path orcontent of the file. Once the todo has been created in beans, the original file for that todo should be deleted.
21 changes: 21 additions & 0 deletions .beans/df-g2t5--new-feature-brew.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
# df-g2t5
title: 'new feature: Brew'
status: draft
type: task
created_at: 2026-03-12T15:40:26Z
updated_at: 2026-03-12T15:40:26Z
---

Install script from homebrew: https://brew.sh/
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Note it provides instructions at the end on how to add brew to the PATH. We should provide an option in devcontainer.json to do this automatically (so that brew power users can override it manually).

Should first check if the required version of brew is already installed. only install brew if a sufficient version of brew cannot be found.

Add an option to install a brew package immediately after brew installs. Must be able to pass brew args. Note we can only install one package this way. can we find a workaround for this?

Add an option to remove brew after package install to keep the image small? This is just for the purpose of installing a package with brew


6 changes: 4 additions & 2 deletions src/gemini-cli/devcontainer-feature.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Copyright (c) 2026 Stuart Bell
// Licensed under the MIT License. See https://github.com/stu-bell/devcontainer-features/blob/main/LICENSE for license information.
"id": "gemini-cli",
"version": "0.1.5",
"version": "0.1.6",
"name": "Google Gemini CLI (via npm)",
"description": "Installs Google Gemini CLI for AI code assistance https://geminicli.com",
"keywords": ["AI", "agent", "code", "coding", "alpine", "ubuntu", "debian"],
Expand All @@ -27,7 +27,9 @@
},
"dependsOn": {
"ghcr.io/stu-bell/devcontainer-features/node": {
"min_node_version": "20"
"min_node_version": "20",
"installYarnUsingApt": false,
"nodeGypDependencies": false
}
}
}
Expand Down
7 changes: 6 additions & 1 deletion src/gemini-cli/util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Copyright (c) 2026 Stuart Bell
# Licensed under the MIT License. See https://github.com/stu-bell/devcontainer-features/blob/main/LICENSE for license information.

# v0.1.5
# v0.1.6

# Colors for output
RED='\033[0;31m'
Expand Down Expand Up @@ -295,5 +295,10 @@ esac
cd -
rm -rf "$TEMP_DIR"

# Re-source profile.d to pick up any PATH changes made by the feature
for f in /etc/profile.d/*.sh; do
. "$f" 2>/dev/null || true
done

echo "Feature installation complete for $FEATURE_URI"
}
8 changes: 4 additions & 4 deletions test/gemini-cli/scenarios.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[
{
"name": "Build on alpine",
"name": "alpine",
"expected_exit_code": 0,
"devcontainer": {
"image": "mcr.microsoft.com/devcontainers/base:alpine",
Expand All @@ -11,7 +11,7 @@
}
},
{
"name": "Build on Ubuntu",
"name": "ubuntu",
"expected_exit_code": 0,
"devcontainer": {
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
Expand All @@ -22,7 +22,7 @@
}
},
{
"name": "Build on Debian",
"name": "debian",
"expected_exit_code": 0,
"devcontainer": {
"image": "mcr.microsoft.com/devcontainers/base:debian",
Expand All @@ -33,7 +33,7 @@
}
},
{
"name": "Build on debian - node upgrade required",
"name": "debian-node-update-required",
"expected_exit_code": 0,
"devcontainer": {
"image": "mcr.microsoft.com/devcontainers/javascript-node:1-18-bookworm",
Expand Down
18 changes: 18 additions & 0 deletions todo/install_oci_feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Progress
Agent to update this section at relevant progress points...

# Intro
- This document contains instructions for a task
- Review the whole doc and ask me for more info if needed
- Check for edge cases or design flaws or features that I may have missed and ask me for clarification if necessary
- Keep a note to, at significant points during the task, replace the #Progress section with a progress update. Keep progress updates concise. They should only contain enough for me to decide if I need to assist or course-correct. Include any decisions about removing functionality or changes that might break backward compatibility. Especially make sure to highlight any changes or removals to existing tests
- Keep a note to, after completion of all tasks, prepend a summary of changes to this todo doc for me to review

- Run test commands by directing test output to a temp file, to save tokens. Grep (or read the tail lines of the file) for failure messages if the tests have a non-zero exit code, rather than reading the whole file.
- Run tests: `test/heartbeat.sh "test/test-builds.sh -s test/path/to/scenarios.json -o scenario names"`
- Test docs: `test/test-builds.sh --help`

# Task details...

gemini build is failing on ddebian in gemini tests, and \_global tests. I believe it's to do with the passing of args via install_oci_feature. INSTALLYARNUSINGAPT should remain true in node, to mirror the official feature, however, we should be able to set it to false in the gemini feature. Why isn't this feature option flowing through? In the test build logs, we can see the values of the args and see that INSTALLYARNUSINGAPT=false in gemini feature becomes INSTALLYARNUSINGAPT=true in the node feature.

Loading