This is a bug in CoreRPG itself, not specifically FGU, but I couldn't find a place to report CoreRPG-specific bugs and just wanted to provide as an FYI.

The logic in manager_gmidentity.lua causes existsIdentity() to return false for all identities other than the GM identity. This is because addIdentity updates the _tIdentities table using the value of bIsGM as the value, while existsIdentity returns true only if _tIdentities[name] is truthy.

As a result, identities added via GmIdentityManager.addIdenity(name, false) will always return false from GmIdentityManager.existsIdentity(name).

It is not a major issue for extension development as you can work-around by implementing your own identity manager and directly manipulating the chat.speaker combobox control, but it does cause a minor bug in the combat tracker in CoreRPG itself.

The combat tracker issue is caused by the "Chat: Set GM voice to active CT" option along with the issue with existsIdentity(). When manager_combat.lua changes the active node in the combat tracker, if the CTAV option is enabled, it will use the output from existsIdentity() to determine whether to set the value of sActiveCT to later remove from the identities list when the next entry is activated.

The bug here is that, because existsIdentity() always returns false, CombatManager.addGMIdentity() always sets the value of sActiveCT, so the identity will be removed from the identities list after its action regardless of whether it was a pre-existing identity, or added automatically via the CATV option.

You can reproduce by manually activating a number of identities, then adding them to the combat tracker and cycling through the turn order with the CATV (Chat: Set GM voice to active CT) option enabled. All of the identities will be removed from the identities list as the turn order cycles, even though all were manually activated.