== Changelog ==

The full release history for seeonwall.com for WooCommerce. The current release is also listed in
readme.txt; everything older lives here, per the WordPress.org guidance on keeping readme.txt
small.

= 2.2.0 =
* **New: mats in print size sets.** In Bulk actions on the Products page, each size of a
  print size set can have a mat, written as on the product tab: a width like 3, a larger size for a
  mat around the print, or a smaller size for the opening in the mat. Applying the set gives the
  products that mat for that size. An empty mat keeps the mat that a product has. The review shows
  each mat change, and says why when a product's mats could not be saved. Two rows of the same
  size, also when written differently (a4 and 21x29.7), are refused.
* **New: Auto setup can switch the button on.** When Product visibility is "Only products with the
  preview enabled", tick "Switch the button on for approved products" in Auto setup to switch on
  each product that you approve. Products that you switched off yourself stay off.

= 2.1.0 =
* **New: keep the mat in the artwork area.** In Auto setup on the Products tab, tick "Keep the mat
  in the artwork area" when the mat (passe-partout) is printed on the poster and the poster size
  includes it. The artwork area then includes the border around the artwork and leaves out only a
  frame. Auto setup of one product uses the same setting as the last Auto setup. Do not tick it
  when you add the mat with "Sold with a mat". Results with the mat kept show "Mat kept".
* **Changed: the privacy text names the new AI host for wall photos.** Wall photos are analysed by
  an AI model on Amazon Bedrock in Frankfurt, reached through Requesty's EU gateway in Frankfurt.
  If you copied the suggested privacy policy text into your own policy, replace it with the new
  version.

= 2.0.0 =
* **Changed: the preview no longer reads the WooCommerce Shipping dimensions.** Shipping
  dimensions often measure the box, so a product sized by them could preview at the wrong size.
  The size now comes from Print sizes on the seeonwall.com product tab, then from a variation
  attribute value that names a size (such as "30x40 cm" or "A4"), then from the size field on the
  product page. The Poster size setting is removed; the CSS selector for the size field stays.
  Products that took their size from Shipping dimensions need Print sizes, a size attribute or a
  size field on the page. The `seeonwall_poster_width_cm` and `seeonwall_poster_height_cm`
  filters are removed.
* **Changed: a new store shows the button only on products where you switch it on.** On a new
  install, Product visibility starts at "Only products with the preview enabled". Switch products
  on with "Always show" on the product tab, Turn on on the Products tab, or "Turn the wall preview
  on" in Bulk actions. A store that is already connected keeps showing the button on every product,
  and saved settings do not change.
* **Changed: "Read sizes from product text" reads every product without Print sizes**, whether
  or not its button is switched on, so you can read the sizes before you switch products on. Its
  option is now "Also read products sized by their variations".

= 1.40.0 =
* **New: read sizes of products sized by their variations.** In "Read sizes from product text",
  select "Also read products whose variations have Dimensions". The AI model then also reads the
  products whose size comes from the Dimensions of their variations. Use this when those
  Dimensions are the shipping box. The sizes you add go into Print sizes, which the preview uses
  instead of the variation Dimensions.

= 1.39.2 =
* **Fix: sizes from the size attribute.** On a variable product, when a variation's attribute value
  names a size, such as "21x30 cm", the preview uses that size. Before, the preview used the
  variation's Dimensions, and Dimensions of the shipping box (30 x 21 x 3) gave a 21x3 poster.

= 1.39.1 =
* **Tested with WooCommerce 11.2.** No other change.

= 1.39.0 =
* **New: read sizes from the product text.** On WooCommerce → seeonwall.com → Products, click
  "Read sizes from product text". For the products that have no size, an AI model reads the title,
  the descriptions and the attributes, and lists the sizes it finds. Each size shows the text it
  comes from. Check them, clear the ones you do not want, and apply: the sizes are added to the
  product's Print sizes. Up to 3,000 products a day.
* **New: size names in the preview.** On a variable product whose variations have their own
  Dimensions, the size buttons in the preview show the name of the size attribute, such as
  "Small" or "Large (3P)", next to the dimensions. A name that is only the size, such as "50x70",
  is not repeated. In Print sizes, write a name before the size with "=": `Large=50x70cm`.

= 1.38.0 =
* **New: limit the frames a shopper can pick.** On the product's seeonwall.com tab, under "Frames
  the shopper can pick", tick the frames from your frame catalogue that the product is sold in, and
  "No frame" if it is also sold unframed. The preview then offers only those frames. Tick one to
  always show that frame and hide the frame controls. For many products at once, select them in
  WooCommerce → seeonwall.com → Products and choose "Set frame options". For the whole shop, set
  "Frames the shopper can pick" on the Frames page of your seeonwall.com dashboard; a product's own
  list replaces it.
* **New: sizes that include the frame.** If the size of a product is the outer size of the framed
  piece, tick "The size includes the frame". The preview draws the print smaller by two frame
  widths, so the print and its frame keep the size of the product in every frame. It applies when
  the product's list names at least one frame.

= 1.37.0 =
* **New: order analytics.** Count how often shoppers add a poster to the cart, order it and get a
  refund, grouped by how far they got in the preview, with shoppers who did not use the preview as
  the comparison group. Off by default: turn it on in WooCommerce → seeonwall.com → Order
  analytics, and see the counts on the analytics page of your dashboard. Only shoppers who agree
  to statistics in your consent banner are counted, read through the WP Consent API. Each report
  holds the poster image address, the quantity and the preview step. No name, email address,
  postal address or price.
* **Change: a new AI provider.** Wall photos and the product images of Auto setup are now analysed
  by an AI model on Microsoft Azure in the EU, reached through Requesty's EU gateway in Frankfurt,
  instead of Google Vertex AI. Photos still stay in the EU and are never used to train models.
  The suggested privacy policy text in Settings → Privacy says so; copy it again into your policy.

= 1.36.0 =
* **New: Czech and Slovak.** The wall preview and the "See on wall" button speak Czech and Slovak,
  so a store page in either no longer falls back to English. That makes fourteen shopper
  languages; the settings screen still follows your WordPress admin language, which neither is
  one of.
* **New: Czech and Slovak fields in Button text.** Word the labels yourself, the same way as the
  other twelve. Left empty, the button reads "Zobrazit na zdi" in Czech and "Zobraziť na stene"
  in Slovak.

= 1.35.0 =
* **Change: the preview crops less and keeps text near the edges.** When the image and the print
  size have different proportions, the preview now stretches the image by up to 8% and crops only
  the remainder from the edges. Before, it cropped all of the difference, and a title near
  the top or bottom of a poster could be cut. The new fit is "Crop and stretch slightly" in
  WooCommerce → seeonwall.com → Button → Poster image → Fit to size. "Crop to size" and "Stretch
  to size" are still available. If you saved the button settings in 1.29.0 or later, your store keeps
  "Crop to size" until you select the new fit.

= 1.34.0 =
* **New: B-series, Letter and Tabloid sizes.** A size can be written as B0 to B6, Letter or
  Tabloid, as A0 to A6 already could — in Print sizes, in a variation attribute and in the size
  field on the product page. B2 is a 50 × 70.7 cm poster, Letter is 8.5 × 11 in and Tabloid is
  11 × 17 in. Shoppers see the name on the size button.

= 1.33.0 =
* **New: Auto setup sets up products with the same mockup from one analysis.** When a product
  shows the same mockup as a product that Auto setup analysed in the same run, it gets the artwork
  area of that product and uses no analysis. In the review, such a result is marked "Same mockup".
* **Change: Auto setup is no longer limited to the analyses left.** "Auto setup" for the whole
  catalogue now starts with all products that need it. It analyses products until no analyses are
  left. The review shows how many products were not analysed, and the next Auto setup selects them
  again.
* **Change: Auto setup skips the products where you switched off the button.** Products that the
  opt-in mode has not turned on are analysed last.
* **New: the Auto setup review has pages.** Choose 25, 50, 100 or 250 results per page. "Approve
  all on this page" approves only the results on the page you see.

= 1.32.0 =
* **New: Auto setup finds the artwork in your product images.** On WooCommerce → seeonwall.com →
  Products, click "Auto setup" for the whole catalogue, for one product in its row, or as a bulk
  action for the products you select. The service looks at up to 10 images of each product and
  finds the one that shows the full artwork straight on — a flat artwork, or an artwork in a
  mockup with its artwork area marked. Nothing is saved before you approve a result. You can
  approve, reject or adjust each result, and a product with a result to review is marked in the
  list. For a product with no usable image, the result tells you why. The analysis continues when
  you close the window. The number of analyses is limited, and the window shows how many are
  left.

= 1.31.0 =
* **Change: "Apply artwork area to the same mockup" works with room scenes.** The plugin now
  compares everything around the artwork area — the wall, the floor, the frame and the shadow —
  and ignores the print inside it. Before, it found only mockups with a plain, one-colour border,
  and showed "This image has no plain border around the artwork" for any other image.
* **Fix: the Products list shows the poster image.** When a product has its own seeonwall.com
  image, the thumbnail on WooCommerce → seeonwall.com → Products now shows that image, not the
  product image.

= 1.30.0 =
* **Change: the plugin is now called seeonwall.com.** Its settings are under WooCommerce →
  seeonwall.com, and each product has a seeonwall.com tab under Product data. Your settings and
  products do not change. The product CSV columns keep their names: SeeOnWall preview, SeeOnWall
  image, SeeOnWall artwork area and SeeOnWall sizes.
* **New: apply an artwork area to every product with the same mockup.** Mark the artwork area on
  one product, then use "Apply artwork area to the same mockup" on its row in WooCommerce →
  seeonwall.com → Products. The plugin finds the products whose image has the same border and
  background around the artwork, lists them for you to check, and sets the same area on the ones
  you select. A product that has its own artwork area is listed but not selected. Images must be
  in your media library, or on a site that allows other sites to read them. A product that shows
  its gallery image gets that image set as its seeonwall.com image.
* **Change: the preview opens on the middle size.** When a product is sold in several sizes and
  the shopper has not picked one, the preview now opens on the middle size, not the smallest.
  With an even number of sizes it opens on the smaller of the two middle ones. A default
  variation you set in WooCommerce still decides the size.

= 1.29.0 =
* **New: crop or stretch the image to the print size.** When a product image and its print size
  have different proportions, the preview now crops the image to the size, so the artwork keeps its
  proportions. Before, it stretched the image. To keep that, set WooCommerce → SeeOnWall → Button →
  Poster image → Fit to size to "Stretch to size".
* **Change: the size warnings follow the fit.** When the preview crops, sizes such as 45x60 and
  80x120 for one image are no longer marked as a problem on the Products list and the product's
  SeeOnWall tab.
* **New: Finnish.** The wall preview and the "See on wall" button speak Finnish, so a store page
  in Finnish no longer falls back to English. That is the twelfth shopper language; the
  settings screen still follows your WordPress admin language, which Finnish is not one of.
* **New: a Finnish field in Button text.** Word the Finnish label yourself, the same way as the
  other eleven. Left empty, the button reads "Katso seinällä".

= 1.28.0 =
* **New: fix one product after the other.** The quick edit window lists what is wrong with the
  product, as the Status column shows it. "Next issue" opens the next product on the page with a
  problem, and "Save & next issue" saves first.
* **New: image and sizes in one window.** Quick edit has an Image tab and a Sizes tab. Change both
  and save once.
* **Change: the frame window only shows the frame,** so it has Close and no Save.
* **Change: "Manage frames" is always on the product's SeeOnWall tab,** also when the product has
  a frame.

= 1.27.0 =
* **New: quick edit from the product list.** In WooCommerce → SeeOnWall → Products, click a
  product's thumbnail or its poster image to change the image and the artwork area, click its print
  size to change the sizes and the mat, or click its frame to see which frame the preview opens in.
  Each opens in a window with Cancel and Save, so you do not need to open the product.
* **Fix: "Manage frames" opens your frames.** On the product's SeeOnWall tab, the link now opens the
  frames in the SeeOnWall dashboard. It went to the plugin's settings page, which has no frames.

= 1.26.0 =
* **New: preview a product on a wall from the product list.** In WooCommerce → SeeOnWall →
  Products, each product with an image and a size has a "Preview on a wall" action. It opens the
  poster on a wall in wp-admin, with its size, image, artwork area, mat and frame, also for a
  product whose button is not on yet. Your wall photo stays from one preview to the next.

= 1.25.0 =
* **New: warnings for products that will not preview correctly.** WooCommerce → SeeOnWall →
  Products now marks a live product when its sizes do not all have the same proportions, when its
  image does not have the proportions of its sizes, when a size is too small or too large for a
  poster (often inches entered as centimetres), or when some of its variations have no size. The
  preview stretches the image to the size, so a mismatch shows a distorted print. With an artwork
  area set, the check uses that area.

= 1.24.0 =
* **New: a mat (passe-partout) that is part of the product.** On the product's SeeOnWall tab, tick
  "Sold with a mat" and list the mat for each size, such as `21x30:30x40` for a 21 × 30 print in a
  30 × 40 mat, `30x40:21x30` for a 30 × 40 print with a 21 × 30 window, or `50x70:5` for a 5 cm
  mat inside the 50 × 70. Numbers without a unit are in your store's dimension unit. Choose the
  colour on the same tab. The preview, the downloaded image and the catalogue preview show the mat,
  and the print stays at its true size.

= 1.23.4 =
* **New: Print sizes accept H and W after a number.** Write `36"H x 24"W` or `36H x 24W` to put
  the height first. Before, the plugin dropped these sizes. A size without these letters is
  still read as width × height.

= 1.23.3 =
* **New: Print sizes accept feet.** Write `2'x3'` or `2′x3′` for a 2 × 3 ft print. The preview
  shows feet as inches.
* **Changed: a single quote mark after a number now means feet, not inches.** A size written as
  `11'x14'` was read as 11 × 14 in and is now read as 11 × 14 ft. Write `11"x14"` or `11x14in`
  for inches.
* **Fixed: Print sizes written with the × sign are no longer dropped**, such as `50 × 70` or
  `50×70cm`.
* **Fixed: a unit on the first number now applies to the size.** `30cm x 40` is 30 × 40 cm.
  Before, the plugin dropped this size.

= 1.23.2 =
* **New: one SeeOnWall account can hold several stores.** In a second store, choose "Already have
  a SeeOnWall account? Connect this store to it" and approve the store in your SeeOnWall
  dashboard. Free and Basic plans take two stores, Premium and Ultra three. When the plan is
  full, the approval screen offers to replace one of your stores instead.
* **New: move a store to a new domain from the approval screen.** Choose to replace the store at
  the old address. The store keeps its settings and statistics.
* **Changed: the message when an account has no room for another store** now says that the plan's
  store limit is reached and that you can replace one of the account's stores.
* **Fixed: New set in Products → Bulk actions now scrolls to the set editor.** Before, the editor
  opened under "2. Choose the change", out of view below the pinned action bar. Edit set does the
  same.

= 1.23.1 =
* **Fixed: the icon on product cards now opens a product on a size when its sizes are written in
  inches or as a paper size.** For a product sold in several sizes, such as `a4` or `12x16in`, the
  preview from a shop, category or related-products card now opens on the size closest to the
  shopper's wall. Before, it chose a size only when the sizes were written in centimetres.
* **Fixed: Connect and Reconnect no longer save an incomplete connection.** When a proxy or a
  captive portal answers in place of SeeOnWall, the plugin now shows an error and saves nothing.
  A network error while you connect the store to an existing SeeOnWall account no longer
  cancels the request, so the next check can finish a link you have already approved.
* **Changed: the Elementor widget shows the button only for published products**, as the
  shortcode and the block already do. On a draft or private product the widget shows nothing.
* **Changed: the product list in wp-admin loads faster for variable products.** The plugin now
  loads the variations of the listed products in one query, instead of one query for each.

= 1.23.0 =
* **New: the Settings tab opens with how many products are ready.** Live, No image and No size
  counts sit at the top of the page, read from the last check rather than by scanning the
  catalogue, so Settings says straight away whether the button has anywhere to appear.
* **New: the Button tab previews the button itself.** The preview is drawn by the same script your
  product pages load, so its colours, corners and label are the ones a shopper sees. Where the
  button sits on the product page is still set below and still only visible on your storefront.
* **New: a one-click fix where a product falls short.** A product listed as No size or No image now
  carries a link straight to the field that settles it, both in the Products table and in the
  product's own SeeOnWall tab.
