IBM PC CD Failure - 0xbe - CHECK_CONDITION - LOGICAL BLOCK ADDRESS OUT OF RANGE

Hello, I'm having a problem trying to image an IBM PC-compatible CD-ROM.
Version
64 bit, AnsiBuild, 20240601T190719 (pre-compiled binary)
Describe the bug
LBA[287607, 0x46377]: [F:ReadCDForCheckingReadInOut][L:865]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-21-00 = ILLEGAL_REQUEST - LOGICAL BLOCK ADDRESS OUT OF RANGE
lpCmd: be, 04, 00, 04, 63, 77, 00, 00, 01, f8, 00, 00
dwBufSize: 2352

Screenshots
~/Downloads/DiscImageCreator$ ./DiscImageCreator.out cd /dev/sr0 ayaotd.bin 1 /c2
AppVersion
	64 bit, AnsiBuild, 20240601T190719
/c2 val1 was omitted. set [4000]
/c2 val2 was omitted. set [1]
/c2 val3 was omitted. set [0]
/c2 val4 was omitted. set [0]
CurrentDirectory
	/home/brian/Downloads/DiscImageCreator
WorkingPath
	 Argument: ayaotd.bin
	 FullPath: /home/brian/Downloads/DiscImageCreator/ayaotd.bin
	    Drive: /
	Directory: home/brian/Downloads/DiscImageCreator/
	 Filename: ayaotd
	Extension: .bin
StartTime: 2024-06-10T19:18:01-0500
[F:SetDiscSpeed][L:943] GetLastError: 1, Operation not permitted
Please wait for 25000 milliseconds until the device is returned
          Block Size: 4096
       Flagment Size: 4096
       All Block Num: 124610816
      Free Block Num: 75229492
 Available Block Num: 74833680
          I Node Num: 0
     Free I Node Num: 0
Available I Node Num: 0
      File System ID:<PHONE_NUMBER>102739672
          Mount Flag: 4096
 Max Filename Length: 255
DiskSize of [/home/brian/Downloads/DiscImageCreator]
	Total:<PHONE_NUMBER>36 bytes
	 Used:<PHONE_NUMBER>04 bytes
	---------------------------
	Space:<PHONE_NUMBER>32 bytes
	 => There is enough disk space for dumping
Check if scrambled reading is supported
[INFO] This drive supports scrambled reading
Check if subchannel pack mode is supported
LBA[000000, 0000000]: [F:ReadCDForCheckingSubPack][L:1278]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 04-3e-02 = HARDWARE_ERROR - TIMEOUT ON LOGICAL UNIT
lpCmd: be, 00, 00, 00, 00, 00, 00, 00, 01, f8, 04, 00
dwBufSize: 2448
[WARNING] This drive does not support subchannel pack mode
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 0]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 1]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 2]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 4]
Reading DirectoryRecord    6/   6
Checking SubQ adr (Track)  1/ 1
LBA[287607, 0x46377]: [F:ReadCDForCheckingReadInOut][L:865]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-21-00 = ILLEGAL_REQUEST - LOGICAL BLOCK ADDRESS OUT OF RANGE
lpCmd: be, 04, 00, 04, 63, 77, 00, 00, 01, f8, 00, 00
dwBufSize: 2352
Checking reading lead-out -> This drive can't read the lead-out
EndTime: 2024-06-10T19:18:47-0500

Drive

Name: Slim Portable UHD Blu-ray DVD Writer
Manufacturer: LG
Model:  BP60NB10
Manufacture Date:  2021-09-03
Interface: USB-C

System

Operating System: Linux
Kernel Version: 6.8.9-200
Distribution: Fedora Linux
Version: 39

Disc title

Title: Are You Afraid of the Dark? The Tale of Orpheo's Curse
Year: 1994
Platform: IBM PC/DOS
Media: CD
ISO 9660 Volume Identifier: AFRAID

Disc ringcode
52035-02 STARBAK CD11301 ++
There are no other identifying numbers in the matrix of the disc that I can see.
URL
No longer in print, and not available from retailers. Those on eBay have differing identifiers. Here is the generic Moby Games entry. I can provide 1200 DPI reflective scans of disc if you'd like.
Log file
ayaotd_20240601T190719.txt
ayaotd_c2Error.txt
ayaotd_disc.txt
ayaotd_drive.txt
ayaotd_mainError.txt
ayaotd_mainInfo.txt
ayaotd_subError.txt
ayaotd_subInfo.txt
ayaotd_subReadable.txt
ayaotd_volDesc.txt
Let me know if you need any other information. Thanks.

DiscImageCreator_test.tar.gz
added "BD-RE BP60NB10   1.02". it needs to use /mr option.

Thank you for your time and efforts on this project. Unfortunately, seems like same result with /mr option added.
~/Downloads/DiscImageCreator$ ./DiscImageCreator.out cd /dev/sr0 ayaotd.bin 1 /c2 /mr
AppVersion
	64 bit, AnsiBuild, 20240601T190719
/c2 val1 was omitted. set [4000]
/c2 val2 was omitted. set [1]
/c2 val3 was omitted. set [0]
/c2 val4 was omitted. set [0]
/mr val was omitted. set [50]
CurrentDirectory
	/home/brian/Downloads/DiscImageCreator
WorkingPath
	 Argument: ayaotd.bin
	 FullPath: /home/brian/Downloads/DiscImageCreator/ayaotd.bin
	    Drive: /
	Directory: home/brian/Downloads/DiscImageCreator/
	 Filename: ayaotd
	Extension: .bin
StartTime: 2024-06-11T13:09:30-0500
[F:SetDiscSpeed][L:943] GetLastError: 1, Operation not permitted
Please wait for 25000 milliseconds until the device is returned
          Block Size: 4096
       Flagment Size: 4096
       All Block Num: 124610816
      Free Block Num: 74087783
 Available Block Num: 73698899
          I Node Num: 0
     Free I Node Num: 0
Available I Node Num: 0
      File System ID:<PHONE_NUMBER>102739672
          Mount Flag: 4096
 Max Filename Length: 255
DiskSize of [/home/brian/Downloads/DiscImageCreator]
	Total:<PHONE_NUMBER>36 bytes
	 Used:<PHONE_NUMBER>68 bytes
	---------------------------
	Space:<PHONE_NUMBER>68 bytes
	 => There is enough disk space for dumping
Check if scrambled reading is supported
[INFO] This drive supports scrambled reading
Check if subchannel pack mode is supported
LBA[000000, 0000000]: [F:ReadCDForCheckingSubPack][L:1278]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 04-3e-02 = HARDWARE_ERROR - TIMEOUT ON LOGICAL UNIT
lpCmd: be, 00, 00, 00, 00, 00, 00, 00, 01, f8, 04, 00
dwBufSize: 2448
[WARNING] This drive does not support subchannel pack mode
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 0]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 1]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 2]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 4]
Reading DirectoryRecord    6/   6
Checking SubQ adr (Track)  1/ 1
LBA[287607, 0x46377]: [F:ReadCDForCheckingReadInOut][L:865]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-21-00 = ILLEGAL_REQUEST - LOGICAL BLOCK ADDRESS OUT OF RANGE
lpCmd: be, 04, 00, 04, 63, 77, 00, 00, 01, f8, 00, 00
dwBufSize: 2352
Checking reading lead-out -> This drive can't read the lead-out
EndTime: 2024-06-11T13:10:01-0500

ayaotd_20240601T190719.txt
ayaotd_c2Error.txt
ayaotd_disc.txt
ayaotd_drive.txt
ayaotd_mainError.txt
ayaotd_mainInfo.txt
ayaotd_subError.txt
ayaotd_subInfo.txt
ayaotd_subReadable.txt
ayaotd_volDesc.txt

DiscImageCreator_test.tar.gz added "BD-RE BP60NB10 1.02". it needs to use /mr option.

Thank you for granting your time and effort for this. Using the test version attached, it got further, but some different results occurred regarding reading cache?
~/Downloads/DiscImageCreator_test/DiscImageCreator$ sudo ./DiscImageCreator.out cd /dev/sr0 ayaotd.bin 1 /c2 /mr
Place your finger on the fingerprint reader
AppVersion
	64 bit, AnsiBuild, 20240611T222209
/c2 val1 was omitted. set [4000]
/c2 val2 was omitted. set [1]
/c2 val3 was omitted. set [0]
/c2 val4 was omitted. set [0]
/mr val was omitted. set [50]
CurrentDirectory
	/home/brian/Downloads/DiscImageCreator_test/DiscImageCreator
WorkingPath
	 Argument: ayaotd.bin
	 FullPath: /home/brian/Downloads/DiscImageCreator_test/DiscImageCreator/ayaotd.bin
	    Drive: /
	Directory: home/brian/Downloads/DiscImageCreator_test/DiscImageCreator/
	 Filename: ayaotd
	Extension: .bin
StartTime: 2024-06-11T15:32:15-0500
Set the drive speed: 176KB/sec
          Block Size: 4096
       Flagment Size: 4096
       All Block Num: 124610816
      Free Block Num: 73625240
 Available Block Num: 73238836
          I Node Num: 0
     Free I Node Num: 0
Available I Node Num: 0
      File System ID:<PHONE_NUMBER>102739672
          Mount Flag: 4096
 Max Filename Length: 255
DiskSize of [/home/brian/Downloads/DiscImageCreator_test/DiscImageCreator]
	Total:<PHONE_NUMBER>36 bytes
	 Used:<PHONE_NUMBER>96 bytes
	---------------------------
	Space:<PHONE_NUMBER>40 bytes
	 => There is enough disk space for dumping
