From 4a4a3a39fc5a0bbf41f46b9eee7b47ba6f522da3 Mon Sep 17 00:00:00 2001 From: Thanh Phan Date: Tue, 27 Jul 2021 00:34:06 +0700 Subject: [PATCH] Update documentation for new architecture - Also fix a lot of typos in the documentation. - Use Keyboard Input HTML element for menu and keyboard shortcut instructions. Reference: https://meta.stackexchange.com/questions/193531/. --- .github/CONTRIBUTING.md | 64 ++++++++++++----------- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- CHANGELOG.md | 33 ++++++------ README.md | 35 ++++++------- 7 files changed, 70 insertions(+), 70 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 739d5e3..b49979d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -2,32 +2,32 @@ # Contributing to ImagePaste -First of all, thank you for taking the time to support us. Every change however small helps us grow further, your contributions here are our starting point. +First of all, thank you for taking the time to support us. Every change, no matter how small, helps us grow further. Your contributions here are our starting point. ## How do I… -- [🐛 Report a bug](#-reporting-a-bug) -- [🚀 Request a feature](#-requesting-a-feature) -- [💬 Open a discussion](#-opening-a-discussion) -- [🎉 Create a pull request](#-creating-a-pull-request) +- 🐛 [Report a bug](#-reporting-a-bug) +- 🚀 [Request a feature](#-requesting-a-feature) +- 💬 [Open a discussion](#-opening-a-discussion) +- 🎉 [Create a pull request](#-creating-a-pull-request) Or you can take a look at [our development guide](#-development-guide). ## Code of Conduct -This project and everyone participating in it is governed by [the Code of Conduct](CONTRIBUTING.md) which is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0. By participating, you are expected to uphold this code. +This project and everyone participating in it are governed by [the Code of Conduct](CODE_OF_CONDUCT.md) which is adapted from the [_Contributor Covenant_](https://www.contributor-covenant.org), version 2.0. By participating, you are expected to uphold this code. ## 🐛 Reporting a bug A great way to contribute to the add-on is to send a detailed report when you encounter an issue. We always appreciate a well-written, thorough bug report, and will thank you for it! -1. **Avoid walls of text**: It's very helpful to attach a log file to your report, which helps us quickly triage the bugs ([learn how to open a terminal](https://docs.blender.org/manual/en/latest/advanced/command_line/launch/index.html) to collect data). When sending lengthy log files, consider posting them as a [Github Gist](https://gist.github.com). Don't forget to remove sensitive data from your log files before posting (you can replace those parts with "REDACTED"). +1. **Avoid walls of text**: It's very helpful to attach a log file to your report, which helps us quickly triage the bugs ([learn how to open a terminal](https://docs.blender.org/manual/en/latest/advanced/command_line/launch/index.html) to collect logs). When sending lengthy log files, consider posting them as a [_GitHub Gist_](https://gist.github.com). Don't forget to remove sensitive data from your log files before posting (you can replace those parts with "REDACTED"). -2. **Avoid duplication**: Make sure [the issue database](https://github.com/Yeetus3141/ImagePaste/issues) doesn't already include that problem or suggestion before submitting an issue. If you find a match, you can use the **Subscribe** button to get notified on updates. Do not leave random "+1" or "I have this too" comments, as they only clutter the discussion, and don't help resolving it. However, if you have ways to reproduce the issue or have additional information that may help resolving the issue, please leave a comment. +2. **Avoid duplication**: Make sure [the issue database](https://github.com/Yeetus3141/ImagePaste/issues) doesn't already include that problem or suggestion before submitting an issue. If you find a match, you can use the **Subscribe** button to get notified of updates. Do not leave random "+1" or "I have this too" comments, as they only clutter the discussion. However, if you have ways to reproduce the issue or have additional information that may help to resolve the issue, please leave a comment. -3. **Simplify**: First try to simplify the process that triggers the bug, so that it is reproducible in the least amount of steps. The less steps there are, the easier it is for us to spot the problem in the code. Typically if you have a complex .blend file, it is possible to keep removing objects, modifiers, nodes, and other data until the problem has been isolated to a simple setup. +3. **Simplify**: First try to simplify the process that triggers the bug, so that it is reproducible in the least amount of steps. The fewer steps there are, the easier it is for us to spot the problem in the code. Typically if you have a complex .blend file, it is possible to keep removing objects, modifiers, nodes, and other data until the problem has been isolated to a simple setup. -Finally, you can [create a new issue](https://github.com/Yeetus3141/ImagePaste/issues/new/choose) by choosing the a **Bug report** template or creating a blank one. +Finally, you can [create a new issue](https://github.com/Yeetus3141/ImagePaste/issues/new/choose) by choosing the **Bug report** template or creating a blank one. ## 🚀 Requesting a feature @@ -35,20 +35,18 @@ If the add-on doesn't do something you need, [open an issue](https://github.com/ ## 💬 Opening a discussion -We’re using [Discussions](https://github.com/Yeetus3141/ImagePaste/discussions) as a place to connect with other members of our community. You can: +We’re using [_Discussions_](https://github.com/Yeetus3141/ImagePaste/discussions) as a place to connect with other members of our community. You can: - Ask questions you’re wondering about. - Share ideas. - Engage with other community members. - Welcome others and be open-minded. Remember that this is a community we build muscle together. -Feel free to open one [here](https://github.com/Yeetus3141/ImagePaste/discussions/new). - ## 🎉 Creating a pull request We like code commits a lot! They're super handy, and they keep the project going and doing the work it needs to do to be useful to others. -Code contributions of just about any size of any things in this repository (even the lines you're reading) are acceptable! However, before contributing large or high impact changes, make the effort to coordinate with the maintainers of the project before submitting a pull request. This prevents you from doing extra work that may or may not be merged. +Code contributions of just about any size of any things in this repository (even the lines you're reading) are acceptable! However, before contributing large or high-impact changes, make the effort to coordinate with the maintainers of the project before submitting a pull request. This prevents you from doing extra work that may or may not be merged. To contribute code: @@ -56,7 +54,7 @@ To contribute code: - Make any necessary changes to the source code. - Include any additional documentation the changes might need. - Test and verify that your contribution works as expected. -- Write clear, concise commit messages using [conventional format](#git-commit). +- Write clear, concise commit messages using [the conventional format](#git-commit). - [Open a new pull request](https://github.com/Yeetus3141/ImagePaste/compare) with your changes. We are always thrilled to receive pull requests. We will do our best to process them quickly. If your pull request is not accepted on the first try, don't get discouraged! Keep trying, we're sure you will learn a lot from these. @@ -67,15 +65,25 @@ We are always thrilled to receive pull requests. We will do our best to process #### Architecture and method -The `__init__.py` file includes all mandatory parts for an _Blender_ add-on (`__bl_info__` dictionary, `register` and `unregister` function) and all operators serving the main purposes (operator pasting images as planes, operator pasting images as nodes…). These operators depends on two important function: `GrabImage` (check clipboard and return a list of image files) and `CopyImage` (push given image file to clipboard), which is define in separated modules: `windows/windows.py`, `linux/linux.py` and `darwin/darwin.py` corresponding to _Windows_, _Linux_ and _macOS_ platform respectively. Each module has different approaches solving the problem: +The add-on code is divided into several modules to make it easier to maintain and extend. In [`__init__.py`](../__init__.py), we only keep the `bl_info` metadata and the `register`, `unregister` functions to register and unregister other modules. The main processing code of the add-on is located in [`imagepaste/`](../imagepaste/), which includes: + +- [`process.py`](../imagepaste/process.py): The module holds the `Process` class, which is the utility class that handles the communication with commands or shells. +- [`image.py`](../imagepaste/image.py): The module contains the `Image` class, whose instances hold image information. +- [`report.py`](../imagepaste/report.py): The module for the `Report` class that creates objects containing operations status. +- [`clipboard/`](../imagepaste/clipboard/): The folder that contains all processes related to clipboard, which includes these modules: + - [`clipboard.py`](../imagepaste/clipboard/clipboard.py): The module with the abstract `Clipboard` class, which all platform-specific clipboard classes inherit from must perform two important class methods - `push` and `pull` - with different appropriate approaches described below. + - [`windows/windows.py`](../imagepaste/clipboard/windows/windows.py): The module contains the concrete `WindowsClipboard` class of the `Clipboard` for the _Windows_ platform. Used to rely on _Pillow_ library to handle the clipboard but because of some drawbacks, from [version 1.5](https://github.com/Yeetus3141/ImagePaste/compare/v1.4.0...v1.5.0) we replace it with the _PowerShell_ 5.1 scripts which is pre-installed from _Windows_ version 1607 (see pull request [#8](https://github.com/Yeetus3141/ImagePaste/pull/8)). + - [`linux/linux.py`](../imagepaste/clipboard/linux/linux.py): The module contains the concrete `LinuxClipboard` class of the `Clipboard` for the _Linux_ platform. We currently use _xclip_ to manipulate clipboard on _X11_. _Wayland_ hasn't been tested and done the research yet (see pull request [#4](https://github.com/Yeetus3141/ImagePaste/pull/4)). + - [`darwin/darwin.py`](../imagepaste/clipboard/darwin/darwin.py): The module contains the concrete `DarwinClipboard` class of the `Clipboard` for the _macOS_ platform. [_Pasteboard_](https://pypi.org/project/pasteboard/) is shipped with the add-on to be responsible for the clipboard (see pull request [#6](https://github.com/Yeetus3141/ImagePaste/pull/6)). +- [`operators.py`](../imagepaste/operators.py): The module with the core operators for main functionalities (copy/paste images from/to the _Blender_ editors), which depend mostly on clipboard instances created from `WindowsClipboard`, `LinuxClipboard` and `DarwinClipboard` classes. +- [`preferences.py`](../imagepaste/preferences.py): The module contains the add-on preferences class, all keymaps and UI-related functions. +- [`helper.py`](../imagepaste/helper.py): The module contains the utility functions used by other modules. -- `windows/windows.py`: We used to rely on _Pillow_ library to handle the clipboard but because of some drawbacks, from the [version 1.5](https://github.com/Yeetus3141/ImagePaste/compare/v1.4.0...v1.5.0) we replace it with the _PowerShell_ 5.1 scripts which is pre-installed from _Windows_ version 1607 (see pull request [#8](https://github.com/Yeetus3141/ImagePaste/pull/8)). -- `linux/linux.py`: we currently support only _X11_ with `xclip`, _Wayland_ haven't been tested and done research yet (see pull request [#4](https://github.com/Yeetus3141/ImagePaste/pull/4)). -- `darwin/darwin.py`: [_Pasteboard_](https://pypi.org/project/pasteboard/) is shipped with add-on to be responsible with clipboard. +The docstring in each module is also very helpful to understand what the module does and how to use it. Open the module you need and check them. #### Naming -To be consistent, anything related to the code or the core system of the platform, we use `darwin` to refer to the _macOS_ platform. For _Windows_ and _Linux_ platform, they are `windows` and `linux` respectively. +To be consistent, anything related to the code or the core system of the platform, we use `darwin` to refer to the _macOS_ platform. For _Windows_ and _Linux_ platforms, they are `windows` and `linux` respectively. #### Branches @@ -118,28 +126,24 @@ Fixes #456. #### Python -We follow the [recommended style guide for Blender add-ons](https://wiki.blender.org/wiki/Style_Guide/Python) for all _Python_ files in this repository with these tool: +We follow the [recommended _Blender_ add-ons style guide](https://wiki.blender.org/wiki/Style_Guide/Python) for all _Python_ files in this repository with these tools: - Linter: [_Flake8_](https://flake8.pycqa.org/en/latest/) (latest version, which is configured in [`.flake8`](../.flake8)). - Formatter: [_Black_](https://black.readthedocs.io/en/stable/) (latest version with default settings). #### Other files -All other files (included _YAML_ and _Markdown_) are formatted by [Prettier](https://prettier.io/), which is configured in [`.prettierrc`](../.prettierrc). +All other files (including _YAML_ and _Markdown_) will be formatted with [_Prettier_](https://prettier.io/), which is configured in [`.prettierrc`](../.prettierrc). -### Set up development environment +### Set up a development environment If this is your first pull request, you just need to fork the repository and do whatever you need to do. If you have already forked it before, make sure you are on the latest commit before you make any changes, this will prevent some unnecessary conflicts when you request merging into the upstream. -We use _pipenv_ as an environment manager, which is configured in [Pipfile](../Pipfile). These steps will show how to set up a python virtual environment that fits our workflow. - -1. Open CLI in the project directory. -1. Run `pipenv install --dev --skip-lock` to install packages for development. -1. After that, a virtual environment has been setup. You can get in using `pipenv shell` and get out with `exit`. Once activated, you will have all packages you need. +We use [_Pipenv_](https://pipenv.pypa.io/en/latest/) as an environment manager, which is configured in [`Pipfile`](../Pipfile). To set up your development environment, simply run [`script\setup.cmd`](script\setup.cmd) (on _Windows_) or [`script\setup.sh`](script\setup.sh) (on _Linux_) and the script will do the rest for you. When it's done, you can get in the virtual environment using `pipenv shell` and get out with `exit`. Once activated, you will have all packages you need. -Some editor configurations are also defined in [.editorconfig](.editorconfig). +Some editor configurations are also defined in [`.editorconfig`](.editorconfig). You can read more on the [EditorConfig website](https://editorconfig.org/) about how to set up your IDE/editor to read the file. -We recommend using Visual Studio Code as an editor. If you also use it, you should have these workspace settings: +We recommend using [_Visual Studio Code_](https://code.visualstudio.com/) as an official editor for this project, although we decided to ignore its `.vscode` folder as it may contain some personal configuration that you would not want to commit. If you also use it, you should have these configurations in your workspace settings: ```jsonc { diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 644620f..41bd3f8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -40,4 +40,4 @@ assignees: thanhph111, Yeetus3141 ## Additional context - + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index a23d6f9..328aa67 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,7 @@ blank_issues_enabled: true contact_links: - - name: 📥 Download latest version + - name: 📥 Download the latest version url: https://github.com/Yeetus3141/ImagePaste/releases/latest about: Make sure you're running the latest version, your bugs may already be fixed. - name: 📢 Open a new discussion diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index e8f0f68..1ffcab8 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -16,7 +16,7 @@ assignees: thanhph111, Yeetus3141 ## Screenshot/Screencast - + ## Additional context diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5f55be6..6e38b56 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -13,6 +13,6 @@ ## Further comments - + diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d11f4f..aad0055 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,45 +4,46 @@ ## [1.5.1](https://github.com/Yeetus3141/ImagePaste/compare/v1.5.0...v1.5.1) (2021-06-30) -- Fix the crash occurred when undoing after inserting an image ([#13](https://github.com/Yeetus3141/ImagePaste/issues/13)) ([@thanhph111](https://github.com/thanhph111)). +- Fix the crash that occurred when undoing after inserting an image ([#13](https://github.com/Yeetus3141/ImagePaste/issues/13) by [@thanhph111](https://github.com/thanhph111)). ## [1.5.0](https://github.com/Yeetus3141/ImagePaste/compare/v1.4.0...v1.5.0) (2021-06-22) -- Now Works on MacOS (by [@celestialmaze](https://twitter.com/cmzw_)) -- Standardized Github Repository (by [@thanhph111](https://github.com/thanhph111)) -- Excluded the use of Pillow module for Windows, now works natively (by [@thanhph111](https://github.com/thanhph111)) -- Minor fixes and improvements +- Now works on _macOS_ (by [@celestialmaze](https://twitter.com/cmzw_)). +- Standardized _Github_ repository (by [@thanhph111](https://github.com/thanhph111)). +- Excluded the use of _Pillow_ module for _Windows_, now works natively (by [@thanhph111](https://github.com/thanhph111)). +- Minor fixes and improvements. ## [1.4.0](https://github.com/Yeetus3141/ImagePaste/compare/v1.3.2...v1.4.0) (2021-06-10) -- Now Supports X11 Clipboard on Linux platform, all thanks to [@thanhph111](https://github.com/thanhph111) +- Now supports _X11_ clipboard on _Linux_ platform, (by [@thanhph111](https://github.com/thanhph111)). ## [1.3.2](https://github.com/Yeetus3141/ImagePaste/compare/v1.3.1...v1.3.2) (2021-04-16) - Updated image naming scheme, now with timestamps, preventing overwriting of saved images. -- Merged separate build versions of ImagePaste for Blender version below 2.93a and above into one. +- Merged separate build versions of _ImagePaste_ for _Blender_ version below 2.93a and above into one. ## [1.3.1](https://github.com/Yeetus3141/ImagePaste/compare/v1.3.0...v1.3.1) (2021-03-14) -- Fixed issue with the copy to clipboard feature where it didn't work as intended for certain cases. +- Fixed issue with the **Copy to clipboard** feature where it didn't work as intended for certain cases. ## [1.3.0](https://github.com/Yeetus3141/ImagePaste/compare/v1.1.0...v1.3.0) (2021-03-12) -- Image(s) can be pasted directly into the Node Editor as Image Texture Node(s), using `Node Editor > Context Menu (Right Click) > Paste Images From Clipboard` or `Ctrl + Shift + V` -- Images can now be copied to clipboard. In the `Image Editor > Image > Copy To Clipboard`, or `Ctrl + Shift + C`. These images are also saved along with other images in the set directory. +- Images can be pasted directly into the **Node Editor** as **Image Texture Nodes**, using Context Menu|Paste Images from Clipboard or Ctrl+Shift+V. +- Images can now be copied to the clipboard in the **Image Editor**: Image|Copy To Clipboard or Ctrl+Shift+C. These images are also saved along with other images in the set directory. + ## 1.2.0 (2021-02-06) -- Paste image from clipboard directly as a plane onto the viewport `Ctrl + Shift + Alt + V`. -- Supports image(s) copied from file explorer in Windows. -- Multiple images can now be pasted at the same time if multiple images are copied from the file explorer (only for Windows). -- Fixed an issue where images where saved with the same name in the default directory even with different blender sessions and led to different images being loaded from what was pasted -- Added icons for the buttons +- Paste images from clipboard directly as a plane onto the viewport: Ctrl+Shift+Alt+V. +- Support images copied from file explorer in _Windows_. +- Multiple images can now be pasted at the same time if multiple images are copied from the file explorer (only for _Windows_). +- Fixed an issue where images were saved with the same name in the default directory even with different _Blender_ sessions and led to different images being loaded from what was pasted. +- Added icons for the buttons. ## [1.1.0](https://github.com/Yeetus3141/ImagePaste/compare/v1.0.0...v1.1.0) (2021-01-06) - Improved error management. -- The images are now saved in the same folder as the .blend file, in a newly created subfolder. If the blend file is not saved, it uses the directory set in preferences or the default temp directory, which might raise permission error. This feature can be toggled via addon preferences. +- The images are now saved in the same folder as the `.blend` file, in a newly created subfolder. If the blend file is not saved, it uses the directory set in preferences or the default temp directory, which might raise permission errors. This feature can be toggled via add-on preferences. - Improved the UI in preferences. ## [1.0.0](https://github.com/Yeetus3141/ImagePaste/releases/tag/v1.0.0) (2021-01-04) diff --git a/README.md b/README.md index a6e632d..9b9227e 100644 --- a/README.md +++ b/README.md @@ -2,35 +2,30 @@ # ImagePaste -A simple _Blender_ addon to grab images from your clipboard and paste as a reference image in viewport or onto the image editor, or even copy images from _Blender_ to clipboard. -Works with _Blender_ 2.80 and above. +A simple _Blender_ add-on to paste your images from the clipboard to various places in the _Blender_ and vice versa, copy them to the clipboard so you can take them anywhere. It works with _Blender_ 2.80 and above. -## Installation +## Installing -1. Download [the latest release](https://github.com/Yeetus3141/ImagePaste/releases/latest) (you can view the changelog in the [release page](https://github.com/Yeetus3141/ImagePaste/releases)). -2. Go to `Edit > Preferences`, on tab **Addons** choose **Install** and select the downloaded `.zip` file, then tick the box beside the add-on name. -3. Set the directory for saving images to avoid errors. +1. Download [the latest release](https://github.com/Yeetus3141/ImagePaste/releases/latest) (you can view the changelog on the [release page](https://github.com/Yeetus3141/ImagePaste/releases)). +2. Go to Edit|Preferences. On tab Add-ons choose Install and select the downloaded `.zip` file, then tick the box beside the add-on name. -## Usage +## Using ![demo](assets/demo.gif) -| Operator | Editor type | Key shortcut | UI | -| ---------------------------- | ------------------------- | ------------------------ | ---------------------------------------------------------- | -| Paste as reference images | 3D Viewport (Object Mode) | `Ctrl + Shift + V` | `Add > Image > Paste From Clipboard` | -| Paste as planes | 3D Viewport (Object Mode) | `Ctrl + Shift + Alt + V` | `Add > Image > Paste From Clipboard as Plane` | -| Paste as image texture nodes | Shader Editor | `Ctrl + Shift + V` | `Context Menu (right click) > Paste Images From Clipboard` | -| Paste as images | Image Editor | `Ctrl + Shift + V` | `Image > Paste From Clipboard` | -| Copy image to clipboard | Image Editor | `Ctrl + Shift + C` | `Image > Copy To Clipboard` | +| Operator | Editor type | Key shortcut | UI | +| ----------------------- | --------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| Copy Image | Image Editor | Ctrl+Shift+C | Image|Copy to Clipboard | +| Paste as Images | Image Editor | Ctrl+Shift+V | Image|Paste from Clipboard | +| Paste as Image Strips | Sequence Editor | Ctrl+Shift+Alt+V | Context Menu|Paste from Clipboard | +| Paste as Image Textures | Shader Editor | Ctrl+Shift+V | Context Menu|Paste from Clipboard | +| Paste as Planes | 3D Viewport | Ctrl+Shift+Alt+V | Add|Image|Paste from Clipboard as Plane | +| Paste as References | 3D Viewport | Ctrl+Shift+V | Add|Image|Paste from Clipboard as Reference | -**Note**: - -- It is recommended to save the `.blend` file before using this add-on to prevent the misplacement of image files. -- Running _Blender_ as administrator might fix some errors. -- A material must be created (if not exists already) before using **Paste Image As Node** feature. +By default, the images pasted are stored in a temporary directory which is deleted when _Blender_ is closed, but after you save the `.blend` file, they will be saved in the same directory under the `ImagePaste` folder. You can change the directory name, the saving location and other configurations in the add-on preferences. ## Contributing and getting support This is only a small project and we're happy to know it helped some of you. I just want to say that all this wouldn't have been possible without these [great contributors](https://github.com/Yeetus3141/ImagePaste/graphs/contributors) and everybody who comes with new ideas and feature requests! So thank you all! -It will be great if you have an idea and turn it into visible. Tell us how amazing they are by [suggest a feature](https://github.com/Yeetus3141/ImagePaste/issues/new/choose), or you can make it yourself by creating [a pull request](https://github.com/Yeetus3141/ImagePaste/compare). And if you encounter an problem, let us know by [opening an issue](https://github.com/Yeetus3141/ImagePaste/issues/new/choose). But before doing anything, let's take a look at [our contributing guide](.github/CONTRIBUTING.md), it will shows you how to start with all of that. +It will be great if you have an idea and turn it into visible. Tell us how amazing they are by [suggesting a feature](https://github.com/Yeetus3141/ImagePaste/issues/new/choose), or you can make it yourself by creating [a pull request](https://github.com/Yeetus3141/ImagePaste/compare). And if you encounter a problem, let us know by [opening an issue](https://github.com/Yeetus3141/ImagePaste/issues/new/choose). But before doing anything, let's take a look at [our contributing guide](.github/CONTRIBUTING.md), it will show you how to start with all of that.