Faits :
A.
Par contrat de bail à loyer prenant effet le 1 er août 2006, A._ (ci-après: le bailleur) a cédé à B._ (ci-après: la locataire) l'usage de deux appartements de deux pièces aux premier et deuxième étages d'un immeuble situé à Aigle (VD). Le loyer mensuel net était de 1'140 fr., auquel s'ajoutaient 160 fr. d'acompte pour les frais de chauffage et d'eau chaude. La locataire s'est engagée à "garanti[r] l'accès à l'appartement du 2 ème étage pour des travaux de création de deux chambres sous le toit (combles) ".
Le 6 juillet 2011, la locataire s'est plainte au bailleur de ce que le mur du salon était gorgé d'eau et s'effritait en raison d'une probable infiltration d'eau depuis la toiture. Elle a demandé une remise en état.
Par transaction du 6 mars 2012 passée devant l'autorité de conciliation, les parties ont convenu de fixer le loyer mensuel net à 1'120 fr. dès le 1 er août 2012; le bailleur s'est par ailleurs engagé à supprimer les infiltrations d'eau et à assainir les murs dégradés par ces infiltrations sur les deux étages, dans un délai de trois mois.
En janvier 2013, deux architectes mandatés par la locataire ont constaté la présence de nombreuses zones humides sur les murs et les planchers des locaux, voire de la pourriture (champignons) et le décollement des enduits de fond. Ils ont imputé ces problèmes à l'état des ferblanteries et de la couverture de la toiture.
Le 19 novembre 2013, la locataire a mis le bailleur en demeure de remédier aux problèmes d'humidité dans un délai de trente jours, faute de quoi elle consignerait le loyer. Le 30 décembre 2013, elle a effectivement consigné le loyer brut afférent au mois de janvier 2014.
B.
B.a. La locataire a cité le bailleur en conciliation par requête du 6 janvier 2014.
La commission de salubrité de la commune d'Aigle a visité les locaux et le galetas de l'immeuble le 28 février 2014. Dans son rapport du 14 mars 2014, elle a confirmé l'existence des dégâts d'eau invoqués par la locataire, qu'elle a attribués au mauvais état de la ferblanterie et aux nombreux jours constatés entre les tuiles.
La locataire a déposé une demande le 27 mars 2014 devant le Tribunal des baux du canton de Vaud. Dans ses dernières conclusions, elle a exigé que cette autorité ordonne au bailleur de faire effectuer sans délai les travaux nécessaires pour mettre fin aux infiltrations d'eau puis de remettre en état les murs endommagés, respectivement que l'autorité saisie réduise le loyer mensuel net de 40% dès le début du contrat (1 er août 2006) et condamne le bailleur à restituer les loyers versés en trop, les montants dus étant "déconsignés" en faveur de la locataire.
Le bailleur a conclu au rejet de l'action. Il a opposé en compensation une créance de 30'860 fr. correspondant au manque à gagner prétendument subi pour avoir été empêché de créer deux chambres dans les combles.
B.b. Le contrat de bail a pris fin le 31 juillet 2014, après que le bailleur eut résilié celui-ci et que l'autorité de conciliation eut émis le 16 mai 2012 une proposition de jugement qui est entrée en force. Les appartements ont été restitués le 25 juillet 2014.
B.c. Statuant par jugement du 5 septembre 2014, la Présidente du Tribunal des baux a constaté que la conclusion I tendant à l'élimination des défauts était privée d'objet. Elle a réduit le loyer mensuel net de 30% pour la période du 6 juillet 2011 au 31 juillet 2014. En conséquence, elle a condamné le bailleur à payer 12'454 fr. 85 à la locataire à titre de loyers versés en trop compte tenu de la réduction accordée. Enfin, elle a ordonné que les loyers consignés soient entièrement libérés en faveur de la locataire, en paiement partiel du montant dû.
La Présidente a constaté en fait que deux des quatre pièces et une des deux cuisines étaient touchées par des infiltrations d'eau. Elle a notamment relevé que dans le salon de l'appartement au premier étage, un des angles était fortement atteint; le plâtre s'était effrité et était tombé par plaques sur quasiment toute la hauteur du mur. Des taches de moisissure oranges étaient apparues. En outre, certaines planches du plafond s'étaient affaissées au centre du salon, de sorte que des fuites d'eau survenaient en cas d'intempéries. Dans l'appartement du deuxième étage, des cloques et traces de moisissure oranges entachaient toute la hauteur d'un des murs du salon. Des traces de coulure d'eau brunâtres s'étendaient sur toute la hauteur d'un autre mur de cette pièce, sur une largeur de plus d'un mètre. Par ailleurs, au plafond de la cuisine se trouvait un tuyau d'évacuation d'une ancienne cheminée par lequel s'écoulait de l'eau en cas d'averse. Une odeur d'humidité était perceptible dans ces pièces. La locataire devait constamment prendre des dispositions en plaçant des récipients aux deux endroits où s'écoulaient des fuites d'eau en cas de pluie ou fonte de neige. L'intensité des nuisances variait en fonction des conditions climatiques.
B.d. Le bailleur a déféré cette décision à la Cour d'appel civile du Tribunal cantonal vaudois, qui l'a confirmée par arrêt du 4 juin 2015.
C.
Le 20 août 2015, le bailleur, agissant par son avocat, a saisi le Tribunal fédéral d'un recours constitutionnel subsidiaire, dans lequel il requiert à titre principal que le loyer des deux appartements ne soit pas réduit et que les loyers consignés soient entièrement libérés en sa faveur, toute autre conclusion de la locataire étant rejetée. Subsidiairement, il conclut à ce que le loyer soit réduit de 10% au maximum et à ce que sa dette soit compensée avec la créance qu'il détient contre la locataire, les loyers consignés étant libérés en sa faveur. Le recourant a par ailleurs demandé l'effet suspensif.
La locataire intimée a déposé une réponse concluant au rejet du recours. L'autorité précédente s'est référée à son arrêt.
Par courrier du 14 septembre 2015, le conseil du bailleur a fait savoir qu'il avait résilié son mandat.
La présidente de la cour de céans a informé les parties par lettre du 22 septembre 2015 qu'elle n'ordonnait pas d'échange d'écritures supplémentaire; les éventuelles observations devaient être déposées jusqu'au 7 octobre 2015.
A cette date, le bailleur a déposé diverses pièces, une "liste d'explications" signée en son nom propre et une copie de son mémoire du 20 août 2015 annotée de sa main, modifiant notamment les conclusions. Il requiert désormais qu'aucune réduction de loyer ne soit accordée, que les loyers consignés soient libérés en sa faveur (référence étant faite à une poursuite du 9 septembre 2015) et que la locataire soit condamnée à payer 2'608 fr. pour les charges et l'électricité. A titre subsidiaire, il conclut à ce que la dette de 34'080 fr. dont la locataire lui est redevable "reste ouverte" et à ce que le solde des loyers consignés soit entièrement libéré en sa faveur (référence étant faite à une poursuite du 9 septembre 2015).
La locataire s'est déterminée.
L'effet suspensif a été accordé par ordonnance présidentielle du 27 octobre 2015.