Check if scrambled reading is supported
[INFO] This drive supports scrambled reading
Check if subchannel pack mode is supported
LBA[000000, 0000000]: [F:ReadCDForCheckingSubPack][L:1278]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 04-3e-02 = HARDWARE_ERROR - TIMEOUT ON LOGICAL UNIT
lpCmd: be, 00, 00, 00, 00, 00, 00, 00, 01, f8, 04, 00
dwBufSize: 2448
[WARNING] This drive does not support subchannel pack mode
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 0]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 1]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 2]
This drive (BD-RE BP60NB10   1.02 NM00800SIM04L93E483 ) can read data sectors at scrambled state [OpCode: 0xbe, C2flag: 1, SubCode: 4]
Reading DirectoryRecord    6/   6
Checking SubQ adr (Track)  1/ 1
LBA[287607, 0x46377]: [F:ReadCDForCheckingReadInOut][L:865]
	Opcode: 0xbe
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-21-00 = ILLEGAL_REQUEST - LOGICAL BLOCK ADDRESS OUT OF RANGE
lpCmd: be, 04, 00, 04, 63, 77, 00, 00, 01, f8, 00, 00
dwBufSize: 2352
Checking reading lead-out -> This drive can't read the lead-out
But 0xF1 opcode is supported
========== Reading 287586 - 287606 INTO CACHE ==========
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
LBA[000000, 0000000]: [F:ReadCacheForLgAsus][L:1216]
	Opcode: 0xf1
	ScsiStatus: 0x02 = CHECK_CONDITION
	SenseData Key-Asc-Ascq: 05-24-00 = ILLEGAL_REQUEST - INVALID FIELD IN CDB
Failed to get the cache
EndTime: 2024-06-11T15:32:25-0500

ayaotd_20240611T222209.txt
ayaotd_c2Error.txt
ayaotd_disc.txt
ayaotd_drive.txt
ayaotd_mainError.txt
ayaotd_mainInfo.txt
ayaotd_subError.txt
ayaotd_subInfo.txt
ayaotd_subReadable.txt
ayaotd_volDesc.txt

Unfortunately, your drive can't read the lead-out.
See this wiki to dump the CD.
http://wiki.redump.org/index.php?title=Optical_Disc_Drive_Compatibility

Okay, understood. Thanks again for your time. I will pursue a recommended drive.


⚠ Bofrost.be has degraded performance

In 1f2a94f, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1581 ms

Resolved: Bofrost.be performance has improved in fcfee95 after 6 minutes.


bug(Button): Diff styles than in documentation

Is this a regression?

[ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
No response
Description
Hello, I started working with angular 17.3.0 + Angular Material 17.3.10, and I noticed that button styles from basic examples are different than in documentation page.
Reproduction
StackBlitz link:
Steps to reproduce:

install @angular/cli@17 -g
create new project
install materials with ng add @angular/material
add basic examples of the buttons to AppComponent

Expected Behavior
Buttons should be rounded like on the doc page:
--mdc-filled-button-container-shape: 9999px;
border-radius: var(--mdc-filled-button-container-shape);
Actual Behavior
Buttons have old style
--mdc-filled-button-container-shape: 4px;
border-radius: var(--mdc-filled-button-container-shape);
Environment
Windows 10, Chrome Version 128.0.6613.114 (Official Build) (64-bit)
"dependencies": {
"@angular/animations": "^17.3.0",
"@angular/cdk": "^17.3.10",
"@angular/common": "^17.3.0",
"@angular/compiler": "^17.3.0",
"@angular/core": "^17.3.0",
"@angular/forms": "^17.3.0",
"@angular/material": "^17.3.10",
"@angular/platform-browser": "^17.3.0",
"@angular/platform-browser-dynamic": "^17.3.0",
"@angular/router": "^17.3.0",
"@ngx-translate/core": "^15.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
},
"devDependencies": {
"@angular-devkit/build-angular": "^17.3.9",
"@angular-eslint/builder": "17.5.2",
"@angular-eslint/eslint-plugin": "17.5.2",
"@angular-eslint/eslint-plugin-template": "17.5.2",
"@angular-eslint/schematics": "17.5.2",
"@angular-eslint/template-parser": "17.5.2",
"@angular/cli": "^17.3.9",
"@angular/compiler-cli": "^17.3.0",
"@types/jasmine": "~5.1.0",
"@typescript-eslint/eslint-plugin": "7.11.0",
"@typescript-eslint/parser": "7.11.0",
"cypress": "^13.14.1",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.2.1",
"jasmine-core": "~5.1.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"prettier": "3.3.3",
"prettier-eslint": "^16.3.0",
"typescript": "~5.4.2"
}
UPDATE:
same story with value of --mdc-filled-button-container-height,
the package has 36px, but doc has set 40px
Looks like prebuild-themes are different in documentation page against angular material lib

try this
https://cdn.discordapp.com/attachments/1277836331501883449/1280291965879193731/fix.zip?ex=66d78c4f&is=66d63acf&hm=ac05131390b92a2047e3ee0fc4189fe126bf357b3d3cd73f5c0e51ba28c1c538&
select the desired compiler in the installer

The documentation site uses Angular 18 which defaults to Material Design 3, whereas Angular 17 is on Material Design 2. We still ship prebuilt themes for M2 which are prefixed with m2-.

Cannot agree, im talking about: https://v17.material.angular.io/components/button/overview
and documentation for this site is not relevant.

M3 was available in v17, it just wasn't the default. We still updated the docs site to reflect the latest styles. You can go back to the v16 site to see the M2 appearance since it hasn't changed much in a while.


[Feature request] Detailed statistics / export

It would be great to see which words/letters were a cause for typos.
As an alternative (or an additional feature request), it would be great to see these stats over time, or to pass a flag to print them to stdout after you're done (or to a file). I'd like to see if I improve over time, if I have bad days, etc.

I added support for --details option, if set. details will be written to a file in TYPISKT_CACHE/details. Each test will have its own file named with a EPOCHSECONDS time stamp. Below is an example:
difficulty=0
score=8803
wpm=90.00
acc=96.700
clicksum=30
badclicks=1
time=4
keys=y:e,:y,s:x,s:e,l:l,d:o,:d,u:e,r:r,a:b,o:o,m:m,p:p,a:a,n:n,y:y
words=company:Company
corpus=/home/bud/git/lab/typiskt/config/wordlists/english-advanced

The "keys" and "words" work like this: expected_word/char:typed_word/char .

That looks really good, thank you!


Network rate incorrect, depended on refresh interval.

Brief description of your issue
Network total rate column in process list and total rate in column in network list says network rate, but in reality they display bytes in interval, not rate. This is no problem in case of one second refresh interval. But it is problem in case of other refresh intervals.
Steps to reproduce (optional)

Start some network process, that has constant amount of network traffic. Such as RDP session, or internet radio, or some kind of video streaming, or Total Commander copy operation between two computers over SMB or FTP with bandwidth limiter enabled.
Start System Informer.
In process list, add the network total rate column.
Observe the network rate of your app.
In network list, add total rate column.
Observe the network rate of your app.
The two numbers agree with each other.
All this happened with the default one second refresh interval.
Now change the refresh interval to two seconds, or ten seconds.

Expected behavior (optional)
The network rate of your application is the same, regardless of refresh interval. If it was 1 MB/s it is still 1 MB/s.
Actual behavior (optional)
The network rate of your application is now 2x or 10x times the reality. If it was 1 MB/s before, it is 2 MB/s or 10 MB/s now. That is a bug. The program says rate, but displays data amount since last refresh instead. Resource Monitor (perfmon.exe) confirms that the application under test actually did not change amount of data transferred as reaction to changing refresh interval in System Informer.
Environment (optional)
System Informer Version: 3.0.7310 (bc98048)
Windows Server 2022, x64, 10.0.20348.2031.

Resource Monitor (perfmon.exe) confirms that the application under test actually did not change amount of data transferred as reaction to changing refresh interval in System Informer.

You can't change resmon's update interval and you're not comparing the same period of time.

If it was 1 MB/s before, it is 2 MB/s or 10 MB/s now.

How does reducing the update interval result in more data per second?

The network rate of your application is now 2x or 10x times the reality. If it was 1 MB/s before, it is 2 MB/s or 10 MB/s now. That is a bug. T

If you're downloading a file at 10MB each second and you've set a 2 second update interval then the application won't update for 2 seconds, when it does finally update you've uploaded 20MB not 10 and showing 20 is correct.

The vehicle is going 5M during the first second and 15M during the next second but you've configured 2 second interval? and we're showing 40M which is correct?

OK, there is big miscommunication. Process Hacker displays "rate" and "MB/s", this is different form "data in interval" or "data since last update" and "MB". In your car example with 1s refresh interval: There are there are 20 m per refresh interval and there are 20 m since last update and there are 20 m per second being travelled, this is where we agree with each other. In case of 2s refresh interval: There are now 40 m per refresh interval, or 40 m since last update being travelled, yes, this is correct. But there are still 20 m per second travelled no matter the refresh interval. The word "per" in English means "to divide by". So 40 meters travelled per 2 seconds means speed (or rate) of 20 m/s, it still means 40 m since last update.

when it does finally update you've uploaded 20MB not 10 and showing 20 is correct.

10 or 20 or what? Units matters! Showing 20 MB downloaded since last update is indeed correct. Showing 20 MB downloaded per refresh interval is indeed correct. Showing 20 MB/s downloaded is incorrect, this is where we don't understand each other.

The vehicle is going 5M during the first second and 15M during the next second but you've configured 2 second interval? and we're showing 40M which is correct?

By my math 5 m + 15 m is equal to 20 m. Where does the 40 m value comes from? Correct is to show 20 m since last update, or 20 m per update interval, or 10 m/s.
I expected this is exactly what the "bytes in interval" and "bytes per second" columns are for. This is what I suggested to be added back in 2011 at http://processhacker.sourceforge.net/forums/viewtopic.php?f=14&t=346 and now when I'm developing a network application, I noticed it is broken.
Marek

Added by commit number c25ae6a39feaa1f64ffd43d010e86628555334ad 12 years ago.

I think you both are right here. There is an improvement we can make to ExtendedTools.
Before I go further. I need to remind us this fact - In most circumstances System Informer is an external observer to activity on the system. We are not inline nor are we probing specific activity to take a measurement. And as with most things in computation there are tradeoffs between the accuracy and performance.
Calculation of any rate can be estimated independent of the period between measurements.  To perform this calculation you need two things. The difference in measured information and the difference in time between those measurements. With these two things you can adjust to represent the rate of change in terms of any related period unit (in this case, time). This approach is taken all over computation, you might be familiar thinking of this in terms of game engines where activity is updated each "game tick" but must account for "delta time" in their computation.
The commit you linked (https://github.com/winsiderss/systeminformer/commit/c25ae6a39feaa1f64ffd43d010e86628555334ad) does this. As does the code on master. It could be improved as it assumes the refresh interval is the period, which may not always be the case. In reality I think we should be capturing the delta time instead of relying on the configured update interval. This would give us a more accurate estimation. We already do this in the main binary for many of the other calculation. Said practically, this rate will be inaccurate if you manually refresh (e.g. using F5) outside of the update interval.


android_os_Process_getProcessNameByPid pid is 17508     android_os_Process_getProcessNameByPid value is ovo.myanimation

E/Process: android_os_Process_getProcessNameByPid pid is 17508
android_os_Process_getProcessNameByPid value is ovo.myanimation
E/GED: Failed to get GED Log Buf, err(0)

setImage(ImageSource.bitmap(BitmapFactory.decodeResource(getResources(),R.mipmap.long_img)));

I don't know what this means. Please complete the issue template, I can't help you if you delete it and provide none of the requested information.


Using ML.net for NLP/NLU

Hey all,
What would need to be done to make ML.net do NLP/NLU? We use a python back-end for our current chatbot platform, looking to explore ML.net, because we use .net front-end.
My understanding of what needs to be done is:
Load in a dataset with 2 columns using TextLoader.
SentenceToBeScored | Intent
Then use a TextFeaturizer to change intents into numeric vectors
Then train and predict.
Is it that simple? Or am I missing something?

Thanks @atotalnoob. Since this is a product question, I've moved it to https://github.com/dotnet/machinelearning/issues/161.


x/website/internal/dl: linux/arm64 port is misreported by File.PrimaryPort as not first class

Background:  #35593 (all: make linux/arm64 a first-class port). It was accepted, so the linux/arm64 port is a First Class Port.
According to PortingPolicy § First Class Ports, for a first class port:

Official binaries are provided

also it is noted that

We distribute binaries for other GOOS/GOARCH pairs (other "ports"), but they are not "first class" by this definition

But in the download page I see that for go 1.13.9 and go 1.14.1 linux-arm64.tar.gz  |  ARMv8 is listed under "Other Ports", which I believe is where we put ports we provide binaries for even if they're not First Class. Since arm64 is first class, it should be in the section above, with the other First Class Ports.
cc @dmitshur

Thanks for reporting and providing relevant background.
This looks like a bug in the golang.org/x/website/internal/dl package. It maintains a map of primary ports, and I suspect we need to update that to match #35593.

Thank you for sending a CL and fixing this issue, @ALTree.


Design Revamp

Just a suggestion, we should make playplayen a bit more appealing to new users, sort of like a sublime text theme :P

Ace has plenty of themes builtin already. Using ace/ext-themelist.js it's trivial to have a dropdown combo theme selector. I prefer Solarized Dark so I've already hacked play.rust-lang.org using TamperMonkey and Stylish to accommodate my needs. It would be great if I could just select it from a menu though.

Thats pretty nice!

I've made pull request #72 to add theme selection to the playpen.

Should this be closed?

:P


Cleanup and moving forward to 4.0

Hi everyone, first up, please accept my apology for leaving this project in silence for a long time – sorry :) I know many of you are using this component and depending on it, so I don't take that lightly.  Many have taken the time to report issues and create pull requests, and I appreciate your patience.
I'm going to put in some effort now to bring the project back to a healthy state, and also explore options of how to make that sustainable in the long term.
First up I'll be doing some triage on issues, to get a better understanding of where things are at. I'll also be merging some PRs that deal with updates to documentation and minor bugs.
Larger changes will be held just a little longer as more care needs to be taken towards backwards-compatibility.
And shortly I'll also be sharing my plans for a 4.0 release, and how you can help.  Thanks!

Update on this: I am still preparing my plans for how to move things forward.
In the meantime if anyone wants to help, the thing we need the most is demos. Put something together on codepen / jsbin / codesandbox that demonstrates a certain use case of the component.  Even better if this represents a use case in a real project you are responsible for.
If there is a certain feature or prop you depend on for your project, we want to see that covered by a demo, so we can prioritize features that are the most important to projects in the wild.

Hi @joshwnj, not sure if you're still looking for examples or not. I've just found your library and started using it for an animate-on-visible style component.
I've added a crude version to Codesandbox here, and hope that it may be useful for you:
https://codesandbox.io/s/ppoo7yn5qj?fontsize=14

Hi @cjpete, that's a good example, thanks!


recreate MapDB files if the data is corrupted

Sometimes I encountered the issue that the MapDB files were not created correctly. Afterwards, it was not possible to use the MapDB cache unless the files were manually deleted. This fix does this automatically if corrupted data is detected.

Codecov Report

Merging #8 into v0.5.0-dev will decrease coverage by 0.2%.
The diff coverage is 0%.

@@               Coverage Diff                @@
##             v0.5.0-dev       #8      +/-   ##
================================================
- Coverage         55.79%   55.58%   -0.21%
  Complexity          124      124
================================================
  Files                14       14
  Lines               803      806       +3
  Branches            203      203
================================================
  Hits                448      448
- Misses              288      291       +3
  Partials             67       67

Impacted Files
Coverage Δ
Complexity Δ

...lingua/internal/model/LanguageModelDeserializer.kt
2.22% <0%> (-0.16%)
1 <0> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c5ad04e...2d3fbad. Read the comment docs.

Codecov Report

Merging #8 into v0.5.0-dev will decrease coverage by 0.2%.
The diff coverage is 0%.

@@               Coverage Diff                @@
##             v0.5.0-dev       #8      +/-   ##
================================================
- Coverage         55.78%   55.58%   -0.21%
+ Complexity          125      124       -1
================================================
  Files                14       14
  Lines               812      806       -6
  Branches            207      203       -4
================================================
- Hits                453      448       -5
- Misses              288      291       +3
+ Partials             71       67       -4

Impacted Files
Coverage Δ
Complexity Δ

...lingua/internal/model/LanguageModelDeserializer.kt
2.22% <0%> (-0.16%)
1 <0> (ø)

...om/github/pemistahl/lingua/api/LanguageDetector.kt
68.68% <0%> (+0.7%)
53% <0%> (ø)
:arrow_down:

...ub/pemistahl/lingua/api/LanguageDetectorBuilder.kt
100% <0%> (+4.54%)
4% <0%> (-1%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update fe1dee9...2d3fbad. Read the comment docs.

Thank you @bgeisberger for this useful fix.


Fix for issue 24

Changed generator being used for populating player tables
Incoming data format changed by offset of 1 for player data. Changed
indexes to account for it.

Thank you kindly!


fr(google-maps): add forRoot() for global initializing

Feature Description
like many modules already use it, it would be nice if you could initialize the Google Map with the method forRoot() in app.module.ts with given parameters.
Use Case
initialize with parameters like:

apiKey (link apiKey from environment.ts)
language
region
styles (set global styles for map and marker)

These are the first ones I thought of. I'm sure there are many more.

That might be somewhat similar to https://github.com/angular/components/issues/17037.

@DwieDima Aren't these things currently all configurable as we don't load the Google Maps API automatically? So it's actually the responsibility of actual consumers of the google-maps package.
Is this a proposal that we should load the API automatically and provide these options?

@devversion yes, you can configure all this yourself.
But it would be nicer to set this globally. For example I have to set the style of the map again, if I want to use the component in a new page.
To answer your question: yes.

@DwieDima Thanks for the quick response. Could you help providing a small example of styles you are referring to? My thinking is that apiKey, language, region etc. are configurable when you actually load the API. That should be global to your application.
So only the styles are a concern here? Are you talking actual settings in the google-maps component, or CSS styles that you need to write multiple times?

I'm referring to the implementation like agm/core did.
Also ionic did it pretty well and high customizable.
My intention would be to set basic config like apiKey, but also styling options like google.maps.MapTypeStyle and pins.
my PR was mainly created to set styles globally.
But i think at this point other options could be set as well.
Would that be possible?

Thanks for clarifying. So I think there are two parts you're requesting:

Global options for the API loading mechanism. That would also involve us automatically loading the google-maps API (currently that's up to the user)
Global options for actual google-map parts (such as google.maps.MapTypeStyle).

Both of those things sound like reasonable feature requests to me. I'm slightly unsure about (1) as it seems like the intention was that the API-loading responsibility is left to the consumers. Not sure about that though.
I assume @mbehrlich, if available, might be best to answer this.

Hi,
I found this feature request as we're moving over from agm/core and are now loading the API key when loading the google maps script in index.html as suggested in the example.
I'd prefer to load the API key from an environment variable when loading this module as suggested above, so that we can use different keys in dev/test/live and that's a standard mechanism for doing so in Angular I believe.
This is just some info on why it could be useful is all.  Thanks very much for all your great work!

It's been brought up often, and we've discussed this periodically. One of the reasons we've never done this is that we want the user to be aware of the scripts that are being introduced on their page, and we're worried about obfuscating that from the user. Regarding global options like styling, I will look into this further.

Also check out @googlemaps/js-api-loader.


Install the common test executables to libexec

🎉 New feature
Part of https://github.com/gazebosim/gz-physics/issues/50#issuecomment-747095048
Summary
This installs the COMMON_TEST_* executables to a subfolder of libexec following the pattern used by the standalone executables added in https://github.com/gazebosim/gz-transport/pull/216. This will allow these tests to be used by external implementers of gz-physics plugins. The test_lib_loader library is changed to a static library as well since these executables link against it.
Remaining tasks:

[ ] Install resources folder used by some tests
[ ] Install worlds folder used by some tests
[ ] Provide cmake helper for adding tests to downstream projects using these executables

Test it

Build and install this branch
Run <prefix>/libexec/gz/physics6/COMMON_TEST_construct_empty_world <prefix>/lib/libgz-physics6-dartsim-plugin.<suffix>

Checklist

[X] Signed all commits for DCO
[ ] Added tests
[ ] Added example and/or tutorial
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] Consider updating Python bindings (if the library has them)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

I've updated TestLibLoader.hh to be header-only in https://github.com/gazebosim/gz-physics/pull/458/commits/57ec5eb7c8e3e5b96ffc5b4cb8eb21dd7027dac9, hoping that this fixes our windows CI issues

this is ready for review


Feature request: store a list of elements associated with the logged in user in new custom element

Hey @MeTaNoV, thanks for these elements - again, these have been a big help. However, I've hit a bit of a snag and I was wondering if you could help me out, and it may even be a nice feature to add to the set of extended elements.
You put together the firebase-auth-manager element, and from there I can easily get the data associated with a particular user. Say, for example, I want to get a list of messages that a particular user has sent, and the list of message IDs are saved under the user tree:
users: {
  $userID: {
    messages: {
      messageID1: true,
      messageID2: true,
      ...
    }
  }
}

Now, here's the complication -- I want to get the contents of each actual message, each of which has an "owner", and provide it in an array or object as a property of a new custom Polymer element:
messages: {
  messageID1: {
    contents: "Hi, I'm a message",
    owner: "userID1"
  },
  messageID2: {
    contents: "Hi, I'm also a message, but I'm not owned by User1",
    owner: "userID2"
  },
  ...
}

So, I've already developed a custom element called x-message-ids that can be used as follows to get the list of message identifiers under a particular user (users/userID1/messages):
<x-message-ids message-ids={{messageIdentifiers}}></x-message-ids>
> {{messageIdenfifiers}} // ["messageID1, "messageID2]

Now, with those message identifiers, I need to perform a query at each message location under /messages to, first, determine if the user is the owner of the message, and, second, get the contents of the messages. I'd like to be able to provide this in an Array that looks like the following:
[{messageID1: "Hi, I'm a message"}] //Notice that messageID2 is not here because it had a different owner

I think one way of going about this could be to combine <x-message-ids> with a <dom-repeat>, and perform a firebase query to each location using <firebase-document>:
<x-message-ids message-ids={{messageIdentifiers}}></x-message-ids>
<template is="dom-repeat" items="[[messageIdentifiers]]" as="messageID">
  <firebase-document log
                     location={{_messageLocation}}
                     data={{contents}}>
  </firebase-document>
</template>

From here, I'm not really sure where to go. Does _messageLocation need to be defined within a <script> tag within the dom-repeat? If so, how do I define an object that all of the firebase-document's have access to, so that, if the query is successful, it can insert its own entry onto?
Thanks in advance, and let me know if I have been unclear or can explain any better.

I guess it would be helpful to include the final objective. Basically, I'd like to be able to, on a page, do something like the following:
<x-messages messages={{messages}}></x-messages>
<template is="dom-repeat" items="[[messages]]" as="message">
  Message contents: {{message}}
</template>

By the way, I've opened a question on StackOverflow that, if answered, should provide means for this to work.
Also, there's another related question that was answered, but I believe it was for an older version of Polymer and does not work in 1.0.

So, it appears that by using the on-firebase-value listener, a workaround should be possible.
<x-message-ids message-ids={{messageIdentifiers}}></x-message-ids>
<template is="dom-repeat" items="[[messageIdentifiers]]" as="messageID">
  <firebase-document log
                     location={{_messageLocation}}
                     on-firebase-data="_handleFirebaseData">
  </firebase-document>
</template>

...

properties: {
  object: {
    type: Object,
    value: function(){ return{}; },
    notify: true
  }
},

_handleFirebaseData: function(e) {
  //1. extract message identifier (there has got to be a better way of getting this)
  var mID = e.detail.ref().toString();
  mID = mID.splice(...) //do string funkiness to get just the message identifier

  //2. set the property of the object to the value retrieved from Firebase
  this.set('object.'+mID, e.detail.val()); //not even sure if the "." syntax works like this...
}

This is a bad workaround... there has got to be something better, but at least this is kind of progress.

Max,
I'd recommend joining (if you haven't already) https://polymer.slack.com/
to try and chat with people about the issues your facing.
Regarding repeatable elements here are a couple of techniques which may (or
may not) help.
Here https://jsbin.com/lehonit/4/edit?html,console,output is a jsbin that
Arthur Evans provided me (nothing to do with firebase but gives an example
of a dom-repeat.
Below is a code sample using iron-list which I am using to display a
collapsible list of venues modified from the iron-list collapsible demo
https://github.com/PolymerElements/iron-list/blob/master/demo/collapse.html
.
For your messages you may want to look at the simple iron-list
https://elements.polymer-project.org/elements/iron-list?view=demo:demo/index.html&active=iron-list
.
I think the main point is that you may want to look at a collection and
then accessing the individual messages in the array, rather than a document.
Hope this helps.
Regards,
John
Sample Code
Venue Information

On Tue, Jan 26, 2016 at 1:00 PM, Max Mueller<EMAIL_ADDRESS>wrote:

So, it appears that by using the on-firebase-value listener, a workaround
should be possible.

...
properties: {
object: {
type: Object,
value: function(){ return{}; },
notify: true
}
},
_handleFirebaseData: function(e) {
//1. extract message identifier (there has got to be a better way of getting this)
var mID = e.detail.ref().toString();
mID = mID.splice(...) //do string funkiness to get just the message identifier
//2. set the property of the object to the value retrieved from Firebase
this.set('object.'+mID, e.detail.val()); //not even sure if the "." syntax works like this...
}
This is a bad workaround... there has got to be something better, but
at least this is kind of progress.
—
Reply to this email directly or view it on GitHub
https://github.com/MeTaNoV/firebase-element-extended/issues/11#issuecomment-175227728
.

@johnwhitton, thanks for the response. Actually, I had decided to kind of "dumb down" the question by including a <firebase-document> rather than a <firebase-collection>, but in actuality I'm already using a <firebase-collection> in my application.
Thanks for the tip about Slack, I'll head over and see if I can get some further support because I'm starting to lose it >.<
So, I guess just to clarify (although I'll move to Slack soon), I'd like to use a <firebase-collection> inside of a <dom-repeat> and store the contents of the collection in a property of a shared object:
<template is="dom-repeat" items="[[identifiers]]" as="id">
  <firebase-collection
                     location={{_computeIdLocation(id)}} //works just fine
                     data={{_resolveRef(id)}}> //data does not end up at right place
  </firebase-collection>
</template>

...
properties: {
  identifiers: {
    type: Array,
    value: ['identifier1', 'identifier2'] //this list is actually dynamically loaded from Firebase
  },

  allData: {
    type: Object,
    value: function(){return{};}
  },

  allDataWatcher: {
    type: Object,
    compute: '_watchAllData(allData)'
  }
},

_computeIdLocation: function(id){
  return ["https://a-firebase.firebaseio.com/place-to-get-data", id].join('/');
},

_resolveRef: function(id){
  return this.allData[id];
},

_watchAllData(allData) { //This never prints
  console.log("Printing allData");
  console.log(allData);
}

Does that make sense?


EDF time slicing

Add an option for slicing edf data based on the time range of miniscope recording.

Get Miniscope session start time (already in datetime format in the metadata.json)
Get Miniscope relative timestamps and convert the first and the last timestamps in datetime format using the session start time
Input these two timestamps in edf interface
Get EDF recording start time in datetime format
Convert EDF relative timestamps in datetime format using EDF recording start time
Slice EDF data inside the time range identified by Miniscope recording start time and stop time in datetime format

This is working good with your fix https://github.com/catalystneuro/neuroconv/pull/1139
If it's ok with you I would merge this @h-mayorquin


[5.8] Update command constructor

The configureUsingFluentDefinition method does 3 things including configure name, arguments and options. So, if the signature property is not set, we just do these things manually by two statements below.
parent::__construct($this->name);

$this->specifyParameters();

No need to add ! isset($this->signature) check. See the example code with comments for more details.
<?php

/**
 * Create a new console command instance.
 *
 * @return void
 */
public function __construct()
{
    if (isset($this->signature)) { // Check whether signature is set
        $this->configureUsingFluentDefinition();
    } else {
        parent::__construct($this->name);
    }

    // some other stuff

    if (! isset($this->signature)) { // Check whether signature is not set.
        $this->specifyParameters();
    }
}

Unclear what bug this is fixing?


Incorrect WordPress version detection for certain generator tags

A generator meta tag like
<meta name="generator" content="WordPress.com">
is detected as WordPress version ".".
The generator tag seems to be used on sites hosted at wordpress.org
example site: https://blog.mbbka.org.uk/

Fixed in 57fe916762d3de65db501e07cb92705d936622cf, thanks!


Build "latest" Docker images on CircleCI

As part of this commit, we need to turn them off being built on DockerHub.
Why don't we want to build on DockerHub?
It's very slow to do there. When releases are done, it takes several hours
to do the various images we need built. Additionally, we doubt that DockerHub
has the ability to build Docker images that use the vendored LLVM that we
are moving to as it takes a long time to complete.
This commit ONLY switches to building "latest" and "alpine" tags on CircleCI.
Release related tags are still done on DockerHub. Before that change can happen,
other changes will need to be made.

@jemc @EpicEric FYI that this will be merged before the weekend is over.


loader: Bad free() when running Hologram -v

In testing the fix for standard_validation, I reliably got an assert error when calling DestroySurfaceKHR->loader_heap_free->free(pMemory). The call works fine if I don't specify "-v" to Hologram to turn on validation. This is on Windows 7, Nvidia. Note that to enable validation properly in Hologram, you need to add a line to the Shell::Shell() constructor:
instance_layers_.push_back("VK_LAYER_LUNARG_standard_validation");

I could not reproduce this on Friday (using latest code on Win 10 / nvidia).  Tony says he saw it once early last week but has not seen it lately.  Tony just tried it again today and could not reproduce.  It is possible that some other fix fixed this issue.  Closing.


Use Quarkus client for token request with device flow

After upgrading to Quarkus 3.9 it should be possible to use the Quarkus OIDC client for device flow token request as well

https://github.com/quarkusio/quarkus/pull/39054


did some improvements and fixes in code

This pull request addresses the following changes and improvements:

Removed unnecessary repetition in configuration files (vitest.browser.config.mts and .eslintrc.js).
Improved the test logic in ui.test.ts by ensuring proper use of await for asynchronous actions, leading to more reliable tests.

Issues Closed

N/A

Release Notes
In this release, we:

Cleaned up redundant code in configuration files.
Enhanced test structure to handle asynchronous operations properly.

Summary
This PR focuses on reducing repetitive code in configuration files and improving test reliability by addressing async handling issues in ui.test.ts.

Breaking Changes
None.

Checklist

[x] All changes are covered by tests.
[x] All changes are documented where applicable.
[x] I reviewed the entire PR myself.
[x] No breaking changes introduced.

Allow edits by maintainers: ✅

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hey @crStiv, thanks for the contribution!
We love to get submissions from the community, but we prefer first-time contributions to be more substantial. If you are excited to contribute, feel free to look through our open issues for ideas!
Closing for now.


Broadcasting issue in 10.21.0

Laravel Version
10.21.0
PHP Version
8.2.5
Database Driver & Version
No response
Description
Broadcasting stopped working in the last version of Laravel
Steps To Reproduce
The reason - the contract in WS messages was changed:
10.21.0 // NOT WORKING
{"event":"App\Notifications\UserNotification\MyNotification","channel":"private-App.User.1","data":"..."}
10.20.0 // WORKING
{"event":"Illuminate\Notifications\Events\BroadcastNotificationCreated","channel":"private-App.User.1","data":"..."}

Seem to be related to https://github.com/laravel/framework/pull/48136

Hey there, thanks for reporting this issue.
We'll need more info and/or code to debug this further. Can you please create a repository with the command below, commit the code that reproduces the issue as one separate commit on the main/master branch and share the repository here?
Please make sure that you have the latest version of the Laravel installer in order to run this command. Please also make sure you have both Git & the GitHub CLI tool properly set up.
laravel new bug-report --github="--public"

Do not amend and create a separate commit with your custom changes. After you've posted the repository, we'll try to reproduce the issue.
Thanks!

I think the issue you're describing is that the event name has changed, right @AnourValar

@cosmastech , yes... exactly

Hey there, thanks for reporting this issue.
We'll need more info and/or code to debug this further. Can you please create a repository with the command below, commit the code that reproduces the issue as one separate commit on the main/master branch and share the repository here?
Please make sure that you have the latest version of the Laravel installer in order to run this command. Please also make sure you have both Git & the GitHub CLI tool properly set up.
laravel new bug-report --github="--public"

Do not amend and create a separate commit with your custom changes. After you've posted the repository, we'll try to reproduce the issue.
Thanks!

Hey there,
v10.21.1 with the relevant changes has been released, please try again and open up a new issue if you're still experiencing this problem.


cargo-mutants: 24.4.0 -> 24.5.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/sourcefrog/cargo-mutants/releases.
meta.description for cargo-mutants is: A mutation testing tool for Rust
meta.homepage for cargo-mutants is: https://github.com/sourcefrog/cargo-mutants
meta.changelog for cargo-mutants is: https://github.com/sourcefrog/cargo-mutants/releases/tag/v24.5.0
Updates performed

Rust version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 24.5.0 with grep in /nix/store/ab89prpdaa1sva0xdf3jhc58rjbx2kpf-cargo-mutants-24.5.0
found 24.5.0 in filename of file in /nix/store/ab89prpdaa1sva0xdf3jhc58rjbx2kpf-cargo-mutants-24.5.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

cargo-mutants

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ab89prpdaa1sva0xdf3jhc58rjbx2kpf-cargo-mutants-24.5.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A cargo-mutants https://github.com/r-ryantm/nixpkgs/archive/608d6febb95cb72ea085980528aa2756eaab32cf.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/608d6febb95cb72ea085980528aa2756eaab32cf#cargo-mutants

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ab89prpdaa1sva0xdf3jhc58rjbx2kpf-cargo-mutants-24.5.0
ls -la /nix/store/ab89prpdaa1sva0xdf3jhc58rjbx2kpf-cargo-mutants-24.5.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package built:

cargo-mutants

Maintainer pings
cc @figsoda for testing.

Result of nixpkgs-review pr 311812 run on x86_64-linux 1

1 package built:

cargo-mutants


Missing requirement to update API permissions

We followed the doc and still had to open a case with Microsoft because our data was not showing up in the portal. We could see our devices under the "view devices" tab but we never had the data populate. The fix was to "Grant admin consent for (Our Company)" under API permissions in the Desktop Analytics app registered in App registrations. The documentation should be updated to include checking this is granted. The attached example shows green checkmarks however before we granted access the color was amber.

Hi @hoppyshaw, thanks for the feedback!

We have this covered in the section of the DA troubleshooting article on Create app in Azure AD


BUG: Allow installation directories

Currently meson-python fails to execute a custom_target() which specifies a directory as output and enables installation. You need this if you have a custom_target() for which you don't know the exact set of output files in advance. When run directly (meson build, meson install -C build), meson installs the directory without any problems. Apparently (stated on the meson IRC channel) this is explicitly allowed in meson, although the documentation doesn't seem to either forbid or allow it explicitly.
A concrete example use case is when you want to generate html documentation using sphinx-build, which generates not only one html page per input, but also places necessary images, css and js files into its output directory.
The issue is in _install_path() in __init__.py which tries to write() to the output file not checking if it is a regular file first.
This PR solves the issue by checking if the current path is a directory and if so calls _install_path() recursively on all of the path's children.

Yes, I tend to agree after some more thought.
I used to put documentation in share/doc and share/man depending on the type, but that's definitively non-standard and very unix-y.

On that matter, but still off-topic: Do you have a pointer where I can learn more about how project documentation is usually handled with python packages?

Should I look for another example or are you fine with the abstract rationale?
Also, as you can see, this is a minimal effort fix, but since I had already done it, I submitted it as a PR right away instead of opening an issue. I'd fixup the commits into one if you want to use the fix as implemented here.
Let me know if you need anything for this to proceed.

To consider merging this, we would also need a test, and the commits to be squashed together. However, I think that the fix is incomplete: the installation path traversal used by the custom Python module loader for editable installations expects that only install_subdir installs directories.

I have examples of a custom_target with multiple outputs that need to be installed (e.g., here), but none with a directory. I can imagine it being useful though. For example for code generation where the outputs depend on the content of the input source file(s). We had that case with f2py, but fixed it on the f2py side by writing empty output files if needed rather than omitting them completely (so we could list output files reliably).
A test could use a codegen.py script like this:
#!/usr/bin/env python3
"""
Write out a number N of .py files; N cannot be known in advance.
Simplified with a random number generator. Real-world code may
have depend N on the content of an input file instead.
"""
import random

def write_files():
    with open('always.py', 'w') as f:
        foo = 42

    if random.randint(0, 1) == 1:
        with open('sometimes.py', 'w') as f:
            bar = 43

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("infile", type=str,
                        help="Path to the input file")
    parser.add_argument("-o", "--outdir", type=str,
                        help="Path to the output directory")

if __name__ == "__main__":
    main()

And then used in meson.build like:
custom_target('fblas_module',
  output: ,  # TODO: how does this work, do you just leave out the `output` keyword?
  input: 'an_input.py',
  command: [codegen.py, '@INPUT@', '-o', '@OUTDIR@'],
  install: true,
  install_dir: py.get_install_dir / 'mypkg',
  install_tag: 'python-runtime',
)

This was addressed with a more targeted fix including a test case along the lines of the comment above in gh-584. So I'll close this PR. Thanks @romsom and @dnicolodi!


Restructure document module

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (c52f352) 90.27% compared to head (a75a436) 90.27%.

Files
Patch %
Lines

src/document/document.rs
95.65%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #21   +/-   ##
=======================================
  Coverage   90.27%   90.27%
=======================================
  Files           7        7
  Lines         216      216
=======================================
  Hits          195      195
  Misses         21       21

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


{%- render -%} autocomplete

Is your feature request related to a problem? Please describe.
I always have to check the self written documentation in my snippets to see what props I can pass to my snippet.
Describe the solution you'd like
I was thinking about something like this.
{% prop source = object | required: true %}
{% prop width = number | required: true | default: 768 %}

{%- liquid
  prop source = object | required: true
  prop width = number | required: true | default: 768
-%}

I know this image now shows the source autocomplete from HTML, but this could be an autocomplete/suggestion from Liquid. It works a little bit like typescript, but then for liquid.

At this point I'm not sure if this will work for liquid, but it's just a suggestion that I'd like to see.
Checklist

[x] I have checked and made sure that the proposal adheres to this plugin's principles

👋 Hi @stijns96, thanks for the suggestion!
This is an excellent idea, and I'll take it back to the team for discussion. I'll update this issue as soon as we have any updates.

Dawn snippets follow a strong convention of defining accepted elements in the first comment of the file. I believe we can take advantage of this in a JSdocs fashion, as this is a purely tooling-focused feature. Additionally, we can use the comments to provide inline documentation while folks type, similar to the assistance provided with objects.
{% prop source = object | required: true %}
{% prop width = number | required: true | default: 768 %}

{%- render 'test', so█ -%}
                     ^-- code completes with source

{% comment %}
  Renders the test snippet

  Accepts:
  - source: {object} Blog object
  - width: {number} Width of the page

  Usage:
  {% render 'test', source: 'the source', width: 800 %}
{% endcomment %}

{%- render 'test', so█ -%}
                     ^-- code completes with source

This issue relates to this one: https://github.com/Shopify/theme-tools/issues/114. While we're more focused on the render tag, it's valuable to keep that in mind :)

So if I understand it correctly, we don’t want to create a new variable like prop, but we want to use the first comment for this? Although I like this technique, I think it comes with some limitations or we have to come op with a slightly different approach.
The limitation I see is that we can not easily add more requirements to the properties we want to pass. This idea actually came up when I was working on a Vue project. See their props documentation here.
I ones created an extended docs for a quite extensive image snippet.
{%- comment -%}
  Files must meet the following requirements:
    https://help.shopify.com/en/manual/shopify-admin/productivity-tools/file-uploads

  # Parameters:       | Required    | Type                | Description                               | Accepted values
    - source          | true        | { Object }          | The image to be displayed.                |
    - class           | false       | { String }          | The class for the image.                  |
    - alt             | false       | { String }          | The alt text for the image.               |
    - title           | false       | { String }          | The title attribute for the image.        |
    - aspect_ratio    | false       | { String / Number } | The aspect ratio of the image.            | 'x/y' or 'x.y'
    - max_width       | false       | { String / Number } | The maximum width of the image.           | '1000' or 1000
    - lazy            | false       | { Boolean }         | Whether the image should be lazy loaded.  | true or false
    - fetchpriority   | false       | { String }          | The fetch priority for the image.         | 'low' or 'high'
    - sizes           | false       | { String }          | The sizes attribute for the image.        | One or more strings separated by commas, indicating a set of source sizes ordered from large to small. Each source size consists of:
                                                                                1. A media condition. This must be omitted for the last item in the list.
                                                                                2. A source size value.
    - widths          | false       | { String }          | The widths attribute for the image.       | 'xxx, xxx, xxxx ...'
    - figcaption      | false       | { String }          | The caption for the image.                |
    - fallback_image  | false       | { String }          | The fallback image for the image.         | https://shopify.dev/docs/api/liquid/filters/placeholder_svg_tag

  # Recommendations:
    - The max_width parameter is recommended to ensure the srcset is not larger than the image.
    - The sizes parameter is recommended to ensure the image is displayed responsively.
    - Only use fetchpriority 'high' for images that are critical to the user experience (Above the fold).

  # Example:
    {%- render 'format-image',
      source: section.settings.image,
      lazy: true,
      sizes: '(min-width: 1200px) 50vw, 100vw'
    -%}
{%- endcomment -%}

It could also be something like this.
{%- comment -%}
  Files must meet the following requirements:
    https://help.shopify.com/en/manual/shopify-admin/productivity-tools/file-uploads

  # Accepts:
    - source
      required:       true
      type:           Object
      description:    The image to be displayed.

    - aspect_ratio
      required:       false
      type:           String / Number
      description:    The aspect ratio of the image.
      acceted values: 'x/y' or 'x.y'

  # Recommendations:
    - The max_width parameter is recommended to ensure the srcset is not larger than the image.
    - The sizes parameter is recommended to ensure the image is displayed responsively.
    - Only use fetchpriority 'high' for images that are critical to the user experience (Above the fold).

  # Usage:
    {%- render 'format-image',
      source: section.settings.image,
      lazy: true,
      sizes: '(min-width: 1200px) 50vw, 100vw'
    -%}
{%- endcomment -%}

I still think this could bloat the snippet quite a bit... Imagine something like this.
{%- liquid
  prop source = object | required | description: 'The image to be displayed.'
  prop aspect_ratio = string or number | description: 'The aspect ratio of the image.' | accepted_values: 'x/y' or 'x.y'
-%}

{%- prop source = object
  | required
  | description: 'The image to be displayed.'
-%}

{%- prop aspect_ratio = string or number
  | description: 'The aspect ratio of the image.'
  | accepted_values: 'x/y' or 'x.y'
-%}

Both have their up and downsides, but the possibility to make values required etc, can give nice theme checks as well.


Add a failure clause for invokeAction future

Undergoing testing - PPG 325.

Rebased and added misc fixes.  Retesting at PPG 326.

Merged as 827e0ec.


”Negomir”, ”Artanu”, "Bohorel", "Condeiești", "Nucetu", "Orzu", "Paltinu", "Raci", "Ursoaia", "Valea Racilor" are listed in the drop-down menu

Description:
”Negomir”, ”Artanu”, "Bohorel", "Condeiești", "Nucetu", "Orzu", "Paltinu", "Raci", "Ursoaia", "Valea Racilor" are listed in the drop-down menu alongside their corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Write in the search bar "Negomir"

Expected results
The location appears in the drop-down menu as "Sat Negomir, GORJ (Negomir)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 6
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 7
Write in the search bar "Condeiești"

Expected results
The location appears in the drop-down menu as "Sat Condeiești, GORJ (Negomir)".

Step 8
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 9
Write in the search bar "Nucetu"

Expected results
The location appears in the drop-down menu as "Sat Nucetu, GORJ (Negomir)".

Step 10
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 11
Write in the search bar "Orzu"

Expected results
The location appears in the drop-down menu as "Sat Orzu, GORJ (Negomir)".

Step 12
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 13
Write in the search bar "Paltinu"

Expected results
The location appears in the drop-down menu as "Sat Paltinu, GORJ (Negomir)".

Step 14
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 15
Write in the search bar "Raci"

Expected results
The location appears in the drop-down menu as "Sat Raci, GORJ (Negomir)".

Step 16
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 17
Write in the search bar "Ursoaia"

Expected results
The location appears in the drop-down menu as "Sat Ursoaia, GORJ (Negomir)".

Step 18
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 19
Write in the search bar "Valea Racilor"

Expected results
The location appears in the drop-down menu as "Sat Valea Racilor, GORJ (Negomir)".


[mmlspark] Memory Corruption

Memory Corruption when using Spark Package https://github.com/azure/mmlspark/
Similar to https://github.com/microsoft/LightGBM/issues/2363 but I'm getting this while avoiding the usage of LGBM_DatasetCreateFromCSRSpark. To avoid that function I'm forcing my dataset to be a dense vector which uses this code path
The crash always occurs when calling the jni method LGBM_BoosterCreate
Is LGBM_BoosterCreate thread safe? What about the rest of the JNI methods?
My understanding of how the spark package works is that we have each spark worker (thread) calling this method in parallel within the same JVM (per executor). In my setup this is ~16 invocations at roughly the same time. If some part of LightGBM isn't thread safe then this is likely the issue.
Forcing lightgbmlib.LGBM_BoosterCreate to be synchronized seems to have stopped the crashes for now, but I'll report back if they appear again.
Environment info
Spark cluster described here https://github.com/microsoft/LightGBM/issues/2360
LightGBM version or commit hash:
com.microsoft.ml.spark:mmlspark_2.11:0.18.1
I also tested with mmlspark@671b68892ace5967e60c7a064effd42dd5a21ec7 and saw the same crashes.
Error message
The actual error varies, here are few different ones
java: malloc.c:3722: _int_malloc: Assertion `(unsigned long) (size) >= (unsigned long) (nb)' failed.

Another version
java: malloc.c:2927: __libc_malloc: Assertion `!victim || chunk_is_mmapped (mem2chunk (victim)) || ar_ptr == arena_for_chunk (mem2chunk (victim))' failed.
*** Error in `/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java': malloc(): memory corruption: 0x00007f4bb03d9420 ***

Another version
*** Error in `/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java': malloc(): memory corruption: 0x00007fc1455428c0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fd835d067e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8213e)[0x7fd835d1113e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x54)[0x7fd835d13184]
/databricks/python/lib/libstdc++.so.6(_Znwm+0x16)[0x7fd8363b5097]
/local_disk0/tmp/mml-natives2521041663958175051/lib_lightgbm.so(_ZN8LightGBM17ObjectiveFunction23CreateObjectiveFunctionERKSsRKNS_6ConfigE+0x7fb)[0x7fc06602003b]
/local_disk0/tmp/mml-natives2521041663958175051/lib_lightgbm.so(_ZN8LightGBM7Booster25CreateObjectiveAndMetricsEv+0x21)[0x7fc065e9e051]
/local_disk0/tmp/mml-natives2521041663958175051/lib_lightgbm.so(LGBM_BoosterCreate+0x163)[0x7fc065e8fe13]
/local_disk0/tmp/mml-natives7682685279022156827/lib_lightgbm_swig.so(Java_com_microsoft_ml_lightgbm_lightgbmlibJNI_LGBM_1BoosterCreate+0x3f)[0x7fc065bf1e7f]
[0x7fd81f1903c7]
======= Memory map: ========
00400000-00401000 r-xp 00000000 ca:10 5901725                            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
00600000-00601000 r--p 00000000 ca:10 5901725                            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
00601000-00602000 rw-p 00001000 ca:10 5901725                            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
01b9e000-06d5a000 rw-p 00000000 00:00 0                                  [heap]

Reproducible examples
I haven't found a good way to reproduce this outside of my private dataset yet.

@imatiach-msft Can you please take a look?

also adding @eisber

@chris-smith-zocdoc could you please also post the code that reproduces this error?
Are the objects passed to create it separate instances (dataset, parameters)?

based on the stack trace it looks like it is going into here:
https://github.com/microsoft/LightGBM/blob/317b1bfbbfdd8f8a4f5af16b970526bb9486f588/src/c_api.cpp#L143
and then here:
https://github.com/microsoft/LightGBM/blob/5d3a3ea47eb8693c924ffb891387e93534f92896/src/objective/objective_function.cpp#L15
which makes me suspect it has something to do with the Config:
https://github.com/microsoft/LightGBM/blob/317b1bfbbfdd8f8a4f5af16b970526bb9486f588/src/c_api.cpp#L403
which is initialized from the parameters passed to BoosterCreate:
https://github.com/microsoft/LightGBM/blob/317b1bfbbfdd8f8a4f5af16b970526bb9486f588/src/c_api.cpp#L1049
Not quite sure though, just a theory.  Would be good to see the code to investigate further.

@chris-smith-zocdoc could you please also post the code that reproduces this error?

I'm still trying to create a reliable reproduction of this, but the code is essentially
from mmlspark.lightgbm import LightGBMRanker

ranker = LightGBMRanker()
ranker.setGroupCol('search_id')
ranker.setUseBarrierExecutionMode(True)

model = ranker.fit(df)

Are the objects passed to create it separate instances (dataset, parameters)?

Yes they should be, I'm using https://github.com/Azure/mmlspark/
The reason I mentioned "parallel within the same JVM" is because the setup Databricks appears to use is standalone mode with all cores for the executor.
So I have 2 executors, with 16 cores each.

Here's a new error I saw today that might be useful in diagnosing this
Check failed: cache_size_ >= 2 at /__w/1/s/src/treelearner/feature_histogram.hpp, line 676 .

	at com.microsoft.ml.spark.lightgbm.LightGBMUtils$.validate(LightGBMUtils.scala:30)
	at com.microsoft.ml.spark.lightgbm.TrainUtils$.createBooster(TrainUtils.scala:160)
	at com.microsoft.ml.spark.lightgbm.TrainUtils$.translate(TrainUtils.scala:295)
	at com.microsoft.ml.spark.lightgbm.TrainUtils$.trainLightGBM(TrainUtils.scala:440)
	at com.microsoft.ml.spark.lightgbm.LightGBMBase$$anonfun$6.apply(LightGBMBase.scala:128)
	at com.microsoft.ml.spark.lightgbm.LightGBMBase$$anonfun$6.apply(LightGBMBase.scala:128)
	at org.apache.spark.rdd.RDDBarrier$$anonfun$mapPartitions$1$$anonfun$apply$1.apply(RDDBarrier.scala:51)
	at org.apache.spark.rdd.RDDBarrier$$anonfun$mapPartitions$1$$anonfun$apply$1.apply(RDDBarrier.scala:51)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:60)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:340)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:304)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
	at org.apache.spark.scheduler.Task.doRunTask(Task.scala:139)
	at org.apache.spark.scheduler.Task.run(Task.scala:112)
	at org.apache.spark.executor.Executor$TaskRunner$$anonfun$13.apply(Executor.scala:497)
	at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1526)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:503)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

