Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
117a398
ci: add cargo-deny config, fix workspace license (#3)
KooshaPari May 2, 2026
1191300
docs: add CLAUDE.md with fork context and Phenotype-org additions
KooshaPari May 2, 2026
001b25b
docs: add journey-traceability + iconography implementation (#4)
KooshaPari May 2, 2026
e266926
ci: SHA-pin GitHub Actions (normalize to canonical SHAs)
May 2, 2026
e711ee8
chore: update stale workflow
May 2, 2026
45a1ac9
ci: add trufflehog secrets scan
May 2, 2026
27441c6
docs: add CODEOWNERS
May 2, 2026
455e977
ci: add FUNDING.yml
KooshaPari May 2, 2026
a4b2ac2
docs: add CONTRIBUTING.md and SECURITY.md
May 2, 2026
7eed150
Add CHANGELOG.md scaffolding
May 2, 2026
a65e426
docs: trim README to 169 lines, add fork preamble (#5)
KooshaPari May 2, 2026
1861ab5
ci(cargo-deny): add workflow_dispatch trigger, fix double-tag checkout
KooshaPari May 2, 2026
dff43b7
chore: bump version to 0.1.1 (#6)
KooshaPari May 3, 2026
579532d
chore: commit untracked infrastructure files
May 3, 2026
d450e18
ci: pin all GitHub Actions SHA [org-bootstrap-2026-05-03]
May 3, 2026
2f7e3ee
fix(cargo-deny): remove stale RUSTSEC-2026-0049 ignore (#7)
KooshaPari May 4, 2026
d101258
fix(cargo-deny): ignore unmaintained transitive advisories with ratio…
May 4, 2026
0e71c14
fix(forgecode): update compact history handling
May 4, 2026
5f37e9b
fix(forge_main): suppress cursor position timeout errors on exit
May 5, 2026
90146d7
feat(forgecode): add LLM summarization for compaction
May 5, 2026
bcca152
security(ci): replace trufflehog/actions/setup with go install + setu…
May 6, 2026
20b33cb
fix(forgecode): restore workspace members list
May 6, 2026
ab76b89
chore: add cargo-deny bans config and update workflows
May 6, 2026
c7c5110
fix(forgecode): restore workspace members
May 6, 2026
5d4f15c
fix(workflows): use pull_request instead of pull_request_target
May 6, 2026
77bf09c
chore: add omniroute benchmark plan
May 6, 2026
8ac946d
chore(forgecode): add packageManager field
May 7, 2026
8b128de
fix(rust): tighten deny.toml wildcards policy in forgecode
May 7, 2026
cc82d9f
chore(forgecode): shell-script hygiene (#14)
KooshaPari Jun 8, 2026
488f6ac
chore(forgecode): align editorconfig with org standard (#16)
KooshaPari Jun 9, 2026
56ae923
ci: add release workflow with tag triggers, build, test, and crates.i…
Jun 9, 2026
1ee56a0
chore(forgecode): align version drift (#17)
KooshaPari Jun 9, 2026
4c417cc
chore(forgecode): add standard CODEOWNERS (#15)
KooshaPari Jun 9, 2026
0476b71
chore(gitignore): adopt shared node template from phenotype-tooling (…
KooshaPari Jun 12, 2026
340c097
feat(session-viewer): hide subagent sessions, add FTS5 search, pagina…
Dmouse92 Jun 16, 2026
4eac7eb
wip: pre-push snapshot 2026-06-18T02:00:13Z from wrap-up session
Jun 18, 2026
dcace45
feat(forgecode): perf-v2 — dirty tracking, drop guard, FTS5 search, b…
KooshaPari Jun 21, 2026
dd814a0
feat(forgecode): v3 — :reparent/:cwd commands, sort UI, cwd+message_c…
KooshaPari Jun 21, 2026
347be6e
feat(forgecode): v4 — :reparent/:cwd commands, sort UI, ConversationS…
KooshaPari Jun 21, 2026
26bade9
fix(forge_app,forge_repo): add new Conversation fields to test fixtures
Jun 21, 2026
3079a02
chore(ci): regenerate workflows via gh-workflow-gen
Jun 21, 2026
912edeb
feat(config): document OutputMode in schema + chore(docs): L7 stub re…
Jun 21, 2026
38e8354
fix(forgecode): v4-ux P0 reactivity — kill stale background tasks, Ar…
KooshaPari Jun 21, 2026
f93c933
fix(forgecode): v4-ux P0 reactivity — kill stale background tasks, Ar…
KooshaPari Jun 21, 2026
b226139
feat(forgecode): status bar — Claude-style context/tokens/tools/last-…
KooshaPari Jun 22, 2026
d256f56
fix(forge): non-TTY stdin no longer hangs; re-point auto-update to Ko…
KooshaPari Jun 23, 2026
70cb051
feat(forgecode): compress tool output to 3 lines with expand hint (#29)
KooshaPari Jun 24, 2026
2cc5e3f
feat(forgecode): ASCII color coding + symbol per tool type (#30)
KooshaPari Jun 24, 2026
e3d9afa
feat(forgecode): promote subagent tool discovery to top-level system …
KooshaPari Jun 24, 2026
134005f
feat(ghostty-kit): add config parser with golden tests (PR-1)
Jun 24, 2026
21dd657
feat(forge_pheno_memory): wire thegent-memory v2 polyglot facade into…
Jun 24, 2026
7d1f620
feat(ghostty-kit): add control IPC client (PR-2)
Jun 24, 2026
6216f50
feat(shell-plugin): add ghostty glue lib (PR-3)
Jun 24, 2026
f722c68
feat(shell-plugin): add ghostty graphics glue lib (PR-4)
Jun 24, 2026
0f987c7
feat(forge-cli): add ghostty subcommand (PR-5)
Jun 25, 2026
4edaf38
fix(forge_repo): raise pool size/timeout to absorb SQLite contention
Jun 25, 2026
6569c2b
wip: PR-6 forge-pheno-memory preparation
Jun 25, 2026
6d8a6f2
feat(forge_pheno_evals): wire eval harness through thegent-memory v2 …
Jun 25, 2026
da286fc
feat(forge_pheno_shell + forge_pheno_winterminal): shell abstraction …
Jun 29, 2026
a826c90
feat(ghostty-kit + forge_infra): IPC extensions for shader_lint, font…
Jun 29, 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
12 changes: 12 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
root = true

[*]
indent_style = tab
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Default owner for everything
* @KooshaPari
11 changes: 11 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
github: []
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: "npm/[email protected]"
community_bridge: # Replace with a single Community Bridge project slug-id
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project slug-e.g.
custom: # Replace with up to 3 custom sponsorship URLs e.g. ['https://example.com/donate']
23 changes: 23 additions & 0 deletions .github/workflows/cargo-deny.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Cargo Deny
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:

jobs:
cargo-deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
- uses: taiki-e/upload-rust-binary-action@f0d45ae91ee7b8ee928de7a9d04d893a08bcbec6
with:
token: ${{ secrets.GITHUB_TOKEN }}
tool: cargo-deny
- name: Check
run: cargo deny check --log-level error
86 changes: 86 additions & 0 deletions .github/workflows/release-attestation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Release Attestation

on:
release:
types: [published]
workflow_dispatch:

permissions:
contents: read
id-token: write
attestations: write

jobs:
build-and-attest:
name: Build and Attest (SLSA Build L2)
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
attestations: write
env:
CARGO_WORKDIR: .
steps:
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Cache cargo registry and build artifacts
uses: Swatinem/rust-cache@v2
with:
workspaces: |
. -> target

- name: Build release artifacts
working-directory: ${{ env.CARGO_WORKDIR }}
run: |
set -euo pipefail
cargo build --release --locked --workspace --all-targets

- name: Stage release artifacts
working-directory: ${{ env.CARGO_WORKDIR }}
run: |
set -euo pipefail
mkdir -p release-artifacts
# Copy all built executables
find target/release -maxdepth 1 -type f -executable \
-exec cp -t release-artifacts/ {} + 2>/dev/null || true
# Source tarball
tar \
--exclude='./target' \
--exclude='./.git' \
--exclude='./release-artifacts' \
-czf release-artifacts/source.tar.gz \
-C "$GITHUB_WORKSPACE/${{ env.CARGO_WORKDIR }}" .
# Build manifest
cat > release-artifacts/BUILD_MANIFEST.txt <<EOF
# Release Build Manifest
repository: ${{ github.repository }}
ref: ${{ github.ref }}
sha: ${{ github.sha }}
runner: ${{ runner.os }}
rustc: $(rustc --version)
cargo: $(cargo --version)
built_at: $(date -u +%Y-%m-%dT%H:%M:%SZ)
EOF
echo "=== Release artifacts ==="
ls -la release-artifacts/

- name: Upload artifacts for provenance
uses: actions/upload-artifact@v4
with:
name: release-artifacts
path: ${{ env.CARGO_WORKDIR }}/release-artifacts/
if-no-files-found: warn
retention-days: 90

- name: Attest build provenance (SLSA Build L2)
uses: slsa-framework/slsa-github-generator/attest-build-provenance@v1
with:
artifact-name: release-artifacts
24 changes: 24 additions & 0 deletions .github/workflows/trufflehog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Trufflehog Secrets Scan
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches: [main]
pull_request:

jobs:
trufflehog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
- uses: actions/setup-go@0a12ed9e1a4ce4b1a02a5f2dd1e3a9c9e6c7f8b1
with:
go-version: 'stable'
- run: go install github.com/trufflehog/trufflehog/v3@latest
- run: trufflehog github --only-verified --no-update
env:
GH_TOKEN: \${{ secrets.GITHUB_TOKEN }}
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Phenotype-org standard .gitignore — Node
# Source: https://github.com/KooshaPari/phenotype-tooling/blob/main/templates/gitignore-node

# Generated by Cargo
# will have compiled files and executables
debug/
Expand Down Expand Up @@ -35,6 +38,7 @@ jobs/**
*.new
.vscode/
.fastembed_cache/
.cargo/
*.log*
*-dump.json
*-dump.html
Expand All @@ -46,3 +50,24 @@ jobs/**
node_modules/
bench/__pycache__
.ai/

# --- adopted from phenotype-tooling/templates/gitignore-node ---
.cache/
.eslintcache
.idea/
.npm/
.parcel-cache/
.pnp
.pnp.js
*.log
*.swp
/build/
/coverage/
/dist/
/out/
lerna-debug.log*
npm-debug.log*
pnpm-debug.log*
Thumbs.db
yarn-debug.log*
yarn-error.log*
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security

## [0.1.0] - YYYY-MM-DD

### Added
- Initial release
133 changes: 133 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# forgecode — CLAUDE.md

> **Fork of [tailcallhq/forgecode](https://github.com/tailcallhq/forgecode).**
> Phenotype-org additions: `deny.toml` + `cargo-deny.yml` CI bootstrapped 2026-05-01.

---

This repo is a **fork** of the upstream [tailcallhq/forgecode](https://github.com/tailcallhq/forgecode)
project — an AI-enhanced terminal development environment with ZSH plugin support,
TUI, and multi-provider LLM integration.

Do not rewrite upstream content. Any changes to upstream-origin files must be
clearly annotated as Phenotype-org-specific additions.

## Project Overview

| Field | Value |
|-------|-------|
| Workspace | Multi-crate (21 internal crates under `crates/`) |
| Edition | 2024 |
| Rust version | 1.92 |
| License | MIT |
| Upstream | <https://github.com/tailcallhq/forgecode> |

## Phenotype-Org Additions

The following files are Phenotype-org-specific additions (not present in upstream):

- `deny.toml` — cargo-deny configuration
- `cargo-deny.yml` — GitHub Actions CI workflow for dependency auditing

All other files follow upstream conventions.

## Stack

| Layer | Technology |
|-------|------------|
| Runtime | tokio (full, rt-multi-thread, macros, sync, fs, process, signal) |
| HTTP client | reqwest (rustls, hickory-dns, http2) |
| Auth | aws-config, aws-sdk-bedrockruntime, google-cloud-auth |
| CLI | clap 4.6 + clap_complete |
| TUI | reedline 0.47, rustyline 18, termimad, console |
| Serialization | serde, serde_json, serde_yml, toml_edit |
| Diff/patch | dissimilar, similar, strip-ansi-escapes |
| Search | grep-searcher, fzf-wrapped, ignore |
| MCP | rmcp (client + SSE + subprocess + streamable-http transports) |
| Observability | tracing, tracing-subscriber, posthog-rs |
| Git | gix |
| Misc | anyhow, thiserror, uuid, chrono, url, is_ci |

## Key Commands

```bash
# Build (from repo root)
cargo build --release

# Test
cargo test --workspace

# Format
cargo fmt --check

# Lint
cargo clippy --workspace --all-targets -- -D warnings

# Full quality gate
cargo fmt --check && cargo clippy --workspace --all-targets -- -D warnings && cargo test --workspace
```

## Crate Map

```
crates/
├── forge_main # Binary entry point
├── forge_app # Application layer
├── forge_domain # Domain types & logic
├── forge_infra # Infrastructure / adapters
├── forge_api # API layer
├── forge_embed # Embedded resources
├── forge_ci # CI utilities
├── forge_display # Display / TUI rendering
├── forge_fs # Filesystem operations
├── forge_repo # Git repository integration
├── forge_services # Service layer
├── forge_snaps # Snapshot testing (insta)
├── forge_spinner # Spinner / progress UI
├── forge_stream # Streaming utilities
├── forge_template # Template rendering (handlebars)
├── forge_tool_macros # Proc-macro helpers
├── forge_tracker # Telemetry / tracking
├── forge_walker # Directory traversal
├── forge_json_repair # JSON repair
├── forge_select # Interactive selection (fzf)
├── forge_test_kit # Test utilities
├── forge_markdown_stream # Markdown streaming
├── forge_config # Configuration handling
├── forge_eventsource # Event source
└── forge_eventsource_stream # Event source streaming
```

## Quality Gates

- `cargo fmt --check` — formatting must pass
- `cargo clippy --workspace --all-targets -- -D warnings` — zero lints allowed
- `cargo test --workspace` — all tests must pass
- `cargo deny check` — dependency audit (configured in `deny.toml`)
- Snapshot tests via `insta` — review snapshots with `cargo insta review`

## CI / GitHub Actions

- `cargo-deny.yml` runs `cargo deny check advisories licenses` on every PR
- `deny.toml` defines allowlist rules for crates and licenses
- Run `cargo deny check` locally before opening PRs

## Git Workflow

```
origin = KooshaPari/forgecode (Phenotype-org fork)
upstream = tailcallhq/forgecode (canonical upstream)
```

Sync from upstream:
```bash
git fetch upstream
git checkout main
git merge upstream/main
git push origin main
```

## Security & Compliance

- `deny.toml` + `cargo-deny.yml` enforce dependency audit (advisories + licenses)
- `cargo deny check` must pass before merging
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @KooshaPari
25 changes: 25 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Contributing

Contributions are welcome! Please follow these guidelines:

## Development Setup

1. Fork the repository
2. Clone your fork: `git clone https://github.com/<you>/<repo>.git`
3. Install dependencies
4. Run tests: follow the repo's test suite

## Code Style

Follow the project's formatting and linting rules. Run `cargo fmt` for Rust projects, or the appropriate linter for your stack.

## Submitting Changes

1. Create a feature branch
2. Make your changes
3. Add tests if applicable
4. Submit a pull request

## Questions

Open an issue for questions or discussions.
Loading
Loading