| 1 |
# Changelog |
| 2 |
|
| 3 |
<details> |
| 4 |
|
| 5 |
<summary>1.10.20 - 2026-09-17</summary> |
| 6 |
|
| 7 |
### Fixed |
| 8 |
- Basalam authorization callbacks no longer fail when Redis or Memcached drops the temporary OAuth marker; the single-use authorization proof is now carried in a signed, time-limited HttpOnly cookie |
| 9 |
|
| 10 |
</details> |
| 11 |
|
| 12 |
<details> |
| 13 |
|
| 14 |
<summary>1.10.19 - 2026-09-17</summary> |
| 15 |
|
| 16 |
### Changed / Improved |
| 17 |
- Single-product update jobs now run before bulk and full-update coordinator jobs |
| 18 |
|
| 19 |
</details> |
| 20 |
|
| 21 |
<details> |
| 22 |
|
| 23 |
<summary>1.10.18 - 2026-09-12</summary> |
| 24 |
|
| 25 |
### Fixed |
| 26 |
- Public plugin metadata, help, terms, and privacy links now use the live canonical Hamsalam and Basalam URLs instead of the retired `wp.hamsalam.ir` host |
| 27 |
- Product create and update requests now retry once without product or variation SKUs when Basalam rejects a duplicate SKU |
| 28 |
|
| 29 |
</details> |
| 30 |
|
| 31 |
<details> |
| 32 |
|
| 33 |
<summary>1.10.17 - 2026-09-09</summary> |
| 34 |
|
| 35 |
### Fixed |
| 36 |
- Async job dispatch runs during shutdown again, keeping queue probes and loopback requests out of the storefront response path |
| 37 |
- The dispatch lease is reserved before checking the queue, preventing concurrent requests from launching duplicate async runners |
| 38 |
|
| 39 |
</details> |
| 40 |
|
| 41 |
<details> |
| 42 |
|
| 43 |
<summary>1.10.16 - 2026-09-08</summary> |
| 44 |
|
| 45 |
### Fixed |
| 46 |
- Installing a newer plugin package now clears the previous version's force-update gate, allowing migrations, hooks, and the background jobs runner to start normally |
| 47 |
- Hotfix builds newer than the latest published package are no longer disabled when the version API has not registered them yet |
| 48 |
|
| 49 |
</details> |
| 50 |
|
| 51 |
<details> |
| 52 |
|
| 53 |
<summary>1.10.15 - 2026-09-08</summary> |
| 54 |
|
| 55 |
### Fixed |
| 56 |
- Large product queues no longer spawn overlapping AJAX runners from normal site traffic; one runner now owns the entire processing batch and duplicate workers exit immediately |
| 57 |
- Async runner dispatches are leased for 25 seconds instead of one second, preventing PHP worker exhaustion and storefront 503/504 errors during full or quick product updates |
| 58 |
- Installing a newer plugin package now clears the previous version's force-update gate, allowing migrations, hooks, and the background jobs runner to start normally |
| 59 |
- Hotfix builds newer than the latest published package are no longer disabled when the version API has not registered them yet |
| 60 |
|
| 61 |
</details> |
| 62 |
|
| 63 |
<details> |
| 64 |
|
| 65 |
<summary>1.10.14 - 2026-09-08</summary> |
| 66 |
|
| 67 |
### Added |
| 68 |
- Product SKUs are now sent to Basalam when creating or updating products, and variation SKUs are sent with variant payloads and per-variation updates; a new "کد � |
| 69 |
حصول (SKU)" option controls the field in custom update mode (enabled by default) |
| 70 |
|
| 71 |
### Fixed |
| 72 |
- The async job runner now dispatches from init instead of shutdown, avoiding database "commands out of sync" errors caused by unread result sets left by other shutdown callbacks |
| 73 |
|
| 74 |
</details> |
| 75 |
|
| 76 |
<details> |
| 77 |
|
| 78 |
<summary>1.10.13 - 2026-09-01</summary> |
| 79 |
|
| 80 |
### Added |
| 81 |
- Added a manual vendor-status recheck button to inactive-vendor notices so store owners can immediately restore synchronization after reactivating their Basalam booth |
| 82 |
|
| 83 |
### Changed / Improved |
| 84 |
- Local environments now bypass vendor-status checks and inactive-vendor restrictions; the daily vendor-status cron is also unscheduled locally |
| 85 |
- The category detection endpoint now uses API v2.0 while preserving the existing response consumer contract |
| 86 |
|
| 87 |
</details> |
| 88 |
|
| 89 |
<details> |
| 90 |
|
| 91 |
<summary>1.10.12 - 2026-08-29</summary> |
| 92 |
|
| 93 |
### Fixed |
| 94 |
- Restored the AJAX click handlers for product update, archive, restore, and disconnect actions on the WooCommerce product editor |
| 95 |
|
| 96 |
### Changed / Improved |
| 97 |
- The authenticated Woosalam chat widget now loads on every WordPress admin screen while other Woosalam assets remain scoped to their relevant pages |
| 98 |
|
| 99 |
</details> |
| 100 |
|
| 101 |
<details> |
| 102 |
|
| 103 |
<summary>1.10.11 - 2026-08-26</summary> |
| 104 |
|
| 105 |
### Fixed |
| 106 |
- Product media MIME types are now detected from the actual file contents before checking the filename extension |
| 107 |
- Non-standard image MIME aliases such as `image/jpg`, `image/pjpeg`, and vendor-specific PNG/BMP values are normalized to the canonical values accepted by Basalam Uploadio |
| 108 |
- The media upload request and multipart file transfer now use the same canonical MIME type, preventing valid JPEG images from failing with a `422` unsupported-MIME response |
| 109 |
|
| 110 |
</details> |
| 111 |
|
| 112 |
<details> |
| 113 |
|
| 114 |
<summary>1.10.10 - 2026-08-25</summary> |
| 115 |
|
| 116 |
### Added |
| 117 |
- Added a daily vendor-status check with persistent inactive-duration tracking and automatic recovery when the vendor becomes active again |
| 118 |
- Added state-specific admin notices, dashboard badges, disabled controls, and explanatory UI for limited and suspended synchronization modes |
| 119 |
|
| 120 |
### Changed / Improved |
| 121 |
- Vendors inactive for less than 21 days can no longer create products; manual, bulk, queued, and automatic updates are restricted to price and stock |
| 122 |
- Vendors inactive for 21 days or longer can no longer create, update, archive, restore, or discount products until the vendor becomes active again |
| 123 |
- Product jobs revalidate the vendor policy at execution time so queued work cannot bypass a later status change |
| 124 |
- Improved background job dispatch and limited admin assets and notices to relevant Woosalam, product, and order screens |
| 125 |
- Aligned the connection-status header, card, and inner synchronization panel across active and inactive states |
| 126 |
|
| 127 |
</details> |
| 128 |
|
| 129 |
<details> |
| 130 |
|
| 131 |
<summary>1.10.9 - 2026-08-16</summary> |
| 132 |
|
| 133 |
### Fixed |
| 134 |
- The ticket reply access form is now shown only after site access is rejected; it stays hidden while access is pending, after approval, and when the status is missing or unknown |
| 135 |
|
| 136 |
</details> |
| 137 |
|
| 138 |
<details> |
| 139 |
|
| 140 |
<summary>1.10.8 - 2026-08-15</summary> |
| 141 |
|
| 142 |
### Added |
| 143 |
- Added independent settings for updating variation prices and variation stock |
| 144 |
|
| 145 |
### Changed / Improved |
| 146 |
- Connected variations are now updated individually through Core v4 |
| 147 |
- Price-only variation updates send only `primary_price`, while stock-only updates send only `stock` |
| 148 |
- Variation price updates work independently from the product price setting |
| 149 |
- Custom update mode now requires at least one selected field and shows the plugin error toast without refreshing the page when none is selected |
| 150 |
- Full, quick, selected, and automatic updates no longer create jobs or API requests when the custom field selection is empty |
| 151 |
- Product admin JavaScript now uses a file-aware cache version so the latest validation behavior is loaded immediately after deployment |
| 152 |
|
| 153 |
</details> |
| 154 |
|
| 155 |
<details> |
| 156 |
|
| 157 |
<summary>1.10.7 - 2026-08-11</summary> |
| 158 |
|
| 159 |
### Fixed |
| 160 |
- Ticket validation and API failures are now shown as admin toasts instead of WordPress `admin-post.php` error pages |
| 161 |
- New-ticket submissions now use AJAX, preserving entered text, credentials, and uploaded-image previews when a request fails; if the ticket was created before access storage failed, retrying updates only the access data and does not create a duplicate ticket |
| 162 |
- Ticket JavaScript now uses a file-aware cache version so updated validation and submission behavior is loaded immediately after deployment |
| 163 |
|
| 164 |
</details> |
| 165 |
|
| 166 |
<details> |
| 167 |
|
| 168 |
<summary>1.10.6 - 2026-08-11</summary> |
| 169 |
|
| 170 |
### Fixed |
| 171 |
- Product images in AVIF or another image format unsupported by Basalam are now converted to JPEG before the upload request, preventing the `422` unsupported-MIME error |
| 172 |
- Temporary downloaded and converted product-image files are removed after both successful and failed uploads; when the server cannot decode the source format, the plugin now returns an actionable error instead of sending an invalid MIME type to Basalam |
| 173 |
- A copied product no longer inherits *any* Woosalam data from the product it was copied from — not the Basalam connection, and not the per-product settings (video, custom price change, gold/mobile fields, product type and value, wholesale, discount flag). Every `sync_basalam_*` / `_sync_basalam_*` meta on the duplicate and its variations is stripped before WooCommerce saves the duplicate (`woocommerce_duplicate_product_exclude_meta`), cleaned again after duplication, and also cleaned for copies made by third-party duplicate plugins (`dp_duplicate_post`, `dp_duplicate_page`, `duplicate_post_post_copy`). Individual keys can be kept via the `sync_basalam_duplicate_purge_meta_keys` filter |
| 174 |
- Disconnecting a product now removes the connection meta of every vendor id (previously only the currently configured vendor's keys were removed, so a stale, hard to find key could stay in the database) and clears `sync_basalam_variation_id` from all variations, not only from products currently typed as variable |
| 175 |
- No product data, status change, or discount is sent to Basalam while two or more WooCommerce products share one Basalam product id. The operation is stopped with a clear message instead of overwriting the wrong Basalam product (this is what made old prices and old stock reappear on Basalam) |
| 176 |
- Products with an empty Basalam product id no longer produce a malformed update request |
| 177 |
|
| 178 |
### Added |
| 179 |
- A one-time repair on update that finds WooCommerce products sharing a Basalam product id, keeps the connection on the oldest (original) product, disconnects the copies, and reports the result in an admin notice and the plugin log |
| 180 |
|
| 181 |
</details> |
| 182 |
|
| 183 |
<details> |
| 184 |
|
| 185 |
<summary>1.10.5 - 2026-08-05</summary> |
| 186 |
|
| 187 |
### Changed / Improved |
| 188 |
- Limited bulk product update API requests to a maximum of five per minute without reducing the execution rate of other background jobs |
| 189 |
|
| 190 |
</details> |
| 191 |
|
| 192 |
<details> |
| 193 |
|
| 194 |
<summary>1.10.4 - 2026-08-04</summary> |
| 195 |
|
| 196 |
### Fixed |
| 197 |
- Preserved complete URLs in new ticket messages, ticket replies, and optional access-information fields, including percent-encoded URL segments that WordPress text sanitization previously removed |
| 198 |
- Updated ticket media uploads to send `type=ticket_item` and `collection=IMAGE` as multipart form fields to the `/media` endpoint, and fixed the upload service to return the API response |
| 199 |
|
| 200 |
</details> |
| 201 |
|
| 202 |
<details> |
| 203 |
|
| 204 |
<summary>1.10.3 - 2026-07-22</summary> |
| 205 |
|
| 206 |
### Changed / Improved |
| 207 |
- "Price increase" became "price change" everywhere (code, markup, CSS classes): negative values are supported, so e.g. `-10` lowers the final Basalam price by 10% (percentages are capped at 35% increase and 35% decrease; values outside the -100..100 range are fixed Toman amounts) |
| 208 |
- The global setting key was renamed from `increase_price_value` to `price_change_value`, and the per-product meta from `_sync_basalam_increase_price_value` to `_sync_basalam_price_change_value`. Old values are not migrated — re-enter the price change in the settings |
| 209 |
- The category-commission mode is now stored as `commission` instead of `-1`, so it no longer collides with a real negative percentage |
| 210 |
|
| 211 |
### Added |
| 212 |
- A "custom price change" field in the Basalam product settings tab and in the products list bulk edit, so a single product or a selection of products can override the global value (or switch to category commission) |
| 213 |
|
| 214 |
</details> |
| 215 |
|
| 216 |
<details> |
| 217 |
|
| 218 |
<summary>1.10.2 - 2026-07-19</summary> |
| 219 |
|
| 220 |
### Changed / Improved |
| 221 |
- Migrated product photo and video uploads from the legacy direct upload endpoint to Uploadio's presigned media flow |
| 222 |
- Added SHA-256 metadata, direct staging upload, completion handling, and status polling so product payloads receive the final Basalam media ID and URL |
| 223 |
- Ensured temporary remote media files are removed after both successful and failed uploads |
| 224 |
- Streamed remote media downloads and multipart uploads with size-aware limits and timeouts to support large product videos without buffering the entire file in PHP memory |
| 225 |
|
| 226 |
</details> |
| 227 |
|
| 228 |
<details> |
| 229 |
|
| 230 |
<summary>1.10.1 - 2026-07-13</summary> |
| 231 |
|
| 232 |
### Fixed |
| 233 |
- When Basalam rejects a product create/update with `422` because the description contains forbidden content (social-network names, page/channel mentions, etc.), the plugin now extracts the flagged phrases — highlighted inside `<em>...</em>` in the response `snippet` — strips them from the description, and automatically retries (up to 3 times). Previously the sanitizer looked for a non-existent `value` field, so nothing was removed and the retry never helped |
| 234 |
|
| 235 |
</details> |
| 236 |
|
| 237 |
<details> |
| 238 |
|
| 239 |
<summary>1.10.0 - 2026-07-11</summary> |
| 240 |
|
| 241 |
### Added |
| 242 |
- Merged the "Woosalam Plus" add-on into the core plugin as a built-in "Financial Management" section: view store balance, active settlement requests, settlement history, and submit settlement requests to wallet or bank account |
| 243 |
- Added the `customer.identity.read` scope to the Basalam OAuth connection request (required to fetch the user's bank account list in the settlement flow) |
| 244 |
|
| 245 |
### Note |
| 246 |
- Users who connected to Basalam before this release must reconnect ("Connect to Basalam") once so the new scope is granted before the bank-account settlement feature works |
| 247 |
|
| 248 |
</details> |
| 249 |
|
| 250 |
<details> |
| 251 |
|
| 252 |
<summary>1.9.2 - 2026-07-08</summary> |
| 253 |
|
| 254 |
### Security |
| 255 |
- Fixed a CSRF vulnerability in the Basalam OAuth callback (`basalam-save-token`) that could let a forged request overwrite the stored connection credentials; the callback now requires a single-use, time-limited authorization that the admin actively started, and the "connect to Basalam" links go through a nonce-protected request |
| 256 |
- Hardened output escaping across admin pages, templates and exception messages (esc_html/esc_attr) |
| 257 |
- Switched internal redirects to wp_safe_redirect and documented direct custom-table queries |
| 258 |
|
| 259 |
### Changed / Improved |
| 260 |
- Tested up to WordPress 7.0 |
| 261 |
|
| 262 |
</details> |
| 263 |
|
| 264 |
<details> |
| 265 |
|
| 266 |
<summary>1.9.1 - 2026-06-30</summary> |
| 267 |
|
| 268 |
### Fixed |
| 269 |
- show check-orders button and vertically center its content on mobile/tablet |
| 270 |
|
| 271 |
</details> |
| 272 |
|
| 273 |
<details> |
| 274 |
|
| 275 |
<summary>1.9.0 - 2026-06-21</summary> |
| 276 |
|
| 277 |
### Added |
| 278 |
- add gold product type with purity and weight attributes |
| 279 |
- add preparation days management for product categories |
| 280 |
|
| 281 |
### Fixed |
| 282 |
- decrease min pkg weight |
| 283 |
|
| 284 |
</details> |
| 285 |
|
| 286 |
<details> |
| 287 |
|
| 288 |
<summary>1.8.8 - 2026-05-18</summary> |
| 289 |
|
| 290 |
### Fixed |
| 291 |
- fix City/state mapping with persian shiping woo |
| 292 |
- increase count of photo limit |
| 293 |
|
| 294 |
|
| 295 |
</details> |
| 296 |
|
| 297 |
<details> |
| 298 |
|
| 299 |
<summary>1.8.7 - 2026-05-16</summary> |
| 300 |
|
| 301 |
### Added |
| 302 |
- Product video upload support (VideoService, VideoField, VideoSourceResolver) |
| 303 |
- Circuit breaker alert notifications |
| 304 |
- replace toast with alert() |
| 305 |
- Limit on increase precent(max 35%) |
| 306 |
- Migration 1.8.7 |
| 307 |
|
| 308 |
### Fixed |
| 309 |
- Improved file upload, lock manager, and API response handling |
| 310 |
|
| 311 |
</details> |
| 312 |
|
| 313 |
<details> |
| 314 |
|
| 315 |
<summary>1.8.5,1.8.6 - 2026-05-10</summary> |
| 316 |
|
| 317 |
### Fixed |
| 318 |
- deduplictaion orders |
| 319 |
- fix stuck-processing |
| 320 |
|
| 321 |
</details> |
| 322 |
|
| 323 |
<details> |
| 324 |
|
| 325 |
|
| 326 |
<details> |
| 327 |
|
| 328 |
<summary>1.8.4 - 2026-05-03</summary> |
| 329 |
|
| 330 |
### Fixed |
| 331 |
- Circuit Breaker mechanism |
| 332 |
|
| 333 |
</details> |
| 334 |
|
| 335 |
<details> |
| 336 |
|
| 337 |
<summary>1.8.3 - 2026-05-03</summary> |
| 338 |
|
| 339 |
### Added |
| 340 |
- Added bulk edit support for wholesale settings, product type, and custom price increase |
| 341 |
- Added per-product custom price increase support |
| 342 |
- Added an information API endpoint to improve AI agent support in `admin.hamsalam.ir` |
| 343 |
|
| 344 |
### Changed / Improved |
| 345 |
- Added automatic order creation in status change events when the order does not already exist |
| 346 |
- Clear saved token on `401 Unauthorized` responses from `*.basalam.com` requests |
| 347 |
- Show an error when required Woosalam domains are blocked |
| 348 |
- Prevent task execution when required Woosalam domains are blocked |
| 349 |
|
| 350 |
### Fixed |
| 351 |
- Fixed user-reported issues |
| 352 |
|
| 353 |
</details> |
| 354 |
|
| 355 |
<details> |
| 356 |
|
| 357 |
<summary>1.8.2 - 2026-04-04</summary> |
| 358 |
|
| 359 |
### Added |
| 360 |
- Photo and weight validator for products |
| 361 |
- Filter hook for contact-us section visibility |
| 362 |
- Prefix and suffix to product title for category detection |
| 363 |
|
| 364 |
### Fixed |
| 365 |
- Fetch current vendor info without cache |
| 366 |
</details> |
| 367 |
|
| 368 |
<details> |
| 369 |
|
| 370 |
<details> |
| 371 |
|
| 372 |
<summary>1.8.1 - 2026-03-07</summary> |
| 373 |
|
| 374 |
### Added |
| 375 |
- basalam Chat widget |
| 376 |
|
| 377 |
</details> |
| 378 |
|
| 379 |
<details> |
| 380 |
|
| 381 |
<summary>1.8.0 - 2026-03-05</summary> |
| 382 |
|
| 383 |
### Changed / Improved |
| 384 |
- Introduced an internal DI container (`ContainerInterface`, `Container`, `ServiceProviderInterface`) and centralized service provider wiring. |
| 385 |
- Added `syncBasalamContainer()` and migrated `syncBasalamPlugin()` / `syncBasalamSettings()` to container-backed access. |
| 386 |
- Migrated core hotspots from direct instantiation to container resolution: |
| 387 |
- `ApiServiceManager` |
| 388 |
- `ProductOperations` |
| 389 |
- `JobManager` |
| 390 |
- class-level settings access |
| 391 |
- Refactored job subsystem wiring for constructor-based dependencies (`AbstractJobType`, job types, `JobRegistry`, `JobsRunner`, `DiscountTaskScheduler`). |
| 392 |
- Updated action and registrar edges to resolve handlers/listeners via container. |
| 393 |
- Removed legacy singleton-style accessors in core services and standardized on container-first resolution. |
| 394 |
- add unInstall |
| 395 |
- Added dashboard data retrieval in tickets |
| 396 |
- Added `vendor_id` suffix to product `postmeta` |
| 397 |
- Added selectable stock priority for variable products |
| 398 |
- Added a Circuit Breaker mechanism |
| 399 |
|
| 400 |
|
| 401 |
|
| 402 |
### Added |
| 403 |
- Container-backed settings access via `SettingsContainer`. |
| 404 |
|
| 405 |
</details> |
| 406 |
|
| 407 |
<details> |
| 408 |
|
| 409 |
<summary>1.7.9 - 2026-02-25</summary> |
| 410 |
|
| 411 |
### Changed / Improved |
| 412 |
- Added plugin version to all admin CSS/JS enqueue calls for proper cache busting |
| 413 |
|
| 414 |
</details> |
| 415 |
|
| 416 |
|
| 417 |
<details> |
| 418 |
|
| 419 |
<summary>1.7.8 - 2026-02-21</summary> |
| 420 |
|
| 421 |
### Added |
| 422 |
- retry system for jobs |
| 423 |
- Added announcements section |
| 424 |
- Added file upload capability in tickets |
| 425 |
- Added discount reduction percentage setting |
| 426 |
- Added ability to fetch and sync Basalam orders up to the last 30 days |
| 427 |
- Added customer name prefix/suffix settings for Basalam orders |
| 428 |
- Added onboarding section to Woosalam |
| 429 |
|
| 430 |
### Changed / Improved |
| 431 |
|
| 432 |
- Remove Product Operation type |
| 433 |
- change fetch unsync orders structure |
| 434 |
- Switched product list fetching from paginate-based API to cursor-based API |
| 435 |
- Skip webhook creation when the site domain is localhost |
| 436 |
- Made Woosalam addonable/extensible |
| 437 |
- Categorized plugin settings |
| 438 |
|
| 439 |
### Fix |
| 440 |
- Fixed ticket links issues |
| 441 |
- Fixed duplicated products issue |
| 442 |
- Fixed null value being sent to Basalam on duplicated product disconnect/update flow |
| 443 |
|
| 444 |
</details> |
| 445 |
|
| 446 |
<details> |
| 447 |
|
| 448 |
<summary>1.7.7 - 2026-02-07</summary> |
| 449 |
|
| 450 |
### Changed / Improved |
| 451 |
|
| 452 |
- Enhanced Performance and Security in Ticket Logics |
| 453 |
- Don't send null value in update product at basalam |
| 454 |
|
| 455 |
</details> |
| 456 |
|
| 457 |
|
| 458 |
<details> |
| 459 |
|
| 460 |
<summary>1.7.6 - 2026-02-01</summary> |
| 461 |
|
| 462 |
### Fix |
| 463 |
|
| 464 |
- Remove Unused Migration |
| 465 |
|
| 466 |
</details> |
| 467 |
|
| 468 |
<details> |
| 469 |
|
| 470 |
<summary>1.7.5 - 2026-01-26</summary> |
| 471 |
|
| 472 |
### Added |
| 473 |
|
| 474 |
- Added Ticketing feature |
| 475 |
|
| 476 |
</details> |
| 477 |
|
| 478 |
<details> |
| 479 |
|
| 480 |
<summary>1.7.4 - 2026-01-6</summary> |
| 481 |
|
| 482 |
### Fixed |
| 483 |
|
| 484 |
- Fix Bugs |
| 485 |
|
| 486 |
</details> |
| 487 |
|
| 488 |
<details> |
| 489 |
|
| 490 |
<summary>1.7.3 - 2025-12-27</summary> |
| 491 |
|
| 492 |
### Fixed |
| 493 |
|
| 494 |
- Fix Bugs |
| 495 |
|
| 496 |
</details> |
| 497 |
|
| 498 |
<details> |
| 499 |
|
| 500 |
<summary>1.7.2 - 2025-12-24</summary> |
| 501 |
|
| 502 |
### Fixed |
| 503 |
|
| 504 |
- Compatibity beetwin HPOS and Legay System |
| 505 |
- Fix webhook handling and authorization in WebhookService |
| 506 |
|
| 507 |
</details> |
| 508 |
|
| 509 |
<details> |
| 510 |
|
| 511 |
<summary>1.7.1 - 2025-12-23</summary> |
| 512 |
|
| 513 |
### Fixed |
| 514 |
|
| 515 |
- Add Missed Files |
| 516 |
|
| 517 |
</details> |
| 518 |
|
| 519 |
|
| 520 |
<details> |
| 521 |
|
| 522 |
<summary>1.7.0 - 2025-12-20</summary> |
| 523 |
|
| 524 |
### Added |
| 525 |
|
| 526 |
- Added PSR-4 autoloading structure for better code organization |
| 527 |
|
| 528 |
### Changed / Improved |
| 529 |
|
| 530 |
- Enhanced plugin code structure and performance optimizations |
| 531 |
- Added detailed order information display on orders page |
| 532 |
- Improved category ID retrieval with reverse order output |
| 533 |
|
| 534 |
### Fixed |
| 535 |
|
| 536 |
- Fixed commission calculation issues |
| 537 |
- Fixed order fetching problems |
| 538 |
- Fixed Persian WooCommerce Shipping plugin compatibility issues |
| 539 |
|
| 540 |
</details> |
| 541 |
|
| 542 |
<details> |
| 543 |
<summary>1.6.1 - 2025-12-6</summary> |
| 544 |
|
| 545 |
### Changed / Improved |
| 546 |
- Handle cursor for get order lists |
| 547 |
|
| 548 |
### Fixed |
| 549 |
- don't send request to core.basalam.com |
| 550 |
- add reduce/increase stock action for woosalam order statuses |
| 551 |
|
| 552 |
</details> |
| 553 |
|
| 554 |
<details> |
| 555 |
<summary>1.6.0 - 2025-12-1</summary> |
| 556 |
### Changed / Improved |
| 557 |
- Added automatic shipping method detection and auto-saving of the shipping name and cost in WooCommerce orders |
| 558 |
|
| 559 |
</details> |
| 560 |
|
| 561 |
<details> |
| 562 |
<summary>1.5.9 - 2025-11-27</summary> |
| 563 |
|
| 564 |
### Fixed |
| 565 |
|
| 566 |
- Add missing default settings to database and return default for single missing setting |
| 567 |
- Handle customer names without spaces |
| 568 |
- Correct Persian WooCommerce path |
| 569 |
|
| 570 |
### Refactored |
| 571 |
|
| 572 |
- Simplify check if Persian WooCommerce Shipping plugin is active |
| 573 |
|
| 574 |
</details> |
| 575 |
|
| 576 |
<details> |
| 577 |
<summary>1.5.8 - 2025-11-18</summary> |
| 578 |
|
| 579 |
### Changed / Improved |
| 580 |
|
| 581 |
- Improved batch product update functionality |
| 582 |
- Enhanced complete product update process |
| 583 |
|
| 584 |
</details> |
| 585 |
|
| 586 |
<details> |
| 587 |
<summary>1.5.7 - 2025-11-17</summary> |
| 588 |
|
| 589 |
### Added |
| 590 |
|
| 591 |
- Added compatibility with Tappin |
| 592 |
- Added support for currency units irht and irhr |
| 593 |
|
| 594 |
### Changed / Improved |
| 595 |
|
| 596 |
- Implemented automatic price rounding for Basalam compatibility |
| 597 |
- Changed product enqueue structure from offset-based to ID-based |
| 598 |
- Made WooCommerce order creation process atomic |
| 599 |
|
| 600 |
### Fixed |
| 601 |
|
| 602 |
- Fixed job manager functionality and proper task execution |
| 603 |
|
| 604 |
</details> |
| 605 |
|
| 606 |
<details> |
| 607 |
<summary>1.5.5 - 2025-11-15</summary> |
| 608 |
|
| 609 |
### Changed / Improved |
| 610 |
|
| 611 |
- Optimized fetch creatable products query using direct SQL for better performance |
| 612 |
- Improved API service manager to properly decode JSON responses |
| 613 |
- Enhanced update job detection logic to avoid false positive job status checks |
| 614 |
|
| 615 |
### Fixed |
| 616 |
|
| 617 |
- Fixed API response handling by properly decoding JSON data |
| 618 |
- Removed commented-out legacy code from plugin initialization |
| 619 |
- Fixed quick update job status detection in admin dashboard |
| 620 |
- Resolved duplicate job checking that was causing incorrect "in progress" states |
| 621 |
|
| 622 |
</details> |
| 623 |
|
| 624 |
<details> |
| 625 |
<summary>1.5.4 - 2025-11-6</summary> |
| 626 |
|
| 627 |
### Added |
| 628 |
|
| 629 |
- Migration system for version 1.5.4 |
| 630 |
|
| 631 |
### Changed / Improved |
| 632 |
|
| 633 |
- Enhanced onboarding styles and UI improvements |
| 634 |
- Improved category fetching process with better error handling |
| 635 |
- Enhanced file uploader service functionality |
| 636 |
- Optimized product update process |
| 637 |
|
| 638 |
### Fixed |
| 639 |
|
| 640 |
- Fixed error handling in product update service |
| 641 |
- Removed deprecated photo ban status service |
| 642 |
- Fixed category mapping page display and functionality |
| 643 |
- Improved product meta box data handling |
| 644 |
- Fixed issues in get product data service |
| 645 |
|
| 646 |
</details> |
| 647 |
|
| 648 |
<details> |
| 649 |
<summary>1.5.3 - 2025-10-25</summary> |
| 650 |
|
| 651 |
### Fixed |
| 652 |
|
| 653 |
- Fixed some bugs |
| 654 |
|
| 655 |
</details> |
| 656 |
|
| 657 |
<details> |
| 658 |
<summary>1.5.0 - 2025-10-04</summary> |
| 659 |
|
| 660 |
### Added |
| 661 |
|
| 662 |
- Key-value storage system for plugin settings |
| 663 |
- Option to select sale price display style (strikethrough or sale price only) |
| 664 |
- Automatic log file cleanup (weekly) |
| 665 |
- Manual and automatic task execution rate control (tasks per minute) |
| 666 |
|
| 667 |
### Changed / Improved |
| 668 |
|
| 669 |
- Removed WP Cron dependency for better performance |
| 670 |
- Enhanced task scheduling system |
| 671 |
|
| 672 |
### Fixed |
| 673 |
|
| 674 |
- Removed invalid variations from product data |
| 675 |
- Fixed category attributes synchronization issue |
| 676 |
- Fixed sale price validation before applying |
| 677 |
- Resolved migration 1.4.0 issues |
| 678 |
|
| 679 |
</details> |
| 680 |
|
| 681 |
<details> |
| 682 |
<summary>1.4.0 - 2025-09-12</summary> |
| 683 |
|
| 684 |
### Added |
| 685 |
|
| 686 |
- Manual product category mapping |
| 687 |
- Strikethrough pricing for products |
| 688 |
- Add products from Digikala (Pro version) |
| 689 |
- Create a free store (Pro version) |
| 690 |
|
| 691 |
### Changed / Improved |
| 692 |
|
| 693 |
- Plugin structure optimization |
| 694 |
|
| 695 |
### Fixed |
| 696 |
|
| 697 |
- Fixed reported issues |
| 698 |
|
| 699 |
</details> |
| 700 |
|
| 701 |
<details> |
| 702 |
<summary>1.3.0 - 2025-07-23</summary> |
| 703 |
|
| 704 |
### Added |
| 705 |
|
| 706 |
- Option to choose operation execution method (AJAX and Queue) |
| 707 |
- Manual order fetching |
| 708 |
- Cancel orders |
| 709 |
- Fetch order changes from Basalam and apply them to WooCommerce orders |
| 710 |
|
| 711 |
### Fixed |
| 712 |
|
| 713 |
- Fixed reported issues |
| 714 |
|
| 715 |
</details> |
| 716 |
|
| 717 |
<details> |
| 718 |
<summary>1.2.0 - 2025-06-27</summary> |
| 719 |
|
| 720 |
### Added |
| 721 |
|
| 722 |
- Bulk product addition |
| 723 |
- Bulk product update |
| 724 |
- Auto order confirmation |
| 725 |
|
| 726 |
### Fixed |
| 727 |
|
| 728 |
- Fixed issues reported in previous version |
| 729 |
|
| 730 |
</details> |
| 731 |
|
| 732 |
<details> |
| 733 |
<summary>1.1.0 - 2025-02-13</summary> |
| 734 |
|
| 735 |
### Added |
| 736 |
|
| 737 |
- Automatic fetching and creation of Basalam orders in WooCommerce |
| 738 |
- Manage orders from WooCommerce (confirm order, request delay, ship order) |
| 739 |
- Advanced settings for easier use |
| 740 |
|
| 741 |
### Fixed |
| 742 |
|
| 743 |
- Fixed some issues from previous versions |
| 744 |
|
| 745 |
</details> |
| 746 |
|
| 747 |
<details> |
| 748 |
<summary>1.0.0 - 2024-12-31</summary> |
| 749 |
|
| 750 |
### Added |
| 751 |
|
| 752 |
- Add and update products individually and in bulk |
| 753 |
- Automatic product synchronization |
| 754 |
- Settings and logs page |
| 755 |
|
| 756 |
</details> |
| 757 |
|