The title of the partner is restricted with a context that will change in the onchange_type. Having twice the same field will not work well.
Remove the invisible attribute as the domain is handled by the domain.
<group col="4">
<field name="name"/>
<field name="shortcut"/>
- <field name="domain"/>
</group>
</form>
</field>
<field name="mobile"/>
<field name="fax"/>
<field name="email" widget="email"/>
- <field name="title" domain="[('domain','=','contact')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',True)]}" context="{'default_domain': 'contact'}"/>
- <field name="title" domain="[('domain','=','partner')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',False)]}" context="{'default_domain': 'partner'}"/>
+ <field name="title" domain="[('domain', '=', 'contact')]" options='{"no_open": True}'/>
</group>
</group>