Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
20257c6
feat: add self-hosted workspace server (gRPC + Qdrant + Ollama)
Zetkolink Apr 8, 2026
ccc69d6
chore: default services_url to localhost:50051 instead of api.forgeco…
Zetkolink Apr 8, 2026
9bd2ac6
ci: adapt release pipeline for Zetkolink/forgecode fork
Zetkolink Apr 8, 2026
6d6e4e9
fix: point auto-update to Zetkolink/forgecode releases
Zetkolink Apr 8, 2026
e6db299
chore: replace all antinomyhq/forgecode.dev references with Zetkolink…
Zetkolink Apr 8, 2026
4748c2f
chore: replace remaining antinomyhq/forgecode.dev references
Zetkolink Apr 8, 2026
0afbeca
refactor(server): code review fixes — security, correctness, quality
Zetkolink Apr 8, 2026
a7d33e0
refactor(server): low-priority review fixes for v1 release
Zetkolink Apr 8, 2026
f231ea1
fix(server): minor review fixes — safe casts, search limit, Dockerfil…
Zetkolink Apr 8, 2026
255d0a8
docs: add Self-Hosted Workspace Server section to README
Zetkolink Apr 8, 2026
bfbf2e1
chore: add fork copyright notice to LICENSE
Zetkolink Apr 8, 2026
ef43788
chore: remove ForgeCode noreply committer override
Zetkolink Apr 8, 2026
b338454
ci: add Docker image build to release pipeline
Zetkolink Apr 8, 2026
58aa3d3
chore(server): improve docker-compose examples
Zetkolink Apr 8, 2026
f27a9b8
chore: add server start script and README plan
Zetkolink Apr 8, 2026
68385e7
fix: lowercase docker image tags in release workflow
Zetkolink Apr 8, 2026
dccc3be
fix: remove duplicate 'bug' alias from 'type: fix' label
Zetkolink Apr 8, 2026
9e58488
fix: bump Rust version in Dockerfile to 1.92
Zetkolink Apr 8, 2026
c0c456c
feat: show failed file names and reasons in workspace sync output
Zetkolink Apr 8, 2026
596cf31
refactor: auto-generate release.yml with docker job via forge_ci
Zetkolink Apr 8, 2026
e114404
style: apply cargo fmt formatting fixes
Zetkolink Apr 8, 2026
061755d
fix: remove unused release_homebrew and release_npm jobs
Zetkolink Apr 8, 2026
5ca2e73
fix: replace deprecated arduino/setup-protoc with apt-get install
Zetkolink Apr 8, 2026
b19590d
fix: replace autofix-ci/action with git commit+push
Zetkolink Apr 8, 2026
c6ad461
revert: restore autofix-ci/action in autofix workflow
Zetkolink Apr 8, 2026
6eadef5
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 8, 2026
ae41ecd
fix: make setup_protoc cross-platform (apt-get on Linux, brew on macOS)
Zetkolink Apr 8, 2026
4a17983
fix: restore missing 'config-model' command field in built_in_command…
Zetkolink Apr 8, 2026
33d1eba
fix: add shell:bash and choco support to setup_protoc for Windows run…
Zetkolink Apr 8, 2026
2de4c62
fix: stop spinner on StreamDirectWriter drop to prevent content erasure
Zetkolink Apr 8, 2026
429369c
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 8, 2026
db3a879
feat: scope images to their parent message instead of standalone cont…
Zetkolink Apr 8, 2026
b547e3b
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 8, 2026
4f17452
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Apr 8, 2026
d7bebea
refactor: improve multimodal context messages implementation
Zetkolink Apr 8, 2026
2ae83ca
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 8, 2026
2eba47c
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Apr 8, 2026
1f9261e
refactor: fix remaining minor review issues
Zetkolink Apr 8, 2026
155c668
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 8, 2026
fdf4dc2
[autofix.ci] apply automated fixes (attempt 2/3)
autofix-ci[bot] Apr 8, 2026
8e84c2a
style: harmonize is_active() visibility and add doc comment
Zetkolink Apr 8, 2026
56ddd1f
Merge pull request #1 from Zetkolink/fix/streaming-output-erasure
Zetkolink Apr 8, 2026
dce4f11
Merge pull request #2 from Zetkolink/fix/multimodal-context-messages
Zetkolink Apr 8, 2026
17c1d88
feat(skills): deliver skill listing via <system_reminder> attachment
Zetkolink Apr 9, 2026
41ff4bd
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 9, 2026
7a6dfc3
test(skills): add integration tests for SkillListingHandler orchestra…
Zetkolink Apr 9, 2026
e1a155e
[autofix.ci] apply automated fixes
autofix-ci[bot] Apr 9, 2026
923ad5f
refactor(skills): address Phase 0 code review feedback
Zetkolink Apr 9, 2026
4977fa0
Merge pull request #3 from Zetkolink/feat/skill-listing-via-system-re…
Zetkolink Apr 9, 2026
b2cc678
feat(plugins): Phase 1 - plugin manifest discovery and loader infrast…
Zetkolink Apr 11, 2026
7d1e091
feat(plugins): add Claude Code marketplace plugin compatibility
Zetkolink Apr 11, 2026
9278b91
fix(tests): stabilize flaky tests
Zetkolink Apr 11, 2026
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
4 changes: 1 addition & 3 deletions .forge/skills/resolve-conflicts/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,9 +356,7 @@ Key decisions:
- Merged imports from both branches
- Combined test cases
- Regenerated lock files
- [other significant decisions from plan]

