neozip-cli 0.75.2-beta → 0.90.0

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/DOCUMENTATION.md +20 -9
  3. package/README.md +55 -31
  4. package/dist/src/commands/mintTimestampProof.js +335 -0
  5. package/dist/src/commands/verifyEmail.js +146 -0
  6. package/dist/src/config/ConfigSetup.js +50 -20
  7. package/dist/src/config/ConfigStore.js +36 -3
  8. package/dist/src/index.js +1 -1
  9. package/dist/src/neolist.js +25 -11
  10. package/dist/src/neounzip.js +324 -66
  11. package/dist/src/neozip/blockchain.js +5 -5
  12. package/dist/src/neozip/createZip.js +211 -44
  13. package/dist/src/neozip/upgradeZip.js +182 -0
  14. package/dist/src/neozip.js +160 -24
  15. package/env.example +10 -0
  16. package/package.json +97 -82
  17. package/dist/neozipkit-bundles/blockchain.js +0 -13725
  18. package/dist/neozipkit-bundles/browser.js +0 -6186
  19. package/dist/neozipkit-bundles/core.js +0 -3839
  20. package/dist/neozipkit-bundles/node.js +0 -17730
  21. package/dist/neozipkit-wrappers/blockchain/core/contracts.js +0 -16
  22. package/dist/neozipkit-wrappers/blockchain/index.js +0 -2
  23. package/dist/neozipkit-wrappers/core/ZipDecompress.js +0 -2
  24. package/dist/neozipkit-wrappers/core/components/HashCalculator.js +0 -2
  25. package/dist/neozipkit-wrappers/core/components/Logger.js +0 -2
  26. package/dist/neozipkit-wrappers/core/constants/Errors.js +0 -2
  27. package/dist/neozipkit-wrappers/core/constants/Headers.js +0 -2
  28. package/dist/neozipkit-wrappers/core/encryption/ZipCrypto.js +0 -7
  29. package/dist/neozipkit-wrappers/core/index.js +0 -3
  30. package/dist/neozipkit-wrappers/index.js +0 -13
  31. package/dist/neozipkit-wrappers/node/index.js +0 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,84 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ **Release notes** for each version are documented here (not in a separate “what’s new” file).
9
+
10
+ ## [0.90.0] - 2026-03-18
11
+
12
+ ### Added
13
+
14
+ - **Full AES-256 encryption support** — create, list, and extract password-protected archives with WinZip-compatible AES-256 (default) or legacy PKZIP encryption.
15
+
16
+ #### Creating encrypted archives
17
+
18
+ - **AES-256 (default)** — use `-e` / `--encrypt` or `--aes256`.
19
+
20
+ ```bash
21
+ neozip -e secure.nzip file.txt
22
+ neozip -e -P "mypassword" secure.nzip file.txt
23
+ neozip --aes256 -P "mypassword" secure.nzip file.txt folder/
24
+ ```
25
+
26
+ - **Legacy PKZIP** — use `--pkzip` or `--pkzip-encrypt` only for older-tool compatibility (weak; prefer AES-256 for sensitive data).
27
+
28
+ ```bash
29
+ neozip --pkzip -P "mypassword" legacy.nzip file.txt
30
+ ```
31
+
32
+ #### Listing encrypted archives
33
+
34
+ - **neolist** lists contents; filenames are visible without a password. Encryption method (AES-256 or PKZIP) is shown where applicable. Extraction requires the password.
35
+
36
+ #### Extracting encrypted archives
37
+
38
+ - **neounzip** auto-detects AES-256 vs PKZIP. Use `-P` / `--password`.
39
+
40
+ ```bash
41
+ neounzip -P "mypassword" secure.nzip output/
42
+ neounzip --in-memory -P "mypassword" secure.nzip output/
43
+ ```
44
+
45
+ - Wrong password yields a clear error (e.g. bad password / decryption failed).
46
+
47
+ #### Compatibility
48
+
49
+ - **AES-256**: WinZip, 7-Zip, and other tools supporting ZIP AES extension (AE-2).
50
+ - **PKZIP** (ZipCrypto): create/extract legacy archives only.
51
+
52
+ #### Encryption options summary
53
+
54
+ | Command | Option | Effect |
55
+ |-----------|--------------------|--------|
56
+ | neozip | `-e`, `--encrypt` | AES-256 (default); prompt if no `-P` |
57
+ | neozip | `--aes256` | Explicit AES-256 |
58
+ | neozip | `--pkzip` | Legacy PKZIP encryption |
59
+ | neozip | `-P`, `--password`| Encryption password |
60
+ | neounzip | `-P`, `--password` | Decryption password (AES-256/PKZIP auto-detected) |
61
+ | neounzip | `--pkzip-decrypt` | Force legacy PKZip 2.0 decryption |
62
+
63
+ See [README.md](README.md) and [DOCUMENTATION.md](DOCUMENTATION.md) for more examples.
64
+
65
+ ---
66
+
67
+ ## [0.80.0] - 2026-03-04
68
+
69
+ ### Added
70
+
71
+ - **Zipstamp (blockchain timestamping)**
72
+ - Display Zipstamp server URL when submitting timestamp proof (configurable via `ZIPSTAMP_SERVER_URL`)
73
+ - `neozip verify-email` command and npm script for Zipstamp email configuration
74
+ - Post-mint summary after `neozip mint`: status, token ID, network, contract, transaction, block, and block timestamp (minted) in the same style as Zipstamp verification
75
+ - **Scripts**
76
+ - `scripts/remove-env-from-history.sh` to remove `.env.local` and `.env.local.rem` from git history (see `scripts/README.md`)
77
+ - **Configuration**
78
+ - `neozip config` and `neozip init` work when run via ts-node (fixed dynamic import resolution for `.ts` vs `.js`)
79
+
80
+ ### Fixed
81
+
82
+ - `neozip config` / `neozip init` no longer fail with "Cannot find module './config/ConfigSetup.js'" when run via `yarn neozip-config` or ts-node
83
+
84
+ ---
85
+
8
86
  ## [0.70.0-alpha] - 2025-11-21
9
87
 
10
88
  ### ⚠️ Alpha Release Notice
package/DOCUMENTATION.md CHANGED
@@ -17,7 +17,7 @@ npm install -g neozip-cli@alpha
17
17
  neozip archive.nzip file1.txt file2.txt folder/
18
18
 
19
19
  # Extract files from archive
20
- neounzip archive.nzip extracted/
20
+ neounzip archive.nzip tests/extracted/
21
21
 
22
22
  # List archive contents
23
23
  neolist archive.nzip
@@ -47,11 +47,9 @@ neolist --help # Show listing help
47
47
  - NeoZip ecosystem overview
48
48
  - Technical innovations
49
49
 
50
- - **[CHANGELOG.md](CHANGELOG.md)** - Version history
51
- - Release notes
52
- - Feature additions
53
- - Known limitations
54
- - Breaking changes
50
+ - **[CHANGELOG.md](CHANGELOG.md)** - Version history and release notes
51
+ - Detailed changes per version (including feature guides, e.g. AES-256 in v0.90.0)
52
+ - Known limitations and breaking changes
55
53
 
56
54
  - **[env.example](env.example)** - Environment variable configuration
57
55
  - Wallet configuration
@@ -98,10 +96,15 @@ neolist --help # Show listing help
98
96
  - No compression (fastest)
99
97
  - Useful for already-compressed files
100
98
 
101
- - **PKZIP Encryption**
102
- - Legacy encryption for maximum compatibility
99
+ - **AES-256 Encryption** (default, recommended)
100
+ - Strong WinZip-compatible AES-256 encryption
103
101
  - Password-protected archives
104
- - InfoZip-compatible encrypted archives
102
+ - Compatible with WinZip, 7-Zip, and other AES-capable tools
103
+
104
+ - **PKZIP Encryption** (legacy)
105
+ - Traditional encryption for maximum compatibility
106
+ - Use `--pkzip` flag to select
107
+ - Not recommended for sensitive data
105
108
 
106
109
  ### Blockchain Features
107
110
 
@@ -116,6 +119,11 @@ neolist --help # Show listing help
116
119
  - Cryptographic proof of archive existence
117
120
  - Timestamp verification
118
121
 
122
+ - **Zipstamp**
123
+ - Ethereum blockchain timestamping via Zipstamp server
124
+ - Pending timestamps (TS-SUBMIT.NZIP) can be upgraded to confirmed (TIMESTAMP.NZIP)
125
+ - Use `neozip upgrade <archive> [output] [--wait]` to upgrade pending timestamps
126
+
119
127
  - **Wallet Integration**
