Faits:
Faits:
A. A._, nettoyeuse dans un cycle d'orientation de Fribourg, a été interpellée le 26 novembre 2003 à 17h à Fribourg, en possession d'un natel signalé volé et d'un porte-monnaie trouvé dans une salle de classe. Elle a été placée en garde à vue jusqu'au lendemain à 14h 40.
A. A._, nettoyeuse dans un cycle d'orientation de Fribourg, a été interpellée le 26 novembre 2003 à 17h à Fribourg, en possession d'un natel signalé volé et d'un porte-monnaie trouvé dans une salle de classe. Elle a été placée en garde à vue jusqu'au lendemain à 14h 40.
B. Le 23 décembre 2003, A._ a déposé une requête d'indemnité auprès de la Chambre pénale du Tribunal cantonal fribourgeois. Selon elle, aucune des conditions posées pour une garde à vue n'était réalisée; elle se plaignait en outre des traitements infligés par la police à cette occasion. Une indemnité de 1000 fr. était requise, ainsi qu'une participation à ses frais d'avocat.
Par arrêt du 12 février 2004, la Chambre pénale a déclaré la demande irrecevable. L'instruction ouverte pour vol, sur plainte du directeur du CO, n'était pas encore terminée. Il appartenait au Juge d'instruction de rendre une décision sur la suite de la procédure, et la requérante ne pourrait agir qu'après notification de cette décision. Les frais de procédure, soit 282 fr., ont été mis à la charge de la requérante.
Par arrêt du 12 février 2004, la Chambre pénale a déclaré la demande irrecevable. L'instruction ouverte pour vol, sur plainte du directeur du CO, n'était pas encore terminée. Il appartenait au Juge d'instruction de rendre une décision sur la suite de la procédure, et la requérante ne pourrait agir qu'après notification de cette décision. Les frais de procédure, soit 282 fr., ont été mis à la charge de la requérante.
C. A._ forme un recours de droit public contre ce dernier arrêt, dont elle demande l'annulation. Elle soutient que l'un des juges de la Chambre pénale, B._, était l'auteur d'une plainte pénale pour le vol d'un natel, et aurait dû se récuser. Elle se plaint de ce que le porte-monnaie ait été laissé à dessein dans le but de la piéger, de sorte que les preuves recueillies à ce sujet seraient illégales. Elle estime enfin qu'une décision préalable de non-lieu ne serait pas exigée lorsque le requérant subit, comme en l'occurrence, un préjudice important; dans le cas contraire, la cour cantonale devait suspendre le traitement de la demande, et non la déclarer irrecevable avec suite de frais. Une demande d'assistance judiciaire a été déposée avec le recours.
La cour cantonale relève que la plainte pénale déposée par B._ l'a été contre inconnu, qu'elle ne figurait pas au dossier qui lui a été soumis, ni dans le rapport de dénonciation de la police. Le Ministère public a renoncé à se déterminer.