* **Changed: a product's SeeOnWall tab now says what pressing Update will do.** It reads "Ready to
  go live" or "Will be hidden after you update" while the change is still unsaved, rather than
  describing the change in the abstract.
* **Changed: a dimension preset is now called a print size set.** Products → Bulk actions carries
  the new wording throughout, walks three numbered steps — select products, choose the change,
  review it — and holds up to 100 products in one change.
* **Changed: the Storefront check section has been removed from the Settings tab**, along with the
  line pointing at the Button tab. The readiness counts open the page in their place, and the
  Button tab's own preview shows what the button looks like.

= 1.22.2 =
* **Changed: "The size field on the product page, only" no longer reads variation dimensions.**
  That choice says your stored measurements are the tube or the mailer rather than the print, and
  WooCommerce keeps the same field on a variation, so the dimensions of a variation are now left
  out for the same reason as Shipping → Dimensions. Products sized this way read the product page
  as the setting promises. A list under Product data → SeeOnWall still outranks everything, on a
  variable product as much as a simple one — Products → Bulk actions can write one for a whole
  catalogue. The other two Poster size choices are unchanged and still use variation dimensions.
* **Fix: a Print sizes list is no longer overwritten when the shopper picks a variation.** On a
  variable product with a list under Product data → SeeOnWall, choosing a variation replaced the
  listed size with that variation's Shipping dimensions — the measurement the list was written to
  replace. The preview now keeps the listed size whatever the shopper picks.
* The help text under each setting now says what a shopper ends up seeing, where to click, and
  what happens when a product cannot be sized — in that order, and without the developer notes
  that used to end several of them. Those are in the FAQ below and at seeonwall.com/docs.
* **Changed: the fast wall preview icon follows the same rule.** A product card has no size field
  on it, so a card now opens only products whose size the store states outright. With Poster size
  set to read a field on the product page, that means the products sized by a SeeOnWall list or by
  their variations; a product whose Dimensions merely stand behind that field no longer opens from
  a card at a size its own page would have overridden. Stores on "The product's dimensions" are
  unaffected.

= 1.22.1 =
* **Fix: a variation with no Dimensions of its own is no longer read as a size.** WooCommerce
  hands such a variation the parent product's Dimensions, and the plugin read those as a size
  stated by the variation. On a variable product that sells its sizes as an attribute and carries
  Dimensions only on the parent, that drew every size at the parent's measurements and overrode
  Poster size set to read a field on the product page. These products follow the Poster size
  setting again, and a product where only some variations are measured lists only those sizes.

= 1.22.0 =
* **New: bulk print dimensions.** Products → Bulk actions filters the saved SeeOnWall print-size
  list by exact width × height, provides local reusable presets, and reviews Add, Replace and
  Remove changes across selected products before applying them. WooCommerce shipping dimensions
  are never changed; visible variation dimensions remain effective.

= 1.21.0 =
* **Fix: the size field on the product page is now read first.** With Poster size set to read a
  field on the product page, the button reads that field for any product that does not state a
  size of its own, not only for products that carry no width and height. Product data → Shipping
  → Dimensions are what it falls back to when no field can be read — the behaviour this setting
  has always described.
* **New: “The size field on the product page, only”.** A third choice for Poster size, for shops
  whose Dimensions measure the tube or the mailer the print is posted in. It never falls back:
  a product whose field cannot be read shows no button rather than one at the wrong size.
* Variation sizes, and the size list under Product data → SeeOnWall, are read before either
  setting, so a single product can still be sized by hand on a store that reads the page.
* Product cards carry no fast wall preview icon for a product sized from the product page, since
  a card has no such field on it. Every other product on the store keeps its icon.
* The Products table and a product's SeeOnWall tab now say which size the button uses and which
  it only falls back to, so a product that looks Live but sized wrong can be diagnosed from the
  admin.

= 1.20.0 =
* First release of the size-field fix refined in 1.21.0. The field on the product page was read
  ahead of Product data → Shipping → Dimensions, which stayed as the fallback. 1.21.0 adds the
  stricter second choice, and reads a product's own variation sizes and size list before either.

= 1.19.0 =
* **New: fast wall preview on product listings.** Once a shopper has set up their wall on one
  product page, a small icon on every other eligible product card — related and upsell
  products, the shop and category pages, search results, product grids on other pages — opens
  that print on the same wall in one tap, at its own size, without a second photo. Off until
  you turn it on under Button → Fast wall preview, where you choose the listings that get the
  icon and the corner of the card it sits in. Paid plans only; each preview is one poster view
  from the same allowance as the full preview.
* **Works with every product loop.** The plugin marks each eligible card in PHP, so classic
  themes, the Product Collection block, the `[products]` shortcode, AJAX filters and infinite
  scroll all get the icon — no theme selector to configure.
* Nothing changes on the product page. The button, its position and its look are as before.

= 1.18.0 =
* **New: Danish.** The wall preview and the "See on wall" button speak Danish, so a store page
  in Danish no longer falls back to English. That is the eleventh shopper language; the
  settings screen still follows your WordPress admin language, which Danish is not one of.
* **New: a Danish field in Button text.** Word the Danish label yourself, the same way as the
  other ten. Left empty, the button reads "Se på væggen".

= 1.17.0 =
* **New: Norwegian.** The wall preview and the "See on wall" button speak Norwegian Bokmål, so
  a store page in Norwegian no longer falls back to English. That is the tenth shopper
  language; the settings screen still follows your WordPress admin language, which Norwegian
  is not one of.
* **New: a Norwegian field in Button text.** Word the Norwegian label yourself, the same way
  as the other nine. Left empty, the button reads "Se på veggen".

