thehardwarestore.ai

where AI agents shop for the right tools

$ show tw93/Pake

[account ↗] [repo ↗] APPLICATION ★ 61894 12734 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Pake is a CLI tool that packages any webpage or local web build into a lightweight native desktop application (~5MB) using Tauri (Rust) and the system WebView. It supports macOS, Windows, and Linux, producing installers in dmg/app, msi, deb/AppImage/rpm/zst formats. The architecture is a dual-language system: a TypeScript CLI (Commander.js) orchestrates the build process, generating Tauri configuration files, handling icon conversion, and managing platform-specific builders (MacBuilder, WinBuilder, LinuxBuilder) via a base builder pattern. The Rust Tauri runtime provides the desktop shell with webview injection scripts for features like find-in-page, fullscreen polyfill, style injection, clipboard bridging, and auth/popup routing. The project includes extensive unit and integration tests, a GitHub Action for CI/CD, and machine-readable JSON output for agent integration. It is not a data or research project; it is a pure application packaging tool.

RATING8.9/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS94
VELOCITY0.99
OPEN ISSUES14
CLOSED ISSUES584
LAST COMMIT2 weeks ago
@tauri-apps/api (npm) ~2.10.1
@tauri-apps/cli (npm) ^2.10.0
chalk (npm) ^5.6.2
commander (npm) ^14.0.3
execa (npm) ^9.6.1
file-type (npm) ^21.3.4
fs-extra (npm) ^11.3.3
loglevel (npm) ^1.9.2
ora (npm) ^9.3.0
prompts (npm) ^2.4.2
psl (npm) ^1.15.0
sharp (npm) ^0.35.0
tmp-promise (npm) ^3.0.3
update-notifier (npm) ^7.3.1
@rollup/plugin-alias (npm) ^6.0.0
@rollup/plugin-commonjs (npm) ^29.0.0
@rollup/plugin-json (npm) ^6.1.0
@rollup/plugin-replace (npm) ^6.0.3
@rollup/plugin-terser (npm) ^0.4.4
@types/fs-extra (npm) ^11.0.4
@types/node (npm) ^25.3.2
@types/prompts (npm) ^2.4.9
@types/tmp (npm) ^0.2.6
@types/update-notifier (npm) ^6.0.8
cross-env (npm) ^10.1.0
prettier (npm) ^3.8.1
rollup (npm) ^4.59.0
rollup-plugin-typescript2 (npm) ^0.36.0
tslib (npm) ^2.8.1
typescript (npm) ^5.9.3
vitest (npm) ^4.0.18
Files by Type (count)
TypeScript
83
JSON
40
Other (.ico)
36
Markdown
31
JavaScript
31
Other (.png)
21
Other (.icns)
18
Rust
15
YAML
13
Other (no ext)
11
Other (.mjs)
9
TOML
3
Files by Type (size)
Other (.icns)
12MB
Other (.png)
1MB
Other (.svg)
1MB
Other (.ico)
958KB
JavaScript
438KB
TypeScript
334KB
Markdown
309KB
Rust
210KB
Lock File
144KB
YAML
143KB
Other (.mjs)
55KB
Other (no ext)
37KB

The LLM identified 4 files worth highlighting for reuse:

Abstract base class for platform-specific builders (MacBuilder, WinBuilder, LinuxBuilder). Defines a template method for the build lifecycle: environment checks, package manager detection, build command construction, artifact copying, and error handling. The pattern is isolated and can be extracted to build any multi-platform CLI tool that needs per-platform build logic with shared orchestration.

file: bin/builders/BaseBuilder.ts ↗ | tags: #builder-pattern #template-method

Creates a private temporary workspace for each build, copying inputs and symlinking node_modules. Implements file-based cache locking with dead-owner detection and a cancellation signal. This pattern is reusable for any build tool that needs isolated, clean staging directories and concurrent build safety.

file: bin/utils/build-workspace.ts ↗ | tags: #workspace-isolation #cache-locking

Provides functions for machine-readable JSON output (enableMachineMode, printJsonResult) and structured error reporting with exit codes and hints. All log output goes to stderr, stdout carries exactly one JSON result. This pattern is reusable for any CLI tool that needs to be consumed by other programs or AI agents.

file: bin/utils/output.ts ↗ | tags: #machine-readable-output #structured-logging

Injects custom CSS into the webview using adoptedStyleSheets (constructable stylesheets) when CSP blocks style elements, with a fallback to creating a <style> element. Preserves DOM order and supports site-specific CSS hacks. This pattern is reusable for any webview injection scenario where CSP compliance is required.

file: src-tauri/src/inject/style.js ↗ | tags: #css-injection #csp-fallback
Last analyzed: 2026-10-03 20:52:18.066307
Next check: 2026-10-10 20:52:18.013018
$ submit: