diff --git a/CHANGELOG.md b/CHANGELOG.md index 6abcaa2..f4db4a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses [Semantic Versioning](https://semver.org/). +## [0.2.2] - 2026-11-06 + +Documentation only; no change to the code or to what the recipes do. + +### Changed +- README follows the layout shared by the author's other open-source projects: a centred header with a project logo + (`brand/logo.svg`, rendered to PNG by `brand/jana-aset.py`), a Bahasa Melayu summary after the English text, and + absolute links and image URLs so the page also renders on PyPI. + ## [0.2.1] - 2026-10-22 No change to what the recipes do; this release makes the package easier to trust and to install. @@ -78,6 +87,7 @@ First version: one framework replacing four separate tools ### Removed - apiforge's web dashboard and the illustrative token "stats"/daily estimates. +[0.2.2]: https://github.com/aimanmalib/crewforge/compare/v0.2.1...v0.2.2 [0.2.1]: https://github.com/aimanmalib/crewforge/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/aimanmalib/crewforge/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/aimanmalib/crewforge/releases/tag/v0.1.0 diff --git a/CITATION.cff b/CITATION.cff index 8f9dfc5..fd25fc0 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -5,7 +5,7 @@ type: software authors: - given-names: Muhammad family-names: Aiman -version: 0.2.1 +version: 0.2.2 license: MIT repository-code: "https://github.com/aimanmalib/crewforge" abstract: >- diff --git a/README.md b/README.md index 98230e3..28be7b8 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,18 @@ -# crewforge +

crewforge

-**One crew of LLM agents, five recipes: code review, document Q&A, API scaffolding, content and honest academic-writing help. It works with any OpenAI-compatible provider and fails loudly instead of pretending.** +

crewforge

-[![CI](https://github.com/aimanmalib/crewforge/actions/workflows/ci.yml/badge.svg)](https://github.com/aimanmalib/crewforge/actions/workflows/ci.yml) -[![PyPI](https://img.shields.io/pypi/v/crewforge)](https://pypi.org/project/crewforge/) -[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/aimanmalib/crewforge/badge)](https://scorecard.dev/viewer/?uri=github.com/aimanmalib/crewforge) -![Python 3.10–3.14](https://img.shields.io/badge/python-3.10%E2%80%933.14-blue) -![License: MIT](https://img.shields.io/badge/license-MIT-green) +

CI PyPI OpenSSF Scorecard Python 3.10–3.14 License: MIT

+ +

One crew of LLM agents, five recipes, any OpenAI-compatible provider. · Satu kru ejen LLM, lima resipi, mana-mana penyedia serasi OpenAI.
+PyPI · changelog · porting notes · Built in Malaysia by Aiman Malib

+ +crewforge is a command-line tool and Python library that runs a crew of LLM agents through five recipes: code +review, document Q&A, API scaffolding, content writing and honest academic-writing help. It works with any +OpenAI-compatible provider, reads API keys only from the environment, and fails loudly instead of pretending: a run +in which an agent produced nothing exits with code 1 and names that agent. + +[Bahasa Melayu ↓](#bahasa-melayu) ```bash crewforge review src/ # six reviewers + a summary @@ -377,13 +383,47 @@ Please report vulnerabilities privately through See [SECURITY.md](https://github.com/aimanmalib/crewforge/blob/main/SECURITY.md) for scope notes (what is sent to your provider, and what `validate` executes). -## License +## Bahasa Melayu + +crewforge ialah alat baris arahan dan pustaka Python yang menjalankan satu kru ejen LLM melalui lima resipi: +semakan kod (`review`), soal jawab dokumen (`ask`, `summarize`), penjanaan projek API FastAPI (`scaffold`, +`validate`), penulisan kandungan (`write`) dan bantuan penulisan akademik yang jujur (`academic`). Ia berfungsi +dengan mana-mana penyedia serasi OpenAI, termasuk model tempatan melalui Ollama atau llama.cpp. Kunci API hanya +dibaca dari pemboleh ubah persekitaran, tidak pernah ditulis ke fail. + +**Mengapa satu kru.** crewforge menggabungkan empat alat lama (codeguard, documind, apiforge, contentforge) yang +masing-masing menyimpan salinan sendiri bagi rangka yang sama. Salinan itu sudah berbeza dan setiap satu +menyembunyikan kegagalan dengan cara sendiri. Kini teras dikongsi: pembaikan dibuat sekali, dan setiap alat menjadi +resipi di atas teras itu. + +**Gagal dengan jelas.** Larian yang ejennya memulangkan jawapan kosong atau tidak boleh dihurai, atau pengesah +yang tidak menyemak apa-apa, keluar dengan kod 1 dan menamakan ejen itu. Kod keluar: `0` berjaya, `1` larian +gagal, `2` ralat penggunaan atau konfigurasi. Bilangan token diambil daripada laporan penyedia sahaja, tidak +dianggar. + +**Resipi `academic`.** Membantu pelajar dan penyelidik dengan kerja mereka **sendiri**: merancang dari taklimat +tugasan, memberi ulasan atas draf tanpa menulis semula, memformat rujukan yang diberi pengguna (APA 7, IEEE, +Harvard) tanpa menambah rujukan baharu, dan menulis pernyataan penggunaan AI daripada rekod langkah yang +dijalankan. Output dalam bahasa Inggeris atau Bahasa Melayu (`--language ms`); output BM disemak untuk bentuk +Indonesia seperti *karena* atau *kualitas*. Sumber yang dicadangkan model dilabel UNVERIFIED, atau LIKELY +FABRICATED jika tiada DOI, URL atau ISBN. Tiada ciri "humanise" atau mengelak pengesan AI. + +**Pasang dan guna.** + +```bash +pip install crewforge # Python 3.10 hingga 3.14 +pip install "crewforge[docs,api]" # pilihan: PDF/DOCX dan semakan aplikasi FastAPI +export OPENAI_API_KEY=sk-... # atau penyedia lain, lihat `crewforge providers` +crewforge review src/ +crewforge academic feedback draf.md --brief taklimat.md --language ms +``` -[MIT](https://github.com/aimanmalib/crewforge/blob/main/LICENSE) © Muhammad Aiman +Senarai penyedia, contoh setiap resipi dan seni bina ada dalam bahagian bahasa Inggeris di atas +([Providers](https://github.com/aimanmalib/crewforge#providers), [Recipes](https://github.com/aimanmalib/crewforge#recipes)). ---- +## Licence -Built by [Sasa Teguh](https://sasateguh.com) · Malaysia +[MIT](https://github.com/aimanmalib/crewforge/blob/main/LICENSE) © Muhammad Aiman. Made by [Aiman Malib](https://aimanmalib.com), Malaysia. ## Work with Sasa Teguh diff --git a/brand/jana-aset.py b/brand/jana-aset.py new file mode 100644 index 0000000..b8553ca --- /dev/null +++ b/brand/jana-aset.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +"""Render brand/logo.svg to brand/logo-512.png and brand/logo-64.png with Chromium (Playwright). + + uv run --with playwright==1.58.0 python3 brand/jana-aset.py + +Same script as sasateguh/codr and sasateguh/mypii. The PNGs are committed because the README is also +shown on PyPI, and not every renderer there draws an SVG with gradients reliably. +""" + +import os + +from playwright.sync_api import sync_playwright + +HERE = os.path.dirname(os.path.abspath(__file__)) +with open(os.path.join(HERE, "logo.svg"), encoding="utf-8") as f: + svg = f.read() +with sync_playwright() as p: + b = p.chromium.launch() + for size in (512, 64): + pg = b.new_page(viewport={"width": size, "height": size}, device_scale_factor=1) + inner = svg.replace('width="256" height="256"', f'width="{size}" height="{size}"') + pg.set_content(f'{inner}') + pg.screenshot(path=os.path.join(HERE, f"logo-{size}.png"), omit_background=True) + b.close() diff --git a/brand/logo-512.png b/brand/logo-512.png new file mode 100644 index 0000000..89f6328 Binary files /dev/null and b/brand/logo-512.png differ diff --git a/brand/logo-64.png b/brand/logo-64.png new file mode 100644 index 0000000..04bf5eb Binary files /dev/null and b/brand/logo-64.png differ diff --git a/brand/logo.svg b/brand/logo.svg new file mode 100644 index 0000000..7282bba --- /dev/null +++ b/brand/logo.svg @@ -0,0 +1,24 @@ + + crewforge + + + + + + + + + + + + + + + + + + + + + + diff --git a/pyproject.toml b/pyproject.toml index f1f68ad..30ca010 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "crewforge" -version = "0.2.1" +version = "0.2.2" description = "One crew of LLM agents, five recipes: code review, document Q&A, API scaffolding, content and honest academic-writing help — on any OpenAI-compatible provider." readme = "README.md" license = "MIT" diff --git a/src/crewforge/__init__.py b/src/crewforge/__init__.py index 6119fb9..3560360 100644 --- a/src/crewforge/__init__.py +++ b/src/crewforge/__init__.py @@ -1,3 +1,3 @@ """crewforge — one crew of LLM agents, five recipes, any OpenAI-compatible provider.""" -__version__ = "0.2.1" +__version__ = "0.2.2" diff --git a/uv.lock b/uv.lock index 57aa7d1..a949222 100644 --- a/uv.lock +++ b/uv.lock @@ -275,7 +275,7 @@ toml = [ [[package]] name = "crewforge" -version = "0.2.1" +version = "0.2.2" source = { editable = "." } dependencies = [ { name = "click" },