az2aws 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "1.1.1"
2
+ ".": "1.1.3"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.3](https://github.com/kuma0128/az2aws/compare/v1.1.2...v1.1.3) (2026-01-19)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * snapcraft deploy flow ([#65](https://github.com/kuma0128/az2aws/issues/65)) ([a4a41d7](https://github.com/kuma0128/az2aws/commit/a4a41d79c3142762f3d593796c8bf31b558bb8fe))
9
+
10
+ ## [1.1.2](https://github.com/kuma0128/az2aws/compare/v1.1.1...v1.1.2) (2026-01-19)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * snapcraft deploy flow ([#61](https://github.com/kuma0128/az2aws/issues/61)) ([48cff62](https://github.com/kuma0128/az2aws/commit/48cff6225ef79050137ad815f1dd5bacb4f9131f))
16
+ * Unreachable code in account selection logic ([#63](https://github.com/kuma0128/az2aws/issues/63)) ([eb1f0de](https://github.com/kuma0128/az2aws/commit/eb1f0de464ad5d991c82d2982abf9b0ffd9a7b49))
17
+
3
18
  ## [1.1.1](https://github.com/kuma0128/az2aws/compare/v1.1.0...v1.1.1) (2026-01-19)
4
19
 
5
20
 
@@ -0,0 +1,729 @@
1
+ # GitHub Issues
2
+
3
+ ## Bug Reports (Internal Code Issues)
4
+
5
+ ---
6
+
7
+ ### Issue #26: `--no-verify-ssl` and proxy settings conflict
8
+
9
+ **Labels:** `bug`, `priority: high`
10
+
11
+ **Description:**
12
+ When `awsNoVerifySsl` is `true`, the proxy settings are overwritten. In corporate environments that require both, it's not possible to disable SSL verification while using a proxy.
13
+
14
+ **Location:** `src/login.ts:1034-1056`
15
+
16
+ **Current Code:**
17
+ ```typescript
18
+ if (process.env.https_proxy) {
19
+ stsOptions = {
20
+ ...stsOptions,
21
+ requestHandler: new NodeHttpHandler({
22
+ httpsAgent: proxy(process.env.https_proxy),
23
+ }),
24
+ };
25
+ }
26
+
27
+ if (awsNoVerifySsl) {
28
+ // This overwrites the proxy settings
29
+ stsOptions = {
30
+ ...stsOptions,
31
+ requestHandler: new NodeHttpHandler({
32
+ httpsAgent: new Agent({
33
+ rejectUnauthorized: false,
34
+ }),
35
+ }),
36
+ };
37
+ }
38
+ ```
39
+
40
+ **Proposed Fix:**
41
+ ```typescript
42
+ if (process.env.https_proxy) {
43
+ const proxyAgent = proxy(process.env.https_proxy);
44
+ if (awsNoVerifySsl) {
45
+ proxyAgent.options.rejectUnauthorized = false;
46
+ console.warn("WARNING: SSL certificate verification is disabled...");
47
+ }
48
+ stsOptions = {
49
+ ...stsOptions,
50
+ requestHandler: new NodeHttpHandler({
51
+ httpsAgent: proxyAgent,
52
+ }),
53
+ };
54
+ } else if (awsNoVerifySsl) {
55
+ console.warn("WARNING: SSL certificate verification is disabled...");
56
+ stsOptions = {
57
+ ...stsOptions,
58
+ requestHandler: new NodeHttpHandler({
59
+ httpsAgent: new Agent({
60
+ rejectUnauthorized: false,
61
+ }),
62
+ }),
63
+ };
64
+ }
65
+ ```
66
+
67
+ ---
68
+
69
+ ### Issue #27: Unreachable code in account selection logic
70
+
71
+ **Labels:** `bug`, `priority: medium`
72
+
73
+ **Description:**
74
+ The `accounts` array is always initialized with 2 elements, so the following conditional branches are never executed:
75
+
76
+ **Location:** `src/login.ts:160-164`
77
+
78
+ **Current Code:**
79
+ ```typescript
80
+ const accounts = [
81
+ { message: aadTileMessage, selector: "#aadTileTitle" },
82
+ { message: msaTileMessage, selector: "#msaTileTitle" },
83
+ ];
84
+
85
+ let account;
86
+ if (accounts.length === 0) { // Always false
87
+ throw new CLIError("No accounts found on account selection screen.");
88
+ } else if (accounts.length === 1) { // Always false
89
+ account = accounts[0];
90
+ } else {
91
+ // Always enters here
92
+ }
93
+ ```
94
+
95
+ **Proposed Fix:**
96
+ Filter based on whether tiles actually exist:
97
+ ```typescript
98
+ const accounts = [
99
+ aadTile ? { message: aadTileMessage, selector: "#aadTileTitle" } : null,
100
+ msaTile ? { message: msaTileMessage, selector: "#msaTileTitle" } : null,
101
+ ].filter((a): a is { message: string; selector: string } => a !== null);
102
+ ```
103
+
104
+ ---
105
+
106
+ ### Issue #28: Character encoding issue in SAML decoding
107
+
108
+ **Labels:** `bug`, `priority: medium`
109
+
110
+ **Description:**
111
+ ASCII encoding is used for SAML response decoding, but SAML responses may contain UTF-8 characters (e.g., usernames with Japanese characters).
112
+
113
+ **Location:** `src/login.ts:905`
114
+
115
+ **Current Code:**
116
+ ```typescript
117
+ const samlText = Buffer.from(assertion, "base64").toString("ascii");
118
+ ```
119
+
120
+ **Proposed Fix:**
121
+ ```typescript
122
+ const samlText = Buffer.from(assertion, "base64").toString("utf8");
123
+ ```
124
+
125
+ ---
126
+
127
+ ### Issue #29: Potential NaN from parseInt
128
+
129
+ **Labels:** `bug`, `priority: medium`
130
+
131
+ **Description:**
132
+ If `defaultDurationHours` is `undefined` or an empty string, `parseInt` returns `NaN`.
133
+
134
+ **Location:** `src/login.ts:954`
135
+
136
+ **Current Code:**
137
+ ```typescript
138
+ let durationHours = parseInt(defaultDurationHours, 10);
139
+ ```
140
+
141
+ **Proposed Fix:**
142
+ ```typescript
143
+ let durationHours = parseInt(defaultDurationHours, 10) || 1;
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Issue #30: Process does not exit on non-CLI errors
149
+
150
+ **Labels:** `bug`, `priority: low`
151
+
152
+ **Description:**
153
+ When a non-CLI error occurs, the process does not exit.
154
+
155
+ **Location:** `src/index.ts:103-110`
156
+
157
+ **Current Code:**
158
+ ```typescript
159
+ .catch((err: Error) => {
160
+ if (err.name === "CLIError") {
161
+ console.error(err.message);
162
+ process.exit(2);
163
+ } else {
164
+ console.log(err); // process.exit() is not called
165
+ }
166
+ });
167
+ ```
168
+
169
+ **Proposed Fix:**
170
+ ```typescript
171
+ .catch((err: Error) => {
172
+ if (err.name === "CLIError") {
173
+ console.error(err.message);
174
+ process.exit(2);
175
+ } else {
176
+ console.error(err);
177
+ process.exit(1);
178
+ }
179
+ });
180
+ ```
181
+
182
+ ---
183
+
184
+ ### Issue #31: CLI option description is inaccurate
185
+
186
+ **Labels:** `documentation`, `priority: low`
187
+
188
+ **Description:**
189
+ The `--no-verify-ssl` option description says "no effect if behind proxy", but in reality it overwrites the proxy settings (see Issue #26).
190
+
191
+ **Location:** `src/index.ts:41-43`
192
+
193
+ **Current Code:**
194
+ ```typescript
195
+ .option(
196
+ "--no-verify-ssl",
197
+ "Disable SSL Peer Verification for connections to AWS (no effect if behind proxy)"
198
+ )
199
+ ```
200
+
201
+ **Proposed Fix:**
202
+ After fixing Issue #26, update the description to be accurate.
203
+
204
+ ---
205
+
206
+ ## Feature Requests (from upstream PRs)
207
+
208
+ ---
209
+
210
+ ### Issue #32: Add `http_proxy` environment variable support
211
+
212
+ **Labels:** `enhancement`, `priority: high`
213
+
214
+ **Description:**
215
+ Currently only `https_proxy` is referenced. Add support for `http_proxy` environment variable as well.
216
+
217
+ **Reference:** [aws-azure-login#313](https://github.com/aws-azure-login/aws-azure-login/pull/313)
218
+
219
+ **Location:** `src/login.ts:715, 1034`
220
+
221
+ ---
222
+
223
+ ### Issue #33: Update deprecated packages
224
+
225
+ **Labels:** `dependencies`, `priority: high`
226
+
227
+ **Description:**
228
+ Some packages should be updated to newer versions:
229
+
230
+ | Package | Current | Recommended |
231
+ |---------|---------|-------------|
232
+ | uuid | 8.3.2 | 9.0.1+ |
233
+ | mkdirp | 1.0.4 | 2.1.6+ |
234
+ | cheerio | ^1.0.0-rc.10 | ^1.0.0-rc.12+ |
235
+
236
+ **Reference:** [aws-azure-login#359](https://github.com/aws-azure-login/aws-azure-login/pull/359), [aws-azure-login#341](https://github.com/aws-azure-login/aws-azure-login/pull/341)
237
+
238
+ ---
239
+
240
+ ### Issue #34: Support TOTP auto-generation from secret
241
+
242
+ **Labels:** `enhancement`, `priority: medium`
243
+
244
+ **Description:**
245
+ Add support for reading TOTP secret from `AZURE_DEFAULT_TFA_SECRET` environment variable and auto-generating MFA codes.
246
+
247
+ **Use Case:**
248
+ ```bash
249
+ AZURE_DEFAULT_TFA_SECRET=XXX AZURE_DEFAULT_PASSWORD=XXX az2aws --no-prompt
250
+ ```
251
+
252
+ This enables fully automated authentication in CI/CD environments.
253
+
254
+ **Reference:** [aws-azure-login#201](https://github.com/aws-azure-login/aws-azure-login/pull/201)
255
+
256
+ ---
257
+
258
+ ### Issue #35: Support AWS CLI credential_process
259
+
260
+ **Labels:** `enhancement`, `priority: medium`
261
+
262
+ **Description:**
263
+ Add `--credential-process` option to output credentials in JSON format for use with AWS CLI's external credential process.
264
+
265
+ **Use Case:**
266
+ ```ini
267
+ [profile myprofile]
268
+ credential_process=az2aws --no-prompt --credential-process
269
+ ```
270
+
271
+ **Output Format:**
272
+ ```json
273
+ {
274
+ "Version": 1,
275
+ "AccessKeyId": "...",
276
+ "SecretAccessKey": "...",
277
+ "SessionToken": "...",
278
+ "Expiration": "..."
279
+ }
280
+ ```
281
+
282
+ **Reference:** [aws-azure-login#279](https://github.com/aws-azure-login/aws-azure-login/pull/279)
283
+
284
+ ---
285
+
286
+ ### Issue #36: Add Puppeteer SSL certificate verification disable flag
287
+
288
+ **Labels:** `enhancement`, `priority: medium`
289
+
290
+ **Description:**
291
+ Add option to disable SSL verification in Puppeteer for environments where HTTPS proxies use self-signed certificates.
292
+
293
+ Current `--no-verify-ssl` only affects AWS STS connections, not Puppeteer (browser) SSL verification.
294
+
295
+ **Proposed Option:** `--no-verify-ssl-browser` or `--ignore-certificate-errors`
296
+
297
+ **Reference:** [aws-azure-login#172](https://github.com/aws-azure-login/aws-azure-login/pull/172)
298
+
299
+ ---
300
+
301
+ ### Issue #37: Add incognito mode support
302
+
303
+ **Labels:** `enhancement`, `priority: low`
304
+
305
+ **Description:**
306
+ Add `--incognito` option to launch browser in incognito mode.
307
+
308
+ **Use Case:**
309
+ Some organizations want to avoid automatically using SSO credentials.
310
+
311
+ **Reference:** [aws-azure-login#284](https://github.com/aws-azure-login/aws-azure-login/pull/284)
312
+
313
+ ---
314
+
315
+ ## Known Issues from Upstream (aws-azure-login)
316
+
317
+ ---
318
+
319
+ ### Issue #38: "Unable to recognize page state!" error
320
+
321
+ **Labels:** `bug`, `priority: high`
322
+
323
+ **Description:**
324
+ When attempting to log in via CLI mode, an "Unable to recognize page state!" error occurs. GUI mode works fine.
325
+
326
+ **Cause:**
327
+ - Azure login page changes have broken existing selectors
328
+ - Additional authentication screens appear due to organizational device compliance requirements
329
+
330
+ **Impact:**
331
+ The `states` array selectors may not be compatible with the latest Azure AD login pages.
332
+
333
+ **Proposed Solution:**
334
+ - Consider implementing a mechanism to regularly update selectors
335
+ - Add new page states as needed
336
+
337
+ **Reference:** [aws-azure-login#327](https://github.com/aws-azure-login/aws-azure-login/issues/327)
338
+
339
+ ---
340
+
341
+ ### Issue #39: Device compliance error
342
+
343
+ **Labels:** `bug`, `priority: high`
344
+
345
+ **Description:**
346
+ After MFA authentication, a "Device UnSecured Or Non-Compliant" error is displayed.
347
+
348
+ **Cause:**
349
+ The Chromium browser launched by Puppeteer cannot satisfy organizational device compliance policies.
350
+
351
+ **Impact:**
352
+ May not be usable in environments with strict corporate security policies.
353
+
354
+ **Proposed Solution:**
355
+ - Recommend using `--mode=gui`
356
+ - Clearly document custom Chromium path configuration options
357
+
358
+ **Reference:** [aws-azure-login#336](https://github.com/aws-azure-login/aws-azure-login/issues/336)
359
+
360
+ ---
361
+
362
+ ### Issue #40: Slow credential file writing
363
+
364
+ **Labels:** `bug`, `priority: medium`
365
+
366
+ **Description:**
367
+ On macOS, writing credentials to file can take up to 60 seconds.
368
+
369
+ **Impact:**
370
+ The same issue may occur in az2aws (uses the same `ini` package).
371
+
372
+ **Investigation Items:**
373
+ - Check performance of `awsConfig._saveAsync()`
374
+ - Verify no issues with filesystem synchronous writes
375
+
376
+ **Reference:** [aws-azure-login#358](https://github.com/aws-azure-login/aws-azure-login/issues/358)
377
+
378
+ ---
379
+
380
+ ### Issue #41: Support multiple role ARNs
381
+
382
+ **Labels:** `enhancement`, `priority: medium`
383
+
384
+ **Description:**
385
+ Allow specifying multiple roles in `azure_default_role_arn` as comma-separated values, selecting the first available role from left to right.
386
+
387
+ **Use Case:**
388
+ - When sharing configuration files within a team
389
+ - When available roles differ by team member
390
+
391
+ **Current Status:**
392
+ az2aws only supports a single role ARN.
393
+
394
+ **Reference:** [aws-azure-login#330](https://github.com/aws-azure-login/aws-azure-login/issues/330)
395
+
396
+ ---
397
+
398
+ ### Issue #42: Support Microsoft Authenticator passkey
399
+
400
+ **Labels:** `enhancement`, `priority: medium`
401
+
402
+ **Description:**
403
+ Support passkey authentication via Microsoft Authenticator app in GUI mode.
404
+
405
+ **Current Status:**
406
+ Passkey authentication via Bluetooth may not work due to Puppeteer limitations.
407
+
408
+ **Reference:** [aws-azure-login#354](https://github.com/aws-azure-login/aws-azure-login/issues/354)
409
+
410
+ ---
411
+
412
+ ## Additional Feature Requests (from upstream PRs)
413
+
414
+ ---
415
+
416
+ ### Issue #43: Fix https_proxy configuration bug
417
+
418
+ **Labels:** `bug`, `priority: high`
419
+
420
+ **Description:**
421
+ In environments where internet access is only possible through a proxy behind a firewall, the `https_proxy` environment variable is not configured correctly.
422
+
423
+ **Impact:**
424
+ Issue occurred between v3.6.1 and v3.6.2.
425
+
426
+ **Related:**
427
+ May be related to Issue #26 (--no-verify-ssl and proxy settings conflict).
428
+
429
+ **Reference:** [aws-azure-login#349](https://github.com/aws-azure-login/aws-azure-login/pull/349)
430
+
431
+ ---
432
+
433
+ ### Issue #44: Pass 2FA verification code via environment variable
434
+
435
+ **Labels:** `enhancement`, `priority: medium`
436
+
437
+ **Description:**
438
+ Allow passing 2FA verification code via `AZURE_VERIFICATION_CODE` environment variable.
439
+
440
+ **Use Case:**
441
+ ```bash
442
+ export AZURE_VERIFICATION_CODE=$(oathtool --totp --base32 $SECRET)
443
+ az2aws --no-prompt
444
+ ```
445
+
446
+ **Required Changes:**
447
+ - Check environment variable in TFA code input handler
448
+ - Add `--print` flag (output credentials to stdout, don't write to file)
449
+
450
+ **Benefits:**
451
+ - Enables full automation from scripts
452
+ - Easier to use in CI/CD environments
453
+
454
+ **Reference:** [aws-azure-login#262](https://github.com/aws-azure-login/aws-azure-login/pull/262)
455
+
456
+ ---
457
+
458
+ ### Issue #45: Add Chromium executable path option
459
+
460
+ **Labels:** `enhancement`, `priority: medium`
461
+
462
+ **Description:**
463
+ Add option to specify custom Chrome/Chromium executable path.
464
+
465
+ **Background:**
466
+ Some organizations prohibit running the default Chromium executable.
467
+
468
+ **Current Status:**
469
+ Custom path can be specified via `CHROME_BIN` environment variable (`paths.chromeBin`).
470
+
471
+ **Proposed Changes:**
472
+ - Verify current implementation works
473
+ - Consider adding `--chromium-executable` CLI option
474
+
475
+ **Reference:** [aws-azure-login#303](https://github.com/aws-azure-login/aws-azure-login/pull/303)
476
+
477
+ ---
478
+
479
+ ### Issue #46: Add environment variables for existing Chrome profile
480
+
481
+ **Labels:** `enhancement`, `priority: medium`
482
+
483
+ **Description:**
484
+ Add environment variables to use existing Chrome profiles.
485
+
486
+ **Current Status:**
487
+ Can be configured via `paths.userDataDir` and `paths.profileDir`.
488
+
489
+ **Proposed Changes:**
490
+ - Document environment variable names and configuration methods
491
+ - Review PR implementation if needed
492
+
493
+ **Reference:** [aws-azure-login#352](https://github.com/aws-azure-login/aws-azure-login/pull/352)
494
+
495
+ ---
496
+
497
+ ### Issue #47: Support empty profile execution
498
+
499
+ **Labels:** `enhancement`, `priority: high`
500
+
501
+ **Description:**
502
+ Allow execution when profile is empty or not set, as long as `tenant_id` and `app_id` are set via environment variables.
503
+
504
+ **Benefits:**
505
+ - More flexible configuration options
506
+ - Easier configuration in CI/CD environments
507
+ - Enables fully environment variable-based configuration with `--no-prompt`
508
+
509
+ **Required Changes:**
510
+ - Modify `_loadProfileAsync` logic
511
+ - Add execution path using only environment variables
512
+
513
+ **Reference:** [aws-azure-login#203](https://github.com/aws-azure-login/aws-azure-login/pull/203)
514
+
515
+ ---
516
+
517
+ ### Issue #48: Support custom assertionConsumerServiceURL
518
+
519
+ **Labels:** `enhancement`, `priority: high`
520
+
521
+ **Description:**
522
+ Allow customizing the Assertion Consumer Service (ACS) URL in SAML requests.
523
+
524
+ **Background:**
525
+ Some organizations require redirect destinations different from standard AWS SAML endpoints.
526
+
527
+ **Required Changes:**
528
+ - Add `assertion_consumer_service_url` option to profile settings
529
+ - Support via environment variable
530
+ - Use custom URL in `_createLoginUrlAsync`
531
+
532
+ **Current Status:**
533
+ Only supports `AWS_SAML_ENDPOINT`, `AWS_GOV_SAML_ENDPOINT`, `AWS_CN_SAML_ENDPOINT`.
534
+
535
+ **Reference:** [aws-azure-login#200](https://github.com/aws-azure-login/aws-azure-login/pull/200)
536
+
537
+ ---
538
+
539
+ ### Issue #49: Add shell script hooks
540
+
541
+ **Labels:** `enhancement`, `priority: medium`
542
+
543
+ **Description:**
544
+ Add hook functionality to get authentication input from shell scripts.
545
+
546
+ **Script Types:**
547
+ | Script | Default Path | Purpose |
548
+ |--------|--------------|---------|
549
+ | Username | `~/.aws/.aws-azure-login.username.sh` | Get username |
550
+ | Password | `~/.aws/.aws-azure-login.password.sh` | Get password |
551
+ | MFA | `~/.aws/.aws-azure-login.static-challenge.sh` | Get MFA code |
552
+
553
+ **Requirements:**
554
+ - Script must exit with code 0
555
+ - Result returned via stdout
556
+
557
+ **Use Cases:**
558
+ - Integration with password managers (1Password, Bitwarden, etc.)
559
+ - Custom authentication flow implementation
560
+ - Secure credential management
561
+
562
+ **Reference:** [aws-azure-login#145](https://github.com/aws-azure-login/aws-azure-login/pull/145)
563
+
564
+ ---
565
+
566
+ ### Issue #50: Create GitHub Action
567
+
568
+ **Labels:** `enhancement`, `priority: medium`
569
+
570
+ **Description:**
571
+ Make az2aws available as a GitHub Action.
572
+
573
+ **Supported Inputs:**
574
+ - Tenant ID
575
+ - App ID
576
+ - Username / Password
577
+ - TFA secret
578
+ - Role ARN
579
+ - Session duration
580
+
581
+ **Use Case:**
582
+ ```yaml
583
+ - name: Azure Login for AWS
584
+ uses: az2aws/az2aws-action@v1
585
+ with:
586
+ tenant-id: ${{ secrets.AZURE_TENANT_ID }}
587
+ app-id: ${{ secrets.AZURE_APP_ID }}
588
+ username: ${{ secrets.AZURE_USERNAME }}
589
+ password: ${{ secrets.AZURE_PASSWORD }}
590
+ tfa-secret: ${{ secrets.AZURE_TFA_SECRET }}
591
+ ```
592
+
593
+ **Proposed:** Create in a separate repository.
594
+
595
+ **Reference:** [aws-azure-login#204](https://github.com/aws-azure-login/aws-azure-login/pull/204)
596
+
597
+ ---
598
+
599
+ ### Issue #51: Add troubleshooting warnings for GovCloud
600
+
601
+ **Labels:** `enhancement`, `priority: low`
602
+
603
+ **Description:**
604
+ Add warnings about default region for GovCloud users.
605
+
606
+ **Background:**
607
+ Users are not aware of the default region in AWS settings, causing issues in GovCloud environments.
608
+
609
+ **Required Changes:**
610
+ - Explicitly display the region being used
611
+ - Add warning messages about region configuration
612
+
613
+ **Reference:** [aws-azure-login#188](https://github.com/aws-azure-login/aws-azure-login/pull/188)
614
+
615
+ ---
616
+
617
+ ### Issue #52: Improve Dockerfile
618
+
619
+ **Labels:** `enhancement`, `priority: low`
620
+
621
+ **Description:**
622
+ Optimize Docker image:
623
+ - Multi-stage builds for smaller image size
624
+ - Consolidate apt-get commands
625
+ - Use `--no-install-recommends` flag
626
+
627
+ **Reference:** [aws-azure-login#361](https://github.com/aws-azure-login/aws-azure-login/pull/361)
628
+
629
+ ---
630
+
631
+ ### Issue #53: Update GitHub Actions dependencies
632
+
633
+ **Labels:** `dependencies`, `priority: low`
634
+
635
+ **Description:**
636
+ Update workflow dependencies via dependabot.
637
+
638
+ **Reference:** [aws-azure-login#347](https://github.com/aws-azure-login/aws-azure-login/pull/347)
639
+
640
+ ---
641
+
642
+ ### Issue #54: Fix snapcraft.yaml plugin configuration
643
+
644
+ **Labels:** `bug`, `build`
645
+
646
+ **Description:**
647
+ The snapcraft.yaml is using the deprecated `nodejs` plugin configuration. Snapcraft has transitioned to the `npm` plugin for Node.js projects.
648
+
649
+ **Location:** `snapcraft.yaml:13-17`
650
+
651
+ **Current Code (broken):**
652
+ ```yaml
653
+ parts:
654
+ az2aws:
655
+ plugin: nodejs
656
+ nodejs-version: "24"
657
+ nodejs-package-manager: yarn
658
+ source: .
659
+ ```
660
+
661
+ **Fixed Code:**
662
+ ```yaml
663
+ parts:
664
+ az2aws:
665
+ plugin: npm
666
+ npm-include-node: true
667
+ npm-node-version: "24"
668
+ source: .
669
+ ```
670
+
671
+ **Changes:**
672
+ - Changed `plugin` from `nodejs` to `npm`
673
+ - Replaced `nodejs-version` with `npm-node-version`
674
+ - Replaced `nodejs-package-manager: yarn` with `npm-include-node: true`
675
+
676
+ **Impact:**
677
+ Without this fix, the snap package cannot be built correctly using the current snapcraft toolchain.
678
+
679
+ ---
680
+
681
+ ### Issue #55: Refactor README installation section by method instead of platform
682
+
683
+ **Labels:** `documentation`, `enhancement`
684
+ **Status:** Resolved (implemented in README installation section)
685
+
686
+ **Description:**
687
+ This issue tracked refactoring the README installation section, which was previously organized by platform (Windows, Linux, Docker, Snap) and caused duplication and made it harder to find the preferred installation method. The README has been updated to organize installation by method instead.
688
+
689
+ **Changes:**
690
+ - Reorganized structure from platform-based to method-based
691
+ - Added mise as the recommended installation method
692
+ - Consolidated Linux and Windows specific notes as subsections under npm
693
+ - Simplified overall documentation
694
+
695
+ **New Structure:**
696
+ ```
697
+ ## Installation
698
+ ### mise (Recommended)
699
+ ### npm
700
+ - Linux Notes
701
+ - Windows Notes
702
+ ### Docker
703
+ ### Snap
704
+ ```
705
+
706
+ **Benefits:**
707
+ - Cleaner, less redundant documentation
708
+ - mise provides the simplest cross-platform installation experience
709
+ - Users can quickly find their preferred installation method
710
+ - Platform-specific notes are only shown where relevant (npm section)
711
+
712
+ ---
713
+
714
+ ### [RESOLVED] Issue #56: Create issues.md to track project issues
715
+
716
+ **Labels:** `documentation`
717
+
718
+ **Description:**
719
+ Created an issues documentation file (`issue/issues.md`) to track and document all known bugs, feature requests, and enhancements for the project.
720
+
721
+ **Tasks:**
722
+ - Document all known issues with descriptions and proposed fixes
723
+ - Maintain issue numbering consistent with GitHub issues
724
+ - Keep the list updated as issues are resolved or new ones are discovered
725
+
726
+ **Benefits:**
727
+ - Centralized documentation of all project issues
728
+ - Easier onboarding for new contributors
729
+ - Clear tracking of issue status and priorities
package/lib/login.js CHANGED
@@ -119,9 +119,9 @@ const states = [
119
119
  // eslint-disable-next-line
120
120
  (m) => { var _a; return (_a = m === null || m === void 0 ? void 0 : m.textContent) !== null && _a !== void 0 ? _a : ""; }, msaTile);
121
121
  const accounts = [
122
- { message: aadTileMessage, selector: "#aadTileTitle" },
123
- { message: msaTileMessage, selector: "#msaTileTitle" },
124
- ];
122
+ aadTile ? { message: aadTileMessage, selector: "#aadTileTitle" } : null,
123
+ msaTile ? { message: msaTileMessage, selector: "#msaTileTitle" } : null,
124
+ ].filter((a) => a !== null);
125
125
  let account;
126
126
  if (accounts.length === 0) {
127
127
  throw new CLIError_1.CLIError("No accounts found on account selection screen.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "az2aws",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Use Azure AD SSO to log into the AWS CLI. A modern, actively maintained alternative to aws-azure-login.",
5
5
  "main": "index.js",
6
6
  "author": {