120
128
  - Interactive wallet setup wizard (`neozip init`)
121
129
  - Configuration management (`neozip config`)
@@ -144,6 +152,9 @@ neozip init
144
152
 
145
153
  # View or modify configuration
146
154
  neozip config
155
+
156
+ # Upgrade pending Zipstamp timestamp to confirmed
157
+ neozip upgrade archive.nzip [output.nzip] [--wait]
147
158
  ```
148
159
 
149
160
  Configuration is stored in `~/.neozip/wallet.json` and supports:
package/README.md CHANGED
@@ -6,9 +6,9 @@
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
  [![Node.js Version](https://img.shields.io/badge/node-%3E%3D16.0.0-brightgreen)](https://nodejs.org/)
8
8
 
9
- ## ⚠️ Beta Release Notice
9
+ ## Release Notice
10
10
 
11
- **This is a beta release (v0.75.0-beta).** This software is in active development and may contain bugs or incomplete features. While more stable than alpha releases, please use with caution in production environments.
11
+ **Current version: v0.90.0.** This release adds full AES-256 encryption support. See [CHANGELOG.md](CHANGELOG.md) for details.
12
12
 
13
13
  - **API Stability**: Command-line interface is becoming more stable but may still change
14
14
  - **Testing**: Please test thoroughly and report any issues
@@ -21,7 +21,7 @@ NeoZip CLI is a modern, full-featured ZIP utility that provides:
21
21
  - **Standard ZIP Compatibility**: ~99% compatible with InfoZip utilities
22
22
  - **Blockchain Integration**: Tokenize archives and verify integrity on-chain
23
23
  - **Advanced Compression**: Zstd, Deflate, and Store compression methods
24
- - **Encryption Support**: PKZIP encryption
24
+ - **Encryption Support**: AES-256 (default) and PKZIP encryption
25
25
  - **Cross-Platform**: Works on macOS, Linux, and Windows
26
26
 
27
27
  ## Features
@@ -42,13 +42,15 @@ NeoZip CLI is a modern, full-featured ZIP utility that provides:
42
42
  - Compression levels: 0-9 (0=store, 9=best compression)
43
43
 
44
44
  ### Encryption
45
- - **PKZIP**: Legacy encryption (maximum compatibility)
45
+ - **AES-256**: Strong encryption (default, recommended)
46
+ - **PKZIP**: Legacy encryption (for compatibility only)
46
47
  - Password-protected archives
47
- - InfoZip-compatible encrypted archives
48
+ - Auto-detection of encryption method during extraction
48
49
 
49
50
  ### Blockchain Features
50
51
  - **Tokenization**: Create on-chain tokens for archives
51
52
  - **OpenTimestamp**: Bitcoin blockchain timestamping
53
+ - **Zipstamp**: Ethereum blockchain timestamping (Zipstamp server)
52
54
  - **Integrity Verification**: Verify archive integrity on-chain
53
55
  - **Network Support**: Base Sepolia, Base Mainnet, Arbitrum, and more
54
56
 
@@ -69,10 +71,10 @@ NeoZip CLI is a modern, full-featured ZIP utility that provides:
69
71
  - Node.js 16.0.0 or higher
70
72
  - npm or yarn package manager
71
73
 
72
- ### Install from npm (Beta Release)
74
+ ### Install from npm
73
75
 
74
76
  ```bash
75
- npm install -g neozip-cli@beta
77
+ npm install -g neozip-cli
76
78
  ```
77
79
 
78
80
  After installation, the following commands will be available:
@@ -103,7 +105,7 @@ neozip -r archive.nzip ./project/
103
105
  neozip -b tokenized.nzip file1.txt file2.txt
104
106
 
105
107
  # Extract files from archive
106
- neounzip archive.nzip extracted/
108
+ neounzip archive.nzip tests/extracted/
107
109
 
108
110
  # Extract and verify tokenized archive
109
111
  neounzip -t tokenized.nzip
@@ -137,14 +139,20 @@ neozip -0 output.nzip ./src/
137
139
  ### Encryption Examples
138
140
 
139
141
  ```bash
