quickwin 2.0.0 → 2.1.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 (102) hide show
  1. package/README.en.md +17 -22
  2. package/README.md +1 -3
  3. package/examples/exec_server.js +133 -29
  4. package/examples/exec_server_worker.js +1 -1
  5. package/examples/exec_server_worker.ts +2 -2
  6. package/examples/pdf_preview2.js +1 -1
  7. package/examples/pdf_preview2.ts +1 -1
  8. package/examples/pdf_viewer.js +132 -28
  9. package/examples/pdf_viewer.tsx +1 -1
  10. package/examples/test_gallery.js +131 -27
  11. package/examples/test_react_lazy.js +131 -27
  12. package/examples/test_react_listbox.js +131 -27
  13. package/examples/test_root_window.js +131 -27
  14. package/examples/test_tab.js +131 -27
  15. package/lib/certs.js +13 -8
  16. package/lib/certs.ts +13 -8
  17. package/lib/fetch.js +51 -3
  18. package/lib/fetch.ts +38 -3
  19. package/lib/ffi/bind.js +94 -5
  20. package/lib/ffi/bind.ts +107 -10
  21. package/lib/ffi/ctype.js +33 -7
  22. package/lib/ffi/ctype.ts +48 -10
  23. package/lib/ffi/struct.js +92 -14
  24. package/lib/ffi/struct.ts +108 -19
  25. package/lib/react-qw/components/ListView.js +1 -0
  26. package/lib/react-qw/components/PathPicker.js +2 -2
  27. package/lib/react-qw/index.js +1 -1
  28. package/lib/react-qw/index.ts +4 -1
  29. package/lib/text-measure.js +3 -1
  30. package/lib/text-measure.ts +4 -3
  31. package/lib/websocket.js +32 -2
  32. package/lib/websocket.ts +25 -2
  33. package/lib/windows/advapi32.js +53 -0
  34. package/lib/windows/advapi32.ts +64 -0
  35. package/lib/windows/comctl32.js +15 -15
  36. package/lib/windows/comctl32.ts +15 -16
  37. package/lib/windows/comdlg32.js +3 -2
  38. package/lib/windows/comdlg32.ts +3 -2
  39. package/lib/windows/gdi32.js +328 -26
  40. package/lib/windows/gdi32.ts +349 -26
  41. package/lib/windows/kernel32.js +206 -10
  42. package/lib/windows/kernel32.ts +225 -10
  43. package/lib/windows/msimg32.js +38 -0
  44. package/lib/windows/msimg32.ts +45 -0
  45. package/lib/windows/ntdll.js +3 -2
  46. package/lib/windows/ntdll.ts +3 -2
  47. package/lib/windows/ole32.js +1 -1
  48. package/lib/windows/ole32.ts +1 -1
  49. package/lib/windows/psapi.js +32 -0
  50. package/lib/windows/psapi.ts +37 -0
  51. package/lib/windows/shell32.js +5 -3
  52. package/lib/windows/shell32.ts +5 -3
  53. package/lib/windows/structs.js +135 -0
  54. package/lib/windows/structs.ts +144 -0
  55. package/lib/windows/user32.js +202 -99
  56. package/lib/windows/user32.ts +204 -99
  57. package/lib/windows/version.js +29 -0
  58. package/lib/windows/version.ts +35 -0
  59. package/lib/windows/winspool.js +71 -0
  60. package/lib/windows/winspool.ts +80 -0
  61. package/package.json +1 -1
  62. package/quickwin.d.ts +11 -5
  63. package/quickwin_const.d.ts +136 -0
  64. package/qwin-nowasm-x86.exe +0 -0
  65. package/qwin-nowasm.exe +0 -0
  66. package/qwin-x86.exe +0 -0
  67. package/qwin.exe +0 -0
  68. package/test/run.js +7 -0
  69. package/test/run.ts +7 -0
  70. package/test/test_basic_fetch.js +21 -0
  71. package/test/test_basic_fetch.ts +17 -0
  72. package/test/test_ffi.js +6 -6
  73. package/test/test_ffi.ts +6 -6
  74. package/test/test_ffi_abi.js +55 -0
  75. package/test/test_ffi_abi.ts +56 -0
  76. package/test/test_ffi_array.js +116 -0
  77. package/test/test_ffi_array.ts +141 -0
  78. package/test/test_ffi_bind.js +82 -0
  79. package/test/test_ffi_bind.ts +71 -0
  80. package/test/test_files.js +102 -0
  81. package/test/test_files.ts +121 -0
  82. package/test/test_gdi_draw.js +681 -0
  83. package/test/test_gdi_draw.ts +725 -0
  84. package/test/test_net_fetch.js +4 -3
  85. package/test/test_net_fetch.ts +4 -3
  86. package/test/test_printer.js +137 -0
  87. package/test/test_printer.ts +148 -0
  88. package/test/test_proc.js +141 -0
  89. package/test/test_proc.ts +163 -0
  90. package/test/test_react_complex.js +131 -27
  91. package/test/test_react_counter.js +131 -27
  92. package/test/test_react_flex.js +131 -27
  93. package/test/test_react_hidden.js +131 -27
  94. package/test/test_react_listview_link.js +131 -27
  95. package/test/test_react_notify.js +131 -27
  96. package/test/test_react_render.js +131 -27
  97. package/test/test_registry.js +74 -0
  98. package/test/test_registry.ts +95 -0
  99. package/test/test_sysinfo.js +122 -0
  100. package/test/test_sysinfo.ts +141 -0
  101. package/test/test_wolfssl_read.js +45 -44
  102. package/test/test_wolfssl_read.ts +42 -42
package/README.en.md CHANGED
@@ -168,8 +168,7 @@ Both sides must set `onmessage = null` when communication is complete. This rele
168
168
 
