En fait
Le recourant a été condamné le 24 novembre 2016 par le Tribunal de district d'Olten-Gösgen pour brigandages multiples et infractions multiples à la loi sur les stupéfiants à 20 mois de peine privative de liberté et à une amende de Fr. 150.--. Pour le traitement de son trouble psychique et de sa dépendance, le tribunal a ordonné une mesure thérapeutique institutionnelle au sens de l'art. 59 CP et a suspendu en sa faveur l'exécution de la peine privative de liberté.
Le 12 novembre 2019, le recourant a demandé à l'Office de l'application des peines et mesures du canton de Soleure (office) l'assistance judiciaire gratuite et la désignation de son avocat comme défenseur d'office, en vue de l'examen annuel de la mesure au sens de l'art. 62d CP. Le 9 décembre 2019, l'office a communiqué que le dernier examen avait eu lieu le 13 mai 2019, que le prochain interviendrait durant la même période en 2020, et que la requête serait traitée à l'ouverture de la procédure. Le 22 janvier 2020, le recourant a réitéré sa requête.
Par décision du 18 février 2020, l'office, agissant pour le Département de l'intérieur du canton de Soleure, a rejeté la requête. La procédure administrative étant en principe gratuite, l'examen de l'assistance judiciaire était superflu; en outre, aucune difficulté de fait ou de droit ne justifiait pour l'examen annuel le recours à un représentant juridique.
Le Tribunal administratif du canton de Soleure a rejeté le recours formé contre cette décision le 23 avril 2020. La requête avait été présentée pour une procédure future, avant l'ouverture de la procédure d'examen; l'office n'aurait donc pas dû entrer en matière, mais le résultat ne prêtait pas à critique.
Par recours en matière pénale, le recourant conclut à l'annulation de l'arrêt du tribunal administratif et à l'octroi de l'assistance judiciaire gratuite avec désignation d'un avocat pour l'examen de 2020. Le Tribunal administratif conclut au rejet du recours; l'office a renoncé à se déterminer.
En droit
Le recours en matière pénale est recevable contre la décision incidente rendue en dernière instance cantonale au sens de l'art. 78 al. 2 let. b LTF et de l'art. 80 LTF. Le recourant a qualité pour agir en tant que partie à la procédure au sens de l'art. 81 al. 1 let. a et b LTF, bien qu'il ne soit pas expressément mentionné comme condamné par un jugement entré en force. La question de savoir si un préjudice irréparable au sens de l'art. 93 al. 1 let. a LTF est réalisé peut demeurer ouverte. Les écritures du recourant qui ne concernent pas l'assistance judiciaire ne sont pas à examiner; la réplique déposée tardivement n'est pas prise en considération. La question de la procuration est réglée par l'écriture du 4 juin 2020.
Le grief de violation du droit d'être entendu (art. 29 al. 2 Cst.), fondé sur une motivation prétendument insuffisante et une contradiction entre le dispositif et les motifs, est rejeté. L'autorité précédente s'est penchée sur les aspects essentiels; il n'existe pas de contradiction. Le grief de violation du principe d'égalité et de traitement équitable (art. 29 al. 1 Cst.) tombe dès lors à faux.
Le recourant fait valoir que le principe de l'équité (art. 29 al. 1 Cst.) aurait été violé, car la décision sur l'assistance judiciaire ne serait prise qu'à l'audition au sens de l'art. 62d al. 1 CP. Selon la jurisprudence, il n'existe en principe pas de droit à l'assistance judiciaire gratuite d'un avocat pour des procédures futures qui ne sont pas encore ouvertes; cela vaut en particulier pour l'examen annuel d'une mesure (ATF 128 I 225 consid. 2.4.2). L'autorité…