140
- # Create encrypted archive (will prompt for password)
142
+ # Create AES-256 encrypted archive (default, will prompt for password)
141
143
  neozip -e secure.nzip file.txt
142
144
 
143
- # Create encrypted archive with password
145
+ # Create AES-256 encrypted archive with password
144
146
  neozip -e -P "mypassword" secure.nzip file.txt
145
147
 
146
- # Extract encrypted archive
147
- neounzip -P "mypassword" secure.nzip extracted/
148
+ # Explicitly use AES-256
149
+ neozip --aes256 -P "mypassword" secure.nzip file.txt
150
+
151
+ # Use legacy PKZIP encryption (weak, for compatibility only)
152
+ neozip --pkzip -P "mypassword" legacy.nzip file.txt
153
+
154
+ # Extract encrypted archive (auto-detects AES-256 or PKZIP)
155
+ neounzip -P "mypassword" secure.nzip tests/extracted/
148
156
  ```
149
157
 
150
158
  ### Blockchain Examples
@@ -153,11 +161,17 @@ neounzip -P "mypassword" secure.nzip extracted/
153
161
  # Tokenize archive on Base Sepolia (default)
154
162
  neozip -b tokenized.nzip file.txt
155
163
 
156
- # Tokenize with OpenTimestamp proof
164
+ # Tokenize with OpenTimestamp proof (Bitcoin)
157
165
  neozip -ots timestamped.nzip file.txt
158
166
 
167
+ # Create Zipstamp timestamp (Ethereum)
168
+ neozip -ts zipstamp.nzip file.txt
169
+
170
+ # Upgrade pending Zipstamp timestamp to confirmed
171
+ neozip upgrade zipstamp.nzip [output.nzip] [--wait]
172
+
159
173
  # Extract and verify blockchain integrity
160
- neounzip tokenized.nzip extracted/
174
+ neounzip tokenized.nzip tests/extracted/
161
175
  ```
162
176
 
163
177
  ## Commands
@@ -176,10 +190,14 @@ neozip [options] <archive> [files...]
176
190
  - `-0` to `-9` - Compression level (0=store, 9=best)
177
191
  - `-x, --exclude <pattern>` - Exclude files matching pattern
178
192
  - `-i, --include <pattern>` - Include only matching files
179
- - `-e, --encrypt` - Encrypt files (will prompt for password)
193
+ - `-e, --encrypt` - Encrypt files with AES-256 (default, will prompt for password)
180
194
  - `-P, --password <pwd>` - Encrypt with password
195
+ - `--aes256` - Use AES-256 encryption (default, recommended)
196
+ - `--pkzip` - Use legacy PKZIP encryption (weak, for compatibility only)
181
197
  - `-b, --blockchain` - Enable blockchain tokenization
182
- - `-ots, --opentimestamp` - Enable OpenTimestamp proof
198
+ - `-ots, --opentimestamp` - Enable OpenTimestamp proof (Bitcoin)
199
+ - `-ts, --timestamp` - Enable Zipstamp timestamp (Ethereum)
200
+ - `--timestamp-email <email>` - Email for Zipstamp server (some servers require verified email)
183
201
  - `-T, --test-integrity` - Test archive after creation
184
202
  - `-v, --verbose` - Enable verbose output
185
203
  - `-q, --quiet` - Suppress output
@@ -187,7 +205,8 @@ neozip [options] <archive> [files...]
187
205
  **Configuration Commands:**
188
206
  ```bash
189
207
  neozip init # Interactive wallet setup wizard
190
- neozip config # Show current configuration
208
+ neozip config # Show current configuration
209
+ neozip upgrade <archive> [output] [--wait] # Upgrade pending Zipstamp timestamp to confirmed
191
210
  ```
192
211
 
193
212
  **Examples:**
@@ -222,7 +241,7 @@ neounzip [options] <archive> [output]
222
241
  - `-o, --overwrite` - Overwrite files without prompting
223
242
  - `-t, --test` - Test archive integrity
224
243
  - `-l, --list` - List contents without extracting
225
- - `-P, --password <pwd>` - Password for encrypted archives
244
+ - `-P, --password <pwd>` - Password for encrypted archives (AES-256 and PKZIP auto-detected)
226
245
  - `-x, --exclude <pattern>` - Exclude files from extraction
227
246
  - `-i, --include <pattern>` - Include only matching files
