Releases: pinokiocomputer/pinokio
3.4.0
What's new
- Mac conda environment fix
- Mac xcode command line tools install fix
- Windows visual studio build tools install fix
- Linux build tools support (GXX via conda)
- Linux CUDA + G++ compatibility support (via an environment variable)
- More robust port availability checking logic.
1. Mac Conda Environment Fix
Set
CONDA_ENVS_PATH: ~/pinokio/bin/miniconda/envs
CONDA_PKGS_DIRS: ~/pinokio/bin/miniconda/pkgs
2. Mac xcode command line tools install fix
- just because
xocde-select -p
returns a path doesn't mean it's installed. - to properly check the install state, must run
ls -m $(xcode-select -p)
to see if it returnsLibrary
,SDKs
, andusr
3. Windows Visual Studio Refactor
- Handle cases where there are already multiple visual studio instances installed
- Handle cases where there are corrupt or paused installations of visual studio (build tools)
- Display a warning that if you get in an install loop, the best solution is to just open visual studio installer and uninstall broken installs
4. Linux CUDA & G++ Compatibility Fix
By default NVCC for CUDA121 requires G++ no greater than 12. But globally installed G++ may have higher versions and it would result in failure
5. More robust available port checking
is_port_running(port)
: To take into account ALL possible cases, instead of trying to create sockets to a url with a port, just simulate starting a server at the port, and if there's an exception, then it means the port doesn't work.
3.3.53
Installer update Mac Install Fix: package sentinel into the installer
3.3.52
Mac Conda Environment Fix
Set
CONDA_ENVS_PATH: ~/pinokio/bin/miniconda/envs
CONDA_PKGS_DIRS: ~/pinokio/bin/miniconda/pkgs
Windows Visual Studio Refactor
- Handle cases where there are already multiple visual studio instances installed
- Handle cases where there are corrupt or paused installations of visual studio (build tools)
- Display a warning that if you get in an install loop, the best solution is to just open visual studio installer and uninstall broken installs
Linux CUDA & G++ Compatibility Fix
By default NVCC for CUDA121 requires G++ no greater than 12. But globally installed G++ may have higher versions and it would result in failure
More robust available port checking
is_port_running(port)
: To take into account ALL possible cases, instead of trying to create sockets to a url with a port, just simulate starting a server at the port, and if there's an exception, then it means the port doesn't work.
3.3.50
Mac Conda Environment Fix
Set
CONDA_ENVS_PATH: ~/pinokio/bin/miniconda/envs
CONDA_PKGS_DIRS: ~/pinokio/bin/miniconda/pkgs
Windows Visual Studio Refactor
- Handle cases where there are already multiple visual studio instances installed
- Handle cases where there are corrupt or paused installations of visual studio (build tools)
- Display a warning that if you get in an install loop, the best solution is to just open visual studio installer and uninstall broken installs
Linux CUDA & G++ Compatibility Fix
By default NVCC for CUDA121 requires G++ no greater than 12. But globally installed G++ may have higher versions and it would result in failure
More robust available port checking
is_port_running(port)
: To take into account ALL possible cases, instead of trying to create sockets to a url with a port, just simulate starting a server at the port, and if there's an exception, then it means the port doesn't work.
3.3.29
Sorry for the frequent releases, but it's important that we get this out asap so here we go.
One other edge case we discovered with Visual Studio Build Tools is, often VS buildtools 2022 FAILS when used during building wheels.
If you search online, the recommendation is to "downgrade" to 2019, so if we really wanted to have a robust system, Pinokio should enforce visual studio build tools 2019 no matter what. What this means is:
- If no visual studio installed => Install visual studio build tools 2019
- if visual studio build tools 2022 installed => install visual studio build tools 2019 => now you have both 2019 and 2022 (but pinokio will always use 2019 since 2022 often doesn't work and we can't risk that)
- If Visual Studio is installed (2022, 2019, etc) => Also install visual studio build tools 2019 => now you have normal visual studio and visual studio build tools 2019
Going forward, Pinokio will always make the user install Visual Studio Build Tools 2019.
3.3.27
Visual Studio Build Tools Hotfix
Previous fix from 3.3.25 neglected the scenario where the user doesn't have visual studio build tools installed (which will be true for most new--non developer--users just installing pinokio).
Because i couldn't uninstall and reinstall visual studio every time i test the new version, neglected to check this scenario. But just replicated this by actually uninstalling build tools and starting from scratch.
The problem has been fixed now. New users should not have any issue getting started
3.3.25
Windows Fix
This release is mainly for Windows users. More specifically for apps that require building/compiling from source code.
Visual Studio Build Tools and CUDA were not working properly on Windows. This didn't affect a lot of apps since many apps use prebuilt wheels. But some apps (such as 3D mesh generation AI apps) required building from source, and these apps were failing to install for many users.
This updated fixes all of this.
- Visual Studio Handling: instead of injecting environment variables manually, just use the official vcvarsall.bat right after conda activation.
- CUDA Handling: In case there's a globally installed CUDA that gets leaked in, remove those attributes so the base environment will use the CUDA installed inside the pinokio home environment
3.3.8
fs.link hotfix
fs.link fix for installing pip from github (ex: git+https://github.com/huggingface/diffusers.git
)
- fixes fluxgym install issue, as well as other installers that use fs.link on any pip package that installs from github
3.3.7
Linux install issue fix
Because on linux installing playwright with --install-deps
flag requires root access, the initial requirement setup step fails for every linux user.
So just don't do it for now. Only install playwright itself and the browsers.
The dependencies can be installed manually only if needed (by the users).
Now Playwright is installed under ~/pinokio/bin/playwright/node_modules
, and the browsers are stored at ~/pinokio/bin/playwright/browsers
3.3.0
Major Fix Update
[STRONGLY RECOMMENDED UPDATE] The goal of 3.3.0 was to sit down and fix a lot of fundamental issues that have existed from the very beginning of Pinokio, including
- Unreliable execution
- Conda issues
- Pip issues
- Requirement install issues
and many more.
It is strongly recommended to update to this version, since this fixes a lot of the bugs that have existed from the very first version of Pinokio.
1. FIX
- homebrew install fix
- conda install fix
- do not allow installing pip packages into conda base environment
- do not install brew on linux
- playwright fix
- script.start fix: ignore if already running
- disallow fs.link on non python 3.10 venvs => implement later
- uvicorn fix
- when running sudo shell, even when there's an error, do NOT throw an error, but instead display the error message, in order to be consistent with how normal shell.run behaves
- set
process.env.WEBKIT_DISABLE_DMABUF_RENDERER = 1
for some linux users - update python module when the pinokio app itself upgrades => just to make sure the py repository is up to date and the venv is correctly set up for the current python
- do not allow outside click on the download page: clicking outside the modal would close the modal and throw an error previously.
2. New Features
2.1. PNPM Support
Now supports PNPM https://pnpm.io/ in addition to the default NPM that comes with node.js (PNPM is much faster)
2.2. Autolaunch
Now you can make apps autolaunch when pinokio starts.
Simply set the PINOKIO_SCRIPT_AUTOLAUNCH=<script_file_path>
environment variable to autostart any app. Here's an example:
# ~/pinokio/api/comfyui.git/ENVIRONMENT
PINOKIO_SCRIPT_AUTOLAUNCH=start.js
2.3. Multiple Python Version Support
By default Pinokio uses Python 3.10 when creating venvs. Now with the venv_python
attribute, you can use ANY python version when creating venvs (3.11, 3.12, etc.). Example:
{
"method": "shell.run",
"params": {
"message": "pip install -r requirements.txt",
"venv": "env",
"venv_python": "3.11"
}
}
2.4. "next" RPC attribute
a new attribute has been added to RPC calls:
{
"when": <condition>,
"method": <method>,
"params": <params>,
"next": <id_or_index>
}
When combined with when
, you can program a script to jump to anywhere else in the script by id or index. Example:
module.exports = {
run: [
// windows nvidia
{
"when": "{{platform === 'win32' && gpu === 'nvidia'}}",
"method": "shell.run",
"params": {
"venv": "env",
"message": "uv pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 {{args && args.xformers ? 'xformers' : ''}} --index-url https://download.pytorch.org/whl/cu121"
},
"next": "end"
},
// mac
{
"when": "{{platform === 'darwin'}}",
"method": "shell.run",
"params": {
"venv": "env",
"message": "uv pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1"
},
"next": "end"
},
// linux nvidia
{
"when": "{{platform === 'linux' && gpu === 'nvidia'}}",
"method": "shell.run",
"params": {
"venv": "env",
"message": "uv pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 {{args && args.xformers ? 'xformers' : ''}} --index-url https://download.pytorch.org/whl/cu121"
},
"next": "end"
},
// default
{
"method": "shell.run",
"params": {
"venv": "{{args && args.venv ? args.venv : null}}",
"path": "{{args && args.path ? args.path : '.'}}",
"message": "uv pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cpu"
}
},
{
"id": "end",
"method": "log",
"params": {
"raw": "Finished"
}
}
]
}
- Note that the last step is marked with
id: "end"
- Every step checks the
when
condition to see if it matches, and runs the step when matched, and then jumps toid: "next"
- This ensures that only one of the options is executed in the entire script, since it runs the first matched RPC call and jumps straight to the end.
2.5. Info API
http://localhost/pinokio/info provides realtime info of everything going on on Pinokio, including:
- pinokio version
- which scripts are running (and which step it's running right now)
- which shells are running and what's displayed in the shell
- installed apps (~/pinokio/api)
- installed requirements (~/pinokio/bin)
- local sharing endpoints (proxies)
Here's an example:
{
"version": {
"pinokiod": "3.3.0",
"pinokio": "3.3.0"
},
"platform": "darwin",
"arch": "arm64",
"home": "/Users/x/pinokio",
"scripts": [
{
"path": "test.git/playwright/launch_and_navigate/run.js",
"app": "test.git",
"script_path": "playwright/launch_and_navigate/run.js",
"step": {
"method": "script.start",
"params": {
"uri": "torch.js",
"params": {
"venv": "env"
}
},
"current": 0,
"total": 5
},
"input": {},
"args": {},
"full_path": "/Users/x/pinokio/api/test.git/playwright/launch_and_navigate/run.js"
},
{
"path": "test.git/playwright/launch_and_navigate/torch.js",
"app": "test.git",
"script_path": "playwright/launch_and_navigate/torch.js",
"step": {
"when": "{{platform === 'darwin'}}",
"method": "shell.run",
"params": {
"venv": "{{args && args.venv ? args.venv : null}}",
"path": "{{args && args.path ? args.path : '.'}}",
"message": "uv pip install torch torchvision torchaudio"
},
"current": 3,
"total": 7
},
"input": null,
"args": {
"venv": "env"
},
"full_path": "/Users/x/pinokio/api/test.git/playwright/launch_and_navigate/torch.js"
}
],
"shells": [
{
"cols": 170,
"rows": 45,
"id": "091eddb9-5852-4398-8071-f57755e7512f",
"group": "/Users/x/pinokio/api/test.git/playwright/launch_and_navigate/torch.js",
"path": "/Users/x/pinokio/api/test.git/playwright/launch_and_navigate",
"index": 0,
"cmd": "eval \"$(conda shell.bash hook)\" ; conda deactivate ; conda deactivate ; conda deactivate ; sleep 1 ; conda activate base ; sleep 1 ; python -m venv /Users/x/pinokio/api/test.git/playwright/launch_and_navigate/env ; source /Users/x/pinokio/api/test.git/playwright/launch_and_navigate/env/bin/activate /Users/x/pinokio/api/test.git/playwright/launch_and_navigate/env ; python -m pip install --upgrade pip setuptools wheel ; deactivate ; sleep 1 ; source /Users/x/pinokio/api/test.git/playwright/launch_and_navigate/env/bin/activate /Users/x/pinokio/api/test.git/playwright/launch_and_navigate/env ; sleep 1 ; uv pip install torch torchvision torchaudio",
"done": false
}
],
"proxies": [],
"api": [
{
"path": "MMAudio.git",
"title": "MMAudio",
"description": "Generate synchronized audio from video and/or text inputs https://github.com/hkchengrex/MMAudio",
"icon": "/api/MMAudio.git/icon.png?raw=true"
},
{
"path": "comfy.git",
"title": "Comfyui",
"description": "The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. https://github.com/comfyanonymous/ComfyUI",
"icon": "/api/comfy.git/icon.jpeg?raw=true"
},
{
"path": "e2-f5-tts.git",
"title": "e2-f5-tts",
"description": "F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching https://huggingface.co/spaces/mrfakename/E2-F5-TTS",
"icon": "/api/e2-f5-tts.git/icon.png?raw=true"
},
{
"path": "facefusion-pinokio.git",
"title": "FaceFusion 3.1.1",
"description": "Industry leading face manipulation platform",
"icon": "/api/facefusion-pinokio.git/facefusion.png?raw=true"
},
{
"path": "test.git",
"title": "Test",
"icon": "/api/test.git/icon.jpg?raw=true"
}
],
"bin": {
"conda": {
"installed": [
"anaconda-anon-usage",
"aom",
"archspec",
"boltons",
"brotli-python",
"bzip[2](https://github.com/cocktailpeanutlabs/p2/releases?page=2)",
"c-ares",
"ca-certificates",
"cairo",
...
]
},
"brew": {
"installed": [
"cloudflared",
"gettext",
"libunistring"
]
}
},
"procs": {},
"gpu": "apple",
"gpus": [
"apple"
],
"graphics": {
"controllers": [...],
"displays": [...],
},
"system": ...,
"cpu": ...,
"osInfo": ...,
"shell": "/bin/zsh",
"audio": [...],
"mem": ...,
"battery": ...,
"load": ...,
"bluetooth": [...]
}
2.6. Reset Global Environment
you can now reset global environment variables from the settings page.
Sometimes when Pinokio updates to a new version, it adds some new attributes to the ~/pinokio/ENVIRONMENT
file. But this doesn't get upgraded automatically.
You can easily update to the latest ENVIRONMENT file by going to the settings page and clicking "reset" from the environment section.
2.7. kernel.userAgent() API
let randomUserAgent = kernel.userAgent(browser)
where:
browser
: (optional) name of the browser. For examp...