@thermal-label/brother-ql-core 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +83 -12
  2. package/data/devices.json +666 -26
  3. package/data/media.json +68 -68
  4. package/dist/__tests__/devices.test.js +1 -0
  5. package/dist/__tests__/devices.test.js.map +1 -1
  6. package/dist/__tests__/media.test.js +7 -7
  7. package/dist/__tests__/protocol.test.js +1 -1
  8. package/dist/__tests__/status.test.js +56 -15
  9. package/dist/__tests__/status.test.js.map +1 -1
  10. package/dist/devices.d.ts +737 -2
  11. package/dist/devices.d.ts.map +1 -1
  12. package/dist/devices.generated.d.ts +72 -13
  13. package/dist/devices.generated.d.ts.map +1 -1
  14. package/dist/devices.generated.js +109 -34
  15. package/dist/devices.generated.js.map +1 -1
  16. package/dist/devices.js +6 -2
  17. package/dist/devices.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/media.d.ts +1 -1
  23. package/dist/media.generated.d.ts.map +1 -1
  24. package/dist/media.generated.js +138 -136
  25. package/dist/media.generated.js.map +1 -1
  26. package/dist/media.js +3 -3
  27. package/dist/protocol.js +4 -4
  28. package/dist/status.d.ts +8 -5
  29. package/dist/status.d.ts.map +1 -1
  30. package/dist/status.js +43 -7
  31. package/dist/status.js.map +1 -1
  32. package/dist/types.d.ts +7 -14
  33. package/dist/types.d.ts.map +1 -1
  34. package/package.json +3 -3
  35. package/src/__tests__/devices.test.ts +1 -0
  36. package/src/__tests__/media.test.ts +7 -7
  37. package/src/__tests__/protocol.test.ts +1 -1
  38. package/src/__tests__/status.test.ts +66 -16
  39. package/src/devices.generated.ts +130 -42
  40. package/src/devices.ts +7 -2
  41. package/src/index.ts +2 -0
  42. package/src/media.generated.ts +139 -138
  43. package/src/media.ts +3 -3
  44. package/src/protocol.ts +4 -4
  45. package/src/status.ts +47 -8
  46. package/src/types.ts +7 -14
package/data/devices.json CHANGED
@@ -36,7 +36,16 @@
36
36
  "hardwareQuirks": "Cutter requires compression to be enabled — encoder enforces this when (autocut: true && compress: false). Source: nbuchwitz/ptouch:PTE550W (\"E550W requires compression ON for cutting to work\"). Pin configurations from Brother spec cv_pte550wp750wp710bt_eng_raster_102.pdf p.20 §2.3, transcribed into media.json5 via nbuchwitz/ptouch.",
37
37
  "support": {
38
38
  "status": "untested"
39
- }
39
+ },
40
+ "verificationGrid": {
41
+ "usb": {
42
+ "status": "unverified"
43
+ },
44
+ "tcp": {
45
+ "status": "unverified"
46
+ }
47
+ },
48
+ "supportStatus": "unverified"
40
49
  },
41
50
  {
42
51
  "key": "PT_P750W",
@@ -75,7 +84,16 @@
75
84
  "hardwareQuirks": "PID disagreement between driver projects on which mode 0x2062 vs 0x2065 represents: libptouch.c says 0x2062 is the printer PID and 0x2065 is PLite mass-storage; nbuchwitz/ptouch says 0x2065 is the printer PID. We treat libptouch.c as authoritative; flip via a contributor report if discovery fails on real hardware. Pin configurations from Brother spec cv_pte550wp750wp710bt_eng_raster_102.pdf p.20 §2.3.",
76
85
  "support": {
77
86
  "status": "untested"
78
- }
87
+ },
88
+ "verificationGrid": {
89
+ "usb": {
90
+ "status": "unverified"
91
+ },
92
+ "tcp": {
93
+ "status": "unverified"
94
+ }
95
+ },
96
+ "supportStatus": "unverified"
79
97
  },
