Image-Gin's first working API call
Image-Gin came online on July 21, 2025 with the first ImageKit API call that actually placed files where they belonged — followed within minutes by the first command-launched modal that took user parameters and produced a file. The plugin's identity arrived in a single overnight session.
Why Care?
If you write in Obsidian, you know how often the flow breaks for a single image. You're drafting; you need a hero image; you switch to a browser, generate or search, download, drag in, rename, write alt text, hope the path resolves. Five minutes of context loss for one image. Image-Gin was conceived to remove that break.
This is the retrospective for the day Image-Gin first did the thing — placed an image into the note's expected directory, named correctly, via an API call from inside Obsidian. Logged from May 2026 because the changelog convention didn't exist when this happened.
What's New?
(All historical, captured retrospectively. The whole arc: 2025-07-20 to 2025-07-21.)
init(project): initialize project Image Gin(2025-07-20) — Image-Gin gets its own repo with manifest, esbuild config, and a settings shell.progress(settings): progress on settings for ImageGin(2025-07-20) — the settings tab took shape: branded image styles, output paths, default models.progress(image-styles): branded image styles now go with the request(2025-07-21 00:08) — the brand styles dropdown now actually fed into the API call. Selection became consequential.milestone(api): ImageKit API call now storing files in the right place(2025-07-21 00:44) — the first commit where the round trip worked. ImageKit returned a file. The plugin saved it. The note could reference it.add(service): add imagekit service(2025-07-21 01:20) — the API call got pulled into a proper service module.milestone(modal): command launching local to remote images now works with user set image parameters(2025-07-21 01:39) — the command palette to user-parameterized API call to file-on-disk loop became real.
The arc
The plugin started as a settings page and a stub. Settings without behavior is the worst kind of code — it suggests the thing exists when it doesn't. The two-day arc was about turning the settings into something the API actually used, then getting the file path right (Obsidian's vault filesystem has its own conventions for relative paths and special characters), then wrapping the whole thing in a modal that command-palette-fired.
The one o'clock-in-the-morning commits tell you what kind of work it was. Each step was small. The compound was the plugin coming alive.
What this enabled
ImageKit was the first provider integration. The pattern that landed here — settings → service module → modal-driven API call → file written to vault — became the template for every subsequent provider Image-Gin would learn:
Recraft (modal-aware, with brand-style support)
Ideogram (with the temperature slider that's now everywhere)
Magnific (the rebrand from Freepik, captured in
context-v/Migrating-when-an-API-Provider-Rebrands.md)
The unified wide-modal layout that all of these now share traces back to the initial Image-Gin modal from the July 21 milestone. When filestarter later bundled the wide-modal pattern into a shared starter, this is the reference implementation it was modeled on.
Retrospective notes
Written 2026-05-04, ten months after the founding day.
This entry lands at
changelog/2025-07-21_01.mdeven though the project init was July 20 — because the substance (the working API call) was the 21st. The convention is to date entries by what they document, not by when adjacent setup happened.