Blind varen op Visual Studio Code?

Okay, de titel is wellicht wat suggestief en mogelijk zelfs te negatief. Maar het zou een terecht vraag kunnen zijn bij mijn tweede “wauw, dat dat kan” momentje met Visual Studio Code en de ingebouwde AI-ondersteuning.

De situatie

Ik gebruik sinds een tijdje Immich voor het beheer van mijn foto’s. Werkt prima, gewoon lokaal, Flickr-account nog niet opgezegd, maar voor alsnog ziet het uit als een goed alternatief. Belangrijkste verschil is (vanzelfsprekend) dat er veel minder ondersteuning voor Immich is als het gaat om bijvoorbeeld embedden van foto’s of groepen van foto’s in WordPress. En dat zou natuurlijk wel handig zijn. Daarnaast is het verstandig om de Immich-server niet zo maar voor iedereen toegankelijk te maken, want mocht er dan een kwetsbaarheid in de (open source) software voorkomen (die nog stevig doorontwikkeld wordt) dan is de kans aanwezig dat daar misbruik van gemaakt wordt. Daar biedt Immich Public Proxy dan weer een extra laag bescherming voor. Deze deelt de foto’s namelijk via een andere domeinnaam (url) dan je eigenlijke Immich-installatie. Dat betekent dat ik foto’s kan delen via https://image.pgorissen.com/share/EVxrOfJDCgEZrbdqQOQ0TGVzTu0QUSVBBTrmWxKosCtZli3rcUu1RREFoz9w5J5M-30 terwijl dat niet de locatie van de server zelf is.

De proxy heeft de optie om er voor te zorgen dat als je 1 afbeelding deelt, deze als gallery weergegeven wordt, maar als je meerdere afbeeldingen deelt, dan worden die standaard bij de start in een soort tegelweergave getoond. Zoals deze bijvoorbeeld.

En dat was niet wat ik wilde. Ik kan namelijk andere pagina’s in blogposts embedden. Ik gebruik daar een antieke plugin PageView voor. Het is een simpele plugin, ik heb hem gecheckt op beveiligingsfouten, die zijn er niet, er zijn ook andere plugins, maar goed, daarmee kan ik dit doen:

Dat ziet er niet optimaal uit. Als je op één van de foto’s klikt dan past de weergave zich aan en ziet het er veel beter uit.

Maar je kunt niet standaard deze weergave kiezen. Op dit moment in ieder geval.

De oplossing (poging 1)

De Proxy is open source en te vinden op github. Stap 1 was om te kijken of ik daar kon ontdekken of het mogelijk was wat ik wilde en of iemand anders de vraag al eens gesteld had (als het nog niet kon). Dat bleek niet zo te zijn, dus heb ik een vraag erover gesteld op het forum.  Eerlijk is eerlijk, voor de zekerheid had ik ChatGPT ook even laten meekijken, maar die kwam (ook) tot de conclusie dat de functionaliteit niet in de code zat.
De tool is in Typescript en Embedded JavaScript templates geschreven (zo lees ik tenminste op github) en hoewel ik EJS zou moeten kunnen begrijpen, heb ik geen kennis van Typescript en sowieso is het doorgronden van een tool die je nog niet kent, niet eenvoudig. Dus normaal gesproken zou dit mijn enige mogelijk oplossing zijn geweest en zou ik moeten wachten en hopen of de auteur van de tool de vraag interessant en relevant genoeg vindt om er mee aan de slag te gaan (en hij/zij moet dan ook tijd hebben om dat te doen).
Het voelt ook best wel als gewoon maar vragen voor nog meer functionaliteit aan iemand die de huidige functionaliteit zomaar gratis beschikbaar stelt.

De oplossing (poging 2)

De tweede poging leverde voor mij relatief snel een oplossing op, maar ik snap dat hij ook voor veel mensen absoluut not done is.
De lange versie:

Omdat de code van Immich Public Proxy op github staat, kon ik er daar een ‘fork’ van maken. Dat is een kopie van de oorspronkelijke repository naar mijn account.

