Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
1c73859
Update readme.md
ernop Oct 20, 2024
c04eb0f
Update readme.md
ernop Oct 20, 2024
5ddc833
fix importsa
ernop Oct 20, 2024
1c59633
minor
ernop Oct 22, 2024
2f3a8ea
x
ernop Oct 22, 2024
df43ecf
more specifics
ernop Oct 29, 2024
345ab40
latest as I work
ernop Nov 10, 2024
7c669e8
work
Nov 10, 2024
00d06b9
refactor
Mar 20, 2025
ebdb796
in-progress,
ernop Apr 20, 2025
9c5927c
GPTOne plus interactive mode plus tons of other stuff. gotta redo the…
ernop Sep 15, 2025
4a2dc43
various
Sep 15, 2025
a691983
okay fixed some of the weird structure
ernop Sep 15, 2025
96af003
fixing weird class
Sep 15, 2025
3bb780f
more fixing etc
ernop Sep 16, 2025
bed82b3
fi
Sep 16, 2025
6d43550
fixed a bunch of things in the Label method of output. Also added co…
ernop Sep 16, 2025
929a123
more
Sep 16, 2025
1c03183
ideogramV2a
Sep 16, 2025
86dc7fa
combiner stuff
ernop Sep 18, 2025
9141930
testing cursor
ernop Sep 18, 2025
8d80bd0
.net 8 update
ernop Sep 18, 2025
6e1061c
.net 9
ernop Sep 18, 2025
3c06910
little fixes
ernop Sep 18, 2025
2e1bacb
redundancy
ernop Sep 18, 2025
a4fc67d
hmm combining utils
ernop Sep 18, 2025
7623ced
general little fixups
ernop Sep 18, 2025
3ad4351
ai refactoring, hmmm
ernop Sep 18, 2025
3cb2eb0
standardizing
ernop Sep 18, 2025
ad30ebb
fixing appearance...
ernop Sep 18, 2025
4dcda8e
fix combiner
ernop Sep 18, 2025
e4a1f09
fixing error display
ernop Sep 18, 2025
a561d96
config
ernop Sep 18, 2025
5a731df
add a vertical max to the image input to combined images.
ernop Sep 18, 2025
6ae15ea
fix layout and have redone CombineImages
ernop Sep 18, 2025
d0b23db
combinedImage
Sep 18, 2025
2fdd6bc
more async
ernop Sep 18, 2025
b2f72a7
fix image saving, error text accuracy etc
ernop Sep 19, 2025
73aa7b9
Fix naming, and test out all recraft styles
ernop Sep 21, 2025
8e81d35
recraft etc
Sep 21, 2025
400e964
little stuff
ernop Sep 24, 2025
3fe87cb
preparing goog?
ernop Sep 25, 2025
dd1bc78
nanoBanana working
ernop Sep 25, 2025
ebbe944
Fighting with Imagen 4
ernop Sep 25, 2025
b7b79fd
imagen4 etc working now
ernop Sep 25, 2025
e56bc58
little fix
ernop Sep 25, 2025
568b8e9
little fixes
Sep 25, 2025
2d39cce
fixes etc
ernop Sep 26, 2025
d048dbb
ideogram describe
ernop Sep 26, 2025
4fb84c3
fixups
ernop Sep 26, 2025
339ad65
Ideogram v3
ernop Sep 27, 2025
34fef28
background stype fixes
ernop Sep 27, 2025
d5543bb
combined image layouts
ernop Sep 28, 2025
0507813
multiple renders of the same described image.
ernop Sep 28, 2025
1d516f1
desc multi
ernop Sep 29, 2025
9f82e00
getting there
ernop Sep 29, 2025
9a38ed8
fixed
Sep 29, 2025
6b8158e
jesus this is literally the next fermat's last theorem
ernop Sep 29, 2025
cdc881a
fixedish
ernop Sep 29, 2025
25a345e
more detail
ernop Sep 29, 2025
44e3e3c
config qwen
ernop Sep 29, 2025
bcd43da
x
ernop Sep 29, 2025
06f3f94
little fixes
ernop Oct 1, 2025
1145e1a
refactor etc.
ernop Oct 1, 2025
db2f664
rename and genericize describers
ernop Oct 1, 2025
157f6b4
Image describing
ernop Oct 7, 2025
2eef210
adjustments
ernop Oct 16, 2025
c72e9c3
last
Oct 30, 2025
9c34306
feat: Add resolution options to Google image generators
cursoragent Nov 25, 2025
ff6ec4f
Refactor Google generators to use options classes
cursoragent Nov 25, 2025
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
30 changes: 30 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Code Style and Organization Preferences

## Communication Style
- NEVER use congratulatory or praising language like "you were absolutely right", "great call", etc.
- Keep responses direct and focused on the technical work
- Avoid unnecessary enthusiasm or validation language

## XML Documentation
- NEVER add XML summary blocks (`/// <summary>`) to any code unless you have a useful, meaningful, non-obvious comment to add. Never add the dumb one-liner versions of them which just restate the obvious
- But, you may add them to explain what an entire class does, and useful high-level general design information. This kind of summary is great and useful.
- Use regular comments (`//`) for explanations when needed

## Namespace Organization
- Use only ONE level of namespace (e.g., `MultiImageClient`)
- NEVER use nested namespaces (e.g., `MultiImageClient.Utils`)
- Managing naming conflicts is the responsibility of the code, not namespace hierarchy

## Constants and Configuration
- Constants used in only ONE file should stay in that file (as private const)
- Only move constants to a shared constants file if they're used in MULTIPLE files
- Before centralizing constants, first consider if the files should be combined instead
- Use normal naming conventions for constants (e.g., `Padding`, `FontSize`)
- AVOID ALL_CAPS naming style for constants