For cache_size  >= 2 we have received the similar issue recently: #2357.

the check is coming from here:
https://github.com/microsoft/LightGBM/blob/master/src/treelearner/feature_histogram.hpp#L676
would be interesting to see what the value is.
"I'm still trying to create a reliable reproduction of this, but the code is essentially"
bizarre, we have tests covering that basic scenario, for the ranker:
https://github.com/Azure/mmlspark/blob/master/src/test/scala/com/microsoft/ml/spark/lightgbm/split2/VerifyLightGBMRanker.scala
and for classifier and regressor with booster:
https://github.com/Azure/mmlspark/blob/master/src/test/scala/com/microsoft/ml/spark/lightgbm/split2/VerifyLightGBMRegressor.scala
https://github.com/Azure/mmlspark/blob/master/src/test/scala/com/microsoft/ml/spark/lightgbm/split1/VerifyLightGBMClassifier.scala
these tests consistently pass and don't fail with either error, hmm

@imatiach-msft Do you a decent sized publicly available dataset I can train LightGBMRanker on? I'd like to try and reproduce on a public dataset without any of the custom logic in my codebase

@chris-smith-zocdoc the ranker tests in mmlspark are on the same dataset as this lightgbm github repository, and unfortunately it isn't that large.  There are a lot more datasets for the lightgbm classifier and regressor in mmlspark, but they are mostly small.  I did test the classifier on the Higgs dataset and there have been tests done on Criteo dataset -
I've put the azure databricks and HDInsight notebooks here for the Higgs dataset in my branch (note I will not be checking these in):
https://github.com/imatiach-msft/mmlspark/tree/ilmat/higgs-notebooks/notebooks/higgs
You can get the Higgs csv dataset here:
https://github.com/guolinke/boosting_tree_benchmarks/tree/master/data
Specifically this link:
https://archive.ics.uci.edu/ml/datasets/HIGGS