169
169
  ### Prerequisites
170
170
 
171
- - MSYS2 UCRT64 or MINGW64
172
- - Node.js (for TypeScript compilation via tsc)
171
+ - **podman** (dev container; build/test/QEMU verification all run inside the container, consistent with CI)
173
172
  - Git (for submodules)
174
173
 
175
174
  ### Build
@@ -178,38 +177,34 @@ Both sides must set `onmessage = null` when communication is complete. This rele
178
177
  git clone --recursive https://github.com/xna00/quickwin.git
179
178
  cd quickwin
180
179
 
181
- .\run.ps1 "make wamr" # build WAMR library (first time only)
182
- .\run.ps1 "make small" # build qwin.exe (-Os + LTO, ~1.5MB)
183
- .\run.ps1 "make js" # compile TypeScript
184
- .\run.ps1 "make test" # run all tests
180
+ ./docker/dev-podman.sh up # start dev container (reuses ghcr.io/xna00/quickwin-dev)
181
+ podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make test TEST=-net'
185
182
  ```
186
183
 
187
- `make nowasm` produces a smaller `_build/qwin-nowasm.exe` without WASM/WAMR
188
- (no `WebAssembly` global); run `make test TEST=-wasm` to skip WASM tests on it.
184
+ `make cc64` produces `_build/qwin.exe`. `cc64-nowasm` produces a smaller
185
+ `_build/qwin-nowasm.exe` without WASM/WAMR (no `WebAssembly` global); for
186
+ that build run `make test TEST=-wasm` to skip WASM tests.
189
187
 
190
188
  ### Build Targets
191
189
 
192
190
  | Target | Description |
193
191
  |--------|-------------|
194
- | `make` / `make nodebug` | fast build |
195
- | `make small` | `-Os` + LTO + strip, ~1.5MB (recommended) |
196
- | `make minimal` | `small` + UPX compression |
197
- | `make release` | `-O2` + LTO + strip (not `-Os` optimized) |
198
- | `make debug` | debug build with bridge logs |
199
- | `make nowasm` | no WASM/WAMR build → `_build/qwin-nowasm.exe` (~1.2MB, no `WebAssembly` global) |
200
- | `make cc64-small` | cross-compile x86_64 `_build/qwin.exe` (`-Os`, used by CI) |
201
- | `make cc32-small` | cross-compile i686 `_build/qwin-x86.exe` (`-Os`, XP-compatible, used by CI) |
192
+ | `make cc64` | cross-compile x86_64 → `_build/qwin.exe` (default target, `BUILD=fast`) |
193
+ | `make cc32` | cross-compile i686/XP → `_build/qwin-x86.exe` |
194
+ | `make cc64-nowasm` / `cc32-nowasm` | no WASM/WAMR builds |
195
+ | `BUILD=fast\|small\|debug` | build flavor: `make cc64 BUILD=small` = `-Os`+LTO (~1.5MB, used by CI) |
202
196
  | `make js` | compile TypeScript via tsc |
203
- | `make wasm` | compile WAT → WASM fixtures |
197
+ | `make wasm` | compile `test/*.wat` → WASM fixtures |
204
198
  | `make test` | run all tests |
205
199
  | `make test TEST=-net` | skip network tests (fast) |
206
200
  | `make test TEST=wasm` | run WASM tests only |
207
- | `make wamr` | rebuild WAMR library |
208
- | `make embed-js` | embed `embed.js` into exe (use `JS_EMBED=file.js`) |
209
- | `make embed-js-br` | embed brotli-compressed JS into exe |
210
- | `make exec_server` | Bundle `examples/exec_server.ts` and brotli-embed into `_build/exec_server.exe` |
201
+ | `make exec_server` | bundle `examples/exec_server.ts` and brotli-embed into `_build/exec_server.exe` |
202
+ | `make embed-js` / `embed-js-br` | embed JS (brotli-compressed) into exe |
211
203
  | `make npm-pkg` | package into `dist/quickwin/` |
212
- | `make clean` | clean build artifacts |
204
+ | `make gen-const` | regenerate `quickwin_const.d.ts` |
205
+ | `make clean` / `distclean` | clean (wipes all of `_build/`; afterwards run `make js wasm`) |
206
+
207
+ Build and troubleshooting details: `.agents/DEVELOPMENT_WORKFLOW.md`.
213
208
 
214
209
  ## License
215
210
 
package/README.md CHANGED
@@ -170,8 +170,6 @@ parent.onmessage = (e) => {
170
170
  - **podman**(开发容器;构建/测试/QEMU 验证都在容器内完成,与 CI 一致)
171
171
  - Git(用于子模块)
172
172
 
173
- > 也支持 MSYS2 原生直接 `make`,详见 `.agents/DEVELOPMENT_WORKFLOW.md`。
174
-
175
173
  ### 构建
176
174
 
177
175
  ```bash
@@ -195,7 +193,7 @@ podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make
195
193
  | `make cc64-nowasm` / `cc32-nowasm` | 无 WASM/WAMR 版 |
196
194
  | `BUILD=fast\|small\|debug` | 构建 flavor:`make cc64 BUILD=small` = `-Os`+LTO(约 1.5MB,CI 用) |
197
195
  | `make js` | 通过 tsc 编译 TypeScript |
198
- | `make wasm` / `make wat` | 编译 WAT → WASM fixtures |
196
+ | `make wasm` | 编译 `test/*.wat` → WASM fixtures |
199
197
  | `make test` | 运行全部测试 |
200
198
  | `make test TEST=-net` | 跳过网络测试(快速) |
201
199
  | `make test TEST=wasm` | 仅运行 WASM 测试 |