## Code Organization Philosophy
- Prefer keeping related functionality together rather than over-abstracting
- Constants that appear in multiple places might indicate files should be merged
- Only create shared utilities when there's genuine reuse across different functional areas
- Branding text and similar elements that appear throughout the app are good candidates for centralization

23 changes: 23 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[*.cs]

# IDE0022: Use block body for method
csharp_style_expression_bodied_methods = true

# IDE0090: Use 'new(...)'
dotnet_diagnostic.IDE0090.severity = none

# CA1416: Validate platform compatibility
dotnet_diagnostic.CA1416.severity = none

# Empty line formatting rules
# Remove leading empty lines after opening braces
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true

# Limit consecutive empty lines
dotnet_style_allow_multiple_blank_lines_experimental = false
dotnet_style_allow_statement_immediately_after_block_experimental = false
26 changes: 15 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
**/ideogram.log
**/saves/**
**/settings.json
**/bin/**
**/obj/**
**/.vs/**
**/.vscode/**
**/ideogram_pages/**
**/ideogram_data_all.json
/MultiImageClient/claude-bad.txt
/djangoManager/imageMaker/logs/django.log
**/ideogram.log
**/saves/**
**/settings.json
**/bin/**
**/obj/**
**/.vs/**
**/.vscode/**
**/ideogram_pages/**
**/ideogram_data_all.json
/MultiImageClient/claude-bad.txt
/djangoManager/imageMaker/logs/django.log
gen-lang*.json
magic*.png
**/prompt_log.json
**/Temp.txt
19 changes: 19 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Repository Guidelines

## Project Structure & Module Organization
`MultiImageClient/` hosts the C# console orchestrator; `Program.cs` wires runs. `Workflows/` handles execution pipelines; `ImageGenerators/` holds provider adapters; `Describers/` and `promptGenerators/` craft prompts; `promptTransformation/` rewrites text; `Utils/` supplies helpers. Shared contracts live in `ImageGenerationClasses/`. Provider-specific clients sit in `BFLApi/`, `IdeogramAPI/`, and `RecraftAPI/`. `djangoManager/` contains the experimental Django gallery (`imageMaker/`, `static/`, `templates/`). Generated artifacts collect in `saves/` and `output*.png`—ignore them in commits.

## Build, Test, and Development Commands
Restore dependencies via `dotnet restore MultiImageClient.sln`. Compile with `dotnet build MultiImageClient.sln`. Execute runs using `dotnet run --project MultiImageClient/MultiImageClient.csproj`; prompts come from `prompts.txt` and `settings.json`. For the Django tooling, create a venv in `djangoManager/`, install `requirements.txt`, and launch `python djangoManager/imageMaker/manage.py runserver`. Run `dotnet format MultiImageClient.sln` before opening a PR.

## Coding Style & Naming Conventions
Use 4-space indentation and .NET naming: PascalCase for public types/methods, camelCase for locals, Async suffix for asynchronous methods. Favor explicit types for shared models; use `var` only when the type is obvious. Route new configuration through `ImageGenerationClasses/Settings.cs` instead of ad-hoc JSON parsing. Python utilities under `djangoManager/` should follow PEP 8 snake_case, with comments reserved for non-obvious prompt logic.

## Testing Guidelines
No dedicated test project exists yet. Manually validate new workflows by running representative prompts and inspecting generated assets and metadata. When adding automated coverage, create an xUnit project referenced by the solution and ensure `dotnet test` succeeds. Capture regression prompts in `prompts.txt` with notes after bug fixes.

## Commit & Pull Request Guidelines
Keep commits focused and use imperative, present-tense subjects as in history (`rename and genericize describers`). Include context in the body for prompt sets or configuration changes. Pull requests should outline workflow impacts, note which services (BFL, Ideogram, Recraft) are affected, call out required settings updates, and attach screenshots or sample outputs for UI or prompt adjustments.

## Configuration & Secrets
Copy `settings - Fill this in and rename it.json` to `settings.json`, populate provider keys locally, and never commit secrets. Prefer user secrets or environment variables when scripting automation or sharing runs.
65 changes: 34 additions & 31 deletions BFLApi/BFLAPIClient.csproj
Original file line number Diff line number Diff line change
@@ -1,32 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>10.0</LangVersion>
<ProjectGuid>{F68A7365-F772-4BD7-867B-A3E4A5D6DC5E}</ProjectGuid>
<Platforms>AnyCPU;ARM64</Platforms>
<StartupObject>BFLAPIClient.BFLClient</StartupObject>
</PropertyGroup>

<ItemGroup>
<Compile Remove="ideogramSaves\**" />
<EmbeddedResource Remove="ideogramSaves\**" />
<None Remove="ideogramSaves\**" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Anthropic.SDK" Version="4.1.1" />
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="System.Drawing.Common" Version="8.0.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ImageGenerationClasses\ImageGenerationClasses.csproj" />
</ItemGroup>

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
</Target>

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<LangVersion>13.0</LangVersion>
<ProjectGuid>{F68A7365-F772-4BD7-867B-A3E4A5D6DC5E}</ProjectGuid>
<Platforms>AnyCPU;ARM64</Platforms>
<StartupObject>BFLAPIClient.BFLClient</StartupObject>
</PropertyGroup>

<ItemGroup>
<Compile Remove="ideogramSaves\**" />
<EmbeddedResource Remove="ideogramSaves\**" />
<None Remove="ideogramSaves\**" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Anthropic.SDK" Version="4.1.1" />
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Magick.NET.Core" Version="14.8.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="OpenAI" Version="2.1.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.11" />
<PackageReference Include="System.Drawing.Common" Version="8.0.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ImageGenerationClasses\ImageGenerationClasses.csproj" />
</ItemGroup>

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
</Target>

</Project>
Loading