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
14 changes: 14 additions & 0 deletions .devcontainer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@

### Added

#### Public Repo Quality
- **CI workflow** (`.github/workflows/ci.yml`) — test and lint jobs on PRs and pushes to main (Node 18, `npm test` + Biome check)
- **CodeQL security analysis** (`.github/workflows/codeql.yml`) — JavaScript scanning on PRs, pushes, and weekly schedule
- **Dependabot** (`.github/dependabot.yml`) — weekly updates for npm (root + docs) and GitHub Actions
- **Bug report template** (`.github/ISSUE_TEMPLATE/bug-report.yml`) — YAML form with version, environment, and repro steps
- **Feature request template** (`.github/ISSUE_TEMPLATE/feature-request.yml`) — YAML form with problem/solution/alternatives
- **Issue template config** (`.github/ISSUE_TEMPLATE/config.yml`) — commercial licensing contact link
- **Pull request template** (`.github/pull_request_template.md`) — description, type of change, and checklist
- **CONTRIBUTING.md** — contribution guidelines with GPL-3.0 licensing and CLA requirement
- **CLA.md** — Individual Contributor License Agreement enabling dual licensing
- **Dual licensing notice** — added to README.md (Contributing + License sections) and LICENSE.txt (header)
- **CI badge** — added to README.md badge row
- **SPDX copyright headers** — `GPL-3.0-only` identifier and `Copyright (c) 2026 Marcus Krueger` added to all 36 source files (setup.js, test.js, 34 shell scripts)

#### Docs
- **CLAUDE.md** — new "Status Bar Widgets" section documenting widget properties, token color conventions, label fusion pattern, and available widget types

Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/connect-external-terminal.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
#
# Connect to CodeForge devcontainer from external terminal with tmux
# For Claude Code Agent Teams split-pane support
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/agent-browser/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

VERSION="${VERSION:-latest}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/ast-grep/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

VERSION="${VERSION:-latest}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/biome/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

VERSION="${VERSION:-latest}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/ccburn/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
Comment on lines +2 to +3
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Align SPDX expression with the stated dual-license model.

Line 2 currently declares this file as GPL-only. If this repository is intended to be dual-licensed, scanners and downstream consumers will still treat this file as GPL-only unless the SPDX expression encodes both grants.

Suggested fix
-# SPDX-License-Identifier: GPL-3.0-only
+# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-CodeForge-Commercial

Also ensure LicenseRef-CodeForge-Commercial is defined in your license documentation.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-CodeForge-Commercial
# Copyright (c) 2026 Marcus Krueger
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.devcontainer/features/ccburn/install.sh around lines 2 - 3, Replace the
existing SPDX header line (the current "SPDX-License-Identifier" declaration at
the top of this script) with a dual-license SPDX expression that explicitly
lists both the GPL grant and your commercial license identifier (for example
using "GPL-3.0-only OR LicenseRef-CodeForge-Commercial"); also ensure you add a
corresponding LicenseRef-CodeForge-Commercial entry in your repository's license
documentation so the custom identifier is defined and discoverable.

set -euo pipefail

# === SETUP ===
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/ccms/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# === SETUP ===
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/ccstatusline/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# Cleanup on exit
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/ccusage/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# === SETUP ===
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/chromaterm/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/claude-code-native/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

VERSION="${VERSION:-latest}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/claude-monitor/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/claude-session-dashboard/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/dprint/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/hadolint/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/kitty-terminfo/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/lsp-servers/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# LSP Servers for Claude Code
# Installs pyright, typescript-language-server, and gopls binaries

Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/mcp-qdrant/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# Import options from devcontainer-feature.json
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/mcp-qdrant/poststart-hook.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

echo "[mcp-qdrant] Registering Qdrant MCP server with Claude Code..."
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/notify-hook/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

VERSION="${VERSION:-latest}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/ruff/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/shellcheck/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/shfmt/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# ==============================
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/tmux/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -e