80
98
  {
81
99
  "key": "PT_P900",
@@ -108,7 +126,13 @@
108
126
  "hardwareQuirks": "Pin configurations from Brother spec cv_ptp900_eng_raster_102.pdf pp.23-24 §2.3.5, transcribed into media.json5 via nbuchwitz/ptouch:PTP900Series. Note nbuchwitz/ptouch:PTP900Series.DEFAULT_USE_COMPRESSION = False — unlike PT-E550W, P900 does NOT require compression for the cutter.",
109
127
  "support": {
110
128
  "status": "untested"
111
- }
129
+ },
130
+ "verificationGrid": {
131
+ "usb": {
132
+ "status": "unverified"
133
+ }
134
+ },
135
+ "supportStatus": "unverified"
112
136
  },
113
137
  {
114
138
  "key": "PT_P900W",
@@ -144,7 +168,16 @@
144
168
  "hardwareQuirks": "PID 0x2085 sourced from nbuchwitz/ptouch:PTP900W; not in most public USB-ID databases — phase 4 hardware verification should confirm.",
145
169
  "support": {
146
170
  "status": "untested"
147
- }
171
+ },
172
+ "verificationGrid": {
173
+ "usb": {
174
+ "status": "unverified"
175
+ },
176
+ "tcp": {
177
+ "status": "unverified"
178
+ }
179
+ },
180
+ "supportStatus": "unverified"
148
181
  },
149
182
  {
150
183
  "key": "PT_P910BT",
@@ -178,7 +211,16 @@
178
211
  "hardwareQuirks": "Bluetooth assumed classic SPP per nbuchwitz/ptouch — phase 4 hardware verification should confirm classic vs BLE GATT before users rely on it. HSe heat-shrink unsupported (TZe-only); engine.mediaCompatibility excludes hse-2to1 and hse-3to1 so the lookup never returns those entries.",
179
212
  "support": {
180
213
  "status": "untested"
181
- }
214
+ },
215
+ "verificationGrid": {
216
+ "usb": {
217
+ "status": "unverified"
218
+ },
219
+ "bluetooth-spp": {
220
+ "status": "unverified"
221
+ }
222
+ },
223
+ "supportStatus": "unverified"
182
224
  },
183
225
  {
184
226
  "key": "PT_P950NW",
@@ -214,7 +256,16 @@
214
256
  "hardwareQuirks": "PID 0x2086 sourced from nbuchwitz/ptouch:PTP950NW. Pin configurations from Brother spec cv_ptp900_eng_raster_102.pdf via nbuchwitz/ptouch.",
215
257
  "support": {
216
258
  "status": "untested"
217
- }
259
+ },
260
+ "verificationGrid": {
261
+ "usb": {
262
+ "status": "unverified"
263
+ },
264
+ "tcp": {
265
+ "status": "unverified"
266
+ }
267
+ },
268
+ "supportStatus": "unverified"
218
269
  },
219
270
  {
220
271
  "key": "QL_1050",
@@ -244,7 +295,36 @@
244
295
  ],
245
296
  "support": {
246
297
  "status": "untested"
247
- }
298
+ },
299
+ "verificationGrid": {
300
+ "usb": {
301
+ "status": "expected",
302
+ "propagatedFrom": [
303
+ {
304
+ "vector": "sibling-protocol",
305
+ "from": {
306
+ "deviceKey": "QL_700",
307
+ "transport": "usb"
308
+ }
309
+ },
310
+ {
311
+ "vector": "sibling-protocol",
312
+ "from": {
313
+ "deviceKey": "QL_800",
314
+ "transport": "usb"
315
+ }
316
+ },
317
+ {
318
+ "vector": "sibling-protocol",
319
+ "from": {
320
+ "deviceKey": "QL_820NWBc",
321
+ "transport": "usb"
322
+ }
323
+ }
324
+ ]
325
+ }
326
+ },
327
+ "supportStatus": "expected"
248
328
  },
249
329
  {
250
330
  "key": "QL_1060N",
@@ -277,7 +357,48 @@
277
357
  ],
278
358
  "support": {
279
359
  "status": "untested"
280
- }
360
+ },
361
+ "verificationGrid": {
362
+ "usb": {
363
+ "status": "expected",
364
+ "propagatedFrom": [
365
+ {
366
+ "vector": "sibling-protocol",
367
+ "from": {
368
+ "deviceKey": "QL_700",
369
+ "transport": "usb"
370
+ }
371
+ },
372
+ {
373
+ "vector": "sibling-protocol",
374
+ "from": {
375
+ "deviceKey": "QL_800",
376
+ "transport": "usb"
377
+ }
378
+ },
379
+ {
380
+ "vector": "sibling-protocol",
381
+ "from": {
382
+ "deviceKey": "QL_820NWBc",
383
+ "transport": "usb"
384
+ }
385
+ }
386
+ ]
387
+ },
388
+ "tcp": {
389
+ "status": "expected",
390
+ "propagatedFrom": [
391
+ {
392
+ "vector": "sibling-protocol",
393
+ "from": {
394
+ "deviceKey": "QL_820NWBc",
395
+ "transport": "tcp"
396
+ }
397
+ }
398
+ ]
399
+ }
400
+ },
401
+ "supportStatus": "expected"
281
402
  },
282
403
  {
283
404
  "key": "QL_1100",
@@ -311,7 +432,36 @@
311
432
  },
312
433
  "support": {
313
434
  "status": "untested"
314
- }
435
+ },
436
+ "verificationGrid": {
437
+ "usb": {
438
+ "status": "expected",
439
+ "propagatedFrom": [
440
+ {
441
+ "vector": "sibling-protocol",
442
+ "from": {
443
+ "deviceKey": "QL_700",
444
+ "transport": "usb"
445
+ }
446
+ },
447
+ {
448
+ "vector": "sibling-protocol",
449
+ "from": {
450
+ "deviceKey": "QL_800",
451
+ "transport": "usb"
452
+ }
453
+ },
454
+ {
455
+ "vector": "sibling-protocol",
456
+ "from": {
457
+ "deviceKey": "QL_820NWBc",
458
+ "transport": "usb"
459
+ }
460
+ }
461
+ ]
462
+ }
463
+ },
464
+ "supportStatus": "expected"
315
465
  },
316
466
  {
317
467
  "key": "QL_1110NWB",
@@ -348,7 +498,48 @@
348
498
  },
349
499
  "support": {
350
500
  "status": "untested"
351
- }
501
+ },
502
+ "verificationGrid": {
503
+ "usb": {
504
+ "status": "expected",
505
+ "propagatedFrom": [
506
+ {
507
+ "vector": "sibling-protocol",
508
+ "from": {
509
+ "deviceKey": "QL_700",
510
+ "transport": "usb"
511
+ }
512
+ },
513
+ {
514
+ "vector": "sibling-protocol",
515
+ "from": {
516
+ "deviceKey": "QL_800",
517
+ "transport": "usb"
518
+ }
519
+ },
520
+ {
521
+ "vector": "sibling-protocol",
522
+ "from": {
523
+ "deviceKey": "QL_820NWBc",
524
+ "transport": "usb"
525
+ }
526
+ }
527
+ ]
528
+ },
529
+ "tcp": {
530
+ "status": "expected",
531
+ "propagatedFrom": [
532
+ {
533
+ "vector": "sibling-protocol",
534
+ "from": {
535
+ "deviceKey": "QL_820NWBc",
536
+ "transport": "tcp"
537
+ }
538
+ }
539
+ ]
540
+ }
541
+ },
542
+ "supportStatus": "expected"
352
543
  },
353
544
  {
354
545
  "key": "QL_1115NWB",
@@ -385,7 +576,48 @@
385
576
  },
