Faits: Faits: A. Le 13 juillet 2004, le Juge d'instruction de l'arrondissement de Lausanne a décerné un mandat d'arrêt à l'encontre de X._, ressortissant albanais prévenu d'infraction à la LStup. X._ a été placé immédiatement en détention préventive à la prison du Bois-Mermet. Le 9 septembre 2004, X._ a présenté au Juge d'instruction une demande de libération immédiate. Le 13 septembre 2004, le Juge d'instruction a rejeté la demande. Cette décision indique sa notification au prévenu et à son défenseur. Le 1er octobre 2004, X._ a formé un recours auprès du Tribunal d'accusation du Tribunal cantonal du canton de Vaud. Il s'est plaint d'un déni de justice formel, en exposant n'avoir pas reçu de réponse à sa demande de libération du 9 septembre 2004. Il a conclu à sa libération immédiate. Le 8 octobre 2004, le Tribunal d'accusation a écarté le recours, faute de compétence pour en connaître. Pour le surplus, traité comme réclamation contre les actes du Juge d'instruction au sens de l'art. 183 CPP/VD, il devait de toute manière être rejeté. Le 8 octobre 2004, le Tribunal d'accusation a écarté le recours, faute de compétence pour en connaître. Pour le surplus, traité comme réclamation contre les actes du Juge d'instruction au sens de l'art. 183 CPP/VD, il devait de toute manière être rejeté. B. Agissant par la voie du recours de droit public, X._ demande principalement au Tribunal fédéral d'annuler l'arrêt du 8 octobre 2004, d'ordonner sa libération immédiate et de renvoyer la cause au Tribunal d'accusation pour nouvelle décision sur les frais et dépens au sens des considérants, subsidiairement pour prompte décision. Il requiert l'assistance judiciaire. Il invoque les art. 9 et 29 Cst., ainsi que l'art. 5 par. 4 CEDH. Le Tribunal d'accusation se réfère à son arrêt, le Juge d'instruction aux décisions attaquées. Le Ministère public propose le rejet du recours.