OK - may have found the issue. Does the file D_GCal3_UI7.json exist on your openluup system ? This defines the UI.
There is some code (in 2.7 and not in 3.0) that tests for vera UI7 vs UI5 that likely behaves differently (maybe meaningless) in openluup. I'll check with the openluup forum .... Although my suspicion is that this code does nothing in openluup, in which case the UI definition did not change on your system .....
if ( luup.version_branch == 1 and luup.version_major == 7 and GCV.UI7Check == "false") then
GCV.UI7Check = "true"
luup.attr_set("device_json", "D_GCal3_UI7.json", lul_device)
There is no D_GCal3_UI7.json on my system, only the D_GCal3.json.
I think that's the way it was meant to be, since the Alternate App Store downloaded directly from your github GCal3 which does not include the UI7.json version.
I don't believe the updated .lua file did anything, because I
thought it worked briefly in my sequence of steps below:
1. downloaded your updated .lua file from your post.
2. Using WinSCP I made a backup file of the existing file (called GCal3Backup.lua) in the cmh-ludl/
3. Using WinSCP I uploaded your new GCal3.lua (overwriting the existing) to the cmh-ludl/ folder.
4. Reloaded the Luup engine.
5. Opened the control panel of GCal3 & clicked to ARM then clicked to CHECK. It
worked here so the new .lua file was working at this moment.
I didn't notice until a day or so later that the GCal3 icon was gone, then I noticed the control panel was blank.
I will experiment further.
Thanks again,
Chris