Skip to content
Open
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
108 changes: 0 additions & 108 deletions .devcontainer/README.md

This file was deleted.

54 changes: 47 additions & 7 deletions .devcontainer/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,27 @@
set -euo pipefail
IFS=$'\n\t'

# Error handler with descriptive messages and remediation steps
error_with_recovery() {
local step="$1"
local error_msg="$2"
local remediation="$3"

echo "❌ ERROR: $step failed"
echo " Details: $error_msg"
echo " πŸ’‘ Suggested fix: $remediation"
return 1
}

# Read Python version from .python-version (single source of truth)
if [ -f ".python-version" ]; then
export PYTHON_VERSION=$(cat .python-version | tr -d '[:space:]')
echo "Using Python version from .python-version: $PYTHON_VERSION"
echo "βœ“ Using Python version from .python-version: $PYTHON_VERSION"
else
error_with_recovery \
"Python version detection" \
".python-version file not found" \
"Ensure .python-version file exists in repository root"
fi

# Use INSTALL_DIR from environment or default to local bin
Expand All @@ -32,13 +49,36 @@ echo "export PATH=\"$INSTALL_DIR:\$PATH\"" >> ~/.bashrc
# Add to current PATH so subsequent commands can find uv
export PATH="$INSTALL_DIR:$PATH"

make install
# Install dependencies with recovery options
echo "πŸ“¦ Installing project dependencies..."
if ! make install; then
error_with_recovery \
"Dependency installation" \
"make install failed" \
"Try: 1) Check internet connectivity, 2) Manually run 'make install' to see detailed errors, 3) Check disk space with 'df -h'"
fi
echo "βœ“ Dependencies installed successfully"

# Install Marimo tool for notebook editing
"$UV_BIN" tool install marimo
# Install Marimo tool for notebook editing with fallback
echo "πŸ““ Installing Marimo notebook tool..."
if ! "$UV_BIN" tool install marimo 2>/dev/null; then
echo "⚠️ WARNING: Marimo installation failed (non-critical)"
echo " You can manually install later with: uv tool install marimo"
echo " Continuing with bootstrap..."
else
echo "βœ“ Marimo installed successfully"
fi

# Initialize pre-commit hooks if configured
# Initialize pre-commit hooks if configured with fallback
if [ -f .pre-commit-config.yaml ]; then
# uvx runs tools without requiring them in the project deps
"$UVX_BIN" pre-commit install
echo "πŸ”§ Setting up pre-commit hooks..."
if ! "$UVX_BIN" pre-commit install 2>/dev/null; then
echo "⚠️ WARNING: Pre-commit hook installation failed (non-critical)"
echo " You can manually install later with: uvx pre-commit install"
echo " Continuing with bootstrap..."
else
echo "βœ“ Pre-commit hooks configured successfully"
fi
fi

echo "βœ… Bootstrap completed successfully!"
14 changes: 8 additions & 6 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,20 @@
"cpus": 4
},
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {},
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/copilot-cli:1": {}
"ghcr.io/devcontainers/features/copilot-cli:1": {},
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"moby": false
}
},
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
],
"containerEnv": {
"SSH_AUTH_SOCK": "${localEnv:SSH_AUTH_SOCK}",
"INSTALL_DIR": "/home/vscode/.local/bin"
},
"forwardPorts": [8080],
"forwardPorts": [8080, 2718],
"customizations": {
"vscode": {
"settings": {
Expand All @@ -43,7 +44,8 @@
"ms-vscode.makefile-tools",
// AI Assistance
"github.copilot-chat",
"github.copilot"
"github.copilot",
"anthropic.claude-code"
]
}
},
Expand Down
57 changes: 57 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Bug Report
description: Report a bug or unexpected behaviour
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug. Please fill out the sections below.

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: What happened?
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Minimal steps to reproduce the behaviour.
placeholder: |
1. Run `make ...`
2. See error
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behaviour
description: What did you expect to happen?
validations:
required: true

- type: textarea
id: environment
attributes:
label: Environment
description: |
Relevant versions and system info. Run `make info` if available.
placeholder: |
- OS: macOS 14 / Ubuntu 24.04 / Windows 11
- Python: 3.13.x
- rhiza version:
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional context
description: Logs, screenshots, or anything else that may be helpful.
validations:
required: false
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Question / Discussion
url: https://github.com/jqr-labs/rhiza/discussions
about: Ask questions or discuss ideas in GitHub Discussions rather than opening an issue.
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Feature Request
description: Suggest a new feature or enhancement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for proposing a feature. Please align with the team before investing significant effort.

- type: textarea
id: problem
attributes:
label: Problem / motivation
description: What problem does this solve? Why is it valuable?
placeholder: As a contributor I find it hard to ... because ...
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
description: Describe the solution you have in mind.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Other approaches you have considered and why you ruled them out.
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional context
description: Links, mockups, prior art, or anything else that may be helpful.
validations:
required: false
Loading
Loading