I'm offering only a partial solution which implies the use of dash to panel extension with intellihide ON.
The intellihide works awesome except it reveals the panel in overview.
The responsible is _checkIfShouldBeVisible in ~/.local/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/intellihide.js
_checkIfShouldBeVisible: function(fromRevealMechanism) {
if (Main.overview.visibleTarget || this._dtpPanel.taskbar.previewMenu.opened ||
this._panelBox.get_hover() || this._checkIfGrab()) {
return true;
}
Changing the _checkIfShouldBeVisible to
_checkIfShouldBeVisible: function(fromRevealMechanism) {
if (Main.overview.visibleTarget) {
return false;
}
else if (Main.overview.visibleTarget || this._panelBox.get_hover() || this._checkIfGrab() || this._dtpPanel.taskbar.previewMenu.opened) {
return true;
}
hides the panel from overview.
This works for gnome 3.36, 41 and I believe for all the other versions.
I don't yet know how to use intellihide to interact with the panel for the overview only and it was my main goal. As of now I'm ok with this.
EDIT:
I've found a better solution with intellihide OFF
~/.local/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/panel.js
_adjustForOverview: function()
change
this.panelBox[isShown ? 'show' : 'hide']();
to
this.panelBox[isShown ? 'hide' : 'hide']();
but now there's no nice smooth animation.. not a big deal I think