chore(deps): bump openrouter_dart to e502f9f (maxInlineImages) #59
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/bump-openrouter-dart-maxinlineimages"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Advances the vendored
openrouter_dartsubmodule pinee91a8b..e502f9f, picking up upstream PR #8 (maxInlineImages).What upstream changed
AgentOptions.maxInlineImages: on a vision-capable model that also has animageDescriber, only the newest Nimage_urlparts in the seeded conversation stay inline; older ones are replaced with their text description before the first request. Cost control for long, image-heavy histories._multiModalPartshelper; CHANGELOG entry; new test file.Impact on doujin-manager
None — safe, purely additive:
maxInlineImagesdefaults tonull→ all images stay inline (current behavior).keepNewest: 0, replacing every image exactly as before.client.createAgent(...)doesn't expose the new param, and the project never combinessupportsVision: truewith animageDescriber(the two conditions the feature needs), so it can't activate without further wiring.Verification: pin advances by one line; no app code paths change.
🤖 Generated with Claude Code
Flutter Coverage
Total: 73.1% (5681 of 7772)
🔮 fufu~ Jibril reviewed your code!
Ooh, a submodule pin bump! One little line moving
ee91a8b → e502f9f, picking up upstreammaxInlineImages. Tiny diff, but Jibril does NOT skim submodule bumps — bugs love to hide in dependency upgrades~ ♡ So I cloned it, initialized the submodule, and traced every single code path that could possibly activate the new feature.Verdict: ✅ Looks good to me~
The PR body makes three claims, and I verified all three against the actual code at
4625480:1. "Purely additive, defaults preserve current behavior" — ✅ Confirmed.
AgentOptions.maxInlineImages(agent_options.dart:96,125) isfinal int?defaulting tonull. Whennull, the activation guard atagent.dart:228short-circuits (options.maxInlineImages != nullis false on the vision branch), so every image stays inline. The only new assert (maxInlineImages >= 0) can't fire because nothing passes the param.2. "Blind-mode path is behavior-identical" — ✅ Confirmed.
agent.dart:228-231: when blind mode is active (supportsVision=false), the guard fires on!options.supportsVisionand calls_describeConversationImageswithkeepNewest: 0— replacing every image, exactly as before. The new param isn't even consulted on this path.3. "The feature is not adopted and cannot activate" — ✅ Confirmed, and I checked this the hard way.
The activation condition is:
imageDescriber != null && (!supportsVision || maxInlineImages != null). I traced all threecreateAgentcall sites inagent_service.dart:supportsVisionimageDescribermaxInlineImagestruetruenullfalsekeepNewest:0), not the new trimtrueThe one site that ever sets
imageDescriber(main agent, blind mode) simultaneously forcessupportsVision: false, which routes through the pre-existing blind path — it never reaches the newkeepNewest: maxInlineImages!branch. Andgrep -rn maxInlineImages app/returns zero hits. The feature genuinely cannot fire without further wiring. Fufu~ the impact analysis is airtight. ♡✅ What I liked~
supportsVision: true+imageDescriber) and correctly concludes neither is combined in this project. That's exactly the kind of reasoning a reviewer wants to see for a dep bump. Jibril is pleased~ ♪maxInlineImagesitself was already reviewed and approved by me atopenrouter_dart#8(commit7c35b96, + thea761809non-negative assert). So the content of what's being pulled in is already vetted.Automated review by Jibril · 2026-07-24
CI/CD: absent for head
4625480· Local checks:flutter analyzeclean (0 issues), 83 agent tests pass (vision/history/reflection/tools/write-tools/skills/web-tools — incl. the blind-mode captioning path that exercisesimageDescriber)