386
577
  "support": {
387
578
  "status": "untested"
388
- }
579
+ },
580
+ "verificationGrid": {
581
+ "usb": {
582
+ "status": "expected",
583
+ "propagatedFrom": [
584
+ {
585
+ "vector": "sibling-protocol",
586
+ "from": {
587
+ "deviceKey": "QL_700",
588
+ "transport": "usb"
589
+ }
590
+ },
591
+ {
592
+ "vector": "sibling-protocol",
593
+ "from": {
594
+ "deviceKey": "QL_800",
595
+ "transport": "usb"
596
+ }
597
+ },
598
+ {
599
+ "vector": "sibling-protocol",
600
+ "from": {
601
+ "deviceKey": "QL_820NWBc",
602
+ "transport": "usb"
603
+ }
604
+ }
605
+ ]
606
+ },
607
+ "tcp": {
608
+ "status": "expected",
609
+ "propagatedFrom": [
610
+ {
611
+ "vector": "sibling-protocol",
612
+ "from": {
613
+ "deviceKey": "QL_820NWBc",
614
+ "transport": "tcp"
615
+ }
616
+ }
617
+ ]
618
+ }
619
+ },
620
+ "supportStatus": "expected"
389
621
  },
390
622
  {
391
623
  "key": "QL_500",
@@ -413,7 +645,36 @@
413
645
  ],
414
646
  "support": {
415
647
  "status": "untested"
416
- }
648
+ },
649
+ "verificationGrid": {
650
+ "usb": {
651
+ "status": "expected",
652
+ "propagatedFrom": [
653
+ {
654
+ "vector": "sibling-protocol",
655
+ "from": {
656
+ "deviceKey": "QL_700",
657
+ "transport": "usb"
658
+ }
659
+ },
660
+ {
661
+ "vector": "sibling-protocol",
662
+ "from": {
663
+ "deviceKey": "QL_800",
664
+ "transport": "usb"
665
+ }
666
+ },
667
+ {
668
+ "vector": "sibling-protocol",
669
+ "from": {
670
+ "deviceKey": "QL_820NWBc",
671
+ "transport": "usb"
672
+ }
673
+ }
674
+ ]
675
+ }
676
+ },
677
+ "supportStatus": "expected"
417
678
  },
418
679
  {
419
680
  "key": "QL_550",
@@ -441,7 +702,36 @@
441
702
  ],
442
703
  "support": {
443
704
  "status": "untested"
444
- }
705
+ },
706
+ "verificationGrid": {
707
+ "usb": {
708
+ "status": "expected",
709
+ "propagatedFrom": [
710
+ {
711
+ "vector": "sibling-protocol",
712
+ "from": {
713
+ "deviceKey": "QL_700",
714
+ "transport": "usb"
715
+ }
716
+ },
717
+ {
718
+ "vector": "sibling-protocol",
719
+ "from": {
720
+ "deviceKey": "QL_800",
721
+ "transport": "usb"
722
+ }
723
+ },
724
+ {
725
+ "vector": "sibling-protocol",
726
+ "from": {
727
+ "deviceKey": "QL_820NWBc",
728
+ "transport": "usb"
729
+ }
730
+ }
731
+ ]
732
+ }
733
+ },
734
+ "supportStatus": "expected"
445
735
  },
446
736
  {
447
737
  "key": "QL_560",
@@ -470,7 +760,36 @@
470
760
  ],
471
761
  "support": {
472
762
  "status": "untested"
473
- }
763
+ },
764
+ "verificationGrid": {
765
+ "usb": {
766
+ "status": "expected",
767
+ "propagatedFrom": [
768
+ {
769
+ "vector": "sibling-protocol",
770
+ "from": {
771
+ "deviceKey": "QL_700",
772
+ "transport": "usb"
773
+ }
774
+ },
775
+ {
776
+ "vector": "sibling-protocol",
777
+ "from": {
778
+ "deviceKey": "QL_800",
779
+ "transport": "usb"
780
+ }
781
+ },
782
+ {
783
+ "vector": "sibling-protocol",
784
+ "from": {
785
+ "deviceKey": "QL_820NWBc",
786
+ "transport": "usb"
787
+ }
788
+ }
789
+ ]
790
+ }
791
+ },
792
+ "supportStatus": "expected"
474
793
  },
475
794
  {
476
795
  "key": "QL_570",
@@ -499,7 +818,36 @@
499
818
  ],
