Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: cleanup #6913

Merged
merged 36 commits into from
Sep 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
e65a32e
feat(build): add Makefile target to preview docs
psychedelicious Sep 22, 2024
65303b6
docs: rename installation files
psychedelicious Sep 22, 2024
b221a18
docs: format index.md
psychedelicious Sep 22, 2024
8375285
docs: update preview instructions
psychedelicious Sep 22, 2024
9c1cc61
docs: update index installation section
psychedelicious Sep 22, 2024
34caf93
docs: remove ancient ui docs
psychedelicious Sep 22, 2024
36fae3a
docs: update index.md badges
psychedelicious Sep 22, 2024
ae812cb
docs: remove ancient "image management" (?) docs
psychedelicious Sep 22, 2024
06750b4
docs: fix incorrect info in database.md
psychedelicious Sep 22, 2024
2d441b7
docs: remove ancient logging docs
psychedelicious Sep 22, 2024
7cf79e6
docs: remove ancient model merging docs
psychedelicious Sep 22, 2024
af61b7a
docs: remove ancient utilities docs
psychedelicious Sep 22, 2024
5b8a0f4
build: fix Makefile docs target
psychedelicious Sep 22, 2024
3770e97
chore(docs): bump mkdocs deps
psychedelicious Sep 22, 2024
4fe50b7
docs: update configuration docs layout
psychedelicious Sep 22, 2024
5e3e46e
docs: update installer tip about updating
psychedelicious Sep 22, 2024
f1fb97f
docs: update links to python installers
psychedelicious Sep 22, 2024
cda3206
docs: remove ancient NSFW/watermark docs
psychedelicious Sep 22, 2024
2f25c64
docs: remove ancient controlnet docs
psychedelicious Sep 22, 2024
abd21fa
docs: remove ancient example workflows (we have workflow library now)
psychedelicious Sep 22, 2024
40fd43c
docs: remove ancient loras docs
psychedelicious Sep 22, 2024
caf80d1
docs: remove ancient TI docs
psychedelicious Sep 22, 2024
27e13f4
docs: clean up contributing docs
psychedelicious Sep 22, 2024
9dbe0d4
docs: remove old workflows
psychedelicious Sep 22, 2024
feea170
docs: clean up contributing docs 2
psychedelicious Sep 22, 2024
ebbfe14
docs: update frontend docs
psychedelicious Sep 22, 2024
1df7771
docs: remove unused jss/css
psychedelicious Sep 22, 2024
de9c720
docs: tidying
psychedelicious Sep 22, 2024
31965e0
docs: tidying
psychedelicious Sep 22, 2024
8f67586
docs: use black theme
psychedelicious Sep 22, 2024
d7da9a5
docs: update logo & title
psychedelicious Sep 22, 2024
375fd13
docs: tidy contributing
psychedelicious Sep 22, 2024
0a9fa60
docs: tidy index
psychedelicious Sep 22, 2024
e47570a
docs: tidy index
psychedelicious Sep 22, 2024
3f0e03d
docs: remove ancient prompts doc
psychedelicious Sep 22, 2024
eacb226
docs: clean up and update lots of stuff
psychedelicious Sep 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ help:
@echo "installer-zip Build the installer .zip file for the current version"
@echo "tag-release Tag the GitHub repository with the current version (use at release time only!)"
@echo "openapi Generate the OpenAPI schema for the app, outputting to stdout"
@echo "docs Serve the mkdocs site with live reload"

# Runs ruff, fixing any safely-fixable errors and formatting
ruff:
Expand Down Expand Up @@ -74,3 +75,8 @@ tag-release:
# Generate the OpenAPI Schema for the app
openapi:
python scripts/generate_openapi_schema.py

# Serve the mkdocs site w/ live reload
.PHONY: docs
docs:
mkdocs serve
815 changes: 0 additions & 815 deletions docs/CHANGELOG.md

This file was deleted.

19 changes: 9 additions & 10 deletions docs/features/CONFIGURATION.md → docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,9 @@ Following the table are additional explanations for certain settings.
<!-- prettier-ignore-start -->
::: invokeai.app.services.config.config_default.InvokeAIAppConfig
options:
heading_level: 4
show_root_heading: false
members: false
show_docstring_description: false
group_by_category: true
show_category_heading: false
<!-- prettier-ignore-end -->

Expand Down Expand Up @@ -155,12 +154,12 @@ log_handlers:
locally or to a remote logging machine. `syslog` offers a variety
of configuration options:

```
syslog=/dev/log` - log to the /dev/log device
syslog=localhost` - log to the network logger running on the local machine
syslog=localhost:512` - same as above, but using a non-standard port
syslog=fredserver,facility=LOG_USER,socktype=SOCK_DRAM`
- Log to LAN-connected server "fredserver" using the facility LOG_USER and datagram packets.
```yaml
syslog=/dev/log` - log to the /dev/log device
syslog=localhost` - log to the network logger running on the local machine
syslog=localhost:512` - same as above, but using a non-standard port
syslog=fredserver,facility=LOG_USER,socktype=SOCK_DRAM`
- Log to LAN-connected server "fredserver" using the facility LOG_USER and datagram packets.
```

- `http` can be used to log to a remote web server. The server must be
Expand All @@ -169,8 +168,8 @@ log_handlers:
indicating whether the message should be submitted using the GET or
POST method.

```
http=http://my.server/path/to/logger,method=POST
```yaml
http=http://my.server/path/to/logger,method=POST
```

The `log_format` option provides several alternative formats:
Expand Down
17 changes: 3 additions & 14 deletions docs/contributing/LOCAL_DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,10 @@
# Local Development

If you are looking to contribute you will need to have a local development
environment. See the
[Developer Install](../installation/020_INSTALL_MANUAL.md#developer-install) for
full details.

Broadly this involves cloning the repository, installing the pre-reqs, and
InvokeAI (in editable form). Assuming this is working, choose your area of
focus.
If you want to contribute, you will need to set up a [local development environment](./dev-environment.md).

## Documentation

We use [mkdocs](https://www.mkdocs.org) for our documentation with the
[material theme](https://squidfunk.github.io/mkdocs-material/). Documentation is
written in markdown files under the `./docs` folder and then built into a static
website for hosting with GitHub Pages at
[invoke-ai.github.io/InvokeAI](https://invoke-ai.github.io/InvokeAI).
We use [mkdocs](https://www.mkdocs.org) for our documentation with the [material theme](https://squidfunk.github.io/mkdocs-material/). Documentation is written in markdown files under the `./docs` folder and then built into a static website for hosting with GitHub Pages at [invoke-ai.github.io/InvokeAI](https://invoke-ai.github.io/InvokeAI).

To contribute to the documentation you'll need to install the dependencies. Note
the use of `"`.
Expand Down Expand Up @@ -50,6 +39,7 @@ and will be required for testing the changes you make to the code.
### Tests

See the [tests documentation](./TESTS.md) for information about running and writing tests.

### Reloading Changes

Experimenting with changes to the Python source code is a drag if you have to re-start the server —
Expand All @@ -63,7 +53,6 @@ running server on the fly.
This will allow you to avoid restarting the server (and reloading models) in most cases, but there are some caveats; see
the [jurigged documentation](https://github.com/breuleux/jurigged#caveats) for details.


## Front End

<!--#TODO: get input from blessedcoolant here, for the moment inserted the frontend README via snippets extension.-->
Expand Down
8 changes: 4 additions & 4 deletions docs/contributing/contribution_guides/documentation.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Documentation

Documentation is an important part of any open source project. It provides a clear and concise way to communicate how the software works, how to use it, and how to troubleshoot issues. Without proper documentation, it can be difficult for users to understand the purpose and functionality of the project.
Documentation is an important part of any open source project. It provides a clear and concise way to communicate how the software works, how to use it, and how to troubleshoot issues. Without proper documentation, it can be difficult for users to understand the purpose and functionality of the project.

## Contributing

All documentation is maintained in the InvokeAI GitHub repository. If you come across documentation that is out of date or incorrect, please submit a pull request with the necessary changes.
All documentation is maintained in our [GitHub repository](https://github.com/invoke-ai/InvokeAI). If you come across documentation that is out of date or incorrect, please submit a pull request with the necessary changes.

When updating or creating documentation, please keep in mind InvokeAI is a tool for everyone, not just those who have familiarity with generative art.
When updating or creating documentation, please keep in mind Invoke is a tool for everyone, not just those who have familiarity with generative art.

## Help & Questions

Please ping @imic or @hipsterusername in the [Discord](https://discord.com/channels/1020123559063990373/1049495067846524939) if you have any questions.
Please ping @hipsterusername on [Discord](https://discord.gg/ZmtBAhwWhy) if you have any questions.
69 changes: 39 additions & 30 deletions docs/contributing/contribution_guides/newContributorChecklist.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,77 @@
# New Contributor Guide

If you're a new contributor to InvokeAI or Open Source Projects, this is the guide for you.
If you're a new contributor to InvokeAI or Open Source Projects, this is the guide for you.

## New Contributor Checklist
- [x] Set up your local development environment & fork of InvokAI by following [the steps outlined here](../../installation/020_INSTALL_MANUAL.md#developer-install)
- [x] Set up your local tooling with [this guide](InvokeAI/contributing/LOCAL_DEVELOPMENT/#developing-invokeai-in-vscode). Feel free to skip this step if you already have tooling you're comfortable with.

- [x] Set up your local development environment & fork of InvokAI by following [the steps outlined here](../dev-environment.md)
- [x] Set up your local tooling with [this guide](InvokeAI/contributing/LOCAL_DEVELOPMENT/#developing-invokeai-in-vscode). Feel free to skip this step if you already have tooling you're comfortable with.
- [x] Familiarize yourself with [Git](https://www.atlassian.com/git) & our project structure by reading through the [development documentation](development.md)
- [x] Join the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord
- [x] Choose an issue to work on! This can be achieved by asking in the #dev-chat channel, tackling a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) or finding an item on the [roadmap](https://github.com/orgs/invoke-ai/projects/7). If nothing in any of those places catches your eye, feel free to work on something of interest to you!
- [x] Choose an issue to work on! This can be achieved by asking in the #dev-chat channel, tackling a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) or finding an item on the [roadmap](https://github.com/orgs/invoke-ai/projects/7). If nothing in any of those places catches your eye, feel free to work on something of interest to you!
- [x] Make your first Pull Request with the guide below
- [x] Happy development! Don't be afraid to ask for help - we're happy to help you contribute!


## How do I make a contribution?

Never made an open source contribution before? Wondering how contributions work in our project? Here's a quick rundown!

Before starting these steps, ensure you have your local environment [configured for development](../LOCAL_DEVELOPMENT.md).

1. Find a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) that you are interested in addressing or a feature that you would like to add. Then, reach out to our team in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord to ensure you are setup for success.
1. Find a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) that you are interested in addressing or a feature that you would like to add. Then, reach out to our team in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord to ensure you are setup for success.
2. Fork the [InvokeAI](https://github.com/invoke-ai/InvokeAI) repository to your GitHub profile. This means that you will have a copy of the repository under **your-GitHub-username/InvokeAI**.
3. Clone the repository to your local machine using:
```bash
git clone https://github.com/your-GitHub-username/InvokeAI.git
```
If you're unfamiliar with using Git through the commandline, [GitHub Desktop](https://desktop.github.com) is a easy-to-use alternative with a UI. You can do all the same steps listed here, but through the interface.
4. Create a new branch for your fix using:
```bash
git checkout -b branch-name-here
```

```bash
git clone https://github.com/your-GitHub-username/InvokeAI.git
```

If you're unfamiliar with using Git through the commandline, [GitHub Desktop](https://desktop.github.com) is a easy-to-use alternative with a UI. You can do all the same steps listed here, but through the interface. 4. Create a new branch for your fix using:

```bash
git checkout -b branch-name-here
```

5. Make the appropriate changes for the issue you are trying to address or the feature that you want to add.
6. Add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index:
```bash
git add -A
```

```bash
git add -A
```

7. Store the contents of the index with a descriptive message.
```bash
git commit -m "Insert a short message of the changes made here"
```

```bash
git commit -m "Insert a short message of the changes made here"
```

8. Push the changes to the remote repository using
```bash
git push origin branch-name-here
```

```bash
git push origin branch-name-here
```

9. Submit a pull request to the **main** branch of the InvokeAI repository. If you're not sure how to, [follow this guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
10. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #1234".
11. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it!
12. Wait for the pull request to be reviewed by other collaborators.
13. Make changes to the pull request if the reviewer(s) recommend them.
14. Celebrate your success after your pull request is merged!

If you’d like to learn more about contributing to Open Source projects, here is a [Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github).
If you’d like to learn more about contributing to Open Source projects, here is a [Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github).

## Best Practices

## Best Practices:
* Keep your pull requests small. Smaller pull requests are more likely to be accepted and merged
* Comments! Commenting your code helps reviewers easily understand your contribution
* Use Python and Typescript’s typing systems, and consider using an editor with [LSP](https://microsoft.github.io/language-server-protocol/) support to streamline development
* Make all communications public. This ensure knowledge is shared with the whole community
- Keep your pull requests small. Smaller pull requests are more likely to be accepted and merged

- Comments! Commenting your code helps reviewers easily understand your contribution
- Use Python and Typescript’s typing systems, and consider using an editor with [LSP](https://microsoft.github.io/language-server-protocol/) support to streamline development
- Make all communications public. This ensure knowledge is shared with the whole community

## **Where can I go for help?**

If you need help, you can ask questions in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord.

For frontend related work, **@pyschedelicious** is the best person to reach out to.
For frontend related work, **@pyschedelicious** is the best person to reach out to.

For backend related work, please reach out to **@blessedcoolant**, **@lstein**, **@StAlKeR7779** or **@pyschedelicious**.
2 changes: 1 addition & 1 deletion docs/contributing/contribution_guides/translation.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ Please check Weblate's [documentation](https://docs.weblate.org/en/latest/index

## Thanks

Thanks to the InvokeAI community for their efforts to translate the project!
Thanks to the InvokeAI community for their efforts to translate the project!
54 changes: 54 additions & 0 deletions docs/contributing/contributors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
title: Contributors
---

We thank [all contributors](https://github.com/invoke-ai/InvokeAI/graphs/contributors) for their time and hard work!

## **Original Author**

- [Lincoln D. Stein](mailto:lincoln.stein@gmail.com)

## **Current Core Team**

- @lstein (Lincoln Stein) - Co-maintainer
- @blessedcoolant - Co-maintainer
- @hipsterusername (Kent Keirsey) - Co-maintainer, CEO, Positive Vibes
- @psychedelicious (Spencer Mabrito) - Web Team Leader
- @joshistoast (Josh Corbett) - Web Development
- @cheerio (Mary Rogers) - Lead Engineer & Web App Development
- @ebr (Eugene Brodsky) - Cloud/DevOps/Sofware engineer; your friendly neighbourhood cluster-autoscaler
- @sunija - Standalone version
- @brandon (Brandon Rising) - Platform, Infrastructure, Backend Systems
- @ryanjdick (Ryan Dick) - Machine Learning & Training
- @JPPhoto - Core image generation nodes
- @dunkeroni - Image generation backend
- @SkunkWorxDark - Image generation backend
- @glimmerleaf (Devon Hopkins) - Community Wizard
- @gogurt enjoyer - Discord moderator and end user support
- @whosawhatsis - Discord moderator and end user support
- @dwringer - Discord moderator and end user support
- @526christian - Discord moderator and end user support
- @harvester62 - Discord moderator and end user support

## **Honored Team Alumni**

- @StAlKeR7779 (Sergey Borisov) - Torch stack, ONNX, model management, optimization
- @damian0815 - Attention Systems and Compel Maintainer
- @netsvetaev (Artur) - Localization support
- @Kyle0654 (Kyle Schouviller) - Node Architect and General Backend Wizard
- @tildebyte - Installation and configuration
- @mauwii (Matthias Wilde) - Installation, release, continuous integration
- @chainchompa (Jennifer Player) - Web Development & Chain-Chomping
- @millu (Millun Atluri) - Community Wizard, Documentation, Node-wrangler,
- @genomancer (Gregg Helt) - Controlnet support
- @keturn (Kevin Turner) - Diffusers

## **Original CompVis (Stable Diffusion) Authors**

- [Robin Rombach](https://github.com/rromb)
- [Patrick von Platen](https://github.com/patrickvonplaten)
- [ablattmann](https://github.com/ablattmann)
- [Patrick Esser](https://github.com/pesser)
- [owenvincent](https://github.com/owenvincent)
- [apolinario](https://github.com/apolinario)
- [Charles Packer](https://github.com/cpacker)
99 changes: 99 additions & 0 deletions docs/contributing/dev-environment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Dev Environment

To make changes to Invoke's backend, frontend, or documentation, you'll need to set up a dev environment.

If you just want to use Invoke, you should use the [installer][installer link].

!!! info "Why do I need the frontend toolchain?"

The repo doesn't contain a build of the frontend. You'll be responsible for rebuilding it every time you pull in new changes, or run it in dev mode (which incurs a substantial performance penalty).

!!! warning

Invoke uses a SQLite database. When you run the application as a dev install, you accept responsibility for your database. This means making regular backups (especially before pulling) and/or fixing it yourself in the event that a PR introduces a schema change.

If you don't need to persist your db, you can use an ephemeral in-memory database by setting `use_memory_db: true` in your `invokeai.yaml` file. You'll also want to set `scan_models_on_startup: true` so that your models are registered on startup.

## Setup

1. Run through the [requirements][requirements link].
1. [Fork and clone][forking link] the [InvokeAI repo][repo link].
1. Create an directory for user data (images, models, db, etc). This is typically at `~/invokeai`, but if you already have a non-dev install, you may want to create a separate directory for the dev install.
1. Create a python virtual environment inside the directory you just created:

```sh
python3 -m venv .venv --prompt InvokeAI-Dev
```

1. Activate the venv (you'll need to do this every time you want to run the app):

```sh
source .venv/bin/activate
```

1. Install the repo as an [editable install][editable install link]:

```sh
pip install -e ".[dev,test,xformers]" --use-pep517 --extra-index-url https://download.pytorch.org/whl/cu121
```

Refer to the [manual installation][manual install link]] instructions for more determining the correct install options. `xformers` is optional, but `dev` and `test` are not.

1. Install the frontend dev toolchain:

- [`nodejs`](https://nodejs.org/) (recommend v20 LTS)
- [`pnpm`](https://pnpm.io/installation#installing-a-specific-version) (must be v8 - not v9!)

1. Do a production build of the frontend:

```sh
pnpm build
```

1. Start the application:

```sh
python scripts/invokeai-web.py
```

1. Access the UI at `localhost:9090`.

## Updating the UI

You'll need to run `pnpm build` every time you pull in new changes. Another option is to skip the build and instead run the app in dev mode:

```sh
pnpm dev
```

This starts a dev server at `localhost:5173`, which you will use instead of `localhost:9090`.

The dev mode is substantially slower than the production build but may be more convenient if you just need to test things out.

## Documentation

The documentation is built with `mkdocs`. To preview it locally, you need a additional set of packages installed.

```sh
# after activating the venv
pip install -e ".[docs]"
```

Then, you can start a live docs dev server, which will auto-refresh when you edit the docs:

```sh
mkdocs serve
```

On macOS and Linux, there is a `make` target for this:

```sh
make docs
```

[installer link]: ../installation/installer.md
[forking link]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo
[requirements link]: ../installation/requirements.md
[repo link]: https://github.com/invoke-ai/InvokeAI
[manual install link]: ../installation/manual.md
[editable install link]: https://pip.pypa.io/en/latest/cli/pip_install/#cmdoption-e
Loading
Loading