Co-Authored-By: ForgeCode <noreply@forgecode.dev>"
- [other significant decisions from plan]"
```

## Decision Tracking
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# Fetches all PR numbers from a GitHub release and outputs their details.
# Usage: ./fetch-release-data.sh <version> [repo]
# Example: ./fetch-release-data.sh v1.32.0 antinomyhq/forge
# Example: ./fetch-release-data.sh v1.32.0 Zetkolink/forgecode

set -euo pipefail

Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ contact_links:
url: https://discord.gg/kRZBPpkgwq
about: Join our Discord server for questions, discussions, and community support
- name: 📖 Documentation
url: https://forgecode.dev/docs/
url: https://github.com/Zetkolink/forgecode/tree/main/docs
about: Check out our comprehensive documentation
- name: ❓ Discussions
url: https://github.com/antinomyhq/forge/discussions
url: https://github.com/Zetkolink/forgecode/discussions
about: Ask questions and discuss ideas with the community
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ body:
attributes:
label: Documentation Location
description: Where is the documentation issue? (URL, file path, or section name)
placeholder: https://github.com/antinomyhq/forge/blob/main/docs/...
placeholder: https://github.com/Zetkolink/forgecode/blob/main/docs/...
validations:
required: true

Expand Down
3 changes: 1 addition & 2 deletions .github/labels.json
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,7 @@
"fix",
"improvement",
"optimization",
"Type: Fix",
"bug"
"Type: Fix"
]
},
{
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,8 @@ jobs:
- name: Install SQLite
run: sudo apt-get install -y libsqlite3-dev
- name: Setup Protobuf Compiler
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
run: if command -v apt-get >/dev/null 2>&1; then sudo apt-get install -y protobuf-compiler; elif command -v brew >/dev/null 2>&1; then brew install protobuf; elif command -v choco >/dev/null 2>&1; then choco install protoc -y; fi
shell: bash
- name: Setup Rust Toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
Expand Down
23 changes: 8 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
name: ci
env:
RUSTFLAGS: '-Dwarnings'
OPENROUTER_API_KEY: ${{secrets.OPENROUTER_API_KEY}}
'on':
pull_request:
types:
Expand All @@ -43,9 +42,8 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup Protobuf Compiler
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
run: if command -v apt-get >/dev/null 2>&1; then sudo apt-get install -y protobuf-compiler; elif command -v brew >/dev/null 2>&1; then brew install protobuf; elif command -v choco >/dev/null 2>&1; then choco install protoc -y; fi
shell: bash
- name: Setup Rust Toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
Expand All @@ -63,9 +61,8 @@ jobs:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup Protobuf Compiler
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
run: if command -v apt-get >/dev/null 2>&1; then sudo apt-get install -y protobuf-compiler; elif command -v brew >/dev/null 2>&1; then brew install protobuf; elif command -v choco >/dev/null 2>&1; then choco install protoc -y; fi
shell: bash
- name: Setup Rust Toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
Expand Down Expand Up @@ -172,9 +169,8 @@ jobs:
uses: actions/checkout@v6
- name: Setup Protobuf Compiler
if: ${{ matrix.cross == 'false' }}
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
run: if command -v apt-get >/dev/null 2>&1; then sudo apt-get install -y protobuf-compiler; elif command -v brew >/dev/null 2>&1; then brew install protobuf; elif command -v choco >/dev/null 2>&1; then choco install protoc -y; fi
shell: bash
- name: Setup Cross Toolchain
if: ${{ matrix.cross == 'false' }}
uses: taiki-e/setup-cross-toolchain-action@v1
Expand All @@ -195,7 +191,6 @@ jobs:
cross-version: '0.2.5'
env:
RUSTFLAGS: ${{ env.RUSTFLAGS }}
POSTHOG_API_SECRET: ${{secrets.POSTHOG_API_SECRET}}
APP_VERSION: ${{ needs.draft_release.outputs.crate_release_name }}
- name: Copy Binary
run: cp ${{ matrix.binary_path }} ${{ matrix.binary_name }}
Expand Down Expand Up @@ -267,9 +262,8 @@ jobs:
uses: actions/checkout@v6
- name: Setup Protobuf Compiler
if: ${{ matrix.cross == 'false' }}
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
run: if command -v apt-get >/dev/null 2>&1; then sudo apt-get install -y protobuf-compiler; elif command -v brew >/dev/null 2>&1; then brew install protobuf; elif command -v choco >/dev/null 2>&1; then choco install protoc -y; fi
shell: bash
- name: Setup Cross Toolchain
if: ${{ matrix.cross == 'false' }}
uses: taiki-e/setup-cross-toolchain-action@v1
Expand All @@ -290,7 +284,6 @@ jobs:
cross-version: '0.2.5'
env:
RUSTFLAGS: ${{ env.RUSTFLAGS }}
POSTHOG_API_SECRET: ${{secrets.POSTHOG_API_SECRET}}
APP_VERSION: ${{ needs.draft_release_pr.outputs.crate_release_name }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
63 changes: 30 additions & 33 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ name: Multi Channel Release
permissions:
contents: write
pull-requests: write
packages: write
jobs:
build_release:
name: build-release
Expand Down Expand Up @@ -83,9 +84,8 @@ jobs:
uses: actions/checkout@v6
- name: Setup Protobuf Compiler
if: ${{ matrix.cross == 'false' }}
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
run: if command -v apt-get >/dev/null 2>&1; then sudo apt-get install -y protobuf-compiler; elif command -v brew >/dev/null 2>&1; then brew install protobuf; elif command -v choco >/dev/null 2>&1; then choco install protoc -y; fi
shell: bash
- name: Setup Cross Toolchain
if: ${{ matrix.cross == 'false' }}
uses: taiki-e/setup-cross-toolchain-action@v1
Expand All @@ -106,7 +106,6 @@ jobs:
cross-version: '0.2.5'
env:
RUSTFLAGS: ${{ env.RUSTFLAGS }}
POSTHOG_API_SECRET: ${{secrets.POSTHOG_API_SECRET}}
APP_VERSION: ${{ github.event.release.tag_name }}
- name: Copy Binary
run: cp ${{ matrix.binary_path }} ${{ matrix.binary_name }}
Expand All @@ -116,40 +115,38 @@ jobs:
release_id: ${{ github.event.release.id }}
file: ${{ matrix.binary_name }}
overwrite: 'true'
npm_release:
docker_release:
needs:
- build_release
name: npm_release
name: docker-release
runs-on: ubuntu-latest
strategy:
matrix:
repository:
- antinomyhq/npm-code-forge
- antinomyhq/npm-forgecode
permissions:
contents: read
packages: write
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
repository: ${{ matrix.repository }}
ref: main
token: ${{ secrets.NPM_ACCESS }}
- name: Update NPM Package
run: './update-package.sh ${{ github.event.release.tag_name }}'
env:
AUTO_PUSH: 'true'
CI: 'true'
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
homebrew_release:
needs:
- build_release
name: homebrew_release
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v6
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- id: version
name: Extract version and repository name
run: |-
echo "tag=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
echo "repo=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
repository: antinomyhq/homebrew-code-forge
ref: main
token: ${{ secrets.HOMEBREW_ACCESS }}
- name: Update Homebrew Formula
run: GITHUB_TOKEN="${{ secrets.HOMEBREW_ACCESS }}" ./update-formula.sh ${{ github.event.release.tag_name }}
context: './server'
push: 'true'
platforms: linux/amd64
tags: |-
ghcr.io/${{ steps.version.outputs.repo }}/workspace-server:${{ steps.version.outputs.tag }}
ghcr.io/${{ steps.version.outputs.repo }}/workspace-server:latest
cache-from: type=gha
cache-to: type=gha,mode=max
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ Cargo.lock
**/.forge/request.body.json
node_modules/
bench/__pycache__
lcov.info
1 change: 0 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ Always verify changes by running tests and linting the codebase

- Safely assume git is pre-installed
- Safely assume github cli (gh) is pre-installed
- Always use `Co-Authored-By: ForgeCode <noreply@forgecode.dev>` for git commits and Github comments

## Service Implementation Guidelines

Expand Down
33 changes: 33 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# CLAUDE.md

## Testing

Use `cargo nextest run` instead of `cargo test`. The project is configured for nextest (see `.config/nextest.toml`).

Always pass `--no-input-handler` to avoid a crossterm panic in non-interactive environments (e.g. when run by an LLM agent).

```bash
# Only unit tests (fast feedback loop during development)
cargo nextest run --no-input-handler --lib

# Specific crate
cargo nextest run --no-input-handler -p forge_domain

# Integration tests only
cargo nextest run --no-input-handler --test '*'

# Watch mode (auto-rerun on file changes)
cargo watch -x "nextest run --no-input-handler --lib"
```

### Final verification

Before considering any task complete, run the **full** workspace test suite **once** at the very end. This is the same command CI uses and catches issues that crate-scoped runs miss (feature-flag interactions, integration tests, cross-crate breakage):

```bash
cargo nextest run --no-input-handler --all-features --workspace
```

Do NOT run this command repeatedly during development — use the crate-scoped commands above for iteration. Run it exactly once as the last step.

Do NOT silently skip work. If a task is out of scope for the current change, place the TODO and mention it in your response summary.
Loading
Loading