Considérant en droit :
1.
1.1. La valeur litigieuse minimale de 15'000 fr. requise pour les conflits de droit du bail à loyer n'est pas atteinte (<ref-law>), étant précisé que le montant de la créance invoquée par la partie demanderesse détermine la valeur litigieuse de la demande, y compris lorsque le défendeur oppose en compensation une créance contestée d'un montant supérieur (cf. <ref-ruling>). Est donc seule ouverte la voie du recours constitutionnel (<ref-law>).
Ce recours subsidiaire peut être formé uniquement pour violation des droits constitutionnels (<ref-law>), grief soumis à une exigence de motivation stricte (<ref-law> en lien avec l'<ref-law>) : le recourant doit désigner le droit constitutionnel dont il se prévaut et exposer de manière claire et circonstanciée, si possible documentée, en quoi consiste sa violation (<ref-ruling> consid. 1.5; <ref-ruling> consid. 3.2).
1.2.
1.2.1. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il peut rectifier ou compléter les constatations de l'autorité précédente si les faits ont été établis en violation des droits constitutionnels (<ref-law> en lien avec l'<ref-law>). Le grief d'arbitraire (art. 9 Cst.) dans l'établissement des faits et l'appréciation des preuves doit répondre aux exigences de motivation rappelées ci-dessus (<ref-ruling> consid. 2.2; <ref-ruling> consid. 4.1).
1.2.2. Le mémoire de recours débute par un long exposé de faits. Après que son avocat eut résilié son mandat, le bailleur a encore modifié et complété cette partie du recours par des annotations sur une copie du mémoire et par plusieurs pages de commentaires.
Force est de constater que ces présentations de faits ne s'accompagnent d'aucun grief de violation des droits constitutionnels; de surcroît, les adjonctions apportées par le bailleur le 7 octobre 2015 sont en dehors du délai de recours. Il s'ensuit que le Tribunal fédéral n'a pas à tenir compte de ces versions dans la mesure où elles divergent des faits retenus dans l'arrêt attaqué.
1.3. En vertu de l'<ref-law>, aucun fait nouveau ni preuve nouvelle ne peut être présenté, à moins de résulter de la décision de l'autorité précédente. En d'autres termes, ces éléments nouveaux sont admissibles uniquement lorsque la décision de l'autorité précédente, pour la première fois, les a rendus pertinents. Sont en particulier concernés les éléments se rapportant à la régularité de la procédure devant l'instance précédente ou permettant d'examiner la recevabilité du recours au Tribunal fédéral. En revanche, le recourant ne saurait introduire des faits ou moyens de preuve qu'il a négligé de soumettre aux autorités cantonales (<ref-ruling> consid. 4.4.3 p. 129).
L'exception réservée par la loi n'est en l'occurrence pas vérifiée. Pour ce motif déjà, les éléments nouveaux que le recourant entend introduire, en tant qu'ils ne figurent pas déjà au dossier cantonal, sont irrecevables.
1.4. Le recourant a modifié ses conclusions après l'échéance du délai de recours, ce qui justifie déjà de déclarer ces rectifications irrecevables.
1.5. La procédure devant l'autorité de céans ne comprend en principe qu'un seul échange d'écritures (cf. <ref-law> en lien avec l'<ref-law>). Le droit de réplique permet au recourant de se déterminer sur l'argumentation présentée par la partie adverse dans sa réponse, mais pas d'introduire de nouveaux griefs ou d'améliorer des griefs alors que le délai de recours a déjà expiré (arrêt 4A_371/2010 du 29 octobre 2010 consid. 2.1 et les arrêts cités). En tant que les notes manuscrites produites le 7 octobre 2015 viseraient également à introduire des arguments nouveaux ou à améliorer des arguments, ceux-ci sont irrecevables.
2.
2.1. Le bailleur dénonce tout d'abord une violation de l'art. 30 Cst. De son point de vue, le jugement rendu par le Tribunal des baux serait nul de plein droit en raison de sa composition irrégulière: l'audience de jugement se serait tenue sans les deux assesseurs représentant respectivement le locataire et le bailleur, contrairement à ce que requiert l'art. 6 de la loi vaudoise sur la juridiction en matière de bail (LJB; RSV 173.655). Le bailleur étant "laïc" en matière juridique, il n'aurait pas été en mesure de dénoncer ce vice à l'audience.
2.2. L'art. 30 al. 1 Cst. garantit à toute personne dont la cause doit être jugée dans une procédure judiciaire le droit à ce que sa cause soit portée devant un tribunal établi par la loi, compétent, indépendant et impartial; il interdit les tribunaux d'exception.
Le droit des parties à une composition régulière du tribunal impose des exigences minimales en procédure cantonale. Il requiert notamment une organisation judiciaire et une procédure déterminées par un texte légal. C'est en premier lieu à la lumière des règles cantonales d'organisation judiciaire et de procédure qu'il convient d'examiner si une autorité judiciaire a statué dans une composition conforme à la loi. Sur ce point, le pouvoir d'examen du Tribunal fédéral est limité à l'arbitraire. En revanche, il examine librement si l'interprétation et l'application du droit cantonal, reconnues non arbitraires, sont compatibles avec la garantie conférée par l'art. 30 al. 1 Cst. (<ref-ruling> consid. 2.1.2.1).
La partie qui a connaissance d'un motif de récusation ou d'un autre vice dans la composition du tribunal doit l'invoquer aussitôt, sous peine d'être déchue du droit de s'en prévaloir ultérieurement. Il est en effet contraire aux règles de la bonne foi de garder en réserve le moyen tiré de la composition irrégulière du tribunal pour ne l'invoquer qu'en cas d'issue défavorable de la procédure (<ref-ruling> consid. 3.2.1).
2.3. En l'occurrence, le bailleur se plaint pour la première fois de la composition irrégulière du Tribunal des baux, alors qu'il était assisté d'un avocat devant cette autorité (en particulier à l'audience de jugement), puis devant la Cour d'appel. Son comportement apparaît ainsi contraire à la bonne foi. Par ailleurs, le bailleur s'en prend à l'application du droit cantonal sans prétendre qu'elle serait arbitraire.
Quoi qu'il en soit, le grief est inconsistant. Le recourant cite incomplètement l'art. 6 LJB. L'alinéa 1 de cette disposition prévoit effectivement que le Tribunal des baux est constitué par un président ou vice-président et deux assesseurs dont l'un représente les propriétaires, l'autre les locataires. Toutefois, l'alinéa 3 précise que le président ou vice-président peut, avec l'accord des parties, renoncer au concours des assesseurs lorsque la cause ne lui paraît pas présenter de difficultés particulières.
La consultation du procès-verbal révèle qu'à l'audience du 5 septembre 2014, la Présidente du Tribunal des baux a informé les parties, toutes deux assistées de leur avocat, que deux assesseurs bailleurs avaient été convoqués, de sorte que le tribunal ne pouvait pas siéger dans cette composition. Elle a proposé soit de siéger seule, soit de rechercher un assesseur locataire "au pied levé". Les parties ont accepté la première solution. Les deux assesseurs bailleurs ont été libérés.
Il s'avère ainsi que l'hypothèse de l'art. 6 al. 3 LJB était réalisée. Il est patent que l'application non arbitraire de cette règle cantonale ne contrevient pas à l'art. 30 al. 1 Cst.
3.
Le bailleur se plaint ensuite d'une application arbitraire des art. 259a et 259b CO.
3.1. Lorsque la chose louée est entachée d'un défaut non imputable au locataire, auquel il n'est pas tenu de remédier à ses frais, et que ledit défaut entrave ou restreint l'usage pour lequel la chose a été louée, le locataire peut exiger une réduction proportionnelle du loyer à partir du moment où le bailleur a eu connaissance du défaut et jusqu'à l'élimination de ce dernier (art. 259a al. 1 et <ref-law>). L'<ref-law> permet au locataire de faire éliminer le défaut de moyenne importance aux frais du bailleur si celui-ci n'a pas agi dans un délai convenable.
Selon la jurisprudence, il y a défaut quand la chose louée ne présente pas une qualité que le bailleur avait promise ou sur laquelle le locataire pouvait légitimement compter en se référant à l'état approprié à l'usage convenu. Pour justifier une réduction de loyer, le défaut doit être de moyenne importance. L'usage de la chose doit être restreint d'au moins 5%, mais la jurisprudence admet de descendre à 2% s'il s'agit d'une atteinte permanente (<ref-ruling> consid. 3.2). Un défaut peut être de nature esthétique. L'on ne saurait d'emblée exclure qu'un tel défaut puisse entraver l'usage de la chose convenue; une moquette très sale dans le hall d'entrée d'un immeuble peut donner droit à une réduction de loyer (arrêt 4C.97/2003 du 28 octobre 2003 consid. 3.3, in MRA 2004 69).
L'application du droit est arbitraire lorsque la décision attaquée est en contradiction claire avec la situation effective, lorsqu'elle viole de façon crasse une norme ou un principe juridique indiscuté ou encore lorsqu'elle heurte de manière choquante le sentiment de justice. La décision doit être insoutenable dans son résultat, et non pas seulement dans sa motivation. L'arbitraire ne résulte pas du seul fait qu'une autre solution serait concevable, ou même préférable (<ref-ruling> consid. 2.4).
3.2.
3.2.1. Dans une argumentation qui mêle griefs de fait et griefs de droit, le recourant plaide que les défauts étaient principalement d'ordre esthétique; si très éventuellement il y a eu des infiltrations d'eau, elles n'ont été que ponctuelles et ont cessé plusieurs années avant l'état des lieux en juillet 2014, lors duquel les murs étaient secs. Selon lui, les défauts n'étaient pas de nature à restreindre l'usage de la chose louée. Il en veut pour preuve que la locataire s'en est accommodée pendant plus de trois ans sans entreprendre de démarches pour y remédier.
3.2.2. Le jugement de première instance, repris par la Cour d'appel, décrit les défauts affectant les appartements loués. Il retient que le bailleur a eu connaissance de ces défauts le 6 juillet 2011 et qu'ils ont perduré jusqu'à la fin du bail, avec des variations selon les saisons et conditions météorologiques, ce qui a été pris en compte dans le taux de réduction du loyer. En se référant à l'état des lieux et à un témoignage, la Cour d'appel a écarté l'argument selon lequel ces défauts n'existaient plus lorsque la locataire a quitté les locaux en juillet 2014. Sur ce dernier point comme sur les autres éléments de fait, le recourant ne formule aucune critique répondant aux exigences de motivation (consid. 1.1 et 1.2.1). La cour de céans est donc liée par ces constatations. Or, au regard de la description des défauts résumée ci-dessus (let. Bc), il n'était nullement arbitraire de retenir en droit que ces défauts entravaient suffisamment l'usage de la chose louée pour justifier sur le principe une réduction de loyer.
Quant au reproche concernant la prétendue passivité de la locataire, la cour cantonale l'a déjà rejeté sans que le recourant ne s'essaie à démontrer où résiderait l'arbitraire de l'argumentation. Le seul fait que la locataire n'ait semble-t-il pas cherché à faire éliminer le défaut par des tiers aux frais du bailleur ne permet pas de conclure à une acceptation du défaut.
3.3.
3.3.1. Le recourant reproche à la Cour d'appel d'avoir versé dans l'arbitraire en refusant d'admettre qu'il avait fait tout ce qu'on pouvait attendre de lui pour éliminer les défauts, la locataire l'ayant empêché d'agir en lui refusant l'accès aux locaux.
3.3.2. Il ressort des deux décisions cantonales qu'à une occasion, le bailleur s'est rendu chez la locataire muni d'un seau, d'une brosse, d'un drap, d'une ramassoire et d'une balayette afin d'éliminer les défauts; la locataire ne l'a pas autorisé à intervenir. Les juges vaudois ont constaté que d'après les rapports rendus par les architectes en janvier 2013 et par la commission de salubrité en février 2014, les infiltrations d'eau provenaient de la toiture, dont la ferblanterie et la couverture étaient en mauvais état; le bailleur n'avait pas réparé la toiture lorsqu'il s'était rendu chez la locataire. Les juges vaudois en ont conclu que l'on ne saurait reprocher à la locataire d'avoir refusé l'accès aux locaux alors que le bailleur n'avait pas encore procédé à la réparation de la toiture. De surcroît, il n'avait pas avisé la locataire de son intervention, contrairement à ce que lui imposaient l'<ref-law> et les règles et usages locatifs du canton de Vaud (art. 27 al. 3 RULV). Les juges ont de surcroît mis en doute la réelle intention du bailleur d'exécuter les travaux, vu le matériel dont il s'était muni.
Confronté à cette argumentation circonstanciée, le recourant se contente d'exposer qu'il n'est pas un professionnel du bâtiment et ne pouvait de toute évidence pas savoir que la remise en état des appartements devait être précédée de la réfection du toit, sa tentative d'intervention en 2012 étant antérieure aux deux rapports précités.
En réalité, dès le moment où il avait connaissance des défauts - soit le 6 juillet 2011 -, il incombait au bailleur de prendre toute mesure utile pour éliminer les défauts, ce qui impliquait en particulier - comme l'a souligné le Tribunal cantonal - de faire appel à des professionnels pour déterminer les causes des infiltrations et faire tous travaux nécessaires pour y remédier et remettre en état les appartements. Dans son avis du 6 juillet 2011, la locataire avait du reste elle-même émis l'hypothèse d'une infiltration depuis la toiture. Le bailleur a manifestement failli à ses devoirs en se rendant sans préavis dans l'appartement de la locataire muni d'un équipement dérisoire. Dénoncer dans ces circonstances un arbitraire confine à la témérité. Le grief ne peut être que rejeté dans la mesure où il est recevable.
3.4.
3.4.1. Le bailleur plaide encore que l'arrêt attaqué conduit à un résultat insoutenable en tant qu'il accorde à la locataire une réduction de loyer de 30% pour la période du 6 juillet 2011 au 31 juillet 2014. Un taux maximal de 10% aurait dû être retenu. Il juge choquant que la réduction intervienne dès juillet 2011 alors que le loyer a été consigné depuis janvier 2013 seulement et qu'il a cherché dans l'intervalle à éliminer les défauts.
3.4.2. Le dernier pan de cette argumentation vient d'être rejeté (supra consid. 3.3.2). Pour le surplus, le droit à une réduction de loyer existe, aux termes mêmes de l'<ref-law>, "à partir du moment où le bailleur a eu connaissance du défaut", soit dès le 6 juillet 2011. La décision attaquée est donc exempte d'arbitraire à cet égard.
Les juges vaudois ont fixé le taux de réduction en équité. Le recourant ne critique pas cette façon de faire, qui est admise par la jurisprudence (<ref-ruling> consid. 4.1). Pour le surplus, les deux décisions cantonales ont dûment justifié le taux retenu, en évoquant divers exemples où la pratique avait retenu des réductions comprises entre 10% et 50% dans des cas d'infiltrations ou autres dégâts d'eau; les juges vaudois ont expliqué pour quels motifs un taux de 30% devait être retenu dans le cas présent. Le recourant ne discute en rien cette argumentation, cherchant simplement à substituer son appréciation à celle des autorités vaudoises. Le grief est ainsi irrecevable. Par surabondance, l'appréciation en équité - que le Tribunal fédéral ne revoit déjà en temps normal qu'avec réserve (ATF 130 précité) - est clairement exempte d'arbitraire.
4.
4.1. Le recourant prétend opposer en compensation une créance de 34'080 fr. pour le manque à gagner résultant du fait que la locataire l'a empêché d'accéder aux locaux et de créer deux chambres dans les combles, qu'il aurait pu louer. Il invoque en outre une créance totale de 2'608 fr. pour de prétendus arriérés de frais de chauffage et d'électricité.
4.2. Concernant le prétendu manque à gagner, l'arrêt attaqué reproche au bailleur de ne pas avoir établi que la locataire ait violé son engagement de garantir l'accès à l'appartement du deuxième étage et qu'il en ait réellement subi un dommage; les conditions d'application de l'<ref-law> n'étaient donc pas réalisées. Quant à la créance découlant des charges impayées, nouvellement invoquée en appel, le bailleur ne démontrait pas avoir fait preuve de la diligence requise par l'<ref-law> pour pouvoir introduire des faits ou moyens de preuve nouveaux (arrêt 4A_432/2013 du 14 janvier 2014 consid. 2.2 et 2.3); de toute façon, son existence même et son exigibilité n'étaient pas établies.
Le recourant se contente d'énoncer sa prétendue créance (augmentée de 33'219 fr. à 36'688 fr.) sans développer aucune argumentation. Cela suffit à clore toute discussion, étant encore une fois rappelé que l'autorité de céans ne contrôle que la violation de droits constitutionnels dûment invoqués et motivés.
5.
En définitive, le recours doit être rejeté dans la mesure où il est recevable. Par conséquent, le recourant supportera les frais de la présente procédure et versera à la locataire intimée une indemnité pour ses frais d'avocat (art. 66 al. 1 et art. 68 al. 1 et 2 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge du recourant.
3.
Le recourant versera à l'intimée une indemnité de 2'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel civile du Tribunal cantonal du canton de Vaud.
Lausanne, le 23 février 2016
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente: Kiss
La Greffière: Monti