From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 05B7B1FF0E6 for ; Fri, 07 Aug 2026 12:02:29 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id AD30E21552; Fri, 07 Aug 2026 12:02:28 +0200 (CEST) Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Fri, 07 Aug 2026 12:02:22 +0200 Message-Id: To: "Thomas Ellmenreich" , From: "Max R. Carrara" Subject: Re: [PATCH common/manager/proxmox-widget-toolkit/storage/storage-plugin-examples v3 00/17] GUI Support for Custom Storage Plugins X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20260727143445.513900-1-m.carrara@proxmox.com> In-Reply-To: X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1786096926929 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.755 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: RP465P3DWUASNB4MOG2DKRWF2IVVDEVK X-Message-ID-Hash: RP465P3DWUASNB4MOG2DKRWF2IVVDEVK X-MailFrom: m.carrara@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On Tue Aug 4, 2026 at 12:40 PM CEST, Thomas Ellmenreich wrote: > First of all, I really like the idea of this, and I find it actually real= ly > easy to use. Without having read anything about how to configure the UI, = I was > quickly able to make changes that then also translated. That said, this a= lso > means that all the errors I have found could be purely caused by > misconfiguration. In any case, here is a list of the things I have tried: > > - Installed the Patchseries and Plugins on a VM and tried adding Storages= of > the 3 different Extra Plugin Types > > - Made manual curl requests to the different Endpoints to see the return = values > > - Started playing around with the configuration of the 'backup-provider-d= ir-example' > Plugin to test different edge cases. Here are most of the things I did: > > - Added one and then two multiline fields to see how they sorted. > > - Checked that optional fields are actually optional, and vice versa. > > - Made one of the multiline fields Fixed, and then checked how that sho= wed > when adding the Storage and when editing it. > > - Added a sensitive multiline field. > > - Added a normal string field that is not optional, as well as sensitiv= e. > > - Added a multiline field to the advanced properties, while being optio= nal > as well as non optional. > > - Repeated some of the combinations with boolean, number and integer > fields. Wew, thanks a lot for the thorough testing and the review! Glad to hear that it's easy to use! :) > > Looking at the code and during these tests, I have encountered some thing= s. > Not everything might be important, but I will still list everything I hav= e > noticed. And I should also add that I'm not sure if this series is the co= rrect > moment to address some of the problems, as they might be more general Ext= Js > problems. > > - In some of the patches, there are a few strings that could be wrapped i= n > `gettext` to allow for future translation. Actually really nice that you spotted that; will hunt those strings down and translate them in v4. Thanks! > > - There seems to be an inconsistency in how required (or non optional) fi= elds > show up in the UI. When a field is marked as fixed and required, it has= a > red lining indicating the fact that it has to be set. But if it's only > required, there is no red line. That said, upon trying to create the st= orage, > a good error message is shown. So this is purely a UI/UX issue. Interesting, will have a look at this too. > > - When adding multiline fields, they show up in the bottom section of the > popup UI, which is very nice. But when that field has the 'fixed' prope= rty set > and you then open the editing UI, instead of showing up in the bottom s= ection, > the multiline field now shows up between the other properties. This is = also > just a UI issue, it caused a second of confusion for me though, as the = quite > wide multiline field suddenly showed up as a small fixed label, hidden > between other properties. Yeah I can totally see why that might be confusing; I'll see if I can adapt the logic there so that when a property with `multiline` format is being used as a display field, it still gets put into the wide bottom column (the same position as before). Nice that you spotted this, thanks! > > - Adding newlines to a multiline field doesn't work and fails with this e= rror: > 'Property contains a line feed (500)'. I'm guessing, but I think this i= s > a problem with the `storage.cfg` file and not the UI. Yeah that's gonna be a bit tricky, I'll have to see how multiline strings can be stored in SectionConfig (sigh). Thanks for spotting this as well! > > - Setting multiline field as sensitive seems to do nothing to the field. = It > shows up as just a normal multiline field. That's actually a limitation of text boxes in general, unfortunately. The censoring cannot be applied to `