500
819
  "support": {
501
820
  "status": "untested"
502
- }
821
+ },
822
+ "verificationGrid": {
823
+ "usb": {
824
+ "status": "expected",
825
+ "propagatedFrom": [
826
+ {
827
+ "vector": "sibling-protocol",
828
+ "from": {
829
+ "deviceKey": "QL_700",
830
+ "transport": "usb"
831
+ }
832
+ },
833
+ {
834
+ "vector": "sibling-protocol",
835
+ "from": {
836
+ "deviceKey": "QL_800",
837
+ "transport": "usb"
838
+ }
839
+ },
840
+ {
841
+ "vector": "sibling-protocol",
842
+ "from": {
843
+ "deviceKey": "QL_820NWBc",
844
+ "transport": "usb"
845
+ }
846
+ }
847
+ ]
848
+ }
849
+ },
850
+ "supportStatus": "expected"
503
851
  },
504
852
  {
505
853
  "key": "QL_580N",
@@ -531,7 +879,48 @@
531
879
  ],
532
880
  "support": {
533
881
  "status": "untested"
534
- }
882
+ },
883
+ "verificationGrid": {
884
+ "usb": {
885
+ "status": "expected",
886
+ "propagatedFrom": [
887
+ {
888
+ "vector": "sibling-protocol",
889
+ "from": {
890
+ "deviceKey": "QL_700",
891
+ "transport": "usb"
892
+ }
893
+ },
894
+ {
895
+ "vector": "sibling-protocol",
896
+ "from": {
897
+ "deviceKey": "QL_800",
898
+ "transport": "usb"
899
+ }
900
+ },
901
+ {
902
+ "vector": "sibling-protocol",
903
+ "from": {
904
+ "deviceKey": "QL_820NWBc",
905
+ "transport": "usb"
906
+ }
907
+ }
908
+ ]
909
+ },
910
+ "tcp": {
911
+ "status": "expected",
912
+ "propagatedFrom": [
913
+ {
914
+ "vector": "sibling-protocol",
915
+ "from": {
916
+ "deviceKey": "QL_820NWBc",
917
+ "transport": "tcp"
918
+ }
919
+ }
920
+ ]
921
+ }
922
+ },
923
+ "supportStatus": "expected"
535
924
  },
536
925
  {
537
926
  "key": "QL_600",
@@ -560,7 +949,36 @@
560
949
  ],
561
950
  "support": {
562
951
  "status": "untested"
563
- }
952
+ },
953
+ "verificationGrid": {
954
+ "usb": {
955
+ "status": "expected",
956
+ "propagatedFrom": [
957
+ {
958
+ "vector": "sibling-protocol",
959
+ "from": {
960
+ "deviceKey": "QL_700",
961
+ "transport": "usb"
962
+ }
963
+ },
964
+ {
965
+ "vector": "sibling-protocol",
966
+ "from": {
967
+ "deviceKey": "QL_800",
968
+ "transport": "usb"
969
+ }
970
+ },
971
+ {
972
+ "vector": "sibling-protocol",
973
+ "from": {
974
+ "deviceKey": "QL_820NWBc",
975
+ "transport": "usb"
976
+ }
977
+ }
978
+ ]
979
+ }
980
+ },
981
+ "supportStatus": "expected"
564
982
  },
565
983
  {
566
984
  "key": "QL_650TD",
@@ -589,7 +1007,36 @@
589
1007
  ],
590
1008
  "support": {
591
1009
  "status": "untested"
592
- }
1010
+ },
1011
+ "verificationGrid": {
1012
+ "usb": {
1013
+ "status": "expected",
1014
+ "propagatedFrom": [
1015
+ {
1016
+ "vector": "sibling-protocol",
1017
+ "from": {
1018
+ "deviceKey": "QL_700",
1019
+ "transport": "usb"
1020
+ }
1021
+ },
1022
+ {
1023
+ "vector": "sibling-protocol",
1024
+ "from": {
1025
+ "deviceKey": "QL_800",
1026
+ "transport": "usb"
1027
+ }
1028
+ },
1029
+ {
1030
+ "vector": "sibling-protocol",
1031
+ "from": {
1032
+ "deviceKey": "QL_820NWBc",
1033
+ "transport": "usb"
1034
+ }
1035
+ }
1036
+ ]
1037
+ }
1038
+ },
1039
+ "supportStatus": "expected"
593
1040
  },
