Commit graph

12 commits

Author SHA1 Message Date
23ec3c9840 chore(deps): lock file maintenance
All checks were successful
Continuous Integration / Build Package (push) Successful in 1m41s
Continuous Integration / Lint, Check & Test (push) Successful in 1m52s
2026-02-23 00:01:40 +00:00
770f408dad
feat: ensure image output format matches file extension
All checks were successful
Continuous Integration / Build Package (push) Successful in 30s
Continuous Integration / Lint, Check & Test (push) Successful in 45s
- Add hokusai/image.py with Pillow-based format detection and conversion
- Pass output_format to OpenAI gpt-image models and BFL API
- Convert mismatched images after provider writes (fallback for all providers)
- Handle RGBA-to-RGB flattening for JPEG targets
- Add Pillow dependency
2026-02-21 19:04:33 +01:00
4def49350e
chore: rename bulkgen to hokusai
All checks were successful
Continuous Integration / Build Package (push) Successful in 35s
Continuous Integration / Lint, Check & Test (push) Successful in 57s
2026-02-20 17:08:12 +01:00
2aec223c5d
feat: add GPT-5 generation models to OpenAI providers
Text: gpt-5, gpt-5-mini, gpt-5-nano (all with vision), o3, o4-mini
(with vision), o3-pro (text only)
Image: gpt-image-1.5, gpt-image-1-mini (both with reference images)
2026-02-15 14:42:43 +01:00
870023865d
feat: add OpenAI as provider for text and image generation
- Add openai_text.py: text generation via OpenAI chat completions API
  (gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o3-mini)
- Add openai_image.py: image generation via OpenAI images API
  (gpt-image-1 with reference image support, dall-e-3, dall-e-2)
- Refactor builder provider dispatch from TargetType to model-name index
  to support multiple providers per target type
- Fix circular import between config.py and providers/__init__.py
  using TYPE_CHECKING guard
- Fix stale default model assertions in tests
- Add openai>=1.0.0 dependency
2026-02-15 13:48:06 +01:00
ee6c411f3c
feat: add click-based colorized output with progress events and build timer
- Add click as explicit dependency (already bundled with typer)
- Replace typer.echo calls with click.echo + click.style for colorized output
- Add BuildEvent enum and ProgressCallback to builder for decoupled progress reporting
- Remove direct typer dependency from builder module
- Show per-target status with colored labels (skip/ok/fail/...)
- Display elapsed build time in summary
- Colorize graph and clean command output
- Update CLI tests to match new output format
2026-02-14 21:25:38 +01:00
cf73511876
refactor: replace blackforest package with custom async BFL client
Some checks failed
Continuous Integration / Build Package (push) Successful in 41s
Continuous Integration / Lint, Check & Test (push) Failing after 59s
Implement bulkgen/providers/bfl.py with a fully async httpx-based client
that supports all current and future BFL models (including flux-2-*).
Remove the blackforest dependency and simplify the image provider by
eliminating the asyncio.to_thread wrapper.
2026-02-14 16:44:36 +01:00
eef9712924
test: add integration tests for all modules
Some checks failed
Continuous Integration / Build Package (push) Successful in 34s
Continuous Integration / Lint, Check & Test (push) Failing after 48s
- Add pytest-asyncio dev dependency and configure asyncio_mode=auto
- Add filterwarnings to suppress third-party PydanticDeprecatedSince20
- Add conftest.py with shared fixtures (project_dir, write_config, etc.)
- Add test_config.py: YAML loading, target type inference, model resolution
- Add test_graph.py: DAG construction, cycle detection, build ordering
- Add test_state.py: hash functions, state persistence, dirty checking
- Add test_builder.py: full build pipeline with FakeProvider, incremental
  builds, selective builds, error isolation, dependency cascading
- Add test_providers.py: ImageProvider and TextProvider with mocked clients
- Add test_cli.py: build/clean/graph commands via typer CliRunner
- All 94 tests pass with 0 basedpyright warnings
2026-02-14 11:07:36 +01:00
09ff809e9a
chore: add basedpyright and ruff to dev dependencies 2026-02-13 20:29:47 +01:00
7ab25d49cb
refactor: switch to basedpyright, remove pydantic-settings
- Replace pyright with basedpyright in devenv.nix (custom hook)
- Add basedpyright to devenv packages
- Fix all basedpyright warnings: add DiGraph[str] type args, annotate
  class attributes, narrow SyncResponse, handle unused call results,
  suppress unavoidable Any from yaml.safe_load and untyped blackforest
- Replace pydantic-settings[yaml] with direct pyyaml dependency
- Update CLAUDE.md to reflect basedpyright and dependency changes
2026-02-13 20:25:28 +01:00
53e402b119
feat: scaffold project structure with package dirs and mistralai dependency
- Create bulkgen/ package with __init__.py
- Create bulkgen/providers/ subpackage with __init__.py
- Add mistralai>=1.0.0 to dependencies
- Add [project.scripts] entry point and [build-system] with hatchling
- Add .bulkgen.state.yaml to .gitignore
2026-02-13 20:07:08 +01:00
4fd7f94db3
build: set up project for bulkgen 2026-02-13 19:32:47 +01:00