Clicking view-other-side icon of a melded permanent causes a server error
when I meld into [[Hanweir, the Writhing Township]] I got this message

Here's a new messgae

=>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.updateGame(GamePanel.java:707) at mage.client.game.GamePanel.inform(GamePanel.java:1659) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:346) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:53:14,387 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.updateGame(GamePanel.java:707) at mage.client.game.GamePanel.inform(GamePanel.java:1659) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:346) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:53:32,433 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.ask(GamePanel.java:1362) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:58:33,177 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.ask(GamePanel.java:1362) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:59:23,897 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.ask(GamePanel.java:1362) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:59:29,803 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException
Hanweir, the Writhing Township - (Gatherer) (Scryfall) (EDHREC)
Legendary Creature — Eldrazi Ooze 7/4 Trample, haste Whenever Hanweir, the Writhing Township attacks, create two 3/2 colorless Eldrazi Horror creature tokens that are tapped and attacking.
This error seems to be specifically caused by a player clicking on the sun/moon icon to see the other side of the melded permanent. Meld cards should not have the clickable icon if they do not support the view-other-side functionality.
@awjackson are you fixed the original error or just disable clickable night icon? It works fine in old days as I know.
"In old days" (before the big TDFC rewrite for MID) DFCs on the battlefield didn't have a clickable icon to see the other side. Only cards off the battlefield (in your hand, etc) did. Melded cards never exist in any zone other than the battlefield, so there was never any way to click on them.
How would seeing "the other side" of a melded card even work? It would have to show you two cards.

Screenshot from 1.4.50 showing battlefield and hand with DFCs and meld cards. None of the permanents on the battlefield (regular DFC werewolves both sides, meldable card, melded card) have an icon, and the meldable card in hand doesn't have one either. Only the regular DFC in hand has an icon.
@awjackson well, I see... Then I'll start implementing it.
Even if you want to implement clicking to view the other side of melded cards, note that this change is correct according to the Comprehensive Rules. Meld cards are not DFCs and they do not transform. They exile themselves and then the melded version enters the game as a completely new object.
713.1b A meld card isn’t a double-faced card. Its back face can’t be cast or put onto the battlefield, and it can’t transform or enter the battlefield transformed. (See rule 712, “Double-Faced Cards.”)
Yes, I know. MDFC also non transformable cards, so xmage supports such things already (diff logic for GUI and mtg rules/engine).