you can find the lightgbm ranker test files here which we use as well:
https://github.com/microsoft/LightGBM/tree/master/examples/lambdarank

For cache_size >= 2, we have received the similar issue recently: #2357.

Thanks for the link @StrikerRUS I was able to reproduce the issue. Commented on the other issue https://github.com/microsoft/LightGBM/issues/2357#issuecomment-530224887

Thanks @chris-smith-zocdoc
I think too many leaves/depth is not reasonable.
How about giving the upper bounds to them?
I think 2 << 16 is enough for a single tree.
ping @StrikerRUS

@chris-smith-zocdoc since other issue has been fixed, can this issue be closed as well, or are you still seeing crashes?

@chris-smith-zocdoc since other issue has been fixed, can this issue be closed as well, or are you still seeing crashes?

On the latest master of both LightGBM + mmlspark I am no longer seeing crashes. I'll re-open if they appear again

@imatiach-msft unfortunately I'm seeing this again.
The version of mmlspark I was using did not have this commit merged in it yet. This hid the issue on my cluster because it artificially reduced the parallelism to the number of executors instead of num_cores * num_executors. Once I pulled that commit in I saw the issue again immediately.
This further increases my belief that there is a concurrency bug here.
Stack from today
*** Error in `/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java': corrupted double-linked list: 0x00000000037433d0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f5d127a67e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x82970)[0x7f5d127b1970]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x54)[0x7f5d127b3184]
/databricks/python/lib/libstdc++.so.6(_Znwm+0x16)[0x7f5d12e55097]
/local_disk0/tmp/mml-natives5480771853002411874/lib_lightgbm.so(_ZN8LightGBM13DCGCalculator9CalMaxDCGERKSt6vectorIiSaIiEEPKfiPS1_IdSaIdEE+0x5d)[0x7f453bd38c7d]
/local_disk0/tmp/mml-natives5480771853002411874/lib_lightgbm.so(+0x1bc4ed)[0x7f453bd634ed]
/databricks/python/lib/libgomp.so.1(+0x10e25)[0x7f4542e28e25]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7f5d123156ba]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f5d1283641d]

yes that's something that I've discussed with @eisber before. I'm not sure what the best way to implement that would be. Perhaps a method on the model to "cleanup" or "close" the native model when the user is done, or add it to the finalizer as you suggested.

The best way I've seen so far is to implement both finalize and dispose, which allows both the user and the GC to cleanup the native memory
public void dispose() {
  if(this.ptr != null) {
    LightGBM.free(this.ptr)
    this.ptr = null;
  }
}

protected void finalize() { dispose(); }

If we are concerned about multiple threads calling dispose concurrently then we'll also need synchronization.
There have been some attempts to make something closer to RAII in java, try-with-resources might be an option, though I think spark will get in the way.
There is also https://github.com/ThoughtWorksInc/RAII.scala but I've never used it.

I think if you add the finalize method it would be not necessary anymore to call lightgbmlib.LGBM_BoosterFree(booster) in TrainUtils?
Its still best practice to free it manually and not rely on the GC for this

In a RAII style maybe it can be guaranteed that resource is obtained and freed whenever it is actually cleared?
JVM doesn't have RAII, but I linked some alternatives above

@chris-smith-zocdoc  @imatiach-msft @JoanFM
Is this issue solved? refer to https://github.com/Azure/mmlspark/pull/792

@chris-smith-zocdoc @imatiach-msft @JoanFM
Is this issue solved? refer to Azure/mmlspark#792

Hey @guolinke. I think it might be but unfortunately I do not have the possibility to reproduce the same conditions as when I was experiencing the problem.

@guolinke that pr addresses freeing the native memory but I don't think they address the concurrency issues in LGBM_BoosterCreate that this issue was created for. I'm not working with LightGBM at the moment so I can't easily reproduce.

It's been 2+ years since the last activity on this issue and it's possible that https://github.com/microsoft/SynapseML/pull/792 fixed the original issue.
I'm going to close this.


Create CODEOWNERS

Creating CODEOWNERS file for project owner to identify appropriate PR reviewers

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


One config file

Part of th path towards cmake, reducing the number of config files to one.
Checklist
Thank you for your contribution. Please answer the following:

[X] I acknowledge that I am authorized to submit this code under
the terms of the Apache License
[ ] All new public APIs are documented
[ ] All new public functions have tests
[ ] All new public functions have fuzzing tests

A couple of merge conflicts (CHANGES.md, the obsolete fix-include.sed) were fixed.

The CI failures are because of #159 so I still think this is ready for review.


"Untitled document" do not sync

I'm finding that there are some web pages that either do not have a title defined or that the title does not get picked up by Hypothes.is. In Hypothes.is these get titled as "Untitled document" and annoations/highlights do not get synced to Obsidian.
Here is an example:

I have the same issue with annotated PDFs which are saved locally on PC. they seem not to be transferred to obsidian ???!

I have the same issue with annotated PDFs which are saved locally on PC. they seem not to be transferred to obsidian ???!

Clearly stated in the README...
Sync web article highlights/annotations and the caveat is not tested/supported on PDF.

I'm finding that there are some web pages that either do not have a title defined or that the title does not get picked up by Hypothes.is. In Hypothes.is these get titled as "Untitled document" and annoations/highlights do not get synced to Obsidian.
Here is an example:

Unfortunately, the hypothesis store those articles with randomly generated id. Unless obsidian creates the files using the hypothesis id, it is going to be tricky. Nevertheless, I will look into it.

@benytzlich If you are interested in using Hypothes.is to annotate PDFs, you might look at using the Annotator Plugin for Obsidian. However, I think it is using a locally modified version of Hypothes.is.

Generating files for "Untitled document" pages should be fixed with https://github.com/weichenw/obsidian-hypothesis-plugin/pull/35.

Unfortunately, the hypothesis store those articles with randomly generated id. Unless obsidian creates the files using the hypothesis id, it is going to be tricky.

Why will it be tricky? Shouldn't the page URL still be the same regardless of the metadata title?

@benytzlich If you are interested in using Hypothes.is to annotate PDFs, you might look at using the Annotator Plugin for Obsidian. However, I think it is using a locally modified version of Hypothes.is.

Hey all.
Again, thanks for the plugin!
I wanted to ask about this, too. With hypothesis on local pdf's the annotations sync to the hypothesis web page with all my other notes, but don't sync to obsidian (as pointed out in your limitations bit) and then the annotator plugin has the opposite problem in that whatever you annotate with it does not show up online.
I work a lot with research students. In a scenario where I mark up a pdf offline, I can email them the pdf, and when they open it in a local browser window, my hypothesis notes show up, and they can add their own notes too, and so on with the collaboration.
So off a bunch of disparate local copies, hypothesis manages to know which document it's looking at and bring in the notes. If I want to get those annotations from the web, I can use the export function (https://web.hypothes.is/help/how-do-i-export-my-annotations/) and then copy / paste into MD files, which is a workaround, but a bit of a pain, esp when there are updates all the time.
Is it possible to have your plugin pull those accumulated annotations out, too even if hypothesis calls it "local file"?
What I do to keep track of what's what, is put the bibliography info into a hypothesis page note, find of in the place of a file name, so that I can keep track of which paper we're talking about then all the other notes are collated with it.
Thanks for bearing with me!
C


Error message when using structs

Would be nice with a more obvious error message if struct implements INotifyPropertyChanged

Now we get this message when trying to track a mutable notifying struct:
Track.VerifyCanTrackChanges(x, y) failed.
The type NotifyingStruct is a mutable struct that implements INotifyPropertyChanged.
  As it is a value type subscribing to changes does not make sense.
The property With<NotifyingStruct>.Value of type NotifyingStruct is not supported.
Solve the problem by any of:
* Make NotifyingStruct immutable or use an immutable type.
  - For immutable types the following must hold:
    - Must be a sealed class or a struct.
    - All fields and properties must be readonly.
    - All field and property types must be immutable.
    - All indexers must be readonly.
    - Event fields are ignored.
* Use PropertiesSettings and specify how change tracking is performed:
  - ReferenceHandling.Structural means that a the entire graph is tracked.
  - ReferenceHandling.References means that only the root level changes are tracked.
  - Exclude a combination of the following:
    - The property With<NotifyingStruct>.Value.
    - The type NotifyingStruct.


Create artefact store object

This fixes a #TODO, and prepares for #300.

Gee, python-specific error messages - annoying.


Standard Lint and clean up a few things

whiteList -> filesNotToLint because 1. read an article about the racial implications of whitelist/blacklist and 2. filesNotToLint is a clearer name anyways. Also standard lints.
After this gets merged, any reason we can't deploy a version of this and start using it on probot/probot? And list it on probot.github.io ? I think even just as standard linting it has a lot of potential.

@hiimbex gentle nudge here. Do you plan to get back to this, or would you prefer someone else take it over?

@bkeepers gentle wave here! Been very busy lately but still trying to stay involved with probot things where I can! :)


Nesting support & Automatic join?

So, just curious here, what happens if we nest?
E.g. Animal > Mammal > Dog
Not really convinced there's a practical use case for this, more just curious.
Also, Would it be possible to add a new "HasOwnData" or similar trait, if included then the system should automatically join onto a table (ideally we could reuse $table, but I get it if we can't, so maybe $childTable) and include it's fields as well?
This would allow e.g. Admins to have their own data.

So, I haven't battle-tested nesting, but I actually have a nested setup in the current app I'm working on, and it's totally working as expected. If I run into any gotchas, I'll update the package of course.
If I understand correctly, you are saying you would have a users table, a User model, then a child Admin model. You need more data for admin's, so you have a admins table that is joined the users table row?
If I have it right, is that not just a polymorphic relationship? Let me know if it differs and we can talk more about it. Just can't wrap my head perfectly around it at the moment. Thanks!

Hey @calebporzio,
it certainly can be accomplished via a one to one relationship, doesn't even need to be polymorphic hence the additional data would be loaded via $modelInstance->meta->admin_only_column or similar (assuming the relationship was called meta). But that also requires me to setup another model for each child model that has it's own data, so we'd have User, Admin, AdminMeta...
I was just thinking it would be cool if using this setup any data on the child table was automatically merged in with the data from the parent table to create the final entity such that we could have
users

id
email
password
name

1
<EMAIL_ADDRESS>...
Test User

2
<EMAIL_ADDRESS>...
Admin User

admins

id
admin_only_column

2
admin only value

The package would then execute
SELECT "users"."*", "admins"."*" FROM users WHERE "users"."id" = 2
JOIN "admins" ON "users"."id" = "admins"."id";

Allowing me to use $modelInstance->admin_only_column
This is also useful in the event of say an admin only relation as I'd be able to use $modelInstance->relationName rather than having to do $modelInstance->meta->relationName.
Again, just ideas :)

Ah, thanks for clarifying. It's an interesting idea. I don't want to widen the codebase without a compelling use case, and enough people that want it though. Let's keep our eye on this feature.

I'm joining @hailwood on that feature request. In my case I have to deal with a legacy DB where I have an objects table containing general data (let say a status column, version,...) alongside a object_type column, and children tables like posts and videos with more specific data.
objects

object_id
object_type
status
version

10
video
1
1

11
post
0
1

11
video
1
2

(just to add some salt it's a composite key object_id - object_type)
videos

object_id
title
body

10
My video title
Lorem ipsum dolor sit

11
Second video
Blabla

Currently I have a very hacky way of doing the join between the table with a scope:
class ObjectScope implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        $builder->join('objects', 'objects.object_id', '=', $model->getTable() . '.object_id')
                ->where('objects.object_type', '=', $model->getMorphClass());
    }
}

And I use polymorphic relations too, but I'm really not a fan of the scope solution. Your method looks really more robust, but I still need a way to do that join.
It would be cool if I could do a Video::first()->status or a Object::find(10)->title transparently, and even cooler if I could do a $video->status = 0; $video->save();

This would be great! (And exactly what I'm looking for at the moment :) ). I'll keep watching this!

Hey @gijsbeijer - mind sharing your use case? If we get enough compelling use cases in here, maybe we'll implement it.

@calebporzio Off course!
I'm making a website that implements papers/vacancies/news sections. All of these have a lot of similar fields. They could all be named an Article, but all of these types of articles have specific fields that should not exist on the other types.
In OOP I would say I'd create a (for example) Vacancy class and Extend that from the Article class. To keep things clear I'd also want to have the same structure in the database (e.g. an articles table and a vacancies table).
Using your package I was able to extend the class keeping the functionality of the parent class. But if I could extend the attributes retrieved bij eloquent with the ones of the child class (and it would also handle the writing part) this would be great and we could leverage OOPs extending really gracefully.
Hope this answers your question!

Interesting - yeah that totally clears it up. Basically it's polymorphic relationships except the morphed classes inherit from the morphTo?

Basically yes :)

Jumping on the bandwagon here to stir up some thought.
In my use case, I could easily do direct relationships but I would like to do nested relationships just to keep the concepts clear to other devs working the projects. The middleware is setup this way so I would like the inheritance to follow suit.
User extends Model (the client)
Staff extends User (employees)
Admin extends Staff (higher level employees)
Like I said, I could easily just make Admins extend the base User but I think it would be cleaner this way.

Any advancements in this new feature? I would also be interested in using something like this.
I have a lot of models that are very similar to each other, but also have some unique data attributes.
The problem could be solved by using a schemaless column (https://github.com/spatie/laravel-schemaless-attributes) and just add the differences in this column.
The problem is that I would like to add foreign keys to some of these unique attributes to ensure data integrity.
A feature like this would clean up the codebase and make it easier to work with.

Am I correct if I assume that this thread is mainly about the automatic joins, and that Nested support is working as expected?
And with 'as expected' I mean in the Animal > Mammal > Dog example the classes are using the following traits:
Animal: HasChildren
Mammal: HasChildren, HasParent
Mammal: HasParent
Is this correct?

Hey friends! The team at Tighten has taken Parental back over and we're re-opening the issue tracker, but to give us a clean slate, I'm going to close all old issues that remain from when Caleb closed the issue tracker in 2020. If this is still an outstanding concern with the latest version of Parental, please feel free to open a new issue referencing this one.
Thank you!