594
1041
  {
595
1042
  "key": "QL_700",
@@ -621,8 +1068,29 @@
621
1068
  },
622
1069
  "hardwareQuirks": "Cassette-based media detection. Printer hard-rejects with an error code if the host job dimensions do not match the loaded DK cassette. Apps that compare detected vs selected media should switch to the matching cassette before sending.",
623
1070
  "support": {
624
- "status": "untested"
625
- }
1071
+ "status": "verified",
1072
+ "transports": {
1073
+ "usb": "verified"
1074
+ },
1075
+ "lastVerified": "2026-05-21",
1076
+ "packageVersion": "0.6.0",
1077
+ "reports": [
1078
+ {
1079
+ "issue": 1,
1080
+ "reporter": "@Leeft",
1081
+ "date": "2026-05-21",
1082
+ "result": "verified",
1083
+ "os": "Windows",
1084
+ "notes": "WebUSB on Edge 148 / Windows 11, 62mm continuous (DK-22205). Pre- and post-print status clean: no errors, phase advanced to printing."
1085
+ }
1086
+ ]
1087
+ },
1088
+ "verificationGrid": {
1089
+ "usb": {
1090
+ "status": "verified"
1091
+ }
1092
+ },
1093
+ "supportStatus": "verified"
626
1094
  },
627
1095
  {
628
1096
  "key": "QL_710W",
@@ -657,7 +1125,48 @@
657
1125
  },
658
1126
  "support": {
659
1127
  "status": "untested"
660
- }
1128
+ },
1129
+ "verificationGrid": {
1130
+ "usb": {
1131
+ "status": "expected",
1132
+ "propagatedFrom": [
1133
+ {
1134
+ "vector": "sibling-protocol",
1135
+ "from": {
1136
+ "deviceKey": "QL_700",
1137
+ "transport": "usb"
1138
+ }
1139
+ },
1140
+ {
1141
+ "vector": "sibling-protocol",
1142
+ "from": {
1143
+ "deviceKey": "QL_800",
1144
+ "transport": "usb"
1145
+ }
1146
+ },
1147
+ {
1148
+ "vector": "sibling-protocol",
1149
+ "from": {
1150
+ "deviceKey": "QL_820NWBc",
1151
+ "transport": "usb"
1152
+ }
1153
+ }
1154
+ ]
1155
+ },
1156
+ "tcp": {
1157
+ "status": "expected",
1158
+ "propagatedFrom": [
1159
+ {
1160
+ "vector": "sibling-protocol",
1161
+ "from": {
1162
+ "deviceKey": "QL_820NWBc",
1163
+ "transport": "tcp"
1164
+ }
1165
+ }
1166
+ ]
1167
+ }
1168
+ },
1169
+ "supportStatus": "expected"
661
1170
  },
662
1171
  {
663
1172
  "key": "QL_720NW",
@@ -689,7 +1198,48 @@
689
1198
  ],
690
1199
  "support": {
691
1200
  "status": "untested"
692
- }
1201
+ },
1202
+ "verificationGrid": {
1203
+ "usb": {
1204
+ "status": "expected",
1205
+ "propagatedFrom": [
1206
+ {
1207
+ "vector": "sibling-protocol",
1208
+ "from": {
1209
+ "deviceKey": "QL_700",
1210
+ "transport": "usb"
1211
+ }
1212
+ },
1213
+ {
1214
+ "vector": "sibling-protocol",
1215
+ "from": {
1216
+ "deviceKey": "QL_800",
1217
+ "transport": "usb"
1218
+ }
1219
+ },
1220
+ {
1221
+ "vector": "sibling-protocol",
1222
+ "from": {
1223
+ "deviceKey": "QL_820NWBc",
1224
+ "transport": "usb"
1225
+ }
1226
+ }
1227
+ ]
1228
+ },
1229
+ "tcp": {
1230
+ "status": "expected",
1231
+ "propagatedFrom": [
1232
+ {
1233
+ "vector": "sibling-protocol",
1234
+ "from": {
1235
+ "deviceKey": "QL_820NWBc",
1236
+ "transport": "tcp"
1237
+ }
1238
+ }
1239
+ ]
1240
+ }
1241
+ },
1242
+ "supportStatus": "expected"
693
1243
  },
