Hi, thanks for the replie :) but yes, I'm currently working on a new project and I don't have too much time to re-work on this project.
But if you want to add a charge attack, it should be pretty easy (if everything I done work like it suppose to). Create a new state, make it inehrit from Attack. With a timer and a new class variable on player.gd, you should be able create a charged attack. Edit attack-light, play with input event is_action_pressed and is_action_released to decide when you need to charge for the medium attack or the charge one. Like when action is pressed is activated, start the timer, if the player release before the end of the timer, transit to light attack, if not, transit to you new charge attack.
For the ledge grad, I created one a another project but wasn't happy about it, But if I remember right, I created an scene with all the ledge tile and added a area 2D on it. When the player collide with, I checked is current state (like in air or falling) and make it switch the the ledge crab state. Here a pretty easefull script (I took it for tetraforce, but he doesn't use it anymore so here a link from one of my project https://github.com/Levrault/godot-maximilien-adventure/blob/d44f80256bb92bde325ff4d91e67c8cbc0d1f092/factories/Factory.gd) that could help you add you new "ledge" scene without placing them by add but by keeping it in your tilemap.
I hope it help you.