HANGER SHOPIFY APP — TEST BUILD

Merchant dashboard: https://hanger-try-on-backend.muxidada.chatgpt.site/shopify/app
Owner configuration: https://hanger-try-on-backend.muxidada.chatgpt.site/admin
Button demo: https://hanger-try-on-backend.muxidada.chatgpt.site/shopify

Hanger Virtual Try-On is registered in T & M Corporation's Shopify developer organization. The backend credentials are connected and extension version hanger-0-1-3 is released. Hanger Try-On Test is a free development store; the app is installed and connected, and the Hanger product block is saved on the test theme. Public distribution is selected. Shopify test checkout is approved: 100 test credits were granted, and reloading the payment return did not grant duplicates. Full fitting-room generation and App Store review remain pending. Read SHOPIFY-LAUNCH.txt for details.

INCLUDED
extensions/hanger-try-on: theme app extension. Its product button uses the signed /apps/hanger/launch app proxy and spends credits from the installed shop's isolated balance.
shopify.app.toml: registered app configuration with its public client ID, hosted app URL, OAuth callback, minimal write_app_proxy scope, proxy and webhook subscriptions. No client secret is included. shopify.app.toml.example remains a template for a separate app.
configure-shopify.mjs: creates shopify.app.toml using the real client ID you supply; never overwrites an existing app configuration.
package.json/package-lock.json: official Shopify CLI dependency. Run npm ci, then npm run shopify -- auth login and npm run deploy after configuring a registered app. Preserve any extension UID generated by Shopify.
branding: editable SVG hanger mark plus PNG icon exports.
web-widget: hosted fitting-room HTML/CSS/JS references. Requires the Hanger backend on the same origin.
Custom-Liquid-button.liquid: an alternative direct-demo snippet. It uses the original Hanger shared/testing balance and does not identify a registered shop tenant. It can be pasted into a product template's Custom Liquid block for a limited preview without registering an app. Do not use it as the multi-merchant paid installation flow.

SHOPPER FLOW
Click Try it on me > add 1–5 reference photos > Generate > Save image. No shopper login or API-key field. Selected-variant images are prioritized where the theme exposes its current product-form variant. Clothing thumbnails allow another view to be selected; unreadable CDN images have a clothing-upload fallback. Validate the actual target theme.

CREDITS
100 credits/$10, 500/$47, 1000/$90. One successfully generated image uses one credit. Shopify merchants approve one-time purchases in Shopify. Credits are granted only after Shopify confirms an ACTIVE matching purchase. Test and live shop balances are separate. Development stores always use test billing, but actual image generation uses real owner fal credits.
The existing direct demo/Android backend has its original shared credit mode, which remains in free testing until enabled by the owner. Those direct clients do not share a registered Shopify shop wallet.

PRIVACY
Reference images remain in browser session storage/memory until Generate. They and the clothing reference are sent through Hanger to OpenAI GPT Image 2 via fal. The backend stores session/job/result-link/credit metadata, not source image blobs. See the hosted privacy draft and SHOPIFY-LAUNCH.txt for review and business-contact requirements before public distribution. A visual preview is not a sizing guarantee.

VERIFICATION
Local automated tests cover OAuth, encrypted credentials, merchant isolation, signed proxies, Shopify purchase confirmation/recovery, duplicate charges, test/live wallets, per-shop generation spending, uninstall and redaction. Shopify CLI theme checks passed and version hanger-0-1-3 was released. Actual installation and theme-block insertion are verified. An actual Shopify test purchase granted 100 credits exactly once; full storefront generation and App Store review remain pending.

BUTTON STYLES
Theme editor > product template > Hanger · Try it on > Button style: Hanger icon + text (default) or Hanger icon only. The icon-only button stays 52px square regardless of Full width and keeps the configured label for screen readers and hover tooltip. Both open the same fitting room. The Custom Liquid preview uses hanger_button_style at the top of the snippet.

