Photos can now be dragged to any position — cursor changes to a move
cursor to signal draggability, the drop target dims to show the
insertion point, and the list rebuilds immediately after the drop.
First photo gets a 'Cover' badge since eBay uses it as the gallery
hero image. All add/remove/clear operations now go through
RebuildPhotoThumbnails() so the panel always reflects the true order
in PhotoPaths.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
After photo analysis completes, fires a background request to the
eBay Browse API (app-level auth, no user login needed) to fetch
current Buy It Now prices for similar items on eBay UK.
- EbayAuthService.GetAppTokenAsync(): client credentials OAuth flow,
cached for the token lifetime
- EbayPriceResearchService: searches /buy/browse/v1/item_summary/search
filtered to FIXED_PRICE + EBAY_GB, returns min/max/median/suggested
(suggested = 40th percentile — competitive but not cheapest)
- PhotoAnalysisView: shows spinner + "Checking live eBay UK prices…",
then updates price badge, range bar and PriceOverride with real data,
plus a "Based on N live listings (£X – £Y)" label
Silently degrades if eBay credentials are not configured.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PriceSuggestedText was not being refreshed when Refine with AI ran,
so the badge still showed the original price even though PriceOverride
had been updated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a Corrections box and "Refine with AI" button below the
description. User types what the AI got wrong (e.g. "earrings are
white gold with diamonds, not silver and zirconium") and clicks
Refine — the AI rewrites the title, description and price while
keeping all other analysis fields intact.
AiAssistantService.RefineWithCorrectionsAsync() sends the current
listing text + corrections as a single text prompt and parses the
JSON response back into the title/description/price fields.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TableRowsPlusAfter, InformationOutline and LinkOff don't exist in
IconPacks 4.11.0. Replaced with TablePlus, AlertCircleOutline,
LinkVariantOff. Audited all XAML files via DLL reflection — no
further invalid icon names remain.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CameraSearch, ShoppingSearch, TagSearchOutline, ImagePlusOutline,
and FolderOpenOutline don't exist in this version of the package.
Replaced with valid equivalents: Camera, CartOutline, TagOutline,
ImagePlus, FolderOpen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
C# WPF desktop app for creating eBay UK listings with AI-powered
photo analysis. Features: multi-photo vision analysis via OpenRouter
(Claude), local listing save/export, saved listings browser,
single item listing form, bulk import from CSV/Excel, and eBay
OAuth authentication.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>