Skip to content

refactor(web): restore interface for managing iSCSI form web client#3092

Merged
dgdavid merged 72 commits intomasterfrom
revam-iscsi-ui-draft
Feb 12, 2026
Merged

refactor(web): restore interface for managing iSCSI form web client#3092
dgdavid merged 72 commits intomasterfrom
revam-iscsi-ui-draft

Conversation

@joseivanlopez
Copy link
Copy Markdown
Contributor

@joseivanlopez joseivanlopez commented Jan 28, 2026

Bring back the iSCSI user interface fully adapted to the HTTP v2 API and to the latest web client look&feel (https://trello.com/c/S65oeTKz, private link). It also restores the "Rescan devices" option (related to https://bugzilla.suse.com/show_bug.cgi?id=1258089, private link).


In addition to other minor changes not strictly related to the iSCSI user interface, during the resurrection of such an interface this PR introduced few important layout updates to make the Header and Breadcrumb more flexible and extensible. These adjustments were necessary to accommodate the placement of the “More storage options” menu while keeping consistence across other areas of Agama.

For more details, please refer to the relevant commits below.


Related to

@ancorgs ancorgs force-pushed the revam-iscsi-ui-draft branch from 56041f8 to df4759e Compare February 3, 2026 16:23
@dgdavid dgdavid force-pushed the revam-iscsi-ui-draft branch from d3a1733 to c5b37af Compare February 4, 2026 14:53
dgdavid and others added 23 commits February 4, 2026 20:45
Not actually needed when the action is a children of the form.
Temporary change, since this kind of actions will be extracted out of
Page component
  * Allows to use no selection at all (selectionMode=none).

    It works kind of against the initial proposal of the component,
which still called "SELECTABLE". Something to revisit and improve.

  * Does not render an empty dropdown for actions if there are actually
    0 actions.
Not finished. Not polished and not tested. Just a kind of draft to draw
the path to follow.
Given two or more colletions of elements, it merges all of them in a
single one but adding a "sources" key to items for tracking in which
collections they were.

Born for bein able to know if an iscsci node comes from config, system,
or both.
> Deprecation Warning on line 31, column 21 of
>    /node_modules/@patternfly/patternfly/sass-utilities/functions.scss:31:21:
>
>     The Sass if() syntax is deprecated in favor of the modern CSS syntax.

Such a warning comes from PatternFly, as the other two that were already
silenced in commit eb6f5b1

Now is time to silence the "if-funtion" deprecation, which is active
since Dart Sass 1.95.0.

Check

 * https://sass-lang.com/documentation/js-api/interfaces/deprecations/#if_function
 * patternfly/patternfly#8077
The Sass import deprecation was previously silenced because PatternFly
usage (see eb6f5b1).

Now that PatternFly has been updated to v6, the deprecation warning is
no longer raised and the workaround is no longer necessary.
Kind of continuation of 1c61572 in
order to keep building the new iSCSI UI from a cleaner starting point.
To avoid having a very big element in the breadcrumb due to the h1
styles. Allow heading inherit font-size from its parent.
@dgdavid dgdavid force-pushed the revam-iscsi-ui-draft branch from c5b37af to a915e20 Compare February 4, 2026 20:45
@coveralls
Copy link
Copy Markdown

coveralls commented Feb 4, 2026

Coverage Status

coverage: 74.994% (+1.2%) from 73.753%
when pulling 50046af on revam-iscsi-ui-draft
into 773cc42 on master.

@dgdavid dgdavid force-pushed the revam-iscsi-ui-draft branch from a915e20 to e3f4579 Compare February 4, 2026 20:53
Since with new layout it should be an h2 instead of h3
For making less abrupt the change from a page with an h1 to another with
a breadcrumbs + h1.

Commit also includes some imports reordering.
Instead of the standard one with a lot of props for achiving same
result.
* Common props shared by all page variants.
*/
interface BasePageProps {
interface BasePageProps extends HeaderProps {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure, but maybe would be more convenient, predictable, and ergonomics to have a headerProps instead. Although title and breadcrumbs are so convenient to be related to page as well. In any case, I believe this PR is already rather long and changes in that regard should be sent as part of a new one.

It would allow to pass from

<Page breadcrumbs={[...]} noDefaultStartSlot endSlot={...} />

to

<Page header={breadcrumbs: [...], noDefaultStartSlot: true, endSlot: ... />

It has advantages and disadvantages. Advantages for defining slots contents, disadvantages passing title, breadcrumbs and "noDefaultX".

dgdavid and others added 7 commits February 11, 2026 12:38
Overview-specific options are no longer shown in
Header#Toolbar#centerSlot. They are now rendered in the sidebar to
improve prominence and prevent users from assuming those options apply
globally.

This change makes the header options more distinguishable when
navigating from the overview/dashboard to other areas. It reduces the
risk of users expecting the "Options v" menu to contain the same items
they saw on the Overview page, which could happen if it were placed in
the header from the beginning.
@dgdavid dgdavid changed the title New iSCSI UI refactor(web): restore interface for managing iSCSI form web client Feb 12, 2026
@dgdavid dgdavid marked this pull request as ready for review February 12, 2026 12:04
Copy link
Copy Markdown
Contributor

@ancorgs ancorgs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dgdavid dgdavid merged commit f4f2e63 into master Feb 12, 2026
15 checks passed
@dgdavid dgdavid deleted the revam-iscsi-ui-draft branch February 12, 2026 12:26
dgdavid added a commit that referenced this pull request Feb 12, 2026
## Problem

When installation `stage` is `failed` web interface does nothing but
stays in the page users were working with.

## Solution

Renders and informative screen instead as soon as the installation
enters in a failed status

## Additional notes

* All informative pages has been adapted to the usage of
layout/SplitInfoLayout added as part of this PR
* The `download` icon has not been added but only used here to minimize
future merge conflicts since it is already added in
#3092
* Tests for App.tsx still pending to adapt. Not done as part of this PR
because lack of time.
ancorgs added a commit that referenced this pull request Feb 13, 2026
## Problem

#3092 introduced a new button with the aria label "more storage
options". The visible label was chosen to be "options" just to move the
pull request forward, but we had not really agreed what would be the
best visible name for the button.

Now we have decided that "more" would fit better in general, taking into
account that's a button that will likely be reproduced in other
sections, even if (only in the storage section) it can look slightly
redundant with the "more devices" below.

## Solution

Label adapted.

<img width="1249" height="483" alt="gimme-more"
src="https://github.com/user-attachments/assets/f3d403f9-e95e-4bec-9832-795c783f49ba"
/>
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Feb 27, 2026
https://build.opensuse.org/request/show/1334916
by user IGonzalezSosa + anag_factory
- Fix the language change (gh#agama-project/agama#3197).

- Do not crash when a system was registered without a code (bsc#1258450).

- Log the data sent to the backend when the request fails
  (related to bsc#1256069)

- Change the label of the button for extra storage options (related
  to gh#agama-project/agama#3092 and bsc#1258089).

- Use the new URL of the password strenght check (gh#agama-project/agama#3159).

- Notify users when installation fails (bsc#1257753).

- Restore the interface for managing iSCSI in the web client
  (gh#agama-project/agama#3092).
- Restore the "Rescan devices" storage option (bsc#1258089).

- Honor the language from the backend (gh#agama-project/agama#3142).

- Show translated product mode name and description
  (gh#agama-project/agama#3144)
dgdavid added a commit that referenced this pull request Mar 3, 2026
Agama tables lacked any visual feedback when users hovered with mouse or
navigated rows with the keyboard, making it hard to track which row user
is on. PF's built-in solution (isClickable on Tr) was intentionally
avoided since it provides the hover highlight out of the box but also
adds a pointer cursor and implies the row is clickable, which is not the
common use case for Agama tables at this moment (check slightly related
commit ae2d3a2 in which the usage of
isClickable was discarded).

Thus, a custom CSS rule has been added for covering three interaction
cases:

* Mouse hover, standard `:hover`
* Keyboard navigation, `:focus-within`, intentionally broad to cover all
focusable elements including checkboxes. This ensures keyboard users
always know which row they are on. The (small) tradeoff is a residual
highlight after checkbox selection that persists until focus moves
elsewhere. Since it's not expected mouse users stop suddenly
interacting, this is an acceptable edge case where the benefit for
keyboard users outweighs the minor annoyance (for a brief amount of
time) for mouse users.
* Action menu open, `:has(.pf-v6-c-menu-toggle[aria-expanded="true"])`,
which required fixing a missing `isExpanded` prop on `SimpleDropdown` as
part of this PR.

The highlight color reuses the same value used for button and menu
option hover states for consistency across interactive elements.
Defining another color for these elements or a dedicated token for row
highlighting is left as a future improvement, though it is not a
priority for the team in the mid-term given the amount of other ongoing
work.


<img width="2048" height="1536" alt="localhost_8080_ (10)"
src="https://github.com/user-attachments/assets/3752b712-3a0e-4398-8afa-2a3fc45c73a4"
/>
<img width="2048" height="1536" alt="localhost_8080_ (9)"
src="https://github.com/user-attachments/assets/9696544e-0d93-4a7a-8cec-6d7774ce2d7a"
/>


---

Related to 

 * #3143
 * #3092
 * #2459
@imobachgs imobachgs mentioned this pull request Mar 17, 2026
imobachgs added a commit that referenced this pull request Mar 17, 2026
Prepare to release version 19.

* #1829
* #2508
* #2772
* #2818
* #2826
* #2848
* #2860
* #2863
* #2864
* #2866
* #2867
* #2869
* #2870
* #2871
* #2872
* #2873
* #2874
* #2875
* #2876
* #2877
* #2880
* #2881
* #2882
* #2884
* #2885
* #2886
* #2891
* #2892
* #2893
* #2894
* #2895
* #2896
* #2897
* #2898
* #2899
* #2900
* #2901
* #2902
* #2903
* #2904
* #2908
* #2909
* #2910
* #2912
* #2913
* #2914
* #2915
* #2916
* #2917
* #2918
* #2920
* #2921
* #2923
* #2924
* #2926
* #2928
* #2929
* #2930
* #2933
* #2934
* #2935
* #2936
* #2937
* #2938
* #2939
* #2942
* #2943
* #2944
* #2945
* #2946
* #2947
* #2948
* #2949
* #2950
* #2951
* #2952
* #2954
* #2955
* #2956
* #2957
* #2958
* #2959
* #2960
* #2961
* #2963
* #2964
* #2965
* #2967
* #2968
* #2969
* #2970
* #2971
* #2972
* #2974
* #2975
* #2977
* #2978
* #2980
* #2981
* #2982
* #2983
* #2984
* #2988
* #2989
* #2990
* #2991
* #2992
* #2993
* #2994
* #2995
* #2996
* #2997
* #2998
* #2999
* #3000
* #3001
* #3002
* #3004
* #3005
* #3006
* #3007
* #3008
* #3009
* #3011
* #3012
* #3013
* #3014
* #3015
* #3016
* #3018
* #3019
* #3020
* #3021
* #3022
* #3023
* #3024
* #3025
* #3026
* #3027
* #3028
* #3029
* #3030
* #3031
* #3033
* #3034
* #3035
* #3036
* #3037
* #3039
* #3040
* #3041
* #3042
* #3043
* #3044
* #3045
* #3046
* #3047
* #3048
* #3049
* #3050
* #3051
* #3052
* #3053
* #3054
* #3055
* #3056
* #3057
* #3058
* #3060
* #3061
* #3062
* #3063
* #3064
* #3065
* #3066
* #3067
* #3068
* #3069
* #3070
* #3071
* #3072
* #3073
* #3074
* #3075
* #3076
* #3077
* #3078
* #3079
* #3086
* #3087
* #3088
* #3089
* #3090
* #3091
* #3092
* #3093
* #3094
* #3095
* #3096
* #3097
* #3098
* #3099
* #3100
* #3101
* #3102
* #3103
* #3104
* #3105
* #3106
* #3107
* #3108
* #3109
* #3110
* #3112
* #3113
* #3114
* #3115
* #3116
* #3117
* #3118
* #3119
* #3120
* #3122
* #3123
* #3124
* #3127
* #3128
* #3129
* #3130
* #3131
* #3133
* #3134
* #3135
* #3136
* #3137
* #3138
* #3139
* #3140
* #3141
* #3142
* #3143
* #3144
* #3145
* #3146
* #3147
* #3148
* #3149
* #3150
* #3151
* #3152
* #3153
* #3154
* #3155
* #3157
* #3158
* #3159
* #3160
* #3161
* #3162
* #3163
* #3164
* #3165
* #3166
* #3167
* #3168
* #3169
* #3170
* #3174
* #3175
* #3176
* #3177
* #3178
* #3179
* #3181
* #3182
* #3184
* #3185
* #3186
* #3188
* #3189
* #3190
* #3191
* #3192
* #3194
* #3195
* #3196
* #3197
* #3198
* #3199
* #3200
* #3201
* #3202
* #3203
* #3205
* #3206
* #3208
* #3209
* #3210
* #3213
* #3214
* #3215
* #3216
* #3217
* #3218
* #3219
* #3220
* #3222
* #3223
* #3224
* #3225
* #3226
* #3227
* #3228
* #3229
* #3230
* #3231
* #3232
* #3233
* #3234
* #3235
* #3236
* #3237
* #3238
* #3239
* #3240
* #3241
* #3242
* #3243
* #3244
* #3246
* #3247
* #3248
* #3250
* #3251
* #3252
* #3253
* #3254
* #3255
* #3256
* #3257
* #3258
* #3259
* #3260
* #3261
* #3262
* #3263
* #3265
* #3266
* #3267
* #3268
* #3269
* #3270
* #3271
* #3272
* #3273
* #3274
* #3275
* #3276
* #3277
* #3278
* #3279
* #3280
* #3281
* #3282
* #3283
* #3284
* #3285
* #3286
* #3287
* #3288
* #3289
* #3290
* #3291
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants