PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.14
ووسلام – همگام سازی ووکامرس و باسلام v1.10.14
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
sync-basalam / CHANGELOG.md

CHANGELOG.md in ووسلام – همگام سازی ووکامرس و باسلام 1.10.14, at CHANGELOG.md

697 lines 20.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 # Changelog
2
3 <details>
4
5 <summary>1.10.14 - 2026-09-08</summary>
6
7 ### Added
8 - 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 "کد �
9 حصول (SKU)" option controls the field in custom update mode (enabled by default)
10
11 ### Fixed
12 - 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
13
14 </details>
15
16 <details>
17
18 <summary>1.10.13 - 2026-09-01</summary>
19
20 ### Added
21 - Added a manual vendor-status recheck button to inactive-vendor notices so store owners can immediately restore synchronization after reactivating their Basalam booth
22
23 ### Changed / Improved
24 - Local environments now bypass vendor-status checks and inactive-vendor restrictions; the daily vendor-status cron is also unscheduled locally
25 - The category detection endpoint now uses API v2.0 while preserving the existing response consumer contract
26
27 </details>
28
29 <details>
30
31 <summary>1.10.12 - 2026-08-29</summary>
32
33 ### Fixed
34 - Restored the AJAX click handlers for product update, archive, restore, and disconnect actions on the WooCommerce product editor
35
36 ### Changed / Improved
37 - The authenticated Woosalam chat widget now loads on every WordPress admin screen while other Woosalam assets remain scoped to their relevant pages
38
39 </details>
40
41 <details>
42
43 <summary>1.10.11 - 2026-08-26</summary>
44
45 ### Fixed
46 - Product media MIME types are now detected from the actual file contents before checking the filename extension
47 - 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
48 - 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
49
50 </details>
51
52 <details>
53
54 <summary>1.10.10 - 2026-08-25</summary>
55
56 ### Added
57 - Added a daily vendor-status check with persistent inactive-duration tracking and automatic recovery when the vendor becomes active again
58 - Added state-specific admin notices, dashboard badges, disabled controls, and explanatory UI for limited and suspended synchronization modes
59
60 ### Changed / Improved
61 - Vendors inactive for less than 21 days can no longer create products; manual, bulk, queued, and automatic updates are restricted to price and stock
62 - Vendors inactive for 21 days or longer can no longer create, update, archive, restore, or discount products until the vendor becomes active again
63 - Product jobs revalidate the vendor policy at execution time so queued work cannot bypass a later status change
64 - Improved background job dispatch and limited admin assets and notices to relevant Woosalam, product, and order screens
65 - Aligned the connection-status header, card, and inner synchronization panel across active and inactive states
66
67 </details>
68
69 <details>
70
71 <summary>1.10.9 - 2026-08-16</summary>
72
73 ### Fixed
74 - 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
75
76 </details>
77
78 <details>
79
80 <summary>1.10.8 - 2026-08-15</summary>
81
82 ### Added
83 - Added independent settings for updating variation prices and variation stock
84
85 ### Changed / Improved
86 - Connected variations are now updated individually through Core v4
87 - Price-only variation updates send only `primary_price`, while stock-only updates send only `stock`
88 - Variation price updates work independently from the product price setting
89 - Custom update mode now requires at least one selected field and shows the plugin error toast without refreshing the page when none is selected
90 - Full, quick, selected, and automatic updates no longer create jobs or API requests when the custom field selection is empty
91 - Product admin JavaScript now uses a file-aware cache version so the latest validation behavior is loaded immediately after deployment
92
93 </details>
94
95 <details>
96
97 <summary>1.10.7 - 2026-08-11</summary>
98
99 ### Fixed
100 - Ticket validation and API failures are now shown as admin toasts instead of WordPress `admin-post.php` error pages
101 - 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
102 - Ticket JavaScript now uses a file-aware cache version so updated validation and submission behavior is loaded immediately after deployment
103
104 </details>
105
106 <details>
107
108 <summary>1.10.6 - 2026-08-11</summary>
109
110 ### Fixed
111 - 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
112 - 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
113 - 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
114 - 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
115 - 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)
116 - Products with an empty Basalam product id no longer produce a malformed update request
117
118 ### Added
119 - 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
120
121 </details>
122
123 <details>
124
125 <summary>1.10.5 - 2026-08-05</summary>
126
127 ### Changed / Improved
128 - Limited bulk product update API requests to a maximum of five per minute without reducing the execution rate of other background jobs
129
130 </details>
131
132 <details>
133
134 <summary>1.10.4 - 2026-08-04</summary>
135
136 ### Fixed
137 - 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
138 - 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
139
140 </details>
141
142 <details>
143
144 <summary>1.10.3 - 2026-07-22</summary>
145
146 ### Changed / Improved
147 - "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)
148 - 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
149 - The category-commission mode is now stored as `commission` instead of `-1`, so it no longer collides with a real negative percentage
150
151 ### Added
152 - 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)
153
154 </details>
155
156 <details>
157
158 <summary>1.10.2 - 2026-07-19</summary>
159
160 ### Changed / Improved
161 - Migrated product photo and video uploads from the legacy direct upload endpoint to Uploadio's presigned media flow
162 - Added SHA-256 metadata, direct staging upload, completion handling, and status polling so product payloads receive the final Basalam media ID and URL
163 - Ensured temporary remote media files are removed after both successful and failed uploads
164 - 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
165
166 </details>
167
168 <details>
169
170 <summary>1.10.1 - 2026-07-13</summary>
171
172 ### Fixed
173 - 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
174
175 </details>
176
177 <details>
178
179 <summary>1.10.0 - 2026-07-11</summary>
180
181 ### Added
182 - 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
183 - 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)
184
185 ### Note
186 - 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
187
188 </details>
189
190 <details>
191
192 <summary>1.9.2 - 2026-07-08</summary>
193
194 ### Security
195 - 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
196 - Hardened output escaping across admin pages, templates and exception messages (esc_html/esc_attr)
197 - Switched internal redirects to wp_safe_redirect and documented direct custom-table queries
198
199 ### Changed / Improved
200 - Tested up to WordPress 7.0
201
202 </details>
203
204 <details>
205
206 <summary>1.9.1 - 2026-06-30</summary>
207
208 ### Fixed
209 - show check-orders button and vertically center its content on mobile/tablet
210
211 </details>
212
213 <details>
214
215 <summary>1.9.0 - 2026-06-21</summary>
216
217 ### Added
218 - add gold product type with purity and weight attributes
219 - add preparation days management for product categories
220
221 ### Fixed
222 - decrease min pkg weight
223
224 </details>
225
226 <details>
227
228 <summary>1.8.8 - 2026-05-18</summary>
229
230 ### Fixed
231 - fix City/state mapping with persian shiping woo
232 - increase count of photo limit
233
234
235 </details>
236
237 <details>
238
239 <summary>1.8.7 - 2026-05-16</summary>
240
241 ### Added
242 - Product video upload support (VideoService, VideoField, VideoSourceResolver)
243 - Circuit breaker alert notifications
244 - replace toast with alert()
245 - Limit on increase precent(max 35%)
246 - Migration 1.8.7
247
248 ### Fixed
249 - Improved file upload, lock manager, and API response handling
250
251 </details>
252
253 <details>
254
255 <summary>1.8.5,1.8.6 - 2026-05-10</summary>
256
257 ### Fixed
258 - deduplictaion orders
259 - fix stuck-processing
260
261 </details>
262
263 <details>
264
265
266 <details>
267
268 <summary>1.8.4 - 2026-05-03</summary>
269
270 ### Fixed
271 - Circuit Breaker mechanism
272
273 </details>
274
275 <details>
276
277 <summary>1.8.3 - 2026-05-03</summary>
278
279 ### Added
280 - Added bulk edit support for wholesale settings, product type, and custom price increase
281 - Added per-product custom price increase support
282 - Added an information API endpoint to improve AI agent support in `admin.hamsalam.ir`
283
284 ### Changed / Improved
285 - Added automatic order creation in status change events when the order does not already exist
286 - Clear saved token on `401 Unauthorized` responses from `*.basalam.com` requests
287 - Show an error when required Woosalam domains are blocked
288 - Prevent task execution when required Woosalam domains are blocked
289
290 ### Fixed
291 - Fixed user-reported issues
292
293 </details>
294
295 <details>
296
297 <summary>1.8.2 - 2026-04-04</summary>
298
299 ### Added
300 - Photo and weight validator for products
301 - Filter hook for contact-us section visibility
302 - Prefix and suffix to product title for category detection
303
304 ### Fixed
305 - Fetch current vendor info without cache
306 </details>
307
308 <details>
309
310 <details>
311
312 <summary>1.8.1 - 2026-03-07</summary>
313
314 ### Added
315 - basalam Chat widget
316
317 </details>
318
319 <details>
320
321 <summary>1.8.0 - 2026-03-05</summary>
322
323 ### Changed / Improved
324 - Introduced an internal DI container (`ContainerInterface`, `Container`, `ServiceProviderInterface`) and centralized service provider wiring.
325 - Added `syncBasalamContainer()` and migrated `syncBasalamPlugin()` / `syncBasalamSettings()` to container-backed access.
326 - Migrated core hotspots from direct instantiation to container resolution:
327 - `ApiServiceManager`
328 - `ProductOperations`
329 - `JobManager`
330 - class-level settings access
331 - Refactored job subsystem wiring for constructor-based dependencies (`AbstractJobType`, job types, `JobRegistry`, `JobsRunner`, `DiscountTaskScheduler`).
332 - Updated action and registrar edges to resolve handlers/listeners via container.
333 - Removed legacy singleton-style accessors in core services and standardized on container-first resolution.
334 - add unInstall
335 - Added dashboard data retrieval in tickets
336 - Added `vendor_id` suffix to product `postmeta`
337 - Added selectable stock priority for variable products
338 - Added a Circuit Breaker mechanism
339
340
341
342 ### Added
343 - Container-backed settings access via `SettingsContainer`.
344
345 </details>
346
347 <details>
348
349 <summary>1.7.9 - 2026-02-25</summary>
350
351 ### Changed / Improved
352 - Added plugin version to all admin CSS/JS enqueue calls for proper cache busting
353
354 </details>
355
356
357 <details>
358
359 <summary>1.7.8 - 2026-02-21</summary>
360
361 ### Added
362 - retry system for jobs
363 - Added announcements section
364 - Added file upload capability in tickets
365 - Added discount reduction percentage setting
366 - Added ability to fetch and sync Basalam orders up to the last 30 days
367 - Added customer name prefix/suffix settings for Basalam orders
368 - Added onboarding section to Woosalam
369
370 ### Changed / Improved
371
372 - Remove Product Operation type
373 - change fetch unsync orders structure
374 - Switched product list fetching from paginate-based API to cursor-based API
375 - Skip webhook creation when the site domain is localhost
376 - Made Woosalam addonable/extensible
377 - Categorized plugin settings
378
379 ### Fix
380 - Fixed ticket links issues
381 - Fixed duplicated products issue
382 - Fixed null value being sent to Basalam on duplicated product disconnect/update flow
383
384 </details>
385
386 <details>
387
388 <summary>1.7.7 - 2026-02-07</summary>
389
390 ### Changed / Improved
391
392 - Enhanced Performance and Security in Ticket Logics
393 - Don't send null value in update product at basalam
394
395 </details>
396
397
398 <details>
399
400 <summary>1.7.6 - 2026-02-01</summary>
401
402 ### Fix
403
404 - Remove Unused Migration
405
406 </details>
407
408 <details>
409
410 <summary>1.7.5 - 2026-01-26</summary>
411
412 ### Added
413
414 - Added Ticketing feature
415
416 </details>
417
418 <details>
419
420 <summary>1.7.4 - 2026-01-6</summary>
421
422 ### Fixed
423
424 - Fix Bugs
425
426 </details>
427
428 <details>
429
430 <summary>1.7.3 - 2025-12-27</summary>
431
432 ### Fixed
433
434 - Fix Bugs
435
436 </details>
437
438 <details>
439
440 <summary>1.7.2 - 2025-12-24</summary>
441
442 ### Fixed
443
444 - Compatibity beetwin HPOS and Legay System
445 - Fix webhook handling and authorization in WebhookService
446
447 </details>
448
449 <details>
450
451 <summary>1.7.1 - 2025-12-23</summary>
452
453 ### Fixed
454
455 - Add Missed Files
456
457 </details>
458
459
460 <details>
461
462 <summary>1.7.0 - 2025-12-20</summary>
463
464 ### Added
465
466 - Added PSR-4 autoloading structure for better code organization
467
468 ### Changed / Improved
469
470 - Enhanced plugin code structure and performance optimizations
471 - Added detailed order information display on orders page
472 - Improved category ID retrieval with reverse order output
473
474 ### Fixed
475
476 - Fixed commission calculation issues
477 - Fixed order fetching problems
478 - Fixed Persian WooCommerce Shipping plugin compatibility issues
479
480 </details>
481
482 <details>
483 <summary>1.6.1 - 2025-12-6</summary>
484
485 ### Changed / Improved
486 - Handle cursor for get order lists
487
488 ### Fixed
489 - don't send request to core.basalam.com
490 - add reduce/increase stock action for woosalam order statuses
491
492 </details>
493
494 <details>
495 <summary>1.6.0 - 2025-12-1</summary>
496 ### Changed / Improved
497 - Added automatic shipping method detection and auto-saving of the shipping name and cost in WooCommerce orders
498
499 </details>
500
501 <details>
502 <summary>1.5.9 - 2025-11-27</summary>
503
504 ### Fixed
505
506 - Add missing default settings to database and return default for single missing setting
507 - Handle customer names without spaces
508 - Correct Persian WooCommerce path
509
510 ### Refactored
511
512 - Simplify check if Persian WooCommerce Shipping plugin is active
513
514 </details>
515
516 <details>
517 <summary>1.5.8 - 2025-11-18</summary>
518
519 ### Changed / Improved
520
521 - Improved batch product update functionality
522 - Enhanced complete product update process
523
524 </details>
525
526 <details>
527 <summary>1.5.7 - 2025-11-17</summary>
528
529 ### Added
530
531 - Added compatibility with Tappin
532 - Added support for currency units irht and irhr
533
534 ### Changed / Improved
535
536 - Implemented automatic price rounding for Basalam compatibility
537 - Changed product enqueue structure from offset-based to ID-based
538 - Made WooCommerce order creation process atomic
539
540 ### Fixed
541
542 - Fixed job manager functionality and proper task execution
543
544 </details>
545
546 <details>
547 <summary>1.5.5 - 2025-11-15</summary>
548
549 ### Changed / Improved
550
551 - Optimized fetch creatable products query using direct SQL for better performance
552 - Improved API service manager to properly decode JSON responses
553 - Enhanced update job detection logic to avoid false positive job status checks
554
555 ### Fixed
556
557 - Fixed API response handling by properly decoding JSON data
558 - Removed commented-out legacy code from plugin initialization
559 - Fixed quick update job status detection in admin dashboard
560 - Resolved duplicate job checking that was causing incorrect "in progress" states
561
562 </details>
563
564 <details>
565 <summary>1.5.4 - 2025-11-6</summary>
566
567 ### Added
568
569 - Migration system for version 1.5.4
570
571 ### Changed / Improved
572
573 - Enhanced onboarding styles and UI improvements
574 - Improved category fetching process with better error handling
575 - Enhanced file uploader service functionality
576 - Optimized product update process
577
578 ### Fixed
579
580 - Fixed error handling in product update service
581 - Removed deprecated photo ban status service
582 - Fixed category mapping page display and functionality
583 - Improved product meta box data handling
584 - Fixed issues in get product data service
585
586 </details>
587
588 <details>
589 <summary>1.5.3 - 2025-10-25</summary>
590
591 ### Fixed
592
593 - Fixed some bugs
594
595 </details>
596
597 <details>
598 <summary>1.5.0 - 2025-10-04</summary>
599
600 ### Added
601
602 - Key-value storage system for plugin settings
603 - Option to select sale price display style (strikethrough or sale price only)
604 - Automatic log file cleanup (weekly)
605 - Manual and automatic task execution rate control (tasks per minute)
606
607 ### Changed / Improved
608
609 - Removed WP Cron dependency for better performance
610 - Enhanced task scheduling system
611
612 ### Fixed
613
614 - Removed invalid variations from product data
615 - Fixed category attributes synchronization issue
616 - Fixed sale price validation before applying
617 - Resolved migration 1.4.0 issues
618
619 </details>
620
621 <details>
622 <summary>1.4.0 - 2025-09-12</summary>
623
624 ### Added
625
626 - Manual product category mapping
627 - Strikethrough pricing for products
628 - Add products from Digikala (Pro version)
629 - Create a free store (Pro version)
630
631 ### Changed / Improved
632
633 - Plugin structure optimization
634
635 ### Fixed
636
637 - Fixed reported issues
638
639 </details>
640
641 <details>
642 <summary>1.3.0 - 2025-07-23</summary>
643
644 ### Added
645
646 - Option to choose operation execution method (AJAX and Queue)
647 - Manual order fetching
648 - Cancel orders
649 - Fetch order changes from Basalam and apply them to WooCommerce orders
650
651 ### Fixed
652
653 - Fixed reported issues
654
655 </details>
656
657 <details>
658 <summary>1.2.0 - 2025-06-27</summary>
659
660 ### Added
661
662 - Bulk product addition
663 - Bulk product update
664 - Auto order confirmation
665
666 ### Fixed
667
668 - Fixed issues reported in previous version
669
670 </details>
671
672 <details>
673 <summary>1.1.0 - 2025-02-13</summary>
674
675 ### Added
676
677 - Automatic fetching and creation of Basalam orders in WooCommerce
678 - Manage orders from WooCommerce (confirm order, request delay, ship order)
679 - Advanced settings for easier use
680
681 ### Fixed
682
683 - Fixed some issues from previous versions
684
685 </details>
686
687 <details>
688 <summary>1.0.0 - 2024-12-31</summary>
689
690 ### Added
691
692 - Add and update products individually and in bulk
693 - Automatic product synchronization
694 - Settings and logs page
695
696 </details>
697