Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
254 commits
Select commit Hold shift + click to select a range
2fdbc96
chore: update stale workflow
May 2, 2026
a13e279
ci: add trufflehog secrets scan
May 2, 2026
0ca21da
docs: add CODEOWNERS
May 2, 2026
e322549
ci: add FUNDING.yml
KooshaPari May 2, 2026
f04b643
docs: add CONTRIBUTING.md and SECURITY.md
May 2, 2026
2658d36
Add CHANGELOG.md scaffolding
May 2, 2026
b6e8c02
docs: trim README to 169 lines, add fork preamble
May 2, 2026
406bc64
docs: trim README to 169 lines, add fork preamble (#5)
KooshaPari May 2, 2026
208dce5
ci(cargo-deny): add workflow_dispatch trigger, fix double-tag checkout
KooshaPari May 2, 2026
1d7024f
chore: bump version to 0.1.1 (#6)
KooshaPari May 3, 2026
4a97dce
chore: commit untracked infrastructure files
May 3, 2026
2d0cd6d
ci: pin all GitHub Actions SHA [org-bootstrap-2026-05-03]
May 3, 2026
864dd7c
fix(cargo-deny): remove stale RUSTSEC-2026-0049 ignore (#7)
KooshaPari May 4, 2026
9c1ef52
fix(cargo-deny): ignore unmaintained transitive advisories with ratio…
May 4, 2026
6100def
fix(cargo-deny): ignore unmaintained transitive advisories with ratio…
KooshaPari May 4, 2026
8fd7740
fix(forgecode): update compact history handling
May 4, 2026
fb623a1
fix(forge_main): suppress cursor position timeout errors on exit
May 5, 2026
e20a527
feat(forgecode): add LLM summarization for compaction
May 5, 2026
ebd253b
security(ci): replace trufflehog/actions/setup with go install + setu…
May 6, 2026
c14fe20
fix(forgecode): restore workspace members list
May 6, 2026
da8df12
chore: add cargo-deny bans config and update workflows
May 6, 2026
1e757df
fix(forgecode): restore workspace members
May 6, 2026
b2b6383
fix(workflows): use pull_request instead of pull_request_target
May 6, 2026
bfbfba7
chore: add omniroute benchmark plan
May 6, 2026
9bdfc16
chore(forgecode): add packageManager field
May 7, 2026
1b59732
fix(rust): tighten deny.toml wildcards policy in forgecode
May 7, 2026
93761b2
Merge upstream/main into main
May 28, 2026
c2bfb2b
Merge fork commit 6100def72 into synced main
May 28, 2026
598cc3a
chore(forgecode): shell-script hygiene (#14)
KooshaPari Jun 8, 2026
be8425b
chore(forgecode): align editorconfig with org standard (#16)
KooshaPari Jun 9, 2026
62e209a
ci: add release workflow with tag triggers, build, test, and crates.i…
Jun 9, 2026
8c91ed6
chore(forgecode): align version drift (#17)
KooshaPari Jun 9, 2026
7411096
chore(forgecode): add standard CODEOWNERS (#15)
KooshaPari Jun 9, 2026
ba9b6b8
chore(gitignore): adopt shared node template from phenotype-tooling (…
KooshaPari Jun 12, 2026
70e43e7
feat(session-viewer): hide subagent sessions, add FTS5 search, pagina…
Dmouse92 Jun 16, 2026
c462519
wip: pre-push snapshot 2026-06-18T02:00:13Z from wrap-up session
Jun 18, 2026
f4d300b
feat(forgecode): perf-v2 — dirty tracking, drop guard, FTS5 search, b…
KooshaPari Jun 21, 2026
eb1e886
feat(forgecode): v3 — :reparent/:cwd commands, sort UI, cwd+message_c…
KooshaPari Jun 21, 2026
345fb70
feat(forgecode): v4 — :reparent/:cwd commands, sort UI, ConversationS…
KooshaPari Jun 21, 2026
d31e918
fix(forge_app,forge_repo): add new Conversation fields to test fixtures
Jun 21, 2026
66d6160
chore(ci): regenerate workflows via gh-workflow-gen
Jun 21, 2026
1c91f6e
feat(config): document OutputMode in schema + chore(docs): L7 stub re…
Jun 21, 2026
2050073
fix(forgecode): v4-ux P0 reactivity — kill stale background tasks, Ar…
KooshaPari Jun 21, 2026
708849c
fix(forgecode): v4-ux P0 reactivity — kill stale background tasks, Ar…
KooshaPari Jun 21, 2026
ccf325a
feat(forgecode): status bar — Claude-style context/tokens/tools/last-…
KooshaPari Jun 22, 2026
aff6aed
fix(forge): non-TTY stdin no longer hangs; re-point auto-update to Ko…
KooshaPari Jun 23, 2026
95a9d1e
feat(forgecode): compress tool output to 3 lines with expand hint (#29)
KooshaPari Jun 24, 2026
85a24d1
feat(forgecode): ASCII color coding + symbol per tool type (#30)
KooshaPari Jun 24, 2026
953cced
feat(forgecode): promote subagent tool discovery to top-level system …
KooshaPari Jun 24, 2026
5a85a2b
fix: resolve persistent 'database is locked' in shared .forge.db (P1+…
KooshaPari Jun 26, 2026
476fa62
feat(forgecode): wire refresh_fts_index into background cadence (P2a)…
KooshaPari Jun 26, 2026
21dd884
feat(forgecode): configurable WAL checkpointer + ctrl_c graceful flus…
KooshaPari Jun 26, 2026
4e3e866
feat(P2b): external-content FTS5 migration + query rewrites (#36)
KooshaPari Jun 26, 2026
528d429
feat(forgecode): intent-gated semantic pruning — state machine + sche…
KooshaPari Jun 26, 2026
11f72d2
Merge upstream/main: resolve conflicts per UNION intents
Jun 26, 2026
b6ffe90
fix: add ConversationTree handler to ui.rs match statement
Jun 26, 2026
05b7c53
feat(forge_dbd): single-writer daemon scaffold — collapse N:1 SQLite …
KooshaPari Jun 26, 2026
e66cf4d
test(forge_repo): add comprehensive test suite for P1/P2/P2b/P4 merge…
KooshaPari Jun 26, 2026
596669b
feat(tooling): forge-session-cleaner — classifier + safe gated delete…
KooshaPari Jun 26, 2026
fe1a62f
feat: transparent zstd compression of context blobs (lossless) (#40)
KooshaPari Jun 26, 2026
fb118c9
feat: auto_vacuum=INCREMENTAL + periodic incremental_vacuum (#41)
KooshaPari Jun 26, 2026
7753b94
feat(tooling): forge-context-backfill — batch-compress existing rows …
KooshaPari Jun 26, 2026
8cf33ae
feat(forge_main): polish conv-view UX + wire FTS search & sort into s…
KooshaPari Jun 27, 2026
73771f2
feat(forge): CC parity — /clear /init /rewind commands with full infr…
KooshaPari Jun 27, 2026
ba6090a
feat(forgecode): absorb 5 pheno crates + drift wiring + ZSH hooks + s…
Jun 27, 2026
39f7dc4
fix(forge_select): debounce preview rendering to 150ms to avoid per-k…
KooshaPari Jun 28, 2026
22a89e0
fix(ci): unblock CI pipeline — fix cargo-deny action + setup-go SHA p…
KooshaPari Jun 28, 2026
5802046
feat(forge): add /review, /test, /think CC parity commands + debounce…
Jun 28, 2026
8e67a7f
feat(forge): subagent breadcrumb — '↳' prefix for conversations with …
Jun 28, 2026
536bb23
feat(forge): subagent breadcrumb 'spawned by X' in info panel + conv …
Jun 28, 2026
8654a3f
feat(forge): add :fts-optimize command — FTS5 index maintenance
Jun 28, 2026
6dfd197
feat(forge): add :fts-optimize command — FTS5 index maintenance
Jun 28, 2026
d46243e
fix(security): redact secrets in Debug (ApiKey/AuthCredential/OAuth t…
Jun 28, 2026
c461435
docs(audit): forgecode overhaul deep-audit + phased DAG WBS roadmap (…
KooshaPari Jun 28, 2026
789f270
feat(p0): de-fork doc/governance surface to Rust-first (#50)
KooshaPari Jun 28, 2026
c243d64
chore(crates): remove dead ghostty-kit + clarify forge_dbd WIP status…
KooshaPari Jun 28, 2026
86388f5
fix(stubs): implement openai http_delete + make NoopIntentExtractor a…
KooshaPari Jun 28, 2026
132dea4
fix(p1): redact device-code secrets + dedup update bots (#52)
KooshaPari Jun 28, 2026
21f2fbc
feat(p2): forge_dbd health probe + graceful drain on shutdown (#53)
KooshaPari Jun 28, 2026
082c0b0
fix(p2): cancellable/bounded async task lifecycle (FTS loop, forge3d …
KooshaPari Jun 28, 2026
8d3e09a
feat(p2): metrics facade + tracing spans on hot paths (#55)
KooshaPari Jun 29, 2026
95e265a
feat(p2): unify retry on RetryConfig + add circuit breaker & bulkhead…
KooshaPari Jun 29, 2026
db097a6
ci(p1): blocking fmt+clippy+test gates (Linux) (#57)
KooshaPari Jun 29, 2026
e04a618
docs(p4): STRIDE threat model + ops runbook/SLO/postmortem (#58)
KooshaPari Jun 29, 2026
2a01d21
fix(p3): remove runtime set_var + fix MCP TOCTOU + document unsafe (#59)
KooshaPari Jun 29, 2026
7c23c9c
feat(p3): criterion bench spine + jemalloc/mimalloc allocator + bound…
KooshaPari Jun 29, 2026
75614df
feat(p5): consolidate 3x internal SSE stop-signal + provider-model co…
KooshaPari Jun 29, 2026
2500511
feat(p5): OAuth + resilience contract specs (provider-models) (#64)
KooshaPari Jun 29, 2026
c3372a0
chore(contracts): pin to KooshaPari/phenotype-contracts SSOT + confor…
KooshaPari Jun 29, 2026
65e54aa
docs: agentic-coding-CLI SOTA research dossier + competitor matrix (#67)
KooshaPari Jun 29, 2026
0346be2
fix(security): default-deny policy engine + opt-in redacted telemetry…
KooshaPari Jun 30, 2026
17d95c3
perf(forge_repo): lite conversation-list query — fixes 3GB+ RAM (#71)
KooshaPari Jun 30, 2026
e0cee4a
docs(packaging): forge-dev installer + CLI spec (#72)
KooshaPari Jun 30, 2026
4373179
perf(update): skip GitHub update check in CI/agent-mode; default freq…
KooshaPari Jun 30, 2026
45e1073
perf(alloc): linux-gate jemalloc; use mimalloc on macOS (ARM64 bug #2…
KooshaPari Jun 30, 2026
b56b88d
feat(maintenance): add 'forge maintenance compress' for zstd backfill…
KooshaPari Jun 30, 2026
6a479b2
feat(daemon): Zig forge-daemon (kqueue+posix_spawn+task-ring) for den…
KooshaPari Jun 30, 2026
6f8f80a
feat(repo-map): tree-sitter repository structure map (#73)
KooshaPari Jun 30, 2026
aefcabc
chore: upstream diff analysis report (#70)
KooshaPari Jul 2, 2026
2484fa8
chore(perf): baseline measurement (per-agent RSS / idle CPU / system-…
KooshaPari Jul 2, 2026
a14b7f7
chore: cross-fleet hygiene sweep (#69)
KooshaPari Jul 2, 2026
edd84c2
feat(repo-map): tree-sitter repo map + forge3d CLI + similarity hash-…
KooshaPari Jul 3, 2026
465542a
feat(forge-tui): wire forge_tui TUI dashboard crate into workspace (#80)
KooshaPari Jul 3, 2026
5b5f843
feat(packaging): forge-dev binary + install guide (T18) (#81)
KooshaPari Jul 3, 2026
5f6e621
chore(forge3d): polish CLI help text — add about/doc strings to all c…
KooshaPari Jul 3, 2026
c0ad2a3
chore(sync): integrate upstream tailcallhq/forgecode (32 commits) (#83)
KooshaPari Jul 3, 2026
71c6a7a
feat(publish): add cargo-dist-style release pipeline for forge-dev (#84)
KooshaPari Jul 3, 2026
2947254
feat(brand): add Terminal-Forge golden icon set (vision-pillar L96) (…
KooshaPari Jul 6, 2026
4a76d20
docs(readme): inject centered brand icon + tagline (L104) (#88)
KooshaPari Jul 6, 2026
4aff1f6
feat(brand): L101 motion polish — animated SVG variant (#89)
KooshaPari Jul 6, 2026
ca824ff
docs(identity): L105 animated demo media (SVG + MP4 + README) (#90)
KooshaPari Jul 7, 2026
4e993dd
feat(forge_display): Terminal-Forge palette → theme.rs (Phenotype-org…
KooshaPari Jul 7, 2026
f5fc938
docs(readme): L107 — link to visual identity demo (L105 ladder close)…
KooshaPari Jul 7, 2026
2220633
audit(v38): forgecode C03 scorecard — Agent Readiness (18/36, D) (#85)
KooshaPari Jul 7, 2026
9d67435
renames(helioslite): publish-surface rename + provenance docs + relea…
KooshaPari Jul 7, 2026
3df1540
feat(forge_infra): L133 cross-pollination — backoff + cyclic_check + …
KooshaPari Jul 7, 2026
69f83e9
fix: per-provider error resilience and /providers remove TUI command
Jul 15, 2026
d7bc2cd
ci: fix release workflow heredoc indentation
Jul 22, 2026
3e7cb77
feat(gpu): add forge_gpu GpuLane for heterogeneous CUDA routing (#95)
KooshaPari Jul 22, 2026
5c9d92c
ci: harden workflows and unblock checks
Jul 22, 2026
562093e
ci: fix rust-cache action pin
Jul 22, 2026
81bb0df
ci: use pinned trufflehog action
Jul 22, 2026
f250836
ci: repair pinned action shas
Jul 22, 2026
14e1d29
ci: fix trufflehog image tag
Jul 22, 2026
8d5418c
ci: restore deny and nextest commands
Jul 22, 2026
e6fa43c
ci: install zig for workspace builds
Jul 22, 2026
a540d2e
chore: preserve local forgecode work
Jul 22, 2026
5e37326
ci: gate forge daemon zig core
Jul 22, 2026
f06a456
fix: preserve update fallback result handling
Jul 22, 2026
c1a39b2
fix: repair perf harness linux build
Jul 22, 2026
39fb119
perf: fast-path zsh rprompt
Jul 22, 2026
8edbc9b
fix: parse theme hex without string slicing
Jul 22, 2026
75ec697
fix: satisfy strict string safety lints
Jul 22, 2026
965d831
chore: preserve forgecode workflow and generated state
Jul 22, 2026
e238501
fix: satisfy ci clippy in perf harness
Jul 22, 2026
c34802b
chore: preserve forgecode workspace fixes
Jul 22, 2026
b182e54
ci: make autofix workflow verify only
Jul 22, 2026
2ca8562
ci: format fork gpu lane crate
Jul 22, 2026
3fa49a5
Merge remote-tracking branch 'fork/main' into fix/workflow-indent
Jul 22, 2026
aa329b8
chore: preserve forge info formatting
Jul 22, 2026
3056ea7
ci: align autofix and schema gates
Jul 22, 2026
5c82439
test: canonicalize generated schema
Jul 22, 2026
7422a3e
Merge pull request #96 from KooshaPari/fix/workflow-indent
KooshaPari Jul 23, 2026
fa5a7df
fix: gate forge3d unix sockets on windows
Jul 23, 2026
f7b7b9c
fix: gate forge3d daemon on unix
Jul 23, 2026
4ebc842
fix: preserve forge3d cli metadata on windows
Jul 23, 2026
8a6b095
feat(dual-harness): shared-3task.v1 process_smoke adapter
Jul 23, 2026
41f1c0a
chore: update Cargo.lock for dual_harness workspace member
Jul 23, 2026
11889d4
Merge pull request #98 from KooshaPari/feat/dual-harness-shared-3task
KooshaPari Jul 23, 2026
8e8efab
fix: clear forge3d windows release warnings
Jul 23, 2026
e3d5a9c
Merge remote-tracking branch 'fork/main' into fix/windows-release-for…
Jul 23, 2026
4948c81
fix: align dual harness with ci lint
Jul 23, 2026
e13d79b
fix: vendor dual harness fixture for ci
Jul 23, 2026
fd17142
Merge pull request #97 from KooshaPari/fix/windows-release-forge3d
KooshaPari Jul 23, 2026
c84b1e6
fix: gate forge daemon unix sockets on windows (#99)
KooshaPari Jul 23, 2026
7567a59
fix: repair winterminal windows release compile (#100)
KooshaPari Jul 23, 2026
5796c89
fix: report helioslite package version
Jul 23, 2026
2c20fd4
Merge pull request #101 from KooshaPari/fix/helioslite-version-brandi…
KooshaPari Jul 23, 2026
20f844b
fix: keep forge main cli tests compiling
Jul 23, 2026
f238e4f
fix: keep forge main cli tests compiling (#102)
KooshaPari Jul 23, 2026
a3cb940
Merge remote-tracking branch 'fork/main' into fix/per-provider-error-…
Jul 23, 2026
296be1d
fix: satisfy provider resilience clippy
Jul 23, 2026
9f2c201
fix: per-provider error resilience and provider removal (#94)
KooshaPari Jul 23, 2026
38332bd
chore: trigger main CI after merge train
Jul 23, 2026
58c3512
docs: record forgecode merge train
Jul 23, 2026
79c08fe
fix: gate forge tui unix sockets on windows
Jul 23, 2026
9f599be
fix: gate forge dbd unix sockets on windows
Jul 23, 2026
336318b
fix: silence forge dbd windows unix-gate warnings
Jul 23, 2026
425daf0
ci: install protoc for nightly and attestation
Jul 23, 2026
016130a
fix: align installers with fork release artifacts
Jul 23, 2026
14116a0
ci: use supported artifact provenance action
Jul 23, 2026
31b27db
ci: enable dev binary feature in nightly
Jul 23, 2026
290a312
ci: add scorecard workflow for quality gating
Jul 21, 2026
9a76738
chore(ci): harden github workflows and add fork scorecard/sast coverage
Jul 22, 2026
e9b1d4e
ci: fix workflow yaml needs indentation
Jul 22, 2026
43268fb
fix(spinner): suppress ANSI output when stderr is not a terminal
Jul 24, 2026
b7007ff
chore: add bench/ to .gitignore
Jul 24, 2026
6410d19
ci: add Mergify auto-merge rules
KooshaPari Jul 28, 2026
c883fd0
ci: add Trunk.io lint/format config
KooshaPari Jul 28, 2026
0c1ffa4
ci: add CircleCI parallel pipeline
KooshaPari Jul 28, 2026
db286f0
feat(compaction): add configurable compression and importance-based p…
Jul 28, 2026
db0c480
fix: integrate compaction strategies across providers
Jul 29, 2026
d957f56
ci: make generated lint and release gates runnable
Jul 29, 2026
8bf0e00
style: satisfy workspace formatting and clippy
Jul 29, 2026
11c99c3
wip(repo): preserve workspace conversation query
Jul 29, 2026
55e6582
feat(compaction): add AI-driven compression and semantic pruning
Jul 29, 2026
e7aa5b5
chore: preserve workspace conversation query support
Jul 29, 2026
9611099
fix(ui): adjust stream renderer for compaction integration
Jul 29, 2026
1ed5446
chore(ui): expose workspace conversation scope
Jul 29, 2026
2fc24ba
chore(api): thread workspace conversation scope
Jul 29, 2026
bb53128
fix(repo): preserve typed conversation summary selection
Jul 29, 2026
5aca614
fix: propagate lightweight conversation workspace scope
Jul 29, 2026
5b49d77
fix: propagate lightweight conversation workspace scope
Jul 29, 2026
7c0271a
fix(env): make workspace hashes deterministic
KooshaPari Jul 29, 2026
b01fb13
Merge branch 'chore/preserve-workspace-conversation-query'
Jul 29, 2026
52288fa
fix: use deterministic hash builder API
Jul 29, 2026
0279fe6
fix: avoid unchecked compaction indexing
Jul 29, 2026
8c463ac
chore(ci): regenerate release workflow manifests
Jul 29, 2026
80ace82
ci: refresh generated release workflow
Jul 29, 2026
3666eaa
style: format compaction bounds check
Jul 29, 2026
4d3d80b
ci: rerun canonical release gates
Jul 29, 2026
68aa2e4
ci: compare generated workflows semantically
Jul 29, 2026
230970e
build: lock workflow yaml parser
Jul 29, 2026
fd99999
chore: refresh forge config schema
Jul 29, 2026
1c9d07f
ci: harden scorecard and add fuzz smoke
Jul 29, 2026
10e2c98
ci: repair Mergify workflow syntax
Jul 29, 2026
33d5c2a
ci: remove obsolete Mergify rules
Jul 29, 2026
7bc16b3
fix: update plist XML parser dependencies
Jul 29, 2026
10736e6
ci: pin CodeQL and attestation actions
Jul 29, 2026
2f1b3a9
fix: refresh dependency SBOMs and remove vulnerable DNS stack
Jul 29, 2026
4326cbe
fix: remove unsupported hickory DNS configuration
Jul 29, 2026
0b70bcc
fix: scope release drafter write permissions
Jul 29, 2026
5e9ec7a
fix: upgrade workflow generator dependencies
Jul 29, 2026
273c52b
fix: replace unmaintained fnv_rs dependency
Jul 29, 2026
588b44c
fix: refresh configuration schema after DNS removal
Jul 29, 2026
91ae0ee
fix: migrate forge dbd protocol to bincode 2
Jul 29, 2026
c00e411
chore: configure Renovate dependency updates
Jul 29, 2026
92455e5
fix: remove non-actionable Mergify automation
Jul 29, 2026
96b811d
fix: replace direct deprecated yaml dependency
Jul 29, 2026
fdab9e1
style: format yaml policy test
Jul 29, 2026
b37e076
fix: remove unused embedding and clipboard image features
Jul 29, 2026
958ad86
ci: harden Scorecard and add fuzz smoke (#105)
KooshaPari Jul 29, 2026
eeeeaca
fix: use modern AWS HTTPS client
Jul 29, 2026
a170348
fix: grant release drafter label permission
Jul 29, 2026
b1c5bf3
fix: skip fork auto-labeling
Jul 29, 2026
3c94b43
fix: pin scorecard action to valid upstream commit
Jul 29, 2026
dd591a1
chore: retrigger ci after scorecard pin update
Jul 29, 2026
f0684f3
ci: update .mergify.yml
KooshaPari Jul 29, 2026
53b30c7
ci: update .github/workflows/ci.yml
KooshaPari Jul 29, 2026
5ad53c5
ci: update .github/workflows/trunk-check.yml
KooshaPari Jul 29, 2026
f8dcc30
ci: update .github/workflows/scorecard.yml
KooshaPari Jul 29, 2026
9d6d5fa
ci: update .github/stale.yml
KooshaPari Jul 29, 2026
0f767e3
ci: update .trunk/trunk.yaml
KooshaPari Jul 29, 2026
aa4397e
ci: update renovate.json
KooshaPari Jul 29, 2026
2a12599
ci: update .pre-commit-config.yaml
KooshaPari Jul 29, 2026
e301d3e
ci: skip release-drafter labels for fork PR branches
Jul 29, 2026
8bf81eb
ci: run release-drafter autolabeler only on push
Jul 29, 2026
ed0eec8
ci: disable release-drafter autolabeler in fork PR checks
Jul 29, 2026
1f039b8
ci: remove release-drafter autolabeler step
Jul 29, 2026
c55c97d
merge main into pr106 dependency hardening
Jul 31, 2026
a33d8ef
ci: refresh generated workflows after merge
Jul 31, 2026
be967dc
ci: remove fork-incompatible release labeling and repair trunk pin
Jul 31, 2026
38b506a
ci: disable release drafter autolabeler
Jul 30, 2026
406f0f1
ci: pin trunk action to verified revision
Jul 30, 2026
0394522
ci: replace legacy trunk config with rust gates
Jul 30, 2026
2f971d7
ci: refresh generated workflow
Jul 30, 2026
f5e8919
ci: quote workflow output paths
Jul 30, 2026
60fb0a7
ci: refresh generated release workflow
Jul 30, 2026
348ee52
ci: repair generated workflows
KooshaPari Jul 31, 2026
77b5216
merge promoted CI repairs into pr106
Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
248 changes: 248 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
# =============================================================================
# CircleCI — Parallel CI for multi-language projects
# =============================================================================
# Used alongside GitHub Actions for:
# - Parallel execution on free tier (3000 credits/mo)
# - Faster builds with machine executors
# - Additional build matrix coverage
# =============================================================================

version: 2.1

# Orbs — reusable packages
orbs:
rust: circleci/rust@1.6.1
python: circleci/python@2.1.1
node: circleci/node@6.3.0
go: circleci/go@1.11.2
trunk: trunk-io/trunk@1.0.0

# Executors
executors:
small:
docker:
- image: cimg/base:current
resource_class: small

medium:
docker:
- image: cimg/base:current
resource_class: medium

large:
docker:
- image: cimg/base:current
resource_class: large

rust-executor:
docker:
- image: cimg/rust:1.80
resource_class: medium

python-executor:
docker:
- image: cimg/python:3.12
resource_class: medium

go-executor:
docker:
- image: cimg/go:1.22
resource_class: medium

node-executor:
docker:
- image: cimg/node:22.0
resource_class: medium

# Commands (reusable steps)
commands:
install-rust-tools:
steps:
- run:
name: Install Rust tools
command: |
cargo install cargo-deny cargo-audit || true

install-python-tools:
steps:
- run:
name: Install Python tools
command: |
pip install uv || curl -LsSf https://astral.sh/uv/install.sh | sh

install-go-tools:
steps:
- run:
name: Install Go tools
command: |
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

save-deps-cache:
parameters:
key:
type: string
steps:
- save_cache:
key: deps-{{ .Branch }}-<< parameters.key >>-{{ checksum "package-lock.json" }}{{ checksum "Cargo.lock" }}{{ checksum "go.sum" }}{{ checksum "uv.lock" }}
paths:
- ~/.cargo
- ~/.cache/pip
- node_modules
- vendor

restore-deps-cache:
parameters:
key:
type: string
steps:
- restore_cache:
keys:
- deps-{{ .Branch }}-<< parameters.key >>-{{ checksum "package-lock.json" }}{{ checksum "Cargo.lock" }}{{ checksum "go.sum" }}{{ checksum "uv.lock" }}
- deps-{{ .Branch }}-<< parameters.key >>-
- deps-main-<< parameters.key >>-

# Jobs
jobs:
# --- TRUNK CHECK (unified) ---
trunk-lint:
executor: small
steps:
- checkout
- trunk-check:
trunk-args: [--ci=fix]

# --- RUST ---
rust-check:
executor: rust-executor
steps:
- checkout
- restore-deps-cache:
key: rust
- run:
name: Check formatting
command: cargo fmt --all -- --check
- run:
name: Clippy lints
command: cargo clippy --all-targets --all-features -- -D warnings
- run:
name: Run tests
command: cargo test --all --workspace
- save-deps-cache:
key: rust

rust-build:
executor: rust-executor
steps:
- checkout
- restore-deps-cache:
key: rust
- run:
name: Build release
command: cargo build --release
- save-deps-cache:
key: rust
- persist_to_workspace:
root: target
paths:
- release

# --- PYTHON ---
python-check:
executor: python-executor
steps:
- checkout
- install-python-tools
- restore-deps-cache:
key: python
- run:
name: Install dependencies
command: uv sync --all-extras
- run:
name: Ruff lint
command: uv run ruff check .
- run:
name: Ruff format check
command: uv run ruff format --check .
- run:
name: Type check
command: uv run mypy . || true
- run:
name: Run tests
command: uv run pytest --cov -v
- save-deps-cache:
key: python
- store_test_results:
path: test-results

# --- GO ---
go-check:
executor: go-executor
steps:
- checkout
- restore-deps-cache:
key: go
- run:
name: Vet
command: go vet ./...
- run:
name: Lint
command: |
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
golangci-lint run
- run:
name: Test
command: go test -v -race -coverprofile=coverage.out ./...
- store_artifacts:
path: coverage.out
- save-deps-cache:
key: go

# --- TYPESCRIPT ---
node-check:
executor: node-executor
steps:
- checkout
- restore-deps-cache:
key: node
- run:
name: Install deps
command: npm ci || true
- run:
name: Lint
command: npx biome lint . || npx eslint . || true
- run:
name: Format check
command: npx biome format --check . || npx prettier --check . || true
- run:
name: Test
command: npm test || true
- save-deps-cache:
key: node

# Workflows
workflows:
version: 2
ci:
jobs:
- trunk-lint
- rust-check:
filters:
branches:
only: /.*/
tags:
only: /^v.*/
- rust-build:
requires:
- rust-check
- python-check:
filters:
branches:
only: /.*/
- go-check:
filters:
branches:
only: /.*/
- node-check:
filters:
branches:
only: /.*/
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']
33 changes: 33 additions & 0 deletions .github/branch-protection.main.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"required_status_checks": {
"strict": true,
"contexts": [
"ci",
"lint",
"test",
"cargo-deny",
"trufflehog"
]
},
"enforce_admins": true,
"required_pull_request_reviews": {
"dismiss_stale_reviews": true,
"require_code_owner_reviews": true,
"required_approving_review_count": 1,
"require_last_push_approval": true,
"bypass_pull_request_allowances": {
"users": ["KooshaPari"],
"teams": ["maintainers"],
"apps": ["renovate", "github-actions"]
}
},
"restrictions": null,
"required_linear_history": true,
"allow_force_pushes": false,
"allow_deletions": false,
"block_creations": false,
"required_conversation_resolution": true,
"lock_branch": false,
"allow_fork_syncing": true,
"required_signatures": true
}
56 changes: 56 additions & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# =============================================================================
# Stale Bot — Auto-close stale issues and PRs
# =============================================================================
# Free via GitHub App: https://github.com/apps/stale
# Prevents issue rot, keeps backlog clean
# =============================================================================

# Configuration for Stale - https://github.com/probot/stale

# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30

# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7

# Only issues or pull requests with all of these labels are checked if stale.
# Defaults to `[]` (disabled).
onlyLabels: []

# Issues or pull requests with these labels will never be considered stale.
exemptLabels:
- pinned
- security
- bug
- enhancement
- critical
- dependencies

# Set to true to ignore issues in a project (defaults to false)
exemptProjects: false

# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: false

# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false

# Label to use when marking as stale
staleLabel: stale

# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This issue/PR has been automatically marked as stale because it has not had
recent activity. It will be closed in 7 days if no further activity occurs.

# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

# Limit to only `issues` or `pulls`
only: null

# Maximum number of operations per hour (GitHub rate limit)
maximumPerHour: 10

# Limit the number of stale issues per run
limitPerRun: 50
Loading
Loading