= 1.16.0 =
* **New: a SeeOnWall tab on every product.** Product data → SeeOnWall holds everything that is
  decided per product, in one place: whether the button shows, which image the wall preview
  uses, and — for a mockup photo — the artwork inside it. No more custom fields to create by
  hand; the two that existed keep working, and the tab reads them.
* **New: the tab tells you why a product has no button.** A status card says Live or names the
  one thing missing — not connected, switched off, no image, no size — and a checklist offers
  the fix: switch it on, choose an image, go to Shipping or Variations. It answers a change
  before you press Update, marked as pending.
* **New: test the button from the editor.** A live product's tab carries the real "See on your
  wall" button, exactly as shoppers get it; click it to open the wall preview from wp-admin.
* **New: pick the poster image from the media library**, or paste an image URL, instead of
  typing a URL into a custom field. Pin the product image to keep it for the preview even if
  the product image changes later.
* **New: mark the artwork by dragging a box**, with a one-click starting point that trims a
  plain background, a readout of the rectangle, and a warning with a one-click fix when the
  box's proportions do not match the print size. Replaces the comma-separated field that sat in
  the Shipping tab.
* **New: print sizes on the product.** A simple print sold in several sizes — through an add-on,
  or with shipping dimensions that describe the box — can now list its sizes on the SeeOnWall
  tab, width × height in your store's unit, and shoppers pick between them in the preview. The
  tab shows what the product carries now (its dimensions, or its variations' sizes) before you
  add a list, and a variable product's variations still take precedence. Also a CSV column.
* **New: a SeeOnWall button block.** For a block theme whose Single Product template has been
  rebuilt from product blocks in the Site Editor — where "after the price" has nothing to attach
  to — drop the block where the button belongs. It prints the same button, for the product being
  viewed, and nothing for a product that gets no button. On any other page, name the product.
* **New: an Elementor widget.** "SeeOnWall button" in the widget panel, for Elementor product
  templates. Other builders — Divi, WPBakery, Bricks, Beaver Builder — keep using the
  `[seeonwall_button]` shortcode in their code element.
* **The settings page has tabs.** Settings (plan, usage, which products and which image),
  Button (the storefront button's position, look and labels) and Products.
* **Performance: product pages never wait for SeeOnWall.** The frame catalogue used to be
  fetched from seeonwall.com inside a product page's render whenever its cache had turned
  over, which could hold that page for up to three seconds. The storefront now only reads the
  cache; a background WP-Cron job refreshes it, connecting reads it once in wp-admin, and the
  cached names are kept for a day, so no shopper's page carries the request.
* **Security: the plugin names every backend call it makes.** The settings page used to reach
  the SeeOnWall backend through one generic pass-through route; it now has one route per call
  (subscription, usage, checkout, billing portal, dashboard link), each with a fixed method and
  only the parameters it needs. Nothing else on the backend is reachable from wp-admin.
* **New: switch a single product off.** Product visibility gains a third state — follow the
  store setting, always show, never show — so one poster with a bad photo can be hidden in a
  store that otherwise shows the button everywhere.
* **New: a Products tab.** WooCommerce → SeeOnWall → Products lists every product with its
  status — Live, Hidden, Not enabled, No image, No size — the reason, its print size, image
  and frame, and a switch to turn the button on or off right there. Counts per status filter
  the list, and search finds a product by name. Large catalogues are checked in the background
  while the counts fill in.
* **New: catalogue-scale editing.** A SeeOnWall column on Products → All products shows Live /
  Hidden / No image / No size per row; quick edit and bulk edit set the button state; and three
  columns — SeeOnWall preview, SeeOnWall image, SeeOnWall artwork area — export and import
  through WooCommerce's own product CSV tools.
* **Frame at a glance.** The tab says which of your frames the product is sold in, which
  variations change it, or which frame names an attribute value would need to match.
* A `seeonwall_preview_enabled` custom field set to `no` now hides the product's button even
  when the store shows it on every product with dimensions. It was previously ignored there.
* **Lighter product pages.** The preview script is now loaded only on product pages that show
  the button. A product with no button — switched off, no image, no size — no longer fetches
  anything from seeonwall.com. A `[seeonwall_button]` shortcode or a theme printing the button
  for another product still gets the script.
* No action needed. Existing custom fields keep working and appear in the tab.

= 1.15.0 =
* **The settings screen is built from WordPress' own parts.** Standard headings, settings
  tables, notices and buttons, in place of the panel's own cards, colours and button styles —
  so it reads and behaves like every other screen in wp-admin. The nine per-language button
  labels now fold away until you open them, and each one shows the text the button uses in
  that language while you leave it empty.
* **Fixed:** the Product visibility hint said a product always needs shipping dimensions to
  show the button. It does not, when Poster size reads the size from the product page.
* No action needed. Nothing to configure, and no existing setting changes.

= 1.14.0 =
* **New: a link to SeeOnWall on the Plugins screen.** The plugin's row now goes straight to
  WooCommerce → SeeOnWall — labelled **Connect** until the store is connected, **Settings**
  afterwards. A store that has activated the plugin but not yet connected it also gets a prompt
  on the Plugins and Dashboard screens; it retires itself the moment you connect, and can be
  dismissed before that.
* **New: copy-ready privacy policy text.** Settings → Privacy → Privacy Policy Guide now carries
  a SeeOnWall section: what the plugin sends, what shoppers send to the preview service once they
  open it, where wall photos are stored, how long they live, and links to the service's privacy
  policy and sub-processor list. Copy it into your policy and edit it to match how you describe
  other services.
* **Faster product pages.** The preview script no longer blocks the page while it loads. The
  browser starts fetching it exactly as early as before, but nothing waits on it, so a slow
  response from seeonwall.com can no longer hold up your product page.
* **Better with a screen reader.** The settings screen now has a real page heading whether or not
  the store is connected, the usage meters report their figures rather than being bare bars, and
  errors and confirmations are announced when they appear.
* The release history has moved to changelog.txt, shipped alongside readme.txt.
* No action needed. Nothing to configure, and no existing setting changes.

= 1.13.0 =
* **New: the plugin speaks Portuguese.** Everything the plugin shows you — the settings screen,
  the WooCommerce menu entry, the artwork inset field on the product editor, and its notices —
  now follows a Portuguese WordPress admin language, alongside the five languages already
  included. European Portuguese, with pt_BR and pt_AO resolving to it rather than falling back
  to English.
* **New: a Portuguese storefront button label.** WooCommerce → SeeOnWall → Storefront button
  now has a **Button text — Português** field alongside the other languages. Shoppers browsing
  your store in Portuguese see the button, and the whole wall preview, in Portuguese.
* No action needed. Stores running WordPress in another language see no change.

= 1.12.0 =
* **New: nine places to put the See on wall button on the product page, instead of three.**
  WooCommerce → SeeOnWall → Storefront button, **Position on the product page** now also offers
  after the title, after the price, after the short description, after the product meta, and
  before or after the product tabs. Your button does not move — the setting starts where it
  already is.
* **New: put the button exactly where you want it with a shortcode.** Choose "Place it myself with
  a shortcode" and write `[seeonwall_button]` in the product description, in a page builder block,
  or in a template. A theme that lays out its product page its own way, or a page builder that
  never fires the standard hooks, no longer limits where the button can go. On a page that is not
  a product page, name the product: `[seeonwall_button id="123"]`.
* **New: two filters for developers.** `seeonwall_button_hook` and `seeonwall_button_priority`
  place the button on any action at all, and `SeeOnWall_Storefront::mount_html( $product )` returns
  the markup for a template to print directly.

= 1.11.0 =
* **New: read the print size from the size field on your product page.** Under WooCommerce →
  SeeOnWall → Poster size, **Take the print size from** now offers the size field shoppers choose
  in, as well as the product's dimensions. If you sell one artwork in several sizes through a
  product add-on plugin, the sizes live in that field and not in Shipping → Dimensions, so the
  button never appeared. It appears now, and the preview opens at the size the shopper picked.
* **The field is found for you.** Options count as sizes when they read like `60x40cm`, `18x24in`
  or `A4`, and a price after the size makes no difference. Where a page offers sizes in more than
  one field, name the one you mean with a CSS selector.
* **Nothing changes unless you change it.** The setting starts on the product's dimensions, which
  is how every store works today.

= 1.10.0 =
* **New: choose the shape of the See on wall button.** Under WooCommerce → SeeOnWall → Storefront
  button, **Button shape** now offers four: Solid, the filled button you have today; Outline, the
  same box without the fill; Icon and text, a small picture mark and the words with no box at all;
  and Icon only, the mark on its own, which fits beside Add to cart rather than under it. A product
  page that already stacks quantity, Add to cart and Buy now has little room for a fifth full-width
  button, and the quieter shapes let See on wall read as the secondary action it is. Your button
  keeps its current look — the setting starts on Solid.
* **The shapes without a fill follow your theme.** Their text, border and mark take the colour of
  the copy around them, so they suit a light or a dark theme with nothing to set. Set a text colour
  and it paints both the mark and the label.
* **The colour settings now match the shape you picked.** A shape with no fill has no background to
  paint, so the background colour is hidden rather than left there doing nothing; the same goes for
  the border and corner settings on Icon and text.

= 1.9.0 =
* **Already have a SeeOnWall account? Connect this store to it.** Until now, connecting always
  created a new account, so a merchant who had signed up on seeonwall.com first ended up with two —
  and their store ran on the free tier of the wrong one. The connect screen now offers to link this
  store to the account you already have: approve it once in the tab that opens, and your store runs
  on the plan you already pay for.

= 1.8.3 =
* **Fixed: the settings page stayed blank.** The page script referred to `require`, which does not
  exist in the browser, so it stopped before it drew anything and the connection could not be made.
  The reference is gone and the page loads.

= 1.8.2 =
* **Fixed: Open dashboard, Upgrade plan and Manage subscription no longer get blocked.** These
  buttons opened their tab only after the request behind them came back, which browsers treat as
  a pop-up rather than as something you clicked. The tab now opens the moment you click and fills
  in when the address is ready. If your browser blocks it anyway, the screen says so instead of
  appearing to do nothing.
* **Your plan and your button settings now say when they are loading, and when they failed.**
  The plan used to read "Free" while it was still being fetched, so a paid store looked free for
  a moment; the button settings simply stayed absent if the request failed. Both now show their
  state, and the button settings offer Retry.
* **Settings you cannot save are caught before saving.** Corner radius below zero, a frame width
  outside 0-10 cm and button text over 120 characters now show a clear client-side message (with
  the affected label field identified) before the request is sent.
* The Corner radius field no longer stops at 50. It was the only field with a ceiling the plugin
  does not enforce.
* Buttons and fields now show a visible outline when reached by keyboard, and every action button
  is at least 44 pixels tall for touch.
* New screenshots on this listing: a preview on a real wall with the bookmarks and recently
  viewed panels, the room-scene picker beside the QR code, the analytics dashboard, and the
  preview as a shopper sees it on a phone.

= 1.8.1 =
* Listing only, no code changes. The plan limits on this page were out of date. The Free plan's
  promotional capacity has ended, so Free now runs on its own figures: 500 poster views a month
  and 100 an hour, 50 preview sessions and 20 photo uploads an hour. Every plan's hourly limits
  are now listed rather than described, and the answers about what a paid plan adds — branding
  from Basic up, session sharing from Premium up, the 14-day trial, analytics on every plan
  including Free — say which plan each one belongs to. The answer about frames now covers the
  frame catalogue that 1.8.0 added.

= 1.8.0 =
* **New: the preview can show the frames you sell instead of six generic colours.** List your
  frames in the SeeOnWall dashboard — the name you use for each one, its colour and its width in
  centimetres — and shoppers choose from that list inside the preview, at the width you entered.
* **The preview opens on the frame the shopper has selected.** If you sell a poster framed in
  several ways as variations, the preview follows the variation dropdown: pick Oak and it opens
  in your oak frame, at your width. No setup and no new field — name a frame in the dashboard
  the way it is named in your variations, and the two find each other. Any attribute works,
  whatever you call it, in any of the six languages the plugin speaks.
* WooCommerce → SeeOnWall → Storefront button now links to the frame list. The plugin signs you
  in to the dashboard with one click, the same way it already does for your plan and analytics;
  there is no second frame editor here to keep in step with that one.
* Frame names show exactly as you type them, to shoppers in every storefront language, because
  they name your products rather than translate a word.
* Nothing changes until you add a frame: with an empty list the preview keeps the six colours it
  had, and your Default frame width and Default frame colour work as before. Either way shoppers
  can still widen, recolour or remove the frame inside the preview.

= 1.7.1 =
* Listing only, no code changes. Declares compatibility with WordPress 7.1.

= 1.7.0 =
* **Poster views now have a monthly limit as well as an hourly one, and both are tracked.**
  A view counts against each; whichever runs out first stops views from being counted, and
  shoppers are asked to try again later instead of seeing the preview. The monthly ceiling is
  5,000 views on Basic and 25,000 on Premium, resetting at the start of each month; Free is 500,
  but matches Basic at 5,000 for as long as the current promotional offer runs. Ultra has no
  monthly ceiling, and in exchange its hourly views — previously unlimited — are now capped at
  50,000. The settings screen now shows a meter for the monthly total next to the hourly counters.
* Your usage panel is now headed **Current usage** rather than "Usage this hour", because one of
  its meters is no longer hourly. The four existing counters are unchanged.

= 1.6.0 =
* **New: match your theme's Add to cart button.** Under WooCommerce → SeeOnWall → Storefront
  button, set **Button style** to "Match my Add to cart button" and the See on wall button copies
  your theme button's font, size, corners and spacing — no CSS, no values to look up. Colours stay
  ours by default so shoppers can still tell the two buttons apart; tick **Also match its colours**
  if you want those copied too.
* Enabling "Also match its colours" now clears the three colour fields, because a colour you set
  yourself overrides the matched one. The fields stay on screen — set one again if you want your
  theme's colours everywhere except, say, the border.
* The frame width in the preview now stops at 10 cm instead of 25. On a 30x40 print the old
  maximum drew a border wider than the print itself, which read as a bug rather than as a frame.
  If you had saved a wider **Default frame width**, the preview shows 10; lower it in the settings
  to match what your price actually includes.
* The **Button style** option "SeeOnWall style" is now called "Default button style" — same
  behaviour, clearer name next to the new matching option.
* Shoppers can still widen, recolour or remove the frame inside the preview, exactly as before.

= 1.5.0 =
* The plugin now speaks your language. Everything the plugin shows you — the settings screen, the
  WooCommerce menu entry, the artwork inset field on the product editor, and its notices — follows
  your WordPress admin language. German, Polish, Spanish, French and Italian are included, with
  regional variants (de_AT, de_CH, es_MX, es_AR, fr_BE, fr_CA and more) resolving to their
  language rather than falling back to English.
* Two more storefront button languages: you can now set the button text for French and Italian
  alongside English, Polski, Deutsch and Español, under WooCommerce → SeeOnWall → Storefront
  button. Shoppers see the button in their own storefront language.
* No action needed. Stores running WordPress in English see no change.

= 1.4.0 =
* Variable products are now supported. If you sell one poster in several sizes as variations,
  fill in each variation's Dimensions and the preview picks them up — no extra fields, no size
  typed twice.
* Shoppers get a size selector inside the preview listing every size you sell, and changing the
  size on your product page updates the preview to match.
* Previously the plugin read only the parent product's Dimensions, which variable products
  usually leave blank — so the button often did not appear on them at all. It now does.
* Variations sharing a size are listed once, so a Size × Frame colour product shows one entry
  per size. Nothing changes for simple products.

= 1.3.1 =
* Listing only, no code changes. The plugin name and WordPress.org search tags now say
  what it does, so merchants searching for a wall art preview tool can find it.

= 1.3.0 =
* Shoppers in stores that measure in inches now see inches. If your WooCommerce dimension unit
  (WooCommerce → Settings → Products) is set to inches, the wall, frame and mat measurements in
  the preview follow it. Visitors from the US get inches automatically even in a metric store,
  and anyone can switch units inside the preview.
* Poster sizes are still read from each product's Dimensions fields in whatever unit your store
  uses, exactly as before — the plugin has always converted them for you.
* No setting to change and no action needed. Stores measuring in centimetres see no difference.

= 1.2.0 =
* New **SeeOnWall artwork inset** field on the product's Shipping tab, for stores whose poster
  images are mockups — the print shown on a coloured background, or inside a frame. Previews
  used to treat the whole photo as the poster, so a 30x40 print appeared noticeably smaller
  than it actually hangs. Enter the rectangle the print itself occupies, as
  left,top,width,height percentages of the image, and every preview crops to it: on the wall,
  on the phone, and in downloaded or shared images.
* The inset applies only to products that also have the `seeonwall_image_url` custom field set.
  The rectangle is measured against one specific image, and the product's gallery image can be
  changed by the theme, so pairing the two keeps the crop matched to the image it describes.
* Mockups are usually generated from a template, so the same few values normally cover a whole
  catalogue.
* No action is needed for stores whose product images are the artwork itself.

= 1.1.0 =
* Previews now show the poster unframed by default. Previously every preview was drawn with a
  2 cm black frame regardless of what the store sold, so shoppers looking at an unframed print
  saw something the store does not ship. Shoppers can add a frame from inside the preview.
* New **Framing** section in the plugin settings: set a default frame width in centimetres and
  colour, applied to every preview. Set this if your prices include a frame — it restores the
  previous framed appearance.
* No action is needed for stores selling unframed prints.

= 1.0.2 =
* Documentation only — no functional changes. Added a "Reporting illegal content" section
  pointing to abuse@seeonwall.com and to the notice-and-action procedure under Article 16 of the
  EU Digital Services Act, published at https://seeonwall.com/report

= 1.0.1 =
* Documentation only — no functional changes. Corrected the description of what happens to
  shopper data. The previous wording said no customer personal data was involved, which was
  accurate about the plugin itself but misleading about the SeeOnWall service the plugin loads:
  a shopper who photographs their own wall has that photo stored in the EU and analysed to
  detect the wall, then deleted after 7 days. The description now states this explicitly and
  links to the sub-processor list at https://seeonwall.com/subprocessors.

= 1.0.0 =
* Initial release.


== Upgrade Notice ==

= 1.15.0 =
Rebuilds the settings screen out of WordPress' own headings, tables, notices and buttons.
Nothing to configure, and no existing setting changes.

= 1.14.0 =
Adds a Connect/Settings link on the Plugins screen and copy-ready privacy policy text under
Settings → Privacy. Product pages load faster: the preview script no longer blocks the page.
Nothing to configure.

= 1.13.0 =
Adds Portuguese: the settings screen follows a Portuguese WordPress admin language, and the
storefront button gets a Portuguese label field. Nothing to configure.

= 1.12.0 =
Adds six more places to put the See on wall button on the product page, and a
`[seeonwall_button]` shortcode for putting it anywhere else. Your button stays where it is —
nothing to configure.

= 1.10.0 =
Adds a Button shape setting: Solid, Outline, Icon and text, or Icon only, so See on wall can sit
quietly beside Add to cart instead of competing with it. Your button keeps its current look —
nothing to configure.

= 1.9.0 =
Adds "Already have a SeeOnWall account?" to the connect screen, so a store can join the account you
already pay for instead of getting a new free one. Nothing to configure if you are already
connected.

= 1.8.3 =
Fixes a blank SeeOnWall settings page. Update to reach the page and connect your store. Nothing to
configure.

= 1.8.2 =
Fixes the Open dashboard, Upgrade plan and Manage subscription buttons, which browsers could block
because their tab opened too late. Settings now report loading and failure instead of showing a
stale plan, and invalid values are caught before saving. Nothing to configure.

= 1.8.1 =
Listing only, no code changes. The usage limits and the plan answers on this page now match the
current plans, and the frame answer covers the catalogue added in 1.8.0. Nothing to do.

= 1.8.0 =
The preview can now offer the frames your shop sells, and it opens on the frame variation the
shopper picked. Add your frames in the SeeOnWall dashboard — Storefront button links there — and
name them as your variations name them. Leave the list empty and nothing changes.

= 1.7.1 =
Listing only, no code changes. Declares compatibility with WordPress 7.1. Nothing to do.

= 1.7.0 =
Poster views now have a monthly limit alongside the hourly one, and both are tracked — 5,000 views
a month on Basic, 25,000 on Premium, and 5,000 on Free while the current promotional offer runs.
Ultra has no monthly limit; its hourly views are now capped at 50,000. Nothing to configure; the
settings screen shows a meter for the monthly total.

= 1.6.0 =
Adds theme-button matching: the See on wall button can now copy your Add to cart button's shape
and typography. The frame width maximum drops from 25 cm to 10 — check your Default frame width if
you had set it higher.

= 1.5.0 =
The plugin is now translated into German, Polish, Spanish, French and Italian, following your
WordPress admin language. Adds French and Italian storefront button text. Nothing to configure.

= 1.4.0 =
Adds support for variable products: variation Dimensions now drive the preview, and shoppers
get a size selector. Fill in each variation's Dimensions; nothing else to configure.

= 1.3.1 =
Listing only, no code changes. Nothing to do.

= 1.3.0 =
Previews now show inches to shoppers in inch-measuring stores and to US visitors. Reads your
existing WooCommerce dimension unit; nothing to configure.

= 1.2.0 =
Adds a per-product artwork inset for stores whose product photos are mockups, so the print
previews at its true size. Nothing changes unless you set it.

= 1.1.0 =
Previews are now unframed by default instead of showing a 2 cm black frame. If your prices
include a frame, set a default frame width under WooCommerce → SeeOnWall → Framing.

= 1.0.2 =
Documentation only, no code changes. Adds how to report illegal content.

= 1.0.1 =
Documentation only, no code changes. Clarifies how shopper wall photos are handled.

= 1.0.0 =
Initial release.