VERSION="${VERSION:-latest}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/tree-sitter/install.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
set -euo pipefail

# === IMPORT OPTIONS ===
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/check-setup.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Verify CodeForge setup is working correctly
# Run anytime with: check-setup

Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-aliases.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Setup cc/claude/ccraw aliases for claude with local system prompt support
#
# Idempotent: removes the entire managed block then re-writes it fresh.
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-auth.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Configure Git (GitHub CLI) and NPM authentication from .secrets file or environment variables.
# Environment variables override .secrets values, supporting Codespaces secrets and localEnv.
# Auth failure should not block other setup steps, so set -e is intentionally omitted.
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-config.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Copy configuration files to workspace based on file-manifest.json

CONFIG_DIR="${CONFIG_SOURCE_DIR:?CONFIG_SOURCE_DIR not set}"
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-migrate-claude.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# One-time migration: /workspaces/.claude → $HOME/.claude
# Migrates config, credentials, and rules from the old bind-mount location
# to the new home directory (Docker named volume).
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-plugins.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Install plugins: official Anthropic + local devs-marketplace registration
#
# Individual marketplace plugins are enabled via enabledPlugins in settings.json.
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-projects.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Auto-detect projects under /workspaces/ and register them in Project Manager's projects.json.
# Runs an initial scan synchronously, then starts an inotifywait background watcher
# that updates the project list instantly when directories are created or removed.
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-terminal.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Configure VS Code Shift+Enter → newline for Claude Code terminal input
# Writes to ~/.config/Code/User/keybindings.json (same path /terminal-setup uses)

Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup-update-claude.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Update Claude Code CLI to the latest version (native binary only)
# Runs non-blocking in background by default via setup.sh
# All failures are warnings — this script never blocks container startup
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/scripts/setup.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2026 Marcus Krueger
# Master setup script for CodeForge devcontainer

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
Expand Down
61 changes: 61 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Bug Report
description: Report a bug or unexpected behavior
labels: ["bug"]
body:
- type: textarea
id: description
attributes:
label: Description
description: A clear description of the bug
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior
placeholder: |
1. Run `npx codeforge-dev`
2. Open in container
3. ...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What you expected to happen
validations:
required: true

- type: input
id: version
attributes:
label: CodeForge Version
description: "Run `npm view codeforge-dev version` or check package.json"
placeholder: "1.14.2"
validations:
required: true

- type: dropdown
id: environment
attributes:
label: Environment
options:
- Docker Desktop
- Podman
- GitHub Codespaces
- DevPod
- Other
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other context, screenshots, or logs
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: Commercial Licensing
url: mailto:696222+AnExiledDev@users.noreply.github.com
about: Inquire about commercial licensing options
Comment on lines +3 to +5
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use a monitored inbox for commercial licensing contact.

Line 4 points to a GitHub noreply address, which is typically non-receiving for inbound licensing inquiries.

Suggested fix
 contact_links:
   - name: Commercial Licensing
-    url: mailto:696222+AnExiledDev@users.noreply.github.com
+    url: mailto:licensing@your-domain.example
     about: Inquire about commercial licensing options
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/ISSUE_TEMPLATE/config.yml around lines 3 - 5, The "Commercial
Licensing" contact in config.yml uses a GitHub noreply address in the url field
which will not receive inbound messages; update the url mailto value for the
"Commercial Licensing" entry (the name: Commercial Licensing block and its url
property) to point to a monitored, real support or sales inbox (e.g.,
support@yourdomain or licensing@yourdomain) so licensing inquiries are delivered
and monitored.

36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Feature Request
description: Suggest a new feature or enhancement
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What problem does this solve?
placeholder: "I'm always frustrated when..."
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed Solution
description: Describe the solution you'd like
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Any alternative solutions or features you've considered
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional Context
description: Any other context, mockups, or references
validations:
required: false
16 changes: 16 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"

- package-ecosystem: "npm"
directory: "/docs"
schedule:
interval: "weekly"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
Loading
Loading