So I just got hit with this issue.
This is in 1.0.5.1028, running Kerbal Engineer Redux, Kerbal Alarm Clock, Docking Alignment and Transfer Window Planner.
I just launched a massive station (DSS) off to Duna (four attempts) reverting to a save each time. It was mostly about getting the fuel load right.
Once I got it out of Kerbin SOI, I did a manual save and then switched back to my space station (KSS) orbiting Kerbin.
I docked the autonomous fuel tank that I had been running between the DSS and KSS and then did a quick save.
And then, I tried to release the grappling drone from the KSS and nothing happened. It was still attached. "Release" from the contextual menu was gone but it still acted as part of the station.
I did a quick load, same.
I restarted KSP, same.
I then decided I would dock with the drone (docking ports on either side of it) and pull it off.
That's when I discovered that all docking ports of all the craft docked to the station acted the same. Right-click, "Undock" and nothing.
I also discovered that my manual save post-DSS launch didn't actually get saved. Fortunely, I did have one quick save that I've been working on to fix this.
I had never gone into the save files before. So this was a learning experience.
Search revealed posts by Claw and roscoe_jones regarding the issues in 0.23.5 and 0.24.
Once I understood parts of the save file, my problem was simpler.
The DSS ports were fine. This was just on the KSS. Every docked pair lost their pairing ("state = Docked (docker)" & "state = Docked (dockee)") and reverted to "state = Ready". The grappling drone's GrappleNode did the same.
name = ModuleGrappleNode
isEnabled = True
stagingEnabled = True
state = Ready
dockUId = 834702479
PART
{
name = dockingPort2
cid = 4293320786
uid = 3518090815 <- Had to find Part.uid 1565750046 which had MODULE.ModuleDockingNode.dockUId 3518090815 and changed its state to "Docked (dockee)"
mid = 3223882772
launchID = 144
parent = 6
position = -2.84053385257721E-07,-2.41715669631958,2.53406381607056
rotation = 0.7071052,-0.001546118,0.001546407,-0.7071052
mirror = 1,1,1
symMethod = Radial
istg = 0
dstg = 0
sqor = -1
sepI = 3
sidx = -1
attm = 0
srfN = srfAttach, -1
attN = top, -1
attN = bottom, 151
mass = 0.05
temp = 112.390777343596
tempExt = 112.393421897299
tempExtUnexp = 239.754657632191
expt = 0.5
state = 0
connected = True
attached = True
flag = Squad/Flags/default
rTrf = dockingPort2
modCost = 0
EVENTS
{
}
ACTIONS
{
}
PARTDATA
{
}
MODULE
{
name = ModuleDockingNode
isEnabled = True
crossfeed = True
stagingEnabled = False
state = Docked (docker) <-- Changed from "Ready"
dockUId = 1565750046
dockNodeIdx = 0
Finding the pairs was the laborious part. Using the crossfeed status change was pointless for me because all the ports on the station had switched states.
So the abbreviated version is: (1) find the DOCKEDVESSEL that won't undock, (2) find the docking pairs and (3) change the pair's states to "Docked (docker)" and "Docked (dockee)"
PART
{
name = dockingPort2
...
(2) uid = (part number of the docking port)
...
MODULE
{
name = ModuleDockingNode
...
(3) state = Needs to be "Docked (docker)" and the other "Docked (dockee)"
(2) dockUId = (part number of the other docking port)
...
EVENTS
{
...
}
ACTIONS
{
...
}
(1) DOCKEDVESSEL
{
vesselName =
An easy fix after FOUR HOURS of full immersion into the structure of the save file.
Why this happened is still a mystery.