diff --git a/.all-contributorsrc b/.all-contributorsrc
index 356696f3..3671ef22 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -225,7 +225,8 @@
"profile": "https://github.com/ankarhem",
"contributions": [
"doc",
- "code"
+ "code",
+ "translation"
]
},
{
@@ -262,7 +263,8 @@
"profile": "https://github.com/TheCatLady",
"contributions": [
"code",
- "translation"
+ "translation",
+ "doc"
]
},
{
@@ -301,6 +303,15 @@
"contributions": [
"doc"
]
+ },
+ {
+ "login": "dancarter",
+ "name": "Daniel Carter",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4387516?v=4",
+ "profile": "https://github.com/dancarter",
+ "contributions": [
+ "code"
+ ]
}
],
"badgeTemplate": "-orange.svg\"/>",
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 00000000..7babdcc7
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,12 @@
+# Global code ownership
+* @sct
+
+# Documentation
+docs/ @TheCatLady @samwiseg0
+
+# Snap-related files
+.github/workflows/snap.yaml @samwiseg0
+snap/ @samwiseg0
+
+# i18n locale files
+src/i18n/locale/ @sct @TheCatLady
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 972ad2f3..4b1d3790 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,45 +1,45 @@
---
name: Bug report
-about: Create a report to help us improve
+about: Submit a report to help us improve
title: ''
labels: 'awaiting-triage, type:bug'
assignees: ''
---
-**Describe the bug**
-A clear and concise description of what the bug is.
+#### Description
-**What version of Overseerr are you running?**
-Please fill in the version you are currently running.
+Please provide a clear and concise description of the bug or issue.
-You can find it under: Settings -> About -> Version
+#### Version
-**To Reproduce**
-Steps to reproduce the behavior:
+What version of Overseerr are you running? (You can find this in Settings → About → Version.)
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
+#### Steps to Reproduce
-**Expected behavior**
-A clear and concise description of what you expected to happen.
+Please tell us how we can reproduce the undesired behavior.
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
+1. Go to [...]
+2. Click on [...]
+3. Scroll down to [...]
+4. See error in [...]
-**Desktop (please complete the following information):**
+#### Expected Behavior
-- OS: [e.g. iOS]
-- Browser [e.g. chrome, safari]
-- Version [e.g. 22]
+Please provide a clear and concise description of what you expected to happen.
-**Smartphone (please complete the following information):**
+#### Screenshots
-- Device: [e.g. iPhone6]
-- OS: [e.g. iOS8.1]
-- Browser [e.g. stock browser, safari]
-- Version [e.g. 22]
+If applicable, please provide screenshots depicting the problem.
-**Additional context**
-Add any other context about the problem here.
+#### Device
+
+What device were you using when you encountered this issue? Please provide this information to help us reproduce and investigate the bug.
+
+- **Platform:** [e.g., desktop, smartphone, tablet]
+- **Device:** [e.g., iPhone X, Surface Pro, Samsung Galaxy Tab]
+- **OS:** [e.g., iOS 8.1, Windows 10, Android 11]
+- **Browser:** [e.g., Chrome, Safari, Edge, Firefox]
+
+#### Additional Context
+
+Please provide any additional information that may be relevant or helpful.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index b9ea9edd..29b26fbd 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -6,14 +6,14 @@ labels: 'awaiting-triage, type:enhancement'
assignees: ''
---
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+#### Description
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
+Is your feature request related to a problem? If so, please provide a clear and concise description of the problem. E.g., "I'm always frustrated when [...]."
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
+#### Desired Behavior
-**Additional context**
-Add any other context or screenshots about the feature request here.
+Provide a clear and concise description of what you want to happen.
+
+#### Additional Context
+
+Provide any additional information or screenshots that may be relevant or helpful.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index b65966e7..d8187ecf 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,13 +1,13 @@
#### Description
-#### Screenshot (if UI related)
+#### Screenshot (if UI-related)
-#### Todos
+#### To-Dos
-- [ ] Sucessfully builds `yarn build`
-- [ ] Translation Keys `yarn i18n:extract`
-- [ ] Database migration created (if required)
+- [ ] Successful build `yarn build`
+- [ ] Translation keys `yarn i18n:extract`
+- [ ] Database migration (if required)
-#### Issues Fixed or Closed by this PR
+#### Issues Fixed or Closed
- Fixes #XXXX
diff --git a/.github/stale.yml b/.github/stale.yml
index 6a6201e3..eeed081e 100644
--- a/.github/stale.yml
+++ b/.github/stale.yml
@@ -8,7 +8,7 @@ exemptLabels:
- security
- dependencies
# Label to use when marking an issue as stale
-staleLabel: wontfix
+staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 142bb5c6..ffc74754 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -36,6 +36,13 @@ jobs:
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
+ - name: Cache Docker layers
+ uses: actions/cache@v2.1.4
+ with:
+ path: /tmp/.buildx-cache
+ key: ${{ runner.os }}-buildx-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-buildx-
- name: Login to DockerHub
uses: docker/login-action@v1
with:
@@ -60,6 +67,8 @@ jobs:
sctx/overseerr:${{ github.sha }}
ghcr.io/sct/overseerr:develop
ghcr.io/sct/overseerr:${{ github.sha }}
+ cache-from: type=local,src=/tmp/.buildx-cache
+ cache-to: type=local,dest=/tmp/.buildx-cache,mode=max
discord:
name: Send Discord Notification
needs: build_and_push
@@ -67,7 +76,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Get Build Job Status
- uses: technote-space/workflow-conclusion-action@v1
+ uses: technote-space/workflow-conclusion-action@v2.1.2
- name: Combine Job Status
id: status
diff --git a/.github/workflows/invalid_template.yml b/.github/workflows/invalid_template.yml
index f8be80fe..641b1d6a 100644
--- a/.github/workflows/invalid_template.yml
+++ b/.github/workflows/invalid_template.yml
@@ -13,7 +13,7 @@ jobs:
github-token: ${{ github.token }}
support-label: 'invalid:template-incomplete'
issue-comment: >
- :wave: @{issue-author}, please edit your issue and follow the template provided.
- close-issue: false
- lock-issue: false
+ :wave: @{issue-author}, please follow the template provided.
+ close-issue: true
+ lock-issue: true
issue-lock-reason: 'resolved'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d6feacbb..9e929ce9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -75,6 +75,8 @@ jobs:
- name: Set Up QEMU
uses: docker/setup-qemu-action@v1
+ with:
+ image: tonistiigi/binfmt@sha256:df15403e06a03c2f461c1f7938b171fda34a5849eb63a70e2a2109ed5a778bde
- name: Build Snap Package
uses: diddlesnaps/snapcraft-multiarch-action@v1
@@ -89,7 +91,7 @@ jobs:
path: ${{ steps.build.outputs.snap }}
- name: Review Snap Package
- uses: diddlesnaps/snapcraft-review-tools-action@v1
+ uses: diddlesnaps/snapcraft-review-tools-action@v1.2.0
with:
snap: ${{ steps.build.outputs.snap }}
@@ -106,7 +108,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Get Build Job Status
- uses: technote-space/workflow-conclusion-action@v1
+ uses: technote-space/workflow-conclusion-action@v2.1.2
- name: Combine Job Status
id: status
diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml
index b7a2278a..ac68a327 100644
--- a/.github/workflows/snap.yaml
+++ b/.github/workflows/snap.yaml
@@ -5,10 +5,19 @@ on:
branches: [develop]
jobs:
- test:
- name: Lint & Test Build
+ jobs:
+ name: Job Check
runs-on: ubuntu-20.04
if: "!contains(github.event.head_commit.message, '[skip ci]')"
+ steps:
+ - name: Cancel Previous Runs
+ uses: styfle/cancel-workflow-action@0.8.0
+ with:
+ access_token: ${{ secrets.GITHUB_TOKEN }}
+ test:
+ name: Lint & Test Build
+ needs: jobs
+ runs-on: ubuntu-20.04
container: node:12.18-alpine
steps:
- name: checkout
@@ -48,6 +57,8 @@ jobs:
- name: Set Up QEMU
uses: docker/setup-qemu-action@v1
+ with:
+ image: tonistiigi/binfmt@sha256:df15403e06a03c2f461c1f7938b171fda34a5849eb63a70e2a2109ed5a778bde
- name: Build Snap Package
uses: diddlesnaps/snapcraft-multiarch-action@v1
@@ -62,7 +73,7 @@ jobs:
path: ${{ steps.build.outputs.snap }}
- name: Review Snap Package
- uses: diddlesnaps/snapcraft-review-tools-action@v1
+ uses: diddlesnaps/snapcraft-review-tools-action@v1.2.0
with:
snap: ${{ steps.build.outputs.snap }}
@@ -79,7 +90,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Get Build Job Status
- uses: technote-space/workflow-conclusion-action@v1
+ uses: technote-space/workflow-conclusion-action@v2.1.2
- name: Combine Job Status
id: status
diff --git a/.gitignore b/.gitignore
index b13c9472..8e186622 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,6 +38,8 @@ config/settings.json
# logs
config/logs/*.log*
config/logs/*.json
+config/logs/*.log.gz
+config/logs/*-audit.json
# anidb mapping file
config/anime-list.xml
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0da05476..9a97a796 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
# Contributing to Overseerr
-All help is welcome and greatly appreciated. If you would like to contribute to the project the steps below can get you started:
+All help is welcome and greatly appreciated. If you would like to contribute to the project, the instructions below can get you started...
## Development
@@ -14,29 +14,31 @@ All help is welcome and greatly appreciated. If you would like to contribute to
### Getting Started
1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device.
- ```
+
+ ```bash
git clone https://github.com/YOUR_USERNAME/overseerr.git
cd overseerr/
```
+
2. Add the remote upstream.
- ```
+ ```bash
git remote add upstream https://github.com/sct/overseerr.git
```
3. Create a new branch
- ```
+ ```bash
git checkout -b BRANCH_NAME develop
```
- - Its recommended to name the branch something relevant to the feature or fix you are working on.
+ - It is recommended to name the branch something relevant to the feature or fix you are working on.
- An example of this would be `fix-title-cards` or `feature-new-system`.
- Bad examples would be `patch` or `bug`.
4. Run development environment
- ```
+ ```bash
yarn
yarn dev
```
@@ -47,9 +49,9 @@ All help is welcome and greatly appreciated. If you would like to contribute to
6. Follow the [guidelines](#contributing-code).
-7. Should you need to update your fork you can do so by rebasing from upstream.
+7. Should you need to update your fork, you can do so by rebasing from `upstream`:
- ```
+ ```bash
git fetch upstream
git rebase upstream/develop
git push origin BRANCH_NAME -f
@@ -61,18 +63,36 @@ All help is welcome and greatly appreciated. If you would like to contribute to
- All commits **must** follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
- It is okay if you squash your PR down to be a single commit that fits this standard.
- PRs with commits not following this standard will not be merged.
-- Please make meaningful commits, or squash them
-- Always rebase your commit to the latest `develop` branch. Do not merge develop into your branch.
-- It is your responsibility to keep your branch up to date. It will not be merged unless its rebased off the latest develop branch.
-- You can create a Draft pull request early to get feedback on your work.
+- Please make meaningful commits, or squash them.
+- Always rebase your commit to the latest `develop` branch. Do not merge `develop` into your branch.
+- It is your responsibility to keep your branch up to date. It will not be merged unless its rebased off the latest `develop` branch.
+- You can create a "draft" pull request early to get feedback on your work.
- Your code must be formatted correctly or the tests will fail.
- - We use Prettier to format our codebase. It should auto run with a git hook, but its recommended to have a Prettier extension installed in your editor and have it format on save.
+ - We use Prettier to format our codebase. It should automatically run with a `git` hook, but it is recommended to have the Prettier extension installed in your editor and format on save.
- If you have questions or need help, you can reach out in [GitHub Discussions](https://github.com/sct/overseerr/discussions) or in our [Discord](https://discord.gg/PkCWJSeCk7).
-- Only open pull requests to `develop`. Never `master`. Any PR's opened to master will be closed.
+- Only open pull requests to `develop`. Never `master`. Any PRs opened to `master` will be closed.
+
+### UI Text Style
+
+When adding new UI text, please be sure to adhere to the following guidelines:
+
+1. Be concise and clear, and use as few words as possible to make your point.
+2. Use the Oxford comma where appropriate.
+3. Use the appropriate Unicode characters for ellipses, arrows, and other special characters/symbols.
+4. Capitalize proper nouns, such as Plex, Radarr, Sonarr, Telegram, Slack, Pushover, etc. Be sure to also use the official capitalization for any abbreviations; e.g., TMDb and IMDb have a lowercase 'b', whereas TheTVDB has a capital 'B'.
+5. Title case headings, button text, and form labels. Note that verbs such as "is" should be capitalized, whereas prepositions like "from" should be lowercase (unless as the first or last word of the string, in which case they are also capitalized).
+6. Capitalize the first word in validation error messages, dropdowns, and form "tips." These strings should not end in punctuation.
+7. Ensure that toast notification strings are complete sentences ending in punctuation.
+8. If an additional description or "tip" is required for a form field, it should be styled using the global CSS class `label-tip`.
+9. In full sentences, abbreviations like "info" or "auto" should not be used in place of full words, unless referencing the name/label of a specific setting or option which has an abbreviation in its name.
+10. Do your best to check for spelling errors and grammatical mistakes.
+11. Do not misspell "Overseerr."
## Translation
-We use [Weblate](https://hosted.weblate.org/engage/overseerr/) for our translations so please feel free to contribute to localizing Overseerr!
+We use [Weblate](https://hosted.weblate.org/engage/overseerr/) for our translations, and your help with localizing Overseerr would be greatly appreciated! If your language is not listed below, please [open a feature request on GitHub](https://github.com/sct/overseerr/issues/new/choose).
+
+
## Attribution
diff --git a/README.md b/README.md
index f3b3c27b..70bd55d5 100644
--- a/README.md
+++ b/README.md
@@ -6,43 +6,34 @@
{intl.formatMessage(messages.requestswillbecreated)}
++ {intl.formatMessage( + is4k + ? messages.requestswillbecreated4k + : messages.requestswillbecreated + )} +
= P extends 'a' + ? HTMLAnchorElement + : HTMLButtonElement; + +type BaseProps
= { buttonType?: ButtonType; buttonSize?: 'default' | 'lg' | 'md' | 'sm'; -} + // Had to do declare this manually as typescript would assume e was of type any otherwise + onClick?: ( + e: React.MouseEvent
+ ) => void;
+};
-const Button: React.FC = {
+ as?: P;
+} & MergeElementProps >;
+
+function Button (
+ {
+ buttonType = 'default',
+ buttonSize = 'default',
+ as,
+ children,
+ className,
+ ...props
+ }: ButtonProps ,
+ ref?: React.Ref