Le Tribunal fédéral considère en droit:
Le Tribunal fédéral considère en droit:
1. L'arrêt attaqué constate l'irrecevabilité d'une requête en indemnisation, jugée prématurée. La recourante aura certes la possibilité de formuler une nouvelle requête en temps utile, mais cela n'enlève pas à la décision attaquée son caractère final. Le recours est formé en temps utile (art. 89 al. 1 OJ) et son auteur a manifestement qualité pour agir (art. 88 OJ). Le recours de droit public n'a qu'un effet cassatoire. La recourante ne saurait par conséquent demander qu'il soit statué sur les frais et dépens de l'instance cantonale.
1. L'arrêt attaqué constate l'irrecevabilité d'une requête en indemnisation, jugée prématurée. La recourante aura certes la possibilité de formuler une nouvelle requête en temps utile, mais cela n'enlève pas à la décision attaquée son caractère final. Le recours est formé en temps utile (art. 89 al. 1 OJ) et son auteur a manifestement qualité pour agir (art. 88 OJ). Le recours de droit public n'a qu'un effet cassatoire. La recourante ne saurait par conséquent demander qu'il soit statué sur les frais et dépens de l'instance cantonale.
2. La recourante invoque les dispositions relatives au droit à un juge indépendant et impartial (art. 30 al. 1 Cst. et 6 par. 1 CEDH), ainsi que l'art. 53 let. a OJ/FR, qui impose la récusation d'un magistrat intéressé au jugement d'une affaire. Elle relève que l'un des membres de la Chambre pénale, le juge B._, aurait déposé au nom de sa fille une plainte pénale "contre la recourante pour vol".
2.1 La garantie d'un tribunal indépendant et impartial instituée par l'art. 6 par. 1 CEDH, à l'instar de la protection conférée par l'art. 30 al. 1 Cst. (la recourante ne soutient pas que les dispositions correspondantes du droit cantonal de procédure auraient une portée plus large), permet au plaideur d'exiger la récusation d'un juge dont la situation ou le comportement est de nature à faire naître un doute sur son impartialité; elle tend notamment à éviter que des circonstances extérieures à la cause ne puissent influencer le jugement en faveur ou au détriment d'une partie. Elle n'impose pas la récusation seulement lorsqu'une prévention effective du juge est établie, car une disposition interne de sa part ne peut guère être prouvée; il suffit que les circonstances objectivement constatées (abstraction faite des impressions purement subjectives) donnent l'apparence de la prévention et fassent redouter une activité partiale du magistrat (<ref-ruling> consid. 3a p. 122 et les arrêts cités). Un magistrat ne saurait en principe siéger lorsqu'un litige l'oppose à l'une des parties qui se présentent devant lui (<ref-ruling> consid. 3c p. 141).
2.2 En l'occurrence, il ressort du dossier que le juge B._ a effectivement déposé, le 11 septembre 2003, une plainte pénale contre inconnu pour le vol d'un natel dont sa fille avait été victime le 9 septembre précédent au cycle d'orientation de Fribourg. La cour cantonale indique que la plainte ne se trouvait pas dans le dossier qui lui a été remis, et qu'elle ne figure pas non plus dans le rapport de dénonciation du 22 mars 2003. Il semble ressortir d'une lettre du juge d'instruction du 8 avril 2004 que cette pièce devait se trouver dans une partie du dossier non encore numérotée à cette époque. On peut en déduire que la plainte pénale devait en définitive être intégrée au dossier de la procédure dirigée contre la recourante. Elle apparaît d'ailleurs en lien étroit avec les faits qui lui sont reprochés. Dès lors, quand bien même la plainte ne figurait pas au dossier remis à la Chambre pénale, le magistrat pouvait se rendre compte que les faits à l'origine de la garde à vue étaient analogues à ceux qu'il avait dénoncés et que sa plainte, bien que formée contre inconnu, mettait également en cause la recourante. Dans ces circonstances, il existe une apparence de prévention qui aurait dû conduire à la récusation du juge B._.
2.2 En l'occurrence, il ressort du dossier que le juge B._ a effectivement déposé, le 11 septembre 2003, une plainte pénale contre inconnu pour le vol d'un natel dont sa fille avait été victime le 9 septembre précédent au cycle d'orientation de Fribourg. La cour cantonale indique que la plainte ne se trouvait pas dans le dossier qui lui a été remis, et qu'elle ne figure pas non plus dans le rapport de dénonciation du 22 mars 2003. Il semble ressortir d'une lettre du juge d'instruction du 8 avril 2004 que cette pièce devait se trouver dans une partie du dossier non encore numérotée à cette époque. On peut en déduire que la plainte pénale devait en définitive être intégrée au dossier de la procédure dirigée contre la recourante. Elle apparaît d'ailleurs en lien étroit avec les faits qui lui sont reprochés. Dès lors, quand bien même la plainte ne figurait pas au dossier remis à la Chambre pénale, le magistrat pouvait se rendre compte que les faits à l'origine de la garde à vue étaient analogues à ceux qu'il avait dénoncés et que sa plainte, bien que formée contre inconnu, mettait également en cause la recourante. Dans ces circonstances, il existe une apparence de prévention qui aurait dû conduire à la récusation du juge B._.
3. Le recours de droit public doit par conséquent être admis pour ce motif. L'arrêt attaqué est annulé, sans qu'il y ait à examiner le mérite des arguments soulevés sur le fond. La recourante, qui obtient gain de cause, a droit à une indemnité de dépens, à la charge du canton de Fribourg. Cela rend sans objet sa demande d'assistance judiciaire. Conformément à l'art. 156 al. 2 OJ, il n'est pas perçu d'émolument judiciaire.

Par ces motifs, vu l'art. 36a OJ, le Tribunal fédéral prononce:
Par ces motifs, vu l'art. 36a OJ, le Tribunal fédéral prononce:
1. Le recours est admis et l'arrêt attaqué est annulé.
1. Le recours est admis et l'arrêt attaqué est annulé.
2. Une indemnité de dépens de 1000 fr. est allouée à la recourante, à la charge du canton de Fribourg. La demande d'assistance judiciaire est sans objet.
2. Une indemnité de dépens de 1000 fr. est allouée à la recourante, à la charge du canton de Fribourg. La demande d'assistance judiciaire est sans objet.
3. Il n'est pas perçu d'émolument judiciaire.
3. Il n'est pas perçu d'émolument judiciaire.
4. Le présent arrêt est communiqué en copie au mandataire de la recourante, au Ministère public et à la Chambre pénale du Tribunal cantonal du canton de Fribourg.
Lausanne, le 3 mai 2004
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le président: Le greffier: