Faits: A. Par jugement du 23 janvier 2012, le Tribunal correctionnel de l'arrondissement de la Broye et du Nord vaudois a condamné A._ à 120 jours de détention pour divers délits contre le patrimoine et contravention à la LStup, et l'a libéré des autres chefs de prévention (lésions corporelles, tentative de remise de substances nocives à des enfants, vol au préjudice d'un proche, dommages à la propriété, injure, menaces, tentative de viol et de contrainte sexuelle, infraction à l'art. 19bis LStup). Ce jugement comporte en outre les dispositions suivantes: X. arrête les frais de justice à la charge de A._ à 17'261 fr. 30; XIII. alloue à A._, à la charge de l'Etat, une indemnité pour tort moral de 72'000 fr. (septante-deux mille francs) avec intérêt à 5% l'an dès le 16 janvier 2012. B. Le 24 février 2012, A._ a déposé une déclaration d'appel motivée: déduction faite de sa condamnation, il avait été détenu 290 jours de trop, et non 288 comme le retenait le jugement; l'indemnité pour détention injustifié devait s'élever à 275 fr. par jour - contre 250 selon l'arrêt attaqué - de sorte que l'indemnisation devait s'élever au total à 79'750 fr. Il demandait par ailleurs que les frais afférents à la détention ainsi qu'à l'expertise soient laissés à la charge de l'Etat. Le Ministère public a lui aussi formé appel, considérant que le condamné n'avait (compte tenu d'autres condamnations intervenues en 2012) effectué qu'un jour de détention en trop et que l'indemnité journalière allouée de ce chef devait se limiter à 250 fr. C. Le 31 mai 2012, après avoir pris connaissance de la composition de la Cour d'appel pénale du Tribunal cantonal vaudois, A._ a requis la récusation de sa présidente, B._. Il relevait que cette dernière avait été élue juge sur la liste de l'Union démocratique du centre (UDC); or, ce parti préconisait un durcissement massif du droit pénal à l'égard des étrangers et s'opposait notamment à l'indemnisation des étrangers obtenant gain de cause en justice. La magistrate en cause ayant refusé sa récusation, la demande a été transmise à la Cour d'appel pénale - dans une autre composition - qui, par arrêt daté du 5 juillet 2012, l'a rejetée. La simple affiliation d'un juge à un parti politique ne constituait pas un motif de récusation. Les critiques formulées par l'UDC à l'encontre des juges, afin de justifier des modifications légales ou constitutionnelles, attestaient au contraire de l'indépendance des juges en général. Les mesures d'instruction requises par A._ ont été jugées sans pertinence. D. Par acte du 13 août 2012, A._ forme un recours en matière pénale par lequel il demande la réforme de l'arrêt cantonal, en ce sens que sa demande de récusation est admise et qu'un nouveau président de la Cour d'appel pénale est désigné. Il requiert l'assistance judiciaire, ainsi que la suspension de la procédure d'appel au titre de l'effet suspensif. Préalablement, il demande l'administration de certaines preuves, soit des déterminations de la magistrate concernée au sujet de ses relations avec l'UDC. La Cour d'appel pénale se réfère à son arrêt. Le Ministère public conclut au rejet du recours et de la demande d'assistance judiciaire. La Présidente se réfère à ses précédentes déterminations, en affirmant que son appartenance politique ne joue aucun rôle dans ses décisions. La demande de suspension de la procédure d'appel a été admise par ordonnance du 20 août 2012. Dans ses dernières observations, du 19 septembre 2012, le recourant a persisté dans ses griefs et conclusions. 