228
247
  - `-j, --junk-paths` - Extract files without directory structure
@@ -235,16 +254,16 @@ neounzip [options] <archive> [output]
235
254
  neounzip archive.nzip
236
255
 
237
256
  # Extract to specific directory
238
- neounzip archive.nzip ./extracted/
257
+ neounzip archive.nzip tests/extracted/
239
258
 
240
259
  # Test archive integrity
241
260
  neounzip -t archive.nzip
242
261
 
243
262
  # Extract with exclusions
244
- neounzip -x "*.log" archive.nzip extracted/
263
+ neounzip -x "*.log" archive.nzip tests/extracted/
245
264
 
246
265
  # Extract encrypted archive
247
- neounzip --password "mypassword" secure.nzip extracted/
266
+ neounzip --password "mypassword" secure.nzip tests/extracted/
248
267
  ```
249
268
 
250
269
  ### `neolist` - List Archive Contents
@@ -303,6 +322,8 @@ You can also configure via environment variables:
303
322
  ```bash
304
323
  export NEOZIP_WALLET_PASSKEY="your-wallet-key"
305
324
  export NEOZIP_NETWORK="base-sepolia" # or base-mainnet, arbitrum-sepolia, etc.
325
+ export ZIPSTAMP_SERVER_URL="https://zipstamp-dev.neozip.io" # Zipstamp server (optional)
326
+ export NEOZIP_TIMESTAMP_EMAIL="your@email.com" # Email for Zipstamp (some servers require verified email)
306
327
  ```
307
328
 
308
329
  ### Configuration File
@@ -329,7 +350,7 @@ neozip project.nzip src/ docs/ README.md
329
350
  neolist project.nzip
330
351
 
331
352
  # Extract files
332
- neounzip project.nzip extracted/
353
+ neounzip project.nzip tests/extracted/
333
354
 
334
355
  # Test integrity
335
356
  neounzip -t project.nzip
@@ -364,10 +385,13 @@ neozip -r -x "node_modules" -x "*.log" project.nzip ./
364
385
  ### Encryption
365
386
 
366
387
  ```bash
367
- # Create encrypted archive
388
+ # Create AES-256 encrypted archive (default)
368
389
  neozip -e -P "secure-password" secret.nzip sensitive-files/
369
390
 
370
- # Extract encrypted archive
391
+ # Create legacy PKZIP encrypted archive
392
+ neozip --pkzip -P "secure-password" legacy.nzip sensitive-files/
393
+
394
+ # Extract encrypted archive (auto-detects encryption method)
371
395
  neounzip -P "secure-password" secret.nzip decrypted/
372
396
  ```
373
397
 
@@ -467,19 +491,19 @@ neozip init
467
491
  # Verify password is correct
468
492
  neounzip -P "your-password" archive.nzip
469
493
 
470
- # Try different encryption method
471
- neozip --pkzip-encrypt -P "password" archive.nzip files/
494
+ # Use legacy PKZIP if AES-256 is not supported by target tool
495
+ neozip --pkzip -P "password" archive.nzip files/
472
496
  ```
473
497
 
474
498
  ## Contributing
475
499
 
476
- We welcome feedback and contributions! Since this is a beta release, we're actively seeking input:
500
+ We welcome feedback and contributions:
477
501
 
478
502
  1. **Report Issues**: Use [GitHub Issues](https://github.com/NeoWareInc/neozip-support/issues) or email [support@neozip.io](mailto:support@neozip.io)
479
503
  2. **Suggest Features**: Share your ideas and use cases
480
504
  3. **Test and Provide Feedback**: Help us improve by testing and reporting your experience
481
505
 
482
- **Important**: This is a beta release. API and behavior may still change. Please test thoroughly.
506
+ **Important**: Please test thoroughly and report issues. See [CHANGELOG.md](CHANGELOG.md) for version history.
483
507
 
484
508
  ## License
485
509
 
@@ -499,6 +523,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
499
523
 
500
524
  ---
501
525
 
502
- **Version**: 0.75.0-beta
503
- **Status**: Beta Release
504
- **Last Updated**: December 26, 2025
526
+ **Version**: 0.90.0
527
+ **Status**: Release (see [CHANGELOG.md](CHANGELOG.md) for latest changes)
528
+ **Last Updated**: March 18, 2026