Faits :
A.
Par jugement du 19 novembre 2014, le Tribunal de police de l'arrondissement de La Côte, statuant sur opposition à l'ordonnance pénale du 12 mars 2014, a notamment condamné A._ pour voies de fait, injure et violation grave des règles de la circulation routière et libéré ce dernier des chefs de menaces et menaces qualifiées. Il a également libéré X._ des chefs de menaces et de menaces qualifiées à l'endroit de A._, rejeté les conclusions de X._ tendant à l'allocation d'une indemnité selon l'art. 429 al. 1 let. a CPP et mis les frais de procédure, arrêtés à 5'575 fr., à raison de 2'000 fr. à la charge de A._ et de 500 fr. à la charge de X._, le solde étant laissé à la charge de l'Etat.
B.
Saisie d'un appel de X._ portant sur la seule question des frais et de l'indemnité, la Cour d'appel pénale du Tribunal cantonal vaudois l'a rejeté par jugement du 20 janvier 2015 et a confirmé la décision de première instance, mettant les frais d'appel de 770 fr. à la charge de la recourante.
C.
X._ forme un recours en matière pénale auprès du Tribunal fédéral contre la décision cantonale et conclut à sa réforme en ce sens que l'Etat de Vaud lui verse un montant de 2'600 fr. au titre d'indemnité selon l'art. 429 al. 1 let. a CPP pour la procédure de première instance et une indemnité de 1'323 fr. pour la procédure cantonale d'appel, les frais étant laissés à la charge de l'Etat. Elle sollicite en outre l'octroi de l'assistance judiciaire.
Tant le Ministère public que la cour cantonale ont renoncé à se déterminer, se référant à la décision entreprise.
Considérant en droit :
1.
La recourante invoque une violation des art. 429 al. 1 let. a et 430 al. 1 let. a CPP et estime qu'une indemnité pour les dépenses occasionnées par l'exercice raisonnable de ses droits lui est due, tant pour la procédure de première instance que pour la procédure d'appel.
1.1. L'art. 426 al. 2 CPP prévoit que lorsque la procédure fait l'objet d'une ordonnance de classement ou que le prévenu est acquitté, tout ou partie des frais de procédure peuvent être mis à sa charge s'il a, de manière illicite et fautive, provoqué l'ouverture de la procédure ou rendu plus difficile la conduite de celle-ci. La condamnation d'un prévenu acquitté à supporter tout ou partie des frais doit respecter la présomption d'innocence, consacrée par les art. 32 al. 1 Cst. et 6 par. 2 CEDH. Celle-ci interdit de rendre une décision défavorable au prévenu libéré en laissant entendre que ce dernier serait néanmoins coupable des infractions qui lui étaient reprochées. Une condamnation aux frais n'est ainsi admissible que si le prévenu a provoqué l'ouverture de la procédure pénale dirigée contre lui ou s'il en a entravé le cours. A cet égard, seul un comportement fautif et contraire à une règle juridique, qui soit en relation de causalité avec les frais imputés, entre en ligne de compte.
Pour déterminer si le comportement en cause est propre à justifier l'imputation des frais ou le refus d'une indemnité, le juge peut prendre en considération toute norme de comportement écrite ou non écrite résultant de l'ordre juridique suisse pris dans son ensemble, dans le sens d'une application par analogie des principes découlant de l'art. 41 CO. Le fait reproché doit constituer une violation claire de la norme de comportement (ATF 119 Ia 332 consid. 1b p. 334 et les références citées). Il doit en outre se trouver dans une relation de causalité adéquate avec l'ouverture de l'enquête ou les obstacles mis à celle-ci (ATF 116 Ia 162 consid. 2c p. 170 s. et plus récemment arrêt 6B_832/2014 du 24 avril 2015 consid. 1.2). Une condamnation aux frais ne peut se justifier que si, en raison du comportement illicite du prévenu, l'autorité était légitimement en droit d'ouvrir une enquête. Elle est en tout cas exclue lorsque l'autorité est intervenue par excès de zèle, ensuite d'une mauvaise analyse de la situation ou par précipitation (ATF 116 Ia 162 consid. 2c p. 171).
1.2. A teneur de l'art. 429 al. 1 let. a CPP, le prévenu acquitté totalement ou en partie ou au bénéfice d'une ordonnance de classement, a droit à une indemnité pour les dépenses occasionnées par l'exercice raisonnable de ses droits de procédure.
Aux termes de l'art. 430 al. 1 let. a CPP, l'autorité pénale peut réduire ou refuser l'indemnité ou la réparation du tort moral lorsque le prévenu a provoqué illicitement et fautivement l'ouverture de la procédure ou a rendu plus difficile la conduite de celle-ci. Cette disposition est le pendant de l'art. 426 al. 2 CPP en matière de frais. Une mise à charge des frais selon l'art. 426 al. 1 et 2 CPP exclut en principe le droit à une indemnisation. La question de l'indemnisation doit être tranchée après la question des frais. Dans cette mesure, la décision sur les frais préjuge de la question de l'indemnisation. Il en résulte qu'en cas de condamnation aux frais, il n'y a pas lieu d'octroyer de dépens ou de réparer le tort moral alors que, lorsque les frais sont supportés par la caisse de l'Etat, le prévenu dispose d'un droit à une indemnité pour ses frais de défense et son dommage économique ou à la réparation du tort moral (ATF 137 IV 352 consid. 2.4.2 p. 357). Lorsque la condamnation aux frais n'est que partielle, la réduction de l'indemnité devrait s'opérer dans la même mesure (cf. YVONA GRIESSER, in Kommentar zur Schweizerischen Strafprozessordnung, Donatsch/Hansjakob/Lieber [éd.], 2014, n° 2 et 4 ad art. 430 CPP; MIZEL/RÉTORNAZ, in Commentaire romand, Code de procédure pénale suisse, 2011, n° 5 ad art. 430 CPP).
1.3. Se fondant sur l'état de fait établi en première instance, la cour cantonale a retenu que la recourante avait bel et bien proféré des menaces contre son ex-compagnon, lesquelles n'avaient toutefois pas alarmé ou effrayé ce dernier. Laissant ouverte la question de savoir si l'infraction de menaces était réalisée (à tout le moins sous l'angle de la tentative) en raison de l'interdiction de la reformatio in pejus, la cour cantonale a considéré que les propos inquiétants tenus par la recourante constituaient des atteintes illicites à la personnalité au sens des art. 28 ss CC. Compte tenu de ce comportement civilement répréhensible, elle a confirmé la condamnation de la recourante au paiement d'une partie des frais judiciaires. Sur cette base et se fondant sur la jurisprudence relative à l'acquittement partiel, la cour cantonale a par ailleurs refusé toute indemnisation au sens de l'art. 429 CPP.
1.4. Dans la mesure où la réglementation relative à l'indemnisation suit en principe celle relative aux frais, il appartenait à la cour cantonale d'accorder une indemnité partielle à la recourante, réduite dans la même proportion que celle qui a présidé à la répartition des frais, en l'absence de motif permettant d'exclure l'octroi de toute indemnité. Contrairement à ce que laisse entendre le jugement entrepris, la recourante a bénéficié d'un acquittement total, de sorte que le refus de toute indemnité ne saurait se fonder sur la jurisprudence relative à l'acquittement partiel. Aussi, la cour cantonale a violé l'art. 429 CPP.
2.
Le recours doit être admis, le jugement attaqué annulé et la cause renvoyée à la cour cantonale afin qu'elle statue sur l'indemnité due à la recourante pour la procédure de première instance ainsi que sur les frais et indemnité de deuxième instance. Le canton de Vaud est dispensé de frais judiciaires (art. 66 al. 4 LTF). Il versera des dépens au mandataire de la recourante qui obtient gain de cause (art. 68 al. 1 LTF). Cela rend sans objet la requête d'assistance judiciaire.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis, le jugement attaqué est annulé et la cause renvoyée à la cour cantonale pour nouvelle décision.
2.
Il est statué sans frais.
3.
Le canton de Vaud versera au conseil de la recourante une indemnité de 2'000 fr. à titre de dépens pour la procédure devant le Tribunal fédéral.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 29 janvier 2016
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Klinke