694
1244
  {
695
1245
  "key": "QL_800",
@@ -721,8 +1271,29 @@
721
1271
  "editorLite": true
722
1272
  },
723
1273
  "support": {
724
- "status": "untested"
725
- }
1274
+ "status": "verified",
1275
+ "transports": {
1276
+ "usb": "verified"
1277
+ },
1278
+ "lastVerified": "2026-05-30",
1279
+ "packageVersion": "0.6.1",
1280
+ "reports": [
1281
+ {
1282
+ "issue": 2,
1283
+ "reporter": "@nkaredia",
1284
+ "date": "2026-05-22",
1285
+ "result": "verified",
1286
+ "os": "Windows",
1287
+ "notes": "QL-800 USB print confirmed (reporter produced output). The report revealed the DK continuous margins were stored right-registered, parking the printable area off the left-seated paper; the left-registration fix (leftMarginPins=6 for 29mm) merged in PR #3 and shipped in 0.6.1."
1288
+ }
1289
+ ]
1290
+ },
1291
+ "verificationGrid": {
1292
+ "usb": {
1293
+ "status": "verified"
1294
+ }
1295
+ },
1296
+ "supportStatus": "verified"
726
1297
  },
727
1298
  {
728
1299
  "key": "QL_810W",
@@ -758,7 +1329,48 @@
758
1329
  },
759
1330
  "support": {
760
1331
  "status": "untested"
761
- }
1332
+ },
1333
+ "verificationGrid": {
1334
+ "usb": {
1335
+ "status": "expected",
1336
+ "propagatedFrom": [
1337
+ {
1338
+ "vector": "sibling-protocol",
1339
+ "from": {
1340
+ "deviceKey": "QL_700",
1341
+ "transport": "usb"
1342
+ }
1343
+ },
1344
+ {
1345
+ "vector": "sibling-protocol",
1346
+ "from": {
1347
+ "deviceKey": "QL_800",
1348
+ "transport": "usb"
1349
+ }
1350
+ },
1351
+ {
1352
+ "vector": "sibling-protocol",
1353
+ "from": {
1354
+ "deviceKey": "QL_820NWBc",
1355
+ "transport": "usb"
1356
+ }
1357
+ }
1358
+ ]
1359
+ },
1360
+ "tcp": {
1361
+ "status": "expected",
1362
+ "propagatedFrom": [
1363
+ {
1364
+ "vector": "sibling-protocol",
1365
+ "from": {
1366
+ "deviceKey": "QL_820NWBc",
1367
+ "transport": "tcp"
1368
+ }
1369
+ }
1370
+ ]
1371
+ }
1372
+ },
1373
+ "supportStatus": "expected"
762
1374
  },
763
1375
  {
764
1376
  "key": "QL_820NWBc",
@@ -817,7 +1429,35 @@
817
1429
  "notes": "Bench verification by the maintainer at the time of seeding this entry. Issue #0 is a placeholder — replace with the real issue number when a public verification report is filed."
818
1430
  }
819
1431
  ]
820
- }
1432
+ },
1433
+ "verificationGrid": {
1434
+ "usb": {
1435
+ "status": "verified"
1436
+ },
1437
+ "tcp": {
1438
+ "status": "verified"
1439
+ },
1440
+ "bluetooth-spp": {
1441
+ "status": "expected",
1442
+ "propagatedFrom": [
1443
+ {
1444
+ "vector": "cross-transport",
1445
+ "from": {
1446
+ "deviceKey": "QL_820NWBc",
1447
+ "transport": "usb"
1448
+ }
1449
+ },
1450
+ {
1451
+ "vector": "cross-transport",
1452
+ "from": {
1453
+ "deviceKey": "QL_820NWBc",
1454
+ "transport": "tcp"
1455
+ }
1456
+ }
1457
+ ]
1458
+ }
1459
+ },
1460
+ "supportStatus": "verified"
821
1461
  }
822
1462
  ]
823
1463
  }