De kopie blijft aan het origineel gelinkt, mensen die mijn kopie bezoeken zien dat het een kopie is en kunnen zo ook bij het origineel komen. Het idee van een fork is dat iemand ander functionaliteit kan toevoegen aan jouw code. En dat is wat ik gedaan heb.

Ik heb de fork van de repository naar mijn eigen computer gedownload, de map geopend in Visual Studio code en aan de AI-agent de vraag gesteld:

See the discussion here: https://github.com/alangrainger/immich-public-proxy/discussions/117
The source code for immich-public-proxy is opened locally. How do I edit the code for that functionality?

Mijn vraag werd eerst niet goed begrepen, maar daarna wel:

Thank you for clarifying! The discussion is about allowing a direct link to a single image within a multi-image gallery, so that when a user clicks a link to a specific image, the gallery opens with that image pre-selected (not always the first image).
How to implement this:
1. Accept an asset ID in the share URL (e.g., /share/abc123?asset=xyz456). 2. Pass the asset ID to the gallery renderer so it opens with that image selected. 3. Update the gallery frontend to open the correct image if an asset ID is provided.

Op mijn vraag

Can you update the code for me?

(ik had hem blijkbaar niet op ‘Agent’ staan), ging de agent aan de slag.

Het resultaat

Testen van de aanpassingen vergde daarna nog wat werk. Het ging immers om een Docker-image. Ik moest dus eerst een nieuwe image laten bouwen door Docker op basis van de gewijzigde code. Daarbij (b)leek de Dockerfile een paar kleine fouten te bevatten waardoor het buildproces niet liep. Ook daar wist de AI op basis van de foutmelding en de Dockerfile bij te helpen en de build was succesvol. En het resultaat was precies waar ik om gevraagd had. Gewoon de allereerste keer, op basis van een simpele “kun je de code aanpassen zodat het werkt?” vraag.


Het resultaat is dat ik de gallery nu met een ?asset= kan uitbreiden en dan wordt hij zo geopend zoals ik dat graag wil door de toevoeging van ?asset= aan de url.

Pull Request

Komen we eindelijk bij het punt waarvan de vraag is of ik dat wel zou moeten doen. Doordat de verbinding tussen fork en origineel verbonden blijft op github, “ziet” de repository ook dat ik wijzigingen in de code aangebracht heb die nieuwer zijn dan de code in het origineel. Ik krijg dan ook actief het aanbod om een Pull request in te dienen. Dat is voorstel voor aanpassingen in de code voor de oorspronkelijke programmeur. Deze werkwijze maakt het relatief eenvoudig voor de maker van de Proxy om mijn wijzigingen in zijn code op te nemen als hij het inderdaad een goed idee vindt (er wordt dus geen code zomaar toegevoegd). De pull request is hier te vinden. Op dit moment heb ik nog geen reactie gehad op de oorspronkelijke vraag op het forum of op deze pull request. Dat hoeft natuurlijk ook niet. De auteur was afgelopen week wel even met de proxy bezig om wat gevraagde functionaliteit te implementeren omdat Immich een nieuwe feature had uitgebracht die nog niet samenwerkte met de proxy. Dus hij houdt het actief in de gaten, maar het kan best zijn dat hij het scenario niet relevant vindt, mij niet kent (ik was net nieuw bij zijn repository) of wat dan ook.

Mijn gewetensvraag is vooral of het acceptabel is dat ik nu code indien die weliswaar foutloos werkt, maar die ik niet kan controleren omdat ik niet de hele tool overzie, geen Typeschrift ken en de code heb laten genereren door de AI in VSC. Wat vind jij? Not Done?  Of acceptabel? Had ik het heel expliciet moeten vermelden?

 

0 0 stemmen
Bericht waardering
Abonneer
Abonneren op

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie gegevens worden verwerkt.

0 Reacties
Inline Feedback
Bekijk alle reacties
0
Tips, opmerkingen, aanvullingen, ideeën naar aanleiding van dit bericht?x