Skip to content

Synchronize with the api-v2 branch#2866

Merged
imobachgs merged 14 commits intosoftware-servicefrom
sync-api-v2
Nov 12, 2025
Merged

Synchronize with the api-v2 branch#2866
imobachgs merged 14 commits intosoftware-servicefrom
sync-api-v2

Conversation

@imobachgs
Copy link
Copy Markdown
Contributor

Another synchronization of api-v2 and software-service.

dgdavid and others added 14 commits November 10, 2025 12:17
By using react-router and react-router/dom imports as stated in
documentation https://reactrouter.com/upgrading/v6#upgrade-to-v7
By using the right imports/mocks
After migrating to React Router v7, the test suite fails with the
following error:

> ReferenceError: TextEncoder is not defined

This appears to be due to an unimplemented TextEncoder in jsdom. To
resolve this, we follow the same workaround as React Router, as outlined
in remix-run/react-router#12363 (comment)
It was introduced to work around React Router v6's issue of not encoding
parameters in the generatePath function. However, after migrating to v7,
tests began failing due to double encoding. This revealed that React
Router v7 already handles encoding parameters in generatePath. See
remix-run/react-router#13530

Thus, this commit reverts the changes made in
#2576
In TypeScript, TextEncoder and TextDecoder are global types when
targeting the DOM environment, causing conflicts when importing these
classes from Node’s util module. To avoid these conflicts, TextEncoder
and TextDecoder from util have been imported with different names
(NodeTextEncoder, NodeTextDecoder) and assigned to globalThis with
explicit type assertions.

* MDN
  - https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder
  - https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder

* StackOverflow
  - https://stackoverflow.com/a/77752064

* TypeScript types
  - https://github.com/microsoft/TypeScript/blob/efca03ffed10dccede4fbc8dd8a624374e5424d9/src/lib/dom.generated.d.ts#L32378
To fix an issue with React Router v7 types

> src/index.tsx:25:32 - error TS2307: Cannot find module 'react-router/dom' or its corresponding type declarations.
>  There are types at 'node_modules/react-router/dist/development/dom-export.d.mts',
>     but this result could not be resolved under your current 'moduleResolution' setting.
>     Consider updating to 'node16', 'nodenext', or 'bundler'.

As per TypeScript documentation, https://www.typescriptlang.org/tsconfig/#moduleResolution

> 'bundler' for use with bundlers. Like node16 and nodenext, this mode
>   supports package.json "imports" and "exports", but unlike the Node.js
>   resolution modes, bundler never requires file extensions on relative
>   paths in imports.
## Problem

React Router v7 was released almost a year now (see
https://reactrouter.com/changelog#v700), but it has not been updated in
Agama yet. In addition to the obvious benefit of keeping dependencies
up-to-date, updating it might help to address some limitations we have
found with the v6 version, like
06d858c

## Solution

Migrate React Router dependency to its latest version.

## Testing

- Adapted existing tests.

## Notes

This migration has been straightforward, and as of now, Agama is using
Data Mode (see https://reactrouter.com/start/modes). However, this could
change in the future if we find advantages in switching to Declarative
or Framework Mode. Before making any decisions, we’ll need to work on
`src/App.tsx` along with the changes planned for the api-v2 branch that
this PR is based on.

## Documentation


 * https://reactrouter.com/upgrading/v6
*
remix-run/react-router#12363 (comment)
* remix-run/react-router#13530 (`generatePath`
now encodes URL params by default, related to
#2576)
 * https://www.typescriptlang.org/tsconfig/#moduleResolution
Co-authored-by: Imobach González Sosa <igonzalezsosa@suse.com>
## Problem

There is a new config based HTTP API and all the services needs to be
adapted. The aim of this PR is to adapt the network backend service
(replace #2840).

- #2715

## Solution

In the new architecture all the Agama modules will live in its own
package implementing the actors/service as described in
(#2715), but as network was
already using a actors model using an enums approach it was decided to
use the current service in the first iteration of changes.

### Changes done

- Added the actions for getting the system, proposal and current network
configuration using the actual actions passing messages system based on
enums.
- All the structs or types that are related to the API (needs to be
serialized) has been moved to agama-utils, it was decided to not depend
on agama-lib anymore. The types will be re-exported to be used by
agama-network when needed.
- As the current merge is concatenating the connections array, the patch
**(updateConfig)** will replace the connections with the given one when
present, but is something we need to revisit and decide how to do it in
a better way.
- Removed the network web service.
- As the proposal, system info and config contains similar collections
and just change the absence or presence of some of them we have
introduced the **NetworkCollection** and
**NetworkConnectionCollections** in order to do the conversion between
them.

### TODO

- Move to the actors/service model using traits instead of enums and
adding the issues and progress monitor to the network service.
- Remove all the actions which are not needed anymore (old network web
service).
- Add unit tests covering the new approach.
@imobachgs imobachgs requested a review from teclator November 11, 2025 21:55
Copy link
Copy Markdown
Contributor

@teclator teclator left a comment

Choose a reason for hiding this comment

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

LGTM

@imobachgs imobachgs merged commit bda4ea8 into software-service Nov 12, 2025
23 of 24 checks passed
@imobachgs imobachgs deleted the sync-api-v2 branch November 12, 2025 08:58
imobachgs added a commit that referenced this pull request Jan 10, 2026
Merge the new HTTP API. Each PR has been already reviewed, so it should
be safe to merge it.

* #1829
* #2508
* #2772
* #2826
* #2848
* #2860
* #2863
* #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
* #2938
* #2939
* #2942
* #2943
* #2944
* #2945
* #2946
* #2947
* #2948
* #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
* #2982
* #2983
* #2984
* #2988
* #2989
* #2991
* #2992
* #2993
* #2994
* #2995
* #2996
* #2997
* #2999
@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.

3 participants