Invoke’s UI is made possible by many contributors and open-source libraries. Thank you!
invokeai/frontend/web/
, run pnpm dev
.python scripts/invokeai-web.py
.dev
: run the frontend in dev mode, enabling hot reloadingbuild
: run all checks (madge, eslint, prettier, tsc) and then build the frontendtypegen
: generate types from the OpenAPI schema (see Type generation)lint:dpdm
: check circular dependencieslint:eslint
: check code qualitylint:prettier
: check code formattinglint:tsc
: check type issueslint:knip
: check for unused exports or objects (failures here are just suggestions, not hard fails)lint
: run all checks concurrentlyfix
: run eslint
and prettier
, fixing fixable issuesWe use openapi-typescript to generate types from the app’s OpenAPI schema.
The generated types are committed to the repo in schema.ts.
# from the repo root, start the server
python scripts/invokeai-web.py
# from invokeai/frontend/web/, run the script
pnpm typegen
We use i18next for localization, but translation to languages other than English happens on our Weblate project.
Only the English source strings should be changed on this repo.
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Invoke UI",
"url": "http://localhost:5173",
"webRoot": "${workspaceFolder}/invokeai/frontend/web"
}
]
}
We’ve noticed an intermittent timeout issue with the VSCode remote dev port forwarding.
We suggest disabling the editor’s port forwarding feature and doing it manually via SSH:
ssh -L 9090:localhost:9090 -L 5173:localhost:5173 user@host
Thanks for your interest in contributing to the Invoke Web UI!
Please follow these guidelines when contributing.
Please check in before you invest your time on anything besides a trivial fix, in case it conflicts with ongoing work or isn’t aligned with the vision for the app.
If a feature request or issue doesn’t already exist for the thing you want to work on, please create one.
Ping @psychedelicious
on discord in the #frontend-dev
channel or in the feature request / issue you want to work on - we’re happy to chat.
useCallback
, useMemo
, memo
) with enthusiasm.useMemo
.lodash
(via lodash-es
) to make the intent of your code clear.Please use the conventional commits spec for the web UI, with a scope of “ui”:
chore(ui): bump deps
chore(ui): lint
feat(ui): add some cool new feature
fix(ui): fix some bug
pnpm lint
. Some issues are auto-fixable with pnpm fix
.