diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..4a4e9eecd0 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "jalangi2"] + path = jalangi2 + url = https://github.com/Samsung/jalangi2.git diff --git a/.stryker-tmp/sandbox1963221/.codeclimate.yml b/.stryker-tmp/sandbox1963221/.codeclimate.yml new file mode 100644 index 0000000000..d40cc58e75 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.codeclimate.yml @@ -0,0 +1,30 @@ +# Save as .codeclimate.yml (note leading .) in project root directory +version: "2" +languages: + Ruby: false + JavaScript: true + PHP: false +checks: + file-lines: + config: + threshold: 500 + method-lines: + config: + threshold: 75 + method-complexity: + config: + threshold: 10 + similar-code: + config: + threshold: 65 +plugins: + duplication: + enabled: true + config: + languages: + javascript: + mass_threshold: 110 + count_threshold: 3 +exclude_paths: +- "public/vendor/*" +- "test/*" \ No newline at end of file diff --git a/.stryker-tmp/sandbox1963221/.docker/.gitkeep b/.stryker-tmp/sandbox1963221/.docker/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.stryker-tmp/sandbox1963221/.dockerignore b/.stryker-tmp/sandbox1963221/.dockerignore new file mode 100644 index 0000000000..46ab37b3ab --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.dockerignore @@ -0,0 +1,10 @@ +.* +logs +test +node_modules +commitlint.config.js +nodebb.bat +renovate.json +*.yml +*.md +Dockerfile diff --git a/.stryker-tmp/sandbox1963221/.editorconfig b/.stryker-tmp/sandbox1963221/.editorconfig new file mode 100644 index 0000000000..71cf54ef4d --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[{*.js, *.css, *.tpl, *.json}] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false diff --git a/.stryker-tmp/sandbox1963221/.eslintignore b/.stryker-tmp/sandbox1963221/.eslintignore new file mode 100644 index 0000000000..b304ee19d8 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.eslintignore @@ -0,0 +1,21 @@ +node_modules/ +*.sublime-project +*.sublime-workspace +.project +.vagrant +.DS_Store +logs/ +/public/templates +/public/uploads +/public/vendor +/public/src/modules/string.js +.idea/ +.vscode/ +*.ipr +*.iws +/coverage +/build +.eslintrc +test/files +*.min.js +install/docker/ \ No newline at end of file diff --git a/.stryker-tmp/sandbox1963221/.eslintrc b/.stryker-tmp/sandbox1963221/.eslintrc new file mode 100644 index 0000000000..abd292af1b --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "nodebb" +} diff --git a/.stryker-tmp/sandbox1963221/.gitattributes b/.stryker-tmp/sandbox1963221/.gitattributes new file mode 100644 index 0000000000..e0fa7609a5 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.gitattributes @@ -0,0 +1,13 @@ +# These files are text and should be normalized (convert crlf => lf) +*.json text +*.css text +*.less text +*.tpl text +*.html text +*.js text +*.md text + +# Images should be treated as binary +# (binary is a macro for -text -diff) +*.png binary +*.jpg binary \ No newline at end of file diff --git a/.stryker-tmp/sandbox1963221/.github/CONTRIBUTING.md b/.stryker-tmp/sandbox1963221/.github/CONTRIBUTING.md new file mode 100644 index 0000000000..11911cd409 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/CONTRIBUTING.md @@ -0,0 +1,69 @@ +# Submitting a Pull Request to NodeBB? + +First of all, thank you! Before submission, please run `npm test` to lint and run the automated NodeBB tests. If everything passes, you're good to go. If you have any errors, please fix them and re-run `npm test` to make sure there aren't any others. + +## Styleguide and linting + +NodeBB mostly conforms to the [AirBnB Javascript style guide](https://github.com/airbnb/javascript#readme). If you're running into a lot of ESlint errors, you may want to install an editor plugin to display them in real time. + +## Contributor License Agreement + +Thank you for considering contributing to NodeBB. **Before you are able to submit a pull request, please take a moment to read our [contributor license agreement](https://gist.github.com/psychobunny/65946d7aa8854b12fab9)** and agree to it on the pull request page on GitHub. In summary, signing this document means that 1) you own the code that you are contributing and 2) you give permission to NodeBB Inc. to license the code to others. This agreement applies to any repository under the NodeBB organization. + +If you are writing contributions as part of employment from another company / individual, then your employer will need to sign a separate agreement. Please [contact us](mailto:accounts@nodebb.org) so that we can send this additional agreement to your employer. + + +# Having problems installing NodeBB? + +Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/installing/os/), please head over to our [community support forum](https://community.nodebb.org) for advice. + +# Found a Security Vulnerability? + +If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**. +A member of the NodeBB security team will respond to the issue. +Please do not post it to the public bug tracker. + +# Issues & Bugs + +Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem. + +In general, if we can't reproduce it, we can't fix it! + +## Try the latest version of NodeBB + +There is a chance that the issue you are experiencing may have already been fixed. + +## Provide the NodeBB version number and git hash + +You can find the NodeBB version number in the Admin Control Panel (ACP), as well as the first line output to the shell when running NodeBB + +``` plaintext +3/4 12:38:57 [10752] - info: NodeBB v1.4.5 Copyright (C) 2013-2017 NodeBB Inc. +3/4 12:38:57 [10752] - info: This program comes with ABSOLUTELY NO WARRANTY. +3/4 12:38:57 [10752] - info: This is free software, and you are welcome to redistribute it under certain conditions. +``` + +If you are running NodeBB via git, it is also helpful to let the maintainers know what commit hash you are on. To find the commit hash, execute the following command: + +``` bash +$ cd /path/to/my/nodebb +$ git rev-parse HEAD +``` + +If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know. + +## Provide theme versions if issue is related to the theme/display +Use `npm ls` to list the versions of the theme you're using. In this example, we're running the Persona theme, which depends on the Vanilla theme. + +``` bash +$ npm ls nodebb-theme-vanilla nodebb-theme-persona +nodebb@1.4.3 /path/to/nodebb ++-- nodebb-theme-persona@4.2.4 +`-- nodebb-theme-vanilla@5.2.0 +``` + +## Attempt to use `git bisect` + +If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`. + +A full guide can be found here: [Debugging with Git/Binary Search](http://git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search) diff --git a/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/bug-report.yml b/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000000..f8faf31515 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,81 @@ +name: Bug Report +description: File a bug report +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: input + attributes: + label: NodeBB version + placeholder: e.g. v2.2.0 + - type: input + attributes: + label: NodeBB git hash + description: to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory + placeholder: e.g. 783250ee6f8c51cdc243ce3b8d9f1a080517247e + - type: input + attributes: + label: NodeJS version + placeholder: e.g. v16.15.1 + - type: textarea + attributes: + label: Installed NodeBB plugins + description: to find installed plugins run `./nodebb plugins` + placeholder: | + e.g. + * nodebb-plugin-2factor@5.0.1 (installed, disabled) + * nodebb-plugin-composer-default@8.0.0 (installed, enabled) + * nodebb-plugin-dbsearch@5.1.5 (installed, disabled) + * nodebb-plugin-emoji@4.0.4 (installed, enabled) + * nodebb-plugin-emoji-android@3.0.0 (installed, enabled) + * nodebb-plugin-markdown@10.0.0 (installed, enabled) + * nodebb-plugin-mentions@3.0.11 (installed, enabled) + * nodebb-plugin-spam-be-gone@1.0.0 (installed, disabled) + * nodebb-rewards-essentials@0.2.1 (installed, enabled) + * nodebb-theme-lavender@6.0.0 (installed, disabled) + * nodebb-theme-persona@12.0.11 (installed, enabled) + * nodebb-theme-slick@2.0.2 (installed, disabled) + * nodebb-theme-vanilla@12.1.18 (installed, disabled) + * nodebb-widget-essentials@6.0.0 (installed, enabled) + - type: dropdown + attributes: + label: Database type + multiple: true + options: + - MongoDB + - Redis + - PostgreSQL + - type: input + attributes: + label: Database version + description: "`mongod --version`, `redis-server --version`, or `postgres --version`" + placeholder: e.g. v5.0.9 + - type: textarea + attributes: + label: Exact steps to cause this issue + placeholder: | + 1. First I did this... + 2. Then, I clicked on this item... + + A quick note: MP4 and MOV formatted video files are now allowed to be uploaded to GH. + Please upload if reproduction steps are hard to describe or reproduce reliably. + - type: textarea + attributes: + label: What you expected + placeholder: e.g. I expected *abc* to *xyz* + - type: textarea + attributes: + label: What happened instead + placeholder: e.g. Instead, I got *zyx* and NodeBB set fire to my house + - type: textarea + attributes: + label: Anything else? + description: Any additional context about the issue you're encountering + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/config.yml b/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..ab47f0760d --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Community Forum + url: https://community.nodebb.org + about: Github Issues are for bug reports and feature requests only, please use community forum for other support diff --git a/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/feature-request.yml b/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000000..382d874014 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,24 @@ +name: Feature Request +description: Suggest a new feature +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: textarea + attributes: + label: Description + validations: + required: true + - type: input + attributes: + label: Community forum reference + description: If this feature was already discussed on the Community Forum link it here + placeholder: https://community.nodebb.org/topic/0/example-feature-request + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox1963221/.github/SECURITY.md b/.stryker-tmp/sandbox1963221/.github/SECURITY.md new file mode 100644 index 0000000000..0dffd0a60f --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/SECURITY.md @@ -0,0 +1,9 @@ +# Reporting a security vulnerability + +NodeBB's security policy is based around a private bug bounty program. Users are invited to explore NodeBB for vulnerabilities, and report them to the NodeBB team so that they can be patched. + +If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead, even if you are not sure whether something qualifies. + +# Bug Bounty Program + +Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the [dedicated page for our Bug Bounty Program](https://nodebb.org/bounty). diff --git a/.stryker-tmp/sandbox1963221/.github/workflows/azure-deploy-f24.yml b/.stryker-tmp/sandbox1963221/.github/workflows/azure-deploy-f24.yml new file mode 100644 index 0000000000..752ac4b7bf --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/workflows/azure-deploy-f24.yml @@ -0,0 +1,54 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +name: Build and deploy Node.js app to Azure Web App - nodebb-f24 + +on: + push: + branches: + - f24 + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + lint-and-test: + uses: + ./.github/workflows/test.yaml + + build-and-deploy: + if: github.repository == 'cmu-313/nodebb-f24-hunan-hunters' + needs: lint-and-test + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js version + uses: actions/setup-node@v3 + with: + node-version: '20.x' + + - name: Set up NodeBB + run: | + ./nodebb setup '{"url":"https://nodebb-hunanhunters.azurewebsites.net:443", + "admin:username": "admin", + "admin:password": "${{ secrets.ADMIN_PASSWORD }}", + "admin:password:confirm": "${{ secrets.ADMIN_PASSWORD }}", + "admin:email": "rohanpadhye@cmu.edu", + "database": "redis", + "redis:host": "${{ secrets.REDIS_HOST }}", + "redis:port": "6379", + "redis:password": "${{ secrets.REDIS_PASSWORD }}" }' + + - name: 'Deploy to Azure Web App' + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'nodebb-hunanhunters' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_8CE2E89DDD294B98BF913663FFF5E9D5 }} + package: . diff --git a/.stryker-tmp/sandbox1963221/.github/workflows/docker.yml b/.stryker-tmp/sandbox1963221/.github/workflows/docker.yml new file mode 100644 index 0000000000..67aee91b9a --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/workflows/docker.yml @@ -0,0 +1,72 @@ +name: Run Docker + +# Controls when the workflow will run +on: + push: + branches: + - 'master' + - 'v*.x' + tags: + - 'v*' + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +permissions: + contents: read + packages: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Get current date in NST + run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}}.x + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }} + type=raw,value=${{ env.CURRENT_DATE_NST }} + flavor: | + latest=true + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: var-cache-node-modules + key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }} + + - name: Build and push Docker images + uses: docker/build-push-action@v5 + with: + cache-from: type=gha + cache-to: type=gha,mode=min + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: ${{ steps.meta.outputs.tags }} diff --git a/.stryker-tmp/sandbox1963221/.github/workflows/test.yaml b/.stryker-tmp/sandbox1963221/.github/workflows/test.yaml new file mode 100644 index 0000000000..c4e8f090bd --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/workflows/test.yaml @@ -0,0 +1,87 @@ +name: Lint and test + +on: + pull_request: + branches: + - f24 + workflow_call: # Usually called from deploy + +defaults: + run: + shell: bash + +permissions: + checks: write # for coverallsapp/github-action to create new checks + contents: read # for actions/checkout to fetch code + +jobs: + test: + runs-on: ubuntu-latest + env: + TEST_ENV: 'production' + + services: + redis: + image: 'redis:7.2.4' + # Set health checks to wait until redis has started + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps port 6379 on service container to the host + - 6379:6379 + + steps: + - uses: actions/checkout@v4 + + - run: cp install/package.json package.json + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: NPM Install + uses: bahmutov/npm-install@v1 + with: + useLockFile: false + + - name: Setup for Redis + env: + SETUP: >- + { + "url": "http://127.0.0.1:4567/forum", + "secret": "abcdef", + "admin:username": "admin", + "admin:email": "test@example.org", + "admin:password": "hAN3Eg8W", + "admin:password:confirm": "hAN3Eg8W", + + "database": "redis", + "redis:host": "127.0.0.1", + "redis:port": 6379, + "redis:password": "", + "redis:database": 0 + } + CI: >- + { + "host": "127.0.0.1", + "database": 1, + "port": 6379 + } + run: | + node app --setup="${SETUP}" --ci="${CI}" + + - name: Run ESLint + run: npm run lint + + - name: Node tests + run: npm test + + - name: Extract coverage info + run: npm run coverage + + - name: Test coverage + uses: coverallsapp/github-action@v2 diff --git a/.stryker-tmp/sandbox1963221/.github/workflows/volunteers.yaml b/.stryker-tmp/sandbox1963221/.github/workflows/volunteers.yaml new file mode 100644 index 0000000000..3cd849b824 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.github/workflows/volunteers.yaml @@ -0,0 +1,12 @@ +name: "Issue volunteer assignment" + +on: [issue_comment, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: bhermann/issue-volunteer@v0.1.12 + with: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + diff --git a/.stryker-tmp/sandbox1963221/.gitignore b/.stryker-tmp/sandbox1963221/.gitignore new file mode 100644 index 0000000000..8a0aca8cc7 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.gitignore @@ -0,0 +1,77 @@ +dist/ +yarn.lock +npm-debug.log +node_modules/ +sftp-config.json +config.json +jsconfig.json +public/src/nodebb.min.js +!src/views/config.json +public/css/*.css +*.sublime-project +*.sublime-workspace +.project +*.swp +Vagrantfile +.vagrant +provision.sh +*.komodoproject +.DS_Store +feeds/recent.rss +.eslintcache +.svn + +logs/ + +pidfile + +# templates +/public/templates + +/public/uploads +/test/uploads + +# compiled files +/public/stylesheet.css +/public/admin.css +/public/nodebb.min.js +/public/nodebb.min.js.map +/public/acp.min.js +/public/acp.min.js.map +/public/installer.css +/public/installer.min.js +/public/bootstrap.min.css +/public/logo.png + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio +*.iml + +## Directory-based project format: +.idea/ +.vscode/ + +## File-based project format: +*.ipr +*.iws + +## Transifex +tx.exe +.transifexrc + +##Coverage output +coverage +.nyc_output + +*.log +test/files/normalise.jpg.png +test/files/normalise-resized.jpg +package-lock.json +/package.json +*.mongodb +link-plugins.sh +test.sh + +.docker/** +!**/.gitkeep +# stryker temp files +.stryker-tmp diff --git a/.stryker-tmp/sandbox1963221/.husky/.gitignore b/.stryker-tmp/sandbox1963221/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.stryker-tmp/sandbox1963221/.husky/commit-msg b/.stryker-tmp/sandbox1963221/.husky/commit-msg new file mode 100755 index 0000000000..e8511eaeaf --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit $1 diff --git a/.stryker-tmp/sandbox1963221/.husky/pre-commit b/.stryker-tmp/sandbox1963221/.husky/pre-commit new file mode 100755 index 0000000000..d37daa075e --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/.stryker-tmp/sandbox1963221/.mocharc.yml b/.stryker-tmp/sandbox1963221/.mocharc.yml new file mode 100644 index 0000000000..16d8518d1b --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.mocharc.yml @@ -0,0 +1,4 @@ +reporter: dot +timeout: 25000 +exit: true +bail: true diff --git a/.stryker-tmp/sandbox1963221/.tx/config b/.stryker-tmp/sandbox1963221/.tx/config new file mode 100644 index 0000000000..35758d9b05 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/.tx/config @@ -0,0 +1,4007 @@ +[main] +host = https://www.transifex.com + +[o:nodebb:p:nodebb:r:admin-admin] +file_filter = public/language//admin/admin.json +source_file = public/language/en-GB/admin/admin.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/admin/admin.json +trans.en@pirate = public/language/en-x-pirate/admin/admin.json +trans.hy = public/language/hy/admin/admin.json +trans.pl = public/language/pl/admin/admin.json +trans.th = public/language/th/admin/admin.json +trans.de = public/language/de/admin/admin.json +trans.el = public/language/el/admin/admin.json +trans.ar = public/language/ar/admin/admin.json +trans.bg = public/language/bg/admin/admin.json +trans.bn = public/language/bn/admin/admin.json +trans.it = public/language/it/admin/admin.json +trans.lv = public/language/lv/admin/admin.json +trans.nl = public/language/nl/admin/admin.json +trans.ru = public/language/ru/admin/admin.json +trans.sr = public/language/sr/admin/admin.json +trans.sv = public/language/sv/admin/admin.json +trans.uk = public/language/uk/admin/admin.json +trans.zh_CN = public/language/zh-CN/admin/admin.json +trans.fa_IR = public/language/fa-IR/admin/admin.json +trans.id = public/language/id/admin/admin.json +trans.ms = public/language/ms/admin/admin.json +trans.nb = public/language/nb/admin/admin.json +trans.sk = public/language/sk/admin/admin.json +trans.cs = public/language/cs/admin/admin.json +trans.fi = public/language/fi/admin/admin.json +trans.fr = public/language/fr/admin/admin.json +trans.rw = public/language/rw/admin/admin.json +trans.sq_AL = public/language/sq-AL/admin/admin.json +trans.en_US = public/language/en-US/admin/admin.json +trans.es = public/language/es/admin/admin.json +trans.et = public/language/et/admin/admin.json +trans.gl = public/language/gl/admin/admin.json +trans.he = public/language/he/admin/admin.json +trans.ja = public/language/ja/admin/admin.json +trans.lt = public/language/lt/admin/admin.json +trans.pt_PT = public/language/pt-PT/admin/admin.json +trans.sc = public/language/sc/admin/admin.json +trans.sl = public/language/sl/admin/admin.json +trans.vi = public/language/vi/admin/admin.json +trans.da = public/language/da/admin/admin.json +trans.hr = public/language/hr/admin/admin.json +trans.hu = public/language/hu/admin/admin.json +trans.ko = public/language/ko/admin/admin.json +trans.ro = public/language/ro/admin/admin.json +trans.tr = public/language/tr/admin/admin.json +trans.zh_TW = public/language/zh-TW/admin/admin.json + +[o:nodebb:p:nodebb:r:admin-advanced-cache] +file_filter = public/language//admin/advanced/cache.json +source_file = public/language/en-GB/admin/advanced/cache.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fa_IR = public/language/fa-IR/admin/advanced/cache.json +trans.he = public/language/he/admin/advanced/cache.json +trans.ko = public/language/ko/admin/advanced/cache.json +trans.pt_PT = public/language/pt-PT/admin/advanced/cache.json +trans.rw = public/language/rw/admin/advanced/cache.json +trans.tr = public/language/tr/admin/advanced/cache.json +trans.en_US = public/language/en-US/admin/advanced/cache.json +trans.hu = public/language/hu/admin/advanced/cache.json +trans.id = public/language/id/admin/advanced/cache.json +trans.ms = public/language/ms/admin/advanced/cache.json +trans.sc = public/language/sc/admin/advanced/cache.json +trans.sv = public/language/sv/admin/advanced/cache.json +trans.es = public/language/es/admin/advanced/cache.json +trans.gl = public/language/gl/admin/advanced/cache.json +trans.lv = public/language/lv/admin/advanced/cache.json +trans.nl = public/language/nl/admin/advanced/cache.json +trans.ru = public/language/ru/admin/advanced/cache.json +trans.zh_TW = public/language/zh-TW/admin/advanced/cache.json +trans.bn = public/language/bn/admin/advanced/cache.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/cache.json +trans.fr = public/language/fr/admin/advanced/cache.json +trans.hr = public/language/hr/admin/advanced/cache.json +trans.pt_BR = public/language/pt-BR/admin/advanced/cache.json +trans.ar = public/language/ar/admin/advanced/cache.json +trans.bg = public/language/bg/admin/advanced/cache.json +trans.cs = public/language/cs/admin/advanced/cache.json +trans.lt = public/language/lt/admin/advanced/cache.json +trans.nb = public/language/nb/admin/advanced/cache.json +trans.uk = public/language/uk/admin/advanced/cache.json +trans.el = public/language/el/admin/advanced/cache.json +trans.pl = public/language/pl/admin/advanced/cache.json +trans.sr = public/language/sr/admin/advanced/cache.json +trans.da = public/language/da/admin/advanced/cache.json +trans.et = public/language/et/admin/advanced/cache.json +trans.fi = public/language/fi/admin/advanced/cache.json +trans.hy = public/language/hy/admin/advanced/cache.json +trans.ja = public/language/ja/admin/advanced/cache.json +trans.sl = public/language/sl/admin/advanced/cache.json +trans.sq_AL = public/language/sq-AL/admin/advanced/cache.json +trans.th = public/language/th/admin/advanced/cache.json +trans.de = public/language/de/admin/advanced/cache.json +trans.it = public/language/it/admin/advanced/cache.json +trans.ro = public/language/ro/admin/advanced/cache.json +trans.sk = public/language/sk/admin/advanced/cache.json +trans.vi = public/language/vi/admin/advanced/cache.json +trans.zh_CN = public/language/zh-CN/admin/advanced/cache.json + +[o:nodebb:p:nodebb:r:admin-advanced-database] +file_filter = public/language//admin/advanced/database.json +source_file = public/language/en-GB/admin/advanced/database.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fr = public/language/fr/admin/advanced/database.json +trans.he = public/language/he/admin/advanced/database.json +trans.ja = public/language/ja/admin/advanced/database.json +trans.lv = public/language/lv/admin/advanced/database.json +trans.pt_PT = public/language/pt-PT/admin/advanced/database.json +trans.en_US = public/language/en-US/admin/advanced/database.json +trans.el = public/language/el/admin/advanced/database.json +trans.tr = public/language/tr/admin/advanced/database.json +trans.zh_CN = public/language/zh-CN/admin/advanced/database.json +trans.ar = public/language/ar/admin/advanced/database.json +trans.hr = public/language/hr/admin/advanced/database.json +trans.lt = public/language/lt/admin/advanced/database.json +trans.ro = public/language/ro/admin/advanced/database.json +trans.zh_TW = public/language/zh-TW/admin/advanced/database.json +trans.gl = public/language/gl/admin/advanced/database.json +trans.it = public/language/it/admin/advanced/database.json +trans.nb = public/language/nb/admin/advanced/database.json +trans.bn = public/language/bn/admin/advanced/database.json +trans.da = public/language/da/admin/advanced/database.json +trans.de = public/language/de/admin/advanced/database.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/database.json +trans.hu = public/language/hu/admin/advanced/database.json +trans.hy = public/language/hy/admin/advanced/database.json +trans.id = public/language/id/admin/advanced/database.json +trans.nl = public/language/nl/admin/advanced/database.json +trans.cs = public/language/cs/admin/advanced/database.json +trans.sv = public/language/sv/admin/advanced/database.json +trans.sr = public/language/sr/admin/advanced/database.json +trans.pl = public/language/pl/admin/advanced/database.json +trans.ru = public/language/ru/admin/advanced/database.json +trans.sc = public/language/sc/admin/advanced/database.json +trans.sl = public/language/sl/admin/advanced/database.json +trans.sq_AL = public/language/sq-AL/admin/advanced/database.json +trans.th = public/language/th/admin/advanced/database.json +trans.et = public/language/et/admin/advanced/database.json +trans.fa_IR = public/language/fa-IR/admin/advanced/database.json +trans.ko = public/language/ko/admin/advanced/database.json +trans.sk = public/language/sk/admin/advanced/database.json +trans.vi = public/language/vi/admin/advanced/database.json +trans.es = public/language/es/admin/advanced/database.json +trans.fi = public/language/fi/admin/advanced/database.json +trans.ms = public/language/ms/admin/advanced/database.json +trans.pt_BR = public/language/pt-BR/admin/advanced/database.json +trans.rw = public/language/rw/admin/advanced/database.json +trans.uk = public/language/uk/admin/advanced/database.json +trans.bg = public/language/bg/admin/advanced/database.json + +[o:nodebb:p:nodebb:r:admin-advanced-errors] +file_filter = public/language//admin/advanced/errors.json +source_file = public/language/en-GB/admin/advanced/errors.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/advanced/errors.json +trans.en_US = public/language/en-US/admin/advanced/errors.json +trans.es = public/language/es/admin/advanced/errors.json +trans.pl = public/language/pl/admin/advanced/errors.json +trans.sk = public/language/sk/admin/advanced/errors.json +trans.uk = public/language/uk/admin/advanced/errors.json +trans.da = public/language/da/admin/advanced/errors.json +trans.gl = public/language/gl/admin/advanced/errors.json +trans.hu = public/language/hu/admin/advanced/errors.json +trans.pt_PT = public/language/pt-PT/admin/advanced/errors.json +trans.vi = public/language/vi/admin/advanced/errors.json +trans.de = public/language/de/admin/advanced/errors.json +trans.ko = public/language/ko/admin/advanced/errors.json +trans.nb = public/language/nb/admin/advanced/errors.json +trans.sc = public/language/sc/admin/advanced/errors.json +trans.sl = public/language/sl/admin/advanced/errors.json +trans.tr = public/language/tr/admin/advanced/errors.json +trans.zh_CN = public/language/zh-CN/admin/advanced/errors.json +trans.fr = public/language/fr/admin/advanced/errors.json +trans.hy = public/language/hy/admin/advanced/errors.json +trans.pt_BR = public/language/pt-BR/admin/advanced/errors.json +trans.ro = public/language/ro/admin/advanced/errors.json +trans.sr = public/language/sr/admin/advanced/errors.json +trans.sv = public/language/sv/admin/advanced/errors.json +trans.fa_IR = public/language/fa-IR/admin/advanced/errors.json +trans.it = public/language/it/admin/advanced/errors.json +trans.lt = public/language/lt/admin/advanced/errors.json +trans.ms = public/language/ms/admin/advanced/errors.json +trans.ru = public/language/ru/admin/advanced/errors.json +trans.sq_AL = public/language/sq-AL/admin/advanced/errors.json +trans.ar = public/language/ar/admin/advanced/errors.json +trans.fi = public/language/fi/admin/advanced/errors.json +trans.he = public/language/he/admin/advanced/errors.json +trans.ja = public/language/ja/admin/advanced/errors.json +trans.th = public/language/th/admin/advanced/errors.json +trans.zh_TW = public/language/zh-TW/admin/advanced/errors.json +trans.bn = public/language/bn/admin/advanced/errors.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/errors.json +trans.hr = public/language/hr/admin/advanced/errors.json +trans.rw = public/language/rw/admin/advanced/errors.json +trans.bg = public/language/bg/admin/advanced/errors.json +trans.el = public/language/el/admin/advanced/errors.json +trans.et = public/language/et/admin/advanced/errors.json +trans.id = public/language/id/admin/advanced/errors.json +trans.lv = public/language/lv/admin/advanced/errors.json +trans.nl = public/language/nl/admin/advanced/errors.json + +[o:nodebb:p:nodebb:r:admin-advanced-events] +file_filter = public/language//admin/advanced/events.json +source_file = public/language/en-GB/admin/advanced/events.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/advanced/events.json +trans.el = public/language/el/admin/advanced/events.json +trans.lt = public/language/lt/admin/advanced/events.json +trans.pt_BR = public/language/pt-BR/admin/advanced/events.json +trans.zh_TW = public/language/zh-TW/admin/advanced/events.json +trans.th = public/language/th/admin/advanced/events.json +trans.gl = public/language/gl/admin/advanced/events.json +trans.ko = public/language/ko/admin/advanced/events.json +trans.nl = public/language/nl/admin/advanced/events.json +trans.ro = public/language/ro/admin/advanced/events.json +trans.sl = public/language/sl/admin/advanced/events.json +trans.ar = public/language/ar/admin/advanced/events.json +trans.hr = public/language/hr/admin/advanced/events.json +trans.vi = public/language/vi/admin/advanced/events.json +trans.fa_IR = public/language/fa-IR/admin/advanced/events.json +trans.ms = public/language/ms/admin/advanced/events.json +trans.tr = public/language/tr/admin/advanced/events.json +trans.nb = public/language/nb/admin/advanced/events.json +trans.pt_PT = public/language/pt-PT/admin/advanced/events.json +trans.sk = public/language/sk/admin/advanced/events.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/events.json +trans.es = public/language/es/admin/advanced/events.json +trans.et = public/language/et/admin/advanced/events.json +trans.he = public/language/he/admin/advanced/events.json +trans.lv = public/language/lv/admin/advanced/events.json +trans.sv = public/language/sv/admin/advanced/events.json +trans.zh_CN = public/language/zh-CN/admin/advanced/events.json +trans.pl = public/language/pl/admin/advanced/events.json +trans.rw = public/language/rw/admin/advanced/events.json +trans.cs = public/language/cs/admin/advanced/events.json +trans.de = public/language/de/admin/advanced/events.json +trans.fr = public/language/fr/admin/advanced/events.json +trans.hy = public/language/hy/admin/advanced/events.json +trans.id = public/language/id/admin/advanced/events.json +trans.ru = public/language/ru/admin/advanced/events.json +trans.sq_AL = public/language/sq-AL/admin/advanced/events.json +trans.uk = public/language/uk/admin/advanced/events.json +trans.da = public/language/da/admin/advanced/events.json +trans.en_US = public/language/en-US/admin/advanced/events.json +trans.hu = public/language/hu/admin/advanced/events.json +trans.it = public/language/it/admin/advanced/events.json +trans.ja = public/language/ja/admin/advanced/events.json +trans.bn = public/language/bn/admin/advanced/events.json +trans.fi = public/language/fi/admin/advanced/events.json +trans.sc = public/language/sc/admin/advanced/events.json +trans.sr = public/language/sr/admin/advanced/events.json + +[o:nodebb:p:nodebb:r:admin-advanced-logs] +file_filter = public/language//admin/advanced/logs.json +source_file = public/language/en-GB/admin/advanced/logs.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/advanced/logs.json +trans.ru = public/language/ru/admin/advanced/logs.json +trans.vi = public/language/vi/admin/advanced/logs.json +trans.id = public/language/id/admin/advanced/logs.json +trans.fi = public/language/fi/admin/advanced/logs.json +trans.he = public/language/he/admin/advanced/logs.json +trans.hr = public/language/hr/admin/advanced/logs.json +trans.ja = public/language/ja/admin/advanced/logs.json +trans.lt = public/language/lt/admin/advanced/logs.json +trans.nb = public/language/nb/admin/advanced/logs.json +trans.rw = public/language/rw/admin/advanced/logs.json +trans.es = public/language/es/admin/advanced/logs.json +trans.sv = public/language/sv/admin/advanced/logs.json +trans.fa_IR = public/language/fa-IR/admin/advanced/logs.json +trans.fr = public/language/fr/admin/advanced/logs.json +trans.gl = public/language/gl/admin/advanced/logs.json +trans.zh_TW = public/language/zh-TW/admin/advanced/logs.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/logs.json +trans.sc = public/language/sc/admin/advanced/logs.json +trans.sq_AL = public/language/sq-AL/admin/advanced/logs.json +trans.uk = public/language/uk/admin/advanced/logs.json +trans.hu = public/language/hu/admin/advanced/logs.json +trans.bn = public/language/bn/admin/advanced/logs.json +trans.de = public/language/de/admin/advanced/logs.json +trans.it = public/language/it/admin/advanced/logs.json +trans.lv = public/language/lv/admin/advanced/logs.json +trans.ms = public/language/ms/admin/advanced/logs.json +trans.pl = public/language/pl/admin/advanced/logs.json +trans.zh_CN = public/language/zh-CN/admin/advanced/logs.json +trans.ar = public/language/ar/admin/advanced/logs.json +trans.et = public/language/et/admin/advanced/logs.json +trans.hy = public/language/hy/admin/advanced/logs.json +trans.ko = public/language/ko/admin/advanced/logs.json +trans.th = public/language/th/admin/advanced/logs.json +trans.tr = public/language/tr/admin/advanced/logs.json +trans.cs = public/language/cs/admin/advanced/logs.json +trans.ro = public/language/ro/admin/advanced/logs.json +trans.pt_BR = public/language/pt-BR/admin/advanced/logs.json +trans.da = public/language/da/admin/advanced/logs.json +trans.el = public/language/el/admin/advanced/logs.json +trans.en_US = public/language/en-US/admin/advanced/logs.json +trans.pt_PT = public/language/pt-PT/admin/advanced/logs.json +trans.sk = public/language/sk/admin/advanced/logs.json +trans.sl = public/language/sl/admin/advanced/logs.json +trans.sr = public/language/sr/admin/advanced/logs.json +trans.bg = public/language/bg/admin/advanced/logs.json + +[o:nodebb:p:nodebb:r:admin-appearance-customise] +file_filter = public/language//admin/appearance/customise.json +source_file = public/language/en-GB/admin/appearance/customise.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/appearance/customise.json +trans.da = public/language/da/admin/appearance/customise.json +trans.es = public/language/es/admin/appearance/customise.json +trans.hy = public/language/hy/admin/appearance/customise.json +trans.th = public/language/th/admin/appearance/customise.json +trans.ar = public/language/ar/admin/appearance/customise.json +trans.bg = public/language/bg/admin/appearance/customise.json +trans.he = public/language/he/admin/appearance/customise.json +trans.lt = public/language/lt/admin/appearance/customise.json +trans.nb = public/language/nb/admin/appearance/customise.json +trans.pl = public/language/pl/admin/appearance/customise.json +trans.sl = public/language/sl/admin/appearance/customise.json +trans.zh_TW = public/language/zh-TW/admin/appearance/customise.json +trans.bn = public/language/bn/admin/appearance/customise.json +trans.el = public/language/el/admin/appearance/customise.json +trans.hu = public/language/hu/admin/appearance/customise.json +trans.sk = public/language/sk/admin/appearance/customise.json +trans.tr = public/language/tr/admin/appearance/customise.json +trans.et = public/language/et/admin/appearance/customise.json +trans.id = public/language/id/admin/appearance/customise.json +trans.lv = public/language/lv/admin/appearance/customise.json +trans.pt_BR = public/language/pt-BR/admin/appearance/customise.json +trans.sr = public/language/sr/admin/appearance/customise.json +trans.zh_CN = public/language/zh-CN/admin/appearance/customise.json +trans.fr = public/language/fr/admin/appearance/customise.json +trans.hr = public/language/hr/admin/appearance/customise.json +trans.it = public/language/it/admin/appearance/customise.json +trans.nl = public/language/nl/admin/appearance/customise.json +trans.sv = public/language/sv/admin/appearance/customise.json +trans.fi = public/language/fi/admin/appearance/customise.json +trans.gl = public/language/gl/admin/appearance/customise.json +trans.ko = public/language/ko/admin/appearance/customise.json +trans.sc = public/language/sc/admin/appearance/customise.json +trans.de = public/language/de/admin/appearance/customise.json +trans.en_US = public/language/en-US/admin/appearance/customise.json +trans.ja = public/language/ja/admin/appearance/customise.json +trans.ru = public/language/ru/admin/appearance/customise.json +trans.rw = public/language/rw/admin/appearance/customise.json +trans.vi = public/language/vi/admin/appearance/customise.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/customise.json +trans.fa_IR = public/language/fa-IR/admin/appearance/customise.json +trans.ms = public/language/ms/admin/appearance/customise.json +trans.pt_PT = public/language/pt-PT/admin/appearance/customise.json +trans.ro = public/language/ro/admin/appearance/customise.json +trans.sq_AL = public/language/sq-AL/admin/appearance/customise.json +trans.uk = public/language/uk/admin/appearance/customise.json + +[o:nodebb:p:nodebb:r:admin-appearance-skins] +file_filter = public/language//admin/appearance/skins.json +source_file = public/language/en-GB/admin/appearance/skins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/appearance/skins.json +trans.he = public/language/he/admin/appearance/skins.json +trans.hr = public/language/hr/admin/appearance/skins.json +trans.sc = public/language/sc/admin/appearance/skins.json +trans.sk = public/language/sk/admin/appearance/skins.json +trans.uk = public/language/uk/admin/appearance/skins.json +trans.vi = public/language/vi/admin/appearance/skins.json +trans.bn = public/language/bn/admin/appearance/skins.json +trans.ms = public/language/ms/admin/appearance/skins.json +trans.pl = public/language/pl/admin/appearance/skins.json +trans.sv = public/language/sv/admin/appearance/skins.json +trans.fi = public/language/fi/admin/appearance/skins.json +trans.da = public/language/da/admin/appearance/skins.json +trans.hu = public/language/hu/admin/appearance/skins.json +trans.hy = public/language/hy/admin/appearance/skins.json +trans.id = public/language/id/admin/appearance/skins.json +trans.lv = public/language/lv/admin/appearance/skins.json +trans.sq_AL = public/language/sq-AL/admin/appearance/skins.json +trans.cs = public/language/cs/admin/appearance/skins.json +trans.de = public/language/de/admin/appearance/skins.json +trans.ko = public/language/ko/admin/appearance/skins.json +trans.sl = public/language/sl/admin/appearance/skins.json +trans.zh_TW = public/language/zh-TW/admin/appearance/skins.json +trans.bg = public/language/bg/admin/appearance/skins.json +trans.en_US = public/language/en-US/admin/appearance/skins.json +trans.es = public/language/es/admin/appearance/skins.json +trans.sr = public/language/sr/admin/appearance/skins.json +trans.zh_CN = public/language/zh-CN/admin/appearance/skins.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/skins.json +trans.it = public/language/it/admin/appearance/skins.json +trans.ja = public/language/ja/admin/appearance/skins.json +trans.nb = public/language/nb/admin/appearance/skins.json +trans.fr = public/language/fr/admin/appearance/skins.json +trans.fa_IR = public/language/fa-IR/admin/appearance/skins.json +trans.gl = public/language/gl/admin/appearance/skins.json +trans.ro = public/language/ro/admin/appearance/skins.json +trans.ru = public/language/ru/admin/appearance/skins.json +trans.rw = public/language/rw/admin/appearance/skins.json +trans.el = public/language/el/admin/appearance/skins.json +trans.lt = public/language/lt/admin/appearance/skins.json +trans.nl = public/language/nl/admin/appearance/skins.json +trans.pt_BR = public/language/pt-BR/admin/appearance/skins.json +trans.pt_PT = public/language/pt-PT/admin/appearance/skins.json +trans.th = public/language/th/admin/appearance/skins.json +trans.tr = public/language/tr/admin/appearance/skins.json +trans.ar = public/language/ar/admin/appearance/skins.json + +[o:nodebb:p:nodebb:r:admin-appearance-themes] +file_filter = public/language//admin/appearance/themes.json +source_file = public/language/en-GB/admin/appearance/themes.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/appearance/themes.json +trans.ar = public/language/ar/admin/appearance/themes.json +trans.bg = public/language/bg/admin/appearance/themes.json +trans.bn = public/language/bn/admin/appearance/themes.json +trans.en_US = public/language/en-US/admin/appearance/themes.json +trans.fa_IR = public/language/fa-IR/admin/appearance/themes.json +trans.pt_BR = public/language/pt-BR/admin/appearance/themes.json +trans.ru = public/language/ru/admin/appearance/themes.json +trans.sv = public/language/sv/admin/appearance/themes.json +trans.cs = public/language/cs/admin/appearance/themes.json +trans.da = public/language/da/admin/appearance/themes.json +trans.sk = public/language/sk/admin/appearance/themes.json +trans.zh_CN = public/language/zh-CN/admin/appearance/themes.json +trans.et = public/language/et/admin/appearance/themes.json +trans.ja = public/language/ja/admin/appearance/themes.json +trans.sl = public/language/sl/admin/appearance/themes.json +trans.sr = public/language/sr/admin/appearance/themes.json +trans.hr = public/language/hr/admin/appearance/themes.json +trans.hu = public/language/hu/admin/appearance/themes.json +trans.ms = public/language/ms/admin/appearance/themes.json +trans.sc = public/language/sc/admin/appearance/themes.json +trans.th = public/language/th/admin/appearance/themes.json +trans.lt = public/language/lt/admin/appearance/themes.json +trans.el = public/language/el/admin/appearance/themes.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/themes.json +trans.fi = public/language/fi/admin/appearance/themes.json +trans.he = public/language/he/admin/appearance/themes.json +trans.hy = public/language/hy/admin/appearance/themes.json +trans.id = public/language/id/admin/appearance/themes.json +trans.ko = public/language/ko/admin/appearance/themes.json +trans.nb = public/language/nb/admin/appearance/themes.json +trans.pl = public/language/pl/admin/appearance/themes.json +trans.pt_PT = public/language/pt-PT/admin/appearance/themes.json +trans.tr = public/language/tr/admin/appearance/themes.json +trans.fr = public/language/fr/admin/appearance/themes.json +trans.nl = public/language/nl/admin/appearance/themes.json +trans.ro = public/language/ro/admin/appearance/themes.json +trans.uk = public/language/uk/admin/appearance/themes.json +trans.de = public/language/de/admin/appearance/themes.json +trans.es = public/language/es/admin/appearance/themes.json +trans.gl = public/language/gl/admin/appearance/themes.json +trans.it = public/language/it/admin/appearance/themes.json +trans.lv = public/language/lv/admin/appearance/themes.json +trans.vi = public/language/vi/admin/appearance/themes.json +trans.rw = public/language/rw/admin/appearance/themes.json +trans.zh_TW = public/language/zh-TW/admin/appearance/themes.json + +[o:nodebb:p:nodebb:r:admin-dashboard] +file_filter = public/language//admin/dashboard.json +source_file = public/language/en-GB/admin/dashboard.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/dashboard.json +trans.en_US = public/language/en-US/admin/dashboard.json +trans.fa_IR = public/language/fa-IR/admin/dashboard.json +trans.fr = public/language/fr/admin/dashboard.json +trans.hu = public/language/hu/admin/dashboard.json +trans.nl = public/language/nl/admin/dashboard.json +trans.pl = public/language/pl/admin/dashboard.json +trans.bg = public/language/bg/admin/dashboard.json +trans.el = public/language/el/admin/dashboard.json +trans.gl = public/language/gl/admin/dashboard.json +trans.hy = public/language/hy/admin/dashboard.json +trans.id = public/language/id/admin/dashboard.json +trans.ja = public/language/ja/admin/dashboard.json +trans.pt_BR = public/language/pt-BR/admin/dashboard.json +trans.zh_CN = public/language/zh-CN/admin/dashboard.json +trans.zh_TW = public/language/zh-TW/admin/dashboard.json +trans.uk = public/language/uk/admin/dashboard.json +trans.ar = public/language/ar/admin/dashboard.json +trans.de = public/language/de/admin/dashboard.json +trans.en@pirate = public/language/en-x-pirate/admin/dashboard.json +trans.es = public/language/es/admin/dashboard.json +trans.ko = public/language/ko/admin/dashboard.json +trans.sv = public/language/sv/admin/dashboard.json +trans.lv = public/language/lv/admin/dashboard.json +trans.ms = public/language/ms/admin/dashboard.json +trans.ru = public/language/ru/admin/dashboard.json +trans.sl = public/language/sl/admin/dashboard.json +trans.sq_AL = public/language/sq-AL/admin/dashboard.json +trans.da = public/language/da/admin/dashboard.json +trans.lt = public/language/lt/admin/dashboard.json +trans.he = public/language/he/admin/dashboard.json +trans.sr = public/language/sr/admin/dashboard.json +trans.vi = public/language/vi/admin/dashboard.json +trans.pt_PT = public/language/pt-PT/admin/dashboard.json +trans.ro = public/language/ro/admin/dashboard.json +trans.rw = public/language/rw/admin/dashboard.json +trans.sc = public/language/sc/admin/dashboard.json +trans.th = public/language/th/admin/dashboard.json +trans.sk = public/language/sk/admin/dashboard.json +trans.tr = public/language/tr/admin/dashboard.json +trans.cs = public/language/cs/admin/dashboard.json +trans.et = public/language/et/admin/dashboard.json +trans.fi = public/language/fi/admin/dashboard.json +trans.hr = public/language/hr/admin/dashboard.json +trans.it = public/language/it/admin/dashboard.json +trans.nb = public/language/nb/admin/dashboard.json + +[o:nodebb:p:nodebb:r:admin-development-info] +file_filter = public/language//admin/development/info.json +source_file = public/language/en-GB/admin/development/info.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/info.json +trans.et = public/language/et/admin/development/info.json +trans.hr = public/language/hr/admin/development/info.json +trans.ms = public/language/ms/admin/development/info.json +trans.pl = public/language/pl/admin/development/info.json +trans.pt_BR = public/language/pt-BR/admin/development/info.json +trans.ro = public/language/ro/admin/development/info.json +trans.rw = public/language/rw/admin/development/info.json +trans.sl = public/language/sl/admin/development/info.json +trans.sr = public/language/sr/admin/development/info.json +trans.uk = public/language/uk/admin/development/info.json +trans.da = public/language/da/admin/development/info.json +trans.en@pirate = public/language/en-x-pirate/admin/development/info.json +trans.es = public/language/es/admin/development/info.json +trans.fi = public/language/fi/admin/development/info.json +trans.it = public/language/it/admin/development/info.json +trans.lt = public/language/lt/admin/development/info.json +trans.th = public/language/th/admin/development/info.json +trans.ar = public/language/ar/admin/development/info.json +trans.bn = public/language/bn/admin/development/info.json +trans.fa_IR = public/language/fa-IR/admin/development/info.json +trans.hu = public/language/hu/admin/development/info.json +trans.id = public/language/id/admin/development/info.json +trans.lv = public/language/lv/admin/development/info.json +trans.gl = public/language/gl/admin/development/info.json +trans.hy = public/language/hy/admin/development/info.json +trans.zh_CN = public/language/zh-CN/admin/development/info.json +trans.cs = public/language/cs/admin/development/info.json +trans.ja = public/language/ja/admin/development/info.json +trans.nb = public/language/nb/admin/development/info.json +trans.sq_AL = public/language/sq-AL/admin/development/info.json +trans.sv = public/language/sv/admin/development/info.json +trans.bg = public/language/bg/admin/development/info.json +trans.he = public/language/he/admin/development/info.json +trans.sk = public/language/sk/admin/development/info.json +trans.el = public/language/el/admin/development/info.json +trans.fr = public/language/fr/admin/development/info.json +trans.ru = public/language/ru/admin/development/info.json +trans.sc = public/language/sc/admin/development/info.json +trans.tr = public/language/tr/admin/development/info.json +trans.en_US = public/language/en-US/admin/development/info.json +trans.ko = public/language/ko/admin/development/info.json +trans.nl = public/language/nl/admin/development/info.json +trans.pt_PT = public/language/pt-PT/admin/development/info.json +trans.vi = public/language/vi/admin/development/info.json +trans.zh_TW = public/language/zh-TW/admin/development/info.json + +[o:nodebb:p:nodebb:r:admin-development-logger] +file_filter = public/language//admin/development/logger.json +source_file = public/language/en-GB/admin/development/logger.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/logger.json +trans.fr = public/language/fr/admin/development/logger.json +trans.gl = public/language/gl/admin/development/logger.json +trans.hr = public/language/hr/admin/development/logger.json +trans.sl = public/language/sl/admin/development/logger.json +trans.vi = public/language/vi/admin/development/logger.json +trans.zh_TW = public/language/zh-TW/admin/development/logger.json +trans.ar = public/language/ar/admin/development/logger.json +trans.he = public/language/he/admin/development/logger.json +trans.id = public/language/id/admin/development/logger.json +trans.ko = public/language/ko/admin/development/logger.json +trans.lt = public/language/lt/admin/development/logger.json +trans.nb = public/language/nb/admin/development/logger.json +trans.pt_BR = public/language/pt-BR/admin/development/logger.json +trans.ro = public/language/ro/admin/development/logger.json +trans.fi = public/language/fi/admin/development/logger.json +trans.sc = public/language/sc/admin/development/logger.json +trans.ru = public/language/ru/admin/development/logger.json +trans.sq_AL = public/language/sq-AL/admin/development/logger.json +trans.th = public/language/th/admin/development/logger.json +trans.hy = public/language/hy/admin/development/logger.json +trans.fa_IR = public/language/fa-IR/admin/development/logger.json +trans.it = public/language/it/admin/development/logger.json +trans.lv = public/language/lv/admin/development/logger.json +trans.nl = public/language/nl/admin/development/logger.json +trans.pt_PT = public/language/pt-PT/admin/development/logger.json +trans.sk = public/language/sk/admin/development/logger.json +trans.sv = public/language/sv/admin/development/logger.json +trans.el = public/language/el/admin/development/logger.json +trans.uk = public/language/uk/admin/development/logger.json +trans.ms = public/language/ms/admin/development/logger.json +trans.zh_CN = public/language/zh-CN/admin/development/logger.json +trans.bn = public/language/bn/admin/development/logger.json +trans.et = public/language/et/admin/development/logger.json +trans.ja = public/language/ja/admin/development/logger.json +trans.da = public/language/da/admin/development/logger.json +trans.en@pirate = public/language/en-x-pirate/admin/development/logger.json +trans.es = public/language/es/admin/development/logger.json +trans.cs = public/language/cs/admin/development/logger.json +trans.en_US = public/language/en-US/admin/development/logger.json +trans.hu = public/language/hu/admin/development/logger.json +trans.pl = public/language/pl/admin/development/logger.json +trans.rw = public/language/rw/admin/development/logger.json +trans.sr = public/language/sr/admin/development/logger.json +trans.tr = public/language/tr/admin/development/logger.json +trans.bg = public/language/bg/admin/development/logger.json + +[o:nodebb:p:nodebb:r:admin-extend-plugins] +file_filter = public/language//admin/extend/plugins.json +source_file = public/language/en-GB/admin/extend/plugins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/extend/plugins.json +trans.et = public/language/et/admin/extend/plugins.json +trans.hr = public/language/hr/admin/extend/plugins.json +trans.hy = public/language/hy/admin/extend/plugins.json +trans.tr = public/language/tr/admin/extend/plugins.json +trans.it = public/language/it/admin/extend/plugins.json +trans.lv = public/language/lv/admin/extend/plugins.json +trans.sl = public/language/sl/admin/extend/plugins.json +trans.th = public/language/th/admin/extend/plugins.json +trans.en_US = public/language/en-US/admin/extend/plugins.json +trans.he = public/language/he/admin/extend/plugins.json +trans.nb = public/language/nb/admin/extend/plugins.json +trans.sk = public/language/sk/admin/extend/plugins.json +trans.uk = public/language/uk/admin/extend/plugins.json +trans.es = public/language/es/admin/extend/plugins.json +trans.lt = public/language/lt/admin/extend/plugins.json +trans.sv = public/language/sv/admin/extend/plugins.json +trans.nl = public/language/nl/admin/extend/plugins.json +trans.pt_PT = public/language/pt-PT/admin/extend/plugins.json +trans.ar = public/language/ar/admin/extend/plugins.json +trans.cs = public/language/cs/admin/extend/plugins.json +trans.fi = public/language/fi/admin/extend/plugins.json +trans.id = public/language/id/admin/extend/plugins.json +trans.ja = public/language/ja/admin/extend/plugins.json +trans.ko = public/language/ko/admin/extend/plugins.json +trans.ru = public/language/ru/admin/extend/plugins.json +trans.sr = public/language/sr/admin/extend/plugins.json +trans.bn = public/language/bn/admin/extend/plugins.json +trans.de = public/language/de/admin/extend/plugins.json +trans.el = public/language/el/admin/extend/plugins.json +trans.ms = public/language/ms/admin/extend/plugins.json +trans.pt_BR = public/language/pt-BR/admin/extend/plugins.json +trans.sq_AL = public/language/sq-AL/admin/extend/plugins.json +trans.zh_TW = public/language/zh-TW/admin/extend/plugins.json +trans.da = public/language/da/admin/extend/plugins.json +trans.fa_IR = public/language/fa-IR/admin/extend/plugins.json +trans.gl = public/language/gl/admin/extend/plugins.json +trans.hu = public/language/hu/admin/extend/plugins.json +trans.sc = public/language/sc/admin/extend/plugins.json +trans.vi = public/language/vi/admin/extend/plugins.json +trans.bg = public/language/bg/admin/extend/plugins.json +trans.fr = public/language/fr/admin/extend/plugins.json +trans.pl = public/language/pl/admin/extend/plugins.json +trans.ro = public/language/ro/admin/extend/plugins.json +trans.rw = public/language/rw/admin/extend/plugins.json +trans.zh_CN = public/language/zh-CN/admin/extend/plugins.json + +[o:nodebb:p:nodebb:r:admin-extend-rewards] +file_filter = public/language//admin/extend/rewards.json +source_file = public/language/en-GB/admin/extend/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/extend/rewards.json +trans.ar = public/language/ar/admin/extend/rewards.json +trans.fi = public/language/fi/admin/extend/rewards.json +trans.fr = public/language/fr/admin/extend/rewards.json +trans.sr = public/language/sr/admin/extend/rewards.json +trans.id = public/language/id/admin/extend/rewards.json +trans.pt_BR = public/language/pt-BR/admin/extend/rewards.json +trans.sq_AL = public/language/sq-AL/admin/extend/rewards.json +trans.pt_PT = public/language/pt-PT/admin/extend/rewards.json +trans.ro = public/language/ro/admin/extend/rewards.json +trans.ru = public/language/ru/admin/extend/rewards.json +trans.sk = public/language/sk/admin/extend/rewards.json +trans.es = public/language/es/admin/extend/rewards.json +trans.lt = public/language/lt/admin/extend/rewards.json +trans.nl = public/language/nl/admin/extend/rewards.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/rewards.json +trans.hr = public/language/hr/admin/extend/rewards.json +trans.ja = public/language/ja/admin/extend/rewards.json +trans.ko = public/language/ko/admin/extend/rewards.json +trans.nb = public/language/nb/admin/extend/rewards.json +trans.bg = public/language/bg/admin/extend/rewards.json +trans.bn = public/language/bn/admin/extend/rewards.json +trans.da = public/language/da/admin/extend/rewards.json +trans.hy = public/language/hy/admin/extend/rewards.json +trans.pl = public/language/pl/admin/extend/rewards.json +trans.sc = public/language/sc/admin/extend/rewards.json +trans.it = public/language/it/admin/extend/rewards.json +trans.tr = public/language/tr/admin/extend/rewards.json +trans.uk = public/language/uk/admin/extend/rewards.json +trans.vi = public/language/vi/admin/extend/rewards.json +trans.zh_CN = public/language/zh-CN/admin/extend/rewards.json +trans.en_US = public/language/en-US/admin/extend/rewards.json +trans.fa_IR = public/language/fa-IR/admin/extend/rewards.json +trans.he = public/language/he/admin/extend/rewards.json +trans.zh_TW = public/language/zh-TW/admin/extend/rewards.json +trans.lv = public/language/lv/admin/extend/rewards.json +trans.sl = public/language/sl/admin/extend/rewards.json +trans.cs = public/language/cs/admin/extend/rewards.json +trans.el = public/language/el/admin/extend/rewards.json +trans.et = public/language/et/admin/extend/rewards.json +trans.rw = public/language/rw/admin/extend/rewards.json +trans.sv = public/language/sv/admin/extend/rewards.json +trans.th = public/language/th/admin/extend/rewards.json +trans.de = public/language/de/admin/extend/rewards.json +trans.gl = public/language/gl/admin/extend/rewards.json +trans.hu = public/language/hu/admin/extend/rewards.json + +[o:nodebb:p:nodebb:r:admin-extend-widgets] +file_filter = public/language//admin/extend/widgets.json +source_file = public/language/en-GB/admin/extend/widgets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/extend/widgets.json +trans.el = public/language/el/admin/extend/widgets.json +trans.id = public/language/id/admin/extend/widgets.json +trans.nb = public/language/nb/admin/extend/widgets.json +trans.ro = public/language/ro/admin/extend/widgets.json +trans.rw = public/language/rw/admin/extend/widgets.json +trans.ar = public/language/ar/admin/extend/widgets.json +trans.hy = public/language/hy/admin/extend/widgets.json +trans.lv = public/language/lv/admin/extend/widgets.json +trans.ru = public/language/ru/admin/extend/widgets.json +trans.sc = public/language/sc/admin/extend/widgets.json +trans.sr = public/language/sr/admin/extend/widgets.json +trans.tr = public/language/tr/admin/extend/widgets.json +trans.vi = public/language/vi/admin/extend/widgets.json +trans.fr = public/language/fr/admin/extend/widgets.json +trans.fa_IR = public/language/fa-IR/admin/extend/widgets.json +trans.ko = public/language/ko/admin/extend/widgets.json +trans.lt = public/language/lt/admin/extend/widgets.json +trans.sq_AL = public/language/sq-AL/admin/extend/widgets.json +trans.uk = public/language/uk/admin/extend/widgets.json +trans.bg = public/language/bg/admin/extend/widgets.json +trans.de = public/language/de/admin/extend/widgets.json +trans.ms = public/language/ms/admin/extend/widgets.json +trans.nl = public/language/nl/admin/extend/widgets.json +trans.pt_BR = public/language/pt-BR/admin/extend/widgets.json +trans.sk = public/language/sk/admin/extend/widgets.json +trans.zh_CN = public/language/zh-CN/admin/extend/widgets.json +trans.da = public/language/da/admin/extend/widgets.json +trans.hu = public/language/hu/admin/extend/widgets.json +trans.ja = public/language/ja/admin/extend/widgets.json +trans.th = public/language/th/admin/extend/widgets.json +trans.et = public/language/et/admin/extend/widgets.json +trans.gl = public/language/gl/admin/extend/widgets.json +trans.he = public/language/he/admin/extend/widgets.json +trans.it = public/language/it/admin/extend/widgets.json +trans.pl = public/language/pl/admin/extend/widgets.json +trans.zh_TW = public/language/zh-TW/admin/extend/widgets.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/widgets.json +trans.fi = public/language/fi/admin/extend/widgets.json +trans.hr = public/language/hr/admin/extend/widgets.json +trans.sl = public/language/sl/admin/extend/widgets.json +trans.sv = public/language/sv/admin/extend/widgets.json +trans.cs = public/language/cs/admin/extend/widgets.json +trans.es = public/language/es/admin/extend/widgets.json +trans.pt_PT = public/language/pt-PT/admin/extend/widgets.json +trans.en_US = public/language/en-US/admin/extend/widgets.json + +[o:nodebb:p:nodebb:r:admin-manage-admins-mods] +file_filter = public/language//admin/manage/admins-mods.json +source_file = public/language/en-GB/admin/manage/admins-mods.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hu = public/language/hu/admin/manage/admins-mods.json +trans.nb = public/language/nb/admin/manage/admins-mods.json +trans.ru = public/language/ru/admin/manage/admins-mods.json +trans.fr = public/language/fr/admin/manage/admins-mods.json +trans.he = public/language/he/admin/manage/admins-mods.json +trans.lv = public/language/lv/admin/manage/admins-mods.json +trans.sc = public/language/sc/admin/manage/admins-mods.json +trans.vi = public/language/vi/admin/manage/admins-mods.json +trans.es = public/language/es/admin/manage/admins-mods.json +trans.lt = public/language/lt/admin/manage/admins-mods.json +trans.de = public/language/de/admin/manage/admins-mods.json +trans.ja = public/language/ja/admin/manage/admins-mods.json +trans.pl = public/language/pl/admin/manage/admins-mods.json +trans.sq_AL = public/language/sq-AL/admin/manage/admins-mods.json +trans.sr = public/language/sr/admin/manage/admins-mods.json +trans.zh_TW = public/language/zh-TW/admin/manage/admins-mods.json +trans.id = public/language/id/admin/manage/admins-mods.json +trans.ko = public/language/ko/admin/manage/admins-mods.json +trans.gl = public/language/gl/admin/manage/admins-mods.json +trans.hr = public/language/hr/admin/manage/admins-mods.json +trans.hy = public/language/hy/admin/manage/admins-mods.json +trans.rw = public/language/rw/admin/manage/admins-mods.json +trans.bn = public/language/bn/admin/manage/admins-mods.json +trans.fi = public/language/fi/admin/manage/admins-mods.json +trans.ms = public/language/ms/admin/manage/admins-mods.json +trans.pt_BR = public/language/pt-BR/admin/manage/admins-mods.json +trans.pt_PT = public/language/pt-PT/admin/manage/admins-mods.json +trans.sv = public/language/sv/admin/manage/admins-mods.json +trans.th = public/language/th/admin/manage/admins-mods.json +trans.uk = public/language/uk/admin/manage/admins-mods.json +trans.ar = public/language/ar/admin/manage/admins-mods.json +trans.bg = public/language/bg/admin/manage/admins-mods.json +trans.el = public/language/el/admin/manage/admins-mods.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/admins-mods.json +trans.en_US = public/language/en-US/admin/manage/admins-mods.json +trans.it = public/language/it/admin/manage/admins-mods.json +trans.nl = public/language/nl/admin/manage/admins-mods.json +trans.ro = public/language/ro/admin/manage/admins-mods.json +trans.cs = public/language/cs/admin/manage/admins-mods.json +trans.da = public/language/da/admin/manage/admins-mods.json +trans.zh_CN = public/language/zh-CN/admin/manage/admins-mods.json +trans.sk = public/language/sk/admin/manage/admins-mods.json +trans.sl = public/language/sl/admin/manage/admins-mods.json +trans.tr = public/language/tr/admin/manage/admins-mods.json +trans.et = public/language/et/admin/manage/admins-mods.json +trans.fa_IR = public/language/fa-IR/admin/manage/admins-mods.json + +[o:nodebb:p:nodebb:r:admin-manage-categories] +file_filter = public/language//admin/manage/categories.json +source_file = public/language/en-GB/admin/manage/categories.json +source_lang = en_GB +type = KEYVALUEJSON +trans.es = public/language/es/admin/manage/categories.json +trans.gl = public/language/gl/admin/manage/categories.json +trans.pt_PT = public/language/pt-PT/admin/manage/categories.json +trans.sc = public/language/sc/admin/manage/categories.json +trans.zh_TW = public/language/zh-TW/admin/manage/categories.json +trans.bg = public/language/bg/admin/manage/categories.json +trans.hu = public/language/hu/admin/manage/categories.json +trans.hy = public/language/hy/admin/manage/categories.json +trans.sk = public/language/sk/admin/manage/categories.json +trans.uk = public/language/uk/admin/manage/categories.json +trans.vi = public/language/vi/admin/manage/categories.json +trans.bn = public/language/bn/admin/manage/categories.json +trans.en_US = public/language/en-US/admin/manage/categories.json +trans.fr = public/language/fr/admin/manage/categories.json +trans.it = public/language/it/admin/manage/categories.json +trans.nb = public/language/nb/admin/manage/categories.json +trans.ru = public/language/ru/admin/manage/categories.json +trans.sr = public/language/sr/admin/manage/categories.json +trans.fa_IR = public/language/fa-IR/admin/manage/categories.json +trans.id = public/language/id/admin/manage/categories.json +trans.ms = public/language/ms/admin/manage/categories.json +trans.pl = public/language/pl/admin/manage/categories.json +trans.tr = public/language/tr/admin/manage/categories.json +trans.zh_CN = public/language/zh-CN/admin/manage/categories.json +trans.lt = public/language/lt/admin/manage/categories.json +trans.sl = public/language/sl/admin/manage/categories.json +trans.sv = public/language/sv/admin/manage/categories.json +trans.rw = public/language/rw/admin/manage/categories.json +trans.el = public/language/el/admin/manage/categories.json +trans.et = public/language/et/admin/manage/categories.json +trans.fi = public/language/fi/admin/manage/categories.json +trans.he = public/language/he/admin/manage/categories.json +trans.ja = public/language/ja/admin/manage/categories.json +trans.ko = public/language/ko/admin/manage/categories.json +trans.ro = public/language/ro/admin/manage/categories.json +trans.cs = public/language/cs/admin/manage/categories.json +trans.sq_AL = public/language/sq-AL/admin/manage/categories.json +trans.th = public/language/th/admin/manage/categories.json +trans.pt_BR = public/language/pt-BR/admin/manage/categories.json +trans.ar = public/language/ar/admin/manage/categories.json +trans.da = public/language/da/admin/manage/categories.json +trans.de = public/language/de/admin/manage/categories.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/categories.json +trans.hr = public/language/hr/admin/manage/categories.json +trans.lv = public/language/lv/admin/manage/categories.json +trans.nl = public/language/nl/admin/manage/categories.json + +[o:nodebb:p:nodebb:r:admin-manage-digest] +file_filter = public/language//admin/manage/digest.json +source_file = public/language/en-GB/admin/manage/digest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/manage/digest.json +trans.fi = public/language/fi/admin/manage/digest.json +trans.gl = public/language/gl/admin/manage/digest.json +trans.fr = public/language/fr/admin/manage/digest.json +trans.hu = public/language/hu/admin/manage/digest.json +trans.id = public/language/id/admin/manage/digest.json +trans.lv = public/language/lv/admin/manage/digest.json +trans.pl = public/language/pl/admin/manage/digest.json +trans.sl = public/language/sl/admin/manage/digest.json +trans.da = public/language/da/admin/manage/digest.json +trans.fa_IR = public/language/fa-IR/admin/manage/digest.json +trans.sq_AL = public/language/sq-AL/admin/manage/digest.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/digest.json +trans.en_US = public/language/en-US/admin/manage/digest.json +trans.he = public/language/he/admin/manage/digest.json +trans.hr = public/language/hr/admin/manage/digest.json +trans.hy = public/language/hy/admin/manage/digest.json +trans.it = public/language/it/admin/manage/digest.json +trans.bg = public/language/bg/admin/manage/digest.json +trans.bn = public/language/bn/admin/manage/digest.json +trans.ro = public/language/ro/admin/manage/digest.json +trans.th = public/language/th/admin/manage/digest.json +trans.uk = public/language/uk/admin/manage/digest.json +trans.vi = public/language/vi/admin/manage/digest.json +trans.ms = public/language/ms/admin/manage/digest.json +trans.pt_BR = public/language/pt-BR/admin/manage/digest.json +trans.rw = public/language/rw/admin/manage/digest.json +trans.de = public/language/de/admin/manage/digest.json +trans.el = public/language/el/admin/manage/digest.json +trans.nl = public/language/nl/admin/manage/digest.json +trans.ru = public/language/ru/admin/manage/digest.json +trans.sv = public/language/sv/admin/manage/digest.json +trans.zh_TW = public/language/zh-TW/admin/manage/digest.json +trans.es = public/language/es/admin/manage/digest.json +trans.lt = public/language/lt/admin/manage/digest.json +trans.ko = public/language/ko/admin/manage/digest.json +trans.zh_CN = public/language/zh-CN/admin/manage/digest.json +trans.ar = public/language/ar/admin/manage/digest.json +trans.ja = public/language/ja/admin/manage/digest.json +trans.nb = public/language/nb/admin/manage/digest.json +trans.sk = public/language/sk/admin/manage/digest.json +trans.pt_PT = public/language/pt-PT/admin/manage/digest.json +trans.sc = public/language/sc/admin/manage/digest.json +trans.tr = public/language/tr/admin/manage/digest.json +trans.cs = public/language/cs/admin/manage/digest.json +trans.et = public/language/et/admin/manage/digest.json + +[o:nodebb:p:nodebb:r:admin-manage-groups] +file_filter = public/language//admin/manage/groups.json +source_file = public/language/en-GB/admin/manage/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_PT = public/language/pt-PT/admin/manage/groups.json +trans.tr = public/language/tr/admin/manage/groups.json +trans.uk = public/language/uk/admin/manage/groups.json +trans.zh_TW = public/language/zh-TW/admin/manage/groups.json +trans.nb = public/language/nb/admin/manage/groups.json +trans.id = public/language/id/admin/manage/groups.json +trans.lt = public/language/lt/admin/manage/groups.json +trans.pl = public/language/pl/admin/manage/groups.json +trans.sc = public/language/sc/admin/manage/groups.json +trans.hy = public/language/hy/admin/manage/groups.json +trans.he = public/language/he/admin/manage/groups.json +trans.ko = public/language/ko/admin/manage/groups.json +trans.sv = public/language/sv/admin/manage/groups.json +trans.bn = public/language/bn/admin/manage/groups.json +trans.es = public/language/es/admin/manage/groups.json +trans.ja = public/language/ja/admin/manage/groups.json +trans.th = public/language/th/admin/manage/groups.json +trans.cs = public/language/cs/admin/manage/groups.json +trans.fi = public/language/fi/admin/manage/groups.json +trans.hr = public/language/hr/admin/manage/groups.json +trans.it = public/language/it/admin/manage/groups.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/groups.json +trans.bg = public/language/bg/admin/manage/groups.json +trans.hu = public/language/hu/admin/manage/groups.json +trans.pt_BR = public/language/pt-BR/admin/manage/groups.json +trans.ro = public/language/ro/admin/manage/groups.json +trans.ru = public/language/ru/admin/manage/groups.json +trans.sq_AL = public/language/sq-AL/admin/manage/groups.json +trans.vi = public/language/vi/admin/manage/groups.json +trans.ar = public/language/ar/admin/manage/groups.json +trans.et = public/language/et/admin/manage/groups.json +trans.fa_IR = public/language/fa-IR/admin/manage/groups.json +trans.fr = public/language/fr/admin/manage/groups.json +trans.nl = public/language/nl/admin/manage/groups.json +trans.rw = public/language/rw/admin/manage/groups.json +trans.sl = public/language/sl/admin/manage/groups.json +trans.zh_CN = public/language/zh-CN/admin/manage/groups.json +trans.da = public/language/da/admin/manage/groups.json +trans.el = public/language/el/admin/manage/groups.json +trans.en_US = public/language/en-US/admin/manage/groups.json +trans.gl = public/language/gl/admin/manage/groups.json +trans.lv = public/language/lv/admin/manage/groups.json +trans.ms = public/language/ms/admin/manage/groups.json +trans.sk = public/language/sk/admin/manage/groups.json +trans.sr = public/language/sr/admin/manage/groups.json +trans.de = public/language/de/admin/manage/groups.json + +[o:nodebb:p:nodebb:r:admin-manage-privileges] +file_filter = public/language//admin/manage/privileges.json +source_file = public/language/en-GB/admin/manage/privileges.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/manage/privileges.json +trans.es = public/language/es/admin/manage/privileges.json +trans.fa_IR = public/language/fa-IR/admin/manage/privileges.json +trans.ms = public/language/ms/admin/manage/privileges.json +trans.ro = public/language/ro/admin/manage/privileges.json +trans.sl = public/language/sl/admin/manage/privileges.json +trans.el = public/language/el/admin/manage/privileges.json +trans.lt = public/language/lt/admin/manage/privileges.json +trans.pt_BR = public/language/pt-BR/admin/manage/privileges.json +trans.pt_PT = public/language/pt-PT/admin/manage/privileges.json +trans.hu = public/language/hu/admin/manage/privileges.json +trans.pl = public/language/pl/admin/manage/privileges.json +trans.sc = public/language/sc/admin/manage/privileges.json +trans.uk = public/language/uk/admin/manage/privileges.json +trans.bn = public/language/bn/admin/manage/privileges.json +trans.cs = public/language/cs/admin/manage/privileges.json +trans.da = public/language/da/admin/manage/privileges.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/privileges.json +trans.vi = public/language/vi/admin/manage/privileges.json +trans.en_US = public/language/en-US/admin/manage/privileges.json +trans.hy = public/language/hy/admin/manage/privileges.json +trans.sr = public/language/sr/admin/manage/privileges.json +trans.ja = public/language/ja/admin/manage/privileges.json +trans.nb = public/language/nb/admin/manage/privileges.json +trans.nl = public/language/nl/admin/manage/privileges.json +trans.sv = public/language/sv/admin/manage/privileges.json +trans.et = public/language/et/admin/manage/privileges.json +trans.fr = public/language/fr/admin/manage/privileges.json +trans.he = public/language/he/admin/manage/privileges.json +trans.hr = public/language/hr/admin/manage/privileges.json +trans.th = public/language/th/admin/manage/privileges.json +trans.sq_AL = public/language/sq-AL/admin/manage/privileges.json +trans.gl = public/language/gl/admin/manage/privileges.json +trans.ko = public/language/ko/admin/manage/privileges.json +trans.lv = public/language/lv/admin/manage/privileges.json +trans.sk = public/language/sk/admin/manage/privileges.json +trans.tr = public/language/tr/admin/manage/privileges.json +trans.fi = public/language/fi/admin/manage/privileges.json +trans.id = public/language/id/admin/manage/privileges.json +trans.it = public/language/it/admin/manage/privileges.json +trans.rw = public/language/rw/admin/manage/privileges.json +trans.zh_TW = public/language/zh-TW/admin/manage/privileges.json +trans.ar = public/language/ar/admin/manage/privileges.json +trans.de = public/language/de/admin/manage/privileges.json +trans.ru = public/language/ru/admin/manage/privileges.json +trans.zh_CN = public/language/zh-CN/admin/manage/privileges.json + +[o:nodebb:p:nodebb:r:admin-manage-registration] +file_filter = public/language//admin/manage/registration.json +source_file = public/language/en-GB/admin/manage/registration.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pl = public/language/pl/admin/manage/registration.json +trans.ro = public/language/ro/admin/manage/registration.json +trans.sk = public/language/sk/admin/manage/registration.json +trans.fi = public/language/fi/admin/manage/registration.json +trans.hu = public/language/hu/admin/manage/registration.json +trans.ms = public/language/ms/admin/manage/registration.json +trans.ru = public/language/ru/admin/manage/registration.json +trans.sc = public/language/sc/admin/manage/registration.json +trans.sr = public/language/sr/admin/manage/registration.json +trans.th = public/language/th/admin/manage/registration.json +trans.zh_TW = public/language/zh-TW/admin/manage/registration.json +trans.da = public/language/da/admin/manage/registration.json +trans.et = public/language/et/admin/manage/registration.json +trans.it = public/language/it/admin/manage/registration.json +trans.nb = public/language/nb/admin/manage/registration.json +trans.pt_BR = public/language/pt-BR/admin/manage/registration.json +trans.hy = public/language/hy/admin/manage/registration.json +trans.uk = public/language/uk/admin/manage/registration.json +trans.sq_AL = public/language/sq-AL/admin/manage/registration.json +trans.ar = public/language/ar/admin/manage/registration.json +trans.es = public/language/es/admin/manage/registration.json +trans.he = public/language/he/admin/manage/registration.json +trans.id = public/language/id/admin/manage/registration.json +trans.nl = public/language/nl/admin/manage/registration.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/registration.json +trans.en_US = public/language/en-US/admin/manage/registration.json +trans.rw = public/language/rw/admin/manage/registration.json +trans.sv = public/language/sv/admin/manage/registration.json +trans.tr = public/language/tr/admin/manage/registration.json +trans.vi = public/language/vi/admin/manage/registration.json +trans.bg = public/language/bg/admin/manage/registration.json +trans.cs = public/language/cs/admin/manage/registration.json +trans.fa_IR = public/language/fa-IR/admin/manage/registration.json +trans.fr = public/language/fr/admin/manage/registration.json +trans.lt = public/language/lt/admin/manage/registration.json +trans.ja = public/language/ja/admin/manage/registration.json +trans.ko = public/language/ko/admin/manage/registration.json +trans.lv = public/language/lv/admin/manage/registration.json +trans.bn = public/language/bn/admin/manage/registration.json +trans.de = public/language/de/admin/manage/registration.json +trans.el = public/language/el/admin/manage/registration.json +trans.gl = public/language/gl/admin/manage/registration.json +trans.hr = public/language/hr/admin/manage/registration.json +trans.pt_PT = public/language/pt-PT/admin/manage/registration.json +trans.sl = public/language/sl/admin/manage/registration.json +trans.zh_CN = public/language/zh-CN/admin/manage/registration.json + +[o:nodebb:p:nodebb:r:admin-manage-tags] +file_filter = public/language//admin/manage/tags.json +source_file = public/language/en-GB/admin/manage/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/manage/tags.json +trans.bg = public/language/bg/admin/manage/tags.json +trans.da = public/language/da/admin/manage/tags.json +trans.en_US = public/language/en-US/admin/manage/tags.json +trans.hu = public/language/hu/admin/manage/tags.json +trans.nb = public/language/nb/admin/manage/tags.json +trans.ru = public/language/ru/admin/manage/tags.json +trans.sq_AL = public/language/sq-AL/admin/manage/tags.json +trans.de = public/language/de/admin/manage/tags.json +trans.fi = public/language/fi/admin/manage/tags.json +trans.hr = public/language/hr/admin/manage/tags.json +trans.ko = public/language/ko/admin/manage/tags.json +trans.ms = public/language/ms/admin/manage/tags.json +trans.th = public/language/th/admin/manage/tags.json +trans.ar = public/language/ar/admin/manage/tags.json +trans.el = public/language/el/admin/manage/tags.json +trans.es = public/language/es/admin/manage/tags.json +trans.hy = public/language/hy/admin/manage/tags.json +trans.ja = public/language/ja/admin/manage/tags.json +trans.cs = public/language/cs/admin/manage/tags.json +trans.pl = public/language/pl/admin/manage/tags.json +trans.ro = public/language/ro/admin/manage/tags.json +trans.rw = public/language/rw/admin/manage/tags.json +trans.bn = public/language/bn/admin/manage/tags.json +trans.fa_IR = public/language/fa-IR/admin/manage/tags.json +trans.zh_CN = public/language/zh-CN/admin/manage/tags.json +trans.et = public/language/et/admin/manage/tags.json +trans.fr = public/language/fr/admin/manage/tags.json +trans.gl = public/language/gl/admin/manage/tags.json +trans.id = public/language/id/admin/manage/tags.json +trans.lt = public/language/lt/admin/manage/tags.json +trans.sv = public/language/sv/admin/manage/tags.json +trans.tr = public/language/tr/admin/manage/tags.json +trans.uk = public/language/uk/admin/manage/tags.json +trans.lv = public/language/lv/admin/manage/tags.json +trans.nl = public/language/nl/admin/manage/tags.json +trans.pt_BR = public/language/pt-BR/admin/manage/tags.json +trans.pt_PT = public/language/pt-PT/admin/manage/tags.json +trans.sc = public/language/sc/admin/manage/tags.json +trans.sk = public/language/sk/admin/manage/tags.json +trans.sl = public/language/sl/admin/manage/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/tags.json +trans.he = public/language/he/admin/manage/tags.json +trans.it = public/language/it/admin/manage/tags.json +trans.sr = public/language/sr/admin/manage/tags.json +trans.vi = public/language/vi/admin/manage/tags.json + +[o:nodebb:p:nodebb:r:admin-manage-uploads] +file_filter = public/language//admin/manage/uploads.json +source_file = public/language/en-GB/admin/manage/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/manage/uploads.json +trans.nb = public/language/nb/admin/manage/uploads.json +trans.tr = public/language/tr/admin/manage/uploads.json +trans.bg = public/language/bg/admin/manage/uploads.json +trans.bn = public/language/bn/admin/manage/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/uploads.json +trans.lt = public/language/lt/admin/manage/uploads.json +trans.sq_AL = public/language/sq-AL/admin/manage/uploads.json +trans.el = public/language/el/admin/manage/uploads.json +trans.en_US = public/language/en-US/admin/manage/uploads.json +trans.fi = public/language/fi/admin/manage/uploads.json +trans.hr = public/language/hr/admin/manage/uploads.json +trans.sv = public/language/sv/admin/manage/uploads.json +trans.ar = public/language/ar/admin/manage/uploads.json +trans.de = public/language/de/admin/manage/uploads.json +trans.fr = public/language/fr/admin/manage/uploads.json +trans.he = public/language/he/admin/manage/uploads.json +trans.ro = public/language/ro/admin/manage/uploads.json +trans.rw = public/language/rw/admin/manage/uploads.json +trans.gl = public/language/gl/admin/manage/uploads.json +trans.nl = public/language/nl/admin/manage/uploads.json +trans.pl = public/language/pl/admin/manage/uploads.json +trans.pt_BR = public/language/pt-BR/admin/manage/uploads.json +trans.sc = public/language/sc/admin/manage/uploads.json +trans.th = public/language/th/admin/manage/uploads.json +trans.es = public/language/es/admin/manage/uploads.json +trans.et = public/language/et/admin/manage/uploads.json +trans.lv = public/language/lv/admin/manage/uploads.json +trans.pt_PT = public/language/pt-PT/admin/manage/uploads.json +trans.sr = public/language/sr/admin/manage/uploads.json +trans.uk = public/language/uk/admin/manage/uploads.json +trans.vi = public/language/vi/admin/manage/uploads.json +trans.cs = public/language/cs/admin/manage/uploads.json +trans.ru = public/language/ru/admin/manage/uploads.json +trans.sk = public/language/sk/admin/manage/uploads.json +trans.sl = public/language/sl/admin/manage/uploads.json +trans.fa_IR = public/language/fa-IR/admin/manage/uploads.json +trans.hu = public/language/hu/admin/manage/uploads.json +trans.hy = public/language/hy/admin/manage/uploads.json +trans.zh_CN = public/language/zh-CN/admin/manage/uploads.json +trans.ko = public/language/ko/admin/manage/uploads.json +trans.zh_TW = public/language/zh-TW/admin/manage/uploads.json +trans.da = public/language/da/admin/manage/uploads.json +trans.id = public/language/id/admin/manage/uploads.json +trans.it = public/language/it/admin/manage/uploads.json +trans.ja = public/language/ja/admin/manage/uploads.json + +[o:nodebb:p:nodebb:r:admin-manage-users] +file_filter = public/language//admin/manage/users.json +source_file = public/language/en-GB/admin/manage/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/manage/users.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/users.json +trans.en_US = public/language/en-US/admin/manage/users.json +trans.fr = public/language/fr/admin/manage/users.json +trans.ko = public/language/ko/admin/manage/users.json +trans.ms = public/language/ms/admin/manage/users.json +trans.nb = public/language/nb/admin/manage/users.json +trans.pt_BR = public/language/pt-BR/admin/manage/users.json +trans.zh_CN = public/language/zh-CN/admin/manage/users.json +trans.zh_TW = public/language/zh-TW/admin/manage/users.json +trans.cs = public/language/cs/admin/manage/users.json +trans.gl = public/language/gl/admin/manage/users.json +trans.rw = public/language/rw/admin/manage/users.json +trans.bg = public/language/bg/admin/manage/users.json +trans.de = public/language/de/admin/manage/users.json +trans.et = public/language/et/admin/manage/users.json +trans.id = public/language/id/admin/manage/users.json +trans.pt_PT = public/language/pt-PT/admin/manage/users.json +trans.ru = public/language/ru/admin/manage/users.json +trans.da = public/language/da/admin/manage/users.json +trans.he = public/language/he/admin/manage/users.json +trans.hu = public/language/hu/admin/manage/users.json +trans.ro = public/language/ro/admin/manage/users.json +trans.bn = public/language/bn/admin/manage/users.json +trans.es = public/language/es/admin/manage/users.json +trans.it = public/language/it/admin/manage/users.json +trans.nl = public/language/nl/admin/manage/users.json +trans.sq_AL = public/language/sq-AL/admin/manage/users.json +trans.tr = public/language/tr/admin/manage/users.json +trans.vi = public/language/vi/admin/manage/users.json +trans.fi = public/language/fi/admin/manage/users.json +trans.sc = public/language/sc/admin/manage/users.json +trans.hy = public/language/hy/admin/manage/users.json +trans.ja = public/language/ja/admin/manage/users.json +trans.lt = public/language/lt/admin/manage/users.json +trans.th = public/language/th/admin/manage/users.json +trans.sl = public/language/sl/admin/manage/users.json +trans.ar = public/language/ar/admin/manage/users.json +trans.el = public/language/el/admin/manage/users.json +trans.fa_IR = public/language/fa-IR/admin/manage/users.json +trans.hr = public/language/hr/admin/manage/users.json +trans.lv = public/language/lv/admin/manage/users.json +trans.pl = public/language/pl/admin/manage/users.json +trans.sk = public/language/sk/admin/manage/users.json +trans.sr = public/language/sr/admin/manage/users.json +trans.sv = public/language/sv/admin/manage/users.json + +[o:nodebb:p:nodebb:r:admin-menu] +file_filter = public/language//admin/menu.json +source_file = public/language/en-GB/admin/menu.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/admin/menu.json +trans.th = public/language/th/admin/menu.json +trans.vi = public/language/vi/admin/menu.json +trans.zh_CN = public/language/zh-CN/admin/menu.json +trans.hr = public/language/hr/admin/menu.json +trans.ko = public/language/ko/admin/menu.json +trans.it = public/language/it/admin/menu.json +trans.lt = public/language/lt/admin/menu.json +trans.pl = public/language/pl/admin/menu.json +trans.sc = public/language/sc/admin/menu.json +trans.sv = public/language/sv/admin/menu.json +trans.en@pirate = public/language/en-x-pirate/admin/menu.json +trans.fr = public/language/fr/admin/menu.json +trans.de = public/language/de/admin/menu.json +trans.ms = public/language/ms/admin/menu.json +trans.sq_AL = public/language/sq-AL/admin/menu.json +trans.bg = public/language/bg/admin/menu.json +trans.da = public/language/da/admin/menu.json +trans.es = public/language/es/admin/menu.json +trans.hy = public/language/hy/admin/menu.json +trans.id = public/language/id/admin/menu.json +trans.ja = public/language/ja/admin/menu.json +trans.ro = public/language/ro/admin/menu.json +trans.rw = public/language/rw/admin/menu.json +trans.ar = public/language/ar/admin/menu.json +trans.en_US = public/language/en-US/admin/menu.json +trans.sl = public/language/sl/admin/menu.json +trans.uk = public/language/uk/admin/menu.json +trans.he = public/language/he/admin/menu.json +trans.hu = public/language/hu/admin/menu.json +trans.sr = public/language/sr/admin/menu.json +trans.cs = public/language/cs/admin/menu.json +trans.fa_IR = public/language/fa-IR/admin/menu.json +trans.sk = public/language/sk/admin/menu.json +trans.tr = public/language/tr/admin/menu.json +trans.fi = public/language/fi/admin/menu.json +trans.nl = public/language/nl/admin/menu.json +trans.pt_BR = public/language/pt-BR/admin/menu.json +trans.zh_TW = public/language/zh-TW/admin/menu.json +trans.el = public/language/el/admin/menu.json +trans.gl = public/language/gl/admin/menu.json +trans.lv = public/language/lv/admin/menu.json +trans.nb = public/language/nb/admin/menu.json +trans.pt_PT = public/language/pt-PT/admin/menu.json +trans.bn = public/language/bn/admin/menu.json +trans.et = public/language/et/admin/menu.json + +[o:nodebb:p:nodebb:r:admin-settings-advanced] +file_filter = public/language//admin/settings/advanced.json +source_file = public/language/en-GB/admin/settings/advanced.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/advanced.json +trans.sc = public/language/sc/admin/settings/advanced.json +trans.ar = public/language/ar/admin/settings/advanced.json +trans.bn = public/language/bn/admin/settings/advanced.json +trans.el = public/language/el/admin/settings/advanced.json +trans.fa_IR = public/language/fa-IR/admin/settings/advanced.json +trans.fr = public/language/fr/admin/settings/advanced.json +trans.hy = public/language/hy/admin/settings/advanced.json +trans.bg = public/language/bg/admin/settings/advanced.json +trans.lv = public/language/lv/admin/settings/advanced.json +trans.pt_BR = public/language/pt-BR/admin/settings/advanced.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/advanced.json +trans.es = public/language/es/admin/settings/advanced.json +trans.id = public/language/id/admin/settings/advanced.json +trans.rw = public/language/rw/admin/settings/advanced.json +trans.sl = public/language/sl/admin/settings/advanced.json +trans.it = public/language/it/admin/settings/advanced.json +trans.nb = public/language/nb/admin/settings/advanced.json +trans.pt_PT = public/language/pt-PT/admin/settings/advanced.json +trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json +trans.sr = public/language/sr/admin/settings/advanced.json +trans.zh_CN = public/language/zh-CN/admin/settings/advanced.json +trans.zh_TW = public/language/zh-TW/admin/settings/advanced.json +trans.cs = public/language/cs/admin/settings/advanced.json +trans.en_US = public/language/en-US/admin/settings/advanced.json +trans.hr = public/language/hr/admin/settings/advanced.json +trans.pl = public/language/pl/admin/settings/advanced.json +trans.ru = public/language/ru/admin/settings/advanced.json +trans.sv = public/language/sv/admin/settings/advanced.json +trans.vi = public/language/vi/admin/settings/advanced.json +trans.de = public/language/de/admin/settings/advanced.json +trans.et = public/language/et/admin/settings/advanced.json +trans.fi = public/language/fi/admin/settings/advanced.json +trans.ro = public/language/ro/admin/settings/advanced.json +trans.sk = public/language/sk/admin/settings/advanced.json +trans.uk = public/language/uk/admin/settings/advanced.json +trans.da = public/language/da/admin/settings/advanced.json +trans.gl = public/language/gl/admin/settings/advanced.json +trans.he = public/language/he/admin/settings/advanced.json +trans.hu = public/language/hu/admin/settings/advanced.json +trans.ja = public/language/ja/admin/settings/advanced.json +trans.tr = public/language/tr/admin/settings/advanced.json +trans.lt = public/language/lt/admin/settings/advanced.json +trans.ms = public/language/ms/admin/settings/advanced.json +trans.nl = public/language/nl/admin/settings/advanced.json +trans.th = public/language/th/admin/settings/advanced.json + +[o:nodebb:p:nodebb:r:admin-settings-api] +file_filter = public/language//admin/settings/api.json +source_file = public/language/en-GB/admin/settings/api.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/settings/api.json +trans.lv = public/language/lv/admin/settings/api.json +trans.nl = public/language/nl/admin/settings/api.json +trans.rw = public/language/rw/admin/settings/api.json +trans.sl = public/language/sl/admin/settings/api.json +trans.bn = public/language/bn/admin/settings/api.json +trans.de = public/language/de/admin/settings/api.json +trans.el = public/language/el/admin/settings/api.json +trans.en_US = public/language/en-US/admin/settings/api.json +trans.fi = public/language/fi/admin/settings/api.json +trans.he = public/language/he/admin/settings/api.json +trans.hr = public/language/hr/admin/settings/api.json +trans.hy = public/language/hy/admin/settings/api.json +trans.ja = public/language/ja/admin/settings/api.json +trans.ko = public/language/ko/admin/settings/api.json +trans.ms = public/language/ms/admin/settings/api.json +trans.pt_BR = public/language/pt-BR/admin/settings/api.json +trans.zh_CN = public/language/zh-CN/admin/settings/api.json +trans.zh_TW = public/language/zh-TW/admin/settings/api.json +trans.cs = public/language/cs/admin/settings/api.json +trans.it = public/language/it/admin/settings/api.json +trans.nb = public/language/nb/admin/settings/api.json +trans.pt_PT = public/language/pt-PT/admin/settings/api.json +trans.ru = public/language/ru/admin/settings/api.json +trans.uk = public/language/uk/admin/settings/api.json +trans.vi = public/language/vi/admin/settings/api.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/api.json +trans.fr = public/language/fr/admin/settings/api.json +trans.lt = public/language/lt/admin/settings/api.json +trans.sr = public/language/sr/admin/settings/api.json +trans.fa_IR = public/language/fa-IR/admin/settings/api.json +trans.sq_AL = public/language/sq-AL/admin/settings/api.json +trans.th = public/language/th/admin/settings/api.json +trans.da = public/language/da/admin/settings/api.json +trans.gl = public/language/gl/admin/settings/api.json +trans.pl = public/language/pl/admin/settings/api.json +trans.ar = public/language/ar/admin/settings/api.json +trans.es = public/language/es/admin/settings/api.json +trans.hu = public/language/hu/admin/settings/api.json +trans.sc = public/language/sc/admin/settings/api.json +trans.bg = public/language/bg/admin/settings/api.json +trans.id = public/language/id/admin/settings/api.json +trans.ro = public/language/ro/admin/settings/api.json +trans.sk = public/language/sk/admin/settings/api.json +trans.sv = public/language/sv/admin/settings/api.json +trans.tr = public/language/tr/admin/settings/api.json + +[o:nodebb:p:nodebb:r:admin-settings-chat] +file_filter = public/language//admin/settings/chat.json +source_file = public/language/en-GB/admin/settings/chat.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/chat.json +trans.es = public/language/es/admin/settings/chat.json +trans.et = public/language/et/admin/settings/chat.json +trans.ms = public/language/ms/admin/settings/chat.json +trans.sk = public/language/sk/admin/settings/chat.json +trans.sq_AL = public/language/sq-AL/admin/settings/chat.json +trans.da = public/language/da/admin/settings/chat.json +trans.de = public/language/de/admin/settings/chat.json +trans.en_US = public/language/en-US/admin/settings/chat.json +trans.fa_IR = public/language/fa-IR/admin/settings/chat.json +trans.fr = public/language/fr/admin/settings/chat.json +trans.id = public/language/id/admin/settings/chat.json +trans.ro = public/language/ro/admin/settings/chat.json +trans.el = public/language/el/admin/settings/chat.json +trans.hr = public/language/hr/admin/settings/chat.json +trans.ja = public/language/ja/admin/settings/chat.json +trans.ko = public/language/ko/admin/settings/chat.json +trans.nb = public/language/nb/admin/settings/chat.json +trans.nl = public/language/nl/admin/settings/chat.json +trans.uk = public/language/uk/admin/settings/chat.json +trans.he = public/language/he/admin/settings/chat.json +trans.sl = public/language/sl/admin/settings/chat.json +trans.sr = public/language/sr/admin/settings/chat.json +trans.cs = public/language/cs/admin/settings/chat.json +trans.pl = public/language/pl/admin/settings/chat.json +trans.pt_BR = public/language/pt-BR/admin/settings/chat.json +trans.sv = public/language/sv/admin/settings/chat.json +trans.zh_CN = public/language/zh-CN/admin/settings/chat.json +trans.bg = public/language/bg/admin/settings/chat.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/chat.json +trans.hu = public/language/hu/admin/settings/chat.json +trans.ru = public/language/ru/admin/settings/chat.json +trans.rw = public/language/rw/admin/settings/chat.json +trans.tr = public/language/tr/admin/settings/chat.json +trans.bn = public/language/bn/admin/settings/chat.json +trans.hy = public/language/hy/admin/settings/chat.json +trans.lt = public/language/lt/admin/settings/chat.json +trans.lv = public/language/lv/admin/settings/chat.json +trans.th = public/language/th/admin/settings/chat.json +trans.fi = public/language/fi/admin/settings/chat.json +trans.gl = public/language/gl/admin/settings/chat.json +trans.it = public/language/it/admin/settings/chat.json +trans.pt_PT = public/language/pt-PT/admin/settings/chat.json +trans.sc = public/language/sc/admin/settings/chat.json +trans.vi = public/language/vi/admin/settings/chat.json +trans.zh_TW = public/language/zh-TW/admin/settings/chat.json + +[o:nodebb:p:nodebb:r:admin-settings-cookies] +file_filter = public/language//admin/settings/cookies.json +source_file = public/language/en-GB/admin/settings/cookies.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/settings/cookies.json +trans.th = public/language/th/admin/settings/cookies.json +trans.zh_CN = public/language/zh-CN/admin/settings/cookies.json +trans.en_US = public/language/en-US/admin/settings/cookies.json +trans.lt = public/language/lt/admin/settings/cookies.json +trans.pl = public/language/pl/admin/settings/cookies.json +trans.ro = public/language/ro/admin/settings/cookies.json +trans.rw = public/language/rw/admin/settings/cookies.json +trans.sk = public/language/sk/admin/settings/cookies.json +trans.tr = public/language/tr/admin/settings/cookies.json +trans.ar = public/language/ar/admin/settings/cookies.json +trans.da = public/language/da/admin/settings/cookies.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/cookies.json +trans.gl = public/language/gl/admin/settings/cookies.json +trans.hu = public/language/hu/admin/settings/cookies.json +trans.vi = public/language/vi/admin/settings/cookies.json +trans.el = public/language/el/admin/settings/cookies.json +trans.et = public/language/et/admin/settings/cookies.json +trans.lv = public/language/lv/admin/settings/cookies.json +trans.ru = public/language/ru/admin/settings/cookies.json +trans.uk = public/language/uk/admin/settings/cookies.json +trans.ko = public/language/ko/admin/settings/cookies.json +trans.sv = public/language/sv/admin/settings/cookies.json +trans.bn = public/language/bn/admin/settings/cookies.json +trans.de = public/language/de/admin/settings/cookies.json +trans.he = public/language/he/admin/settings/cookies.json +trans.hy = public/language/hy/admin/settings/cookies.json +trans.it = public/language/it/admin/settings/cookies.json +trans.cs = public/language/cs/admin/settings/cookies.json +trans.hr = public/language/hr/admin/settings/cookies.json +trans.ja = public/language/ja/admin/settings/cookies.json +trans.pt_PT = public/language/pt-PT/admin/settings/cookies.json +trans.nb = public/language/nb/admin/settings/cookies.json +trans.sc = public/language/sc/admin/settings/cookies.json +trans.bg = public/language/bg/admin/settings/cookies.json +trans.fi = public/language/fi/admin/settings/cookies.json +trans.fr = public/language/fr/admin/settings/cookies.json +trans.id = public/language/id/admin/settings/cookies.json +trans.ms = public/language/ms/admin/settings/cookies.json +trans.zh_TW = public/language/zh-TW/admin/settings/cookies.json +trans.es = public/language/es/admin/settings/cookies.json +trans.fa_IR = public/language/fa-IR/admin/settings/cookies.json +trans.nl = public/language/nl/admin/settings/cookies.json +trans.sl = public/language/sl/admin/settings/cookies.json +trans.sq_AL = public/language/sq-AL/admin/settings/cookies.json +trans.pt_BR = public/language/pt-BR/admin/settings/cookies.json + +[o:nodebb:p:nodebb:r:admin-settings-email] +file_filter = public/language//admin/settings/email.json +source_file = public/language/en-GB/admin/settings/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/email.json +trans.tr = public/language/tr/admin/settings/email.json +trans.uk = public/language/uk/admin/settings/email.json +trans.ar = public/language/ar/admin/settings/email.json +trans.ja = public/language/ja/admin/settings/email.json +trans.pt_PT = public/language/pt-PT/admin/settings/email.json +trans.sr = public/language/sr/admin/settings/email.json +trans.ms = public/language/ms/admin/settings/email.json +trans.nb = public/language/nb/admin/settings/email.json +trans.ru = public/language/ru/admin/settings/email.json +trans.sk = public/language/sk/admin/settings/email.json +trans.fr = public/language/fr/admin/settings/email.json +trans.he = public/language/he/admin/settings/email.json +trans.id = public/language/id/admin/settings/email.json +trans.it = public/language/it/admin/settings/email.json +trans.sl = public/language/sl/admin/settings/email.json +trans.sq_AL = public/language/sq-AL/admin/settings/email.json +trans.hr = public/language/hr/admin/settings/email.json +trans.hu = public/language/hu/admin/settings/email.json +trans.ko = public/language/ko/admin/settings/email.json +trans.zh_TW = public/language/zh-TW/admin/settings/email.json +trans.bn = public/language/bn/admin/settings/email.json +trans.fi = public/language/fi/admin/settings/email.json +trans.pt_BR = public/language/pt-BR/admin/settings/email.json +trans.es = public/language/es/admin/settings/email.json +trans.pl = public/language/pl/admin/settings/email.json +trans.ro = public/language/ro/admin/settings/email.json +trans.rw = public/language/rw/admin/settings/email.json +trans.bg = public/language/bg/admin/settings/email.json +trans.cs = public/language/cs/admin/settings/email.json +trans.el = public/language/el/admin/settings/email.json +trans.en_US = public/language/en-US/admin/settings/email.json +trans.zh_CN = public/language/zh-CN/admin/settings/email.json +trans.fa_IR = public/language/fa-IR/admin/settings/email.json +trans.gl = public/language/gl/admin/settings/email.json +trans.hy = public/language/hy/admin/settings/email.json +trans.lv = public/language/lv/admin/settings/email.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/email.json +trans.et = public/language/et/admin/settings/email.json +trans.lt = public/language/lt/admin/settings/email.json +trans.th = public/language/th/admin/settings/email.json +trans.vi = public/language/vi/admin/settings/email.json +trans.da = public/language/da/admin/settings/email.json +trans.de = public/language/de/admin/settings/email.json +trans.nl = public/language/nl/admin/settings/email.json +trans.sc = public/language/sc/admin/settings/email.json + +[o:nodebb:p:nodebb:r:admin-settings-general] +file_filter = public/language//admin/settings/general.json +source_file = public/language/en-GB/admin/settings/general.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/general.json +trans.ro = public/language/ro/admin/settings/general.json +trans.sc = public/language/sc/admin/settings/general.json +trans.sk = public/language/sk/admin/settings/general.json +trans.sv = public/language/sv/admin/settings/general.json +trans.uk = public/language/uk/admin/settings/general.json +trans.fr = public/language/fr/admin/settings/general.json +trans.gl = public/language/gl/admin/settings/general.json +trans.zh_CN = public/language/zh-CN/admin/settings/general.json +trans.lt = public/language/lt/admin/settings/general.json +trans.rw = public/language/rw/admin/settings/general.json +trans.th = public/language/th/admin/settings/general.json +trans.tr = public/language/tr/admin/settings/general.json +trans.zh_TW = public/language/zh-TW/admin/settings/general.json +trans.de = public/language/de/admin/settings/general.json +trans.ja = public/language/ja/admin/settings/general.json +trans.en_US = public/language/en-US/admin/settings/general.json +trans.et = public/language/et/admin/settings/general.json +trans.fi = public/language/fi/admin/settings/general.json +trans.hy = public/language/hy/admin/settings/general.json +trans.id = public/language/id/admin/settings/general.json +trans.ru = public/language/ru/admin/settings/general.json +trans.cs = public/language/cs/admin/settings/general.json +trans.el = public/language/el/admin/settings/general.json +trans.sl = public/language/sl/admin/settings/general.json +trans.hu = public/language/hu/admin/settings/general.json +trans.it = public/language/it/admin/settings/general.json +trans.nl = public/language/nl/admin/settings/general.json +trans.pl = public/language/pl/admin/settings/general.json +trans.es = public/language/es/admin/settings/general.json +trans.fa_IR = public/language/fa-IR/admin/settings/general.json +trans.ms = public/language/ms/admin/settings/general.json +trans.nb = public/language/nb/admin/settings/general.json +trans.sr = public/language/sr/admin/settings/general.json +trans.da = public/language/da/admin/settings/general.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/general.json +trans.pt_PT = public/language/pt-PT/admin/settings/general.json +trans.he = public/language/he/admin/settings/general.json +trans.lv = public/language/lv/admin/settings/general.json +trans.pt_BR = public/language/pt-BR/admin/settings/general.json +trans.bn = public/language/bn/admin/settings/general.json +trans.hr = public/language/hr/admin/settings/general.json +trans.sq_AL = public/language/sq-AL/admin/settings/general.json +trans.vi = public/language/vi/admin/settings/general.json +trans.ar = public/language/ar/admin/settings/general.json +trans.bg = public/language/bg/admin/settings/general.json + +[o:nodebb:p:nodebb:r:admin-settings-group] +file_filter = public/language//admin/settings/group.json +source_file = public/language/en-GB/admin/settings/group.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sc = public/language/sc/admin/settings/group.json +trans.en_US = public/language/en-US/admin/settings/group.json +trans.et = public/language/et/admin/settings/group.json +trans.fr = public/language/fr/admin/settings/group.json +trans.it = public/language/it/admin/settings/group.json +trans.nb = public/language/nb/admin/settings/group.json +trans.es = public/language/es/admin/settings/group.json +trans.fa_IR = public/language/fa-IR/admin/settings/group.json +trans.gl = public/language/gl/admin/settings/group.json +trans.rw = public/language/rw/admin/settings/group.json +trans.sr = public/language/sr/admin/settings/group.json +trans.sq_AL = public/language/sq-AL/admin/settings/group.json +trans.th = public/language/th/admin/settings/group.json +trans.vi = public/language/vi/admin/settings/group.json +trans.bn = public/language/bn/admin/settings/group.json +trans.fi = public/language/fi/admin/settings/group.json +trans.hy = public/language/hy/admin/settings/group.json +trans.id = public/language/id/admin/settings/group.json +trans.ms = public/language/ms/admin/settings/group.json +trans.de = public/language/de/admin/settings/group.json +trans.he = public/language/he/admin/settings/group.json +trans.lv = public/language/lv/admin/settings/group.json +trans.pt_PT = public/language/pt-PT/admin/settings/group.json +trans.sk = public/language/sk/admin/settings/group.json +trans.tr = public/language/tr/admin/settings/group.json +trans.uk = public/language/uk/admin/settings/group.json +trans.cs = public/language/cs/admin/settings/group.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/group.json +trans.hu = public/language/hu/admin/settings/group.json +trans.nl = public/language/nl/admin/settings/group.json +trans.ru = public/language/ru/admin/settings/group.json +trans.lt = public/language/lt/admin/settings/group.json +trans.ro = public/language/ro/admin/settings/group.json +trans.sl = public/language/sl/admin/settings/group.json +trans.ar = public/language/ar/admin/settings/group.json +trans.bg = public/language/bg/admin/settings/group.json +trans.da = public/language/da/admin/settings/group.json +trans.hr = public/language/hr/admin/settings/group.json +trans.ko = public/language/ko/admin/settings/group.json +trans.el = public/language/el/admin/settings/group.json +trans.sv = public/language/sv/admin/settings/group.json +trans.ja = public/language/ja/admin/settings/group.json +trans.pl = public/language/pl/admin/settings/group.json +trans.pt_BR = public/language/pt-BR/admin/settings/group.json +trans.zh_CN = public/language/zh-CN/admin/settings/group.json +trans.zh_TW = public/language/zh-TW/admin/settings/group.json + +[o:nodebb:p:nodebb:r:admin-settings-guest] +file_filter = public/language//admin/settings/guest.json +source_file = public/language/en-GB/admin/settings/guest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/guest.json +trans.da = public/language/da/admin/settings/guest.json +trans.en_US = public/language/en-US/admin/settings/guest.json +trans.lt = public/language/lt/admin/settings/guest.json +trans.ms = public/language/ms/admin/settings/guest.json +trans.nl = public/language/nl/admin/settings/guest.json +trans.ru = public/language/ru/admin/settings/guest.json +trans.sc = public/language/sc/admin/settings/guest.json +trans.sr = public/language/sr/admin/settings/guest.json +trans.th = public/language/th/admin/settings/guest.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/guest.json +trans.it = public/language/it/admin/settings/guest.json +trans.lv = public/language/lv/admin/settings/guest.json +trans.pt_BR = public/language/pt-BR/admin/settings/guest.json +trans.sk = public/language/sk/admin/settings/guest.json +trans.de = public/language/de/admin/settings/guest.json +trans.es = public/language/es/admin/settings/guest.json +trans.hr = public/language/hr/admin/settings/guest.json +trans.pt_PT = public/language/pt-PT/admin/settings/guest.json +trans.rw = public/language/rw/admin/settings/guest.json +trans.sq_AL = public/language/sq-AL/admin/settings/guest.json +trans.el = public/language/el/admin/settings/guest.json +trans.tr = public/language/tr/admin/settings/guest.json +trans.zh_CN = public/language/zh-CN/admin/settings/guest.json +trans.bg = public/language/bg/admin/settings/guest.json +trans.fi = public/language/fi/admin/settings/guest.json +trans.hu = public/language/hu/admin/settings/guest.json +trans.ja = public/language/ja/admin/settings/guest.json +trans.nb = public/language/nb/admin/settings/guest.json +trans.pl = public/language/pl/admin/settings/guest.json +trans.sl = public/language/sl/admin/settings/guest.json +trans.vi = public/language/vi/admin/settings/guest.json +trans.bn = public/language/bn/admin/settings/guest.json +trans.fa_IR = public/language/fa-IR/admin/settings/guest.json +trans.fr = public/language/fr/admin/settings/guest.json +trans.hy = public/language/hy/admin/settings/guest.json +trans.ro = public/language/ro/admin/settings/guest.json +trans.et = public/language/et/admin/settings/guest.json +trans.gl = public/language/gl/admin/settings/guest.json +trans.sv = public/language/sv/admin/settings/guest.json +trans.uk = public/language/uk/admin/settings/guest.json +trans.zh_TW = public/language/zh-TW/admin/settings/guest.json +trans.ar = public/language/ar/admin/settings/guest.json +trans.he = public/language/he/admin/settings/guest.json +trans.id = public/language/id/admin/settings/guest.json +trans.ko = public/language/ko/admin/settings/guest.json + +[o:nodebb:p:nodebb:r:admin-settings-homepage] +file_filter = public/language//admin/settings/homepage.json +source_file = public/language/en-GB/admin/settings/homepage.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/admin/settings/homepage.json +trans.tr = public/language/tr/admin/settings/homepage.json +trans.vi = public/language/vi/admin/settings/homepage.json +trans.et = public/language/et/admin/settings/homepage.json +trans.fi = public/language/fi/admin/settings/homepage.json +trans.hy = public/language/hy/admin/settings/homepage.json +trans.ru = public/language/ru/admin/settings/homepage.json +trans.sr = public/language/sr/admin/settings/homepage.json +trans.es = public/language/es/admin/settings/homepage.json +trans.id = public/language/id/admin/settings/homepage.json +trans.lt = public/language/lt/admin/settings/homepage.json +trans.sk = public/language/sk/admin/settings/homepage.json +trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json +trans.th = public/language/th/admin/settings/homepage.json +trans.en_US = public/language/en-US/admin/settings/homepage.json +trans.lv = public/language/lv/admin/settings/homepage.json +trans.pt_PT = public/language/pt-PT/admin/settings/homepage.json +trans.sc = public/language/sc/admin/settings/homepage.json +trans.fa_IR = public/language/fa-IR/admin/settings/homepage.json +trans.he = public/language/he/admin/settings/homepage.json +trans.ms = public/language/ms/admin/settings/homepage.json +trans.cs = public/language/cs/admin/settings/homepage.json +trans.el = public/language/el/admin/settings/homepage.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/homepage.json +trans.gl = public/language/gl/admin/settings/homepage.json +trans.ko = public/language/ko/admin/settings/homepage.json +trans.ar = public/language/ar/admin/settings/homepage.json +trans.bg = public/language/bg/admin/settings/homepage.json +trans.bn = public/language/bn/admin/settings/homepage.json +trans.rw = public/language/rw/admin/settings/homepage.json +trans.zh_CN = public/language/zh-CN/admin/settings/homepage.json +trans.hr = public/language/hr/admin/settings/homepage.json +trans.it = public/language/it/admin/settings/homepage.json +trans.ja = public/language/ja/admin/settings/homepage.json +trans.nl = public/language/nl/admin/settings/homepage.json +trans.ro = public/language/ro/admin/settings/homepage.json +trans.da = public/language/da/admin/settings/homepage.json +trans.de = public/language/de/admin/settings/homepage.json +trans.fr = public/language/fr/admin/settings/homepage.json +trans.sv = public/language/sv/admin/settings/homepage.json +trans.hu = public/language/hu/admin/settings/homepage.json +trans.pt_BR = public/language/pt-BR/admin/settings/homepage.json +trans.sl = public/language/sl/admin/settings/homepage.json +trans.pl = public/language/pl/admin/settings/homepage.json +trans.uk = public/language/uk/admin/settings/homepage.json +trans.zh_TW = public/language/zh-TW/admin/settings/homepage.json + +[o:nodebb:p:nodebb:r:admin-settings-languages] +file_filter = public/language//admin/settings/languages.json +source_file = public/language/en-GB/admin/settings/languages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/settings/languages.json +trans.fa_IR = public/language/fa-IR/admin/settings/languages.json +trans.gl = public/language/gl/admin/settings/languages.json +trans.ro = public/language/ro/admin/settings/languages.json +trans.th = public/language/th/admin/settings/languages.json +trans.hr = public/language/hr/admin/settings/languages.json +trans.hy = public/language/hy/admin/settings/languages.json +trans.sc = public/language/sc/admin/settings/languages.json +trans.vi = public/language/vi/admin/settings/languages.json +trans.tr = public/language/tr/admin/settings/languages.json +trans.cs = public/language/cs/admin/settings/languages.json +trans.et = public/language/et/admin/settings/languages.json +trans.lv = public/language/lv/admin/settings/languages.json +trans.pl = public/language/pl/admin/settings/languages.json +trans.sr = public/language/sr/admin/settings/languages.json +trans.sv = public/language/sv/admin/settings/languages.json +trans.hu = public/language/hu/admin/settings/languages.json +trans.it = public/language/it/admin/settings/languages.json +trans.ja = public/language/ja/admin/settings/languages.json +trans.sl = public/language/sl/admin/settings/languages.json +trans.zh_TW = public/language/zh-TW/admin/settings/languages.json +trans.da = public/language/da/admin/settings/languages.json +trans.fr = public/language/fr/admin/settings/languages.json +trans.he = public/language/he/admin/settings/languages.json +trans.id = public/language/id/admin/settings/languages.json +trans.sq_AL = public/language/sq-AL/admin/settings/languages.json +trans.uk = public/language/uk/admin/settings/languages.json +trans.bn = public/language/bn/admin/settings/languages.json +trans.fi = public/language/fi/admin/settings/languages.json +trans.ko = public/language/ko/admin/settings/languages.json +trans.pt_BR = public/language/pt-BR/admin/settings/languages.json +trans.sk = public/language/sk/admin/settings/languages.json +trans.pt_PT = public/language/pt-PT/admin/settings/languages.json +trans.ru = public/language/ru/admin/settings/languages.json +trans.ar = public/language/ar/admin/settings/languages.json +trans.bg = public/language/bg/admin/settings/languages.json +trans.de = public/language/de/admin/settings/languages.json +trans.el = public/language/el/admin/settings/languages.json +trans.lt = public/language/lt/admin/settings/languages.json +trans.nl = public/language/nl/admin/settings/languages.json +trans.zh_CN = public/language/zh-CN/admin/settings/languages.json +trans.en_US = public/language/en-US/admin/settings/languages.json +trans.es = public/language/es/admin/settings/languages.json +trans.ms = public/language/ms/admin/settings/languages.json +trans.nb = public/language/nb/admin/settings/languages.json +trans.rw = public/language/rw/admin/settings/languages.json + +[o:nodebb:p:nodebb:r:admin-settings-navigation] +file_filter = public/language//admin/settings/navigation.json +source_file = public/language/en-GB/admin/settings/navigation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/navigation.json +trans.bn = public/language/bn/admin/settings/navigation.json +trans.es = public/language/es/admin/settings/navigation.json +trans.fa_IR = public/language/fa-IR/admin/settings/navigation.json +trans.nl = public/language/nl/admin/settings/navigation.json +trans.pt_BR = public/language/pt-BR/admin/settings/navigation.json +trans.rw = public/language/rw/admin/settings/navigation.json +trans.zh_CN = public/language/zh-CN/admin/settings/navigation.json +trans.da = public/language/da/admin/settings/navigation.json +trans.it = public/language/it/admin/settings/navigation.json +trans.ms = public/language/ms/admin/settings/navigation.json +trans.pt_PT = public/language/pt-PT/admin/settings/navigation.json +trans.vi = public/language/vi/admin/settings/navigation.json +trans.en_US = public/language/en-US/admin/settings/navigation.json +trans.fr = public/language/fr/admin/settings/navigation.json +trans.hu = public/language/hu/admin/settings/navigation.json +trans.hy = public/language/hy/admin/settings/navigation.json +trans.ja = public/language/ja/admin/settings/navigation.json +trans.lt = public/language/lt/admin/settings/navigation.json +trans.ru = public/language/ru/admin/settings/navigation.json +trans.sk = public/language/sk/admin/settings/navigation.json +trans.sr = public/language/sr/admin/settings/navigation.json +trans.de = public/language/de/admin/settings/navigation.json +trans.et = public/language/et/admin/settings/navigation.json +trans.fi = public/language/fi/admin/settings/navigation.json +trans.gl = public/language/gl/admin/settings/navigation.json +trans.sc = public/language/sc/admin/settings/navigation.json +trans.sl = public/language/sl/admin/settings/navigation.json +trans.th = public/language/th/admin/settings/navigation.json +trans.bg = public/language/bg/admin/settings/navigation.json +trans.cs = public/language/cs/admin/settings/navigation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/navigation.json +trans.ro = public/language/ro/admin/settings/navigation.json +trans.sq_AL = public/language/sq-AL/admin/settings/navigation.json +trans.tr = public/language/tr/admin/settings/navigation.json +trans.zh_TW = public/language/zh-TW/admin/settings/navigation.json +trans.ar = public/language/ar/admin/settings/navigation.json +trans.hr = public/language/hr/admin/settings/navigation.json +trans.id = public/language/id/admin/settings/navigation.json +trans.ko = public/language/ko/admin/settings/navigation.json +trans.nb = public/language/nb/admin/settings/navigation.json +trans.pl = public/language/pl/admin/settings/navigation.json +trans.sv = public/language/sv/admin/settings/navigation.json +trans.el = public/language/el/admin/settings/navigation.json +trans.he = public/language/he/admin/settings/navigation.json +trans.lv = public/language/lv/admin/settings/navigation.json + +[o:nodebb:p:nodebb:r:admin-settings-notifications] +file_filter = public/language//admin/settings/notifications.json +source_file = public/language/en-GB/admin/settings/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/settings/notifications.json +trans.fi = public/language/fi/admin/settings/notifications.json +trans.id = public/language/id/admin/settings/notifications.json +trans.pt_PT = public/language/pt-PT/admin/settings/notifications.json +trans.rw = public/language/rw/admin/settings/notifications.json +trans.ar = public/language/ar/admin/settings/notifications.json +trans.bn = public/language/bn/admin/settings/notifications.json +trans.el = public/language/el/admin/settings/notifications.json +trans.en_US = public/language/en-US/admin/settings/notifications.json +trans.sk = public/language/sk/admin/settings/notifications.json +trans.sr = public/language/sr/admin/settings/notifications.json +trans.sv = public/language/sv/admin/settings/notifications.json +trans.th = public/language/th/admin/settings/notifications.json +trans.cs = public/language/cs/admin/settings/notifications.json +trans.it = public/language/it/admin/settings/notifications.json +trans.ru = public/language/ru/admin/settings/notifications.json +trans.sq_AL = public/language/sq-AL/admin/settings/notifications.json +trans.vi = public/language/vi/admin/settings/notifications.json +trans.fr = public/language/fr/admin/settings/notifications.json +trans.hy = public/language/hy/admin/settings/notifications.json +trans.sl = public/language/sl/admin/settings/notifications.json +trans.uk = public/language/uk/admin/settings/notifications.json +trans.ms = public/language/ms/admin/settings/notifications.json +trans.nl = public/language/nl/admin/settings/notifications.json +trans.ro = public/language/ro/admin/settings/notifications.json +trans.sc = public/language/sc/admin/settings/notifications.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/notifications.json +trans.gl = public/language/gl/admin/settings/notifications.json +trans.he = public/language/he/admin/settings/notifications.json +trans.hu = public/language/hu/admin/settings/notifications.json +trans.tr = public/language/tr/admin/settings/notifications.json +trans.zh_CN = public/language/zh-CN/admin/settings/notifications.json +trans.ko = public/language/ko/admin/settings/notifications.json +trans.lv = public/language/lv/admin/settings/notifications.json +trans.nb = public/language/nb/admin/settings/notifications.json +trans.pl = public/language/pl/admin/settings/notifications.json +trans.bg = public/language/bg/admin/settings/notifications.json +trans.da = public/language/da/admin/settings/notifications.json +trans.de = public/language/de/admin/settings/notifications.json +trans.hr = public/language/hr/admin/settings/notifications.json +trans.pt_BR = public/language/pt-BR/admin/settings/notifications.json +trans.et = public/language/et/admin/settings/notifications.json +trans.lt = public/language/lt/admin/settings/notifications.json +trans.es = public/language/es/admin/settings/notifications.json +trans.fa_IR = public/language/fa-IR/admin/settings/notifications.json +trans.ja = public/language/ja/admin/settings/notifications.json + +[o:nodebb:p:nodebb:r:admin-settings-pagination] +file_filter = public/language//admin/settings/pagination.json +source_file = public/language/en-GB/admin/settings/pagination.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/settings/pagination.json +trans.th = public/language/th/admin/settings/pagination.json +trans.de = public/language/de/admin/settings/pagination.json +trans.ru = public/language/ru/admin/settings/pagination.json +trans.rw = public/language/rw/admin/settings/pagination.json +trans.sc = public/language/sc/admin/settings/pagination.json +trans.sk = public/language/sk/admin/settings/pagination.json +trans.lv = public/language/lv/admin/settings/pagination.json +trans.ar = public/language/ar/admin/settings/pagination.json +trans.el = public/language/el/admin/settings/pagination.json +trans.en_US = public/language/en-US/admin/settings/pagination.json +trans.et = public/language/et/admin/settings/pagination.json +trans.fr = public/language/fr/admin/settings/pagination.json +trans.bg = public/language/bg/admin/settings/pagination.json +trans.fi = public/language/fi/admin/settings/pagination.json +trans.ja = public/language/ja/admin/settings/pagination.json +trans.ms = public/language/ms/admin/settings/pagination.json +trans.uk = public/language/uk/admin/settings/pagination.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/pagination.json +trans.hu = public/language/hu/admin/settings/pagination.json +trans.ko = public/language/ko/admin/settings/pagination.json +trans.lt = public/language/lt/admin/settings/pagination.json +trans.nl = public/language/nl/admin/settings/pagination.json +trans.hr = public/language/hr/admin/settings/pagination.json +trans.pl = public/language/pl/admin/settings/pagination.json +trans.pt_BR = public/language/pt-BR/admin/settings/pagination.json +trans.cs = public/language/cs/admin/settings/pagination.json +trans.da = public/language/da/admin/settings/pagination.json +trans.es = public/language/es/admin/settings/pagination.json +trans.gl = public/language/gl/admin/settings/pagination.json +trans.he = public/language/he/admin/settings/pagination.json +trans.pt_PT = public/language/pt-PT/admin/settings/pagination.json +trans.ro = public/language/ro/admin/settings/pagination.json +trans.id = public/language/id/admin/settings/pagination.json +trans.tr = public/language/tr/admin/settings/pagination.json +trans.vi = public/language/vi/admin/settings/pagination.json +trans.fa_IR = public/language/fa-IR/admin/settings/pagination.json +trans.it = public/language/it/admin/settings/pagination.json +trans.sl = public/language/sl/admin/settings/pagination.json +trans.zh_CN = public/language/zh-CN/admin/settings/pagination.json +trans.zh_TW = public/language/zh-TW/admin/settings/pagination.json +trans.bn = public/language/bn/admin/settings/pagination.json +trans.hy = public/language/hy/admin/settings/pagination.json +trans.nb = public/language/nb/admin/settings/pagination.json +trans.sr = public/language/sr/admin/settings/pagination.json +trans.sv = public/language/sv/admin/settings/pagination.json + +[o:nodebb:p:nodebb:r:admin-settings-post] +file_filter = public/language//admin/settings/post.json +source_file = public/language/en-GB/admin/settings/post.json +source_lang = en_GB +type = KEYVALUEJSON +trans.id = public/language/id/admin/settings/post.json +trans.bn = public/language/bn/admin/settings/post.json +trans.da = public/language/da/admin/settings/post.json +trans.de = public/language/de/admin/settings/post.json +trans.en_US = public/language/en-US/admin/settings/post.json +trans.ms = public/language/ms/admin/settings/post.json +trans.ro = public/language/ro/admin/settings/post.json +trans.zh_TW = public/language/zh-TW/admin/settings/post.json +trans.cs = public/language/cs/admin/settings/post.json +trans.he = public/language/he/admin/settings/post.json +trans.ja = public/language/ja/admin/settings/post.json +trans.ko = public/language/ko/admin/settings/post.json +trans.hr = public/language/hr/admin/settings/post.json +trans.sq_AL = public/language/sq-AL/admin/settings/post.json +trans.lv = public/language/lv/admin/settings/post.json +trans.nl = public/language/nl/admin/settings/post.json +trans.pt_PT = public/language/pt-PT/admin/settings/post.json +trans.sr = public/language/sr/admin/settings/post.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/post.json +trans.et = public/language/et/admin/settings/post.json +trans.hu = public/language/hu/admin/settings/post.json +trans.it = public/language/it/admin/settings/post.json +trans.th = public/language/th/admin/settings/post.json +trans.gl = public/language/gl/admin/settings/post.json +trans.nb = public/language/nb/admin/settings/post.json +trans.sc = public/language/sc/admin/settings/post.json +trans.zh_CN = public/language/zh-CN/admin/settings/post.json +trans.rw = public/language/rw/admin/settings/post.json +trans.sv = public/language/sv/admin/settings/post.json +trans.vi = public/language/vi/admin/settings/post.json +trans.ar = public/language/ar/admin/settings/post.json +trans.el = public/language/el/admin/settings/post.json +trans.fa_IR = public/language/fa-IR/admin/settings/post.json +trans.fi = public/language/fi/admin/settings/post.json +trans.ru = public/language/ru/admin/settings/post.json +trans.bg = public/language/bg/admin/settings/post.json +trans.es = public/language/es/admin/settings/post.json +trans.hy = public/language/hy/admin/settings/post.json +trans.pt_BR = public/language/pt-BR/admin/settings/post.json +trans.sl = public/language/sl/admin/settings/post.json +trans.tr = public/language/tr/admin/settings/post.json +trans.uk = public/language/uk/admin/settings/post.json +trans.fr = public/language/fr/admin/settings/post.json +trans.lt = public/language/lt/admin/settings/post.json +trans.pl = public/language/pl/admin/settings/post.json +trans.sk = public/language/sk/admin/settings/post.json + +[o:nodebb:p:nodebb:r:admin-settings-reputation] +file_filter = public/language//admin/settings/reputation.json +source_file = public/language/en-GB/admin/settings/reputation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fi = public/language/fi/admin/settings/reputation.json +trans.ja = public/language/ja/admin/settings/reputation.json +trans.lt = public/language/lt/admin/settings/reputation.json +trans.pl = public/language/pl/admin/settings/reputation.json +trans.ro = public/language/ro/admin/settings/reputation.json +trans.bg = public/language/bg/admin/settings/reputation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/reputation.json +trans.fa_IR = public/language/fa-IR/admin/settings/reputation.json +trans.sl = public/language/sl/admin/settings/reputation.json +trans.sv = public/language/sv/admin/settings/reputation.json +trans.uk = public/language/uk/admin/settings/reputation.json +trans.sr = public/language/sr/admin/settings/reputation.json +trans.zh_CN = public/language/zh-CN/admin/settings/reputation.json +trans.ar = public/language/ar/admin/settings/reputation.json +trans.el = public/language/el/admin/settings/reputation.json +trans.es = public/language/es/admin/settings/reputation.json +trans.sc = public/language/sc/admin/settings/reputation.json +trans.hr = public/language/hr/admin/settings/reputation.json +trans.ko = public/language/ko/admin/settings/reputation.json +trans.nb = public/language/nb/admin/settings/reputation.json +trans.bn = public/language/bn/admin/settings/reputation.json +trans.de = public/language/de/admin/settings/reputation.json +trans.et = public/language/et/admin/settings/reputation.json +trans.rw = public/language/rw/admin/settings/reputation.json +trans.th = public/language/th/admin/settings/reputation.json +trans.zh_TW = public/language/zh-TW/admin/settings/reputation.json +trans.fr = public/language/fr/admin/settings/reputation.json +trans.it = public/language/it/admin/settings/reputation.json +trans.ru = public/language/ru/admin/settings/reputation.json +trans.pt_PT = public/language/pt-PT/admin/settings/reputation.json +trans.sk = public/language/sk/admin/settings/reputation.json +trans.id = public/language/id/admin/settings/reputation.json +trans.ms = public/language/ms/admin/settings/reputation.json +trans.nl = public/language/nl/admin/settings/reputation.json +trans.he = public/language/he/admin/settings/reputation.json +trans.sq_AL = public/language/sq-AL/admin/settings/reputation.json +trans.tr = public/language/tr/admin/settings/reputation.json +trans.cs = public/language/cs/admin/settings/reputation.json +trans.da = public/language/da/admin/settings/reputation.json +trans.en_US = public/language/en-US/admin/settings/reputation.json +trans.lv = public/language/lv/admin/settings/reputation.json +trans.pt_BR = public/language/pt-BR/admin/settings/reputation.json +trans.vi = public/language/vi/admin/settings/reputation.json +trans.gl = public/language/gl/admin/settings/reputation.json +trans.hu = public/language/hu/admin/settings/reputation.json +trans.hy = public/language/hy/admin/settings/reputation.json + +[o:nodebb:p:nodebb:r:admin-settings-social] +file_filter = public/language//admin/settings/social.json +source_file = public/language/en-GB/admin/settings/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/settings/social.json +trans.sc = public/language/sc/admin/settings/social.json +trans.sv = public/language/sv/admin/settings/social.json +trans.rw = public/language/rw/admin/settings/social.json +trans.bn = public/language/bn/admin/settings/social.json +trans.hr = public/language/hr/admin/settings/social.json +trans.id = public/language/id/admin/settings/social.json +trans.pt_PT = public/language/pt-PT/admin/settings/social.json +trans.de = public/language/de/admin/settings/social.json +trans.hu = public/language/hu/admin/settings/social.json +trans.pt_BR = public/language/pt-BR/admin/settings/social.json +trans.ja = public/language/ja/admin/settings/social.json +trans.sq_AL = public/language/sq-AL/admin/settings/social.json +trans.zh_TW = public/language/zh-TW/admin/settings/social.json +trans.cs = public/language/cs/admin/settings/social.json +trans.en_US = public/language/en-US/admin/settings/social.json +trans.fi = public/language/fi/admin/settings/social.json +trans.nb = public/language/nb/admin/settings/social.json +trans.pl = public/language/pl/admin/settings/social.json +trans.th = public/language/th/admin/settings/social.json +trans.bg = public/language/bg/admin/settings/social.json +trans.lt = public/language/lt/admin/settings/social.json +trans.lv = public/language/lv/admin/settings/social.json +trans.ko = public/language/ko/admin/settings/social.json +trans.es = public/language/es/admin/settings/social.json +trans.fr = public/language/fr/admin/settings/social.json +trans.he = public/language/he/admin/settings/social.json +trans.fa_IR = public/language/fa-IR/admin/settings/social.json +trans.hy = public/language/hy/admin/settings/social.json +trans.ms = public/language/ms/admin/settings/social.json +trans.ru = public/language/ru/admin/settings/social.json +trans.sk = public/language/sk/admin/settings/social.json +trans.ar = public/language/ar/admin/settings/social.json +trans.el = public/language/el/admin/settings/social.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/social.json +trans.uk = public/language/uk/admin/settings/social.json +trans.sl = public/language/sl/admin/settings/social.json +trans.sr = public/language/sr/admin/settings/social.json +trans.tr = public/language/tr/admin/settings/social.json +trans.it = public/language/it/admin/settings/social.json +trans.ro = public/language/ro/admin/settings/social.json +trans.vi = public/language/vi/admin/settings/social.json +trans.zh_CN = public/language/zh-CN/admin/settings/social.json +trans.da = public/language/da/admin/settings/social.json +trans.et = public/language/et/admin/settings/social.json +trans.gl = public/language/gl/admin/settings/social.json + +[o:nodebb:p:nodebb:r:admin-settings-sockets] +file_filter = public/language//admin/settings/sockets.json +source_file = public/language/en-GB/admin/settings/sockets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/sockets.json +trans.en_US = public/language/en-US/admin/settings/sockets.json +trans.gl = public/language/gl/admin/settings/sockets.json +trans.ja = public/language/ja/admin/settings/sockets.json +trans.pt_BR = public/language/pt-BR/admin/settings/sockets.json +trans.sc = public/language/sc/admin/settings/sockets.json +trans.tr = public/language/tr/admin/settings/sockets.json +trans.da = public/language/da/admin/settings/sockets.json +trans.lv = public/language/lv/admin/settings/sockets.json +trans.sk = public/language/sk/admin/settings/sockets.json +trans.sr = public/language/sr/admin/settings/sockets.json +trans.vi = public/language/vi/admin/settings/sockets.json +trans.ar = public/language/ar/admin/settings/sockets.json +trans.cs = public/language/cs/admin/settings/sockets.json +trans.de = public/language/de/admin/settings/sockets.json +trans.hy = public/language/hy/admin/settings/sockets.json +trans.id = public/language/id/admin/settings/sockets.json +trans.rw = public/language/rw/admin/settings/sockets.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sockets.json +trans.fi = public/language/fi/admin/settings/sockets.json +trans.it = public/language/it/admin/settings/sockets.json +trans.ro = public/language/ro/admin/settings/sockets.json +trans.nb = public/language/nb/admin/settings/sockets.json +trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json +trans.bg = public/language/bg/admin/settings/sockets.json +trans.bn = public/language/bn/admin/settings/sockets.json +trans.es = public/language/es/admin/settings/sockets.json +trans.fr = public/language/fr/admin/settings/sockets.json +trans.hr = public/language/hr/admin/settings/sockets.json +trans.ko = public/language/ko/admin/settings/sockets.json +trans.zh_TW = public/language/zh-TW/admin/settings/sockets.json +trans.el = public/language/el/admin/settings/sockets.json +trans.he = public/language/he/admin/settings/sockets.json +trans.ms = public/language/ms/admin/settings/sockets.json +trans.sv = public/language/sv/admin/settings/sockets.json +trans.et = public/language/et/admin/settings/sockets.json +trans.pl = public/language/pl/admin/settings/sockets.json +trans.ru = public/language/ru/admin/settings/sockets.json +trans.zh_CN = public/language/zh-CN/admin/settings/sockets.json +trans.th = public/language/th/admin/settings/sockets.json +trans.fa_IR = public/language/fa-IR/admin/settings/sockets.json +trans.hu = public/language/hu/admin/settings/sockets.json +trans.lt = public/language/lt/admin/settings/sockets.json +trans.nl = public/language/nl/admin/settings/sockets.json +trans.pt_PT = public/language/pt-PT/admin/settings/sockets.json +trans.sl = public/language/sl/admin/settings/sockets.json + +[o:nodebb:p:nodebb:r:admin-settings-sounds] +file_filter = public/language//admin/settings/sounds.json +source_file = public/language/en-GB/admin/settings/sounds.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/sounds.json +trans.de = public/language/de/admin/settings/sounds.json +trans.el = public/language/el/admin/settings/sounds.json +trans.es = public/language/es/admin/settings/sounds.json +trans.he = public/language/he/admin/settings/sounds.json +trans.it = public/language/it/admin/settings/sounds.json +trans.pt_BR = public/language/pt-BR/admin/settings/sounds.json +trans.sq_AL = public/language/sq-AL/admin/settings/sounds.json +trans.vi = public/language/vi/admin/settings/sounds.json +trans.hr = public/language/hr/admin/settings/sounds.json +trans.hu = public/language/hu/admin/settings/sounds.json +trans.bg = public/language/bg/admin/settings/sounds.json +trans.ja = public/language/ja/admin/settings/sounds.json +trans.lt = public/language/lt/admin/settings/sounds.json +trans.nl = public/language/nl/admin/settings/sounds.json +trans.ru = public/language/ru/admin/settings/sounds.json +trans.cs = public/language/cs/admin/settings/sounds.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sounds.json +trans.fa_IR = public/language/fa-IR/admin/settings/sounds.json +trans.fi = public/language/fi/admin/settings/sounds.json +trans.nb = public/language/nb/admin/settings/sounds.json +trans.th = public/language/th/admin/settings/sounds.json +trans.ar = public/language/ar/admin/settings/sounds.json +trans.da = public/language/da/admin/settings/sounds.json +trans.gl = public/language/gl/admin/settings/sounds.json +trans.lv = public/language/lv/admin/settings/sounds.json +trans.ms = public/language/ms/admin/settings/sounds.json +trans.sc = public/language/sc/admin/settings/sounds.json +trans.sr = public/language/sr/admin/settings/sounds.json +trans.bn = public/language/bn/admin/settings/sounds.json +trans.en_US = public/language/en-US/admin/settings/sounds.json +trans.hy = public/language/hy/admin/settings/sounds.json +trans.sk = public/language/sk/admin/settings/sounds.json +trans.sl = public/language/sl/admin/settings/sounds.json +trans.uk = public/language/uk/admin/settings/sounds.json +trans.zh_CN = public/language/zh-CN/admin/settings/sounds.json +trans.et = public/language/et/admin/settings/sounds.json +trans.fr = public/language/fr/admin/settings/sounds.json +trans.ko = public/language/ko/admin/settings/sounds.json +trans.ro = public/language/ro/admin/settings/sounds.json +trans.zh_TW = public/language/zh-TW/admin/settings/sounds.json +trans.id = public/language/id/admin/settings/sounds.json +trans.pl = public/language/pl/admin/settings/sounds.json +trans.pt_PT = public/language/pt-PT/admin/settings/sounds.json +trans.rw = public/language/rw/admin/settings/sounds.json +trans.tr = public/language/tr/admin/settings/sounds.json + +[o:nodebb:p:nodebb:r:admin-settings-tags] +file_filter = public/language//admin/settings/tags.json +source_file = public/language/en-GB/admin/settings/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/settings/tags.json +trans.cs = public/language/cs/admin/settings/tags.json +trans.de = public/language/de/admin/settings/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/tags.json +trans.lv = public/language/lv/admin/settings/tags.json +trans.th = public/language/th/admin/settings/tags.json +trans.zh_TW = public/language/zh-TW/admin/settings/tags.json +trans.hu = public/language/hu/admin/settings/tags.json +trans.it = public/language/it/admin/settings/tags.json +trans.pt_BR = public/language/pt-BR/admin/settings/tags.json +trans.rw = public/language/rw/admin/settings/tags.json +trans.sk = public/language/sk/admin/settings/tags.json +trans.sv = public/language/sv/admin/settings/tags.json +trans.ar = public/language/ar/admin/settings/tags.json +trans.gl = public/language/gl/admin/settings/tags.json +trans.ja = public/language/ja/admin/settings/tags.json +trans.lt = public/language/lt/admin/settings/tags.json +trans.sc = public/language/sc/admin/settings/tags.json +trans.zh_CN = public/language/zh-CN/admin/settings/tags.json +trans.ro = public/language/ro/admin/settings/tags.json +trans.bn = public/language/bn/admin/settings/tags.json +trans.hr = public/language/hr/admin/settings/tags.json +trans.ko = public/language/ko/admin/settings/tags.json +trans.nb = public/language/nb/admin/settings/tags.json +trans.el = public/language/el/admin/settings/tags.json +trans.et = public/language/et/admin/settings/tags.json +trans.he = public/language/he/admin/settings/tags.json +trans.ms = public/language/ms/admin/settings/tags.json +trans.nl = public/language/nl/admin/settings/tags.json +trans.sl = public/language/sl/admin/settings/tags.json +trans.tr = public/language/tr/admin/settings/tags.json +trans.es = public/language/es/admin/settings/tags.json +trans.fr = public/language/fr/admin/settings/tags.json +trans.hy = public/language/hy/admin/settings/tags.json +trans.pl = public/language/pl/admin/settings/tags.json +trans.ru = public/language/ru/admin/settings/tags.json +trans.sq_AL = public/language/sq-AL/admin/settings/tags.json +trans.sr = public/language/sr/admin/settings/tags.json +trans.uk = public/language/uk/admin/settings/tags.json +trans.da = public/language/da/admin/settings/tags.json +trans.en_US = public/language/en-US/admin/settings/tags.json +trans.fa_IR = public/language/fa-IR/admin/settings/tags.json +trans.fi = public/language/fi/admin/settings/tags.json +trans.id = public/language/id/admin/settings/tags.json +trans.pt_PT = public/language/pt-PT/admin/settings/tags.json +trans.vi = public/language/vi/admin/settings/tags.json + +[o:nodebb:p:nodebb:r:admin-settings-uploads] +file_filter = public/language//admin/settings/uploads.json +source_file = public/language/en-GB/admin/settings/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/uploads.json +trans.it = public/language/it/admin/settings/uploads.json +trans.ko = public/language/ko/admin/settings/uploads.json +trans.sk = public/language/sk/admin/settings/uploads.json +trans.sq_AL = public/language/sq-AL/admin/settings/uploads.json +trans.fa_IR = public/language/fa-IR/admin/settings/uploads.json +trans.he = public/language/he/admin/settings/uploads.json +trans.ja = public/language/ja/admin/settings/uploads.json +trans.nb = public/language/nb/admin/settings/uploads.json +trans.nl = public/language/nl/admin/settings/uploads.json +trans.zh_TW = public/language/zh-TW/admin/settings/uploads.json +trans.ro = public/language/ro/admin/settings/uploads.json +trans.sl = public/language/sl/admin/settings/uploads.json +trans.da = public/language/da/admin/settings/uploads.json +trans.es = public/language/es/admin/settings/uploads.json +trans.et = public/language/et/admin/settings/uploads.json +trans.hr = public/language/hr/admin/settings/uploads.json +trans.id = public/language/id/admin/settings/uploads.json +trans.pt_BR = public/language/pt-BR/admin/settings/uploads.json +trans.uk = public/language/uk/admin/settings/uploads.json +trans.vi = public/language/vi/admin/settings/uploads.json +trans.th = public/language/th/admin/settings/uploads.json +trans.bg = public/language/bg/admin/settings/uploads.json +trans.el = public/language/el/admin/settings/uploads.json +trans.hu = public/language/hu/admin/settings/uploads.json +trans.lv = public/language/lv/admin/settings/uploads.json +trans.ms = public/language/ms/admin/settings/uploads.json +trans.pt_PT = public/language/pt-PT/admin/settings/uploads.json +trans.lt = public/language/lt/admin/settings/uploads.json +trans.bn = public/language/bn/admin/settings/uploads.json +trans.cs = public/language/cs/admin/settings/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/uploads.json +trans.fi = public/language/fi/admin/settings/uploads.json +trans.fr = public/language/fr/admin/settings/uploads.json +trans.hy = public/language/hy/admin/settings/uploads.json +trans.gl = public/language/gl/admin/settings/uploads.json +trans.ru = public/language/ru/admin/settings/uploads.json +trans.sr = public/language/sr/admin/settings/uploads.json +trans.sv = public/language/sv/admin/settings/uploads.json +trans.zh_CN = public/language/zh-CN/admin/settings/uploads.json +trans.de = public/language/de/admin/settings/uploads.json +trans.en_US = public/language/en-US/admin/settings/uploads.json +trans.pl = public/language/pl/admin/settings/uploads.json +trans.rw = public/language/rw/admin/settings/uploads.json +trans.sc = public/language/sc/admin/settings/uploads.json +trans.tr = public/language/tr/admin/settings/uploads.json + +[o:nodebb:p:nodebb:r:admin-settings-user] +file_filter = public/language//admin/settings/user.json +source_file = public/language/en-GB/admin/settings/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/admin/settings/user.json +trans.el = public/language/el/admin/settings/user.json +trans.he = public/language/he/admin/settings/user.json +trans.ro = public/language/ro/admin/settings/user.json +trans.sq_AL = public/language/sq-AL/admin/settings/user.json +trans.gl = public/language/gl/admin/settings/user.json +trans.hu = public/language/hu/admin/settings/user.json +trans.nb = public/language/nb/admin/settings/user.json +trans.sv = public/language/sv/admin/settings/user.json +trans.uk = public/language/uk/admin/settings/user.json +trans.cs = public/language/cs/admin/settings/user.json +trans.en_US = public/language/en-US/admin/settings/user.json +trans.fa_IR = public/language/fa-IR/admin/settings/user.json +trans.fi = public/language/fi/admin/settings/user.json +trans.lv = public/language/lv/admin/settings/user.json +trans.ms = public/language/ms/admin/settings/user.json +trans.pl = public/language/pl/admin/settings/user.json +trans.ru = public/language/ru/admin/settings/user.json +trans.zh_CN = public/language/zh-CN/admin/settings/user.json +trans.hr = public/language/hr/admin/settings/user.json +trans.id = public/language/id/admin/settings/user.json +trans.it = public/language/it/admin/settings/user.json +trans.sk = public/language/sk/admin/settings/user.json +trans.sl = public/language/sl/admin/settings/user.json +trans.sr = public/language/sr/admin/settings/user.json +trans.tr = public/language/tr/admin/settings/user.json +trans.vi = public/language/vi/admin/settings/user.json +trans.de = public/language/de/admin/settings/user.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/user.json +trans.hy = public/language/hy/admin/settings/user.json +trans.pt_PT = public/language/pt-PT/admin/settings/user.json +trans.th = public/language/th/admin/settings/user.json +trans.zh_TW = public/language/zh-TW/admin/settings/user.json +trans.bn = public/language/bn/admin/settings/user.json +trans.nl = public/language/nl/admin/settings/user.json +trans.pt_BR = public/language/pt-BR/admin/settings/user.json +trans.rw = public/language/rw/admin/settings/user.json +trans.bg = public/language/bg/admin/settings/user.json +trans.fr = public/language/fr/admin/settings/user.json +trans.ko = public/language/ko/admin/settings/user.json +trans.ar = public/language/ar/admin/settings/user.json +trans.es = public/language/es/admin/settings/user.json +trans.et = public/language/et/admin/settings/user.json +trans.ja = public/language/ja/admin/settings/user.json +trans.lt = public/language/lt/admin/settings/user.json +trans.sc = public/language/sc/admin/settings/user.json + +[o:nodebb:p:nodebb:r:admin-settings-web-crawler] +file_filter = public/language//admin/settings/web-crawler.json +source_file = public/language/en-GB/admin/settings/web-crawler.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/web-crawler.json +trans.es = public/language/es/admin/settings/web-crawler.json +trans.fr = public/language/fr/admin/settings/web-crawler.json +trans.ko = public/language/ko/admin/settings/web-crawler.json +trans.pl = public/language/pl/admin/settings/web-crawler.json +trans.tr = public/language/tr/admin/settings/web-crawler.json +trans.uk = public/language/uk/admin/settings/web-crawler.json +trans.bg = public/language/bg/admin/settings/web-crawler.json +trans.el = public/language/el/admin/settings/web-crawler.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/web-crawler.json +trans.fa_IR = public/language/fa-IR/admin/settings/web-crawler.json +trans.ms = public/language/ms/admin/settings/web-crawler.json +trans.th = public/language/th/admin/settings/web-crawler.json +trans.gl = public/language/gl/admin/settings/web-crawler.json +trans.id = public/language/id/admin/settings/web-crawler.json +trans.sk = public/language/sk/admin/settings/web-crawler.json +trans.rw = public/language/rw/admin/settings/web-crawler.json +trans.da = public/language/da/admin/settings/web-crawler.json +trans.hr = public/language/hr/admin/settings/web-crawler.json +trans.hu = public/language/hu/admin/settings/web-crawler.json +trans.ja = public/language/ja/admin/settings/web-crawler.json +trans.lv = public/language/lv/admin/settings/web-crawler.json +trans.nl = public/language/nl/admin/settings/web-crawler.json +trans.pt_BR = public/language/pt-BR/admin/settings/web-crawler.json +trans.vi = public/language/vi/admin/settings/web-crawler.json +trans.en_US = public/language/en-US/admin/settings/web-crawler.json +trans.et = public/language/et/admin/settings/web-crawler.json +trans.fi = public/language/fi/admin/settings/web-crawler.json +trans.sq_AL = public/language/sq-AL/admin/settings/web-crawler.json +trans.sv = public/language/sv/admin/settings/web-crawler.json +trans.ar = public/language/ar/admin/settings/web-crawler.json +trans.de = public/language/de/admin/settings/web-crawler.json +trans.hy = public/language/hy/admin/settings/web-crawler.json +trans.nb = public/language/nb/admin/settings/web-crawler.json +trans.ro = public/language/ro/admin/settings/web-crawler.json +trans.sr = public/language/sr/admin/settings/web-crawler.json +trans.zh_TW = public/language/zh-TW/admin/settings/web-crawler.json +trans.he = public/language/he/admin/settings/web-crawler.json +trans.it = public/language/it/admin/settings/web-crawler.json +trans.lt = public/language/lt/admin/settings/web-crawler.json +trans.ru = public/language/ru/admin/settings/web-crawler.json +trans.sl = public/language/sl/admin/settings/web-crawler.json +trans.zh_CN = public/language/zh-CN/admin/settings/web-crawler.json +trans.bn = public/language/bn/admin/settings/web-crawler.json +trans.pt_PT = public/language/pt-PT/admin/settings/web-crawler.json +trans.sc = public/language/sc/admin/settings/web-crawler.json + +[o:nodebb:p:nodebb:r:themes-harmony] +file_filter = public/language//themes/harmony.json +source_file = public/language/en-GB/themes/harmony.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/harmony.json +trans.bg = public/language/bg/themes/harmony.json +trans.hr = public/language/hr/themes/harmony.json +trans.hy = public/language/hy/themes/harmony.json +trans.sk = public/language/sk/themes/harmony.json +trans.sl = public/language/sl/themes/harmony.json +trans.sq_AL = public/language/sq-AL/themes/harmony.json +trans.sv = public/language/sv/themes/harmony.json +trans.vi = public/language/vi/themes/harmony.json +trans.da = public/language/da/themes/harmony.json +trans.en_US = public/language/en-US/themes/harmony.json +trans.gl = public/language/gl/themes/harmony.json +trans.ko = public/language/ko/themes/harmony.json +trans.lt = public/language/lt/themes/harmony.json +trans.pt_BR = public/language/pt-BR/themes/harmony.json +trans.hu = public/language/hu/themes/harmony.json +trans.lv = public/language/lv/themes/harmony.json +trans.ro = public/language/ro/themes/harmony.json +trans.ru = public/language/ru/themes/harmony.json +trans.sr = public/language/sr/themes/harmony.json +trans.bn = public/language/bn/themes/harmony.json +trans.he = public/language/he/themes/harmony.json +trans.nl = public/language/nl/themes/harmony.json +trans.sc = public/language/sc/themes/harmony.json +trans.zh_CN = public/language/zh-CN/themes/harmony.json +trans.fi = public/language/fi/themes/harmony.json +trans.ja = public/language/ja/themes/harmony.json +trans.nb = public/language/nb/themes/harmony.json +trans.pl = public/language/pl/themes/harmony.json +trans.zh_TW = public/language/zh-TW/themes/harmony.json +trans.ar = public/language/ar/themes/harmony.json +trans.cs = public/language/cs/themes/harmony.json +trans.fa_IR = public/language/fa-IR/themes/harmony.json +trans.ms = public/language/ms/themes/harmony.json +trans.pt_PT = public/language/pt-PT/themes/harmony.json +trans.tr = public/language/tr/themes/harmony.json +trans.en@pirate = public/language/en-x-pirate/themes/harmony.json +trans.fr = public/language/fr/themes/harmony.json +trans.id = public/language/id/themes/harmony.json +trans.uk = public/language/uk/themes/harmony.json +trans.de = public/language/de/themes/harmony.json +trans.el = public/language/el/themes/harmony.json +trans.es = public/language/es/themes/harmony.json +trans.et = public/language/et/themes/harmony.json +trans.it = public/language/it/themes/harmony.json +trans.rw = public/language/rw/themes/harmony.json + +[o:nodebb:p:nodebb:r:themes-persona] +file_filter = public/language//themes/persona.json +source_file = public/language/en-GB/themes/persona.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/persona.json +trans.bg = public/language/bg/themes/persona.json +trans.hr = public/language/hr/themes/persona.json +trans.hy = public/language/hy/themes/persona.json +trans.sk = public/language/sk/themes/persona.json +trans.sl = public/language/sl/themes/persona.json +trans.sq_AL = public/language/sq-AL/themes/persona.json +trans.sv = public/language/sv/themes/persona.json +trans.vi = public/language/vi/themes/persona.json +trans.da = public/language/da/themes/persona.json +trans.en_US = public/language/en-US/themes/persona.json +trans.gl = public/language/gl/themes/persona.json +trans.ko = public/language/ko/themes/persona.json +trans.lt = public/language/lt/themes/persona.json +trans.pt_BR = public/language/pt-BR/themes/persona.json +trans.hu = public/language/hu/themes/persona.json +trans.lv = public/language/lv/themes/persona.json +trans.ro = public/language/ro/themes/persona.json +trans.ru = public/language/ru/themes/persona.json +trans.sr = public/language/sr/themes/persona.json +trans.bn = public/language/bn/themes/persona.json +trans.he = public/language/he/themes/persona.json +trans.nl = public/language/nl/themes/persona.json +trans.sc = public/language/sc/themes/persona.json +trans.zh_CN = public/language/zh-CN/themes/persona.json +trans.fi = public/language/fi/themes/persona.json +trans.ja = public/language/ja/themes/persona.json +trans.nb = public/language/nb/themes/persona.json +trans.pl = public/language/pl/themes/persona.json +trans.zh_TW = public/language/zh-TW/themes/persona.json +trans.ar = public/language/ar/themes/persona.json +trans.cs = public/language/cs/themes/persona.json +trans.fa_IR = public/language/fa-IR/themes/persona.json +trans.ms = public/language/ms/themes/persona.json +trans.pt_PT = public/language/pt-PT/themes/persona.json +trans.tr = public/language/tr/themes/persona.json +trans.en@pirate = public/language/en-x-pirate/themes/persona.json +trans.fr = public/language/fr/themes/persona.json +trans.id = public/language/id/themes/persona.json +trans.uk = public/language/uk/themes/persona.json +trans.de = public/language/de/themes/persona.json +trans.el = public/language/el/themes/persona.json +trans.es = public/language/es/themes/persona.json +trans.et = public/language/et/themes/persona.json +trans.it = public/language/it/themes/persona.json +trans.rw = public/language/rw/themes/persona.json + + +[o:nodebb:p:nodebb:r:aria] +file_filter = public/language//aria.json +source_file = public/language/en-GB/aria.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/aria.json +trans.bg = public/language/bg/aria.json +trans.hr = public/language/hr/aria.json +trans.hy = public/language/hy/aria.json +trans.sk = public/language/sk/aria.json +trans.sl = public/language/sl/aria.json +trans.sq_AL = public/language/sq-AL/aria.json +trans.sv = public/language/sv/aria.json +trans.vi = public/language/vi/aria.json +trans.da = public/language/da/aria.json +trans.en_US = public/language/en-US/aria.json +trans.gl = public/language/gl/aria.json +trans.ko = public/language/ko/aria.json +trans.lt = public/language/lt/aria.json +trans.pt_BR = public/language/pt-BR/aria.json +trans.hu = public/language/hu/aria.json +trans.lv = public/language/lv/aria.json +trans.ro = public/language/ro/aria.json +trans.ru = public/language/ru/aria.json +trans.sr = public/language/sr/aria.json +trans.bn = public/language/bn/aria.json +trans.he = public/language/he/aria.json +trans.nl = public/language/nl/aria.json +trans.sc = public/language/sc/aria.json +trans.zh_CN = public/language/zh-CN/aria.json +trans.fi = public/language/fi/aria.json +trans.ja = public/language/ja/aria.json +trans.nb = public/language/nb/aria.json +trans.pl = public/language/pl/aria.json +trans.zh_TW = public/language/zh-TW/aria.json +trans.ar = public/language/ar/aria.json +trans.cs = public/language/cs/aria.json +trans.fa_IR = public/language/fa-IR/aria.json +trans.ms = public/language/ms/aria.json +trans.pt_PT = public/language/pt-PT/aria.json +trans.tr = public/language/tr/aria.json +trans.en@pirate = public/language/en-x-pirate/aria.json +trans.fr = public/language/fr/aria.json +trans.id = public/language/id/aria.json +trans.uk = public/language/uk/aria.json +trans.de = public/language/de/aria.json +trans.el = public/language/el/aria.json +trans.es = public/language/es/aria.json +trans.et = public/language/et/aria.json +trans.it = public/language/it/aria.json +trans.rw = public/language/rw/aria.json + +[o:nodebb:p:nodebb:r:category] +file_filter = public/language//category.json +source_file = public/language/en-GB/category.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/category.json +trans.bg = public/language/bg/category.json +trans.hr = public/language/hr/category.json +trans.hy = public/language/hy/category.json +trans.sk = public/language/sk/category.json +trans.sl = public/language/sl/category.json +trans.sq_AL = public/language/sq-AL/category.json +trans.sv = public/language/sv/category.json +trans.vi = public/language/vi/category.json +trans.da = public/language/da/category.json +trans.en_US = public/language/en-US/category.json +trans.gl = public/language/gl/category.json +trans.ko = public/language/ko/category.json +trans.lt = public/language/lt/category.json +trans.pt_BR = public/language/pt-BR/category.json +trans.hu = public/language/hu/category.json +trans.lv = public/language/lv/category.json +trans.ro = public/language/ro/category.json +trans.ru = public/language/ru/category.json +trans.sr = public/language/sr/category.json +trans.bn = public/language/bn/category.json +trans.he = public/language/he/category.json +trans.nl = public/language/nl/category.json +trans.sc = public/language/sc/category.json +trans.zh_CN = public/language/zh-CN/category.json +trans.fi = public/language/fi/category.json +trans.ja = public/language/ja/category.json +trans.nb = public/language/nb/category.json +trans.pl = public/language/pl/category.json +trans.zh_TW = public/language/zh-TW/category.json +trans.ar = public/language/ar/category.json +trans.cs = public/language/cs/category.json +trans.fa_IR = public/language/fa-IR/category.json +trans.ms = public/language/ms/category.json +trans.pt_PT = public/language/pt-PT/category.json +trans.tr = public/language/tr/category.json +trans.en@pirate = public/language/en-x-pirate/category.json +trans.fr = public/language/fr/category.json +trans.id = public/language/id/category.json +trans.uk = public/language/uk/category.json +trans.de = public/language/de/category.json +trans.el = public/language/el/category.json +trans.es = public/language/es/category.json +trans.et = public/language/et/category.json +trans.it = public/language/it/category.json +trans.rw = public/language/rw/category.json + +[o:nodebb:p:nodebb:r:email] +file_filter = public/language//email.json +source_file = public/language/en-GB/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sk = public/language/sk/email.json +trans.zh_TW = public/language/zh-TW/email.json +trans.el = public/language/el/email.json +trans.fa_IR = public/language/fa-IR/email.json +trans.fi = public/language/fi/email.json +trans.id = public/language/id/email.json +trans.ko = public/language/ko/email.json +trans.en@pirate = public/language/en-x-pirate/email.json +trans.it = public/language/it/email.json +trans.lv = public/language/lv/email.json +trans.uk = public/language/uk/email.json +trans.zh_CN = public/language/zh-CN/email.json +trans.sv = public/language/sv/email.json +trans.bn = public/language/bn/email.json +trans.cs = public/language/cs/email.json +trans.ms = public/language/ms/email.json +trans.ro = public/language/ro/email.json +trans.ru = public/language/ru/email.json +trans.de = public/language/de/email.json +trans.hu = public/language/hu/email.json +trans.hy = public/language/hy/email.json +trans.sl = public/language/sl/email.json +trans.th = public/language/th/email.json +trans.ar = public/language/ar/email.json +trans.es = public/language/es/email.json +trans.gl = public/language/gl/email.json +trans.he = public/language/he/email.json +trans.ja = public/language/ja/email.json +trans.bg = public/language/bg/email.json +trans.et = public/language/et/email.json +trans.hr = public/language/hr/email.json +trans.pl = public/language/pl/email.json +trans.da = public/language/da/email.json +trans.fr = public/language/fr/email.json +trans.lt = public/language/lt/email.json +trans.pt_PT = public/language/pt-PT/email.json +trans.sc = public/language/sc/email.json +trans.sq_AL = public/language/sq-AL/email.json +trans.sr = public/language/sr/email.json +trans.tr = public/language/tr/email.json +trans.en_US = public/language/en-US/email.json +trans.nb = public/language/nb/email.json +trans.nl = public/language/nl/email.json +trans.pt_BR = public/language/pt-BR/email.json +trans.rw = public/language/rw/email.json +trans.vi = public/language/vi/email.json + +[o:nodebb:p:nodebb:r:error] +file_filter = public/language//error.json +source_file = public/language/en-GB/error.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/error.json +trans.ko = public/language/ko/error.json +trans.lv = public/language/lv/error.json +trans.sk = public/language/sk/error.json +trans.cs = public/language/cs/error.json +trans.it = public/language/it/error.json +trans.nl = public/language/nl/error.json +trans.sc = public/language/sc/error.json +trans.sl = public/language/sl/error.json +trans.sq_AL = public/language/sq-AL/error.json +trans.tr = public/language/tr/error.json +trans.hu = public/language/hu/error.json +trans.fr = public/language/fr/error.json +trans.hy = public/language/hy/error.json +trans.zh_CN = public/language/zh-CN/error.json +trans.ar = public/language/ar/error.json +trans.et = public/language/et/error.json +trans.fi = public/language/fi/error.json +trans.he = public/language/he/error.json +trans.hr = public/language/hr/error.json +trans.lt = public/language/lt/error.json +trans.ru = public/language/ru/error.json +trans.rw = public/language/rw/error.json +trans.bn = public/language/bn/error.json +trans.vi = public/language/vi/error.json +trans.fa_IR = public/language/fa-IR/error.json +trans.gl = public/language/gl/error.json +trans.nb = public/language/nb/error.json +trans.pl = public/language/pl/error.json +trans.ro = public/language/ro/error.json +trans.uk = public/language/uk/error.json +trans.es = public/language/es/error.json +trans.el = public/language/el/error.json +trans.en@pirate = public/language/en-x-pirate/error.json +trans.en_US = public/language/en-US/error.json +trans.ms = public/language/ms/error.json +trans.pt_PT = public/language/pt-PT/error.json +trans.bg = public/language/bg/error.json +trans.pt_BR = public/language/pt-BR/error.json +trans.sv = public/language/sv/error.json +trans.zh_TW = public/language/zh-TW/error.json +trans.da = public/language/da/error.json +trans.ja = public/language/ja/error.json +trans.sr = public/language/sr/error.json +trans.th = public/language/th/error.json +trans.id = public/language/id/error.json + +[o:nodebb:p:nodebb:r:flags] +file_filter = public/language//flags.json +source_file = public/language/en-GB/flags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/flags.json +trans.ru = public/language/ru/flags.json +trans.sc = public/language/sc/flags.json +trans.fi = public/language/fi/flags.json +trans.hr = public/language/hr/flags.json +trans.lv = public/language/lv/flags.json +trans.ms = public/language/ms/flags.json +trans.ja = public/language/ja/flags.json +trans.nl = public/language/nl/flags.json +trans.pt_PT = public/language/pt-PT/flags.json +trans.th = public/language/th/flags.json +trans.el = public/language/el/flags.json +trans.en_US = public/language/en-US/flags.json +trans.gl = public/language/gl/flags.json +trans.hy = public/language/hy/flags.json +trans.vi = public/language/vi/flags.json +trans.rw = public/language/rw/flags.json +trans.sr = public/language/sr/flags.json +trans.zh_TW = public/language/zh-TW/flags.json +trans.sq_AL = public/language/sq-AL/flags.json +trans.sv = public/language/sv/flags.json +trans.fa_IR = public/language/fa-IR/flags.json +trans.id = public/language/id/flags.json +trans.ko = public/language/ko/flags.json +trans.pl = public/language/pl/flags.json +trans.de = public/language/de/flags.json +trans.en@pirate = public/language/en-x-pirate/flags.json +trans.he = public/language/he/flags.json +trans.zh_CN = public/language/zh-CN/flags.json +trans.lt = public/language/lt/flags.json +trans.da = public/language/da/flags.json +trans.es = public/language/es/flags.json +trans.et = public/language/et/flags.json +trans.hu = public/language/hu/flags.json +trans.tr = public/language/tr/flags.json +trans.bn = public/language/bn/flags.json +trans.it = public/language/it/flags.json +trans.pt_BR = public/language/pt-BR/flags.json +trans.sk = public/language/sk/flags.json +trans.ro = public/language/ro/flags.json +trans.sl = public/language/sl/flags.json +trans.ar = public/language/ar/flags.json +trans.bg = public/language/bg/flags.json +trans.cs = public/language/cs/flags.json +trans.fr = public/language/fr/flags.json + +[o:nodebb:p:nodebb:r:global] +file_filter = public/language//global.json +source_file = public/language/en-GB/global.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/global.json +trans.pl = public/language/pl/global.json +trans.ru = public/language/ru/global.json +trans.bn = public/language/bn/global.json +trans.fr = public/language/fr/global.json +trans.hr = public/language/hr/global.json +trans.hy = public/language/hy/global.json +trans.lv = public/language/lv/global.json +trans.fa_IR = public/language/fa-IR/global.json +trans.sl = public/language/sl/global.json +trans.uk = public/language/uk/global.json +trans.sc = public/language/sc/global.json +trans.sv = public/language/sv/global.json +trans.th = public/language/th/global.json +trans.zh_TW = public/language/zh-TW/global.json +trans.hu = public/language/hu/global.json +trans.sk = public/language/sk/global.json +trans.sr = public/language/sr/global.json +trans.tr = public/language/tr/global.json +trans.nb = public/language/nb/global.json +trans.pt_BR = public/language/pt-BR/global.json +trans.pt_PT = public/language/pt-PT/global.json +trans.bg = public/language/bg/global.json +trans.da = public/language/da/global.json +trans.fi = public/language/fi/global.json +trans.id = public/language/id/global.json +trans.lt = public/language/lt/global.json +trans.ro = public/language/ro/global.json +trans.de = public/language/de/global.json +trans.el = public/language/el/global.json +trans.vi = public/language/vi/global.json +trans.zh_CN = public/language/zh-CN/global.json +trans.en_US = public/language/en-US/global.json +trans.et = public/language/et/global.json +trans.gl = public/language/gl/global.json +trans.he = public/language/he/global.json +trans.ko = public/language/ko/global.json +trans.ja = public/language/ja/global.json +trans.nl = public/language/nl/global.json +trans.rw = public/language/rw/global.json +trans.ar = public/language/ar/global.json +trans.cs = public/language/cs/global.json +trans.en@pirate = public/language/en-x-pirate/global.json +trans.es = public/language/es/global.json +trans.it = public/language/it/global.json +trans.sq_AL = public/language/sq-AL/global.json + +[o:nodebb:p:nodebb:r:groups] +file_filter = public/language//groups.json +source_file = public/language/en-GB/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/groups.json +trans.de = public/language/de/groups.json +trans.es = public/language/es/groups.json +trans.sc = public/language/sc/groups.json +trans.sr = public/language/sr/groups.json +trans.da = public/language/da/groups.json +trans.en@pirate = public/language/en-x-pirate/groups.json +trans.hy = public/language/hy/groups.json +trans.pt_PT = public/language/pt-PT/groups.json +trans.ms = public/language/ms/groups.json +trans.nb = public/language/nb/groups.json +trans.ro = public/language/ro/groups.json +trans.vi = public/language/vi/groups.json +trans.fa_IR = public/language/fa-IR/groups.json +trans.he = public/language/he/groups.json +trans.hr = public/language/hr/groups.json +trans.lv = public/language/lv/groups.json +trans.bg = public/language/bg/groups.json +trans.bn = public/language/bn/groups.json +trans.ja = public/language/ja/groups.json +trans.tr = public/language/tr/groups.json +trans.zh_CN = public/language/zh-CN/groups.json +trans.ar = public/language/ar/groups.json +trans.cs = public/language/cs/groups.json +trans.it = public/language/it/groups.json +trans.sk = public/language/sk/groups.json +trans.fi = public/language/fi/groups.json +trans.fr = public/language/fr/groups.json +trans.sq_AL = public/language/sq-AL/groups.json +trans.th = public/language/th/groups.json +trans.id = public/language/id/groups.json +trans.sl = public/language/sl/groups.json +trans.sv = public/language/sv/groups.json +trans.uk = public/language/uk/groups.json +trans.el = public/language/el/groups.json +trans.et = public/language/et/groups.json +trans.gl = public/language/gl/groups.json +trans.hu = public/language/hu/groups.json +trans.pl = public/language/pl/groups.json +trans.pt_BR = public/language/pt-BR/groups.json +trans.ru = public/language/ru/groups.json +trans.rw = public/language/rw/groups.json +trans.en_US = public/language/en-US/groups.json +trans.ko = public/language/ko/groups.json +trans.lt = public/language/lt/groups.json +trans.nl = public/language/nl/groups.json + +[o:nodebb:p:nodebb:r:ip-blacklist] +file_filter = public/language//ip-blacklist.json +source_file = public/language/en-GB/ip-blacklist.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/ip-blacklist.json +trans.et = public/language/et/ip-blacklist.json +trans.fi = public/language/fi/ip-blacklist.json +trans.hr = public/language/hr/ip-blacklist.json +trans.hu = public/language/hu/ip-blacklist.json +trans.ru = public/language/ru/ip-blacklist.json +trans.sk = public/language/sk/ip-blacklist.json +trans.sq_AL = public/language/sq-AL/ip-blacklist.json +trans.zh_CN = public/language/zh-CN/ip-blacklist.json +trans.da = public/language/da/ip-blacklist.json +trans.en@pirate = public/language/en-x-pirate/ip-blacklist.json +trans.he = public/language/he/ip-blacklist.json +trans.hy = public/language/hy/ip-blacklist.json +trans.lv = public/language/lv/ip-blacklist.json +trans.pt_BR = public/language/pt-BR/ip-blacklist.json +trans.sc = public/language/sc/ip-blacklist.json +trans.ar = public/language/ar/ip-blacklist.json +trans.fa_IR = public/language/fa-IR/ip-blacklist.json +trans.fr = public/language/fr/ip-blacklist.json +trans.gl = public/language/gl/ip-blacklist.json +trans.nb = public/language/nb/ip-blacklist.json +trans.sv = public/language/sv/ip-blacklist.json +trans.th = public/language/th/ip-blacklist.json +trans.bn = public/language/bn/ip-blacklist.json +trans.en_US = public/language/en-US/ip-blacklist.json +trans.ja = public/language/ja/ip-blacklist.json +trans.ms = public/language/ms/ip-blacklist.json +trans.nl = public/language/nl/ip-blacklist.json +trans.pt_PT = public/language/pt-PT/ip-blacklist.json +trans.ro = public/language/ro/ip-blacklist.json +trans.es = public/language/es/ip-blacklist.json +trans.id = public/language/id/ip-blacklist.json +trans.it = public/language/it/ip-blacklist.json +trans.uk = public/language/uk/ip-blacklist.json +trans.vi = public/language/vi/ip-blacklist.json +trans.zh_TW = public/language/zh-TW/ip-blacklist.json +trans.bg = public/language/bg/ip-blacklist.json +trans.de = public/language/de/ip-blacklist.json +trans.sl = public/language/sl/ip-blacklist.json +trans.pl = public/language/pl/ip-blacklist.json +trans.rw = public/language/rw/ip-blacklist.json +trans.cs = public/language/cs/ip-blacklist.json +trans.el = public/language/el/ip-blacklist.json +trans.ko = public/language/ko/ip-blacklist.json +trans.lt = public/language/lt/ip-blacklist.json +trans.tr = public/language/tr/ip-blacklist.json + +[o:nodebb:p:nodebb:r:language-1] +file_filter = public/language//language.json +source_file = public/language/en-GB/language.json +source_lang = en_GB +type = KEYVALUEJSON +trans.lt = public/language/lt/language.json +trans.vi = public/language/vi/language.json +trans.sr = public/language/sr/language.json +trans.tr = public/language/tr/language.json +trans.uk = public/language/uk/language.json +trans.bg = public/language/bg/language.json +trans.da = public/language/da/language.json +trans.en@pirate = public/language/en-x-pirate/language.json +trans.hr = public/language/hr/language.json +trans.rw = public/language/rw/language.json +trans.en_US = public/language/en-US/language.json +trans.et = public/language/et/language.json +trans.ja = public/language/ja/language.json +trans.nb = public/language/nb/language.json +trans.sk = public/language/sk/language.json +trans.el = public/language/el/language.json +trans.es = public/language/es/language.json +trans.fi = public/language/fi/language.json +trans.it = public/language/it/language.json +trans.pt_PT = public/language/pt-PT/language.json +trans.ro = public/language/ro/language.json +trans.th = public/language/th/language.json +trans.ar = public/language/ar/language.json +trans.bn = public/language/bn/language.json +trans.de = public/language/de/language.json +trans.ko = public/language/ko/language.json +trans.pl = public/language/pl/language.json +trans.gl = public/language/gl/language.json +trans.sq_AL = public/language/sq-AL/language.json +trans.zh_TW = public/language/zh-TW/language.json +trans.nl = public/language/nl/language.json +trans.ru = public/language/ru/language.json +trans.sc = public/language/sc/language.json +trans.cs = public/language/cs/language.json +trans.fr = public/language/fr/language.json +trans.he = public/language/he/language.json +trans.id = public/language/id/language.json +trans.lv = public/language/lv/language.json +trans.sl = public/language/sl/language.json +trans.sv = public/language/sv/language.json +trans.zh_CN = public/language/zh-CN/language.json +trans.fa_IR = public/language/fa-IR/language.json +trans.hu = public/language/hu/language.json +trans.hy = public/language/hy/language.json +trans.ms = public/language/ms/language.json +trans.pt_BR = public/language/pt-BR/language.json + +[o:nodebb:p:nodebb:r:login] +file_filter = public/language//login.json +source_file = public/language/en-GB/login.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/login.json +trans.cs = public/language/cs/login.json +trans.el = public/language/el/login.json +trans.ja = public/language/ja/login.json +trans.pt_BR = public/language/pt-BR/login.json +trans.ro = public/language/ro/login.json +trans.zh_TW = public/language/zh-TW/login.json +trans.bg = public/language/bg/login.json +trans.pt_PT = public/language/pt-PT/login.json +trans.sr = public/language/sr/login.json +trans.vi = public/language/vi/login.json +trans.zh_CN = public/language/zh-CN/login.json +trans.pl = public/language/pl/login.json +trans.gl = public/language/gl/login.json +trans.ko = public/language/ko/login.json +trans.lv = public/language/lv/login.json +trans.sl = public/language/sl/login.json +trans.sq_AL = public/language/sq-AL/login.json +trans.sv = public/language/sv/login.json +trans.tr = public/language/tr/login.json +trans.es = public/language/es/login.json +trans.sk = public/language/sk/login.json +trans.uk = public/language/uk/login.json +trans.it = public/language/it/login.json +trans.da = public/language/da/login.json +trans.fa_IR = public/language/fa-IR/login.json +trans.fi = public/language/fi/login.json +trans.fr = public/language/fr/login.json +trans.he = public/language/he/login.json +trans.hr = public/language/hr/login.json +trans.ar = public/language/ar/login.json +trans.en_US = public/language/en-US/login.json +trans.hu = public/language/hu/login.json +trans.ms = public/language/ms/login.json +trans.en@pirate = public/language/en-x-pirate/login.json +trans.hy = public/language/hy/login.json +trans.id = public/language/id/login.json +trans.nb = public/language/nb/login.json +trans.ru = public/language/ru/login.json +trans.rw = public/language/rw/login.json +trans.th = public/language/th/login.json +trans.et = public/language/et/login.json +trans.lt = public/language/lt/login.json +trans.nl = public/language/nl/login.json +trans.sc = public/language/sc/login.json +trans.de = public/language/de/login.json + +[o:nodebb:p:nodebb:r:modules] +file_filter = public/language//modules.json +source_file = public/language/en-GB/modules.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sl = public/language/sl/modules.json +trans.sq_AL = public/language/sq-AL/modules.json +trans.da = public/language/da/modules.json +trans.et = public/language/et/modules.json +trans.fr = public/language/fr/modules.json +trans.lt = public/language/lt/modules.json +trans.ms = public/language/ms/modules.json +trans.sk = public/language/sk/modules.json +trans.vi = public/language/vi/modules.json +trans.fa_IR = public/language/fa-IR/modules.json +trans.hr = public/language/hr/modules.json +trans.lv = public/language/lv/modules.json +trans.nb = public/language/nb/modules.json +trans.ro = public/language/ro/modules.json +trans.sv = public/language/sv/modules.json +trans.en@pirate = public/language/en-x-pirate/modules.json +trans.tr = public/language/tr/modules.json +trans.cs = public/language/cs/modules.json +trans.de = public/language/de/modules.json +trans.fi = public/language/fi/modules.json +trans.he = public/language/he/modules.json +trans.hy = public/language/hy/modules.json +trans.sr = public/language/sr/modules.json +trans.el = public/language/el/modules.json +trans.hu = public/language/hu/modules.json +trans.ko = public/language/ko/modules.json +trans.es = public/language/es/modules.json +trans.id = public/language/id/modules.json +trans.nl = public/language/nl/modules.json +trans.sc = public/language/sc/modules.json +trans.th = public/language/th/modules.json +trans.zh_TW = public/language/zh-TW/modules.json +trans.bg = public/language/bg/modules.json +trans.bn = public/language/bn/modules.json +trans.en_US = public/language/en-US/modules.json +trans.it = public/language/it/modules.json +trans.pl = public/language/pl/modules.json +trans.uk = public/language/uk/modules.json +trans.rw = public/language/rw/modules.json +trans.zh_CN = public/language/zh-CN/modules.json +trans.ar = public/language/ar/modules.json +trans.gl = public/language/gl/modules.json +trans.ja = public/language/ja/modules.json +trans.pt_BR = public/language/pt-BR/modules.json +trans.pt_PT = public/language/pt-PT/modules.json +trans.ru = public/language/ru/modules.json + +[o:nodebb:p:nodebb:r:notifications] +file_filter = public/language//notifications.json +source_file = public/language/en-GB/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/notifications.json +trans.sq_AL = public/language/sq-AL/notifications.json +trans.el = public/language/el/notifications.json +trans.en_US = public/language/en-US/notifications.json +trans.ja = public/language/ja/notifications.json +trans.pl = public/language/pl/notifications.json +trans.sr = public/language/sr/notifications.json +trans.th = public/language/th/notifications.json +trans.tr = public/language/tr/notifications.json +trans.zh_CN = public/language/zh-CN/notifications.json +trans.cs = public/language/cs/notifications.json +trans.de = public/language/de/notifications.json +trans.fa_IR = public/language/fa-IR/notifications.json +trans.sl = public/language/sl/notifications.json +trans.sc = public/language/sc/notifications.json +trans.uk = public/language/uk/notifications.json +trans.bn = public/language/bn/notifications.json +trans.fi = public/language/fi/notifications.json +trans.lt = public/language/lt/notifications.json +trans.pt_PT = public/language/pt-PT/notifications.json +trans.es = public/language/es/notifications.json +trans.gl = public/language/gl/notifications.json +trans.sv = public/language/sv/notifications.json +trans.zh_TW = public/language/zh-TW/notifications.json +trans.pt_BR = public/language/pt-BR/notifications.json +trans.rw = public/language/rw/notifications.json +trans.lv = public/language/lv/notifications.json +trans.bg = public/language/bg/notifications.json +trans.he = public/language/he/notifications.json +trans.hu = public/language/hu/notifications.json +trans.it = public/language/it/notifications.json +trans.nl = public/language/nl/notifications.json +trans.ro = public/language/ro/notifications.json +trans.sk = public/language/sk/notifications.json +trans.vi = public/language/vi/notifications.json +trans.et = public/language/et/notifications.json +trans.hy = public/language/hy/notifications.json +trans.ko = public/language/ko/notifications.json +trans.ms = public/language/ms/notifications.json +trans.hr = public/language/hr/notifications.json +trans.id = public/language/id/notifications.json +trans.nb = public/language/nb/notifications.json +trans.ar = public/language/ar/notifications.json +trans.da = public/language/da/notifications.json +trans.en@pirate = public/language/en-x-pirate/notifications.json +trans.fr = public/language/fr/notifications.json + +[o:nodebb:p:nodebb:r:pages] +file_filter = public/language//pages.json +source_file = public/language/en-GB/pages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.he = public/language/he/pages.json +trans.nb = public/language/nb/pages.json +trans.sv = public/language/sv/pages.json +trans.pt_BR = public/language/pt-BR/pages.json +trans.tr = public/language/tr/pages.json +trans.zh_TW = public/language/zh-TW/pages.json +trans.bn = public/language/bn/pages.json +trans.gl = public/language/gl/pages.json +trans.hr = public/language/hr/pages.json +trans.id = public/language/id/pages.json +trans.lt = public/language/lt/pages.json +trans.zh_CN = public/language/zh-CN/pages.json +trans.bg = public/language/bg/pages.json +trans.et = public/language/et/pages.json +trans.it = public/language/it/pages.json +trans.ro = public/language/ro/pages.json +trans.sl = public/language/sl/pages.json +trans.sk = public/language/sk/pages.json +trans.sr = public/language/sr/pages.json +trans.uk = public/language/uk/pages.json +trans.de = public/language/de/pages.json +trans.en@pirate = public/language/en-x-pirate/pages.json +trans.en_US = public/language/en-US/pages.json +trans.pt_PT = public/language/pt-PT/pages.json +trans.rw = public/language/rw/pages.json +trans.th = public/language/th/pages.json +trans.vi = public/language/vi/pages.json +trans.hu = public/language/hu/pages.json +trans.hy = public/language/hy/pages.json +trans.nl = public/language/nl/pages.json +trans.ru = public/language/ru/pages.json +trans.sc = public/language/sc/pages.json +trans.cs = public/language/cs/pages.json +trans.fi = public/language/fi/pages.json +trans.ko = public/language/ko/pages.json +trans.lv = public/language/lv/pages.json +trans.sq_AL = public/language/sq-AL/pages.json +trans.ar = public/language/ar/pages.json +trans.da = public/language/da/pages.json +trans.es = public/language/es/pages.json +trans.pl = public/language/pl/pages.json +trans.el = public/language/el/pages.json +trans.fa_IR = public/language/fa-IR/pages.json +trans.fr = public/language/fr/pages.json +trans.ja = public/language/ja/pages.json +trans.ms = public/language/ms/pages.json + +[o:nodebb:p:nodebb:r:post-queue] +file_filter = public/language//post-queue.json +source_file = public/language/en-GB/post-queue.json +source_lang = en_GB +type = KEYVALUEJSON +trans.it = public/language/it/post-queue.json +trans.ko = public/language/ko/post-queue.json +trans.lv = public/language/lv/post-queue.json +trans.nl = public/language/nl/post-queue.json +trans.rw = public/language/rw/post-queue.json +trans.da = public/language/da/post-queue.json +trans.de = public/language/de/post-queue.json +trans.el = public/language/el/post-queue.json +trans.sk = public/language/sk/post-queue.json +trans.sc = public/language/sc/post-queue.json +trans.sr = public/language/sr/post-queue.json +trans.tr = public/language/tr/post-queue.json +trans.uk = public/language/uk/post-queue.json +trans.ja = public/language/ja/post-queue.json +trans.ms = public/language/ms/post-queue.json +trans.ru = public/language/ru/post-queue.json +trans.fr = public/language/fr/post-queue.json +trans.hu = public/language/hu/post-queue.json +trans.lt = public/language/lt/post-queue.json +trans.pl = public/language/pl/post-queue.json +trans.ro = public/language/ro/post-queue.json +trans.bn = public/language/bn/post-queue.json +trans.en@pirate = public/language/en-x-pirate/post-queue.json +trans.fa_IR = public/language/fa-IR/post-queue.json +trans.sl = public/language/sl/post-queue.json +trans.vi = public/language/vi/post-queue.json +trans.zh_CN = public/language/zh-CN/post-queue.json +trans.id = public/language/id/post-queue.json +trans.en_US = public/language/en-US/post-queue.json +trans.sq_AL = public/language/sq-AL/post-queue.json +trans.sv = public/language/sv/post-queue.json +trans.zh_TW = public/language/zh-TW/post-queue.json +trans.ar = public/language/ar/post-queue.json +trans.bg = public/language/bg/post-queue.json +trans.cs = public/language/cs/post-queue.json +trans.hr = public/language/hr/post-queue.json +trans.pt_BR = public/language/pt-BR/post-queue.json +trans.th = public/language/th/post-queue.json +trans.es = public/language/es/post-queue.json +trans.et = public/language/et/post-queue.json +trans.gl = public/language/gl/post-queue.json +trans.hy = public/language/hy/post-queue.json +trans.pt_PT = public/language/pt-PT/post-queue.json +trans.fi = public/language/fi/post-queue.json +trans.he = public/language/he/post-queue.json +trans.nb = public/language/nb/post-queue.json + +[o:nodebb:p:nodebb:r:recent] +file_filter = public/language//recent.json +source_file = public/language/en-GB/recent.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/recent.json +trans.sr = public/language/sr/recent.json +trans.sk = public/language/sk/recent.json +trans.uk = public/language/uk/recent.json +trans.bg = public/language/bg/recent.json +trans.cs = public/language/cs/recent.json +trans.da = public/language/da/recent.json +trans.hy = public/language/hy/recent.json +trans.id = public/language/id/recent.json +trans.lv = public/language/lv/recent.json +trans.ar = public/language/ar/recent.json +trans.de = public/language/de/recent.json +trans.es = public/language/es/recent.json +trans.fa_IR = public/language/fa-IR/recent.json +trans.gl = public/language/gl/recent.json +trans.hu = public/language/hu/recent.json +trans.lt = public/language/lt/recent.json +trans.pt_BR = public/language/pt-BR/recent.json +trans.ru = public/language/ru/recent.json +trans.vi = public/language/vi/recent.json +trans.rw = public/language/rw/recent.json +trans.sl = public/language/sl/recent.json +trans.el = public/language/el/recent.json +trans.en_US = public/language/en-US/recent.json +trans.he = public/language/he/recent.json +trans.hr = public/language/hr/recent.json +trans.ro = public/language/ro/recent.json +trans.tr = public/language/tr/recent.json +trans.zh_CN = public/language/zh-CN/recent.json +trans.bn = public/language/bn/recent.json +trans.en@pirate = public/language/en-x-pirate/recent.json +trans.ja = public/language/ja/recent.json +trans.nb = public/language/nb/recent.json +trans.nl = public/language/nl/recent.json +trans.sv = public/language/sv/recent.json +trans.th = public/language/th/recent.json +trans.fr = public/language/fr/recent.json +trans.it = public/language/it/recent.json +trans.ms = public/language/ms/recent.json +trans.pl = public/language/pl/recent.json +trans.pt_PT = public/language/pt-PT/recent.json +trans.et = public/language/et/recent.json +trans.fi = public/language/fi/recent.json +trans.ko = public/language/ko/recent.json +trans.sc = public/language/sc/recent.json +trans.zh_TW = public/language/zh-TW/recent.json + +[o:nodebb:p:nodebb:r:register] +file_filter = public/language//register.json +source_file = public/language/en-GB/register.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/register.json +trans.tr = public/language/tr/register.json +trans.et = public/language/et/register.json +trans.he = public/language/he/register.json +trans.lv = public/language/lv/register.json +trans.nl = public/language/nl/register.json +trans.sc = public/language/sc/register.json +trans.en@pirate = public/language/en-x-pirate/register.json +trans.es = public/language/es/register.json +trans.pl = public/language/pl/register.json +trans.sl = public/language/sl/register.json +trans.uk = public/language/uk/register.json +trans.pt_PT = public/language/pt-PT/register.json +trans.ar = public/language/ar/register.json +trans.bg = public/language/bg/register.json +trans.de = public/language/de/register.json +trans.hr = public/language/hr/register.json +trans.nb = public/language/nb/register.json +trans.gl = public/language/gl/register.json +trans.sk = public/language/sk/register.json +trans.hy = public/language/hy/register.json +trans.ko = public/language/ko/register.json +trans.ms = public/language/ms/register.json +trans.ro = public/language/ro/register.json +trans.rw = public/language/rw/register.json +trans.zh_CN = public/language/zh-CN/register.json +trans.fi = public/language/fi/register.json +trans.it = public/language/it/register.json +trans.ru = public/language/ru/register.json +trans.sr = public/language/sr/register.json +trans.vi = public/language/vi/register.json +trans.sv = public/language/sv/register.json +trans.zh_TW = public/language/zh-TW/register.json +trans.bn = public/language/bn/register.json +trans.cs = public/language/cs/register.json +trans.fa_IR = public/language/fa-IR/register.json +trans.hu = public/language/hu/register.json +trans.lt = public/language/lt/register.json +trans.ja = public/language/ja/register.json +trans.pt_BR = public/language/pt-BR/register.json +trans.th = public/language/th/register.json +trans.da = public/language/da/register.json +trans.el = public/language/el/register.json +trans.en_US = public/language/en-US/register.json +trans.fr = public/language/fr/register.json +trans.id = public/language/id/register.json + +[o:nodebb:p:nodebb:r:reset_password] +file_filter = public/language//reset_password.json +source_file = public/language/en-GB/reset_password.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/reset_password.json +trans.fr = public/language/fr/reset_password.json +trans.hr = public/language/hr/reset_password.json +trans.hy = public/language/hy/reset_password.json +trans.ja = public/language/ja/reset_password.json +trans.pt_PT = public/language/pt-PT/reset_password.json +trans.zh_CN = public/language/zh-CN/reset_password.json +trans.sv = public/language/sv/reset_password.json +trans.de = public/language/de/reset_password.json +trans.fa_IR = public/language/fa-IR/reset_password.json +trans.gl = public/language/gl/reset_password.json +trans.hu = public/language/hu/reset_password.json +trans.id = public/language/id/reset_password.json +trans.rw = public/language/rw/reset_password.json +trans.sc = public/language/sc/reset_password.json +trans.vi = public/language/vi/reset_password.json +trans.bn = public/language/bn/reset_password.json +trans.he = public/language/he/reset_password.json +trans.ro = public/language/ro/reset_password.json +trans.sq_AL = public/language/sq-AL/reset_password.json +trans.ar = public/language/ar/reset_password.json +trans.cs = public/language/cs/reset_password.json +trans.ko = public/language/ko/reset_password.json +trans.ms = public/language/ms/reset_password.json +trans.pt_BR = public/language/pt-BR/reset_password.json +trans.sr = public/language/sr/reset_password.json +trans.tr = public/language/tr/reset_password.json +trans.ru = public/language/ru/reset_password.json +trans.zh_TW = public/language/zh-TW/reset_password.json +trans.da = public/language/da/reset_password.json +trans.en@pirate = public/language/en-x-pirate/reset_password.json +trans.en_US = public/language/en-US/reset_password.json +trans.lt = public/language/lt/reset_password.json +trans.lv = public/language/lv/reset_password.json +trans.nb = public/language/nb/reset_password.json +trans.sk = public/language/sk/reset_password.json +trans.el = public/language/el/reset_password.json +trans.es = public/language/es/reset_password.json +trans.et = public/language/et/reset_password.json +trans.uk = public/language/uk/reset_password.json +trans.fi = public/language/fi/reset_password.json +trans.it = public/language/it/reset_password.json +trans.nl = public/language/nl/reset_password.json +trans.pl = public/language/pl/reset_password.json +trans.sl = public/language/sl/reset_password.json +trans.th = public/language/th/reset_password.json + +[o:nodebb:p:nodebb:r:rewards] +file_filter = public/language//rewards.json +source_file = public/language/en-GB/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/rewards.json +trans.fr = public/language/fr/rewards.json +trans.hr = public/language/hr/rewards.json +trans.hy = public/language/hy/rewards.json +trans.ja = public/language/ja/rewards.json +trans.pt_PT = public/language/pt-PT/rewards.json +trans.zh_CN = public/language/zh-CN/rewards.json +trans.sv = public/language/sv/rewards.json +trans.de = public/language/de/rewards.json +trans.fa_IR = public/language/fa-IR/rewards.json +trans.gl = public/language/gl/rewards.json +trans.hu = public/language/hu/rewards.json +trans.id = public/language/id/rewards.json +trans.rw = public/language/rw/rewards.json +trans.sc = public/language/sc/rewards.json +trans.vi = public/language/vi/rewards.json +trans.bn = public/language/bn/rewards.json +trans.he = public/language/he/rewards.json +trans.ro = public/language/ro/rewards.json +trans.sq_AL = public/language/sq-AL/rewards.json +trans.ar = public/language/ar/rewards.json +trans.cs = public/language/cs/rewards.json +trans.ko = public/language/ko/rewards.json +trans.ms = public/language/ms/rewards.json +trans.pt_BR = public/language/pt-BR/rewards.json +trans.sr = public/language/sr/rewards.json +trans.tr = public/language/tr/rewards.json +trans.ru = public/language/ru/rewards.json +trans.zh_TW = public/language/zh-TW/rewards.json +trans.da = public/language/da/rewards.json +trans.en@pirate = public/language/en-x-pirate/rewards.json +trans.en_US = public/language/en-US/rewards.json +trans.lt = public/language/lt/rewards.json +trans.lv = public/language/lv/rewards.json +trans.nb = public/language/nb/rewards.json +trans.sk = public/language/sk/rewards.json +trans.el = public/language/el/rewards.json +trans.es = public/language/es/rewards.json +trans.et = public/language/et/rewards.json +trans.uk = public/language/uk/rewards.json +trans.fi = public/language/fi/rewards.json +trans.it = public/language/it/rewards.json +trans.nl = public/language/nl/rewards.json +trans.pl = public/language/pl/rewards.json +trans.sl = public/language/sl/rewards.json +trans.th = public/language/th/rewards.json + +[o:nodebb:p:nodebb:r:search] +file_filter = public/language//search.json +source_file = public/language/en-GB/search.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/search.json +trans.en_US = public/language/en-US/search.json +trans.ms = public/language/ms/search.json +trans.hr = public/language/hr/search.json +trans.hu = public/language/hu/search.json +trans.id = public/language/id/search.json +trans.bg = public/language/bg/search.json +trans.de = public/language/de/search.json +trans.en@pirate = public/language/en-x-pirate/search.json +trans.fa_IR = public/language/fa-IR/search.json +trans.fi = public/language/fi/search.json +trans.sc = public/language/sc/search.json +trans.sk = public/language/sk/search.json +trans.sl = public/language/sl/search.json +trans.sq_AL = public/language/sq-AL/search.json +trans.sr = public/language/sr/search.json +trans.bn = public/language/bn/search.json +trans.ja = public/language/ja/search.json +trans.ko = public/language/ko/search.json +trans.pl = public/language/pl/search.json +trans.ro = public/language/ro/search.json +trans.zh_TW = public/language/zh-TW/search.json +trans.cs = public/language/cs/search.json +trans.he = public/language/he/search.json +trans.nb = public/language/nb/search.json +trans.zh_CN = public/language/zh-CN/search.json +trans.lv = public/language/lv/search.json +trans.rw = public/language/rw/search.json +trans.sv = public/language/sv/search.json +trans.ru = public/language/ru/search.json +trans.tr = public/language/tr/search.json +trans.uk = public/language/uk/search.json +trans.el = public/language/el/search.json +trans.fr = public/language/fr/search.json +trans.gl = public/language/gl/search.json +trans.it = public/language/it/search.json +trans.pt_BR = public/language/pt-BR/search.json +trans.nl = public/language/nl/search.json +trans.pt_PT = public/language/pt-PT/search.json +trans.th = public/language/th/search.json +trans.vi = public/language/vi/search.json +trans.ar = public/language/ar/search.json +trans.es = public/language/es/search.json +trans.et = public/language/et/search.json +trans.hy = public/language/hy/search.json +trans.lt = public/language/lt/search.json + +[o:nodebb:p:nodebb:r:social] +file_filter = public/language//social.json +source_file = public/language/en-GB/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/social.json +trans.en_US = public/language/en-US/social.json +trans.ms = public/language/ms/social.json +trans.hr = public/language/hr/social.json +trans.hu = public/language/hu/social.json +trans.id = public/language/id/social.json +trans.bg = public/language/bg/social.json +trans.de = public/language/de/social.json +trans.en@pirate = public/language/en-x-pirate/social.json +trans.fa_IR = public/language/fa-IR/social.json +trans.fi = public/language/fi/social.json +trans.sc = public/language/sc/social.json +trans.sk = public/language/sk/social.json +trans.sl = public/language/sl/social.json +trans.sq_AL = public/language/sq-AL/social.json +trans.sr = public/language/sr/social.json +trans.bn = public/language/bn/social.json +trans.ja = public/language/ja/social.json +trans.ko = public/language/ko/social.json +trans.pl = public/language/pl/social.json +trans.ro = public/language/ro/social.json +trans.zh_TW = public/language/zh-TW/social.json +trans.cs = public/language/cs/social.json +trans.he = public/language/he/social.json +trans.nb = public/language/nb/social.json +trans.zh_CN = public/language/zh-CN/social.json +trans.lv = public/language/lv/social.json +trans.rw = public/language/rw/social.json +trans.sv = public/language/sv/social.json +trans.ru = public/language/ru/social.json +trans.tr = public/language/tr/social.json +trans.uk = public/language/uk/social.json +trans.el = public/language/el/social.json +trans.fr = public/language/fr/social.json +trans.gl = public/language/gl/social.json +trans.it = public/language/it/social.json +trans.pt_BR = public/language/pt-BR/social.json +trans.nl = public/language/nl/social.json +trans.pt_PT = public/language/pt-PT/social.json +trans.th = public/language/th/social.json +trans.vi = public/language/vi/social.json +trans.ar = public/language/ar/social.json +trans.es = public/language/es/social.json +trans.et = public/language/et/social.json +trans.hy = public/language/hy/social.json +trans.lt = public/language/lt/social.json + +[o:nodebb:p:nodebb:r:success] +file_filter = public/language//success.json +source_file = public/language/en-GB/success.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/success.json +trans.en@pirate = public/language/en-x-pirate/success.json +trans.es = public/language/es/success.json +trans.he = public/language/he/success.json +trans.hy = public/language/hy/success.json +trans.ja = public/language/ja/success.json +trans.ko = public/language/ko/success.json +trans.pl = public/language/pl/success.json +trans.de = public/language/de/success.json +trans.fa_IR = public/language/fa-IR/success.json +trans.ro = public/language/ro/success.json +trans.en_US = public/language/en-US/success.json +trans.lt = public/language/lt/success.json +trans.ru = public/language/ru/success.json +trans.sq_AL = public/language/sq-AL/success.json +trans.vi = public/language/vi/success.json +trans.bg = public/language/bg/success.json +trans.hr = public/language/hr/success.json +trans.ms = public/language/ms/success.json +trans.th = public/language/th/success.json +trans.zh_CN = public/language/zh-CN/success.json +trans.bn = public/language/bn/success.json +trans.fr = public/language/fr/success.json +trans.hu = public/language/hu/success.json +trans.id = public/language/id/success.json +trans.rw = public/language/rw/success.json +trans.sl = public/language/sl/success.json +trans.zh_TW = public/language/zh-TW/success.json +trans.ar = public/language/ar/success.json +trans.et = public/language/et/success.json +trans.it = public/language/it/success.json +trans.pt_PT = public/language/pt-PT/success.json +trans.sk = public/language/sk/success.json +trans.sv = public/language/sv/success.json +trans.tr = public/language/tr/success.json +trans.cs = public/language/cs/success.json +trans.fi = public/language/fi/success.json +trans.lv = public/language/lv/success.json +trans.nl = public/language/nl/success.json +trans.sc = public/language/sc/success.json +trans.da = public/language/da/success.json +trans.el = public/language/el/success.json +trans.gl = public/language/gl/success.json +trans.nb = public/language/nb/success.json +trans.sr = public/language/sr/success.json +trans.uk = public/language/uk/success.json + +[o:nodebb:p:nodebb:r:tags] +file_filter = public/language//tags.json +source_file = public/language/en-GB/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/tags.json +trans.nl = public/language/nl/tags.json +trans.pt_BR = public/language/pt-BR/tags.json +trans.uk = public/language/uk/tags.json +trans.el = public/language/el/tags.json +trans.fa_IR = public/language/fa-IR/tags.json +trans.he = public/language/he/tags.json +trans.hr = public/language/hr/tags.json +trans.th = public/language/th/tags.json +trans.sl = public/language/sl/tags.json +trans.bg = public/language/bg/tags.json +trans.en_US = public/language/en-US/tags.json +trans.fi = public/language/fi/tags.json +trans.rw = public/language/rw/tags.json +trans.sc = public/language/sc/tags.json +trans.tr = public/language/tr/tags.json +trans.vi = public/language/vi/tags.json +trans.ar = public/language/ar/tags.json +trans.de = public/language/de/tags.json +trans.es = public/language/es/tags.json +trans.pt_PT = public/language/pt-PT/tags.json +trans.ro = public/language/ro/tags.json +trans.ru = public/language/ru/tags.json +trans.sk = public/language/sk/tags.json +trans.sr = public/language/sr/tags.json +trans.cs = public/language/cs/tags.json +trans.da = public/language/da/tags.json +trans.en@pirate = public/language/en-x-pirate/tags.json +trans.hu = public/language/hu/tags.json +trans.ja = public/language/ja/tags.json +trans.zh_CN = public/language/zh-CN/tags.json +trans.gl = public/language/gl/tags.json +trans.lv = public/language/lv/tags.json +trans.ms = public/language/ms/tags.json +trans.nb = public/language/nb/tags.json +trans.sv = public/language/sv/tags.json +trans.sq_AL = public/language/sq-AL/tags.json +trans.zh_TW = public/language/zh-TW/tags.json +trans.bn = public/language/bn/tags.json +trans.fr = public/language/fr/tags.json +trans.id = public/language/id/tags.json +trans.ko = public/language/ko/tags.json +trans.lt = public/language/lt/tags.json +trans.hy = public/language/hy/tags.json +trans.it = public/language/it/tags.json +trans.pl = public/language/pl/tags.json + +[o:nodebb:p:nodebb:r:top] +file_filter = public/language//top.json +source_file = public/language/en-GB/top.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hy = public/language/hy/top.json +trans.el = public/language/el/top.json +trans.fa_IR = public/language/fa-IR/top.json +trans.nl = public/language/nl/top.json +trans.cs = public/language/cs/top.json +trans.en_US = public/language/en-US/top.json +trans.fi = public/language/fi/top.json +trans.he = public/language/he/top.json +trans.lt = public/language/lt/top.json +trans.ms = public/language/ms/top.json +trans.sk = public/language/sk/top.json +trans.vi = public/language/vi/top.json +trans.bg = public/language/bg/top.json +trans.de = public/language/de/top.json +trans.hu = public/language/hu/top.json +trans.pl = public/language/pl/top.json +trans.pt_PT = public/language/pt-PT/top.json +trans.sl = public/language/sl/top.json +trans.en@pirate = public/language/en-x-pirate/top.json +trans.gl = public/language/gl/top.json +trans.rw = public/language/rw/top.json +trans.sq_AL = public/language/sq-AL/top.json +trans.zh_CN = public/language/zh-CN/top.json +trans.ko = public/language/ko/top.json +trans.ro = public/language/ro/top.json +trans.pt_BR = public/language/pt-BR/top.json +trans.bn = public/language/bn/top.json +trans.fr = public/language/fr/top.json +trans.et = public/language/et/top.json +trans.id = public/language/id/top.json +trans.ja = public/language/ja/top.json +trans.lv = public/language/lv/top.json +trans.ru = public/language/ru/top.json +trans.sc = public/language/sc/top.json +trans.ar = public/language/ar/top.json +trans.da = public/language/da/top.json +trans.uk = public/language/uk/top.json +trans.sv = public/language/sv/top.json +trans.th = public/language/th/top.json +trans.it = public/language/it/top.json +trans.nb = public/language/nb/top.json +trans.sr = public/language/sr/top.json +trans.tr = public/language/tr/top.json +trans.zh_TW = public/language/zh-TW/top.json +trans.es = public/language/es/top.json +trans.hr = public/language/hr/top.json + +[o:nodebb:p:nodebb:r:topic] +file_filter = public/language//topic.json +source_file = public/language/en-GB/topic.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/topic.json +trans.hu = public/language/hu/topic.json +trans.nb = public/language/nb/topic.json +trans.nl = public/language/nl/topic.json +trans.sk = public/language/sk/topic.json +trans.ar = public/language/ar/topic.json +trans.es = public/language/es/topic.json +trans.fr = public/language/fr/topic.json +trans.lv = public/language/lv/topic.json +trans.ms = public/language/ms/topic.json +trans.pl = public/language/pl/topic.json +trans.pt_PT = public/language/pt-PT/topic.json +trans.uk = public/language/uk/topic.json +trans.ru = public/language/ru/topic.json +trans.bg = public/language/bg/topic.json +trans.en@pirate = public/language/en-x-pirate/topic.json +trans.fa_IR = public/language/fa-IR/topic.json +trans.fi = public/language/fi/topic.json +trans.he = public/language/he/topic.json +trans.ja = public/language/ja/topic.json +trans.pt_BR = public/language/pt-BR/topic.json +trans.tr = public/language/tr/topic.json +trans.zh_TW = public/language/zh-TW/topic.json +trans.bn = public/language/bn/topic.json +trans.da = public/language/da/topic.json +trans.en_US = public/language/en-US/topic.json +trans.hr = public/language/hr/topic.json +trans.it = public/language/it/topic.json +trans.ro = public/language/ro/topic.json +trans.cs = public/language/cs/topic.json +trans.de = public/language/de/topic.json +trans.sr = public/language/sr/topic.json +trans.sv = public/language/sv/topic.json +trans.vi = public/language/vi/topic.json +trans.ko = public/language/ko/topic.json +trans.sl = public/language/sl/topic.json +trans.el = public/language/el/topic.json +trans.gl = public/language/gl/topic.json +trans.id = public/language/id/topic.json +trans.lt = public/language/lt/topic.json +trans.sq_AL = public/language/sq-AL/topic.json +trans.th = public/language/th/topic.json +trans.hy = public/language/hy/topic.json +trans.rw = public/language/rw/topic.json +trans.sc = public/language/sc/topic.json +trans.zh_CN = public/language/zh-CN/topic.json + +[o:nodebb:p:nodebb:r:unread] +file_filter = public/language//unread.json +source_file = public/language/en-GB/unread.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/unread.json +trans.zh_TW = public/language/zh-TW/unread.json +trans.fa_IR = public/language/fa-IR/unread.json +trans.fr = public/language/fr/unread.json +trans.es = public/language/es/unread.json +trans.it = public/language/it/unread.json +trans.ms = public/language/ms/unread.json +trans.ro = public/language/ro/unread.json +trans.de = public/language/de/unread.json +trans.en@pirate = public/language/en-x-pirate/unread.json +trans.hr = public/language/hr/unread.json +trans.hu = public/language/hu/unread.json +trans.lt = public/language/lt/unread.json +trans.ru = public/language/ru/unread.json +trans.sl = public/language/sl/unread.json +trans.th = public/language/th/unread.json +trans.bg = public/language/bg/unread.json +trans.gl = public/language/gl/unread.json +trans.uk = public/language/uk/unread.json +trans.vi = public/language/vi/unread.json +trans.ja = public/language/ja/unread.json +trans.lv = public/language/lv/unread.json +trans.nl = public/language/nl/unread.json +trans.sr = public/language/sr/unread.json +trans.zh_CN = public/language/zh-CN/unread.json +trans.hy = public/language/hy/unread.json +trans.id = public/language/id/unread.json +trans.da = public/language/da/unread.json +trans.en_US = public/language/en-US/unread.json +trans.sk = public/language/sk/unread.json +trans.bn = public/language/bn/unread.json +trans.cs = public/language/cs/unread.json +trans.nb = public/language/nb/unread.json +trans.rw = public/language/rw/unread.json +trans.sq_AL = public/language/sq-AL/unread.json +trans.tr = public/language/tr/unread.json +trans.ar = public/language/ar/unread.json +trans.el = public/language/el/unread.json +trans.he = public/language/he/unread.json +trans.pt_PT = public/language/pt-PT/unread.json +trans.et = public/language/et/unread.json +trans.fi = public/language/fi/unread.json +trans.sc = public/language/sc/unread.json +trans.sv = public/language/sv/unread.json +trans.ko = public/language/ko/unread.json +trans.pl = public/language/pl/unread.json + +[o:nodebb:p:nodebb:r:uploads] +file_filter = public/language//uploads.json +source_file = public/language/en-GB/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/uploads.json +trans.cs = public/language/cs/uploads.json +trans.el = public/language/el/uploads.json +trans.hu = public/language/hu/uploads.json +trans.hy = public/language/hy/uploads.json +trans.it = public/language/it/uploads.json +trans.tr = public/language/tr/uploads.json +trans.uk = public/language/uk/uploads.json +trans.zh_CN = public/language/zh-CN/uploads.json +trans.en@pirate = public/language/en-x-pirate/uploads.json +trans.lt = public/language/lt/uploads.json +trans.lv = public/language/lv/uploads.json +trans.pt_BR = public/language/pt-BR/uploads.json +trans.sk = public/language/sk/uploads.json +trans.bn = public/language/bn/uploads.json +trans.hr = public/language/hr/uploads.json +trans.pl = public/language/pl/uploads.json +trans.zh_TW = public/language/zh-TW/uploads.json +trans.ru = public/language/ru/uploads.json +trans.sl = public/language/sl/uploads.json +trans.sq_AL = public/language/sq-AL/uploads.json +trans.et = public/language/et/uploads.json +trans.id = public/language/id/uploads.json +trans.ms = public/language/ms/uploads.json +trans.nb = public/language/nb/uploads.json +trans.pt_PT = public/language/pt-PT/uploads.json +trans.da = public/language/da/uploads.json +trans.es = public/language/es/uploads.json +trans.fr = public/language/fr/uploads.json +trans.th = public/language/th/uploads.json +trans.ar = public/language/ar/uploads.json +trans.en_US = public/language/en-US/uploads.json +trans.fi = public/language/fi/uploads.json +trans.gl = public/language/gl/uploads.json +trans.rw = public/language/rw/uploads.json +trans.ro = public/language/ro/uploads.json +trans.sr = public/language/sr/uploads.json +trans.vi = public/language/vi/uploads.json +trans.bg = public/language/bg/uploads.json +trans.de = public/language/de/uploads.json +trans.fa_IR = public/language/fa-IR/uploads.json +trans.ja = public/language/ja/uploads.json +trans.nl = public/language/nl/uploads.json +trans.he = public/language/he/uploads.json +trans.ko = public/language/ko/uploads.json +trans.sc = public/language/sc/uploads.json + +[o:nodebb:p:nodebb:r:user] +file_filter = public/language//user.json +source_file = public/language/en-GB/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/user.json +trans.sr = public/language/sr/user.json +trans.lt = public/language/lt/user.json +trans.da = public/language/da/user.json +trans.it = public/language/it/user.json +trans.ru = public/language/ru/user.json +trans.sk = public/language/sk/user.json +trans.ar = public/language/ar/user.json +trans.fr = public/language/fr/user.json +trans.he = public/language/he/user.json +trans.id = public/language/id/user.json +trans.es = public/language/es/user.json +trans.cs = public/language/cs/user.json +trans.et = public/language/et/user.json +trans.pt_BR = public/language/pt-BR/user.json +trans.zh_CN = public/language/zh-CN/user.json +trans.zh_TW = public/language/zh-TW/user.json +trans.bn = public/language/bn/user.json +trans.de = public/language/de/user.json +trans.el = public/language/el/user.json +trans.en@pirate = public/language/en-x-pirate/user.json +trans.en_US = public/language/en-US/user.json +trans.fa_IR = public/language/fa-IR/user.json +trans.gl = public/language/gl/user.json +trans.pl = public/language/pl/user.json +trans.bg = public/language/bg/user.json +trans.sv = public/language/sv/user.json +trans.th = public/language/th/user.json +trans.tr = public/language/tr/user.json +trans.uk = public/language/uk/user.json +trans.vi = public/language/vi/user.json +trans.fi = public/language/fi/user.json +trans.ko = public/language/ko/user.json +trans.lv = public/language/lv/user.json +trans.pt_PT = public/language/pt-PT/user.json +trans.rw = public/language/rw/user.json +trans.sl = public/language/sl/user.json +trans.sq_AL = public/language/sq-AL/user.json +trans.hr = public/language/hr/user.json +trans.hy = public/language/hy/user.json +trans.ja = public/language/ja/user.json +trans.nb = public/language/nb/user.json +trans.nl = public/language/nl/user.json +trans.ro = public/language/ro/user.json +trans.sc = public/language/sc/user.json +trans.hu = public/language/hu/user.json + +[o:nodebb:p:nodebb:r:users] +file_filter = public/language//users.json +source_file = public/language/en-GB/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/users.json +trans.de = public/language/de/users.json +trans.en@pirate = public/language/en-x-pirate/users.json +trans.ru = public/language/ru/users.json +trans.sc = public/language/sc/users.json +trans.en_US = public/language/en-US/users.json +trans.bn = public/language/bn/users.json +trans.hy = public/language/hy/users.json +trans.ro = public/language/ro/users.json +trans.fi = public/language/fi/users.json +trans.it = public/language/it/users.json +trans.pl = public/language/pl/users.json +trans.sk = public/language/sk/users.json +trans.ar = public/language/ar/users.json +trans.bg = public/language/bg/users.json +trans.el = public/language/el/users.json +trans.fa_IR = public/language/fa-IR/users.json +trans.sq_AL = public/language/sq-AL/users.json +trans.cs = public/language/cs/users.json +trans.he = public/language/he/users.json +trans.ja = public/language/ja/users.json +trans.ko = public/language/ko/users.json +trans.nb = public/language/nb/users.json +trans.pt_PT = public/language/pt-PT/users.json +trans.sr = public/language/sr/users.json +trans.zh_CN = public/language/zh-CN/users.json +trans.da = public/language/da/users.json +trans.id = public/language/id/users.json +trans.lt = public/language/lt/users.json +trans.ms = public/language/ms/users.json +trans.nl = public/language/nl/users.json +trans.rw = public/language/rw/users.json +trans.sl = public/language/sl/users.json +trans.th = public/language/th/users.json +trans.es = public/language/es/users.json +trans.fr = public/language/fr/users.json +trans.gl = public/language/gl/users.json +trans.hr = public/language/hr/users.json +trans.uk = public/language/uk/users.json +trans.vi = public/language/vi/users.json +trans.sv = public/language/sv/users.json +trans.tr = public/language/tr/users.json +trans.et = public/language/et/users.json +trans.hu = public/language/hu/users.json +trans.lv = public/language/lv/users.json +trans.pt_BR = public/language/pt-BR/users.json + diff --git a/.stryker-tmp/sandbox1963221/CHANGELOG.md b/.stryker-tmp/sandbox1963221/CHANGELOG.md new file mode 100644 index 0000000000..b66481805a --- /dev/null +++ b/.stryker-tmp/sandbox1963221/CHANGELOG.md @@ -0,0 +1,11657 @@ +#### v3.8.3 (2024-06-27) + +##### Chores + +* up themes (b15a5894) +* up harmony (3eb69c58) +* up harmony (b98333f3) +* up dbsearch (8a42db6f) +* use nodebb fork of spider-detector (3a1b39c9) +* up 2factor (142de2ca) +* incrementing version number - v3.8.2 (72d91251) +* update changelog for v3.8.2 (3854a434) +* incrementing version number - v3.8.1 (527326f7) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12656, only send required meta/link tags on /api calls (64875b3f) +* show links in post queue (500e3342) +* show connetion count on /info (60b4bc66) +* make upload scores descending for ordering (3ec44d64) +* add isACP to config, closes #12623 (c51b772f) +* allow passing min,max to sortedSetsCardSum (70b4a0e2) +* add voters/upvoters v3 routes (1aaa6cbb) + +##### Bug Fixes + +* wront topic events showing up in topic (54b01395) +* dont show self in suggested topics (381bbb04) +* #12645, use titleRaw like reply button (3332480c) +* update follower/following counts after removing uid from zsets (6f6cfb1a) +* suggested topic tid (351ee71d) +* #12633, don't check post index (6e3b012b) +* recent chat pagination, closes #12637 (f7c9b7ae) +* info.tpl table (6f79d305) +* closes #12632, dont load data twice (66adfa29) +* don't error if file required too early (4430de8c) +* require of spider-detector (be86d8ef) +* return early for guests/spiders (8d56e097) +* dont show error alert when user user mouse overs votes (6bbe3d1c) +* dont load chat rooms for quests/spiders (ca4a7751) +* set uid in case its spider(-1), closes #12621 (9d74539a) +* dont add spiders to online_guests room (bcd4997d) +* dont autoconnect for spiders, closes #12620 (b6671d16) +* #12614 fix html markup for widget containers (56b5850a) + +##### Other Changes + +* remove unused winston (69ce3bf0) +* remove unused (adb0566f) +* fix semicolons (795a0daa) +* fix whitespace (b4db2f7f) + +##### Performance Improvements + +* cleanup sessions every 30 seconds (26feb2bb) +* change revokeSession to work with an array of sids (172bc249) +* dont make db call if posts is already loaded client side (461e95d8) +* if sigs disabled dont filter uids (73241bd5) +* cache isAdmin, isGlobalMod checks (fedfce7b) +* get rid of async call in user load for expiring bans (023d52a3) +* call getIconbackgrounds once (1dadd16f) +* get rid of more calls, fix other profile pages #12632 (5c6a853e) + +##### Refactors + +* sessionUUID (#12658) (d6c946cf) +* move delete call (65a91ea5) +* use array.some (85b329af) +* add placeholders on demand (8f486b1b) +* move getTopicData call to avoid db calls when its not in cache (252d0df7) +* remove exits check (74dd2844) +* move als requires, move autoLocale to api/page routes (3356022a) +* move requires down (8eccdb48) +* posts cache to get rid of require in functions (236ac323) +* closes #12629, allow passing arrays to meta.userOrGroupExists (bad15643) +* suggest topics, use strings for tids (8ded36f2) +* #12623, add filter:config.get.admin (2d86552b) +* add sanity checks to sio (e98f1848) + +##### Tests + +* dont track session for api/v3 (#12660) (61e5293a) +* move set (9108c900) +* spec (41f1cd69) +* spec (b148d0fc) +* fix path replace (9ecee782) +* update openapi spec (9af3a2da) +* fix tests (c2f63090) +* return empty array on db.exists([]); (1b283ccc) +* fix test only set for spiders (7c2a3a6e) +* fix post test (42230300) + +#### v3.8.2 (2024-05-29) + +##### Chores + +* up composer (83facb7d) +* up harmony (17ea61a0) +* incrementing version number - v3.8.1 (527326f7) +* update changelog for v3.8.1 (5ef3e0f3) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* show ignored/watched topics in topic list, closes #10974 (29dbe92d) +* convert "All Votes Are Public" toggle to vote visibility (e0515080) + +##### Bug Fixes + +* wrong var for ignored (7969e62d) +* reduce docker image size again and speed up build (56ef2bdd) +* update thumb count when removing thumbs (6214336c) + +##### Refactors + +* render (2c0f8c91) + +#### v3.8.1 (2024-05-15) + +##### Chores + +* incrementing version number - v3.8.0 (e228a6eb) +* update changelog for v3.8.0 (2ef2750d) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* wrong mention version (1d1f499b) + +##### Tests + +* use node 20 (a40f54aa) +* remove node 18 (6bd22e53) + +#### v3.8.0 (2024-05-15) + +##### Chores + +* **deps:** + * update redis docker tag to v7.2.4 (#12272) (7a8116a4) + * update actions/cache action to v4 (#12563) (88ff9f9d) + * update postgres docker tag to v16.3 (#12560) (339f6267) + * update dependency sass-embedded to v1.77.1 (#12565) (07160062) + * update postgres docker tag to v16.3 (#12555) (b8a52863) + * update dependency sass-embedded to v1.77.0 (#12548) (0fa11561) + * update coverallsapp/github-action action to v2.3.0 (#12554) (b4023ff9) + * update dependency sass-embedded to v1.76.0 (#12542) (7ee42724) + * update commitlint monorepo to v19.3.0 (#12526) (dad57e04) + * update commitlint monorepo to v19.2.2 (#12515) (97519ca4) + * update dependency smtp-server to v3.13.4 (#12516) (4c468b5c) + * update dependency sass-embedded to v1.75.0 (#12499) (a2229e71) + * update dependency sass-embedded to v1.74.1 (#12468) (97a649e3) + * update dependency mocha to v10.4.0 (#12445) (449c0fcd) + * update dependency @commitlint/cli to v19.2.1 (#12420) (dc19c840) + * update dependency @commitlint/cli to v19.2.0 (#12412) (41212e8f) + * update dependency sass-embedded to v1.72.0 (#12406) (6d62e592) + * update commitlint monorepo to v19.1.0 (#12403) (3d095a6b) +* up themes (1e3a321d) +* incrementing version number - v3.7.5 (6882894d) +* update changelog for v3.7.5 (febeede5) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* up harmony (80a1a0e0) +* up harmony (1a000eae) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.flags, nodebb.user (19f8a77c) + * fallback strings for new resources: nodebb.user (7ad477af) + * fallback strings for new resources: nodebb.admin-settings-navigation (18eec147) + * fallback strings for new resources: nodebb.admin-advanced-events (213db951) + * fallback strings for new resources: nodebb.admin-manage-users (43f52737) + +##### New Features + +* track uid for email/username changes, closes #12454 (325d00ea) +* closes #12477, allow editing moderation notes (af205cc4) +* parse moderation notes as markdown (7d24b04b) +* closes #12490, show profile flags on account info page (b429045f) +* closes #12491, add unban & unmute history (985663fa) +* new client-side hook to allow plugins to modify relogin url (c778f6eb) +* closes #12453, filter events by user/group (4030f18a) +* move all user profile pics to folder, closes #12449 (#12450) (8f9ac5c1) +* allow customizing uploads.upload socket methods (dc67f54e) +* allow custom fields in user csv export, closes #12401 (83ca23ca) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.33.2 (#12572) (19602dcd) + * update dependency esbuild to v0.21.2 (#12569) (dc4f32af) + * update dependency rimraf to v5.0.7 (#12568) (035ced85) + * update dependency sass to v1.77.1 (#12566) (7a64410a) + * update dependency rimraf to v5.0.6 (#12562) (185d61fc) + * update dependency validator to v13.12.0 (#12556) (7a009445) + * update dependency sass to v1.77.0 (#12550) (d3840280) + * update dependency mongodb to v6.6.1 (#12547) (751a143e) + * update dependency esbuild to v0.21.1 (#12549) (ed07cfcc) + * update dependency semver to v7.6.2 (#12552) (5264deca) + * update dependency mongodb to v6.6.0 (#12544) (4813772c) + * update dependency nodebb-plugin-composer-default to v10.2.35 (#12546) (8fcfb181) + * update dependency sass to v1.76.0 (#12541) (8f60603b) + * update dependency tough-cookie to v4.1.4 (#12540) (ad708c9f) + * update dependency lru-cache to v10.2.2 (#12532) (c036786c) + * update dependency jquery-ui to v1.13.3 (#12534) (3f62b892) + * update dependency nodebb-widget-essentials to v7.0.16 (#12535) (d5bfe32e) + * update dependency nodebb-plugin-composer-default to v10.2.34 (#12530) (bc51968e) + * update dependency ace-builds to v1.33.1 (#12527) (18a843bc) + * update fontsource monorepo (#12523) (bde9136b) + * update dependency ipaddr.js to v2.2.0 (#12522) (d6d0ebd5) + * update dependency cropperjs to v1.6.2 (#12524) (5e7ec5b6) + * update dependency ioredis to v5.4.1 (#12520) (66a35490) + * update dependency ioredis to v5.4.0 (#12519) (da0888e6) + * update dependency nodebb-plugin-spam-be-gone to v2.2.2 (#12518) (5b4471bf) + * update dependency nodebb-plugin-emoji to v5.1.15 (#12517) (20f8ba78) + * update dependency nodebb-theme-harmony to v1.2.49 (#12497) (c4cb9d36) + * update dependency nodebb-plugin-mentions to v4.5.2 (#12470) (37bdf753) + * update dependency ace-builds to v1.33.0 (#12501) (83a932e6) + * update dependency sass to v1.75.0 (#12500) (f5c3d4e1) + * update dependency nodebb-theme-harmony to v1.2.47 (#12487) (2bcd5239) + * update dependency cron to v3.1.7 (#12484) (6237d5fe) + * update dependency workerpool to v9.1.1 (#12475) (b6193629) + * update dependency nodebb-theme-persona to v13.3.13 (#12479) (01b3a06a) + * update dependency nodebb-theme-harmony to v1.2.46 (#12478) (499514a8) + * update dependency nodebb-theme-persona to v13.3.12 (#12467) (0f209fa4) + * update dependency nodebb-theme-harmony to v1.2.45 (#12466) (1fef883b) + * update dependency sass to v1.74.1 (#12469) (8f771b6f) + * update dependency pg-cursor to v2.10.5 (#12462) (dde7a498) + * update dependency pg to v8.11.5 (#12461) (623ccc53) + * update dependency @fortawesome/fontawesome-free to v6.5.2 (#12460) (1953277b) + * update dependency nodebb-plugin-mentions to v4.4.3 (#12463) (d24c4148) + * update dependency pg to v8.11.4 (#12455) (a7d9811e) + * update dependency @fontsource/poppins to v5.0.13 (#12457) (5c214930) + * update dependency pg-cursor to v2.10.4 (#12456) (af10aaaa) + * update dependency ace-builds to v1.32.9 (#12451) (deacf366) + * update dependency express to v4.19.2 (#12441) (263ca1ca) + * update dependency winston to v3.13.0 (#12440) (08be8f3c) + * update dependency webpack to v5.91.0 (#12426) (ca82d020) + * update dependency ace-builds to v1.32.8 (#12439) (23f46345) + * update dependency sanitize-html to v2.13.0 (#12427) (2550f26f) + * update dependency postcss to v8.4.38 (#12429) (ace6f12f) + * update dependency express to v4.19.1 (#12425) (a27b999f) + * update dependency autoprefixer to v10.4.19 (#12428) (fa57b81f) + * update dependency nodebb-theme-lavender to v7.1.8 (15c7691c) + * update dependency nodebb-plugin-mentions to v4.4.2 (#12410) (a8b631dd) + * update dependency postcss to v8.4.37 (#12417) (9c91f093) + * update dependency nodemailer to v6.9.13 (#12424) (c7a506a8) + * update dependency nodebb-plugin-ntfy to v1.7.4 (#12414) (4e119783) + * update dependency esbuild to v0.20.2 (#12411) (93fb1e0f) + * update socket.io packages to v4.7.5 (#12409) (6a730312) + * update dependency @socket.io/redis-adapter to v8.3.0 (#12405) (05219412) + * update dependency sass to v1.72.0 (#12407) (89684786) + * update dependency mongodb to v6.5.0 (#12402) (b163264e) + * update dependency archiver to v7.0.1 (#12400) (817a5468) + * update dependency nodemailer to v6.9.12 (#12398) (27d5aaa5) + * update dependency nodebb-theme-harmony to v1.2.38 (#12397) (b9a1fc3f) + * update fontsource monorepo (#12390) (8d6ef3d5) + * update dependency nodebb-plugin-mentions to v4.4.1 (#12393) (4d18c38b) + * update dependency winston to v3.12.0 (#12391) (98ff47ec) +* chat message search, closes #12571 (49a510e9) +* chat message search, closes #12571 (d926d9dd) +* some issues with "small" docker improvements (#12564) (bc807c46) +* use reference object for post summary v3 api call (2a58d099) +* unintentional object pollution by buildForSelectCategories (88a5dfb7) +* getCategoryById to return shallow clone of object (dc35bf8b) +* #12533, go to post after changing owner (983a35e6) +* topic selection in merge (f2892385) +* closes #12474, fix search dropdown on mobile for merge (ce03680f) +* #12481, remove priv groups from groupslug:groupname mapping (#12482) (7033d11e) +* bump 2factor (4d2c95ca) +* date on upgrade script (73f98568) +* use CategoryObject in admins-mods schema def (4da1e9c4) +* missing uid for modify event, closes #12394 (7c37f32d) +* **docker:** support all previously used env variables correctly (#12567) (995b2de5) + +##### Refactors + +* add missing form-label class (36016ee1) +* use groupslug:groupname for search and acp page (ee5c021c) + +##### Tests + +* fix schema (5eb8c90b) +* fix redis tests (57422420) +* fix moderation note test (fed5165f) +* add back timestamp (c73f759c) + +#### v3.7.5 (2024-05-03) + +##### Chores + +* incrementing version number - v3.7.4 (6678744c) +* update changelog for v3.7.4 (8a1b281b) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12543, use PATCH (420c8999) + +#### v3.7.4 (2024-04-17) + +##### Chores + +* up harmony (18990795) +* up harmony (c2465a16) +* up themes (ba86740a) +* up themes (5d8a5571) +* incrementing version number - v3.7.3 (2d62b6f6) +* update changelog for v3.7.3 (8d450eea) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12495, add unblock button to users on /blocks (afe597a2) + +##### Bug Fixes + +* zipObject (110ce66a) +* index should be cid (8410cec7) +* uniqCids (de0176ef) +* if votes are not public, dont show upvoter names in tooltip (5af69dbc) +* add canView check to /api/v3/users/:uid (5bee324c) +* is user doesnt have view:users privilege (14f5774f) +* copy dropdown closing on copy ip/text/link (48281f96) +* align teaser avatar (5fcd1a8a) +* if you have chat:privileged the chat icons should show up (ca07e517) +* #12485, resolve flags on a topics posts on topic delete (d7256796) +* #12471, remove readable strings (0b1f2546) + +##### Refactors + +* add new hooks for notifications/websockets (d2e042d1) +* move parseInt to filter (52e71522) +* better label for show to groups (cfd29db0) + +##### Tests + +* update spec (6816e39b) +* fix tests and use action (acab46e6) + +#### v3.7.3 (2024-04-03) + +##### Chores + +* up ntfy (0058ca68) +* incrementing version number - v3.7.2 (cc257e7e) +* update changelog for v3.7.2 (277e1787) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change digest to use posts sorting first (3aae9234) +* #12452, fix admin/mod image change (c206ccdd) + +#### v3.7.2 (2024-03-27) + +##### Chores + +* up harmony (0171e73a) +* up harmony (c6915398) +* incrementing version number - v3.7.1 (712365a5) +* update changelog for v3.7.1 (07640389) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add hook to modify sorting options/fields (168419cf) +* add playsinline video attribute (#12419) (5924a6eb) + +##### Bug Fixes + +* #12446, fix groups.ownership.rescind (ed41e416) +* #12415, fix notification escaping for queued posts (4787d013) + +##### Refactors + +* remove log (3b2d8551) + +##### Tests + +* add test for #12446 (bf4e257c) + +#### v3.7.1 (2024-03-14) + +##### Chores + +* up harmony (1b24b337) +* up harmony (b6c3a9d2) +* up harmony (f107a7ff) +* incrementing version number - v3.7.0 (9a6153d7) +* update changelog for v3.7.0 (f1f81b17) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* allow setting max-old-space-size in config (d1ce594c) + +##### Bug Fixes + +* #12408, fix mem leak due to mongodb 6.4.0 (285293c4) +* tids:create on topic post (3b48695b) + +#### v3.7.0 (2024-03-06) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-post, nodebb.topic (0bd0a740) + * fallback strings for new resources: nodebb.themes-harmony (8fb0ed82) + * fallback strings for new resources: nodebb.aria (a55fb29e) + * fallback strings for new resources: nodebb.aria (e6a358ed) + * fallback strings for new resources: nodebb.user (c88811a9) + * fallback strings for new resources: nodebb.topic (7e862a78) + * fallback strings for new resources: nodebb.topic, nodebb.unread (53ea10a7) + * fallback strings for new resources: nodebb.global (73e7d467) + * fallback strings for new resources: nodebb.topic (72f1e515) + * fallback strings for new resources: nodebb.global (642cd8e2) + * fallback strings for new resources: nodebb.global, nodebb.user (a998136c) + * fallback strings for new resources: nodebb.tags (4d35cb4e) + * fallback strings for new resources: nodebb.global, nodebb.themes-harmony (0bc9ac74) + * fallback strings for new resources: nodebb.global, nodebb.topic (a2819e9e) + * fallback strings for new resources: nodebb.error (9d5702f8) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (1230d22d) + * fallback strings for new resources: nodebb.admin-dashboard (f3974c0b) + * fallback strings for new resources: nodebb.search (43bf1f9b) +* up harmony (25ef62dc) +* up peace (3aaa0727) +* up peace (65f3c734) +* incrementing version number - v3.6.7 (86a17e38) +* update changelog for v3.6.7 (caf8722f) +* up harmony (22cd80b9) +* up themes (96fc20a3) +* up themes (421c7fc5) +* closes #12355 (fadee8d7) +* up themes (9ee864ce) +* up composer (8324adc5) +* up composer (0ff7adb4) +* incrementing version number - v3.6.6 (6604bf37) +* up themes (43a02c89) +* up themes (69342342) +* up harmony (9bbaef84) +* up harmony (35e98a9f) +* up harmony (22398d47) +* up themes (5cbb8bb1) +* up harmony (3f3f0d66) +* up harmony (4f42172d) +* up harmony (c0db10af) +* up harmony (0743cb3c) +* incrementing version number - v3.6.5 (6c653625) +* up harmony (09414efa) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* up harmony (bbdefad3) +* incrementing version number - v3.6.2 (0f577a57) +* up themes (79ebbee5) +* incrementing version number - v3.6.1 (f1a69468) +* up composer (c31e321b) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update commitlint monorepo to v19 (#12369) (516c8d04) + * update dependency smtp-server to v3.13.3 (#12378) (0ab1982c) + * update dependency eslint to v8.57.0 (#12362) (6c33c01d) + * update dependency sass-embedded to v1.71.1 (#12350) (99ad9d38) + * update dependency sass-embedded to v1.71.0 (#12344) (920f787f) + * update postgres docker tag to v16.2 (#12338) (254bad89) + * update commitlint monorepo to v18.6.1 (#12339) (92ef8548) + * update dependency mocha to v10.3.0 (#12334) (9cd299db) + * update dependency smtp-server to v3.13.2 (#12324) (048e664c) + * update dependency lint-staged to v15.2.2 (#12327) (a7008fb3) + * update dependency lint-staged to v15.2.1 (#12319) (264e71d2) + * update commitlint monorepo to v18.6.0 (#12305) (7e7bbfa4) + * update dependency jsdom to v24 (#12294) (45f02ff0) + * update commitlint monorepo to v18.5.0 (#12296) (5a776f9f) + * update dependency sass-embedded to v1.70.0 (#12286) (0063dd45) + * update dependency jsdom to v23.2.0 (#12269) (7cc69df0) + * update dependency jsdom to v23.1.0 (#12265) (12aeb6f7) + * update commitlint monorepo to v18.4.4 (#12261) (b25dfd47) + * update dependency sass-embedded to v1.69.7 (#12257) (ce78cb0e) + * update dependency sass-embedded to v1.69.6 (#12249) (1777ec4b) + +##### New Features + +* add new sorting option to categories (2a9b0a3c) +* add chat widget areas, closes #12375 (53b3c5d6) +* add hook into user.posts.isReady (7207814b) +* refactor group title editing (112493fa) +* cli command for maintenance mode closes #12293 (80960296) +* fallbacks for aria.json (19bc442b) +* add new lang keys for a11y (3ce89d1e) +* add missing aria/role attributes to dropdown elements (7917fd82) +* add lang keys for hidden labels (e298fb6b) +* show unread categories based on unread topics (#12317) (45cfb369) +* limit post/user flags per day closes #12274 (2b1fdc56) +* search in bookmarks on search page (5213e22a) +* #12247 (c5730b36) + +##### Bug Fixes + +* #12389, update privilege group check (87a79059) +* dupe id (f4b63790) +* #12357, properly update lists and counters (f34ebcc9) +* use lang key for user avatar label (863f5d0a) +* spec (4bcbf759) +* move winston logging for plugin hook firing to debug level (e240d0f9) +* closes #12326 (9302d9b4) +* some layout fixes for group details page (301eee17) +* bookmark in topic data is nullable now (d500ebb1) +* bug where body wasn't properly sent on ap-style content-types (4b87c30f) +* dont send topic notification to poster (c2239e48) +* **deps:** + * update dependency nodebb-theme-harmony to v1.2.36 (#12392) (db2f7c03) + * update dependency nodebb-theme-peace to v2.2.4 (#12381) (073a79eb) + * update dependency mongodb to v6.4.0 (#12382) (716482b2) + * update dependency nodebb-plugin-mentions to v4.4.0 (#12385) (6f04859e) + * update dependency ace-builds to v1.32.7 (#12386) (9eb54394) + * update dependency autoprefixer to v10.4.18 (#12387) (339e2cfa) + * update dependency nodebb-theme-harmony to v1.2.35 (#12388) (7b1b4510) + * update dependency nodebb-theme-harmony to v1.2.34 (#12383) (430c6b6c) + * update dependency nodemailer to v6.9.11 (#12380) (aa6859df) + * update dependency express to v4.18.3 (#12379) (2c3540b2) + * update dependency nodebb-plugin-markdown to v12.2.6 (#12371) (fb98dc05) + * update dependency archiver to v7 (#12374) (9de0ab31) + * update dependency chart.js to v4.4.2 (#12376) (131d2fe7) + * update dependency bootswatch to v5.3.3 (#12373) (1ed4d763) + * update dependency fetch-cookie to v3.0.1 (#12363) (835820a0) + * update dependency sanitize-html to v2.12.1 (#12360) (00bcf935) + * update dependency spdx-license-list to v6.9.0 (#12354) (b58dde1c) + * update dependency sass to v1.71.1 (#12351) (3094996b) + * update dependency sanitize-html to v2.12.0 (#12353) (ee90866a) + * update dependency nodemailer to v6.9.10 (#12356) (80ea6eb9) + * update dependency bootstrap to v5.3.3 (#12348) (4007882b) + * update dependency sass to v1.71.0 (#12345) (faf5a9c8) + * update dependency esbuild to v0.20.1 (#12346) (a0021b1d) + * update dependency webpack to v5.90.3 (#12347) (748bbab0) + * update dependency nodebb-plugin-spam-be-gone to v2.2.1 (#12343) (acad7317) + * update dependency webpack to v5.90.2 (#12341) (cb6fe9c7) + * update dependency nodebb-theme-harmony to v1.2.25 (#12340) (99474a7e) + * update dependency commander to v12 (#12325) (b61486eb) + * update dependency diff to v5.2.0 (#12337) (d0f6f0cc) + * update dependency postcss to v8.4.35 (#12333) (3bc506f6) + * update dependency ace-builds to v1.32.6 (#12332) (523f7ace) + * update dependency postcss to v8.4.34 (#12330) (9d036be3) + * update dependency semver to v7.6.0 (#12328) (3af04956) + * update dependency fetch-cookie to v2.2.0 (#12323) (b56d6a88) + * update dependency nodebb-theme-harmony to v1.2.12 (#12318) (65fead81) + * update dependency webpack to v5.90.1 (#12322) (98b455ce) + * update dependency nodemailer to v6.9.9 (#12321) (3f74cca3) + * update dependency ace-builds to v1.32.5 (#12316) (ef06be6d) + * update dependency nodebb-theme-harmony to v1.2.10 (#12314) (d648972c) + * update dependency ace-builds to v1.32.4 (#12313) (9fb7c163) + * update dependency express-session to v1.18.0 (#12311) (6444eeb9) + * update dependency esbuild to v0.20.0 (#12309) (aa1344fc) + * update dependency nodebb-theme-harmony to v1.2.8 (#12310) (fd20e3a5) + * update dependency nodebb-theme-harmony to v1.2.7 (#12307) (eabbf195) + * update dependency lru-cache to v10.2.0 (#12306) (400a1aa3) + * update dependency webpack to v5.90.0 (#12303) (44a798bc) + * update dependency esbuild to v0.19.12 (#12302) (72bb81f0) + * update dependency connect-redis to v7.1.1 (#12298) (575f072a) + * update dependency nodebb-theme-harmony to v1.2.6 (#12300) (e1adf5b3) + * update dependency nodebb-widget-essentials to v7.0.15 (#12295) (876fa4a7) + * update dependency nodebb-theme-persona to v13.3.3 (#12290) (f8893cd8) + * update dependency nodebb-theme-harmony to v1.2.4 (#12292) (e33e9dea) + * update dependency autoprefixer to v10.4.17 (#12285) (9e11b927) + * update dependency workerpool to v9.1.0 (#12288) (7a24961d) + * update dependency sass to v1.70.0 (#12287) (a1cdec08) + * update dependency sortablejs to v1.15.2 (#12283) (cc93caff) + * update dependency nodebb-theme-persona to v13.3.2 (#12284) (91ce17c7) + * update dependency nodebb-theme-harmony to v1.2.3 (#12280) (34a8069b) + * update dependency nodebb-theme-persona to v13.3.1 (#12281) (fe0845b9) + * update dependency nodebb-theme-harmony to v1.2.2 (#12279) (fc78b00c) + * update socket.io packages to v4.7.4 (#12278) (16598f7f) + * update dependency postcss to v8.4.33 (#12264) (3a32fc8f) + * update dependency nodebb-theme-harmony to v1.1.108 (#12263) (4924d170) + * update socket.io packages to v4.7.3 (#12259) (eb7a3091) + * update dependency sass to v1.69.7 (#12258) (d5dc4655) + * update dependency nodemailer to v6.9.8 (#12254) (1953a635) + * update dependency esbuild to v0.19.11 (#12253) (c8007bf6) + * update dependency ace-builds to v1.32.3 (#12252) (c40b2322) + * update dependency sass to v1.69.6 (#12250) (f8a0cb9e) + * update dependency terser-webpack-plugin to v5.3.10 (#12248) (9101caff) + * update dependency workerpool to v9.0.4 (#12244) (8165f454) + * update dependency workerpool to v9.0.3 (#12238) (3e08ef81) + * update dependency esbuild to v0.19.10 (#12237) (6ef8e767) + +##### Other Changes + +* fix (f5586968) + +##### Refactors + +* move tomap inside (5e89dfad) +* shorter tag translation (a9e8c184) +* search stats (82f6721d) + +##### Tests + +* fix test (c8a5e24a) +* update test (5afc735b) + +#### v3.6.7 (2024-02-28) + +##### Chores + +* incrementing version number - v3.6.6 (6604bf37) +* update changelog for v3.6.6 (debaa2b9) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12372, fix manual digest buttons (107f5613) +* closes #12365, staticHooks with callbacks (00e29403) +* #12359, fix api call (c61b3bbd) +* closes #12358, only load pending/invited for owners (3960d370) +* retry setAdd on e11000 error (4a405ce0) + +##### Tests + +* better test for #12352 (4e51bf81) + +#### v3.6.6 (2024-02-14) + +##### Chores + +* incrementing version number - v3.6.5 (6c653625) +* update changelog for v3.6.5 (04039f76) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12329, fix default value of categoryWatchState (88e9fa37) + +##### Tests + +* fix spec (5fec8b23) + +#### v3.6.5 (2024-01-31) + +##### Chores + +* incrementing version number - v3.6.4 (83d131b4) +* update changelog for v3.6.4 (6e6c3974) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12320, .text() gets \n\t characters (67c8bd99) + +#### v3.6.4 (2024-01-24) + +##### Chores + +* incrementing version number - v3.6.3 (fc7d2bfd) +* update changelog for v3.6.3 (92ffc57c) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add success hook to quick reply (cb21f28b) + +##### Bug Fixes + +* if there is no bookmarkThreshold dont init unread indicator (cf40d681) +* remove leftover code from 2.x, closes #12301 (d5f445f1) +* copy single line code blocks, closes #12297 (06269cdf) +* validate plugin id in toggleActive (76f3efff) + +##### Tests + +* add plugin id tests (e8befbcc) + +#### v3.6.3 (2024-01-12) + +##### Chores + +* incrementing version number - v3.6.2 (0f577a57) +* update changelog for v3.6.2 (82a936c3) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12275, pin sharp to 0.32.6 (f3927ce7) +* topic event translations closes #12273 (5f91cc83) + +#### v3.6.2 (2024-01-10) + +##### Chores + +* up composer (ef8f8db7) +* up harmony (2bed405c) +* up harmony (b6dbe1a6) +* up lavender (16f0affa) +* up themes (980bfee8) +* incrementing version number - v3.6.1 (f1a69468) +* update changelog for v3.6.1 (1e4abdbf) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12247 (0af19afd) + +##### Bug Fixes + +* recent loading (d3d6d77d) +* closes #12246, direction is passed in as string as query param with new api call (8867f243) +* stricter selector for sort (a74b5141) + +##### Performance Improvements + +* dont load all followed tids on unread/recent?filter=watched (563e03b6) + +#### v3.6.1 (2023-12-22) + +##### Chores + +* incrementing version number - v3.6.0 (4cdf85f8) +* update changelog for v3.6.0 (eb92cee6) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12243, don' set process.env.config if it doesnt exist (788404c1) +* lang key for move notification closes #12241 (48a2b5f7) +* dont send topic notification to poster (e72b26f5) + +#### v3.6.0 (2023-12-20) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.error (d3cfa1b7) + * fallback strings for new resources: nodebb.post-queue (64fe1278) + * fallback strings for new resources: nodebb.post-queue (f98205c1) + * fallback strings for new resources: nodebb.social (081352b6) + * fallback strings for new resources: nodebb.modules (4fe84ae8) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.admin-settings-post, nodebb.admin-settings-user (94777927) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.category, nodebb.notifications (29b3a403) + * fallback strings for new resources: nodebb.error (7d8f700f) + * fallback strings for new resources: nodebb.modules (83931138) +* make error:email-taken slightly more descriptive (dd0743d3) +* up harmony (250cc771) +* up harmony (9324a75c) +* incrementing version number - v3.5.3 (ed0e8783) +* update changelog for v3.5.3 (e49ddaf8) +* up harmony (dbbf3a2c) +* up harmony (e4656bd4) +* incrementing version number - v3.5.2 (52fbb2da) +* up themes (0ec9d4c3) +* added missing deprecation warning for .getTopics (9079ad0b) +* update note at top of file (2de534fa) +* up dbsearch (b6981693) +* up themes (9a1f8e9b) +* incrementing version number - v3.5.1 (4c543488) +* up themes (ed10dda2) +* up composer (22d7e92f) +* up themes (fcdd3737) +* v4 note for deprecations (f4c36b84) +* minor re-order of routes/controllers in admin api v3 router/controller (181a9399) +* add in note at top of files ready for deletion in v4 (54a08087) +* up harmony (1b8dcbc2) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update dependency eslint-plugin-import to v2.29.1 (#12229) (055b7597) + * update dependency eslint to v8.56.0 (#12231) (a7dd0f92) + * update dependency eslint to v8.55.0 (#12203) (32a403b2) + * update dependency lint-staged to v15.2.0 (#12210) (9763e97f) + * update dependency jsdom to v23.0.1 (#12196) (a50b141f) + * update dependency jsdom to v23 (#12186) (8c0472a0) + * update commitlint monorepo to v18.4.3 (#12177) (fd5d7b65) + * update dependency eslint to v8.54.0 (#12172) (b6275453) + * update commitlint monorepo to v18.4.2 (#12169) (d6a92d4c) + * update postgres docker tag to v16.1 (#12167) (616ff573) + * update mongo docker tag to v7 (#12166) (5f8a4f3a) + * update redis docker tag to v7.2.3 (#12165) (c41f9a75) + * update dependency lint-staged to v15.1.0 (#12161) (1796ed2b) + * update dependency @commitlint/cli to v18.4.1 (#12162) (be3d3393) + * update commitlint monorepo to v18.4.0 (#12159) (128c24f2) + * update dependency eslint to v8.53.0 (#12151) (d1a7ba35) + * update redis docker tag to v7.2.3 (#12152) (2eff6912) + * update commitlint monorepo to v18 (#12105) (97016f47) + * update dependency sass-embedded to v1.69.5 (#12127) (9e8a2116) +* **socket.io:** deprecate categories.(isModerator|ignore|watch|getSelectCategories|getMoveCategories|getCategoriesByPrivilege) (f1dbfaa2) + +##### Documentation Changes + +* fix improper verbiage in category watch schema (f8cc8548) +* openapi schema for api.search.categories (4ffe0417) +* **socket.io:** + * openapi schema for remaining added routes (5399e86a) + * added schema for new routes (f279bca0) + +##### New Features + +* add 500 page for missing tpls, closes #12230 (06221a0d) +* remove gif exif stripping exception (f8219aa6) +* update groups.leave to allow global mods to kick users out of groups (2c6024e0) +* better layout for manage chat room modal (f4faa0b7) +* update Messaging.toggleOwner to optionally take a third `state` argument (932bd292) +* new language strings for post-queue page (5d03321e) +* add some new social share buttons (ace171a6) +* docker improvements (#12031) (7f3a9968) +* closes #12158, add sortable rewards (5ea7dec9) +* add copy text (4b2491be) +* closes #12154, add exempt groups (fdff165e) +* update moved keys (119c3362) +* move new user restrrictions (3d505c5c) +* add tracking categories and make watching send notifications (#12147) (84fed97b) +* add new lang string for minutes (d8d26c9f) +* add direct message link (#12138) (4c4f3ac9) +* closes #5584, setup winston to output to file (87a859aa) +* batch.processSortedSet min/max (#12129) (6c7e6144) + +##### Bug Fixes + +* fix display post history (dc975838) +* update isJSON test in request lib (506d7be5) +* 503 rendering on ajaxify (f7e0fd0b) +* #12227, fix crash in redirect (2dc1def5) +* deprecated emailer hook (565ca3cc) +* extract all pages when stripping metadata (0b3eb6c0) +* incorrect call to load additional group members (78835ebb) +* closes #12185, fix cli user password reset (b9050139) +* don't require login for listing categories (50a90f8e) +* #12183, remove ensureLoggedIn middleware (0a4f3c8a) +* remove unused requires (b5940a5d) +* remove lodash require (f9c471a0) +* #12171, bump harmony (89a1134c) +* update design of post-queue (41bdc9e8) +* update post-queue template for #12171 (63ba4986) +* language key (4c7c46f3) +* another missing state (f4bbc5bd) +* add missing tracking (3b91e8e2) +* bump harmony (a5e3754b) +* #12133 dropdown menus on mobile stay open during ajaxify (4601a6f7) +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (b4297cd8) +* #12141, use apiv3 for category search module (cefd4061) +* made parentCid optional in api.search.categories (581516c8) +* don't count internal links towards link count when restricting new users from posting links (022fa0e7) +* closes #12126, fix language keys (075cd598) +* param (e5a60dc8) +* handle public chat rooms too (6a696c43) +* suppress chat message notifications for users who are known to be in the chat room (uid is present in the corresponding socket.io room) (18c27d1a) +* **deps:** + * update dependency workerpool to v9 (#12234) (2cccbcf6) + * update dependency sharp to v0.33.1 (#12233) (45143000) + * update dependency csrf-sync to v4.0.3 (#12232) (9e2a6f86) + * update dependency ace-builds to v1.32.2 (#12228) (b6ca117a) + * update dependency ace-builds to v1.32.1 (#12226) (6036d144) + * update dependency esbuild to v0.19.9 (#12224) (d96d4d09) + * update dependency @fontsource/inter to v5.0.16 (#12219) (e32eb8b3) + * update dependency chart.js to v4.4.1 (#12217) (b6b569c0) + * update dependency nodebb-theme-persona to v13.2.49 (#12218) (6dab99fd) + * update dependency postcss to v8.4.32 (#12204) (da879704) + * update dependency @fortawesome/fontawesome-free to v6.5.1 (#12198) (b41c7f2a) + * update dependency nodebb-theme-harmony to v1.1.101 (#12199) (72d6a4b1) + * update dependency sortablejs to v1.15.1 (#12200) (cd625705) + * update dependency ace-builds to v1.32.0 (#12197) (75f063ba) + * update dependency @fortawesome/fontawesome-free to v6.5.0 (#12193) (a94f4a48) + * update dependency sharp to v0.33.0 (#12194) (1f287c74) + * update dependency fs-extra to v11.2.0 (#12191) (4eaf2320) + * update dependency passport to v0.7.0 (#12190) (bbf7c5e1) + * update dependency esbuild to v0.19.8 (#12187) (bc59856e) + * update dependency lru-cache to v10.1.0 (#12181) (22932bdb) + * update dependency esbuild to v0.19.7 (#12176) (00cb5839) + * update dependency lru-cache to v10.0.3 (#12175) (c404ef73) + * update dependency ace-builds to v1.31.2 (#12168) (b4a41af9) + * update dependency mongodb to v6.3.0 (#12170) (85936a59) + * update dependency lru-cache to v10.0.2 (#12160) (9d18d3c7) + * update dependency helmet to v7.1.0 (#12155) (50aa1a7c) + * update dependency async to v3.2.5 (#12150) (0e9eafa1) + * update dependency nodebb-theme-persona to v13.2.44 (#12149) (b489af06) + * update dependency nodebb-theme-harmony to v1.1.95 (#12148) (77b0baea) + * update dependency connect-pg-simple to v9.0.1 (#12144) (4e23d0d1) + * update dependency nodebb-theme-persona to v13.2.43 (#12140) (91e45fa2) + * update dependency nodebb-theme-harmony to v1.1.92 (#12131) (a3452c8f) + * update dependency nodebb-theme-peace to v2.1.24 (#12139) (29a59b90) + * update dependency spdx-license-list to v6.8.0 (2337d641) + * update dependency nodebb-plugin-composer-default to v10.2.25 (#12136) (cdb40719) + * update dependency cron to v3.1.6 (#12132) (2fb3af3c) + * update dependency ace-builds to v1.31.1 (#12135) (6b28f1dc) + * update dependency workerpool to v8 (#12121) (9bed7646) + * update dependency sass to v1.69.5 (#12128) (b351c00a) +* **socket.io:** update getPosts controller to return object containing posts instead of straight array (54000aab) + +##### Other Changes + +* **socket.io:** deprecate socketGroups.getChatGroups in favour of api.admin.listGroups (dc4cc74f) + +##### Refactors + +* line breaks good (4e560ade) +* replace deprecated call with api call (f91b823e) +* move async call to parallel (dabc282d) +* **socket.io:** + * deprecate SocketModules.chats.typing in favour of api.chats.toggleTyping (c1e6be77) + * deprecate SocketModules.chats.loadPinnedMessages in favour of api.chats.getPinnedMessages" (401e8636) + * deprecate SocketModules.chats.searchMessages in favour of api.search.roomMessages (f9dc3502) + * deprecate SocketModules.chats.setNotificationSetting in favour of api.chats.watch (75c8cda1) + * deprecated SocketModules.chats.toggleOwner in favour of api.chats.toggleOwner (b13c6ee4) + * deprecated SocketModules.chats.searchMembers in favour of api.search.roomUsers (6e952263) + * deprecate SocketModules.sortPublicRooms in favour of api.chats.sortPublicRooms (62b7dfd4) + * deprecate SocketModules.chat.getUnreadCount in favour of api.chats.getUnread (5eaffb42) + * deprecate SocketModules.chats.getIP in favour of api.chats.getIpAddress (214989a8) + * deprecate SocketModules.chats.hasPrivateChat in favour of api.users.getPrivateRoomId (0d3c94e6) + * deprecate SocketModules.chats.canMessage and .markAllRead with no alternative. deprecate .getRecentChats in favour of api.chats.list (a4133500) + * deprecate SocketModules.chats.isDnD in favour of api.users.getStatus (eebea4df) + * deprecate SocketModules.chats.getRaw in favour of api.chats.getRawMessage (c4b4e79b) + * deprecate socketGroups.loadMoreMembers in favour of api.groups.listMembers (807d778c) + * deprecate socketGroups.searchMembers in favour of api.groups.listMembers (d2f3333a) + * deprecate socketGroups.loadMore in favour of api.groups.list (b61e8147) + * deprecate categories.categorySearch in favour of api.search.categories (00de9d5b) + * deprecate categories.loadMore in favour of api.categories.getTopics (1ce4ca54) + * deprecate categories.loadMoreSubCategories in favour of api.categories.getChildren (010727f5) + * deprecate categories.setWatchState in favour of api.categories.setWatchState (d7c6b3d6) + * deprecate categories.getTopicCount in favour of api.categories.getTopicCount (c442b6e6) + * deprecate categories.get in favour of api.categories.list (96046373) + * deprecate categories.getRecentReplies in favour of api.categories.getPosts (52b78e83) + +##### Tests + +* migrate socket modules tests to v3 api (445b70de) +* migrate socket.io groups tests to use api v3 (2c1c4dfe) + +#### v3.5.3 (2023-12-13) + +##### Chores + +* up composer (245e5df3) +* up composer default (c1f82b78) +* incrementing version number - v3.5.2 (52fbb2da) +* update changelog for v3.5.2 (e2e85053) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change translator escape (c434262e) + +##### Other Changes + +* add types for database abstration layer (#10762) (17cd19c7) + +#### v3.5.2 (2023-11-29) + +##### Chores + +* up composer (49013f81) +* incrementing version number - v3.5.1 (4c543488) +* update changelog for v3.5.1 (48f7ae99) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12185, fix cli user password reset (6790000d) +* thumb width (a9ef58a5) + +#### v3.5.1 (2023-11-14) + +##### Chores + +* up mentions (b1b3dcb6) +* incrementing version number - v3.5.0 (d06fb4f0) +* update changelog for v3.5.0 (5d7c10f1) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12123, allow setting hh:mm for pin expiry (1f800747) + +##### Bug Fixes + +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (dcb0c4db) +* closes #12156, missing data for privilege tables (21e59538) +* thumb width (46f6f9ef) +* closes #12126, fix language keys (668a355a) + +#### v3.5.0 (2023-10-25) + +##### Chores + +* up persona (8428cc8d) +* up harmony (bd9eebd7) +* up harmony (574f95f5) +* up harmony (2c996606) +* up harmony (f619696b) +* up harmony (0d2e0752) +* up persona (75170693) +* up themes (36fe90dd) +* up themes (4d6a6ff5) +* up rewards (35d9a78d) +* up harmony (e09b0332) +* up harmony (ad72f653) +* up persona (215ac672) +* up harmony (560403a9) +* up harmony (a5a33db7) +* up harmony (732af96f) +* up harmony (2af856d8) +* up harmony (05a9dd4e) +* up harmony (15a0a196) +* up deps for lang key change (96c9ccc4) +* up harmony (cddfdae0) +* up harmony (90692d95) +* up harmony (7e75cfaf) +* up harmony (a5c1b2a0) +* up harmony (3a108cab) +* up persona (cc5e9d9c) +* up harmony (769f879e) +* up themes (46530337) +* incrementing version number - v3.4.3 (5c984250) +* update changelog for v3.4.3 (08949be9) +* up themes (e0b29ba9) +* up emoji (00dd0cb3) +* up emoji (86de8cb2) +* up emoji (5081ff48) +* up emoji (805aaa5e) +* up emoji (7568be3c) +* up themes (b7d8fd1e) +* up themes (d0682905) +* incrementing version number - v3.4.2 (3f0dac38) +* up deps (f1021542) +* up composer (45b9803a) +* up composer (7e5d9b71) +* up harmony (13ea14f1) +* up engines (0f9f875b) +* incrementing version number - v3.4.1 (01e69574) +* up dbsearch (b4775b18) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update actions/setup-node action to v4 (#12114) (762ad161) + * update dependency eslint-plugin-import to v2.29.0 (#12112) (2ae031ed) + * update redis docker tag to v7.2.2 (#12097) (bb812937) + * update dependency eslint to v8.52.0 (#12106) (8acdd355) + * update commitlint monorepo to v17.8.1 (#12104) (022e2a10) + * update dependency lint-staged to v15.0.2 (#12099) (8549d7de) + * update dependency sass-embedded to v1.69.4 (#12093) (f5f1679c) + * update dependency lint-staged to v15 (#12086) (d1cd625d) + * update commitlint monorepo to v17.8.0 (#12084) (225acb2e) + * update dependency sass-embedded to v1.69.2 (#12073) (9967ae6b) + * update dependency sass-embedded to v1.69.1 (#12071) (7fe72085) + * update dependency eslint to v8.51.0 (#12063) (6c01148e) + * update dependency @commitlint/cli to v17.7.2 (#12047) (d10a09a0) + * update dependency eslint to v8.50.0 (#12029) (65051066) + * update postgres docker tag to v16 (#12012) (6fa6f73b) + * update actions/checkout action to v4 (#11978) (b4233366) + * update docker/build-push-action action to v5 (#11997) (4ecfe40e) + * update docker/login-action action to v3 (#11998) (478f7c74) + * update docker/metadata-action action to v5 (#11999) (21b280d2) + * update docker/setup-buildx-action action to v3 (#12000) (95f7112a) + * update docker/setup-qemu-action action to v3 (#12001) (f286d7fa) + * update dependency sass-embedded to v1.67.0 (#12003) (b9d04e2f) + * update dependency eslint to v8.49.0 (#11993) (ceed4327) + * update coverallsapp/github-action action to v2.2.3 (#11988) (a473b515) + * update redis docker tag to v7.2.1 (#11987) (0b231fd3) +* **i18n:** + * fallback strings for new resources: nodebb.admin-extend-widgets (990bbd8c) + * fallback strings for new resources: nodebb.admin-manage-privileges (3cb6881c) + * fallback strings for new resources: nodebb.themes-harmony (67fec93d) + * fallback strings for new resources: nodebb.notifications (ed77a0b1) + * fallback strings for new resources: nodebb.admin-advanced-database (b517645f) + * fallback strings for new resources: nodebb.error, nodebb.flags (19cfd89f) + * fallback strings for new resources: nodebb.admin-extend-widgets (8b5f0334) + * fallback strings for new resources: nodebb.email (fc8a6b31) + * fallback strings for new resources: nodebb.admin-settings-post (8cb2c270) + * fallback strings for new resources: nodebb.email, nodebb.notifications (a71378cb) + * fallback strings for new resources: nodebb.topic (8df56d60) + * fallback strings for new resources: nodebb.notifications, nodebb.pages, nodebb.tags, nodebb.user (2627e974) + * fallback strings for new resources: nodebb.modules (ec3ab986) + * fallback strings for new resources: nodebb.admin-settings-chat (968ee0c7) + +##### New Features + +* show # of widgets on templates (2ca5192b) +* #12101, dont return rssFeedUrl if feeds are disabled (2955fdb5) +* add sidebar setting lang key (97a86ba4) +* award notif filter (9e9046bf) +* update to mongodb 6.1 (#12087) (e542b27d) +* add category canonical url (f96b0b7a) +* update error handler to check for pseudo-standard no-* prefix and route to 404 handler instead (db5b0f47) +* flag rescinding logic + api method (e012edea) +* backend methods for rescinding a report, supplemental adds and removing a report now adds to the flag history (bc0f362c) +* use homePageTitle in breadcrumbs if its set (1a745201) +* 3 column layout for widgets (db9279eb) +* update all language keys to use - instead of _ (#12059) (844cb91b) +* closes #12052, ability to disable stale topic warning (f8a3aceb) +* add .has() method in cache/ttl lib (d478de16) +* upgrade chartjs to 4.x (fe192b92) +* closes #11553, add forked from message like merged into (be14f6cc) +* add workerpool for password, closes #10326 (#12038) (8b25aff7) +* add new hook action:chat.onMessagesAddedToDom (a7517d88) +* add composerActions for chat rooms (d906097a) +* add heading strings (8c977f4c) +* introduce new ACP setting for newbie chat message delay, defaults to 2 minutes (223e7656) + +##### Bug Fixes + +* **deps:** + * update dependency cron to v3.1.4 (#12117) (3e45788f) + * update dependency ace-builds to v1.31.0 (#12113) (aba7eb0f) + * update dependency nconf to v0.12.1 (#12111) (91d00979) + * update dependency @fontsource/inter to v5.0.15 (#12108) (99c3c874) + * update dependency nodemailer to v6.9.7 (#12109) (e546adaa) + * update dependency mongodb to v6.2.0 (#11965) (7302e769) + * update dependency @fontsource/inter to v5.0.14 (#12103) (c9c6175a) + * update dependency cron to v3.1.3 (#12100) (bad9198e) + * update dependency sass to v1.69.4 (#12094) (2adc96c2) + * update dependency esbuild to v0.19.5 (#12091) (94434125) + * update dependency webpack-merge to v5.10.0 (#12088) (d45f506f) + * update dependency webpack to v5.89.0 (#12083) (1ebdfaea) + * update dependency connect-mongo to v5.1.0 (#12085) (212a3415) + * update dependency ace-builds to v1.30.0 (#12082) (8456682c) + * update dependency cron to v3.1.1 (#12078) (24d6b73f) + * update dependency commander to v11.1.0 (#12079) (7d38e9ed) + * update dependency sass to v1.69.3 (#12076) (193e54e2) + * update dependency workerpool to v6.5.1 (#12077) (14eede15) + * update dependency sass to v1.69.2 (#12074) (0dd4cedf) + * update dependency nodemailer to v6.9.6 (#12068) (6c59d72a) + * update dependency winston to v3.11.0 (#12064) (fdf279a3) + * update dependency cron to v3 (#12049) (f2fad2d3) + * update dependency @fontsource/inter to v5.0.13 (#12065) (512ac525) + * update dependency ace-builds to v1.29.0 (#12067) (b04fbf89) + * update dependency sass to v1.69.1 (#12070) (a5d2871c) + * update dependency @fontsource/inter to v5.0.12 (#12053) (1033218c) + * update dependency sass to v1.69.0 (#12060) (ecb847fc) + * update dependency nodebb-plugin-2factor to v7.4.0 (6c5c1afd) + * update dependency nodebb-plugin-ntfy to v1.7.3 (98e58252) + * update dependency postcss to v8.4.31 (#12048) (eaa7aff3) + * update dependency esbuild to v0.19.4 (#12046) (4289230f) + * update dependency rimraf to v5.0.5 (#12036) (3549fbdd) + * update dependency nodebb-theme-persona to v13.2.34 (#12043) (339481ca) + * update dependency nodebb-plugin-spam-be-gone to v2.2.0 (#12039) (84648db2) + * update dependency cron to v2.4.4 (#12033) (c1f873b3) + * update dependency ace-builds to v1.28.0 (#12028) (3262923a) + * update dependency nodebb-plugin-2factor to v7.3.1 (#12026) (d29ea026) + * update dependency nodebb-plugin-ntfy to v1.7.2 (#12024) (360d3257) + * update dependency sass to v1.68.0 (#12023) (be600a84) + * update dependency autoprefixer to v10.4.16 (#12022) (f6b6e6c7) + * update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (639fb33f) + * update dependency bootswatch to v5.3.2 (#12020) (5dc368a9) + * update dependency ace-builds to v1.27.0 (#12019) (f73ed6dd) + * update dependency nodebb-plugin-emoji to v5.1.10 (#12018) (16fe4fde) + * update dependency sharp to v0.32.6 (#12016) (f838498b) + * update dependency postcss to v8.4.30 (#12015) (7dbc6668) + * update dependency rtlcss to v4.1.1 (#12014) (ba894a04) + * update dependency nodebb-plugin-ntfy to v1.7.1 (#12011) (4e834a2e) + * update dependency ace-builds to v1.26.0 (#12010) (5a003acb) + * update dependency mongodb to v5.9.0 (#12008) (5bfcd34c) + * update dependency cropperjs to v1.6.1 (#12013) (9f5362c8) + * update dependency ace-builds to v1.25.1 (#12006) (1558d7a2) + * update dependency bootstrap to v5.3.2 (#12005) (44d120df) + * update dependency esbuild to v0.19.3 (#12002) (ef41b8bc) + * update dependency sass to v1.67.0 (#12004) (d2e49472) + * update dependency ace-builds to v1.24.2 (#11991) (447b7954) +* closes #12115 , toggle hasmore as well (728d63f9) +* #10276, only move widgets if area doesn't exist (1739f5a9) +* #12090, dont award disabled rewards (c1ae879d) +* rewards fixes (347a43f4) +* use template name instead of component (f6120ebb) +* incorrect data passed to api.flags.get (cc8fe435) +* missing body classes on error pages (54a810dd) +* edit notification key (bda37ac2) +* lang key (bffa7880) +* #12062, relax blockquote selector (99bdad80) +* allowing forward slash in language keys, temporarily allowing upper case characters (d25a24fc) +* rename filter-perPage to filter-per-page (872ddc26) +* upgrade script date (6f5a965a) +* add upgrade script for notifications (6c3ff86b) +* lang key, type has _, lang keys changed to use - (1072b38b) +* #12017, unreliable forum updated messaging (715bdac3) +* #12057, allow gmods to change user email (344ece8d) +* only show emailChanged alert for self (56794cf8) +* closes #12054 handle negative start/stop in psql (0f4e6648) +* make socket errors and static hook errors less noisy (2a1be01a) +* restore notificationSendDelay back to 60 (5fe1ad95) +* breaking tests (857433d1) +* #12044, only load notifications when opening dropdown (dbd0a715) +* change `notificationSendDelay` to default to 10 seconds instead of 60, #11445 (cf50b0fe) +* clear interstitial data if there are no additional interstitials on abort (bdc221eb) +* #11808, reduce zeal of middleware.registrationComplete (74902e4a) +* pass in missing uid (d50473df) +* #12025, validity checking on user-provided toPid value (fe42fd4e) +* #12032, truncate long category names (b518e036) +* field name importance (8041f4d1) +* closes #12007, parseInt notification fields (b8e43143) +* on shutdown clear locks (615b2f0f) +* remaining text, when sending with send button (6553e454) +* nodebb/nodebb-plugin-link-preview#18, remove sup from allowedTags, add source + source attributes (f09f4105) +* use isPrivileged instead of isAdmin (b9c3cdb6) +* failing test due to increased chat message delay (ff07fc44) +* better labels in ACP chat settings, #11983 (88dd21e2) +* bump chat message delay by 10x to 2000ms, re: #11983 (9b0b33cc) +* #11981, post immediately when canceling scheduling (aa797f23) +* **i18n:** + * added rewards resource and fallbacks (47910d70) + * fallbacks for new language keys (2b3d2055) + * push fallbacks for modules resource (9b384b98) + +##### Other Changes + +* fix quotes (b8705380) +* fix lint (3b46ad42) + +##### Performance Improvements + +* no need to count on every call (130815c7) + +##### Refactors + +* get rid of util.promisify on async function (b1ff93f8) +* fix comment (ff6bfeb8) +* get rid of async.series (c7c6e8ff) +* shorter timeago (6149252b) +* shorter code for pinned topics (ff952e59) +* change private message email subject (f9fb3c3a) +* use helpers.isAllowedTo (47c16e90) +* add email notification delay to chat message notifications (a47b4805) +* remove chat message notification queue, implement merge IDs for chat message notifications, so they can be grouped together (3ba371f6) +* update buildCategoryLabel (82ea9192) +* use esm only import used chart types/plugins (56b31674) +* get rid of exists db call, use promise.parallel (8895b152) +* get rid of some async.waterfall/series/parallel calls (e452c097) +* get rid of async.waterfall/series (8bc2ef22) +* reduce socket.emits for typing (4d1b8e76) + +##### Tests + +* add spec for new notif type (90e10b9c) +* worked with chatgpt to restrict the i18n test a bit to match requirements (99364427) +* fix flag tests (6606d96a) +* added test cases for .addReport and .rescindReport() (da239059) +* added i18n test to enforce kebab casing (69dde2b9) +* add reverse list test (66be9826) +* additional tests for #12034 (d7e9f324) +* added tests for new logic paths (toPid validation on post creation) (ce740301) +* 💥 i18n tests (8202c555) + +#### v3.4.3 (2023-09-27) + +##### Chores + +* incrementing version number - v3.4.2 (3f0dac38) +* update changelog for v3.4.2 (f9323de6) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change priv to topics:read (cddac03a) +* #12035, filter tids in mark all read (77d6d0ab) +* properly wrap promise to callback-style function (#12030) (aff19a6c) +* #12009, check if suggested/current versions are valid (7ca37bd6) +* **deps:** update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (c805824f) + +##### Refactors + +* remove nested promise (379ed0e2) + +#### v3.4.2 (2023-09-12) + +##### Chores + +* up harmony (bd94f263) +* up harmony (46f260b5) +* up harmony (62afd0bd) +* up composer/persona (5c628c56) +* up harmony (3e07c18d) +* up deps (3f7de1c7) +* up harmony (512c44d5) +* up harmony (319d3b1f) +* up themes (d7a7c355) +* incrementing version number - v3.4.1 (01e69574) +* update changelog for v3.4.1 (f24a334c) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* **deps:** bump 2factor (6bc2b6c5) +* move database call used to associate a NodeBB session UUID to its express session id into user.auth.addSession, which is the only time it is called (e1bced8c) +* toMid to posts you cant see (53106c00) +* closes #11982, fix element in prepEdit (e4ecb96f) +* prep edit so textarea isn't below text input (f2c4041f) + +##### Refactors + +* reduce socket.emits for typing (aebd9278) + +##### Tests + +* remove errant .only() (9dc9d5ef) +* fix room count (66251166) + +#### v3.4.1 (2023-09-06) + +##### Chores + +* up dbsearch (8357bb2e) +* incrementing version number - v3.4.0 (fd9247c5) +* update changelog for v3.4.0 (5c023025) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11981, post immediately when canceling scheduling (19b7cdb2) + +#### v3.4.0 (2023-09-06) + +##### Chores + +* up ntfy (d79f79e8) +* up dbsearch (6d27f778) +* up themes, dont send typing on page load (45ed12c5) +* up harmony (21ad49fe) +* up themes (e10a5fa5) +* up themes (8132d36b) +* up themes (10d11924) +* up harmony (0334b389) +* up harmony (32c870f4) +* incrementing version number - v3.3.9 (5805e770) +* update changelog for v3.3.9 (50d44777) +* up composer (ffd6ea5a) +* up composer (c2534287) +* up composer (540b9f18) +* up composer (87015e9b) +* up themes (dd3647ed) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* markdown dep (03f11a24) +* up markdown (f399db9d) +* incrementing version number - v3.3.6 (7fb38792) +* up deps (a7843a40) +* up composer (05a7c761) +* up themes (c4b865e1) +* up themes (7d9ff9bf) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* up themes (5c14438d) +* up themes (cb3252be) +* up harmony (c7df93b4) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update coverallsapp/github-action action to v2.2.2 (#11977) (15c6fd6b) + * update dependency jquery to v3.7.1 (#11963) (94f07c14) + * update dependency eslint to v8.48.0 (#11953) (4d0055f0) + * update dependency lint-staged to v14.0.1 (#11936) (1e0661dc) + * update dependency eslint-plugin-import to v2.28.1 (#11848) (44a9d88a) + * update redis docker tag to v7.2.0 (#11924) (c41a4a0f) + * update dependency sass-embedded to v1.66.1 (#11926) (64925578) + * update mongo docker tag to v7 (#11928) (7ebdfe71) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (271cf81e) + * fallback strings for new resources: nodebb.notifications (69f86747) + * fallback strings for new resources: nodebb.email, nodebb.modules, nodebb.notifications (6a1b1141) + +##### New Features + +* typing user list in chat (60035744) +* add data-allow-dupe and data-navigator-ignore (92f5c146) +* add a filter hook to login (a3d6dba6) +* use all events in addTopicEvents (4bc21a2e) +* add socket.data.uid on connect (f026e740) +* #11949, show alert if posts is going to be queued (731466e5) +* #6021 add min:rep-post-links (#11938) (979f24b1) +* add new notif type for public rooms (b65d8e82) +* better acp sidebar in dark mode (c92ecfb4) +* check mute when messaging, closes #11932 (9534f9b9) +* log roomId/roomName on delete (b958a39a) + +##### Bug Fixes + +* **deps:** + * update dependency nodemailer to v6.9.5 (#11980) (d2636989) + * update dependency archiver to v6.0.1 (#11976) (0e885a20) + * update dependency nodebb-theme-harmony to v1.1.50 (#11975) (b46425b1) + * update dependency spdx-license-list to v6.7.0 (#11974) (9138702d) + * update dependency postcss to v8.4.29 (#11968) (286dcf9a) + * update dependency jsonwebtoken to v9.0.2 (#11972) (4251394f) + * update dependency cron to v2.4.3 (#11957) (b25793cd) + * update dependency nodebb-theme-peace to v2.1.16 (#11958) (44611e05) + * update dependency cropperjs to v1.6.0 (#11956) (521a13f4) + * update dependency nodebb-plugin-composer-default to v10.2.17 (#11951) (d20c9cf2) + * update dependency nodebb-theme-harmony to v1.1.43 (#11950) (d28b1f4b) + * update dependency mongodb to v5.8.1 (#11948) (551e4043) + * bump markdown (f9b8a079) + * bump ntfy (79703919) + * update dependency nodebb-plugin-markdown to v12.2.1 (#11939) (a04d3972) + * update dependency mongodb to v5.8.0 (#11940) (76a4fee9) + * update dependency pg to v8.11.3 (#11919) (9c837632) + * update dependency archiver to v6 (#11929) (0b1b6af3) + * update dependency sass to v1.66.1 (#11927) (01c94daf) + * update dependency pg-cursor to v2.10.3 (#11920) (c09c29fa) +* don't create tooltips on mobile (ded596fe) +* always return string from helper (bdeca049) +* double escape issue, body is escaped in composer-default (6ae0d207) +* make selector stricter (9f7a39c5) +* #11969, match the server side behaviour for filters (887dfd7d) +* remove og:image value (#11966) (90ac82d0) +* don't try to parse response if request is head #11960 (440299e6) +* pinned msgs when switching chats (acee6777) +* deleted chat messages (#11962) (1a1fd64d) +* closes #11954, fix custom skins with spaces (965780b7) +* dont show chat notif if you are already in the room (3d6668e7) +* #11947, make user message has a numeric timestamp (dc0fb81b) +* #11944, dont refresh page when uninstalling (f5baca14) +* closes #11921 (e3969706) +* bookmark scroll doing ajaxify (2e0964e6) +* closes #11937, add dropup early based on position on screen (a7a266d7) +* improper SSO format (regression), update openapi schema (4a846803) +* return empty array for 'sso' otherwise (db15e7c4) +* #11906, remove retrieval of SSO data in getAllData internal method, only retrieve for calling user or admins, and only on edit page (a6c98de6) +* language string (4e0c6329) +* admins should see public chats (aeb27f4b) +* show access denied instead of internal error (7dd143e1) + +##### Other Changes + +* remove unused translator (34242e7a) +* fix spec (c0eefe72) + +##### Refactors + +* use map/get (98c3d2e9) +* add targetUid to email-change event (4e5340d2) +* how admins change emails (#11973) (8db13d8e) + +##### Tests + +* one more fix (8b533d54) +* fix tests, dont hang if payload is string (6b09b7c7) +* fix redirect test (35e689cf) + +#### v3.3.9 (2023-08-25) + +##### Chores + +* up mentions (4ec3a480) +* incrementing version number - v3.3.8 (a5603565) +* update changelog for v3.3.8 (65e16e9f) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* isPrivilegeGroup not capturing admin privileges (d13e7cd3) + +##### Tests + +* add some tests for isPrivilegeGroup (d5c8bf9e) + +#### v3.3.8 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.7 (b26f1744) +* update changelog for v3.3.7 (1193fa04) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* msg ref (4ba76338) +* #11947, make user message has a numeric timestamp (2d62a772) + +#### v3.3.7 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.6 (7fb38792) +* update changelog for v3.3.6 (a43354c0) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #11945, fix skins loading if there are no custom skins (438c4c89) + +#### v3.3.6 (2023-08-22) + +##### Chores + +* up deps (db55f18a) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +#### v3.3.4 (2023-08-20) + +##### Chores + +* incrementing version number - v3.3.3 (f94d239b) +* update changelog for v3.3.3 (38149a57) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script, get rid of nested processSortedSet (78a7cfe9) + +#### v3.3.3 (2023-08-19) + +##### Chores + +* incrementing version number - v3.3.2 (ec9dac97) +* update changelog for v3.3.2 (2ecf15c4) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* one more fix (51587ca3) +* one more upgrade script fix (b5d1e917) +* post preview on skins remove clearfix and floats (5a8e6af4) + +##### Refactors + +* add connectionTimeout to psql (90f29571) + +#### v3.3.2 (2023-08-18) + +##### Chores + +* incrementing version number - v3.3.1 (151cc68f) +* update changelog for v3.3.1 (6f961f9c) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script (c02f1d70) + +#### v3.3.1 (2023-08-18) + +##### Chores + +* up themes (62231baa) +* incrementing version number - v3.3.0 (fc1ad70f) +* update changelog for v3.3.0 (46f7405d) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #11930, ability to set custom skins as default (db07ab15) + +##### Bug Fixes + +* some more upgrade script fixes (f23b0b5b) +* #11906, userData.sso — don't serve deauthUrl or non-associated url if caller uid is not same as target uid (19e047e2) +* include latin-ext subset of fonts in admin styles (#11918) (556a1c48) + +##### Other Changes + +* fix lint (d1949cee) + +#### v3.3.0 (2023-08-16) + +##### Chores + +* **deps:** + * update dependency smtp-server to v3.13.0 (#11913) (7f6865cc) + * update dependency lint-staged to v14 (#11909) (ee78b418) + * update dependency lint-staged to v13.3.0 (#11908) (6f3b7bc8) + * update dependency eslint to v8.47.0 (#11904) (af3c5e54) + * update dependency @commitlint/cli to v17.7.1 (#11896) (1d44b004) + * update commitlint monorepo to v17.7.0 (#11892) (d1d38097) + * update dependency sass-embedded to v1.64.2 (#11858) (c9c23513) + * update dependency eslint to v8.46.0 (#11852) (8a761ff7) + * update dependency sass-embedded to v1.64.1 (#11833) (1cca1760) + * update commitlint monorepo to v17.6.7 (#11817) (ac65ab42) + * update dependency sass-embedded to v1.64.0 (#11821) (560bb29c) + * update actions/setup-node action to v3 (#10347) (c8387828) + * update mongo docker tag to v6 (#10889) (f2715979) + * update dependency eslint to v8.45.0 (#11800) (b53da688) + * update coverallsapp/github-action action to v2.2.1 (#11795) (adfde1d4) + * update redis docker tag to v7.0.12 (#11789) (40477c85) + * update dependency eslint to v8.44.0 (#11771) (0bad8578) +* up emoji (ffa8b729) +* up harmony (c83a7023) +* up composer (c9663718) +* up harmony/composer (5d030a77) +* up composer (e151ec86) +* up composer-default (8d2ac658) +* up harmony (dfc155e4) +* up themes (9501d855) +* up harmony (89968048) +* harmony (a282f701) +* up themes (35c97bcb) +* up themes (8b31815f) +* up themes (ba2f6031) +* harmony (e8fb02f3) +* up harmony (3b125ba2) +* up harmony (58968353) +* up themes (8444af1c) +* up harmony (6faec937) +* up composer (7bfe327c) +* up mentions (0495b863) +* up themes (472fbd85) +* up harmony (f3776501) +* up theme (05c1e1f1) +* up harmony (ee0128d7) +* up harmony (ba03e223) +* up themes (6fc80f9f) +* incrementing version number - v3.2.3 (b06d3e63) +* update changelog for v3.2.3 (afb38c71) +* up mentions (4b92df75) +* up composer (48a04eb7) +* up harmony (efc250f2) +* up themes (6b017eb1) +* up harmony (08491053) +* up harmony (3b7b0d41) +* remove test log (b93cc788) +* up plugins (d1132ac4) +* up themes (35ac434c) +* up themes (98e0d141) +* up harmony (ac063fe5) +* up mentions (d545c143) +* up themes (b36bec95) +* up themes (62429252) +* remove log (954db1ee) +* up themes (9fda8dce) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* up markdown (f23cda10) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-dashboard (80ea4eb0) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.error (e27d1743) + * fallback strings for new resources: nodebb.modules (ab668617) + * fallback strings for new resources: nodebb.global (bee5a9b4) + * fallback strings for new resources: nodebb.error (eca28302) + * fallback strings for new resources: nodebb.admin-dashboard (ac355acd) + * fallback strings for new resources: nodebb.admin-dashboard (62b7be1c) + * fallback strings for new resources: nodebb.admin-menu (ad9d8f77) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-manage-categories (f075e12a) + * fallback strings for new resources: nodebb.modules (2c54e362) + * fallback strings for new resources: nodebb.admin-manage-users (9284b7e4) + * fallback strings for new resources: nodebb.modules (4ed0ed45) + * fallback strings for new resources: nodebb.topic (9c0b98df) + * fallback strings for new resources: nodebb.email (3613d1e6) + * fallback strings for new resources: nodebb.modules (a7dae508) + * fallback strings for new resources: nodebb.admin-settings-guest (640e32d4) + * fallback strings for new resources: nodebb.error, nodebb.modules (2710037c) + * fallback strings for new resources: nodebb.admin-admin (58bdedaf) + +##### New Features + +* closes #11902, ability to clear search history (7a79fed8) +* #11897, show guest handles in post queue and after using POST /compose (76fde8ef) +* #11881, limit room names (9349cb63) +* add toMid to chat messages (0316f324) +* add category selector to analytics page (acef5e33) +* middleware.handleMultipart, applies on API routes — invokes multipart middleware based on content-type header (bcc4b82c) +* #11868 apply blacklist to routes (#11873) (23404ad1) +* add icon to invite/accept notifs (78c5dfdc) +* add flags link to acp manage menu, closes #11867 (99c22942) +* move to npm fontawesome dependency and support fa pro (#11820) (b709ed9e) +* password check hook (#11853) (8ac34f8e) +* #11850, chat msg search (11bfeaf1) +* #11814, dont check content len for admins (f359a767) +* closes #11843, refresh search after changing filters (907c5fa6) +* #11842, ability to change reputation of users (ac027387) +* closes #11812, add unread public rooms into digest (eb0fcd32) +* allow multiple room owners, closes #6503 (91642cb3) +* show online users at the top of userlist and update (911ef058) +* simplified api module handler logic, content-type detection/parsing (2d016af8) +* allow FormData object to be passed in to the API module (ed99ea20) + +##### Bug Fixes + +* **deps:** + * update dependency postcss to v8.4.28 (#11915) (eafa03ab) + * update dependency sharp to v0.32.5 (#11916) (a013b161) + * update dependency ace-builds to v1.24.1 (#11914) (4a97ee0f) + * update dependency cron to v2.4.1 (#11911) (6476c4b8) + * update dependency esbuild to v0.19.2 (#11910) (d9e08e05) + * update dependency autoprefixer to v10.4.15 (#11907) (2a1e33dd) + * update dependency nodebb-plugin-2factor to v7.2.1 (#11898) (762658d4) + * update dependency nodebb-plugin-ntfy to v1.4.0 (#11905) (b8d926f9) + * update dependency lru-cache to v10.0.1 (#11899) (fd385647) + * update dependency esbuild to v0.19.1 (#11903) (12771b70) + * update dependency sass to v1.65.1 (#11895) (4b04b41e) + * update dependency ace-builds to v1.24.0 (#11893) (8f6feb0b) + * update dependency compare-versions to v6.1.0 (#11883) (9608b124) + * update dependency nodebb-plugin-ntfy to v1.3.0 (#11889) (53006408) + * update dependency esbuild to v0.19.0 (#11884) (454a968e) + * update dependency nodebb-theme-persona to v13.2.17 (#11888) (70f83075) + * update dependency nodebb-theme-harmony to v1.1.33 (#11887) (31ed1a40) + * update fontsource monorepo to v5.0.8 (#11880) (4cb0b738) + * update dependency esbuild to v0.18.19 (#11882) (2c8fd3b8) + * update dependency esbuild to v0.18.18 (#11879) (9a07cdbd) + * update dependency nodebb-plugin-ntfy to v1.2.5 (#11876) (7710a5e6) + * update dependency @fortawesome/fontawesome-free to v6.4.2 (#11870) (7d5a8666) + * update fontsource monorepo to v5.0.7 (#11869) (2c8bf84c) + * update dependency validator to v13.11.0 (#11877) (4594cd67) + * update dependency nodebb-plugin-ntfy to v1.2.4 (ae8f5398) + * update socket.io packages to v4.7.2 (#11871) (d4d339f9) + * update dependency pg to v8.11.2 (#11859) (5582fe92) + * update dependency pg-cursor to v2.10.2 (#11860) (c79c1e5f) + * update dependency sass to v1.64.2 (#11861) (da852139) + * update dependency esbuild to v0.18.17 (#11844) (ba379836) + * update dependency cron to v2.4.0 (#11839) (b1db67ce) + * update dependency postcss to v8.4.27 (#11827) (8d8930f8) + * update dependency sharp to v0.32.4 (#11828) (ef9fd345) + * update dependency sass to v1.64.1 (#11834) (878fe217) + * update dependency esbuild to v0.18.16 (#11838) (ace36434) + * update dependency esbuild to v0.18.15 (#11823) (8ab9c72c) + * update dependency nodemailer to v6.9.4 (#11819) (fcb99af1) + * update dependency sass to v1.64.0 (#11822) (e7626d90) + * update dependency nodebb-plugin-ntfy to v1.1.0 (#11815) (465b3e09) + * update dependency webpack to v5.88.2 (#11811) (4095cda6) + * update dependency esbuild to v0.18.14 (#11813) (de13aae6) + * update dependency esbuild to v0.18.13 (#11801) (212f90bb) + * update dependency sharp to v0.32.3 (#11799) (406ced79) + * update dependency postcss to v8.4.26 (#11798) (8e295464) + * update dependency esbuild to v0.18.12 (#11794) (f15265ff) + * update dependency winston to v3.10.0 (#11792) (786fff6f) + * update dependency sharp to v0.32.2 (#11791) (d156e67e) + * update dependency nodebb-plugin-ntfy to v1.0.16 (#11790) (3c5e5d3e) + * update fontsource monorepo to v5.0.5 (#11785) (efd784fa) + * update dependency compare-versions to v6 (#11784) (50fd242b) + * update dependency semver to v7.5.4 (#11783) (3bf10941) + * update dependency mongodb to v5.7.0 (#11781) (833a1ba7) + * update dependency postcss to v8.4.25 (#11780) (7fb8e414) + * update dependency jsonwebtoken to v9.0.1 (#11778) (bb89a12a) + * update dependency ace-builds to v1.23.4 (#11782) (b2cabd43) + * update fontsource monorepo to v5.0.4 (#11776) (5eedd8eb) + * update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (1932a31d) + * update dependency nodebb-theme-persona to v13.1.7 (#11769) (d2e6062b) + * update dependency @isaacs/ttlcache to v1.4.1 (#11774) (63bbb366) + * update dependency esbuild to v0.18.11 (#11772) (335a3619) + * update dependency webpack to v5.88.1 (#11764) (a3111e4d) +* if you send message scrollToBottom (223c85e4) +* clicking on email consent form label checks the wrong box (2fe93361) +* clicking on email consent form label checks the wrong box (514af5d6) +* copy FA fonts to build directory instead of serving them directly (#11891) (ac4623ee) +* use config.undoTimeout instead of hardcoded value (850cfb33) +* add missing id/for to all checkboxes (ae747875) +* #11875, simplify alerts and show progress (881a28eb) +* bug where api module would throw if response contained no content-type header (007d735f) +* chat mark read regression (f4e2e617) +* fix escaped characters in tooltips, fix priv checks in tooltips (82562bec) +* #11855, remove superfluous password challenge on admin email update (unless they're updating their own) (4ca71f63) +* register abort can error on weird session state (#11854) (c9511915) +* #11847, typo in markNotification (5a8b4125) +* #11837, use userslug for check (e2fa8cf3) +* #11841, use unique nid per user who flagged (17783440) +* reset_code.tpl card block expanding to bottom of container (2792d771) +* closes #11825, user icons in global privileges (dae4f9f7) +* fallback for room timestamp (77550a50) +* dont error if timestamp is missing (6cc86b6e) +* topic postercount field if owner is changed (00be053e) +* updateOwner (16fe1eb9) +* unread notif filter (3e7ca4f2) +* closes #11806, fix code blocks (165b0f85) +* allow escape to close chat modals (4c311502) +* on leave/kick remove matching sockets from rooms (a766f74f) +* spec (79fae26d) +* lint (1e38a16b) +* client side js crash (adb3a5e6) +* #11797, update title on chat switch (840792ae) +* always return empty array if its not set (5c208610) +* mobile back button (9149a9a2) +* clear cache on sort (e03fdcd6) +* #11787 (bf2c429a) +* fetch handler not passing back errors or success payloads (8a531826) +* group membership methods for guests/spiders (2791eb8a) + +##### Other Changes + +* new filter to filter skins (c1361ee5) +* //github.com/NodeBB/NodeBB/issues/11818 (f7ae8963) +* //github.com/NodeBB/NodeBB/issues/11818 (0dce4c46) + +##### Performance Improvements + +* faster upgrade script (43060f3c) + +##### Refactors + +* ip blacklist.test (38c0c8de) +* dont load all tokens in verify token (2fe193d6) +* dont sleep if iteration is done on first one (0136e924) +* use fetch() throughout, instead of jQuery .ajax() (7415b16d) + +##### Tests + +* fix test if ip is invalid (38377982) +* fix tests to use regular uid (d615273d) +* fix tests since nid format changed (e41042ee) +* fix test (9e574e07) +* log e11000 errors (934df69e) +* fix spec (b63cd548) +* fix (e31f5c42) + +#### v3.2.3 (2023-07-19) + +##### Chores + +* downgrade harmony to correct version (7c94506b) +* incrementing version number - v3.2.2 (758ecfcd) +* update changelog for v3.2.2 (91a432ad) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* typo in replied to link (3024dac1) +* logs page whitespace (2a3d6d5c) +* version alert in acp (05c9cca7) +* #11804, fix direction of dropdown on rtl (a4dba8d3) +* #11802, fix anchor ids in acp settings (562e4d6e) +* #11803, fix rtl in acp (a0478c70) + +#### v3.2.2 (2023-07-12) + +##### Chores + +* up themes (f1170b18) +* up spam-be-gone (eed34d04) +* remove log (509faa5e) +* incrementing version number - v3.2.1 (20145074) +* update changelog for v3.2.1 (c7f8cee9) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11787 (6ae0df4f) +* #11786 fix selector for upgradable plugins (bf114c11) + +#### v3.2.1 (2023-07-05) + +##### Chores + +* up harmony (9fc5ae08) +* up composer (82d37702) +* up spider-detector (97d8f858) +* incrementing version number - v3.2.0 (9ecac38e) +* update changelog for v3.2.0 (080f9e75) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11766, allow privileged users to vote and chat (1bda9073) +* #11775, trim -rtl from targetSkin (0183e5f8) +* #11773, fix create token button (64d30182) +* add ?page= to canonical urls (4045681a) +* group membership methods for guests/spiders (7d5fe20b) +* **deps:** update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (a1110f10) + +#### v3.2.0 (2023-06-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13.2.3 (#11762) (26af152a) + * update commitlint monorepo to v17.6.6 (#11750) (a19e7b5c) + * update dependency sass-embedded to v1.63.6 (#11742) (8a961794) + * update dependency sass-embedded to v1.63.5 (#11738) (94d1dbc7) + * update dependency eslint to v8.43.0 (#11722) (7beadb6b) + * update coverallsapp/github-action action to v2.2.0 (#11690) (9282bc58) + * update dependency eslint to v8.42.0 (#11672) (55e5467d) + * update commitlint monorepo to v17.6.5 (#11648) (3b53f415) + * update dependency jsdom to v22.1.0 (#11640) (9a5d39c0) + * update dependency smtp-server to v3.12.0 (#11628) (57e3f999) + * update dependency eslint to v8.41.0 (#11616) (70bb50cd) + * update redis docker tag to v7 (#10830) (f1e2342d) + * update dependency jquery to v3.7.0 (#11591) (12c03130) +* up harmony (94013139) +* up persona (8b4e2ca9) +* up deps (b1de9472) +* up harmony (db5016cc) +* up harmony (8f6889e0) +* up harmony (c4c06be5) +* up harmony (777c7d09) +* up deps (7f465006) +* up harmony (f9e37829) +* incrementing version number - v3.1.7 (0b4e81ab) +* update changelog for v3.1.7 (8744e412) +* up persona (7a0e5c6d) +* up harmony (be474fb4) +* up harmony (1896b486) +* up persona (09d42076) +* up harmony (cce42fec) +* up markdown (4107d6b8) +* up themes (b2f70a2e) +* up composer (21919524) +* up harmony (64441602) +* incrementing version number - v3.1.6 (b3a3b130) +* up themes (61420fdc) +* up themes (f9990cab) +* bump themes for da02361b13d064763223533368f9b71d998ecf37 (c97977f8) +* up harmony (0f84f597) +* up emoji (4b0d3940) +* up emoji (291aa58e) +* incrementing version number - v3.1.5 (ec19343a) +* up harmony (56ac610b) +* up themes (0bfe361c) +* up themes (67ab222d) +* update lang key (1cc079f3) +* up harmony (590a7237) +* up harmony (ed54c7c0) +* up harmony (91760eef) +* up emoji (7ab05f5d) +* up harmony (43887328) +* up emoji (9a3c62f7) +* up emoji (783fbfd8) +* up emoji (7a3468a1) +* up emoji (933f5a90) +* up harmony (61f4202e) +* up themes (5d089363) +* scroll up alert (ca6f43c5) +* harmony (c48f15c5) +* up themes (14c93cd5) +* up harmony (6188d8be) +* up harmony (9e416d7f) +* incrementing version number - v3.1.4 (2452783c) +* up persona (78c2e29c) +* up markdown (7f5ec0ef) +* up themes (cdfc1bfe) +* up harmony (fd80b612) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-appearance-skins (7ca85c60) + * fallback strings for new resources: nodebb.admin-advanced-cache, nodebb.admin-advanced-errors, nodebb.admin-development-logger (fa8e656d) + * fallback strings for new resources: nodebb.admin-appearance-customise (0863afd0) + * fallback strings for new resources: nodebb.user (195b09d5) + * fallback strings for new resources: nodebb.admin-manage-users (934b6792) + * fallback strings for new resources: nodebb.themes-harmony (619c4ff7) + * fallback strings for new resources: nodebb.topic (639eeb44) + * fallback strings for new resources: nodebb.admin-appearance-customise, nodebb.admin-appearance-skins, nodebb.admin-appearance-themes, nodebb.admin-settings-api (d508772c) + * fallback strings for new resources: nodebb.admin-manage-groups (e53929fc) + * fallback strings for new resources: nodebb.users (1ffc9221) + * fallback strings for new resources: nodebb.modules (54a683bb) + * fallback strings for new resources: nodebb.themes-harmony (0aef9a91) + * fallback strings for new resources: nodebb.admin-settings-api (78bc71aa) + +##### New Features + +* closes #11747, add pagination to tokens page (4b11cd0d) +* add vote privs to topic (#11734) (86faed6f) +* custom skins panel in acp (556fd65d) +* add req and socket to als, closes https://github.com/NodeBB/NodeBB/pull/10304 (68ddca1e) +* #11714, add page title (1a5e18cd) +* #11714, add registrationQueue flag (3080eb7e) +* do not show the replies container in a post's footer if the only reply present is the next post (da02361b) +* add new tab to define bs variables (de68f749) +* bring back noskin option (2edfe0ef) +* add not validated/expired (5fae09f3) +* closes #11671, allow custom classes on body (e89cfd44) +* upgrade fonts (392a7d28) +* allow more params to app.newTopic/newReply (325c1955) +* update progress bar more frequently (99aaa9f1) +* closes #11630 (8c9ab01f) +* add hidden-empty utility (63ae03b4) +* translate bodyShort (ed15cbb0) +* add lang string and drag fix (db9b807c) +* center chat modal attr (4833a2b9) +* token rolling API for admins (4f524e9f) +* token editing and deletion (ce23caf7) +* api token migration, new ACP tokens list, token creation (e4888dea) +* internal utility functions for token management (creation, deletion, etc) (7b8bffd7) + +##### Bug Fixes + +* **deps:** + * update socket.io packages to v4.7.1 (#11763) (1de2d632) + * update dependency ace-builds to v1.23.1 (#11759) (53ab5931) + * update dependency esbuild to v0.18.10 (#11760) (e7f68aec) + * update dependency pg-cursor to v2.10.1 (#11757) (a814440c) + * update dependency pg to v8.11.1 (#11758) (8b56fa2f) + * update dependency esbuild to v0.18.9 (#11755) (3adc7505) + * update socket.io packages to v4.7.0 (#11744) (b25e7247) + * update dependency semver to v7.5.3 (#11745) (9d0edc36) + * update dependency esbuild to v0.18.8 (#11751) (a7243790) + * update dependency esbuild to v0.18.7 (#11749) (85e5619c) + * update dependency sass to v1.63.6 (#11743) (939e5818) + * update dependency webpack to v5.88.0 (#11741) (c45854d9) + * update dependency sanitize-html to v2.11.0 (#11740) (9d5fadad) + * update dependency esbuild to v0.18.6 (#11736) (e0c137c9) + * update dependency sass to v1.63.5 (#11737) (61e45cb3) + * update dependency ace-builds to v1.23.0 (#11739) (a53e7d21) + * update dependency esbuild to v0.18.5 (#11730) (2a56d21c) + * update dependency esbuild to v0.18.4 (#11721) (ae349004) + * update dependency commander to v11 (#11719) (d454c5c4) + * update dependency lru-cache to v10 (#11716) (b3bdb9d0) + * update dependency semver to v7.5.2 (#11718) (770021e0) + * update dependency esbuild to v0.18.3 (#11715) (9f94b56f) + * update dependency webpack to v5.87.0 (#11713) (f95929b2) + * update dependency nodebb-plugin-2factor to v7.1.3 (#11711) (c9e41e10) + * update dependency sass to v1.63.4 (#11709) (dfcef322) + * update dependency esbuild to v0.18.2 (#11705) (9521c8de) + * update dependency nodebb-plugin-2factor to v7.1.1 (#11703) (fe96d6f8) + * update dependency ace-builds to v1.22.1 (#11699) (b0d91a55) + * update dependency esbuild to v0.18.1 (#11701) (5247f763) + * update dependency nodebb-theme-harmony to v1.0.47 (#11700) (96a7add5) + * update dependency sass to v1.63.3 (#11693) (1512a37d) + * update dependency @fontsource/poppins to v5.0.3 (#11696) (1bd8f898) + * update dependency @fontsource/inter to v5.0.3 (#11695) (ddb41fbe) + * update dependency esbuild to v0.18.0 (#11698) (2b419f93) + * update dependency webpack to v5.86.0 (#11691) (744f399c) + * update dependency connect-pg-simple to v9 (#11692) (32cebaa6) + * update dependency mongodb to v5.6.0 (#11670) (1738f3c5) + * update dependency lru-cache to v9.1.2 (#11668) (09fff40c) + * update dependency nodebb-plugin-emoji to v5.1.0 (#11683) (bf76989e) + * update dependency nodebb-plugin-dbsearch to v6.1.0 (#11689) (9ef40569) + * update dependency nodebb-theme-persona to v13.1.0 (#11688) (6240a8c6) + * update dependency nodebb-plugin-composer-default to v10.2.0 (#11686) (bfdb72ca) + * update dependency nodebb-plugin-mentions to v4.2.0 (#11687) (d58c9d8c) + * update dependency nodebb-plugin-2factor to v7.1.0 (#11685) (64557680) + * update dependency nodebb-plugin-markdown to v12.1.0 (#11684) (ed2d9a96) + * update dependency nodebb-theme-lavender to v7.1.0 (#11682) (c23deb87) + * update dependency nodebb-plugin-spam-be-gone to v2.1.0 (#11681) (5d8d0946) + * update dependency nodebb-theme-harmony to v1.0.43 (#11680) (601a0363) + * update dependency webpack to v5.85.1 (#11678) (ccf3d3bc) + * update dependency nodebb-theme-harmony to v1.0.42 (#11674) (d41651dc) + * update dependency nodebb-plugin-composer-default to v10.1.9 (#11676) (929835de) + * update dependency nodebb-theme-harmony to v1.0.40 (#11669) (b5ee0247) + * pin dependencies (#11660) (1033cd1c) + * update dependency webpack to v5.85.0 (#11663) (e6344db8) + * update dependency @fontsource/inter to v5 (#11661) (e5e8debf) + * update dependency nodebb-theme-harmony to v1.0.39 (#11659) (6d4ab1d0) + * update socket.io packages to v4.6.2 (#11658) (fe10356c) + * update dependency ipaddr.js to v2.1.0 (#11653) (a13b5c40) + * update dependency nodebb-plugin-composer-default to v10.1.8 (#11656) (032425b2) + * update dependency nodebb-plugin-markdown to v12.0.5 (#11657) (a7a1cda5) + * update dependency nodebb-theme-persona to v13.0.73 (#11652) (e4c2015f) + * update dependency nodebb-plugin-composer-default to v10.1.7 (#11654) (d242bc29) + * update dependency nodemailer to v6.9.3 (#11644) (bd93ab8b) + * update dependency nodebb-theme-harmony to v1.0.38 (#11646) (f9ba518a) + * update dependency nodebb-theme-persona to v13.0.72 (#11647) (c474841e) + * update dependency nodebb-widget-essentials to v7.0.13 (#11645) (5daa733c) + * update dependency webpack to v5.84.1 (#11635) (7c333fb1) + * update dependency @popperjs/core to v2.11.8 (#11636) (14ac1206) + * update dependency winston to v3.9.0 (#11637) (45af9333) + * update dependency postcss to v8.4.24 (#11642) (1bc3c384) + * update dependency nodebb-theme-persona to v13.0.71 (#11641) (a6be0cd7) + * update dependency nodebb-plugin-composer-default to v10.1.6 (#11638) (3c9a960e) + * update dependency cron to v2.3.1 (#11633) (f5bcdc87) + * update dependency nodebb-theme-persona to v13.0.70 (#11632) (73d8ac66) + * update dependency webpack to v5.84.0 (#11631) (23532464) + * update dependency nodebb-theme-peace to v2.0.27 (#11629) (b10227dc) + * update dependency ace-builds to v1.22.0 (#11621) (70d0fc1a) + * update dependency nodebb-plugin-emoji to v5.0.16 (#11626) (21b61b37) + * update dependency webpack-merge to v5.9.0 (#11622) (5c70b428) + * update dependency nodebb-theme-peace to v2.0.25 (#11615) (f0336af4) + * update dependency webpack to v5.83.1 (#11608) (a4ae2e08) + * update dependency rimraf to v5.0.1 (#11610) (d1ccfac1) + * update dependency terser-webpack-plugin to v5.3.9 (#11611) (af00ebbe) + * update dependency ace-builds to v1.21.1 (#11607) (d26c9bf8) + * update dependency pg-cursor to v2.10.0 (#11605) (10ed33f1) + * update dependency @socket.io/redis-adapter to v8.2.1 (#11602) (49b3badb) + * update dependency ace-builds to v1.21.0 (#11603) (3d9f6f41) + * update dependency pg to v8.11.0 (#11604) (9840289c) + * update dependency semver to v7.5.1 (#11597) (18606f9c) + * update dependency esbuild to v0.17.19 (#11598) (28fb4e10) + * update dependency mongodb to v5.5.0 (#11593) (88e891fc) + * update dependency nodemailer to v6.9.2 (#11590) (3a883e3f) + * update dependency connect-redis to v7.1.0 (#11592) (97ec0c75) + * update dependency webpack to v5.82.1 (#11585) (90e53177) + * update dependency ace-builds to v1.20.0 (#11587) (326d820f) +* #11761, don't escape topic title twice (01c36f8b) +* use btn instead of icon (aefef763) +* rollback ace-builds 1.23.0 doesnt work (ea150162) +* #11756, fix unique visitor stats in acp table (e45f513b) +* dont overwrite postIndex (c21d7dbc) +* closes #11731, set postIndex on pagination (cbd98c1b) +* pinned topic ordering if parent element has non topic elements (cfedd087) +* delete events not working (281078f5) +* if reply is in different topic dont hide in parent (9ee1d7b0) +* web (6d5f6a15) +* var name (b48a6e26) +* error toast on lost connection (2c89d784) +* dont send 200 status on admin upload errors (#11707) (8ca65b0c) +* #11702, don't escape backgroundImage twice (6740a51e) +* closes #11697, remove min attribute from rep thresholds (4a6249a4) +* skins page revert (33a6b3e1) +* dont add deleted users to users:online (d0e9eb2c) +* #11679, fix username change (db3bff09) +* closes #11673, topic search for harmony (ee8cb378) +* #11664, dont create backlinks for quotes (d3c5a79d) +* wrap on events page (a5b080ea) +* app.newTopic usage (9f3bdf75) +* rtl fixes for code and long text (05460d8e) +* topic count in tools after purge closes #11651 (1974abeb) +* add loadingMore flag to chat infinite load (e0300ab7) +* #11619, fix selector (cdeaef6b) +* text area height calculation in chats (c52916de) +* textarea on error (c77b6224) +* closes #11612 (3cef2535) +* edge case in category filter (5daaa5ea) +* #11572 (29303f4a) +* browser title if options.title is undefined (adf14ea5) +* lang strings (d6ead3d4) +* #11594 (11d315df) +* relocated upgrade script, removed outdated code that called core.api for tokens (3e6dd78d) + +##### Other Changes + +* fix whitespace (4768d06b) +* fix unused (dcc2bb10) +* //github.com/NodeBB/NodeBB/issues/11612 (cf7d9334) +* up peace (0da8b506) +* use csrf_token in ws handshake (#11573) (63b859f0) +* closes #11577 (ad1ae291) + +##### Performance Improvements + +* make less db calls to load indices (0b2feb9e) + +##### Refactors + +* show both emails in user list (daa5ac85) +* move async call to promise.all (e56e44ab) +* remove script (2360d296) +* remove log (9522951f) +* remove log (32f60df1) +* use new params (2cf865e8) +* use app.parseAndTranslate (b1fbc194) +* remove return (e0149462) + +##### Reverts + +* remove emoji email css (7b8ebd0a) + +##### Tests + +* fix spec (94f06301) +* make email requirement flag changes more explicit in tests, so cases do not rely on variable values from other cases (a8399aa2) +* fix another test (c638186b) +* fix email tests @julianlam (64718d0c) +* openapi (2f94eb21) +* openapi (bc74afaf) +* remove is touch test (1ab0faa4) +* remove socket.io test (366b18e0) +* log socket.io error (3cb4edf1) +* fix another test (12e75ff4) +* fix test (c201bf45) +* add back missing tests (031ffe49) +* add missing tests (a75fd636) +* fix digest test (aff6d20f) +* add email (4bfebc81) +* digest (61563b01) +* additional tests for .roll() (6765d053) +* fix authentication tests to use new token saving utility functions (f42b636a) + +#### v3.1.7 (2023-06-21) + +##### Chores + +* incrementing version number - v3.1.6 (b3a3b130) +* update changelog for v3.1.6 (f10a2d2e) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11735, crash when making guest reply (f2fe7c06) +* #11729, only check registered users (090a7921) +* #11723, fix pagination on following/follower page (4e146eb5) + +#### v3.1.6 (2023-06-15) + +##### Chores + +* incrementing version number - v3.1.5 (ec19343a) +* update changelog for v3.1.5 (b0d16861) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11717 prevent crash in messaging (8620a2cd) +* closes #11708, fix quick reply check (a757716d) + +#### v3.1.5 (2023-06-13) + +##### Chores + +* fix persona (74174414) +* up themes (97ff1f11) +* incrementing version number - v3.1.4 (2452783c) +* update changelog for v3.1.4 (633dc2de) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add back support for req.body._csrf (67f44a32) + +##### Bug Fixes + +* improper neutralization of user input in image wrapping code (1d1639d4) +* don't update edit data if edited timestamp is not available (c5cd76e7) +* filter null nav items (b73f307a) +* rimraf usage in user image delete (3256fb30) +* closes #11620, fix copy code when line numbers are enabled (82e26829) +* logins dashboard user images (8cb6ebb9) + +##### Refactors + +* change welcome headers to be smaller (0c4870ec) + +##### Tests + +* remove socket.io test (24ebb153) + +#### v3.1.4 (2023-05-18) + +##### Chores + +* up markdown (51bf5e95) +* incrementing version number - v3.1.3 (3b4e9d3f) +* update changelog for v3.1.3 (9924fde6) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* textarea on error (469aa551) +* closes #11613, closes #11614 (d8d486a6) +* closes #11612 (8f6a68ca) +* #11572 (2910cb2b) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11612 (24bd9d4e) + +##### Refactors + +* remove unused require (05b58c70) +* remove log (ca2be0e8) + +#### v3.1.3 (2023-05-15) + +##### Chores + +* incrementing version number - v3.1.2 (40fa3489) +* update changelog for v3.1.2 (5b398782) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Continuous Integration + +* use GitHub Actions expression instead of handlebars template (#11599) (412a1ecf) +* tag with branch name if not default branch (cd7fdfce) + +##### Bug Fixes + +* #11601, dont trigger edit if chat input has text (d55cd464) +* #11600, prevent helmet crash on startup (8eed5a84) +* #11594 (85d104c3) + +##### Other Changes + +* use csrf_token in ws handshake (#11573) (51096ad2) + +#### v3.1.2 (2023-05-12) + +##### Chores + +* incrementing version number - v3.1.1 (40250733) +* update changelog for v3.1.1 (ccd6f48c) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11595, use default value (28740de7) + +#### v3.1.1 (2023-05-11) + +##### Chores + +* incrementing version number - v3.1.0 (0cb386bd) +* update changelog for v3.1.0 (2c515dc3) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Documentation Changes + +* updating changelog to move line re: breaking change down to new features (b259a000) + +##### Bug Fixes + +* failing test case (3251bca2) +* #11589, regression where a user could not confirm their email if requireEmailAddress was enabled (686ecea1) + +#### v3.1.0 (2023-05-10) + +##### Chores + +* up themes (14a5c1aa) +* up harmony (f9997b27) +* up dbsearch (2b259b20) +* up harmony (9064920f) +* up harmony (622d75d7) +* up markdown (c92a14ab) +* up harmony (475ecf42) +* up emoji (ca7ff292) +* up deps (64add3e3) +* up harmony (048fbcaa) +* up deps (f337ca65) +* up widgets (68283bcd) +* up harmony (eab2679f) +* up harmony (7f19913b) +* up themes (832fe95a) +* incrementing version number - v3.0.1 (26f6ea49) +* update changelog for v3.0.1 (fd30af10) +* whopps (ec0da196) +* up harmony (2caf4afc) +* up harmony (9e4bd4e9) +* up composer (01960f27) +* up deps (b6915247) +* up themes (4b374f04) +* up harmony (ee085c1d) +* up widgets (2588853b) +* up harmony (01669fa5) +* up harmony (c58d07f4) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.themes-harmony, nodebb.themes-persona (48a4fd50) + * fallback strings for new resources: nodebb.admin-settings-email (489163aa) + * fallback strings for new resources: nodebb.user (6a2c6de0) + * fallback strings for new resources: nodebb.admin-extend-widgets (5f728445) + * fallback strings for new resources: nodebb.groups (db802db6) + * fallback strings for new resources: nodebb.global, nodebb.pages (819ded6f) + * fallback strings for new resources: nodebb.global (6fe660a3) + * fallback strings for new resources: nodebb.error, nodebb.tags, nodebb.topic (a908bed8) + * fallback strings for new resources: nodebb.global (6e7465de) + * fallback strings for new resources: nodebb.global (28a1df16) + * fallback strings for new resources: nodebb.modules (3b0b2b2f) + * fallback strings for new resources: nodebb.global (6f573c27) + * fallback strings for new resources: nodebb.global (da5bfacd) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-appearance-customise, nodebb.admin-dashboard, nodebb.admin-extend-widgets, nodebb.admin-manage-groups, nodebb.admin-manage-privileges, nodebb.admin-settings-api, nodebb.admin-settings-navigation, nodebb.admin-settings-user, nodebb.error, nodebb.flags, nodebb.global, nodebb.groups, nodebb.modules, nodebb.pages, nodebb.post-queue, nodebb.recent, nodebb.register, nodebb.search, nodebb.tags, nodebb.topic, nodebb.user, nodebb.users (de282c0b) + * fallback strings for new resources: nodebb.topic (ab17e5c3) +* **deps:** + * update dependency eslint to v8.40.0 (#11574) (54f4aba0) + * update commitlint monorepo to v17.6.3 (#11568) (fe041498) + * update dependency jsdom to v22 (#11551) (76cc1cf3) + * update dependency jsdom to v21.1.2 (#11547) (f0d989e4) + * update commitlint monorepo to v17.6.1 (#11478) (c4c55684) + * update dependency lint-staged to v13.2.2 (#11521) (2e2bc54b) + +##### Continuous Integration + +* add 3.x docker tag (163c977d) +* only publish latest from master (c588d741) +* multi-platform docker image (#11479) (0417e5f1) + +##### Documentation Changes + +* openapi schema for newly added routes (02f567ff) + +##### New Features + +* update transifex config with new language strings (529f2d17) +* #11584 (f6b2d376) +* add helper to convert isostrings to localeString (e1bb277f) +* up emoji, remove title parse code (78f79347) +* add getSortedSetMembersWithScores (#11579) (f083cd55) +* add app.newReply (101fe81d) +* expiration date for widgets (fbf44a10) +* closes #11549, new error pages (83fca316) +* write API shorthand to query post routes by their topic index (requires tid in either query string or request body) (d814e281) +* allow tag editing from topic tools (e3551d80) +* #11537, copy ip on click (4aa87366) +* #7096, improve chat editing (eb0c77fd) +* Change Date translation string (e42967d7) +* #11431 (3099d57f) +* add missing i18n (e83a9a72) +* show even uninstalled active plugins if set via config (2bfdd761) +* add option to autoinstall plugins on setup (74cb2243) +* closes #11428, add a copy code button to code blocks (0a292fc1) +* closes #11432, use edited time if its greater (c3854b78) +* move topic thumb to template (84a78c2d) +* open topic thumbs on click in a bootbox dialog instead of opening in same page; complements nodebb/nodebb-theme-harmony#12 (04219c4c) +* closes #11424, add category selector to fork modal (#11491) (6b51dd5a) +* started work on porting socket methods to write API (f2082d7d) + +##### Bug Fixes + +* reset password (8a1ec4d6) +* strip html tags from browser title (e1473bcc) +* chat ip button not doing anything if clicked outside of icon (f974c230) +* add an additional check on page load to enforce `requireEmailAddress` setting (84313712) +* selector for nav scroll (34730caf) +* gdrp checkboxes (ca93084c) +* #11570 (18e76ba5) +* closes #11559, fix some rtl issues (093ec0e8) +* closes #11561, close dialogs on escape/backdrop click (0af2b800) +* show edit indicator after an edit without reloading the page (24e0e502) +* add back removed socket method, added deprecation warnings, as there are no breaking changes allowed in v3.1.0 (cdd77480) +* closes #11511 (ec8d8ec4) +* outgoing style (e070b851) +* #11541, fix leave chat error (8e0f9ce5) +* closes #11539 (d0a15e9e) +* add check for no tids (156b8e77) +* remove positions (9f485ce6) +* scroll on edit textarea (5ead9b73) +* #11531, fix teasers (c23689d3) +* #11530, fix topic rescheduling (2720a692) +* #10594, move counter code (#11529) (5607e5bc) +* only add copy button to multiline codeblocks (619e910f) +* go back to post queue after deleting an account in post queue (#11513) (c3ebda22) +* **deps:** + * update dependency helmet to v6.2.0 (#11576) (77b05b73) + * update dependency terser-webpack-plugin to v5.3.8 (#11575) (f6db5f60) + * update dependency nodebb-theme-persona to v13.0.63 (#11571) (84548edb) + * update dependency mongodb to v5.4.0 (#11569) (bac0b7b2) + * update dependency @isaacs/ttlcache to v1.4.0 (#11567) (ae7547e2) + * update dependency nodebb-theme-persona to v13.0.61 (#11566) (5f4197a9) + * update dependency nodebb-theme-harmony to v1.0.15 (#11565) (e630cf25) + * update dependency ace-builds to v1.19.0 (#11557) (0813ee78) + * update dependency webpack to v5.82.0 (#11564) (cdebc0d1) + * update dependency nodebb-plugin-spam-be-gone to v2.0.7 (#11563) (80bcd938) + * update dependency nodebb-theme-harmony to v1.0.11 (#11556) (904adf57) + * update dependency @socket.io/redis-adapter to v8.2.0 (#11555) (700d1da9) + * update dependency nodebb-plugin-composer-default to v10.1.4 (#11552) (efadd714) + * update dependency nodebb-plugin-emoji to v5.0.8 (#11550) (602f0520) + * update dependency nodebb-plugin-mentions to v4.1.1 (#11548) (72bc471e) + * update dependency nodebb-widget-essentials to v7.0.11 (#11536) (e0f0c08a) + * bump composer-default, closes #11534 (b0005f18) + * update dependency sharp to v0.32.1 (#11527) (ce05e743) + * update dependency yargs to v17.7.2 (#11528) (1d7e981f) + * update dependency webpack to v5.81.0 (#11523) (e9d30f76) + * update dependency nodebb-plugin-emoji to v5.0.7 (#11522) (81799777) + * update dependency nodebb-plugin-mentions to v4.1.0 (#11518) (42bd1a63) + * update dependency lru-cache to v9.1.1 (#11493) (d4bf0ae7) + * update dependency webpack to v5.80.0 (#11503) (6413efbb) + * update dependency mongodb to v5.3.0 (#11496) (e55f1b55) + * update dependency sass to v1.62.1 (#11517) (d8829872) + +##### Other Changes + +* fix comma (073f4d37) + +##### Refactors + +* removed parsing for taskbar (e832d365) +* move to modals (8e63e43a) +* topic mark read/unread routes (36895421) +* migrate `posts.getReplies` to write API (69b40938) +* deprecate socket method posts.getPidIndex (ee9f53f1) +* if position (87047210) +* remove position classes (503fab51) + +##### Tests + +* added test cases for #11562 (393a8913) +* fix assert.reject calls (e0db9a89) +* fix brackets (0c20d7cd) +* remove log (9800d65a) +* increase delay after export (8a359d63) +* replace calls to getReplies socket call to api method (82b4984b) +* fix group tests (b891c5ac) + +#### v3.0.1 (2023-05-02) + +##### Chores + +* incrementing version number - v3.0.0 (224e08cd) +* update changelog for v3.0.0 (56ad381f) + +##### Bug Fixes + +* #11554, email requirement bypass by sending in whitespace (2b8dd3d2) +* update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5) +* #11545, wrong message shown to new users re: email confirmation (2b70063e) +* black on red coloration on error when a bad reset code is received (604a8f7e) +* use query param sort over user setting if it's set (9484ddc3) + +#### v3.0.0 (2023-04-26) + +##### Breaking Changes + +* #11426, proper v3 style error on maintenance mode [breaking] (2615c1e5) +* #11362, regular mods are also subject to post queue [breaking] (c843984d) + +##### Chores + +* **deps:** + * update dependency eslint to v8.39.0 (#11507) (e74e76b1) + * update coverallsapp/github-action action to v2.1.2 (#11497) (fec552d2) + * update coverallsapp/github-action action to v2.1.1 (#11494) (f8ae6ef7) + * update dependency sass-embedded to v1.62.0 (#11467) (1dc6eb51) + * update coverallsapp/github-action action to v2.1.0 (#11458) (88b02d90) + * update dependency eslint to v8.38.0 (#11448) (afa37d6d) + * update dependency sass-embedded to v1.61.0 (#11442) (c7ccf9b8) + * update dependency lint-staged to v13.2.1 (#11444) (1a888f50) + * update dependency eslint to v8.37.0 (#11410) (defc01d9) + * update dependency @commitlint/cli to v17.5.1 (#11408) (0e57afa9) + * update dependency sass-embedded to v1.60.0 (#11392) (034666b4) + * update dependency @commitlint/cli to v17.5.0 (#11384) (69a7bfbe) + * update postgres docker tag to v15 (#10976) (f286b66f) + * update dependency @apidevtools/swagger-parser to v10 (#11207) (f21c8ca4) + * update docker/build-push-action action to v4 (#11245) (8ddb302f) + * update dependency sass-embedded to v1.59.3 (#11371) (2cde7231) + * update coverallsapp/github-action action to v2 (#11369) (a5a4b307) + * update dependency jsdom to v21.1.1 (#11355) (ae53a6e0) + * update dependency eslint to v8.36.0 (#11349) (50f14768) + * update dependency lint-staged to v13.2.0 (#11346) (d8f787eb) + * update dependency jquery to v3.6.4 (#11339) (87be2694) + * update coverallsapp/github-action action to v1.2.4 (#11323) (e8e35de3) + * update dependency eslint to v8.35.0 (#11324) (f155eedb) + * update commitlint monorepo to v17.4.4 (#11317) (a4aeee96) + * update dependency lint-staged to v13.1.2 (#11298) (45c3b9df) + * update dependency lint-staged to v13.1.1 (#11268) (4d68b0d4) + * update dependency eslint to v8.34.0 (#11291) (330f7ec8) + * update commitlint monorepo to v17.4.3 (#11293) (558c1c98) + * update dependency grunt to v1.6.1 (#11244) (9f0c352e) + * update dependency eslint to v8.33.0 (#11243) (eeca887b) + * update dependency jsdom to v21.1.0 (#11202) (09712b57) + * update commitlint monorepo to v17.4.2 (#11186) (5648c8ea) + * update dependency eslint to v8.32.0 (#11189) (56731d89) + * update dependency @apidevtools/swagger-parser to v9.0.1 (c1785080) + * update dependency eslint-plugin-import to v2.27.5 (f8461538) + * update dependency @commitlint/cli to v17.4.1 (#11137) (66b41d67) + * update dependency jsdom to v21 (#11134) (7905d573) + * update commitlint monorepo to v17.4.0 (#11123) (2ea1510f) + * update dependency husky to v8.0.3 (19c2b350) + * update dependency eslint to v8.31.0 (#11118) (8f83f790) + * update dependency jquery to v3.6.3 (#11107) (0665834d) + * update dependency eslint to v8.30.0 (#11102) (18bcc3cf) + * update dependency mocha to v10.2.0 (#11094) (ad96a4d8) + * update dependency lint-staged to v13.1.0 (#11082) (7a1c258d) + * update dependency eslint to v8.29.0 (#11074) (49143328) + * update dependency lint-staged to v13.0.4 (#11064) (ac14099b) +* up harmony (a405343d) +* up deps (1767fe3d) +* up composer (0962c063) +* up harmony (2c91c4e1) +* up harmony (cef9e791) +* up harmony (bea1826f) +* up harmony (52f32b0b) +* up widgets (22cb918c) +* up deps (445a4752) +* up composer (d1b9f83d) +* up harmony (d5636df2) +* up harmony (1fcbee0f) +* up harmony (4363c0bb) +* up harmony (24c24e6c) +* up harmony (eff9f98d) +* up harmony (9020cd40) +* up harmony (5dc1d6d5) +* up harmony (b912a132) +* up harmony (6962d206) +* rc.2 (654abb48) +* harmony beta.102 (3a50ad3a) +* up harmony (90e2e0bf) +* up harmony (0e3d34cc) +* up harmony (5cc1dd51) +* up harmony (e18d0df8) +* up harmony (4fb021a7) +* up harmony (ec106d91) +* up harmony (f1f32a47) +* up deps (08d159f5) +* up harmony (fe73c007) +* up harmony (764aca62) +* up harmony (2d75625b) +* up harmony (cc138c93) +* up harmony (a44f170a) +* up harmony (80f7dce8) +* remove logs (68db271d) +* up harmony (3f834480) +* up themes (7b7f473e) +* up harmony (361441bd) +* bump version tag for RC (e6e08d56) +* up harmony (4305c0a1) +* up rimraf to 4.x (#11377) (1502068e) +* up connect-redis to 7.x, drop node 14 (#11376) (fafa1304) +* up harmony (7d831f0b) +* up mongo deps (#11375) (5db037f1) +* add back missing dep upgrades (95ab5c41) +* fallbacks for new language string (830a20f1) +* up jquery (babe7fac) +* **i18n:** + * fallback strings for new resources: nodebb.topic (30234cf7) + * fallback strings for new resources: nodebb.error (026f2d94) + * fallback strings for new resources: nodebb.global (7ff9e494) + * fallback strings for new resources: nodebb.error (3bcfef5e) + * fallback strings for new resources: nodebb.recent (d1789206) + * fallback strings for new resources: nodebb.topic (04652ceb) + * fallback strings for new resources: nodebb.post-queue (eaa5454f) + * fallback strings for new resources: nodebb.user (92ec5bd9) + * fallback strings for new resources: nodebb.admin-settings-api (44c2d402) + * fallback strings for new resources: nodebb.admin-dashboard (58552300) + * fallback strings for new resources: nodebb.post-queue (7439d0a6) + * fallback strings for new resources: nodebb.error (7bc22a59) + * fallback strings for new resources: nodebb.admin-settings-user (0767ed57) + * fallback strings for new resources: nodebb.admin-settings-email (d8b45c61) + * fallback strings for new resources: nodebb.admin-settings-email (80cf05d8) + +##### Documentation Changes + +* update api introductions (5ab4d2fc) +* openapi schema for newly added routes (be323255) +* update readme with new screenshot and updated copy for Harmony (7599870f) +* fix openapi spec for new property in post queue route (ddd03248) + +##### New Features + +* add hits/sec for cache (94f2e508) +* i18n post-later (655a11d0) +* update mkdirp to 3.x, closes #11455 (132476d5) +* update rimraf to 5.x, closes #11456 (43c6087b) +* update lru-cache to 9.x, closes #11454 (c3cedefe) +* #11420, add new GET routes to retrieve pending and invited members of a group, plus accept/reject pending (0788fb51) +* fallbacks for social.json (ac2aefd8) +* add social.json #11419 (c22c6e12) +* allow multiple topic selects in topic-list (645ebec8) +* update thumbs modal styling (c0b62346) +* add support for selected topic count (69f24ed9) +* change chat notification delivery (2c5a5bf3) +* add placeholder for category search (9c0996e4) +* closes #11139, move sort settings to user settings page (77ddfc64) +* display when an api key was last used, in ACP, #10873 (40222984) +* log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper (efa64032) +* add rel="author" to topic route (4cf04f06) +* search dashboard time range (ebb5d2d2) +* allow file uploads on mobile chat (79731735) +* api v3 route to add email to user, optionally bypassing validation email, closes #11009 (fdc41646) +* fire filter:topics.getUnreadTids even if there are no urnead topics (b81fd81a) +* add force flag to plugin install in cli (#11089) (d447236b) +* update transifex config (for use with new cli) (21a366ec) +* integrating basic client-side form validity checking in settings v1 and v2 (07a3cee6) +* add ./nodebb install (6fe87975) + +##### Bug Fixes + +* bump mentions and harmony (d2066f59) +* #11512, filter by cid (e8fb6711) +* closes #11511, reset skin if it was removed from bootswatch (7d7904b0) +* closes #11508, update selector (9894d05f) +* add composer:showHelpTab to api (5c26cb58) +* numeric strings in mongo (#11498) (6bed65dd) +* regression in toolmodal category selector (91851364) +* don't crash if taskbar.tasklist is not defined yet (5feb509b) +* closes #11473, kudos to @pitaj (57d64b35) +* closes #11466 (59b14978) +* #11438, show flag history to mods (6eb1dd86) +* topic thumbnail removal error Relaxed DOM selector to accommodate changed tpl (70f4d7f0) +* upload modal error handler (dd8719a1) +* #11451 , use bookmark from localstorage for guests (2235f6c2) +* closes #11446, add alert-link to 403,404,400 messages (2830d681) +* closes #11447, fix timestamp of fork event (0cd657ff) +* #11440, update timestamp on lastpost button (0e5ae212) +* throw generic not-allowed error on groups.join if a non-owner tries to add another user to a group (0fc9fdd5) +* remove socketGroups.addMember; update admin checks to allow admin:groups privilege, hide add member controls if not admin (18447b06) +* remove socketGroups.kick (f043dcec) +* remove socketGroups.issueMassInvite (9d49ec60) +* handle client-side acceptAll and rejectAll (b53f92fa) +* use api routes for group accept/reject (34d99c15) +* updating user bookmark when entering topic at the end from teaser (cc1c493b) +* closes #11437, link to queued post from event (8680ea4d) +* direct replies on dynamic posts (5d9b23ca) +* topic labels on topics_list (2615192f) +* #11396, removal of base_templates_path variable (7cb2e02c) +* dont show search input if user doesn't have tag search priv (a83734fb) +* add missing delete (2a9b3ee4) +* buttons for post queue content editing (33ad5a72) +* #9397, trash the active session on account lockout, if there is one (03e05b51) +* #11381, bug where the call to `action:settings.sorted-list.itemLoaded` did not properly pass in the correct element (2614b95c) +* #11357 clear cache on thumb remove (1e7f32b1) +* missing postAtIndex handling (e6d7e55f) +* update main post timestamp when rescheduling (5a2c6c1c) +* add back req.query fallback for backwards compatibility (83d36336) +* update csrf parser to accept csrf_token form value if present (ea95668a) +* schema changes for #11206 (9007ace1) +* new language keys for #11206 (966724ad) +* remove unneeded assignment, as req and locals will not likely ever be completely reassigned (a69bc2cf) +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (0a691e67) +* relax selectors for client-side form validation so that all form elements are checked (52e7ad4d) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (13738888) +* replace input type number with text/pattern (cde4c6ac) +* **deps:** + * update dependency mkdirp to v3.0.1 (#11516) (f66eba29) + * update dependency semver to v7.5.0 (#11492) (a8a2ebbe) + * update dependency esbuild to v0.17.18 (#11509) (f0408ea9) + * update dependency nodebb-plugin-emoji to v5.0.6 (#11510) (04f77ada) + * update dependency postcss to v8.4.23 (#11504) (967b9840) + * update dependency ace-builds to v1.18.0 (#11505) (22f6b8f6) + * update dependency nodebb-plugin-2factor to v7.0.5 (#11495) (666fe04e) + * update dependency lru-cache to v9.0.3 (#11481) (d2b8512c) + * update dependency commander to v10.0.1 (#11486) (ba2b7f5b) + * update dependency ioredis to v5.3.2 (#11487) (90fca08e) + * update dependency postcss to v8.4.22 (#11488) (fe4e9383) + * update dependency esbuild to v0.17.17 (#11489) (4cd8c2ff) + * update dependency webpack to v5.79.0 (#11476) (455de50d) + * update dependency ace-builds to v1.17.0 (#11472) (550d125d) + * update dependency helmet to v6.1.5 (#11464) (4e5fbc54) + * update dependency sass to v1.62.0 (#11468) (c1164544) + * update dependency semver to v7.4.0 (#11461) (1ab7fdc8) + * update dependency rtlcss to v4.1.0 (#11460) (c0d92961) + * update dependency helmet to v6.1.4 (#11459) (415f8781) + * update dependency helmet to v6.1.3 (#11452) (d165164a) + * update dependency esbuild to v0.17.16 (#11457) (bdacd1c6) + * update dependency helmet to v6.1.1 (#11449) (5d880e9d) + * update dependency lru-cache to v8.0.5 (#11434) (d7125a0c) + * update dependency webpack to v5.78.0 (#11436) (62a84f63) + * update dependency sass to v1.61.0 (#11443) (248c5f62) + * bump mentions (f49fc5ca) + * update dependency mongodb to v5.2.0 (#11433) (4bede9fb) + * update dependency nodebb-plugin-composer-default to v10.0.44 (#11430) (569944f1) + * update dependency esbuild to v0.17.15 (#11429) (0187e177) + * update dependency nodebb-plugin-mentions to v4.0.5 (#11417) (1ac37b43) + * update dependency webpack to v5.77.0 (#11415) (e9039018) + * update dependency nodebb-rewards-essentials to v0.2.3 (#11406) (9f5dc9ad) + * update dependency nodebb-theme-persona to v13.0.55 (#11407) (609c0558) + * update dependency esbuild to v0.17.14 (#11399) (89060027) + * update dependency nodebb-theme-persona to v13.0.53 (#11401) (415da6c2) + * update dependency sharp to v0.32.0 (#11395) (b17ab944) + * update dependency esbuild to v0.17.13 (#11397) (4ab60c88) + * update dependency csrf-sync to v4.0.1 (#11398) (e753603e) + * update dependency @popperjs/core to v2.11.7 (#11394) (6947e60b) + * update dependency sass to v1.60.0 (#11391) (400a7abf) + * update dependency rimraf to v4.4.1 (#11388) (5d2900e9) + * update dependency @isaacs/ttlcache to v1.2.2 (#11389) (96305e12) + * update dependency html-to-text to v9.0.5 (#11390) (5a7104f1) + * update dependency helmet to v6 (#10891) (97f08135) + * update dependency nodebb-widget-essentials to v7.0.7 (#11387) (98b58bcc) + * update dependency mkdirp to v2.1.6 (#11386) (8c07a8d7) + * update dependency webpack to v5.76.3 (#11385) (7f54709d) + * update dependency fs-extra to v11.1.1 (#11380) (7c780210) + * update dependency commander to v10 (#11208) (a2d3f674) + * update dependency lru-cache to v8.0.4 (#11378) (238a7809) + * update dependency lru-cache to v8 (#11356) (0d236adf) + * update dependency ace-builds to v1.16.0 (#11372) (75436dc0) + * update dependency sass to v1.59.3 (#11373) (b0b060da) + * update dependency nodebb-plugin-spam-be-gone to v2.0.6 (#11370) (6edb908b) + * update dependency cron to v2.3.0 (#11368) (ae9d6d77) + * update dependency graceful-fs to v4.2.11 (#11367) (f90696de) + * update dependency esbuild to v0.17.12 (#11366) (2273a822) + * update dependency webpack to v5.76.2 (#11361) (a5f19ee6) + * update dependency webpack to v5.76.1 (#11348) (967c0ccf) + * update dependency autoprefixer to v10.4.14 (#11344) (5afea4b7) + * update dependency terser-webpack-plugin to v5.3.7 (#11345) (29fbecfc) + * update dependency webpack to v5.76.0 (#11341) (b543a0d0) + * update dependency nodebb-plugin-spam-be-gone to v1.0.3 (#11340) (5fa38fbe) + * update dependency pg-cursor to v2.9.0 (#11338) (34cf64f5) + * update dependency pg to v8.10.0 (#11337) (9a7f73ca) + * update dependency mkdirp to v2.1.5 (#11336) (a85276a6) + * update dependency lru-cache to v7.18.3 (#11335) (b70716f1) + * update dependency esbuild to v0.17.11 (#11333) (18b3ac6e) + * update dependency ace-builds to v1.15.3 (#11332) (b8efa466) + * update dependency mkdirp to v2.1.4 (#11330) (a6f22afa) + * update dependency lru-cache to v7.18.1 (#11327) (b526d42e) + * update dependency nodebb-plugin-mentions to v3.0.13 (#11320) (22a3ba65) + * update dependency yargs to v17.7.1 (#11316) (b75212f7) + * update dependency sanitize-html to v2.10.0 (#11319) (3d855842) + * update socket.io packages to v4.6.1 (#11318) (17c2467d) + * update dependency lru-cache to v7.17.0 (#11315) (4211e4dd) + * update dependency body-parser to v1.20.2 (#11313) (02d69920) + * update dependency esbuild to v0.17.10 (#11314) (865e1506) + * bump theme versions (c76e344f) + * update dependency lru-cache to v7.15.0 (#11305) (affac569) + * update dependency ace-builds to v1.15.2 (#11304) (01b2915e) + * update dependency nodebb-plugin-composer-default to v9.2.5 (#11301) (0ad5f476) + * update dependency logrotate-stream to v0.2.9 (#11300) (e29b9b1d) + * update dependency ace-builds to v1.15.1 (#11299) (1a0910bb) + * update dependency ioredis to v5.3.1 (#11294) (75bd6caa) + * update socket.io packages to v4.6.0 (#11272) (b9bb0532) + * update dependency html-to-text to v9.0.4 (#11290) (3ef49223) + * update dependency benchpressjs to v2.5.1 (#11270) (e4e01f47) + * update dependency esbuild to v0.17.8 (#11289) (2f5f47ea) + * update dependency @socket.io/redis-adapter to v8.1.0 (#11269) (7abcf80a) + * update dependency mongodb to v4.14.0 (#11271) (98395d18) + * update dependency esbuild to v0.17.6 (#11266) (145dcb2f) + * update dependency sanitize-html to v2.9.0 (#11261) (0e9cfcad) + * update dependency validator to v13.9.0 (#11262) (7cdbf77d) + * bump persona theme (5dc4d285) + * update dependency pg-cursor to v2.8.0 (#11236) (6c872a05) + * update dependency nodebb-rewards-essentials to v0.2.2 (#11234) (c271762c) + * update dependency pg to v8.9.0 (#11235) (972d1770) + * update dependency esbuild to v0.17.5 (#11233) (1a28598b) + * update dependency ace-builds to v1.15.0 (#11223) (9b34ab66) + * update dependency ioredis to v5.3.0 (#11224) (37493514) + * update dependency nodebb-theme-persona to v12.1.14 (#11221) (94074e90) + * update dependency nodemailer to v6.9.1 (#11222) (0e0176a1) + * update dependency mkdirp to v2 (#11211) (466c7a3a) + * update dependency ioredis to v5.2.6 (#11210) (557198a3) + * update dependency nodemailer to v6.9.0 (#11205) (69f4ff75) + * update dependency ioredis to v5.2.5 (#11187) (a2b00534) + * update dependency esbuild to v0.17.4 (#11204) (d0e3eadb) + * update dependency nodebb-theme-persona to v12.1.13 (2994c42b) + * update dependency @socket.io/redis-adapter to v8.0.1 (aa873e80) + * update dependency jsonwebtoken to v9 (79cd4a36) + * update dependency nodebb-plugin-2factor to v5.1.3 (8dc96894) + * update dependency cron to v2.2.0 (#11140) (aaf9abed) + * update dependency esbuild to v0.16.16 (#11135) (4b147ee2) + * update dependency commander to v9.5.0 (#11133) (aced93de) + * update dependency postcss to v8.4.21 (#11130) (aa6788b7) + * update dependency esbuild to v0.16.15 (#11132) (581960de) + * update dependency esbuild to v0.16.14 (#11127) (95897197) + * update dependency esbuild to v0.16.13 (#11121) (ca434647) + * update dependency esbuild to v0.16.12 (#11116) (e3fa0152) + * update dependency esbuild to v0.16.11 (0ec6d6c2) + * update dependency nodebb-theme-slick to v2.0.4 (#11113) (a634481b) + * update dependency esbuild to v0.16.10 (#11104) (048f5674) + * update dependency mongodb to v4.13.0 (#11105) (3f5bda7e) + * update dependency esbuild to v0.16.8 (#11101) (db7ea20c) + * update dependency sanitize-html to v2.8.0 (#11098) (65241b1a) + * update dependency ace-builds to v1.14.0 (#11095) (10056e5b) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (cc376656) + * update dependency postcss to v8.4.20 (#11097) (d4f04511) + * update dependency compare-versions to v5.0.3 (#11092) (32fecad7) + * update dependency html-to-text to v9.0.3 (#11093) (6aab1c58) + * update dependency @socket.io/redis-adapter to v8 (#11084) (a82c6743) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (6774b35f) + * update dependency esbuild to v0.16.7 (#11086) (27a049fb) + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (c749f38c) + * update dependency esbuild to v0.16.3 (#11083) (8eb880f6) + * update dependency html-to-text to v9 (#11075) (aa3a51b1) + * update dependency ace-builds to v1.13.2 (#11080) (67ede5c6) + * update dependency fs-extra to v11 (#11072) (fa3e6540) + * update dependency esbuild to v0.15.16 (#11069) (ced87417) + * update dependency mongodb to v4.12.1 (#11062) (3c5b0210) + * update dependency mongodb to v4.12.1 (#11062) (643dce38) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11501 (2055aae1) +* //github.com/NodeBB/NodeBB/issues/11500 (9ec5f1f5) +* remove chalk (a0bac74e) +* //github.com/NodeBB/NodeBB/issues/11329 (661a6e04) +* satisfy lint errors (bb0397cb) + +##### Refactors + +* get rid of floats in deleted-message.tpl (f055b7fb) +* remove log, to much noise (9806d89f) +* group invitations; issuing, accepting, rejecting; now via API (18c45b44) +* replace rimraf glob doesn't work on windows (d36aad07) +* simple load new posts (45addcf5) +* post-queue frontend logic (ddcdaacc) +* `helpers.loginUser` to be fully async (fecdab8b) +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (14091de8) + +##### Tests + +* Blob doesnt exist in node 16 (3c6f225a) +* no need for this check (bb4be716) +* fix utils (eacbad7f) +* missing utils tests (699c3bdf) +* remove history test (9c162186) +* fix escaping (c5e83eb9) +* fix lang test (a8efe3df) +* fix openapi schema to reflect new route (92073cf2) +* fix broken test (38175b5e) + +#### v2.8.12 (2023-04-26) + +##### Chores + +* removing superfluous changelog items (5343d2a0) +* incrementing version number - v2.8.11 (2ec81eff) +* update changelog for v2.8.11 (f2ca93f6) +* incrementing version number - v2.8.10 (5b7c3671) +* incrementing version number - v2.8.9 (57f14e41) +* incrementing version number - v2.8.8 (b331b942) +* incrementing version number - v2.8.7 (3f8248d6) +* incrementing version number - v2.8.6 (af6ce447) +* incrementing version number - v2.8.5 (bff5ce2d) +* incrementing version number - v2.8.4 (a46b2bbc) +* incrementing version number - v2.8.3 (c20b20a7) +* incrementing version number - v2.8.2 (050e43f8) +* incrementing version number - v2.8.1 (727f879e) +* incrementing version number - v2.8.0 (8e77673d) +* incrementing version number - v2.7.0 (96cc0617) +* incrementing version number - v2.6.1 (7e52a7a5) +* incrementing version number - v2.6.0 (e7fcf482) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### New Features + +* name theme on error:theme-not-set-in-configuration (ae5afdbc) + +##### Bug Fixes + +* #11519, clear parent cache all the way to root (30b6bcfc) +* only remove deleted tag, closes #11515 (de2669a2) +* NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483) (c9311832) + +##### Tests + +* remove old comment (21fb8590) + +#### v2.8.11 (2023-04-11) + +##### Chores + +* incrementing version number - v2.8.10 (5b7c3671) +* update changelog for v2.8.10 (188ec62f) + +##### Continuous Integration + +* publish to ghcr instead of docker hub (c2756728) + +##### Documentation Changes + +* update readme with new screenshot and updated copy for Harmony (67055006) + +##### Bug Fixes + +* don't crash on objects with toString property (4d2d7689) +* fire action:user.online on user login (7397873d) + +##### Tests + +* update socket.io test (e0b20658) + +#### v2.8.10 (2023-03-27) + +##### Chores + +* up composer-default (e9a8e195) +* incrementing version number - v2.8.9 (57f14e41) +* update changelog for v2.8.9 (18b2150e) + +##### Bug Fixes + +* #11403, remove loader.js crash counter logic (830f142b) +* don't crash if event name is not a string (37b48b82) +* closes #11173, move cache clear code (c2961ad4) + +##### Other Changes + +* fix arrow (1aff9cad) +* whitespace (894f392b) + +#### v2.8.9 (2023-03-19) + +##### Chores + +* up cron (73a50d17) +* incrementing version number - v2.8.8 (b331b942) +* update changelog for v2.8.8 (c03d5db7) + +##### Bug Fixes + +* thumb remove on windows, closes #11357 (767c1d1f) +* #11357 clear cache on thumb remove (a3a38e4b) +* closes #11352, try/catch rss feeds (cfd50272) +* closes #11343, don't crash if tags array is empty (56427e4f) + +##### Code Style Changes + +* more fixes (93aa43f7) + +##### Tests + +* openapi for thumbs (9e685e65) + +#### v2.8.8 (2023-03-09) + +##### Chores + +* incrementing version number - v2.8.7 (3f8248d6) +* update changelog for v2.8.7 (2ca38e7b) + +##### Bug Fixes + +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (22fc8fe3) +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (17d0b40e) +* tag filtering when changing filter to watched topics (1545223e) +* get cid from pid instead of passing in (f054a4f4) +* closes #11331, allow 0 length content if set to 0 in acp (8c762d32) + +#### v2.8.7 (2023-03-01) + +##### Chores + +* incrementing version number - v2.8.6 (af6ce447) +* update changelog for v2.8.6 (f3306d03) + +##### Documentation Changes + +* update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d) + +##### Bug Fixes + +* display 25 topics on category feed (79155109) +* object destructuring overwriting type parameter (ec58700f) +* alert on page load (8cf4a6f6) +* show error alert if password change fails (3bd9a871) +* update main post timestamp when rescheduling (edd2fc38) +* show admins/globalmods if content is purged (326b9268) +* email expiry timestamps (e335d0f6) +* #11259, clean old emails when updating via admin (#11260) (845c8013) +* #11257, onSuccessfulLogin called with improper uid (7a5bcc21) + +##### Tests + +* add dummy emailer hook in authentication test (1b29dbb6) + +#### v2.8.6 (2023-02-03) + +##### Chores + +* **i18n:** fallback strings for new resources: nodebb.error (8335f90a) +* incrementing version number - v2.8.5 (bff5ce2d) +* update changelog for v2.8.5 (24e58c28) + +##### New Features + +* add sitemap filter hooks for categories/topic pages (bf92ee0e) +* closes #11241, add missing error lang keys (c241baf6) +* #11240, only show relevant users in flags assignee list (0713482b) + +##### Bug Fixes + +* #11254, return check for reroll property (202378b9) +* closes #11249, notification uses displayname (705cd13a) +* wrong link to topics in acp dashboard (b5598a6e) +* https://github.com/NodeBB/NodeBB/issues/11239 (1d3c0e5a) +* notif filter selecte field (6d819b05) + +##### Other Changes + +* remove unused (d68352cc) + +#### v2.8.5 (2023-01-27) + +##### Chores + +* incrementing version number - v2.8.4 (a46b2bbc) +* update changelog for v2.8.4 (c13f0e21) + +##### Bug Fixes + +* import resolution within plugin modules (#11219) (f6c96948) + +#### v2.8.4 (2023-01-26) + +##### Chores + +* incrementing version number - v2.8.3 (c20b20a7) +* update changelog for v2.8.3 (eb2841ee) + +#### v2.8.3 (2023-01-25) + +##### Chores + +* remove extraneous lines from changelog (48c9f447) +* incrementing version number - v2.8.2 (050e43f8) +* update changelog for v2.8.2 (66aa3169) + +##### Bug Fixes + +* import resolution within plugin modules (#11200) (89e059a0) +* #11195, allow users with admin:users privilege to delete users in acp (0bffd3d9) +* #11194, allow access to sub dashboard pages (7d04e952) +* #11136, tests, and returning the proper number of arrays (459bc523) +* #11136, only show mods of active categories when getModeratorUids is called (39e009c0) +* closes #11173, clear require cache if wrong dependency is installed (747cb1f0) +* **deps:** + * downgrade swagger-parser to v9 (00e48803) + * pinning sub dependency json-schema-ref-parser to 9.0.9 (9c250b78) + +##### Reverts + +* a788bd1344825ad4759e39d6e98d8bf3695bd639 (fecd84d1) +* 9c250b78b05ca2abf31a79971ed0c60ca07664ec, fix: comment out broken test for now (a788bd13) + +##### Tests + +* fix broken test (f295174e) + +#### v2.8.2 (2023-01-13) + +##### Chores + +* incrementing version number - v2.8.1 (727f879e) +* update changelog for v2.8.1 (d17d4ec0) + +##### Bug Fixes + +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (25ae58e8) + +#### v2.8.1 (2022-12-30) + +##### Chores + +* fallbacks for new language string (8a69e740) +* remove extraneous lines from changelog (bbaf26ce) +* incrementing version number - v2.8.0 (8e77673d) +* update changelog for v2.8.0 (a5c2edb9) + +##### Bug Fixes + +* vulnerability in socket.io nested namespaces (#11117) (586eed14) +* lock post/reply similar to user.create (1ea9481a) + +#### v2.8.0 (2022-12-21) + +##### Chores + +* **deps:** + * update dependency jquery to v3.6.3 (#11107) (13a3faa0) + * update dependency eslint to v8.30.0 (#11102) (485ee130) + * update dependency mocha to v10.2.0 (#11094) (c4cc1e61) +* up jquery (3e8f5378) +* remove extraneous lines from changelog (e213dbc3) +* incrementing version number - v2.7.0 (96cc0617) +* update changelog for v2.7.0 (4701c96d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (717b3612) + * fallback strings for new resources: nodebb.admin-settings-email (4f4b4800) + +##### New Features + +* add force flag to plugin install in cli (#11089) (de31cb1a) +* integrating basic client-side form validity checking in settings v1 and v2 (33af2d9c) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.31.3 (#11110) (ef500af8) + * update dependency sanitize-html to v2.8.1 (#11109) (7ab46b78) + * update dependency esbuild to v0.16.10 (#11104) (eb6a9c47) + * update dependency mongodb to v4.13.0 (#11105) (05443dbe) + * update dependency esbuild to v0.16.8 (#11101) (18ff6caa) + * update dependency sanitize-html to v2.8.0 (#11098) (faaf09f7) + * update dependency ace-builds to v1.14.0 (#11095) (cde44587) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (5dda9a5b) + * update dependency postcss to v8.4.20 (#11097) (0a5adb41) + * update dependency compare-versions to v5.0.3 (#11092) (8b209f16) + * update dependency html-to-text to v9.0.3 (#11093) (7bcfe38e) + * update dependency @socket.io/redis-adapter to v8 (#11084) (7b9bbef5) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (7b48156c) + * update dependency esbuild to v0.16.7 (#11086) (65ef722e) + * update dependency esbuild to v0.16.3 (#11083) (4f67fc1a) + * update dependency esbuild to v0.15.16 (#11069) (22493ffb) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (896493db) +* replace input type number with text/pattern (2bc23a95) + +##### Refactors + +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (9f531f95) +* remove debug log closes #11090 (06f4801e) + +#### v2.7.0 (2022-12-14) + +##### Chores + +* added stub file in hy (9ee8502d) +* **deps:** + * update dependency lint-staged to v13.1.0 (#11082) (693d4783) + * update dependency eslint to v8.29.0 (#11074) (eab5b754) + * update dependency lint-staged to v13.0.4 (#11064) (f947ac6d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (0e319a58) + * fallback strings for new resources: nodebb.admin-settings-email (9676b192) + +##### New Features + +* update transifex config (for use with new cli) (f11094cb) +* integrating basic client-side form validity checking in settings v1 and v2 (dadbcd73) +* add ./nodebb install (4efc19d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (df3f1c5e) + * update dependency esbuild to v0.16.3 (#11083) (85d38158) + * update dependency html-to-text to v9 (#11075) (d8e9738d) + * update dependency ace-builds to v1.13.2 (#11080) (35be4594) + * update dependency fs-extra to v11 (#11072) (aafb7f6e) + * update dependency esbuild to v0.15.16 (#11069) (7bc4b836) + * update dependency mongodb to v4.12.1 (#11062) (e14d4abc) +* relax selectors for client-side form validation so that all form elements are checked (43e7c988) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (db8d3a94) +* replace input type number with text/pattern (45ae31f8) +* categories.js not showing custom privileges (#10856) (8c4d6bbe) +* #11077, add admin uploads paths to priv mapping (07a02125) + +##### Tests + +* dont try to load admin upload routes (c2bb2b30) + +#### v2.6.1 (2022-11-28) + +##### Chores + +* incrementing version number - v2.6.0 (e7fcf482) +* update changelog for v2.6.0 (eedd84ae) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Documentation Changes + +* remote extraneous lines from changelog (8a15e58d) + +##### Bug Fixes + +* prototype vulnerability in socket.io onMessage (48d14392) +* #11066, fix custom privilege/path in routePrefixMap (0e495f9e) + +##### Refactors + +* not deprecated on 2.x (91c2e5ac) + +#### v2.6.0 (2022-11-23) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-advanced (1d7dbf14) + * fallback strings for new resources: nodebb.admin-settings-advanced (05b6758e) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.admin-settings-email (9ad3b214) +* **deps:** + * update commitlint monorepo to v17.3.0 (#11058) (f4784205) + * update dependency eslint to v8.28.0 (#11059) (d480f26b) + * update dependency jsdom to v20.0.3 (#11054) (5750ded1) + * update dependency jquery to v3.6.1 (#11048) (6611d44c) + * update dependency eslint-config-nodebb to v0.2.1 (#11043) (07c81d5d) + * update commitlint monorepo to v17.2.0 (#11026) (26be289e) + * update dependency husky to v8.0.2 (#11018) (4b3978be) + * update dependency eslint to v8.27.0 (#11004) (4fcef7c5) + * update dependency jsdom to v20.0.2 (#11014) (a6e4fee1) + * update dependency mocha to v10.1.0 (#10980) (ffa117ab) + * update dependency eslint to v8.25.0 (3719233a) + * update dependency jsdom to v20.0.1 (#10934) (241b7c4f) + * update dependency eslint to v8.24.0 (#10922) (8bcbff33) + * update commitlint monorepo (#10888) (3f30056a) + * update postgres docker tag to v14 (#10829) (5aa55d29) + * update dependency eslint to v8.23.1 (#10885) (0c6fb6e3) +* remove derpy extra changelog bits (445f09f0) +* incrementing version number - v2.5.8 (dec0e7de) +* update changelog for v2.5.8 (c9cd8975) + +##### New Features + +* add permissions-policy header (864fe0f9) +* allow groups to be exempt from maintenance mode (3c85b944) +* add search data to filter:search.inContent (be92be4e) +* add relevant topic events to post objects (a584dae6) +* client-side hooks for navigator scroll action (135fe55b) +* j and k hotkeys in topic to navigate through it quickly (aeb94c32) +* a couple utility methods in navigator module to get and set count and index (9f9a835f) +* paginate recentposts.rss and (ebd7c05c) +* add quiet to action:settings.set (665f36b7) + +##### Bug Fixes + +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (110311b2) +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (fc49665f) +* #11052, add missing await (bb82eb71) +* pin jquery version for all packages that include it as a subdependency (a87f64b4) +* #10877, define a resolution for jquery subdependency of timeago (5aaebdd3) +* #11044, allow banned users to post (abcfb631) +* check schedule privilege, closes #11032 (61090615) +* mixing of old and new bch syntax (1e484643) +* category ordering add test (61d32bde) +* use `--omit=dev` flag for npm instead of `--production` (53d47a58) +* update nav thumb on setIndex call (thx @barisusakli) (664bc5f5) +* do not call `navigator.update()` when `scrollToElement` is explicitly passed a new index value (b7287c1e) +* race condition where `navigator.update` was called when it should not be (fa643eb8) +* be tidier and explicitly clean up ctrl-f hotkey on topic page (5b9de0e5) +* listen to -d flag on cli upgrade (fe249fa5) +* automatically remove `lang` parameter if it matches the forum default (881c7c4d) +* **deps:** + * update socket.io packages to v4.5.4 (#11061) (709ca59d) + * update dependency esbuild to v0.15.15 (#11056) (d449710e) + * update dependency nodebb-theme-persona to v12.1.12 (#11057) (18eb35a1) + * update dependency cropperjs to v1.5.13 (#11055) (13f3a048) + * update dependency nodebb-plugin-markdown to v10.1.1 (#11047) (62a60cbf) + * update dependency mongodb to v4.12.0 (#11049) (59b4d95f) + * update dependency connect-pg-simple to v8 (#11033) (ca162c04) + * update dependency ace-builds to v1.13.1 (#11045) (e0b9240d) + * update dependency esbuild to v0.15.14 (a5355d78) + * update dependency nodebb-theme-persona to v12.1.11 (2af7fd5f) + * update dependency postcss to v8.4.19 (#11028) (b94bb1bf) + * update dependency ace-builds to v1.13.0 (#11031) (313d0c32) + * update dependency webpack to v5.75.0 (#11027) (40c9cc05) + * update dependency yargs to v17.6.2 (#11025) (8d3907b5) + * update dependency lru-cache to v7.14.1 (#11023) (1ea2a32b) + * update dependency sharp to v0.31.2 (#11024) (51919f7a) + * update dependency esbuild to v0.15.13 (#11021) (c4a1905b) + * update dependency ioredis to v5.2.4 (#11022) (e144debb) + * update dependency ace-builds to v1.12.5 (#11019) (de507f72) + * update dependency mongodb to v4.11.0 (#10994) (9ca2482a) + * update dependency autoprefixer to v10.4.13 (#11020) (35d67ad3) + * update dependency nodebb-plugin-composer-default to v9.2.4 (#10998) (5a5771e1) + * update dependency sanitize-html to v2.7.3 (#11008) (73a60854) + * update dependency nodebb-plugin-composer-default to v9.2.3 (#10997) (ee4fde13) + * update dependency esbuild to v0.15.12 (#10996) (29fddd65) + * update dependency nodebb-plugin-composer-default to v9.2.2 (1fc2f1e8) + * update dependency nodebb-theme-persona to v12.1.9 (6471b698) + * bump composer-default (7b9e0847) + * update dependency ace-builds to v1.12.3 (1e930f9d) + * update dependency nodebb-theme-persona to v12.1.8 (#10982) (9900e5f4) + * update dependency ace-builds to v1.12.2 (4260f0c2) + * update dependency ace-builds to v1.12.1 (6485bc25) + * update dependency ace-builds to v1.12.0 (#10978) (00ce8fd8) + * update socket.io packages to v4.5.3 (#10977) (fb41fbe7) + * update dependency nodebb-plugin-emoji to v4.0.6 (dcca3397) + * update dependency esbuild to v0.15.11 (ff69c3e1) + * update dependency @isaacs/ttlcache to v1.2.1 (647bbd57) + * update dependency nodebb-plugin-mentions to v3.0.12 (60d0145b) + * update dependency postcss to v8.4.18 (3c2a636c) + * update dependency nodebb-plugin-spam-be-gone to v1.0.2 (#10958) (b68faa09) + * update dependency body-parser to v1.20.1 (#10941) (0f63947b) + * update dependency express to v4.18.2 (#10948) (ff53064c) + * update dependency semver to v7.3.8 (#10937) (1b89b661) + * update dependency nodebb-theme-persona to v12.1.7 (1873b527) + * update dependency commander to v9.4.1 (#10928) (855a2bad) + * update dependency postcss to v8.4.17 (#10929) (d84ee308) + * update dependency nodemailer to v6.8.0 (#10925) (222ab6ae) + * update dependency yargs to v17.6.0 (#10931) (7c3c3d02) + * update dependency nodebb-plugin-spam-be-gone to v1.0.1 (#10912) (28d1844e) + * update dependency ace-builds to v1.11.2 (#10923) (87c84fe8) + * update dependency sharp to v0.31.1 (#10926) (8e23e410) + * update dependency ace-builds to v1.11.1 (#10920) (ce77605a) + * update dependency ace-builds to v1.11.0 (#10909) (d900fd17) + * update dependency autoprefixer to v10.4.12 (#10911) (54294871) + * update dependency compare-versions to v5 (#10890) (f971385b) + * bump persona #10907 (846eda0a) + * bump persona, #10907 (27c80d39) + * update dependency mongodb to v4.10.0 (#10908) (bbe7f779) + * update dependency nodebb-theme-persona to v12.1.3 (#10903) (0debc51b) + * update dependency nodebb-plugin-2factor to v5.1.1 (02fe6875) + * update dependency nodebb-theme-persona to v12.1.2 (425bf87b) + * update dependency sanitize-html to v2.7.2 (#10893) (bfeb0368) + * update dependency autoprefixer to v10.4.11 (#10892) (0758655a) + * update dependency sharp to v0.31.0 (#10887) (2836be5c) + * update socket.io packages to v4.5.2 (#10884) (22f3d0bb) + * update dependency nodebb-plugin-2factor to v5.1.0 (#10886) (335990be) + * update dependency autoprefixer to v10.4.10 (#10883) (0c2a88de) + * update dependency winston to v3.8.2 (#10882) (d911a1bf) + * update dependency pg to v8.8.0 (#10863) (01129a39) + * update dependency nodebb-plugin-emoji to v4.0.5 (#10881) (34d243e4) + * update dependency ioredis to v5.2.3 (#10861) (5e375e4a) + * update dependency pg-cursor to v2.7.4 (#10862) (86b63fab) + * update dependency mongodb to v4.9.1 (#10880) (5583ab95) + * update dependency autoprefixer to v10.4.9 (#10879) (cc6798bb) + * update dependency postcss to v8.4.16 (#10824) (8c680db5) + * update dependency jquery to v3.6.1 (#10868) (6687f49b) + * update dependency ace-builds to v1.10.1 (#10840) (c0c3ee01) + * bump composer-default to v9.2.0 (29ddeaa1) + +##### Refactors + +* don't prevent startup if staticDir is undefined (b34e859c) +* added new ajaxify method .cleanup, called before ajaxify.start. (3700174c) + +#### v2.5.8 (2022-11-09) + +##### Chores + +* really fix indents this time (c2024f34) +* fix indents (d50512e7) +* add bootstrap5 to test runner for now (be5d6d29) +* incrementing version number - v2.5.7 (5836bf4a) +* update changelog for v2.5.7 (17e948ab) + +##### New Features + +* new search hooks (b5d38bc6) +* add search data to filter:search.inContent (e3f21562) + +##### Bug Fixes + +* pass csrf_token into calls to /register/abort, #11017 (2f9d8c35) +* check for csrf token on /register/abort, + theme changes for v2.x branches of themes (55a197a7) +* upgrade script to work from 0.x to 2.x (a31ba824) +* #10519, image height in emails (673261ff) +* fallback language strings for #10987 (b9c8c02f) +* #10993, apply autoLocale middleware to guests only (6f673f80) +* check cid as well as template (9227b82e) +* revert breaking change, add back SocketUser.emailConfirm (9ee30fe7) +* in appropriately named language key `email-confirm-email2` (09f3ac65) +* correctly pass dev flag to package installer (7672194c) +* use `--omit=dev` flag for npm instead of `--production` (09cfd0bd) + +##### Refactors + +* use utils.debounce (d264c6ac) + +##### Tests + +* fix tests again (06d15391) +* fix test (c833d3cd) + +#### v2.5.7 (2022-10-14) + +##### Chores + +* incrementing version number - v2.5.6 (c7bd7dbf) +* update changelog for v2.5.6 (e92238d0) + +##### Performance Improvements + +* speed up build (dd4e9cce) + +#### v2.5.6 (2022-10-13) + +##### Chores + +* incrementing version number - v2.5.5 (3509ed94) +* update changelog for v2.5.5 (e7d0040d) + +##### Bug Fixes + +* use admin:groups priv for groups (#10960) (b879b6a0) +* https://github.com/NodeBB/NodeBB/issues/10525 (e35b0a86) + +#### v2.5.5 (2022-10-11) + +##### Chores + +* up plugins (b91ef6dd) +* incrementing version number - v2.5.4 (e83260ca) +* update changelog for v2.5.4 (aabf073c) + +#### v2.5.4 (2022-10-11) + +##### Chores + +* 🤔 (7240e8ce) +* incrementing version number - v2.5.3 (7e922936) +* update changelog for v2.5.3 (fdf240f6) + +##### Continuous Integration + +* add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi (fe0020fb) + +##### Bug Fixes + +* EEXISTS error on linux if plugin/theme overrides core js file (ebd5dcc6) +* category ordering add test (177d9048) +* crash in category drag, closes #10932 (989b55d0) +* broken flag history on flag update (803398e9) +* scroll to post if theme doesn't have top navbar (aad0a618) +* add lru-cache to checked packages, to fix upgrade issue with lru-cache (14515f60) + +#### v2.5.3 (2022-09-19) + +##### Chores + +* remove duplicate version increment lines in changelog (5dbcfef9) +* bring back treding plugins (8aa1596d) +* incrementing version number - v2.5.2 (babcd17e) +* update changelog for v2.5.2 (84b6a7c7) + +##### New Features + +* store topic title and tags in diffs (#10900) (b5dd89e1) + +##### Bug Fixes + +* #10906, allow `middleware.checkAccountPermissions` to be called with either uid or userslug in params (cf4f5447) +* #10896, unescape / in taskbar (8e2129f8) +* add back timeago to post history modal (d3e38df8) +* **deps:** bump composer-default to v9.1.1 (1d80a07e) + +##### Other Changes + +* fix lint (3d5a6b39) + +##### Performance Improvements + +* disable trending plugins, too slow due to nbbpm (b392450c) + +##### Tests + +* add back /admin/extend/plugins test (1c9c39a8) + +#### v2.5.2 (2022-09-04) + +##### Chores + +* incrementing version number - v2.5.1 (ce3aa950) +* update changelog for v2.5.1 (2b2fd4f3) + +##### Bug Fixes + +* registration regression, closes #10875 (f6f37dc1) + +##### Other Changes + +* fix lint error (b45e2413) + +##### Tests + +* disable nbbpm test temporarily (1dc79d76) + +#### v2.5.1 (2022-09-02) + +##### Chores + +* incrementing version number - v2.5.0 (01d276cb) +* update changelog for v2.5.0 (1076285d) + +##### Bug Fixes + +* missing escape on ACP category backgroundImage property (67cb7035) +* **deps:** temporarily add back old textcomplete dependencies so emoji plugin can import them (61d1e9e0) + +#### v2.5.0 (2022-09-01) + +##### Breaking Changes + +* reduce nodebb.min.js size by around 800kb (b7addffc) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation (e20433ec) + * fallback strings for new resources: nodebb.admin-settings-post (fcbbb4d6) + * fallback strings for new resources: nodebb.admin-advanced-cache (90fc50e1) +* move @textcomplete and its modules to composer-default (3cbb7a3d) +* remove client-side js file for tpl that no longer exists (bc2ea860) +* incrementing version number - v2.4.5 (dd3e1a28) +* update changelog for v2.4.5 (d505cc47) + +* **deps:** + * update dependency eslint to v8.22.0 (#10835) (8fce68d3) + * update mongo docker tag to v3.7 (8afaed22) + * update docker/setup-qemu-action action to v2 (4aecf399) + * update redis docker tag to v2.8.23 (#10811) (269382e0) + * update redis docker tag to v2.8.23 (#10811) (59fd0efe) + +##### Documentation Changes + +* **openapi:** v3 spec for new user export routes (70652ad4) + +##### New Features + +* remove visibilityjs (#10870) (19207325) +* introduce ACP defined option to rescind notif or do nothing on flag resolve/reject (15b1561f) +* allow v3 api to handle 202 and 204 response codes as well. (0cda5aa3) +* don't show signatures again in pagination mode in same topic (0a6900fc) +* setting to show signatures only once in topics, closes #10071 (aba420a3) +* add event type to topic event component (bcb94ede) +* allow plugins to add to admin cache list (#10833) (a9bbb586) + +##### Bug Fixes + +* **deps:** + * update dependency compare-versions to v4.1.4 (884d4075) + * update dependency mongodb to v4.9.0 (e51004e2) + * update dependency lru-cache to v7.14.0 (d8a52f81) + * bump composer-default to v9 (81f8d84f) + * remove textcomplete in favour of @textcomplete/core (same package, just refactored) (b7bcc367) + * update dependency nodebb-theme-persona to v12.1.1 (#10838) (444b4d57) + * update dependency ace-builds to v1.9.5 (4c44d125) + * update dependency lru-cache to v7.13.2 (4ddc0c7a) + * update dependency nodemailer to v6.7.8 (dd385184) + * pin dependency @isaacs/ttlcache to 1.2.0 (150a7488) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (9a7dd3a3) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (69c87c2c) +* empty thread tools container on open (a088eb19) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (c1936e87) +* empty thread tools container on open (df36d967) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (3dd3cd82) +* removing duplicate session rerolling code (as it is in passport@^0.6 now) (65b3996a) +* don't crash if post is undefined (e06e526e) +* return at least one in sizeCalculation (#10832) (3975fa2e) + +##### Refactors + +* remove console.log (a2d0cd16) +* move export generation logic to v3 controller, GET/HEAD routes for exports (d0570518) +* use group.slug on acp group urls closes #8277 (14c79763) + +##### Tests + +* have some build tests not pollute build folder (7c5a915d) +* User.hidePrivateData (b424ba46) +* passport0.6 (#10638) (33458701) + +#### v2.4.5 (2022-08-22) + +##### Chores + +* incrementing version number - v2.4.4 (d5525c87) +* update changelog for v2.4.4 (77e492b8) + +##### Bug Fixes + +* wrap passport.authenticate to pass in keepSessionInfo if not already set (9b96c33d) +* parseInt caller.uid closes #10849 (bc37a5c5) + +#### v2.4.4 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.3 (9c647c6c) +* update changelog for v2.4.3 (06da15a5) + +##### Bug Fixes + +* missing req, closes #10847 (489fb3a3) + +#### v2.4.3 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.2 (3aa7b855) +* update changelog for v2.4.2 (ba7a3466) + +##### Bug Fixes + +* #10845, disallow inline viewing of uploaded html files (4dc7fa05) + +#### v2.4.2 (2022-08-17) + +##### Chores + +* incrementing version number - v2.4.1 (60cbd148) +* update changelog for v2.4.1 (4b6baabb) + +##### Documentation Changes + +* explain what export routes actually do in OpenAPI documentation (#10836) (72e7b9f7) + +##### Bug Fixes + +* #10841, incorrect conditional in email interstitial partial (ec048a01) +* don't crash if post is undefined (4a3e36a7) + +##### Tests + +* passport0.6 (#10638) (6b2a6f90) + +#### v2.4.1 (2022-08-14) + +##### Chores + +* **deps:** + * update docker/build-push-action action to v3 (bfd6318c) + * update docker/login-action action to v2 (3d68accf) + * update docker/setup-buildx-action action to v2 (371ac032) +* incrementing version number - v2.4.0 (4834cde3) +* update changelog for v2.4.0 (c4714ff7) + +##### Bug Fixes + +* return at least one in sizeCalculation (#10832) (15ca460c) + +#### v2.4.0 (2022-08-10) + +##### Chores + +* **deps:** + * update dependency eslint to v8.21.0 (13a17bd1) + * bump commander from 7.2.0 to 9.4.0 in /install (993b7747) +* update to new transifex project url (659cfe85) +* re-order interstitial tests so email and gdpr tests are in sub-blocks (342cca35) +* opt-out of dependabot, due to conflicts with renovate (70d60289) +* incrementing version number - v2.3.1 (d2425942) +* update changelog for v2.3.1 (2f487175) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (cdaa8f21) + * fallback strings for new resources: nodebb.admin-settings-email (3e56c547) + * fallback strings for new resources: nodebb.user (bcf7ef67) + +##### New Features + +* support packageManager property in package.json (b3a37a7f) +* automatically enable the SMTP transport option if the SMTP service is changed (4055e3bd) +* present a password challenge on email update flow (7fcee42b) +* add client side filter:chat.send, closes #10729 (cb084cbd) +* fire hook to allow plugins to filter the pids returned in a user profile (17e44ff5) +* closes #10719, don't trim children if category is marked section (be917e8d) +* closes #10719, don't trim children if category is marked section (0bec52bc) + +##### Bug Fixes + +* adapt to breaking change in commander (38bf30c8) +* move panel-offset setting code back to theme header (d0255fc6) +* #10808; tweak copy for gmail app passwords support (7082291b) +* don't require password challenge if no password is set in user account (9d27e907) +* do not throw if password passed into `isPasswordCorrect` is invalid, just return false (287f4c2c) +* don't crash if req.body.username is not string (7e8ad785) +* don't crash if target/user is undefined (55c5588a) +* race condition causing undefined ajaxify.data (4586f68e) +* #10809, test runner to only run tests for plugins included in `test_plugins` (1ca09b63) +* #10805, hide unconfirmed emails from user data retrieval methods (cba9047f) +* use different emoji on NodeBB Ready — again because procrastination (3e062a7f) +* unnecessary escape (cd438b32) +* remove socket.io cluster adapter (#10742) (456b8798) +* #10783, do not purge files without a timestamp prefix (dc3a6a29) +* **deps:** + * bump persona v12.1.0 (1465598d) + * bump 2factor to v5.0.2 (bd18004d) + * update dependency sanitize-html to v2.7.1 (#10792) (f02492bd) + * update dependency html-to-text to v8.2.1 (f22790c0) + * update dependency webpack to v5.74.0 (e748e31f) + * update dependency autoprefixer to v10.4.8 (#10799) (4ca0d571) + +##### Performance Improvements + +* make single db call (d73f0f9c) + +##### Tests + +* additional tests for password challenge on email update (65c59cc1) +* add dummy emailer hook to suppress sendmail error logging (8e1a4bb5) +* fix one last failing test (68bcd7f4) +* fix user email tests (06f089af) +* fix tests so that when user.create is called, email is set prior to confirmation (f93a0b83) + +#### v2.3.1 (2022-07-29) + +##### Chores + +* **deps:** + * bump sanitize-html from 2.7.0 to 2.7.1 in /install (7b606d2e) + * bump webpack from 5.73.0 to 5.74.0 in /install (a9900625) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-advanced, nodebb.admin-menu, nodebb.error (17120e03) +* incrementing version number - v2.3.0 (046ea120) +* update changelog for v2.3.0 (a6f7fff0) + +##### New Features + +* add emoji to startup logs, because procrastination. (5176fb15) + +##### Bug Fixes + +* #10798, logic error in COEP header; helmet config (89173f17) +* #10795, early return for selection tooltip based on calling user privilege (847d2b91) +* **deps:** update persona to v12.0.14 (9f225e70) + +#### v2.3.0 (2022-07-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13 (07ce0c39) + * bump ace-builds from 1.7.1 to 1.8.1 in /install (f397d968) + * bump ioredis from 5.2.0 to 5.2.2 in /install (067a5110) +* have renovate work off of `develop` branch instead (f334e398) +* update changelog for v2.2.5 (6c3ebf3b) + +##### New Features + +* add client side filter:chat.send, closes #10729 (b2da02d6) +* UI changes for ACP > Manage > Categories (#10782) (820bc994) +* show an informative message when no plugins are found after filtering (6840a742) +* Allow defining active plugins in config (#10767) (23cb67a1) +* allow plugins to toggle whether IPs are shown in the users CSV export (a6af47da) +* fire hook to allow plugins to filter the pids returned in a user profile (c26be43a) +* closes #10719, don't trim children if category is marked section (7e80cc10) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.8.1 (8384b7cf) + * update dependency helmet to v5.1.1 (03a173bb) +* bug where fallback to forum search was not working due to client-side error (25046642) +* better looking placeholder text for ACP search (1b9c6819) +* use `user.hidePrivateData();` more consistently across user retrieval endpoints (0529f2fb) +* minor margin tweak for alert in acp header (4faf0cdf) +* cannot turn off all networks (bbc7f2af) +* cannot setting networks for sharing posts (2e088a8e) + +##### Refactors + +* invert helmet configuration (dcacd815) + +#### v2.2.5 (2022-07-21) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.19.0 to 8.20.0 in /install (8d109fef) + * bump @commitlint/config-angular in /install (2a88a50f) +* **deps:** + * bump cron from 2.0.0 to 2.1.0 in /install (4c1bda32) + * bump jquery-ui from 1.13.1 to 1.13.2 in /install (abb19e98) + * bump nodebb-theme-persona in /install (9e52b8c6) + * bump ioredis from 5.1.0 to 5.2.0 in /install (8c20fdad) +* incrementing version number - v2.2.4 (d1d63e6b) +* update changelog for v2.2.4 (52f7ed64) +* incrementing version number - v2.2.3 (f80476b9) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* expire email validation tokens on password change (c93bd010) +* remove extraneous console.log (0d58e8a6) +* **deps:** update dependency mongodb to v4.8.0 (bff239da) + +#### v2.2.4 (2022-07-12) + +##### Chores + +* **deps:** + * update docker/metadata-action action to v4 (42a45a71) + * bump ace-builds from 1.5.3 to 1.7.1 in /install (d568d2f5) + * bump winston from 3.8.0 to 3.8.1 in /install (26b73b39) + * bump ioredis from 5.0.6 to 5.1.0 in /install (0d55c42d) + * bump nodemailer from 6.7.5 to 6.7.7 in /install (bd37b286) +* **deps-dev:** + * bump @commitlint/cli from 17.0.2 to 17.0.3 in /install (9e44cdad) + * bump eslint from 8.18.0 to 8.19.0 in /install (7139ad5f) +* incrementing version number - v2.2.3 (f80476b9) +* update changelog for v2.2.3 (8719a93f) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* **deps:** update dependency diff to v5.1.0 (452e5bf7) +* #10733, extraneous apostrophes in plugin upgrader (3c41ae04) +* get version from install/package.json instead (60114219) +* #10739, always re-add theme to active plugins, on theme set (8d701ec3) + +#### v2.2.3 (2022-07-05) + +##### Chores + +* incrementing version number - v2.2.2 (343ffa66) +* update changelog for v2.2.2 (f59ddc34) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* move call to `ajaxify.parseData` out to root level (b778e38c) +* move `ajaxify.parseData` back out to DOMContentLoaded (2582cb53) + +##### Refactors + +* rewrite ajaxify.parseData in vanilla (165b804d) + +#### v2.2.2 (2022-06-30) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0) + * bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9) +* incrementing version number - v2.2.1 (efc77b2a) +* update changelog for v2.2.1 (667780cf) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73) +* observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce) + +##### Refactors + +* allow user.hidePrivateData() to handle an array of `userData` (3f5ae893) + +#### v2.2.1 (2022-06-24) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (da481163) + * fallback strings for new resources: nodebb.admin-settings-advanced (34d75e96) +* add in warning in language directories about not editing files directly (06074e8c) +* incrementing version number - v2.2.0 (eecb836d) +* update changelog for v2.2.0 (bb3766df) + +##### Documentation Changes + +* remove the redundant security policy template (7f5b285e) + +##### New Features + +* cross origin opener policy options (#10710) (88132358) + +##### Bug Fixes + +* **deps:** + * update dependency winston to v3.8.0 (#10725) (d4a5039e) + * update dependency sharp to v0.30.7 (#10724) (0a07c2c0) +* handle ENOENT on file deletion, closes #10645 (43f9e6c8) + +##### Tests + +* fix i18n tests (05c30677) + +#### v2.2.0 (2022-06-15) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (f5afb5c3) + * fallback strings for new resources: nodebb.admin-manage-users (b1dc0531) + * fallback strings for new resources: nodebb.topic (d7d32a8a) +* remove unnecessary `affected` set from deprecated plugin hook (bef236f3) +* bump persona, #10699 (c7fa73b1) +* bump vanilla (d90fc18b) +* bump persona, closes #10566 (5bc972df) +* update changelog for v2.1.1 (ca038b84) +* **deps:** + * bump less from 4.1.2 to 4.1.3 in /install (#10685) (78322636) + * bump nodebb-plugin-2factor from 5.0.0 to 5.0.1 in /install (#10686) (701d8d76) + * bump spdx-license-list from 6.5.0 to 6.6.0 in /install (c82d34c8) + +##### New Features + +* new cronjob and ACP option to delete orphans after configurable number of days, closes #10659 (88aee439) +* allowed plugins to modify email verification details prior to db saving or email send/plugin fire (b9d4724e) +* pass absolute url to post into post tools response, #10566 (ece733ed) + +##### Bug Fixes + +* no need to pass in empty Set in deprecated hooks (3a015eb8) +* #10696, fix alert for password reset email (2da188fe) +* #10692 (b6f8e2fd) +* #10690, all uploads in `uploads/files` showing orphaned (a04da673) +* bug where post associations are not shown when the directory is `files` (7f870beb) + +##### Refactors + +* move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans (22368b99) + +##### Tests + +* add more asserts to failing test (ea1ed667) + +#### v2.1.1 (2022-06-08) + +##### Chores + +* **deps:** + * bump nodebb-theme-persona from 12.0.8 to 12.0.9 in /install (bb39dfba) + * bump mongodb from 4.6.0 to 4.7.0 in /install (a8987856) + * bump async from 3.2.3 to 3.2.4 in /install (ce38f711) + * bump xregexp from 5.1.0 to 5.1.1 in /install (eb9a46f8) + * bump webpack from 5.72.1 to 5.73.0 in /install (#10677) (6239a1ff) + * bump nodebb-theme-slick from 2.0.1 to 2.0.2 in /install (557648e6) +* **deps-dev:** + * bump @commitlint/config-angular in /install (e5e788d2) + * bump eslint from 8.16.0 to 8.17.0 in /install (52c86dba) +* incrementing version number - v2.1.0 (a3114d33) +* update changelog for v2.1.0 (7121949d) + +##### Documentation Changes + +* fix changelog to more accurately reflect new changes (a9744416) + +##### Bug Fixes + +* #10675, don't ajaxify to /assets/ urls (48564cfa) + +##### Other Changes + +* //github.com/pichalite/nodebb-theme-slick/issues/60 (6a0339de) + +#### v2.1.0 (2022-06-02) + +##### Chores + +* update changelog for v2.1.0 (7121949d) +* incrementing version number - v2.1.0 (987045c3) +* bump persona (91f32487) +* update changelog for v2.0.1 (abd8e216) +* incrementing version number - v2.0.1 (768427d4) +* remove optional `middleware` parameter from setupPageRoute and setupAdminPageRoute calls (54ff768f) +* add note re: sort module (5aca106b) +* up emoji (265a0139) +* update changelog for v2.0.0 (60fc3f5d) +* incrementing version number - v2.0.0 (f23c3ff5) +* **deps:** + * bump nodebb-plugin-2factor from 4.0.1 to 5.0.0 in /install (6e95e5c5) + * update dependency lint-staged to v12.5.0 (01f607a5) + * update dependency lint-staged to v12.4.3 (8885d228) + * update dependency eslint to v8.16.0 (#10654) (f6728404) + * bump sharp from 0.30.4 to 0.30.5 in /install (#10651) (d9f2096d) + * bump postcss from 8.4.13 to 8.4.14 in /install (#10652) (0772ec07) + * bump socket.io-client from 4.5.0 to 4.5.1 in /install (#10653) (a13a523b) + * update dependency lint-staged to v12.4.2 (#10647) (18e76c21) + * bump nodebb-plugin-mentions in /install (#10648) (e894147c) + * bump helmet from 5.0.2 to 5.1.0 in /install (#10641) (5faaf6a1) + * bump socket.io from 4.5.0 to 4.5.1 in /install (#10639) (9d9b3f4e) + * bump ioredis from 5.0.4 to 5.0.5 in /install (#10637) (f9c9ac9c) + * bump ace-builds from 1.4.14 to 1.5.1 in /install (#10636) (acf188b0) + * bump yargs from 17.4.1 to 17.5.1 in /install (#10624) (c7aefe9c) + * update dependency @commitlint/cli to v16.3.0 (1dc96717) + * bump mongodb from 4.5.0 to 4.6.0 in /install (#10603) (aee74bd6) + * bump express-session from 1.17.2 to 1.17.3 in /install (#10604) (b1967681) + * bump webpack from 5.72.0 to 5.72.1 in /install (#10600) (06edb6e6) +* **deps-dev:** + * bump @commitlint/cli from 17.0.1 to 17.0.2 in /install (#10672) (5f6e9f67) + * bump @commitlint/cli from 16.3.0 to 17.0.1 in /install (#10644) (fe873182) + * bump @commitlint/config-angular in /install (#10614) (9c4ef133) + * bump husky from 8.0.0 to 8.0.1 in /install (#10595) (54876583) + * bump grunt from 1.5.2 to 1.5.3 in /install (fcb6c191) + * bump husky from 7.0.4 to 8.0.0 in /install (#10591) (03453a62) + * bump eslint from 8.14.0 to 8.15.0 in /install (#10592) (0d75c6cb) +* **i18n:** + * fallback strings for new resources: nodebb.user (2bace634) + * fallback strings for new resources: nodebb.admin-manage-admins-mods (192aa2d3) + +##### New Features + +* add clipboard to runtime modules (39d61061) +* add mute history, closes #10596 (c926358d) +* allow unban/unmute on flag details page. closes #10593 (9acdc680) +* paginaton for admins-mods, closes #10610 (b860c260) +* fix typo, show route in deprecation notice for third-param removal in `setupPageRoute` (14110596) +* add button to see category children, closes #10606 (a5831412) +* closes #10601, ability to prevent alerts on topic list (dc320c89) +* add post to hook params (f07b4484) +* add sorted-list.parse (e904f438) +* add new hook that fires when sorted-set list modal is shown (8faa6f23) +* #10585, ability to mute from flag details (7867ccd7) +* send back missing parameters as array of missing properties, in API response (0c19b1e5) +* add hook for user invite (323dbc97) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.5.3 (#10667) (e7fd1861) + * update dependency ioredis to v5.0.6 (#10668) (5bafab79) + * update dependency nodebb-theme-persona to v12.0.8 (#10669) (e47a63f0) + * update dependency nodebb-plugin-2factor to v4.0.1 (#10665) (356f9a18) + * update dependency ace-builds to v1.5.2 (#10664) (7b5f53fc) + * update dependency nodebb-theme-persona to v12.0.7 (#10666) (a9a26836) + * update dependency sharp to v0.30.6 (#10662) (23232508) + * update dependency nodebb-theme-persona to v12.0.5 (#10649) (1fd68281) + * update dependency cron to v2 (#10568) (ad370202) + * update dependency clipboard to v2.0.11 (#10574) (db67a50a) + * update dependency nodebb-theme-slick to v2.0.1 (#10578) (d98f4ea9) + * update dependency nodebb-theme-persona to v12.0.2 (#10577) (930aefcf) + * update dependency nodemailer to v6.7.5 (#10573) (6eef08f9) +* buildBreadcrumbs naively prepending relative path even if absolute paths are passed in (a3564260) +* more generic copy for notif/chat button labels (f6a7582c) +* #10642, fix order of dom ready events (2bfccac7) +* get rid of math.random in utils.generateUUID (e802fab8) +* #10528, gray out disabled nav items (7e4d2852) +* encode privilege name for API call (92abb352) +* #10631, fix user digest setting display acp (0084b563) +* translate api error messages to user lang, closes #10623, (b17a81bf) +* alert template error. closes #10620 (24a640d9) +* closes #10621, convert \r\n to \n so it isn't counted as 2 characters (3a009f96) +* remove ev, hooks don't pass event, closes #10611 (082a9e1d) +* 'unread' postIndex regression closes #10607 (0e60a704) +* clear dragging on mouseup as well (70ad4a52) +* #10588 exit code 1 on failed plugin activation (e2ff1e39) +* #10584, dont show backlinks if you dont have read privilege (5e7d366f) +* #10586, fix webinstaller folders (1928a186) +* closes #10583, replace removed socket method with api method (5e82cf23) +* add missing fs-extra, #10580 (e7077393) + +##### Other Changes + +* unnecessary escape (60eeae95) +* fix semicolon (3a77e714) + +##### Refactors + +* return module if it doesn't have default export (12b58fcf) +* deprecate middleware param (#10513) (84f27263) + +##### Tests + +* fix tests again (191fb9f4) +* fix UUID test (6677efd7) + +#### v2.0.1 (2022-05-28) + +##### Bug Fixes + +* get rid of math.random in utils.generateUUID (a4ab49c2) + +#### v2.0.0 (2022-05-04) + +##### Chores + +* incrementing version number - v2.0.0 (f23c3ff5) +* update changelog for v1.19.7 (a764df52) +* **deps:** + * update dependency mocha to v10 (a7986773) + * bump nodebb-plugin-dbsearch from 5.1.3 to 5.1.4 in /install (#10545) (a2e263a1) + * update dependency smtp-server to v3.11.0 (62f1c78a) +* **i18n:** + * fallback strings for new resources: nodebb.post-queue (d617c665) + * fallback strings for new resources: nodebb.post-queue (3492dd11) + * fallback strings for new resources: nodebb.error, nodebb.flags (72d47a0b) + +##### New Features + +* show number of selected posts in reject confirm (012860a4) +* post queue bulk actions closes #10520, fix #10555, (23175110) +* output canonical URL as last line on NodeBB boot (e4a9c078) + +##### Bug Fixes + +* **deps:** + * update dependency @socket.io/redis-adapter to v7.2.0 (#10571) (c3c77915) + * update dependency autoprefixer to v10.4.7 (#10563) (68168a7d) + * update dependency nodebb-theme-persona to v12.0.1 (#10561) (1d446e14) + * update dependency nodebb-plugin-mentions to v3.0.10 (#10560) (eb3c398e) + * update dependency nodebb-plugin-dbsearch to v5.1.5 (#10559) (c3ff28ff) + * update dependency nodebb-plugin-mentions to v3.0.9 (#10554) (1acbe4c1) + * update dependency postcss to v8.4.13 (#10553) (6217db00) + * update dependency express to v4.18.1 (#10550) (b0dc5615) + * pin dependency webpack to 5.72.0 (#10549) (672ab25a) + * update dependency cron to v1.8.3 (#10543) (d6843294) + * update dependency bootbox to v5.5.3 (#10531) (8d47f352) + * update dependency nodemailer to v6.7.4 (#10540) (afefee08) +* #10569, fix category move event text (ea01ba01) + +##### Refactors + +* not used anymore (d2e6f317) + +#### v1.19.7 (2022-04-28) + +##### Breaking Changes + +* #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking] (46fbe156) + +##### Chores + +* incrementing version number - v1.19.7 (0c4850e2) +* update changelog for v1.19.6 (acca7811) +* **deps:** + * update commitlint monorepo to v16.2.4 (0d9179f7) + * update dependency lint-staged to v12.4.1 (#10527) (804542e4) + * bump socket.io from 4.4.1 to 4.5.0 in /install (#10523) (0c2d015c) + * update dependency eslint to v8.14.0 (#10514) (40b7ff4b) + * update dependency lint-staged to v12.4.0 (fff818c6) + * update dependency lint-staged to v12.3.8 (7c1d98c7) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (01e65395) + +##### New Features + +* make it simpler to use redis sentinels (82389469) +* closes #10501, minimum reputation to chat (b28f9f77) + +##### Bug Fixes + +* typo in hook name (21dbd476) +* upload test for latest sharp (424db9ff) +* #10502, allow unblocking admin/mod (b9f91643) +* **deps:** + * update dependency express to v4.18.0 (#10526) (5ae690a6) + * update socket.io packages to v4.5.0 (#10522) (d86c447a) + * update dependency autoprefixer to v10.4.5 (#10521) (5ce4c874) + * update dependency nodebb-plugin-2factor to v3.0.7 (#10510) (b81a0cfe) + * update dependency nodebb-widget-essentials to v5.0.11 (#10517) (a767d623) + * update dependency sharp to v0.30.4 (#10504) (a36911fc) + * update dependency prompt to v1.3.0 (#10487) (07678fb5) + * update dependency nconf to v0.12.0 (#10496) (fe492b11) + * update dependency archiver to v5.3.1 (#10500) (6c727859) + +##### Refactors + +* closes #10509 (7f241dbb) +* show invalid uri (ac125538) +* skip content length check if submitting from post-queue (a8e642ad) + +##### Tests + +* remove node18 until nodemailer is fixed (50658a82) +* remove node 12, add 18 (976914e7) + +#### v1.19.6 (2022-04-13) + +##### Chores + +* incrementing version number - v1.19.6 (283a0072) +* update changelog for v1.19.5 (05032ca2) +* **deps:** + * bump semver from 7.3.6 to 7.3.7 in /install (#10493) (65cec8d0) + * update dependency grunt to v1.5.2 (9f496659) + * update dependency grunt to v1.5.1 (0a8bf44e) + * update dependency grunt to v1.5.0 (e82d8bb6) + * update dependency eslint to v8.13.0 (bc3aabb4) + * update dependency eslint-plugin-import to v2.26.0 (a2ebf53b) + * bump nodebb-theme-persona from 11.4.3 to 11.4.4 in /install (#10437) (5b1789c1) + * bump nodebb-plugin-composer-default in /install (#10438) (c8c42933) + * update dependency eslint to v8.12.0 (a6590e20) + * update dependency lint-staged to v12.3.7 (#10407) (5f36ad39) +* **i18n:** fallback strings for new resources: nodebb.post-queue (a06d1246) + +##### New Features + +* #10460, add cutoff to suggested topics (799e94e0) +* add response:helpers.notAllowed (e8058ca3) +* add filter:image.stripEXIF (b8765df5) +* add confirm to reject, closes #10427 (538ad9e1) +* allow client-side hook registration chaining (b88bb3cf) +* delete flagId field from post/user on flag purge (31251282) +* add flags.purge (3b529b84) +* new admin events, closes #10405 (421ba6e1) +* add Albanian localisation :tada: (309968bf) + +##### Bug Fixes + +* dont add caller to arrays (5316029f) +* #10491, don't leak deleted message in cleanedContent (c52401da) +* #10473, trim trailing slashes on config url (9f91db16) +* closes #10436, fix DST issue on acp dashboard (39877763) +* delete history as well (002a241c) +* handle purge posts as well (93b60532) +* byCid removal, targetCid not stored in flagObj (03fdb5be) +* upgrade script (55be4202) +* column counts for other privileges (2b9b2b4a) +* **deps:** + * update dependency nodebb-plugin-mentions to v3.0.8 (#10490) (7c733e9c) + * update dependency winston to v3.7.2 (#10454) (dc03a2f9) + * update dependency nconf to v0.11.4 (#10481) (f253bbdd) + * update dependency yargs to v17.4.1 (#10480) (bbf2b73e) + * update dependency ioredis to v5.0.4 (#10479) (88200ec1) + * update dependency html-to-text to v8.2.0 (#10471) (91026e5f) + * update dependency semver to v7.3.6 (#10466) (c50de911) + * update dependency html-to-text to v8.1.1 (#10470) (b3ec8059) + * update dependency nodebb-widget-essentials to v5.0.10 (#10461) (b6517cfd) + * update dependency body-parser to v1.20.0 (#10450) (26511185) + * update dependency spdx-license-list to v6.5.0 (#10452) (5e37f34e) + * update dependency graceful-fs to v4.2.10 (#10457) (947fa193) + * update dependency mongodb to v4.5.0 (#10458) (30f728ca) + * update dependency ioredis to v5.0.3 (#10446) (0d744d30) + * update dependency ioredis to v5 (#10434) (060ad1b0) + * update dependency nodebb-plugin-2factor to v3.0.6 (#10435) (0ac426e0) + * update dependency nodebb-plugin-composer-default to v7.0.21 (#10429) (898e0e89) + * update dependency nodebb-plugin-spam-be-gone to v0.8.1 (#10425) (47399bfe) + * update dependency sortablejs to v1.15.0 (#10418) (12cd1df2) + * update dependency nodemailer to v6.7.3 (#10421) (7e542495) + * update dependency yargs to v17.4.0 (#10416) (eaa05517) + * update dependency nodebb-theme-persona to v11.4.3 (#10414) (720a9dba) + * update dependency connect-redis to v6.1.3 (#10390) (06594131) +* **security:** + * explicitly declare cache-control header instead of using middleware (38ca73c4) + * cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers. (1f6f389f) + * explicitly set cache-control 'private' on any page where a header is built (e39cdd49) + +##### Performance Improvements + +* WIP #10449, allow array of pids for posts.purge (#10465) (76797371) +* #10410, faster upgrade script (dab22d5f) + +##### Refactors + +* replace deprecated String.prototype.substr() (#10432) (200f0b2e) +* remove some verbose logging (9abe22a0) +* :trollface: (29b86b32) +* shorter generateTopicClass (f76c0e89) + +#### v1.19.5 (2022-03-16) + +##### Chores + +* incrementing version number - v1.19.5 (48d6eb4f) +* update changelog for v1.19.4 (0e6e49b2) +* **deps:** + * bump less from 3.13.1 to 4.1.2 in /install (#9856) (d33485f6) + * bump autoprefixer from 10.4.2 to 10.4.4 in /install (#10403) (90094935) + * update dependency lint-staged to v12.3.6 (0a4522a2) + * update commitlint monorepo to v16.2.3 (0a97015d) + * bump nodebb-plugin-spam-be-gone in /install (#10387) (445e3d70) + * bump connect-redis from 6.1.1 to 6.1.2 in /install (#10391) (145621f7) + * update dependency eslint to v8.11.0 (feaf3068) + * update dependency mocha to v9.2.2 (#10383) (4ffbd78d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-manage-users (2f09c22c) + * fallback strings for new resources: nodebb.admin-manage-privileges, nodebb.admin-manage-users, nodebb.error, nodebb.user (15508bac) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (5274a6aa) + +##### New Features + +* collect hook logs in order to reduce console noise, flush on ajaxify loadScript completion (935704a8) +* add support for PATCH method in api module (4b79dfd2) +* on online users page override timeago cutoff to 24 hours (7c946570) +* ability to mute users (be6bbabd) +* min:rep:upvote, and other limits similar to downvotes (3414a23b) +* post-queue hooks, closes #10381 (2056ac04) + +##### Bug Fixes + +* topic events if there is a blocked user in topic (3935a86b) +* topic events disappearing if there are queued posts (2808c952) +* #10393, move 'Create User' control to overflow menu (cd687cff) +* don't append to history on refresh or ajaxify to same url (c83987bd) +* global privs (7d063d73) +* #10384 -- mixed up sizes for fallback touch icons (cb113208) +* #10377, remove logging of env vars (997ab7d4) +* **deps:** + * update dependency postcss to v8.4.12 (#10396) (bdbc168d) + * update dependency sharp to v0.30.3 (#10389) (b4213859) + +##### Refactors + +* closes #10301 (c8e986d6) + +##### Tests + +* skip i18n tests if the github event is a pull request (e578c605) +* fix middleware test (24c1f879) +* fix category tests (6344c3b6) +* fix one more test (a5511425) + +#### v1.19.4 (2022-03-09) + +##### Chores + +* incrementing version number - v1.19.4 (67282057) +* delay `filter:email.send` removal to v2.0.0 (83fd4311) +* up persona (c23b2089) +* incrementing version number - v1.19.3 (09cb11c8) +* update changelog for v1.19.3 (0b48ec54) +* **deps:** + * bump postcss from 8.4.7 to 8.4.8 in /install (#10372) (d7a4ae1f) + * update dependency lint-staged to v12.3.5 (517ae926) + * bump nodebb-plugin-spam-be-gone in /install (81e7ca20) + * update dependency eslint to v8.10.0 (e83c8be2) + * bump postcss from 8.4.6 to 8.4.7 in /install (52ee5ce8) + * bump json2csv from 5.0.6 to 5.0.7 in /install (e44cbb24) + * update dependency smtp-server to v3.10.0 (67e4df78) + * update dependency mocha to v9.2.1 (00eebf10) + * bump prompt from 1.2.1 to 1.2.2 in /install (21913b5b) + * bump express from 4.17.2 to 4.17.3 in /install (5321ba4d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.flags (a5fe8350) + * fallback strings for new resources: nodebb.topic (dc0f9a73) + +##### New Features + +* add hook filter:posts.getUserInfoForPosts (df46ab48) +* add translateKeys (e841d59a) +* post auto flagging on downvotes #10029 (#10367) (62187caa) +* closes #10324, show recently online users as well (eac9cd03) +* resolve paths for staticDirs as well (e0b1c374) +* ability to go through your posts in a topic (b517b376) +* **sorted-list:** add new client-side hook `filter:settings.sorted-list.loadItem` (92d613e4) + +##### Bug Fixes + +* apply some DRY (a3b4c668) +* optional params (e9a86cb9) +* #10374, use quick search in setting (70e613f8) +* #10366, remove dupe /files (371b4658) +* always show self on /users?online (56345777) +* db call (21cd1e61) +* lastonline timestamps and display for guests (cc665fd6) +* #10357 (7ee4e4e0) +* #10358, bad uploads path (5479f364) +* #10360, only take top level posts (37ef8366) +* #10354, flag actions regression (fec907d9) +* dont overwrite asset_base_url if its set (0e12f82d) +* allow calls to api module without a defined payload (914733e4) +* #10334, use the correct env vars for web install (6b22d0e1) +* persona test fail (10a5901e) +* #10316, fix quoting regression (0b813d60) +* #10322 (5694e62e) +* #10329, select elements in sorted-list not showing proper values (1fa41342) +* allow translation keys in `label` attributes (52836f3a) +* don't load setup.json into nconf if setup.json doesn't exist (6e156daa) +* regression caused by 94b79ce4024f72a3eee2cfa06b05d8f66898149f (4164898d) +* **deps:** + * update dependency nodebb-plugin-markdown to v9.0.10 (bcb68ee9) + * update dependency mongodb to v4.4.1 (#10364) (4b730df9) + * update dependency nodebb-theme-persona to v11.4.2 (#10361) (4d590f65) + * update dependency body-parser to v1.19.2 (#10298) (c75714b7) + * update dependency sharp to v0.30.2 (#10359) (1a6c2c55) + * update dependency nodebb-plugin-mentions to v3.0.7 (#10355) (3e5a0f0d) + * update dependency nodebb-plugin-2factor to v3.0.5 (f30c65a4) + * update dependency nodebb-theme-persona to v11.4.1 (#10337) (b84e61d5) + * update dependency nodebb-theme-persona to v11.4.0 (#10325) (244d8801) + * update dependency nodebb-plugin-mentions to v3.0.6 (#10328) (31cbff19) + * update dependency nodebb-plugin-dbsearch to v5.1.3 (#10330) (1c1062e1) + * update dependency nodebb-plugin-markdown to v9.0.8 (#10327) (c17b9bd4) + * update dependency mongodb to v4.4.0 (#10319) (afd2993d) + * update dependency nodebb-plugin-emoji to v3.5.17 (#10314) (04900291) + * update dependency nodebb-plugin-dbsearch to v5.1.2 (#10313) (0e30362b) + * update dependency nodebb-widget-essentials to v5.0.9 (#10307) (5666c103) + * update dependency nodebb-widget-essentials to v5.0.8 (#10306) (636f1baf) +* **sorted-list:** + * call loadItem hook on add/edit items as well as on item retrieval, refactor edit to call parse() (1c8d1d23) + * only call `.stripHTMLTags()` on string values (fb4f89f3) + +##### Refactors + +* show a louder deprecation notice, alert once for each hook, not per plugin per hook (93b80f17) +* move header unread code to separate module (40230725) +* remove code that doesn't do anything (4a1e761a) +* wrap around if at end (3acd2ac8) +* change lang string (94961196) + +##### Tests + +* possible fix random psql test failure (50ed3a32) +* log configJSON (9db90a30) +* check contents of config.json in tests (32f69301) + +#### v1.19.3 (2022-02-16) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (4043f179) + * fallback strings for new resources: nodebb.user (775d9077) +* **deps:** + * update dependency lint-staged to v12.3.4 (9577ef8d) + * update commitlint monorepo to v16.2.1 (2290cee5) + * update dependency eslint to v8.9.0 (763cd193) +* remove punycode dep (e9cb1452) +* incrementing version number - v1.19.2 (e49b31f0) +* update changelog for v1.19.2 (f012984d) + +##### New Features + +* delete diffs on post purge, closes #10291 (e9e48a75) +* closes #10296 (58b5781c) +* deleting a user upload dissociates from posts, and vice versa (d5ed8736) +* #10276, dont change/revert theme if its current (398d25c2) + +##### Bug Fixes + +* #10302, fix regression (503e27f7) +* one last try (9205169f) +* doggy.gif (2f64d633) +* one more fix (cfdfbf32) +* dupe key errors (770fcd9e) +* #10292, delete missing fields (dbf7a458) +* local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()` (b9edee14) +* #10144, automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired (84dfda59) +* four-space indents in package.json (9aa3e442) +* #10289, remove lodash dependency in src/cli/package-install.js (81fa2e22) +* non-functional upgrade script (1c7fb8fe) +* language keys (350052ec) +* #10273, properly calculate item count for best/controversial (d70ce3a9) +* **deps:** + * update dependency nodebb-plugin-emoji to v3.5.16 (#10297) (b47ca86d) + * update dependency nodebb-plugin-markdown to v9.0.7 (#10293) (5b0d4a8e) + * update dependency nodebb-plugin-emoji to v3.5.14 (#10295) (7af057fa) + * update dependency nodebb-plugin-mentions to v3.0.5 (#10294) (55a98183) + * update dependency winston to v3.6.0 (#10285) (22da7a10) + * update dependency nodebb-plugin-markdown to v9.0.6 (3225a1af) + * update dependency nodebb-plugin-spam-be-gone to v0.7.13 (#10280) (3dc108d3) + * update dependency nodebb-plugin-emoji to v3.5.12 (#10279) (2c0b6322) + * update dependency nodebb-plugin-emoji to v3.5.11 (#10274) (766ef4e5) + +##### Refactors + +* lazy load slugify (946d351f) +* .deleteUpload() to accept array of paths (7ef9c7d2) +* fix user uploads paths, and associate uid with user uploads (ea36016d) +* change the post uploads' hash seeds to have the `files/` prefix (6489e9fd) +* abstract some common code out to local utility methods (aad0c5fd) +* move post upload tests to its own file (d92da828) +* remove extra zset remove, closes #10277 (489c0d30) + +##### Code Style Changes + +* linting errors (5d7e1ebc) + +##### Tests + +* fix topic thumb tests and topic thumbs to work properly with post upload assoc. (fb78570c) +* user uploads.js tests (8c2752ba) +* testing user upload methods, already fixed one bug (11275d68) + +#### v1.19.2 (2022-02-09) + +##### Chores + +* up persona (14ecafb6) +* up markdown (8a4b7dc4) +* add missing quote (b98758d3) +* use source and current local vars, + docs (9e4147f0) +* up persona (1eaae1d0) +* up emoji (106ef7cf) +* persona (3b4cf971) +* persona (78db61cf) +* up deps (c7a56439) +* add punycode dependency (452f29c0) +* up persona (d50d4a9e) +* up persona (458606bc) +* up persona (cfe53305) +* up persona (f29bed27) +* up packages (b4a4e60e) +* up persona (3e30b6cd) +* incrementing version number - v1.19.1 (7f450268) +* update changelog for v1.19.1 (55df683a) +* **deps:** + * bump ioredis from 4.28.4 to 4.28.5 in /install (#10254) (b496ad44) + * bump nodebb-widget-essentials in /install (#10219) (b71025ce) + * update dependency lint-staged to v12.3.3 (6ba25557) + * update dependency eslint to v8.8.0 (153693e0) + * bump nodebb-theme-persona in /install (#10199) (2db54e67) + * update dependency lint-staged to v12.3.2 (814cb66b) + * update dependency mocha to v9.2.0 (05e2b354) + * bump helmet from 5.0.1 to 5.0.2 in /install (1f037bf6) + * update dependency lint-staged to v12.3.1 (ac244af3) + * update dependency lint-staged to v12.3.0 (7060837b) + * bump helmet from 4.6.0 to 5.0.1 in /install (5d3900dc) +* **i18n:** + * fallback strings for new resources: nodebb.modules (a71b8e59) + * fallback strings for new resources: nodebb.global, nodebb.pages (aa812f03) + * fallback strings for new resources: nodebb.users (70eeb204) + * fallback strings for new resources: nodebb.admin-settings-email (e9588ca7) + * fallback strings for new resources: nodebb.admin-settings-advanced (2ec4e31f) + +##### Documentation Changes + +* openapi spec for new route (9b912db7) +* some tweaks to cli help (c869d7db) + +##### New Features + +* handle array of keys in psql exists for zsets (5143ca33) +* upgrade script to clean up leftover :thumb zsets (0ac28435) +* more tests for ensuring downvoted posts are added to the :votes zset (1b8eeaf8) +* upgrade script to store downvotes posts in the user :votes sorted set (cf88483f) +* new accounts route to show most downvoted ('controversial') posts (5afd5de0) +* v3 user email tests (aa8914a1) +* allow gif profile images, sharp 0.30.0 supports gifs (7f1c4477) +* detect alternative package managers based on lockfile (8ba9e67c) +* new language key for user search in chat (766ad6b7) +* remove colors in favour of chalk (#10142) (cf8f62ae) +* add upload helper module for drag&drop, paste, closes #6388 (cf5c0968) +* no more sending emails to banned users, + feature flag (ea27eaf1) +* push the theme name into body class (e1e1d522) +* add ACP toggles for COEP and CORP headers (d91aeea3) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.30.1 (#10270) (8e52abe8) + * update dependency nodebb-widget-essentials to v5.0.7 (#10269) (6c0f7034) + * update dependency nodebb-theme-persona to v11.3.37 (#10265) (78d48c37) + * update dependency ioredis to v4.28.5 (#10252) (721a70c0) + * update dependency connect-redis to v6.1.1 (#10260) (a10e4940) + * update dependency nodebb-theme-persona to v11.3.36 (#10253) (0e2a4a2d) + * update dependency nodebb-theme-persona to v11.3.35 (#10251) (6465e012) + * update dependency pg-cursor to v2.7.3 (#10244) (e6185883) + * update dependency nodebb-theme-persona to v11.3.33 (#10248) (32477676) + * update dependency nodebb-theme-vanilla to v12.1.17 (#10249) (8f5b5ef1) + * update dependency nodebb-plugin-emoji to v3.5.9 (#10250) (1eb0939e) + * update dependency sanitize-html to v2.7.0 (#10246) (845717b8) + * update dependency pg to v8.7.3 (#10243) (531a3b1e) + * update dependency connect-redis to v6.1.0 (#10245) (c343b631) + * update dependency nodebb-theme-persona to v11.3.31 (#10241) (f1bed441) + * update dependency nodebb-plugin-composer-default to v7.0.20 (#10231) (a4702959) + * update dependency nodebb-theme-persona to v11.3.30 (#10232) (916a0db3) + * update dependency nodebb-plugin-emoji to v3.5.8 (#10239) (ebf4e12b) + * update dependency sharp to v0.30.0 (#10221) (2924cd3b) + * update dependency ioredis to v4.28.4 (#10224) (cda07cb7) + * update dependency clipboard to v2.0.10 (2c605d1c) + * update dependency sitemap to v7.1.1 (1bf938da) + * update dependency winston to v3.5.1 (b0dd68bb) + * pin dependency punycode to 2.1.1 (e7ba24c5) + * update dependency postcss to v8.4.6 (322f1033) + * update dependency nodebb-plugin-markdown to v9 (7d5080cd) + * update dependency ace-builds to v1.4.14 (#10200) (c50f6512) + * update dependency winston to v3.5.0 (#10202) (a7f142be) + * update dependency clipboard to v2.0.9 (#10203) (c6164e48) +* remove extraneous devDependencies on package merge (a2c7d69e) +* #10257, topic thumbs not deleting on topic deletion (0f788b8e) +* #10256, allow quote tooltip on mobile (fb3f4f9a) +* #10255, create verified/unverified groups on install (08f2a050) +* controversial posts/bests posts not showing anything (079c487d) +* regression in package.json merging logic that caused extraneous packages to not be removed (d34471f6) +* #10229, package merging should deep merge nested objects (689c125c) +* use fs.promises (a0a38706) +* bug where .reduce() exploded due to no initial value, if input value was an empty array (5cff6e3f) +* https://github.com/NodeBB/NodeBB/issues/10242 (dcb201df) +* missing early return (ad635175) +* handle case where email is explicitly passed into user.create, and thus is set in user hash, but confirmation request may have expired (936562c3) +* #10236, don't check email:uid, instead verify an email confirmation is active (0322e984) +* don't crash if requestedFields is undefined (98839108) +* a missed invocation of colors (c3d926ff) +* proactively guard against homograph characters in website values (fa7dcdb9) +* #10208, don't use leading slash in directory names (1d01741a) +* don't crash if quick search doesn't return posts (93d18383) +* properly unregister hooks in emailer tests (fc2c755c) +* email ban tests (dee9cca3) +* update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler (d4e5259f) +* derp (b3f7b742) +* bug where page wouldn't complete loading if data.scripts was emptied (578145ac) +* use escaped group names in invite modal (2a89ad82) +* https://github.com/julianlam/nodebb-plugin-mentions/issues/170 (dc6e629d) +* #10197, fix relative path urls for dashboard pages (92a249c9) +* actually, CORP is ok (df8c8ad8) +* update defaults for corp and coep to be more permissive, for now, to be reverted for v1.20.0 (4467299e) +* if no group label is selected, select no group title option (94da5026) + +##### Other Changes + +* remove unused require (6be330f2) + +##### Performance Improvements + +* increase batch size (b548083b) + +##### Refactors + +* update chat plcaeholder message (fbd9ba79) +* updated package-install.js exports style, new exported method 'getPackageManager' for use in cases where nconf is unreliable, fix bug where nconf was not correctly set up in cli tools, proper installation of dev dependencies based on global env value (9a169085) +* emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent (f0e32ff1) +* sorted-list .get() to be async fn (89b559a2) + +##### Tests + +* fix occasional test failure (2dbdd181) +* add test to verify that a sorted set is automatically deleted if its last element is removed (#10261) (60680876) +* stricter isValidationPending check (d1b1f50b) +* fix derp (680e36da) +* up acp plugin page timeout (a214f9a6) + +#### v1.19.1 (2022-01-21) + +##### Chores + +* **deps:** + * bump compare-versions from 4.1.2 to 4.1.3 in /install (#10154) (4a5182e4) + * update dependency lint-staged to v12.2.2 (f090de36) + * update dependency @commitlint/cli to v16.1.0 (44d81a95) + * update dependency lint-staged to v12.2.1 (857ac480) + * update dependency @commitlint/cli to v16.0.3 (9c63d076) + * update dependency lint-staged to v12.2.0 (1a0c117d) + * update dependency eslint to v8.7.0 (8abaf3f6) + * update dependency mocha to v9.1.4 (f5ad173b) +* up persona (89871d71) +* add test.sh to gitignore (d7796f0b) +* delete test script (250274c7) +* remove unused lang key #10180 (2fe91e36) +* incrementing version number - v1.19.0 (18b0a29f) +* update changelog for v1.19.0 (c8f1bc53) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-user (78cd6de7) + * fallback strings for new resources: nodebb.user (3ec9197c) + * fallback strings for new resources: nodebb.email (354aa1a5) + +##### New Features + +* revert label js change (1c80adf1) +* hide all categories link on flags filters (e9d0db28) +* nicer error handling for bad jwt in unsubscribe template (31ea2266) + +##### Bug Fixes + +* **deps:** + * update dependency jquery-ui to v1.13.1 (#10186) (55b3a355) + * update dependency multiparty to v4.2.3 (#10188) (7fa2ba70) + * update dependency nodebb-theme-persona to v11.3.15 (#10155) (e03d4747) + * update dependency mongodb to v4.3.1 (#10178) (693ca1f1) + * update dependency nodebb-plugin-composer-default to v7.0.18 (#10164) (2c75cce6) +* urls used when recent/unread/popular/top is used as the homepage (28359665) +* mark unread button showing the selected category (fdfafb44) +* catch exceptions from sendNotifications (c1ec2047) +* multiple cid filter on flags page (3e8cb732) +* post indices if there is a blocked user in topic (f9279b63) +* dont add duplicate link backs (3b72ff87) +* #10175, fix topic linkbacks duplicating on post edit (b06c6329) +* #10173, don't show optional message if email is required (d1eb21c5) +* #10172, fix postqueue accept/reject notification text (6a75ed50) +* #10167, fix regression prevent guest post (4799efc7) +* CSRF handler to go back to saving in session (#10159) (e9ee843b) +* #10158, fix extra padding (03f5cbcc) + +##### Refactors + +* add method to error messages (c9fabb0e) + +##### Tests + +* add failing guest csrf test (#10169) (10949184) + +#### v1.19.0 (2022-01-13) + +##### Breaking Changes + +* `GET /chats/:roomId/users` [breaking] (6eea6451) +* remove socket.emit('user.exists') (1f063058) +* remove socket.emit('user.changeUsernameEmail') (6b45dee9) +* #10077, store nav items in objects (69c96078) +* remove socket.emit('topics.follow') (f918a381) +* remove socket.emit('topics.post') (6ad04721) +* remove socket.emit('user.banUsers'); (49641a32) +* remove socket.emit('posts.reply') (4604a572) +* remove socket.emit('user.changePicture') (6d95684b) +* remove socket.emit('user.search') (0d694c78) +* remove socketHelpers.setDefaultPostData (99f865c6) +* remove deprecated groups socket calls (02ea17ea) +* remove deprecated methods (0d1e57dc) +* remove socket.emit('posts.delete') (bd1cb2d4) +* remove socket.emit('posts.upvote') (ec1d5e38) +* remove socket.emit('posts.move') (8427c5d9) +* remove socket.emit('posts.edit') (4247f624) +* remove socket.emit('posts.bookmark/unbookmark') (f7418ccd) +* remove deprecated admin.groups methods (07e2741e) +* remove socket.emit('categories.getCategory') (45d755b6) +* remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') (cc3f82bc) +* remove deprecated socket.emit('admin.categories.update') (0b9c01f9) +* remove deprecated socket.emit('admin.categories.purge') (ba5d2e7b) +* remove deprecated socket.emit('admin.categories.create') (b3353723) +* remove deprecated socket.emit('admin.categories.getAll') (10c19af2) +* remove getTopicPosts(tid, ...) usage (170e5dd9) +* remove deprecated post diff socket calls (8117b7f2) +* remove deprecated user middlewares (1a7fffc7) +* remove action:category.loaded, use action:topics.loading (36aa6034) +* remove setTopicSort/setCategorySort (6dcdf1d3) +* remove deprecated socket user create/delete functions (a7d1dfb6) +* remove deprecated uploads.delete (c93d7fdb) +* remove deprecated methods (79de48c5) +* remove socket.io/flags.js (c5f08fdc) + +##### Chores + +* org; merge consecutive await calls into one Promise.all (be4dbe34) +* fix #9213 (0a5420ed) +* revert engines change in install/package.json (487f25ba) +* update renovate config (f95acce3) +* update renovate range strategy... (bc0f33df) +* remove debug logs in test/api.js (82768fcf) +* use apiv3 for room rename tests (e745e212) +* trigger lang (540eeae9) +* up themes (71fa8175) +* right dropdown (7aa85882) +* right dropdown (a998cc1c) +* update readme mongodb version (af5393ec) +* incrementing version number - v1.18.6 (3a78a151) +* update changelog for v1.18.6 (3c8109e2) +* **deps:** + * update commitlint monorepo (56d134c3) + * update dependency lint-staged to v12.1.7 (40e7007f) + * update dependency lint-staged to v12.1.6 (f78108ac) + * update dependency eslint-plugin-import to v2.25.4 (a69afdb6) + * update dependency lint-staged to v12.1.5 (12038039) + * update dependency eslint to v8.6.0 (b546ff4e) + * update dependency lint-staged to v12.1.4 (87779fc8) + * update dependency jsdom to v19 (#10053) (ee05b762) + * update dependency lint-staged to v12.1.3 (c0dd8dcb) + * update dependency eslint to v8.5.0 (55b9fab1) + * update dependency eslint to v8.4.1 (ba02f015) + * update dependency eslint to v8.4.0 (4b113715) + * update dependency lint-staged to v12 (b3423389) + * update dependency eslint to v8 (e9aadde1) + * update commitlint monorepo to v15 (f6c6425d) + * update dependency jsdom to v18.1.1 (87433b79) + * bump compare-versions from 3.6.0 to 4.1.1 in /install (ea9f2c73) + * update dependency jsdom to v18.1.0 (d7c2a311) +* **i18n:** + * fallback strings for new resources: nodebb.user (d79d7e80) + * fallback strings for new resources: nodebb.admin-settings-uploads (e6a46ef6) + * fallback strings for new resources: nodebb.error (207ae8cd) + * fallback strings for new resources: nodebb.post-queue (edba10e2) + * fallback strings for new resources: nodebb.modules, nodebb.notifications (fd939f8b) + * fallback strings for new resources: nodebb.admin-admin (4a53adf6) + * fallback strings for new resources: nodebb.admin-admin (b052a8e7) + * fallback strings for new resources: nodebb.topic (23c915ba) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.login (eecd02fb) + * fallback strings for new resources: nodebb.admin-settings-email (72e1c281) + +##### Documentation Changes + +* comment hint :shipit: (ffdf26af) +* fix description for route (47ab9526) +* roomId is number (0aa25f20) +* openAPI documentation for routes (55e68e2f) +* use social media card in readme header (33c8b197) +* add social media card (f7b3f69f) +* add docs link higher up (1a85aaad) +* update readme blurb (e325aa93) + +##### New Features + +* bundling nodebb-plugin-2factor with all NodeBB installations, v1.19.0 onwards :tada: (31b4b8fd) +* revoke user sessions on successful password reset (6ca216ab) +* allow % in tags, #10135 (a75a043b) +* allow isCluster, isPrimary, and jobsDisabled to be passed in as numbers in addition to string/bool (b5b188fd) +* `GET /api/v3/chats/:roomId/messages` (2fe53cf8) +* `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` (fe17c94c) +* `POST /chats/:roomId/users` (d62ee846) +* `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` (d5fd098e) +* middleware.assert.message (90fcbe44) +* `GET /chats/:roomId/:mid` (b2929605) +* `PUT /chats/:roomId/:mid` (f48ed365) +* allow API checkRequired middleware error to be internationalized (74f1905e) +* `PUT /api/v3/chats/:roomId` (9a4fd5dc) +* `POST /api/v3/chats/:roomId` (eeffb9d9) +* `GET /api/v3/chats/:roomId` (09cf9c77) +* `POST /api/v3/chats`, chat room creation, plus openAPI docs update (40b4544e) +* `GET /api/v3/chats` (94bead71) +* stub code for v3 chats api (02e878be) +* #9506, allow seeing and editing your queued posts (c4042c70) +* pass in all query params to category search filter (599bffd8) +* add data param to filter:categories.search (c4156bdd) +* ensure that all requests handled by NodeBB fall under the relative_path as configured (a3bdb706) +* show 10 members (d9c42c00) +* closes #10018 (1e535528) +* #10018 add href (06bfec88) +* #10018 , wip (0f14f23b) +* autocomplete for activate/reset (f0d192fb) +* #10008, add history entry for note deletion (c26870d2) +* #9957, don't remove existing fields form config.json (0532c1b2) +* add feature flag to disable verification emails, closes #9996 (09e0c6d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-markdown to v8.14.6 (ad6f6051) + * update dependency winston to v3.4.0 (#10150) (2fee1d07) + * update dependency ioredis to v4.28.3 (#10151) (bfad04ab) + * pin dependencies (da2bb340) + * pin dependency socket.io-adapter-cluster to 1.0.1 (#10146) (15bf3db2) + * update dependency nodebb-theme-vanilla to v12.1.15 (#10149) (2fa3cd0d) + * update dependency nodebb-theme-slick to v1.4.23 (#10148) (762de2d8) + * update dependency nodebb-theme-persona to v11.3.13 (#10147) (385d4c71) + * update dependency winston to v3.3.4 (4bada01b) + * update dependency autoprefixer to v10.4.2 (a47883e8) + * update dependency mongodb to v4.3.0 (50eb4556) + * update socket.io packages to v4.4.1 (9eb00cb2) + * update dependency nodebb-rewards-essentials to v0.2.1 (0a15c99e) + * update dependency autoprefixer to v10.4.1 (f1aa5f7d) + * update dependency yargs to v17.3.1 (5c3335b7) + * update dependency nodebb-theme-vanilla to v12.1.14 (#10102) (dd8b1f75) + * update dependency nodebb-theme-slick to v1.4.22 (#10101) (dd1633ff) + * update dependency nodebb-theme-lavender to v5.3.2 (#10099) (eccdfc9d) + * update dependency nodebb-theme-persona to v11.3.12 (#10100) (4f6fc10b) + * update dependency nodebb-theme-persona to v11.3.11 (32cbf760) + * update dependency nodebb-theme-slick to v1.4.21 (9253519c) + * update dependency nodebb-theme-slick to v1.4.20 (#10084) (019804e1) + * update dependency nodebb-theme-vanilla to v12.1.13 (#10085) (66c759ed) + * update dependency nodebb-theme-persona to v11.3.10 (#10083) (d276c9cd) + * update dependency nodebb-plugin-composer-default to v7.0.17 (#10082) (0ef9c7ab) + * update dependency nodebb-theme-vanilla to v12.1.12 (dda7c075) + * update dependency nodebb-theme-slick to v1.4.19 (4577600e) + * update dependency nodebb-theme-persona to v11.3.8 (5e2281c3) + * update dependency mongodb to v4.2.2 (0551a19e) + * update dependency postcss to v8.4.5 (16398dd9) + * update dependency compare-versions to v4.1.2 (de1ed01d) + * bump persona (16c88a97) + * bump persona (c90a8926) + * update dependency nodebb-plugin-mentions to v3.0.4 (#10063) (07217762) + * update dependency nodebb-plugin-spam-be-gone to v0.7.12 (#10064) (a5840c5a) + * update dependency nodebb-theme-slick to v1.4.18 (#10065) (5477cf32) + * update dependency nodebb-plugin-markdown to v8.14.5 (#10062) (60d778f0) + * update dependency nodebb-theme-persona to v11.3.5 (#10059) (8695d370) + * update dependency nodebb-plugin-dbsearch to v5.1.1 (70068d6c) + * update dependency nodebb-plugin-composer-default to v7.0.15 (84b03a34) + * update dependency nodebb-theme-persona to v11.3.3 (8cbe0df2) + * bump emoji plugin (14e35247) + * update dependency ioredis to v4.28.2 (597d826b) + * update dependency yargs to v17.3.0 (115de4e5) + * update dependency mime to v3 (#9963) (49813cce) + * update dependency mongodb to v4.2.1 (f72af319) + * update dependency @socket.io/redis-adapter to v7.1.0 (ed4b0cf7) + * update dependency postcss to v8.4.4 (b34b8aa9) + * update dependency postcss to v8.4.3 (2dadf786) + * update dependency postcss to v8.4.1 (6a273798) + * update dependency postcss to v8.4.0 (29345275) + * update dependency ioredis to v4.28.1 (9966a00f) + * update dependency nodebb-theme-persona to v11.3.1 (fdae6991) + * update socket.io packages to v4.4.0 (f05d308a) + * update dependency nodebb-theme-vanilla to v12.1.10 (68dddbd9) + * update dependency nodebb-theme-persona to v11.2.22 (3eb91a20) + * update dependency nodebb-plugin-mentions to v3.0.3 (5ec32c31) + * update dependency mongodb to v4.2.0 (#10011) (2378fc84) + * update dependency @socket.io/redis-adapter to v7.0.1 (aae7be02) + * update dependency sharp to v0.29.3 (46162537) +* lint (c9592e17) +* icon alignment issue that was also bugging me :shipit: (37a71291) +* #10143, add back ace editor searchbox (42caef7f) +* #10095, add login info to email interstitial (5eb02f59) +* #10121, fix error messages in user creation (8ad64ec0) +* #10115, fix chat autocomplete hook (69a7634a) +* notice links in subfolder installs (cc27a324) +* move authenticateRequest before interstitial and maintenance mode middlewares, allowed plugins to disable authentication on certain routes (d89fc44c) +* retry incrObjtFieldBy (07232a8c) +* use component instead of class name (b179f0fc) +* assertion check to ensure messages are in the room when editing/deleting, etc (d95b4ee2) +* rename language key for incorrect parameter type error (aeb43b9b) +* deprecate chats.leave (16ba16cd) +* re-allow kicking of the other party in a 1-to-1 chat (6294beea) +* isFinite check for room assertion, more test migrating (140f9d24) +* #10096, don't display preview for links if hostname doesnt match (a115b771) +* only render preview on topic page (a9f81215) +* don't crash server if analytics fails to save (8fb89d76) +* upgrade script to handle strings as well (e332acf3) +* #10090, remove left over necro posts messages (fdaf8274) +* #10086, if pidfile is empty delete (59214ca2) +* utils method (91e21ecc) +* prevent crash if groups is not valid json (cc0a087a) +* upgrade script (968d4616) +* delete left over nav items after removal of some (737e1c19) +* targetBlank/dropdown not getting cleared (10e890e4) +* prettier bulk method usage (3b0c42a5) +* bug where groupChat property was not set for chat rooms (42959df0) +* #9484 show user history only to admins and gmods (bc7707aa) +* no need to pass 'img' to teaser tags stripping as images are already converted to alt text (45c9dde3) +* #10069, don't modify fields array (a8afdc60) +* #10068, update data-index values after sort (236d4e80) +* #10068, baseIndex should be read before sort update fix off by one error (9af23351) +* tests (45d8157f) +* #10067, count posts instead of incr/decr (830166d1) +* handle start=0 stop=0 for topics.getTopicPosts (906dc567) +* wrong usage of is ACP (4f423610) +* don't throw on invalid session, just return early so socket is not opened. (fa01801f) +* #10052, dont use spaces in tag class name (a2953583) +* don't crash if tid is falsy (1cdb0b1e) +* regression from https://github.com/NodeBB/NodeBB/commit/27c05448e1532ce466658513af0e2ff65576b410 (50063fe2) +* keep query params on /me redirects (941ecaf8) +* 403/400/500 page not generating csrf_token (65c55041) +* error pages dont have config.csrf_token (3dd681eb) +* quote button staying on screen on slow computers (d378bf4c) +* removed unused var (e0caa5e0) +* #10027, properly auto confirm first user (2473d5d8) +* cli password reset (71e34be5) +* #10023, bump persona (a10ea03c) +* #10020, /api/post/upload returns v3 style response (242f8e95) +* consolidate plugin reset logic (449366ca) +* search crash (9245f71a) +* #10010, handle reverse sorting for topic events (d5bfd512) +* #10006, dont allow new rooms or adding to a room if target is blocked (047f031d) + +##### Other Changes + +* remove unused (afc75ba4) +* fix (682f6089) +* missing ; (20e76699) +* remove unused (cbf198fe) +* remove unused (a20abdce) +* fix (0a6eeb93) +* remove unused utils (82b72f7e) +* fix (fa1ac04d) + +##### Performance Improvements + +* only add middleware if relativePath is set (41db9436) +* don't load all set members to get count (0414356c) +* create user tooltips on demand (23147235) +* closes #9994, bulk methods for settings (d412ba44) +* remove createUserTooltips (facc10e4) + +##### Refactors + +* remove unused language key (5278b11a) +* put message api calls behind `/messages` prefix, #10097 (aaa6f752) +* rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await (c990211c) +* only write analytics data on nbb that has runJobs=true (35fea58a) +* remove knonwOwner param (42781467) +* remove console.log (a7644466) +* remove unused validator (4e1d4217) +* only pass qs (b8896d13) +* change error message (1e60ae87) +* use hasOwnProperty (9f1b8a3b) +* remove object.create (dbba0c39) +* remove unused args (3d3ae82f) +* remove comment (633061f4) +* use .map to return promises (d4f3ee67) +* async (cfd47448) +* async (f0394c49) +* use async (8491f67d) +* remove unused (e3c0f0be) +* always returns array (9627fa90) +* use async/await (f4aa249d) +* change var name (36eb47d9) +* alerts (621c142f) +* use alerts.error/success (cba78aee) +* use lang keys, fix typo (dd02c49f) +* use alerts module (1980feed) +* dont need local function (2bb0828a) +* DRY (324262cb) +* use routePrefixMap instead of routeRegexpMap, +tests (#10035) (6c07433d) +* use hasOwnProprety (daf385cd) +* tab rules (fb363957) +* change category feed so it is not updated on every reply (697dd376) +* dont expost entire res._locals to client side (e368feef) +* shorter meta.settings.get (190532b3) +* clone settings before returning (51cbeccb) +* remove another async.series (27c05448) +* remove tabs after declaration (4359e5c9) +* update dates (6d38eab6) +* clone before returning (f729e519) +* add filter:topic.getPosts (258f368e) +* setObjectBulk to match sortedSetAddBulk (8379c11b) +* remove more async.eachSeries/mapSeries (d1964095) +* make a single call to set widgets per template (8750ee04) +* remove jshint, remove async.parallel (80f9963b) + +##### Code Style Changes + +* eslint (d960f601) + +##### Tests + +* fix util test (6c1e184c) +* update tag tests, fix linux symlink error (9b75b1ed) +* fix restore test (0d9ec9d3) +* fix user tests calling deprecated socket methods (e747998c) +* add email interstitial tests (1264dcb5) +* don't use csrf_token for get,head, options (5e08f7e6) +* fix tests (0e273ab2) +* remove old test (68fd0875) +* make it async (5c3d5f1f) +* fix (26f00ffb) +* one more getTopicPosts test (f8f0a83b) +* utils.params (7b99dc46) +* regular user shouldn't see admin:privileges (cd2040ac) +* add missing tests (58431221) +* add api token tests (7434cbf6) +* add missing tests (404a8774) +* upgrade.runParticular (2bdb4906) +* add missing acp root category test (c17ec996) +* cache dump test (217aae4c) +* add missing controllers (bc120dba) +* fix tpl name (edf7c647) +* add mising email.test tpls (6d186ff1) +* debug routes in dev (754cdab8) +* add digest route test (1280d9ae) +* digest (f11bc33a) +* fix function name (0e725125) +* submitUsage (d375dcb8) +* remove log (d7c32ccb) +* middleware/expose.js (29b3587d) +* up mongodb version (500cad78) +* mainPost removed from inf scroll (aac0792a) + +#### v1.18.6 (2021-11-10) + +##### Chores + +* make it a link (a0f0dd02) +* update badges, remove david doesnt work (dad31c8e) +* up themes (b1d6c9ba) +* up mentions (98b98a11) +* up mentions (3e4d477e) +* fix type.yaml example and summary (591424ce) +* incrementing version number - v1.18.5 (1e418f5b) +* update changelog for v1.18.5 (82eda23a) +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* **deps:** + * update dependency eslint-plugin-import to v2.25.3 (45a0895c) + * update commitlint monorepo to v14 (dc78125a) + * update dependency jsdom to v18.0.1 (7d468e72) +* **i18n:** + * fallback strings for new resources: nodebb.admin-development-info (91676c6c) + * fallback strings for new resources: nodebb.admin-settings-navigation (3727e39f) + * fallback strings for new resources: nodebb.admin-settings-post (46789910) + +##### New Features + +* #9992, hooks.one (96f13e4f) +* use auto-generated meta and link tags in ACP, closes #9991 (1719bff8) +* add node 16 (#9847) (d27c9696) +* #9967, allow dropdowns in navigation (2e623dd2) +* show number of events per type in acp (b916e42f) +* show posts previews if enabled on mouse over (8c670316) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-slick to v1.4.16 (#9990) (cf30876f) + * update dependency nodebb-plugin-composer-default to v7.0.14 (#9989) (ef02bdc4) + * update dependency nodebb-plugin-composer-default to v7.0.13 (#9988) (654c8e61) + * update dependency nodebb-plugin-mentions to v3.0.2 (1a22b0ec) + * update dependency socket.io to v4.3.2 (98ebc4d9) + * update dependency html-to-text to v8.1.0 (c1f5889f) + * update dependency nodebb-plugin-dbsearch to v5.1.0 (#9983) (4f1ee1fc) + * update dependency nodebb-plugin-composer-default to v7.0.12 (7fee0e32) + * update dependency nodebb-plugin-mentions to v3.0.1 (#9979) (8224a2a9) + * update dependency nodebb-plugin-spam-be-gone to v0.7.11 (91293ecc) + * update dependency nodebb-theme-lavender to v5.3.1 (f7295aaa) + * update dependency nodebb-plugin-mentions to v3 (#9966) (0888aae6) + * update dependency mongodb to v4.1.4 (#9968) (f5993731) + * update dependency nodebb-theme-persona to v11.2.21 (#9969) (8fac8d61) + * update dependency nodebb-plugin-mentions to v2.15.1 (0f8a68c0) + * update dependency validator to v13.7.0 (81c8d70c) + * update dependency autoprefixer to v10.4.0 (755860f1) +* ability to enumerate email via updateProfile method (c1ac2912) +* accidentally not clearing email when said email is confirmed for a different uid (b912a564) +* #9976 (28dd31a8) +* #9976, handle array or object (9bfb6c72) +* dont show previews on mobile (41e02400) +* category load more btn visibility (05468526) +* #9973, ignore if assigning to same parent (66e7cdac) +* #9972 (67cb2491) +* remove tooltip on ajaxify (f728abda) +* don't highlight external nav items (8a88295d) +* don't use # for previews (5a0efd2d) +* events for just topic with main post (3d611ab7) +* #9954, get next post timestamp (89399c0e) +* topic events not rendered in infinitescroll (a7f235db) +* broken post uploads due to 6a976a9db0340e34577961ce8d5d9479c78f7856 (485b6ced) +* #9950, rename account export routes to remove `uid/` prefix (0ee85d5a) +* double invocation of authenticateRequest (60352eca) +* #9945, call authenticateRequest middleware for mount points in /api (6a976a9d) +* hooks is sometimes undefined (74aa12c9) +* typo in flags (bc4b19b4) +* remove unused code (50b2ebf8) +* handle undefined data.query (8f08d9ca) + +##### Performance Improvements + +* only load posts once (9fbb3b11) + +##### Refactors + +* shorter require (41c3eb82) +* deprecate app.alert functions user alerts module directly (0428912c) +* deprecate app.logout (8b4510cc) +* simpler rejoin (61903448) +* deprecate app.openChat/newChat (f352be63) +* move search functions from app.js to search module (1a9b1598) +* move session messages (666fe209) +* move warnings/messages out of app.js (51855254) +* remove jshint (0a7ff208) +* cleanup info, better cpu usage % (4b738c8c) +* acp only uses 3 modes and a single theme (890bf03f) +* display errors from category drag/drop (c1cc35a9) +* use utils.debounce (e8c17fee) + +##### Tests + +* add another assert for random failing test (ae64b9f4) +* socket.emit doesnt exist in tests (61d1f565) +* show body when test fails (e3f5b706) +* lint (3d2398ac) +* fix tpl test (30cce142) +* dbsearch no longer has staticDir (3386893b) +* increase timeout (4ac9270a) +* fix account export test routes (10bb8cf7) +* add test aliases.buildTargets (62ac9a8b) +* empty query params for search (bda5d144) + +#### v1.18.5 (2021-10-27) + +##### Breaking Changes + +* disable javascript in custom less tab (719cfc0d) + +##### Chores + +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* up themes (463b2076) +* up persona (1438f409) +* incrementing version number - v1.18.4 (945c2b0b) +* update changelog for v1.18.4 (7cbcb521) +* **deps:** + * update dependency lint-staged to v11.2.6 (8d4bb8bb) + * update dependency lint-staged to v11.2.5 (0728a994) + * update dependency lint-staged to v11.2.4 (f76a7882) + * update dependency husky to v7.0.4 (2a3e13f3) + * update dependency mocha to v9.1.3 (4784f016) + * update dependency eslint-plugin-import to v2.25.2 (3c3f45d9) + * update dependency jsdom to v18 (4b8dcd4c) + * update dependency eslint-plugin-import to v2.25.1 (7c4aebbd) + * update dependency lint-staged to v11.2.3 (288b5456) + * update dependency lint-staged to v11.2.2 (f96c8c4d) + * update dependency @commitlint/cli to v13.2.1 (52c38a1d) + * update dependency lint-staged to v11.2.1 (022e8df0) + * update dependency eslint-config-nodebb to v0.0.3 (4b92df82) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email, nodebb.error (9b68dc37) + * fallback strings for new resources: nodebb.admin-dashboard (ff962b5d) + * fallback strings for new resources: nodebb.admin-dashboard, nodebb.admin-menu (abe59131) + * fallback strings for new resources: nodebb.admin-manage-digest, nodebb.admin-settings-user, nodebb.user (2bed40be) + +##### Documentation Changes + +* update verbiage re: login API route (94c4f87b) + +##### New Features + +* new ACP option `emailPrompt` ... which allows administrators to disable the client-side prompt to encourage users to enter or confirm their email addresses (80ea12c1) +* show popular searches (f4cf482a) +* new plugin hook to allow plugins to reject email address on new registration or email change (6b4f35c2) +* utilities login API route now starts an actual login session, if requested (806a1e50) +* add method name to deprecation message (b91ae088) +* quote tooltip (66fca4e0) +* additional quality options for jpeg uploads, added quality and compression settings for png uploads (d22b076b) +* #8053, biweekly digest option (f7967bdf) +* core submit button dropdown (605a5381) +* added failing i18n tests (35af7634) +* confirm before deleting all events (#9875) (56d05b4e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v12.1.7 (#9944) (bf20965f) + * update dependency nodebb-theme-persona to v11.2.19 (#9943) (bcf85fcf) + * update dependency nodebb-rewards-essentials to v0.2.0 (7c2ecb12) + * update dependency nodebb-theme-vanilla to v12.1.6 (49b8b983) + * update dependency nodebb-theme-persona to v11.2.18 (ed0adf2c) + * update dependency nodebb-theme-persona to v11.2.17 (78661079) + * update dependency postcss to v8.3.11 (a5f4e206) + * update dependency nodebb-theme-vanilla to v12.1.5 (d74a6bd3) + * update dependency sharp to v0.29.2 (8b8fe393) + * update dependency postcss to v8.3.10 (b18a24e9) + * update dependency nodebb-theme-persona to v11.2.15 (f3c8d7da) + * update dependency nodebb-theme-persona to v11.2.14 (#9919) (5e08e67b) + * update dependency socket.io-client to v4.3.2 (deba3e27) + * update dependency socket.io to v4.3.1 (e1554f61) + * update socket.io packages (ce5a0a21) + * update dependency nodebb-plugin-spam-be-gone to v0.7.10 (600a8720) + * update dependency nodebb-plugin-composer-default to v7.0.10 (b0128f85) + * update dependency nodebb-plugin-markdown to v8.14.4 (f8f35d7e) + * update dependency nodebb-plugin-composer-default to v7.0.9 (ed874662) + * update dependency nodebb-theme-persona to v11.2.13 (1dba75e9) + * update dependency ioredis to v4.28.0 (4ff5452d) + * update dependency nodebb-theme-persona to v11.2.12 (fe9f82f6) + * update dependency ioredis to v4.27.11 (6d2e0aa9) + * update dependency nodebb-plugin-mentions to v2.14.1 (820f8cdf) + * update dependency jquery-ui to v1.13.0 (b0eb2aed) +* remove loading="lazy", fixes inf. scroll loaded images (01572785) +* windows tests (25ebbd65) +* undefined query showing in searches (6cfaea06) +* don't repeat search if on same page (89f5e06b) +* api session revoke test (0926ae6e) +* crash (da64810a) +* add missing translation (eb075c73) +* move record to controller (ee8e0480) +* profile edit fields showing translated values (63572c23) +* #9934, fix translator test (8d316d18) +* token verify (04dab1d5) +* guard against prototype pollution (1783f918) +* translator path traversal (c8b2fc46) +* there is no alltime digest, fixes translation in test email (e62948f7) +* clicking outside postContainer should close tooltip (47df62e7) +* minification regression (998b9e79) +* tooltip (fec7ebed) +* biweekly digest #8053 (9cb4de50) +* restore plugin upgrade checking logic (44687394) +* fallbacks for new langauge key (ed4ebd22) +* #9917, show topics as unread for guests (4333d217) +* clarify site settings urls vs config.json url (#9912) (6436aa65) +* clarify SMTP enable toggle (#9911) (09f198fc) +* don't overwrite reloadRequired with false (9e0ce027) +* delete translations in admin/general folder (since general was removed and relocated elsewhere) (b460e590) +* pushed missing key to tx and pulled fallbacks (21b61082) +* adding missing language namespace "top" (0f9b0b78) +* extra debug log (bd893cda) +* have renovate add `dependencies` label to its PRs (eddb9868) +* no global bootbox (#9879) (227456fb) +* #9872 update app badge with notification count if applicable (3e69bcdf) +* better nomenclature (c1149d04) +* html attributes (#9877) (3acaac4c) +* escape thumbs, allow robots meta tag (4f9717fb) +* missing translations (#9876) (7935bd9e) + +##### Performance Improvements + +* dont fs.open if plugin doesnt have language namespace (#9893) (1feb111a) + +##### Refactors + +* wider value field (c428ba80) +* dont save partial searches (c7e078d4) +* use search api for topic search (64192731) +* slowdown quick search (19ee7174) +* typo (a5287906) +* add callback to loadNotifications (f02fba29) +* simplified utilities API > login rout (506c34a8) +* log error as well (1d62bd6d) +* catch errors from buildHeader in error handler :fire: (73a9ca09) +* add missing helpers.tryRoute (d4da9840) +* shorter middleware (ee0282f5) +* meta/minifier use async/await (b2429ef0) +* remove unused var (90b81262) +* catch errors from digest (8e319a9b) +* less.render returns promise (14bc83a8) +* less.render already returns promise (6da32392) +* prompt.get already returns promise (c70eaa0a) +* no need for async/callbacks (057d1d58) +* no more :cow: (38756a0c) +* allow array of uids for blocks.is/list (a9bc6a09) +* show full url on error log (8e6bd7e9) +* var to const and let (#9885) (b0a24d6d) +* remove unused code (997fb2b3) +* remove unused colorpicker (543d8521) + +##### Reverts + +* lazy load (3d1cf168) + +##### Tests + +* fix broken openapi3 schema (7ef5214e) +* restore commented-out i18n test (fa1afbcf) +* moved topic event and topic thumb tests to subfolder for better organisation (154ffea0) +* remove escape (6c25b9db) +* possible fix to timeout (63109c07) +* increase timeout (8654a996) + +#### v1.18.4 (2021-10-06) + +##### Chores + +* up persona (f4e62fb1) +* incrementing version number - v1.18.3 (57358743) +* update changelog for v1.18.3 (f066ddb8) +* **deps:** + * update dependency lint-staged to v11.2.0 (840b49b9) + * update commitlint monorepo to v13.2.0 (aa370310) + * update dependency mocha to v9.1.2 (6385b88e) + +##### Documentation Changes + +* added link to unofficial IRC channel (c5a48b44) + +##### New Features + +* use unread icon in mobile (27e53b42) +* cli user management commands (#9848) (d1ff3d62) +* #9855, allow uid for post queue notifications (5aea6c6a) +* add userData to static:user.delete (f24b630e) +* closes #9845, sort by views (6399b428) +* duplicate `requireEmailAddress` settings block to Settings > User (a9645475) +* mongodb driver 4.x (#9832) (07adb49e) +* a useless hover effect because raisins (1a61ffc5) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.1.3 (b4fc2773) + * update dependency postcss to v8.3.9 (9455e5b2) + * update dependency autoprefixer to v10.3.7 (78895d05) + * update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1) + * update dependency ioredis to v4.27.10 (4694382c) + * update dependency nodebb-theme-persona to v11.2.9 (346e0890) + * update dependency autoprefixer to v10.3.6 (058fdca4) + * update dependency yargs to v17.2.1 (d50dd801) + * update dependency postcss to v8.3.8 (193c92e3) + * update dependency passport to ^0.5.0 (daea8a86) + * update dependency connect-pg-simple to v7 (#9785) (054f3da6) + * update dependency yargs to v17.2.0 (c78309b5) +* #9866, fire vote hooks after reputation changes (#9867) (8ad9a103) +* #9865, don't display register messages after login (96f5312d) +* dont show decimails on auto approva minutes (a0df3890) +* #9864 (e954ca10) +* delete old topic tags (a70c69fa) +* switch inf. scroll to xhr (#9854) (4404e819) +* #9828, max-width (40915105) +* handle undefined returnTo on registerAbort (ac1b9692) +* lint (ff850b24) +* psql tests (123354ca) +* psql test (f8d4ec6c) +* possible test fix for subfolder redirect (3605ac81) +* missing relative path in test (4eacfef0) +* #9834, missing null email check on new registrations, added tests (58e0a366) +* crossorigin not showing up on manifest link tag (0faa4937) +* #9827, fix reward duplication (89af00d1) + +##### Performance Improvements + +* convert promise.all to single query (#9851) (ea04aede) + +##### Refactors + +* use utils.debounce (a7668a7f) +* remove async.waterfall from remaining upgrade scripts (6b34065f) + +##### Tests + +* dashboard (4f8647a5) +* add tests for admin privileges (9fe9ab08) +* add missing tests (34798325) +* remove debug log (8cb47548) +* no need to create fake interstitial as NodeBB comes with some by default (cb69934a) + +#### v1.18.3 (2021-09-22) + +##### Chores + +* **deps:** update docker/build-push-action action to v2.7.0 (ee027719) +* incrementing version number - v1.18.2 (0a56158b) +* update changelog for v1.18.2 (27e9282a) + +##### New Features + +* move filter:topic.post hook to top of method (f194809f) +* add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) (66eaae44) +* allow removing multiple items from list (397835a0) +* add uid to filter:user.saveSettings (7f48edc0) +* headers for global privs #9717 (#9762) (84ff1152) +* add ACP option to require email address on new registration (006fc700) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v7.0.7 (98554294) + * update dependency postcss to v8.3.7 (6ebe707c) + * update dependency autoprefixer to v10.3.5 (25687441) + * update dependency nodebb-plugin-composer-default to v7.0.6 (#9815) (c18678ce) + * update dependency nodebb-theme-persona to v11.2.8 (#9816) (39d73d0c) + * update dependency connect-mongo to v4.6.0 (8e886c85) + * update dependency nodebb-plugin-composer-default to v7.0.4 (8af54255) + * update dependency mongodb to v3.7.1 (9049dcd7) + * update dependency nodebb-theme-persona to v11.2.6 (506035b5) + * update dependency nodebb-theme-slick to v1.4.13 (787306a6) + * update dependency nodebb-plugin-composer-default to v7.0.3 (732b59c2) +* fixed element shifting in ACP menu that's been bothering me for 5-ish years (31975a62) +* #9822, use correct username/pwd (30f38771) +* remove unused translator (2add84a5) +* ban info test (07859f7e) +* #9819, show same time info for ban (9f0e55ad) +* show local time for ban (7a2f0ae1) +* crash (c437b336) +* remove caller from payload after hooks is done (15f9aaa6) +* bad uid reference (ce8ea6ea) +* update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic) (7777812e) +* #9818, fix totalTime calculation (c4fc7bf9) +* missing microdata in category data (1ed62aa8) +* #9812, add topics:schedule (c0a52924) +* for subfolders (31a6d4b3) +* req.path doesn't have full url (0236ea86) +* escape moderation note before adding to dom (75ebe786) +* #9811, send bodyClass on 403 (40c9fca9) +* also launch docker workflow on release branches (944a7985) +* xss on flags page via ban reason (ba3582b8) +* up timeout for psql tests (896ff215) +* redis batch (0c4b875e) +* redis processing batch+1 items every iteration (3261edcc) +* #9560, don't save post diffs if content didn't change (8b576a37) +* #9790, get baseIndex on update for infinitescroll (6a55c027) +* #9790, fix sorting of more than one page of pinned topics (2657804c) +* privileges added by plugins (#9802) (3ecbb624) +* #9800, don't send all welcome test emails to test@example.org @julianlam (71ed50b9) +* docker - remove sha tag (b06e8dba) +* Return QEMU back, remove platforms definition (52eace4b) +* Docker workflow tweaks (#9792) (e7f4cde4) +* browsers autocompleting smtp fields when they should not (34afb747) + +##### Refactors + +* no regex (18252fb9) +* remove async.waterfall (58ac55c1) +* remove async.waterfall (222dccaf) +* remove async.waterfall (f35a0f43) +* allow plugins to replace og:image, or specify additional og:image (819917da) + +##### Code Style Changes + +* give me an A! :100: (0b4d7d1f) + +#### v1.18.2 (2021-09-08) + +##### Chores + +* **deps:** update commitlint monorepo to v13 (87ba768f) +* incrementing version number - v1.18.1 (f8f80e4f) +* update changelog for v1.18.1 (0713475d) + +##### New Features + +* a slightly less ugly rewards panel (bf0c02a7) + +##### Bug Fixes + +* dashboard graph controls (a7855c4c) +* #9767 ACP change group icon fix (580a016b) +* #9781 (#9782) (0ce4b87d) +* replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit (856ba78a) +* handle missing uid in deprecated socket call (cdaea611) +* use privileges.users.canEdit for image upload priv check (e33e046f) +* errors from registerComplete (a48bbdbf) +* simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug) (60de0844) +* lint (1e2bda13) +* manifest error (488f0978) +* #9772, regression from https://github.com/NodeBB/NodeBB/commit/70a04bc10577e90e28d66a647d38cafc3307a285 (72710b80) +* push back some deprecations, remove deprecated stuff scheduled for v1.18.0 (dd4e66e2) +* deprecate userData.showHidden as it is functionally equivalent to userData.canEdit (4ac701d7) +* focus on save button on plugin activation (46e5e17d) +* #9773, fire hooks properly for priv changes (#9774) (6869920e) +* **deps:** + * update dependency sharp to v0.29.1 (ac6cd02f) + * update dependency nodebb-plugin-dbsearch to v5.0.3 (338f90fc) + * update dependency nodebb-theme-vanilla to v12.1.3 (0b3ea5ad) + * update dependency nodebb-theme-persona to v11.2.5 (57e54d55) + +##### Refactors + +* deprecate picture update socket call, new API routes for picture update (0a41741b) + +##### Tests + +* added test for external image via new change picture API (8cbad61e) + +#### v1.18.1 (2021-09-03) + +##### Chores + +* found some hooks that don't play well docgen (ae793b4a) +* incrementing version number - v1.18.0 (1e436ae7) +* update changelog for v1.18.0 (2fd9c095) +* **deps:** update dependency mocha to v9.1.1 (64bac178) + +##### New Features + +* create folders in ACP uploads #9638 (#9750) (3df79683) +* column based view on wide priv. tables (#9699) (61f02f17) +* als (#9749) (e59d3575) +* add quick reply key (e9314842) +* add new lang key for no best posts (6e73d8c9) + +##### Bug Fixes + +* **deps:** + * update dependency autoprefixer to v10.3.4 (67b932f4) + * update dependency nodebb-theme-persona to v11.2.4 (fe18e100) + * update dependency mongodb to v3.7.0 (31a35d7f) + * update socket.io packages to v4.2.0 (f2028d70) + * update dependency ioredis to v4.27.9 (6052eb16) + * update dependency mongodb to v3.6.12 (#9761) (5fa982c1) + * update dependency nodebb-plugin-composer-default to v7.0.2 (33d51201) + * update dependency nodebb-theme-slick to v1.4.12 (1b416d7e) + * update dependency nodebb-theme-slick to v1.4.11 (65b32fa1) + * update dependency nodebb-theme-persona to v11.2.3 (6ce321e4) + * update dependency autoprefixer to v10.3.3 (91ba7cdf) + * update dependency nodebb-theme-slick to v1.4.9 (d80b378f) + * update dependency jquery-deserialize to v2.0.0 (#9744) (7f9451ce) +* determine indeterminate checkboxes (760ea9df) +* move app.alert back into the conditionals (ca9bae3a) +* only show email confirmation warning toast on pages that it applies (1bd1cc74) +* updated email confirm warning to be more positive (2d1380dd) +* automated tests are a good thing to have (6afeac37) + +##### Refactors + +* consistent jquery element var naming (fc0e655e) +* var to const (1272da65) + +#### v1.18.0 (2021-08-25) + +##### Breaking Changes + +* **emails:** restore ability for admins to edit a user's email address [breaking] (c4e3362b) +* #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] (d1959a25) +* made TopicList.onTopicsLoaded private [breaking] (07f25d8c) +* return proper API-style response if exception caught by error handler on v3 routes [breaking] (a54a3ee1) + +##### Chores + +* **deps:** + * update dependency husky to v7.0.2 (324c7d48) + * update dependency eslint-plugin-import to v2.24.2 (9a34fe18) + * update dependency eslint-config-nodebb to v0.0.2 (cd85a55d) + * update dependency mocha to v9.1.0 (c5a42273) + * update dependency eslint-plugin-import to v2.24.1 (daca09d4) + * update dependency @apidevtools/swagger-parser to v10.0.3 (ffdf61b8) + * update dependency jsdom to v17 (#9700) (41855375) + * update dependency eslint-plugin-import to v2.24.0 (23dafa20) + * update dependency lint-staged to v11.1.2 (d47bdde2) + * update dependency jsdom to v16.7.0 (9db28b4b) + * update dependency eslint to v7.32.0 (03a98f4d) + * update dependency mocha to v9.0.3 (40384fcb) + * update dependency lint-staged to v11.1.1 (7588aae1) + * update dependency lint-staged to v11.1.0 (cb5fe271) + * update dependency mocha to v9 (f43291f5) + * update dependency husky to v7 (702290c4) + * update dependency eslint to v7.31.0 (f5a53b7f) + * update dependency lint-staged to v11.0.1 (02101315) +* up markdown/composer-default, fixes: #9708 (b74eefac) +* incrementing version number - v1.17.2 (46be2046) +* update changelog for v1.17.2 (5c9c0605) + +##### Documentation Changes + +* some hook deprecation notices (6bc090f8) + +##### New Features + +* add confirmation modal to topic event deletion (e803737a) +* allow changing default search in (794bf01b) +* #9705, use radio buttons for flag reasons (382a4c27) +* Client-side hooks - replace window.trigger (#9679) (342503e0) +* closes #9684, allow event deletion (358ad740) +* replace eslint configs on server and client side to inherit rules from eslint-config-nodebb (f653a6ff) +* re-add FontAwesome font for compatibility (a370c26f) +* update to FontAwesome 5.15, resolve #6976 (41762e66) +* removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors (70a04bc1) +* updated email confirmation alert to more closely reflect email usage, remembering dismissal (bbbacd86) +* allow requirejs modules to be awaited (58adb762) +* show instructional modal after email change request (0e05cbe1) +* return back to profile after editing email (324a12b6) +* allow registration interstitial abort to also follow returnTo (b3c91641) +* plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session (96398faa) +* allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) (b0a4a1d3) +* return generic 404 on invalid confirm code (f53fc1ad) +* invites no longer require email (a917210c) +* show different registration intersitial lead text on new account vs. existing (74aaa0a9) +* removal of emailExists socket listener (12b2a979) +* add loggedin/guest class to body (04b1f702) +* convert _fireStaticHook to async function (auto-refactor by vscode) (21359eab) +* store topic tags in topic hash (#9656) (4a56388e) +* new hook `action:topics.loading` (in the same format as `action:posts.loading`) (e0db904b) +* schedule deprecation for `action:category.loaded` and `action:category.loading`. Use `action:topics.loaded/ing` instead (8ae4c300) +* internationalize API error messages (7036c375) +* #9651, change category desc to multiline (5fd190f7) +* **emails:** + * pass req in to filter:registration.interstitial (afd2d8da) + * display current email in interstitial form (f5291999) + * upgrade script for includeUnverifiedEmails (50517020) + * +includeUnverifiedEmails ACP setting (be97aa6f) + +##### Bug Fixes + +* lint (55693ec1) +* topic event deletion (1ee92c28) +* pluginPaths (0743554d) +* #9730, show warning if plugin is active but not installed (13878e9f) +* #9729, insert new posts after topic events (60bf5643) +* #9719, only apply to non https (c354cde3) +* #9727, addHandlers after hooks (77c3085a) +* allow smaller than 5mins for admin relogin duration (a288f51f) +* taskbar icon not pushed via composer/persona (3a81c8fd) +* #9698, pass along query params in redirect (9de64bf5) +* lint (8bf2896d) +* remove unnecessary quote (093ac1c0) +* parseInt tids (162ebacf) +* #9681, update posts in queue if target tid is merged (0c816429) +* email update interstitial to not error on empty email field (on new registration) (4a521ea2) +* updated ACP > Manage > Users to handle users with no email address (824a72b2) +* allowed reset and reset_notify emails to go out to unconfirmed email addresses (d5b5b7d5) +* bug where confirmation email was sent to the old email address, not the new one (414d733d) +* email validation flow, so that it actually works, fixed event logging bug, new email verification template (3bcd1f14) +* accidental early return in confirmByCode, tests, race condition (caf89687) +* test :shipit: (2c06ac9a) +* failing test from d1959a2 (f71f2951) +* #9668, add raw info to psql database page (6c47a060) +* use hooks module instead of window trigger (acb11cc7) +* tests (0960a814) +* translate language keys if passed in to formatApiResponse (415416d2) +* lint (ff78969c) +* tests (55d7e558) +* keep query string on redirects (47c8c692) +* **deps:** + * bump persona (12e7f8d5) + * update dependency nodebb-theme-persona to v11.2.1 (#9734) (2e1562b8) + * update dependency nodebb-theme-vanilla to v12.1.2 (#9735) (4bd66a7c) + * update dependency nodebb-theme-slick to v1.4.8 (#9732) (096c5a58) + * update dependency autoprefixer to v10.3.2 (d44e3a8e) + * update dependency nodebb-theme-persona to v11.2.0 (116f9cb5) + * update dependency ioredis to v4.27.8 (8461791a) + * update dependency nodebb-theme-persona to v11.1.3 (ec103ce8) + * update dependency sharp to v0.29.0 (626d5565) + * update dependency connect-mongo to v4.5.0 (ce6039f2) + * update dependency nodebb-theme-vanilla to v12.1.1 (de83f82e) + * update dependency nodebb-theme-persona to v11.1.2 (ee10ae04) + * update dependency yargs to v17.1.1 (38e38580) + * update dependency nodebb-theme-persona to v11.1.1 (47941418) + * update dependency mongodb to v3.6.11 (a0fd0268) + * update dependency yargs to v17.1.0 (181c20ba) + * update dependency ioredis to v4.27.7 (4c9d6b62) + * update theme versions for #9607 (3b34571d) + * update dependency postcss to v8.3.6 (ebdba8f1) + * update dependency html-to-text to v8 (3f24746c) + * update dependency yargs to v17 (1b6b1fe5) + * bump composer-default to v7 (51458c75) + * update dependency autoprefixer to v10.3.1 (0d3f74b7) + * update dependency nodebb-plugin-markdown to v8.14.2 (b6a84712) + * update dependency autoprefixer to v10.3.0 (72c9650f) + * update socket.io packages to v4.1.3 (f14df0d4) + * update dependency nodebb-plugin-composer-default to v6.5.34 (31dae04f) + * update dependency nodebb-theme-persona to v11.0.26 (ae14016e) + * update dependency nodebb-plugin-markdown to v8.14.1 (8b41684e) +* **emails:** + * broken test for api/user/email/:email (81611ae1) + * dont allow retrieving user data if showemail is false @julianlam (7d115c8e) + * registration tests, email no longer passed-in, API tests (confirm email for test accounts) (6694bdd5) + * don't automatically associate email during user creation if passed in at registration (e726048e) + * remove debug log (b4b65ecd) + * broken test due to sticky registration interstitial (ab9b6716) + +##### Refactors + +* remove promisify from redis, ioredis supports promises nati… (#9728) (6659e95a) +* get rid of async.waterfall/each (8fb53252) +* remove unused async (42dbd402) +* remove waterfall (6b6a7d4b) +* move interstitials into its own file in `src/user/` (e95df2f0) +* added user.email.remove method, updated email interstitial to handle email removal (ccf004f1) +* client-side to use flag notes API (ef4e74bf) +* fix wording (6ed7e937) +* **email:** validation checking methods, +tests fix (087e6020) +* **emails:** + * more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation (69c96dd2) + * interstitial for adding/updating email (f365bc46) + * remove email validation on client and server side (7c1d1c77) + +##### Code Style Changes + +* eslint (d2492ef4) +* lint fix (340ccb24) +* lint (52229172) + +##### Tests + +* **emails:** fixing broken tests introduced by e5ff68acd (a3a3b10f) + +#### v1.17.2 (2021-07-07) + +##### Chores + +* **deps:** + * update coverallsapp/github-action action to v1.1.3 (99c23037) + * update dependency eslint to v7.30.0 (725e70e9) + * update dependency coveralls to v3.1.1 (edefac96) + * update dependency eslint to v7.29.0 (2700f717) + * update dependency eslint to v7.28.0 (fac0bcbd) + * update dependency smtp-server to v3.9.0 (86723292) + * update dependency eslint-plugin-import to v2.23.4 (886d65f6) + * update dependency eslint-plugin-import to v2.23.3 (c3b0e2fa) +* lint (2b42e7ed) +* fix indentation (d07229aa) +* up rewards (ca9ca876) +* incrementing version number - v1.17.1 (0aad1312) +* update changelog for v1.17.1 (1e6ed0ad) + +##### Documentation Changes + +* add undoTimeout (2db77b0c) + +##### New Features + +* add merge/fork hooks (c9348efb) +* #9628, allow setting custom icon names (2fe30b6f) +* #9617 update fa link (52596902) +* add bodyClass to 500 page (46a454f1) +* clear reset tokens on successful login (f9728aff) +* add filter:categories.categorySearch (be19f27f) +* allow nested properties on category page (#9601) (cc0cf99f) +* show ip on acp manage users (8ea58432) +* add undoTimeout to moving posts as well #9599 (e588948f) +* make undoTimeout configurable, closes #9599 (05cc7ccb) +* introduce boolean res.locals flag to bypass session reroll (used by session-sharing) (816856b0) +* allow modifying default category privileges (57e46e41) +* add filter:notifications.create (ac7b093f) +* pass req.query to getUnreadData (3d5fef6e) +* added GET user route for api v3 (d2960aeb) + +##### Bug Fixes + +* **docs:** #9648 (e03782f2) +* **deps:** + * update dependency mongodb to v3.6.10 (f17625fb) + * update dependency nodebb-theme-persona to v11.0.25 (c11927c5) + * update dependency sortablejs to v1.14.0 (5ff9319f) + * update dependency nodebb-theme-persona to v11.0.24 (c7feea56) + * update dependency nodebb-plugin-composer-default to v6.5.33 (3611b04e) + * update dependency nodebb-plugin-markdown to v8.14.0 (e40f648f) + * update dependency nodebb-plugin-markdown to v8.13.1 (cf6fcc21) + * update dependency nodebb-plugin-composer-default to v6.5.32 (#9626) (90e3f5ac) + * update dependency nodebb-plugin-composer-default to v6.5.30 (#9624) (2060dc61) + * update dependency postcss to v8.3.5 (09aebbda) + * update dependency postcss to v8.3.4 (520050da) + * update dependency postcss to v8.3.3 (c7006ec6) + * update dependency ioredis to v4.27.6 (82b33dc4) + * bump persona (f4eb336a) + * update dependency postcss to v8.3.2 (88f21e91) + * update dependency postcss to v8.3.1 (71b4d634) + * update dependency ioredis to v4.27.5 (9f74caf6) + * update dependency connect-redis to v6 (#9590) (6632b2b6) + * update dependency ioredis to v4.27.4 (4ffd234f) + * update dependency nodebb-theme-persona to v11.0.21 (062928d2) + * update dependency mongodb to v3.6.9 (d8c64479) + * update dependency autoprefixer to v10.2.6 (3aeac357) +* #9634, re-jig top bar of Admin > Manage > Users (b8964843) +* hide private user data in api/v3/users/[uid] (97c8569a) +* numThumb upgrade script (d9e2190a) +* acp dashboard sometimes not loading on cold load (fee782c4) +* #9636, sanitize all attributes in meta and link tags (84904976) +* convert some hooks to use hooks module (09bac6bd) +* #9627 (acdbd049) +* #9629, translate content property of meta tags (561ce7d3) +* prevent crash in expandObjBy #9618 (ab6f062f) +* dont show system tags in whitelist dropdown to regular users (0d975bc4) +* #9622 (#9623) (84e06575) +* #9620, fix notif delay (73f40e96) +* #9619, add group chat filter to /notifications (c92fc19b) +* scope (3cd9434b) +* #9615, catch exceptions in renderOverride (1eda538d) +* purge uploaded images accordingly #9606 (#9611) (8168c6c4) +* keep query params when switching chat (7b4c0a16) +* accidental unnecessarily strict conditional that effectively rendered SSO state checking opt-in instead of opt-out (a2400f6b) +* introduce artificial delay + delay fudging on invalid email during reset token generation (f6c14d6b) +* #9605, expire all active reset tokens for a uid if that uid generates a new one (229f96f8) +* lint (8c952aa3) +* schema (39e13591) +* pagination on acp users search (6695927e) +* #9596, incorrect placeholder string in some translations (93d94564) +* extra ')' (6f732611) +* disallow editing of other users' notes (edcba61a) +* #9592, check session (286644d0) +* don't crash if session doesn't exist (3717df61) +* lint (66cae54e) +* improper use of filename extensions (16e0bca5) +* return null (d8d6c989) +* updates navigation menu user icon (f9b248b8) +* returnOriginal deprecation (3fb74445) +* error when trying to trim an object (48b8e3bb) +* **post-queue:** moderatedCids is an array of numbers (#9631) (db65360c) + +##### Performance Improvements + +* cache Topics.getTopicsTags (8e0561f2) +* bypass getMultipleUserSettings (10ddfff3) + +##### Tests + +* fixed broken tests from #9605, removed token clean on token usage as it is superceded by token clean on generation (+ associated test) (5c42b3ea) + +#### v1.17.1 (2021-05-26) + +##### Chores + +* **deps:** + * update dependency grunt to v1.4.1 (0e37bbfd) + * update dependency jsdom to v16.6.0 (60170ad6) + * update dependency eslint to v7.27.0 (298af98d) + * update dependency eslint-plugin-import to v2.23.0 (1623ba4f) + * update commitlint monorepo to v12.1.4 (4a01313d) + * update commitlint monorepo to v12.1.3 (b82774c5) + * update dependency eslint to v7.26.0 (d1418210) + * update dependency lint-staged to v11 (1bf57d40) + * update dependency mocha to v8.4.0 (461e187b) + * update dependency eslint to v7.25.0 (32c20806) + * update dependency grunt to v1.4.0 (a30deef3) +* incrementing version number - v1.17.0 (75f7972b) +* update changelog for v1.17.0 (4c441a1b) + +##### Documentation Changes + +* update API docs to better outline authentication options (6ef0c8e9) +* update API authentication verbiage (d08d0c42) + +##### New Features + +* keep query string when redirecting category (77dde41f) +* add req.query to flags.list/getCount (3d6bdeb3) +* add filter:flags.getFlagIdsWithFilters (d35c64b1) +* #9559, set order help text (f5847f4f) +* add filter:user.getWatchedCategories (4afca690) +* pass req.query to getUserDataByUserSlug (518157d9) +* #9508, add cluster support (94c12e37) +* #9551 (a3d6c56e) +* add template to hook (1f3e6601) +* add filter:account.getPostsFromUserSet (a2442ee9) +* automatically attempt reconnection on window focus (8cc61f11) +* #9533, allow redirect in build hooks (f6b583bb) +* add _hooks metadata object to all hooks that have object-type params (46899cca) +* add filter:categories.copySettingsFrom (d8e4fd4c) +* guard against multiple resolves (084c9851) +* #9511 send notifications on accept/reject (b40fc4b6) +* `hidden` class to FOUC (2bfa63ae) +* add filter:middleware.autoLocale (a478dc7e) +* remove sync hooks support (01956af4) + +##### Bug Fixes + +* #9580, proper 404 when ajaxifying (9ebfdeb7) +* lint (09f51792) +* #9567 fix tests (951e71a0) +* #9567, use regular 404 (5215c30a) +* ioredis upgrade fix, maybe (1ce59508) +* bug where interstitial errors were not properly passed to the front-end via req.flash (1d9cfe1e) +* #9553, use same fields for user search results in acp (0551642a) +* lint (e8c5c18a) +* lint (ffa80163) +* tests (fad5988e) +* tests (074ee859) +* wrong error message checked (a9bb1088) +* #9507 session reroll causes socket.io to become confused (#9534) (ec6d1e23) +* isObjectField(s) empty field (2c22b06f) +* do not register SW for Safari until upstream fixes #9193 (ce5fea2a) +* infinite scroll with small number of items #9524 (#9525) (cb1dd0a3) +* #9519 unable to properly ajaxify to home on subfolder installs if anchor did not have a trailing slash (db48b952) +* #9512, fix chat icon if no privileges (6ed8890c) +* #9503, dont error in markUnread if room doesnt exist (308252f5) +* use socket.request.headers (9e07efc1) +* buildReqObject headers for socket.io calls (ed534f34) +* **deps:** + * update dependency sharp to v0.28.3 (963a9fe6) + * update dependency ioredis to v4.27.3 (075dab27) + * update dependency nodebb-theme-vanilla to v12.0.8 (#9574) (10290f54) + * update dependency mongodb to v3.6.8 (#9573) (64935787) + * update dependency postcss to v8.3.0 (ad4afd59) + * update dependency nodebb-theme-persona to v11.0.20 (403bcfac) + * update dependency nodebb-plugin-composer-default to v6.5.29 (8d7e4420) + * update dependency mongodb to v3.6.7 (f29e4e87) + * update dependency textcomplete to ^0.18.0 (9b7653cc) + * update socket.io packages to v4.1.2 (#9563) (ca7c77bc) + * update dependency nodebb-plugin-dbsearch to v5.0.2 (#9562) (2d0564cb) + * update dependency nodebb-theme-slick to v1.4.7 (bf4aa50c) + * update dependency nodebb-plugin-composer-default to v6.5.28 (4164b322) + * update socket.io packages to v4.1.1 (155a7fb6) + * update socket.io packages to v4.1.0 (53335677) + * update dependency sharp to v0.28.2 (4bc07a08) + * update dependency postcss to v8.2.15 (7770c2a1) + * update dependency nodebb-theme-persona to v11.0.19 (3145c7d5) + * update dependency nodebb-plugin-mentions to v2.13.11 (7e2ea4df) + * update dependency nodebb-plugin-markdown to v8.12.10 (2ac5a085) + * update dependency nodebb-plugin-markdown to v8.12.9 (ee3634cc) + * update socket.io packages to v4.0.2 (ff98f854) + * update dependency postcss to v8.2.14 (22ec1ea5) + * update dependency sitemap to v7 (0389dd96) + * update dependency nodebb-widget-essentials to v5.0.4 (19f1cbfc) + * update dependency nodebb-theme-persona to v11.0.18 (33d91fde) + * update dependency connect-redis to v5.2.0 (c0d54a06) + * update dependency postcss to v8.2.13 (831e5c26) + * update dependency postcss to v8.2.12 (38454df9) +* **#9508:** switch to ioredis (#9545) (dd81dd03) + +##### Refactors + +* cli/upgrade async/await (#9558) (ac86937c) +* bubble other errors (0096cf17) + +##### Reverts + +* sync hooks (5fe97b9c) + +##### Tests + +* fix tests (1029a06a) +* fix redis tests (4e490f60) +* add test for undefined fields in getObjectsFields (92de49be) + +#### v1.17.0 (2021-04-22) + +##### Breaking Changes + +* add additional flag hooks [breaking] (00a68a95) +* remove deprecated `User.emailConfirm` [breaking] (fb84c785) +* remove deprecated plugin hook `filter:privileges:isUserAllowedTo` [breaking] (5a775e09) +* remove deprecated plugin hook methods [breaking] (d41de481) +* more removals of thumb specific backwards-compatibility [breaking] (cc0d562e) +* remove deprecated `filter:admin/header.build` hook [breaking] (5f9f241e) +* remove deprecated v2 style responses for thumbs upload route [breaking] (84dfdfe6) +* remove deprecated getObject routes [breaking] (2ad0d0d0) +* remove 'filters' and 'categories' from flag details API return [breaking] (8b72479f) +* filtering logic of flags [breaking] (1603566b) +* feature flag for auto-resolving a user's flags on ban [breaking] (6b1c97db) +* allow interstitial callbacks to be async functions [breaking] (280285cd) + +##### Chores + +* **deps:** + * update dependency jsdom to v16.5.3 (0f249aa7) + * update dependency eslint to v7.24.0 (60c0c16f) + * update dependency husky to v6 (f155f326) + * update commitlint monorepo to v12.1.1 (b4d01388) + * update dependency jsdom to v16.5.2 (5e2e7a58) + * update dependency eslint to v7.23.0 (d600cd94) + * update dependency husky to v5.2.0 (77f551a4) + * update dependency jsdom to v16.5.1 (28ed579b) + * update dependency eslint to v7.22.0 (775c3b91) + * update dependency mocha to v8.3.2 (3ce731d8) + * update dependency jsdom to v16.5.0 (fd926d61) + * update dependency mocha to v8.3.1 (651c629f) + * update dependency husky to v5.1.3 (8791b44e) + * update dependency husky to v5.1.2 (5f061b94) + * update commitlint monorepo to v12 (42f7cd52) + * update dependency eslint to v7.21.0 (59518437) + * update dependency husky to v5.1.1 (2551295c) + * update dependency husky to v5.1.0 (dc06fe22) + * update dependency eslint to v7.20.0 (9ec0b2ed) + * update dependency mocha to v8.3.0 (73f07958) + * update dependency husky to v5 (d89ccf26) + * update dependency lint-staged to v10.5.4 (030ecffa) + * update dependency eslint to v7.19.0 (3696a199) +* incrementing version number - v1.17.0-beta.5 (42c4f963) +* fix indent (6406e527) +* benchpress 2.4.1 (3403635c) +* remove log (a1ee1a2a) +* incrementing version number - v1.17.0-beta.4 (91992240) +* bump composer-default (289bfc0b) +* up themes (d14ba1f4) +* remove node 10 (8d3ec234) +* bump composer-default to 6.5.20 (33fbfdfe) +* incrementing version number - v1.17.0-beta.3 (6e8b1bb9) +* add multiparty dep (ef3ec96a) +* incrementing version number - v1.17.0-beta.2 (0c1945dc) +* incrementing version number - v1.17.0-beta.1 (31872aac) +* bump composer (30954789) +* bump deps (#9335) (b9fd2c87) +* incrementing version number - v1.17.0-beta.0 (b61257ef) +* incrementing version number - v1.16.3-beta.0 (477157cc) +* extra console.log (1ae8dda8) +* up composer (1c9acef6) +* eslint max-len (cc9d6fd0) +* eslint no-restricted-syntax (5c2f0f05) +* eslint prefer-rest-params, prefer-spread (115d19e2) +* eslint prefer-destructuring (23f212a4) +* eslint object-curly-newline (8d1462ff) +* eslint function-paren-newline (62869bae) +* eslint no-var, vars-on-top (dab3b235) +* eslint prefer-arrow-callback (b56d9e12) +* eslint prefer-template (707b55b6) +* eslint import/newline-after-import (4ee0f145) +* eslint no-script-url (9f6a682c) +* eslint no-bitwise (dad01e30) +* eslint rules matching existing styles (58528d1a) +* fallbacks (74be1a59) +* deprecation notices for plugins using plugin old hook methods (3052256d) +* add deprecation notice in comments for ajaxify.loadExtraScripts (8b09292e) +* incrementing version number - v1.16.2 (ea7f8381) +* update changelog for v1.16.2 (d3883d4b) + +##### Documentation Changes + +* fixed typo (e7550673) +* added comment re: #9305 (65c57c73) +* update deprecation-removal version for plugin hook helper methods in 1.18.0 (15ba0abb) + +##### New Features + +* lang strings (9b71b087) +* rate limit file uploads (a9978fcf) +* filter flags by username #8489 (#9451) (8faa6e45) +* roll session identifier on login, as security best practice (697ed3bf) +* allow different slugs (4494728c) +* remove sort again (fd3bc605) +* update hook (f65d2162) +* add reverse of recent to getSortedTopics (05f22361) +* allow exists methods to work with arrays and single id (285aa365) +* pass all data to filter:category.get (d16b45fd) +* add action:posts.loaded (dbb59228) +* rescheduling (editing ST) (#9445) (aa0137b1) +* upgrade sharp (#9442) (f7f46e7c) +* optional urlMethod param for loginStrategies (9e1f72a4) +* add hooks to language loading (#9426) (344575dd) +* doggy.gif (b06f0ea2) +* allow adding sorted-list items from forms outside of modal (a3e95e79) +* scheduled topics (#9399) (077330b7) +* show link if category is a link (a94d9651) +* make info page full width (dd12c83f) +* allow optional fields argument on db.getObject(s) (#9385) (4327a09d) +* closes #9380, add category filtering and topic tools to tag page (668508cc) +* allow sync function (#9379) (34b9aaed) +* allow filter functions that return promises or the data directly (e6c52cf2) +* add resolve flag to post tools (52082e12) +* hide revert button in ACP > Privileges until privileges change (4cbd13fd) +* bring back static hook timeout (46270f9f) +* upgrade connect-mongo, closes https://github.com/NodeBB/NodeBB/pull/9367 (3c60ccfd) +* pass interstital errors to individual partials as well as to registerComplete (f71cb0e4) +* add filter:plugins.firehook (5eb3132d) +* copy default favicon if it doesn't exist (754283d3) +* add missing translation keys (17184bfa) +* allow missing (or non-array) middlewares argument in route helper methods (4b545085) +* pass modified params, only affects filter hooks (e74df539) +* add back topic id input (696c4895) +* expose username validation logic to user lib, new hook `filter:username.check` (bfd512b9) +* add $.deserialize to client side (e5133a78) +* allow for settings.save/settings.load on client side (66196d2c) +* remove promise-pollyfil (902a88c2) +* category privilege API routes (c1b3079d) +* change uploadCroppedPicture to use updateProfile as well (0af9d26f) +* use updateProfile for picture change (a598abcd) +* allow payload to be passed to emailer test method (1155b0c4) +* add uid of user who created flag to action:flags.create (069ac60f) +* new client-side hook `filter:api.options` to allow plugins to modify api requests (7d391d47) +* keep notifs for one month, load 50 notifications instead of 30 (02f08111) +* also pass in uid to `filter:email.prepare` (86b0c57d) +* new hook `filter:email.prepare` (27ea3dcb) +* new hook static:email.send (bf90d158) +* show time info for upgrade scripts (14a6c349) +* add dashboard sub-pages to ACP menu (73dc64d9) +* recent logins sessions table in dashbaord subpage (2f89b0d7) +* topics dashboard details subpage (e1ed514b) +* update user list in dashboard/users on graph update (c57c7703) +* show list of recent users in dashboard/users (cc938224) +* req.query parsing and dynamically loading data instead (6fdcae73) +* new hooks for notifications get/getCount (079a13d4) +* allow hook unregistration, and temporary page-based hooks (d0136074) +* report login statistics from analytics data, instead of its own zset (16d3c457) +* track login sessions for admin dashboard reporting (9a9f366d) +* track successful logins in analytics (504fd107) +* pass user picture object into change_picture_modal (c96fd3b1) +* add logout to invalid session (beb14273) +* category search test (a592ebd1) +* pass post object to filter:post.tools (ed3d9dcb) +* allow defining a list of system tags (0e07f3c9) +* add category search test, #9307 (bbaaead0) +* add tag filter to getSortedTopics (9ce6f8ad) +* ability to re-order topic thumbnails (7223074f) +* add close button to topic thumbnail modal (db027170) +* #9304, add category/topic/username to post queue notification emails (0738dae8) +* add failing test for list append/prepend with list (#9303) (8f0386d9) +* link to post-queue from topic event (a4b4a556) +* post-queue topic event (8fd78ce5) +* add post-queue cache (3f35fd33) +* newsletter opt-in/out in UCP, closes #21 (3c7cd9a6) +* load user posts/topics via xhr on infinitescroll (35954734) +* #9294, put new categories at top (4b2bf12f) +* add invalid event name to error message (670cde78) +* new notifications load/loaded hooks on client side (7edc8f45) +* pass req.session into buildReqObject (a6fa351b) +* new hook `action:login.continue` (4f976390) +* banned-users group (53e0d4d2) +* #9109, ability to delete a post's diffs (eb642f40) +* add .delete() method to api module (501441b7) +* doc add description (cc560ca3) +* add doc for query param (ed11e171) +* #9234, add pagination to /api/recent/posts/:term? (fffdc4e0) +* allow sorted-lists on multiple pages (d5d24594) +* #9232, add profile picture into exported zip (f6cd2862) +* new hook `filter:login.override`, deprecate `action:auth.overrideLogin` (b820d234) +* guard password fields in login/register against accidental caps lock (4bb3b032) +* ability to search categories, #8813 (34c42c6f) +* restore action:script.load, allow modifying loaded module via static:script.init (05be1c66) +* async/await redis connection (fdfbc902) +* async/await psql connection (33bf1b0e) +* add group name to csv event (672959c1) +* **user:** icon background selector in change picture modal (95502124) +* **remountable-routes:** + * allow category and account routes to be remounted (9021f071) + * allow /admin and /post to be remountable (f01af62b) +* **topic-events:** + * topic events GET route in write API (dc84559d) + * server-side tests for topic events (449c379d) + * clear out topic events when a topic is purged (0d4a3775) + * client-side handling on topic event log (8e93bf73) + * handle newest_to_oldest sort in topic events, WIP (882e6a15) + * generic css for timeline-event (2293a07a) + * support for uids in topic event payloads (611d1f87) + * work in progress topic events logic and client-side implementation (ab2e1ecb) +* **hooks:** + * update action:ajaxify.end to use new hooks module (1d775721) + * client-side hooks module (01c9b184) + +##### Bug Fixes + +* regress. rescheduling shouldn't add to sets that pinning removed… (#9477) (8b79c7f1) +* logic is hard (4dd38446) +* run in series (bc0ca61c) +* wrong variable for cache (2e9efc0e) +* accidentally committed this (13fa983e) +* tests (eb240c90) +* eslint (fa0c92a7) +* use req.ip instead, since guests can upload as well (ea22cd30) +* #9492, keep query params on redirect (36f119a9) +* stripTags for editing sorted list items as well (93598982) +* #9487, session data gathered during a session is lost upon login (1fee6a70) +* failure on session reroll 🍣 test (f4c5050a) +* registration interstitials not handling promise rejections properly (e845c34b) +* stripHTMLTags for sorted list entries (75073c0e) +* restore original behavior for up/downvoting when logged out (e50408b4) +* let recent replies respect oldest/newest sort settings (60eed8d8) +* #9483, fix events count display (6907837f) +* escape flag reason (161081e9) +* copy change on plugin activate to instruct admins to rebuild as well as restart (95d5359c) +* updateCategoryTagsCount (2dc3283f) +* #9473 (#9476) (036f935f) +* #9474, load hooks on page load (1af34b43) +* spec (d09cdc04) +* #9466, don't call leaveRoom in maintenance mode (f32ea173) +* exempt ST from being del/res via last main posts (#9468) (a0dd9080) +* #9462, on install copy default favicon (784600d9) +* #9463 (c5ae8a70) +* #9465 (4041e786) +* #9450 express session saved even if saveUninitialized explicitly passed in (9c52fd2e) +* acp crash (cb53a64c) +* #9447, include query params in previousUrl (536591f8) +* thumb count not updated when uploading multiple thumbs at a time (1ad1787e) +* change email button stays disabled if user submitted an invalid email (01f63e5d) +* use app.logout() to clear session after deleting user (cfdef77b) +* ./nodebb help with commander@7 (#9434) (2a03012e) +* hide titleRaw for deleted topics as well (edf80cfb) +* #9410, fix post queue (c5dda64f) +* privilege tables (9052db93) +* #9420, paginate after loading notifications (67b09cba) +* hooks for alert animate, no more fadein/fadeout for reconnect alert (d9e20290) +* #9414, use posts:view_deleted (e42b152f) +* preserve order when changing parent (2ceda70a) +* #9411 (3c4e93a3) +* #9412 (cef58d1d) +* #9406, update flag post tools (93c595d9) +* typo in switch..case (d8ff9851) +* #9404, show signatures if the target user has signature privilege (801570e4) +* selector (ee69c1f8) +* sorting when filtering by uid (75553b24) +* allow local (and overridden) login strategies to pass Error objects back (98b72ca5) +* category search not using uid (6aa60b63) +* inf scroll with subfolder install (262e059f) +* flicker on dashboard (2041b808) +* #9398, crash on post flag (90d64fe1) +* #9395, pass all data from client to Topics.reply (#9396) (a8f7b244) +* lint (4ac38ab2) +* #9394, fix guest handles (eb360351) +* #9387, don't try to load undefined images (03e30634) +* #9389, allow admins to add themselves to private groups (5c59354c) +* #9386, add missing translation string (482641e3) +* #9383, don't show deleted topic titles in inf scroll (e789fe8d) +* #9378, crash on verifyToken if API Token settings not saved (null case error) (cc489708) +* closes #9382, fix digest topic links (35700d16) +* spec (1e1127bd) +* regression from filter hook change (53f67ff3) +* crash if unreadTopics is undefined (617f4730) +* dont crash if login el doesnt exist (f45c0aab) +* regression via c1b3079d93fb4c49ba62a4be5279b7bff8e5a54d (2a939aad) +* change notification updateCount to use client-side hooks (84725130) +* tests (39b0e0fb) +* #9370, show correct teaser index if sorting is newest to oldest (9382fc6d) +* don't copy if src doesn't exist (ebccc794) +* #9362 best not to check file exists on every page load; copying favicon to uploads/system folder instead (771a8955) +* #9362 (ad565495) +* regression where login redirect for admin routes didn't go to local=1 (678e8f0f) +* lint (f4f61b92) +* if no in passed use "titles" to match header search (e787e6ea) +* add back middleware.authenticateOrGuest (166d65a1) +* request authentication called twice in account routes (e3b2c00d) +* #9354, don't close quicksearch results if mouse is down on them (8a4c361e) +* #9339, only log email errors once per digest, notification push (3aa26c4d) +* winston.info (3f42d40c) +* #9351 bad logic when inserting rows to privilege tables, also a missing tfoot :foot: (c5e25788) +* app.parseAndTranslate to always return promise (c2650169) +* bug where fallback window trigger was not firing if there were no hook listeners attached (1e579428) +* bad assignment (c8b78654) +* #9348 incorrect redirect via connect-ensure-login (fbe9215b) +* bug where loginSeconds setting was ignored for local login (f806befd) +* remove old dep (b58bacaf) +* notif pruning (2737f653) +* notification prune test (ca817631) +* user icon text overflow in some cases (2b7d0b5a) +* use components for toggleNavbar instead (114e3a1e) +* allow interstitial callbacks to be functional (no cb required) (9bf94ad5) +* don't publish before pubClient is connected (cdf5d18f) +* remove unused async (48f1e265) +* in setupPageRoute helper, buildHeader after plugin hooks have fired (984c9dd9) +* timeago missing on table update (655e2c67) +* wrong qs param, allow string to be passed to util.getDaysArray (f8e1a74c) +* wrong call to sortedSetAdd (dbe5f702) +* session not persisting to database in some scenarios (020f0b83) +* allow hidden inputs in user settings page (beaac0a1) +* use root context if buildAvatar context is undefined (b4c0b32b) +* use bootbox module (fa91525a) +* #9307, use _.flatten (25c8f026) +* awaiting res.render in send404 controller > > A plugin wanted to use `response:rotuer.page` to 404 a specific page on some condition. res.render returns early in send404 and so must be awaited otherwise multiple responses will be sent (2fef4627) +* do not overwrite `config.port` from URL, if it's already set (34096b73) +* switch back to getSortedSetRange (8686fbfa) +* settings v3 (91734a64) +* another topic thumb test fix (782bef5e) +* thumbs.associate logic fix + tests (7ebb6d30) +* missing awaits, possible test fix (7665adf7) +* #9301, dont call sitemapstream if there are no entries in categories/pages/topics.xml (9a6cf3d9) +* properly incase its the same path (807b0d43) +* numThumbs count on associate (76bcc0c9) +* missing cache deletion calls for post-queue cache (1490b32d) +* use of removed URL to get post data (36e8d251) +* init topic events from webserver.js (b81508c4) +* check null topics (b753c69c) +* guard against null topics (58cd797e) +* tests, new categories go to top now (fc90f32e) +* #9292, messageobj.content already parsed (c953b1b3) +* clear category cache on copy parent (765db86d) +* delete category cache key on category create (ed3e9ce2) +* typo (c61cc37b) +* wait for event.log to finish before killing process (a5fa212f) +* tests, only generate csrf_token on 404 gets (b6493f89) +* #9287, generate csrf_token on 404 (94f72d60) +* do not blindly escape a notification's bodyLong (783786cf) +* pass jquery object in to action:notifications.loaded hook (16610b2d) +* #9275, (0cca6893) +* don't use global bootbox obj (cfa0d423) +* remove console.log (550cd995) +* move service worker back to relative_path/service-worker.js (fca17cb7) +* spec (ab0ef442) +* markread selector (a4878a5b) +* position when scrolling up (3090a2ae) +* cache key collision (e40af441) +* tests breakage due to 67e3fb64981fe2310b17515e1f18c32021a5e983 (5c21c33e) +* register returnTo logic to match login route (67e3fb64) +* tests (492cbc62) +* posts.uploads.sync dissociates uploaded thumbs of the main pid (f79aeef8) +* update grammar on unban text (68da1c55) +* privileges page - tweak icon position and width, group name wrapping (c729adeb) +* autofocus on search field in ACP > Manage > Plugins (4af9c2fc) +* openapi test specs (cabec378) +* include admins (7c9674de) +* include admins, limit to category mods, correct privilege name (eaf9d2e4) +* http 200 test for api routes (bd583963) +* invalid API call when unfollowing a user (58655e9a) +* example (833c73e8) +* #9127, scope service worker to relative_path for the forum (#9239) (2bc74cff) +* update docs (4c12e0aa) +* broken test after sorted-lists logic change (d6f60f45) +* clear all locks on restart (9834f72f) +* `action:admin.settingsLoaded` to use new hooks lib (5131eb6b) +* crash on firing action hook that had no listeners registered (b0f5d5a5) +* bug where `action:settings.sorted-list.loaded` fired early (1a04ec64) +* regression where `filter:settings.set` no longer received sorted-lists (a8be6fb8) +* #9231, fix redis pubsub connection (5bc1f5b4) +* don't translate message on every ajaxify (a29dd21d) +* tests (05c53394) +* improper override of req.body.username in login logic (74199220) +* full settings hash not passed through to action:settings.set (473d5f4a) +* #9223, don't overwrite stmp settings (a5bf9779) +* multiple sorted-lists do not save to the correct set (4029ec37) +* pass module name to `static:script.init`, +comments (f8bf9e99) +* handle delete and update for categories:name zset (e8429f50) +* tests remove old routes (faeb6373) +* removed object routes (d41ce873) +* removed methods (647d3ba8) +* incorrect return for Thumbs.get() if thumbs were disabled (7b090c58) +* script failure if client-side page script does not exist (7da1b43f) +* bug where `action:ajaxify.end` was never called if there were no init scripts (faf59603) +* update js concatenation logic to bundle scripts.rjs into minfile regardless of build environment (8ff07bc1) +* #7125, allow list for page route, configurable via plugin hook (f975063b) +* error on flag list if no flag filters were saved in session (942d9247) +* mod cid filter accidentally saved in session (35c92d0c) +* more tests for #9217 (ce7c74b2) +* tests for #9217 (f2a5cd0b) +* missing return for #9217 (27cae0d5) +* #9217, render 400 error page on bad access to /register (b2b1450e) +* redis check compat tests (78896fc6) +* registration completion overriding returnTo if it was already set (a186ea0f) +* add missing user delete event types (5c1b7429) +* missing option for user-deleteAccount on ACP Events page (1c420602) +* **deps:** + * update dependency html-to-text to v7.1.1 (427e4f47) + * update dependency redis to v3.1.2 (35a4d0be) + * update dependency validator to v13.6.0 (e3d5d8d7) + * update dependency nodebb-plugin-composer-default to v6.5.27 (1b846271) + * update dependency redis to v3.1.1 (286a63e3) + * update dependency nodebb-theme-persona to v11.0.17 (51d58ce6) + * update dependency nodebb-theme-vanilla to v12.0.7 (16a1ba57) + * update dependency postcss to v8.2.10 (31cec2de) + * update dependency nodebb-plugin-mentions to v2.13.9 (fe087806) + * update dependency mongodb to v3.6.6 (#9467) (4264b236) + * update dependency sharp to v0.28.1 (34cbc9e2) + * update dependency nodebb-theme-persona to v11.0.16 (a8330b6d) + * update dependency nodebb-theme-vanilla to v12.0.6 (c02310b8) + * update dependency nodebb-theme-persona to v11.0.15 (316c71d7) + * update socket.io packages to v4.0.1 (e7776f8d) + * update dependency redis to v3.1.0 (fd9ff334) + * update dependency nodebb-plugin-composer-default to v6.5.26 (#9446) (8d9afbc6) + * update dependency postcss to v8.2.9 (6f51c460) + * update dependency nodebb-theme-persona to v11.0.14 (#9443) (fecfcd81) + * update dependency nodebb-theme-persona to v11.0.13 (#9437) (e5cc6e40) + * update dependency nodebb-theme-slick to v1.4.6 (dfdb0050) + * update dependency nodebb-theme-persona to v11.0.11 (27de58f2) + * update dependency benchpressjs to v2.4.3 (382f75bc) + * update dependency nodebb-plugin-composer-default to v6.5.25 (24236718) + * update dependency nodebb-theme-vanilla to v12.0.5 (89973d80) + * update dependency nodebb-plugin-composer-default to v6.5.24 (dec34446) + * update dependency nodebb-theme-persona to v11.0.10 (f78b4ba6) + * update dependency nodebb-plugin-composer-default to v6.5.23 (#9422) (e35d0741) + * update dependency nodebb-theme-persona to v11.0.8 (124cb9d9) + * update dependency benchpressjs to v2.4.2 (1dddcb49) + * update dependency nodebb-plugin-mentions to v2.13.8 (d511216c) + * update dependency connect-mongo to v4.4.1 (29ff5bb9) + * update dependency nodebb-theme-persona to v11.0.7 (c5734063) + * update dependency nodebb-theme-vanilla to v12.0.4 (#9409) (870e6c2c) + * update dependency nodebb-theme-slick to v1.4.5 (#9408) (24be8642) + * update dependency nodebb-theme-persona to v11.0.6 (#9407) (b50739c1) + * update dependency nodebb-plugin-spam-be-gone to v0.7.9 (#9405) (9359cae9) + * update dependency nodebb-theme-persona to v11.0.5 (47b2b97f) + * update dependency nodebb-plugin-composer-default to v6.5.21 (#9401) (2f70ac5a) + * update dependency mongodb to v3.6.5 (fcd887fd) + * update dependency nodebb-plugin-composer-default to v6.5.19 (#9391) (1631f159) + * update dependency nodebb-plugin-composer-default to v6.5.17 (#9384) (8d401760) + * update dependency nodebb-theme-persona to v11.0.3 (27facadb) + * update dependency socket.io-redis to v6.1.0 (adaddde6) + * update dependency nodebb-plugin-composer-default to v6.5.16 (a98e92b4) + * update dependency nodebb-plugin-markdown to v8.12.7 (#9371) (56b0bfd5) + * update dependency nodebb-theme-vanilla to v12.0.2 (#9369) (8923d34c) + * update dependency nodebb-theme-persona to v11.0.2 (#9368) (fa71c483) + * update socket.io packages to v4 (#9363) (13f3c504) + * update dependency postcss to v8.2.8 (680cf5ef) + * update dependency nodebb-theme-persona to v10.5.17 (2645bf55) + * update dependency connect-mongo to v4.3.1 (59459074) + * update dependency connect-mongo to v4.3.0 (f388086a) + * update dependency autoprefixer to v10.2.5 (4f4cdacc) + * update dependency postcss to v8.2.7 (72db3754) + * update dependency nodebb-plugin-composer-default to v6.5.13 (017af7cb) + * update dependency jquery to v3.6.0 (dd6082a0) + * update dependency connect-mongo to v4.2.2 (ec0912cc) + * update dependency nodebb-plugin-spam-be-gone to v0.7.8 (#9337) (536bae70) + * update dependency nodebb-plugin-composer-default to v6.5.12 (2674de01) + * update socket.io packages to v3.1.2 (510eb1f9) + * update dependency nodebb-theme-persona to v10.5.16 (217d3afd) + * update dependency nodebb-plugin-emoji-android to v2.0.5 (e8209341) + * update dependency sharp to v0.27.2 (c5231f10) + * update dependency nodebb-theme-vanilla to v11.4.5 (8596dcc4) + * update dependency nodebb-theme-persona to v10.5.15 (753ab0a0) + * update dependency nodebb-theme-persona to v10.5.14 (ed503b80) + * update dependency nodebb-theme-persona to v10.5.12 (ddd8fa31) + * update dependency benchpressjs to v2.4.1 (4ee3a8e8) + * update dependency nodebb-theme-persona to v10.5.10 (7f8fd4b0) + * update dependency nodebb-theme-persona to v10.5.9 (5dd748c6) + * require xregexp 5.0.1 (86e911ba) + * update dependency xregexp to v5 (513cd1c3) + * update dependency nodebb-theme-persona to v10.5.8 (54b4dc1d) + * update dependency postcss to v8.2.6 (4d92af5a) + * update dependency nodebb-theme-persona to v10.5.7 (#9288) (c2459fd5) + * update dependency nodebb-plugin-composer-default to v6.5.10 (b312725f) + * update dependency nodebb-theme-persona to v10.5.6 (4599144f) + * update dependency nodebb-widget-essentials to v5.0.3 (#9284) (eb9f058f) + * update dependency nodebb-plugin-composer-default to v6.5.9 (6e14014b) + * update dependency nodebb-plugin-composer-default to v6.5.8 (674a31d1) + * update dependency nodebb-theme-slick to v1.4.3 (#9278) (d3923585) + * update dependency nodebb-theme-vanilla to v11.4.4 (#9279) (1f28e8c3) + * update dependency nodebb-theme-persona to v10.5.5 (#9277) (a7b46adc) + * update dependency connect-redis to v5.1.0 (#9276) (83a0b6b8) + * update dependency nodebb-theme-persona to v10.5.4 (#9270) (dc145284) + * update dependency nodebb-theme-vanilla to v11.4.3 (#9272) (2fda6774) + * update dependency nodebb-theme-slick to v1.4.2 (2b12905d) + * update dependency nodebb-theme-lavender to v5.2.1 (fb2f1143) + * update dependency nodebb-theme-slick to v1.4.1 (#9262) (2cfab367) + * update socket.io packages to v3.1.1 (#9253) (2147d386) + * update dependency postcss to v8.2.5 (1fa0d4f4) + * update dependency nodebb-plugin-emoji-android to v2.0.1 (42e365d9) + * update dependency nodebb-plugin-markdown to v8.12.6 (4fd6027b) + * update dependency nodebb-plugin-mentions to v2.13.7 (8a2fe3d9) + * update dependency nodebb-theme-vanilla to v11.4.2 (2326e9a6) + * update dependency nodebb-theme-persona to v10.5.3 (9245ffaf) + * update dependency nodebb-plugin-dbsearch to v4.2.0 (389690c3) + * update dependency nodebb-plugin-composer-default to v6.5.7 (13e12c95) + * update dependency json2csv to v5.0.6 (0aa8e03f) + * bump theme deps for #9244 (44019e28) + * update dependency mongodb to v3.6.4 (56e4e56b) + * update dependency nodebb-theme-persona to v10.5.1 (04411449) + * update dependency nodebb-theme-vanilla to v11.4.0 (#9238) (897d29ec) + * update dependency nodebb-theme-slick to v1.4.0 (#9237) (8e2deab4) + * update dependency nodebb-theme-persona to v10.5.0 (#9236) (4f842a79) + * update dependency nodebb-theme-lavender to v5.2.0 (47fd1634) + * update dependency nodebb-plugin-dbsearch to v4.1.3 (1e10ebfb) + * update dependency nodebb-plugin-composer-default to v6.5.6 (0e2b329b) + * update dependency autoprefixer to v10.2.4 (6c3b1fde) + * update dependency nodebb-plugin-markdown to v8.12.5 (05901fcd) + * update dependency nodebb-theme-persona to v10.4.1 (a9b3fb37) + * update dependency sharp to v0.27.1 (a90773a6) + * bump persona to get timeline style (ca14c0e2) + * update dependency postcss to v8.2.4 (5b2f0be0) + * update dependency autoprefixer to v10.2.3 (d99cb1cf) + * update dependency postcss-clean to v1.2.0 (4232d97b) +* **#9315:** api v3 post, put, del JSON (0d59fe3d) +* **remountable-routes:** + * more fixes to remountable routes (9d17f397) + * bug with user routes remounting to itself (bc68e990) +* **#9252:** pass site domain to nodemailer (#9254) (5e5d37c3) +* **topic-events:** + * topicEvents.init() test (aa8b84bb) + * repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM (df2fdd56) +* **hooks:** + * bug where hook firing would fail if there were no listeners (efff8e2a) + * fallback handling for core invocations of hooks.fire (412d2858) + +##### Other Changes + +* schema docs for new ACP dashboard subpage routes (0804d547) + +##### Performance Improvements + +* increase batch size for notifs, run parallel (728ac5ff) +* faster category tags upgrade script (0dad568c) +* use setObjectBulk (95033ef7) +* make upgrade script faster (a07509f7) +* make upgrade script faster (0959b124) +* cache base_url (cf4002bc) +* single call to get digest topics, dont send duplicate topics (5ce28207) +* single db call to add all uids (90d5c9da) +* make digests a little bit faster (0185ea1b) +* only load thumbs for topics that actually have thumbs (7eebcbdb) + +##### Refactors + +* make debug handler async (1db8920b) +* widgets (#9471) (397baf02) +* style, no need to convert length to string (d00268c9) +* deprecate action:script.load, use filter:script.load instead (d1685600) +* remove uncessary check (f316c4d4) +* remove async.each/reduce from hooks for better stack traces (d05d7091) +* use hooks.fire (0d3979ef) +* fix variable name (1982edfd) +* account edit logic and template, closes #9364 (98bf4064) +* automatically authenticate all requests setup through route helpers (#9357) (7da061f0) +* async listen testSocket (0021c601) +* remove startsWith/endsWith (48bc23c0) +* app.parseAndTranslate to return promise if no callback passed (b5a6a314) +* privileges, export modules directly (#9325) (293b7c26) +* have Graph.init and Graph.update return promises (3fa2e3ce) +* abstract out some client side dashboard code into modules, analytics subpages for users, topics, and logins (f561799f) +* move picture change client-side logic to its own rjs module (28f6931e) +* remove dupe code (5286f208) +* thumbs.associate accepts both relative path and url in path arg (3e6640ef) +* move post queue retrival code to posts.getQueuedPosts (36f20211) +* call topic events init from within file itself (6074a0fb) +* improvements (970bd06f) +* update dom after diff deletion better (a2a7557c) +* removed 3 lines (4447a64e) +* use Map to track sorted lists in Settings.set() (65de2e76) +* **user:** all plugins to change list of icon background colours (fbccf6e2) +* **remountable-routes:** + * rename `src/routes/accounts.js` to `src/routes/user.js` to better match the route prefix (1f28713f) + * allow certain route prefixes to be mounted elsewhere (92758ec5) +* **topic-events:** + * expose addTopicEvents method in topic posts lib (9559fad8) + * break out some logic in events.get into local modifyEvent method (cec3fc93) + * fire topic event logging in topics/tools instead, pass uid into payload (425eca14) +* **hooks:** + * deprecate `action:script.load` client-side hook (8e5687a4) + * better error handling (e7bd038d) + +##### Reverts + +* revert tag sort (f9df6431) +* change toPid truthy (56523aa1) +* bring back backwards compat (a1c01446) + +##### Code Style Changes + +* eslint (b5ce8d25) +* **remountable-routes:** abstract removable routes code to a separate local fn (16c1d6e9) + +##### Tests + +* remove logs (435067aa) +* clear cache between runs, require middleware later in helpers (2ea468da) +* log (d15e2710) +* remove equals (354e0a82) +* test times (2f401d7d) +* log (80ef1082) +* added test for session id reroll on login (a3a7ab3a) +* add missing test (8ef38cb2) +* double filter test (70a653d0) +* admin/manage/users tests (0e67ab01) +* fix spec for topic thumbs (4c078084) +* added missing properties to topicObject (1d9ade4c) +* added missing test file (b31f6dd2) +* topic reordering tests (ad54b174) +* additional tests for topic thumbs (50664487) +* added more topic thumbnail tests (28b30134) +* post diff deletion tests (72b050b4) +* **user:** added additional tests for icon background colour (d3a9e76a) + +#### v1.16.2 (2021-01-21) + +##### Breaking Changes + +* unescape header navigation originalRoute [breaking] (6cb5888c) +* allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.8 (a6f5de86) + * update dependency eslint to v7.18.0 (afbef95f) + * update dependency husky to v4.3.7 (d3e041e2) +* incrementing version number - v1.16.2-beta.0 (43ff8e41) +* incrementing version number - v1.16.1 (e3cd7a23) +* update changelog for v1.16.1 (b6d71710) + +##### New Features + +* add filter:email.cancel to allow plugins to cancel sending emails (c2e23706) +* grant plugins the ability to specify options to the SSO handler (ab11435e) +* add unread-count badge if navigator contains /flags route (c07e1e16) +* handle HTTP 429 as a response code (8bbb3208) +* add write API route for checking login credentials (56f929ed) +* #8813, faster category search dropdown (072a0e32) +* **api:** schema definition for new credential checking route (0da28432) + +##### Bug Fixes + +* **deps:** + * update dependency bootbox to v5 (#8751) (b5cb2f8b) + * update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f) + * update socket.io packages to v3.1.0 (3d1224e1) + * update dependency nodebb-theme-slick to v1.3.8 (1901ecb2) + * update dependency sortablejs to v1.13.0 (36069da2) + * update dependency autoprefixer to v10.2.1 (5b3c48fd) +* https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8) +* restored sanity checks for post move socket calls (d85ad10d) +* don't chagne scrollTop if at the top of page (0fa4c11e) +* #9206, fix double escaped arguments (1590cdf1) +* regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232) +* don't crash if fullname is not a string (4fb90787) +* #9204, bypass groupname length check for system group in upgrade script (00ba89b6) +* add missing await (9938a139) +* ssoState passed to strategies even if not called for (9b289eca) +* use max (0a471b76) +* keep 60 topics minimum on topic list (c30b40ab) +* access checks for tags and thumbs get route (77ab4668) +* #9194 global mods unable to pin or unpin topics (c0fb1cb5) +* #9192, exit after logging error (ef16cd2e) +* make sure inviter user exists (69419571) +* #9178 missing language strings (and fallbacks) for post-queue (a407a51d) +* #9185, fix string boolean values (89e6c75d) +* test for topicThumbs (e817d5be) +* #9184 proper relative_path usage in topic thumbs.get (66da6bcd) +* #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e) +* #9177, handled multiple deleted users properly (eaf62d39) +* broken test caused by errant .pop(), missing await (4ede18ce) +* missing error message (d83d40cf) +* test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab) +* #9176, limit description size (da546970) +* broken test due to change in response code (9534d956) +* return a user object, not an array of user objects (in v3 login check route) (97d678fd) +* bad execution flow in utilities.login (8c86f5bc) +* missing breadcrumbs in schema (87a7d85e) +* random loadFiles added by errant vscode autocompletion (53422413) +* add missing breadcrumb on /user//categories (6cbb77af) +* `--help` usage info (a51c5698) + +##### Performance Improvements + +* use only required calls (f0dd302c) + +##### Refactors + +* **api:** + * post move to write API (966c4117) + * post diffs to use write API (e118e59c) +* change var to const (1374e0ee) +* single remove call (25ab99b9) +* flags lib to have a separate getFlagIdsWithFilters method (6a1311b4) +* split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f) + +##### Code Style Changes + +* update codeclimate config to be less sensitive to duplicate code blocks (fdf03472) + +#### v1.16.1 (2021-01-06) + +##### Chores + +* increase test timeout (0d7dfeeb) +* incrementing version number - v1.16.1-beta.0 (5fcf3ea6) +* add deprecation notice to topic thumb tpl value (05d8b3c3) +* minor reordering of lines (8e5a413e) +* incrementing version number - v1.16.0 (6d01fd50) +* update changelog for v1.16.0 (1437c62f) +* **deps:** + * update dependency eslint to v7.17.0 (18ae7cf7) + * update dependency eslint to v7.16.0 (2610dfcf) + * update actions/setup-node action to v2 (#9115) (55a55ea2) +* **api:** add deprecation notices re: #9123 (cdff8d28) + +##### New Features + +* #9173, show installed plugin versions in ./nodebb plugins (8c31afae) +* added note that you can now upload videos (4d6ddf6d) +* automatically attempt socket.io reconnection on ajaxify (e5edbc6f) +* #9135, don't try to reconnect forever (c1ecfd1e) +* add confirmation modal when assigning admin:admins-mods privilege (d90aa958) +* allow dashes in privilege group names (5b8558e9) +* allow multiple privileges to be defined for a given admin socket call (3aa5beb8) +* rename admin middleware header hook (fcc1e24a) +* explicitly add filter:admin/header.build hook (75b1bbd0) +* fix more tests, add more routes, update api test suite (cb32e32a) +* add registration/complete route, fix some other tests (14c51e3c) +* add missing schemas for various ACP settings routes (9de35ec5) +* add missing schema for category update and deletion (d6de9253) +* add schema for api ping routes (d85181e0) +* normalize paths before comparison (df8d62ba) +* additional test to ensure any new routes added to express have a corresponding schema doc (dbe85630) +* update html-to-text closes https://github.com/NodeBB/NodeBB/pull/8810 (a2152dd1) +* **api:** + * closes #9123 category and topic routes migrated to Write API (edb8da1e) + * #9123, migrate rest of the getObject controllers to Write API (9ecfac9b) + * #9123, migrate /api/post/pid/:pid to Write API (e267f295) + * group ownership API route, switch client-side to use API route (32e36f7b) + * add schema for groups update route (98550d61) + * added schema for email unsubscribe token (4fc13377) +* **acp:** + * admin tags privilege (223f0a55) + * admins-mods privilege (fb46a8d9) + * added new admin privilege for groups management (da191341) + +##### Bug Fixes + +* #9130, remove timestamp prefix from thumbnail names in API response (171017c3) +* #9166 missing relative path in topic thumbs modal and topic list (b9ba44ed) +* #9163, fix total connection count on ACP (1968bf50) +* genericise .necro-post, bump persona to latest (041d45c3) +* #9126, skip base64 and long values (33290850) +* #9127, use assets path (3121215e) +* inability for admins with setting privilege to save plugin settings (a555f024) +* #9149, server-side handling of disableChatMessageEditing (895e3d93) +* #9149, incorrect client-side `disableChatMessageEditing` value for admins/gmods (d27815a8) +* #9151, dont use service worker for posts requests (20c1b684) +* #9150, fix selector so it doesn't add img-responsive to profile pics (183cabe9) +* tests (28740360) +* dont show deleted posts in navigator (931105e6) +* bug in api path existence test (501a7b77) +* #9136, fix move topic/post timeout errors (2ef72a94) +* bad assignment logic in middleware.renderHeader (34ccabe3) +* #9113, wrong path separator used in thumbs.get (da4f9118) +* email testing and settings change from ACP (2be396ff) +* removing ability to specify deprecated topic 'thumb' on topic creation (713f029d) +* #9129, event is fired on socket.io (b369dc88) +* subfolder handling in tests (bbd97ccb) +* .flat() not defined in v10, added debug router to exclusion list (6062039d) +* all tests, wrap up work (f416dc17) +* two more routes (9c2de86a) +* api tests (b9a61d2d) +* don't return deleted: 0 for ephemeral groups (600807fb) +* send fewer items to client-side for ACP settings/email page (438fa5c8) +* errors in write-api schema (c079051b) +* broken tests from last round of fixes (990f1077) +* bad error message for request body api test (a9629357) +* modify backreference test to not check router.all() calls (7fc329de) +* add missing token generation route to write api spec (eef052c1) +* trigger action:posts.edited (b7b588f5) +* **deps:** + * update dependency autoprefixer to v10.2.0 (e445ae5a) + * update socket.io packages to v3.0.5 (fd045c67) + * update dependency nodebb-theme-persona to v10.3.16 (87e333b4) + * update dependency benchpressjs to v2.4.0 (4524f825) + * update dependency nodebb-theme-persona to v10.3.15 (189be9e0) + * update dependency nodebb-widget-essentials to v5.0.2 (1dd1d3b0) + * update dependency nodebb-widget-essentials to v5.0.1 (#9144) (f55dddb2) + * update dependency nodebb-plugin-composer-default to v6.5.5 (6d980d26) + * update dependency sharp to v0.27.0 (4919e596) + * update dependency nodebb-theme-persona to v10.3.12 (37b35f7d) + * update dependency nodebb-theme-persona to v10.3.11 (db4c6863) +* **tests:** handle nested allOf blocks (77a5adb6) +* **api:** + * failing test due to missing file (3959a7bd) + * tests (80ee3dfb) +* **pwa:** #9127 service-worker.js missing on subfolder installs (b8d4709e) + +##### Refactors + +* **openapi:** update TopicObject component to reference TopicObjectSlim in its schema (fb3f3f72) +* **api:** + * deprecated groups update socket in favour of API lib (1cd2689c) + * update group deletion calls to use write API (e640a41a) +* schema backreference test to use map instead of reduce, properly check write-api routes (878ee067) + +##### Tests + +* changed test a bit to see what is going on (5f038dff) + +#### v1.16.0 (2020-12-17) + +##### Breaking Changes + +* enable topic thumbnails across the board [breaking] (9342d611) +* #8808, remove utils.slugify (4a0d8833) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.6 (2371b432) + * bump persona to 10.3.9 (91899329) + * bump composer to 6.5.1, re: #9067 (228cfa67) + * update dependency husky to v4.3.5 (48a31763) + * update dependency husky to v4.3.4 (cf5c482d) + * update dependency eslint to v7.15.0 (f4c4d671) + * update dependency lint-staged to v10.5.3 (3e6f7359) +* appease codeclimate (9f62df15) +* add comment for clarification (6037f5ee) +* incrementing version number - v1.15.5 (57cd1343) +* update changelog for v1.15.5 (b0299326) +* **i18n:** fallbacks for new topic thumb keys (15f1a089) + +##### New Features + +* add new client side hooks (a15ef53c) +* remove max age since cache is cleared when thumbs change (ab96f526) +* show alt text instead of images in teasers (#9107) (d28581eb) +* migration of old topic thumbs to new format (74d73313) +* allow plugins to override ACP relogin challenge (4c87f301) +* add user.email.confirmByUid for sso plugins (80de572a) +* add thumbs to category data return (24e754d1) +* broken test for bad topic thumbs logic (ce8057f3) +* clent-side modal for managing topic thumbs (a30c8ab5) +* raise maximum thumb size to 512 (37c367d6) +* associate topic thumbs with post uploads (for the mainPid) (1c5cdb51) +* helper method to get thumbs by pid (cb7e4cda) +* closes #9048, tests for topic thumbs routes, write API schema (59506833) +* tests for topic thumbs (4152aa55) +* server-side work for #9047 (ef7d6db9) +* core work for #9042, thumb deletion now accepts uuids (b5d910f5) +* more work on topic thumbs refactor (90497e3e) +* expose uploaded thumbnails to client-side via API (1257aa98) +* server-side routes for handling multiple topic thumbnails (7e9e08f7) +* allow uploadThumb controller to be called in code (98cd9e35) +* move upgrade script and make it shorter (60e7de0d) +* allow clicks on navigator, clean dupe code (74274b60) +* socket.io 3 changes (#8845) (1c45fa1b) +* **deps:** update lavender to allow category sections (6d186be0) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.5.4 (#9120) (fff0cea6) + * update dependency nodebb-theme-slick to v1.3.7 (#9112) (30688b1b) + * update dependency nodebb-theme-lavender to v5.0.17 (#9111) (877f4673) + * update dependency nodebb-theme-vanilla to v11.3.10 (ff18cdfa) + * update dependency validator to v13.5.2 (#9094) (5d718348) + * update dependency nodebb-theme-vanilla to v11.3.9 (#9091) (f37dbeed) + * update dependency nodebb-plugin-composer-default to v6.5.3 (d036408d) + * update dependency nodebb-plugin-composer-default to v6.5.2 (b07fb9ab) + * bump composer-default to 6.5.0 (0db49121) + * update dependency autoprefixer to v10.1.0 (024d1fef) + * update dependency nodebb-theme-persona to v10.3.8 (#9084) (25f697b1) + * update socket.io packages to v3.0.4 (62463430) + * update dependency nodebb-theme-persona to v10.3.7 (c22cdb51) + * update dependency nodebb-theme-persona to v10.3.6 (#9077) (5937fbaf) + * update dependency nodebb-plugin-mentions to v2.13.6 (#9071) (a535350f) + * update dependency nodebb-theme-slick to v1.3.6 (#9072) (19c438c6) + * update dependency nodebb-widget-essentials to v5 (#9070) (d7f5efd9) + * update dependency nodebb-plugin-markdown to v8.12.4 (8fb814ba) + * update dependency nodebb-theme-persona to v10.3.5 (#9060) (0d082280) + * update dependency nodebb-theme-persona to v10.3.4 (#9059) (84e4e480) + * update dependency nodebb-theme-persona to v10.3.3 (3d7e2e1e) + * update dependency nodebb-theme-persona to v10.3.2 (#9056) (f49ce4ad) + * update dependency nodebb-theme-persona to v10.3.1 (#9054) (344caf5c) + * update dependency nodebb-theme-lavender to v5.0.15 (#9053) (e7d72d8a) + * update dependency nodebb-theme-persona to v10.3.0 (#9052) (dcd6fbaf) +* api usage (feecd665) +* #9117, lower query before search (4404e32e) +* #9114, fix client side groups update for memberPostCids (3ed55799) +* test (2dee3cbe) +* don't check "select all" if there are no enabled checkboxes (3ba05755) +* #9074, fix svg uploads (8f938eba) +* #9100 topic thumbs in OG image tags (ab987408) +* update version removal comments to 1.17 for some features (378a3a69) +* postgres is slow:tm: (05dd8597) +* derp? (f8dff94a) +* attempted fix for psql test in topic thumbs (9a4ea04a) +* use getSortedSetRange instead of getSortedSetsMembers (edf67f34) +* tests (bd5c4a5c) +* bad topic thumbs logic on local thumb upload (e83baa97) +* #9092, Topic thumbnails do not work with third-party uploaders (3e54b70c) +* move topic thumb tests to root level, so they actually get run by mocha (dd448e2b) +* tests for topic thumbs (9681557f) +* iteration logic bug (2170c400) +* spec (ae943974) +* changes to thumb resizing logic (67cf5e83) +* use file lib instead of direct fs module access (08736b18) +* added back missing topic thumb tests that were removed in last commit (c043cfeb) +* tests (5ec3b3d0) +* hack uploader to handle a response from v3 write api (41379e27) +* #9055, non-standard API response from addThumbs route (340387c1) +* do not allow thumb deletion route to arbitrarily delete other files in uploads folder (c09c238e) +* missing file added (ef10b6b7) +* references to since-removed Topics.thumbs.resizeAndUpload (1f0c1cd2) +* #9041, remove Topics.thumbs.resizeAndUpload() (43dc3e3e) +* #9040 (708b1c33) +* spec (1949d20a) +* #9085, dont prevent admins from deleting other users (0f480be6) +* show errors when user delete fails (ff2aa17b) +* dont start logout timer if adminReloginDuration is disabled (dd9ed236) +* #9045, no post usage info if '/files/' path received (efa4eca0) +* reconnectin no longer fires on socket.io 3 (13d5a144) +* default values, clamp postsPerPage/topicsPerPage to max (1f32d387) +* #9081, load raw settings before merging (9da0ed40) +* #9068 (86f0f82b) +* remove old utils.slugify tests (10cfdd4c) +* dont strip tags (792e9e70) +* #9065, settings v2/v3 conflict (91c20cec) +* #9063, missing handler for passwordless accounts in admin.checkPrivileges middleware (970ccb5a) +* timeago in navigation (a389a31b) +* navigation fixes (163d1a39) +* cache some jquery objects (73d2f51d) +* add ev.cancelable (63d08395) +* #9046, pretranslate string (790f4e45) +* redirect external with absolute urls (648f6215) +* external path for subfolder installs (458bfc0f) +* **spec:** broken link to status component (d31aae16) + +##### Performance Improvements + +* don't load thumbs if disabled globally, cache thumb results (2d5a224b) +* dont build identical langs (bb6cc49c) + +##### Refactors + +* topic thumbs lib to topics.thumbs (4fc9da81) + +#### v1.15.5 (2020-12-03) + +##### Chores + +* up persona (c111bde1) +* incrementing version number - v1.15.4 (a1b658d9) +* update changelog for v1.15.4 (252dddfc) + +##### New Features + +* add socket connect/disconnect action hooks (fcb10ebd) +* allow modifiying browser title on ajaxify (698718f8) + +##### Bug Fixes + +* #9032 (64ac483d) +* sso redirect on /login & /api/login (5d00b089) +* use file lib instead of directly accessing fs (for Assert.path) (3ea66f84) +* check uid as well (ef6c3b00) +* #7597, fix progress bar of cover/profile uploads (7e867cf9) +* **deps:** update dependency nodebb-plugin-spam-be-gone to v0.7.7 (#9039) (c7f2640a) + +#### v1.15.4 (2020-12-02) + +##### Chores + +* up persona (dde3171c) +* fallbacks for nodebb.error (82ca3760) +* fallbacks for nodebb.topic (5b269bc5) +* remove test code (07fe959c) +* incrementing version number - v1.15.3 (d1ae08fa) +* update changelog for v1.15.3 (cf157c9b) + +##### New Features + +* #9005, use timestamp in profile/cover images (5f0f476b) +* #8983, update pin tooltip in topic (954dc5b7) +* option to allow auto-joining of groups (optionally skip the "request membership" step) (685f3c6a) +* user notification settings for group.leave event (c1a7968d) +* add defaults for composer help (0cba2691) +* #8900, postQueue setting for category (1eb5fabd) +* #8960, update view count after merge (14bb0a44) +* use correct code (557f0f56) +* #8989, convert widget nav to dropdown (4c650aee) +* add handler for 501 api response (007a3258) +* add translation key for pin icon label with expiry (12b3aa0d) +* add pinExpiry and pinExpiryISO to topic data (ad8e7700) +* add cancel button to pin expiration modal (e1432caf) + +##### Bug Fixes + +* #9032, fix login redirect for sso plugins (6f68f4d2) +* #8962, dont show null for purged targets (86b7f8a5) +* selector on hooks page (3488daa1) +* notification on group.leave incorrectly showing "Guest has left X group" (f7558c60) +* #9019, add missing lang strings (b46d2f93) +* #9018 (e45b5cba) +* #9015, add default value for dailyDigestFreq (0f1fc10f) +* spec (cfb7b113) +* #8997, don't send notifications if uids already in group (f7c738de) +* #9002 ban templates not user friendly (4317cdea) +* #9010, show rest of info even if clusterMonitor priv is not granted (202dcef4) +* #9007 revoke old sessions after adding (d46740f8) +* guests dont always have sid (70073653) +* allow guests to see their replies immediately (a4fe4d3c) +* privs headers (92d1b8a6) +* pwd reset test (f25000cb) +* #8991, logout on password reset, dont verify email if password expired (5080f357) +* don't show topic search if no search privilege (8adbf54a) +* #8998, allow guests to use write api to post/reply (3cd0c9a4) +* guest handles to user displayname as well (5a137a0d) +* timestamp in queue, add post queue strings (546f58bf) +* #8992, set email:confirmed for first admin user (7f5efc3e) +* typo in upgrade script, closes #8990 (80f0750b) +* #8984, post-queue ux (1269103f) +* order (9ab4fb41) +* #8982, copy color on tag rename, dont copy if target exists (d3c04afb) +* tests (b596e948) +* api test (77a6dbac) +* remove dupe (cbbda451) +* csv test (3de692cd) +* spec, remove old tests (4afdf8bc) +* #8969, export csv to file (6e6a7a8f) +* spec for /tag (88e5cda5) +* #8980, fix lang string (f4d217d8) +* #8979 (bf171adc) +* #8971, disallow flags of privileged users (mods, gmods, admins) (1e7cf1cb) +* #8974, with password login for approval queue (dadb2527) +* #8974, dont show wrong message on register queue (fdca8b16) +* #8973, fix timestamp on ban modal (5c3deb4b) +* #8968, don't show topic search if search is not enabled (c8554b78) +* flicker on tooltips if server call takes long time (4c7374ea) +* missing select/clear all checkbox added to category privileges template (#8967) (a56a6577) +* use package.name for theme.id (#8965) (ba3981e2) +* winston usages (b8cafefc) +* #8957 (414caac0) +* dont go back after delete account actions (7e6427bc) +* error message (47a19d67) +* #8954, clear purged replies and toPids (#8959) (5bb5ec46) +* #8955, popstate to purged topic should go to homepage (39dae0aa) +* 'already-deleting' error on subsequent account content deletions (21d6225c) +* #8949, faster upgrade script (93863bb3) +* **deps:** + * update dependency nodebb-theme-vanilla to v11.3.8 (#9031) (18707940) + * update dependency nodebb-theme-slick to v1.3.5 (#9030) (4085f3e6) + * update dependency nodebb-theme-persona to v10.2.98 (#9029) (f7d60c43) + * update dependency nodebb-theme-persona to v10.2.97 (42b23a3b) + * update dependency nodebb-plugin-composer-default to v6.4.10 (#9025) (43bbfb67) + * update dependency nodebb-theme-vanilla to v11.3.7 (#9024) (3f597a55) + * update dependency nodebb-plugin-composer-default to v6.4.9 (#9023) (110186b9) + * update dependency nodebb-theme-slick to v1.3.4 (#9022) (8dc1437e) + * update dependency nodebb-theme-persona to v10.2.96 (#9021) (2c9cd286) + * update dependency nodebb-plugin-composer-default to v6.4.8 (#9017) (1f5f2e1d) + * update dependency nodebb-plugin-markdown to v8.12.3 (9004319e) + * update dependency validator to v13.5.1 (7b39cf4b) + * update dependency nodebb-theme-persona to v10.2.95 (#9001) (4ddab380) + * update dependency nodebb-theme-persona to v10.2.94 (#9000) (877d8554) + * update dependency nodebb-theme-persona to v10.2.93 (#8999) (c44d9d2f) + * update dependency nodebb-theme-persona to v10.2.92 (#8995) (346b91eb) + * update dependency nodebb-theme-vanilla to v11.3.6 (#8987) (6c980db1) + * update dependency nodebb-theme-persona to v10.2.91 (#8986) (8258536a) + * update dependency autoprefixer to v10.0.4 (#8985) (fad2d342) + * update dependency nodebb-plugin-markdown to v8.12.2 (f5714452) + * update dependency nodebb-theme-persona to v10.2.90 (5664807d) + * update dependency nodebb-theme-vanilla to v11.3.5 (19fe2493) + * update dependency nodebb-theme-persona to v10.2.89 (ad60bc06) + * update dependency autoprefixer to v10.0.3 (b2f0d38f) + * update dependency benchpressjs to v2.3.0 (6c316be4) +* **openapi:** + * spec for c1a7968d23f0809e7012edfccf49b193749998ec (69864b87) + * spec for 685f3c6aa6173383d6c31b87ed51cf8ed0ca44ce (1bb75e76) +* **acp:** + * #9008 undefined link for "no users browsing" state on dashboard (54dc449f) + * #9009 no-users-browsing untranslated on dashboard (286243cd) +* **spec:** + * from 6e6a7a8f8a9a75500ba1f336cabc882234212f88 (acb57666) + * breaking tests (88a60473) + * broken test due to canFlag addition (1b1205a9) + +##### Refactors + +* remove old hack (73746bb4) +* add TopicObjectSlim common schema (22715d54) +* pin/lock threadTools to use topicCommand, rewrote topicCommand to match categoryCommand signature (15c6f32c) + +#### v1.15.3 (2020-11-26) + +##### Chores + +* bump persona (720170a9) +* remove console.log (6a819944) +* move topic route schema up two levels as slug and index are optional (ae402e21) +* move category route schema up two levels as slug and index are optional (b3b501d7) +* up persona (0ffc091b) +* up persona (2f2f0ab7) +* up persona (5c9ff18e) +* add missing plugin hook deprecation warning (98a05e4d) +* pin autoprefixer to latest (46eb7701) +* incrementing version number - v1.15.3-beta.0 (28fa03bd) +* up persona (81984285) +* up slick (5f2fe883) +* incrementing version number - v1.15.2 (5867a5b9) +* update changelog for v1.15.2 (37965d45) +* **spec:** replace ugly hack with another hack for optional properties (45a4f136) +* **deps:** + * update dependency lint-staged to v10.5.2 (db205e2e) + * update dependency eslint to v7.14.0 (80404216) + +##### New Features + +* add topicOwnerPost #8778 (c037779f) +* clear reset tokens on user delete (4f37eddc) +* select/clear all checkboxes in privilege table (#8941) (00e75de7) +* show ban reason and expiry in write api responses, if user is banned (afb26bfe) +* automatically unban users in onSuccessfulLogin (6e5ec3f8) +* #8925, #8924 (3f337b5d) +* human readable uptime (672d4da0) +* allow ACP API access to bearer tokens (3b1c03ed) +* allow pins to expire (if set) (#8908) (046d0b16) +* #8637 (903e9d82) +* add displayname into user obj #8637 (#8909) (9ca44e6f) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.2.87 (#8946) (167ab3a4) + * update dependency nodebb-theme-persona to v10.2.86 (#8945) (5af5cb85) + * update dependency nconf to ^0.11.0 (58152606) + * update dependency postcss to v8.1.10 (5363ebbb) + * update dependency nodebb-theme-persona to v10.2.85 (#8928) (abc32d62) + * update dependency postcss to v8.1.9 (d1cb5d48) + * update dependency postcss to v8.1.8 (b47a470b) + * update dependency nodebb-theme-vanilla to v11.3.4 (#8914) (589f7a56) + * update dependency nodebb-theme-persona to v10.2.80 (#8913) (38127b04) + * update dependency nodebb-theme-persona to v10.2.79 (#8907) (8e1b2458) + * update dependency nodebb-theme-persona to v10.2.75 (b9856179) +* add topic uid to infinitescroll (6771ca15) +* #8943, session mismatch modal thrown on login (race condition) (d5845169) +* #8912 (ac734b83) +* #8918 (e32cd31e) +* basepath for r.js modules (3af4d13f) +* test (61c6a762) +* move meta.getServerTime call to admin namespace (1c0e8c16) +* add client side check for userslug #8939 (f20c12ee) +* #8939, fix username change notification getting filtered out (0ca40af8) +* #8931, fix lang string (cf903e4e) +* #8932, fix client side error when updating username (95a3f030) +* bug with Topics.resizeAndUploadThumb not checking for extension validity (eab4ca71) +* #8933 (2b73a14e) +* #8929, fix popular, top rss feed urls (77f0bff5) +* a derp (5dd3b031) +* spec (b18e7e31) +* improper handling of scheme-relative URLs in topic thumb logic (4ca62dc4) +* https://github.com/NodeBB/NodeBB/pull/8685 (5fa09832) +* on OP edit, call helper method to upload and resize thumb (f33a9185) +* https://github.com/NodeBB/NodeBB/pull/8759 (9ee1fb49) +* spec (c2bb6123) +* guest displayname (1be08b2e) +* show messages after app load (46acbfda) +* restart on js changes in vendor (814771bd) +* #8915, fix queue not being cleared after firing click events (6ef7e867) +* spec, only call modifyUser on unique user objects (dbd814c2) +* setting (ae5d4405) +* spec (8d060065) +* group userTitles translation escapes (e9585b9b) +* remove params from error log (965671a9) +* **spec:** always show thumb in topic response (493c568a) + +##### Refactors + +* remove unused require (db1c140f) +* move API banned response handler to separate internal method (906d7d73) +* move plugin hook methods to plugin.hooks.* (6e2da996) +* remove breaking change in pin expiry (ef3df47a) +* use categoryCommand local method for pin/lock in category tools (#8917) (00aee84b) + +#### v1.15.2 (2020-11-18) + +##### Chores + +* incrementing version number - v1.15.2-beta.1 (20c05e80) +* remove debug log (0a0b4661) +* incrementing version number - v1.15.2-beta.0 (996174a1) +* **deps:** update dependency smtp-server to v3.8.0 (5f5f0edb) + +##### Documentation Changes + +* openapi schema for user/group exist check, session deletion (bcccb331) + +##### New Features + +* #5274 (4e9b10ab) +* #4456 (fb567a7a) +* #8475, allow flagging self posts (a6afcfd5) +* #7550, show message if post is queued when js is disabled (120999bf) +* #8171, add oldCategory if topic is moved (35f932cd) +* #8204, separate notification type for group chats (b44ddecd) +* add test for custom translations (7928036a) +* https://github.com/NodeBB/NodeBB/issues/8147 (1d6bcbeb) +* invites regardless of registration type, invite privilege, groups to join on acceptance (#8786) (3ccebf11) +* add nodejs version to issue template (29c2ca94) +* allow groups to specify which cids to show member posts from (#8875) (8518404e) +* **api:** account deletion routes for the Write API (#8881) (a0b7a823) +* **deps:** benchpressjs@2.2.1 (#8887) (d30ea256) + +##### Bug Fixes + +* #6407, fix feeds (fa4177c3) +* navigation highlight (62b62821) +* benchpress warnings (a87ccccc) +* benchpress warnings (dfdc0c42) +* internal helper method hasGlobalPrivilege, DRY (e1d7c4d8) +* spec (2f4653a3) +* #8884, remove header/footer cache (e4d2764d) +* check tid in event handlers client side (9dac9630) +* #8883 (f14e42d8) +* #8872 missing admin/menu language key+fallback (fdab76f8) +* run every hour, dont show message if average_time is 0 (51b7eca1) +* add back test timeout for exports (b3e00489) +* pass length to messaging checkContent hook (dc9668e4) +* **deps:** + * update dependency nodebb-theme-persona to v10.2.74 (#8905) (5f6137f0) + * update dependency nodebb-theme-persona to v10.2.73 (#8904) (c2019b7b) + * update dependency nodebb-plugin-composer-default to v6.4.7 (#8902) (b7b1f203) + * update dependency nodebb-theme-persona to v10.2.72 (#8903) (bee8cfe4) + * update dependency nodebb-theme-vanilla to v11.3.3 (422aa7f0) + * update dependency nodebb-theme-persona to v10.2.71 (3b6e71d5) + * update dependency nodebb-theme-persona to v10.2.70 (d6dd1cb6) + * update dependency nodebb-theme-slick to v1.3.2 (2ce1fcd3) + * update dependency nodebb-theme-vanilla to v11.3.2 (9f2d0d42) + * update dependency nodebb-theme-persona to v10.2.69 (15810643) + * update dependency sharp to v0.26.3 (84d54577) + * update dependency nodebb-plugin-mentions to v2.13.5 (dde9f189) + * update dependency json2csv to v5.0.5 (b63b7ae5) + * update dependency benchpressjs to v2.2.2 (d1e804aa) + * update dependency nodebb-theme-vanilla to v11.3.1 (#8878) (85aaeded) + * update dependency nodebb-theme-slick to v1.3.1 (bbfb276a) + * update dependency nodebb-theme-persona to v10.2.68 (ec70329a) + * update dependency nodebb-plugin-spam-be-gone to v0.7.6 (#8877) (45922fae) + * update dependency nodebb-plugin-spam-be-gone to v0.7.5 (#8876) (48e82520) + * update dependency nodebb-plugin-spam-be-gone to v0.7.4 (#8874) (eab27f23) + +##### Refactors + +* client-side handlers for user invitations (d83eb7f8) +* async/await controllers/index.js (5598130a) +* less dupe code (8fbe8324) + +##### Tests + +* new api test to ensure each path's parameters are defined in context (97842c43) +* updated test name to be more specific (319cfeaa) + +#### v1.15.1 (2020-11-11) + +##### Chores + +* incrementing version number - v1.15.1-beta.0 (e033da8a) +* fallback l10n for admin-settings-api (8368c25b) +* **deps:** + * update dependency eslint to v7.13.0 (bcbc0854) + * update dependency eslint-config-airbnb-base to v14.2.1 (d227fe9f) + * update commitlint monorepo to v11 (90bcfa6d) + +##### New Features + +* #8864, add action:events.log (9c5c32d4) +* show db info side by side (62c0454c) +* add language keys for admin-settings-api (d32e4e02) +* #8824, cache refactor (#8851) (f1f9b225) +* move mkdirp to beforeBuild so it doesnt get called twice (6255874e) +* group exists API call in write api (d2631922) +* user exist route in write api (1446cec7) +* new shorthand route /api/v3/users/bySlug/:userslug (60e1e99b) +* allow passwords with length > 73 characters (#8818) (512f6de6) +* #8821, allow guest topic views (9e3eb5d4) + +##### Bug Fixes + +* #8869, dont escape category title,description twice (567c5f20) +* refresh flags list on bulk action success (769aba0a) +* test breakage from f300c933a50263039a57811f8cc716df39a138b0 (ee4d90f6) +* remove some unnecessary jquery wrappers (9f7902ef) +* send back jquery object to keep backwards compat (978f1ee0) +* use header/footer cache in prod (a0164b1c) +* add missing maxAge to cache (05a92885) +* clear header-cache after each suite (3f5f38dd) +* show msg on fail (255cf43e) +* spec (fe63c6ae) +* guest header/footer cache (2e446392) +* #8846, possible fix (74951f59) +* winston error message (16d03975) +* permanent redirect on user api redirect shorthand (6b196a20) +* user exist route needs no authentication (f2bb42c0) +* #8840, don't crash if /compose route is called with no query params (c61dee4b) +* XSS in event:banned messaging modal (f68bce86) +* #8838, fix chat dropdown timestamps (78ee8332) +* #8836, truncate fullname (76cd5b0f) +* #8827, do not require admin:users privilege to ban users (891a1ea2) +* **deps:** + * update dependency nodebb-plugin-mentions to v2.13.4 (1460a7a8) + * update dependency diff to v5 (72d1b3cd) + * update dependency nodebb-theme-persona to v10.2.67 (#8847) (e250c3f1) + * update dependency json2csv to v5.0.4 (#8865) (ba7b23ac) + * update dependency postcss to v8.1.7 (#8866) (2946bb16) + * update dependency nodebb-theme-slick to v1.2.40 (#8863) (20f4fe08) + * update dependency nodebb-plugin-mentions to v2.13.3 (#8862) (c18f4491) + * update dependency benchpressjs to v2.1.0 (14ba6383) + * update dependency benchpressjs to v2.0.9 (381a32ab) + * update dependency mongodb to v3.6.3 (#8841) (7e273e77) + * update dependency nodebb-theme-persona to v10.2.66 (#8839) (00f90cd9) + * update dependency nodebb-plugin-mentions to v2.13.2 (#8835) (064c99cd) + * update dependency postcss to v8.1.6 (e0cf9740) + * update dependency @nodebb/socket.io-adapter-mongo to v3.1.1 (#8831) (40eb658b) + * update dependency @nodebb/mubsub to v1.7.1 (#8830) (7b8a5567) + * update dependency postcss to v8.1.5 (9f5ef9d0) +* **#8828:** web install templates now compiled (#8832) (de5a21f1) +* **acp:** max-height for plugin menu list (eec630f1) + +##### Refactors + +* move session revocation route to write api (f300c933) +* change Benchpress.parse to .render (#8856) (e128264b) + +#### v1.15.0 (2020-11-04) + +##### Breaking Changes + +* remove toolsVisible in post tools' menu [breaking] (7e7366be) + +##### Chores + +* update changelog for v1.15.0-rc.5 (69f4d5ac) +* incrementing version number - v1.15.0-rc.5 (4bd2788b) +* add info log into tests (b6d86878) +* update renovate config to automatically merge non-major version bumps #yolo (1c8b8ce1) +* update changelog for v1.15.0-rc.4 (16882941) +* incrementing version number - v1.15.0-rc.4 (57b49320) +* update changelog for v1.15.0-rc.3 (2738041b) +* incrementing version number - v1.15.0-rc.3 (6de7760a) +* bump persona (e0b67817) +* update changelog for v1.15.0-rc.2 (c3a7ab54) +* incrementing version number - v1.15.0-rc.2 (7c084134) +* update changelog for v1.15.0-rc.1 (4f49b3da) +* incrementing version number - v1.15.0-rc.1 (943424b5) +* update changelog for v1.15.0-rc.0 (aab5f018) +* incrementing version number - v1.15.0-rc.0 (8d48455b) +* update changelog for v1.15.0-beta.30 (39648722) +* incrementing version number - v1.15.0-beta.30 (2dd3c962) +* some optimizations for codeclimate (4a63c20a) +* update changelog for v1.15.0-beta.29 (63696c40) +* incrementing version number - v1.15.0-beta.29 (fca176d2) +* refactor src/emailer.js (75459517) +* update changelog for v1.15.0-beta.28 (fd975a66) +* incrementing version number - v1.15.0-beta.28 (57f83162) +* update changelog for v1.15.0-beta.27 (70673824) +* incrementing version number - v1.15.0-beta.27 (78fad240) +* lint notifications.js (4fc84e9f) +* update changelog for v1.15.0-beta.26 (5e01d288) +* incrementing version number - v1.15.0-beta.26 (62c44095) +* up persona (ff8a833a) +* up persona (4a0f54ae) +* update changelog for v1.15.0-beta.25 (240a04b4) +* incrementing version number - v1.15.0-beta.25 (1124d4ee) +* up persona (032e6001) +* update changelog for v1.15.0-beta.24 (72ab5ba1) +* incrementing version number - v1.15.0-beta.24 (23ba071d) +* up persona (5407bf48) +* up persona (4c2eab4b) +* up persona (91133b0f) +* up persona (bcac0805) +* up persona (9dc4db1f) +* up persona (ba70a1bf) +* update changelog for v1.15.0-beta.23 (e6ea208c) +* incrementing version number - v1.15.0-beta.23 (61a04eb9) +* update changelog for v1.15.0-beta.22 (59ee74c2) +* incrementing version number - v1.15.0-beta.22 (9c9329ee) +* update changelog for v1.15.0-beta.21 (8089542e) +* incrementing version number - v1.15.0-beta.21 (966cdc13) +* update changelog for v1.15.0-beta.20 (1650f303) +* incrementing version number - v1.15.0-beta.20 (c8e57ec1) +* update changelog for v1.15.0-beta.19 (9cde5105) +* incrementing version number - v1.15.0-beta.19 (2eb7c284) +* update changelog for v1.15.0-beta.18 (b2ca9686) +* incrementing version number - v1.15.0-beta.18 (e096791e) +* update changelog for v1.15.0-beta.17 (d6178158) +* incrementing version number - v1.15.0-beta.17 (f1c28092) +* update changelog for v1.15.0-beta.16 (e08297ff) +* incrementing version number - v1.15.0-beta.16 (6043c9cb) +* update changelog for v1.15.0-beta.15 (f878b92c) +* incrementing version number - v1.15.0-beta.15 (10b94f9b) +* update changelog for v1.15.0-beta.14 (5e60d092) +* incrementing version number - v1.15.0-beta.14 (6ca4b86f) +* update commitlint config (61a8c6f0) +* update changelog for v1.15.0-beta.13 (ca8d492b) +* incrementing version number - v1.15.0-beta.13 (bdd71c51) +* update changelog for v1.15.0-beta.12 (0a242605) +* incrementing version number - v1.15.0-beta.12 (b852c9b7) +* update changelog for v1.15.0-beta.11 (f07ba866) +* incrementing version number - v1.15.0-beta.11 (c1ce7391) +* update changelog for v1.15.0-beta.10 (9c34eced) +* incrementing version number - v1.15.0-beta.10 (f252d4d7) +* update changelog for v1.15.0-beta.9 (affc7927) +* incrementing version number - v1.15.0-beta.9 (8dc513da) +* update changelog for v1.15.0-beta.8 (3b960c3b) +* incrementing version number - v1.15.0-beta.8 (34bb869c) +* update changelog for v1.15.0-beta.7 (e449ff9a) +* incrementing version number - v1.15.0-beta.7 (fd917b8e) +* update changelog for v1.15.0-beta.6 (a7f03b64) +* incrementing version number - v1.15.0-beta.6 (a9019cbe) +* update changelog for v1.15.0-beta.5 (0e90064e) +* incrementing version number - v1.15.0-beta.5 (81e4c4df) +* update changelog for v1.15.0-beta.4 (6c4aed8c) +* incrementing version number - v1.15.0-beta.4 (f2726a6d) +* update changelog for v1.15.0-beta.3 (11e2ccab) +* incrementing version number - v1.15.0-beta.3 (39178c2d) +* update changelog for v1.15.0-beta.2 (d8a9f1c3) +* incrementing version number - v1.15.0-beta.2 (59b50d0a) +* update changelog for v1.15.0-beta.1 (aeca19d5) +* incrementing version number - v1.15.0-beta.1 (4fa57fbb) +* incrementing version number - v1.15.0-beta.0 (bff80983) +* incrementing version number - v1.14.3-beta.16 (d9a05035) +* incrementing version number - v1.14.3-beta.15 (e2a253f2) +* incrementing version number - v1.14.3-beta.14 (9500871e) +* incrementing version number - v1.14.3-beta.13 (b5a2e4b6) +* incrementing version number - v1.14.3-beta.12 (f4c986a7) +* incrementing version number - v1.14.3-beta.11 (8618c32a) +* incrementing version number - v1.14.3-beta.10 (fa341714) +* incrementing version number - v1.14.3-beta.9 (9945c409) +* incrementing version number - v1.14.3-beta.8 (b5dcce9c) +* incrementing version number - v1.14.3-beta.7 (2531c44c) +* incrementing version number - v1.14.3-beta.6 (97088f68) +* incrementing version number - v1.14.3-beta.5 (a33a8a5a) +* incrementing version number - v1.14.3-beta.4 (55b3e376) +* incrementing version number - v1.14.3-beta.3 (5a5abf3c) +* incrementing version number - v1.14.3-beta.2 (bbab183f) +* incrementing version number - v1.14.3-beta.1 (2c06f6ac) +* incrementing version number - v1.14.3-beta.0 (3f87d5f9) +* update changelog for v1.14.2 (cd94c24a) +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* **deps:** + * update dependency mocha to v8.2.1 (35e725d1) + * update dependency lint-staged to v10.5.1 (2fa78e43) + * update dependency eslint to v7.12.1 (#8799) (224502d8) + * update dependency lint-staged to v10.5.0 (#8797) (1f2eca6a) + * update dependency eslint to v7.12.0 (#8791) (3108f628) + * update dependency lint-staged to v10.4.2 (#8773) (4bfd0087) + * update dependency eslint to v7.11.0 (#8747) (bb85c059) + * update dependency lint-staged to v10.4.1 (#8771) (08a240fa) + * update dependency mocha to v8.2.0 (#8772) (a471b1af) + * update dependency eslint-plugin-import to v2.22.1 (aacf8f22) + * update dependency eslint to v7.10.0 (#8687) (119ab719) + * update dependency lint-staged to v10.4.0 (2833624e) + * update dependency eslint to v7.9.0 (b1d781e8) + * update dependency eslint to v7.8.1 (#8597) (39110276) + * update dependency lint-staged to v10.3.0 (#8608) (dc1f1db9) + * update dependency mocha to v8.1.3 (#8588) (05efeff6) + * update dependency eslint to v7.8.0 (#8594) (e1b98142) + * update dependency lint-staged to v10.2.13 (efc30e97) + * update dependency mocha to v8.1.2 (#8579) (c722b0e5) + * update dependency grunt to v1.3.0 (df61d080) + * update commitlint monorepo to v9.1.2 (877cdfb9) + * update dependency eslint to v7.7.0 (#8564) (f1398da2) + * update dependency jsdom to v16.4.0 (#8554) (bb8f7c74) + * update dependency eslint-config-airbnb-base to v14.2.0 (#8396) (fde4f110) + * update dependency eslint-plugin-import to v2.22.0 (#8390) (788a8bfe) + * update dependency mocha to v8.1.1 (fe352eb1) + * update dependency eslint to v7.6.0 (#8540) (37418375) + * update dependency mocha to v8.1.0 (#8536) (72a78833) + * update dependency @apidevtools/swagger-parser to v10.0.1 (#8517) (8c498fa1) + * update dependency nyc to v15.1.0 (#8353) (c872bd8b) + * update dependency eslint to v7.5.0 (#8463) (b2be329c) + * update dependency jsdom to v16.3.0 (#8483) (82ada1bd) + * update dependency grunt to v1.2.1 (#8462) (b2dc6d60) + * update dependency @apidevtools/swagger-parser to v10 (9e2c3ce0) +* **writeapi:** cleanup (f6782471) + +##### New Features + +* add back error handling for a number of api calls (1afd2150) +* #8823, remove hardcoded write concern (a338f527) +* #8817, add login clientside hooks (715775a7) +* use github actions for ci (#8811) (eddf4a4f) +* allow mods/admins to see deleted posts on user profile (6e85920c) +* rearrange buttons on manage/users (27016d22) +* #8801, disable express compression by default (6ac73ccb) +* allow passing subset of user settings on update route (ec03af7a) +* wip, write api tests framework (b156b8b5) +* add filter:category.getFields (88a07e69) +* move postercount to topic hash (0db0231c) +* add free and total mem usage to info (a7b6d0df) +* new filter filter:teasers.configureStripTags (177a9610) +* send 'Vary' header when ACAO header set (d68ffea8) +* add filter.topics.getPostReplies (7a019494) +* topic reply to use api lib (also + missing file) (21974a77) +* send 401 for invalid-uid (ede9435f) +* async/await admin/search (c913900e) +* ignore test folder (2927509a) +* send back 403 on no-privileges error (14f9d8b0) +* refactor groups.delete (8ae1f81c) +* move groups.join to api (d69e503d) +* allow plugins to define api routes (9dd3cc04) +* require https if nodebb is configured with https url (a4ba2389) +* add nyc config (3326d80c) +* change user search to use filters array (a2edb86d) +* add filter (959314c9) +* require csrf token if not using bearer token (1e07886f) +* #8662, verified/unverified user groups (682e926c) +* more fixes (700e1e43) +* more work (40a05b70) +* wip admin/users (b038ac07) +* set unread false for guests (7beaf490) +* add stack to deprecate message (01265d08) +* add checkbox tests (d76229c0) +* add test for serialize/deserialize form (e92d4719) +* disable write api tests until fixed (ae5fb103) +* #8734, add slugify module, deprecate utils.slugify (bddfcb58) +* #8734, move bootstrap-tagsinput to package.json (f16c8268) +* #8734, move deserialize/serialize to package.json (eab7489e) +* #5964, #8734 remove colorpicker (948f2614) +* #8734 remove unused files (c721625a) +* #8734, move sortable to package.json (cc705e5e) +* #8734, move bootbox to package.json (300a8755) +* load jquery-form before using (3b231360) +* #8734, jquery-ui, jquery-form, timeago (#8748) (fda2aedf) +* remove unused textcomplete file (59311a63) +* #8734, remove semver.browser (ae3a231f) +* #8734, move slideout to package.json (2c1897b3) +* #8734, move tinycon to package.json (9c157de0) +* #8734, move visibilityjs to package.json (43589a74) +* #8734, move nprogress to package.json (a46cbb62) +* #8734 move r.js to package.json (aa08f882) +* revoke user sessions above threshold (#8731) (b3ed26ac) +* filter:settings.get plugin hook (c7d15dfa) +* topic delete/restore/purge/(un)pin/(un)lock (da25ce4d) +* add new api page to ACP menu (5fc7e7bf) +* management of API tokens via ACP (49652e6f) +* added DELETE /api/v1/categories/:cid route (3072de48) +* added PUT /api/v1/categories/:cid route (e942ad81) +* added POST /api/v1/categories route (dc666fd8) +* added PUT/DELETE /api/v1/users/:uid/ban routes (a5af2dc8) +* added POST and DELETE /api/v1/users/:uid/follow routes (b5bbcbae) +* added PUT /api/v1/users/:uid/password route (7aed174e) +* added DELETE /api/v1/users/:uid and DELETE /api/v1/users (a1ddc210) +* added openapi.yaml file for BEST documentation (91b79f17) +* added checkRequired middleware for API calls (7b6d43bc) +* migrating write-api skeleton into core (ec5c48b1) +* remove post/header selector (1542a5d7) +* category filter on post queue (#8710) (5d9a8681) +* #6594, add top/popular sections to digest email (#8709) (e60357d2) +* dedicated sorting buttons for plugin ordering in ACP (1761e13d) +* #8233, search sub categories (54737d30) +* move service-worker.js into its own file (f4d76f1e) +* analytics:maxCache setting in ACP (14ba1a6d) +* #8695, allow sort for guests (ea0f3262) +* up recommended size to 512x512 + ACP labels for PWA (9c5b6907) +* upload maskable icon for PWA (6478b32d) +* show top 5 trending plugins in new tab in Extend > Plugins (b12e8d63) +* register service worker, #8126 (aa268d5e) +* add theme-color meta tag for browser address bar (5172d731) +* basic service worker, minimum requirement for for a2hs; see #8126 (f69697b3) +* option in ACP to configure notification/email delay for chats (5b427a0c) +* allow autocomplete to pass optional params to user.search (611f3c61) +* upon plugin installation via ACP, check against nbbpm first (5ddf7022) +* up benchpress (8e88ccd6) +* add row highlighting for popular and unread (2cd5f959) +* return to previous page and/or category after marking topic unread (48a8ec4a) +* add missing lang key (bd9b6c99) +* add number of posters to topic (83d4e7ef) +* hightlight matches in quick search (f2f3ba49) +* add loading indicator (d38c8722) +* allow plugins to override tags and tag counts (81595095) +* edit test (ccddbb15) +* add x-posts/x-votes keys (23de5613) +* allow adding nested replies to a target component (ddc0ac37) +* hotkey "/" to open ACP search (43571bac) +* ctr-s for save on privileges page too (763cec31) +* ctrl-s now saves on settingsv1/v2 forms (80931423) +* single href (6669b23d) +* allow passing in container to threadTools (7148be2f) +* expose calculateTopicPostCount and getChildrenTree (43742437) +* allow custom req.query.filter on /unread /recent (de824007) +* fullname search (#8641) (4be693f2) +* sorted set lex test (9389749b) +* add topicIndex to category page (c1c617b3) +* up lavender/slick (34eb1bd2) +* switch to using topic/select component for merge (f6d56466) +* undo for posts move (762e9fe8) +* #8626, new move posts modal (5a40d26b) +* refactor app.js (5002e0f6) +* remove global RELATIVE_PATH (19c44861) +* remove app.template (3cd3b7a1) +* remove global window.templates (630bac2a) +* remove app.isConnected, use socket.connected (fddeb5c0) +* use const/let (6fc31df0) +* allow nbb to work with cloudflare rocket loader :rocket: (4d665955) +* move code (53a5f151) +* #8602, dont send emails to unconfirmed addresses (b6917b9d) +* add partials/footer/js.tpl (94da9fe5) +* add missing name to profile image upload (54b49725) +* add action:user.removeCoverPicture (b0a75922) +* add user data to action:user.removeUploadedPicture (962446a5) +* add userData to action:user.delete (9542ef12) +* force upgrade scripts for test (1b7ba2c8) +* replace relative urls to absolute before sending email notifs (1e5981c0) +* add client side action:flag.create (09de364e) +* additional sorting options for flags (0c203517) +* new filter hook prior to post queue addition (8cc36de2) +* add replies to getPostSummaryByPids (a9dfc9a7) +* add reply count to getPostSummaryByPids (de0f4aad) +* theme work for #8580, closes #8580 (6e805c1b) +* allow undo of topic move (abb5e81d) +* added alert.timeoutfn (cd8e7963) +* sort dependencies alphabetically (a4dbbc37) +* up persona (af9f328c) +* banning a user will resolve their post flags (354e6ccc) +* theme changes for #8571 (5415c01c) +* logic for bulk actions in flags list, #8571 (a3a22793) +* expose global/admin privileges to all routes (4737f937) +* additional tests for #8569 (e047b72c) +* flags list sorting, closes #8569 (346db0d8) +* up theme (bd557af2) +* allow adding multiple users to group (35a538ec) +* add filter:group.getOwnersAndMembers (f1e82b64) +* pass uid into filter:flags.list (9c70b662) +* added security policy for github (45c8de12) +* up deps (b97b51a8) +* one more test (a333cb6c) +* tests for password change (ecda4ad8) +* limit privileges column to superadmins only (0903eb4b) +* use nodebb-scoped bootswatch (12edd18b) +* use assetBaseUrl instead of hardcoding (6e918858) +* load timeago strings client-side (558a2d73) +* +assetBaseUrl, -l10BaseUrl, -requireBaseUrl (9adaccd0) +* #8550, add upgrade script test (b61a4da5) +* #8493, plugin helper for standardised link/button injection (0bbb813e) +* show event/params on error (d6baf5c2) +* introduce overridable l10nBaseUrl config value (def16f9e) +* allow multiple empty lines (58933c4c) +* remove administrator property from public routes (dfabd0a3) +* focus username when modal is shown (4216c277) +* add helmet middlewares (774e5d04) +* more discrete commit-on-save instead of commit-on-change w/ confirm modals (#8541) (a716a552) +* add ability to search groups in group details page (e7a502e0) +* use category selector in category page (fb7bb8d4) +* css fixes (560f3eb1) +* add privileges shortcut to groups list (91411cc4) +* allow passing groupName to user.search (f89ec205) +* #8531, closes #8531 (292d4904) +* allow direct link to flag from post tools, #8531 (c705e08a) +* allow changing requirejs base url (c4829fd8) +* ability to clear cache from acp (bbc7737e) +* reduce amount of data loaded on acp admin page (8d8117ff) +* remove require fallback for plugins (303bffdb) +* remove /assets/stylesheet.css (762b0be4) +* add node 14 (6250a2e2) +* make category tools in acp a dropdown (24535a62) +* series upload (37e56d94) +* resolve flag on delete/purge/ban/delete account (8bd63f61) +* 8502, don't change topics sitemaps on every reply (e045436c) +* allow building custom languages during dev (0a9ea91f) +* add link-plugins.sh (cc86f079) +* remove deprecated utils.walk (609e37a6) +* consolidation of flags to reduce flagspam, #8510 (55b0e902) +* change invalid language codes to default lang (3761f05c) +* add npx, fixes ghfw (a294e1cd) +* remove topics.async.getTopicData usage (ce6b20c4) +* remove deprecated checkGlobalPrivacySettings (0cea7136) +* remove deprecated isAdmin method (a0da2ba7) +* remove file.isFileTypeAllowed (2cdb935f) +* remove deprecated hooks (4eae927d) +* update readme (9869064e) +* up node version to 10 (b39e0140) +* highlight privs row if group is added / navigating from group page (10e4ae62) +* prevent navigation away from groups page if changes are unsaved (53f6139b) +* quick access dropdown on groups page to access privileges page (2c83278f) +* #8524, allow editing category of queued topic (844f2b4e) +* remove js-enabled (ff3c3435) +* remove js-enabled.css (ec057835) +* dont load all subscribers at once (2a5f8ab2) +* short more info (23a9a334) +* #8521, allow editing title before posting from queue (2485a550) +* show language when key isn't found (764969ab) +* allow searching categories in ACP (1e7397b1) +* #8509, don't scroll chat to bottom if user scrolled up (320008cd) +* added quick link to edit privileges on the category edit page (06143ca7) +* hide some filters behind 'more filters' button (9fb9185f) +* collapsible daily flags graph (d52d7bdb) +* **acp:** autocomplete user search for welcome notifications (d40779a4) +* **writeapi:** + * user settings API (c26f2b65) + * commented-out stub code for file upload (cfee431c) + * file deletion route (f870721f) + * admin settings update route (a55b3817) + * token generation/delete routes, ACP updates (2ec838fc) + * post bookmarking (0973feea) + * post voting (9942c248) + * post delete/restore/purge (414169fd) + * post editing (f66c2fb6) + * topic tags (1605e5e4) + * topic follow/ignore (9be56294) + * adding missing files (6096f74a) + * topic posting and replying (4c833d0b) + * added DELETE /groups/:slug/membership/:uid route (40dc1c38) + * added group joining and deletion (952dc211) + * abstracted ajax calls out to new api module (d044c322) + * added POST /api/v1/groups (ba345e53) +* **openapi:** + * schema validation for write api definitions file (87e3f26f) + * refactor into indiv. files to match API & tpl routing (ffbf2d6d) + * refactor into indiv. files to match API & tpl routing (84f5e4cf) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.4.6 (b44c7e96) + * update dependency nodebb-plugin-spam-be-gone to v0.7.3 (f06d4878) + * update dependency nodebb-theme-vanilla to v11.3.0 (0d80190f) + * update dependency textcomplete to ^0.18.0 (df5d66e5) + * update dependency nodebb-theme-persona to v10.2.65 (0c7d5860) + * update dependency jsesc to v3.0.2 (#8802) (c4431294) + * update dependency nodebb-plugin-composer-default to v6.4.5 (7d0d0005) + * update dependency nodebb-theme-persona to v10.2.63 (b3ca7de0) + * update dependency nodebb-theme-persona to v10.2.62 (#8798) (12c590ad) + * update dependency nodebb-plugin-mentions to v2.13.1 (#8790) (8353857b) + * update dependency nodebb-theme-persona to v10.2.61 (#8794) (9de8497d) + * update dependency benchpressjs to v2.0.8 (#8767) (3b88545b) + * update dependency sharp to v0.26.2 (#8765) (42aed15b) + * update dependency nodebb-rewards-essentials to v0.1.4 (#8764) (25c447df) + * update dependency nodebb-theme-persona to v10.2.60 (dcf72354) + * update dependency nodebb-plugin-mentions to v2.13.0 (#8758) (411fa8bc) + * update dependency nodebb-theme-persona to v10.2.59 (#8755) (cd34bfb1) + * update dependency nodebb-theme-persona to v10.2.58 (#8754) (a77ba71e) + * update dependency nodebb-plugin-composer-default to v6.4.4 (#8752) (0399ffaf) + * update dependency benchpressjs to v2.0.7 (#8733) (f8e2324c) + * update dependency nodebb-plugin-composer-default to v6.4.3 (#8750) (666064bf) + * update dependency nodebb-theme-persona to v10.2.57 (#8749) (1c94220b) + * update dependency nodebb-theme-persona to v10.2.56 (414fe19c) + * update dependency nodebb-theme-slick to v1.2.39 (1bc99411) + * bump vanilla/persona (944a7e0e) + * update dependency nodebb-theme-lavender to v5.0.14 (#8739) (43df4b8e) + * update dependency socket.io-client to v2.3.1 (#8700) (ba62ebb6) + * update dependency nodebb-theme-slick to v1.2.37 (#8741) (45aceb26) + * update dependency nodebb-theme-vanilla to v11.2.21 (#8740) (0c7af502) + * update dependency nodebb-theme-persona to v10.2.54 (#8736) (4207dde4) + * update dependency nodebb-theme-persona to v10.2.52 (#8735) (70c085ba) + * update dependency nodebb-theme-persona to v10.2.51 (#8729) (bae2eada) + * update dependency nodebb-theme-persona to v10.2.50 (#8727) (804729fc) + * update dependency nodebb-theme-persona to v10.2.49 (#8722) (b01bc2ae) + * update dependency nodebb-theme-persona to v10.2.48 (#8721) (01702613) + * update dependency nodebb-theme-persona to v10.2.47 (#8720) (04b1daac) + * update dependency nodebb-theme-persona to v10.2.46 (#8719) (ba906d7d) + * update dependency nodebb-plugin-composer-default to v6.4.2 (#8718) (229421ed) + * update dependency nodebb-plugin-composer-default to v6.4.0 (#8716) (b3a24f74) + * update dependency nodebb-plugin-mentions to v2.11.0 (#8714) (c95a3898) + * update dependency nodebb-theme-slick to v1.2.36 (#8713) (fc2795d3) + * update dependency nodebb-theme-vanilla to v11.2.20 (#8715) (2b0deeb7) + * update dependency nodebb-theme-persona to v10.2.45 (#8711) (f14b4945) + * update dependency nodebb-theme-persona to v10.2.43 (#8701) (1d0eaafb) + * update dependency nodebb-theme-persona to v10.2.42 (2a1da61c) + * update dependency nodebb-theme-vanilla to v11.2.18 (#8697) (9bdef707) + * update dependency nodebb-theme-slick to v1.2.34 (#8696) (3e2816ae) + * bump persona (f17d42ed) + * update dependency sanitize-html to v2 (1e5621c0) + * update dependency nodebb-theme-persona to v10.2.39 (#8684) (d0010c40) + * update dependency nodebb-theme-persona to v10.2.38 (#8683) (bb04f149) + * update dependency json2csv to v5.0.3 (30aa7e83) + * update dependency nodebb-theme-persona to v10.2.36 (#8680) (07172b6f) + * update dependency nodebb-theme-persona to v10.2.35 (#8679) (68a5e7e3) + * update dependency json2csv to v5.0.2 (5a2adb42) + * update dependency nodebb-theme-persona to v10.2.33 (#8675) (abe83773) + * update dependency nodebb-theme-persona to v10.2.31 (#8673) (80dbf97a) + * update dependency nodebb-plugin-composer-default to v6.3.57 (#8672) (7ecac97a) + * update dependency nodebb-theme-persona to v10.2.30 (#8671) (c8a75631) + * update dependency nodebb-theme-persona to v10.2.24 (#8663) (72cd5f13) + * update dependency postcss to v8.0.6 (#8657) (55921ccf) + * update dependency validator to v13.1.17 (#8659) (01232090) + * update dependency sharp to v0.26.1 (#8660) (b175d671) + * update dependency nodebb-widget-essentials to v4.1.2 (#8658) (dc0a4a49) + * postcss and autoprefixer version incompatibility (70d3ad02) + * update dependency nodebb-plugin-mentions to v2.10.0 (5ea172f9) + * update dependency autoprefixer to v10 (60679481) + * bump theme versions (685633d0) + * update dependency nodebb-plugin-composer-default to v6.3.56 (#8648) (8089387b) + * update dependency nodebb-theme-persona to v10.2.22 (c5ca2609) + * update dependency nodebb-theme-vanilla to v11.2.16 (8acdf3f6) + * update dependency nodebb-theme-persona to v10.2.21 (ed0469b5) + * update dependency nodebb-theme-vanilla to v11.2.15 (134ebba6) + * update dependency nodebb-theme-vanilla to v11.2.14 (31635e3e) + * update dependency nodebb-theme-persona to v10.2.20 (2a13e583) + * update dependency mongodb to v3.6.2 (#8634) (4969c869) + * update dependency nodebb-theme-vanilla to v11.2.13 (#8633) (8137cdc2) + * update dependency nodebb-theme-persona to v10.2.19 (#8632) (37e37c86) + * update dependency nodebb-theme-vanilla to v11.2.12 (#8628) (7ab87072) + * update dependency nodebb-theme-persona to v10.2.18 (#8627) (2740655d) + * update dependency nodebb-theme-vanilla to v11.2.11 (#8624) (fd6259c8) + * update dependency nodebb-theme-persona to v10.2.17 (#8623) (a1d310bd) + * update dependency nodebb-theme-slick to v1.2.30 (#8620) (251ea79b) + * update dependency nodebb-theme-persona to v10.2.16 (#8618) (0d85dc48) + * update dependency nodebb-theme-vanilla to v11.2.10 (#8619) (b52301b1) + * update dependency nodebb-theme-vanilla to v11.2.9 (#8616) (69373fde) + * update dependency nodebb-theme-persona to v10.2.15 (#8614) (3c0540c1) + * update dependency socket.io-redis to v5.4.0 (#8600) (5ba23f24) + * update dependency nodebb-theme-vanilla to v11.2.8 (#8599) (97e3543e) + * update dependency nodebb-theme-persona to v10.2.12 (#8598) (1bb0896e) + * update dependency nodebb-plugin-composer-default to v6.3.55 (#8606) (dfeb65bb) + * update dependency nodebb-plugin-markdown to v8.12.1 (27426c06) + * update dependency nodebb-theme-vanilla to v11.2.5 (64f4179a) + * update dependency nodebb-theme-persona to v10.2.10 (777419b2) + * update dependency sharp to v0.26.0 (#8578) (7ca967ee) + * update dependency ipaddr.js to v2 (49aeda01) + * update dependency nodebb-theme-lavender to v5.1.0 (87674d68) + * update dependency nodebb-theme-persona to v10.2.5 (8032c8bd) + * update dependency helmet to v4 (#8543) (ad68a338) + * update dependency mongodb to v3.6.0 (#8535) (4160e828) + * update dependency nodebb-theme-persona to v10.2.4 (#8544) (b30ecffb) + * update dependency nodebb-theme-persona to v10.2.1 (#8529) (7a59c2fc) + * update dependency nodebb-plugin-composer-default to v6.3.53 (d24a4bd3) + * bump themes (b714ed22) + * update dependency commander to v6 (#8518) (75fb2a47) + * update dependency archiver to v5 (#8523) (f1cc4e29) + * update dependency lru-cache to v6 (#8490) (2941b9f9) + * update dependency connect-redis to v5 (#8480) (9c17a677) + * update dependency nodebb-plugin-composer-default to v6.3.52 (#8522) (ac257a65) + * update dependency nodebb-theme-persona to v10.1.68 (#8520) (f06b1cec) + * update dependency nodebb-plugin-mentions to v2.9.3 (#8516) (b5df5766) + * update dependency nodebb-plugin-dbsearch to v4.1.2 (649c64e4) + * update dependency nodebb-plugin-mentions to v2.9.2 (91bdc12a) + * update dependency nodebb-plugin-composer-default to v6.3.51 (0e13fd0f) +* check is banned in buildHeader (4b63f993) +* undefined call (518d4fa1) +* missing await (08ff4041) +* client side crash when creating groups (5a2b14b7) +* disallow registration attempts with password length > 4096 (c0f699e6) +* missing await (4818ec37) +* broken test (87bff6cd) +* updated commitlint config to allow longer subjects, because nobody anywhere uses an email client that limits subject lines to 72 characters (a53d49a2) +* restore old behaviour of empty json w/ 401 code in admin middleware (dda5d426) +* deprecate middleware.isAdmin (15e0731d) +* post editing not taking plugin hook results into account (4439864c) +* #8805 define our own name for write API v3 (57ed6be7) +* removed superfluous assignment (a08fb8e5) +* createNewPosts to build tpl with ajaxify.data (0b6ef61e) +* handle ACP category enable/disable states after call success (bff53de0) +* remove setCategorySort and setTopicSort (a6a52430) +* sort setting not using correct field name (9082062e) +* update readme to include psql (2d29e603) +* breaking test from 0db0231cff097a6e983683e61284a72d42bd594d (cc1c7220) +* indentation (04185d94) +* add back derpy 20 second sleep (8e7914ff) +* missing method in test error output (3ebb3a34) +* topic object in post editing data return (3c98cd3d) +* bug where token generation route would fail on null case (618e0983) +* typo (2e9f27d8) +* return early for guests/spiders (203db47b) +* #8789,cache meta.settings (156e1396) +* spec (7a318352) +* tests (63e07c94) +* #8781 (db63f5e3) +* reset button loading html (1a4c0dec) +* #8779, fix move all (e6440c0d) +* allow admins adding users to global moderators (1f43e98f) +* incorrect logic for post history editable bool (a691be59) +* [breaking] send configured config URL as origin if not custom (205a1030) +* #8776 some users unable to restore old versions via history (7a8f7049) +* #8595, dont save escaped data when renaming groups (b26e9b59) +* keep sortBy while searching (3ee4936d) +* autocomplete.user on search page (85cfe49d) +* spec (cf474ab2) +* sortby (7bddec93) +* #8774 (b3619d3d) +* #8732 (c107649b) +* #8630, sort extra deps (e362c342) +* missing doTopicAction, fix wrong api params (e78c498e) +* test (8fd3c044) +* appropriate 404 handling for write API calls (b6cce75d) +* redis hget (b2ff1594) +* reimplementing isPrivilegedOrSelfAndPasswordMatch (e98285db) +* socket user bans (3f347baa) +* broken tests from api change (222b4c95) +* tests (7d86be2b) +* handler for group.join (51a60d3d) +* add missing file (d07f0081) +* #8768 (4418ff07) +* api bug where user profile editing continued even if not allowed (cc6e995e) +* module build (bae0f343) +* tests (b295d15e) +* csrf token only on non-GET routes (20bb9c7e) +* avatar selector (4b9444f1) +* test (e6ea71c9) +* timestamp (8c6a5591) +* #8763 (331d236f) +* lastonline again (a481024d) +* caret (71d82ec8) +* lastonline values (97628e2f) +* upgrade script (1289c105) +* cant join system groups (59bbede8) +* tests (a411df13) +* update server param to /api/v3 (0e0f1506) +* typo (c68653d0) +* testing openapi write tests (7aa4d104) +* enable tests (7b2301ff) +* test fix for write API (54e6003a) +* password reset to invalidate all existing reset tokens for that uid (30b3fedc) +* show more lines (ba2e1c4c) +* #8756, pass missing req to mock (30d6a2b8) +* #8757, allow all slashes in category route (1ee93848) +* timeago test for dev/prod (7db224f6) +* timeago test (cecdd291) +* undefined api require, @julianlam (931d44b5) +* watch tooltip (e2d407b7) +* module name (aedd28e0) +* pin sortablejs (8f436eb8) +* admin jquerui requires (75c96686) +* timeago locale switch (8c019a6a) +* category RSS feed was displaying deleted topics (9a5b8a79) +* #8734 make nprogress module (45e8a4d5) +* regression caused by 754595172549ba39b406bd36fc3387d95782d84f (8af30a51) +* dont allow adding duplicates to privileges page (12c8b1c2) +* #8728, dont add admins to table (f259063f) +* remove debug log (675a62da) +* tests (adcadbb2) +* bad merge w/ category ACP page (cb9369f1) +* bad logic in group assertion middleware (8e89f34d) +* errors thrown if no password sent in to profile edit route (7757f965) +* bug where middlewares seemingly ran in parallel (549ca110) +* follow route to match spec (db5c5b2c) +* missing one property in openapi doc (af2e424f) +* error handling with POST /api/v1/users (d8879d21) +* use POST call for user creation in ACP (58043e07) +* user creation POST route returns user data, updated openapi spec (bba2a463) +* selector, so it doesnt effect suggested topics (7138d433) +* use proper api url (264818e5) +* tests, get latest release tag recursively (8eb62e22) +* use app.parseAndTranslate instead of benchpress.parse (fc603a53) +* sorted list delete button (20e0cc5c) +* unable to register async method as response hook listener (dde5b6b8) +* dont allow sorting pinned topics on recent (b955fd36) +* use console.info instead of console.log for sw registration (3c7f79cb) +* spec (7cd83b9a) +* spec (6924eb6c) +* test (cb2f6f7c) +* dont let mods load postqueue for a cid they are not a mod of (7bf6d3b8) +* show disabled categories in admin&mods (2ea9768e) +* prevent mutiple highlighted rows on category/topic pages (60afb110) +* spec (fbd85680) +* do not show TOC if fewer than 2 headings (f1de084d) +* params cached in autocomplete module (caa8c00f) +* #8686, deprecate `plugin.json/library` (#8705) (017af63f) +* updating minimum node version in readme (d3951ebe) +* update "install plugins" link to go to the download tab (5441651e) +* overflow on submitPluginUsage field (c56236f0) +* #8699 tags route is case sensitive, though tags are not (38f88fc5) +* early button/anchor clicks do nothing (8437130e) +* early button/anchor clicks do nothing (966d3f76) +* error on `reset -p` if plugin is not active (7f58e3ab) +* manifest test + remove duplicate test (bf3c1c08) +* typo in getCompatiblePlugins (07af6213) +* typo (54705cc4) +* manifest - use absolute URL for start_url (31528a52) +* prefer webmanifest extension over json (46800b66) +* update notification delay ACP help text (4c1e717b) +* #8681 change owner modal's search should check if user is banned (b6f2f0e5) +* add img-responsive to post queue post items (f8032cd0) +* language key in reset password (2ad33058) +* issue where the last flag filter could not be removed (0fffe289) +* multiword match highlight (f8ef380b) +* tooltip placement on navbar search (82ab6cd3) +* rogue tooltip on navbar profile icon (683c01b0) +* #8580, @julianlam (445a840b) +* topic count on category page if filter is author (bbf6889e) +* match api when modifying ajaxify.data.deleted (int, not bool) (703ac1b6) +* lock/unlock toggle issue (9a7c3c68) +* #8665, trim email before checking validity (ac43cd8b) +* editing posts saving uncessary data (e72fe259) +* api spec (654d5830) +* #8640, add bookmarks to intFields (4f14dc7a) +* change user tooltip container to content (02a48e1c) +* auth tests (fe2dc310) +* #8656, rename /api/me to /api/self (af43f0e4) +* add user tooltips to body (047c4148) +* tests (22cd2654) +* use correct topic count for category (220297d5) +* clear old value on focus (42298fe6) +* skip elements if they dont have proper index (c9c9dd2f) +* call to reskin (99f24c59) +* move necro-post to be in-line with posts (44309ee6) +* tests, because redis is TOO FAST (4fca7938) +* remove old test (5e8c3761) +* client side crash if there are no topics (a8e18fdb) +* #8418 (38d3982b) +* typo (08912361) +* tests (65d049c6) +* check if unread_tids are followed (2d5bd153) +* openapi (e9094094) +* dont use hardcoded fontawesome icons for lock pin (632793b0) +* #8629 and change undo timeout to 10 seconds (65d94a3b) +* alert_id selector (2bebdf01) +* use text-right (a78e1df9) +* remove lang keys, remove sounds menu (a34b685c) +* lavender version (8a752364) +* tests (e3a0b4b1) +* wider widget area (4bace773) +* bypass nbbpm for now (33c1bd5f) +* #8432, add CSP frame-ancestors (46ab2711) +* allow setting maximumAboutMeLength to 0 (4588e521) +* additional commit for CF rocket loader (a38784f5) +* stack trace (4031a8ca) +* #8604 (a2638976) +* don't toggle elements if there is no inputEl (57f67e2b) +* don't crash on outdated redis instances (896fe9d6) +* update post-queue hook names (0e58d2b8) +* accept/reject in post-queue instead of accept/delete (694f4b2b) +* new openapi def for replies addition (b5871275) +* #8582 (9f9164a9) +* debug logging :dog: (fb3b4a02) +* ip-blacklist not working after #8580 (56101ae5) +* ip-blacklist not working after #8580 (c681b4b2) +* post-queue not working after #8580 (dc5bd760) +* #8411 missing language sources for ip-blacklist/post-queue (a93e1955) +* removed invalid options for the sendmail transport (#8576) (2b785628) +* missing localisation for topic move error (bacee6b4) +* select all checkbox does not re-enable bulk actions button (5d60dce3) +* dupes in unread followed topics (55533b11) +* wrong data passed to getCategories (39f4bbaa) +* openapi spec (4f7cfd53) +* api spec (c4ad14cb) +* username, email history disappering if content was deleted (91d9333a) +* up composer (9fd37753) +* package-install clobbering scoped nodebb plugins (840cb510) +* empty "manage" menu showing in ACP (4b0cb26b) +* hide nodebb version in ACP for non-superadmins (cc268605) +* change how admin middlewares are exported (f00595b3) +* one less return, to appease codeclimate (ae68a254) +* inability to access /admin if not superadmin (03bd76de) +* #8560, fix old upgrade script (29e3ab24) +* use promises in privilege save (9cbe9389) +* overzealous click handler on flag list row (7a5daff4) +* +comment, -debug log (9608b44f) +* multiple alerts in the same millisecond overwrite each other (589216e7) +* reintroduce 20s delay for api tests (56393795) +* client-side error in flags/detail (b2271eb6) +* #8570 (7daba7dd) +* sorting the flags list by newest is not considered a filter (3efe2362) +* flag list tests due to breaking change in API (360aa00d) +* no-widgets messaging in ACP + copy (334be113) +* #8568 perPage not acting like a filter (cabe62a0) +* #8562 (31c2b7d9) +* progress bar clobbering upgrade script name (2adae879) +* tweak upgrade script progress bar to only update 100 times in total (ac75c9a0) +* navigation title unescape upgrade script tweak (80a2a700) +* new language key for error handling (7456a0e3) +* upgrade scripts not run properly if schemaDate is present (de8eebbd) +* #8556, catch errors from admin check (bfaf648e) +* upgrade script for 1.15.0 (32682738) +* improper targetUid check during password change (16cee1b0) +* #8547, remove old deps during upgrade (#8557) (1d170e0c) +* #8558, only navigate if user is in same topic (79e847d4) +* upgrade script (231d34d0) +* don't allow duplicate upgrade script names (8887f0ed) +* tests (d6297b28) +* send hard 404 instead of soft 404 for missing modules (9f3b7811) +* #8549 send 308 Permanent Redirect on topic/category shortlinks (68f8d6e3) +* remove default helmet (c39c5113) +* map instead of forEach in privileges save (a7071bb8) +* remove duplicate configuration for helmet-hsts (0f10e083) +* don't process invalid topics, fallback to 0 score (335169f2) +* tests (6924a222) +* #8539, enforce content checks for post queue (bb224184) +* bug; additional reports could be added by the same user repeatedly (0f2b6f1f) +* #8538, go to first unread instead of last read (519e6659) +* #8533, validate and retry password during setup (0d698a07) +* #8534, dont show modal on search (9e80a9ef) +* language string (9f346c53) +* api test (8415d2f0) +* tests (9df871be) +* tests (69fb1527) +* reverse uid checks (7331faed) +* acp view category button if category is a link (2dfe9d49) +* remove old test (52718ce0) +* #8515, fix login redirect on subfolder (5e5815f0) +* tests (f48d1556) +* #4695, remove new notif alert (fd4c3cda) +* too small sortable handle for ACP>Manage>Categories (8473e165) +* less fixes for category dropdown (db07dd85) +* move check inside lock (57135761) +* #7351, display less errors with location and error message (d1cb405d) +* use shorter git url, #8527 (345fd72b) +* cursor for category select (4c90fac4) +* api docs for admin/manage/groups/x (8769e28b) +* edge case in test (b9cff577) +* api tests (42af4b57) +* #8500, allow regular users select topics on unread (7260646d) +* don't crash if content is undefined (4658121a) +* crash if csrfToken does not exist (a3c8d456) +* try again (6f889c9c) +* more tests (a46adb3f) +* tests (65395ae5) +* tests (72c60d19) +* tests (67ca5e32) +* #8508, dont allow moving topics if not moderator of target category (36531511) +* composer textarea placeholder l10n /cc @pitaj (1e14af45) +* **openapi:** + * final fixes to schemas (14e5c24e) + * users.yaml (16873800) + * moved write-api to public/openapi (49994f3a) + * test for new trending plugins in ACP (3fbddbe2) + * tests (d935f036) + * new api definition (8ff09630) +* **writeapi:** + * more tweaks to schema files (b2e9e3e0) + * fix components, + tag object schema (9f9e3c15) + * missing files for tests (a4f3270f) + * normalizing data (1392d064) + * tests (b092f65d) + * added examples to all parameter objects in schema (93f65f89) + * tests (ebcb664b) + * tests (229eb2c2) + * tests (b8703ba9) + * tests (41f55b7a) + * calls to profile editing routes 200 even if user DNE (8e7baac6) + * client-side group join API call (68ecf41e) + * authenticate middleware logic to work better with await (fd67355b) +* **refactor:** + * patching helpers.tryRoute for API routes, some re-org (d15d9e44) + * merging write-api auth middlewares with core middlewares (f6433ef2) +* **bug:** #8611, custom route logic corrected (#8612) (64a457a4) +* **docs:** updating changelog (6e34b9ef) + +##### Performance Improvements + +* reorder async calls (93bdfe2f) + +##### Refactors + +* simpler check in user.blocks.filter (a02ae6f5) +* remove usage of middlewares (266d7587) +* remove /users/{uid}/settings/{setting} route (aa8faf58) +* api test suite to accept methods other than GET (843aff58) +* remove unnecessary wrapper (a512d994) +* remove console.log, extra require (75024c35) +* show more lines of stack trace (ea31f505) +* posts api (d9a16855) +* post restore/delete/purge (272e73da) +* merge post.edit (9738e202) +* deprecate socket.emit('users.search') use api route (2279e372) +* api categories (083c74e0) +* remove sockets.reqFromSocket (bc880ee0) +* topic follow/ignore to use api lib (9ee3cb9b) +* topic tools' actions to use api lib (68d6818b) +* topic creation to use api lib (40598b36) +* setupApiRoute signature (bf480ee5) +* remove unused middleware (688d7a2c) +* user bans to use api lib (2d252f2f) +* move groups.leave, fix some tests (e367c540) +* change password/user follow to use api lib (960e925e) +* user deletion to use api lib (430e7f58) +* socket profile update to use api lib (77481947) +* socket profile update to use api lib (31ae8a83) +* user create and profile update to use api lib (23086dae) +* use single function for api code (5e2caf19) +* async/await src/user/approval (43afe7ff) +* async/await install/web.js (3881ac30) +* async/await (1fd2eba6) +* use app.render (d89477ca) +* api module (3673accd) +* api module returns promise, error-first cb if cb passed in (a784d10f) +* remove unused search call (dd7424e5) +* switch to using slugify module (dc29f4dc) +* require style (c954db84) +* middleware.assert.* (8ecef7b8) +* rewrite modules/api.js in AMD style (a905d7f0) +* remove posts.tools.purge (ed092bf6) +* shared constants (#8707) (1aa336d8) +* post edit (16039b11) +* expose new method for appending moderation note (29b357bc) +* socket posts delete/restore/purge so tid is not necessary (#8607) (f743f920) +* ip-blacklist and post-queue language files (4dc6e64a) +* moved ip-blacklist and post-queue styles/tpls to themes (b6b94a56) +* changed way middleware was exported (cf2f1e95) +* remove util.promisify calls (01899459) +* change pwd change logic (846b7d24) +* rewrite src/upgrade.js with async/await (33c5988c) +* change incrementViewCount and markAsRead to async/await (2c35d0ba) +* for codeclimate (2ee62483) +* rewrite src/install with async/await (776e34a8) +* removed rather redundant flag reporters zset (6c00ec84) +* flags object in post tools (fcdbdf63) +* pass only needed data (f1974fb9) +* startup (c54b6b9c) +* get rid of bind calls (af91c26a) +* setting codeclimate to A (bc26883a) +* make msg pretty (8ddc8dd1) +* flag sanity checks, +feat: flag limits (e3e55f25) +* **writeapi:** + * update route prefix to api/v3, default error option (3ea1aa47) + * post.tools.purge no longer a method (5e2a3ea6) + +##### Code Style Changes + +* **openapi:** + * break write API routes into individual files (dbb4cfe9) + * move schemas and responses out of write.yaml (ffac3c79) +* updates to openapi files (2928b9b8) +* allowing some es6 features client-side (e1c40b27) +* linting (cdb79488) + +##### Tests + +* **openapi:** missing commonprops addition (0dc55bbc) + +#### 1.14.3 (2020-07-08) + +##### Bug Fixes + +* improper targetUid check during password change (c2477d9d) + +#### 1.14.2 (2020-07-15) + +##### Chores + +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* up theme (63fb2ad7) +* incrementing version number - v1.14.2-beta.1 (9d1465d0) +* up theme (15aabfd3) +* up theme (599c5015) +* incrementing version number - v1.14.2-beta.0 (fca4ee31) +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* **deps:** update commitlint monorepo to v9.1.1 (0ca7e28a) + +##### New Features + +* logic for flag note editing, #8499 (14417209) +* logic for flag note deletion, #8499 (f85a45c7) +* #8460, export groups members as csv (00d39fb3) +* pass connection options to socket.io-adapter-mongo (393f19b4) +* #8023, allow wildcard search for uid/email (3dcf5387) +* up composer (6235b31c) +* #8427, daily downvote limits (c513b88d) +* warn user if whitelisted tags are less than minTags (4adbf87c) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-mentions to v2.9.1 (c54287fe) + * update dependency nodebb-plugin-mentions to v2.9.0 (7730e7da) + * update dependency nodebb-theme-persona to v10.1.62 (#8485) (4e9743ab) + * update dependency nodebb-plugin-composer-default to v6.3.49 (#8479) (ab244ca6) +* #8499 (65240a17) +* #8500 (5e984d10) +* invalid session error modal during logout (2286ee2a) +* #8488 (b3a88331) +* category search in selector (46a66863) +* groups.updateCover (73ddf1cb) +* **docs:** bad changelog (60bf488f) + +##### Other Changes + +* update changelog for v1.14.2" (e085c846) +* flag.showModal on flag modal appearance (3379d65f) +* NodeBB/NodeBB (2fba0a14) +* update changelog for v1.14.1" (26c74409) + +#### 1.14.1 (2020-07-08) + +##### Chores + +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* incrementing version number - v1.14.1-beta.3 (e8ecef6b) +* incrementing version number - v1.14.1-beta.2 (b8d9b6b1) +* incrementing version number - v1.14.1-beta.1 (be85123a) +* incrementing version number - v1.14.1-beta.0 (c279875a) +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) + +##### New Features + +* add tools to recent/unread (#8477) (658dd03b) +* fire new hooks on chat message editing (4f51838d) +* add back redis tests (bdc4d9e7) +* remove redis test (8461a179) +* use covered query (057b783d) +* add js-enabled.css to list of preloaded css files (da29b947) +* zscan (#8457) (723fe8e8) +* fix blocksCount not being returned on user profile (bd228d5e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.1.60 (#8478) (14eafcb6) + * bump nodebb-plugin-composer-default to 6.3.48 (943a344a) + * update dependency nodebb-plugin-dbsearch to v4.1.1 (#8476) (9f06f12c) + * update dependency nodebb-plugin-composer-default to v6.3.47 (#8473) (857900f1) + * update dependency nodebb-plugin-dbsearch to v4.1.0 (#8471) (eb51cfd4) + * update dependency nodebb-theme-persona to v10.1.59 (#8468) (ee38e05d) + * update dependency nodebb-widget-essentials to v4.1.1 (#8466) (519e035d) + * update dependency @nodebb/socket.io-adapter-mongo to v3.0.1 (#8464) (412ca4ae) +* #8474 (c2ca02df) +* show stack properly (7b04d897) +* editing chat messages does not go through content sanity checks (9a6b87d2) +* don't show blocked users under nested replies (d6c619cf) +* tests (87dd6c83) +* handle scan/zscan returning duplicate elements on redis (746222d6) +* #8467, fix url to merged topic in subfolder installs (9eb748b9) +* openapi (5f1865c0) +* openapi (65c0adc7) +* dont allow searching by email/ip if not privileged (ac6b571e) +* missing backgroundImage #8386 (fef04fcf) +* dont allow searching by ip/banned/flagged for regular users (02ac44cc) +* admin privileges client-side regression (f3441fce) +* only add blocksCount for self and admins (59a2ace6) +* tests (fd20e5c6) +* better changelog (f992af05) +* **tests:** + * another shot in the dark (8853cd1a) + * shot in the dark (9458d90b) +* **openapi:** tests (c468942f) + +##### Other Changes + +* update changelog for v1.14.1" (26c74409) +* //github.com/NodeBB/NodeBB (0d9461b1) +* //github.com/NodeBB/NodeBB (ace312e0) +* post.changeOwner (b60e1cbf) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.14.0 (2020-07-02) + +##### Chores + +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) +* bump persona (19f9af94) +* latest translations and fallbacks (22879633) +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency smtp-server to v3.7.0 (e80100b5) + * update dependency eslint to v7.3.1 (#8417) (33492744) + * update commitlint monorepo to v9 (569b7664) + * update dependency lint-staged to v10.2.11 (157e7444) + * update dependency lint-staged to v10.2.10 (102a6004) + * update dependency mocha to v8 (#8393) (f4bace03) + * update dependency eslint to v7.2.0 (cd1375cb) + * update dependency eslint-plugin-import to v2.21.1 (4b577a52) + * update dependency lint-staged to v10.2.9 (#8369) (124125f7) + * update dependency lint-staged to v10.2.8 (331b1a85) + * update dependency lint-staged to v10.2.7 (d1df0826) + * update dependency mocha to v7.2.0 (ecaa9b76) + * update dependency eslint to v7.1.0 (e62d892a) + * update dependency lint-staged to v10.2.6 (78d562b3) + * update dependency lint-staged to v10.2.4 (a26011e7) + * update dependency eslint to v7 (28df9aba) + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* polish for user blocks UX (6cb31791) +* #8450, next/prev link tags on /unread /recent (eb9704f8) +* allow flagging of user acounts from post tools menu (6931f29d) +* closes #8440, allow configuring max topic count (e09ab3dc) +* add missing translation key (bffb830d) +* #3783, min/max tags per category (c718b729) +* use tags partial instead of post_bar (0482fb29) +* hide elements if search element is a direct child of dropdown (4f6b6c56) +* increase wait (6aecc177) +* move export functions into child processes (8383992d) +* display stack trace on winston.error (e80379dc) +* show more relevant snippets (f70d1648) +* #8412 breadcrumbs for ip-blacklist/post queue/flags (35a06a84) +* show editor in post diffs if available (f909ed25) +* #8408 flags' quick assignment (d5af9769) +* bump themes, closes #8406 (cb5ba76b) +* allow post diffs to be restored, #8406 (58b3d608) +* add missing translation (3a80a165) +* up composer (96cb94dc) +* more search changes (6349fa03) +* more merge/search fixes (4b38533b) +* merge changes (bb3aa540) +* more search & merge fixes (5fd05dc9) +* merge improvements wip (c4bdeae0) +* #8387 expose global and admin privs to flags detail page (4acb3fb2) +* redirect /me to user profile (3be4d5f7) +* #8384 options to delete account, content, or both (4d60eac6) +* account content deletion, closes #8381 (67aca822) +* add missing language files for #8347 (656b391f) +* privileges for Admin Control Panel (#8355) (a82e9bd7) +* add buildHeaderAsync (#8367) (842b8abb) +* #8360 flag quick actions for delete/restore/purge (8ea16348) +* #8349, remove user posts from queue if user is deleted (5a2b5154) +* up plugins (5b009e07) +* add results into results container (9ffcb6f7) +* quick search changes (f12d448e) +* move quick search into search module (bb1a56f0) +* fix session mismatch errors by clearing cookie on logout (#8338) (5781a2dc) +* add getSortedSetMembers (0009f54e) +* add privilege give/rescind hooks (#8336) (ec5582b5) +* filter followed tids by category (f3afba61) +* use getSortedSetsMembers to load followed tids (1b9e8928) +* add batch size to cursors (a015af4a) +* up cache size (9600ede5) +* tweak intersection code, add tests (4ee3543e) +* change to contains to match scoped modules (6108064e) +* improve grunt restart/rebuild speed (cb662e15) +* don't overwrite req.query.lang if it exists (4263efa0) +* convert queries so they used indices directly (12c6bc2e) +* cookie SameSite property (ae2db423) +* if only one value is passed used faster function (2587112f) +* closes #8316, add more data to export profile (f0323b6c) +* throw error if uid is missing for update (1d3fa3bc) +* ignore mongodb playground file (a219285e) +* parse quick search tpl even if no results (765b8156) +* match hook property to topic property (0e58fa33) +* add methods for adding/removing tags from topics (bfad4572) +* write-api update, WIP (9fd5c439) +* closes #8308, edit post notif for watched topic posts (a73c755b) +* add null tests for sorted sets (edf9fe3b) +* Add hooks for user blocks (#8296) (c4545381) +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **docs:** updated changelog (87c1687d) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.3.46 (5a713d85) + * update dependency nodebb-plugin-mentions to v2.8.3 (#8449) (bbd85049) + * update dependency nodebb-plugin-mentions to v2.8.0 (d40720f9) + * update dependency nodebb-plugin-composer-default to v6.3.44 (#8436) (c1991abe) + * update dependency winston to v3.3.3 (#8431) (6a8f54fd) + * update dependency nodebb-theme-persona to v10.1.55 (#8434) (a860a793) + * update dependency nodebb-theme-vanilla to v11.1.30 (#8435) (272b4992) + * update dependency nodebb-theme-vanilla to v11.1.29 (#8429) (b5a68a44) + * update dependency nodebb-theme-persona to v10.1.54 (#8428) (3ffb6fde) + * update dependency winston to v3.3.2 (54310d69) + * update dependency nodebb-plugin-spam-be-gone to v0.7.2 (11244348) + * update dependency winston to v3.3.1 (#8421) (fd628570) + * #8412 bump themes (365996e7) + * bump persona/vanilla, closes #8408 (225cac18) + * update dependency sharp to v0.25.4 (#8403) (3c3e1515) + * update dependency nodebb-theme-vanilla to v11.1.25 (#8405) (90446365) + * update dependency nodebb-theme-persona to v10.1.50 (#8404) (44273a64) + * update dependency mongodb to v3.5.9 (#8402) (90570660) + * update dependency nodebb-plugin-composer-default to v6.3.43 (78b7382c) + * update dependency validator to v13.1.1 (#8397) (2ae68f9b) + * update dependency validator to v13.1.0 (#8391) (ad6e3634) + * update dependency nodebb-theme-vanilla to v11.1.24 (#8395) (eec03de8) + * update dependency nodebb-theme-persona to v10.1.49 (#8394) (90846740) + * update dependency postcss to v7.0.32 (87ce31d1) + * update dependency nodebb-plugin-composer-default to v6.3.41 (dde830db) + * update dependency nodebb-plugin-composer-default to v6.3.40 (#8388) (cf0f8f64) + * bump themes, closes #8387 (e97a2b71) + * bump themes (ccac6a35) + * update dependency nodebb-theme-persona to v10.1.46 (#8382) (036e6ef5) + * update dependency nodebb-theme-vanilla to v11.1.21 (#8383) (7caeb273) + * update dependency nodebb-plugin-composer-default to v6.3.39 (aeefc60b) + * update dependency nodebb-plugin-composer-default to v6.3.37 (7f6ff0b1) + * update dependency nodebb-plugin-composer-default to v6.3.36 (6b2ea077) + * update dependency nodebb-plugin-composer-default to v6.3.35 (2d582df7) + * update dependency nodebb-theme-persona to v10.1.45 (#8372) (771ea194) + * update dependency nodebb-theme-vanilla to v11.1.20 (#8373) (f8ee981b) + * update dependency socket.io-redis to v5.3.0 (#8370) (d2463bb4) + * update dependency nodebb-theme-vanilla to v11.1.19 (f6ad9605) + * update dependency nodebb-theme-persona to v10.1.44 (cb28e6cf) + * update dependency nodebb-plugin-composer-default to v6.3.34 (#8357) (d7ab0894) + * update dependency nodebb-plugin-composer-default to v6.3.33 (c4047179) + * update dependency nodebb-plugin-spam-be-gone to v0.7.1 (27ab36ac) + * update dependency nodebb-theme-persona to v10.1.43 (#8343) (dabff972) + * update dependency mongodb to v3.5.8 (#8342) (8224127f) + * update dependency nodebb-theme-persona to v10.1.40 (#8332) (a20af6e2) + * update dependency nodebb-plugin-spam-be-gone to v0.7.0 (cc206b4d) + * bump composer-default (827d42a9) + * bump composer-default (a665881b) + * update dependency nodebb-plugin-composer-default to v6.3.29 (bf8a2c2e) + * update dependency postcss to v7.0.30 (#8288) (a532e2bb) + * update dependency sharp to v0.25.3 (0437ecc2) + * update dependency nodebb-plugin-composer-default to v6.3.28 (#8309) (f246057a) + * update dependency nodebb-plugin-composer-default to v6.3.27 (#8307) (6d57d844) + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* don't show in unreplied if score is null (fd400a00) +* lint (0d0b9513) +* upgrade script to unescape navigation titles (37b6b8fd) +* test (f0ce309d) +* show controls @julianlam (023de94e) +* #8437, #8433 (e53a18f2) +* copy settings showing empty category selection (ed4b5caf) +* don't init autocomplete if user doesn't have privs (8482a54a) +* only allow valid uids (00d8ce26) +* tests (f03ca086) +* vulnerability in cover and admin uploads (#8419) (48b41deb) +* reverse tabnabbing exploit in post images (040e6a9a) +* follower count going out of sync with real follower count (2bcf7f72) +* test lock for user create (#8415) (bef37e27) +* add mising timestamp (f0526bff) +* ban (bfd7eafe) +* remove use of 'hidden' class in navbar toggling (5a367ecb) +* bug where category privs page thought it was on admin (2515aa77) +* #8410 (b3115ea8) +* tests breaking due to #8406 (d5578c99) +* add missing translations (42466d3c) +* #8401, #8237 (7ed1a014) +* add timestamp to initial username history (18d89239) +* crash in export posts if post content is undefined (53a9517d) +* messaging unread (0041c024) +* whitespace (a024cc13) +* typo (0595e710) +* #8392, clear group member cache when group is renamed (89b01024) +* return false (8591f5d2) +* language (a255c8f6) +* #8386, use backgroundImage everywhere (8627bee5) +* prevent logout form from submitting (d92032da) +* missing space in ACP menu dropdown (daeceb45) +* #8385 (942cc4b1) +* acp language keys from #8347 not updated in tx config (9ae7fd3e) +* #8363, dont break history (50703db8) +* #8363, go to hash when entering topic (0c265a41) +* #8374, revert event delete (30cc83c0) +* new language tag for select_tags (09184f40) +* remove duplicate link to manage/tags in settings/tags (260a482c) +* tests (3a078f59) +* handle search tag permission as well (1b5d5425) +* checking correct permissions for user search (#8371) (f6b92d24) +* change event name so it doesnt trigger complete event (7786187e) +* clear error log before checking (75b3a81d) +* #8323, let admins send validation emails without timeout (e603ebc0) +* #8352, remove webfonts (#8354) (de7ec47f) +* more tests (da90fd56) +* tests due to 0633ad327 (98dffa3a) +* retry failed setObject calls (2c9e8657) +* acp menu items (0633ad32) +* re-jigged tags acp pages (a83f4259) +* move checks into timeout (47d73a2a) +* #8339, add missing translation (a9315aee) +* don't explode if server sends `checkSession` (84c20f91) +* eliminate unnecessary try..catch (f0e59c14) +* test breakages from 8d995d1eb609837e4e6e4c77cd855766830378fa (a66fe013) +* #8320, dont load moderators separately for each category (0a31e3e6) +* show stack trace on startup errors (11bb6abb) +* don't trigger quick search if val doesn't change (d6c2764f) +* prevent duplicate search triggers (6f78113e) +* user faster method if sorting by smallest set (3ec05eea) +* add txt to list of default allowed file extensions (01bff2ae) +* search post snipets incase content is plain text (ada45a34) +* derp includes (d484731d) +* another test fix (f2907908) +* tests (feb748a4) +* tests on redis (7a801aba) +* tests, handle no sessions (8bf980cb) +* #8318, clean expired sessions on login and get (a0d76ff0) +* tests (a032e12b) +* #8317 (81e33b93) +* #8142 invalid session warning if server-side session destroyed (526b3cd9) +* check privileges before exporting post/topic data (5fd81c5c) +* exporting posts (dfae664e) +* undefined uid when downloading posts (bdda0222) +* #8311, fix allowUserHomePage value (1ba6929c) +* dont crash if topic is null (e20ad5c5) +* if category in selector has url use it (1f992cf3) +* convert cids to string for comparison (c47a1c4d) +* missing await (97c086ab) +* add missing schema item (4e14cb57) +* category selector disabled categories (337be368) +* #8305, don't use null values (6a5e86dc) +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **openapi:** + * tests for #8412 (4cae893f) + * api change for #8387 (6a969442) + * schema for new flags api (a0e243ee) + * broken tests (45dfeeb0) + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) +* **style:** + * more switch..case (6b1d1acb) + * switch..case (922d49be) + * enforcing "better" indentation for switch..case (d135b6f7) +* **docs:** added titles to all routes (aa4ae78b) + +##### Other Changes + +* id, category fields (2355d9d5) +* //github.com/NodeBB/NodeBB (c3c8b19a) +* //github.com/NodeBB/NodeBB (0ddfb6b0) +* //github.com/NodeBB/NodeBB (d1c1cb2c) +* //github.com/NodeBB/NodeBB (79a7f892) +* user.getFields to match topic/posts (a680a95e) +* //github.com/NodeBB/NodeBB (b459592a) +* //github.com/NodeBB/NodeBB (066b442e) +* //github.com/NodeBB/NodeBB (fd6bf0c9) +* //github.com/NodeBB/NodeBB (c1d8b9bb) +* middleware.renderHeader (2727f472) +* //github.com/NodeBB/NodeBB (69a87933) +* uploadFile (7f24200c) +* #8142 invalid session warning if server-side session destroyed" (e327d124) +* ''}) (2a00b0e9) +* //github.com/NodeBB/NodeBB (8c8cdc99) +* categories.getRecentTopicReplies (aad0880f) +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) +* **deps:** update dependency nodebb-plugin-mentions to v2.8.0" (5c7d37c0) + +##### Refactors + +* make code climate happier? (0d112b36) +* shorter code (af790e3f) +* shorter code (e8f0da6e) +* change name to privileges to match other apis (2100a03c) +* making rendering of header and footer async functions (023942da) +* remove general menu from ACP (#8347) (a51fff8b) +* use getSortedSetMembers (7d484fc0) +* src/flags.js because codeclimate (cf00cda0) +* flags detail page (8d995d1e) +* move code (3b6d57e4) +* remove console.log (40b5cbab) +* shorter function (7e429884) +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.13.3 (2020-05-08) + +##### Chores + +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **deps:** + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* **openapi:** + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) + +##### Other Changes + +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) + +##### Refactors + +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +#### 1.13.2 (2020-02-05) + +##### Chores + +* incrementing version number - v1.13.2 (71f4607d) +* bump themes (027f3f22) +* bump vanilla (236a1730) +* bump persona (82ace391) +* incrementing version number - v1.13.1 (cc6758a0) +* **deps:** + * update dependency eslint to v6.8.0 (#8062) (15783213) + * update dependency nyc to v15 (#8094) (976e26a9) + * update commitlint monorepo (#8100) (eb4a1a57) + * update dependency lint-staged to v10.0.7 (#8132) (cdfbcbb9) + * update dependency mocha to v7 (#8106) (b370333c) + * update dependency husky to v4 (dd440ce9) + * update dependency lint-staged to v10.0.1 (66992a55) + * update dependency lint-staged to v10 (d74eecfb) + +##### Documentation Changes + +* updated changelog (2edc6960) + +##### New Features + +* add test for isOnline (66febb80) +* add test for change post owner (df2c7851) +* check flag values on save (assignee and state) (#8122) (8e5a2276) + +##### Bug Fixes + +* admin relogin (a5ef6b53) +* #8135 (c35a21d7) +* handle mkdirp0.5->1.0x so it doesn't break upgrade (1e50616c) +* #8134, upgrade mkdirp to 1.0.x (87225a90) +* onSuccessfulLogin not working (111ed802) +* #8139, dont allow restore if not deleted by self (8c48f94b) +* use view_deleted when filtering, closes #8137 (9969dd63) +* escape invalid rules (d927b763) +* add missing await (3cca929a) +* missing await in SocketPosts.changeOwner (0ae1eb4f) +* #8133, check if user is in room before removing (23810cc6) +* add missing await (cd1fa27a) +* missing await (f799f017) +* dont return flag data to client (418c174d) +* check if user has read priv before flagging (51236df4) +* restrict getUsersInRoom to members (1f13ab8a) +* remove unused conditional, dont add dupe messages (3077eb94) +* tests for messaging (ecc579a2) +* #8127 user join system message duplicated (594cd7e1) +* background-size in taskbar images (106c141f) +* tests, was using hardcoded message id (1b08f376) +* typo in #8116 (8bb5e71e) +* build step defaults to series instead of parallel (3fac09b1) +* escape system message, don't allow editing system messages (6a63c1a1) +* escape register query param (c8fb7f92) +* delete upload (8c6a7954) +* check uploadName (153b1a0e) +* #8120, bubble errors from static hooks (01d1ae78) +* escape bootswatchSkin and homepageRoute (b0f3e48a) +* change owner missing await (3e525576) +* hsts always enabled (e3952674) +* escape topic.thumb (b7a57996) +* #8112, don't crash hook returns no data (4eb9652a) +* escape config.userLang/acpLang, don't allow invalid language codes (e06c1bfc) +* group create/join/update name validation (61da8c29) +* don't crash if groupData is missing (48f08627) +* #8105, fix export json on page load (5a8217de) +* #8103, fix advanced menu not displaying in ACP (52774531) +* meta description missing if url doesn't have post index (10989ccc) +* create user modal instantly closing (c1b1ee61) +* login with weak password (9d074731) +* dont check password strength on login (f6d7a24a) +* **deps:** + * update dependency connect-redis to v4.0.4 (#8143) (16ab641d) + * update dependency rimraf to v3.0.1 (#8138) (726ba71c) + * update dependency validator to v12.2.0 (#8136) (f07b4bfa) + * update dependency nodebb-theme-persona to v10.1.34 (#8140) (6d7131fb) + * update dependency nodebb-theme-persona to v10.1.31 (#8129) (c510a2c4) + * update dependency mongodb to v3.5.2 (#8092) (0e49cfb9) + * update dependency sharp to v0.24.0 (#8121) (16e8f496) + * update dependency nodebb-plugin-composer-default to v6.3.21 (#8119) (ca10f8f0) + * update dependency nodebb-widget-essentials to v4.0.18 (#8111) (df5e3a73) + +##### Other Changes + +* NodeBB/NodeBB (b959c24a) +* //github.com/NodeBB/NodeBB (ee4304b4) +* //github.com/NodeBB/NodeBB (bfaba895) +* save disableLeave (#8123) (09d55581) +* //github.com/NodeBB/NodeBB (842916ea) + +##### Refactors + +* messaging (30c50361) + +#### 1.13.1 (2019-12-19) + +##### Chores + +* incrementing version number - v1.13.1 (d1e0672f) +* incrementing version number - v1.13.0 (c38b2d23) +* **deps:** + * update dependency husky to v3.1.0 (#8046) (c3418c26) + * update dependency coveralls to v3.0.9 (#8067) (0aeee144) + * update dependency eslint to v6.7.0 (32cfe96f) + * update dependency coveralls to v3.0.8 (#8054) (8ba26104) + +##### Documentation Changes + +* updated changelog (94499da3) + +##### New Features + +* better output for cli plugins list, closes #8075 (4fc69443) +* #5272, allow changing user groups from manage users page (05c9fe27) +* merge social authentication into plugins menu in ACP (f9a8ebfc) +* convert middleware.isAdmin to async/await (efd1e88b) + +##### Bug Fixes + +* #8085, fix cookie name (dec157d6) +* #8058, fix incorrect digest setting display in ACP (1b992d82) +* remove select version (6a17e32d) +* travis config (3ae98300) +* travis :dog: (3731dc4e) +* #8078, dont mark notifications read without a mergeId (a8df6d62) +* #8077, show continue chat on all profile pages (7af1c873) +* profile showing posts from deleted topics (2679f37d) +* #8073, configurable necroThreshold (4d669783) +* allow members to search as well (b323df2f) +* #8069, dont show hidden groups in search (c2cd7de8) +* missing await (33fd4a1c) +* #8064, break-word on post-queue (1bda92e3) +* #6711 (7ed002a1) +* #8061, don't crash if there is a network problem (de404102) +* #8059, properly mark topic unread when using mark unread for all (a688aaae) +* #8042, dont show errors after clearing form (3811e0a3) +* unhandled promise rejection error on reset error (51073772) +* #8050, fix redirect after registration (366ad5cd) +* make _csrf a secure cookie if the website is using https (#8045) (0efe27b1) +* #8034 (0a96c923) +* serialize (a2545204) +* show login fields if user has local password (1eca5b3d) +* use the correct attribute name for widgets (6c404b81) +* **deps:** + * update dependency semver to v7 (483d7535) + * update dependency nodebb-theme-vanilla to v11.1.12 (610ecf35) + * update dependency sharp to v0.23.4 (#8076) (eb18c182) + * update dependency nodebb-theme-persona to v10.1.30 (0514383a) + * update dependency nodebb-plugin-markdown to v8.11.0 (702ca164) + * update dependency connect-mongo to v3.2.0 (2aef7a5b) + * update dependency mongodb to v3.3.5 (#8065) (68118e43) + * update dependency nodebb-theme-persona to v10.1.29 (#8057) (34933091) + * update dependency sharp to v0.23.3 (#8044) (6fa88823) + * update dependency validator to v12.1.0 (#8055) (488ea394) + * update dependency nodebb-theme-slick to v1.2.28 (#8041) (b3511f71) + * update dependency nodebb-theme-vanilla to v11.1.11 (#8040) (d567c4ae) + * update dependency nodebb-theme-persona to v10.1.28 (#8039) (6c87bed5) + * update dependency nodebb-plugin-dbsearch to v4.0.7 (#8038) (1e2e16b4) + +##### Refactors + +* async/await middleware (a227cbe3) +* change to const/let (3454a24b) +* shorter returns (cec00795) + +### 1.13.0 (2019-11-13) + +##### Chores + +* incrementing version number - v1.13.0 (c38b2d23) +* incrementing version number - v1.12.2 (810e2c0b) +* **deps:** + * update dependency jsdom to v15.2.1 (9d946d1c) + * update dependency eslint to v6.6.0 (d0e428e9) + * update dependency lint-staged to v9.4.2 (#7954) (d108c7d0) + * update dependency mocha to v6.2.2 (#7984) (e31a47cd) + * update dependency coveralls to v3.0.7 (#7961) (9b308e4b) + * update dependency jsdom to v15.2.0 (#7971) (9b4e9882) + * update dependency husky to v3.0.9 (fd5095a3) + * update dependency husky to v3.0.8 (88cae415) + * update dependency lint-staged to v9.4.1 (a2a7bb3d) + * update node.js to v8.16.1 (f9ad826b) + * update node:8.16.0 docker digest to bb12612 (48cc317c) + * update dependency eslint to v6.5.1 (da12e947) + * update dependency husky to v3.0.7 (10a30e66) + * update commitlint monorepo to v8.2.0 (ddd4e039) + * update dependency mocha to v6.2.1 (b172d106) + * update dependency lint-staged to v9.2.3 (ccccba81) + * update dependency coveralls to v3.0.6 (#7820) (2b1f840e) + * update dependency husky to v3.0.3 (cbede89a) + * update dependency lint-staged to v9 (f2e4664d) + * update dependency eslint-plugin-import to v2.18.2 (#7779) (57b2a553) + * update dependency eslint to v6.1.0 (#7783) (7257e6b2) + * update dependency husky to v3.0.2 (7ad72b32) + * update node:8.16.0 docker digest to c671dc2 (e76214a2) + * update dependency mocha to v6.2.0 (d43f5dcf) + * update node:8.16.0 docker digest to 310db2a (c46a0772) + * update dependency husky to v3.0.1 (28151f86) + * update dependency eslint-plugin-import to v2.18.1 (9fda2c1f) + * update commitlint monorepo to v8.1.0 (f73468d5) + * update dependency coveralls to v3.0.5 (5b746d53) + * update dependency husky to v2.7.0 (1d0fd028) + * update dependency eslint to v6.0.1 (77347d0a) + * update dependency husky to v2.6.0 (fc69e891) + * update dependency eslint-plugin-import to v2.18.0 (744e4428) + * update dependency husky to v2.5.0 (4960b925) + * update dependency lint-staged to v8.2.1 (2fa68e3b) + * update node:8.16.0 docker digest to 06adec3 (fc224cca) + * update dependency husky to v2.4.1 (17ec8fde) + * update node:8.16.0 docker digest to d5ad3f5 (f9e99fa3) + * update node:8.16.0 docker digest to 75b524a (5995834b) + * update node:8.16.0 docker digest to b9a98ae (fca6d794) + * update dependency lint-staged to v8.2.0 (376390c4) + * update dependency husky to v2.4.0 (3d2ec0bb) + * update dependency coveralls to v3.0.4 (c360e0c2) + * update dependency eslint-plugin-import to v2.17.3 (eac4e2f1) + * update node:8.16.0 docker digest to 957cab2 (cc6fa97c) + * update commitlint monorepo to v8 (80532831) + +##### Documentation Changes + +* updated changelog (183b0ed3) + +##### New Features + +* displaying one-click unsubscribe link in email footer (#8024) (df139928) +* #7467, pass query params when redirecting to posts (480a64aa) +* use helpers.setupAdminPageRoute (b5a30006) +* wip, better digest handling (+ eventual digest resend logic) (#7995) (645d6472) +* add action:messaging.save (ac5c560c) +* #7957, allow post queue based on group (1cedc4a0) +* add filter:topics.unreadCutoff (e020b85b) +* Add filter:topic.delete and filter:topic.restore (#7946) (#7989) (989107d9) +* no more session cookie for guests (#7982) (cf7e0cfd) +* Implement WICG change-password-url (#7072) (#7990) (df1efe5f) +* log errors from mubsub (b01a47cb) +* upgrade to sitemap5 (#7980) (d6792188) +* #7964, change all categories at once (485fbd2f) +* closes #7952, translate widget-settings (990508a5) +* remove ability to delete events from acp (554e6711) +* resetting theme will reset skin (03827fa6) +* disable timeout on launch route (4bc77d06) +* add new hook to get custom category tids for unread (b1926054) +* adding filter:login.check and loginFormEntry[] for the filter:login.build hook (#7861) (94810fd6) +* #7932, redirect to group details after creation (2444ed5c) +* add new hook filteR:topics.getSortedTids (b93c826d) +* bypass cropper for gifs (9a756004) +* deprecate file.isFileTypeAllowed (ffe3670f) +* send notification to group owners when someone leaves (ed122364) +* add failing test for pagination (#7924) (22b02f14) +* refactor getSortedSetRange to allow big arrays (b602c044) +* add new test (1e5246f9) +* add rss feed url for tags (bbc2e956) +* add sm2x avatar class #7813 (35a4ca2f) +* #7090, abililty to hide widgets (71cd602d) +* #7760, body-parser config (5de6d885) +* actually cache duh (f05c1dae) +* cache tags:topic:count (63bd252f) +* increase search timeouts (1789ecb4) +* make handleSearch public (ebe5ed22) +* increase size of local cache (b81405a8) +* don't hardcode numberic fields in user search (09410ff1) +* allow only watching core (451c7fd4) +* client-side taskbar.update method, deprecates .updateTitle() (9b09ee0e) +* option to restrict group leaving, closes #7770 (1796b65d) +* preserver querystring when changing category sort (ad96b0e0) +* html sanitization on all filter:parse.* hooks, closes #7872 (2580306d) +* up socket.io-adapter-mongo (3d2cb628) +* update LESS to v3.x, #7855 (#7867) (aea04de0) +* up psql socket.io adapter (b565e568) +* add client side hook for quick search&normal search (f31d30cd) +* allow floating pinned topics to top in getSortedTopics (1d7e0c63) +* promisify recent.getData (6f7ab586) +* faster initial stat loading (89cd31ed) +* cache stats, mongo count sucks (cb50b3f4) +* dashboard stats (3ff6e1bb) +* add filter:search.getPosts (aeb44faf) +* add image and imageClass to post summaries (80bd52fc) +* #7842, make isInvited, isPending work with uids (fa268556) +* convert search controller to async/await (acf12e3d) +* notification on membership acceptance, closes #7835 (1a2a381a) +* additional events logged for various group actions (1ce33faa) +* async (e6353486) +* async/await controllers/admin/dashboard (32ea04a8) +* async/await admin/controllers (72590b34) +* async/await (7beef91c) +* async/await refactor (3cc7ec63) +* async/await controllers/accounts (a3541d88) +* rewrite getRawPost to async/await (b734defb) +* added new filter hook filter:post.getRawPost (973075cf) +* convert categories controller to async/await (e9fd49e2) +* new client-side hooks for chat minimize and close (3d3fa865) +* test psql without defineProperty (#7815) (af1f7249) +* fire updateRemainingLength hook for chats (af968c6a) +* send pids into filter:post.getFields hook (0e07ffa1) +* move cache tpl (65fc0612) +* async refactor (3a9d83a4) +* move group privs above user, add labels (47e30a67) +* widgets/index.js (dec8040c) +* use promise version (4d6b6871) +* #7743, meta/dependencies (1c2540d3) +* #7743, widgets/admin (96ebe7b5) +* #7743, meta/languages and languages (c02686bf) +* added filter:tags.getAll plugin hook (66aa443b) +* #7743, events (102d4b02) +* #7743 meta/errors (97d7a850) +* get rid of async.eachSeries (99cf47ee) +* #7743 meta/tags.js (7b908639) +* #7743 meta/templates.js (79eed9ae) +* #7743 navigation (764a2b12) +* #7743 account/posts controller (e72f3e4f) +* #7743 finish topics controller (9b3f4b98) +* #7743, webserver (0d047f4e) +* #7743 meta/themes.js (7dc0eaf0) +* #7743, meta/sounds (a15c50bf) +* #7743 , meta/cachebuster, meta/configs (7f72181e) +* convert src/messaging/* to async/await (#7778) (756a717e) +* #7743 meta/blacklist (fcf8fd51) +* #7743 meta/index (69860e58) +* #7743 plugins (c126cd85) +* #7743 plugins/data (f5f5f76b) +* dont waste whitespace (17f843f9) +* switch to promise.all (34d85b52) +* #7743, privileges (faccb191) +* #7743 , search.js (6d3a92b8) +* shorter name (8e75646a) +* cache group:members for priv groups (daed76d5) +* #7743 finish groups (72def7df) +* #7743, groups/index, invite, leave,membership (a39ca51e) +* #7743,groups/index,join (d5342a40) +* #7743, groups/delete,ownership,posts,user (fcd4445a) +* #7743 groups/cover,create,data (5e8614e1) +* #7743, finish post module (c0c6c652) +* #7743 posts/diff, posts/edit (c4bb467e) +* #7743, posts module (1b2b308a) +* #7743, finish user module (a51ec591) +* #7743 (6fea46b6) +* #7743 (cd80c263) +* #7743 (0a690c57) +* #7743 (1c5fad6d) +* #7743 (fe4c0481) +* #7743 categories (fcf3e077) +* #7743, user/digest, user/email, user/follow (c610eb14) +* #7743, user/create, user/data, user/delete (d6e36c31) +* #7743 , user/block, user/categories (4541caa4) +* #7743 notifications (6f738c2b) +* remove unused code, add 2 tests (cd2e68cb) +* #7743 user/ban, up mubsub (1970214a) +* #7743, user/approval, user/auth (b24ce976) +* #7743, posts/votes (8ef75be3) +* #7743 posts (e1ecc36d) +* #7743 user/admin.js (2c335955) +* add utils.promiseParallel (4170abfd) +* #7743, posts/user.js (0a6cfb37) +* added new admin option newbiePostEditDuration (#7737) (8a6a58ee) +* returning category data in tags page (75ff4d7d) +* ACP analytics API route (#7725) (a0c0ef1b) +* closes #7718 (ee4d78ca) +* add status to post summaries (41bc6ca2) +* use arrow functions (3100d803) +* ability to sort watched topics, closes #3735 (f24c14d7) +* use fewer system resources to draw the progress bar (d0ee312c) +* removed series from upgrade script (23fb904f) +* remove duped zadds, these are already in topics.onNewPostMade (cb51c239) +* log data on error (f8a7cf73) +* cleanup, use bulk (198d0587) +* #7707, added sortedSetAddBulk (3ecd703e) +* change widget-* to data-widget-* (#7703) (13efbc99) +* shorter setsCard (3780a58f) +* show best & latest posts on profile (b53a60c2) +* use db.sortedSetsAdd (7e54d7aa) +* use db.sortedSetsAdd (29a124c4) +* dont log action:plugins.fireHook (a7600b4b) +* upgrade to connect-mongo 3.0.0, closes #7693 (ebfc369a) +* add hook for user notifications, closes #7672 (ede060a6) +* user/notifications refactor (580f7860) +* send new post/topic event in batches (8c331088) +* allowing count to be passed to ./nodebb events (f6d3cc0e) +* awaitable websockets (#7645) (aee47b29) +* hooks can now return promise or call callbacks (a6436716) +* fallback strings for ACP events (99120676) +* design revamp of ACP events page (#7664) (c7f95cce) +* optimize group rename (48538b28) +* allow multiple scores in sortedSetsAdd (31ccc860) +* optimize copy privileges (0dca13e9) +* on category search reveal children and parents (0721bee1) +* async3 upgrade (#7639) (4d9bc30d) +* #7627, close chat on ajaxify on mobile (6cebc7f0) +* update meta tags on ajaxify (#7580), fixes #7544 (a41769e6) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v3.3.4 (#8032) (2093418d) + * update dependency nodebb-theme-vanilla to v11.1.10 (c01699f7) + * update dependency nodebb-theme-persona to v10.1.27 (182397b1) + * update dependency nodebb-plugin-spam-be-gone to v0.6.7 (#8027) (c2565a2f) + * update dependency nodebb-theme-slick to v1.2.27 (#8020) (7122bdc7) + * update dependency nodebb-theme-persona to v10.1.26 (#8019) (73d9752e) + * update dependency connect-mongo to v3.1.2 (#8013) (bfea9d39) + * update dependency postcss to v7.0.21 (#7998) (ef5f6714) + * update dependency nodebb-plugin-composer-default to v6.3.17 (#8009) (e1e2d20c) + * update dependency sharp to v0.23.2 (#8005) (420f9fe4) + * update dependency nodebb-theme-persona to v10.1.25 (#8012) (cb91e756) + * update dependency connect-mongo to v3.1.1 (#8006) (7655265c) + * update dependency connect-mongo to v3.1.0 (#7994) (401d1eed) + * bump persona (6155c460) + * update dependency nodebb-theme-persona to v10.1.23 (#7986) (9bd6f686) + * update dependency nodebb-theme-persona to v10.1.22 (#7965) (bf6ae6d6) + * update dependency nodebb-rewards-essentials to v0.1.2 (#7962) (692d94bf) + * update dependency nodebb-theme-persona to v10.1.21 (#7956) (1a150d8f) + * update dependency nodebb-plugin-spam-be-gone to v0.6.6 (#7944) (cffbb325) + * update dependency nodebb-theme-persona to v10.1.20 (#7943) (9589fa32) + * update dependency nodebb-theme-persona to v10.1.19 (#7942) (0d629f06) + * update dependency connect-redis to v4.0.3 (#7933) (2856333d) + * update dependency spider-detector to v2 (310039e8) + * update socket.io packages to v2.3.0 (764ed7f8) + * update dependency sharp to v0.23.1 (#7928) (17437897) + * update dependency nodebb-plugin-dbsearch to v4.0.6 (#7918) (44cd7189) + * update dependency nodebb-plugin-composer-default to v6.3.16 (#7917) (d8fe6e42) + * update dependency nodebb-plugin-composer-default to v6.3.15 (#7916) (c5e5e24b) + * update dependency nodebb-plugin-composer-default to v6.3.14 (#7914) (e18392ab) + * update dependency nodebb-theme-persona to v10.1.18 (#7906) (8ed80bcb) + * update dependency nodebb-rewards-essentials to v0.1.1 (#7905) (5b8bb3e4) + * update dependency connect-redis to v4 (#7869) (8b7f6566) + * update dependency nodebb-plugin-mentions to v2.7.3 (#7899) (b2423bae) + * update dependency nodebb-plugin-mentions to v2.7.2 (#7898) (a3120a62) + * update dependency nodebb-plugin-dbsearch to v4.0.5 (#7896) (106c20e2) + * update dependency nodebb-plugin-composer-default to v6.3.13 (#7895) (fa251ece) + * update dependency nodebb-plugin-mentions to v2.7.1 (8c2fc577) + * update dependency nodebb-plugin-composer-default to v6.3.12 (#7889) (429e124f) + * update dependency nodebb-plugin-composer-default to v6.3.11 (#7888) (516b62ea) + * update dependency nodebb-plugin-composer-default to v6.3.10 (6a4a9e26) + * update dependency nodebb-plugin-dbsearch to v4.0.4 (#7883) (12ba589d) + * update dependency postcss to v7.0.18 (c75f3d27) + * update dependency nodebb-theme-persona to v10.1.17 (317c6771) + * update dependency nodebb-theme-vanilla to v11.1.8 (6e9caddc) + * update dependency nodebb-plugin-composer-default to v6.3.9 (effe3989) + * update dependency nodebb-plugin-mentions to v2.7.0 (b69769bb) + * update dependency benchpressjs to v2 (#7876) (9149db1f) + * update dependency nodebb-plugin-composer-default to v6.3.8 (793c5eaa) + * update dependency nodebb-plugin-composer-default to v6.3.7 (57de99d2) + * update dependency mongodb to v3.3.2 (#7871) (4ee2c090) + * update dependency nodebb-plugin-spam-be-gone to v0.6.5 (#7865) (8ce2a5fc) + * update dependency mongodb to v3.3.1 (#7862) (0dfce49f) + * update dependency connect-pg-simple to v6 [security] (#7864) (e4b5d0b4) + * update dependency nodebb-plugin-mentions to v2.6.1 (a1210985) + * update dependency nodebb-plugin-mentions to v2.6.0 (cdccc646) + * update dependency rimraf to v3 (#7843) (2f02edbc) + * update dependency rimraf to v2.7.1 (#7838) (cf2504f8) + * update dependency nodebb-theme-persona to v10.1.16 (#7848) (ca7ba9be) + * update dependency nodebb-theme-persona to v10.1.15 (#7845) (b1c0beb7) + * update dependency nodebb-theme-persona to v10.1.14 (#7837) (661284cf) + * update dependency nodebb-theme-persona to v10.1.13 (eaea6f63) + * update dependency sitemap to v4 (d3d677da) + * update dependency commander to v3 (7a5dbd9f) + * update dependency mongodb to v3.3.0 (360e172e) + * update dependency nodebb-plugin-markdown to v8.10.4 (61f9be99) + * update dependency nodebb-plugin-markdown to v8.10.3 (d860f8c7) + * update dependency sharp to v0.23.0 (#7806) (2258452c) + * update dependency nodebb-theme-persona to v10.1.12 (#7799) (b9aac424) + * update dependency nodebb-plugin-dbsearch to v4 (#7797) (d98313b5) + * update dependency nodebb-plugin-dbsearch to v3.0.8 (#7796) (ef734b62) + * update dependency nodebb-theme-persona to v10.1.11 (8b1fc5c8) + * update dependency nodebb-theme-vanilla to v11.1.7 (ba1bb528) + * update dependency nodebb-theme-vanilla to v11.1.6 (#7784) (7a88c4cc) + * update dependency nodebb-theme-slick to v1.2.26 (#7782) (e074b0bf) + * update dependency nodebb-theme-persona to v10.1.10 (#7781) (4f20b4d3) + * update dependency nodebb-plugin-composer-default to v6.3.6 (3fdc638b) + * update dependency connect-redis to v3.4.2 (8a11193f) + * update dependency nodebb-plugin-mentions to v2.5.4 (45223cde) + * update dependency nodebb-plugin-markdown to v8.10.2 (86546232) + * update dependency nodebb-theme-persona to v10.1.9 (#7759) (c1660a1a) + * update dependency nodebb-plugin-dbsearch to v3.0.7 (#7758) (efedd621) + * update dependency nodebb-plugin-composer-default to v6.3.5 (7f4b1043) + * update dependency nodebb-theme-vanilla to v11.1.5 (#7756) (15e01d12) + * update dependency nodebb-theme-persona to v10.1.8 (#7755) (19679608) + * update dependency nodebb-theme-persona to v10.1.7 (#7754) (3cb6cfe8) + * update dependency nodebb-plugin-composer-default to v6.3.3 (8394a0fd) + * update dependency nodebb-theme-vanilla to v11.1.4 (#7741) (43ce5f8a) + * update dependency nodebb-theme-persona to v10.1.5 (27da2325) + * update dependency validator to v11.1.0 (#7738) (bd09ba92) + * bump composer-default (851424a7) + * update dependency nodebb-theme-persona to v10.1.4 (f426e105) + * update dependency nodebb-plugin-composer-default to v6.2.16 (#7723) (fb087029) + * update dependency nodebb-theme-persona to v10.1.3 (413259a2) + * update dependency nodebb-theme-lavender to v5.0.11 (#7705) (208c821e) + * update dependency nodebb-theme-vanilla to v11.1.3 (#7714) (e0b2ae8d) + * update dependency nodebb-theme-slick to v1.2.25 (#7713) (af7ecd2f) + * update dependency nodebb-theme-persona to v10.1.2 (#7712) (e5733f40) + * update dependency nodebb-plugin-mentions to v2.5.3 (26ff02dc) + * update dependency nodebb-theme-persona to v10.1.1 (4e513cf3) + * update dependency nodebb-theme-vanilla to v11.1.2 (c2887505) + * update dependency nodebb-theme-vanilla to v11.1.1 (#7700) (b3ed89f5) + * update dependency nodebb-theme-slick to v1.2.24 (#7699) (629b5ce3) + * update to eslint@6 (289dada5) + * update dependency nodebb-plugin-emoji to v3 (15020b46) + * update dependency nodebb-plugin-emoji to v3 (6b43d26f) + * update dependency nodebb-theme-persona to v10.1.0 (fc89516e) + * update dependency nodebb-theme-vanilla to v11.1.0 (c9689f11) + * update dependency nodebb-theme-persona to v10.0.1 (#7687) (ada8f22e) + * update dependency nodebb-theme-vanilla to v11.0.1 (#7688) (6db3604e) + * update dependency nodebb-theme-vanilla to v11 (89fea9d3) + * update dependency nodebb-theme-persona to v10 (0a7778bd) + * update dependency nodebb-theme-lavender to v5.0.10 (#7682) (e1e4abeb) + * update dependency nodebb-plugin-markdown to v8.10.0 (de046297) + * update dependency postcss to v7.0.17 (ae891390) + * update dependency nodebb-rewards-essentials to v0.0.14 (#7671) (3f4f8afa) + * update dependency mongodb to v3.2.7 (#7665) (988cbb63) + * update dependency nodebb-plugin-composer-default to v6.2.15 (e21246a9) + * update dependency nodebb-theme-persona to v9.1.38 (#7652) (d202be5b) + * update dependency nodebb-theme-vanilla to v10.1.34 (#7653) (e3308659) + * update dependency nodebb-theme-vanilla to v10.1.33 (#7651) (6f70397b) + * update dependency nodebb-theme-persona to v9.1.37 (#7650) (d43bdb41) + * update dependency async to v3.0.1 (#7649) (3b8e6e15) + * update dependency mongodb to v3.2.6 (#7616) (3f21096d) + * update dependency validator to v11 (a3d42404) + * update dependency nodebb-plugin-composer-default to v6.2.14 (#7635) (b174c2d2) + * update dependency nodebb-theme-vanilla to v10.1.32 (#7631) (85ca5b19) + * update dependency nodebb-plugin-composer-default to v6.2.13 (d1f29e26) + * update dependency nodebb-plugin-spam-be-gone to v0.6.3 (#7614) (20fa751c) +* crash if post doesn't have topic data (eabc6f47) +* don't touch objects that don't have the required fields (e52ecfaf) +* add missing await to sendValidationEmail (f4381ba3) +* #8007 added tfoot to clear new group button (dee1d447) +* tests (e3c9dafa) +* #8018, allow absolute urls in notification.path (0037a038) +* #8010, fix isBanned call (59242d31) +* #8003, check children recursively (c4e58160) +* dont show delete topics on unread (b91c4790) +* #8000, tweak wording; password reset success (3952849f) +* parseInt cutoff (0e5e47f4) +* lint (4b8897d9) +* convert param to string in slugify (441dd86d) +* cli/reset.js (#7979) (f9f85fc4) +* #7977, fix undefined url (#7978) (95a372df) +* passwords always expiring upon login (ddf3812c) +* #7974 (#7976) (ca3be1f3) +* delete follower/followingCount as well (d72b0d16) +* event tests (0da4f7ee) +* #7958, give rewards one by one (3775301f) +* rewards page acp not loading rewards (88818a5b) +* #7929, use fixed bootswatch (dd202931) +* #7960, dont try to save size for non images (f272daaf) +* #7941, validate some input fields (565f9726) +* don't show deleted topics on unread (661a0f50) +* #7951, don't send notification for system messages (c01b0fbd) +* #7953, allow icon only group badges (5b458fc7) +* remove 0 fields (ac4a5004) +* remove unused data from post/topic/user hashes (75bcb0f4) +* groups not visible on widget panes (205d3f9d) +* new nav items will show group select (c5f7b66c) +* move post and change owner (f402d727) +* 404 on new groups with spaces (b19f0a68) +* #7940, run upgrade scripts on startup (7823144b) +* #7949, delete old user notifs (38322ec3) +* tests (6fb29e84) +* check threshold before setting bookmark (f983f536) +* mongo collection stats (4e28e575) +* #7947, disable unused cookie (91e8e390) +* #7945, show watched categories in ignored categories (c9bf6d0f) +* db.init calls (18bf865d) +* #7938, escape username in registration queue (d5dda26f) +* #7901, handle group names that are translation keys (3455c27a) +* fix the order of groups on user profile (41f8da2e) +* #7935, ACP digest wording (54c9f877) +* #7934, return tids (10f168b8) +* tests (3caa387a) +* tests (9c051386) +* remove jquery (95ab0712) +* picture not showing up in change modal (13c87059) +* profile page meta tags getting escaped twice (7effc892) +* missing await (2150701f) +* potential for XSS here (40f131a6) +* account/categories (7a0f6074) +* redis tests (1f054c7e) +* #7921, dont create wrong entries in db for flag (a651d154) +* #7913, dont allow urls in fullname/location, validate birthday (babb9d7c) +* upgrade scripts (bd026cb1) +* only allow png/jpg/bmp in cover/profile images (96ab8d05) +* #7919, add useUnifiedTopology (910b9b88) +* crash in feed (873ec519) +* lang key (795d4183) +* time cutoff and lang string (5b8550f0) +* returned data (87f6ac59) +* dont send all category data back to recent&unread etc (955e00fd) +* #7912 (ecf39727) +* only return necessary data for categories (307abaa8) +* dont crash if callback is undefined (e0fec866) +* #7800, dont crash on resize (781b3f1a) +* change params (de461968) +* remove dupe code (9b151b23) +* #7894, translate log in to view (2a5fe2b8) +* minor typo (b99279a8) +* #7893, check private upload setting (0843497d) +* #7892, handle string 'true'/'false' (77cb4b55) +* dont show deleted topics in digest (4652c68b) +* #7824, update timeago settings on userlanguage change (3887fc67) +* don't move theme/plugin to top if its already active (acd95764) +* #7853, dissociation on post purge (30a86ed5) +* added comment back (0c4cd840) +* inability for plugins to actually alter parser sanitization config (fe452762) +* htmlentity instead of url encoding for room rename system message (9b8ac89e) +* page count for filters (e291a609) +* #7866, show correct title based on digest interval (547bb496) +* #7780 (21e81f96) +* pinned tids showing on page > 1 (f2912e9f) +* #7860, allow running single upgrade scripts from plugins (a4dec7e3) +* reset should not automatically build assets (a67762bc) +* update morgan and lodash (2b1912a9) +* #7842, groups.invite works with an array of uids (1e0190ab) +* #7844, add uid to events, log plugin install/uninstall events (592d9c82) +* removed console.logs (c44bf48c) +* broken tests from 71b205a889da1ee8dd326b0891d122a522084f54 (f736f0b3) +* typo (c6c13725) +* category description getting translated in ACP (647713f3) +* #7791 (71620519) +* #7831, fix pagination (014e3153) +* remove empty line (292bbe34) +* remove useless catchs and empty line (5fce4558) +* #7823, fix topic move readding pids when topic is deleted (fd5f9822) +* #7826, fix order of categories on recent dropdown (3ecac97d) +* redis pubsub not being required correctly (8d4f2086) +* mongo.close using wrong client (186321e6) +* digest not sending topics (bc6f22eb) +* #7816, adding GDPR and TOU interstitials earlier on route reloading (52a2e5d6) +* #7809, dont check postDelay if submitting from queue (9780f5b9) +* newPostEditDuration (2abe244b) +* #7789 (6a289fba) +* #7798, fix nested post selection (666e0eaf) +* #7788, fix on topic move and new post (8bf40d04) +* #7788, fix another edge case (053ff510) +* topicData passed to action:topic.edit (b10ad7b6) +* derpy catch (ce912886) +* #7788 No new posts (#7793) (3c32d860) +* user urls in subfolder install (6a486e35) +* #7765 (0b498acd) +* tests (87552c55) +* revert requires (3dd806dc) +* #7763, parse about me on all profile pages (f8d34101) +* status and groupTitle, if its not set (e2e33dfb) +* don't return promise (2f0a331f) +* socket.io methods calling callbacks twice if method returns promise (44a33520) +* tests (87b1148f) +* tests (930ffd07) +* #7601 removed check for another user when sending messages (0e8ee31b) +* mongodb tests (3b24de4c) +* getTopicsFromSet (13aaf07b) +* #7762, allow array for isBanned (9eb1fcd4) +* add flag for change post owner (46639be3) +* sitemap ajaxify (9f78bd7a) +* #7751, make necro separator a partial (2b70e86f) +* #7748, if reputation system is disabled, dont check min reputation (7b95ebbb) +* remove left over code, use proper names (0ac49d63) +* compatibility conditional (fba67196) +* private upload img replacement should happen before img wrapping (16aae517) +* #7423 private uploads are linked to login page, for guests (49e3a368) +* typo (f3440ebf) +* #7722, hsts deprecation warnings (8b1dadb7) +* upgrade script #7720 (accf48f3) +* indents (a5de54f8) +* remove debug code that should not have made it in (af17c6e3) +* dont display post tools if there are no options (708df46e) +* output span in buildAvatar helper instead of div (69fae1a7) +* restore uid in teasers userObj (67b8cb89) +* dont allow edit if post is deleted by someone else (667bc67f) +* dont show delete posts on profile (e48c7cd7) +* on new post add it to cid::uid::pids (6a7bc1c5) +* #5570, create per category user post zsets (a39f0ef5) +* restrict drag drop to pin icon, closes #7702 (e1c05e59) +* remove dupe code (68e5d7ad) +* get uids directly for csv (39ee3980) +* typo (a251032f) +* id/for (b4cc8d88) +* #7659 add option to change cookie link url (25ea6347) +* middle vertical-align for .avatar elements (1894cd9b) +* dependency checker always triggering dep upgrade, hopefully (c241551d) +* #7483, show latest undeleted message as teaser (644504ff) +* #7567, allow invite and approval at the same time (4b843ba1) +* #7625, on group rename update nav/widget items (5b85ed31) +* psql error (8d319e42) +* try to fix psql :dog: (2e6b562f) +* no need for moderate bit for global mods and admins (8aef689f) +* attribute name so it works for both templates (ebb32e78) +* #7647, fix getModeratorUids (64679b37) +* #7644 (5cd9e1bf) +* bad usage of async requisition (603c5262) +* 7638, returnTo accidentally saved into user hash (f321b426) +* #7634, make strip exif configurable (157b921e) +* #7636, use reputation threshold for post queue (a8409fbd) +* #7623, wait for lastonline to update on /users (63e5d383) +* https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/53 (e65ddc98) +* #7593, unable to set account password if no password set (80c0d579) +* incorrect pathname format for app.previousUrl (a97e97b9) +* #7598, use notice element instead of alert (106d52a4) +* #7620, allow adding new fields into user objects for posts (a8e65205) +* #7629, new filter hook for room rename (7ba4a864) +* #7628, log email send errors (7a4b68e8) +* {username} not working in notification.tpl (f55cc667) +* do not prevent nbb from starting (3b0459a0) +* #7624, default open state on stateless flags (91f0bce6) +* #7431, add /unread link to topic route (15391da5) +* #7619 (35d10f76) +* #7618 save pathname into app.previousUrl ins. of entire url (7e5cb72a) +* handle missing timestamps (172e6888) +* broken test for meta tags on ajaxify (b70e03a7) +* #7613 (15ce23da) +* #7600, removing nbsp from email CTAs (#7606) (f552cea5) +* #7604 shortened CTA text and added custom text for some notifs (#7605) (b32da57f) +* **style:** + * requiring parens in block bodies (29f96b19) + * updated code to follow new eslint recommendations (09212309) + +##### Refactors + +* use arrow function (6b3eb014) +* async/await (02d38caf) +* remove log, topics.exists (f8c8038a) +* async/await (dc8d721c) +* async/await mongo (1f0c6f3d) +* async/await socket.io/index (603908c1) +* async/await image.js (c5ffd8cc) +* remove var (05e753c7) +* async/await flags.js (ac6eb31c) +* async/await flags (0ced71be) +* shorter map (572bc297) +* remove logs (03971049) +* dont modify key (7e7ea7a6) +* remove logs (e32a5546) +* async/await flags (9ee1a882) +* shorter, new Date doesnt throw (625b0815) +* remove temp var (b842057f) +* async/await file (f9d6912b) +* async/await analytics (223c108c) +* change to const (5505628c) +* returned fields (86b16629) +* async/await emailer (63bd3fc5) +* async/await routes/feeds (ec3b5dd9) +* async/await rewards (b110aec6) +* async/await socket.io (a7d2b8a1) +* async/await (52b2d670) +* async/await (75d7ae92) +* async/await socket.io/topics (5c2afe5e) +* async/await controllers/user.js (3c6c40b1) +* async/await uploads (5c0266d8) +* move tos parsing to /tos (3e2ed21d) +* remove commented out code (ec98945a) +* async/await controllers/authentication (b9105ef9) +* remove async from isPasswordValid, function is sync (22f80116) +* make categories.buildForSelectCategories non async (6cda3698) +* remove dupe code (a4d84a66) +* async/await socket.io/posts (e93ef0d7) +* async/await socket.io/admin (88dfbf21) +* socket.io/admin/categories async/await (71e50bbf) +* admin groups.join socket async/await (4588a4fd) +* password async/await (dd8386d9) +* sitemap to async/await (0164e51f) +* remove hook assign (d3727207) +* async/await users (f9a804e0) +* remove empty line (19b63bfa) +* remove vars (69333f59) +* async/await controllers (2c4f0446) +* async/await controllers/tags (53624885) +* async/await (f15c7f12) +* globalmods/groups (0722cc47) +* controllers/category.js (bd8736db) +* use arrow func (27c27b49) +* async/await controllers/api (4eaa630b) +* async/await admin/controllers (6f375482) +* async/await, remove dupe code for homepage routes (c9250a01) +* async/await for src/socket.io/groups.js (71b205a8) +* rewrote SocketPosts.getRawPost in await style (08530bb3) +* replace avatar conditional code with buildAvatar helper (#7681) (25238899) + +##### Reverts + +* accidental removal of some needed translation source strings (868dedd1) + +#### 1.12.2 (2019-05-15) + +##### Chores + +* incrementing version number - v1.12.2 (22db818e) +* bump themes #7576 (d349754d) +* bump themes (59bdc970) +* bump themes (abcca134) +* bump themes (551b18cd) +* incrementing version number - v1.12.1 (dd973abe) +* **deps:** + * update dependency lint-staged to v8.1.7 (dc6b49ca) + * update commitlint monorepo (9998e86b) + * update dependency jsdom to v15.1.0 (fcd6dc88) + * update dependency mocha to v6.1.4 (3ff8154b) + * update node:8.16.0 docker digest to b5484d1 (6421f10f) + * update dependency husky to v2.3.0 (c20e3313) + * update dependency nyc to v14.1.1 (#7584) (9047210c) + * update dependency eslint to v5.16.0 (692e2ead) + * update dependency nyc to v14 (9210baf5) + * update dependency husky to v2.2.0 (8a018a5f) + * update dependency lint-staged to v8.1.6 (4e39caf8) + * update dependency husky to v2.1.0 (65ff0bbd) + * update dependency husky to v2 (e81a1dbb) + * update dependency eslint-plugin-import to v2.17.2 (#7546) (c1fb17f9) + * update dependency jsdom to v15 (#7556) (d4d8d98f) + * update dependency jsdom to v14.1.0 (#7555) (ca694fd1) + * update node.js to v8.16.0 (#7554) (f10708e7) + * update dependency eslint-plugin-import to v2.17.1 (69dd8e4d) + * update dependency mocha to v6.1.2 (b7169772) + +##### Documentation Changes + +* updated changelog (93b688d0) + +##### New Features + +* let theme know downvoting is disabled, closes https://github.com/NodeBB/NodeBB/pull/7568 (bd94fbc2) +* closes #7583 (cf5aeace) +* #7319 (9385c8e3) +* add node12 to travis (1a7036a6) +* allow file uploading on registration interstitial (ddffc904) +* #7527 (ba5e1eaa) +* #7515 (c38db4f7) + +##### Bug Fixes + +* #7599 image size measurement erroring out on missing path (0d86781c) +* #7590 updated chat and post edit and delete timeout labels in ACP (4f0dc443) +* tests (3a7e99a5) +* #7586, switchTimeagoLanguage shouldn't discriminate against languages w/o shorthands (1703233f) +* #7576 "Disable password changes" can be sidestepped (50260e13) +* if editing password is disabled in ACP, prevent direct access via route/socket (related: #7576) (e114b16d) +* #7582 (c9ca72d0) +* #7461 (96cb29aa) +* increase batch size (3d938e7b) +* #7564 (bf6fc502) +* group cover upload not working for s3 upload (#7571) (8945ebcb) +* test (b9903120) +* #7539 (c940a733) +* #7565 (07e9b67e) +* #7464 (32cf07d7) +* #7147 (fe6d64cc) +* #7424 (f86d74d8) +* #7562 (09681e6c) +* node12 tests (8775e7e6) +* add post queue to /compose POST route (c6cd6c57) +* remove redis object cache (4df925e7) +* #7545 (74038849) +* failing test from 00552d7183f0416a0caa113fe2f1e658659648f7 (9bf3517d) +* fire filter:register.complete for users approved via registration queue (00552d71) +* #7540 (8778f00b) +* more graceful error handling and output for cli/reset (d3ebda73) +* #6438 only apply whitelist when fields request empty (#7528) (808c4909) +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.31 (#7589) (a9f9d19b) + * update dependency nodebb-theme-persona to v9.1.36 (#7588) (bd86e58d) + * update dependency mongodb to v3.2.4 (#7581) (26d6d0be) + * update dependency postcss to v7.0.16 (10a47a29) + * update dependency nodebb-theme-persona to v9.1.33 (#7563) (7c4201f2) + * update dependency sharp to v0.22.1 (#7561) (288a25f0) + * update dependency nodebb-plugin-composer-default to v6.2.12 (#7538) (a54f8f00) + * update dependency mongodb to v3.2.3 (97a7f02f) + +#### 1.12.1 (2019-04-10) + +##### Chores + +* incrementing version number - v1.12.1 (dd973abe) +* comment cleanup (6bed51ef) +* bump persona (1f4db132) +* bump themes, fix: https://github.com/NodeBB/NodeBB/issues/7446 (0d19bb3d) +* incrementing version number - v1.12.0 (d87f8c52) +* **deps:** + * update dependency lint-staged to v8.1.5 (ae17481d) + * update node:8.15.1 docker digest to 918f0be (5f787d73) + * update node:8.15.1 docker digest to 3d43ad1 (ea77ad4e) + * update dependency grunt to v1.0.4 (a9130fad) + * update dependency eslint to v5.15.3 (d2932cf6) + * update dependency mocha to v6.0.2 (#7408) (1c671c32) + * update dependency eslint to v5.15.1 (d8486e88) + * update node:8.15.1 docker digest to c151597 (2cb0bdea) + * update dependency jsdom to v14 (a967253a) + +##### Documentation Changes + +* updating changelog (9aeb291e) + +##### New Features + +* #7515 (ac889db1) +* update unban logic/invocation and refactor User.bans module (3fbb6faf) +* add original sessionID to static:user.loggedOut (abe4abb6) +* #7501 (2ee2cd52) +* allow multiple cids for getActiveUsers (81306fff) +* manual password expiry. closes #7471 (24dcae21) +* #7358 (7211dde7) + +##### Bug Fixes + +* don't crash if templateData is undefined (eb2c3e56) +* clear children before building tree (397e062a) +* upgrade script date (4f3ca4d8) +* #7519 (ed91d3f2) +* #7517 (e479fad7) +* #7470 Properly handle recompilation of email templates (75ae29c1) +* resolve CORS error on uploading via URL (3871a02c) +* #7461 (dbc4d840) +* #7491 (8cc1864a) +* #7476 (4db0efe3) +* #7508 (b52dba5c) +* escape search snippet closes #7506 (e906bea4) +* #7490 once again (3ec9fc40) +* #7502 (3304ffe9) +* #7503 (1f3554ff) +* #7493, adding robots noindex meta tag to compose and reset routes (6415ba82) +* #7490, handling of image sizes if no size saved in db (86e1cdd5) +* #7494 (8f55ab13) +* #6911, email throttling options set (63e16ec0) +* throttling email output to 2 messages every second, fixes #6911 (33a1bf6c) +* #7469 missing email logos, occasionally (8d62ead3) +* #7487 (fddb783e) +* #7485 (78e0b983) +* move upload_url to prestart so it is defined in upgrade scripts (ad2d7a69) +* #7342 (cead89f0) +* #7477 (240f563a) +* #7473 (c289b904) +* #7378 (c37b2f2e) +* #7454 (dcdd41c7) +* #7472 (962b7f73) +* remove async.series, dont crash if postAtIndex is undefined (dd8d4f20) +* tests (c12e1d19) +* #7468 (b4a9bb10) +* #7444 Re-factor handling of og:image tags (#7463) (697a6597) +* tests (45d7e37a) +* callbacks (b48b6d75) +* return early if keys is empty (7addc5a0) +* return early if keys is empty (b3962c16) +* prevent infinite loops if category is already in children (b71e0eb1) +* #7448 (4732bed3) +* return early if there are not blocked uids (73d14e45) +* #7008 (756dfd8a) +* typo (f9d92db5) +* tests (e71ae80c) +* #7406 (cbfbcee5) +* #7432 (777ca032) +* change user/system cpu usage (aecdf739) +* strip exif data on image uploads (5eaa14e7) +* **deps:** + * update dependency nodebb-theme-persona to v9.1.29 (e5c12a49) + * update dependency nodebb-plugin-composer-default to v6.2.11 (30b042b8) + * update dependency nodebb-plugin-composer-default to v6.2.10 (cf180e09) + * update dependency html-to-text to v5 (b39ce25c) + * update dependency semver to v6 (8662aa95) + * update dependency spdx-license-list to v6 (447cf66b) + * update dependency nodebb-widget-essentials to v4.0.17 (#7489) (0f9cb86d) + * update dependency mongodb to v3.2.2 (#7482) (357f931c) + * update dependency nodemailer to v6 (0274c2bd) + * update dependency sharp to v0.22.0 (#7466) (c3261415) + * update dependency nodebb-theme-slick to v1.2.23 (#7460) (c20cd528) + * update dependency nodebb-theme-vanilla to v10.1.25 (fe30e06d) + * update dependency nodebb-theme-persona to v9.1.27 (5c605392) + * update dependency connect-redis to v3.4.1 (02804fe9) + * update dependency nodebb-plugin-composer-default to v6.2.9 (#7442) (80293146) + * update dependency nodebb-theme-vanilla to v10.1.23 (#7438) (48dd3c5b) + * update dependency nodebb-theme-slick to v1.2.22 (#7437) (3f4ae4b0) + * update dependency nodebb-theme-persona to v9.1.25 (#7436) (9887bb4f) + * update dependency nodebb-plugin-composer-default to v6.2.8 (#7435) (c18f2e1f) + +### 1.12.0 (2019-03-06) + +##### Chores + +* incrementing version number - v1.12.0 (d87f8c52) +* incrementing version number - v1.11.2 (757bff27) +* **deps:** + * update node:8.15.1 docker digest to 287b8a5 (0b8d1833) + * update node.js to v8.15.1 (ae89db28) + * update dependency mocha to v6 (#7387) (30bdb1a1) + * update dependency coveralls to v3.0.3 (#7397) (cf74904c) + * update dependency eslint to v5.14.1 (4df9c206) + * update dependency jsdom to v13.2.0 (cb5e3d83) + * update node:8.15.0 docker digest to a8a9d8e (edcb5314) + * update dependency nyc to v13.3.0 (a78f5da5) + * update dependency lint-staged to v8.1.4 (18c90913) + * update dependency eslint to v5.14.0 (9d8d2d0d) + * update commitlint monorepo (aed5b29d) + * update dependency eslint-plugin-import to v2.16.0 (e0fa6965) + * update dependency @commitlint/cli to v7.4.0 (362d9397) + * update dependency lint-staged to v8.1.1 (96644350) + +##### Documentation Changes + +* updated changelog (aec2f210) + +##### New Features + +* admin/groups style change (2b6f1a05) +* add process cpu usage to admin (db477538) +* pass options to digest (23da3009) +* revamp email templates to be more style agnostic (#7375) (f32a9922) +* lower search timeout (fc830c0f) +* quick search (8a0e1280) +* add vote status to getPostData API call (eafe76de) +* make topic search a function (d2b83967) +* quick search (c01d43e0) +* check overide (ba90bf31) +* check CI failure (f2d7f75e) +* logging password resets and errors into event log (0c09b740) +* add `action:alert.new`, `action:alert.update` hooks (daadcc48) +* allow themes to define custom classes for categories via filter:admin.category.get (5031bfe8) +* show more unread notifs (d75a0d77) +* pass topic creation data to action:topic.save (cd2f72fb) +* textcomplete over jquery-textcomplete, closes #7309 (02a8ed9b) +* new hook filter:privileges.posts.edit (f659ef4d) +* new hook type: `response` (a23854e3) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v9.1.24 (0f2d3181) + * update dependency nodebb-plugin-composer-default to v6.2.7 (#7411) (9ebc900a) + * bump markdown (82c8ee3f) + * bump markdown (7ce5a81f) + * bump persona (a0b71f09) + * update dependency nodebb-theme-vanilla to v10.1.21 (#7404) (699eddcb) + * update dependency nodebb-theme-persona to v9.1.22 (#7403) (d87751ea) + * update dependency nodebb-theme-persona to v9.1.21 (#7401) (f721155d) + * update dependency nodebb-theme-slick to v1.2.21 (#7398) (f6e55651) + * update dependency nodebb-widget-essentials to v4.0.14 (#7399) (f812e0b7) + * update dependency nodebb-theme-persona to v9.1.19 (#7392) (deff7b34) + * update dependency nodebb-plugin-composer-default to v6.2.6 (#7389) (fab32a49) + * update dependency nodebb-theme-persona to v9.1.18 (042b81a0) + * update dependency nodebb-theme-persona to v9.1.17 (#7379) (546e04e1) + * update dependency nodebb-plugin-composer-default to v6.2.5 (#7374) (d0874f34) + * update dependency async to v2.6.2 (#7365) (264eadde) + * update dependency nodebb-plugin-composer-default to v6.2.4 (30ff4582) + * update dependency nodebb-theme-persona to v9.1.16 (65df6711) + * update dependency nodebb-plugin-markdown to v8.9.0 (07b29d59) + * bump contenteditable to v0.1.1, #7325 (fbbe2ab7) + * update dependency nodebb-plugin-composer-default to v6.2.3 (#7341) (176efb5f) + * update dependency nodebb-theme-persona to v9.1.15 (#7295) (8f69ffd4) + * update dependency nodebb-theme-slick to v1.2.20 (#7197) (a82bd3d0) + * update dependency nodebb-theme-lavender to v5.0.9 (#7322) (b350be27) + * update dependency nodebb-plugin-composer-default to v6.2.2 (99f82fb3) + * update dependency winston to v3.2.1 (#7317) (7e872d32) + * update dependency nodebb-plugin-markdown to v8.8.8 (#7314) (9cf81afe) + * update dependency nodebb-plugin-dbsearch to v3.0.6 (#7305) (d48ef6d8) + * update dependency nodebb-plugin-dbsearch to v3.0.5 (#7304) (57e3f162) + * update dependency nodebb-theme-vanilla to v10.1.19 (#7301) (443dcee4) + * update dependency winston to v3.2.0 (#7299) (6f957cb9) + * update dependency nodebb-plugin-spam-be-gone to v0.6.0 (247ac828) +* #7413 (684175f7) +* #7414 (e331f6b5) +* l2spread @baris nib (0360f6e1) +* restored email logo to all outgoing emails (6c1f9c3c) +* die hydra!!! (ad6c8dcc) +* incorrect teaserPost logic (97313508) +* normalized font sizes for paragraphs in digest (43c4eb23) +* removed notification subheader translation string (6f272e34) +* broken 50% border radius on emails, failing tests (d3a10628) +* hook names getting objectified by winston (6472a065) +* failing tests from revamped-emails branch (3a7f1c19) +* #7395 (03305db8) +* mounting of all-route middlewares to router instead of app (d722f3b8) +* incorrect returnTo set in registerComplete (f972f752) +* search.api not working on subfolder (158f68eb) +* tests for #7385 (7a534453) +* #7385 better handling for errors in Adv>Databases (57069a5c) +* no relative path needed in req.session.returnTo (949b10f1) +* don't refresh page when enabling/disabling categories (d5ece9a4) +* #7373 (c2e7ae7f) +* autocomplete not triggered if chat switched (ab0e547d) +* #7366 (6c2f48f1) +* #7357 (45c322ae) +* #7359 (2996a5dc) +* re-introducing indeterminate checkbox state to ACP privs (e8f3c256) +* #7354 (c6ad8fae) +* uid check (efd7d953) +* uid checks (c24dcf78) +* only allow numbers as scores (#7356) (5917dec2) +* #7231, missing success alert on group name change in ACP (0fffcb38) +* remove debug logs (fe63fca8) +* don't use same db as prod values (39e35275) +* database 0 was being replaced with undefined because 0 is falsy (bcd62586) +* #7352 (2e2c3ac1) +* #7261, banned users still get digests (aca05560) +* #7346, panel-header widget colours in ACP (91a7b907) +* #7350 (8c68780e) +* eslint failure from daadcc4889a91b9bbd279d49db348610cc079ccc (96b6ce1f) +* prevent crash if results.stats or results.serverStatus is undefined (fab52b84) +* move `action:alert.update` to after translator (d864da1a) +* #7098 (fc6767e1) +* #7232 (70d9c6c4) +* #7229 (e59b907d) +* #7339 (12c58990) +* #7338 (8e3bf581) +* dont crash if userData is undefined #7262 (56a493d8) +* #7240 (a2f08e7d) +* give default privs on new install to guests/spiders (cd120990) +* #6806 (c72da559) +* #7334 (ae779ea4) +* closes #7217 (9d1fcf4e) +* merge post notifs (6e69a9ab) +* don't crash if body doesn't have `skin-` (f6cfbbb5) +* #7324 (c7abf07a) +* allow regular groups to local login (0366cfd8) +* #7316 (5353960a) +* #7306 (8aebe884) +* #7312 (7a4a8ea4) +* #7311, missing dependencies (263e58df) +* #7300 (920efad0) +* #6848 (70f8b418) +* #7298 privilege header misalignment (df6f75eb) +* #7211 (cf918078) +* #7215 (7a9780f6) +* #7296, local login privilege available to registered-users only (7fb3c168) +* #7094 (d03220cd) + +#### 1.11.2 (2019-01-24) + +##### Chores + +* incrementing version number - v1.11.2 (757bff27) +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update node:8.15.0 docker digest to cb66110 (1719cd77) + * update dependency eslint-plugin-import to v2.15.0 (f7191eb9) + * update dependency eslint to v5.12.1 (d928c54d) + * update dependency @commitlint/cli to v7.3.2 (6ae2b972) + * update node.js to v8.15.0 (ac39fe90) + * update dependency eslint to v5.12.0 (f96ef7bb) + * update commitlint monorepo to v7.3.1 (50594118) + * update dependency smtp-server to v3.5.0 (00063708) + * update dependency husky to v1.3.1 (719995a4) + * update dependency eslint to v5.11.0 (#7151) (26f3bdbf) + * update dependency husky to v1.3.0 (eb606281) + * update dependency jsdom to v13.1.0 (60e9430b) + * update dependency eslint to v5.10.0 (#7084) (dae861da) + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### Documentation Changes + +* updated changelog for v1.11.1 (c04e192d) + +##### New Features + +* new hook filter:user.logout (63061ffd) +* explicit handling of SSO success and failure (059a4be2) +* additional options for SSO plugins (2b9322e1) +* get rid of disk access (ed5d2d6d) +* support for one-click unsubscribe from email clients (#7203) (70a87d43) +* added new hook `static:sockets.validateSession` (#7189) (0263b4da) +* #7120 (f4ea2c43) +* #7032 (0c1ac4d6) +* small fixes (fef7e13c) +* name topic controller (b9b9d8b2) +* header (0cb9bba4) +* more naming (ae0fe5e8) +* give the rest of the middlewares names (f88db22c) +* give names to more middlewares (fdfbcc6e) +* give names to middlewares (53793e16) +* change sortedSetsScore (d2c2d56f) +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) +* **deps:** update bootstrap to v3.4.0 (#7106) (d1ea5d15) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* test (bc41848a) +* #7235 (7064fd06) +* use ACP config value for checking online status (ef0e7808) +* log error to prevent headers already sent (a22a3a98) +* #7289 timeago shorthand toggle fails on non-existant language (cee47f78) +* #7276 improper request for client-noskin.css (5ee173c2) +* #7274 incorrect handling of client script 404s (831d0795) +* #7270 Flags graph label not translatable (8ceb35f5) +* #7266 body does not contain skin class (f122fc44) +* generate timeago codes from files (7524d3c3) +* removal of timeago fallback middleware (#7259) (c831ff0d) +* post queue notifs (ac655564) +* added missing translation and error state for password change (51b5fb98) +* #7236, header search stops working after header update (3859d417) +* #7226, added placeholder styling for fa-nbb-none (87c2d108) +* escape hook method (9328eeca) +* #7216, hide taskbar on chat modal invocation on mobile (a70db885) +* #7208 (428f587c) +* #7054 (a662f118) +* #7209 (b9833483) +* missing notification (1a3838e1) +* #7193, closes #7194 (7809ba28) +* #https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/49 (6f1fb4eb) +* #7187 (28459d04) +* #7176, FUOC on app.reskin() (954af0f0) +* #7174 (9aa1aa68) +* #7181 (0d409610) +* #7142 (8da3b2a4) +* #7179 (03299736) +* #7169 Fixed logout being broken (b0eaa858) +* #7167, composer and chat not closing on logout (629b3554) +* shorter function (43e7cc0a) +* #7162 (2da0a657) +* uid filtering (72afc180) +* dont crash if default cover is invalid (41fb5cca) +* #7136 socket.disconnect() now called on invalid session (8e9de540) +* RTL not respected when changed in user settings, related to #7146 (4873a339) +* #7146 Better RTL handling on (de-)authentication (d81e0a5f) +* #7118, invoking autoLocale middleware on logout (900f0a0b) +* closes #6784 (#7137) (7fb29f42) +* 7100 (ab81cca7) +* #7139 (3917022a) +* #7116 (7e828404) +* #7138 (29a85aec) +* lint (b47f939b) +* #7091, #7093 (69e0dbbf) +* #7131 (d31684e8) +* remove cache (b2a74b41) +* loop (60390c01) +* #7124 (4650a760) +* unread badge (9f506268) +* move the check to get methods (99e0895e) +* #7115 (989879a6) +* #6979 (29b63ae7) +* upgrade script key (0eef3e1c) +* remove log (00afc5b3) +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **deps:** + * update dependency nodebb-widget-essentials to v4.0.13 (#7293) (22cbcc3e) + * update dependency mongodb to v3.1.13 (1aadbc3c) + * update dependency postcss to v7.0.14 (4d64de76) + * #7271, updating autoprefixer to latest version (a7af0198) + * #7270 (b48f1b4d) + * update dependency sharp to v0.21.3 (#7267) (8a64667f) + * theme upgrades for #7266 (5607261c) + * update dependency mongodb to v3.1.12 (eeab7d20) + * update dependency mongodb to v3.1.11 (#7252) (b5f188b6) + * update dependency validator to v10.11.0 (77dc8fc7) + * update dependency nodebb-plugin-composer-default to v6.1.21 (2fbb2614) + * update dependency postcss to v7.0.12 (f1842295) + * update dependency postcss to v7.0.11 (57bec2fb) + * update dependency sharp to v0.21.2 (8f3c4b09) + * update dependency postcss to v7.0.10 (82475fe5) + * update dependency postcss to v7.0.9 (f171c169) + * update dependency nodebb-theme-vanilla to v10.1.15 (ea059e89) + * update dependency nodebb-theme-persona to v9.1.10 (96482569) + * update dependency nodebb-theme-persona to v9.1.9 (bbe05043) + * update dependency nodebb-theme-vanilla to v10.1.14 (6cc5dbc8) + * update dependency nodebb-theme-persona to v9.1.8 (e5443690) + * update dependency pg-cursor to v2 (29acad42) + * update dependency diff to v4 (#7198) (84e228bb) + * update dependency nodebb-plugin-mentions to v2.5.2 (#7199) (0a647316) + * update dependency nodebb-plugin-markdown to v8.8.7 (90b4d40e) + * update dependency rimraf to v2.6.3 (f4cc3122) + * update dependency spider-detector to v1.0.19 (#7177) (0faba325) + * update dependency nodemailer to v5 (4993b03c) + * update dependency json-2-csv to v3 (80cee665) + * update dependency nodebb-plugin-composer-default to v6.1.20 (07bf0b98) + * update dependency nodebb-theme-persona to v9.1.7 (#7161) (c68d4ae8) + * update dependency nodebb-plugin-composer-default to v6.1.19 (#7159) (07af46ea) + * update dependency nodebb-plugin-composer-default to v6.1.18 (#7158) (584b45fc) + * update dependency validator to v10.10.0 (#7152) (8003bed8) + * update dependency nodebb-plugin-mentions to v2.5.0 (792dce14) + * update dependency nodebb-theme-persona to v9.1.6 (#7141) (325b0293) + * update dependency nodebb-plugin-dbsearch to v3.0.4 (ddd07c1a) + * update dependency nodebb-widget-essentials to v4.0.12 (#7133) (f614a44d) + * update dependency nodebb-plugin-mentions to v2.4.0 (9ab31d7e) + * update dependency postcss to v7.0.7 (7ef8c3fd) + * update dependency sharp to v0.21.1 (#7082) (bf75f3e3) + * update dependency nodebb-theme-vanilla to v10.1.13 (#7114) (fc5598b9) + * update dependency nodebb-theme-slick to v1.2.19 (#7113) (56ad43aa) + * update dependency nodebb-theme-persona to v9.1.5 (#7112) (953f8fe5) + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Other Changes + +* //github.com/NodeBB/nodebb-theme-persona/issues/363 (702be3f6) +* //github.com/NodeBB/NodeBB/issues/6433 (7e00d6b9) +* #6408 (f0f30041) +* #6425 (fbf52407) +* //github.com/NodeBB/NodeBB/issues/6073 (5da24b41) +* #5862, setting chat list height even if no message list is present (bc9a1250) +* //github.com/Schamper/nodebb-plugin-poll/issues/86 (c0f39032) + +##### Refactors + +* use loash when possible (#7230) (e1ca2d81) + +##### Code Style Changes + +* lint fix (fbe6ccd7) +* **eslint:** + * match operator-linebreak preferences (ba619c7e) + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + +#### 1.11.1 (2018-12-14) + +##### Chores + +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + +##### New Features + +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) + +##### Code Style Changes + +* **eslint:** match operator-linebreak preferences (ba619c7e) + +### 1.11.0 (2018-11-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### New Features + +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Code Style Changes + +* **eslint:** + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + diff --git a/.stryker-tmp/sandbox1963221/Dockerfile b/.stryker-tmp/sandbox1963221/Dockerfile new file mode 100644 index 0000000000..f3b76ab35b --- /dev/null +++ b/.stryker-tmp/sandbox1963221/Dockerfile @@ -0,0 +1,75 @@ +FROM node:lts as build + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +COPY . /usr/src/app/ + +# Install corepack to allow usage of other package managers +RUN corepack enable + +# Removing unnecessary files for us +RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \; + +# Prepage package.json +RUN cp /usr/src/app/install/package.json /usr/src/app/ + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive \ + apt-get -y --no-install-recommends install \ + tini + +RUN groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +USER ${USER} + +RUN npm install --omit=dev + # TODO: generate lockfiles for each package manager + ## pnpm import \ + +FROM node:lts-slim AS final + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && mkdir -p /usr/src/app/logs/ /opt/config/ \ + && chown -R ${USER}:${USER} /usr/src/app/ /opt/config/ + +COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ +COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ + +RUN chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/tini + +# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. +# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate + +USER ${USER} + +EXPOSE 4567 + +VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] + +# Utilising tini as our init system within the Docker container for graceful start-up and termination. +# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals. +# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments. +# By integrating tini, we enhance the reliability and stability of our Docker containers. +# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing. +ENTRYPOINT ["tini", "--", "entrypoint.sh"] \ No newline at end of file diff --git a/.stryker-tmp/sandbox1963221/Gruntfile.js b/.stryker-tmp/sandbox1963221/Gruntfile.js new file mode 100644 index 0000000000..855c1bfa99 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/Gruntfile.js @@ -0,0 +1,202 @@ +// @ts-nocheck +'use strict'; + +const path = require('path'); +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); +const winston = require('winston'); +const { fork } = require('child_process'); + +const { env } = process; +let worker; + +env.NODE_ENV = env.NODE_ENV || 'development'; + +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); + +const db = require('./src/database'); +const plugins = require('./src/plugins'); + +module.exports = function (grunt) { + const args = []; + + if (!grunt.option('verbose')) { + args.push('--log-level=info'); + nconf.set('log-level', 'info'); + } + prestart.setupWinston(); + + grunt.initConfig({ + watch: {}, + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + + grunt.registerTask('default', ['watch']); + + grunt.registerTask('init', async function () { + const done = this.async(); + let pluginList = []; + if (!process.argv.includes('--core')) { + await db.init(); + pluginList = await plugins.getActive(); + addBaseThemes(pluginList); + if (!pluginList.includes('nodebb-plugin-composer-default')) { + pluginList.push('nodebb-plugin-composer-default'); + } + if (!pluginList.includes('nodebb-theme-harmony')) { + pluginList.push('nodebb-theme-harmony'); + } + } + + const styleUpdated_Client = pluginList.map(p => `node_modules/${p}/*.scss`) + .concat(pluginList.map(p => `node_modules/${p}/*.css`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static|scss)/**/*.scss`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); + + const clientUpdated = pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.js`); + const serverUpdated = pluginList.map(p => `node_modules/${p}/*.js`) + .concat(pluginList.map(p => `node_modules/${p}/+(lib|src)/**/*.js`)); + + const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`); + const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`); + const interval = 100; + grunt.config(['watch'], { + styleUpdated: { + files: [ + 'public/scss/**/*.scss', + ...styleUpdated_Client, + ], + options: { + interval: interval, + }, + }, + clientUpdated: { + files: [ + 'public/src/**/*.js', + 'public/vendor/**/*.js', + ...clientUpdated, + 'node_modules/benchpressjs/build/benchpress.js', + ], + options: { + interval: interval, + }, + }, + serverUpdated: { + files: [ + 'app.js', + 'install/*.js', + 'src/**/*.js', + 'public/src/modules/translator.common.js', + 'public/src/modules/helpers.common.js', + 'public/src/utils.common.js', + serverUpdated, + '!src/upgrades/**', + ], + options: { + interval: interval, + }, + }, + templatesUpdated: { + files: [ + 'src/views/**/*.tpl', + ...templatesUpdated, + ], + options: { + interval: interval, + }, + }, + langUpdated: { + files: [ + 'public/language/en-GB/*.json', + 'public/language/en-GB/**/*.json', + ...langUpdated, + ], + options: { + interval: interval, + }, + }, + }); + const build = require('./src/meta/build'); + if (!grunt.option('skip')) { + await build.build(true, { watch: true }); + } + run(); + done(); + }); + + function run() { + if (worker) { + worker.kill(); + } + + const execArgv = []; + const inspect = process.argv.find(a => a.startsWith('--inspect')); + + if (inspect) { + execArgv.push(inspect); + } + + worker = fork('app.js', args, { + env, + execArgv, + }); + } + + grunt.task.run('init'); + + grunt.event.removeAllListeners('watch'); + grunt.event.on('watch', (action, filepath, target) => { + let compiling; + if (target === 'styleUpdated') { + compiling = ['clientCSS', 'acpCSS']; + } else if (target === 'clientUpdated') { + compiling = ['js']; + } else if (target === 'templatesUpdated') { + compiling = ['tpl']; + } else if (target === 'langUpdated') { + compiling = ['lang']; + } else if (target === 'serverUpdated') { + // empty require cache + const paths = ['./src/meta/build.js', './src/meta/index.js']; + paths.forEach(p => delete require.cache[require.resolve(p)]); + return run(); + } + + require('./src/meta/build').build(compiling, { webpack: false }, (err) => { + if (err) { + winston.error(err.stack); + } + if (worker) { + worker.send({ compiling: compiling }); + } + }); + }); +}; + +function addBaseThemes(pluginList) { + let themeId = pluginList.find(p => p.includes('nodebb-theme-')); + if (!themeId) { + return pluginList; + } + let baseTheme; + do { + try { + baseTheme = require(`${themeId}/theme`).baseTheme; + } catch (err) { + console.log(err); + } + + if (baseTheme) { + pluginList.push(baseTheme); + themeId = baseTheme; + } + } while (baseTheme); + return pluginList; +} diff --git a/.stryker-tmp/sandbox1963221/LICENSE b/.stryker-tmp/sandbox1963221/LICENSE new file mode 100644 index 0000000000..94a9ed024d --- /dev/null +++ b/.stryker-tmp/sandbox1963221/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/.stryker-tmp/sandbox1963221/README.md b/.stryker-tmp/sandbox1963221/README.md new file mode 100644 index 0000000000..2fd96967ba --- /dev/null +++ b/.stryker-tmp/sandbox1963221/README.md @@ -0,0 +1,86 @@ +Team Members: Andrew Cheng, Emily Yu, Tin Chi Lo, Joyce Lam, Jorge Gracia + +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/ithVU1OO) +# ![NodeBB](public/images/sm-card.png) + +[![Workflow](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml/badge.svg)](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml) +[![Coverage Status](https://coveralls.io/repos/github/CMU-313/NodeBB/badge.svg)](https://coveralls.io/github/CMU-313/NodeBB) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=CMU-313_NodeBB&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=CMU-313_NodeBB) + +[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging. + +NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins. + +### [Try it now](//try.nodebb.org) | [Documentation](//docs.nodebb.org) + +## Screenshots + +NodeBB's theming engine is highly flexible and does not restrict your design choices. Check out some themed installs in these screenshots below: + +[![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png) +[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png) +[![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png) +[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png) +[![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png) +[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png) +[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png) +[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg) + +Our minimalist "Harmony" theme gets you going right away, no coding experience required. + +![Rendering of a NodeBB install on desktop and mobile devices](https://user-images.githubusercontent.com/923011/228570420-2a4db745-b20d-474a-a571-1b59259508ef.png) + +## How can I follow along/contribute? + +* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase. +* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via SCSS or CSS. NodeBB's base theme utilizes [Bootstrap 5](http://getbootstrap.com/) as a frontend toolkit. +* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://explore.transifex.com/nodebb/nodebb/) for internationalization. +* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development. + +## Requirements + +NodeBB requires the following software to be installed: + +* A version of Node.js at least 16 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions)) +* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater +* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured. +* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) + +## Installation + +[Please refer to platform-specific installation documentation](https://docs.nodebb.org/installing/os). +If installing via the cloud (or using Docker), [please see cloud-based installation documentation](https://docs.nodebb.org/installing/cloud/). + +## Securing NodeBB + +It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind: + +1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions: + * Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only + * Use `requirepass` to secure Redis behind a password (preferably a long one) + * Familiarise yourself with [Redis Security](http://redis.io/topics/security) +2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`. + * e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access) + + +## Upgrading NodeBB + +Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/configuring/upgrade/) + +## License + +NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html). + +Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org. + +## More Information/Links + +* [Demo](https://try.nodebb.org) +* [Developer Community](http://community.nodebb.org) +* [Documentation & Installation Instructions](https://docs.nodebb.org) +* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/) +* [NodeBB Blog](https://nodebb.org/blog) +* [Premium Hosting for NodeBB](https://www.nodebb.org/ "NodeBB") +* Unofficial IRC community – channel `#nodebb` on Libera.chat +* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter") +* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") diff --git a/.stryker-tmp/sandbox1963221/UserGuide.md b/.stryker-tmp/sandbox1963221/UserGuide.md new file mode 100644 index 0000000000..3240426214 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/UserGuide.md @@ -0,0 +1,12 @@ +User Story #11: +As a user, I would like to be able to visualize instructor posts differently so that I can make sure that I don't miss any important announcements from the instructor. + +To test the flagging instructor posts feature, run nodebb with the frontend changes, any signed in account should work. When opening a post or a list of posts, you should be able to see "! instructor" next to all instructor posts. Unfortunately, this feature did not work as we expected, and we could not run our backend functions that check if a post was created by an instructor in the frontend. Meaning, all posts and post lists show the flag regardless of whether or not they were created by an instructor. + +We also created tests for the isInstructor function (which checks if a user is an instructor) in tests/user.js. + +User Story #14: +As a user, I would like to be able to pin posts so that I can focus on certain posts that I am interested in. + +This feature is not fully developed. We are struggling to join the front_end feature with the backend methods and implementation for toggling the pinned field within the post object. Our front end feature is fully developed and visible through + diff --git a/.stryker-tmp/sandbox1963221/app.js b/.stryker-tmp/sandbox1963221/app.js new file mode 100644 index 0000000000..2826e2f2d7 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/app.js @@ -0,0 +1,84 @@ +/* + NodeBB - A better forum platform for the modern web + https://github.com/NodeBB/NodeBB/ + Copyright (C) 2013-2021 NodeBB Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +// @ts-nocheck + + +'use strict'; + +require('./require-main'); + +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); + +const winston = require('winston'); +const path = require('path'); + +const file = require('./src/file'); + +process.env.NODE_ENV = process.env.NODE_ENV || 'production'; +global.env = process.env.NODE_ENV || 'production'; + +// Alternate configuration file support +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); + +const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database')); + +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); +prestart.setupWinston(); +prestart.versionCheck(); +winston.verbose('* using configuration stored in: %s', configFile); + +if (!process.send) { + // If run using `node app`, log GNU copyright info along with server info + winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`); + winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); + winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); + winston.info(''); +} + +if (nconf.get('setup') || nconf.get('install')) { + require('./src/cli/setup').setup(); +} else if (!configExists) { + require('./install/web').install(nconf.get('port')); +} else if (nconf.get('upgrade')) { + require('./src/cli/upgrade').upgrade(true); +} else if (nconf.get('reset')) { + require('./src/cli/reset').reset({ + theme: nconf.get('t'), + plugin: nconf.get('p'), + widgets: nconf.get('w'), + settings: nconf.get('s'), + all: nconf.get('a'), + }); +} else if (nconf.get('activate')) { + require('./src/cli/manage').activate(nconf.get('activate')); +} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') { + require('./src/cli/manage').listPlugins(); +} else if (nconf.get('build')) { + require('./src/cli/manage').build(nconf.get('build')); +} else if (nconf.get('events')) { + require('./src/cli/manage').listEvents(); +} else { + require('./src/start').start(); +} diff --git a/.stryker-tmp/sandbox1963221/build/.gitignore b/.stryker-tmp/sandbox1963221/build/.gitignore new file mode 100644 index 0000000000..9addbff7eb --- /dev/null +++ b/.stryker-tmp/sandbox1963221/build/.gitignore @@ -0,0 +1,4 @@ +* +*/ +!export +!.gitignore diff --git a/.stryker-tmp/sandbox1963221/build/export/.gitignore b/.stryker-tmp/sandbox1963221/build/export/.gitignore new file mode 100644 index 0000000000..f8d55e0e3f --- /dev/null +++ b/.stryker-tmp/sandbox1963221/build/export/.gitignore @@ -0,0 +1,3 @@ +. +!.gitignore +!README \ No newline at end of file diff --git a/.stryker-tmp/sandbox1963221/build/export/README b/.stryker-tmp/sandbox1963221/build/export/README new file mode 100644 index 0000000000..a9015033f4 --- /dev/null +++ b/.stryker-tmp/sandbox1963221/build/export/README @@ -0,0 +1,5 @@ +This directory contains archives of user uploads that are prepared on-demand +when a user wants to retrieve a copy of their uploaded content. + +You can delete the files in here at will. They will just be regenerated if +requested again. \ No newline at end of file diff --git a/.stryker-tmp/sandbox3435591/.codeclimate.yml b/.stryker-tmp/sandbox3435591/.codeclimate.yml new file mode 100644 index 0000000000..d40cc58e75 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.codeclimate.yml @@ -0,0 +1,30 @@ +# Save as .codeclimate.yml (note leading .) in project root directory +version: "2" +languages: + Ruby: false + JavaScript: true + PHP: false +checks: + file-lines: + config: + threshold: 500 + method-lines: + config: + threshold: 75 + method-complexity: + config: + threshold: 10 + similar-code: + config: + threshold: 65 +plugins: + duplication: + enabled: true + config: + languages: + javascript: + mass_threshold: 110 + count_threshold: 3 +exclude_paths: +- "public/vendor/*" +- "test/*" \ No newline at end of file diff --git a/.stryker-tmp/sandbox3435591/.docker/.gitkeep b/.stryker-tmp/sandbox3435591/.docker/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.stryker-tmp/sandbox3435591/.dockerignore b/.stryker-tmp/sandbox3435591/.dockerignore new file mode 100644 index 0000000000..46ab37b3ab --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.dockerignore @@ -0,0 +1,10 @@ +.* +logs +test +node_modules +commitlint.config.js +nodebb.bat +renovate.json +*.yml +*.md +Dockerfile diff --git a/.stryker-tmp/sandbox3435591/.editorconfig b/.stryker-tmp/sandbox3435591/.editorconfig new file mode 100644 index 0000000000..71cf54ef4d --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[{*.js, *.css, *.tpl, *.json}] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false diff --git a/.stryker-tmp/sandbox3435591/.eslintignore b/.stryker-tmp/sandbox3435591/.eslintignore new file mode 100644 index 0000000000..b304ee19d8 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.eslintignore @@ -0,0 +1,21 @@ +node_modules/ +*.sublime-project +*.sublime-workspace +.project +.vagrant +.DS_Store +logs/ +/public/templates +/public/uploads +/public/vendor +/public/src/modules/string.js +.idea/ +.vscode/ +*.ipr +*.iws +/coverage +/build +.eslintrc +test/files +*.min.js +install/docker/ \ No newline at end of file diff --git a/.stryker-tmp/sandbox3435591/.eslintrc b/.stryker-tmp/sandbox3435591/.eslintrc new file mode 100644 index 0000000000..abd292af1b --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "nodebb" +} diff --git a/.stryker-tmp/sandbox3435591/.gitattributes b/.stryker-tmp/sandbox3435591/.gitattributes new file mode 100644 index 0000000000..e0fa7609a5 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.gitattributes @@ -0,0 +1,13 @@ +# These files are text and should be normalized (convert crlf => lf) +*.json text +*.css text +*.less text +*.tpl text +*.html text +*.js text +*.md text + +# Images should be treated as binary +# (binary is a macro for -text -diff) +*.png binary +*.jpg binary \ No newline at end of file diff --git a/.stryker-tmp/sandbox3435591/.github/CONTRIBUTING.md b/.stryker-tmp/sandbox3435591/.github/CONTRIBUTING.md new file mode 100644 index 0000000000..11911cd409 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/CONTRIBUTING.md @@ -0,0 +1,69 @@ +# Submitting a Pull Request to NodeBB? + +First of all, thank you! Before submission, please run `npm test` to lint and run the automated NodeBB tests. If everything passes, you're good to go. If you have any errors, please fix them and re-run `npm test` to make sure there aren't any others. + +## Styleguide and linting + +NodeBB mostly conforms to the [AirBnB Javascript style guide](https://github.com/airbnb/javascript#readme). If you're running into a lot of ESlint errors, you may want to install an editor plugin to display them in real time. + +## Contributor License Agreement + +Thank you for considering contributing to NodeBB. **Before you are able to submit a pull request, please take a moment to read our [contributor license agreement](https://gist.github.com/psychobunny/65946d7aa8854b12fab9)** and agree to it on the pull request page on GitHub. In summary, signing this document means that 1) you own the code that you are contributing and 2) you give permission to NodeBB Inc. to license the code to others. This agreement applies to any repository under the NodeBB organization. + +If you are writing contributions as part of employment from another company / individual, then your employer will need to sign a separate agreement. Please [contact us](mailto:accounts@nodebb.org) so that we can send this additional agreement to your employer. + + +# Having problems installing NodeBB? + +Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/installing/os/), please head over to our [community support forum](https://community.nodebb.org) for advice. + +# Found a Security Vulnerability? + +If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**. +A member of the NodeBB security team will respond to the issue. +Please do not post it to the public bug tracker. + +# Issues & Bugs + +Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem. + +In general, if we can't reproduce it, we can't fix it! + +## Try the latest version of NodeBB + +There is a chance that the issue you are experiencing may have already been fixed. + +## Provide the NodeBB version number and git hash + +You can find the NodeBB version number in the Admin Control Panel (ACP), as well as the first line output to the shell when running NodeBB + +``` plaintext +3/4 12:38:57 [10752] - info: NodeBB v1.4.5 Copyright (C) 2013-2017 NodeBB Inc. +3/4 12:38:57 [10752] - info: This program comes with ABSOLUTELY NO WARRANTY. +3/4 12:38:57 [10752] - info: This is free software, and you are welcome to redistribute it under certain conditions. +``` + +If you are running NodeBB via git, it is also helpful to let the maintainers know what commit hash you are on. To find the commit hash, execute the following command: + +``` bash +$ cd /path/to/my/nodebb +$ git rev-parse HEAD +``` + +If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know. + +## Provide theme versions if issue is related to the theme/display +Use `npm ls` to list the versions of the theme you're using. In this example, we're running the Persona theme, which depends on the Vanilla theme. + +``` bash +$ npm ls nodebb-theme-vanilla nodebb-theme-persona +nodebb@1.4.3 /path/to/nodebb ++-- nodebb-theme-persona@4.2.4 +`-- nodebb-theme-vanilla@5.2.0 +``` + +## Attempt to use `git bisect` + +If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`. + +A full guide can be found here: [Debugging with Git/Binary Search](http://git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search) diff --git a/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/bug-report.yml b/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000000..f8faf31515 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,81 @@ +name: Bug Report +description: File a bug report +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: input + attributes: + label: NodeBB version + placeholder: e.g. v2.2.0 + - type: input + attributes: + label: NodeBB git hash + description: to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory + placeholder: e.g. 783250ee6f8c51cdc243ce3b8d9f1a080517247e + - type: input + attributes: + label: NodeJS version + placeholder: e.g. v16.15.1 + - type: textarea + attributes: + label: Installed NodeBB plugins + description: to find installed plugins run `./nodebb plugins` + placeholder: | + e.g. + * nodebb-plugin-2factor@5.0.1 (installed, disabled) + * nodebb-plugin-composer-default@8.0.0 (installed, enabled) + * nodebb-plugin-dbsearch@5.1.5 (installed, disabled) + * nodebb-plugin-emoji@4.0.4 (installed, enabled) + * nodebb-plugin-emoji-android@3.0.0 (installed, enabled) + * nodebb-plugin-markdown@10.0.0 (installed, enabled) + * nodebb-plugin-mentions@3.0.11 (installed, enabled) + * nodebb-plugin-spam-be-gone@1.0.0 (installed, disabled) + * nodebb-rewards-essentials@0.2.1 (installed, enabled) + * nodebb-theme-lavender@6.0.0 (installed, disabled) + * nodebb-theme-persona@12.0.11 (installed, enabled) + * nodebb-theme-slick@2.0.2 (installed, disabled) + * nodebb-theme-vanilla@12.1.18 (installed, disabled) + * nodebb-widget-essentials@6.0.0 (installed, enabled) + - type: dropdown + attributes: + label: Database type + multiple: true + options: + - MongoDB + - Redis + - PostgreSQL + - type: input + attributes: + label: Database version + description: "`mongod --version`, `redis-server --version`, or `postgres --version`" + placeholder: e.g. v5.0.9 + - type: textarea + attributes: + label: Exact steps to cause this issue + placeholder: | + 1. First I did this... + 2. Then, I clicked on this item... + + A quick note: MP4 and MOV formatted video files are now allowed to be uploaded to GH. + Please upload if reproduction steps are hard to describe or reproduce reliably. + - type: textarea + attributes: + label: What you expected + placeholder: e.g. I expected *abc* to *xyz* + - type: textarea + attributes: + label: What happened instead + placeholder: e.g. Instead, I got *zyx* and NodeBB set fire to my house + - type: textarea + attributes: + label: Anything else? + description: Any additional context about the issue you're encountering + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/config.yml b/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..ab47f0760d --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Community Forum + url: https://community.nodebb.org + about: Github Issues are for bug reports and feature requests only, please use community forum for other support diff --git a/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/feature-request.yml b/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000000..382d874014 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,24 @@ +name: Feature Request +description: Suggest a new feature +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: textarea + attributes: + label: Description + validations: + required: true + - type: input + attributes: + label: Community forum reference + description: If this feature was already discussed on the Community Forum link it here + placeholder: https://community.nodebb.org/topic/0/example-feature-request + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox3435591/.github/SECURITY.md b/.stryker-tmp/sandbox3435591/.github/SECURITY.md new file mode 100644 index 0000000000..0dffd0a60f --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/SECURITY.md @@ -0,0 +1,9 @@ +# Reporting a security vulnerability + +NodeBB's security policy is based around a private bug bounty program. Users are invited to explore NodeBB for vulnerabilities, and report them to the NodeBB team so that they can be patched. + +If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead, even if you are not sure whether something qualifies. + +# Bug Bounty Program + +Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the [dedicated page for our Bug Bounty Program](https://nodebb.org/bounty). diff --git a/.stryker-tmp/sandbox3435591/.github/workflows/azure-deploy-f24.yml b/.stryker-tmp/sandbox3435591/.github/workflows/azure-deploy-f24.yml new file mode 100644 index 0000000000..752ac4b7bf --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/workflows/azure-deploy-f24.yml @@ -0,0 +1,54 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +name: Build and deploy Node.js app to Azure Web App - nodebb-f24 + +on: + push: + branches: + - f24 + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + lint-and-test: + uses: + ./.github/workflows/test.yaml + + build-and-deploy: + if: github.repository == 'cmu-313/nodebb-f24-hunan-hunters' + needs: lint-and-test + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js version + uses: actions/setup-node@v3 + with: + node-version: '20.x' + + - name: Set up NodeBB + run: | + ./nodebb setup '{"url":"https://nodebb-hunanhunters.azurewebsites.net:443", + "admin:username": "admin", + "admin:password": "${{ secrets.ADMIN_PASSWORD }}", + "admin:password:confirm": "${{ secrets.ADMIN_PASSWORD }}", + "admin:email": "rohanpadhye@cmu.edu", + "database": "redis", + "redis:host": "${{ secrets.REDIS_HOST }}", + "redis:port": "6379", + "redis:password": "${{ secrets.REDIS_PASSWORD }}" }' + + - name: 'Deploy to Azure Web App' + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'nodebb-hunanhunters' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_8CE2E89DDD294B98BF913663FFF5E9D5 }} + package: . diff --git a/.stryker-tmp/sandbox3435591/.github/workflows/docker.yml b/.stryker-tmp/sandbox3435591/.github/workflows/docker.yml new file mode 100644 index 0000000000..67aee91b9a --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/workflows/docker.yml @@ -0,0 +1,72 @@ +name: Run Docker + +# Controls when the workflow will run +on: + push: + branches: + - 'master' + - 'v*.x' + tags: + - 'v*' + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +permissions: + contents: read + packages: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Get current date in NST + run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}}.x + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }} + type=raw,value=${{ env.CURRENT_DATE_NST }} + flavor: | + latest=true + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: var-cache-node-modules + key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }} + + - name: Build and push Docker images + uses: docker/build-push-action@v5 + with: + cache-from: type=gha + cache-to: type=gha,mode=min + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: ${{ steps.meta.outputs.tags }} diff --git a/.stryker-tmp/sandbox3435591/.github/workflows/test.yaml b/.stryker-tmp/sandbox3435591/.github/workflows/test.yaml new file mode 100644 index 0000000000..c4e8f090bd --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/workflows/test.yaml @@ -0,0 +1,87 @@ +name: Lint and test + +on: + pull_request: + branches: + - f24 + workflow_call: # Usually called from deploy + +defaults: + run: + shell: bash + +permissions: + checks: write # for coverallsapp/github-action to create new checks + contents: read # for actions/checkout to fetch code + +jobs: + test: + runs-on: ubuntu-latest + env: + TEST_ENV: 'production' + + services: + redis: + image: 'redis:7.2.4' + # Set health checks to wait until redis has started + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps port 6379 on service container to the host + - 6379:6379 + + steps: + - uses: actions/checkout@v4 + + - run: cp install/package.json package.json + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: NPM Install + uses: bahmutov/npm-install@v1 + with: + useLockFile: false + + - name: Setup for Redis + env: + SETUP: >- + { + "url": "http://127.0.0.1:4567/forum", + "secret": "abcdef", + "admin:username": "admin", + "admin:email": "test@example.org", + "admin:password": "hAN3Eg8W", + "admin:password:confirm": "hAN3Eg8W", + + "database": "redis", + "redis:host": "127.0.0.1", + "redis:port": 6379, + "redis:password": "", + "redis:database": 0 + } + CI: >- + { + "host": "127.0.0.1", + "database": 1, + "port": 6379 + } + run: | + node app --setup="${SETUP}" --ci="${CI}" + + - name: Run ESLint + run: npm run lint + + - name: Node tests + run: npm test + + - name: Extract coverage info + run: npm run coverage + + - name: Test coverage + uses: coverallsapp/github-action@v2 diff --git a/.stryker-tmp/sandbox3435591/.github/workflows/volunteers.yaml b/.stryker-tmp/sandbox3435591/.github/workflows/volunteers.yaml new file mode 100644 index 0000000000..3cd849b824 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.github/workflows/volunteers.yaml @@ -0,0 +1,12 @@ +name: "Issue volunteer assignment" + +on: [issue_comment, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: bhermann/issue-volunteer@v0.1.12 + with: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + diff --git a/.stryker-tmp/sandbox3435591/.gitignore b/.stryker-tmp/sandbox3435591/.gitignore new file mode 100644 index 0000000000..8a0aca8cc7 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.gitignore @@ -0,0 +1,77 @@ +dist/ +yarn.lock +npm-debug.log +node_modules/ +sftp-config.json +config.json +jsconfig.json +public/src/nodebb.min.js +!src/views/config.json +public/css/*.css +*.sublime-project +*.sublime-workspace +.project +*.swp +Vagrantfile +.vagrant +provision.sh +*.komodoproject +.DS_Store +feeds/recent.rss +.eslintcache +.svn + +logs/ + +pidfile + +# templates +/public/templates + +/public/uploads +/test/uploads + +# compiled files +/public/stylesheet.css +/public/admin.css +/public/nodebb.min.js +/public/nodebb.min.js.map +/public/acp.min.js +/public/acp.min.js.map +/public/installer.css +/public/installer.min.js +/public/bootstrap.min.css +/public/logo.png + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio +*.iml + +## Directory-based project format: +.idea/ +.vscode/ + +## File-based project format: +*.ipr +*.iws + +## Transifex +tx.exe +.transifexrc + +##Coverage output +coverage +.nyc_output + +*.log +test/files/normalise.jpg.png +test/files/normalise-resized.jpg +package-lock.json +/package.json +*.mongodb +link-plugins.sh +test.sh + +.docker/** +!**/.gitkeep +# stryker temp files +.stryker-tmp diff --git a/.stryker-tmp/sandbox3435591/.husky/.gitignore b/.stryker-tmp/sandbox3435591/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.stryker-tmp/sandbox3435591/.husky/commit-msg b/.stryker-tmp/sandbox3435591/.husky/commit-msg new file mode 100755 index 0000000000..e8511eaeaf --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit $1 diff --git a/.stryker-tmp/sandbox3435591/.husky/pre-commit b/.stryker-tmp/sandbox3435591/.husky/pre-commit new file mode 100755 index 0000000000..d37daa075e --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/.stryker-tmp/sandbox3435591/.mocharc.yml b/.stryker-tmp/sandbox3435591/.mocharc.yml new file mode 100644 index 0000000000..16d8518d1b --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.mocharc.yml @@ -0,0 +1,4 @@ +reporter: dot +timeout: 25000 +exit: true +bail: true diff --git a/.stryker-tmp/sandbox3435591/.tx/config b/.stryker-tmp/sandbox3435591/.tx/config new file mode 100644 index 0000000000..35758d9b05 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/.tx/config @@ -0,0 +1,4007 @@ +[main] +host = https://www.transifex.com + +[o:nodebb:p:nodebb:r:admin-admin] +file_filter = public/language//admin/admin.json +source_file = public/language/en-GB/admin/admin.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/admin/admin.json +trans.en@pirate = public/language/en-x-pirate/admin/admin.json +trans.hy = public/language/hy/admin/admin.json +trans.pl = public/language/pl/admin/admin.json +trans.th = public/language/th/admin/admin.json +trans.de = public/language/de/admin/admin.json +trans.el = public/language/el/admin/admin.json +trans.ar = public/language/ar/admin/admin.json +trans.bg = public/language/bg/admin/admin.json +trans.bn = public/language/bn/admin/admin.json +trans.it = public/language/it/admin/admin.json +trans.lv = public/language/lv/admin/admin.json +trans.nl = public/language/nl/admin/admin.json +trans.ru = public/language/ru/admin/admin.json +trans.sr = public/language/sr/admin/admin.json +trans.sv = public/language/sv/admin/admin.json +trans.uk = public/language/uk/admin/admin.json +trans.zh_CN = public/language/zh-CN/admin/admin.json +trans.fa_IR = public/language/fa-IR/admin/admin.json +trans.id = public/language/id/admin/admin.json +trans.ms = public/language/ms/admin/admin.json +trans.nb = public/language/nb/admin/admin.json +trans.sk = public/language/sk/admin/admin.json +trans.cs = public/language/cs/admin/admin.json +trans.fi = public/language/fi/admin/admin.json +trans.fr = public/language/fr/admin/admin.json +trans.rw = public/language/rw/admin/admin.json +trans.sq_AL = public/language/sq-AL/admin/admin.json +trans.en_US = public/language/en-US/admin/admin.json +trans.es = public/language/es/admin/admin.json +trans.et = public/language/et/admin/admin.json +trans.gl = public/language/gl/admin/admin.json +trans.he = public/language/he/admin/admin.json +trans.ja = public/language/ja/admin/admin.json +trans.lt = public/language/lt/admin/admin.json +trans.pt_PT = public/language/pt-PT/admin/admin.json +trans.sc = public/language/sc/admin/admin.json +trans.sl = public/language/sl/admin/admin.json +trans.vi = public/language/vi/admin/admin.json +trans.da = public/language/da/admin/admin.json +trans.hr = public/language/hr/admin/admin.json +trans.hu = public/language/hu/admin/admin.json +trans.ko = public/language/ko/admin/admin.json +trans.ro = public/language/ro/admin/admin.json +trans.tr = public/language/tr/admin/admin.json +trans.zh_TW = public/language/zh-TW/admin/admin.json + +[o:nodebb:p:nodebb:r:admin-advanced-cache] +file_filter = public/language//admin/advanced/cache.json +source_file = public/language/en-GB/admin/advanced/cache.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fa_IR = public/language/fa-IR/admin/advanced/cache.json +trans.he = public/language/he/admin/advanced/cache.json +trans.ko = public/language/ko/admin/advanced/cache.json +trans.pt_PT = public/language/pt-PT/admin/advanced/cache.json +trans.rw = public/language/rw/admin/advanced/cache.json +trans.tr = public/language/tr/admin/advanced/cache.json +trans.en_US = public/language/en-US/admin/advanced/cache.json +trans.hu = public/language/hu/admin/advanced/cache.json +trans.id = public/language/id/admin/advanced/cache.json +trans.ms = public/language/ms/admin/advanced/cache.json +trans.sc = public/language/sc/admin/advanced/cache.json +trans.sv = public/language/sv/admin/advanced/cache.json +trans.es = public/language/es/admin/advanced/cache.json +trans.gl = public/language/gl/admin/advanced/cache.json +trans.lv = public/language/lv/admin/advanced/cache.json +trans.nl = public/language/nl/admin/advanced/cache.json +trans.ru = public/language/ru/admin/advanced/cache.json +trans.zh_TW = public/language/zh-TW/admin/advanced/cache.json +trans.bn = public/language/bn/admin/advanced/cache.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/cache.json +trans.fr = public/language/fr/admin/advanced/cache.json +trans.hr = public/language/hr/admin/advanced/cache.json +trans.pt_BR = public/language/pt-BR/admin/advanced/cache.json +trans.ar = public/language/ar/admin/advanced/cache.json +trans.bg = public/language/bg/admin/advanced/cache.json +trans.cs = public/language/cs/admin/advanced/cache.json +trans.lt = public/language/lt/admin/advanced/cache.json +trans.nb = public/language/nb/admin/advanced/cache.json +trans.uk = public/language/uk/admin/advanced/cache.json +trans.el = public/language/el/admin/advanced/cache.json +trans.pl = public/language/pl/admin/advanced/cache.json +trans.sr = public/language/sr/admin/advanced/cache.json +trans.da = public/language/da/admin/advanced/cache.json +trans.et = public/language/et/admin/advanced/cache.json +trans.fi = public/language/fi/admin/advanced/cache.json +trans.hy = public/language/hy/admin/advanced/cache.json +trans.ja = public/language/ja/admin/advanced/cache.json +trans.sl = public/language/sl/admin/advanced/cache.json +trans.sq_AL = public/language/sq-AL/admin/advanced/cache.json +trans.th = public/language/th/admin/advanced/cache.json +trans.de = public/language/de/admin/advanced/cache.json +trans.it = public/language/it/admin/advanced/cache.json +trans.ro = public/language/ro/admin/advanced/cache.json +trans.sk = public/language/sk/admin/advanced/cache.json +trans.vi = public/language/vi/admin/advanced/cache.json +trans.zh_CN = public/language/zh-CN/admin/advanced/cache.json + +[o:nodebb:p:nodebb:r:admin-advanced-database] +file_filter = public/language//admin/advanced/database.json +source_file = public/language/en-GB/admin/advanced/database.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fr = public/language/fr/admin/advanced/database.json +trans.he = public/language/he/admin/advanced/database.json +trans.ja = public/language/ja/admin/advanced/database.json +trans.lv = public/language/lv/admin/advanced/database.json +trans.pt_PT = public/language/pt-PT/admin/advanced/database.json +trans.en_US = public/language/en-US/admin/advanced/database.json +trans.el = public/language/el/admin/advanced/database.json +trans.tr = public/language/tr/admin/advanced/database.json +trans.zh_CN = public/language/zh-CN/admin/advanced/database.json +trans.ar = public/language/ar/admin/advanced/database.json +trans.hr = public/language/hr/admin/advanced/database.json +trans.lt = public/language/lt/admin/advanced/database.json +trans.ro = public/language/ro/admin/advanced/database.json +trans.zh_TW = public/language/zh-TW/admin/advanced/database.json +trans.gl = public/language/gl/admin/advanced/database.json +trans.it = public/language/it/admin/advanced/database.json +trans.nb = public/language/nb/admin/advanced/database.json +trans.bn = public/language/bn/admin/advanced/database.json +trans.da = public/language/da/admin/advanced/database.json +trans.de = public/language/de/admin/advanced/database.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/database.json +trans.hu = public/language/hu/admin/advanced/database.json +trans.hy = public/language/hy/admin/advanced/database.json +trans.id = public/language/id/admin/advanced/database.json +trans.nl = public/language/nl/admin/advanced/database.json +trans.cs = public/language/cs/admin/advanced/database.json +trans.sv = public/language/sv/admin/advanced/database.json +trans.sr = public/language/sr/admin/advanced/database.json +trans.pl = public/language/pl/admin/advanced/database.json +trans.ru = public/language/ru/admin/advanced/database.json +trans.sc = public/language/sc/admin/advanced/database.json +trans.sl = public/language/sl/admin/advanced/database.json +trans.sq_AL = public/language/sq-AL/admin/advanced/database.json +trans.th = public/language/th/admin/advanced/database.json +trans.et = public/language/et/admin/advanced/database.json +trans.fa_IR = public/language/fa-IR/admin/advanced/database.json +trans.ko = public/language/ko/admin/advanced/database.json +trans.sk = public/language/sk/admin/advanced/database.json +trans.vi = public/language/vi/admin/advanced/database.json +trans.es = public/language/es/admin/advanced/database.json +trans.fi = public/language/fi/admin/advanced/database.json +trans.ms = public/language/ms/admin/advanced/database.json +trans.pt_BR = public/language/pt-BR/admin/advanced/database.json +trans.rw = public/language/rw/admin/advanced/database.json +trans.uk = public/language/uk/admin/advanced/database.json +trans.bg = public/language/bg/admin/advanced/database.json + +[o:nodebb:p:nodebb:r:admin-advanced-errors] +file_filter = public/language//admin/advanced/errors.json +source_file = public/language/en-GB/admin/advanced/errors.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/advanced/errors.json +trans.en_US = public/language/en-US/admin/advanced/errors.json +trans.es = public/language/es/admin/advanced/errors.json +trans.pl = public/language/pl/admin/advanced/errors.json +trans.sk = public/language/sk/admin/advanced/errors.json +trans.uk = public/language/uk/admin/advanced/errors.json +trans.da = public/language/da/admin/advanced/errors.json +trans.gl = public/language/gl/admin/advanced/errors.json +trans.hu = public/language/hu/admin/advanced/errors.json +trans.pt_PT = public/language/pt-PT/admin/advanced/errors.json +trans.vi = public/language/vi/admin/advanced/errors.json +trans.de = public/language/de/admin/advanced/errors.json +trans.ko = public/language/ko/admin/advanced/errors.json +trans.nb = public/language/nb/admin/advanced/errors.json +trans.sc = public/language/sc/admin/advanced/errors.json +trans.sl = public/language/sl/admin/advanced/errors.json +trans.tr = public/language/tr/admin/advanced/errors.json +trans.zh_CN = public/language/zh-CN/admin/advanced/errors.json +trans.fr = public/language/fr/admin/advanced/errors.json +trans.hy = public/language/hy/admin/advanced/errors.json +trans.pt_BR = public/language/pt-BR/admin/advanced/errors.json +trans.ro = public/language/ro/admin/advanced/errors.json +trans.sr = public/language/sr/admin/advanced/errors.json +trans.sv = public/language/sv/admin/advanced/errors.json +trans.fa_IR = public/language/fa-IR/admin/advanced/errors.json +trans.it = public/language/it/admin/advanced/errors.json +trans.lt = public/language/lt/admin/advanced/errors.json +trans.ms = public/language/ms/admin/advanced/errors.json +trans.ru = public/language/ru/admin/advanced/errors.json +trans.sq_AL = public/language/sq-AL/admin/advanced/errors.json +trans.ar = public/language/ar/admin/advanced/errors.json +trans.fi = public/language/fi/admin/advanced/errors.json +trans.he = public/language/he/admin/advanced/errors.json +trans.ja = public/language/ja/admin/advanced/errors.json +trans.th = public/language/th/admin/advanced/errors.json +trans.zh_TW = public/language/zh-TW/admin/advanced/errors.json +trans.bn = public/language/bn/admin/advanced/errors.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/errors.json +trans.hr = public/language/hr/admin/advanced/errors.json +trans.rw = public/language/rw/admin/advanced/errors.json +trans.bg = public/language/bg/admin/advanced/errors.json +trans.el = public/language/el/admin/advanced/errors.json +trans.et = public/language/et/admin/advanced/errors.json +trans.id = public/language/id/admin/advanced/errors.json +trans.lv = public/language/lv/admin/advanced/errors.json +trans.nl = public/language/nl/admin/advanced/errors.json + +[o:nodebb:p:nodebb:r:admin-advanced-events] +file_filter = public/language//admin/advanced/events.json +source_file = public/language/en-GB/admin/advanced/events.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/advanced/events.json +trans.el = public/language/el/admin/advanced/events.json +trans.lt = public/language/lt/admin/advanced/events.json +trans.pt_BR = public/language/pt-BR/admin/advanced/events.json +trans.zh_TW = public/language/zh-TW/admin/advanced/events.json +trans.th = public/language/th/admin/advanced/events.json +trans.gl = public/language/gl/admin/advanced/events.json +trans.ko = public/language/ko/admin/advanced/events.json +trans.nl = public/language/nl/admin/advanced/events.json +trans.ro = public/language/ro/admin/advanced/events.json +trans.sl = public/language/sl/admin/advanced/events.json +trans.ar = public/language/ar/admin/advanced/events.json +trans.hr = public/language/hr/admin/advanced/events.json +trans.vi = public/language/vi/admin/advanced/events.json +trans.fa_IR = public/language/fa-IR/admin/advanced/events.json +trans.ms = public/language/ms/admin/advanced/events.json +trans.tr = public/language/tr/admin/advanced/events.json +trans.nb = public/language/nb/admin/advanced/events.json +trans.pt_PT = public/language/pt-PT/admin/advanced/events.json +trans.sk = public/language/sk/admin/advanced/events.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/events.json +trans.es = public/language/es/admin/advanced/events.json +trans.et = public/language/et/admin/advanced/events.json +trans.he = public/language/he/admin/advanced/events.json +trans.lv = public/language/lv/admin/advanced/events.json +trans.sv = public/language/sv/admin/advanced/events.json +trans.zh_CN = public/language/zh-CN/admin/advanced/events.json +trans.pl = public/language/pl/admin/advanced/events.json +trans.rw = public/language/rw/admin/advanced/events.json +trans.cs = public/language/cs/admin/advanced/events.json +trans.de = public/language/de/admin/advanced/events.json +trans.fr = public/language/fr/admin/advanced/events.json +trans.hy = public/language/hy/admin/advanced/events.json +trans.id = public/language/id/admin/advanced/events.json +trans.ru = public/language/ru/admin/advanced/events.json +trans.sq_AL = public/language/sq-AL/admin/advanced/events.json +trans.uk = public/language/uk/admin/advanced/events.json +trans.da = public/language/da/admin/advanced/events.json +trans.en_US = public/language/en-US/admin/advanced/events.json +trans.hu = public/language/hu/admin/advanced/events.json +trans.it = public/language/it/admin/advanced/events.json +trans.ja = public/language/ja/admin/advanced/events.json +trans.bn = public/language/bn/admin/advanced/events.json +trans.fi = public/language/fi/admin/advanced/events.json +trans.sc = public/language/sc/admin/advanced/events.json +trans.sr = public/language/sr/admin/advanced/events.json + +[o:nodebb:p:nodebb:r:admin-advanced-logs] +file_filter = public/language//admin/advanced/logs.json +source_file = public/language/en-GB/admin/advanced/logs.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/advanced/logs.json +trans.ru = public/language/ru/admin/advanced/logs.json +trans.vi = public/language/vi/admin/advanced/logs.json +trans.id = public/language/id/admin/advanced/logs.json +trans.fi = public/language/fi/admin/advanced/logs.json +trans.he = public/language/he/admin/advanced/logs.json +trans.hr = public/language/hr/admin/advanced/logs.json +trans.ja = public/language/ja/admin/advanced/logs.json +trans.lt = public/language/lt/admin/advanced/logs.json +trans.nb = public/language/nb/admin/advanced/logs.json +trans.rw = public/language/rw/admin/advanced/logs.json +trans.es = public/language/es/admin/advanced/logs.json +trans.sv = public/language/sv/admin/advanced/logs.json +trans.fa_IR = public/language/fa-IR/admin/advanced/logs.json +trans.fr = public/language/fr/admin/advanced/logs.json +trans.gl = public/language/gl/admin/advanced/logs.json +trans.zh_TW = public/language/zh-TW/admin/advanced/logs.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/logs.json +trans.sc = public/language/sc/admin/advanced/logs.json +trans.sq_AL = public/language/sq-AL/admin/advanced/logs.json +trans.uk = public/language/uk/admin/advanced/logs.json +trans.hu = public/language/hu/admin/advanced/logs.json +trans.bn = public/language/bn/admin/advanced/logs.json +trans.de = public/language/de/admin/advanced/logs.json +trans.it = public/language/it/admin/advanced/logs.json +trans.lv = public/language/lv/admin/advanced/logs.json +trans.ms = public/language/ms/admin/advanced/logs.json +trans.pl = public/language/pl/admin/advanced/logs.json +trans.zh_CN = public/language/zh-CN/admin/advanced/logs.json +trans.ar = public/language/ar/admin/advanced/logs.json +trans.et = public/language/et/admin/advanced/logs.json +trans.hy = public/language/hy/admin/advanced/logs.json +trans.ko = public/language/ko/admin/advanced/logs.json +trans.th = public/language/th/admin/advanced/logs.json +trans.tr = public/language/tr/admin/advanced/logs.json +trans.cs = public/language/cs/admin/advanced/logs.json +trans.ro = public/language/ro/admin/advanced/logs.json +trans.pt_BR = public/language/pt-BR/admin/advanced/logs.json +trans.da = public/language/da/admin/advanced/logs.json +trans.el = public/language/el/admin/advanced/logs.json +trans.en_US = public/language/en-US/admin/advanced/logs.json +trans.pt_PT = public/language/pt-PT/admin/advanced/logs.json +trans.sk = public/language/sk/admin/advanced/logs.json +trans.sl = public/language/sl/admin/advanced/logs.json +trans.sr = public/language/sr/admin/advanced/logs.json +trans.bg = public/language/bg/admin/advanced/logs.json + +[o:nodebb:p:nodebb:r:admin-appearance-customise] +file_filter = public/language//admin/appearance/customise.json +source_file = public/language/en-GB/admin/appearance/customise.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/appearance/customise.json +trans.da = public/language/da/admin/appearance/customise.json +trans.es = public/language/es/admin/appearance/customise.json +trans.hy = public/language/hy/admin/appearance/customise.json +trans.th = public/language/th/admin/appearance/customise.json +trans.ar = public/language/ar/admin/appearance/customise.json +trans.bg = public/language/bg/admin/appearance/customise.json +trans.he = public/language/he/admin/appearance/customise.json +trans.lt = public/language/lt/admin/appearance/customise.json +trans.nb = public/language/nb/admin/appearance/customise.json +trans.pl = public/language/pl/admin/appearance/customise.json +trans.sl = public/language/sl/admin/appearance/customise.json +trans.zh_TW = public/language/zh-TW/admin/appearance/customise.json +trans.bn = public/language/bn/admin/appearance/customise.json +trans.el = public/language/el/admin/appearance/customise.json +trans.hu = public/language/hu/admin/appearance/customise.json +trans.sk = public/language/sk/admin/appearance/customise.json +trans.tr = public/language/tr/admin/appearance/customise.json +trans.et = public/language/et/admin/appearance/customise.json +trans.id = public/language/id/admin/appearance/customise.json +trans.lv = public/language/lv/admin/appearance/customise.json +trans.pt_BR = public/language/pt-BR/admin/appearance/customise.json +trans.sr = public/language/sr/admin/appearance/customise.json +trans.zh_CN = public/language/zh-CN/admin/appearance/customise.json +trans.fr = public/language/fr/admin/appearance/customise.json +trans.hr = public/language/hr/admin/appearance/customise.json +trans.it = public/language/it/admin/appearance/customise.json +trans.nl = public/language/nl/admin/appearance/customise.json +trans.sv = public/language/sv/admin/appearance/customise.json +trans.fi = public/language/fi/admin/appearance/customise.json +trans.gl = public/language/gl/admin/appearance/customise.json +trans.ko = public/language/ko/admin/appearance/customise.json +trans.sc = public/language/sc/admin/appearance/customise.json +trans.de = public/language/de/admin/appearance/customise.json +trans.en_US = public/language/en-US/admin/appearance/customise.json +trans.ja = public/language/ja/admin/appearance/customise.json +trans.ru = public/language/ru/admin/appearance/customise.json +trans.rw = public/language/rw/admin/appearance/customise.json +trans.vi = public/language/vi/admin/appearance/customise.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/customise.json +trans.fa_IR = public/language/fa-IR/admin/appearance/customise.json +trans.ms = public/language/ms/admin/appearance/customise.json +trans.pt_PT = public/language/pt-PT/admin/appearance/customise.json +trans.ro = public/language/ro/admin/appearance/customise.json +trans.sq_AL = public/language/sq-AL/admin/appearance/customise.json +trans.uk = public/language/uk/admin/appearance/customise.json + +[o:nodebb:p:nodebb:r:admin-appearance-skins] +file_filter = public/language//admin/appearance/skins.json +source_file = public/language/en-GB/admin/appearance/skins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/appearance/skins.json +trans.he = public/language/he/admin/appearance/skins.json +trans.hr = public/language/hr/admin/appearance/skins.json +trans.sc = public/language/sc/admin/appearance/skins.json +trans.sk = public/language/sk/admin/appearance/skins.json +trans.uk = public/language/uk/admin/appearance/skins.json +trans.vi = public/language/vi/admin/appearance/skins.json +trans.bn = public/language/bn/admin/appearance/skins.json +trans.ms = public/language/ms/admin/appearance/skins.json +trans.pl = public/language/pl/admin/appearance/skins.json +trans.sv = public/language/sv/admin/appearance/skins.json +trans.fi = public/language/fi/admin/appearance/skins.json +trans.da = public/language/da/admin/appearance/skins.json +trans.hu = public/language/hu/admin/appearance/skins.json +trans.hy = public/language/hy/admin/appearance/skins.json +trans.id = public/language/id/admin/appearance/skins.json +trans.lv = public/language/lv/admin/appearance/skins.json +trans.sq_AL = public/language/sq-AL/admin/appearance/skins.json +trans.cs = public/language/cs/admin/appearance/skins.json +trans.de = public/language/de/admin/appearance/skins.json +trans.ko = public/language/ko/admin/appearance/skins.json +trans.sl = public/language/sl/admin/appearance/skins.json +trans.zh_TW = public/language/zh-TW/admin/appearance/skins.json +trans.bg = public/language/bg/admin/appearance/skins.json +trans.en_US = public/language/en-US/admin/appearance/skins.json +trans.es = public/language/es/admin/appearance/skins.json +trans.sr = public/language/sr/admin/appearance/skins.json +trans.zh_CN = public/language/zh-CN/admin/appearance/skins.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/skins.json +trans.it = public/language/it/admin/appearance/skins.json +trans.ja = public/language/ja/admin/appearance/skins.json +trans.nb = public/language/nb/admin/appearance/skins.json +trans.fr = public/language/fr/admin/appearance/skins.json +trans.fa_IR = public/language/fa-IR/admin/appearance/skins.json +trans.gl = public/language/gl/admin/appearance/skins.json +trans.ro = public/language/ro/admin/appearance/skins.json +trans.ru = public/language/ru/admin/appearance/skins.json +trans.rw = public/language/rw/admin/appearance/skins.json +trans.el = public/language/el/admin/appearance/skins.json +trans.lt = public/language/lt/admin/appearance/skins.json +trans.nl = public/language/nl/admin/appearance/skins.json +trans.pt_BR = public/language/pt-BR/admin/appearance/skins.json +trans.pt_PT = public/language/pt-PT/admin/appearance/skins.json +trans.th = public/language/th/admin/appearance/skins.json +trans.tr = public/language/tr/admin/appearance/skins.json +trans.ar = public/language/ar/admin/appearance/skins.json + +[o:nodebb:p:nodebb:r:admin-appearance-themes] +file_filter = public/language//admin/appearance/themes.json +source_file = public/language/en-GB/admin/appearance/themes.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/appearance/themes.json +trans.ar = public/language/ar/admin/appearance/themes.json +trans.bg = public/language/bg/admin/appearance/themes.json +trans.bn = public/language/bn/admin/appearance/themes.json +trans.en_US = public/language/en-US/admin/appearance/themes.json +trans.fa_IR = public/language/fa-IR/admin/appearance/themes.json +trans.pt_BR = public/language/pt-BR/admin/appearance/themes.json +trans.ru = public/language/ru/admin/appearance/themes.json +trans.sv = public/language/sv/admin/appearance/themes.json +trans.cs = public/language/cs/admin/appearance/themes.json +trans.da = public/language/da/admin/appearance/themes.json +trans.sk = public/language/sk/admin/appearance/themes.json +trans.zh_CN = public/language/zh-CN/admin/appearance/themes.json +trans.et = public/language/et/admin/appearance/themes.json +trans.ja = public/language/ja/admin/appearance/themes.json +trans.sl = public/language/sl/admin/appearance/themes.json +trans.sr = public/language/sr/admin/appearance/themes.json +trans.hr = public/language/hr/admin/appearance/themes.json +trans.hu = public/language/hu/admin/appearance/themes.json +trans.ms = public/language/ms/admin/appearance/themes.json +trans.sc = public/language/sc/admin/appearance/themes.json +trans.th = public/language/th/admin/appearance/themes.json +trans.lt = public/language/lt/admin/appearance/themes.json +trans.el = public/language/el/admin/appearance/themes.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/themes.json +trans.fi = public/language/fi/admin/appearance/themes.json +trans.he = public/language/he/admin/appearance/themes.json +trans.hy = public/language/hy/admin/appearance/themes.json +trans.id = public/language/id/admin/appearance/themes.json +trans.ko = public/language/ko/admin/appearance/themes.json +trans.nb = public/language/nb/admin/appearance/themes.json +trans.pl = public/language/pl/admin/appearance/themes.json +trans.pt_PT = public/language/pt-PT/admin/appearance/themes.json +trans.tr = public/language/tr/admin/appearance/themes.json +trans.fr = public/language/fr/admin/appearance/themes.json +trans.nl = public/language/nl/admin/appearance/themes.json +trans.ro = public/language/ro/admin/appearance/themes.json +trans.uk = public/language/uk/admin/appearance/themes.json +trans.de = public/language/de/admin/appearance/themes.json +trans.es = public/language/es/admin/appearance/themes.json +trans.gl = public/language/gl/admin/appearance/themes.json +trans.it = public/language/it/admin/appearance/themes.json +trans.lv = public/language/lv/admin/appearance/themes.json +trans.vi = public/language/vi/admin/appearance/themes.json +trans.rw = public/language/rw/admin/appearance/themes.json +trans.zh_TW = public/language/zh-TW/admin/appearance/themes.json + +[o:nodebb:p:nodebb:r:admin-dashboard] +file_filter = public/language//admin/dashboard.json +source_file = public/language/en-GB/admin/dashboard.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/dashboard.json +trans.en_US = public/language/en-US/admin/dashboard.json +trans.fa_IR = public/language/fa-IR/admin/dashboard.json +trans.fr = public/language/fr/admin/dashboard.json +trans.hu = public/language/hu/admin/dashboard.json +trans.nl = public/language/nl/admin/dashboard.json +trans.pl = public/language/pl/admin/dashboard.json +trans.bg = public/language/bg/admin/dashboard.json +trans.el = public/language/el/admin/dashboard.json +trans.gl = public/language/gl/admin/dashboard.json +trans.hy = public/language/hy/admin/dashboard.json +trans.id = public/language/id/admin/dashboard.json +trans.ja = public/language/ja/admin/dashboard.json +trans.pt_BR = public/language/pt-BR/admin/dashboard.json +trans.zh_CN = public/language/zh-CN/admin/dashboard.json +trans.zh_TW = public/language/zh-TW/admin/dashboard.json +trans.uk = public/language/uk/admin/dashboard.json +trans.ar = public/language/ar/admin/dashboard.json +trans.de = public/language/de/admin/dashboard.json +trans.en@pirate = public/language/en-x-pirate/admin/dashboard.json +trans.es = public/language/es/admin/dashboard.json +trans.ko = public/language/ko/admin/dashboard.json +trans.sv = public/language/sv/admin/dashboard.json +trans.lv = public/language/lv/admin/dashboard.json +trans.ms = public/language/ms/admin/dashboard.json +trans.ru = public/language/ru/admin/dashboard.json +trans.sl = public/language/sl/admin/dashboard.json +trans.sq_AL = public/language/sq-AL/admin/dashboard.json +trans.da = public/language/da/admin/dashboard.json +trans.lt = public/language/lt/admin/dashboard.json +trans.he = public/language/he/admin/dashboard.json +trans.sr = public/language/sr/admin/dashboard.json +trans.vi = public/language/vi/admin/dashboard.json +trans.pt_PT = public/language/pt-PT/admin/dashboard.json +trans.ro = public/language/ro/admin/dashboard.json +trans.rw = public/language/rw/admin/dashboard.json +trans.sc = public/language/sc/admin/dashboard.json +trans.th = public/language/th/admin/dashboard.json +trans.sk = public/language/sk/admin/dashboard.json +trans.tr = public/language/tr/admin/dashboard.json +trans.cs = public/language/cs/admin/dashboard.json +trans.et = public/language/et/admin/dashboard.json +trans.fi = public/language/fi/admin/dashboard.json +trans.hr = public/language/hr/admin/dashboard.json +trans.it = public/language/it/admin/dashboard.json +trans.nb = public/language/nb/admin/dashboard.json + +[o:nodebb:p:nodebb:r:admin-development-info] +file_filter = public/language//admin/development/info.json +source_file = public/language/en-GB/admin/development/info.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/info.json +trans.et = public/language/et/admin/development/info.json +trans.hr = public/language/hr/admin/development/info.json +trans.ms = public/language/ms/admin/development/info.json +trans.pl = public/language/pl/admin/development/info.json +trans.pt_BR = public/language/pt-BR/admin/development/info.json +trans.ro = public/language/ro/admin/development/info.json +trans.rw = public/language/rw/admin/development/info.json +trans.sl = public/language/sl/admin/development/info.json +trans.sr = public/language/sr/admin/development/info.json +trans.uk = public/language/uk/admin/development/info.json +trans.da = public/language/da/admin/development/info.json +trans.en@pirate = public/language/en-x-pirate/admin/development/info.json +trans.es = public/language/es/admin/development/info.json +trans.fi = public/language/fi/admin/development/info.json +trans.it = public/language/it/admin/development/info.json +trans.lt = public/language/lt/admin/development/info.json +trans.th = public/language/th/admin/development/info.json +trans.ar = public/language/ar/admin/development/info.json +trans.bn = public/language/bn/admin/development/info.json +trans.fa_IR = public/language/fa-IR/admin/development/info.json +trans.hu = public/language/hu/admin/development/info.json +trans.id = public/language/id/admin/development/info.json +trans.lv = public/language/lv/admin/development/info.json +trans.gl = public/language/gl/admin/development/info.json +trans.hy = public/language/hy/admin/development/info.json +trans.zh_CN = public/language/zh-CN/admin/development/info.json +trans.cs = public/language/cs/admin/development/info.json +trans.ja = public/language/ja/admin/development/info.json +trans.nb = public/language/nb/admin/development/info.json +trans.sq_AL = public/language/sq-AL/admin/development/info.json +trans.sv = public/language/sv/admin/development/info.json +trans.bg = public/language/bg/admin/development/info.json +trans.he = public/language/he/admin/development/info.json +trans.sk = public/language/sk/admin/development/info.json +trans.el = public/language/el/admin/development/info.json +trans.fr = public/language/fr/admin/development/info.json +trans.ru = public/language/ru/admin/development/info.json +trans.sc = public/language/sc/admin/development/info.json +trans.tr = public/language/tr/admin/development/info.json +trans.en_US = public/language/en-US/admin/development/info.json +trans.ko = public/language/ko/admin/development/info.json +trans.nl = public/language/nl/admin/development/info.json +trans.pt_PT = public/language/pt-PT/admin/development/info.json +trans.vi = public/language/vi/admin/development/info.json +trans.zh_TW = public/language/zh-TW/admin/development/info.json + +[o:nodebb:p:nodebb:r:admin-development-logger] +file_filter = public/language//admin/development/logger.json +source_file = public/language/en-GB/admin/development/logger.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/logger.json +trans.fr = public/language/fr/admin/development/logger.json +trans.gl = public/language/gl/admin/development/logger.json +trans.hr = public/language/hr/admin/development/logger.json +trans.sl = public/language/sl/admin/development/logger.json +trans.vi = public/language/vi/admin/development/logger.json +trans.zh_TW = public/language/zh-TW/admin/development/logger.json +trans.ar = public/language/ar/admin/development/logger.json +trans.he = public/language/he/admin/development/logger.json +trans.id = public/language/id/admin/development/logger.json +trans.ko = public/language/ko/admin/development/logger.json +trans.lt = public/language/lt/admin/development/logger.json +trans.nb = public/language/nb/admin/development/logger.json +trans.pt_BR = public/language/pt-BR/admin/development/logger.json +trans.ro = public/language/ro/admin/development/logger.json +trans.fi = public/language/fi/admin/development/logger.json +trans.sc = public/language/sc/admin/development/logger.json +trans.ru = public/language/ru/admin/development/logger.json +trans.sq_AL = public/language/sq-AL/admin/development/logger.json +trans.th = public/language/th/admin/development/logger.json +trans.hy = public/language/hy/admin/development/logger.json +trans.fa_IR = public/language/fa-IR/admin/development/logger.json +trans.it = public/language/it/admin/development/logger.json +trans.lv = public/language/lv/admin/development/logger.json +trans.nl = public/language/nl/admin/development/logger.json +trans.pt_PT = public/language/pt-PT/admin/development/logger.json +trans.sk = public/language/sk/admin/development/logger.json +trans.sv = public/language/sv/admin/development/logger.json +trans.el = public/language/el/admin/development/logger.json +trans.uk = public/language/uk/admin/development/logger.json +trans.ms = public/language/ms/admin/development/logger.json +trans.zh_CN = public/language/zh-CN/admin/development/logger.json +trans.bn = public/language/bn/admin/development/logger.json +trans.et = public/language/et/admin/development/logger.json +trans.ja = public/language/ja/admin/development/logger.json +trans.da = public/language/da/admin/development/logger.json +trans.en@pirate = public/language/en-x-pirate/admin/development/logger.json +trans.es = public/language/es/admin/development/logger.json +trans.cs = public/language/cs/admin/development/logger.json +trans.en_US = public/language/en-US/admin/development/logger.json +trans.hu = public/language/hu/admin/development/logger.json +trans.pl = public/language/pl/admin/development/logger.json +trans.rw = public/language/rw/admin/development/logger.json +trans.sr = public/language/sr/admin/development/logger.json +trans.tr = public/language/tr/admin/development/logger.json +trans.bg = public/language/bg/admin/development/logger.json + +[o:nodebb:p:nodebb:r:admin-extend-plugins] +file_filter = public/language//admin/extend/plugins.json +source_file = public/language/en-GB/admin/extend/plugins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/extend/plugins.json +trans.et = public/language/et/admin/extend/plugins.json +trans.hr = public/language/hr/admin/extend/plugins.json +trans.hy = public/language/hy/admin/extend/plugins.json +trans.tr = public/language/tr/admin/extend/plugins.json +trans.it = public/language/it/admin/extend/plugins.json +trans.lv = public/language/lv/admin/extend/plugins.json +trans.sl = public/language/sl/admin/extend/plugins.json +trans.th = public/language/th/admin/extend/plugins.json +trans.en_US = public/language/en-US/admin/extend/plugins.json +trans.he = public/language/he/admin/extend/plugins.json +trans.nb = public/language/nb/admin/extend/plugins.json +trans.sk = public/language/sk/admin/extend/plugins.json +trans.uk = public/language/uk/admin/extend/plugins.json +trans.es = public/language/es/admin/extend/plugins.json +trans.lt = public/language/lt/admin/extend/plugins.json +trans.sv = public/language/sv/admin/extend/plugins.json +trans.nl = public/language/nl/admin/extend/plugins.json +trans.pt_PT = public/language/pt-PT/admin/extend/plugins.json +trans.ar = public/language/ar/admin/extend/plugins.json +trans.cs = public/language/cs/admin/extend/plugins.json +trans.fi = public/language/fi/admin/extend/plugins.json +trans.id = public/language/id/admin/extend/plugins.json +trans.ja = public/language/ja/admin/extend/plugins.json +trans.ko = public/language/ko/admin/extend/plugins.json +trans.ru = public/language/ru/admin/extend/plugins.json +trans.sr = public/language/sr/admin/extend/plugins.json +trans.bn = public/language/bn/admin/extend/plugins.json +trans.de = public/language/de/admin/extend/plugins.json +trans.el = public/language/el/admin/extend/plugins.json +trans.ms = public/language/ms/admin/extend/plugins.json +trans.pt_BR = public/language/pt-BR/admin/extend/plugins.json +trans.sq_AL = public/language/sq-AL/admin/extend/plugins.json +trans.zh_TW = public/language/zh-TW/admin/extend/plugins.json +trans.da = public/language/da/admin/extend/plugins.json +trans.fa_IR = public/language/fa-IR/admin/extend/plugins.json +trans.gl = public/language/gl/admin/extend/plugins.json +trans.hu = public/language/hu/admin/extend/plugins.json +trans.sc = public/language/sc/admin/extend/plugins.json +trans.vi = public/language/vi/admin/extend/plugins.json +trans.bg = public/language/bg/admin/extend/plugins.json +trans.fr = public/language/fr/admin/extend/plugins.json +trans.pl = public/language/pl/admin/extend/plugins.json +trans.ro = public/language/ro/admin/extend/plugins.json +trans.rw = public/language/rw/admin/extend/plugins.json +trans.zh_CN = public/language/zh-CN/admin/extend/plugins.json + +[o:nodebb:p:nodebb:r:admin-extend-rewards] +file_filter = public/language//admin/extend/rewards.json +source_file = public/language/en-GB/admin/extend/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/extend/rewards.json +trans.ar = public/language/ar/admin/extend/rewards.json +trans.fi = public/language/fi/admin/extend/rewards.json +trans.fr = public/language/fr/admin/extend/rewards.json +trans.sr = public/language/sr/admin/extend/rewards.json +trans.id = public/language/id/admin/extend/rewards.json +trans.pt_BR = public/language/pt-BR/admin/extend/rewards.json +trans.sq_AL = public/language/sq-AL/admin/extend/rewards.json +trans.pt_PT = public/language/pt-PT/admin/extend/rewards.json +trans.ro = public/language/ro/admin/extend/rewards.json +trans.ru = public/language/ru/admin/extend/rewards.json +trans.sk = public/language/sk/admin/extend/rewards.json +trans.es = public/language/es/admin/extend/rewards.json +trans.lt = public/language/lt/admin/extend/rewards.json +trans.nl = public/language/nl/admin/extend/rewards.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/rewards.json +trans.hr = public/language/hr/admin/extend/rewards.json +trans.ja = public/language/ja/admin/extend/rewards.json +trans.ko = public/language/ko/admin/extend/rewards.json +trans.nb = public/language/nb/admin/extend/rewards.json +trans.bg = public/language/bg/admin/extend/rewards.json +trans.bn = public/language/bn/admin/extend/rewards.json +trans.da = public/language/da/admin/extend/rewards.json +trans.hy = public/language/hy/admin/extend/rewards.json +trans.pl = public/language/pl/admin/extend/rewards.json +trans.sc = public/language/sc/admin/extend/rewards.json +trans.it = public/language/it/admin/extend/rewards.json +trans.tr = public/language/tr/admin/extend/rewards.json +trans.uk = public/language/uk/admin/extend/rewards.json +trans.vi = public/language/vi/admin/extend/rewards.json +trans.zh_CN = public/language/zh-CN/admin/extend/rewards.json +trans.en_US = public/language/en-US/admin/extend/rewards.json +trans.fa_IR = public/language/fa-IR/admin/extend/rewards.json +trans.he = public/language/he/admin/extend/rewards.json +trans.zh_TW = public/language/zh-TW/admin/extend/rewards.json +trans.lv = public/language/lv/admin/extend/rewards.json +trans.sl = public/language/sl/admin/extend/rewards.json +trans.cs = public/language/cs/admin/extend/rewards.json +trans.el = public/language/el/admin/extend/rewards.json +trans.et = public/language/et/admin/extend/rewards.json +trans.rw = public/language/rw/admin/extend/rewards.json +trans.sv = public/language/sv/admin/extend/rewards.json +trans.th = public/language/th/admin/extend/rewards.json +trans.de = public/language/de/admin/extend/rewards.json +trans.gl = public/language/gl/admin/extend/rewards.json +trans.hu = public/language/hu/admin/extend/rewards.json + +[o:nodebb:p:nodebb:r:admin-extend-widgets] +file_filter = public/language//admin/extend/widgets.json +source_file = public/language/en-GB/admin/extend/widgets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/extend/widgets.json +trans.el = public/language/el/admin/extend/widgets.json +trans.id = public/language/id/admin/extend/widgets.json +trans.nb = public/language/nb/admin/extend/widgets.json +trans.ro = public/language/ro/admin/extend/widgets.json +trans.rw = public/language/rw/admin/extend/widgets.json +trans.ar = public/language/ar/admin/extend/widgets.json +trans.hy = public/language/hy/admin/extend/widgets.json +trans.lv = public/language/lv/admin/extend/widgets.json +trans.ru = public/language/ru/admin/extend/widgets.json +trans.sc = public/language/sc/admin/extend/widgets.json +trans.sr = public/language/sr/admin/extend/widgets.json +trans.tr = public/language/tr/admin/extend/widgets.json +trans.vi = public/language/vi/admin/extend/widgets.json +trans.fr = public/language/fr/admin/extend/widgets.json +trans.fa_IR = public/language/fa-IR/admin/extend/widgets.json +trans.ko = public/language/ko/admin/extend/widgets.json +trans.lt = public/language/lt/admin/extend/widgets.json +trans.sq_AL = public/language/sq-AL/admin/extend/widgets.json +trans.uk = public/language/uk/admin/extend/widgets.json +trans.bg = public/language/bg/admin/extend/widgets.json +trans.de = public/language/de/admin/extend/widgets.json +trans.ms = public/language/ms/admin/extend/widgets.json +trans.nl = public/language/nl/admin/extend/widgets.json +trans.pt_BR = public/language/pt-BR/admin/extend/widgets.json +trans.sk = public/language/sk/admin/extend/widgets.json +trans.zh_CN = public/language/zh-CN/admin/extend/widgets.json +trans.da = public/language/da/admin/extend/widgets.json +trans.hu = public/language/hu/admin/extend/widgets.json +trans.ja = public/language/ja/admin/extend/widgets.json +trans.th = public/language/th/admin/extend/widgets.json +trans.et = public/language/et/admin/extend/widgets.json +trans.gl = public/language/gl/admin/extend/widgets.json +trans.he = public/language/he/admin/extend/widgets.json +trans.it = public/language/it/admin/extend/widgets.json +trans.pl = public/language/pl/admin/extend/widgets.json +trans.zh_TW = public/language/zh-TW/admin/extend/widgets.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/widgets.json +trans.fi = public/language/fi/admin/extend/widgets.json +trans.hr = public/language/hr/admin/extend/widgets.json +trans.sl = public/language/sl/admin/extend/widgets.json +trans.sv = public/language/sv/admin/extend/widgets.json +trans.cs = public/language/cs/admin/extend/widgets.json +trans.es = public/language/es/admin/extend/widgets.json +trans.pt_PT = public/language/pt-PT/admin/extend/widgets.json +trans.en_US = public/language/en-US/admin/extend/widgets.json + +[o:nodebb:p:nodebb:r:admin-manage-admins-mods] +file_filter = public/language//admin/manage/admins-mods.json +source_file = public/language/en-GB/admin/manage/admins-mods.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hu = public/language/hu/admin/manage/admins-mods.json +trans.nb = public/language/nb/admin/manage/admins-mods.json +trans.ru = public/language/ru/admin/manage/admins-mods.json +trans.fr = public/language/fr/admin/manage/admins-mods.json +trans.he = public/language/he/admin/manage/admins-mods.json +trans.lv = public/language/lv/admin/manage/admins-mods.json +trans.sc = public/language/sc/admin/manage/admins-mods.json +trans.vi = public/language/vi/admin/manage/admins-mods.json +trans.es = public/language/es/admin/manage/admins-mods.json +trans.lt = public/language/lt/admin/manage/admins-mods.json +trans.de = public/language/de/admin/manage/admins-mods.json +trans.ja = public/language/ja/admin/manage/admins-mods.json +trans.pl = public/language/pl/admin/manage/admins-mods.json +trans.sq_AL = public/language/sq-AL/admin/manage/admins-mods.json +trans.sr = public/language/sr/admin/manage/admins-mods.json +trans.zh_TW = public/language/zh-TW/admin/manage/admins-mods.json +trans.id = public/language/id/admin/manage/admins-mods.json +trans.ko = public/language/ko/admin/manage/admins-mods.json +trans.gl = public/language/gl/admin/manage/admins-mods.json +trans.hr = public/language/hr/admin/manage/admins-mods.json +trans.hy = public/language/hy/admin/manage/admins-mods.json +trans.rw = public/language/rw/admin/manage/admins-mods.json +trans.bn = public/language/bn/admin/manage/admins-mods.json +trans.fi = public/language/fi/admin/manage/admins-mods.json +trans.ms = public/language/ms/admin/manage/admins-mods.json +trans.pt_BR = public/language/pt-BR/admin/manage/admins-mods.json +trans.pt_PT = public/language/pt-PT/admin/manage/admins-mods.json +trans.sv = public/language/sv/admin/manage/admins-mods.json +trans.th = public/language/th/admin/manage/admins-mods.json +trans.uk = public/language/uk/admin/manage/admins-mods.json +trans.ar = public/language/ar/admin/manage/admins-mods.json +trans.bg = public/language/bg/admin/manage/admins-mods.json +trans.el = public/language/el/admin/manage/admins-mods.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/admins-mods.json +trans.en_US = public/language/en-US/admin/manage/admins-mods.json +trans.it = public/language/it/admin/manage/admins-mods.json +trans.nl = public/language/nl/admin/manage/admins-mods.json +trans.ro = public/language/ro/admin/manage/admins-mods.json +trans.cs = public/language/cs/admin/manage/admins-mods.json +trans.da = public/language/da/admin/manage/admins-mods.json +trans.zh_CN = public/language/zh-CN/admin/manage/admins-mods.json +trans.sk = public/language/sk/admin/manage/admins-mods.json +trans.sl = public/language/sl/admin/manage/admins-mods.json +trans.tr = public/language/tr/admin/manage/admins-mods.json +trans.et = public/language/et/admin/manage/admins-mods.json +trans.fa_IR = public/language/fa-IR/admin/manage/admins-mods.json + +[o:nodebb:p:nodebb:r:admin-manage-categories] +file_filter = public/language//admin/manage/categories.json +source_file = public/language/en-GB/admin/manage/categories.json +source_lang = en_GB +type = KEYVALUEJSON +trans.es = public/language/es/admin/manage/categories.json +trans.gl = public/language/gl/admin/manage/categories.json +trans.pt_PT = public/language/pt-PT/admin/manage/categories.json +trans.sc = public/language/sc/admin/manage/categories.json +trans.zh_TW = public/language/zh-TW/admin/manage/categories.json +trans.bg = public/language/bg/admin/manage/categories.json +trans.hu = public/language/hu/admin/manage/categories.json +trans.hy = public/language/hy/admin/manage/categories.json +trans.sk = public/language/sk/admin/manage/categories.json +trans.uk = public/language/uk/admin/manage/categories.json +trans.vi = public/language/vi/admin/manage/categories.json +trans.bn = public/language/bn/admin/manage/categories.json +trans.en_US = public/language/en-US/admin/manage/categories.json +trans.fr = public/language/fr/admin/manage/categories.json +trans.it = public/language/it/admin/manage/categories.json +trans.nb = public/language/nb/admin/manage/categories.json +trans.ru = public/language/ru/admin/manage/categories.json +trans.sr = public/language/sr/admin/manage/categories.json +trans.fa_IR = public/language/fa-IR/admin/manage/categories.json +trans.id = public/language/id/admin/manage/categories.json +trans.ms = public/language/ms/admin/manage/categories.json +trans.pl = public/language/pl/admin/manage/categories.json +trans.tr = public/language/tr/admin/manage/categories.json +trans.zh_CN = public/language/zh-CN/admin/manage/categories.json +trans.lt = public/language/lt/admin/manage/categories.json +trans.sl = public/language/sl/admin/manage/categories.json +trans.sv = public/language/sv/admin/manage/categories.json +trans.rw = public/language/rw/admin/manage/categories.json +trans.el = public/language/el/admin/manage/categories.json +trans.et = public/language/et/admin/manage/categories.json +trans.fi = public/language/fi/admin/manage/categories.json +trans.he = public/language/he/admin/manage/categories.json +trans.ja = public/language/ja/admin/manage/categories.json +trans.ko = public/language/ko/admin/manage/categories.json +trans.ro = public/language/ro/admin/manage/categories.json +trans.cs = public/language/cs/admin/manage/categories.json +trans.sq_AL = public/language/sq-AL/admin/manage/categories.json +trans.th = public/language/th/admin/manage/categories.json +trans.pt_BR = public/language/pt-BR/admin/manage/categories.json +trans.ar = public/language/ar/admin/manage/categories.json +trans.da = public/language/da/admin/manage/categories.json +trans.de = public/language/de/admin/manage/categories.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/categories.json +trans.hr = public/language/hr/admin/manage/categories.json +trans.lv = public/language/lv/admin/manage/categories.json +trans.nl = public/language/nl/admin/manage/categories.json + +[o:nodebb:p:nodebb:r:admin-manage-digest] +file_filter = public/language//admin/manage/digest.json +source_file = public/language/en-GB/admin/manage/digest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/manage/digest.json +trans.fi = public/language/fi/admin/manage/digest.json +trans.gl = public/language/gl/admin/manage/digest.json +trans.fr = public/language/fr/admin/manage/digest.json +trans.hu = public/language/hu/admin/manage/digest.json +trans.id = public/language/id/admin/manage/digest.json +trans.lv = public/language/lv/admin/manage/digest.json +trans.pl = public/language/pl/admin/manage/digest.json +trans.sl = public/language/sl/admin/manage/digest.json +trans.da = public/language/da/admin/manage/digest.json +trans.fa_IR = public/language/fa-IR/admin/manage/digest.json +trans.sq_AL = public/language/sq-AL/admin/manage/digest.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/digest.json +trans.en_US = public/language/en-US/admin/manage/digest.json +trans.he = public/language/he/admin/manage/digest.json +trans.hr = public/language/hr/admin/manage/digest.json +trans.hy = public/language/hy/admin/manage/digest.json +trans.it = public/language/it/admin/manage/digest.json +trans.bg = public/language/bg/admin/manage/digest.json +trans.bn = public/language/bn/admin/manage/digest.json +trans.ro = public/language/ro/admin/manage/digest.json +trans.th = public/language/th/admin/manage/digest.json +trans.uk = public/language/uk/admin/manage/digest.json +trans.vi = public/language/vi/admin/manage/digest.json +trans.ms = public/language/ms/admin/manage/digest.json +trans.pt_BR = public/language/pt-BR/admin/manage/digest.json +trans.rw = public/language/rw/admin/manage/digest.json +trans.de = public/language/de/admin/manage/digest.json +trans.el = public/language/el/admin/manage/digest.json +trans.nl = public/language/nl/admin/manage/digest.json +trans.ru = public/language/ru/admin/manage/digest.json +trans.sv = public/language/sv/admin/manage/digest.json +trans.zh_TW = public/language/zh-TW/admin/manage/digest.json +trans.es = public/language/es/admin/manage/digest.json +trans.lt = public/language/lt/admin/manage/digest.json +trans.ko = public/language/ko/admin/manage/digest.json +trans.zh_CN = public/language/zh-CN/admin/manage/digest.json +trans.ar = public/language/ar/admin/manage/digest.json +trans.ja = public/language/ja/admin/manage/digest.json +trans.nb = public/language/nb/admin/manage/digest.json +trans.sk = public/language/sk/admin/manage/digest.json +trans.pt_PT = public/language/pt-PT/admin/manage/digest.json +trans.sc = public/language/sc/admin/manage/digest.json +trans.tr = public/language/tr/admin/manage/digest.json +trans.cs = public/language/cs/admin/manage/digest.json +trans.et = public/language/et/admin/manage/digest.json + +[o:nodebb:p:nodebb:r:admin-manage-groups] +file_filter = public/language//admin/manage/groups.json +source_file = public/language/en-GB/admin/manage/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_PT = public/language/pt-PT/admin/manage/groups.json +trans.tr = public/language/tr/admin/manage/groups.json +trans.uk = public/language/uk/admin/manage/groups.json +trans.zh_TW = public/language/zh-TW/admin/manage/groups.json +trans.nb = public/language/nb/admin/manage/groups.json +trans.id = public/language/id/admin/manage/groups.json +trans.lt = public/language/lt/admin/manage/groups.json +trans.pl = public/language/pl/admin/manage/groups.json +trans.sc = public/language/sc/admin/manage/groups.json +trans.hy = public/language/hy/admin/manage/groups.json +trans.he = public/language/he/admin/manage/groups.json +trans.ko = public/language/ko/admin/manage/groups.json +trans.sv = public/language/sv/admin/manage/groups.json +trans.bn = public/language/bn/admin/manage/groups.json +trans.es = public/language/es/admin/manage/groups.json +trans.ja = public/language/ja/admin/manage/groups.json +trans.th = public/language/th/admin/manage/groups.json +trans.cs = public/language/cs/admin/manage/groups.json +trans.fi = public/language/fi/admin/manage/groups.json +trans.hr = public/language/hr/admin/manage/groups.json +trans.it = public/language/it/admin/manage/groups.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/groups.json +trans.bg = public/language/bg/admin/manage/groups.json +trans.hu = public/language/hu/admin/manage/groups.json +trans.pt_BR = public/language/pt-BR/admin/manage/groups.json +trans.ro = public/language/ro/admin/manage/groups.json +trans.ru = public/language/ru/admin/manage/groups.json +trans.sq_AL = public/language/sq-AL/admin/manage/groups.json +trans.vi = public/language/vi/admin/manage/groups.json +trans.ar = public/language/ar/admin/manage/groups.json +trans.et = public/language/et/admin/manage/groups.json +trans.fa_IR = public/language/fa-IR/admin/manage/groups.json +trans.fr = public/language/fr/admin/manage/groups.json +trans.nl = public/language/nl/admin/manage/groups.json +trans.rw = public/language/rw/admin/manage/groups.json +trans.sl = public/language/sl/admin/manage/groups.json +trans.zh_CN = public/language/zh-CN/admin/manage/groups.json +trans.da = public/language/da/admin/manage/groups.json +trans.el = public/language/el/admin/manage/groups.json +trans.en_US = public/language/en-US/admin/manage/groups.json +trans.gl = public/language/gl/admin/manage/groups.json +trans.lv = public/language/lv/admin/manage/groups.json +trans.ms = public/language/ms/admin/manage/groups.json +trans.sk = public/language/sk/admin/manage/groups.json +trans.sr = public/language/sr/admin/manage/groups.json +trans.de = public/language/de/admin/manage/groups.json + +[o:nodebb:p:nodebb:r:admin-manage-privileges] +file_filter = public/language//admin/manage/privileges.json +source_file = public/language/en-GB/admin/manage/privileges.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/manage/privileges.json +trans.es = public/language/es/admin/manage/privileges.json +trans.fa_IR = public/language/fa-IR/admin/manage/privileges.json +trans.ms = public/language/ms/admin/manage/privileges.json +trans.ro = public/language/ro/admin/manage/privileges.json +trans.sl = public/language/sl/admin/manage/privileges.json +trans.el = public/language/el/admin/manage/privileges.json +trans.lt = public/language/lt/admin/manage/privileges.json +trans.pt_BR = public/language/pt-BR/admin/manage/privileges.json +trans.pt_PT = public/language/pt-PT/admin/manage/privileges.json +trans.hu = public/language/hu/admin/manage/privileges.json +trans.pl = public/language/pl/admin/manage/privileges.json +trans.sc = public/language/sc/admin/manage/privileges.json +trans.uk = public/language/uk/admin/manage/privileges.json +trans.bn = public/language/bn/admin/manage/privileges.json +trans.cs = public/language/cs/admin/manage/privileges.json +trans.da = public/language/da/admin/manage/privileges.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/privileges.json +trans.vi = public/language/vi/admin/manage/privileges.json +trans.en_US = public/language/en-US/admin/manage/privileges.json +trans.hy = public/language/hy/admin/manage/privileges.json +trans.sr = public/language/sr/admin/manage/privileges.json +trans.ja = public/language/ja/admin/manage/privileges.json +trans.nb = public/language/nb/admin/manage/privileges.json +trans.nl = public/language/nl/admin/manage/privileges.json +trans.sv = public/language/sv/admin/manage/privileges.json +trans.et = public/language/et/admin/manage/privileges.json +trans.fr = public/language/fr/admin/manage/privileges.json +trans.he = public/language/he/admin/manage/privileges.json +trans.hr = public/language/hr/admin/manage/privileges.json +trans.th = public/language/th/admin/manage/privileges.json +trans.sq_AL = public/language/sq-AL/admin/manage/privileges.json +trans.gl = public/language/gl/admin/manage/privileges.json +trans.ko = public/language/ko/admin/manage/privileges.json +trans.lv = public/language/lv/admin/manage/privileges.json +trans.sk = public/language/sk/admin/manage/privileges.json +trans.tr = public/language/tr/admin/manage/privileges.json +trans.fi = public/language/fi/admin/manage/privileges.json +trans.id = public/language/id/admin/manage/privileges.json +trans.it = public/language/it/admin/manage/privileges.json +trans.rw = public/language/rw/admin/manage/privileges.json +trans.zh_TW = public/language/zh-TW/admin/manage/privileges.json +trans.ar = public/language/ar/admin/manage/privileges.json +trans.de = public/language/de/admin/manage/privileges.json +trans.ru = public/language/ru/admin/manage/privileges.json +trans.zh_CN = public/language/zh-CN/admin/manage/privileges.json + +[o:nodebb:p:nodebb:r:admin-manage-registration] +file_filter = public/language//admin/manage/registration.json +source_file = public/language/en-GB/admin/manage/registration.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pl = public/language/pl/admin/manage/registration.json +trans.ro = public/language/ro/admin/manage/registration.json +trans.sk = public/language/sk/admin/manage/registration.json +trans.fi = public/language/fi/admin/manage/registration.json +trans.hu = public/language/hu/admin/manage/registration.json +trans.ms = public/language/ms/admin/manage/registration.json +trans.ru = public/language/ru/admin/manage/registration.json +trans.sc = public/language/sc/admin/manage/registration.json +trans.sr = public/language/sr/admin/manage/registration.json +trans.th = public/language/th/admin/manage/registration.json +trans.zh_TW = public/language/zh-TW/admin/manage/registration.json +trans.da = public/language/da/admin/manage/registration.json +trans.et = public/language/et/admin/manage/registration.json +trans.it = public/language/it/admin/manage/registration.json +trans.nb = public/language/nb/admin/manage/registration.json +trans.pt_BR = public/language/pt-BR/admin/manage/registration.json +trans.hy = public/language/hy/admin/manage/registration.json +trans.uk = public/language/uk/admin/manage/registration.json +trans.sq_AL = public/language/sq-AL/admin/manage/registration.json +trans.ar = public/language/ar/admin/manage/registration.json +trans.es = public/language/es/admin/manage/registration.json +trans.he = public/language/he/admin/manage/registration.json +trans.id = public/language/id/admin/manage/registration.json +trans.nl = public/language/nl/admin/manage/registration.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/registration.json +trans.en_US = public/language/en-US/admin/manage/registration.json +trans.rw = public/language/rw/admin/manage/registration.json +trans.sv = public/language/sv/admin/manage/registration.json +trans.tr = public/language/tr/admin/manage/registration.json +trans.vi = public/language/vi/admin/manage/registration.json +trans.bg = public/language/bg/admin/manage/registration.json +trans.cs = public/language/cs/admin/manage/registration.json +trans.fa_IR = public/language/fa-IR/admin/manage/registration.json +trans.fr = public/language/fr/admin/manage/registration.json +trans.lt = public/language/lt/admin/manage/registration.json +trans.ja = public/language/ja/admin/manage/registration.json +trans.ko = public/language/ko/admin/manage/registration.json +trans.lv = public/language/lv/admin/manage/registration.json +trans.bn = public/language/bn/admin/manage/registration.json +trans.de = public/language/de/admin/manage/registration.json +trans.el = public/language/el/admin/manage/registration.json +trans.gl = public/language/gl/admin/manage/registration.json +trans.hr = public/language/hr/admin/manage/registration.json +trans.pt_PT = public/language/pt-PT/admin/manage/registration.json +trans.sl = public/language/sl/admin/manage/registration.json +trans.zh_CN = public/language/zh-CN/admin/manage/registration.json + +[o:nodebb:p:nodebb:r:admin-manage-tags] +file_filter = public/language//admin/manage/tags.json +source_file = public/language/en-GB/admin/manage/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/manage/tags.json +trans.bg = public/language/bg/admin/manage/tags.json +trans.da = public/language/da/admin/manage/tags.json +trans.en_US = public/language/en-US/admin/manage/tags.json +trans.hu = public/language/hu/admin/manage/tags.json +trans.nb = public/language/nb/admin/manage/tags.json +trans.ru = public/language/ru/admin/manage/tags.json +trans.sq_AL = public/language/sq-AL/admin/manage/tags.json +trans.de = public/language/de/admin/manage/tags.json +trans.fi = public/language/fi/admin/manage/tags.json +trans.hr = public/language/hr/admin/manage/tags.json +trans.ko = public/language/ko/admin/manage/tags.json +trans.ms = public/language/ms/admin/manage/tags.json +trans.th = public/language/th/admin/manage/tags.json +trans.ar = public/language/ar/admin/manage/tags.json +trans.el = public/language/el/admin/manage/tags.json +trans.es = public/language/es/admin/manage/tags.json +trans.hy = public/language/hy/admin/manage/tags.json +trans.ja = public/language/ja/admin/manage/tags.json +trans.cs = public/language/cs/admin/manage/tags.json +trans.pl = public/language/pl/admin/manage/tags.json +trans.ro = public/language/ro/admin/manage/tags.json +trans.rw = public/language/rw/admin/manage/tags.json +trans.bn = public/language/bn/admin/manage/tags.json +trans.fa_IR = public/language/fa-IR/admin/manage/tags.json +trans.zh_CN = public/language/zh-CN/admin/manage/tags.json +trans.et = public/language/et/admin/manage/tags.json +trans.fr = public/language/fr/admin/manage/tags.json +trans.gl = public/language/gl/admin/manage/tags.json +trans.id = public/language/id/admin/manage/tags.json +trans.lt = public/language/lt/admin/manage/tags.json +trans.sv = public/language/sv/admin/manage/tags.json +trans.tr = public/language/tr/admin/manage/tags.json +trans.uk = public/language/uk/admin/manage/tags.json +trans.lv = public/language/lv/admin/manage/tags.json +trans.nl = public/language/nl/admin/manage/tags.json +trans.pt_BR = public/language/pt-BR/admin/manage/tags.json +trans.pt_PT = public/language/pt-PT/admin/manage/tags.json +trans.sc = public/language/sc/admin/manage/tags.json +trans.sk = public/language/sk/admin/manage/tags.json +trans.sl = public/language/sl/admin/manage/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/tags.json +trans.he = public/language/he/admin/manage/tags.json +trans.it = public/language/it/admin/manage/tags.json +trans.sr = public/language/sr/admin/manage/tags.json +trans.vi = public/language/vi/admin/manage/tags.json + +[o:nodebb:p:nodebb:r:admin-manage-uploads] +file_filter = public/language//admin/manage/uploads.json +source_file = public/language/en-GB/admin/manage/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/manage/uploads.json +trans.nb = public/language/nb/admin/manage/uploads.json +trans.tr = public/language/tr/admin/manage/uploads.json +trans.bg = public/language/bg/admin/manage/uploads.json +trans.bn = public/language/bn/admin/manage/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/uploads.json +trans.lt = public/language/lt/admin/manage/uploads.json +trans.sq_AL = public/language/sq-AL/admin/manage/uploads.json +trans.el = public/language/el/admin/manage/uploads.json +trans.en_US = public/language/en-US/admin/manage/uploads.json +trans.fi = public/language/fi/admin/manage/uploads.json +trans.hr = public/language/hr/admin/manage/uploads.json +trans.sv = public/language/sv/admin/manage/uploads.json +trans.ar = public/language/ar/admin/manage/uploads.json +trans.de = public/language/de/admin/manage/uploads.json +trans.fr = public/language/fr/admin/manage/uploads.json +trans.he = public/language/he/admin/manage/uploads.json +trans.ro = public/language/ro/admin/manage/uploads.json +trans.rw = public/language/rw/admin/manage/uploads.json +trans.gl = public/language/gl/admin/manage/uploads.json +trans.nl = public/language/nl/admin/manage/uploads.json +trans.pl = public/language/pl/admin/manage/uploads.json +trans.pt_BR = public/language/pt-BR/admin/manage/uploads.json +trans.sc = public/language/sc/admin/manage/uploads.json +trans.th = public/language/th/admin/manage/uploads.json +trans.es = public/language/es/admin/manage/uploads.json +trans.et = public/language/et/admin/manage/uploads.json +trans.lv = public/language/lv/admin/manage/uploads.json +trans.pt_PT = public/language/pt-PT/admin/manage/uploads.json +trans.sr = public/language/sr/admin/manage/uploads.json +trans.uk = public/language/uk/admin/manage/uploads.json +trans.vi = public/language/vi/admin/manage/uploads.json +trans.cs = public/language/cs/admin/manage/uploads.json +trans.ru = public/language/ru/admin/manage/uploads.json +trans.sk = public/language/sk/admin/manage/uploads.json +trans.sl = public/language/sl/admin/manage/uploads.json +trans.fa_IR = public/language/fa-IR/admin/manage/uploads.json +trans.hu = public/language/hu/admin/manage/uploads.json +trans.hy = public/language/hy/admin/manage/uploads.json +trans.zh_CN = public/language/zh-CN/admin/manage/uploads.json +trans.ko = public/language/ko/admin/manage/uploads.json +trans.zh_TW = public/language/zh-TW/admin/manage/uploads.json +trans.da = public/language/da/admin/manage/uploads.json +trans.id = public/language/id/admin/manage/uploads.json +trans.it = public/language/it/admin/manage/uploads.json +trans.ja = public/language/ja/admin/manage/uploads.json + +[o:nodebb:p:nodebb:r:admin-manage-users] +file_filter = public/language//admin/manage/users.json +source_file = public/language/en-GB/admin/manage/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/manage/users.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/users.json +trans.en_US = public/language/en-US/admin/manage/users.json +trans.fr = public/language/fr/admin/manage/users.json +trans.ko = public/language/ko/admin/manage/users.json +trans.ms = public/language/ms/admin/manage/users.json +trans.nb = public/language/nb/admin/manage/users.json +trans.pt_BR = public/language/pt-BR/admin/manage/users.json +trans.zh_CN = public/language/zh-CN/admin/manage/users.json +trans.zh_TW = public/language/zh-TW/admin/manage/users.json +trans.cs = public/language/cs/admin/manage/users.json +trans.gl = public/language/gl/admin/manage/users.json +trans.rw = public/language/rw/admin/manage/users.json +trans.bg = public/language/bg/admin/manage/users.json +trans.de = public/language/de/admin/manage/users.json +trans.et = public/language/et/admin/manage/users.json +trans.id = public/language/id/admin/manage/users.json +trans.pt_PT = public/language/pt-PT/admin/manage/users.json +trans.ru = public/language/ru/admin/manage/users.json +trans.da = public/language/da/admin/manage/users.json +trans.he = public/language/he/admin/manage/users.json +trans.hu = public/language/hu/admin/manage/users.json +trans.ro = public/language/ro/admin/manage/users.json +trans.bn = public/language/bn/admin/manage/users.json +trans.es = public/language/es/admin/manage/users.json +trans.it = public/language/it/admin/manage/users.json +trans.nl = public/language/nl/admin/manage/users.json +trans.sq_AL = public/language/sq-AL/admin/manage/users.json +trans.tr = public/language/tr/admin/manage/users.json +trans.vi = public/language/vi/admin/manage/users.json +trans.fi = public/language/fi/admin/manage/users.json +trans.sc = public/language/sc/admin/manage/users.json +trans.hy = public/language/hy/admin/manage/users.json +trans.ja = public/language/ja/admin/manage/users.json +trans.lt = public/language/lt/admin/manage/users.json +trans.th = public/language/th/admin/manage/users.json +trans.sl = public/language/sl/admin/manage/users.json +trans.ar = public/language/ar/admin/manage/users.json +trans.el = public/language/el/admin/manage/users.json +trans.fa_IR = public/language/fa-IR/admin/manage/users.json +trans.hr = public/language/hr/admin/manage/users.json +trans.lv = public/language/lv/admin/manage/users.json +trans.pl = public/language/pl/admin/manage/users.json +trans.sk = public/language/sk/admin/manage/users.json +trans.sr = public/language/sr/admin/manage/users.json +trans.sv = public/language/sv/admin/manage/users.json + +[o:nodebb:p:nodebb:r:admin-menu] +file_filter = public/language//admin/menu.json +source_file = public/language/en-GB/admin/menu.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/admin/menu.json +trans.th = public/language/th/admin/menu.json +trans.vi = public/language/vi/admin/menu.json +trans.zh_CN = public/language/zh-CN/admin/menu.json +trans.hr = public/language/hr/admin/menu.json +trans.ko = public/language/ko/admin/menu.json +trans.it = public/language/it/admin/menu.json +trans.lt = public/language/lt/admin/menu.json +trans.pl = public/language/pl/admin/menu.json +trans.sc = public/language/sc/admin/menu.json +trans.sv = public/language/sv/admin/menu.json +trans.en@pirate = public/language/en-x-pirate/admin/menu.json +trans.fr = public/language/fr/admin/menu.json +trans.de = public/language/de/admin/menu.json +trans.ms = public/language/ms/admin/menu.json +trans.sq_AL = public/language/sq-AL/admin/menu.json +trans.bg = public/language/bg/admin/menu.json +trans.da = public/language/da/admin/menu.json +trans.es = public/language/es/admin/menu.json +trans.hy = public/language/hy/admin/menu.json +trans.id = public/language/id/admin/menu.json +trans.ja = public/language/ja/admin/menu.json +trans.ro = public/language/ro/admin/menu.json +trans.rw = public/language/rw/admin/menu.json +trans.ar = public/language/ar/admin/menu.json +trans.en_US = public/language/en-US/admin/menu.json +trans.sl = public/language/sl/admin/menu.json +trans.uk = public/language/uk/admin/menu.json +trans.he = public/language/he/admin/menu.json +trans.hu = public/language/hu/admin/menu.json +trans.sr = public/language/sr/admin/menu.json +trans.cs = public/language/cs/admin/menu.json +trans.fa_IR = public/language/fa-IR/admin/menu.json +trans.sk = public/language/sk/admin/menu.json +trans.tr = public/language/tr/admin/menu.json +trans.fi = public/language/fi/admin/menu.json +trans.nl = public/language/nl/admin/menu.json +trans.pt_BR = public/language/pt-BR/admin/menu.json +trans.zh_TW = public/language/zh-TW/admin/menu.json +trans.el = public/language/el/admin/menu.json +trans.gl = public/language/gl/admin/menu.json +trans.lv = public/language/lv/admin/menu.json +trans.nb = public/language/nb/admin/menu.json +trans.pt_PT = public/language/pt-PT/admin/menu.json +trans.bn = public/language/bn/admin/menu.json +trans.et = public/language/et/admin/menu.json + +[o:nodebb:p:nodebb:r:admin-settings-advanced] +file_filter = public/language//admin/settings/advanced.json +source_file = public/language/en-GB/admin/settings/advanced.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/advanced.json +trans.sc = public/language/sc/admin/settings/advanced.json +trans.ar = public/language/ar/admin/settings/advanced.json +trans.bn = public/language/bn/admin/settings/advanced.json +trans.el = public/language/el/admin/settings/advanced.json +trans.fa_IR = public/language/fa-IR/admin/settings/advanced.json +trans.fr = public/language/fr/admin/settings/advanced.json +trans.hy = public/language/hy/admin/settings/advanced.json +trans.bg = public/language/bg/admin/settings/advanced.json +trans.lv = public/language/lv/admin/settings/advanced.json +trans.pt_BR = public/language/pt-BR/admin/settings/advanced.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/advanced.json +trans.es = public/language/es/admin/settings/advanced.json +trans.id = public/language/id/admin/settings/advanced.json +trans.rw = public/language/rw/admin/settings/advanced.json +trans.sl = public/language/sl/admin/settings/advanced.json +trans.it = public/language/it/admin/settings/advanced.json +trans.nb = public/language/nb/admin/settings/advanced.json +trans.pt_PT = public/language/pt-PT/admin/settings/advanced.json +trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json +trans.sr = public/language/sr/admin/settings/advanced.json +trans.zh_CN = public/language/zh-CN/admin/settings/advanced.json +trans.zh_TW = public/language/zh-TW/admin/settings/advanced.json +trans.cs = public/language/cs/admin/settings/advanced.json +trans.en_US = public/language/en-US/admin/settings/advanced.json +trans.hr = public/language/hr/admin/settings/advanced.json +trans.pl = public/language/pl/admin/settings/advanced.json +trans.ru = public/language/ru/admin/settings/advanced.json +trans.sv = public/language/sv/admin/settings/advanced.json +trans.vi = public/language/vi/admin/settings/advanced.json +trans.de = public/language/de/admin/settings/advanced.json +trans.et = public/language/et/admin/settings/advanced.json +trans.fi = public/language/fi/admin/settings/advanced.json +trans.ro = public/language/ro/admin/settings/advanced.json +trans.sk = public/language/sk/admin/settings/advanced.json +trans.uk = public/language/uk/admin/settings/advanced.json +trans.da = public/language/da/admin/settings/advanced.json +trans.gl = public/language/gl/admin/settings/advanced.json +trans.he = public/language/he/admin/settings/advanced.json +trans.hu = public/language/hu/admin/settings/advanced.json +trans.ja = public/language/ja/admin/settings/advanced.json +trans.tr = public/language/tr/admin/settings/advanced.json +trans.lt = public/language/lt/admin/settings/advanced.json +trans.ms = public/language/ms/admin/settings/advanced.json +trans.nl = public/language/nl/admin/settings/advanced.json +trans.th = public/language/th/admin/settings/advanced.json + +[o:nodebb:p:nodebb:r:admin-settings-api] +file_filter = public/language//admin/settings/api.json +source_file = public/language/en-GB/admin/settings/api.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/settings/api.json +trans.lv = public/language/lv/admin/settings/api.json +trans.nl = public/language/nl/admin/settings/api.json +trans.rw = public/language/rw/admin/settings/api.json +trans.sl = public/language/sl/admin/settings/api.json +trans.bn = public/language/bn/admin/settings/api.json +trans.de = public/language/de/admin/settings/api.json +trans.el = public/language/el/admin/settings/api.json +trans.en_US = public/language/en-US/admin/settings/api.json +trans.fi = public/language/fi/admin/settings/api.json +trans.he = public/language/he/admin/settings/api.json +trans.hr = public/language/hr/admin/settings/api.json +trans.hy = public/language/hy/admin/settings/api.json +trans.ja = public/language/ja/admin/settings/api.json +trans.ko = public/language/ko/admin/settings/api.json +trans.ms = public/language/ms/admin/settings/api.json +trans.pt_BR = public/language/pt-BR/admin/settings/api.json +trans.zh_CN = public/language/zh-CN/admin/settings/api.json +trans.zh_TW = public/language/zh-TW/admin/settings/api.json +trans.cs = public/language/cs/admin/settings/api.json +trans.it = public/language/it/admin/settings/api.json +trans.nb = public/language/nb/admin/settings/api.json +trans.pt_PT = public/language/pt-PT/admin/settings/api.json +trans.ru = public/language/ru/admin/settings/api.json +trans.uk = public/language/uk/admin/settings/api.json +trans.vi = public/language/vi/admin/settings/api.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/api.json +trans.fr = public/language/fr/admin/settings/api.json +trans.lt = public/language/lt/admin/settings/api.json +trans.sr = public/language/sr/admin/settings/api.json +trans.fa_IR = public/language/fa-IR/admin/settings/api.json +trans.sq_AL = public/language/sq-AL/admin/settings/api.json +trans.th = public/language/th/admin/settings/api.json +trans.da = public/language/da/admin/settings/api.json +trans.gl = public/language/gl/admin/settings/api.json +trans.pl = public/language/pl/admin/settings/api.json +trans.ar = public/language/ar/admin/settings/api.json +trans.es = public/language/es/admin/settings/api.json +trans.hu = public/language/hu/admin/settings/api.json +trans.sc = public/language/sc/admin/settings/api.json +trans.bg = public/language/bg/admin/settings/api.json +trans.id = public/language/id/admin/settings/api.json +trans.ro = public/language/ro/admin/settings/api.json +trans.sk = public/language/sk/admin/settings/api.json +trans.sv = public/language/sv/admin/settings/api.json +trans.tr = public/language/tr/admin/settings/api.json + +[o:nodebb:p:nodebb:r:admin-settings-chat] +file_filter = public/language//admin/settings/chat.json +source_file = public/language/en-GB/admin/settings/chat.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/chat.json +trans.es = public/language/es/admin/settings/chat.json +trans.et = public/language/et/admin/settings/chat.json +trans.ms = public/language/ms/admin/settings/chat.json +trans.sk = public/language/sk/admin/settings/chat.json +trans.sq_AL = public/language/sq-AL/admin/settings/chat.json +trans.da = public/language/da/admin/settings/chat.json +trans.de = public/language/de/admin/settings/chat.json +trans.en_US = public/language/en-US/admin/settings/chat.json +trans.fa_IR = public/language/fa-IR/admin/settings/chat.json +trans.fr = public/language/fr/admin/settings/chat.json +trans.id = public/language/id/admin/settings/chat.json +trans.ro = public/language/ro/admin/settings/chat.json +trans.el = public/language/el/admin/settings/chat.json +trans.hr = public/language/hr/admin/settings/chat.json +trans.ja = public/language/ja/admin/settings/chat.json +trans.ko = public/language/ko/admin/settings/chat.json +trans.nb = public/language/nb/admin/settings/chat.json +trans.nl = public/language/nl/admin/settings/chat.json +trans.uk = public/language/uk/admin/settings/chat.json +trans.he = public/language/he/admin/settings/chat.json +trans.sl = public/language/sl/admin/settings/chat.json +trans.sr = public/language/sr/admin/settings/chat.json +trans.cs = public/language/cs/admin/settings/chat.json +trans.pl = public/language/pl/admin/settings/chat.json +trans.pt_BR = public/language/pt-BR/admin/settings/chat.json +trans.sv = public/language/sv/admin/settings/chat.json +trans.zh_CN = public/language/zh-CN/admin/settings/chat.json +trans.bg = public/language/bg/admin/settings/chat.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/chat.json +trans.hu = public/language/hu/admin/settings/chat.json +trans.ru = public/language/ru/admin/settings/chat.json +trans.rw = public/language/rw/admin/settings/chat.json +trans.tr = public/language/tr/admin/settings/chat.json +trans.bn = public/language/bn/admin/settings/chat.json +trans.hy = public/language/hy/admin/settings/chat.json +trans.lt = public/language/lt/admin/settings/chat.json +trans.lv = public/language/lv/admin/settings/chat.json +trans.th = public/language/th/admin/settings/chat.json +trans.fi = public/language/fi/admin/settings/chat.json +trans.gl = public/language/gl/admin/settings/chat.json +trans.it = public/language/it/admin/settings/chat.json +trans.pt_PT = public/language/pt-PT/admin/settings/chat.json +trans.sc = public/language/sc/admin/settings/chat.json +trans.vi = public/language/vi/admin/settings/chat.json +trans.zh_TW = public/language/zh-TW/admin/settings/chat.json + +[o:nodebb:p:nodebb:r:admin-settings-cookies] +file_filter = public/language//admin/settings/cookies.json +source_file = public/language/en-GB/admin/settings/cookies.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/settings/cookies.json +trans.th = public/language/th/admin/settings/cookies.json +trans.zh_CN = public/language/zh-CN/admin/settings/cookies.json +trans.en_US = public/language/en-US/admin/settings/cookies.json +trans.lt = public/language/lt/admin/settings/cookies.json +trans.pl = public/language/pl/admin/settings/cookies.json +trans.ro = public/language/ro/admin/settings/cookies.json +trans.rw = public/language/rw/admin/settings/cookies.json +trans.sk = public/language/sk/admin/settings/cookies.json +trans.tr = public/language/tr/admin/settings/cookies.json +trans.ar = public/language/ar/admin/settings/cookies.json +trans.da = public/language/da/admin/settings/cookies.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/cookies.json +trans.gl = public/language/gl/admin/settings/cookies.json +trans.hu = public/language/hu/admin/settings/cookies.json +trans.vi = public/language/vi/admin/settings/cookies.json +trans.el = public/language/el/admin/settings/cookies.json +trans.et = public/language/et/admin/settings/cookies.json +trans.lv = public/language/lv/admin/settings/cookies.json +trans.ru = public/language/ru/admin/settings/cookies.json +trans.uk = public/language/uk/admin/settings/cookies.json +trans.ko = public/language/ko/admin/settings/cookies.json +trans.sv = public/language/sv/admin/settings/cookies.json +trans.bn = public/language/bn/admin/settings/cookies.json +trans.de = public/language/de/admin/settings/cookies.json +trans.he = public/language/he/admin/settings/cookies.json +trans.hy = public/language/hy/admin/settings/cookies.json +trans.it = public/language/it/admin/settings/cookies.json +trans.cs = public/language/cs/admin/settings/cookies.json +trans.hr = public/language/hr/admin/settings/cookies.json +trans.ja = public/language/ja/admin/settings/cookies.json +trans.pt_PT = public/language/pt-PT/admin/settings/cookies.json +trans.nb = public/language/nb/admin/settings/cookies.json +trans.sc = public/language/sc/admin/settings/cookies.json +trans.bg = public/language/bg/admin/settings/cookies.json +trans.fi = public/language/fi/admin/settings/cookies.json +trans.fr = public/language/fr/admin/settings/cookies.json +trans.id = public/language/id/admin/settings/cookies.json +trans.ms = public/language/ms/admin/settings/cookies.json +trans.zh_TW = public/language/zh-TW/admin/settings/cookies.json +trans.es = public/language/es/admin/settings/cookies.json +trans.fa_IR = public/language/fa-IR/admin/settings/cookies.json +trans.nl = public/language/nl/admin/settings/cookies.json +trans.sl = public/language/sl/admin/settings/cookies.json +trans.sq_AL = public/language/sq-AL/admin/settings/cookies.json +trans.pt_BR = public/language/pt-BR/admin/settings/cookies.json + +[o:nodebb:p:nodebb:r:admin-settings-email] +file_filter = public/language//admin/settings/email.json +source_file = public/language/en-GB/admin/settings/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/email.json +trans.tr = public/language/tr/admin/settings/email.json +trans.uk = public/language/uk/admin/settings/email.json +trans.ar = public/language/ar/admin/settings/email.json +trans.ja = public/language/ja/admin/settings/email.json +trans.pt_PT = public/language/pt-PT/admin/settings/email.json +trans.sr = public/language/sr/admin/settings/email.json +trans.ms = public/language/ms/admin/settings/email.json +trans.nb = public/language/nb/admin/settings/email.json +trans.ru = public/language/ru/admin/settings/email.json +trans.sk = public/language/sk/admin/settings/email.json +trans.fr = public/language/fr/admin/settings/email.json +trans.he = public/language/he/admin/settings/email.json +trans.id = public/language/id/admin/settings/email.json +trans.it = public/language/it/admin/settings/email.json +trans.sl = public/language/sl/admin/settings/email.json +trans.sq_AL = public/language/sq-AL/admin/settings/email.json +trans.hr = public/language/hr/admin/settings/email.json +trans.hu = public/language/hu/admin/settings/email.json +trans.ko = public/language/ko/admin/settings/email.json +trans.zh_TW = public/language/zh-TW/admin/settings/email.json +trans.bn = public/language/bn/admin/settings/email.json +trans.fi = public/language/fi/admin/settings/email.json +trans.pt_BR = public/language/pt-BR/admin/settings/email.json +trans.es = public/language/es/admin/settings/email.json +trans.pl = public/language/pl/admin/settings/email.json +trans.ro = public/language/ro/admin/settings/email.json +trans.rw = public/language/rw/admin/settings/email.json +trans.bg = public/language/bg/admin/settings/email.json +trans.cs = public/language/cs/admin/settings/email.json +trans.el = public/language/el/admin/settings/email.json +trans.en_US = public/language/en-US/admin/settings/email.json +trans.zh_CN = public/language/zh-CN/admin/settings/email.json +trans.fa_IR = public/language/fa-IR/admin/settings/email.json +trans.gl = public/language/gl/admin/settings/email.json +trans.hy = public/language/hy/admin/settings/email.json +trans.lv = public/language/lv/admin/settings/email.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/email.json +trans.et = public/language/et/admin/settings/email.json +trans.lt = public/language/lt/admin/settings/email.json +trans.th = public/language/th/admin/settings/email.json +trans.vi = public/language/vi/admin/settings/email.json +trans.da = public/language/da/admin/settings/email.json +trans.de = public/language/de/admin/settings/email.json +trans.nl = public/language/nl/admin/settings/email.json +trans.sc = public/language/sc/admin/settings/email.json + +[o:nodebb:p:nodebb:r:admin-settings-general] +file_filter = public/language//admin/settings/general.json +source_file = public/language/en-GB/admin/settings/general.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/general.json +trans.ro = public/language/ro/admin/settings/general.json +trans.sc = public/language/sc/admin/settings/general.json +trans.sk = public/language/sk/admin/settings/general.json +trans.sv = public/language/sv/admin/settings/general.json +trans.uk = public/language/uk/admin/settings/general.json +trans.fr = public/language/fr/admin/settings/general.json +trans.gl = public/language/gl/admin/settings/general.json +trans.zh_CN = public/language/zh-CN/admin/settings/general.json +trans.lt = public/language/lt/admin/settings/general.json +trans.rw = public/language/rw/admin/settings/general.json +trans.th = public/language/th/admin/settings/general.json +trans.tr = public/language/tr/admin/settings/general.json +trans.zh_TW = public/language/zh-TW/admin/settings/general.json +trans.de = public/language/de/admin/settings/general.json +trans.ja = public/language/ja/admin/settings/general.json +trans.en_US = public/language/en-US/admin/settings/general.json +trans.et = public/language/et/admin/settings/general.json +trans.fi = public/language/fi/admin/settings/general.json +trans.hy = public/language/hy/admin/settings/general.json +trans.id = public/language/id/admin/settings/general.json +trans.ru = public/language/ru/admin/settings/general.json +trans.cs = public/language/cs/admin/settings/general.json +trans.el = public/language/el/admin/settings/general.json +trans.sl = public/language/sl/admin/settings/general.json +trans.hu = public/language/hu/admin/settings/general.json +trans.it = public/language/it/admin/settings/general.json +trans.nl = public/language/nl/admin/settings/general.json +trans.pl = public/language/pl/admin/settings/general.json +trans.es = public/language/es/admin/settings/general.json +trans.fa_IR = public/language/fa-IR/admin/settings/general.json +trans.ms = public/language/ms/admin/settings/general.json +trans.nb = public/language/nb/admin/settings/general.json +trans.sr = public/language/sr/admin/settings/general.json +trans.da = public/language/da/admin/settings/general.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/general.json +trans.pt_PT = public/language/pt-PT/admin/settings/general.json +trans.he = public/language/he/admin/settings/general.json +trans.lv = public/language/lv/admin/settings/general.json +trans.pt_BR = public/language/pt-BR/admin/settings/general.json +trans.bn = public/language/bn/admin/settings/general.json +trans.hr = public/language/hr/admin/settings/general.json +trans.sq_AL = public/language/sq-AL/admin/settings/general.json +trans.vi = public/language/vi/admin/settings/general.json +trans.ar = public/language/ar/admin/settings/general.json +trans.bg = public/language/bg/admin/settings/general.json + +[o:nodebb:p:nodebb:r:admin-settings-group] +file_filter = public/language//admin/settings/group.json +source_file = public/language/en-GB/admin/settings/group.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sc = public/language/sc/admin/settings/group.json +trans.en_US = public/language/en-US/admin/settings/group.json +trans.et = public/language/et/admin/settings/group.json +trans.fr = public/language/fr/admin/settings/group.json +trans.it = public/language/it/admin/settings/group.json +trans.nb = public/language/nb/admin/settings/group.json +trans.es = public/language/es/admin/settings/group.json +trans.fa_IR = public/language/fa-IR/admin/settings/group.json +trans.gl = public/language/gl/admin/settings/group.json +trans.rw = public/language/rw/admin/settings/group.json +trans.sr = public/language/sr/admin/settings/group.json +trans.sq_AL = public/language/sq-AL/admin/settings/group.json +trans.th = public/language/th/admin/settings/group.json +trans.vi = public/language/vi/admin/settings/group.json +trans.bn = public/language/bn/admin/settings/group.json +trans.fi = public/language/fi/admin/settings/group.json +trans.hy = public/language/hy/admin/settings/group.json +trans.id = public/language/id/admin/settings/group.json +trans.ms = public/language/ms/admin/settings/group.json +trans.de = public/language/de/admin/settings/group.json +trans.he = public/language/he/admin/settings/group.json +trans.lv = public/language/lv/admin/settings/group.json +trans.pt_PT = public/language/pt-PT/admin/settings/group.json +trans.sk = public/language/sk/admin/settings/group.json +trans.tr = public/language/tr/admin/settings/group.json +trans.uk = public/language/uk/admin/settings/group.json +trans.cs = public/language/cs/admin/settings/group.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/group.json +trans.hu = public/language/hu/admin/settings/group.json +trans.nl = public/language/nl/admin/settings/group.json +trans.ru = public/language/ru/admin/settings/group.json +trans.lt = public/language/lt/admin/settings/group.json +trans.ro = public/language/ro/admin/settings/group.json +trans.sl = public/language/sl/admin/settings/group.json +trans.ar = public/language/ar/admin/settings/group.json +trans.bg = public/language/bg/admin/settings/group.json +trans.da = public/language/da/admin/settings/group.json +trans.hr = public/language/hr/admin/settings/group.json +trans.ko = public/language/ko/admin/settings/group.json +trans.el = public/language/el/admin/settings/group.json +trans.sv = public/language/sv/admin/settings/group.json +trans.ja = public/language/ja/admin/settings/group.json +trans.pl = public/language/pl/admin/settings/group.json +trans.pt_BR = public/language/pt-BR/admin/settings/group.json +trans.zh_CN = public/language/zh-CN/admin/settings/group.json +trans.zh_TW = public/language/zh-TW/admin/settings/group.json + +[o:nodebb:p:nodebb:r:admin-settings-guest] +file_filter = public/language//admin/settings/guest.json +source_file = public/language/en-GB/admin/settings/guest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/guest.json +trans.da = public/language/da/admin/settings/guest.json +trans.en_US = public/language/en-US/admin/settings/guest.json +trans.lt = public/language/lt/admin/settings/guest.json +trans.ms = public/language/ms/admin/settings/guest.json +trans.nl = public/language/nl/admin/settings/guest.json +trans.ru = public/language/ru/admin/settings/guest.json +trans.sc = public/language/sc/admin/settings/guest.json +trans.sr = public/language/sr/admin/settings/guest.json +trans.th = public/language/th/admin/settings/guest.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/guest.json +trans.it = public/language/it/admin/settings/guest.json +trans.lv = public/language/lv/admin/settings/guest.json +trans.pt_BR = public/language/pt-BR/admin/settings/guest.json +trans.sk = public/language/sk/admin/settings/guest.json +trans.de = public/language/de/admin/settings/guest.json +trans.es = public/language/es/admin/settings/guest.json +trans.hr = public/language/hr/admin/settings/guest.json +trans.pt_PT = public/language/pt-PT/admin/settings/guest.json +trans.rw = public/language/rw/admin/settings/guest.json +trans.sq_AL = public/language/sq-AL/admin/settings/guest.json +trans.el = public/language/el/admin/settings/guest.json +trans.tr = public/language/tr/admin/settings/guest.json +trans.zh_CN = public/language/zh-CN/admin/settings/guest.json +trans.bg = public/language/bg/admin/settings/guest.json +trans.fi = public/language/fi/admin/settings/guest.json +trans.hu = public/language/hu/admin/settings/guest.json +trans.ja = public/language/ja/admin/settings/guest.json +trans.nb = public/language/nb/admin/settings/guest.json +trans.pl = public/language/pl/admin/settings/guest.json +trans.sl = public/language/sl/admin/settings/guest.json +trans.vi = public/language/vi/admin/settings/guest.json +trans.bn = public/language/bn/admin/settings/guest.json +trans.fa_IR = public/language/fa-IR/admin/settings/guest.json +trans.fr = public/language/fr/admin/settings/guest.json +trans.hy = public/language/hy/admin/settings/guest.json +trans.ro = public/language/ro/admin/settings/guest.json +trans.et = public/language/et/admin/settings/guest.json +trans.gl = public/language/gl/admin/settings/guest.json +trans.sv = public/language/sv/admin/settings/guest.json +trans.uk = public/language/uk/admin/settings/guest.json +trans.zh_TW = public/language/zh-TW/admin/settings/guest.json +trans.ar = public/language/ar/admin/settings/guest.json +trans.he = public/language/he/admin/settings/guest.json +trans.id = public/language/id/admin/settings/guest.json +trans.ko = public/language/ko/admin/settings/guest.json + +[o:nodebb:p:nodebb:r:admin-settings-homepage] +file_filter = public/language//admin/settings/homepage.json +source_file = public/language/en-GB/admin/settings/homepage.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/admin/settings/homepage.json +trans.tr = public/language/tr/admin/settings/homepage.json +trans.vi = public/language/vi/admin/settings/homepage.json +trans.et = public/language/et/admin/settings/homepage.json +trans.fi = public/language/fi/admin/settings/homepage.json +trans.hy = public/language/hy/admin/settings/homepage.json +trans.ru = public/language/ru/admin/settings/homepage.json +trans.sr = public/language/sr/admin/settings/homepage.json +trans.es = public/language/es/admin/settings/homepage.json +trans.id = public/language/id/admin/settings/homepage.json +trans.lt = public/language/lt/admin/settings/homepage.json +trans.sk = public/language/sk/admin/settings/homepage.json +trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json +trans.th = public/language/th/admin/settings/homepage.json +trans.en_US = public/language/en-US/admin/settings/homepage.json +trans.lv = public/language/lv/admin/settings/homepage.json +trans.pt_PT = public/language/pt-PT/admin/settings/homepage.json +trans.sc = public/language/sc/admin/settings/homepage.json +trans.fa_IR = public/language/fa-IR/admin/settings/homepage.json +trans.he = public/language/he/admin/settings/homepage.json +trans.ms = public/language/ms/admin/settings/homepage.json +trans.cs = public/language/cs/admin/settings/homepage.json +trans.el = public/language/el/admin/settings/homepage.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/homepage.json +trans.gl = public/language/gl/admin/settings/homepage.json +trans.ko = public/language/ko/admin/settings/homepage.json +trans.ar = public/language/ar/admin/settings/homepage.json +trans.bg = public/language/bg/admin/settings/homepage.json +trans.bn = public/language/bn/admin/settings/homepage.json +trans.rw = public/language/rw/admin/settings/homepage.json +trans.zh_CN = public/language/zh-CN/admin/settings/homepage.json +trans.hr = public/language/hr/admin/settings/homepage.json +trans.it = public/language/it/admin/settings/homepage.json +trans.ja = public/language/ja/admin/settings/homepage.json +trans.nl = public/language/nl/admin/settings/homepage.json +trans.ro = public/language/ro/admin/settings/homepage.json +trans.da = public/language/da/admin/settings/homepage.json +trans.de = public/language/de/admin/settings/homepage.json +trans.fr = public/language/fr/admin/settings/homepage.json +trans.sv = public/language/sv/admin/settings/homepage.json +trans.hu = public/language/hu/admin/settings/homepage.json +trans.pt_BR = public/language/pt-BR/admin/settings/homepage.json +trans.sl = public/language/sl/admin/settings/homepage.json +trans.pl = public/language/pl/admin/settings/homepage.json +trans.uk = public/language/uk/admin/settings/homepage.json +trans.zh_TW = public/language/zh-TW/admin/settings/homepage.json + +[o:nodebb:p:nodebb:r:admin-settings-languages] +file_filter = public/language//admin/settings/languages.json +source_file = public/language/en-GB/admin/settings/languages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/settings/languages.json +trans.fa_IR = public/language/fa-IR/admin/settings/languages.json +trans.gl = public/language/gl/admin/settings/languages.json +trans.ro = public/language/ro/admin/settings/languages.json +trans.th = public/language/th/admin/settings/languages.json +trans.hr = public/language/hr/admin/settings/languages.json +trans.hy = public/language/hy/admin/settings/languages.json +trans.sc = public/language/sc/admin/settings/languages.json +trans.vi = public/language/vi/admin/settings/languages.json +trans.tr = public/language/tr/admin/settings/languages.json +trans.cs = public/language/cs/admin/settings/languages.json +trans.et = public/language/et/admin/settings/languages.json +trans.lv = public/language/lv/admin/settings/languages.json +trans.pl = public/language/pl/admin/settings/languages.json +trans.sr = public/language/sr/admin/settings/languages.json +trans.sv = public/language/sv/admin/settings/languages.json +trans.hu = public/language/hu/admin/settings/languages.json +trans.it = public/language/it/admin/settings/languages.json +trans.ja = public/language/ja/admin/settings/languages.json +trans.sl = public/language/sl/admin/settings/languages.json +trans.zh_TW = public/language/zh-TW/admin/settings/languages.json +trans.da = public/language/da/admin/settings/languages.json +trans.fr = public/language/fr/admin/settings/languages.json +trans.he = public/language/he/admin/settings/languages.json +trans.id = public/language/id/admin/settings/languages.json +trans.sq_AL = public/language/sq-AL/admin/settings/languages.json +trans.uk = public/language/uk/admin/settings/languages.json +trans.bn = public/language/bn/admin/settings/languages.json +trans.fi = public/language/fi/admin/settings/languages.json +trans.ko = public/language/ko/admin/settings/languages.json +trans.pt_BR = public/language/pt-BR/admin/settings/languages.json +trans.sk = public/language/sk/admin/settings/languages.json +trans.pt_PT = public/language/pt-PT/admin/settings/languages.json +trans.ru = public/language/ru/admin/settings/languages.json +trans.ar = public/language/ar/admin/settings/languages.json +trans.bg = public/language/bg/admin/settings/languages.json +trans.de = public/language/de/admin/settings/languages.json +trans.el = public/language/el/admin/settings/languages.json +trans.lt = public/language/lt/admin/settings/languages.json +trans.nl = public/language/nl/admin/settings/languages.json +trans.zh_CN = public/language/zh-CN/admin/settings/languages.json +trans.en_US = public/language/en-US/admin/settings/languages.json +trans.es = public/language/es/admin/settings/languages.json +trans.ms = public/language/ms/admin/settings/languages.json +trans.nb = public/language/nb/admin/settings/languages.json +trans.rw = public/language/rw/admin/settings/languages.json + +[o:nodebb:p:nodebb:r:admin-settings-navigation] +file_filter = public/language//admin/settings/navigation.json +source_file = public/language/en-GB/admin/settings/navigation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/navigation.json +trans.bn = public/language/bn/admin/settings/navigation.json +trans.es = public/language/es/admin/settings/navigation.json +trans.fa_IR = public/language/fa-IR/admin/settings/navigation.json +trans.nl = public/language/nl/admin/settings/navigation.json +trans.pt_BR = public/language/pt-BR/admin/settings/navigation.json +trans.rw = public/language/rw/admin/settings/navigation.json +trans.zh_CN = public/language/zh-CN/admin/settings/navigation.json +trans.da = public/language/da/admin/settings/navigation.json +trans.it = public/language/it/admin/settings/navigation.json +trans.ms = public/language/ms/admin/settings/navigation.json +trans.pt_PT = public/language/pt-PT/admin/settings/navigation.json +trans.vi = public/language/vi/admin/settings/navigation.json +trans.en_US = public/language/en-US/admin/settings/navigation.json +trans.fr = public/language/fr/admin/settings/navigation.json +trans.hu = public/language/hu/admin/settings/navigation.json +trans.hy = public/language/hy/admin/settings/navigation.json +trans.ja = public/language/ja/admin/settings/navigation.json +trans.lt = public/language/lt/admin/settings/navigation.json +trans.ru = public/language/ru/admin/settings/navigation.json +trans.sk = public/language/sk/admin/settings/navigation.json +trans.sr = public/language/sr/admin/settings/navigation.json +trans.de = public/language/de/admin/settings/navigation.json +trans.et = public/language/et/admin/settings/navigation.json +trans.fi = public/language/fi/admin/settings/navigation.json +trans.gl = public/language/gl/admin/settings/navigation.json +trans.sc = public/language/sc/admin/settings/navigation.json +trans.sl = public/language/sl/admin/settings/navigation.json +trans.th = public/language/th/admin/settings/navigation.json +trans.bg = public/language/bg/admin/settings/navigation.json +trans.cs = public/language/cs/admin/settings/navigation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/navigation.json +trans.ro = public/language/ro/admin/settings/navigation.json +trans.sq_AL = public/language/sq-AL/admin/settings/navigation.json +trans.tr = public/language/tr/admin/settings/navigation.json +trans.zh_TW = public/language/zh-TW/admin/settings/navigation.json +trans.ar = public/language/ar/admin/settings/navigation.json +trans.hr = public/language/hr/admin/settings/navigation.json +trans.id = public/language/id/admin/settings/navigation.json +trans.ko = public/language/ko/admin/settings/navigation.json +trans.nb = public/language/nb/admin/settings/navigation.json +trans.pl = public/language/pl/admin/settings/navigation.json +trans.sv = public/language/sv/admin/settings/navigation.json +trans.el = public/language/el/admin/settings/navigation.json +trans.he = public/language/he/admin/settings/navigation.json +trans.lv = public/language/lv/admin/settings/navigation.json + +[o:nodebb:p:nodebb:r:admin-settings-notifications] +file_filter = public/language//admin/settings/notifications.json +source_file = public/language/en-GB/admin/settings/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/settings/notifications.json +trans.fi = public/language/fi/admin/settings/notifications.json +trans.id = public/language/id/admin/settings/notifications.json +trans.pt_PT = public/language/pt-PT/admin/settings/notifications.json +trans.rw = public/language/rw/admin/settings/notifications.json +trans.ar = public/language/ar/admin/settings/notifications.json +trans.bn = public/language/bn/admin/settings/notifications.json +trans.el = public/language/el/admin/settings/notifications.json +trans.en_US = public/language/en-US/admin/settings/notifications.json +trans.sk = public/language/sk/admin/settings/notifications.json +trans.sr = public/language/sr/admin/settings/notifications.json +trans.sv = public/language/sv/admin/settings/notifications.json +trans.th = public/language/th/admin/settings/notifications.json +trans.cs = public/language/cs/admin/settings/notifications.json +trans.it = public/language/it/admin/settings/notifications.json +trans.ru = public/language/ru/admin/settings/notifications.json +trans.sq_AL = public/language/sq-AL/admin/settings/notifications.json +trans.vi = public/language/vi/admin/settings/notifications.json +trans.fr = public/language/fr/admin/settings/notifications.json +trans.hy = public/language/hy/admin/settings/notifications.json +trans.sl = public/language/sl/admin/settings/notifications.json +trans.uk = public/language/uk/admin/settings/notifications.json +trans.ms = public/language/ms/admin/settings/notifications.json +trans.nl = public/language/nl/admin/settings/notifications.json +trans.ro = public/language/ro/admin/settings/notifications.json +trans.sc = public/language/sc/admin/settings/notifications.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/notifications.json +trans.gl = public/language/gl/admin/settings/notifications.json +trans.he = public/language/he/admin/settings/notifications.json +trans.hu = public/language/hu/admin/settings/notifications.json +trans.tr = public/language/tr/admin/settings/notifications.json +trans.zh_CN = public/language/zh-CN/admin/settings/notifications.json +trans.ko = public/language/ko/admin/settings/notifications.json +trans.lv = public/language/lv/admin/settings/notifications.json +trans.nb = public/language/nb/admin/settings/notifications.json +trans.pl = public/language/pl/admin/settings/notifications.json +trans.bg = public/language/bg/admin/settings/notifications.json +trans.da = public/language/da/admin/settings/notifications.json +trans.de = public/language/de/admin/settings/notifications.json +trans.hr = public/language/hr/admin/settings/notifications.json +trans.pt_BR = public/language/pt-BR/admin/settings/notifications.json +trans.et = public/language/et/admin/settings/notifications.json +trans.lt = public/language/lt/admin/settings/notifications.json +trans.es = public/language/es/admin/settings/notifications.json +trans.fa_IR = public/language/fa-IR/admin/settings/notifications.json +trans.ja = public/language/ja/admin/settings/notifications.json + +[o:nodebb:p:nodebb:r:admin-settings-pagination] +file_filter = public/language//admin/settings/pagination.json +source_file = public/language/en-GB/admin/settings/pagination.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/settings/pagination.json +trans.th = public/language/th/admin/settings/pagination.json +trans.de = public/language/de/admin/settings/pagination.json +trans.ru = public/language/ru/admin/settings/pagination.json +trans.rw = public/language/rw/admin/settings/pagination.json +trans.sc = public/language/sc/admin/settings/pagination.json +trans.sk = public/language/sk/admin/settings/pagination.json +trans.lv = public/language/lv/admin/settings/pagination.json +trans.ar = public/language/ar/admin/settings/pagination.json +trans.el = public/language/el/admin/settings/pagination.json +trans.en_US = public/language/en-US/admin/settings/pagination.json +trans.et = public/language/et/admin/settings/pagination.json +trans.fr = public/language/fr/admin/settings/pagination.json +trans.bg = public/language/bg/admin/settings/pagination.json +trans.fi = public/language/fi/admin/settings/pagination.json +trans.ja = public/language/ja/admin/settings/pagination.json +trans.ms = public/language/ms/admin/settings/pagination.json +trans.uk = public/language/uk/admin/settings/pagination.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/pagination.json +trans.hu = public/language/hu/admin/settings/pagination.json +trans.ko = public/language/ko/admin/settings/pagination.json +trans.lt = public/language/lt/admin/settings/pagination.json +trans.nl = public/language/nl/admin/settings/pagination.json +trans.hr = public/language/hr/admin/settings/pagination.json +trans.pl = public/language/pl/admin/settings/pagination.json +trans.pt_BR = public/language/pt-BR/admin/settings/pagination.json +trans.cs = public/language/cs/admin/settings/pagination.json +trans.da = public/language/da/admin/settings/pagination.json +trans.es = public/language/es/admin/settings/pagination.json +trans.gl = public/language/gl/admin/settings/pagination.json +trans.he = public/language/he/admin/settings/pagination.json +trans.pt_PT = public/language/pt-PT/admin/settings/pagination.json +trans.ro = public/language/ro/admin/settings/pagination.json +trans.id = public/language/id/admin/settings/pagination.json +trans.tr = public/language/tr/admin/settings/pagination.json +trans.vi = public/language/vi/admin/settings/pagination.json +trans.fa_IR = public/language/fa-IR/admin/settings/pagination.json +trans.it = public/language/it/admin/settings/pagination.json +trans.sl = public/language/sl/admin/settings/pagination.json +trans.zh_CN = public/language/zh-CN/admin/settings/pagination.json +trans.zh_TW = public/language/zh-TW/admin/settings/pagination.json +trans.bn = public/language/bn/admin/settings/pagination.json +trans.hy = public/language/hy/admin/settings/pagination.json +trans.nb = public/language/nb/admin/settings/pagination.json +trans.sr = public/language/sr/admin/settings/pagination.json +trans.sv = public/language/sv/admin/settings/pagination.json + +[o:nodebb:p:nodebb:r:admin-settings-post] +file_filter = public/language//admin/settings/post.json +source_file = public/language/en-GB/admin/settings/post.json +source_lang = en_GB +type = KEYVALUEJSON +trans.id = public/language/id/admin/settings/post.json +trans.bn = public/language/bn/admin/settings/post.json +trans.da = public/language/da/admin/settings/post.json +trans.de = public/language/de/admin/settings/post.json +trans.en_US = public/language/en-US/admin/settings/post.json +trans.ms = public/language/ms/admin/settings/post.json +trans.ro = public/language/ro/admin/settings/post.json +trans.zh_TW = public/language/zh-TW/admin/settings/post.json +trans.cs = public/language/cs/admin/settings/post.json +trans.he = public/language/he/admin/settings/post.json +trans.ja = public/language/ja/admin/settings/post.json +trans.ko = public/language/ko/admin/settings/post.json +trans.hr = public/language/hr/admin/settings/post.json +trans.sq_AL = public/language/sq-AL/admin/settings/post.json +trans.lv = public/language/lv/admin/settings/post.json +trans.nl = public/language/nl/admin/settings/post.json +trans.pt_PT = public/language/pt-PT/admin/settings/post.json +trans.sr = public/language/sr/admin/settings/post.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/post.json +trans.et = public/language/et/admin/settings/post.json +trans.hu = public/language/hu/admin/settings/post.json +trans.it = public/language/it/admin/settings/post.json +trans.th = public/language/th/admin/settings/post.json +trans.gl = public/language/gl/admin/settings/post.json +trans.nb = public/language/nb/admin/settings/post.json +trans.sc = public/language/sc/admin/settings/post.json +trans.zh_CN = public/language/zh-CN/admin/settings/post.json +trans.rw = public/language/rw/admin/settings/post.json +trans.sv = public/language/sv/admin/settings/post.json +trans.vi = public/language/vi/admin/settings/post.json +trans.ar = public/language/ar/admin/settings/post.json +trans.el = public/language/el/admin/settings/post.json +trans.fa_IR = public/language/fa-IR/admin/settings/post.json +trans.fi = public/language/fi/admin/settings/post.json +trans.ru = public/language/ru/admin/settings/post.json +trans.bg = public/language/bg/admin/settings/post.json +trans.es = public/language/es/admin/settings/post.json +trans.hy = public/language/hy/admin/settings/post.json +trans.pt_BR = public/language/pt-BR/admin/settings/post.json +trans.sl = public/language/sl/admin/settings/post.json +trans.tr = public/language/tr/admin/settings/post.json +trans.uk = public/language/uk/admin/settings/post.json +trans.fr = public/language/fr/admin/settings/post.json +trans.lt = public/language/lt/admin/settings/post.json +trans.pl = public/language/pl/admin/settings/post.json +trans.sk = public/language/sk/admin/settings/post.json + +[o:nodebb:p:nodebb:r:admin-settings-reputation] +file_filter = public/language//admin/settings/reputation.json +source_file = public/language/en-GB/admin/settings/reputation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fi = public/language/fi/admin/settings/reputation.json +trans.ja = public/language/ja/admin/settings/reputation.json +trans.lt = public/language/lt/admin/settings/reputation.json +trans.pl = public/language/pl/admin/settings/reputation.json +trans.ro = public/language/ro/admin/settings/reputation.json +trans.bg = public/language/bg/admin/settings/reputation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/reputation.json +trans.fa_IR = public/language/fa-IR/admin/settings/reputation.json +trans.sl = public/language/sl/admin/settings/reputation.json +trans.sv = public/language/sv/admin/settings/reputation.json +trans.uk = public/language/uk/admin/settings/reputation.json +trans.sr = public/language/sr/admin/settings/reputation.json +trans.zh_CN = public/language/zh-CN/admin/settings/reputation.json +trans.ar = public/language/ar/admin/settings/reputation.json +trans.el = public/language/el/admin/settings/reputation.json +trans.es = public/language/es/admin/settings/reputation.json +trans.sc = public/language/sc/admin/settings/reputation.json +trans.hr = public/language/hr/admin/settings/reputation.json +trans.ko = public/language/ko/admin/settings/reputation.json +trans.nb = public/language/nb/admin/settings/reputation.json +trans.bn = public/language/bn/admin/settings/reputation.json +trans.de = public/language/de/admin/settings/reputation.json +trans.et = public/language/et/admin/settings/reputation.json +trans.rw = public/language/rw/admin/settings/reputation.json +trans.th = public/language/th/admin/settings/reputation.json +trans.zh_TW = public/language/zh-TW/admin/settings/reputation.json +trans.fr = public/language/fr/admin/settings/reputation.json +trans.it = public/language/it/admin/settings/reputation.json +trans.ru = public/language/ru/admin/settings/reputation.json +trans.pt_PT = public/language/pt-PT/admin/settings/reputation.json +trans.sk = public/language/sk/admin/settings/reputation.json +trans.id = public/language/id/admin/settings/reputation.json +trans.ms = public/language/ms/admin/settings/reputation.json +trans.nl = public/language/nl/admin/settings/reputation.json +trans.he = public/language/he/admin/settings/reputation.json +trans.sq_AL = public/language/sq-AL/admin/settings/reputation.json +trans.tr = public/language/tr/admin/settings/reputation.json +trans.cs = public/language/cs/admin/settings/reputation.json +trans.da = public/language/da/admin/settings/reputation.json +trans.en_US = public/language/en-US/admin/settings/reputation.json +trans.lv = public/language/lv/admin/settings/reputation.json +trans.pt_BR = public/language/pt-BR/admin/settings/reputation.json +trans.vi = public/language/vi/admin/settings/reputation.json +trans.gl = public/language/gl/admin/settings/reputation.json +trans.hu = public/language/hu/admin/settings/reputation.json +trans.hy = public/language/hy/admin/settings/reputation.json + +[o:nodebb:p:nodebb:r:admin-settings-social] +file_filter = public/language//admin/settings/social.json +source_file = public/language/en-GB/admin/settings/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/settings/social.json +trans.sc = public/language/sc/admin/settings/social.json +trans.sv = public/language/sv/admin/settings/social.json +trans.rw = public/language/rw/admin/settings/social.json +trans.bn = public/language/bn/admin/settings/social.json +trans.hr = public/language/hr/admin/settings/social.json +trans.id = public/language/id/admin/settings/social.json +trans.pt_PT = public/language/pt-PT/admin/settings/social.json +trans.de = public/language/de/admin/settings/social.json +trans.hu = public/language/hu/admin/settings/social.json +trans.pt_BR = public/language/pt-BR/admin/settings/social.json +trans.ja = public/language/ja/admin/settings/social.json +trans.sq_AL = public/language/sq-AL/admin/settings/social.json +trans.zh_TW = public/language/zh-TW/admin/settings/social.json +trans.cs = public/language/cs/admin/settings/social.json +trans.en_US = public/language/en-US/admin/settings/social.json +trans.fi = public/language/fi/admin/settings/social.json +trans.nb = public/language/nb/admin/settings/social.json +trans.pl = public/language/pl/admin/settings/social.json +trans.th = public/language/th/admin/settings/social.json +trans.bg = public/language/bg/admin/settings/social.json +trans.lt = public/language/lt/admin/settings/social.json +trans.lv = public/language/lv/admin/settings/social.json +trans.ko = public/language/ko/admin/settings/social.json +trans.es = public/language/es/admin/settings/social.json +trans.fr = public/language/fr/admin/settings/social.json +trans.he = public/language/he/admin/settings/social.json +trans.fa_IR = public/language/fa-IR/admin/settings/social.json +trans.hy = public/language/hy/admin/settings/social.json +trans.ms = public/language/ms/admin/settings/social.json +trans.ru = public/language/ru/admin/settings/social.json +trans.sk = public/language/sk/admin/settings/social.json +trans.ar = public/language/ar/admin/settings/social.json +trans.el = public/language/el/admin/settings/social.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/social.json +trans.uk = public/language/uk/admin/settings/social.json +trans.sl = public/language/sl/admin/settings/social.json +trans.sr = public/language/sr/admin/settings/social.json +trans.tr = public/language/tr/admin/settings/social.json +trans.it = public/language/it/admin/settings/social.json +trans.ro = public/language/ro/admin/settings/social.json +trans.vi = public/language/vi/admin/settings/social.json +trans.zh_CN = public/language/zh-CN/admin/settings/social.json +trans.da = public/language/da/admin/settings/social.json +trans.et = public/language/et/admin/settings/social.json +trans.gl = public/language/gl/admin/settings/social.json + +[o:nodebb:p:nodebb:r:admin-settings-sockets] +file_filter = public/language//admin/settings/sockets.json +source_file = public/language/en-GB/admin/settings/sockets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/sockets.json +trans.en_US = public/language/en-US/admin/settings/sockets.json +trans.gl = public/language/gl/admin/settings/sockets.json +trans.ja = public/language/ja/admin/settings/sockets.json +trans.pt_BR = public/language/pt-BR/admin/settings/sockets.json +trans.sc = public/language/sc/admin/settings/sockets.json +trans.tr = public/language/tr/admin/settings/sockets.json +trans.da = public/language/da/admin/settings/sockets.json +trans.lv = public/language/lv/admin/settings/sockets.json +trans.sk = public/language/sk/admin/settings/sockets.json +trans.sr = public/language/sr/admin/settings/sockets.json +trans.vi = public/language/vi/admin/settings/sockets.json +trans.ar = public/language/ar/admin/settings/sockets.json +trans.cs = public/language/cs/admin/settings/sockets.json +trans.de = public/language/de/admin/settings/sockets.json +trans.hy = public/language/hy/admin/settings/sockets.json +trans.id = public/language/id/admin/settings/sockets.json +trans.rw = public/language/rw/admin/settings/sockets.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sockets.json +trans.fi = public/language/fi/admin/settings/sockets.json +trans.it = public/language/it/admin/settings/sockets.json +trans.ro = public/language/ro/admin/settings/sockets.json +trans.nb = public/language/nb/admin/settings/sockets.json +trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json +trans.bg = public/language/bg/admin/settings/sockets.json +trans.bn = public/language/bn/admin/settings/sockets.json +trans.es = public/language/es/admin/settings/sockets.json +trans.fr = public/language/fr/admin/settings/sockets.json +trans.hr = public/language/hr/admin/settings/sockets.json +trans.ko = public/language/ko/admin/settings/sockets.json +trans.zh_TW = public/language/zh-TW/admin/settings/sockets.json +trans.el = public/language/el/admin/settings/sockets.json +trans.he = public/language/he/admin/settings/sockets.json +trans.ms = public/language/ms/admin/settings/sockets.json +trans.sv = public/language/sv/admin/settings/sockets.json +trans.et = public/language/et/admin/settings/sockets.json +trans.pl = public/language/pl/admin/settings/sockets.json +trans.ru = public/language/ru/admin/settings/sockets.json +trans.zh_CN = public/language/zh-CN/admin/settings/sockets.json +trans.th = public/language/th/admin/settings/sockets.json +trans.fa_IR = public/language/fa-IR/admin/settings/sockets.json +trans.hu = public/language/hu/admin/settings/sockets.json +trans.lt = public/language/lt/admin/settings/sockets.json +trans.nl = public/language/nl/admin/settings/sockets.json +trans.pt_PT = public/language/pt-PT/admin/settings/sockets.json +trans.sl = public/language/sl/admin/settings/sockets.json + +[o:nodebb:p:nodebb:r:admin-settings-sounds] +file_filter = public/language//admin/settings/sounds.json +source_file = public/language/en-GB/admin/settings/sounds.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/sounds.json +trans.de = public/language/de/admin/settings/sounds.json +trans.el = public/language/el/admin/settings/sounds.json +trans.es = public/language/es/admin/settings/sounds.json +trans.he = public/language/he/admin/settings/sounds.json +trans.it = public/language/it/admin/settings/sounds.json +trans.pt_BR = public/language/pt-BR/admin/settings/sounds.json +trans.sq_AL = public/language/sq-AL/admin/settings/sounds.json +trans.vi = public/language/vi/admin/settings/sounds.json +trans.hr = public/language/hr/admin/settings/sounds.json +trans.hu = public/language/hu/admin/settings/sounds.json +trans.bg = public/language/bg/admin/settings/sounds.json +trans.ja = public/language/ja/admin/settings/sounds.json +trans.lt = public/language/lt/admin/settings/sounds.json +trans.nl = public/language/nl/admin/settings/sounds.json +trans.ru = public/language/ru/admin/settings/sounds.json +trans.cs = public/language/cs/admin/settings/sounds.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sounds.json +trans.fa_IR = public/language/fa-IR/admin/settings/sounds.json +trans.fi = public/language/fi/admin/settings/sounds.json +trans.nb = public/language/nb/admin/settings/sounds.json +trans.th = public/language/th/admin/settings/sounds.json +trans.ar = public/language/ar/admin/settings/sounds.json +trans.da = public/language/da/admin/settings/sounds.json +trans.gl = public/language/gl/admin/settings/sounds.json +trans.lv = public/language/lv/admin/settings/sounds.json +trans.ms = public/language/ms/admin/settings/sounds.json +trans.sc = public/language/sc/admin/settings/sounds.json +trans.sr = public/language/sr/admin/settings/sounds.json +trans.bn = public/language/bn/admin/settings/sounds.json +trans.en_US = public/language/en-US/admin/settings/sounds.json +trans.hy = public/language/hy/admin/settings/sounds.json +trans.sk = public/language/sk/admin/settings/sounds.json +trans.sl = public/language/sl/admin/settings/sounds.json +trans.uk = public/language/uk/admin/settings/sounds.json +trans.zh_CN = public/language/zh-CN/admin/settings/sounds.json +trans.et = public/language/et/admin/settings/sounds.json +trans.fr = public/language/fr/admin/settings/sounds.json +trans.ko = public/language/ko/admin/settings/sounds.json +trans.ro = public/language/ro/admin/settings/sounds.json +trans.zh_TW = public/language/zh-TW/admin/settings/sounds.json +trans.id = public/language/id/admin/settings/sounds.json +trans.pl = public/language/pl/admin/settings/sounds.json +trans.pt_PT = public/language/pt-PT/admin/settings/sounds.json +trans.rw = public/language/rw/admin/settings/sounds.json +trans.tr = public/language/tr/admin/settings/sounds.json + +[o:nodebb:p:nodebb:r:admin-settings-tags] +file_filter = public/language//admin/settings/tags.json +source_file = public/language/en-GB/admin/settings/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/settings/tags.json +trans.cs = public/language/cs/admin/settings/tags.json +trans.de = public/language/de/admin/settings/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/tags.json +trans.lv = public/language/lv/admin/settings/tags.json +trans.th = public/language/th/admin/settings/tags.json +trans.zh_TW = public/language/zh-TW/admin/settings/tags.json +trans.hu = public/language/hu/admin/settings/tags.json +trans.it = public/language/it/admin/settings/tags.json +trans.pt_BR = public/language/pt-BR/admin/settings/tags.json +trans.rw = public/language/rw/admin/settings/tags.json +trans.sk = public/language/sk/admin/settings/tags.json +trans.sv = public/language/sv/admin/settings/tags.json +trans.ar = public/language/ar/admin/settings/tags.json +trans.gl = public/language/gl/admin/settings/tags.json +trans.ja = public/language/ja/admin/settings/tags.json +trans.lt = public/language/lt/admin/settings/tags.json +trans.sc = public/language/sc/admin/settings/tags.json +trans.zh_CN = public/language/zh-CN/admin/settings/tags.json +trans.ro = public/language/ro/admin/settings/tags.json +trans.bn = public/language/bn/admin/settings/tags.json +trans.hr = public/language/hr/admin/settings/tags.json +trans.ko = public/language/ko/admin/settings/tags.json +trans.nb = public/language/nb/admin/settings/tags.json +trans.el = public/language/el/admin/settings/tags.json +trans.et = public/language/et/admin/settings/tags.json +trans.he = public/language/he/admin/settings/tags.json +trans.ms = public/language/ms/admin/settings/tags.json +trans.nl = public/language/nl/admin/settings/tags.json +trans.sl = public/language/sl/admin/settings/tags.json +trans.tr = public/language/tr/admin/settings/tags.json +trans.es = public/language/es/admin/settings/tags.json +trans.fr = public/language/fr/admin/settings/tags.json +trans.hy = public/language/hy/admin/settings/tags.json +trans.pl = public/language/pl/admin/settings/tags.json +trans.ru = public/language/ru/admin/settings/tags.json +trans.sq_AL = public/language/sq-AL/admin/settings/tags.json +trans.sr = public/language/sr/admin/settings/tags.json +trans.uk = public/language/uk/admin/settings/tags.json +trans.da = public/language/da/admin/settings/tags.json +trans.en_US = public/language/en-US/admin/settings/tags.json +trans.fa_IR = public/language/fa-IR/admin/settings/tags.json +trans.fi = public/language/fi/admin/settings/tags.json +trans.id = public/language/id/admin/settings/tags.json +trans.pt_PT = public/language/pt-PT/admin/settings/tags.json +trans.vi = public/language/vi/admin/settings/tags.json + +[o:nodebb:p:nodebb:r:admin-settings-uploads] +file_filter = public/language//admin/settings/uploads.json +source_file = public/language/en-GB/admin/settings/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/uploads.json +trans.it = public/language/it/admin/settings/uploads.json +trans.ko = public/language/ko/admin/settings/uploads.json +trans.sk = public/language/sk/admin/settings/uploads.json +trans.sq_AL = public/language/sq-AL/admin/settings/uploads.json +trans.fa_IR = public/language/fa-IR/admin/settings/uploads.json +trans.he = public/language/he/admin/settings/uploads.json +trans.ja = public/language/ja/admin/settings/uploads.json +trans.nb = public/language/nb/admin/settings/uploads.json +trans.nl = public/language/nl/admin/settings/uploads.json +trans.zh_TW = public/language/zh-TW/admin/settings/uploads.json +trans.ro = public/language/ro/admin/settings/uploads.json +trans.sl = public/language/sl/admin/settings/uploads.json +trans.da = public/language/da/admin/settings/uploads.json +trans.es = public/language/es/admin/settings/uploads.json +trans.et = public/language/et/admin/settings/uploads.json +trans.hr = public/language/hr/admin/settings/uploads.json +trans.id = public/language/id/admin/settings/uploads.json +trans.pt_BR = public/language/pt-BR/admin/settings/uploads.json +trans.uk = public/language/uk/admin/settings/uploads.json +trans.vi = public/language/vi/admin/settings/uploads.json +trans.th = public/language/th/admin/settings/uploads.json +trans.bg = public/language/bg/admin/settings/uploads.json +trans.el = public/language/el/admin/settings/uploads.json +trans.hu = public/language/hu/admin/settings/uploads.json +trans.lv = public/language/lv/admin/settings/uploads.json +trans.ms = public/language/ms/admin/settings/uploads.json +trans.pt_PT = public/language/pt-PT/admin/settings/uploads.json +trans.lt = public/language/lt/admin/settings/uploads.json +trans.bn = public/language/bn/admin/settings/uploads.json +trans.cs = public/language/cs/admin/settings/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/uploads.json +trans.fi = public/language/fi/admin/settings/uploads.json +trans.fr = public/language/fr/admin/settings/uploads.json +trans.hy = public/language/hy/admin/settings/uploads.json +trans.gl = public/language/gl/admin/settings/uploads.json +trans.ru = public/language/ru/admin/settings/uploads.json +trans.sr = public/language/sr/admin/settings/uploads.json +trans.sv = public/language/sv/admin/settings/uploads.json +trans.zh_CN = public/language/zh-CN/admin/settings/uploads.json +trans.de = public/language/de/admin/settings/uploads.json +trans.en_US = public/language/en-US/admin/settings/uploads.json +trans.pl = public/language/pl/admin/settings/uploads.json +trans.rw = public/language/rw/admin/settings/uploads.json +trans.sc = public/language/sc/admin/settings/uploads.json +trans.tr = public/language/tr/admin/settings/uploads.json + +[o:nodebb:p:nodebb:r:admin-settings-user] +file_filter = public/language//admin/settings/user.json +source_file = public/language/en-GB/admin/settings/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/admin/settings/user.json +trans.el = public/language/el/admin/settings/user.json +trans.he = public/language/he/admin/settings/user.json +trans.ro = public/language/ro/admin/settings/user.json +trans.sq_AL = public/language/sq-AL/admin/settings/user.json +trans.gl = public/language/gl/admin/settings/user.json +trans.hu = public/language/hu/admin/settings/user.json +trans.nb = public/language/nb/admin/settings/user.json +trans.sv = public/language/sv/admin/settings/user.json +trans.uk = public/language/uk/admin/settings/user.json +trans.cs = public/language/cs/admin/settings/user.json +trans.en_US = public/language/en-US/admin/settings/user.json +trans.fa_IR = public/language/fa-IR/admin/settings/user.json +trans.fi = public/language/fi/admin/settings/user.json +trans.lv = public/language/lv/admin/settings/user.json +trans.ms = public/language/ms/admin/settings/user.json +trans.pl = public/language/pl/admin/settings/user.json +trans.ru = public/language/ru/admin/settings/user.json +trans.zh_CN = public/language/zh-CN/admin/settings/user.json +trans.hr = public/language/hr/admin/settings/user.json +trans.id = public/language/id/admin/settings/user.json +trans.it = public/language/it/admin/settings/user.json +trans.sk = public/language/sk/admin/settings/user.json +trans.sl = public/language/sl/admin/settings/user.json +trans.sr = public/language/sr/admin/settings/user.json +trans.tr = public/language/tr/admin/settings/user.json +trans.vi = public/language/vi/admin/settings/user.json +trans.de = public/language/de/admin/settings/user.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/user.json +trans.hy = public/language/hy/admin/settings/user.json +trans.pt_PT = public/language/pt-PT/admin/settings/user.json +trans.th = public/language/th/admin/settings/user.json +trans.zh_TW = public/language/zh-TW/admin/settings/user.json +trans.bn = public/language/bn/admin/settings/user.json +trans.nl = public/language/nl/admin/settings/user.json +trans.pt_BR = public/language/pt-BR/admin/settings/user.json +trans.rw = public/language/rw/admin/settings/user.json +trans.bg = public/language/bg/admin/settings/user.json +trans.fr = public/language/fr/admin/settings/user.json +trans.ko = public/language/ko/admin/settings/user.json +trans.ar = public/language/ar/admin/settings/user.json +trans.es = public/language/es/admin/settings/user.json +trans.et = public/language/et/admin/settings/user.json +trans.ja = public/language/ja/admin/settings/user.json +trans.lt = public/language/lt/admin/settings/user.json +trans.sc = public/language/sc/admin/settings/user.json + +[o:nodebb:p:nodebb:r:admin-settings-web-crawler] +file_filter = public/language//admin/settings/web-crawler.json +source_file = public/language/en-GB/admin/settings/web-crawler.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/web-crawler.json +trans.es = public/language/es/admin/settings/web-crawler.json +trans.fr = public/language/fr/admin/settings/web-crawler.json +trans.ko = public/language/ko/admin/settings/web-crawler.json +trans.pl = public/language/pl/admin/settings/web-crawler.json +trans.tr = public/language/tr/admin/settings/web-crawler.json +trans.uk = public/language/uk/admin/settings/web-crawler.json +trans.bg = public/language/bg/admin/settings/web-crawler.json +trans.el = public/language/el/admin/settings/web-crawler.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/web-crawler.json +trans.fa_IR = public/language/fa-IR/admin/settings/web-crawler.json +trans.ms = public/language/ms/admin/settings/web-crawler.json +trans.th = public/language/th/admin/settings/web-crawler.json +trans.gl = public/language/gl/admin/settings/web-crawler.json +trans.id = public/language/id/admin/settings/web-crawler.json +trans.sk = public/language/sk/admin/settings/web-crawler.json +trans.rw = public/language/rw/admin/settings/web-crawler.json +trans.da = public/language/da/admin/settings/web-crawler.json +trans.hr = public/language/hr/admin/settings/web-crawler.json +trans.hu = public/language/hu/admin/settings/web-crawler.json +trans.ja = public/language/ja/admin/settings/web-crawler.json +trans.lv = public/language/lv/admin/settings/web-crawler.json +trans.nl = public/language/nl/admin/settings/web-crawler.json +trans.pt_BR = public/language/pt-BR/admin/settings/web-crawler.json +trans.vi = public/language/vi/admin/settings/web-crawler.json +trans.en_US = public/language/en-US/admin/settings/web-crawler.json +trans.et = public/language/et/admin/settings/web-crawler.json +trans.fi = public/language/fi/admin/settings/web-crawler.json +trans.sq_AL = public/language/sq-AL/admin/settings/web-crawler.json +trans.sv = public/language/sv/admin/settings/web-crawler.json +trans.ar = public/language/ar/admin/settings/web-crawler.json +trans.de = public/language/de/admin/settings/web-crawler.json +trans.hy = public/language/hy/admin/settings/web-crawler.json +trans.nb = public/language/nb/admin/settings/web-crawler.json +trans.ro = public/language/ro/admin/settings/web-crawler.json +trans.sr = public/language/sr/admin/settings/web-crawler.json +trans.zh_TW = public/language/zh-TW/admin/settings/web-crawler.json +trans.he = public/language/he/admin/settings/web-crawler.json +trans.it = public/language/it/admin/settings/web-crawler.json +trans.lt = public/language/lt/admin/settings/web-crawler.json +trans.ru = public/language/ru/admin/settings/web-crawler.json +trans.sl = public/language/sl/admin/settings/web-crawler.json +trans.zh_CN = public/language/zh-CN/admin/settings/web-crawler.json +trans.bn = public/language/bn/admin/settings/web-crawler.json +trans.pt_PT = public/language/pt-PT/admin/settings/web-crawler.json +trans.sc = public/language/sc/admin/settings/web-crawler.json + +[o:nodebb:p:nodebb:r:themes-harmony] +file_filter = public/language//themes/harmony.json +source_file = public/language/en-GB/themes/harmony.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/harmony.json +trans.bg = public/language/bg/themes/harmony.json +trans.hr = public/language/hr/themes/harmony.json +trans.hy = public/language/hy/themes/harmony.json +trans.sk = public/language/sk/themes/harmony.json +trans.sl = public/language/sl/themes/harmony.json +trans.sq_AL = public/language/sq-AL/themes/harmony.json +trans.sv = public/language/sv/themes/harmony.json +trans.vi = public/language/vi/themes/harmony.json +trans.da = public/language/da/themes/harmony.json +trans.en_US = public/language/en-US/themes/harmony.json +trans.gl = public/language/gl/themes/harmony.json +trans.ko = public/language/ko/themes/harmony.json +trans.lt = public/language/lt/themes/harmony.json +trans.pt_BR = public/language/pt-BR/themes/harmony.json +trans.hu = public/language/hu/themes/harmony.json +trans.lv = public/language/lv/themes/harmony.json +trans.ro = public/language/ro/themes/harmony.json +trans.ru = public/language/ru/themes/harmony.json +trans.sr = public/language/sr/themes/harmony.json +trans.bn = public/language/bn/themes/harmony.json +trans.he = public/language/he/themes/harmony.json +trans.nl = public/language/nl/themes/harmony.json +trans.sc = public/language/sc/themes/harmony.json +trans.zh_CN = public/language/zh-CN/themes/harmony.json +trans.fi = public/language/fi/themes/harmony.json +trans.ja = public/language/ja/themes/harmony.json +trans.nb = public/language/nb/themes/harmony.json +trans.pl = public/language/pl/themes/harmony.json +trans.zh_TW = public/language/zh-TW/themes/harmony.json +trans.ar = public/language/ar/themes/harmony.json +trans.cs = public/language/cs/themes/harmony.json +trans.fa_IR = public/language/fa-IR/themes/harmony.json +trans.ms = public/language/ms/themes/harmony.json +trans.pt_PT = public/language/pt-PT/themes/harmony.json +trans.tr = public/language/tr/themes/harmony.json +trans.en@pirate = public/language/en-x-pirate/themes/harmony.json +trans.fr = public/language/fr/themes/harmony.json +trans.id = public/language/id/themes/harmony.json +trans.uk = public/language/uk/themes/harmony.json +trans.de = public/language/de/themes/harmony.json +trans.el = public/language/el/themes/harmony.json +trans.es = public/language/es/themes/harmony.json +trans.et = public/language/et/themes/harmony.json +trans.it = public/language/it/themes/harmony.json +trans.rw = public/language/rw/themes/harmony.json + +[o:nodebb:p:nodebb:r:themes-persona] +file_filter = public/language//themes/persona.json +source_file = public/language/en-GB/themes/persona.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/persona.json +trans.bg = public/language/bg/themes/persona.json +trans.hr = public/language/hr/themes/persona.json +trans.hy = public/language/hy/themes/persona.json +trans.sk = public/language/sk/themes/persona.json +trans.sl = public/language/sl/themes/persona.json +trans.sq_AL = public/language/sq-AL/themes/persona.json +trans.sv = public/language/sv/themes/persona.json +trans.vi = public/language/vi/themes/persona.json +trans.da = public/language/da/themes/persona.json +trans.en_US = public/language/en-US/themes/persona.json +trans.gl = public/language/gl/themes/persona.json +trans.ko = public/language/ko/themes/persona.json +trans.lt = public/language/lt/themes/persona.json +trans.pt_BR = public/language/pt-BR/themes/persona.json +trans.hu = public/language/hu/themes/persona.json +trans.lv = public/language/lv/themes/persona.json +trans.ro = public/language/ro/themes/persona.json +trans.ru = public/language/ru/themes/persona.json +trans.sr = public/language/sr/themes/persona.json +trans.bn = public/language/bn/themes/persona.json +trans.he = public/language/he/themes/persona.json +trans.nl = public/language/nl/themes/persona.json +trans.sc = public/language/sc/themes/persona.json +trans.zh_CN = public/language/zh-CN/themes/persona.json +trans.fi = public/language/fi/themes/persona.json +trans.ja = public/language/ja/themes/persona.json +trans.nb = public/language/nb/themes/persona.json +trans.pl = public/language/pl/themes/persona.json +trans.zh_TW = public/language/zh-TW/themes/persona.json +trans.ar = public/language/ar/themes/persona.json +trans.cs = public/language/cs/themes/persona.json +trans.fa_IR = public/language/fa-IR/themes/persona.json +trans.ms = public/language/ms/themes/persona.json +trans.pt_PT = public/language/pt-PT/themes/persona.json +trans.tr = public/language/tr/themes/persona.json +trans.en@pirate = public/language/en-x-pirate/themes/persona.json +trans.fr = public/language/fr/themes/persona.json +trans.id = public/language/id/themes/persona.json +trans.uk = public/language/uk/themes/persona.json +trans.de = public/language/de/themes/persona.json +trans.el = public/language/el/themes/persona.json +trans.es = public/language/es/themes/persona.json +trans.et = public/language/et/themes/persona.json +trans.it = public/language/it/themes/persona.json +trans.rw = public/language/rw/themes/persona.json + + +[o:nodebb:p:nodebb:r:aria] +file_filter = public/language//aria.json +source_file = public/language/en-GB/aria.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/aria.json +trans.bg = public/language/bg/aria.json +trans.hr = public/language/hr/aria.json +trans.hy = public/language/hy/aria.json +trans.sk = public/language/sk/aria.json +trans.sl = public/language/sl/aria.json +trans.sq_AL = public/language/sq-AL/aria.json +trans.sv = public/language/sv/aria.json +trans.vi = public/language/vi/aria.json +trans.da = public/language/da/aria.json +trans.en_US = public/language/en-US/aria.json +trans.gl = public/language/gl/aria.json +trans.ko = public/language/ko/aria.json +trans.lt = public/language/lt/aria.json +trans.pt_BR = public/language/pt-BR/aria.json +trans.hu = public/language/hu/aria.json +trans.lv = public/language/lv/aria.json +trans.ro = public/language/ro/aria.json +trans.ru = public/language/ru/aria.json +trans.sr = public/language/sr/aria.json +trans.bn = public/language/bn/aria.json +trans.he = public/language/he/aria.json +trans.nl = public/language/nl/aria.json +trans.sc = public/language/sc/aria.json +trans.zh_CN = public/language/zh-CN/aria.json +trans.fi = public/language/fi/aria.json +trans.ja = public/language/ja/aria.json +trans.nb = public/language/nb/aria.json +trans.pl = public/language/pl/aria.json +trans.zh_TW = public/language/zh-TW/aria.json +trans.ar = public/language/ar/aria.json +trans.cs = public/language/cs/aria.json +trans.fa_IR = public/language/fa-IR/aria.json +trans.ms = public/language/ms/aria.json +trans.pt_PT = public/language/pt-PT/aria.json +trans.tr = public/language/tr/aria.json +trans.en@pirate = public/language/en-x-pirate/aria.json +trans.fr = public/language/fr/aria.json +trans.id = public/language/id/aria.json +trans.uk = public/language/uk/aria.json +trans.de = public/language/de/aria.json +trans.el = public/language/el/aria.json +trans.es = public/language/es/aria.json +trans.et = public/language/et/aria.json +trans.it = public/language/it/aria.json +trans.rw = public/language/rw/aria.json + +[o:nodebb:p:nodebb:r:category] +file_filter = public/language//category.json +source_file = public/language/en-GB/category.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/category.json +trans.bg = public/language/bg/category.json +trans.hr = public/language/hr/category.json +trans.hy = public/language/hy/category.json +trans.sk = public/language/sk/category.json +trans.sl = public/language/sl/category.json +trans.sq_AL = public/language/sq-AL/category.json +trans.sv = public/language/sv/category.json +trans.vi = public/language/vi/category.json +trans.da = public/language/da/category.json +trans.en_US = public/language/en-US/category.json +trans.gl = public/language/gl/category.json +trans.ko = public/language/ko/category.json +trans.lt = public/language/lt/category.json +trans.pt_BR = public/language/pt-BR/category.json +trans.hu = public/language/hu/category.json +trans.lv = public/language/lv/category.json +trans.ro = public/language/ro/category.json +trans.ru = public/language/ru/category.json +trans.sr = public/language/sr/category.json +trans.bn = public/language/bn/category.json +trans.he = public/language/he/category.json +trans.nl = public/language/nl/category.json +trans.sc = public/language/sc/category.json +trans.zh_CN = public/language/zh-CN/category.json +trans.fi = public/language/fi/category.json +trans.ja = public/language/ja/category.json +trans.nb = public/language/nb/category.json +trans.pl = public/language/pl/category.json +trans.zh_TW = public/language/zh-TW/category.json +trans.ar = public/language/ar/category.json +trans.cs = public/language/cs/category.json +trans.fa_IR = public/language/fa-IR/category.json +trans.ms = public/language/ms/category.json +trans.pt_PT = public/language/pt-PT/category.json +trans.tr = public/language/tr/category.json +trans.en@pirate = public/language/en-x-pirate/category.json +trans.fr = public/language/fr/category.json +trans.id = public/language/id/category.json +trans.uk = public/language/uk/category.json +trans.de = public/language/de/category.json +trans.el = public/language/el/category.json +trans.es = public/language/es/category.json +trans.et = public/language/et/category.json +trans.it = public/language/it/category.json +trans.rw = public/language/rw/category.json + +[o:nodebb:p:nodebb:r:email] +file_filter = public/language//email.json +source_file = public/language/en-GB/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sk = public/language/sk/email.json +trans.zh_TW = public/language/zh-TW/email.json +trans.el = public/language/el/email.json +trans.fa_IR = public/language/fa-IR/email.json +trans.fi = public/language/fi/email.json +trans.id = public/language/id/email.json +trans.ko = public/language/ko/email.json +trans.en@pirate = public/language/en-x-pirate/email.json +trans.it = public/language/it/email.json +trans.lv = public/language/lv/email.json +trans.uk = public/language/uk/email.json +trans.zh_CN = public/language/zh-CN/email.json +trans.sv = public/language/sv/email.json +trans.bn = public/language/bn/email.json +trans.cs = public/language/cs/email.json +trans.ms = public/language/ms/email.json +trans.ro = public/language/ro/email.json +trans.ru = public/language/ru/email.json +trans.de = public/language/de/email.json +trans.hu = public/language/hu/email.json +trans.hy = public/language/hy/email.json +trans.sl = public/language/sl/email.json +trans.th = public/language/th/email.json +trans.ar = public/language/ar/email.json +trans.es = public/language/es/email.json +trans.gl = public/language/gl/email.json +trans.he = public/language/he/email.json +trans.ja = public/language/ja/email.json +trans.bg = public/language/bg/email.json +trans.et = public/language/et/email.json +trans.hr = public/language/hr/email.json +trans.pl = public/language/pl/email.json +trans.da = public/language/da/email.json +trans.fr = public/language/fr/email.json +trans.lt = public/language/lt/email.json +trans.pt_PT = public/language/pt-PT/email.json +trans.sc = public/language/sc/email.json +trans.sq_AL = public/language/sq-AL/email.json +trans.sr = public/language/sr/email.json +trans.tr = public/language/tr/email.json +trans.en_US = public/language/en-US/email.json +trans.nb = public/language/nb/email.json +trans.nl = public/language/nl/email.json +trans.pt_BR = public/language/pt-BR/email.json +trans.rw = public/language/rw/email.json +trans.vi = public/language/vi/email.json + +[o:nodebb:p:nodebb:r:error] +file_filter = public/language//error.json +source_file = public/language/en-GB/error.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/error.json +trans.ko = public/language/ko/error.json +trans.lv = public/language/lv/error.json +trans.sk = public/language/sk/error.json +trans.cs = public/language/cs/error.json +trans.it = public/language/it/error.json +trans.nl = public/language/nl/error.json +trans.sc = public/language/sc/error.json +trans.sl = public/language/sl/error.json +trans.sq_AL = public/language/sq-AL/error.json +trans.tr = public/language/tr/error.json +trans.hu = public/language/hu/error.json +trans.fr = public/language/fr/error.json +trans.hy = public/language/hy/error.json +trans.zh_CN = public/language/zh-CN/error.json +trans.ar = public/language/ar/error.json +trans.et = public/language/et/error.json +trans.fi = public/language/fi/error.json +trans.he = public/language/he/error.json +trans.hr = public/language/hr/error.json +trans.lt = public/language/lt/error.json +trans.ru = public/language/ru/error.json +trans.rw = public/language/rw/error.json +trans.bn = public/language/bn/error.json +trans.vi = public/language/vi/error.json +trans.fa_IR = public/language/fa-IR/error.json +trans.gl = public/language/gl/error.json +trans.nb = public/language/nb/error.json +trans.pl = public/language/pl/error.json +trans.ro = public/language/ro/error.json +trans.uk = public/language/uk/error.json +trans.es = public/language/es/error.json +trans.el = public/language/el/error.json +trans.en@pirate = public/language/en-x-pirate/error.json +trans.en_US = public/language/en-US/error.json +trans.ms = public/language/ms/error.json +trans.pt_PT = public/language/pt-PT/error.json +trans.bg = public/language/bg/error.json +trans.pt_BR = public/language/pt-BR/error.json +trans.sv = public/language/sv/error.json +trans.zh_TW = public/language/zh-TW/error.json +trans.da = public/language/da/error.json +trans.ja = public/language/ja/error.json +trans.sr = public/language/sr/error.json +trans.th = public/language/th/error.json +trans.id = public/language/id/error.json + +[o:nodebb:p:nodebb:r:flags] +file_filter = public/language//flags.json +source_file = public/language/en-GB/flags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/flags.json +trans.ru = public/language/ru/flags.json +trans.sc = public/language/sc/flags.json +trans.fi = public/language/fi/flags.json +trans.hr = public/language/hr/flags.json +trans.lv = public/language/lv/flags.json +trans.ms = public/language/ms/flags.json +trans.ja = public/language/ja/flags.json +trans.nl = public/language/nl/flags.json +trans.pt_PT = public/language/pt-PT/flags.json +trans.th = public/language/th/flags.json +trans.el = public/language/el/flags.json +trans.en_US = public/language/en-US/flags.json +trans.gl = public/language/gl/flags.json +trans.hy = public/language/hy/flags.json +trans.vi = public/language/vi/flags.json +trans.rw = public/language/rw/flags.json +trans.sr = public/language/sr/flags.json +trans.zh_TW = public/language/zh-TW/flags.json +trans.sq_AL = public/language/sq-AL/flags.json +trans.sv = public/language/sv/flags.json +trans.fa_IR = public/language/fa-IR/flags.json +trans.id = public/language/id/flags.json +trans.ko = public/language/ko/flags.json +trans.pl = public/language/pl/flags.json +trans.de = public/language/de/flags.json +trans.en@pirate = public/language/en-x-pirate/flags.json +trans.he = public/language/he/flags.json +trans.zh_CN = public/language/zh-CN/flags.json +trans.lt = public/language/lt/flags.json +trans.da = public/language/da/flags.json +trans.es = public/language/es/flags.json +trans.et = public/language/et/flags.json +trans.hu = public/language/hu/flags.json +trans.tr = public/language/tr/flags.json +trans.bn = public/language/bn/flags.json +trans.it = public/language/it/flags.json +trans.pt_BR = public/language/pt-BR/flags.json +trans.sk = public/language/sk/flags.json +trans.ro = public/language/ro/flags.json +trans.sl = public/language/sl/flags.json +trans.ar = public/language/ar/flags.json +trans.bg = public/language/bg/flags.json +trans.cs = public/language/cs/flags.json +trans.fr = public/language/fr/flags.json + +[o:nodebb:p:nodebb:r:global] +file_filter = public/language//global.json +source_file = public/language/en-GB/global.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/global.json +trans.pl = public/language/pl/global.json +trans.ru = public/language/ru/global.json +trans.bn = public/language/bn/global.json +trans.fr = public/language/fr/global.json +trans.hr = public/language/hr/global.json +trans.hy = public/language/hy/global.json +trans.lv = public/language/lv/global.json +trans.fa_IR = public/language/fa-IR/global.json +trans.sl = public/language/sl/global.json +trans.uk = public/language/uk/global.json +trans.sc = public/language/sc/global.json +trans.sv = public/language/sv/global.json +trans.th = public/language/th/global.json +trans.zh_TW = public/language/zh-TW/global.json +trans.hu = public/language/hu/global.json +trans.sk = public/language/sk/global.json +trans.sr = public/language/sr/global.json +trans.tr = public/language/tr/global.json +trans.nb = public/language/nb/global.json +trans.pt_BR = public/language/pt-BR/global.json +trans.pt_PT = public/language/pt-PT/global.json +trans.bg = public/language/bg/global.json +trans.da = public/language/da/global.json +trans.fi = public/language/fi/global.json +trans.id = public/language/id/global.json +trans.lt = public/language/lt/global.json +trans.ro = public/language/ro/global.json +trans.de = public/language/de/global.json +trans.el = public/language/el/global.json +trans.vi = public/language/vi/global.json +trans.zh_CN = public/language/zh-CN/global.json +trans.en_US = public/language/en-US/global.json +trans.et = public/language/et/global.json +trans.gl = public/language/gl/global.json +trans.he = public/language/he/global.json +trans.ko = public/language/ko/global.json +trans.ja = public/language/ja/global.json +trans.nl = public/language/nl/global.json +trans.rw = public/language/rw/global.json +trans.ar = public/language/ar/global.json +trans.cs = public/language/cs/global.json +trans.en@pirate = public/language/en-x-pirate/global.json +trans.es = public/language/es/global.json +trans.it = public/language/it/global.json +trans.sq_AL = public/language/sq-AL/global.json + +[o:nodebb:p:nodebb:r:groups] +file_filter = public/language//groups.json +source_file = public/language/en-GB/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/groups.json +trans.de = public/language/de/groups.json +trans.es = public/language/es/groups.json +trans.sc = public/language/sc/groups.json +trans.sr = public/language/sr/groups.json +trans.da = public/language/da/groups.json +trans.en@pirate = public/language/en-x-pirate/groups.json +trans.hy = public/language/hy/groups.json +trans.pt_PT = public/language/pt-PT/groups.json +trans.ms = public/language/ms/groups.json +trans.nb = public/language/nb/groups.json +trans.ro = public/language/ro/groups.json +trans.vi = public/language/vi/groups.json +trans.fa_IR = public/language/fa-IR/groups.json +trans.he = public/language/he/groups.json +trans.hr = public/language/hr/groups.json +trans.lv = public/language/lv/groups.json +trans.bg = public/language/bg/groups.json +trans.bn = public/language/bn/groups.json +trans.ja = public/language/ja/groups.json +trans.tr = public/language/tr/groups.json +trans.zh_CN = public/language/zh-CN/groups.json +trans.ar = public/language/ar/groups.json +trans.cs = public/language/cs/groups.json +trans.it = public/language/it/groups.json +trans.sk = public/language/sk/groups.json +trans.fi = public/language/fi/groups.json +trans.fr = public/language/fr/groups.json +trans.sq_AL = public/language/sq-AL/groups.json +trans.th = public/language/th/groups.json +trans.id = public/language/id/groups.json +trans.sl = public/language/sl/groups.json +trans.sv = public/language/sv/groups.json +trans.uk = public/language/uk/groups.json +trans.el = public/language/el/groups.json +trans.et = public/language/et/groups.json +trans.gl = public/language/gl/groups.json +trans.hu = public/language/hu/groups.json +trans.pl = public/language/pl/groups.json +trans.pt_BR = public/language/pt-BR/groups.json +trans.ru = public/language/ru/groups.json +trans.rw = public/language/rw/groups.json +trans.en_US = public/language/en-US/groups.json +trans.ko = public/language/ko/groups.json +trans.lt = public/language/lt/groups.json +trans.nl = public/language/nl/groups.json + +[o:nodebb:p:nodebb:r:ip-blacklist] +file_filter = public/language//ip-blacklist.json +source_file = public/language/en-GB/ip-blacklist.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/ip-blacklist.json +trans.et = public/language/et/ip-blacklist.json +trans.fi = public/language/fi/ip-blacklist.json +trans.hr = public/language/hr/ip-blacklist.json +trans.hu = public/language/hu/ip-blacklist.json +trans.ru = public/language/ru/ip-blacklist.json +trans.sk = public/language/sk/ip-blacklist.json +trans.sq_AL = public/language/sq-AL/ip-blacklist.json +trans.zh_CN = public/language/zh-CN/ip-blacklist.json +trans.da = public/language/da/ip-blacklist.json +trans.en@pirate = public/language/en-x-pirate/ip-blacklist.json +trans.he = public/language/he/ip-blacklist.json +trans.hy = public/language/hy/ip-blacklist.json +trans.lv = public/language/lv/ip-blacklist.json +trans.pt_BR = public/language/pt-BR/ip-blacklist.json +trans.sc = public/language/sc/ip-blacklist.json +trans.ar = public/language/ar/ip-blacklist.json +trans.fa_IR = public/language/fa-IR/ip-blacklist.json +trans.fr = public/language/fr/ip-blacklist.json +trans.gl = public/language/gl/ip-blacklist.json +trans.nb = public/language/nb/ip-blacklist.json +trans.sv = public/language/sv/ip-blacklist.json +trans.th = public/language/th/ip-blacklist.json +trans.bn = public/language/bn/ip-blacklist.json +trans.en_US = public/language/en-US/ip-blacklist.json +trans.ja = public/language/ja/ip-blacklist.json +trans.ms = public/language/ms/ip-blacklist.json +trans.nl = public/language/nl/ip-blacklist.json +trans.pt_PT = public/language/pt-PT/ip-blacklist.json +trans.ro = public/language/ro/ip-blacklist.json +trans.es = public/language/es/ip-blacklist.json +trans.id = public/language/id/ip-blacklist.json +trans.it = public/language/it/ip-blacklist.json +trans.uk = public/language/uk/ip-blacklist.json +trans.vi = public/language/vi/ip-blacklist.json +trans.zh_TW = public/language/zh-TW/ip-blacklist.json +trans.bg = public/language/bg/ip-blacklist.json +trans.de = public/language/de/ip-blacklist.json +trans.sl = public/language/sl/ip-blacklist.json +trans.pl = public/language/pl/ip-blacklist.json +trans.rw = public/language/rw/ip-blacklist.json +trans.cs = public/language/cs/ip-blacklist.json +trans.el = public/language/el/ip-blacklist.json +trans.ko = public/language/ko/ip-blacklist.json +trans.lt = public/language/lt/ip-blacklist.json +trans.tr = public/language/tr/ip-blacklist.json + +[o:nodebb:p:nodebb:r:language-1] +file_filter = public/language//language.json +source_file = public/language/en-GB/language.json +source_lang = en_GB +type = KEYVALUEJSON +trans.lt = public/language/lt/language.json +trans.vi = public/language/vi/language.json +trans.sr = public/language/sr/language.json +trans.tr = public/language/tr/language.json +trans.uk = public/language/uk/language.json +trans.bg = public/language/bg/language.json +trans.da = public/language/da/language.json +trans.en@pirate = public/language/en-x-pirate/language.json +trans.hr = public/language/hr/language.json +trans.rw = public/language/rw/language.json +trans.en_US = public/language/en-US/language.json +trans.et = public/language/et/language.json +trans.ja = public/language/ja/language.json +trans.nb = public/language/nb/language.json +trans.sk = public/language/sk/language.json +trans.el = public/language/el/language.json +trans.es = public/language/es/language.json +trans.fi = public/language/fi/language.json +trans.it = public/language/it/language.json +trans.pt_PT = public/language/pt-PT/language.json +trans.ro = public/language/ro/language.json +trans.th = public/language/th/language.json +trans.ar = public/language/ar/language.json +trans.bn = public/language/bn/language.json +trans.de = public/language/de/language.json +trans.ko = public/language/ko/language.json +trans.pl = public/language/pl/language.json +trans.gl = public/language/gl/language.json +trans.sq_AL = public/language/sq-AL/language.json +trans.zh_TW = public/language/zh-TW/language.json +trans.nl = public/language/nl/language.json +trans.ru = public/language/ru/language.json +trans.sc = public/language/sc/language.json +trans.cs = public/language/cs/language.json +trans.fr = public/language/fr/language.json +trans.he = public/language/he/language.json +trans.id = public/language/id/language.json +trans.lv = public/language/lv/language.json +trans.sl = public/language/sl/language.json +trans.sv = public/language/sv/language.json +trans.zh_CN = public/language/zh-CN/language.json +trans.fa_IR = public/language/fa-IR/language.json +trans.hu = public/language/hu/language.json +trans.hy = public/language/hy/language.json +trans.ms = public/language/ms/language.json +trans.pt_BR = public/language/pt-BR/language.json + +[o:nodebb:p:nodebb:r:login] +file_filter = public/language//login.json +source_file = public/language/en-GB/login.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/login.json +trans.cs = public/language/cs/login.json +trans.el = public/language/el/login.json +trans.ja = public/language/ja/login.json +trans.pt_BR = public/language/pt-BR/login.json +trans.ro = public/language/ro/login.json +trans.zh_TW = public/language/zh-TW/login.json +trans.bg = public/language/bg/login.json +trans.pt_PT = public/language/pt-PT/login.json +trans.sr = public/language/sr/login.json +trans.vi = public/language/vi/login.json +trans.zh_CN = public/language/zh-CN/login.json +trans.pl = public/language/pl/login.json +trans.gl = public/language/gl/login.json +trans.ko = public/language/ko/login.json +trans.lv = public/language/lv/login.json +trans.sl = public/language/sl/login.json +trans.sq_AL = public/language/sq-AL/login.json +trans.sv = public/language/sv/login.json +trans.tr = public/language/tr/login.json +trans.es = public/language/es/login.json +trans.sk = public/language/sk/login.json +trans.uk = public/language/uk/login.json +trans.it = public/language/it/login.json +trans.da = public/language/da/login.json +trans.fa_IR = public/language/fa-IR/login.json +trans.fi = public/language/fi/login.json +trans.fr = public/language/fr/login.json +trans.he = public/language/he/login.json +trans.hr = public/language/hr/login.json +trans.ar = public/language/ar/login.json +trans.en_US = public/language/en-US/login.json +trans.hu = public/language/hu/login.json +trans.ms = public/language/ms/login.json +trans.en@pirate = public/language/en-x-pirate/login.json +trans.hy = public/language/hy/login.json +trans.id = public/language/id/login.json +trans.nb = public/language/nb/login.json +trans.ru = public/language/ru/login.json +trans.rw = public/language/rw/login.json +trans.th = public/language/th/login.json +trans.et = public/language/et/login.json +trans.lt = public/language/lt/login.json +trans.nl = public/language/nl/login.json +trans.sc = public/language/sc/login.json +trans.de = public/language/de/login.json + +[o:nodebb:p:nodebb:r:modules] +file_filter = public/language//modules.json +source_file = public/language/en-GB/modules.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sl = public/language/sl/modules.json +trans.sq_AL = public/language/sq-AL/modules.json +trans.da = public/language/da/modules.json +trans.et = public/language/et/modules.json +trans.fr = public/language/fr/modules.json +trans.lt = public/language/lt/modules.json +trans.ms = public/language/ms/modules.json +trans.sk = public/language/sk/modules.json +trans.vi = public/language/vi/modules.json +trans.fa_IR = public/language/fa-IR/modules.json +trans.hr = public/language/hr/modules.json +trans.lv = public/language/lv/modules.json +trans.nb = public/language/nb/modules.json +trans.ro = public/language/ro/modules.json +trans.sv = public/language/sv/modules.json +trans.en@pirate = public/language/en-x-pirate/modules.json +trans.tr = public/language/tr/modules.json +trans.cs = public/language/cs/modules.json +trans.de = public/language/de/modules.json +trans.fi = public/language/fi/modules.json +trans.he = public/language/he/modules.json +trans.hy = public/language/hy/modules.json +trans.sr = public/language/sr/modules.json +trans.el = public/language/el/modules.json +trans.hu = public/language/hu/modules.json +trans.ko = public/language/ko/modules.json +trans.es = public/language/es/modules.json +trans.id = public/language/id/modules.json +trans.nl = public/language/nl/modules.json +trans.sc = public/language/sc/modules.json +trans.th = public/language/th/modules.json +trans.zh_TW = public/language/zh-TW/modules.json +trans.bg = public/language/bg/modules.json +trans.bn = public/language/bn/modules.json +trans.en_US = public/language/en-US/modules.json +trans.it = public/language/it/modules.json +trans.pl = public/language/pl/modules.json +trans.uk = public/language/uk/modules.json +trans.rw = public/language/rw/modules.json +trans.zh_CN = public/language/zh-CN/modules.json +trans.ar = public/language/ar/modules.json +trans.gl = public/language/gl/modules.json +trans.ja = public/language/ja/modules.json +trans.pt_BR = public/language/pt-BR/modules.json +trans.pt_PT = public/language/pt-PT/modules.json +trans.ru = public/language/ru/modules.json + +[o:nodebb:p:nodebb:r:notifications] +file_filter = public/language//notifications.json +source_file = public/language/en-GB/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/notifications.json +trans.sq_AL = public/language/sq-AL/notifications.json +trans.el = public/language/el/notifications.json +trans.en_US = public/language/en-US/notifications.json +trans.ja = public/language/ja/notifications.json +trans.pl = public/language/pl/notifications.json +trans.sr = public/language/sr/notifications.json +trans.th = public/language/th/notifications.json +trans.tr = public/language/tr/notifications.json +trans.zh_CN = public/language/zh-CN/notifications.json +trans.cs = public/language/cs/notifications.json +trans.de = public/language/de/notifications.json +trans.fa_IR = public/language/fa-IR/notifications.json +trans.sl = public/language/sl/notifications.json +trans.sc = public/language/sc/notifications.json +trans.uk = public/language/uk/notifications.json +trans.bn = public/language/bn/notifications.json +trans.fi = public/language/fi/notifications.json +trans.lt = public/language/lt/notifications.json +trans.pt_PT = public/language/pt-PT/notifications.json +trans.es = public/language/es/notifications.json +trans.gl = public/language/gl/notifications.json +trans.sv = public/language/sv/notifications.json +trans.zh_TW = public/language/zh-TW/notifications.json +trans.pt_BR = public/language/pt-BR/notifications.json +trans.rw = public/language/rw/notifications.json +trans.lv = public/language/lv/notifications.json +trans.bg = public/language/bg/notifications.json +trans.he = public/language/he/notifications.json +trans.hu = public/language/hu/notifications.json +trans.it = public/language/it/notifications.json +trans.nl = public/language/nl/notifications.json +trans.ro = public/language/ro/notifications.json +trans.sk = public/language/sk/notifications.json +trans.vi = public/language/vi/notifications.json +trans.et = public/language/et/notifications.json +trans.hy = public/language/hy/notifications.json +trans.ko = public/language/ko/notifications.json +trans.ms = public/language/ms/notifications.json +trans.hr = public/language/hr/notifications.json +trans.id = public/language/id/notifications.json +trans.nb = public/language/nb/notifications.json +trans.ar = public/language/ar/notifications.json +trans.da = public/language/da/notifications.json +trans.en@pirate = public/language/en-x-pirate/notifications.json +trans.fr = public/language/fr/notifications.json + +[o:nodebb:p:nodebb:r:pages] +file_filter = public/language//pages.json +source_file = public/language/en-GB/pages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.he = public/language/he/pages.json +trans.nb = public/language/nb/pages.json +trans.sv = public/language/sv/pages.json +trans.pt_BR = public/language/pt-BR/pages.json +trans.tr = public/language/tr/pages.json +trans.zh_TW = public/language/zh-TW/pages.json +trans.bn = public/language/bn/pages.json +trans.gl = public/language/gl/pages.json +trans.hr = public/language/hr/pages.json +trans.id = public/language/id/pages.json +trans.lt = public/language/lt/pages.json +trans.zh_CN = public/language/zh-CN/pages.json +trans.bg = public/language/bg/pages.json +trans.et = public/language/et/pages.json +trans.it = public/language/it/pages.json +trans.ro = public/language/ro/pages.json +trans.sl = public/language/sl/pages.json +trans.sk = public/language/sk/pages.json +trans.sr = public/language/sr/pages.json +trans.uk = public/language/uk/pages.json +trans.de = public/language/de/pages.json +trans.en@pirate = public/language/en-x-pirate/pages.json +trans.en_US = public/language/en-US/pages.json +trans.pt_PT = public/language/pt-PT/pages.json +trans.rw = public/language/rw/pages.json +trans.th = public/language/th/pages.json +trans.vi = public/language/vi/pages.json +trans.hu = public/language/hu/pages.json +trans.hy = public/language/hy/pages.json +trans.nl = public/language/nl/pages.json +trans.ru = public/language/ru/pages.json +trans.sc = public/language/sc/pages.json +trans.cs = public/language/cs/pages.json +trans.fi = public/language/fi/pages.json +trans.ko = public/language/ko/pages.json +trans.lv = public/language/lv/pages.json +trans.sq_AL = public/language/sq-AL/pages.json +trans.ar = public/language/ar/pages.json +trans.da = public/language/da/pages.json +trans.es = public/language/es/pages.json +trans.pl = public/language/pl/pages.json +trans.el = public/language/el/pages.json +trans.fa_IR = public/language/fa-IR/pages.json +trans.fr = public/language/fr/pages.json +trans.ja = public/language/ja/pages.json +trans.ms = public/language/ms/pages.json + +[o:nodebb:p:nodebb:r:post-queue] +file_filter = public/language//post-queue.json +source_file = public/language/en-GB/post-queue.json +source_lang = en_GB +type = KEYVALUEJSON +trans.it = public/language/it/post-queue.json +trans.ko = public/language/ko/post-queue.json +trans.lv = public/language/lv/post-queue.json +trans.nl = public/language/nl/post-queue.json +trans.rw = public/language/rw/post-queue.json +trans.da = public/language/da/post-queue.json +trans.de = public/language/de/post-queue.json +trans.el = public/language/el/post-queue.json +trans.sk = public/language/sk/post-queue.json +trans.sc = public/language/sc/post-queue.json +trans.sr = public/language/sr/post-queue.json +trans.tr = public/language/tr/post-queue.json +trans.uk = public/language/uk/post-queue.json +trans.ja = public/language/ja/post-queue.json +trans.ms = public/language/ms/post-queue.json +trans.ru = public/language/ru/post-queue.json +trans.fr = public/language/fr/post-queue.json +trans.hu = public/language/hu/post-queue.json +trans.lt = public/language/lt/post-queue.json +trans.pl = public/language/pl/post-queue.json +trans.ro = public/language/ro/post-queue.json +trans.bn = public/language/bn/post-queue.json +trans.en@pirate = public/language/en-x-pirate/post-queue.json +trans.fa_IR = public/language/fa-IR/post-queue.json +trans.sl = public/language/sl/post-queue.json +trans.vi = public/language/vi/post-queue.json +trans.zh_CN = public/language/zh-CN/post-queue.json +trans.id = public/language/id/post-queue.json +trans.en_US = public/language/en-US/post-queue.json +trans.sq_AL = public/language/sq-AL/post-queue.json +trans.sv = public/language/sv/post-queue.json +trans.zh_TW = public/language/zh-TW/post-queue.json +trans.ar = public/language/ar/post-queue.json +trans.bg = public/language/bg/post-queue.json +trans.cs = public/language/cs/post-queue.json +trans.hr = public/language/hr/post-queue.json +trans.pt_BR = public/language/pt-BR/post-queue.json +trans.th = public/language/th/post-queue.json +trans.es = public/language/es/post-queue.json +trans.et = public/language/et/post-queue.json +trans.gl = public/language/gl/post-queue.json +trans.hy = public/language/hy/post-queue.json +trans.pt_PT = public/language/pt-PT/post-queue.json +trans.fi = public/language/fi/post-queue.json +trans.he = public/language/he/post-queue.json +trans.nb = public/language/nb/post-queue.json + +[o:nodebb:p:nodebb:r:recent] +file_filter = public/language//recent.json +source_file = public/language/en-GB/recent.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/recent.json +trans.sr = public/language/sr/recent.json +trans.sk = public/language/sk/recent.json +trans.uk = public/language/uk/recent.json +trans.bg = public/language/bg/recent.json +trans.cs = public/language/cs/recent.json +trans.da = public/language/da/recent.json +trans.hy = public/language/hy/recent.json +trans.id = public/language/id/recent.json +trans.lv = public/language/lv/recent.json +trans.ar = public/language/ar/recent.json +trans.de = public/language/de/recent.json +trans.es = public/language/es/recent.json +trans.fa_IR = public/language/fa-IR/recent.json +trans.gl = public/language/gl/recent.json +trans.hu = public/language/hu/recent.json +trans.lt = public/language/lt/recent.json +trans.pt_BR = public/language/pt-BR/recent.json +trans.ru = public/language/ru/recent.json +trans.vi = public/language/vi/recent.json +trans.rw = public/language/rw/recent.json +trans.sl = public/language/sl/recent.json +trans.el = public/language/el/recent.json +trans.en_US = public/language/en-US/recent.json +trans.he = public/language/he/recent.json +trans.hr = public/language/hr/recent.json +trans.ro = public/language/ro/recent.json +trans.tr = public/language/tr/recent.json +trans.zh_CN = public/language/zh-CN/recent.json +trans.bn = public/language/bn/recent.json +trans.en@pirate = public/language/en-x-pirate/recent.json +trans.ja = public/language/ja/recent.json +trans.nb = public/language/nb/recent.json +trans.nl = public/language/nl/recent.json +trans.sv = public/language/sv/recent.json +trans.th = public/language/th/recent.json +trans.fr = public/language/fr/recent.json +trans.it = public/language/it/recent.json +trans.ms = public/language/ms/recent.json +trans.pl = public/language/pl/recent.json +trans.pt_PT = public/language/pt-PT/recent.json +trans.et = public/language/et/recent.json +trans.fi = public/language/fi/recent.json +trans.ko = public/language/ko/recent.json +trans.sc = public/language/sc/recent.json +trans.zh_TW = public/language/zh-TW/recent.json + +[o:nodebb:p:nodebb:r:register] +file_filter = public/language//register.json +source_file = public/language/en-GB/register.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/register.json +trans.tr = public/language/tr/register.json +trans.et = public/language/et/register.json +trans.he = public/language/he/register.json +trans.lv = public/language/lv/register.json +trans.nl = public/language/nl/register.json +trans.sc = public/language/sc/register.json +trans.en@pirate = public/language/en-x-pirate/register.json +trans.es = public/language/es/register.json +trans.pl = public/language/pl/register.json +trans.sl = public/language/sl/register.json +trans.uk = public/language/uk/register.json +trans.pt_PT = public/language/pt-PT/register.json +trans.ar = public/language/ar/register.json +trans.bg = public/language/bg/register.json +trans.de = public/language/de/register.json +trans.hr = public/language/hr/register.json +trans.nb = public/language/nb/register.json +trans.gl = public/language/gl/register.json +trans.sk = public/language/sk/register.json +trans.hy = public/language/hy/register.json +trans.ko = public/language/ko/register.json +trans.ms = public/language/ms/register.json +trans.ro = public/language/ro/register.json +trans.rw = public/language/rw/register.json +trans.zh_CN = public/language/zh-CN/register.json +trans.fi = public/language/fi/register.json +trans.it = public/language/it/register.json +trans.ru = public/language/ru/register.json +trans.sr = public/language/sr/register.json +trans.vi = public/language/vi/register.json +trans.sv = public/language/sv/register.json +trans.zh_TW = public/language/zh-TW/register.json +trans.bn = public/language/bn/register.json +trans.cs = public/language/cs/register.json +trans.fa_IR = public/language/fa-IR/register.json +trans.hu = public/language/hu/register.json +trans.lt = public/language/lt/register.json +trans.ja = public/language/ja/register.json +trans.pt_BR = public/language/pt-BR/register.json +trans.th = public/language/th/register.json +trans.da = public/language/da/register.json +trans.el = public/language/el/register.json +trans.en_US = public/language/en-US/register.json +trans.fr = public/language/fr/register.json +trans.id = public/language/id/register.json + +[o:nodebb:p:nodebb:r:reset_password] +file_filter = public/language//reset_password.json +source_file = public/language/en-GB/reset_password.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/reset_password.json +trans.fr = public/language/fr/reset_password.json +trans.hr = public/language/hr/reset_password.json +trans.hy = public/language/hy/reset_password.json +trans.ja = public/language/ja/reset_password.json +trans.pt_PT = public/language/pt-PT/reset_password.json +trans.zh_CN = public/language/zh-CN/reset_password.json +trans.sv = public/language/sv/reset_password.json +trans.de = public/language/de/reset_password.json +trans.fa_IR = public/language/fa-IR/reset_password.json +trans.gl = public/language/gl/reset_password.json +trans.hu = public/language/hu/reset_password.json +trans.id = public/language/id/reset_password.json +trans.rw = public/language/rw/reset_password.json +trans.sc = public/language/sc/reset_password.json +trans.vi = public/language/vi/reset_password.json +trans.bn = public/language/bn/reset_password.json +trans.he = public/language/he/reset_password.json +trans.ro = public/language/ro/reset_password.json +trans.sq_AL = public/language/sq-AL/reset_password.json +trans.ar = public/language/ar/reset_password.json +trans.cs = public/language/cs/reset_password.json +trans.ko = public/language/ko/reset_password.json +trans.ms = public/language/ms/reset_password.json +trans.pt_BR = public/language/pt-BR/reset_password.json +trans.sr = public/language/sr/reset_password.json +trans.tr = public/language/tr/reset_password.json +trans.ru = public/language/ru/reset_password.json +trans.zh_TW = public/language/zh-TW/reset_password.json +trans.da = public/language/da/reset_password.json +trans.en@pirate = public/language/en-x-pirate/reset_password.json +trans.en_US = public/language/en-US/reset_password.json +trans.lt = public/language/lt/reset_password.json +trans.lv = public/language/lv/reset_password.json +trans.nb = public/language/nb/reset_password.json +trans.sk = public/language/sk/reset_password.json +trans.el = public/language/el/reset_password.json +trans.es = public/language/es/reset_password.json +trans.et = public/language/et/reset_password.json +trans.uk = public/language/uk/reset_password.json +trans.fi = public/language/fi/reset_password.json +trans.it = public/language/it/reset_password.json +trans.nl = public/language/nl/reset_password.json +trans.pl = public/language/pl/reset_password.json +trans.sl = public/language/sl/reset_password.json +trans.th = public/language/th/reset_password.json + +[o:nodebb:p:nodebb:r:rewards] +file_filter = public/language//rewards.json +source_file = public/language/en-GB/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/rewards.json +trans.fr = public/language/fr/rewards.json +trans.hr = public/language/hr/rewards.json +trans.hy = public/language/hy/rewards.json +trans.ja = public/language/ja/rewards.json +trans.pt_PT = public/language/pt-PT/rewards.json +trans.zh_CN = public/language/zh-CN/rewards.json +trans.sv = public/language/sv/rewards.json +trans.de = public/language/de/rewards.json +trans.fa_IR = public/language/fa-IR/rewards.json +trans.gl = public/language/gl/rewards.json +trans.hu = public/language/hu/rewards.json +trans.id = public/language/id/rewards.json +trans.rw = public/language/rw/rewards.json +trans.sc = public/language/sc/rewards.json +trans.vi = public/language/vi/rewards.json +trans.bn = public/language/bn/rewards.json +trans.he = public/language/he/rewards.json +trans.ro = public/language/ro/rewards.json +trans.sq_AL = public/language/sq-AL/rewards.json +trans.ar = public/language/ar/rewards.json +trans.cs = public/language/cs/rewards.json +trans.ko = public/language/ko/rewards.json +trans.ms = public/language/ms/rewards.json +trans.pt_BR = public/language/pt-BR/rewards.json +trans.sr = public/language/sr/rewards.json +trans.tr = public/language/tr/rewards.json +trans.ru = public/language/ru/rewards.json +trans.zh_TW = public/language/zh-TW/rewards.json +trans.da = public/language/da/rewards.json +trans.en@pirate = public/language/en-x-pirate/rewards.json +trans.en_US = public/language/en-US/rewards.json +trans.lt = public/language/lt/rewards.json +trans.lv = public/language/lv/rewards.json +trans.nb = public/language/nb/rewards.json +trans.sk = public/language/sk/rewards.json +trans.el = public/language/el/rewards.json +trans.es = public/language/es/rewards.json +trans.et = public/language/et/rewards.json +trans.uk = public/language/uk/rewards.json +trans.fi = public/language/fi/rewards.json +trans.it = public/language/it/rewards.json +trans.nl = public/language/nl/rewards.json +trans.pl = public/language/pl/rewards.json +trans.sl = public/language/sl/rewards.json +trans.th = public/language/th/rewards.json + +[o:nodebb:p:nodebb:r:search] +file_filter = public/language//search.json +source_file = public/language/en-GB/search.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/search.json +trans.en_US = public/language/en-US/search.json +trans.ms = public/language/ms/search.json +trans.hr = public/language/hr/search.json +trans.hu = public/language/hu/search.json +trans.id = public/language/id/search.json +trans.bg = public/language/bg/search.json +trans.de = public/language/de/search.json +trans.en@pirate = public/language/en-x-pirate/search.json +trans.fa_IR = public/language/fa-IR/search.json +trans.fi = public/language/fi/search.json +trans.sc = public/language/sc/search.json +trans.sk = public/language/sk/search.json +trans.sl = public/language/sl/search.json +trans.sq_AL = public/language/sq-AL/search.json +trans.sr = public/language/sr/search.json +trans.bn = public/language/bn/search.json +trans.ja = public/language/ja/search.json +trans.ko = public/language/ko/search.json +trans.pl = public/language/pl/search.json +trans.ro = public/language/ro/search.json +trans.zh_TW = public/language/zh-TW/search.json +trans.cs = public/language/cs/search.json +trans.he = public/language/he/search.json +trans.nb = public/language/nb/search.json +trans.zh_CN = public/language/zh-CN/search.json +trans.lv = public/language/lv/search.json +trans.rw = public/language/rw/search.json +trans.sv = public/language/sv/search.json +trans.ru = public/language/ru/search.json +trans.tr = public/language/tr/search.json +trans.uk = public/language/uk/search.json +trans.el = public/language/el/search.json +trans.fr = public/language/fr/search.json +trans.gl = public/language/gl/search.json +trans.it = public/language/it/search.json +trans.pt_BR = public/language/pt-BR/search.json +trans.nl = public/language/nl/search.json +trans.pt_PT = public/language/pt-PT/search.json +trans.th = public/language/th/search.json +trans.vi = public/language/vi/search.json +trans.ar = public/language/ar/search.json +trans.es = public/language/es/search.json +trans.et = public/language/et/search.json +trans.hy = public/language/hy/search.json +trans.lt = public/language/lt/search.json + +[o:nodebb:p:nodebb:r:social] +file_filter = public/language//social.json +source_file = public/language/en-GB/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/social.json +trans.en_US = public/language/en-US/social.json +trans.ms = public/language/ms/social.json +trans.hr = public/language/hr/social.json +trans.hu = public/language/hu/social.json +trans.id = public/language/id/social.json +trans.bg = public/language/bg/social.json +trans.de = public/language/de/social.json +trans.en@pirate = public/language/en-x-pirate/social.json +trans.fa_IR = public/language/fa-IR/social.json +trans.fi = public/language/fi/social.json +trans.sc = public/language/sc/social.json +trans.sk = public/language/sk/social.json +trans.sl = public/language/sl/social.json +trans.sq_AL = public/language/sq-AL/social.json +trans.sr = public/language/sr/social.json +trans.bn = public/language/bn/social.json +trans.ja = public/language/ja/social.json +trans.ko = public/language/ko/social.json +trans.pl = public/language/pl/social.json +trans.ro = public/language/ro/social.json +trans.zh_TW = public/language/zh-TW/social.json +trans.cs = public/language/cs/social.json +trans.he = public/language/he/social.json +trans.nb = public/language/nb/social.json +trans.zh_CN = public/language/zh-CN/social.json +trans.lv = public/language/lv/social.json +trans.rw = public/language/rw/social.json +trans.sv = public/language/sv/social.json +trans.ru = public/language/ru/social.json +trans.tr = public/language/tr/social.json +trans.uk = public/language/uk/social.json +trans.el = public/language/el/social.json +trans.fr = public/language/fr/social.json +trans.gl = public/language/gl/social.json +trans.it = public/language/it/social.json +trans.pt_BR = public/language/pt-BR/social.json +trans.nl = public/language/nl/social.json +trans.pt_PT = public/language/pt-PT/social.json +trans.th = public/language/th/social.json +trans.vi = public/language/vi/social.json +trans.ar = public/language/ar/social.json +trans.es = public/language/es/social.json +trans.et = public/language/et/social.json +trans.hy = public/language/hy/social.json +trans.lt = public/language/lt/social.json + +[o:nodebb:p:nodebb:r:success] +file_filter = public/language//success.json +source_file = public/language/en-GB/success.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/success.json +trans.en@pirate = public/language/en-x-pirate/success.json +trans.es = public/language/es/success.json +trans.he = public/language/he/success.json +trans.hy = public/language/hy/success.json +trans.ja = public/language/ja/success.json +trans.ko = public/language/ko/success.json +trans.pl = public/language/pl/success.json +trans.de = public/language/de/success.json +trans.fa_IR = public/language/fa-IR/success.json +trans.ro = public/language/ro/success.json +trans.en_US = public/language/en-US/success.json +trans.lt = public/language/lt/success.json +trans.ru = public/language/ru/success.json +trans.sq_AL = public/language/sq-AL/success.json +trans.vi = public/language/vi/success.json +trans.bg = public/language/bg/success.json +trans.hr = public/language/hr/success.json +trans.ms = public/language/ms/success.json +trans.th = public/language/th/success.json +trans.zh_CN = public/language/zh-CN/success.json +trans.bn = public/language/bn/success.json +trans.fr = public/language/fr/success.json +trans.hu = public/language/hu/success.json +trans.id = public/language/id/success.json +trans.rw = public/language/rw/success.json +trans.sl = public/language/sl/success.json +trans.zh_TW = public/language/zh-TW/success.json +trans.ar = public/language/ar/success.json +trans.et = public/language/et/success.json +trans.it = public/language/it/success.json +trans.pt_PT = public/language/pt-PT/success.json +trans.sk = public/language/sk/success.json +trans.sv = public/language/sv/success.json +trans.tr = public/language/tr/success.json +trans.cs = public/language/cs/success.json +trans.fi = public/language/fi/success.json +trans.lv = public/language/lv/success.json +trans.nl = public/language/nl/success.json +trans.sc = public/language/sc/success.json +trans.da = public/language/da/success.json +trans.el = public/language/el/success.json +trans.gl = public/language/gl/success.json +trans.nb = public/language/nb/success.json +trans.sr = public/language/sr/success.json +trans.uk = public/language/uk/success.json + +[o:nodebb:p:nodebb:r:tags] +file_filter = public/language//tags.json +source_file = public/language/en-GB/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/tags.json +trans.nl = public/language/nl/tags.json +trans.pt_BR = public/language/pt-BR/tags.json +trans.uk = public/language/uk/tags.json +trans.el = public/language/el/tags.json +trans.fa_IR = public/language/fa-IR/tags.json +trans.he = public/language/he/tags.json +trans.hr = public/language/hr/tags.json +trans.th = public/language/th/tags.json +trans.sl = public/language/sl/tags.json +trans.bg = public/language/bg/tags.json +trans.en_US = public/language/en-US/tags.json +trans.fi = public/language/fi/tags.json +trans.rw = public/language/rw/tags.json +trans.sc = public/language/sc/tags.json +trans.tr = public/language/tr/tags.json +trans.vi = public/language/vi/tags.json +trans.ar = public/language/ar/tags.json +trans.de = public/language/de/tags.json +trans.es = public/language/es/tags.json +trans.pt_PT = public/language/pt-PT/tags.json +trans.ro = public/language/ro/tags.json +trans.ru = public/language/ru/tags.json +trans.sk = public/language/sk/tags.json +trans.sr = public/language/sr/tags.json +trans.cs = public/language/cs/tags.json +trans.da = public/language/da/tags.json +trans.en@pirate = public/language/en-x-pirate/tags.json +trans.hu = public/language/hu/tags.json +trans.ja = public/language/ja/tags.json +trans.zh_CN = public/language/zh-CN/tags.json +trans.gl = public/language/gl/tags.json +trans.lv = public/language/lv/tags.json +trans.ms = public/language/ms/tags.json +trans.nb = public/language/nb/tags.json +trans.sv = public/language/sv/tags.json +trans.sq_AL = public/language/sq-AL/tags.json +trans.zh_TW = public/language/zh-TW/tags.json +trans.bn = public/language/bn/tags.json +trans.fr = public/language/fr/tags.json +trans.id = public/language/id/tags.json +trans.ko = public/language/ko/tags.json +trans.lt = public/language/lt/tags.json +trans.hy = public/language/hy/tags.json +trans.it = public/language/it/tags.json +trans.pl = public/language/pl/tags.json + +[o:nodebb:p:nodebb:r:top] +file_filter = public/language//top.json +source_file = public/language/en-GB/top.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hy = public/language/hy/top.json +trans.el = public/language/el/top.json +trans.fa_IR = public/language/fa-IR/top.json +trans.nl = public/language/nl/top.json +trans.cs = public/language/cs/top.json +trans.en_US = public/language/en-US/top.json +trans.fi = public/language/fi/top.json +trans.he = public/language/he/top.json +trans.lt = public/language/lt/top.json +trans.ms = public/language/ms/top.json +trans.sk = public/language/sk/top.json +trans.vi = public/language/vi/top.json +trans.bg = public/language/bg/top.json +trans.de = public/language/de/top.json +trans.hu = public/language/hu/top.json +trans.pl = public/language/pl/top.json +trans.pt_PT = public/language/pt-PT/top.json +trans.sl = public/language/sl/top.json +trans.en@pirate = public/language/en-x-pirate/top.json +trans.gl = public/language/gl/top.json +trans.rw = public/language/rw/top.json +trans.sq_AL = public/language/sq-AL/top.json +trans.zh_CN = public/language/zh-CN/top.json +trans.ko = public/language/ko/top.json +trans.ro = public/language/ro/top.json +trans.pt_BR = public/language/pt-BR/top.json +trans.bn = public/language/bn/top.json +trans.fr = public/language/fr/top.json +trans.et = public/language/et/top.json +trans.id = public/language/id/top.json +trans.ja = public/language/ja/top.json +trans.lv = public/language/lv/top.json +trans.ru = public/language/ru/top.json +trans.sc = public/language/sc/top.json +trans.ar = public/language/ar/top.json +trans.da = public/language/da/top.json +trans.uk = public/language/uk/top.json +trans.sv = public/language/sv/top.json +trans.th = public/language/th/top.json +trans.it = public/language/it/top.json +trans.nb = public/language/nb/top.json +trans.sr = public/language/sr/top.json +trans.tr = public/language/tr/top.json +trans.zh_TW = public/language/zh-TW/top.json +trans.es = public/language/es/top.json +trans.hr = public/language/hr/top.json + +[o:nodebb:p:nodebb:r:topic] +file_filter = public/language//topic.json +source_file = public/language/en-GB/topic.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/topic.json +trans.hu = public/language/hu/topic.json +trans.nb = public/language/nb/topic.json +trans.nl = public/language/nl/topic.json +trans.sk = public/language/sk/topic.json +trans.ar = public/language/ar/topic.json +trans.es = public/language/es/topic.json +trans.fr = public/language/fr/topic.json +trans.lv = public/language/lv/topic.json +trans.ms = public/language/ms/topic.json +trans.pl = public/language/pl/topic.json +trans.pt_PT = public/language/pt-PT/topic.json +trans.uk = public/language/uk/topic.json +trans.ru = public/language/ru/topic.json +trans.bg = public/language/bg/topic.json +trans.en@pirate = public/language/en-x-pirate/topic.json +trans.fa_IR = public/language/fa-IR/topic.json +trans.fi = public/language/fi/topic.json +trans.he = public/language/he/topic.json +trans.ja = public/language/ja/topic.json +trans.pt_BR = public/language/pt-BR/topic.json +trans.tr = public/language/tr/topic.json +trans.zh_TW = public/language/zh-TW/topic.json +trans.bn = public/language/bn/topic.json +trans.da = public/language/da/topic.json +trans.en_US = public/language/en-US/topic.json +trans.hr = public/language/hr/topic.json +trans.it = public/language/it/topic.json +trans.ro = public/language/ro/topic.json +trans.cs = public/language/cs/topic.json +trans.de = public/language/de/topic.json +trans.sr = public/language/sr/topic.json +trans.sv = public/language/sv/topic.json +trans.vi = public/language/vi/topic.json +trans.ko = public/language/ko/topic.json +trans.sl = public/language/sl/topic.json +trans.el = public/language/el/topic.json +trans.gl = public/language/gl/topic.json +trans.id = public/language/id/topic.json +trans.lt = public/language/lt/topic.json +trans.sq_AL = public/language/sq-AL/topic.json +trans.th = public/language/th/topic.json +trans.hy = public/language/hy/topic.json +trans.rw = public/language/rw/topic.json +trans.sc = public/language/sc/topic.json +trans.zh_CN = public/language/zh-CN/topic.json + +[o:nodebb:p:nodebb:r:unread] +file_filter = public/language//unread.json +source_file = public/language/en-GB/unread.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/unread.json +trans.zh_TW = public/language/zh-TW/unread.json +trans.fa_IR = public/language/fa-IR/unread.json +trans.fr = public/language/fr/unread.json +trans.es = public/language/es/unread.json +trans.it = public/language/it/unread.json +trans.ms = public/language/ms/unread.json +trans.ro = public/language/ro/unread.json +trans.de = public/language/de/unread.json +trans.en@pirate = public/language/en-x-pirate/unread.json +trans.hr = public/language/hr/unread.json +trans.hu = public/language/hu/unread.json +trans.lt = public/language/lt/unread.json +trans.ru = public/language/ru/unread.json +trans.sl = public/language/sl/unread.json +trans.th = public/language/th/unread.json +trans.bg = public/language/bg/unread.json +trans.gl = public/language/gl/unread.json +trans.uk = public/language/uk/unread.json +trans.vi = public/language/vi/unread.json +trans.ja = public/language/ja/unread.json +trans.lv = public/language/lv/unread.json +trans.nl = public/language/nl/unread.json +trans.sr = public/language/sr/unread.json +trans.zh_CN = public/language/zh-CN/unread.json +trans.hy = public/language/hy/unread.json +trans.id = public/language/id/unread.json +trans.da = public/language/da/unread.json +trans.en_US = public/language/en-US/unread.json +trans.sk = public/language/sk/unread.json +trans.bn = public/language/bn/unread.json +trans.cs = public/language/cs/unread.json +trans.nb = public/language/nb/unread.json +trans.rw = public/language/rw/unread.json +trans.sq_AL = public/language/sq-AL/unread.json +trans.tr = public/language/tr/unread.json +trans.ar = public/language/ar/unread.json +trans.el = public/language/el/unread.json +trans.he = public/language/he/unread.json +trans.pt_PT = public/language/pt-PT/unread.json +trans.et = public/language/et/unread.json +trans.fi = public/language/fi/unread.json +trans.sc = public/language/sc/unread.json +trans.sv = public/language/sv/unread.json +trans.ko = public/language/ko/unread.json +trans.pl = public/language/pl/unread.json + +[o:nodebb:p:nodebb:r:uploads] +file_filter = public/language//uploads.json +source_file = public/language/en-GB/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/uploads.json +trans.cs = public/language/cs/uploads.json +trans.el = public/language/el/uploads.json +trans.hu = public/language/hu/uploads.json +trans.hy = public/language/hy/uploads.json +trans.it = public/language/it/uploads.json +trans.tr = public/language/tr/uploads.json +trans.uk = public/language/uk/uploads.json +trans.zh_CN = public/language/zh-CN/uploads.json +trans.en@pirate = public/language/en-x-pirate/uploads.json +trans.lt = public/language/lt/uploads.json +trans.lv = public/language/lv/uploads.json +trans.pt_BR = public/language/pt-BR/uploads.json +trans.sk = public/language/sk/uploads.json +trans.bn = public/language/bn/uploads.json +trans.hr = public/language/hr/uploads.json +trans.pl = public/language/pl/uploads.json +trans.zh_TW = public/language/zh-TW/uploads.json +trans.ru = public/language/ru/uploads.json +trans.sl = public/language/sl/uploads.json +trans.sq_AL = public/language/sq-AL/uploads.json +trans.et = public/language/et/uploads.json +trans.id = public/language/id/uploads.json +trans.ms = public/language/ms/uploads.json +trans.nb = public/language/nb/uploads.json +trans.pt_PT = public/language/pt-PT/uploads.json +trans.da = public/language/da/uploads.json +trans.es = public/language/es/uploads.json +trans.fr = public/language/fr/uploads.json +trans.th = public/language/th/uploads.json +trans.ar = public/language/ar/uploads.json +trans.en_US = public/language/en-US/uploads.json +trans.fi = public/language/fi/uploads.json +trans.gl = public/language/gl/uploads.json +trans.rw = public/language/rw/uploads.json +trans.ro = public/language/ro/uploads.json +trans.sr = public/language/sr/uploads.json +trans.vi = public/language/vi/uploads.json +trans.bg = public/language/bg/uploads.json +trans.de = public/language/de/uploads.json +trans.fa_IR = public/language/fa-IR/uploads.json +trans.ja = public/language/ja/uploads.json +trans.nl = public/language/nl/uploads.json +trans.he = public/language/he/uploads.json +trans.ko = public/language/ko/uploads.json +trans.sc = public/language/sc/uploads.json + +[o:nodebb:p:nodebb:r:user] +file_filter = public/language//user.json +source_file = public/language/en-GB/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/user.json +trans.sr = public/language/sr/user.json +trans.lt = public/language/lt/user.json +trans.da = public/language/da/user.json +trans.it = public/language/it/user.json +trans.ru = public/language/ru/user.json +trans.sk = public/language/sk/user.json +trans.ar = public/language/ar/user.json +trans.fr = public/language/fr/user.json +trans.he = public/language/he/user.json +trans.id = public/language/id/user.json +trans.es = public/language/es/user.json +trans.cs = public/language/cs/user.json +trans.et = public/language/et/user.json +trans.pt_BR = public/language/pt-BR/user.json +trans.zh_CN = public/language/zh-CN/user.json +trans.zh_TW = public/language/zh-TW/user.json +trans.bn = public/language/bn/user.json +trans.de = public/language/de/user.json +trans.el = public/language/el/user.json +trans.en@pirate = public/language/en-x-pirate/user.json +trans.en_US = public/language/en-US/user.json +trans.fa_IR = public/language/fa-IR/user.json +trans.gl = public/language/gl/user.json +trans.pl = public/language/pl/user.json +trans.bg = public/language/bg/user.json +trans.sv = public/language/sv/user.json +trans.th = public/language/th/user.json +trans.tr = public/language/tr/user.json +trans.uk = public/language/uk/user.json +trans.vi = public/language/vi/user.json +trans.fi = public/language/fi/user.json +trans.ko = public/language/ko/user.json +trans.lv = public/language/lv/user.json +trans.pt_PT = public/language/pt-PT/user.json +trans.rw = public/language/rw/user.json +trans.sl = public/language/sl/user.json +trans.sq_AL = public/language/sq-AL/user.json +trans.hr = public/language/hr/user.json +trans.hy = public/language/hy/user.json +trans.ja = public/language/ja/user.json +trans.nb = public/language/nb/user.json +trans.nl = public/language/nl/user.json +trans.ro = public/language/ro/user.json +trans.sc = public/language/sc/user.json +trans.hu = public/language/hu/user.json + +[o:nodebb:p:nodebb:r:users] +file_filter = public/language//users.json +source_file = public/language/en-GB/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/users.json +trans.de = public/language/de/users.json +trans.en@pirate = public/language/en-x-pirate/users.json +trans.ru = public/language/ru/users.json +trans.sc = public/language/sc/users.json +trans.en_US = public/language/en-US/users.json +trans.bn = public/language/bn/users.json +trans.hy = public/language/hy/users.json +trans.ro = public/language/ro/users.json +trans.fi = public/language/fi/users.json +trans.it = public/language/it/users.json +trans.pl = public/language/pl/users.json +trans.sk = public/language/sk/users.json +trans.ar = public/language/ar/users.json +trans.bg = public/language/bg/users.json +trans.el = public/language/el/users.json +trans.fa_IR = public/language/fa-IR/users.json +trans.sq_AL = public/language/sq-AL/users.json +trans.cs = public/language/cs/users.json +trans.he = public/language/he/users.json +trans.ja = public/language/ja/users.json +trans.ko = public/language/ko/users.json +trans.nb = public/language/nb/users.json +trans.pt_PT = public/language/pt-PT/users.json +trans.sr = public/language/sr/users.json +trans.zh_CN = public/language/zh-CN/users.json +trans.da = public/language/da/users.json +trans.id = public/language/id/users.json +trans.lt = public/language/lt/users.json +trans.ms = public/language/ms/users.json +trans.nl = public/language/nl/users.json +trans.rw = public/language/rw/users.json +trans.sl = public/language/sl/users.json +trans.th = public/language/th/users.json +trans.es = public/language/es/users.json +trans.fr = public/language/fr/users.json +trans.gl = public/language/gl/users.json +trans.hr = public/language/hr/users.json +trans.uk = public/language/uk/users.json +trans.vi = public/language/vi/users.json +trans.sv = public/language/sv/users.json +trans.tr = public/language/tr/users.json +trans.et = public/language/et/users.json +trans.hu = public/language/hu/users.json +trans.lv = public/language/lv/users.json +trans.pt_BR = public/language/pt-BR/users.json + diff --git a/.stryker-tmp/sandbox3435591/CHANGELOG.md b/.stryker-tmp/sandbox3435591/CHANGELOG.md new file mode 100644 index 0000000000..b66481805a --- /dev/null +++ b/.stryker-tmp/sandbox3435591/CHANGELOG.md @@ -0,0 +1,11657 @@ +#### v3.8.3 (2024-06-27) + +##### Chores + +* up themes (b15a5894) +* up harmony (3eb69c58) +* up harmony (b98333f3) +* up dbsearch (8a42db6f) +* use nodebb fork of spider-detector (3a1b39c9) +* up 2factor (142de2ca) +* incrementing version number - v3.8.2 (72d91251) +* update changelog for v3.8.2 (3854a434) +* incrementing version number - v3.8.1 (527326f7) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12656, only send required meta/link tags on /api calls (64875b3f) +* show links in post queue (500e3342) +* show connetion count on /info (60b4bc66) +* make upload scores descending for ordering (3ec44d64) +* add isACP to config, closes #12623 (c51b772f) +* allow passing min,max to sortedSetsCardSum (70b4a0e2) +* add voters/upvoters v3 routes (1aaa6cbb) + +##### Bug Fixes + +* wront topic events showing up in topic (54b01395) +* dont show self in suggested topics (381bbb04) +* #12645, use titleRaw like reply button (3332480c) +* update follower/following counts after removing uid from zsets (6f6cfb1a) +* suggested topic tid (351ee71d) +* #12633, don't check post index (6e3b012b) +* recent chat pagination, closes #12637 (f7c9b7ae) +* info.tpl table (6f79d305) +* closes #12632, dont load data twice (66adfa29) +* don't error if file required too early (4430de8c) +* require of spider-detector (be86d8ef) +* return early for guests/spiders (8d56e097) +* dont show error alert when user user mouse overs votes (6bbe3d1c) +* dont load chat rooms for quests/spiders (ca4a7751) +* set uid in case its spider(-1), closes #12621 (9d74539a) +* dont add spiders to online_guests room (bcd4997d) +* dont autoconnect for spiders, closes #12620 (b6671d16) +* #12614 fix html markup for widget containers (56b5850a) + +##### Other Changes + +* remove unused winston (69ce3bf0) +* remove unused (adb0566f) +* fix semicolons (795a0daa) +* fix whitespace (b4db2f7f) + +##### Performance Improvements + +* cleanup sessions every 30 seconds (26feb2bb) +* change revokeSession to work with an array of sids (172bc249) +* dont make db call if posts is already loaded client side (461e95d8) +* if sigs disabled dont filter uids (73241bd5) +* cache isAdmin, isGlobalMod checks (fedfce7b) +* get rid of async call in user load for expiring bans (023d52a3) +* call getIconbackgrounds once (1dadd16f) +* get rid of more calls, fix other profile pages #12632 (5c6a853e) + +##### Refactors + +* sessionUUID (#12658) (d6c946cf) +* move delete call (65a91ea5) +* use array.some (85b329af) +* add placeholders on demand (8f486b1b) +* move getTopicData call to avoid db calls when its not in cache (252d0df7) +* remove exits check (74dd2844) +* move als requires, move autoLocale to api/page routes (3356022a) +* move requires down (8eccdb48) +* posts cache to get rid of require in functions (236ac323) +* closes #12629, allow passing arrays to meta.userOrGroupExists (bad15643) +* suggest topics, use strings for tids (8ded36f2) +* #12623, add filter:config.get.admin (2d86552b) +* add sanity checks to sio (e98f1848) + +##### Tests + +* dont track session for api/v3 (#12660) (61e5293a) +* move set (9108c900) +* spec (41f1cd69) +* spec (b148d0fc) +* fix path replace (9ecee782) +* update openapi spec (9af3a2da) +* fix tests (c2f63090) +* return empty array on db.exists([]); (1b283ccc) +* fix test only set for spiders (7c2a3a6e) +* fix post test (42230300) + +#### v3.8.2 (2024-05-29) + +##### Chores + +* up composer (83facb7d) +* up harmony (17ea61a0) +* incrementing version number - v3.8.1 (527326f7) +* update changelog for v3.8.1 (5ef3e0f3) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* show ignored/watched topics in topic list, closes #10974 (29dbe92d) +* convert "All Votes Are Public" toggle to vote visibility (e0515080) + +##### Bug Fixes + +* wrong var for ignored (7969e62d) +* reduce docker image size again and speed up build (56ef2bdd) +* update thumb count when removing thumbs (6214336c) + +##### Refactors + +* render (2c0f8c91) + +#### v3.8.1 (2024-05-15) + +##### Chores + +* incrementing version number - v3.8.0 (e228a6eb) +* update changelog for v3.8.0 (2ef2750d) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* wrong mention version (1d1f499b) + +##### Tests + +* use node 20 (a40f54aa) +* remove node 18 (6bd22e53) + +#### v3.8.0 (2024-05-15) + +##### Chores + +* **deps:** + * update redis docker tag to v7.2.4 (#12272) (7a8116a4) + * update actions/cache action to v4 (#12563) (88ff9f9d) + * update postgres docker tag to v16.3 (#12560) (339f6267) + * update dependency sass-embedded to v1.77.1 (#12565) (07160062) + * update postgres docker tag to v16.3 (#12555) (b8a52863) + * update dependency sass-embedded to v1.77.0 (#12548) (0fa11561) + * update coverallsapp/github-action action to v2.3.0 (#12554) (b4023ff9) + * update dependency sass-embedded to v1.76.0 (#12542) (7ee42724) + * update commitlint monorepo to v19.3.0 (#12526) (dad57e04) + * update commitlint monorepo to v19.2.2 (#12515) (97519ca4) + * update dependency smtp-server to v3.13.4 (#12516) (4c468b5c) + * update dependency sass-embedded to v1.75.0 (#12499) (a2229e71) + * update dependency sass-embedded to v1.74.1 (#12468) (97a649e3) + * update dependency mocha to v10.4.0 (#12445) (449c0fcd) + * update dependency @commitlint/cli to v19.2.1 (#12420) (dc19c840) + * update dependency @commitlint/cli to v19.2.0 (#12412) (41212e8f) + * update dependency sass-embedded to v1.72.0 (#12406) (6d62e592) + * update commitlint monorepo to v19.1.0 (#12403) (3d095a6b) +* up themes (1e3a321d) +* incrementing version number - v3.7.5 (6882894d) +* update changelog for v3.7.5 (febeede5) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* up harmony (80a1a0e0) +* up harmony (1a000eae) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.flags, nodebb.user (19f8a77c) + * fallback strings for new resources: nodebb.user (7ad477af) + * fallback strings for new resources: nodebb.admin-settings-navigation (18eec147) + * fallback strings for new resources: nodebb.admin-advanced-events (213db951) + * fallback strings for new resources: nodebb.admin-manage-users (43f52737) + +##### New Features + +* track uid for email/username changes, closes #12454 (325d00ea) +* closes #12477, allow editing moderation notes (af205cc4) +* parse moderation notes as markdown (7d24b04b) +* closes #12490, show profile flags on account info page (b429045f) +* closes #12491, add unban & unmute history (985663fa) +* new client-side hook to allow plugins to modify relogin url (c778f6eb) +* closes #12453, filter events by user/group (4030f18a) +* move all user profile pics to folder, closes #12449 (#12450) (8f9ac5c1) +* allow customizing uploads.upload socket methods (dc67f54e) +* allow custom fields in user csv export, closes #12401 (83ca23ca) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.33.2 (#12572) (19602dcd) + * update dependency esbuild to v0.21.2 (#12569) (dc4f32af) + * update dependency rimraf to v5.0.7 (#12568) (035ced85) + * update dependency sass to v1.77.1 (#12566) (7a64410a) + * update dependency rimraf to v5.0.6 (#12562) (185d61fc) + * update dependency validator to v13.12.0 (#12556) (7a009445) + * update dependency sass to v1.77.0 (#12550) (d3840280) + * update dependency mongodb to v6.6.1 (#12547) (751a143e) + * update dependency esbuild to v0.21.1 (#12549) (ed07cfcc) + * update dependency semver to v7.6.2 (#12552) (5264deca) + * update dependency mongodb to v6.6.0 (#12544) (4813772c) + * update dependency nodebb-plugin-composer-default to v10.2.35 (#12546) (8fcfb181) + * update dependency sass to v1.76.0 (#12541) (8f60603b) + * update dependency tough-cookie to v4.1.4 (#12540) (ad708c9f) + * update dependency lru-cache to v10.2.2 (#12532) (c036786c) + * update dependency jquery-ui to v1.13.3 (#12534) (3f62b892) + * update dependency nodebb-widget-essentials to v7.0.16 (#12535) (d5bfe32e) + * update dependency nodebb-plugin-composer-default to v10.2.34 (#12530) (bc51968e) + * update dependency ace-builds to v1.33.1 (#12527) (18a843bc) + * update fontsource monorepo (#12523) (bde9136b) + * update dependency ipaddr.js to v2.2.0 (#12522) (d6d0ebd5) + * update dependency cropperjs to v1.6.2 (#12524) (5e7ec5b6) + * update dependency ioredis to v5.4.1 (#12520) (66a35490) + * update dependency ioredis to v5.4.0 (#12519) (da0888e6) + * update dependency nodebb-plugin-spam-be-gone to v2.2.2 (#12518) (5b4471bf) + * update dependency nodebb-plugin-emoji to v5.1.15 (#12517) (20f8ba78) + * update dependency nodebb-theme-harmony to v1.2.49 (#12497) (c4cb9d36) + * update dependency nodebb-plugin-mentions to v4.5.2 (#12470) (37bdf753) + * update dependency ace-builds to v1.33.0 (#12501) (83a932e6) + * update dependency sass to v1.75.0 (#12500) (f5c3d4e1) + * update dependency nodebb-theme-harmony to v1.2.47 (#12487) (2bcd5239) + * update dependency cron to v3.1.7 (#12484) (6237d5fe) + * update dependency workerpool to v9.1.1 (#12475) (b6193629) + * update dependency nodebb-theme-persona to v13.3.13 (#12479) (01b3a06a) + * update dependency nodebb-theme-harmony to v1.2.46 (#12478) (499514a8) + * update dependency nodebb-theme-persona to v13.3.12 (#12467) (0f209fa4) + * update dependency nodebb-theme-harmony to v1.2.45 (#12466) (1fef883b) + * update dependency sass to v1.74.1 (#12469) (8f771b6f) + * update dependency pg-cursor to v2.10.5 (#12462) (dde7a498) + * update dependency pg to v8.11.5 (#12461) (623ccc53) + * update dependency @fortawesome/fontawesome-free to v6.5.2 (#12460) (1953277b) + * update dependency nodebb-plugin-mentions to v4.4.3 (#12463) (d24c4148) + * update dependency pg to v8.11.4 (#12455) (a7d9811e) + * update dependency @fontsource/poppins to v5.0.13 (#12457) (5c214930) + * update dependency pg-cursor to v2.10.4 (#12456) (af10aaaa) + * update dependency ace-builds to v1.32.9 (#12451) (deacf366) + * update dependency express to v4.19.2 (#12441) (263ca1ca) + * update dependency winston to v3.13.0 (#12440) (08be8f3c) + * update dependency webpack to v5.91.0 (#12426) (ca82d020) + * update dependency ace-builds to v1.32.8 (#12439) (23f46345) + * update dependency sanitize-html to v2.13.0 (#12427) (2550f26f) + * update dependency postcss to v8.4.38 (#12429) (ace6f12f) + * update dependency express to v4.19.1 (#12425) (a27b999f) + * update dependency autoprefixer to v10.4.19 (#12428) (fa57b81f) + * update dependency nodebb-theme-lavender to v7.1.8 (15c7691c) + * update dependency nodebb-plugin-mentions to v4.4.2 (#12410) (a8b631dd) + * update dependency postcss to v8.4.37 (#12417) (9c91f093) + * update dependency nodemailer to v6.9.13 (#12424) (c7a506a8) + * update dependency nodebb-plugin-ntfy to v1.7.4 (#12414) (4e119783) + * update dependency esbuild to v0.20.2 (#12411) (93fb1e0f) + * update socket.io packages to v4.7.5 (#12409) (6a730312) + * update dependency @socket.io/redis-adapter to v8.3.0 (#12405) (05219412) + * update dependency sass to v1.72.0 (#12407) (89684786) + * update dependency mongodb to v6.5.0 (#12402) (b163264e) + * update dependency archiver to v7.0.1 (#12400) (817a5468) + * update dependency nodemailer to v6.9.12 (#12398) (27d5aaa5) + * update dependency nodebb-theme-harmony to v1.2.38 (#12397) (b9a1fc3f) + * update fontsource monorepo (#12390) (8d6ef3d5) + * update dependency nodebb-plugin-mentions to v4.4.1 (#12393) (4d18c38b) + * update dependency winston to v3.12.0 (#12391) (98ff47ec) +* chat message search, closes #12571 (49a510e9) +* chat message search, closes #12571 (d926d9dd) +* some issues with "small" docker improvements (#12564) (bc807c46) +* use reference object for post summary v3 api call (2a58d099) +* unintentional object pollution by buildForSelectCategories (88a5dfb7) +* getCategoryById to return shallow clone of object (dc35bf8b) +* #12533, go to post after changing owner (983a35e6) +* topic selection in merge (f2892385) +* closes #12474, fix search dropdown on mobile for merge (ce03680f) +* #12481, remove priv groups from groupslug:groupname mapping (#12482) (7033d11e) +* bump 2factor (4d2c95ca) +* date on upgrade script (73f98568) +* use CategoryObject in admins-mods schema def (4da1e9c4) +* missing uid for modify event, closes #12394 (7c37f32d) +* **docker:** support all previously used env variables correctly (#12567) (995b2de5) + +##### Refactors + +* add missing form-label class (36016ee1) +* use groupslug:groupname for search and acp page (ee5c021c) + +##### Tests + +* fix schema (5eb8c90b) +* fix redis tests (57422420) +* fix moderation note test (fed5165f) +* add back timestamp (c73f759c) + +#### v3.7.5 (2024-05-03) + +##### Chores + +* incrementing version number - v3.7.4 (6678744c) +* update changelog for v3.7.4 (8a1b281b) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12543, use PATCH (420c8999) + +#### v3.7.4 (2024-04-17) + +##### Chores + +* up harmony (18990795) +* up harmony (c2465a16) +* up themes (ba86740a) +* up themes (5d8a5571) +* incrementing version number - v3.7.3 (2d62b6f6) +* update changelog for v3.7.3 (8d450eea) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12495, add unblock button to users on /blocks (afe597a2) + +##### Bug Fixes + +* zipObject (110ce66a) +* index should be cid (8410cec7) +* uniqCids (de0176ef) +* if votes are not public, dont show upvoter names in tooltip (5af69dbc) +* add canView check to /api/v3/users/:uid (5bee324c) +* is user doesnt have view:users privilege (14f5774f) +* copy dropdown closing on copy ip/text/link (48281f96) +* align teaser avatar (5fcd1a8a) +* if you have chat:privileged the chat icons should show up (ca07e517) +* #12485, resolve flags on a topics posts on topic delete (d7256796) +* #12471, remove readable strings (0b1f2546) + +##### Refactors + +* add new hooks for notifications/websockets (d2e042d1) +* move parseInt to filter (52e71522) +* better label for show to groups (cfd29db0) + +##### Tests + +* update spec (6816e39b) +* fix tests and use action (acab46e6) + +#### v3.7.3 (2024-04-03) + +##### Chores + +* up ntfy (0058ca68) +* incrementing version number - v3.7.2 (cc257e7e) +* update changelog for v3.7.2 (277e1787) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change digest to use posts sorting first (3aae9234) +* #12452, fix admin/mod image change (c206ccdd) + +#### v3.7.2 (2024-03-27) + +##### Chores + +* up harmony (0171e73a) +* up harmony (c6915398) +* incrementing version number - v3.7.1 (712365a5) +* update changelog for v3.7.1 (07640389) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add hook to modify sorting options/fields (168419cf) +* add playsinline video attribute (#12419) (5924a6eb) + +##### Bug Fixes + +* #12446, fix groups.ownership.rescind (ed41e416) +* #12415, fix notification escaping for queued posts (4787d013) + +##### Refactors + +* remove log (3b2d8551) + +##### Tests + +* add test for #12446 (bf4e257c) + +#### v3.7.1 (2024-03-14) + +##### Chores + +* up harmony (1b24b337) +* up harmony (b6c3a9d2) +* up harmony (f107a7ff) +* incrementing version number - v3.7.0 (9a6153d7) +* update changelog for v3.7.0 (f1f81b17) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* allow setting max-old-space-size in config (d1ce594c) + +##### Bug Fixes + +* #12408, fix mem leak due to mongodb 6.4.0 (285293c4) +* tids:create on topic post (3b48695b) + +#### v3.7.0 (2024-03-06) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-post, nodebb.topic (0bd0a740) + * fallback strings for new resources: nodebb.themes-harmony (8fb0ed82) + * fallback strings for new resources: nodebb.aria (a55fb29e) + * fallback strings for new resources: nodebb.aria (e6a358ed) + * fallback strings for new resources: nodebb.user (c88811a9) + * fallback strings for new resources: nodebb.topic (7e862a78) + * fallback strings for new resources: nodebb.topic, nodebb.unread (53ea10a7) + * fallback strings for new resources: nodebb.global (73e7d467) + * fallback strings for new resources: nodebb.topic (72f1e515) + * fallback strings for new resources: nodebb.global (642cd8e2) + * fallback strings for new resources: nodebb.global, nodebb.user (a998136c) + * fallback strings for new resources: nodebb.tags (4d35cb4e) + * fallback strings for new resources: nodebb.global, nodebb.themes-harmony (0bc9ac74) + * fallback strings for new resources: nodebb.global, nodebb.topic (a2819e9e) + * fallback strings for new resources: nodebb.error (9d5702f8) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (1230d22d) + * fallback strings for new resources: nodebb.admin-dashboard (f3974c0b) + * fallback strings for new resources: nodebb.search (43bf1f9b) +* up harmony (25ef62dc) +* up peace (3aaa0727) +* up peace (65f3c734) +* incrementing version number - v3.6.7 (86a17e38) +* update changelog for v3.6.7 (caf8722f) +* up harmony (22cd80b9) +* up themes (96fc20a3) +* up themes (421c7fc5) +* closes #12355 (fadee8d7) +* up themes (9ee864ce) +* up composer (8324adc5) +* up composer (0ff7adb4) +* incrementing version number - v3.6.6 (6604bf37) +* up themes (43a02c89) +* up themes (69342342) +* up harmony (9bbaef84) +* up harmony (35e98a9f) +* up harmony (22398d47) +* up themes (5cbb8bb1) +* up harmony (3f3f0d66) +* up harmony (4f42172d) +* up harmony (c0db10af) +* up harmony (0743cb3c) +* incrementing version number - v3.6.5 (6c653625) +* up harmony (09414efa) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* up harmony (bbdefad3) +* incrementing version number - v3.6.2 (0f577a57) +* up themes (79ebbee5) +* incrementing version number - v3.6.1 (f1a69468) +* up composer (c31e321b) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update commitlint monorepo to v19 (#12369) (516c8d04) + * update dependency smtp-server to v3.13.3 (#12378) (0ab1982c) + * update dependency eslint to v8.57.0 (#12362) (6c33c01d) + * update dependency sass-embedded to v1.71.1 (#12350) (99ad9d38) + * update dependency sass-embedded to v1.71.0 (#12344) (920f787f) + * update postgres docker tag to v16.2 (#12338) (254bad89) + * update commitlint monorepo to v18.6.1 (#12339) (92ef8548) + * update dependency mocha to v10.3.0 (#12334) (9cd299db) + * update dependency smtp-server to v3.13.2 (#12324) (048e664c) + * update dependency lint-staged to v15.2.2 (#12327) (a7008fb3) + * update dependency lint-staged to v15.2.1 (#12319) (264e71d2) + * update commitlint monorepo to v18.6.0 (#12305) (7e7bbfa4) + * update dependency jsdom to v24 (#12294) (45f02ff0) + * update commitlint monorepo to v18.5.0 (#12296) (5a776f9f) + * update dependency sass-embedded to v1.70.0 (#12286) (0063dd45) + * update dependency jsdom to v23.2.0 (#12269) (7cc69df0) + * update dependency jsdom to v23.1.0 (#12265) (12aeb6f7) + * update commitlint monorepo to v18.4.4 (#12261) (b25dfd47) + * update dependency sass-embedded to v1.69.7 (#12257) (ce78cb0e) + * update dependency sass-embedded to v1.69.6 (#12249) (1777ec4b) + +##### New Features + +* add new sorting option to categories (2a9b0a3c) +* add chat widget areas, closes #12375 (53b3c5d6) +* add hook into user.posts.isReady (7207814b) +* refactor group title editing (112493fa) +* cli command for maintenance mode closes #12293 (80960296) +* fallbacks for aria.json (19bc442b) +* add new lang keys for a11y (3ce89d1e) +* add missing aria/role attributes to dropdown elements (7917fd82) +* add lang keys for hidden labels (e298fb6b) +* show unread categories based on unread topics (#12317) (45cfb369) +* limit post/user flags per day closes #12274 (2b1fdc56) +* search in bookmarks on search page (5213e22a) +* #12247 (c5730b36) + +##### Bug Fixes + +* #12389, update privilege group check (87a79059) +* dupe id (f4b63790) +* #12357, properly update lists and counters (f34ebcc9) +* use lang key for user avatar label (863f5d0a) +* spec (4bcbf759) +* move winston logging for plugin hook firing to debug level (e240d0f9) +* closes #12326 (9302d9b4) +* some layout fixes for group details page (301eee17) +* bookmark in topic data is nullable now (d500ebb1) +* bug where body wasn't properly sent on ap-style content-types (4b87c30f) +* dont send topic notification to poster (c2239e48) +* **deps:** + * update dependency nodebb-theme-harmony to v1.2.36 (#12392) (db2f7c03) + * update dependency nodebb-theme-peace to v2.2.4 (#12381) (073a79eb) + * update dependency mongodb to v6.4.0 (#12382) (716482b2) + * update dependency nodebb-plugin-mentions to v4.4.0 (#12385) (6f04859e) + * update dependency ace-builds to v1.32.7 (#12386) (9eb54394) + * update dependency autoprefixer to v10.4.18 (#12387) (339e2cfa) + * update dependency nodebb-theme-harmony to v1.2.35 (#12388) (7b1b4510) + * update dependency nodebb-theme-harmony to v1.2.34 (#12383) (430c6b6c) + * update dependency nodemailer to v6.9.11 (#12380) (aa6859df) + * update dependency express to v4.18.3 (#12379) (2c3540b2) + * update dependency nodebb-plugin-markdown to v12.2.6 (#12371) (fb98dc05) + * update dependency archiver to v7 (#12374) (9de0ab31) + * update dependency chart.js to v4.4.2 (#12376) (131d2fe7) + * update dependency bootswatch to v5.3.3 (#12373) (1ed4d763) + * update dependency fetch-cookie to v3.0.1 (#12363) (835820a0) + * update dependency sanitize-html to v2.12.1 (#12360) (00bcf935) + * update dependency spdx-license-list to v6.9.0 (#12354) (b58dde1c) + * update dependency sass to v1.71.1 (#12351) (3094996b) + * update dependency sanitize-html to v2.12.0 (#12353) (ee90866a) + * update dependency nodemailer to v6.9.10 (#12356) (80ea6eb9) + * update dependency bootstrap to v5.3.3 (#12348) (4007882b) + * update dependency sass to v1.71.0 (#12345) (faf5a9c8) + * update dependency esbuild to v0.20.1 (#12346) (a0021b1d) + * update dependency webpack to v5.90.3 (#12347) (748bbab0) + * update dependency nodebb-plugin-spam-be-gone to v2.2.1 (#12343) (acad7317) + * update dependency webpack to v5.90.2 (#12341) (cb6fe9c7) + * update dependency nodebb-theme-harmony to v1.2.25 (#12340) (99474a7e) + * update dependency commander to v12 (#12325) (b61486eb) + * update dependency diff to v5.2.0 (#12337) (d0f6f0cc) + * update dependency postcss to v8.4.35 (#12333) (3bc506f6) + * update dependency ace-builds to v1.32.6 (#12332) (523f7ace) + * update dependency postcss to v8.4.34 (#12330) (9d036be3) + * update dependency semver to v7.6.0 (#12328) (3af04956) + * update dependency fetch-cookie to v2.2.0 (#12323) (b56d6a88) + * update dependency nodebb-theme-harmony to v1.2.12 (#12318) (65fead81) + * update dependency webpack to v5.90.1 (#12322) (98b455ce) + * update dependency nodemailer to v6.9.9 (#12321) (3f74cca3) + * update dependency ace-builds to v1.32.5 (#12316) (ef06be6d) + * update dependency nodebb-theme-harmony to v1.2.10 (#12314) (d648972c) + * update dependency ace-builds to v1.32.4 (#12313) (9fb7c163) + * update dependency express-session to v1.18.0 (#12311) (6444eeb9) + * update dependency esbuild to v0.20.0 (#12309) (aa1344fc) + * update dependency nodebb-theme-harmony to v1.2.8 (#12310) (fd20e3a5) + * update dependency nodebb-theme-harmony to v1.2.7 (#12307) (eabbf195) + * update dependency lru-cache to v10.2.0 (#12306) (400a1aa3) + * update dependency webpack to v5.90.0 (#12303) (44a798bc) + * update dependency esbuild to v0.19.12 (#12302) (72bb81f0) + * update dependency connect-redis to v7.1.1 (#12298) (575f072a) + * update dependency nodebb-theme-harmony to v1.2.6 (#12300) (e1adf5b3) + * update dependency nodebb-widget-essentials to v7.0.15 (#12295) (876fa4a7) + * update dependency nodebb-theme-persona to v13.3.3 (#12290) (f8893cd8) + * update dependency nodebb-theme-harmony to v1.2.4 (#12292) (e33e9dea) + * update dependency autoprefixer to v10.4.17 (#12285) (9e11b927) + * update dependency workerpool to v9.1.0 (#12288) (7a24961d) + * update dependency sass to v1.70.0 (#12287) (a1cdec08) + * update dependency sortablejs to v1.15.2 (#12283) (cc93caff) + * update dependency nodebb-theme-persona to v13.3.2 (#12284) (91ce17c7) + * update dependency nodebb-theme-harmony to v1.2.3 (#12280) (34a8069b) + * update dependency nodebb-theme-persona to v13.3.1 (#12281) (fe0845b9) + * update dependency nodebb-theme-harmony to v1.2.2 (#12279) (fc78b00c) + * update socket.io packages to v4.7.4 (#12278) (16598f7f) + * update dependency postcss to v8.4.33 (#12264) (3a32fc8f) + * update dependency nodebb-theme-harmony to v1.1.108 (#12263) (4924d170) + * update socket.io packages to v4.7.3 (#12259) (eb7a3091) + * update dependency sass to v1.69.7 (#12258) (d5dc4655) + * update dependency nodemailer to v6.9.8 (#12254) (1953a635) + * update dependency esbuild to v0.19.11 (#12253) (c8007bf6) + * update dependency ace-builds to v1.32.3 (#12252) (c40b2322) + * update dependency sass to v1.69.6 (#12250) (f8a0cb9e) + * update dependency terser-webpack-plugin to v5.3.10 (#12248) (9101caff) + * update dependency workerpool to v9.0.4 (#12244) (8165f454) + * update dependency workerpool to v9.0.3 (#12238) (3e08ef81) + * update dependency esbuild to v0.19.10 (#12237) (6ef8e767) + +##### Other Changes + +* fix (f5586968) + +##### Refactors + +* move tomap inside (5e89dfad) +* shorter tag translation (a9e8c184) +* search stats (82f6721d) + +##### Tests + +* fix test (c8a5e24a) +* update test (5afc735b) + +#### v3.6.7 (2024-02-28) + +##### Chores + +* incrementing version number - v3.6.6 (6604bf37) +* update changelog for v3.6.6 (debaa2b9) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12372, fix manual digest buttons (107f5613) +* closes #12365, staticHooks with callbacks (00e29403) +* #12359, fix api call (c61b3bbd) +* closes #12358, only load pending/invited for owners (3960d370) +* retry setAdd on e11000 error (4a405ce0) + +##### Tests + +* better test for #12352 (4e51bf81) + +#### v3.6.6 (2024-02-14) + +##### Chores + +* incrementing version number - v3.6.5 (6c653625) +* update changelog for v3.6.5 (04039f76) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12329, fix default value of categoryWatchState (88e9fa37) + +##### Tests + +* fix spec (5fec8b23) + +#### v3.6.5 (2024-01-31) + +##### Chores + +* incrementing version number - v3.6.4 (83d131b4) +* update changelog for v3.6.4 (6e6c3974) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12320, .text() gets \n\t characters (67c8bd99) + +#### v3.6.4 (2024-01-24) + +##### Chores + +* incrementing version number - v3.6.3 (fc7d2bfd) +* update changelog for v3.6.3 (92ffc57c) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add success hook to quick reply (cb21f28b) + +##### Bug Fixes + +* if there is no bookmarkThreshold dont init unread indicator (cf40d681) +* remove leftover code from 2.x, closes #12301 (d5f445f1) +* copy single line code blocks, closes #12297 (06269cdf) +* validate plugin id in toggleActive (76f3efff) + +##### Tests + +* add plugin id tests (e8befbcc) + +#### v3.6.3 (2024-01-12) + +##### Chores + +* incrementing version number - v3.6.2 (0f577a57) +* update changelog for v3.6.2 (82a936c3) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12275, pin sharp to 0.32.6 (f3927ce7) +* topic event translations closes #12273 (5f91cc83) + +#### v3.6.2 (2024-01-10) + +##### Chores + +* up composer (ef8f8db7) +* up harmony (2bed405c) +* up harmony (b6dbe1a6) +* up lavender (16f0affa) +* up themes (980bfee8) +* incrementing version number - v3.6.1 (f1a69468) +* update changelog for v3.6.1 (1e4abdbf) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12247 (0af19afd) + +##### Bug Fixes + +* recent loading (d3d6d77d) +* closes #12246, direction is passed in as string as query param with new api call (8867f243) +* stricter selector for sort (a74b5141) + +##### Performance Improvements + +* dont load all followed tids on unread/recent?filter=watched (563e03b6) + +#### v3.6.1 (2023-12-22) + +##### Chores + +* incrementing version number - v3.6.0 (4cdf85f8) +* update changelog for v3.6.0 (eb92cee6) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12243, don' set process.env.config if it doesnt exist (788404c1) +* lang key for move notification closes #12241 (48a2b5f7) +* dont send topic notification to poster (e72b26f5) + +#### v3.6.0 (2023-12-20) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.error (d3cfa1b7) + * fallback strings for new resources: nodebb.post-queue (64fe1278) + * fallback strings for new resources: nodebb.post-queue (f98205c1) + * fallback strings for new resources: nodebb.social (081352b6) + * fallback strings for new resources: nodebb.modules (4fe84ae8) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.admin-settings-post, nodebb.admin-settings-user (94777927) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.category, nodebb.notifications (29b3a403) + * fallback strings for new resources: nodebb.error (7d8f700f) + * fallback strings for new resources: nodebb.modules (83931138) +* make error:email-taken slightly more descriptive (dd0743d3) +* up harmony (250cc771) +* up harmony (9324a75c) +* incrementing version number - v3.5.3 (ed0e8783) +* update changelog for v3.5.3 (e49ddaf8) +* up harmony (dbbf3a2c) +* up harmony (e4656bd4) +* incrementing version number - v3.5.2 (52fbb2da) +* up themes (0ec9d4c3) +* added missing deprecation warning for .getTopics (9079ad0b) +* update note at top of file (2de534fa) +* up dbsearch (b6981693) +* up themes (9a1f8e9b) +* incrementing version number - v3.5.1 (4c543488) +* up themes (ed10dda2) +* up composer (22d7e92f) +* up themes (fcdd3737) +* v4 note for deprecations (f4c36b84) +* minor re-order of routes/controllers in admin api v3 router/controller (181a9399) +* add in note at top of files ready for deletion in v4 (54a08087) +* up harmony (1b8dcbc2) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update dependency eslint-plugin-import to v2.29.1 (#12229) (055b7597) + * update dependency eslint to v8.56.0 (#12231) (a7dd0f92) + * update dependency eslint to v8.55.0 (#12203) (32a403b2) + * update dependency lint-staged to v15.2.0 (#12210) (9763e97f) + * update dependency jsdom to v23.0.1 (#12196) (a50b141f) + * update dependency jsdom to v23 (#12186) (8c0472a0) + * update commitlint monorepo to v18.4.3 (#12177) (fd5d7b65) + * update dependency eslint to v8.54.0 (#12172) (b6275453) + * update commitlint monorepo to v18.4.2 (#12169) (d6a92d4c) + * update postgres docker tag to v16.1 (#12167) (616ff573) + * update mongo docker tag to v7 (#12166) (5f8a4f3a) + * update redis docker tag to v7.2.3 (#12165) (c41f9a75) + * update dependency lint-staged to v15.1.0 (#12161) (1796ed2b) + * update dependency @commitlint/cli to v18.4.1 (#12162) (be3d3393) + * update commitlint monorepo to v18.4.0 (#12159) (128c24f2) + * update dependency eslint to v8.53.0 (#12151) (d1a7ba35) + * update redis docker tag to v7.2.3 (#12152) (2eff6912) + * update commitlint monorepo to v18 (#12105) (97016f47) + * update dependency sass-embedded to v1.69.5 (#12127) (9e8a2116) +* **socket.io:** deprecate categories.(isModerator|ignore|watch|getSelectCategories|getMoveCategories|getCategoriesByPrivilege) (f1dbfaa2) + +##### Documentation Changes + +* fix improper verbiage in category watch schema (f8cc8548) +* openapi schema for api.search.categories (4ffe0417) +* **socket.io:** + * openapi schema for remaining added routes (5399e86a) + * added schema for new routes (f279bca0) + +##### New Features + +* add 500 page for missing tpls, closes #12230 (06221a0d) +* remove gif exif stripping exception (f8219aa6) +* update groups.leave to allow global mods to kick users out of groups (2c6024e0) +* better layout for manage chat room modal (f4faa0b7) +* update Messaging.toggleOwner to optionally take a third `state` argument (932bd292) +* new language strings for post-queue page (5d03321e) +* add some new social share buttons (ace171a6) +* docker improvements (#12031) (7f3a9968) +* closes #12158, add sortable rewards (5ea7dec9) +* add copy text (4b2491be) +* closes #12154, add exempt groups (fdff165e) +* update moved keys (119c3362) +* move new user restrrictions (3d505c5c) +* add tracking categories and make watching send notifications (#12147) (84fed97b) +* add new lang string for minutes (d8d26c9f) +* add direct message link (#12138) (4c4f3ac9) +* closes #5584, setup winston to output to file (87a859aa) +* batch.processSortedSet min/max (#12129) (6c7e6144) + +##### Bug Fixes + +* fix display post history (dc975838) +* update isJSON test in request lib (506d7be5) +* 503 rendering on ajaxify (f7e0fd0b) +* #12227, fix crash in redirect (2dc1def5) +* deprecated emailer hook (565ca3cc) +* extract all pages when stripping metadata (0b3eb6c0) +* incorrect call to load additional group members (78835ebb) +* closes #12185, fix cli user password reset (b9050139) +* don't require login for listing categories (50a90f8e) +* #12183, remove ensureLoggedIn middleware (0a4f3c8a) +* remove unused requires (b5940a5d) +* remove lodash require (f9c471a0) +* #12171, bump harmony (89a1134c) +* update design of post-queue (41bdc9e8) +* update post-queue template for #12171 (63ba4986) +* language key (4c7c46f3) +* another missing state (f4bbc5bd) +* add missing tracking (3b91e8e2) +* bump harmony (a5e3754b) +* #12133 dropdown menus on mobile stay open during ajaxify (4601a6f7) +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (b4297cd8) +* #12141, use apiv3 for category search module (cefd4061) +* made parentCid optional in api.search.categories (581516c8) +* don't count internal links towards link count when restricting new users from posting links (022fa0e7) +* closes #12126, fix language keys (075cd598) +* param (e5a60dc8) +* handle public chat rooms too (6a696c43) +* suppress chat message notifications for users who are known to be in the chat room (uid is present in the corresponding socket.io room) (18c27d1a) +* **deps:** + * update dependency workerpool to v9 (#12234) (2cccbcf6) + * update dependency sharp to v0.33.1 (#12233) (45143000) + * update dependency csrf-sync to v4.0.3 (#12232) (9e2a6f86) + * update dependency ace-builds to v1.32.2 (#12228) (b6ca117a) + * update dependency ace-builds to v1.32.1 (#12226) (6036d144) + * update dependency esbuild to v0.19.9 (#12224) (d96d4d09) + * update dependency @fontsource/inter to v5.0.16 (#12219) (e32eb8b3) + * update dependency chart.js to v4.4.1 (#12217) (b6b569c0) + * update dependency nodebb-theme-persona to v13.2.49 (#12218) (6dab99fd) + * update dependency postcss to v8.4.32 (#12204) (da879704) + * update dependency @fortawesome/fontawesome-free to v6.5.1 (#12198) (b41c7f2a) + * update dependency nodebb-theme-harmony to v1.1.101 (#12199) (72d6a4b1) + * update dependency sortablejs to v1.15.1 (#12200) (cd625705) + * update dependency ace-builds to v1.32.0 (#12197) (75f063ba) + * update dependency @fortawesome/fontawesome-free to v6.5.0 (#12193) (a94f4a48) + * update dependency sharp to v0.33.0 (#12194) (1f287c74) + * update dependency fs-extra to v11.2.0 (#12191) (4eaf2320) + * update dependency passport to v0.7.0 (#12190) (bbf7c5e1) + * update dependency esbuild to v0.19.8 (#12187) (bc59856e) + * update dependency lru-cache to v10.1.0 (#12181) (22932bdb) + * update dependency esbuild to v0.19.7 (#12176) (00cb5839) + * update dependency lru-cache to v10.0.3 (#12175) (c404ef73) + * update dependency ace-builds to v1.31.2 (#12168) (b4a41af9) + * update dependency mongodb to v6.3.0 (#12170) (85936a59) + * update dependency lru-cache to v10.0.2 (#12160) (9d18d3c7) + * update dependency helmet to v7.1.0 (#12155) (50aa1a7c) + * update dependency async to v3.2.5 (#12150) (0e9eafa1) + * update dependency nodebb-theme-persona to v13.2.44 (#12149) (b489af06) + * update dependency nodebb-theme-harmony to v1.1.95 (#12148) (77b0baea) + * update dependency connect-pg-simple to v9.0.1 (#12144) (4e23d0d1) + * update dependency nodebb-theme-persona to v13.2.43 (#12140) (91e45fa2) + * update dependency nodebb-theme-harmony to v1.1.92 (#12131) (a3452c8f) + * update dependency nodebb-theme-peace to v2.1.24 (#12139) (29a59b90) + * update dependency spdx-license-list to v6.8.0 (2337d641) + * update dependency nodebb-plugin-composer-default to v10.2.25 (#12136) (cdb40719) + * update dependency cron to v3.1.6 (#12132) (2fb3af3c) + * update dependency ace-builds to v1.31.1 (#12135) (6b28f1dc) + * update dependency workerpool to v8 (#12121) (9bed7646) + * update dependency sass to v1.69.5 (#12128) (b351c00a) +* **socket.io:** update getPosts controller to return object containing posts instead of straight array (54000aab) + +##### Other Changes + +* **socket.io:** deprecate socketGroups.getChatGroups in favour of api.admin.listGroups (dc4cc74f) + +##### Refactors + +* line breaks good (4e560ade) +* replace deprecated call with api call (f91b823e) +* move async call to parallel (dabc282d) +* **socket.io:** + * deprecate SocketModules.chats.typing in favour of api.chats.toggleTyping (c1e6be77) + * deprecate SocketModules.chats.loadPinnedMessages in favour of api.chats.getPinnedMessages" (401e8636) + * deprecate SocketModules.chats.searchMessages in favour of api.search.roomMessages (f9dc3502) + * deprecate SocketModules.chats.setNotificationSetting in favour of api.chats.watch (75c8cda1) + * deprecated SocketModules.chats.toggleOwner in favour of api.chats.toggleOwner (b13c6ee4) + * deprecated SocketModules.chats.searchMembers in favour of api.search.roomUsers (6e952263) + * deprecate SocketModules.sortPublicRooms in favour of api.chats.sortPublicRooms (62b7dfd4) + * deprecate SocketModules.chat.getUnreadCount in favour of api.chats.getUnread (5eaffb42) + * deprecate SocketModules.chats.getIP in favour of api.chats.getIpAddress (214989a8) + * deprecate SocketModules.chats.hasPrivateChat in favour of api.users.getPrivateRoomId (0d3c94e6) + * deprecate SocketModules.chats.canMessage and .markAllRead with no alternative. deprecate .getRecentChats in favour of api.chats.list (a4133500) + * deprecate SocketModules.chats.isDnD in favour of api.users.getStatus (eebea4df) + * deprecate SocketModules.chats.getRaw in favour of api.chats.getRawMessage (c4b4e79b) + * deprecate socketGroups.loadMoreMembers in favour of api.groups.listMembers (807d778c) + * deprecate socketGroups.searchMembers in favour of api.groups.listMembers (d2f3333a) + * deprecate socketGroups.loadMore in favour of api.groups.list (b61e8147) + * deprecate categories.categorySearch in favour of api.search.categories (00de9d5b) + * deprecate categories.loadMore in favour of api.categories.getTopics (1ce4ca54) + * deprecate categories.loadMoreSubCategories in favour of api.categories.getChildren (010727f5) + * deprecate categories.setWatchState in favour of api.categories.setWatchState (d7c6b3d6) + * deprecate categories.getTopicCount in favour of api.categories.getTopicCount (c442b6e6) + * deprecate categories.get in favour of api.categories.list (96046373) + * deprecate categories.getRecentReplies in favour of api.categories.getPosts (52b78e83) + +##### Tests + +* migrate socket modules tests to v3 api (445b70de) +* migrate socket.io groups tests to use api v3 (2c1c4dfe) + +#### v3.5.3 (2023-12-13) + +##### Chores + +* up composer (245e5df3) +* up composer default (c1f82b78) +* incrementing version number - v3.5.2 (52fbb2da) +* update changelog for v3.5.2 (e2e85053) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change translator escape (c434262e) + +##### Other Changes + +* add types for database abstration layer (#10762) (17cd19c7) + +#### v3.5.2 (2023-11-29) + +##### Chores + +* up composer (49013f81) +* incrementing version number - v3.5.1 (4c543488) +* update changelog for v3.5.1 (48f7ae99) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12185, fix cli user password reset (6790000d) +* thumb width (a9ef58a5) + +#### v3.5.1 (2023-11-14) + +##### Chores + +* up mentions (b1b3dcb6) +* incrementing version number - v3.5.0 (d06fb4f0) +* update changelog for v3.5.0 (5d7c10f1) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12123, allow setting hh:mm for pin expiry (1f800747) + +##### Bug Fixes + +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (dcb0c4db) +* closes #12156, missing data for privilege tables (21e59538) +* thumb width (46f6f9ef) +* closes #12126, fix language keys (668a355a) + +#### v3.5.0 (2023-10-25) + +##### Chores + +* up persona (8428cc8d) +* up harmony (bd9eebd7) +* up harmony (574f95f5) +* up harmony (2c996606) +* up harmony (f619696b) +* up harmony (0d2e0752) +* up persona (75170693) +* up themes (36fe90dd) +* up themes (4d6a6ff5) +* up rewards (35d9a78d) +* up harmony (e09b0332) +* up harmony (ad72f653) +* up persona (215ac672) +* up harmony (560403a9) +* up harmony (a5a33db7) +* up harmony (732af96f) +* up harmony (2af856d8) +* up harmony (05a9dd4e) +* up harmony (15a0a196) +* up deps for lang key change (96c9ccc4) +* up harmony (cddfdae0) +* up harmony (90692d95) +* up harmony (7e75cfaf) +* up harmony (a5c1b2a0) +* up harmony (3a108cab) +* up persona (cc5e9d9c) +* up harmony (769f879e) +* up themes (46530337) +* incrementing version number - v3.4.3 (5c984250) +* update changelog for v3.4.3 (08949be9) +* up themes (e0b29ba9) +* up emoji (00dd0cb3) +* up emoji (86de8cb2) +* up emoji (5081ff48) +* up emoji (805aaa5e) +* up emoji (7568be3c) +* up themes (b7d8fd1e) +* up themes (d0682905) +* incrementing version number - v3.4.2 (3f0dac38) +* up deps (f1021542) +* up composer (45b9803a) +* up composer (7e5d9b71) +* up harmony (13ea14f1) +* up engines (0f9f875b) +* incrementing version number - v3.4.1 (01e69574) +* up dbsearch (b4775b18) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update actions/setup-node action to v4 (#12114) (762ad161) + * update dependency eslint-plugin-import to v2.29.0 (#12112) (2ae031ed) + * update redis docker tag to v7.2.2 (#12097) (bb812937) + * update dependency eslint to v8.52.0 (#12106) (8acdd355) + * update commitlint monorepo to v17.8.1 (#12104) (022e2a10) + * update dependency lint-staged to v15.0.2 (#12099) (8549d7de) + * update dependency sass-embedded to v1.69.4 (#12093) (f5f1679c) + * update dependency lint-staged to v15 (#12086) (d1cd625d) + * update commitlint monorepo to v17.8.0 (#12084) (225acb2e) + * update dependency sass-embedded to v1.69.2 (#12073) (9967ae6b) + * update dependency sass-embedded to v1.69.1 (#12071) (7fe72085) + * update dependency eslint to v8.51.0 (#12063) (6c01148e) + * update dependency @commitlint/cli to v17.7.2 (#12047) (d10a09a0) + * update dependency eslint to v8.50.0 (#12029) (65051066) + * update postgres docker tag to v16 (#12012) (6fa6f73b) + * update actions/checkout action to v4 (#11978) (b4233366) + * update docker/build-push-action action to v5 (#11997) (4ecfe40e) + * update docker/login-action action to v3 (#11998) (478f7c74) + * update docker/metadata-action action to v5 (#11999) (21b280d2) + * update docker/setup-buildx-action action to v3 (#12000) (95f7112a) + * update docker/setup-qemu-action action to v3 (#12001) (f286d7fa) + * update dependency sass-embedded to v1.67.0 (#12003) (b9d04e2f) + * update dependency eslint to v8.49.0 (#11993) (ceed4327) + * update coverallsapp/github-action action to v2.2.3 (#11988) (a473b515) + * update redis docker tag to v7.2.1 (#11987) (0b231fd3) +* **i18n:** + * fallback strings for new resources: nodebb.admin-extend-widgets (990bbd8c) + * fallback strings for new resources: nodebb.admin-manage-privileges (3cb6881c) + * fallback strings for new resources: nodebb.themes-harmony (67fec93d) + * fallback strings for new resources: nodebb.notifications (ed77a0b1) + * fallback strings for new resources: nodebb.admin-advanced-database (b517645f) + * fallback strings for new resources: nodebb.error, nodebb.flags (19cfd89f) + * fallback strings for new resources: nodebb.admin-extend-widgets (8b5f0334) + * fallback strings for new resources: nodebb.email (fc8a6b31) + * fallback strings for new resources: nodebb.admin-settings-post (8cb2c270) + * fallback strings for new resources: nodebb.email, nodebb.notifications (a71378cb) + * fallback strings for new resources: nodebb.topic (8df56d60) + * fallback strings for new resources: nodebb.notifications, nodebb.pages, nodebb.tags, nodebb.user (2627e974) + * fallback strings for new resources: nodebb.modules (ec3ab986) + * fallback strings for new resources: nodebb.admin-settings-chat (968ee0c7) + +##### New Features + +* show # of widgets on templates (2ca5192b) +* #12101, dont return rssFeedUrl if feeds are disabled (2955fdb5) +* add sidebar setting lang key (97a86ba4) +* award notif filter (9e9046bf) +* update to mongodb 6.1 (#12087) (e542b27d) +* add category canonical url (f96b0b7a) +* update error handler to check for pseudo-standard no-* prefix and route to 404 handler instead (db5b0f47) +* flag rescinding logic + api method (e012edea) +* backend methods for rescinding a report, supplemental adds and removing a report now adds to the flag history (bc0f362c) +* use homePageTitle in breadcrumbs if its set (1a745201) +* 3 column layout for widgets (db9279eb) +* update all language keys to use - instead of _ (#12059) (844cb91b) +* closes #12052, ability to disable stale topic warning (f8a3aceb) +* add .has() method in cache/ttl lib (d478de16) +* upgrade chartjs to 4.x (fe192b92) +* closes #11553, add forked from message like merged into (be14f6cc) +* add workerpool for password, closes #10326 (#12038) (8b25aff7) +* add new hook action:chat.onMessagesAddedToDom (a7517d88) +* add composerActions for chat rooms (d906097a) +* add heading strings (8c977f4c) +* introduce new ACP setting for newbie chat message delay, defaults to 2 minutes (223e7656) + +##### Bug Fixes + +* **deps:** + * update dependency cron to v3.1.4 (#12117) (3e45788f) + * update dependency ace-builds to v1.31.0 (#12113) (aba7eb0f) + * update dependency nconf to v0.12.1 (#12111) (91d00979) + * update dependency @fontsource/inter to v5.0.15 (#12108) (99c3c874) + * update dependency nodemailer to v6.9.7 (#12109) (e546adaa) + * update dependency mongodb to v6.2.0 (#11965) (7302e769) + * update dependency @fontsource/inter to v5.0.14 (#12103) (c9c6175a) + * update dependency cron to v3.1.3 (#12100) (bad9198e) + * update dependency sass to v1.69.4 (#12094) (2adc96c2) + * update dependency esbuild to v0.19.5 (#12091) (94434125) + * update dependency webpack-merge to v5.10.0 (#12088) (d45f506f) + * update dependency webpack to v5.89.0 (#12083) (1ebdfaea) + * update dependency connect-mongo to v5.1.0 (#12085) (212a3415) + * update dependency ace-builds to v1.30.0 (#12082) (8456682c) + * update dependency cron to v3.1.1 (#12078) (24d6b73f) + * update dependency commander to v11.1.0 (#12079) (7d38e9ed) + * update dependency sass to v1.69.3 (#12076) (193e54e2) + * update dependency workerpool to v6.5.1 (#12077) (14eede15) + * update dependency sass to v1.69.2 (#12074) (0dd4cedf) + * update dependency nodemailer to v6.9.6 (#12068) (6c59d72a) + * update dependency winston to v3.11.0 (#12064) (fdf279a3) + * update dependency cron to v3 (#12049) (f2fad2d3) + * update dependency @fontsource/inter to v5.0.13 (#12065) (512ac525) + * update dependency ace-builds to v1.29.0 (#12067) (b04fbf89) + * update dependency sass to v1.69.1 (#12070) (a5d2871c) + * update dependency @fontsource/inter to v5.0.12 (#12053) (1033218c) + * update dependency sass to v1.69.0 (#12060) (ecb847fc) + * update dependency nodebb-plugin-2factor to v7.4.0 (6c5c1afd) + * update dependency nodebb-plugin-ntfy to v1.7.3 (98e58252) + * update dependency postcss to v8.4.31 (#12048) (eaa7aff3) + * update dependency esbuild to v0.19.4 (#12046) (4289230f) + * update dependency rimraf to v5.0.5 (#12036) (3549fbdd) + * update dependency nodebb-theme-persona to v13.2.34 (#12043) (339481ca) + * update dependency nodebb-plugin-spam-be-gone to v2.2.0 (#12039) (84648db2) + * update dependency cron to v2.4.4 (#12033) (c1f873b3) + * update dependency ace-builds to v1.28.0 (#12028) (3262923a) + * update dependency nodebb-plugin-2factor to v7.3.1 (#12026) (d29ea026) + * update dependency nodebb-plugin-ntfy to v1.7.2 (#12024) (360d3257) + * update dependency sass to v1.68.0 (#12023) (be600a84) + * update dependency autoprefixer to v10.4.16 (#12022) (f6b6e6c7) + * update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (639fb33f) + * update dependency bootswatch to v5.3.2 (#12020) (5dc368a9) + * update dependency ace-builds to v1.27.0 (#12019) (f73ed6dd) + * update dependency nodebb-plugin-emoji to v5.1.10 (#12018) (16fe4fde) + * update dependency sharp to v0.32.6 (#12016) (f838498b) + * update dependency postcss to v8.4.30 (#12015) (7dbc6668) + * update dependency rtlcss to v4.1.1 (#12014) (ba894a04) + * update dependency nodebb-plugin-ntfy to v1.7.1 (#12011) (4e834a2e) + * update dependency ace-builds to v1.26.0 (#12010) (5a003acb) + * update dependency mongodb to v5.9.0 (#12008) (5bfcd34c) + * update dependency cropperjs to v1.6.1 (#12013) (9f5362c8) + * update dependency ace-builds to v1.25.1 (#12006) (1558d7a2) + * update dependency bootstrap to v5.3.2 (#12005) (44d120df) + * update dependency esbuild to v0.19.3 (#12002) (ef41b8bc) + * update dependency sass to v1.67.0 (#12004) (d2e49472) + * update dependency ace-builds to v1.24.2 (#11991) (447b7954) +* closes #12115 , toggle hasmore as well (728d63f9) +* #10276, only move widgets if area doesn't exist (1739f5a9) +* #12090, dont award disabled rewards (c1ae879d) +* rewards fixes (347a43f4) +* use template name instead of component (f6120ebb) +* incorrect data passed to api.flags.get (cc8fe435) +* missing body classes on error pages (54a810dd) +* edit notification key (bda37ac2) +* lang key (bffa7880) +* #12062, relax blockquote selector (99bdad80) +* allowing forward slash in language keys, temporarily allowing upper case characters (d25a24fc) +* rename filter-perPage to filter-per-page (872ddc26) +* upgrade script date (6f5a965a) +* add upgrade script for notifications (6c3ff86b) +* lang key, type has _, lang keys changed to use - (1072b38b) +* #12017, unreliable forum updated messaging (715bdac3) +* #12057, allow gmods to change user email (344ece8d) +* only show emailChanged alert for self (56794cf8) +* closes #12054 handle negative start/stop in psql (0f4e6648) +* make socket errors and static hook errors less noisy (2a1be01a) +* restore notificationSendDelay back to 60 (5fe1ad95) +* breaking tests (857433d1) +* #12044, only load notifications when opening dropdown (dbd0a715) +* change `notificationSendDelay` to default to 10 seconds instead of 60, #11445 (cf50b0fe) +* clear interstitial data if there are no additional interstitials on abort (bdc221eb) +* #11808, reduce zeal of middleware.registrationComplete (74902e4a) +* pass in missing uid (d50473df) +* #12025, validity checking on user-provided toPid value (fe42fd4e) +* #12032, truncate long category names (b518e036) +* field name importance (8041f4d1) +* closes #12007, parseInt notification fields (b8e43143) +* on shutdown clear locks (615b2f0f) +* remaining text, when sending with send button (6553e454) +* nodebb/nodebb-plugin-link-preview#18, remove sup from allowedTags, add source + source attributes (f09f4105) +* use isPrivileged instead of isAdmin (b9c3cdb6) +* failing test due to increased chat message delay (ff07fc44) +* better labels in ACP chat settings, #11983 (88dd21e2) +* bump chat message delay by 10x to 2000ms, re: #11983 (9b0b33cc) +* #11981, post immediately when canceling scheduling (aa797f23) +* **i18n:** + * added rewards resource and fallbacks (47910d70) + * fallbacks for new language keys (2b3d2055) + * push fallbacks for modules resource (9b384b98) + +##### Other Changes + +* fix quotes (b8705380) +* fix lint (3b46ad42) + +##### Performance Improvements + +* no need to count on every call (130815c7) + +##### Refactors + +* get rid of util.promisify on async function (b1ff93f8) +* fix comment (ff6bfeb8) +* get rid of async.series (c7c6e8ff) +* shorter timeago (6149252b) +* shorter code for pinned topics (ff952e59) +* change private message email subject (f9fb3c3a) +* use helpers.isAllowedTo (47c16e90) +* add email notification delay to chat message notifications (a47b4805) +* remove chat message notification queue, implement merge IDs for chat message notifications, so they can be grouped together (3ba371f6) +* update buildCategoryLabel (82ea9192) +* use esm only import used chart types/plugins (56b31674) +* get rid of exists db call, use promise.parallel (8895b152) +* get rid of some async.waterfall/series/parallel calls (e452c097) +* get rid of async.waterfall/series (8bc2ef22) +* reduce socket.emits for typing (4d1b8e76) + +##### Tests + +* add spec for new notif type (90e10b9c) +* worked with chatgpt to restrict the i18n test a bit to match requirements (99364427) +* fix flag tests (6606d96a) +* added test cases for .addReport and .rescindReport() (da239059) +* added i18n test to enforce kebab casing (69dde2b9) +* add reverse list test (66be9826) +* additional tests for #12034 (d7e9f324) +* added tests for new logic paths (toPid validation on post creation) (ce740301) +* 💥 i18n tests (8202c555) + +#### v3.4.3 (2023-09-27) + +##### Chores + +* incrementing version number - v3.4.2 (3f0dac38) +* update changelog for v3.4.2 (f9323de6) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change priv to topics:read (cddac03a) +* #12035, filter tids in mark all read (77d6d0ab) +* properly wrap promise to callback-style function (#12030) (aff19a6c) +* #12009, check if suggested/current versions are valid (7ca37bd6) +* **deps:** update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (c805824f) + +##### Refactors + +* remove nested promise (379ed0e2) + +#### v3.4.2 (2023-09-12) + +##### Chores + +* up harmony (bd94f263) +* up harmony (46f260b5) +* up harmony (62afd0bd) +* up composer/persona (5c628c56) +* up harmony (3e07c18d) +* up deps (3f7de1c7) +* up harmony (512c44d5) +* up harmony (319d3b1f) +* up themes (d7a7c355) +* incrementing version number - v3.4.1 (01e69574) +* update changelog for v3.4.1 (f24a334c) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* **deps:** bump 2factor (6bc2b6c5) +* move database call used to associate a NodeBB session UUID to its express session id into user.auth.addSession, which is the only time it is called (e1bced8c) +* toMid to posts you cant see (53106c00) +* closes #11982, fix element in prepEdit (e4ecb96f) +* prep edit so textarea isn't below text input (f2c4041f) + +##### Refactors + +* reduce socket.emits for typing (aebd9278) + +##### Tests + +* remove errant .only() (9dc9d5ef) +* fix room count (66251166) + +#### v3.4.1 (2023-09-06) + +##### Chores + +* up dbsearch (8357bb2e) +* incrementing version number - v3.4.0 (fd9247c5) +* update changelog for v3.4.0 (5c023025) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11981, post immediately when canceling scheduling (19b7cdb2) + +#### v3.4.0 (2023-09-06) + +##### Chores + +* up ntfy (d79f79e8) +* up dbsearch (6d27f778) +* up themes, dont send typing on page load (45ed12c5) +* up harmony (21ad49fe) +* up themes (e10a5fa5) +* up themes (8132d36b) +* up themes (10d11924) +* up harmony (0334b389) +* up harmony (32c870f4) +* incrementing version number - v3.3.9 (5805e770) +* update changelog for v3.3.9 (50d44777) +* up composer (ffd6ea5a) +* up composer (c2534287) +* up composer (540b9f18) +* up composer (87015e9b) +* up themes (dd3647ed) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* markdown dep (03f11a24) +* up markdown (f399db9d) +* incrementing version number - v3.3.6 (7fb38792) +* up deps (a7843a40) +* up composer (05a7c761) +* up themes (c4b865e1) +* up themes (7d9ff9bf) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* up themes (5c14438d) +* up themes (cb3252be) +* up harmony (c7df93b4) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update coverallsapp/github-action action to v2.2.2 (#11977) (15c6fd6b) + * update dependency jquery to v3.7.1 (#11963) (94f07c14) + * update dependency eslint to v8.48.0 (#11953) (4d0055f0) + * update dependency lint-staged to v14.0.1 (#11936) (1e0661dc) + * update dependency eslint-plugin-import to v2.28.1 (#11848) (44a9d88a) + * update redis docker tag to v7.2.0 (#11924) (c41a4a0f) + * update dependency sass-embedded to v1.66.1 (#11926) (64925578) + * update mongo docker tag to v7 (#11928) (7ebdfe71) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (271cf81e) + * fallback strings for new resources: nodebb.notifications (69f86747) + * fallback strings for new resources: nodebb.email, nodebb.modules, nodebb.notifications (6a1b1141) + +##### New Features + +* typing user list in chat (60035744) +* add data-allow-dupe and data-navigator-ignore (92f5c146) +* add a filter hook to login (a3d6dba6) +* use all events in addTopicEvents (4bc21a2e) +* add socket.data.uid on connect (f026e740) +* #11949, show alert if posts is going to be queued (731466e5) +* #6021 add min:rep-post-links (#11938) (979f24b1) +* add new notif type for public rooms (b65d8e82) +* better acp sidebar in dark mode (c92ecfb4) +* check mute when messaging, closes #11932 (9534f9b9) +* log roomId/roomName on delete (b958a39a) + +##### Bug Fixes + +* **deps:** + * update dependency nodemailer to v6.9.5 (#11980) (d2636989) + * update dependency archiver to v6.0.1 (#11976) (0e885a20) + * update dependency nodebb-theme-harmony to v1.1.50 (#11975) (b46425b1) + * update dependency spdx-license-list to v6.7.0 (#11974) (9138702d) + * update dependency postcss to v8.4.29 (#11968) (286dcf9a) + * update dependency jsonwebtoken to v9.0.2 (#11972) (4251394f) + * update dependency cron to v2.4.3 (#11957) (b25793cd) + * update dependency nodebb-theme-peace to v2.1.16 (#11958) (44611e05) + * update dependency cropperjs to v1.6.0 (#11956) (521a13f4) + * update dependency nodebb-plugin-composer-default to v10.2.17 (#11951) (d20c9cf2) + * update dependency nodebb-theme-harmony to v1.1.43 (#11950) (d28b1f4b) + * update dependency mongodb to v5.8.1 (#11948) (551e4043) + * bump markdown (f9b8a079) + * bump ntfy (79703919) + * update dependency nodebb-plugin-markdown to v12.2.1 (#11939) (a04d3972) + * update dependency mongodb to v5.8.0 (#11940) (76a4fee9) + * update dependency pg to v8.11.3 (#11919) (9c837632) + * update dependency archiver to v6 (#11929) (0b1b6af3) + * update dependency sass to v1.66.1 (#11927) (01c94daf) + * update dependency pg-cursor to v2.10.3 (#11920) (c09c29fa) +* don't create tooltips on mobile (ded596fe) +* always return string from helper (bdeca049) +* double escape issue, body is escaped in composer-default (6ae0d207) +* make selector stricter (9f7a39c5) +* #11969, match the server side behaviour for filters (887dfd7d) +* remove og:image value (#11966) (90ac82d0) +* don't try to parse response if request is head #11960 (440299e6) +* pinned msgs when switching chats (acee6777) +* deleted chat messages (#11962) (1a1fd64d) +* closes #11954, fix custom skins with spaces (965780b7) +* dont show chat notif if you are already in the room (3d6668e7) +* #11947, make user message has a numeric timestamp (dc0fb81b) +* #11944, dont refresh page when uninstalling (f5baca14) +* closes #11921 (e3969706) +* bookmark scroll doing ajaxify (2e0964e6) +* closes #11937, add dropup early based on position on screen (a7a266d7) +* improper SSO format (regression), update openapi schema (4a846803) +* return empty array for 'sso' otherwise (db15e7c4) +* #11906, remove retrieval of SSO data in getAllData internal method, only retrieve for calling user or admins, and only on edit page (a6c98de6) +* language string (4e0c6329) +* admins should see public chats (aeb27f4b) +* show access denied instead of internal error (7dd143e1) + +##### Other Changes + +* remove unused translator (34242e7a) +* fix spec (c0eefe72) + +##### Refactors + +* use map/get (98c3d2e9) +* add targetUid to email-change event (4e5340d2) +* how admins change emails (#11973) (8db13d8e) + +##### Tests + +* one more fix (8b533d54) +* fix tests, dont hang if payload is string (6b09b7c7) +* fix redirect test (35e689cf) + +#### v3.3.9 (2023-08-25) + +##### Chores + +* up mentions (4ec3a480) +* incrementing version number - v3.3.8 (a5603565) +* update changelog for v3.3.8 (65e16e9f) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* isPrivilegeGroup not capturing admin privileges (d13e7cd3) + +##### Tests + +* add some tests for isPrivilegeGroup (d5c8bf9e) + +#### v3.3.8 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.7 (b26f1744) +* update changelog for v3.3.7 (1193fa04) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* msg ref (4ba76338) +* #11947, make user message has a numeric timestamp (2d62a772) + +#### v3.3.7 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.6 (7fb38792) +* update changelog for v3.3.6 (a43354c0) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #11945, fix skins loading if there are no custom skins (438c4c89) + +#### v3.3.6 (2023-08-22) + +##### Chores + +* up deps (db55f18a) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +#### v3.3.4 (2023-08-20) + +##### Chores + +* incrementing version number - v3.3.3 (f94d239b) +* update changelog for v3.3.3 (38149a57) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script, get rid of nested processSortedSet (78a7cfe9) + +#### v3.3.3 (2023-08-19) + +##### Chores + +* incrementing version number - v3.3.2 (ec9dac97) +* update changelog for v3.3.2 (2ecf15c4) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* one more fix (51587ca3) +* one more upgrade script fix (b5d1e917) +* post preview on skins remove clearfix and floats (5a8e6af4) + +##### Refactors + +* add connectionTimeout to psql (90f29571) + +#### v3.3.2 (2023-08-18) + +##### Chores + +* incrementing version number - v3.3.1 (151cc68f) +* update changelog for v3.3.1 (6f961f9c) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script (c02f1d70) + +#### v3.3.1 (2023-08-18) + +##### Chores + +* up themes (62231baa) +* incrementing version number - v3.3.0 (fc1ad70f) +* update changelog for v3.3.0 (46f7405d) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #11930, ability to set custom skins as default (db07ab15) + +##### Bug Fixes + +* some more upgrade script fixes (f23b0b5b) +* #11906, userData.sso — don't serve deauthUrl or non-associated url if caller uid is not same as target uid (19e047e2) +* include latin-ext subset of fonts in admin styles (#11918) (556a1c48) + +##### Other Changes + +* fix lint (d1949cee) + +#### v3.3.0 (2023-08-16) + +##### Chores + +* **deps:** + * update dependency smtp-server to v3.13.0 (#11913) (7f6865cc) + * update dependency lint-staged to v14 (#11909) (ee78b418) + * update dependency lint-staged to v13.3.0 (#11908) (6f3b7bc8) + * update dependency eslint to v8.47.0 (#11904) (af3c5e54) + * update dependency @commitlint/cli to v17.7.1 (#11896) (1d44b004) + * update commitlint monorepo to v17.7.0 (#11892) (d1d38097) + * update dependency sass-embedded to v1.64.2 (#11858) (c9c23513) + * update dependency eslint to v8.46.0 (#11852) (8a761ff7) + * update dependency sass-embedded to v1.64.1 (#11833) (1cca1760) + * update commitlint monorepo to v17.6.7 (#11817) (ac65ab42) + * update dependency sass-embedded to v1.64.0 (#11821) (560bb29c) + * update actions/setup-node action to v3 (#10347) (c8387828) + * update mongo docker tag to v6 (#10889) (f2715979) + * update dependency eslint to v8.45.0 (#11800) (b53da688) + * update coverallsapp/github-action action to v2.2.1 (#11795) (adfde1d4) + * update redis docker tag to v7.0.12 (#11789) (40477c85) + * update dependency eslint to v8.44.0 (#11771) (0bad8578) +* up emoji (ffa8b729) +* up harmony (c83a7023) +* up composer (c9663718) +* up harmony/composer (5d030a77) +* up composer (e151ec86) +* up composer-default (8d2ac658) +* up harmony (dfc155e4) +* up themes (9501d855) +* up harmony (89968048) +* harmony (a282f701) +* up themes (35c97bcb) +* up themes (8b31815f) +* up themes (ba2f6031) +* harmony (e8fb02f3) +* up harmony (3b125ba2) +* up harmony (58968353) +* up themes (8444af1c) +* up harmony (6faec937) +* up composer (7bfe327c) +* up mentions (0495b863) +* up themes (472fbd85) +* up harmony (f3776501) +* up theme (05c1e1f1) +* up harmony (ee0128d7) +* up harmony (ba03e223) +* up themes (6fc80f9f) +* incrementing version number - v3.2.3 (b06d3e63) +* update changelog for v3.2.3 (afb38c71) +* up mentions (4b92df75) +* up composer (48a04eb7) +* up harmony (efc250f2) +* up themes (6b017eb1) +* up harmony (08491053) +* up harmony (3b7b0d41) +* remove test log (b93cc788) +* up plugins (d1132ac4) +* up themes (35ac434c) +* up themes (98e0d141) +* up harmony (ac063fe5) +* up mentions (d545c143) +* up themes (b36bec95) +* up themes (62429252) +* remove log (954db1ee) +* up themes (9fda8dce) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* up markdown (f23cda10) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-dashboard (80ea4eb0) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.error (e27d1743) + * fallback strings for new resources: nodebb.modules (ab668617) + * fallback strings for new resources: nodebb.global (bee5a9b4) + * fallback strings for new resources: nodebb.error (eca28302) + * fallback strings for new resources: nodebb.admin-dashboard (ac355acd) + * fallback strings for new resources: nodebb.admin-dashboard (62b7be1c) + * fallback strings for new resources: nodebb.admin-menu (ad9d8f77) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-manage-categories (f075e12a) + * fallback strings for new resources: nodebb.modules (2c54e362) + * fallback strings for new resources: nodebb.admin-manage-users (9284b7e4) + * fallback strings for new resources: nodebb.modules (4ed0ed45) + * fallback strings for new resources: nodebb.topic (9c0b98df) + * fallback strings for new resources: nodebb.email (3613d1e6) + * fallback strings for new resources: nodebb.modules (a7dae508) + * fallback strings for new resources: nodebb.admin-settings-guest (640e32d4) + * fallback strings for new resources: nodebb.error, nodebb.modules (2710037c) + * fallback strings for new resources: nodebb.admin-admin (58bdedaf) + +##### New Features + +* closes #11902, ability to clear search history (7a79fed8) +* #11897, show guest handles in post queue and after using POST /compose (76fde8ef) +* #11881, limit room names (9349cb63) +* add toMid to chat messages (0316f324) +* add category selector to analytics page (acef5e33) +* middleware.handleMultipart, applies on API routes — invokes multipart middleware based on content-type header (bcc4b82c) +* #11868 apply blacklist to routes (#11873) (23404ad1) +* add icon to invite/accept notifs (78c5dfdc) +* add flags link to acp manage menu, closes #11867 (99c22942) +* move to npm fontawesome dependency and support fa pro (#11820) (b709ed9e) +* password check hook (#11853) (8ac34f8e) +* #11850, chat msg search (11bfeaf1) +* #11814, dont check content len for admins (f359a767) +* closes #11843, refresh search after changing filters (907c5fa6) +* #11842, ability to change reputation of users (ac027387) +* closes #11812, add unread public rooms into digest (eb0fcd32) +* allow multiple room owners, closes #6503 (91642cb3) +* show online users at the top of userlist and update (911ef058) +* simplified api module handler logic, content-type detection/parsing (2d016af8) +* allow FormData object to be passed in to the API module (ed99ea20) + +##### Bug Fixes + +* **deps:** + * update dependency postcss to v8.4.28 (#11915) (eafa03ab) + * update dependency sharp to v0.32.5 (#11916) (a013b161) + * update dependency ace-builds to v1.24.1 (#11914) (4a97ee0f) + * update dependency cron to v2.4.1 (#11911) (6476c4b8) + * update dependency esbuild to v0.19.2 (#11910) (d9e08e05) + * update dependency autoprefixer to v10.4.15 (#11907) (2a1e33dd) + * update dependency nodebb-plugin-2factor to v7.2.1 (#11898) (762658d4) + * update dependency nodebb-plugin-ntfy to v1.4.0 (#11905) (b8d926f9) + * update dependency lru-cache to v10.0.1 (#11899) (fd385647) + * update dependency esbuild to v0.19.1 (#11903) (12771b70) + * update dependency sass to v1.65.1 (#11895) (4b04b41e) + * update dependency ace-builds to v1.24.0 (#11893) (8f6feb0b) + * update dependency compare-versions to v6.1.0 (#11883) (9608b124) + * update dependency nodebb-plugin-ntfy to v1.3.0 (#11889) (53006408) + * update dependency esbuild to v0.19.0 (#11884) (454a968e) + * update dependency nodebb-theme-persona to v13.2.17 (#11888) (70f83075) + * update dependency nodebb-theme-harmony to v1.1.33 (#11887) (31ed1a40) + * update fontsource monorepo to v5.0.8 (#11880) (4cb0b738) + * update dependency esbuild to v0.18.19 (#11882) (2c8fd3b8) + * update dependency esbuild to v0.18.18 (#11879) (9a07cdbd) + * update dependency nodebb-plugin-ntfy to v1.2.5 (#11876) (7710a5e6) + * update dependency @fortawesome/fontawesome-free to v6.4.2 (#11870) (7d5a8666) + * update fontsource monorepo to v5.0.7 (#11869) (2c8bf84c) + * update dependency validator to v13.11.0 (#11877) (4594cd67) + * update dependency nodebb-plugin-ntfy to v1.2.4 (ae8f5398) + * update socket.io packages to v4.7.2 (#11871) (d4d339f9) + * update dependency pg to v8.11.2 (#11859) (5582fe92) + * update dependency pg-cursor to v2.10.2 (#11860) (c79c1e5f) + * update dependency sass to v1.64.2 (#11861) (da852139) + * update dependency esbuild to v0.18.17 (#11844) (ba379836) + * update dependency cron to v2.4.0 (#11839) (b1db67ce) + * update dependency postcss to v8.4.27 (#11827) (8d8930f8) + * update dependency sharp to v0.32.4 (#11828) (ef9fd345) + * update dependency sass to v1.64.1 (#11834) (878fe217) + * update dependency esbuild to v0.18.16 (#11838) (ace36434) + * update dependency esbuild to v0.18.15 (#11823) (8ab9c72c) + * update dependency nodemailer to v6.9.4 (#11819) (fcb99af1) + * update dependency sass to v1.64.0 (#11822) (e7626d90) + * update dependency nodebb-plugin-ntfy to v1.1.0 (#11815) (465b3e09) + * update dependency webpack to v5.88.2 (#11811) (4095cda6) + * update dependency esbuild to v0.18.14 (#11813) (de13aae6) + * update dependency esbuild to v0.18.13 (#11801) (212f90bb) + * update dependency sharp to v0.32.3 (#11799) (406ced79) + * update dependency postcss to v8.4.26 (#11798) (8e295464) + * update dependency esbuild to v0.18.12 (#11794) (f15265ff) + * update dependency winston to v3.10.0 (#11792) (786fff6f) + * update dependency sharp to v0.32.2 (#11791) (d156e67e) + * update dependency nodebb-plugin-ntfy to v1.0.16 (#11790) (3c5e5d3e) + * update fontsource monorepo to v5.0.5 (#11785) (efd784fa) + * update dependency compare-versions to v6 (#11784) (50fd242b) + * update dependency semver to v7.5.4 (#11783) (3bf10941) + * update dependency mongodb to v5.7.0 (#11781) (833a1ba7) + * update dependency postcss to v8.4.25 (#11780) (7fb8e414) + * update dependency jsonwebtoken to v9.0.1 (#11778) (bb89a12a) + * update dependency ace-builds to v1.23.4 (#11782) (b2cabd43) + * update fontsource monorepo to v5.0.4 (#11776) (5eedd8eb) + * update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (1932a31d) + * update dependency nodebb-theme-persona to v13.1.7 (#11769) (d2e6062b) + * update dependency @isaacs/ttlcache to v1.4.1 (#11774) (63bbb366) + * update dependency esbuild to v0.18.11 (#11772) (335a3619) + * update dependency webpack to v5.88.1 (#11764) (a3111e4d) +* if you send message scrollToBottom (223c85e4) +* clicking on email consent form label checks the wrong box (2fe93361) +* clicking on email consent form label checks the wrong box (514af5d6) +* copy FA fonts to build directory instead of serving them directly (#11891) (ac4623ee) +* use config.undoTimeout instead of hardcoded value (850cfb33) +* add missing id/for to all checkboxes (ae747875) +* #11875, simplify alerts and show progress (881a28eb) +* bug where api module would throw if response contained no content-type header (007d735f) +* chat mark read regression (f4e2e617) +* fix escaped characters in tooltips, fix priv checks in tooltips (82562bec) +* #11855, remove superfluous password challenge on admin email update (unless they're updating their own) (4ca71f63) +* register abort can error on weird session state (#11854) (c9511915) +* #11847, typo in markNotification (5a8b4125) +* #11837, use userslug for check (e2fa8cf3) +* #11841, use unique nid per user who flagged (17783440) +* reset_code.tpl card block expanding to bottom of container (2792d771) +* closes #11825, user icons in global privileges (dae4f9f7) +* fallback for room timestamp (77550a50) +* dont error if timestamp is missing (6cc86b6e) +* topic postercount field if owner is changed (00be053e) +* updateOwner (16fe1eb9) +* unread notif filter (3e7ca4f2) +* closes #11806, fix code blocks (165b0f85) +* allow escape to close chat modals (4c311502) +* on leave/kick remove matching sockets from rooms (a766f74f) +* spec (79fae26d) +* lint (1e38a16b) +* client side js crash (adb3a5e6) +* #11797, update title on chat switch (840792ae) +* always return empty array if its not set (5c208610) +* mobile back button (9149a9a2) +* clear cache on sort (e03fdcd6) +* #11787 (bf2c429a) +* fetch handler not passing back errors or success payloads (8a531826) +* group membership methods for guests/spiders (2791eb8a) + +##### Other Changes + +* new filter to filter skins (c1361ee5) +* //github.com/NodeBB/NodeBB/issues/11818 (f7ae8963) +* //github.com/NodeBB/NodeBB/issues/11818 (0dce4c46) + +##### Performance Improvements + +* faster upgrade script (43060f3c) + +##### Refactors + +* ip blacklist.test (38c0c8de) +* dont load all tokens in verify token (2fe193d6) +* dont sleep if iteration is done on first one (0136e924) +* use fetch() throughout, instead of jQuery .ajax() (7415b16d) + +##### Tests + +* fix test if ip is invalid (38377982) +* fix tests to use regular uid (d615273d) +* fix tests since nid format changed (e41042ee) +* fix test (9e574e07) +* log e11000 errors (934df69e) +* fix spec (b63cd548) +* fix (e31f5c42) + +#### v3.2.3 (2023-07-19) + +##### Chores + +* downgrade harmony to correct version (7c94506b) +* incrementing version number - v3.2.2 (758ecfcd) +* update changelog for v3.2.2 (91a432ad) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* typo in replied to link (3024dac1) +* logs page whitespace (2a3d6d5c) +* version alert in acp (05c9cca7) +* #11804, fix direction of dropdown on rtl (a4dba8d3) +* #11802, fix anchor ids in acp settings (562e4d6e) +* #11803, fix rtl in acp (a0478c70) + +#### v3.2.2 (2023-07-12) + +##### Chores + +* up themes (f1170b18) +* up spam-be-gone (eed34d04) +* remove log (509faa5e) +* incrementing version number - v3.2.1 (20145074) +* update changelog for v3.2.1 (c7f8cee9) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11787 (6ae0df4f) +* #11786 fix selector for upgradable plugins (bf114c11) + +#### v3.2.1 (2023-07-05) + +##### Chores + +* up harmony (9fc5ae08) +* up composer (82d37702) +* up spider-detector (97d8f858) +* incrementing version number - v3.2.0 (9ecac38e) +* update changelog for v3.2.0 (080f9e75) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11766, allow privileged users to vote and chat (1bda9073) +* #11775, trim -rtl from targetSkin (0183e5f8) +* #11773, fix create token button (64d30182) +* add ?page= to canonical urls (4045681a) +* group membership methods for guests/spiders (7d5fe20b) +* **deps:** update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (a1110f10) + +#### v3.2.0 (2023-06-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13.2.3 (#11762) (26af152a) + * update commitlint monorepo to v17.6.6 (#11750) (a19e7b5c) + * update dependency sass-embedded to v1.63.6 (#11742) (8a961794) + * update dependency sass-embedded to v1.63.5 (#11738) (94d1dbc7) + * update dependency eslint to v8.43.0 (#11722) (7beadb6b) + * update coverallsapp/github-action action to v2.2.0 (#11690) (9282bc58) + * update dependency eslint to v8.42.0 (#11672) (55e5467d) + * update commitlint monorepo to v17.6.5 (#11648) (3b53f415) + * update dependency jsdom to v22.1.0 (#11640) (9a5d39c0) + * update dependency smtp-server to v3.12.0 (#11628) (57e3f999) + * update dependency eslint to v8.41.0 (#11616) (70bb50cd) + * update redis docker tag to v7 (#10830) (f1e2342d) + * update dependency jquery to v3.7.0 (#11591) (12c03130) +* up harmony (94013139) +* up persona (8b4e2ca9) +* up deps (b1de9472) +* up harmony (db5016cc) +* up harmony (8f6889e0) +* up harmony (c4c06be5) +* up harmony (777c7d09) +* up deps (7f465006) +* up harmony (f9e37829) +* incrementing version number - v3.1.7 (0b4e81ab) +* update changelog for v3.1.7 (8744e412) +* up persona (7a0e5c6d) +* up harmony (be474fb4) +* up harmony (1896b486) +* up persona (09d42076) +* up harmony (cce42fec) +* up markdown (4107d6b8) +* up themes (b2f70a2e) +* up composer (21919524) +* up harmony (64441602) +* incrementing version number - v3.1.6 (b3a3b130) +* up themes (61420fdc) +* up themes (f9990cab) +* bump themes for da02361b13d064763223533368f9b71d998ecf37 (c97977f8) +* up harmony (0f84f597) +* up emoji (4b0d3940) +* up emoji (291aa58e) +* incrementing version number - v3.1.5 (ec19343a) +* up harmony (56ac610b) +* up themes (0bfe361c) +* up themes (67ab222d) +* update lang key (1cc079f3) +* up harmony (590a7237) +* up harmony (ed54c7c0) +* up harmony (91760eef) +* up emoji (7ab05f5d) +* up harmony (43887328) +* up emoji (9a3c62f7) +* up emoji (783fbfd8) +* up emoji (7a3468a1) +* up emoji (933f5a90) +* up harmony (61f4202e) +* up themes (5d089363) +* scroll up alert (ca6f43c5) +* harmony (c48f15c5) +* up themes (14c93cd5) +* up harmony (6188d8be) +* up harmony (9e416d7f) +* incrementing version number - v3.1.4 (2452783c) +* up persona (78c2e29c) +* up markdown (7f5ec0ef) +* up themes (cdfc1bfe) +* up harmony (fd80b612) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-appearance-skins (7ca85c60) + * fallback strings for new resources: nodebb.admin-advanced-cache, nodebb.admin-advanced-errors, nodebb.admin-development-logger (fa8e656d) + * fallback strings for new resources: nodebb.admin-appearance-customise (0863afd0) + * fallback strings for new resources: nodebb.user (195b09d5) + * fallback strings for new resources: nodebb.admin-manage-users (934b6792) + * fallback strings for new resources: nodebb.themes-harmony (619c4ff7) + * fallback strings for new resources: nodebb.topic (639eeb44) + * fallback strings for new resources: nodebb.admin-appearance-customise, nodebb.admin-appearance-skins, nodebb.admin-appearance-themes, nodebb.admin-settings-api (d508772c) + * fallback strings for new resources: nodebb.admin-manage-groups (e53929fc) + * fallback strings for new resources: nodebb.users (1ffc9221) + * fallback strings for new resources: nodebb.modules (54a683bb) + * fallback strings for new resources: nodebb.themes-harmony (0aef9a91) + * fallback strings for new resources: nodebb.admin-settings-api (78bc71aa) + +##### New Features + +* closes #11747, add pagination to tokens page (4b11cd0d) +* add vote privs to topic (#11734) (86faed6f) +* custom skins panel in acp (556fd65d) +* add req and socket to als, closes https://github.com/NodeBB/NodeBB/pull/10304 (68ddca1e) +* #11714, add page title (1a5e18cd) +* #11714, add registrationQueue flag (3080eb7e) +* do not show the replies container in a post's footer if the only reply present is the next post (da02361b) +* add new tab to define bs variables (de68f749) +* bring back noskin option (2edfe0ef) +* add not validated/expired (5fae09f3) +* closes #11671, allow custom classes on body (e89cfd44) +* upgrade fonts (392a7d28) +* allow more params to app.newTopic/newReply (325c1955) +* update progress bar more frequently (99aaa9f1) +* closes #11630 (8c9ab01f) +* add hidden-empty utility (63ae03b4) +* translate bodyShort (ed15cbb0) +* add lang string and drag fix (db9b807c) +* center chat modal attr (4833a2b9) +* token rolling API for admins (4f524e9f) +* token editing and deletion (ce23caf7) +* api token migration, new ACP tokens list, token creation (e4888dea) +* internal utility functions for token management (creation, deletion, etc) (7b8bffd7) + +##### Bug Fixes + +* **deps:** + * update socket.io packages to v4.7.1 (#11763) (1de2d632) + * update dependency ace-builds to v1.23.1 (#11759) (53ab5931) + * update dependency esbuild to v0.18.10 (#11760) (e7f68aec) + * update dependency pg-cursor to v2.10.1 (#11757) (a814440c) + * update dependency pg to v8.11.1 (#11758) (8b56fa2f) + * update dependency esbuild to v0.18.9 (#11755) (3adc7505) + * update socket.io packages to v4.7.0 (#11744) (b25e7247) + * update dependency semver to v7.5.3 (#11745) (9d0edc36) + * update dependency esbuild to v0.18.8 (#11751) (a7243790) + * update dependency esbuild to v0.18.7 (#11749) (85e5619c) + * update dependency sass to v1.63.6 (#11743) (939e5818) + * update dependency webpack to v5.88.0 (#11741) (c45854d9) + * update dependency sanitize-html to v2.11.0 (#11740) (9d5fadad) + * update dependency esbuild to v0.18.6 (#11736) (e0c137c9) + * update dependency sass to v1.63.5 (#11737) (61e45cb3) + * update dependency ace-builds to v1.23.0 (#11739) (a53e7d21) + * update dependency esbuild to v0.18.5 (#11730) (2a56d21c) + * update dependency esbuild to v0.18.4 (#11721) (ae349004) + * update dependency commander to v11 (#11719) (d454c5c4) + * update dependency lru-cache to v10 (#11716) (b3bdb9d0) + * update dependency semver to v7.5.2 (#11718) (770021e0) + * update dependency esbuild to v0.18.3 (#11715) (9f94b56f) + * update dependency webpack to v5.87.0 (#11713) (f95929b2) + * update dependency nodebb-plugin-2factor to v7.1.3 (#11711) (c9e41e10) + * update dependency sass to v1.63.4 (#11709) (dfcef322) + * update dependency esbuild to v0.18.2 (#11705) (9521c8de) + * update dependency nodebb-plugin-2factor to v7.1.1 (#11703) (fe96d6f8) + * update dependency ace-builds to v1.22.1 (#11699) (b0d91a55) + * update dependency esbuild to v0.18.1 (#11701) (5247f763) + * update dependency nodebb-theme-harmony to v1.0.47 (#11700) (96a7add5) + * update dependency sass to v1.63.3 (#11693) (1512a37d) + * update dependency @fontsource/poppins to v5.0.3 (#11696) (1bd8f898) + * update dependency @fontsource/inter to v5.0.3 (#11695) (ddb41fbe) + * update dependency esbuild to v0.18.0 (#11698) (2b419f93) + * update dependency webpack to v5.86.0 (#11691) (744f399c) + * update dependency connect-pg-simple to v9 (#11692) (32cebaa6) + * update dependency mongodb to v5.6.0 (#11670) (1738f3c5) + * update dependency lru-cache to v9.1.2 (#11668) (09fff40c) + * update dependency nodebb-plugin-emoji to v5.1.0 (#11683) (bf76989e) + * update dependency nodebb-plugin-dbsearch to v6.1.0 (#11689) (9ef40569) + * update dependency nodebb-theme-persona to v13.1.0 (#11688) (6240a8c6) + * update dependency nodebb-plugin-composer-default to v10.2.0 (#11686) (bfdb72ca) + * update dependency nodebb-plugin-mentions to v4.2.0 (#11687) (d58c9d8c) + * update dependency nodebb-plugin-2factor to v7.1.0 (#11685) (64557680) + * update dependency nodebb-plugin-markdown to v12.1.0 (#11684) (ed2d9a96) + * update dependency nodebb-theme-lavender to v7.1.0 (#11682) (c23deb87) + * update dependency nodebb-plugin-spam-be-gone to v2.1.0 (#11681) (5d8d0946) + * update dependency nodebb-theme-harmony to v1.0.43 (#11680) (601a0363) + * update dependency webpack to v5.85.1 (#11678) (ccf3d3bc) + * update dependency nodebb-theme-harmony to v1.0.42 (#11674) (d41651dc) + * update dependency nodebb-plugin-composer-default to v10.1.9 (#11676) (929835de) + * update dependency nodebb-theme-harmony to v1.0.40 (#11669) (b5ee0247) + * pin dependencies (#11660) (1033cd1c) + * update dependency webpack to v5.85.0 (#11663) (e6344db8) + * update dependency @fontsource/inter to v5 (#11661) (e5e8debf) + * update dependency nodebb-theme-harmony to v1.0.39 (#11659) (6d4ab1d0) + * update socket.io packages to v4.6.2 (#11658) (fe10356c) + * update dependency ipaddr.js to v2.1.0 (#11653) (a13b5c40) + * update dependency nodebb-plugin-composer-default to v10.1.8 (#11656) (032425b2) + * update dependency nodebb-plugin-markdown to v12.0.5 (#11657) (a7a1cda5) + * update dependency nodebb-theme-persona to v13.0.73 (#11652) (e4c2015f) + * update dependency nodebb-plugin-composer-default to v10.1.7 (#11654) (d242bc29) + * update dependency nodemailer to v6.9.3 (#11644) (bd93ab8b) + * update dependency nodebb-theme-harmony to v1.0.38 (#11646) (f9ba518a) + * update dependency nodebb-theme-persona to v13.0.72 (#11647) (c474841e) + * update dependency nodebb-widget-essentials to v7.0.13 (#11645) (5daa733c) + * update dependency webpack to v5.84.1 (#11635) (7c333fb1) + * update dependency @popperjs/core to v2.11.8 (#11636) (14ac1206) + * update dependency winston to v3.9.0 (#11637) (45af9333) + * update dependency postcss to v8.4.24 (#11642) (1bc3c384) + * update dependency nodebb-theme-persona to v13.0.71 (#11641) (a6be0cd7) + * update dependency nodebb-plugin-composer-default to v10.1.6 (#11638) (3c9a960e) + * update dependency cron to v2.3.1 (#11633) (f5bcdc87) + * update dependency nodebb-theme-persona to v13.0.70 (#11632) (73d8ac66) + * update dependency webpack to v5.84.0 (#11631) (23532464) + * update dependency nodebb-theme-peace to v2.0.27 (#11629) (b10227dc) + * update dependency ace-builds to v1.22.0 (#11621) (70d0fc1a) + * update dependency nodebb-plugin-emoji to v5.0.16 (#11626) (21b61b37) + * update dependency webpack-merge to v5.9.0 (#11622) (5c70b428) + * update dependency nodebb-theme-peace to v2.0.25 (#11615) (f0336af4) + * update dependency webpack to v5.83.1 (#11608) (a4ae2e08) + * update dependency rimraf to v5.0.1 (#11610) (d1ccfac1) + * update dependency terser-webpack-plugin to v5.3.9 (#11611) (af00ebbe) + * update dependency ace-builds to v1.21.1 (#11607) (d26c9bf8) + * update dependency pg-cursor to v2.10.0 (#11605) (10ed33f1) + * update dependency @socket.io/redis-adapter to v8.2.1 (#11602) (49b3badb) + * update dependency ace-builds to v1.21.0 (#11603) (3d9f6f41) + * update dependency pg to v8.11.0 (#11604) (9840289c) + * update dependency semver to v7.5.1 (#11597) (18606f9c) + * update dependency esbuild to v0.17.19 (#11598) (28fb4e10) + * update dependency mongodb to v5.5.0 (#11593) (88e891fc) + * update dependency nodemailer to v6.9.2 (#11590) (3a883e3f) + * update dependency connect-redis to v7.1.0 (#11592) (97ec0c75) + * update dependency webpack to v5.82.1 (#11585) (90e53177) + * update dependency ace-builds to v1.20.0 (#11587) (326d820f) +* #11761, don't escape topic title twice (01c36f8b) +* use btn instead of icon (aefef763) +* rollback ace-builds 1.23.0 doesnt work (ea150162) +* #11756, fix unique visitor stats in acp table (e45f513b) +* dont overwrite postIndex (c21d7dbc) +* closes #11731, set postIndex on pagination (cbd98c1b) +* pinned topic ordering if parent element has non topic elements (cfedd087) +* delete events not working (281078f5) +* if reply is in different topic dont hide in parent (9ee1d7b0) +* web (6d5f6a15) +* var name (b48a6e26) +* error toast on lost connection (2c89d784) +* dont send 200 status on admin upload errors (#11707) (8ca65b0c) +* #11702, don't escape backgroundImage twice (6740a51e) +* closes #11697, remove min attribute from rep thresholds (4a6249a4) +* skins page revert (33a6b3e1) +* dont add deleted users to users:online (d0e9eb2c) +* #11679, fix username change (db3bff09) +* closes #11673, topic search for harmony (ee8cb378) +* #11664, dont create backlinks for quotes (d3c5a79d) +* wrap on events page (a5b080ea) +* app.newTopic usage (9f3bdf75) +* rtl fixes for code and long text (05460d8e) +* topic count in tools after purge closes #11651 (1974abeb) +* add loadingMore flag to chat infinite load (e0300ab7) +* #11619, fix selector (cdeaef6b) +* text area height calculation in chats (c52916de) +* textarea on error (c77b6224) +* closes #11612 (3cef2535) +* edge case in category filter (5daaa5ea) +* #11572 (29303f4a) +* browser title if options.title is undefined (adf14ea5) +* lang strings (d6ead3d4) +* #11594 (11d315df) +* relocated upgrade script, removed outdated code that called core.api for tokens (3e6dd78d) + +##### Other Changes + +* fix whitespace (4768d06b) +* fix unused (dcc2bb10) +* //github.com/NodeBB/NodeBB/issues/11612 (cf7d9334) +* up peace (0da8b506) +* use csrf_token in ws handshake (#11573) (63b859f0) +* closes #11577 (ad1ae291) + +##### Performance Improvements + +* make less db calls to load indices (0b2feb9e) + +##### Refactors + +* show both emails in user list (daa5ac85) +* move async call to promise.all (e56e44ab) +* remove script (2360d296) +* remove log (9522951f) +* remove log (32f60df1) +* use new params (2cf865e8) +* use app.parseAndTranslate (b1fbc194) +* remove return (e0149462) + +##### Reverts + +* remove emoji email css (7b8ebd0a) + +##### Tests + +* fix spec (94f06301) +* make email requirement flag changes more explicit in tests, so cases do not rely on variable values from other cases (a8399aa2) +* fix another test (c638186b) +* fix email tests @julianlam (64718d0c) +* openapi (2f94eb21) +* openapi (bc74afaf) +* remove is touch test (1ab0faa4) +* remove socket.io test (366b18e0) +* log socket.io error (3cb4edf1) +* fix another test (12e75ff4) +* fix test (c201bf45) +* add back missing tests (031ffe49) +* add missing tests (a75fd636) +* fix digest test (aff6d20f) +* add email (4bfebc81) +* digest (61563b01) +* additional tests for .roll() (6765d053) +* fix authentication tests to use new token saving utility functions (f42b636a) + +#### v3.1.7 (2023-06-21) + +##### Chores + +* incrementing version number - v3.1.6 (b3a3b130) +* update changelog for v3.1.6 (f10a2d2e) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11735, crash when making guest reply (f2fe7c06) +* #11729, only check registered users (090a7921) +* #11723, fix pagination on following/follower page (4e146eb5) + +#### v3.1.6 (2023-06-15) + +##### Chores + +* incrementing version number - v3.1.5 (ec19343a) +* update changelog for v3.1.5 (b0d16861) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11717 prevent crash in messaging (8620a2cd) +* closes #11708, fix quick reply check (a757716d) + +#### v3.1.5 (2023-06-13) + +##### Chores + +* fix persona (74174414) +* up themes (97ff1f11) +* incrementing version number - v3.1.4 (2452783c) +* update changelog for v3.1.4 (633dc2de) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add back support for req.body._csrf (67f44a32) + +##### Bug Fixes + +* improper neutralization of user input in image wrapping code (1d1639d4) +* don't update edit data if edited timestamp is not available (c5cd76e7) +* filter null nav items (b73f307a) +* rimraf usage in user image delete (3256fb30) +* closes #11620, fix copy code when line numbers are enabled (82e26829) +* logins dashboard user images (8cb6ebb9) + +##### Refactors + +* change welcome headers to be smaller (0c4870ec) + +##### Tests + +* remove socket.io test (24ebb153) + +#### v3.1.4 (2023-05-18) + +##### Chores + +* up markdown (51bf5e95) +* incrementing version number - v3.1.3 (3b4e9d3f) +* update changelog for v3.1.3 (9924fde6) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* textarea on error (469aa551) +* closes #11613, closes #11614 (d8d486a6) +* closes #11612 (8f6a68ca) +* #11572 (2910cb2b) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11612 (24bd9d4e) + +##### Refactors + +* remove unused require (05b58c70) +* remove log (ca2be0e8) + +#### v3.1.3 (2023-05-15) + +##### Chores + +* incrementing version number - v3.1.2 (40fa3489) +* update changelog for v3.1.2 (5b398782) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Continuous Integration + +* use GitHub Actions expression instead of handlebars template (#11599) (412a1ecf) +* tag with branch name if not default branch (cd7fdfce) + +##### Bug Fixes + +* #11601, dont trigger edit if chat input has text (d55cd464) +* #11600, prevent helmet crash on startup (8eed5a84) +* #11594 (85d104c3) + +##### Other Changes + +* use csrf_token in ws handshake (#11573) (51096ad2) + +#### v3.1.2 (2023-05-12) + +##### Chores + +* incrementing version number - v3.1.1 (40250733) +* update changelog for v3.1.1 (ccd6f48c) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11595, use default value (28740de7) + +#### v3.1.1 (2023-05-11) + +##### Chores + +* incrementing version number - v3.1.0 (0cb386bd) +* update changelog for v3.1.0 (2c515dc3) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Documentation Changes + +* updating changelog to move line re: breaking change down to new features (b259a000) + +##### Bug Fixes + +* failing test case (3251bca2) +* #11589, regression where a user could not confirm their email if requireEmailAddress was enabled (686ecea1) + +#### v3.1.0 (2023-05-10) + +##### Chores + +* up themes (14a5c1aa) +* up harmony (f9997b27) +* up dbsearch (2b259b20) +* up harmony (9064920f) +* up harmony (622d75d7) +* up markdown (c92a14ab) +* up harmony (475ecf42) +* up emoji (ca7ff292) +* up deps (64add3e3) +* up harmony (048fbcaa) +* up deps (f337ca65) +* up widgets (68283bcd) +* up harmony (eab2679f) +* up harmony (7f19913b) +* up themes (832fe95a) +* incrementing version number - v3.0.1 (26f6ea49) +* update changelog for v3.0.1 (fd30af10) +* whopps (ec0da196) +* up harmony (2caf4afc) +* up harmony (9e4bd4e9) +* up composer (01960f27) +* up deps (b6915247) +* up themes (4b374f04) +* up harmony (ee085c1d) +* up widgets (2588853b) +* up harmony (01669fa5) +* up harmony (c58d07f4) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.themes-harmony, nodebb.themes-persona (48a4fd50) + * fallback strings for new resources: nodebb.admin-settings-email (489163aa) + * fallback strings for new resources: nodebb.user (6a2c6de0) + * fallback strings for new resources: nodebb.admin-extend-widgets (5f728445) + * fallback strings for new resources: nodebb.groups (db802db6) + * fallback strings for new resources: nodebb.global, nodebb.pages (819ded6f) + * fallback strings for new resources: nodebb.global (6fe660a3) + * fallback strings for new resources: nodebb.error, nodebb.tags, nodebb.topic (a908bed8) + * fallback strings for new resources: nodebb.global (6e7465de) + * fallback strings for new resources: nodebb.global (28a1df16) + * fallback strings for new resources: nodebb.modules (3b0b2b2f) + * fallback strings for new resources: nodebb.global (6f573c27) + * fallback strings for new resources: nodebb.global (da5bfacd) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-appearance-customise, nodebb.admin-dashboard, nodebb.admin-extend-widgets, nodebb.admin-manage-groups, nodebb.admin-manage-privileges, nodebb.admin-settings-api, nodebb.admin-settings-navigation, nodebb.admin-settings-user, nodebb.error, nodebb.flags, nodebb.global, nodebb.groups, nodebb.modules, nodebb.pages, nodebb.post-queue, nodebb.recent, nodebb.register, nodebb.search, nodebb.tags, nodebb.topic, nodebb.user, nodebb.users (de282c0b) + * fallback strings for new resources: nodebb.topic (ab17e5c3) +* **deps:** + * update dependency eslint to v8.40.0 (#11574) (54f4aba0) + * update commitlint monorepo to v17.6.3 (#11568) (fe041498) + * update dependency jsdom to v22 (#11551) (76cc1cf3) + * update dependency jsdom to v21.1.2 (#11547) (f0d989e4) + * update commitlint monorepo to v17.6.1 (#11478) (c4c55684) + * update dependency lint-staged to v13.2.2 (#11521) (2e2bc54b) + +##### Continuous Integration + +* add 3.x docker tag (163c977d) +* only publish latest from master (c588d741) +* multi-platform docker image (#11479) (0417e5f1) + +##### Documentation Changes + +* openapi schema for newly added routes (02f567ff) + +##### New Features + +* update transifex config with new language strings (529f2d17) +* #11584 (f6b2d376) +* add helper to convert isostrings to localeString (e1bb277f) +* up emoji, remove title parse code (78f79347) +* add getSortedSetMembersWithScores (#11579) (f083cd55) +* add app.newReply (101fe81d) +* expiration date for widgets (fbf44a10) +* closes #11549, new error pages (83fca316) +* write API shorthand to query post routes by their topic index (requires tid in either query string or request body) (d814e281) +* allow tag editing from topic tools (e3551d80) +* #11537, copy ip on click (4aa87366) +* #7096, improve chat editing (eb0c77fd) +* Change Date translation string (e42967d7) +* #11431 (3099d57f) +* add missing i18n (e83a9a72) +* show even uninstalled active plugins if set via config (2bfdd761) +* add option to autoinstall plugins on setup (74cb2243) +* closes #11428, add a copy code button to code blocks (0a292fc1) +* closes #11432, use edited time if its greater (c3854b78) +* move topic thumb to template (84a78c2d) +* open topic thumbs on click in a bootbox dialog instead of opening in same page; complements nodebb/nodebb-theme-harmony#12 (04219c4c) +* closes #11424, add category selector to fork modal (#11491) (6b51dd5a) +* started work on porting socket methods to write API (f2082d7d) + +##### Bug Fixes + +* reset password (8a1ec4d6) +* strip html tags from browser title (e1473bcc) +* chat ip button not doing anything if clicked outside of icon (f974c230) +* add an additional check on page load to enforce `requireEmailAddress` setting (84313712) +* selector for nav scroll (34730caf) +* gdrp checkboxes (ca93084c) +* #11570 (18e76ba5) +* closes #11559, fix some rtl issues (093ec0e8) +* closes #11561, close dialogs on escape/backdrop click (0af2b800) +* show edit indicator after an edit without reloading the page (24e0e502) +* add back removed socket method, added deprecation warnings, as there are no breaking changes allowed in v3.1.0 (cdd77480) +* closes #11511 (ec8d8ec4) +* outgoing style (e070b851) +* #11541, fix leave chat error (8e0f9ce5) +* closes #11539 (d0a15e9e) +* add check for no tids (156b8e77) +* remove positions (9f485ce6) +* scroll on edit textarea (5ead9b73) +* #11531, fix teasers (c23689d3) +* #11530, fix topic rescheduling (2720a692) +* #10594, move counter code (#11529) (5607e5bc) +* only add copy button to multiline codeblocks (619e910f) +* go back to post queue after deleting an account in post queue (#11513) (c3ebda22) +* **deps:** + * update dependency helmet to v6.2.0 (#11576) (77b05b73) + * update dependency terser-webpack-plugin to v5.3.8 (#11575) (f6db5f60) + * update dependency nodebb-theme-persona to v13.0.63 (#11571) (84548edb) + * update dependency mongodb to v5.4.0 (#11569) (bac0b7b2) + * update dependency @isaacs/ttlcache to v1.4.0 (#11567) (ae7547e2) + * update dependency nodebb-theme-persona to v13.0.61 (#11566) (5f4197a9) + * update dependency nodebb-theme-harmony to v1.0.15 (#11565) (e630cf25) + * update dependency ace-builds to v1.19.0 (#11557) (0813ee78) + * update dependency webpack to v5.82.0 (#11564) (cdebc0d1) + * update dependency nodebb-plugin-spam-be-gone to v2.0.7 (#11563) (80bcd938) + * update dependency nodebb-theme-harmony to v1.0.11 (#11556) (904adf57) + * update dependency @socket.io/redis-adapter to v8.2.0 (#11555) (700d1da9) + * update dependency nodebb-plugin-composer-default to v10.1.4 (#11552) (efadd714) + * update dependency nodebb-plugin-emoji to v5.0.8 (#11550) (602f0520) + * update dependency nodebb-plugin-mentions to v4.1.1 (#11548) (72bc471e) + * update dependency nodebb-widget-essentials to v7.0.11 (#11536) (e0f0c08a) + * bump composer-default, closes #11534 (b0005f18) + * update dependency sharp to v0.32.1 (#11527) (ce05e743) + * update dependency yargs to v17.7.2 (#11528) (1d7e981f) + * update dependency webpack to v5.81.0 (#11523) (e9d30f76) + * update dependency nodebb-plugin-emoji to v5.0.7 (#11522) (81799777) + * update dependency nodebb-plugin-mentions to v4.1.0 (#11518) (42bd1a63) + * update dependency lru-cache to v9.1.1 (#11493) (d4bf0ae7) + * update dependency webpack to v5.80.0 (#11503) (6413efbb) + * update dependency mongodb to v5.3.0 (#11496) (e55f1b55) + * update dependency sass to v1.62.1 (#11517) (d8829872) + +##### Other Changes + +* fix comma (073f4d37) + +##### Refactors + +* removed parsing for taskbar (e832d365) +* move to modals (8e63e43a) +* topic mark read/unread routes (36895421) +* migrate `posts.getReplies` to write API (69b40938) +* deprecate socket method posts.getPidIndex (ee9f53f1) +* if position (87047210) +* remove position classes (503fab51) + +##### Tests + +* added test cases for #11562 (393a8913) +* fix assert.reject calls (e0db9a89) +* fix brackets (0c20d7cd) +* remove log (9800d65a) +* increase delay after export (8a359d63) +* replace calls to getReplies socket call to api method (82b4984b) +* fix group tests (b891c5ac) + +#### v3.0.1 (2023-05-02) + +##### Chores + +* incrementing version number - v3.0.0 (224e08cd) +* update changelog for v3.0.0 (56ad381f) + +##### Bug Fixes + +* #11554, email requirement bypass by sending in whitespace (2b8dd3d2) +* update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5) +* #11545, wrong message shown to new users re: email confirmation (2b70063e) +* black on red coloration on error when a bad reset code is received (604a8f7e) +* use query param sort over user setting if it's set (9484ddc3) + +#### v3.0.0 (2023-04-26) + +##### Breaking Changes + +* #11426, proper v3 style error on maintenance mode [breaking] (2615c1e5) +* #11362, regular mods are also subject to post queue [breaking] (c843984d) + +##### Chores + +* **deps:** + * update dependency eslint to v8.39.0 (#11507) (e74e76b1) + * update coverallsapp/github-action action to v2.1.2 (#11497) (fec552d2) + * update coverallsapp/github-action action to v2.1.1 (#11494) (f8ae6ef7) + * update dependency sass-embedded to v1.62.0 (#11467) (1dc6eb51) + * update coverallsapp/github-action action to v2.1.0 (#11458) (88b02d90) + * update dependency eslint to v8.38.0 (#11448) (afa37d6d) + * update dependency sass-embedded to v1.61.0 (#11442) (c7ccf9b8) + * update dependency lint-staged to v13.2.1 (#11444) (1a888f50) + * update dependency eslint to v8.37.0 (#11410) (defc01d9) + * update dependency @commitlint/cli to v17.5.1 (#11408) (0e57afa9) + * update dependency sass-embedded to v1.60.0 (#11392) (034666b4) + * update dependency @commitlint/cli to v17.5.0 (#11384) (69a7bfbe) + * update postgres docker tag to v15 (#10976) (f286b66f) + * update dependency @apidevtools/swagger-parser to v10 (#11207) (f21c8ca4) + * update docker/build-push-action action to v4 (#11245) (8ddb302f) + * update dependency sass-embedded to v1.59.3 (#11371) (2cde7231) + * update coverallsapp/github-action action to v2 (#11369) (a5a4b307) + * update dependency jsdom to v21.1.1 (#11355) (ae53a6e0) + * update dependency eslint to v8.36.0 (#11349) (50f14768) + * update dependency lint-staged to v13.2.0 (#11346) (d8f787eb) + * update dependency jquery to v3.6.4 (#11339) (87be2694) + * update coverallsapp/github-action action to v1.2.4 (#11323) (e8e35de3) + * update dependency eslint to v8.35.0 (#11324) (f155eedb) + * update commitlint monorepo to v17.4.4 (#11317) (a4aeee96) + * update dependency lint-staged to v13.1.2 (#11298) (45c3b9df) + * update dependency lint-staged to v13.1.1 (#11268) (4d68b0d4) + * update dependency eslint to v8.34.0 (#11291) (330f7ec8) + * update commitlint monorepo to v17.4.3 (#11293) (558c1c98) + * update dependency grunt to v1.6.1 (#11244) (9f0c352e) + * update dependency eslint to v8.33.0 (#11243) (eeca887b) + * update dependency jsdom to v21.1.0 (#11202) (09712b57) + * update commitlint monorepo to v17.4.2 (#11186) (5648c8ea) + * update dependency eslint to v8.32.0 (#11189) (56731d89) + * update dependency @apidevtools/swagger-parser to v9.0.1 (c1785080) + * update dependency eslint-plugin-import to v2.27.5 (f8461538) + * update dependency @commitlint/cli to v17.4.1 (#11137) (66b41d67) + * update dependency jsdom to v21 (#11134) (7905d573) + * update commitlint monorepo to v17.4.0 (#11123) (2ea1510f) + * update dependency husky to v8.0.3 (19c2b350) + * update dependency eslint to v8.31.0 (#11118) (8f83f790) + * update dependency jquery to v3.6.3 (#11107) (0665834d) + * update dependency eslint to v8.30.0 (#11102) (18bcc3cf) + * update dependency mocha to v10.2.0 (#11094) (ad96a4d8) + * update dependency lint-staged to v13.1.0 (#11082) (7a1c258d) + * update dependency eslint to v8.29.0 (#11074) (49143328) + * update dependency lint-staged to v13.0.4 (#11064) (ac14099b) +* up harmony (a405343d) +* up deps (1767fe3d) +* up composer (0962c063) +* up harmony (2c91c4e1) +* up harmony (cef9e791) +* up harmony (bea1826f) +* up harmony (52f32b0b) +* up widgets (22cb918c) +* up deps (445a4752) +* up composer (d1b9f83d) +* up harmony (d5636df2) +* up harmony (1fcbee0f) +* up harmony (4363c0bb) +* up harmony (24c24e6c) +* up harmony (eff9f98d) +* up harmony (9020cd40) +* up harmony (5dc1d6d5) +* up harmony (b912a132) +* up harmony (6962d206) +* rc.2 (654abb48) +* harmony beta.102 (3a50ad3a) +* up harmony (90e2e0bf) +* up harmony (0e3d34cc) +* up harmony (5cc1dd51) +* up harmony (e18d0df8) +* up harmony (4fb021a7) +* up harmony (ec106d91) +* up harmony (f1f32a47) +* up deps (08d159f5) +* up harmony (fe73c007) +* up harmony (764aca62) +* up harmony (2d75625b) +* up harmony (cc138c93) +* up harmony (a44f170a) +* up harmony (80f7dce8) +* remove logs (68db271d) +* up harmony (3f834480) +* up themes (7b7f473e) +* up harmony (361441bd) +* bump version tag for RC (e6e08d56) +* up harmony (4305c0a1) +* up rimraf to 4.x (#11377) (1502068e) +* up connect-redis to 7.x, drop node 14 (#11376) (fafa1304) +* up harmony (7d831f0b) +* up mongo deps (#11375) (5db037f1) +* add back missing dep upgrades (95ab5c41) +* fallbacks for new language string (830a20f1) +* up jquery (babe7fac) +* **i18n:** + * fallback strings for new resources: nodebb.topic (30234cf7) + * fallback strings for new resources: nodebb.error (026f2d94) + * fallback strings for new resources: nodebb.global (7ff9e494) + * fallback strings for new resources: nodebb.error (3bcfef5e) + * fallback strings for new resources: nodebb.recent (d1789206) + * fallback strings for new resources: nodebb.topic (04652ceb) + * fallback strings for new resources: nodebb.post-queue (eaa5454f) + * fallback strings for new resources: nodebb.user (92ec5bd9) + * fallback strings for new resources: nodebb.admin-settings-api (44c2d402) + * fallback strings for new resources: nodebb.admin-dashboard (58552300) + * fallback strings for new resources: nodebb.post-queue (7439d0a6) + * fallback strings for new resources: nodebb.error (7bc22a59) + * fallback strings for new resources: nodebb.admin-settings-user (0767ed57) + * fallback strings for new resources: nodebb.admin-settings-email (d8b45c61) + * fallback strings for new resources: nodebb.admin-settings-email (80cf05d8) + +##### Documentation Changes + +* update api introductions (5ab4d2fc) +* openapi schema for newly added routes (be323255) +* update readme with new screenshot and updated copy for Harmony (7599870f) +* fix openapi spec for new property in post queue route (ddd03248) + +##### New Features + +* add hits/sec for cache (94f2e508) +* i18n post-later (655a11d0) +* update mkdirp to 3.x, closes #11455 (132476d5) +* update rimraf to 5.x, closes #11456 (43c6087b) +* update lru-cache to 9.x, closes #11454 (c3cedefe) +* #11420, add new GET routes to retrieve pending and invited members of a group, plus accept/reject pending (0788fb51) +* fallbacks for social.json (ac2aefd8) +* add social.json #11419 (c22c6e12) +* allow multiple topic selects in topic-list (645ebec8) +* update thumbs modal styling (c0b62346) +* add support for selected topic count (69f24ed9) +* change chat notification delivery (2c5a5bf3) +* add placeholder for category search (9c0996e4) +* closes #11139, move sort settings to user settings page (77ddfc64) +* display when an api key was last used, in ACP, #10873 (40222984) +* log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper (efa64032) +* add rel="author" to topic route (4cf04f06) +* search dashboard time range (ebb5d2d2) +* allow file uploads on mobile chat (79731735) +* api v3 route to add email to user, optionally bypassing validation email, closes #11009 (fdc41646) +* fire filter:topics.getUnreadTids even if there are no urnead topics (b81fd81a) +* add force flag to plugin install in cli (#11089) (d447236b) +* update transifex config (for use with new cli) (21a366ec) +* integrating basic client-side form validity checking in settings v1 and v2 (07a3cee6) +* add ./nodebb install (6fe87975) + +##### Bug Fixes + +* bump mentions and harmony (d2066f59) +* #11512, filter by cid (e8fb6711) +* closes #11511, reset skin if it was removed from bootswatch (7d7904b0) +* closes #11508, update selector (9894d05f) +* add composer:showHelpTab to api (5c26cb58) +* numeric strings in mongo (#11498) (6bed65dd) +* regression in toolmodal category selector (91851364) +* don't crash if taskbar.tasklist is not defined yet (5feb509b) +* closes #11473, kudos to @pitaj (57d64b35) +* closes #11466 (59b14978) +* #11438, show flag history to mods (6eb1dd86) +* topic thumbnail removal error Relaxed DOM selector to accommodate changed tpl (70f4d7f0) +* upload modal error handler (dd8719a1) +* #11451 , use bookmark from localstorage for guests (2235f6c2) +* closes #11446, add alert-link to 403,404,400 messages (2830d681) +* closes #11447, fix timestamp of fork event (0cd657ff) +* #11440, update timestamp on lastpost button (0e5ae212) +* throw generic not-allowed error on groups.join if a non-owner tries to add another user to a group (0fc9fdd5) +* remove socketGroups.addMember; update admin checks to allow admin:groups privilege, hide add member controls if not admin (18447b06) +* remove socketGroups.kick (f043dcec) +* remove socketGroups.issueMassInvite (9d49ec60) +* handle client-side acceptAll and rejectAll (b53f92fa) +* use api routes for group accept/reject (34d99c15) +* updating user bookmark when entering topic at the end from teaser (cc1c493b) +* closes #11437, link to queued post from event (8680ea4d) +* direct replies on dynamic posts (5d9b23ca) +* topic labels on topics_list (2615192f) +* #11396, removal of base_templates_path variable (7cb2e02c) +* dont show search input if user doesn't have tag search priv (a83734fb) +* add missing delete (2a9b3ee4) +* buttons for post queue content editing (33ad5a72) +* #9397, trash the active session on account lockout, if there is one (03e05b51) +* #11381, bug where the call to `action:settings.sorted-list.itemLoaded` did not properly pass in the correct element (2614b95c) +* #11357 clear cache on thumb remove (1e7f32b1) +* missing postAtIndex handling (e6d7e55f) +* update main post timestamp when rescheduling (5a2c6c1c) +* add back req.query fallback for backwards compatibility (83d36336) +* update csrf parser to accept csrf_token form value if present (ea95668a) +* schema changes for #11206 (9007ace1) +* new language keys for #11206 (966724ad) +* remove unneeded assignment, as req and locals will not likely ever be completely reassigned (a69bc2cf) +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (0a691e67) +* relax selectors for client-side form validation so that all form elements are checked (52e7ad4d) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (13738888) +* replace input type number with text/pattern (cde4c6ac) +* **deps:** + * update dependency mkdirp to v3.0.1 (#11516) (f66eba29) + * update dependency semver to v7.5.0 (#11492) (a8a2ebbe) + * update dependency esbuild to v0.17.18 (#11509) (f0408ea9) + * update dependency nodebb-plugin-emoji to v5.0.6 (#11510) (04f77ada) + * update dependency postcss to v8.4.23 (#11504) (967b9840) + * update dependency ace-builds to v1.18.0 (#11505) (22f6b8f6) + * update dependency nodebb-plugin-2factor to v7.0.5 (#11495) (666fe04e) + * update dependency lru-cache to v9.0.3 (#11481) (d2b8512c) + * update dependency commander to v10.0.1 (#11486) (ba2b7f5b) + * update dependency ioredis to v5.3.2 (#11487) (90fca08e) + * update dependency postcss to v8.4.22 (#11488) (fe4e9383) + * update dependency esbuild to v0.17.17 (#11489) (4cd8c2ff) + * update dependency webpack to v5.79.0 (#11476) (455de50d) + * update dependency ace-builds to v1.17.0 (#11472) (550d125d) + * update dependency helmet to v6.1.5 (#11464) (4e5fbc54) + * update dependency sass to v1.62.0 (#11468) (c1164544) + * update dependency semver to v7.4.0 (#11461) (1ab7fdc8) + * update dependency rtlcss to v4.1.0 (#11460) (c0d92961) + * update dependency helmet to v6.1.4 (#11459) (415f8781) + * update dependency helmet to v6.1.3 (#11452) (d165164a) + * update dependency esbuild to v0.17.16 (#11457) (bdacd1c6) + * update dependency helmet to v6.1.1 (#11449) (5d880e9d) + * update dependency lru-cache to v8.0.5 (#11434) (d7125a0c) + * update dependency webpack to v5.78.0 (#11436) (62a84f63) + * update dependency sass to v1.61.0 (#11443) (248c5f62) + * bump mentions (f49fc5ca) + * update dependency mongodb to v5.2.0 (#11433) (4bede9fb) + * update dependency nodebb-plugin-composer-default to v10.0.44 (#11430) (569944f1) + * update dependency esbuild to v0.17.15 (#11429) (0187e177) + * update dependency nodebb-plugin-mentions to v4.0.5 (#11417) (1ac37b43) + * update dependency webpack to v5.77.0 (#11415) (e9039018) + * update dependency nodebb-rewards-essentials to v0.2.3 (#11406) (9f5dc9ad) + * update dependency nodebb-theme-persona to v13.0.55 (#11407) (609c0558) + * update dependency esbuild to v0.17.14 (#11399) (89060027) + * update dependency nodebb-theme-persona to v13.0.53 (#11401) (415da6c2) + * update dependency sharp to v0.32.0 (#11395) (b17ab944) + * update dependency esbuild to v0.17.13 (#11397) (4ab60c88) + * update dependency csrf-sync to v4.0.1 (#11398) (e753603e) + * update dependency @popperjs/core to v2.11.7 (#11394) (6947e60b) + * update dependency sass to v1.60.0 (#11391) (400a7abf) + * update dependency rimraf to v4.4.1 (#11388) (5d2900e9) + * update dependency @isaacs/ttlcache to v1.2.2 (#11389) (96305e12) + * update dependency html-to-text to v9.0.5 (#11390) (5a7104f1) + * update dependency helmet to v6 (#10891) (97f08135) + * update dependency nodebb-widget-essentials to v7.0.7 (#11387) (98b58bcc) + * update dependency mkdirp to v2.1.6 (#11386) (8c07a8d7) + * update dependency webpack to v5.76.3 (#11385) (7f54709d) + * update dependency fs-extra to v11.1.1 (#11380) (7c780210) + * update dependency commander to v10 (#11208) (a2d3f674) + * update dependency lru-cache to v8.0.4 (#11378) (238a7809) + * update dependency lru-cache to v8 (#11356) (0d236adf) + * update dependency ace-builds to v1.16.0 (#11372) (75436dc0) + * update dependency sass to v1.59.3 (#11373) (b0b060da) + * update dependency nodebb-plugin-spam-be-gone to v2.0.6 (#11370) (6edb908b) + * update dependency cron to v2.3.0 (#11368) (ae9d6d77) + * update dependency graceful-fs to v4.2.11 (#11367) (f90696de) + * update dependency esbuild to v0.17.12 (#11366) (2273a822) + * update dependency webpack to v5.76.2 (#11361) (a5f19ee6) + * update dependency webpack to v5.76.1 (#11348) (967c0ccf) + * update dependency autoprefixer to v10.4.14 (#11344) (5afea4b7) + * update dependency terser-webpack-plugin to v5.3.7 (#11345) (29fbecfc) + * update dependency webpack to v5.76.0 (#11341) (b543a0d0) + * update dependency nodebb-plugin-spam-be-gone to v1.0.3 (#11340) (5fa38fbe) + * update dependency pg-cursor to v2.9.0 (#11338) (34cf64f5) + * update dependency pg to v8.10.0 (#11337) (9a7f73ca) + * update dependency mkdirp to v2.1.5 (#11336) (a85276a6) + * update dependency lru-cache to v7.18.3 (#11335) (b70716f1) + * update dependency esbuild to v0.17.11 (#11333) (18b3ac6e) + * update dependency ace-builds to v1.15.3 (#11332) (b8efa466) + * update dependency mkdirp to v2.1.4 (#11330) (a6f22afa) + * update dependency lru-cache to v7.18.1 (#11327) (b526d42e) + * update dependency nodebb-plugin-mentions to v3.0.13 (#11320) (22a3ba65) + * update dependency yargs to v17.7.1 (#11316) (b75212f7) + * update dependency sanitize-html to v2.10.0 (#11319) (3d855842) + * update socket.io packages to v4.6.1 (#11318) (17c2467d) + * update dependency lru-cache to v7.17.0 (#11315) (4211e4dd) + * update dependency body-parser to v1.20.2 (#11313) (02d69920) + * update dependency esbuild to v0.17.10 (#11314) (865e1506) + * bump theme versions (c76e344f) + * update dependency lru-cache to v7.15.0 (#11305) (affac569) + * update dependency ace-builds to v1.15.2 (#11304) (01b2915e) + * update dependency nodebb-plugin-composer-default to v9.2.5 (#11301) (0ad5f476) + * update dependency logrotate-stream to v0.2.9 (#11300) (e29b9b1d) + * update dependency ace-builds to v1.15.1 (#11299) (1a0910bb) + * update dependency ioredis to v5.3.1 (#11294) (75bd6caa) + * update socket.io packages to v4.6.0 (#11272) (b9bb0532) + * update dependency html-to-text to v9.0.4 (#11290) (3ef49223) + * update dependency benchpressjs to v2.5.1 (#11270) (e4e01f47) + * update dependency esbuild to v0.17.8 (#11289) (2f5f47ea) + * update dependency @socket.io/redis-adapter to v8.1.0 (#11269) (7abcf80a) + * update dependency mongodb to v4.14.0 (#11271) (98395d18) + * update dependency esbuild to v0.17.6 (#11266) (145dcb2f) + * update dependency sanitize-html to v2.9.0 (#11261) (0e9cfcad) + * update dependency validator to v13.9.0 (#11262) (7cdbf77d) + * bump persona theme (5dc4d285) + * update dependency pg-cursor to v2.8.0 (#11236) (6c872a05) + * update dependency nodebb-rewards-essentials to v0.2.2 (#11234) (c271762c) + * update dependency pg to v8.9.0 (#11235) (972d1770) + * update dependency esbuild to v0.17.5 (#11233) (1a28598b) + * update dependency ace-builds to v1.15.0 (#11223) (9b34ab66) + * update dependency ioredis to v5.3.0 (#11224) (37493514) + * update dependency nodebb-theme-persona to v12.1.14 (#11221) (94074e90) + * update dependency nodemailer to v6.9.1 (#11222) (0e0176a1) + * update dependency mkdirp to v2 (#11211) (466c7a3a) + * update dependency ioredis to v5.2.6 (#11210) (557198a3) + * update dependency nodemailer to v6.9.0 (#11205) (69f4ff75) + * update dependency ioredis to v5.2.5 (#11187) (a2b00534) + * update dependency esbuild to v0.17.4 (#11204) (d0e3eadb) + * update dependency nodebb-theme-persona to v12.1.13 (2994c42b) + * update dependency @socket.io/redis-adapter to v8.0.1 (aa873e80) + * update dependency jsonwebtoken to v9 (79cd4a36) + * update dependency nodebb-plugin-2factor to v5.1.3 (8dc96894) + * update dependency cron to v2.2.0 (#11140) (aaf9abed) + * update dependency esbuild to v0.16.16 (#11135) (4b147ee2) + * update dependency commander to v9.5.0 (#11133) (aced93de) + * update dependency postcss to v8.4.21 (#11130) (aa6788b7) + * update dependency esbuild to v0.16.15 (#11132) (581960de) + * update dependency esbuild to v0.16.14 (#11127) (95897197) + * update dependency esbuild to v0.16.13 (#11121) (ca434647) + * update dependency esbuild to v0.16.12 (#11116) (e3fa0152) + * update dependency esbuild to v0.16.11 (0ec6d6c2) + * update dependency nodebb-theme-slick to v2.0.4 (#11113) (a634481b) + * update dependency esbuild to v0.16.10 (#11104) (048f5674) + * update dependency mongodb to v4.13.0 (#11105) (3f5bda7e) + * update dependency esbuild to v0.16.8 (#11101) (db7ea20c) + * update dependency sanitize-html to v2.8.0 (#11098) (65241b1a) + * update dependency ace-builds to v1.14.0 (#11095) (10056e5b) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (cc376656) + * update dependency postcss to v8.4.20 (#11097) (d4f04511) + * update dependency compare-versions to v5.0.3 (#11092) (32fecad7) + * update dependency html-to-text to v9.0.3 (#11093) (6aab1c58) + * update dependency @socket.io/redis-adapter to v8 (#11084) (a82c6743) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (6774b35f) + * update dependency esbuild to v0.16.7 (#11086) (27a049fb) + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (c749f38c) + * update dependency esbuild to v0.16.3 (#11083) (8eb880f6) + * update dependency html-to-text to v9 (#11075) (aa3a51b1) + * update dependency ace-builds to v1.13.2 (#11080) (67ede5c6) + * update dependency fs-extra to v11 (#11072) (fa3e6540) + * update dependency esbuild to v0.15.16 (#11069) (ced87417) + * update dependency mongodb to v4.12.1 (#11062) (3c5b0210) + * update dependency mongodb to v4.12.1 (#11062) (643dce38) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11501 (2055aae1) +* //github.com/NodeBB/NodeBB/issues/11500 (9ec5f1f5) +* remove chalk (a0bac74e) +* //github.com/NodeBB/NodeBB/issues/11329 (661a6e04) +* satisfy lint errors (bb0397cb) + +##### Refactors + +* get rid of floats in deleted-message.tpl (f055b7fb) +* remove log, to much noise (9806d89f) +* group invitations; issuing, accepting, rejecting; now via API (18c45b44) +* replace rimraf glob doesn't work on windows (d36aad07) +* simple load new posts (45addcf5) +* post-queue frontend logic (ddcdaacc) +* `helpers.loginUser` to be fully async (fecdab8b) +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (14091de8) + +##### Tests + +* Blob doesnt exist in node 16 (3c6f225a) +* no need for this check (bb4be716) +* fix utils (eacbad7f) +* missing utils tests (699c3bdf) +* remove history test (9c162186) +* fix escaping (c5e83eb9) +* fix lang test (a8efe3df) +* fix openapi schema to reflect new route (92073cf2) +* fix broken test (38175b5e) + +#### v2.8.12 (2023-04-26) + +##### Chores + +* removing superfluous changelog items (5343d2a0) +* incrementing version number - v2.8.11 (2ec81eff) +* update changelog for v2.8.11 (f2ca93f6) +* incrementing version number - v2.8.10 (5b7c3671) +* incrementing version number - v2.8.9 (57f14e41) +* incrementing version number - v2.8.8 (b331b942) +* incrementing version number - v2.8.7 (3f8248d6) +* incrementing version number - v2.8.6 (af6ce447) +* incrementing version number - v2.8.5 (bff5ce2d) +* incrementing version number - v2.8.4 (a46b2bbc) +* incrementing version number - v2.8.3 (c20b20a7) +* incrementing version number - v2.8.2 (050e43f8) +* incrementing version number - v2.8.1 (727f879e) +* incrementing version number - v2.8.0 (8e77673d) +* incrementing version number - v2.7.0 (96cc0617) +* incrementing version number - v2.6.1 (7e52a7a5) +* incrementing version number - v2.6.0 (e7fcf482) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### New Features + +* name theme on error:theme-not-set-in-configuration (ae5afdbc) + +##### Bug Fixes + +* #11519, clear parent cache all the way to root (30b6bcfc) +* only remove deleted tag, closes #11515 (de2669a2) +* NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483) (c9311832) + +##### Tests + +* remove old comment (21fb8590) + +#### v2.8.11 (2023-04-11) + +##### Chores + +* incrementing version number - v2.8.10 (5b7c3671) +* update changelog for v2.8.10 (188ec62f) + +##### Continuous Integration + +* publish to ghcr instead of docker hub (c2756728) + +##### Documentation Changes + +* update readme with new screenshot and updated copy for Harmony (67055006) + +##### Bug Fixes + +* don't crash on objects with toString property (4d2d7689) +* fire action:user.online on user login (7397873d) + +##### Tests + +* update socket.io test (e0b20658) + +#### v2.8.10 (2023-03-27) + +##### Chores + +* up composer-default (e9a8e195) +* incrementing version number - v2.8.9 (57f14e41) +* update changelog for v2.8.9 (18b2150e) + +##### Bug Fixes + +* #11403, remove loader.js crash counter logic (830f142b) +* don't crash if event name is not a string (37b48b82) +* closes #11173, move cache clear code (c2961ad4) + +##### Other Changes + +* fix arrow (1aff9cad) +* whitespace (894f392b) + +#### v2.8.9 (2023-03-19) + +##### Chores + +* up cron (73a50d17) +* incrementing version number - v2.8.8 (b331b942) +* update changelog for v2.8.8 (c03d5db7) + +##### Bug Fixes + +* thumb remove on windows, closes #11357 (767c1d1f) +* #11357 clear cache on thumb remove (a3a38e4b) +* closes #11352, try/catch rss feeds (cfd50272) +* closes #11343, don't crash if tags array is empty (56427e4f) + +##### Code Style Changes + +* more fixes (93aa43f7) + +##### Tests + +* openapi for thumbs (9e685e65) + +#### v2.8.8 (2023-03-09) + +##### Chores + +* incrementing version number - v2.8.7 (3f8248d6) +* update changelog for v2.8.7 (2ca38e7b) + +##### Bug Fixes + +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (22fc8fe3) +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (17d0b40e) +* tag filtering when changing filter to watched topics (1545223e) +* get cid from pid instead of passing in (f054a4f4) +* closes #11331, allow 0 length content if set to 0 in acp (8c762d32) + +#### v2.8.7 (2023-03-01) + +##### Chores + +* incrementing version number - v2.8.6 (af6ce447) +* update changelog for v2.8.6 (f3306d03) + +##### Documentation Changes + +* update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d) + +##### Bug Fixes + +* display 25 topics on category feed (79155109) +* object destructuring overwriting type parameter (ec58700f) +* alert on page load (8cf4a6f6) +* show error alert if password change fails (3bd9a871) +* update main post timestamp when rescheduling (edd2fc38) +* show admins/globalmods if content is purged (326b9268) +* email expiry timestamps (e335d0f6) +* #11259, clean old emails when updating via admin (#11260) (845c8013) +* #11257, onSuccessfulLogin called with improper uid (7a5bcc21) + +##### Tests + +* add dummy emailer hook in authentication test (1b29dbb6) + +#### v2.8.6 (2023-02-03) + +##### Chores + +* **i18n:** fallback strings for new resources: nodebb.error (8335f90a) +* incrementing version number - v2.8.5 (bff5ce2d) +* update changelog for v2.8.5 (24e58c28) + +##### New Features + +* add sitemap filter hooks for categories/topic pages (bf92ee0e) +* closes #11241, add missing error lang keys (c241baf6) +* #11240, only show relevant users in flags assignee list (0713482b) + +##### Bug Fixes + +* #11254, return check for reroll property (202378b9) +* closes #11249, notification uses displayname (705cd13a) +* wrong link to topics in acp dashboard (b5598a6e) +* https://github.com/NodeBB/NodeBB/issues/11239 (1d3c0e5a) +* notif filter selecte field (6d819b05) + +##### Other Changes + +* remove unused (d68352cc) + +#### v2.8.5 (2023-01-27) + +##### Chores + +* incrementing version number - v2.8.4 (a46b2bbc) +* update changelog for v2.8.4 (c13f0e21) + +##### Bug Fixes + +* import resolution within plugin modules (#11219) (f6c96948) + +#### v2.8.4 (2023-01-26) + +##### Chores + +* incrementing version number - v2.8.3 (c20b20a7) +* update changelog for v2.8.3 (eb2841ee) + +#### v2.8.3 (2023-01-25) + +##### Chores + +* remove extraneous lines from changelog (48c9f447) +* incrementing version number - v2.8.2 (050e43f8) +* update changelog for v2.8.2 (66aa3169) + +##### Bug Fixes + +* import resolution within plugin modules (#11200) (89e059a0) +* #11195, allow users with admin:users privilege to delete users in acp (0bffd3d9) +* #11194, allow access to sub dashboard pages (7d04e952) +* #11136, tests, and returning the proper number of arrays (459bc523) +* #11136, only show mods of active categories when getModeratorUids is called (39e009c0) +* closes #11173, clear require cache if wrong dependency is installed (747cb1f0) +* **deps:** + * downgrade swagger-parser to v9 (00e48803) + * pinning sub dependency json-schema-ref-parser to 9.0.9 (9c250b78) + +##### Reverts + +* a788bd1344825ad4759e39d6e98d8bf3695bd639 (fecd84d1) +* 9c250b78b05ca2abf31a79971ed0c60ca07664ec, fix: comment out broken test for now (a788bd13) + +##### Tests + +* fix broken test (f295174e) + +#### v2.8.2 (2023-01-13) + +##### Chores + +* incrementing version number - v2.8.1 (727f879e) +* update changelog for v2.8.1 (d17d4ec0) + +##### Bug Fixes + +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (25ae58e8) + +#### v2.8.1 (2022-12-30) + +##### Chores + +* fallbacks for new language string (8a69e740) +* remove extraneous lines from changelog (bbaf26ce) +* incrementing version number - v2.8.0 (8e77673d) +* update changelog for v2.8.0 (a5c2edb9) + +##### Bug Fixes + +* vulnerability in socket.io nested namespaces (#11117) (586eed14) +* lock post/reply similar to user.create (1ea9481a) + +#### v2.8.0 (2022-12-21) + +##### Chores + +* **deps:** + * update dependency jquery to v3.6.3 (#11107) (13a3faa0) + * update dependency eslint to v8.30.0 (#11102) (485ee130) + * update dependency mocha to v10.2.0 (#11094) (c4cc1e61) +* up jquery (3e8f5378) +* remove extraneous lines from changelog (e213dbc3) +* incrementing version number - v2.7.0 (96cc0617) +* update changelog for v2.7.0 (4701c96d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (717b3612) + * fallback strings for new resources: nodebb.admin-settings-email (4f4b4800) + +##### New Features + +* add force flag to plugin install in cli (#11089) (de31cb1a) +* integrating basic client-side form validity checking in settings v1 and v2 (33af2d9c) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.31.3 (#11110) (ef500af8) + * update dependency sanitize-html to v2.8.1 (#11109) (7ab46b78) + * update dependency esbuild to v0.16.10 (#11104) (eb6a9c47) + * update dependency mongodb to v4.13.0 (#11105) (05443dbe) + * update dependency esbuild to v0.16.8 (#11101) (18ff6caa) + * update dependency sanitize-html to v2.8.0 (#11098) (faaf09f7) + * update dependency ace-builds to v1.14.0 (#11095) (cde44587) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (5dda9a5b) + * update dependency postcss to v8.4.20 (#11097) (0a5adb41) + * update dependency compare-versions to v5.0.3 (#11092) (8b209f16) + * update dependency html-to-text to v9.0.3 (#11093) (7bcfe38e) + * update dependency @socket.io/redis-adapter to v8 (#11084) (7b9bbef5) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (7b48156c) + * update dependency esbuild to v0.16.7 (#11086) (65ef722e) + * update dependency esbuild to v0.16.3 (#11083) (4f67fc1a) + * update dependency esbuild to v0.15.16 (#11069) (22493ffb) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (896493db) +* replace input type number with text/pattern (2bc23a95) + +##### Refactors + +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (9f531f95) +* remove debug log closes #11090 (06f4801e) + +#### v2.7.0 (2022-12-14) + +##### Chores + +* added stub file in hy (9ee8502d) +* **deps:** + * update dependency lint-staged to v13.1.0 (#11082) (693d4783) + * update dependency eslint to v8.29.0 (#11074) (eab5b754) + * update dependency lint-staged to v13.0.4 (#11064) (f947ac6d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (0e319a58) + * fallback strings for new resources: nodebb.admin-settings-email (9676b192) + +##### New Features + +* update transifex config (for use with new cli) (f11094cb) +* integrating basic client-side form validity checking in settings v1 and v2 (dadbcd73) +* add ./nodebb install (4efc19d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (df3f1c5e) + * update dependency esbuild to v0.16.3 (#11083) (85d38158) + * update dependency html-to-text to v9 (#11075) (d8e9738d) + * update dependency ace-builds to v1.13.2 (#11080) (35be4594) + * update dependency fs-extra to v11 (#11072) (aafb7f6e) + * update dependency esbuild to v0.15.16 (#11069) (7bc4b836) + * update dependency mongodb to v4.12.1 (#11062) (e14d4abc) +* relax selectors for client-side form validation so that all form elements are checked (43e7c988) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (db8d3a94) +* replace input type number with text/pattern (45ae31f8) +* categories.js not showing custom privileges (#10856) (8c4d6bbe) +* #11077, add admin uploads paths to priv mapping (07a02125) + +##### Tests + +* dont try to load admin upload routes (c2bb2b30) + +#### v2.6.1 (2022-11-28) + +##### Chores + +* incrementing version number - v2.6.0 (e7fcf482) +* update changelog for v2.6.0 (eedd84ae) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Documentation Changes + +* remote extraneous lines from changelog (8a15e58d) + +##### Bug Fixes + +* prototype vulnerability in socket.io onMessage (48d14392) +* #11066, fix custom privilege/path in routePrefixMap (0e495f9e) + +##### Refactors + +* not deprecated on 2.x (91c2e5ac) + +#### v2.6.0 (2022-11-23) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-advanced (1d7dbf14) + * fallback strings for new resources: nodebb.admin-settings-advanced (05b6758e) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.admin-settings-email (9ad3b214) +* **deps:** + * update commitlint monorepo to v17.3.0 (#11058) (f4784205) + * update dependency eslint to v8.28.0 (#11059) (d480f26b) + * update dependency jsdom to v20.0.3 (#11054) (5750ded1) + * update dependency jquery to v3.6.1 (#11048) (6611d44c) + * update dependency eslint-config-nodebb to v0.2.1 (#11043) (07c81d5d) + * update commitlint monorepo to v17.2.0 (#11026) (26be289e) + * update dependency husky to v8.0.2 (#11018) (4b3978be) + * update dependency eslint to v8.27.0 (#11004) (4fcef7c5) + * update dependency jsdom to v20.0.2 (#11014) (a6e4fee1) + * update dependency mocha to v10.1.0 (#10980) (ffa117ab) + * update dependency eslint to v8.25.0 (3719233a) + * update dependency jsdom to v20.0.1 (#10934) (241b7c4f) + * update dependency eslint to v8.24.0 (#10922) (8bcbff33) + * update commitlint monorepo (#10888) (3f30056a) + * update postgres docker tag to v14 (#10829) (5aa55d29) + * update dependency eslint to v8.23.1 (#10885) (0c6fb6e3) +* remove derpy extra changelog bits (445f09f0) +* incrementing version number - v2.5.8 (dec0e7de) +* update changelog for v2.5.8 (c9cd8975) + +##### New Features + +* add permissions-policy header (864fe0f9) +* allow groups to be exempt from maintenance mode (3c85b944) +* add search data to filter:search.inContent (be92be4e) +* add relevant topic events to post objects (a584dae6) +* client-side hooks for navigator scroll action (135fe55b) +* j and k hotkeys in topic to navigate through it quickly (aeb94c32) +* a couple utility methods in navigator module to get and set count and index (9f9a835f) +* paginate recentposts.rss and (ebd7c05c) +* add quiet to action:settings.set (665f36b7) + +##### Bug Fixes + +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (110311b2) +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (fc49665f) +* #11052, add missing await (bb82eb71) +* pin jquery version for all packages that include it as a subdependency (a87f64b4) +* #10877, define a resolution for jquery subdependency of timeago (5aaebdd3) +* #11044, allow banned users to post (abcfb631) +* check schedule privilege, closes #11032 (61090615) +* mixing of old and new bch syntax (1e484643) +* category ordering add test (61d32bde) +* use `--omit=dev` flag for npm instead of `--production` (53d47a58) +* update nav thumb on setIndex call (thx @barisusakli) (664bc5f5) +* do not call `navigator.update()` when `scrollToElement` is explicitly passed a new index value (b7287c1e) +* race condition where `navigator.update` was called when it should not be (fa643eb8) +* be tidier and explicitly clean up ctrl-f hotkey on topic page (5b9de0e5) +* listen to -d flag on cli upgrade (fe249fa5) +* automatically remove `lang` parameter if it matches the forum default (881c7c4d) +* **deps:** + * update socket.io packages to v4.5.4 (#11061) (709ca59d) + * update dependency esbuild to v0.15.15 (#11056) (d449710e) + * update dependency nodebb-theme-persona to v12.1.12 (#11057) (18eb35a1) + * update dependency cropperjs to v1.5.13 (#11055) (13f3a048) + * update dependency nodebb-plugin-markdown to v10.1.1 (#11047) (62a60cbf) + * update dependency mongodb to v4.12.0 (#11049) (59b4d95f) + * update dependency connect-pg-simple to v8 (#11033) (ca162c04) + * update dependency ace-builds to v1.13.1 (#11045) (e0b9240d) + * update dependency esbuild to v0.15.14 (a5355d78) + * update dependency nodebb-theme-persona to v12.1.11 (2af7fd5f) + * update dependency postcss to v8.4.19 (#11028) (b94bb1bf) + * update dependency ace-builds to v1.13.0 (#11031) (313d0c32) + * update dependency webpack to v5.75.0 (#11027) (40c9cc05) + * update dependency yargs to v17.6.2 (#11025) (8d3907b5) + * update dependency lru-cache to v7.14.1 (#11023) (1ea2a32b) + * update dependency sharp to v0.31.2 (#11024) (51919f7a) + * update dependency esbuild to v0.15.13 (#11021) (c4a1905b) + * update dependency ioredis to v5.2.4 (#11022) (e144debb) + * update dependency ace-builds to v1.12.5 (#11019) (de507f72) + * update dependency mongodb to v4.11.0 (#10994) (9ca2482a) + * update dependency autoprefixer to v10.4.13 (#11020) (35d67ad3) + * update dependency nodebb-plugin-composer-default to v9.2.4 (#10998) (5a5771e1) + * update dependency sanitize-html to v2.7.3 (#11008) (73a60854) + * update dependency nodebb-plugin-composer-default to v9.2.3 (#10997) (ee4fde13) + * update dependency esbuild to v0.15.12 (#10996) (29fddd65) + * update dependency nodebb-plugin-composer-default to v9.2.2 (1fc2f1e8) + * update dependency nodebb-theme-persona to v12.1.9 (6471b698) + * bump composer-default (7b9e0847) + * update dependency ace-builds to v1.12.3 (1e930f9d) + * update dependency nodebb-theme-persona to v12.1.8 (#10982) (9900e5f4) + * update dependency ace-builds to v1.12.2 (4260f0c2) + * update dependency ace-builds to v1.12.1 (6485bc25) + * update dependency ace-builds to v1.12.0 (#10978) (00ce8fd8) + * update socket.io packages to v4.5.3 (#10977) (fb41fbe7) + * update dependency nodebb-plugin-emoji to v4.0.6 (dcca3397) + * update dependency esbuild to v0.15.11 (ff69c3e1) + * update dependency @isaacs/ttlcache to v1.2.1 (647bbd57) + * update dependency nodebb-plugin-mentions to v3.0.12 (60d0145b) + * update dependency postcss to v8.4.18 (3c2a636c) + * update dependency nodebb-plugin-spam-be-gone to v1.0.2 (#10958) (b68faa09) + * update dependency body-parser to v1.20.1 (#10941) (0f63947b) + * update dependency express to v4.18.2 (#10948) (ff53064c) + * update dependency semver to v7.3.8 (#10937) (1b89b661) + * update dependency nodebb-theme-persona to v12.1.7 (1873b527) + * update dependency commander to v9.4.1 (#10928) (855a2bad) + * update dependency postcss to v8.4.17 (#10929) (d84ee308) + * update dependency nodemailer to v6.8.0 (#10925) (222ab6ae) + * update dependency yargs to v17.6.0 (#10931) (7c3c3d02) + * update dependency nodebb-plugin-spam-be-gone to v1.0.1 (#10912) (28d1844e) + * update dependency ace-builds to v1.11.2 (#10923) (87c84fe8) + * update dependency sharp to v0.31.1 (#10926) (8e23e410) + * update dependency ace-builds to v1.11.1 (#10920) (ce77605a) + * update dependency ace-builds to v1.11.0 (#10909) (d900fd17) + * update dependency autoprefixer to v10.4.12 (#10911) (54294871) + * update dependency compare-versions to v5 (#10890) (f971385b) + * bump persona #10907 (846eda0a) + * bump persona, #10907 (27c80d39) + * update dependency mongodb to v4.10.0 (#10908) (bbe7f779) + * update dependency nodebb-theme-persona to v12.1.3 (#10903) (0debc51b) + * update dependency nodebb-plugin-2factor to v5.1.1 (02fe6875) + * update dependency nodebb-theme-persona to v12.1.2 (425bf87b) + * update dependency sanitize-html to v2.7.2 (#10893) (bfeb0368) + * update dependency autoprefixer to v10.4.11 (#10892) (0758655a) + * update dependency sharp to v0.31.0 (#10887) (2836be5c) + * update socket.io packages to v4.5.2 (#10884) (22f3d0bb) + * update dependency nodebb-plugin-2factor to v5.1.0 (#10886) (335990be) + * update dependency autoprefixer to v10.4.10 (#10883) (0c2a88de) + * update dependency winston to v3.8.2 (#10882) (d911a1bf) + * update dependency pg to v8.8.0 (#10863) (01129a39) + * update dependency nodebb-plugin-emoji to v4.0.5 (#10881) (34d243e4) + * update dependency ioredis to v5.2.3 (#10861) (5e375e4a) + * update dependency pg-cursor to v2.7.4 (#10862) (86b63fab) + * update dependency mongodb to v4.9.1 (#10880) (5583ab95) + * update dependency autoprefixer to v10.4.9 (#10879) (cc6798bb) + * update dependency postcss to v8.4.16 (#10824) (8c680db5) + * update dependency jquery to v3.6.1 (#10868) (6687f49b) + * update dependency ace-builds to v1.10.1 (#10840) (c0c3ee01) + * bump composer-default to v9.2.0 (29ddeaa1) + +##### Refactors + +* don't prevent startup if staticDir is undefined (b34e859c) +* added new ajaxify method .cleanup, called before ajaxify.start. (3700174c) + +#### v2.5.8 (2022-11-09) + +##### Chores + +* really fix indents this time (c2024f34) +* fix indents (d50512e7) +* add bootstrap5 to test runner for now (be5d6d29) +* incrementing version number - v2.5.7 (5836bf4a) +* update changelog for v2.5.7 (17e948ab) + +##### New Features + +* new search hooks (b5d38bc6) +* add search data to filter:search.inContent (e3f21562) + +##### Bug Fixes + +* pass csrf_token into calls to /register/abort, #11017 (2f9d8c35) +* check for csrf token on /register/abort, + theme changes for v2.x branches of themes (55a197a7) +* upgrade script to work from 0.x to 2.x (a31ba824) +* #10519, image height in emails (673261ff) +* fallback language strings for #10987 (b9c8c02f) +* #10993, apply autoLocale middleware to guests only (6f673f80) +* check cid as well as template (9227b82e) +* revert breaking change, add back SocketUser.emailConfirm (9ee30fe7) +* in appropriately named language key `email-confirm-email2` (09f3ac65) +* correctly pass dev flag to package installer (7672194c) +* use `--omit=dev` flag for npm instead of `--production` (09cfd0bd) + +##### Refactors + +* use utils.debounce (d264c6ac) + +##### Tests + +* fix tests again (06d15391) +* fix test (c833d3cd) + +#### v2.5.7 (2022-10-14) + +##### Chores + +* incrementing version number - v2.5.6 (c7bd7dbf) +* update changelog for v2.5.6 (e92238d0) + +##### Performance Improvements + +* speed up build (dd4e9cce) + +#### v2.5.6 (2022-10-13) + +##### Chores + +* incrementing version number - v2.5.5 (3509ed94) +* update changelog for v2.5.5 (e7d0040d) + +##### Bug Fixes + +* use admin:groups priv for groups (#10960) (b879b6a0) +* https://github.com/NodeBB/NodeBB/issues/10525 (e35b0a86) + +#### v2.5.5 (2022-10-11) + +##### Chores + +* up plugins (b91ef6dd) +* incrementing version number - v2.5.4 (e83260ca) +* update changelog for v2.5.4 (aabf073c) + +#### v2.5.4 (2022-10-11) + +##### Chores + +* 🤔 (7240e8ce) +* incrementing version number - v2.5.3 (7e922936) +* update changelog for v2.5.3 (fdf240f6) + +##### Continuous Integration + +* add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi (fe0020fb) + +##### Bug Fixes + +* EEXISTS error on linux if plugin/theme overrides core js file (ebd5dcc6) +* category ordering add test (177d9048) +* crash in category drag, closes #10932 (989b55d0) +* broken flag history on flag update (803398e9) +* scroll to post if theme doesn't have top navbar (aad0a618) +* add lru-cache to checked packages, to fix upgrade issue with lru-cache (14515f60) + +#### v2.5.3 (2022-09-19) + +##### Chores + +* remove duplicate version increment lines in changelog (5dbcfef9) +* bring back treding plugins (8aa1596d) +* incrementing version number - v2.5.2 (babcd17e) +* update changelog for v2.5.2 (84b6a7c7) + +##### New Features + +* store topic title and tags in diffs (#10900) (b5dd89e1) + +##### Bug Fixes + +* #10906, allow `middleware.checkAccountPermissions` to be called with either uid or userslug in params (cf4f5447) +* #10896, unescape / in taskbar (8e2129f8) +* add back timeago to post history modal (d3e38df8) +* **deps:** bump composer-default to v9.1.1 (1d80a07e) + +##### Other Changes + +* fix lint (3d5a6b39) + +##### Performance Improvements + +* disable trending plugins, too slow due to nbbpm (b392450c) + +##### Tests + +* add back /admin/extend/plugins test (1c9c39a8) + +#### v2.5.2 (2022-09-04) + +##### Chores + +* incrementing version number - v2.5.1 (ce3aa950) +* update changelog for v2.5.1 (2b2fd4f3) + +##### Bug Fixes + +* registration regression, closes #10875 (f6f37dc1) + +##### Other Changes + +* fix lint error (b45e2413) + +##### Tests + +* disable nbbpm test temporarily (1dc79d76) + +#### v2.5.1 (2022-09-02) + +##### Chores + +* incrementing version number - v2.5.0 (01d276cb) +* update changelog for v2.5.0 (1076285d) + +##### Bug Fixes + +* missing escape on ACP category backgroundImage property (67cb7035) +* **deps:** temporarily add back old textcomplete dependencies so emoji plugin can import them (61d1e9e0) + +#### v2.5.0 (2022-09-01) + +##### Breaking Changes + +* reduce nodebb.min.js size by around 800kb (b7addffc) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation (e20433ec) + * fallback strings for new resources: nodebb.admin-settings-post (fcbbb4d6) + * fallback strings for new resources: nodebb.admin-advanced-cache (90fc50e1) +* move @textcomplete and its modules to composer-default (3cbb7a3d) +* remove client-side js file for tpl that no longer exists (bc2ea860) +* incrementing version number - v2.4.5 (dd3e1a28) +* update changelog for v2.4.5 (d505cc47) + +* **deps:** + * update dependency eslint to v8.22.0 (#10835) (8fce68d3) + * update mongo docker tag to v3.7 (8afaed22) + * update docker/setup-qemu-action action to v2 (4aecf399) + * update redis docker tag to v2.8.23 (#10811) (269382e0) + * update redis docker tag to v2.8.23 (#10811) (59fd0efe) + +##### Documentation Changes + +* **openapi:** v3 spec for new user export routes (70652ad4) + +##### New Features + +* remove visibilityjs (#10870) (19207325) +* introduce ACP defined option to rescind notif or do nothing on flag resolve/reject (15b1561f) +* allow v3 api to handle 202 and 204 response codes as well. (0cda5aa3) +* don't show signatures again in pagination mode in same topic (0a6900fc) +* setting to show signatures only once in topics, closes #10071 (aba420a3) +* add event type to topic event component (bcb94ede) +* allow plugins to add to admin cache list (#10833) (a9bbb586) + +##### Bug Fixes + +* **deps:** + * update dependency compare-versions to v4.1.4 (884d4075) + * update dependency mongodb to v4.9.0 (e51004e2) + * update dependency lru-cache to v7.14.0 (d8a52f81) + * bump composer-default to v9 (81f8d84f) + * remove textcomplete in favour of @textcomplete/core (same package, just refactored) (b7bcc367) + * update dependency nodebb-theme-persona to v12.1.1 (#10838) (444b4d57) + * update dependency ace-builds to v1.9.5 (4c44d125) + * update dependency lru-cache to v7.13.2 (4ddc0c7a) + * update dependency nodemailer to v6.7.8 (dd385184) + * pin dependency @isaacs/ttlcache to 1.2.0 (150a7488) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (9a7dd3a3) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (69c87c2c) +* empty thread tools container on open (a088eb19) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (c1936e87) +* empty thread tools container on open (df36d967) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (3dd3cd82) +* removing duplicate session rerolling code (as it is in passport@^0.6 now) (65b3996a) +* don't crash if post is undefined (e06e526e) +* return at least one in sizeCalculation (#10832) (3975fa2e) + +##### Refactors + +* remove console.log (a2d0cd16) +* move export generation logic to v3 controller, GET/HEAD routes for exports (d0570518) +* use group.slug on acp group urls closes #8277 (14c79763) + +##### Tests + +* have some build tests not pollute build folder (7c5a915d) +* User.hidePrivateData (b424ba46) +* passport0.6 (#10638) (33458701) + +#### v2.4.5 (2022-08-22) + +##### Chores + +* incrementing version number - v2.4.4 (d5525c87) +* update changelog for v2.4.4 (77e492b8) + +##### Bug Fixes + +* wrap passport.authenticate to pass in keepSessionInfo if not already set (9b96c33d) +* parseInt caller.uid closes #10849 (bc37a5c5) + +#### v2.4.4 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.3 (9c647c6c) +* update changelog for v2.4.3 (06da15a5) + +##### Bug Fixes + +* missing req, closes #10847 (489fb3a3) + +#### v2.4.3 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.2 (3aa7b855) +* update changelog for v2.4.2 (ba7a3466) + +##### Bug Fixes + +* #10845, disallow inline viewing of uploaded html files (4dc7fa05) + +#### v2.4.2 (2022-08-17) + +##### Chores + +* incrementing version number - v2.4.1 (60cbd148) +* update changelog for v2.4.1 (4b6baabb) + +##### Documentation Changes + +* explain what export routes actually do in OpenAPI documentation (#10836) (72e7b9f7) + +##### Bug Fixes + +* #10841, incorrect conditional in email interstitial partial (ec048a01) +* don't crash if post is undefined (4a3e36a7) + +##### Tests + +* passport0.6 (#10638) (6b2a6f90) + +#### v2.4.1 (2022-08-14) + +##### Chores + +* **deps:** + * update docker/build-push-action action to v3 (bfd6318c) + * update docker/login-action action to v2 (3d68accf) + * update docker/setup-buildx-action action to v2 (371ac032) +* incrementing version number - v2.4.0 (4834cde3) +* update changelog for v2.4.0 (c4714ff7) + +##### Bug Fixes + +* return at least one in sizeCalculation (#10832) (15ca460c) + +#### v2.4.0 (2022-08-10) + +##### Chores + +* **deps:** + * update dependency eslint to v8.21.0 (13a17bd1) + * bump commander from 7.2.0 to 9.4.0 in /install (993b7747) +* update to new transifex project url (659cfe85) +* re-order interstitial tests so email and gdpr tests are in sub-blocks (342cca35) +* opt-out of dependabot, due to conflicts with renovate (70d60289) +* incrementing version number - v2.3.1 (d2425942) +* update changelog for v2.3.1 (2f487175) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (cdaa8f21) + * fallback strings for new resources: nodebb.admin-settings-email (3e56c547) + * fallback strings for new resources: nodebb.user (bcf7ef67) + +##### New Features + +* support packageManager property in package.json (b3a37a7f) +* automatically enable the SMTP transport option if the SMTP service is changed (4055e3bd) +* present a password challenge on email update flow (7fcee42b) +* add client side filter:chat.send, closes #10729 (cb084cbd) +* fire hook to allow plugins to filter the pids returned in a user profile (17e44ff5) +* closes #10719, don't trim children if category is marked section (be917e8d) +* closes #10719, don't trim children if category is marked section (0bec52bc) + +##### Bug Fixes + +* adapt to breaking change in commander (38bf30c8) +* move panel-offset setting code back to theme header (d0255fc6) +* #10808; tweak copy for gmail app passwords support (7082291b) +* don't require password challenge if no password is set in user account (9d27e907) +* do not throw if password passed into `isPasswordCorrect` is invalid, just return false (287f4c2c) +* don't crash if req.body.username is not string (7e8ad785) +* don't crash if target/user is undefined (55c5588a) +* race condition causing undefined ajaxify.data (4586f68e) +* #10809, test runner to only run tests for plugins included in `test_plugins` (1ca09b63) +* #10805, hide unconfirmed emails from user data retrieval methods (cba9047f) +* use different emoji on NodeBB Ready — again because procrastination (3e062a7f) +* unnecessary escape (cd438b32) +* remove socket.io cluster adapter (#10742) (456b8798) +* #10783, do not purge files without a timestamp prefix (dc3a6a29) +* **deps:** + * bump persona v12.1.0 (1465598d) + * bump 2factor to v5.0.2 (bd18004d) + * update dependency sanitize-html to v2.7.1 (#10792) (f02492bd) + * update dependency html-to-text to v8.2.1 (f22790c0) + * update dependency webpack to v5.74.0 (e748e31f) + * update dependency autoprefixer to v10.4.8 (#10799) (4ca0d571) + +##### Performance Improvements + +* make single db call (d73f0f9c) + +##### Tests + +* additional tests for password challenge on email update (65c59cc1) +* add dummy emailer hook to suppress sendmail error logging (8e1a4bb5) +* fix one last failing test (68bcd7f4) +* fix user email tests (06f089af) +* fix tests so that when user.create is called, email is set prior to confirmation (f93a0b83) + +#### v2.3.1 (2022-07-29) + +##### Chores + +* **deps:** + * bump sanitize-html from 2.7.0 to 2.7.1 in /install (7b606d2e) + * bump webpack from 5.73.0 to 5.74.0 in /install (a9900625) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-advanced, nodebb.admin-menu, nodebb.error (17120e03) +* incrementing version number - v2.3.0 (046ea120) +* update changelog for v2.3.0 (a6f7fff0) + +##### New Features + +* add emoji to startup logs, because procrastination. (5176fb15) + +##### Bug Fixes + +* #10798, logic error in COEP header; helmet config (89173f17) +* #10795, early return for selection tooltip based on calling user privilege (847d2b91) +* **deps:** update persona to v12.0.14 (9f225e70) + +#### v2.3.0 (2022-07-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13 (07ce0c39) + * bump ace-builds from 1.7.1 to 1.8.1 in /install (f397d968) + * bump ioredis from 5.2.0 to 5.2.2 in /install (067a5110) +* have renovate work off of `develop` branch instead (f334e398) +* update changelog for v2.2.5 (6c3ebf3b) + +##### New Features + +* add client side filter:chat.send, closes #10729 (b2da02d6) +* UI changes for ACP > Manage > Categories (#10782) (820bc994) +* show an informative message when no plugins are found after filtering (6840a742) +* Allow defining active plugins in config (#10767) (23cb67a1) +* allow plugins to toggle whether IPs are shown in the users CSV export (a6af47da) +* fire hook to allow plugins to filter the pids returned in a user profile (c26be43a) +* closes #10719, don't trim children if category is marked section (7e80cc10) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.8.1 (8384b7cf) + * update dependency helmet to v5.1.1 (03a173bb) +* bug where fallback to forum search was not working due to client-side error (25046642) +* better looking placeholder text for ACP search (1b9c6819) +* use `user.hidePrivateData();` more consistently across user retrieval endpoints (0529f2fb) +* minor margin tweak for alert in acp header (4faf0cdf) +* cannot turn off all networks (bbc7f2af) +* cannot setting networks for sharing posts (2e088a8e) + +##### Refactors + +* invert helmet configuration (dcacd815) + +#### v2.2.5 (2022-07-21) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.19.0 to 8.20.0 in /install (8d109fef) + * bump @commitlint/config-angular in /install (2a88a50f) +* **deps:** + * bump cron from 2.0.0 to 2.1.0 in /install (4c1bda32) + * bump jquery-ui from 1.13.1 to 1.13.2 in /install (abb19e98) + * bump nodebb-theme-persona in /install (9e52b8c6) + * bump ioredis from 5.1.0 to 5.2.0 in /install (8c20fdad) +* incrementing version number - v2.2.4 (d1d63e6b) +* update changelog for v2.2.4 (52f7ed64) +* incrementing version number - v2.2.3 (f80476b9) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* expire email validation tokens on password change (c93bd010) +* remove extraneous console.log (0d58e8a6) +* **deps:** update dependency mongodb to v4.8.0 (bff239da) + +#### v2.2.4 (2022-07-12) + +##### Chores + +* **deps:** + * update docker/metadata-action action to v4 (42a45a71) + * bump ace-builds from 1.5.3 to 1.7.1 in /install (d568d2f5) + * bump winston from 3.8.0 to 3.8.1 in /install (26b73b39) + * bump ioredis from 5.0.6 to 5.1.0 in /install (0d55c42d) + * bump nodemailer from 6.7.5 to 6.7.7 in /install (bd37b286) +* **deps-dev:** + * bump @commitlint/cli from 17.0.2 to 17.0.3 in /install (9e44cdad) + * bump eslint from 8.18.0 to 8.19.0 in /install (7139ad5f) +* incrementing version number - v2.2.3 (f80476b9) +* update changelog for v2.2.3 (8719a93f) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* **deps:** update dependency diff to v5.1.0 (452e5bf7) +* #10733, extraneous apostrophes in plugin upgrader (3c41ae04) +* get version from install/package.json instead (60114219) +* #10739, always re-add theme to active plugins, on theme set (8d701ec3) + +#### v2.2.3 (2022-07-05) + +##### Chores + +* incrementing version number - v2.2.2 (343ffa66) +* update changelog for v2.2.2 (f59ddc34) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* move call to `ajaxify.parseData` out to root level (b778e38c) +* move `ajaxify.parseData` back out to DOMContentLoaded (2582cb53) + +##### Refactors + +* rewrite ajaxify.parseData in vanilla (165b804d) + +#### v2.2.2 (2022-06-30) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0) + * bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9) +* incrementing version number - v2.2.1 (efc77b2a) +* update changelog for v2.2.1 (667780cf) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73) +* observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce) + +##### Refactors + +* allow user.hidePrivateData() to handle an array of `userData` (3f5ae893) + +#### v2.2.1 (2022-06-24) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (da481163) + * fallback strings for new resources: nodebb.admin-settings-advanced (34d75e96) +* add in warning in language directories about not editing files directly (06074e8c) +* incrementing version number - v2.2.0 (eecb836d) +* update changelog for v2.2.0 (bb3766df) + +##### Documentation Changes + +* remove the redundant security policy template (7f5b285e) + +##### New Features + +* cross origin opener policy options (#10710) (88132358) + +##### Bug Fixes + +* **deps:** + * update dependency winston to v3.8.0 (#10725) (d4a5039e) + * update dependency sharp to v0.30.7 (#10724) (0a07c2c0) +* handle ENOENT on file deletion, closes #10645 (43f9e6c8) + +##### Tests + +* fix i18n tests (05c30677) + +#### v2.2.0 (2022-06-15) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (f5afb5c3) + * fallback strings for new resources: nodebb.admin-manage-users (b1dc0531) + * fallback strings for new resources: nodebb.topic (d7d32a8a) +* remove unnecessary `affected` set from deprecated plugin hook (bef236f3) +* bump persona, #10699 (c7fa73b1) +* bump vanilla (d90fc18b) +* bump persona, closes #10566 (5bc972df) +* update changelog for v2.1.1 (ca038b84) +* **deps:** + * bump less from 4.1.2 to 4.1.3 in /install (#10685) (78322636) + * bump nodebb-plugin-2factor from 5.0.0 to 5.0.1 in /install (#10686) (701d8d76) + * bump spdx-license-list from 6.5.0 to 6.6.0 in /install (c82d34c8) + +##### New Features + +* new cronjob and ACP option to delete orphans after configurable number of days, closes #10659 (88aee439) +* allowed plugins to modify email verification details prior to db saving or email send/plugin fire (b9d4724e) +* pass absolute url to post into post tools response, #10566 (ece733ed) + +##### Bug Fixes + +* no need to pass in empty Set in deprecated hooks (3a015eb8) +* #10696, fix alert for password reset email (2da188fe) +* #10692 (b6f8e2fd) +* #10690, all uploads in `uploads/files` showing orphaned (a04da673) +* bug where post associations are not shown when the directory is `files` (7f870beb) + +##### Refactors + +* move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans (22368b99) + +##### Tests + +* add more asserts to failing test (ea1ed667) + +#### v2.1.1 (2022-06-08) + +##### Chores + +* **deps:** + * bump nodebb-theme-persona from 12.0.8 to 12.0.9 in /install (bb39dfba) + * bump mongodb from 4.6.0 to 4.7.0 in /install (a8987856) + * bump async from 3.2.3 to 3.2.4 in /install (ce38f711) + * bump xregexp from 5.1.0 to 5.1.1 in /install (eb9a46f8) + * bump webpack from 5.72.1 to 5.73.0 in /install (#10677) (6239a1ff) + * bump nodebb-theme-slick from 2.0.1 to 2.0.2 in /install (557648e6) +* **deps-dev:** + * bump @commitlint/config-angular in /install (e5e788d2) + * bump eslint from 8.16.0 to 8.17.0 in /install (52c86dba) +* incrementing version number - v2.1.0 (a3114d33) +* update changelog for v2.1.0 (7121949d) + +##### Documentation Changes + +* fix changelog to more accurately reflect new changes (a9744416) + +##### Bug Fixes + +* #10675, don't ajaxify to /assets/ urls (48564cfa) + +##### Other Changes + +* //github.com/pichalite/nodebb-theme-slick/issues/60 (6a0339de) + +#### v2.1.0 (2022-06-02) + +##### Chores + +* update changelog for v2.1.0 (7121949d) +* incrementing version number - v2.1.0 (987045c3) +* bump persona (91f32487) +* update changelog for v2.0.1 (abd8e216) +* incrementing version number - v2.0.1 (768427d4) +* remove optional `middleware` parameter from setupPageRoute and setupAdminPageRoute calls (54ff768f) +* add note re: sort module (5aca106b) +* up emoji (265a0139) +* update changelog for v2.0.0 (60fc3f5d) +* incrementing version number - v2.0.0 (f23c3ff5) +* **deps:** + * bump nodebb-plugin-2factor from 4.0.1 to 5.0.0 in /install (6e95e5c5) + * update dependency lint-staged to v12.5.0 (01f607a5) + * update dependency lint-staged to v12.4.3 (8885d228) + * update dependency eslint to v8.16.0 (#10654) (f6728404) + * bump sharp from 0.30.4 to 0.30.5 in /install (#10651) (d9f2096d) + * bump postcss from 8.4.13 to 8.4.14 in /install (#10652) (0772ec07) + * bump socket.io-client from 4.5.0 to 4.5.1 in /install (#10653) (a13a523b) + * update dependency lint-staged to v12.4.2 (#10647) (18e76c21) + * bump nodebb-plugin-mentions in /install (#10648) (e894147c) + * bump helmet from 5.0.2 to 5.1.0 in /install (#10641) (5faaf6a1) + * bump socket.io from 4.5.0 to 4.5.1 in /install (#10639) (9d9b3f4e) + * bump ioredis from 5.0.4 to 5.0.5 in /install (#10637) (f9c9ac9c) + * bump ace-builds from 1.4.14 to 1.5.1 in /install (#10636) (acf188b0) + * bump yargs from 17.4.1 to 17.5.1 in /install (#10624) (c7aefe9c) + * update dependency @commitlint/cli to v16.3.0 (1dc96717) + * bump mongodb from 4.5.0 to 4.6.0 in /install (#10603) (aee74bd6) + * bump express-session from 1.17.2 to 1.17.3 in /install (#10604) (b1967681) + * bump webpack from 5.72.0 to 5.72.1 in /install (#10600) (06edb6e6) +* **deps-dev:** + * bump @commitlint/cli from 17.0.1 to 17.0.2 in /install (#10672) (5f6e9f67) + * bump @commitlint/cli from 16.3.0 to 17.0.1 in /install (#10644) (fe873182) + * bump @commitlint/config-angular in /install (#10614) (9c4ef133) + * bump husky from 8.0.0 to 8.0.1 in /install (#10595) (54876583) + * bump grunt from 1.5.2 to 1.5.3 in /install (fcb6c191) + * bump husky from 7.0.4 to 8.0.0 in /install (#10591) (03453a62) + * bump eslint from 8.14.0 to 8.15.0 in /install (#10592) (0d75c6cb) +* **i18n:** + * fallback strings for new resources: nodebb.user (2bace634) + * fallback strings for new resources: nodebb.admin-manage-admins-mods (192aa2d3) + +##### New Features + +* add clipboard to runtime modules (39d61061) +* add mute history, closes #10596 (c926358d) +* allow unban/unmute on flag details page. closes #10593 (9acdc680) +* paginaton for admins-mods, closes #10610 (b860c260) +* fix typo, show route in deprecation notice for third-param removal in `setupPageRoute` (14110596) +* add button to see category children, closes #10606 (a5831412) +* closes #10601, ability to prevent alerts on topic list (dc320c89) +* add post to hook params (f07b4484) +* add sorted-list.parse (e904f438) +* add new hook that fires when sorted-set list modal is shown (8faa6f23) +* #10585, ability to mute from flag details (7867ccd7) +* send back missing parameters as array of missing properties, in API response (0c19b1e5) +* add hook for user invite (323dbc97) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.5.3 (#10667) (e7fd1861) + * update dependency ioredis to v5.0.6 (#10668) (5bafab79) + * update dependency nodebb-theme-persona to v12.0.8 (#10669) (e47a63f0) + * update dependency nodebb-plugin-2factor to v4.0.1 (#10665) (356f9a18) + * update dependency ace-builds to v1.5.2 (#10664) (7b5f53fc) + * update dependency nodebb-theme-persona to v12.0.7 (#10666) (a9a26836) + * update dependency sharp to v0.30.6 (#10662) (23232508) + * update dependency nodebb-theme-persona to v12.0.5 (#10649) (1fd68281) + * update dependency cron to v2 (#10568) (ad370202) + * update dependency clipboard to v2.0.11 (#10574) (db67a50a) + * update dependency nodebb-theme-slick to v2.0.1 (#10578) (d98f4ea9) + * update dependency nodebb-theme-persona to v12.0.2 (#10577) (930aefcf) + * update dependency nodemailer to v6.7.5 (#10573) (6eef08f9) +* buildBreadcrumbs naively prepending relative path even if absolute paths are passed in (a3564260) +* more generic copy for notif/chat button labels (f6a7582c) +* #10642, fix order of dom ready events (2bfccac7) +* get rid of math.random in utils.generateUUID (e802fab8) +* #10528, gray out disabled nav items (7e4d2852) +* encode privilege name for API call (92abb352) +* #10631, fix user digest setting display acp (0084b563) +* translate api error messages to user lang, closes #10623, (b17a81bf) +* alert template error. closes #10620 (24a640d9) +* closes #10621, convert \r\n to \n so it isn't counted as 2 characters (3a009f96) +* remove ev, hooks don't pass event, closes #10611 (082a9e1d) +* 'unread' postIndex regression closes #10607 (0e60a704) +* clear dragging on mouseup as well (70ad4a52) +* #10588 exit code 1 on failed plugin activation (e2ff1e39) +* #10584, dont show backlinks if you dont have read privilege (5e7d366f) +* #10586, fix webinstaller folders (1928a186) +* closes #10583, replace removed socket method with api method (5e82cf23) +* add missing fs-extra, #10580 (e7077393) + +##### Other Changes + +* unnecessary escape (60eeae95) +* fix semicolon (3a77e714) + +##### Refactors + +* return module if it doesn't have default export (12b58fcf) +* deprecate middleware param (#10513) (84f27263) + +##### Tests + +* fix tests again (191fb9f4) +* fix UUID test (6677efd7) + +#### v2.0.1 (2022-05-28) + +##### Bug Fixes + +* get rid of math.random in utils.generateUUID (a4ab49c2) + +#### v2.0.0 (2022-05-04) + +##### Chores + +* incrementing version number - v2.0.0 (f23c3ff5) +* update changelog for v1.19.7 (a764df52) +* **deps:** + * update dependency mocha to v10 (a7986773) + * bump nodebb-plugin-dbsearch from 5.1.3 to 5.1.4 in /install (#10545) (a2e263a1) + * update dependency smtp-server to v3.11.0 (62f1c78a) +* **i18n:** + * fallback strings for new resources: nodebb.post-queue (d617c665) + * fallback strings for new resources: nodebb.post-queue (3492dd11) + * fallback strings for new resources: nodebb.error, nodebb.flags (72d47a0b) + +##### New Features + +* show number of selected posts in reject confirm (012860a4) +* post queue bulk actions closes #10520, fix #10555, (23175110) +* output canonical URL as last line on NodeBB boot (e4a9c078) + +##### Bug Fixes + +* **deps:** + * update dependency @socket.io/redis-adapter to v7.2.0 (#10571) (c3c77915) + * update dependency autoprefixer to v10.4.7 (#10563) (68168a7d) + * update dependency nodebb-theme-persona to v12.0.1 (#10561) (1d446e14) + * update dependency nodebb-plugin-mentions to v3.0.10 (#10560) (eb3c398e) + * update dependency nodebb-plugin-dbsearch to v5.1.5 (#10559) (c3ff28ff) + * update dependency nodebb-plugin-mentions to v3.0.9 (#10554) (1acbe4c1) + * update dependency postcss to v8.4.13 (#10553) (6217db00) + * update dependency express to v4.18.1 (#10550) (b0dc5615) + * pin dependency webpack to 5.72.0 (#10549) (672ab25a) + * update dependency cron to v1.8.3 (#10543) (d6843294) + * update dependency bootbox to v5.5.3 (#10531) (8d47f352) + * update dependency nodemailer to v6.7.4 (#10540) (afefee08) +* #10569, fix category move event text (ea01ba01) + +##### Refactors + +* not used anymore (d2e6f317) + +#### v1.19.7 (2022-04-28) + +##### Breaking Changes + +* #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking] (46fbe156) + +##### Chores + +* incrementing version number - v1.19.7 (0c4850e2) +* update changelog for v1.19.6 (acca7811) +* **deps:** + * update commitlint monorepo to v16.2.4 (0d9179f7) + * update dependency lint-staged to v12.4.1 (#10527) (804542e4) + * bump socket.io from 4.4.1 to 4.5.0 in /install (#10523) (0c2d015c) + * update dependency eslint to v8.14.0 (#10514) (40b7ff4b) + * update dependency lint-staged to v12.4.0 (fff818c6) + * update dependency lint-staged to v12.3.8 (7c1d98c7) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (01e65395) + +##### New Features + +* make it simpler to use redis sentinels (82389469) +* closes #10501, minimum reputation to chat (b28f9f77) + +##### Bug Fixes + +* typo in hook name (21dbd476) +* upload test for latest sharp (424db9ff) +* #10502, allow unblocking admin/mod (b9f91643) +* **deps:** + * update dependency express to v4.18.0 (#10526) (5ae690a6) + * update socket.io packages to v4.5.0 (#10522) (d86c447a) + * update dependency autoprefixer to v10.4.5 (#10521) (5ce4c874) + * update dependency nodebb-plugin-2factor to v3.0.7 (#10510) (b81a0cfe) + * update dependency nodebb-widget-essentials to v5.0.11 (#10517) (a767d623) + * update dependency sharp to v0.30.4 (#10504) (a36911fc) + * update dependency prompt to v1.3.0 (#10487) (07678fb5) + * update dependency nconf to v0.12.0 (#10496) (fe492b11) + * update dependency archiver to v5.3.1 (#10500) (6c727859) + +##### Refactors + +* closes #10509 (7f241dbb) +* show invalid uri (ac125538) +* skip content length check if submitting from post-queue (a8e642ad) + +##### Tests + +* remove node18 until nodemailer is fixed (50658a82) +* remove node 12, add 18 (976914e7) + +#### v1.19.6 (2022-04-13) + +##### Chores + +* incrementing version number - v1.19.6 (283a0072) +* update changelog for v1.19.5 (05032ca2) +* **deps:** + * bump semver from 7.3.6 to 7.3.7 in /install (#10493) (65cec8d0) + * update dependency grunt to v1.5.2 (9f496659) + * update dependency grunt to v1.5.1 (0a8bf44e) + * update dependency grunt to v1.5.0 (e82d8bb6) + * update dependency eslint to v8.13.0 (bc3aabb4) + * update dependency eslint-plugin-import to v2.26.0 (a2ebf53b) + * bump nodebb-theme-persona from 11.4.3 to 11.4.4 in /install (#10437) (5b1789c1) + * bump nodebb-plugin-composer-default in /install (#10438) (c8c42933) + * update dependency eslint to v8.12.0 (a6590e20) + * update dependency lint-staged to v12.3.7 (#10407) (5f36ad39) +* **i18n:** fallback strings for new resources: nodebb.post-queue (a06d1246) + +##### New Features + +* #10460, add cutoff to suggested topics (799e94e0) +* add response:helpers.notAllowed (e8058ca3) +* add filter:image.stripEXIF (b8765df5) +* add confirm to reject, closes #10427 (538ad9e1) +* allow client-side hook registration chaining (b88bb3cf) +* delete flagId field from post/user on flag purge (31251282) +* add flags.purge (3b529b84) +* new admin events, closes #10405 (421ba6e1) +* add Albanian localisation :tada: (309968bf) + +##### Bug Fixes + +* dont add caller to arrays (5316029f) +* #10491, don't leak deleted message in cleanedContent (c52401da) +* #10473, trim trailing slashes on config url (9f91db16) +* closes #10436, fix DST issue on acp dashboard (39877763) +* delete history as well (002a241c) +* handle purge posts as well (93b60532) +* byCid removal, targetCid not stored in flagObj (03fdb5be) +* upgrade script (55be4202) +* column counts for other privileges (2b9b2b4a) +* **deps:** + * update dependency nodebb-plugin-mentions to v3.0.8 (#10490) (7c733e9c) + * update dependency winston to v3.7.2 (#10454) (dc03a2f9) + * update dependency nconf to v0.11.4 (#10481) (f253bbdd) + * update dependency yargs to v17.4.1 (#10480) (bbf2b73e) + * update dependency ioredis to v5.0.4 (#10479) (88200ec1) + * update dependency html-to-text to v8.2.0 (#10471) (91026e5f) + * update dependency semver to v7.3.6 (#10466) (c50de911) + * update dependency html-to-text to v8.1.1 (#10470) (b3ec8059) + * update dependency nodebb-widget-essentials to v5.0.10 (#10461) (b6517cfd) + * update dependency body-parser to v1.20.0 (#10450) (26511185) + * update dependency spdx-license-list to v6.5.0 (#10452) (5e37f34e) + * update dependency graceful-fs to v4.2.10 (#10457) (947fa193) + * update dependency mongodb to v4.5.0 (#10458) (30f728ca) + * update dependency ioredis to v5.0.3 (#10446) (0d744d30) + * update dependency ioredis to v5 (#10434) (060ad1b0) + * update dependency nodebb-plugin-2factor to v3.0.6 (#10435) (0ac426e0) + * update dependency nodebb-plugin-composer-default to v7.0.21 (#10429) (898e0e89) + * update dependency nodebb-plugin-spam-be-gone to v0.8.1 (#10425) (47399bfe) + * update dependency sortablejs to v1.15.0 (#10418) (12cd1df2) + * update dependency nodemailer to v6.7.3 (#10421) (7e542495) + * update dependency yargs to v17.4.0 (#10416) (eaa05517) + * update dependency nodebb-theme-persona to v11.4.3 (#10414) (720a9dba) + * update dependency connect-redis to v6.1.3 (#10390) (06594131) +* **security:** + * explicitly declare cache-control header instead of using middleware (38ca73c4) + * cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers. (1f6f389f) + * explicitly set cache-control 'private' on any page where a header is built (e39cdd49) + +##### Performance Improvements + +* WIP #10449, allow array of pids for posts.purge (#10465) (76797371) +* #10410, faster upgrade script (dab22d5f) + +##### Refactors + +* replace deprecated String.prototype.substr() (#10432) (200f0b2e) +* remove some verbose logging (9abe22a0) +* :trollface: (29b86b32) +* shorter generateTopicClass (f76c0e89) + +#### v1.19.5 (2022-03-16) + +##### Chores + +* incrementing version number - v1.19.5 (48d6eb4f) +* update changelog for v1.19.4 (0e6e49b2) +* **deps:** + * bump less from 3.13.1 to 4.1.2 in /install (#9856) (d33485f6) + * bump autoprefixer from 10.4.2 to 10.4.4 in /install (#10403) (90094935) + * update dependency lint-staged to v12.3.6 (0a4522a2) + * update commitlint monorepo to v16.2.3 (0a97015d) + * bump nodebb-plugin-spam-be-gone in /install (#10387) (445e3d70) + * bump connect-redis from 6.1.1 to 6.1.2 in /install (#10391) (145621f7) + * update dependency eslint to v8.11.0 (feaf3068) + * update dependency mocha to v9.2.2 (#10383) (4ffbd78d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-manage-users (2f09c22c) + * fallback strings for new resources: nodebb.admin-manage-privileges, nodebb.admin-manage-users, nodebb.error, nodebb.user (15508bac) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (5274a6aa) + +##### New Features + +* collect hook logs in order to reduce console noise, flush on ajaxify loadScript completion (935704a8) +* add support for PATCH method in api module (4b79dfd2) +* on online users page override timeago cutoff to 24 hours (7c946570) +* ability to mute users (be6bbabd) +* min:rep:upvote, and other limits similar to downvotes (3414a23b) +* post-queue hooks, closes #10381 (2056ac04) + +##### Bug Fixes + +* topic events if there is a blocked user in topic (3935a86b) +* topic events disappearing if there are queued posts (2808c952) +* #10393, move 'Create User' control to overflow menu (cd687cff) +* don't append to history on refresh or ajaxify to same url (c83987bd) +* global privs (7d063d73) +* #10384 -- mixed up sizes for fallback touch icons (cb113208) +* #10377, remove logging of env vars (997ab7d4) +* **deps:** + * update dependency postcss to v8.4.12 (#10396) (bdbc168d) + * update dependency sharp to v0.30.3 (#10389) (b4213859) + +##### Refactors + +* closes #10301 (c8e986d6) + +##### Tests + +* skip i18n tests if the github event is a pull request (e578c605) +* fix middleware test (24c1f879) +* fix category tests (6344c3b6) +* fix one more test (a5511425) + +#### v1.19.4 (2022-03-09) + +##### Chores + +* incrementing version number - v1.19.4 (67282057) +* delay `filter:email.send` removal to v2.0.0 (83fd4311) +* up persona (c23b2089) +* incrementing version number - v1.19.3 (09cb11c8) +* update changelog for v1.19.3 (0b48ec54) +* **deps:** + * bump postcss from 8.4.7 to 8.4.8 in /install (#10372) (d7a4ae1f) + * update dependency lint-staged to v12.3.5 (517ae926) + * bump nodebb-plugin-spam-be-gone in /install (81e7ca20) + * update dependency eslint to v8.10.0 (e83c8be2) + * bump postcss from 8.4.6 to 8.4.7 in /install (52ee5ce8) + * bump json2csv from 5.0.6 to 5.0.7 in /install (e44cbb24) + * update dependency smtp-server to v3.10.0 (67e4df78) + * update dependency mocha to v9.2.1 (00eebf10) + * bump prompt from 1.2.1 to 1.2.2 in /install (21913b5b) + * bump express from 4.17.2 to 4.17.3 in /install (5321ba4d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.flags (a5fe8350) + * fallback strings for new resources: nodebb.topic (dc0f9a73) + +##### New Features + +* add hook filter:posts.getUserInfoForPosts (df46ab48) +* add translateKeys (e841d59a) +* post auto flagging on downvotes #10029 (#10367) (62187caa) +* closes #10324, show recently online users as well (eac9cd03) +* resolve paths for staticDirs as well (e0b1c374) +* ability to go through your posts in a topic (b517b376) +* **sorted-list:** add new client-side hook `filter:settings.sorted-list.loadItem` (92d613e4) + +##### Bug Fixes + +* apply some DRY (a3b4c668) +* optional params (e9a86cb9) +* #10374, use quick search in setting (70e613f8) +* #10366, remove dupe /files (371b4658) +* always show self on /users?online (56345777) +* db call (21cd1e61) +* lastonline timestamps and display for guests (cc665fd6) +* #10357 (7ee4e4e0) +* #10358, bad uploads path (5479f364) +* #10360, only take top level posts (37ef8366) +* #10354, flag actions regression (fec907d9) +* dont overwrite asset_base_url if its set (0e12f82d) +* allow calls to api module without a defined payload (914733e4) +* #10334, use the correct env vars for web install (6b22d0e1) +* persona test fail (10a5901e) +* #10316, fix quoting regression (0b813d60) +* #10322 (5694e62e) +* #10329, select elements in sorted-list not showing proper values (1fa41342) +* allow translation keys in `label` attributes (52836f3a) +* don't load setup.json into nconf if setup.json doesn't exist (6e156daa) +* regression caused by 94b79ce4024f72a3eee2cfa06b05d8f66898149f (4164898d) +* **deps:** + * update dependency nodebb-plugin-markdown to v9.0.10 (bcb68ee9) + * update dependency mongodb to v4.4.1 (#10364) (4b730df9) + * update dependency nodebb-theme-persona to v11.4.2 (#10361) (4d590f65) + * update dependency body-parser to v1.19.2 (#10298) (c75714b7) + * update dependency sharp to v0.30.2 (#10359) (1a6c2c55) + * update dependency nodebb-plugin-mentions to v3.0.7 (#10355) (3e5a0f0d) + * update dependency nodebb-plugin-2factor to v3.0.5 (f30c65a4) + * update dependency nodebb-theme-persona to v11.4.1 (#10337) (b84e61d5) + * update dependency nodebb-theme-persona to v11.4.0 (#10325) (244d8801) + * update dependency nodebb-plugin-mentions to v3.0.6 (#10328) (31cbff19) + * update dependency nodebb-plugin-dbsearch to v5.1.3 (#10330) (1c1062e1) + * update dependency nodebb-plugin-markdown to v9.0.8 (#10327) (c17b9bd4) + * update dependency mongodb to v4.4.0 (#10319) (afd2993d) + * update dependency nodebb-plugin-emoji to v3.5.17 (#10314) (04900291) + * update dependency nodebb-plugin-dbsearch to v5.1.2 (#10313) (0e30362b) + * update dependency nodebb-widget-essentials to v5.0.9 (#10307) (5666c103) + * update dependency nodebb-widget-essentials to v5.0.8 (#10306) (636f1baf) +* **sorted-list:** + * call loadItem hook on add/edit items as well as on item retrieval, refactor edit to call parse() (1c8d1d23) + * only call `.stripHTMLTags()` on string values (fb4f89f3) + +##### Refactors + +* show a louder deprecation notice, alert once for each hook, not per plugin per hook (93b80f17) +* move header unread code to separate module (40230725) +* remove code that doesn't do anything (4a1e761a) +* wrap around if at end (3acd2ac8) +* change lang string (94961196) + +##### Tests + +* possible fix random psql test failure (50ed3a32) +* log configJSON (9db90a30) +* check contents of config.json in tests (32f69301) + +#### v1.19.3 (2022-02-16) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (4043f179) + * fallback strings for new resources: nodebb.user (775d9077) +* **deps:** + * update dependency lint-staged to v12.3.4 (9577ef8d) + * update commitlint monorepo to v16.2.1 (2290cee5) + * update dependency eslint to v8.9.0 (763cd193) +* remove punycode dep (e9cb1452) +* incrementing version number - v1.19.2 (e49b31f0) +* update changelog for v1.19.2 (f012984d) + +##### New Features + +* delete diffs on post purge, closes #10291 (e9e48a75) +* closes #10296 (58b5781c) +* deleting a user upload dissociates from posts, and vice versa (d5ed8736) +* #10276, dont change/revert theme if its current (398d25c2) + +##### Bug Fixes + +* #10302, fix regression (503e27f7) +* one last try (9205169f) +* doggy.gif (2f64d633) +* one more fix (cfdfbf32) +* dupe key errors (770fcd9e) +* #10292, delete missing fields (dbf7a458) +* local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()` (b9edee14) +* #10144, automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired (84dfda59) +* four-space indents in package.json (9aa3e442) +* #10289, remove lodash dependency in src/cli/package-install.js (81fa2e22) +* non-functional upgrade script (1c7fb8fe) +* language keys (350052ec) +* #10273, properly calculate item count for best/controversial (d70ce3a9) +* **deps:** + * update dependency nodebb-plugin-emoji to v3.5.16 (#10297) (b47ca86d) + * update dependency nodebb-plugin-markdown to v9.0.7 (#10293) (5b0d4a8e) + * update dependency nodebb-plugin-emoji to v3.5.14 (#10295) (7af057fa) + * update dependency nodebb-plugin-mentions to v3.0.5 (#10294) (55a98183) + * update dependency winston to v3.6.0 (#10285) (22da7a10) + * update dependency nodebb-plugin-markdown to v9.0.6 (3225a1af) + * update dependency nodebb-plugin-spam-be-gone to v0.7.13 (#10280) (3dc108d3) + * update dependency nodebb-plugin-emoji to v3.5.12 (#10279) (2c0b6322) + * update dependency nodebb-plugin-emoji to v3.5.11 (#10274) (766ef4e5) + +##### Refactors + +* lazy load slugify (946d351f) +* .deleteUpload() to accept array of paths (7ef9c7d2) +* fix user uploads paths, and associate uid with user uploads (ea36016d) +* change the post uploads' hash seeds to have the `files/` prefix (6489e9fd) +* abstract some common code out to local utility methods (aad0c5fd) +* move post upload tests to its own file (d92da828) +* remove extra zset remove, closes #10277 (489c0d30) + +##### Code Style Changes + +* linting errors (5d7e1ebc) + +##### Tests + +* fix topic thumb tests and topic thumbs to work properly with post upload assoc. (fb78570c) +* user uploads.js tests (8c2752ba) +* testing user upload methods, already fixed one bug (11275d68) + +#### v1.19.2 (2022-02-09) + +##### Chores + +* up persona (14ecafb6) +* up markdown (8a4b7dc4) +* add missing quote (b98758d3) +* use source and current local vars, + docs (9e4147f0) +* up persona (1eaae1d0) +* up emoji (106ef7cf) +* persona (3b4cf971) +* persona (78db61cf) +* up deps (c7a56439) +* add punycode dependency (452f29c0) +* up persona (d50d4a9e) +* up persona (458606bc) +* up persona (cfe53305) +* up persona (f29bed27) +* up packages (b4a4e60e) +* up persona (3e30b6cd) +* incrementing version number - v1.19.1 (7f450268) +* update changelog for v1.19.1 (55df683a) +* **deps:** + * bump ioredis from 4.28.4 to 4.28.5 in /install (#10254) (b496ad44) + * bump nodebb-widget-essentials in /install (#10219) (b71025ce) + * update dependency lint-staged to v12.3.3 (6ba25557) + * update dependency eslint to v8.8.0 (153693e0) + * bump nodebb-theme-persona in /install (#10199) (2db54e67) + * update dependency lint-staged to v12.3.2 (814cb66b) + * update dependency mocha to v9.2.0 (05e2b354) + * bump helmet from 5.0.1 to 5.0.2 in /install (1f037bf6) + * update dependency lint-staged to v12.3.1 (ac244af3) + * update dependency lint-staged to v12.3.0 (7060837b) + * bump helmet from 4.6.0 to 5.0.1 in /install (5d3900dc) +* **i18n:** + * fallback strings for new resources: nodebb.modules (a71b8e59) + * fallback strings for new resources: nodebb.global, nodebb.pages (aa812f03) + * fallback strings for new resources: nodebb.users (70eeb204) + * fallback strings for new resources: nodebb.admin-settings-email (e9588ca7) + * fallback strings for new resources: nodebb.admin-settings-advanced (2ec4e31f) + +##### Documentation Changes + +* openapi spec for new route (9b912db7) +* some tweaks to cli help (c869d7db) + +##### New Features + +* handle array of keys in psql exists for zsets (5143ca33) +* upgrade script to clean up leftover :thumb zsets (0ac28435) +* more tests for ensuring downvoted posts are added to the :votes zset (1b8eeaf8) +* upgrade script to store downvotes posts in the user :votes sorted set (cf88483f) +* new accounts route to show most downvoted ('controversial') posts (5afd5de0) +* v3 user email tests (aa8914a1) +* allow gif profile images, sharp 0.30.0 supports gifs (7f1c4477) +* detect alternative package managers based on lockfile (8ba9e67c) +* new language key for user search in chat (766ad6b7) +* remove colors in favour of chalk (#10142) (cf8f62ae) +* add upload helper module for drag&drop, paste, closes #6388 (cf5c0968) +* no more sending emails to banned users, + feature flag (ea27eaf1) +* push the theme name into body class (e1e1d522) +* add ACP toggles for COEP and CORP headers (d91aeea3) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.30.1 (#10270) (8e52abe8) + * update dependency nodebb-widget-essentials to v5.0.7 (#10269) (6c0f7034) + * update dependency nodebb-theme-persona to v11.3.37 (#10265) (78d48c37) + * update dependency ioredis to v4.28.5 (#10252) (721a70c0) + * update dependency connect-redis to v6.1.1 (#10260) (a10e4940) + * update dependency nodebb-theme-persona to v11.3.36 (#10253) (0e2a4a2d) + * update dependency nodebb-theme-persona to v11.3.35 (#10251) (6465e012) + * update dependency pg-cursor to v2.7.3 (#10244) (e6185883) + * update dependency nodebb-theme-persona to v11.3.33 (#10248) (32477676) + * update dependency nodebb-theme-vanilla to v12.1.17 (#10249) (8f5b5ef1) + * update dependency nodebb-plugin-emoji to v3.5.9 (#10250) (1eb0939e) + * update dependency sanitize-html to v2.7.0 (#10246) (845717b8) + * update dependency pg to v8.7.3 (#10243) (531a3b1e) + * update dependency connect-redis to v6.1.0 (#10245) (c343b631) + * update dependency nodebb-theme-persona to v11.3.31 (#10241) (f1bed441) + * update dependency nodebb-plugin-composer-default to v7.0.20 (#10231) (a4702959) + * update dependency nodebb-theme-persona to v11.3.30 (#10232) (916a0db3) + * update dependency nodebb-plugin-emoji to v3.5.8 (#10239) (ebf4e12b) + * update dependency sharp to v0.30.0 (#10221) (2924cd3b) + * update dependency ioredis to v4.28.4 (#10224) (cda07cb7) + * update dependency clipboard to v2.0.10 (2c605d1c) + * update dependency sitemap to v7.1.1 (1bf938da) + * update dependency winston to v3.5.1 (b0dd68bb) + * pin dependency punycode to 2.1.1 (e7ba24c5) + * update dependency postcss to v8.4.6 (322f1033) + * update dependency nodebb-plugin-markdown to v9 (7d5080cd) + * update dependency ace-builds to v1.4.14 (#10200) (c50f6512) + * update dependency winston to v3.5.0 (#10202) (a7f142be) + * update dependency clipboard to v2.0.9 (#10203) (c6164e48) +* remove extraneous devDependencies on package merge (a2c7d69e) +* #10257, topic thumbs not deleting on topic deletion (0f788b8e) +* #10256, allow quote tooltip on mobile (fb3f4f9a) +* #10255, create verified/unverified groups on install (08f2a050) +* controversial posts/bests posts not showing anything (079c487d) +* regression in package.json merging logic that caused extraneous packages to not be removed (d34471f6) +* #10229, package merging should deep merge nested objects (689c125c) +* use fs.promises (a0a38706) +* bug where .reduce() exploded due to no initial value, if input value was an empty array (5cff6e3f) +* https://github.com/NodeBB/NodeBB/issues/10242 (dcb201df) +* missing early return (ad635175) +* handle case where email is explicitly passed into user.create, and thus is set in user hash, but confirmation request may have expired (936562c3) +* #10236, don't check email:uid, instead verify an email confirmation is active (0322e984) +* don't crash if requestedFields is undefined (98839108) +* a missed invocation of colors (c3d926ff) +* proactively guard against homograph characters in website values (fa7dcdb9) +* #10208, don't use leading slash in directory names (1d01741a) +* don't crash if quick search doesn't return posts (93d18383) +* properly unregister hooks in emailer tests (fc2c755c) +* email ban tests (dee9cca3) +* update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler (d4e5259f) +* derp (b3f7b742) +* bug where page wouldn't complete loading if data.scripts was emptied (578145ac) +* use escaped group names in invite modal (2a89ad82) +* https://github.com/julianlam/nodebb-plugin-mentions/issues/170 (dc6e629d) +* #10197, fix relative path urls for dashboard pages (92a249c9) +* actually, CORP is ok (df8c8ad8) +* update defaults for corp and coep to be more permissive, for now, to be reverted for v1.20.0 (4467299e) +* if no group label is selected, select no group title option (94da5026) + +##### Other Changes + +* remove unused require (6be330f2) + +##### Performance Improvements + +* increase batch size (b548083b) + +##### Refactors + +* update chat plcaeholder message (fbd9ba79) +* updated package-install.js exports style, new exported method 'getPackageManager' for use in cases where nconf is unreliable, fix bug where nconf was not correctly set up in cli tools, proper installation of dev dependencies based on global env value (9a169085) +* emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent (f0e32ff1) +* sorted-list .get() to be async fn (89b559a2) + +##### Tests + +* fix occasional test failure (2dbdd181) +* add test to verify that a sorted set is automatically deleted if its last element is removed (#10261) (60680876) +* stricter isValidationPending check (d1b1f50b) +* fix derp (680e36da) +* up acp plugin page timeout (a214f9a6) + +#### v1.19.1 (2022-01-21) + +##### Chores + +* **deps:** + * bump compare-versions from 4.1.2 to 4.1.3 in /install (#10154) (4a5182e4) + * update dependency lint-staged to v12.2.2 (f090de36) + * update dependency @commitlint/cli to v16.1.0 (44d81a95) + * update dependency lint-staged to v12.2.1 (857ac480) + * update dependency @commitlint/cli to v16.0.3 (9c63d076) + * update dependency lint-staged to v12.2.0 (1a0c117d) + * update dependency eslint to v8.7.0 (8abaf3f6) + * update dependency mocha to v9.1.4 (f5ad173b) +* up persona (89871d71) +* add test.sh to gitignore (d7796f0b) +* delete test script (250274c7) +* remove unused lang key #10180 (2fe91e36) +* incrementing version number - v1.19.0 (18b0a29f) +* update changelog for v1.19.0 (c8f1bc53) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-user (78cd6de7) + * fallback strings for new resources: nodebb.user (3ec9197c) + * fallback strings for new resources: nodebb.email (354aa1a5) + +##### New Features + +* revert label js change (1c80adf1) +* hide all categories link on flags filters (e9d0db28) +* nicer error handling for bad jwt in unsubscribe template (31ea2266) + +##### Bug Fixes + +* **deps:** + * update dependency jquery-ui to v1.13.1 (#10186) (55b3a355) + * update dependency multiparty to v4.2.3 (#10188) (7fa2ba70) + * update dependency nodebb-theme-persona to v11.3.15 (#10155) (e03d4747) + * update dependency mongodb to v4.3.1 (#10178) (693ca1f1) + * update dependency nodebb-plugin-composer-default to v7.0.18 (#10164) (2c75cce6) +* urls used when recent/unread/popular/top is used as the homepage (28359665) +* mark unread button showing the selected category (fdfafb44) +* catch exceptions from sendNotifications (c1ec2047) +* multiple cid filter on flags page (3e8cb732) +* post indices if there is a blocked user in topic (f9279b63) +* dont add duplicate link backs (3b72ff87) +* #10175, fix topic linkbacks duplicating on post edit (b06c6329) +* #10173, don't show optional message if email is required (d1eb21c5) +* #10172, fix postqueue accept/reject notification text (6a75ed50) +* #10167, fix regression prevent guest post (4799efc7) +* CSRF handler to go back to saving in session (#10159) (e9ee843b) +* #10158, fix extra padding (03f5cbcc) + +##### Refactors + +* add method to error messages (c9fabb0e) + +##### Tests + +* add failing guest csrf test (#10169) (10949184) + +#### v1.19.0 (2022-01-13) + +##### Breaking Changes + +* `GET /chats/:roomId/users` [breaking] (6eea6451) +* remove socket.emit('user.exists') (1f063058) +* remove socket.emit('user.changeUsernameEmail') (6b45dee9) +* #10077, store nav items in objects (69c96078) +* remove socket.emit('topics.follow') (f918a381) +* remove socket.emit('topics.post') (6ad04721) +* remove socket.emit('user.banUsers'); (49641a32) +* remove socket.emit('posts.reply') (4604a572) +* remove socket.emit('user.changePicture') (6d95684b) +* remove socket.emit('user.search') (0d694c78) +* remove socketHelpers.setDefaultPostData (99f865c6) +* remove deprecated groups socket calls (02ea17ea) +* remove deprecated methods (0d1e57dc) +* remove socket.emit('posts.delete') (bd1cb2d4) +* remove socket.emit('posts.upvote') (ec1d5e38) +* remove socket.emit('posts.move') (8427c5d9) +* remove socket.emit('posts.edit') (4247f624) +* remove socket.emit('posts.bookmark/unbookmark') (f7418ccd) +* remove deprecated admin.groups methods (07e2741e) +* remove socket.emit('categories.getCategory') (45d755b6) +* remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') (cc3f82bc) +* remove deprecated socket.emit('admin.categories.update') (0b9c01f9) +* remove deprecated socket.emit('admin.categories.purge') (ba5d2e7b) +* remove deprecated socket.emit('admin.categories.create') (b3353723) +* remove deprecated socket.emit('admin.categories.getAll') (10c19af2) +* remove getTopicPosts(tid, ...) usage (170e5dd9) +* remove deprecated post diff socket calls (8117b7f2) +* remove deprecated user middlewares (1a7fffc7) +* remove action:category.loaded, use action:topics.loading (36aa6034) +* remove setTopicSort/setCategorySort (6dcdf1d3) +* remove deprecated socket user create/delete functions (a7d1dfb6) +* remove deprecated uploads.delete (c93d7fdb) +* remove deprecated methods (79de48c5) +* remove socket.io/flags.js (c5f08fdc) + +##### Chores + +* org; merge consecutive await calls into one Promise.all (be4dbe34) +* fix #9213 (0a5420ed) +* revert engines change in install/package.json (487f25ba) +* update renovate config (f95acce3) +* update renovate range strategy... (bc0f33df) +* remove debug logs in test/api.js (82768fcf) +* use apiv3 for room rename tests (e745e212) +* trigger lang (540eeae9) +* up themes (71fa8175) +* right dropdown (7aa85882) +* right dropdown (a998cc1c) +* update readme mongodb version (af5393ec) +* incrementing version number - v1.18.6 (3a78a151) +* update changelog for v1.18.6 (3c8109e2) +* **deps:** + * update commitlint monorepo (56d134c3) + * update dependency lint-staged to v12.1.7 (40e7007f) + * update dependency lint-staged to v12.1.6 (f78108ac) + * update dependency eslint-plugin-import to v2.25.4 (a69afdb6) + * update dependency lint-staged to v12.1.5 (12038039) + * update dependency eslint to v8.6.0 (b546ff4e) + * update dependency lint-staged to v12.1.4 (87779fc8) + * update dependency jsdom to v19 (#10053) (ee05b762) + * update dependency lint-staged to v12.1.3 (c0dd8dcb) + * update dependency eslint to v8.5.0 (55b9fab1) + * update dependency eslint to v8.4.1 (ba02f015) + * update dependency eslint to v8.4.0 (4b113715) + * update dependency lint-staged to v12 (b3423389) + * update dependency eslint to v8 (e9aadde1) + * update commitlint monorepo to v15 (f6c6425d) + * update dependency jsdom to v18.1.1 (87433b79) + * bump compare-versions from 3.6.0 to 4.1.1 in /install (ea9f2c73) + * update dependency jsdom to v18.1.0 (d7c2a311) +* **i18n:** + * fallback strings for new resources: nodebb.user (d79d7e80) + * fallback strings for new resources: nodebb.admin-settings-uploads (e6a46ef6) + * fallback strings for new resources: nodebb.error (207ae8cd) + * fallback strings for new resources: nodebb.post-queue (edba10e2) + * fallback strings for new resources: nodebb.modules, nodebb.notifications (fd939f8b) + * fallback strings for new resources: nodebb.admin-admin (4a53adf6) + * fallback strings for new resources: nodebb.admin-admin (b052a8e7) + * fallback strings for new resources: nodebb.topic (23c915ba) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.login (eecd02fb) + * fallback strings for new resources: nodebb.admin-settings-email (72e1c281) + +##### Documentation Changes + +* comment hint :shipit: (ffdf26af) +* fix description for route (47ab9526) +* roomId is number (0aa25f20) +* openAPI documentation for routes (55e68e2f) +* use social media card in readme header (33c8b197) +* add social media card (f7b3f69f) +* add docs link higher up (1a85aaad) +* update readme blurb (e325aa93) + +##### New Features + +* bundling nodebb-plugin-2factor with all NodeBB installations, v1.19.0 onwards :tada: (31b4b8fd) +* revoke user sessions on successful password reset (6ca216ab) +* allow % in tags, #10135 (a75a043b) +* allow isCluster, isPrimary, and jobsDisabled to be passed in as numbers in addition to string/bool (b5b188fd) +* `GET /api/v3/chats/:roomId/messages` (2fe53cf8) +* `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` (fe17c94c) +* `POST /chats/:roomId/users` (d62ee846) +* `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` (d5fd098e) +* middleware.assert.message (90fcbe44) +* `GET /chats/:roomId/:mid` (b2929605) +* `PUT /chats/:roomId/:mid` (f48ed365) +* allow API checkRequired middleware error to be internationalized (74f1905e) +* `PUT /api/v3/chats/:roomId` (9a4fd5dc) +* `POST /api/v3/chats/:roomId` (eeffb9d9) +* `GET /api/v3/chats/:roomId` (09cf9c77) +* `POST /api/v3/chats`, chat room creation, plus openAPI docs update (40b4544e) +* `GET /api/v3/chats` (94bead71) +* stub code for v3 chats api (02e878be) +* #9506, allow seeing and editing your queued posts (c4042c70) +* pass in all query params to category search filter (599bffd8) +* add data param to filter:categories.search (c4156bdd) +* ensure that all requests handled by NodeBB fall under the relative_path as configured (a3bdb706) +* show 10 members (d9c42c00) +* closes #10018 (1e535528) +* #10018 add href (06bfec88) +* #10018 , wip (0f14f23b) +* autocomplete for activate/reset (f0d192fb) +* #10008, add history entry for note deletion (c26870d2) +* #9957, don't remove existing fields form config.json (0532c1b2) +* add feature flag to disable verification emails, closes #9996 (09e0c6d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-markdown to v8.14.6 (ad6f6051) + * update dependency winston to v3.4.0 (#10150) (2fee1d07) + * update dependency ioredis to v4.28.3 (#10151) (bfad04ab) + * pin dependencies (da2bb340) + * pin dependency socket.io-adapter-cluster to 1.0.1 (#10146) (15bf3db2) + * update dependency nodebb-theme-vanilla to v12.1.15 (#10149) (2fa3cd0d) + * update dependency nodebb-theme-slick to v1.4.23 (#10148) (762de2d8) + * update dependency nodebb-theme-persona to v11.3.13 (#10147) (385d4c71) + * update dependency winston to v3.3.4 (4bada01b) + * update dependency autoprefixer to v10.4.2 (a47883e8) + * update dependency mongodb to v4.3.0 (50eb4556) + * update socket.io packages to v4.4.1 (9eb00cb2) + * update dependency nodebb-rewards-essentials to v0.2.1 (0a15c99e) + * update dependency autoprefixer to v10.4.1 (f1aa5f7d) + * update dependency yargs to v17.3.1 (5c3335b7) + * update dependency nodebb-theme-vanilla to v12.1.14 (#10102) (dd8b1f75) + * update dependency nodebb-theme-slick to v1.4.22 (#10101) (dd1633ff) + * update dependency nodebb-theme-lavender to v5.3.2 (#10099) (eccdfc9d) + * update dependency nodebb-theme-persona to v11.3.12 (#10100) (4f6fc10b) + * update dependency nodebb-theme-persona to v11.3.11 (32cbf760) + * update dependency nodebb-theme-slick to v1.4.21 (9253519c) + * update dependency nodebb-theme-slick to v1.4.20 (#10084) (019804e1) + * update dependency nodebb-theme-vanilla to v12.1.13 (#10085) (66c759ed) + * update dependency nodebb-theme-persona to v11.3.10 (#10083) (d276c9cd) + * update dependency nodebb-plugin-composer-default to v7.0.17 (#10082) (0ef9c7ab) + * update dependency nodebb-theme-vanilla to v12.1.12 (dda7c075) + * update dependency nodebb-theme-slick to v1.4.19 (4577600e) + * update dependency nodebb-theme-persona to v11.3.8 (5e2281c3) + * update dependency mongodb to v4.2.2 (0551a19e) + * update dependency postcss to v8.4.5 (16398dd9) + * update dependency compare-versions to v4.1.2 (de1ed01d) + * bump persona (16c88a97) + * bump persona (c90a8926) + * update dependency nodebb-plugin-mentions to v3.0.4 (#10063) (07217762) + * update dependency nodebb-plugin-spam-be-gone to v0.7.12 (#10064) (a5840c5a) + * update dependency nodebb-theme-slick to v1.4.18 (#10065) (5477cf32) + * update dependency nodebb-plugin-markdown to v8.14.5 (#10062) (60d778f0) + * update dependency nodebb-theme-persona to v11.3.5 (#10059) (8695d370) + * update dependency nodebb-plugin-dbsearch to v5.1.1 (70068d6c) + * update dependency nodebb-plugin-composer-default to v7.0.15 (84b03a34) + * update dependency nodebb-theme-persona to v11.3.3 (8cbe0df2) + * bump emoji plugin (14e35247) + * update dependency ioredis to v4.28.2 (597d826b) + * update dependency yargs to v17.3.0 (115de4e5) + * update dependency mime to v3 (#9963) (49813cce) + * update dependency mongodb to v4.2.1 (f72af319) + * update dependency @socket.io/redis-adapter to v7.1.0 (ed4b0cf7) + * update dependency postcss to v8.4.4 (b34b8aa9) + * update dependency postcss to v8.4.3 (2dadf786) + * update dependency postcss to v8.4.1 (6a273798) + * update dependency postcss to v8.4.0 (29345275) + * update dependency ioredis to v4.28.1 (9966a00f) + * update dependency nodebb-theme-persona to v11.3.1 (fdae6991) + * update socket.io packages to v4.4.0 (f05d308a) + * update dependency nodebb-theme-vanilla to v12.1.10 (68dddbd9) + * update dependency nodebb-theme-persona to v11.2.22 (3eb91a20) + * update dependency nodebb-plugin-mentions to v3.0.3 (5ec32c31) + * update dependency mongodb to v4.2.0 (#10011) (2378fc84) + * update dependency @socket.io/redis-adapter to v7.0.1 (aae7be02) + * update dependency sharp to v0.29.3 (46162537) +* lint (c9592e17) +* icon alignment issue that was also bugging me :shipit: (37a71291) +* #10143, add back ace editor searchbox (42caef7f) +* #10095, add login info to email interstitial (5eb02f59) +* #10121, fix error messages in user creation (8ad64ec0) +* #10115, fix chat autocomplete hook (69a7634a) +* notice links in subfolder installs (cc27a324) +* move authenticateRequest before interstitial and maintenance mode middlewares, allowed plugins to disable authentication on certain routes (d89fc44c) +* retry incrObjtFieldBy (07232a8c) +* use component instead of class name (b179f0fc) +* assertion check to ensure messages are in the room when editing/deleting, etc (d95b4ee2) +* rename language key for incorrect parameter type error (aeb43b9b) +* deprecate chats.leave (16ba16cd) +* re-allow kicking of the other party in a 1-to-1 chat (6294beea) +* isFinite check for room assertion, more test migrating (140f9d24) +* #10096, don't display preview for links if hostname doesnt match (a115b771) +* only render preview on topic page (a9f81215) +* don't crash server if analytics fails to save (8fb89d76) +* upgrade script to handle strings as well (e332acf3) +* #10090, remove left over necro posts messages (fdaf8274) +* #10086, if pidfile is empty delete (59214ca2) +* utils method (91e21ecc) +* prevent crash if groups is not valid json (cc0a087a) +* upgrade script (968d4616) +* delete left over nav items after removal of some (737e1c19) +* targetBlank/dropdown not getting cleared (10e890e4) +* prettier bulk method usage (3b0c42a5) +* bug where groupChat property was not set for chat rooms (42959df0) +* #9484 show user history only to admins and gmods (bc7707aa) +* no need to pass 'img' to teaser tags stripping as images are already converted to alt text (45c9dde3) +* #10069, don't modify fields array (a8afdc60) +* #10068, update data-index values after sort (236d4e80) +* #10068, baseIndex should be read before sort update fix off by one error (9af23351) +* tests (45d8157f) +* #10067, count posts instead of incr/decr (830166d1) +* handle start=0 stop=0 for topics.getTopicPosts (906dc567) +* wrong usage of is ACP (4f423610) +* don't throw on invalid session, just return early so socket is not opened. (fa01801f) +* #10052, dont use spaces in tag class name (a2953583) +* don't crash if tid is falsy (1cdb0b1e) +* regression from https://github.com/NodeBB/NodeBB/commit/27c05448e1532ce466658513af0e2ff65576b410 (50063fe2) +* keep query params on /me redirects (941ecaf8) +* 403/400/500 page not generating csrf_token (65c55041) +* error pages dont have config.csrf_token (3dd681eb) +* quote button staying on screen on slow computers (d378bf4c) +* removed unused var (e0caa5e0) +* #10027, properly auto confirm first user (2473d5d8) +* cli password reset (71e34be5) +* #10023, bump persona (a10ea03c) +* #10020, /api/post/upload returns v3 style response (242f8e95) +* consolidate plugin reset logic (449366ca) +* search crash (9245f71a) +* #10010, handle reverse sorting for topic events (d5bfd512) +* #10006, dont allow new rooms or adding to a room if target is blocked (047f031d) + +##### Other Changes + +* remove unused (afc75ba4) +* fix (682f6089) +* missing ; (20e76699) +* remove unused (cbf198fe) +* remove unused (a20abdce) +* fix (0a6eeb93) +* remove unused utils (82b72f7e) +* fix (fa1ac04d) + +##### Performance Improvements + +* only add middleware if relativePath is set (41db9436) +* don't load all set members to get count (0414356c) +* create user tooltips on demand (23147235) +* closes #9994, bulk methods for settings (d412ba44) +* remove createUserTooltips (facc10e4) + +##### Refactors + +* remove unused language key (5278b11a) +* put message api calls behind `/messages` prefix, #10097 (aaa6f752) +* rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await (c990211c) +* only write analytics data on nbb that has runJobs=true (35fea58a) +* remove knonwOwner param (42781467) +* remove console.log (a7644466) +* remove unused validator (4e1d4217) +* only pass qs (b8896d13) +* change error message (1e60ae87) +* use hasOwnProperty (9f1b8a3b) +* remove object.create (dbba0c39) +* remove unused args (3d3ae82f) +* remove comment (633061f4) +* use .map to return promises (d4f3ee67) +* async (cfd47448) +* async (f0394c49) +* use async (8491f67d) +* remove unused (e3c0f0be) +* always returns array (9627fa90) +* use async/await (f4aa249d) +* change var name (36eb47d9) +* alerts (621c142f) +* use alerts.error/success (cba78aee) +* use lang keys, fix typo (dd02c49f) +* use alerts module (1980feed) +* dont need local function (2bb0828a) +* DRY (324262cb) +* use routePrefixMap instead of routeRegexpMap, +tests (#10035) (6c07433d) +* use hasOwnProprety (daf385cd) +* tab rules (fb363957) +* change category feed so it is not updated on every reply (697dd376) +* dont expost entire res._locals to client side (e368feef) +* shorter meta.settings.get (190532b3) +* clone settings before returning (51cbeccb) +* remove another async.series (27c05448) +* remove tabs after declaration (4359e5c9) +* update dates (6d38eab6) +* clone before returning (f729e519) +* add filter:topic.getPosts (258f368e) +* setObjectBulk to match sortedSetAddBulk (8379c11b) +* remove more async.eachSeries/mapSeries (d1964095) +* make a single call to set widgets per template (8750ee04) +* remove jshint, remove async.parallel (80f9963b) + +##### Code Style Changes + +* eslint (d960f601) + +##### Tests + +* fix util test (6c1e184c) +* update tag tests, fix linux symlink error (9b75b1ed) +* fix restore test (0d9ec9d3) +* fix user tests calling deprecated socket methods (e747998c) +* add email interstitial tests (1264dcb5) +* don't use csrf_token for get,head, options (5e08f7e6) +* fix tests (0e273ab2) +* remove old test (68fd0875) +* make it async (5c3d5f1f) +* fix (26f00ffb) +* one more getTopicPosts test (f8f0a83b) +* utils.params (7b99dc46) +* regular user shouldn't see admin:privileges (cd2040ac) +* add missing tests (58431221) +* add api token tests (7434cbf6) +* add missing tests (404a8774) +* upgrade.runParticular (2bdb4906) +* add missing acp root category test (c17ec996) +* cache dump test (217aae4c) +* add missing controllers (bc120dba) +* fix tpl name (edf7c647) +* add mising email.test tpls (6d186ff1) +* debug routes in dev (754cdab8) +* add digest route test (1280d9ae) +* digest (f11bc33a) +* fix function name (0e725125) +* submitUsage (d375dcb8) +* remove log (d7c32ccb) +* middleware/expose.js (29b3587d) +* up mongodb version (500cad78) +* mainPost removed from inf scroll (aac0792a) + +#### v1.18.6 (2021-11-10) + +##### Chores + +* make it a link (a0f0dd02) +* update badges, remove david doesnt work (dad31c8e) +* up themes (b1d6c9ba) +* up mentions (98b98a11) +* up mentions (3e4d477e) +* fix type.yaml example and summary (591424ce) +* incrementing version number - v1.18.5 (1e418f5b) +* update changelog for v1.18.5 (82eda23a) +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* **deps:** + * update dependency eslint-plugin-import to v2.25.3 (45a0895c) + * update commitlint monorepo to v14 (dc78125a) + * update dependency jsdom to v18.0.1 (7d468e72) +* **i18n:** + * fallback strings for new resources: nodebb.admin-development-info (91676c6c) + * fallback strings for new resources: nodebb.admin-settings-navigation (3727e39f) + * fallback strings for new resources: nodebb.admin-settings-post (46789910) + +##### New Features + +* #9992, hooks.one (96f13e4f) +* use auto-generated meta and link tags in ACP, closes #9991 (1719bff8) +* add node 16 (#9847) (d27c9696) +* #9967, allow dropdowns in navigation (2e623dd2) +* show number of events per type in acp (b916e42f) +* show posts previews if enabled on mouse over (8c670316) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-slick to v1.4.16 (#9990) (cf30876f) + * update dependency nodebb-plugin-composer-default to v7.0.14 (#9989) (ef02bdc4) + * update dependency nodebb-plugin-composer-default to v7.0.13 (#9988) (654c8e61) + * update dependency nodebb-plugin-mentions to v3.0.2 (1a22b0ec) + * update dependency socket.io to v4.3.2 (98ebc4d9) + * update dependency html-to-text to v8.1.0 (c1f5889f) + * update dependency nodebb-plugin-dbsearch to v5.1.0 (#9983) (4f1ee1fc) + * update dependency nodebb-plugin-composer-default to v7.0.12 (7fee0e32) + * update dependency nodebb-plugin-mentions to v3.0.1 (#9979) (8224a2a9) + * update dependency nodebb-plugin-spam-be-gone to v0.7.11 (91293ecc) + * update dependency nodebb-theme-lavender to v5.3.1 (f7295aaa) + * update dependency nodebb-plugin-mentions to v3 (#9966) (0888aae6) + * update dependency mongodb to v4.1.4 (#9968) (f5993731) + * update dependency nodebb-theme-persona to v11.2.21 (#9969) (8fac8d61) + * update dependency nodebb-plugin-mentions to v2.15.1 (0f8a68c0) + * update dependency validator to v13.7.0 (81c8d70c) + * update dependency autoprefixer to v10.4.0 (755860f1) +* ability to enumerate email via updateProfile method (c1ac2912) +* accidentally not clearing email when said email is confirmed for a different uid (b912a564) +* #9976 (28dd31a8) +* #9976, handle array or object (9bfb6c72) +* dont show previews on mobile (41e02400) +* category load more btn visibility (05468526) +* #9973, ignore if assigning to same parent (66e7cdac) +* #9972 (67cb2491) +* remove tooltip on ajaxify (f728abda) +* don't highlight external nav items (8a88295d) +* don't use # for previews (5a0efd2d) +* events for just topic with main post (3d611ab7) +* #9954, get next post timestamp (89399c0e) +* topic events not rendered in infinitescroll (a7f235db) +* broken post uploads due to 6a976a9db0340e34577961ce8d5d9479c78f7856 (485b6ced) +* #9950, rename account export routes to remove `uid/` prefix (0ee85d5a) +* double invocation of authenticateRequest (60352eca) +* #9945, call authenticateRequest middleware for mount points in /api (6a976a9d) +* hooks is sometimes undefined (74aa12c9) +* typo in flags (bc4b19b4) +* remove unused code (50b2ebf8) +* handle undefined data.query (8f08d9ca) + +##### Performance Improvements + +* only load posts once (9fbb3b11) + +##### Refactors + +* shorter require (41c3eb82) +* deprecate app.alert functions user alerts module directly (0428912c) +* deprecate app.logout (8b4510cc) +* simpler rejoin (61903448) +* deprecate app.openChat/newChat (f352be63) +* move search functions from app.js to search module (1a9b1598) +* move session messages (666fe209) +* move warnings/messages out of app.js (51855254) +* remove jshint (0a7ff208) +* cleanup info, better cpu usage % (4b738c8c) +* acp only uses 3 modes and a single theme (890bf03f) +* display errors from category drag/drop (c1cc35a9) +* use utils.debounce (e8c17fee) + +##### Tests + +* add another assert for random failing test (ae64b9f4) +* socket.emit doesnt exist in tests (61d1f565) +* show body when test fails (e3f5b706) +* lint (3d2398ac) +* fix tpl test (30cce142) +* dbsearch no longer has staticDir (3386893b) +* increase timeout (4ac9270a) +* fix account export test routes (10bb8cf7) +* add test aliases.buildTargets (62ac9a8b) +* empty query params for search (bda5d144) + +#### v1.18.5 (2021-10-27) + +##### Breaking Changes + +* disable javascript in custom less tab (719cfc0d) + +##### Chores + +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* up themes (463b2076) +* up persona (1438f409) +* incrementing version number - v1.18.4 (945c2b0b) +* update changelog for v1.18.4 (7cbcb521) +* **deps:** + * update dependency lint-staged to v11.2.6 (8d4bb8bb) + * update dependency lint-staged to v11.2.5 (0728a994) + * update dependency lint-staged to v11.2.4 (f76a7882) + * update dependency husky to v7.0.4 (2a3e13f3) + * update dependency mocha to v9.1.3 (4784f016) + * update dependency eslint-plugin-import to v2.25.2 (3c3f45d9) + * update dependency jsdom to v18 (4b8dcd4c) + * update dependency eslint-plugin-import to v2.25.1 (7c4aebbd) + * update dependency lint-staged to v11.2.3 (288b5456) + * update dependency lint-staged to v11.2.2 (f96c8c4d) + * update dependency @commitlint/cli to v13.2.1 (52c38a1d) + * update dependency lint-staged to v11.2.1 (022e8df0) + * update dependency eslint-config-nodebb to v0.0.3 (4b92df82) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email, nodebb.error (9b68dc37) + * fallback strings for new resources: nodebb.admin-dashboard (ff962b5d) + * fallback strings for new resources: nodebb.admin-dashboard, nodebb.admin-menu (abe59131) + * fallback strings for new resources: nodebb.admin-manage-digest, nodebb.admin-settings-user, nodebb.user (2bed40be) + +##### Documentation Changes + +* update verbiage re: login API route (94c4f87b) + +##### New Features + +* new ACP option `emailPrompt` ... which allows administrators to disable the client-side prompt to encourage users to enter or confirm their email addresses (80ea12c1) +* show popular searches (f4cf482a) +* new plugin hook to allow plugins to reject email address on new registration or email change (6b4f35c2) +* utilities login API route now starts an actual login session, if requested (806a1e50) +* add method name to deprecation message (b91ae088) +* quote tooltip (66fca4e0) +* additional quality options for jpeg uploads, added quality and compression settings for png uploads (d22b076b) +* #8053, biweekly digest option (f7967bdf) +* core submit button dropdown (605a5381) +* added failing i18n tests (35af7634) +* confirm before deleting all events (#9875) (56d05b4e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v12.1.7 (#9944) (bf20965f) + * update dependency nodebb-theme-persona to v11.2.19 (#9943) (bcf85fcf) + * update dependency nodebb-rewards-essentials to v0.2.0 (7c2ecb12) + * update dependency nodebb-theme-vanilla to v12.1.6 (49b8b983) + * update dependency nodebb-theme-persona to v11.2.18 (ed0adf2c) + * update dependency nodebb-theme-persona to v11.2.17 (78661079) + * update dependency postcss to v8.3.11 (a5f4e206) + * update dependency nodebb-theme-vanilla to v12.1.5 (d74a6bd3) + * update dependency sharp to v0.29.2 (8b8fe393) + * update dependency postcss to v8.3.10 (b18a24e9) + * update dependency nodebb-theme-persona to v11.2.15 (f3c8d7da) + * update dependency nodebb-theme-persona to v11.2.14 (#9919) (5e08e67b) + * update dependency socket.io-client to v4.3.2 (deba3e27) + * update dependency socket.io to v4.3.1 (e1554f61) + * update socket.io packages (ce5a0a21) + * update dependency nodebb-plugin-spam-be-gone to v0.7.10 (600a8720) + * update dependency nodebb-plugin-composer-default to v7.0.10 (b0128f85) + * update dependency nodebb-plugin-markdown to v8.14.4 (f8f35d7e) + * update dependency nodebb-plugin-composer-default to v7.0.9 (ed874662) + * update dependency nodebb-theme-persona to v11.2.13 (1dba75e9) + * update dependency ioredis to v4.28.0 (4ff5452d) + * update dependency nodebb-theme-persona to v11.2.12 (fe9f82f6) + * update dependency ioredis to v4.27.11 (6d2e0aa9) + * update dependency nodebb-plugin-mentions to v2.14.1 (820f8cdf) + * update dependency jquery-ui to v1.13.0 (b0eb2aed) +* remove loading="lazy", fixes inf. scroll loaded images (01572785) +* windows tests (25ebbd65) +* undefined query showing in searches (6cfaea06) +* don't repeat search if on same page (89f5e06b) +* api session revoke test (0926ae6e) +* crash (da64810a) +* add missing translation (eb075c73) +* move record to controller (ee8e0480) +* profile edit fields showing translated values (63572c23) +* #9934, fix translator test (8d316d18) +* token verify (04dab1d5) +* guard against prototype pollution (1783f918) +* translator path traversal (c8b2fc46) +* there is no alltime digest, fixes translation in test email (e62948f7) +* clicking outside postContainer should close tooltip (47df62e7) +* minification regression (998b9e79) +* tooltip (fec7ebed) +* biweekly digest #8053 (9cb4de50) +* restore plugin upgrade checking logic (44687394) +* fallbacks for new langauge key (ed4ebd22) +* #9917, show topics as unread for guests (4333d217) +* clarify site settings urls vs config.json url (#9912) (6436aa65) +* clarify SMTP enable toggle (#9911) (09f198fc) +* don't overwrite reloadRequired with false (9e0ce027) +* delete translations in admin/general folder (since general was removed and relocated elsewhere) (b460e590) +* pushed missing key to tx and pulled fallbacks (21b61082) +* adding missing language namespace "top" (0f9b0b78) +* extra debug log (bd893cda) +* have renovate add `dependencies` label to its PRs (eddb9868) +* no global bootbox (#9879) (227456fb) +* #9872 update app badge with notification count if applicable (3e69bcdf) +* better nomenclature (c1149d04) +* html attributes (#9877) (3acaac4c) +* escape thumbs, allow robots meta tag (4f9717fb) +* missing translations (#9876) (7935bd9e) + +##### Performance Improvements + +* dont fs.open if plugin doesnt have language namespace (#9893) (1feb111a) + +##### Refactors + +* wider value field (c428ba80) +* dont save partial searches (c7e078d4) +* use search api for topic search (64192731) +* slowdown quick search (19ee7174) +* typo (a5287906) +* add callback to loadNotifications (f02fba29) +* simplified utilities API > login rout (506c34a8) +* log error as well (1d62bd6d) +* catch errors from buildHeader in error handler :fire: (73a9ca09) +* add missing helpers.tryRoute (d4da9840) +* shorter middleware (ee0282f5) +* meta/minifier use async/await (b2429ef0) +* remove unused var (90b81262) +* catch errors from digest (8e319a9b) +* less.render returns promise (14bc83a8) +* less.render already returns promise (6da32392) +* prompt.get already returns promise (c70eaa0a) +* no need for async/callbacks (057d1d58) +* no more :cow: (38756a0c) +* allow array of uids for blocks.is/list (a9bc6a09) +* show full url on error log (8e6bd7e9) +* var to const and let (#9885) (b0a24d6d) +* remove unused code (997fb2b3) +* remove unused colorpicker (543d8521) + +##### Reverts + +* lazy load (3d1cf168) + +##### Tests + +* fix broken openapi3 schema (7ef5214e) +* restore commented-out i18n test (fa1afbcf) +* moved topic event and topic thumb tests to subfolder for better organisation (154ffea0) +* remove escape (6c25b9db) +* possible fix to timeout (63109c07) +* increase timeout (8654a996) + +#### v1.18.4 (2021-10-06) + +##### Chores + +* up persona (f4e62fb1) +* incrementing version number - v1.18.3 (57358743) +* update changelog for v1.18.3 (f066ddb8) +* **deps:** + * update dependency lint-staged to v11.2.0 (840b49b9) + * update commitlint monorepo to v13.2.0 (aa370310) + * update dependency mocha to v9.1.2 (6385b88e) + +##### Documentation Changes + +* added link to unofficial IRC channel (c5a48b44) + +##### New Features + +* use unread icon in mobile (27e53b42) +* cli user management commands (#9848) (d1ff3d62) +* #9855, allow uid for post queue notifications (5aea6c6a) +* add userData to static:user.delete (f24b630e) +* closes #9845, sort by views (6399b428) +* duplicate `requireEmailAddress` settings block to Settings > User (a9645475) +* mongodb driver 4.x (#9832) (07adb49e) +* a useless hover effect because raisins (1a61ffc5) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.1.3 (b4fc2773) + * update dependency postcss to v8.3.9 (9455e5b2) + * update dependency autoprefixer to v10.3.7 (78895d05) + * update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1) + * update dependency ioredis to v4.27.10 (4694382c) + * update dependency nodebb-theme-persona to v11.2.9 (346e0890) + * update dependency autoprefixer to v10.3.6 (058fdca4) + * update dependency yargs to v17.2.1 (d50dd801) + * update dependency postcss to v8.3.8 (193c92e3) + * update dependency passport to ^0.5.0 (daea8a86) + * update dependency connect-pg-simple to v7 (#9785) (054f3da6) + * update dependency yargs to v17.2.0 (c78309b5) +* #9866, fire vote hooks after reputation changes (#9867) (8ad9a103) +* #9865, don't display register messages after login (96f5312d) +* dont show decimails on auto approva minutes (a0df3890) +* #9864 (e954ca10) +* delete old topic tags (a70c69fa) +* switch inf. scroll to xhr (#9854) (4404e819) +* #9828, max-width (40915105) +* handle undefined returnTo on registerAbort (ac1b9692) +* lint (ff850b24) +* psql tests (123354ca) +* psql test (f8d4ec6c) +* possible test fix for subfolder redirect (3605ac81) +* missing relative path in test (4eacfef0) +* #9834, missing null email check on new registrations, added tests (58e0a366) +* crossorigin not showing up on manifest link tag (0faa4937) +* #9827, fix reward duplication (89af00d1) + +##### Performance Improvements + +* convert promise.all to single query (#9851) (ea04aede) + +##### Refactors + +* use utils.debounce (a7668a7f) +* remove async.waterfall from remaining upgrade scripts (6b34065f) + +##### Tests + +* dashboard (4f8647a5) +* add tests for admin privileges (9fe9ab08) +* add missing tests (34798325) +* remove debug log (8cb47548) +* no need to create fake interstitial as NodeBB comes with some by default (cb69934a) + +#### v1.18.3 (2021-09-22) + +##### Chores + +* **deps:** update docker/build-push-action action to v2.7.0 (ee027719) +* incrementing version number - v1.18.2 (0a56158b) +* update changelog for v1.18.2 (27e9282a) + +##### New Features + +* move filter:topic.post hook to top of method (f194809f) +* add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) (66eaae44) +* allow removing multiple items from list (397835a0) +* add uid to filter:user.saveSettings (7f48edc0) +* headers for global privs #9717 (#9762) (84ff1152) +* add ACP option to require email address on new registration (006fc700) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v7.0.7 (98554294) + * update dependency postcss to v8.3.7 (6ebe707c) + * update dependency autoprefixer to v10.3.5 (25687441) + * update dependency nodebb-plugin-composer-default to v7.0.6 (#9815) (c18678ce) + * update dependency nodebb-theme-persona to v11.2.8 (#9816) (39d73d0c) + * update dependency connect-mongo to v4.6.0 (8e886c85) + * update dependency nodebb-plugin-composer-default to v7.0.4 (8af54255) + * update dependency mongodb to v3.7.1 (9049dcd7) + * update dependency nodebb-theme-persona to v11.2.6 (506035b5) + * update dependency nodebb-theme-slick to v1.4.13 (787306a6) + * update dependency nodebb-plugin-composer-default to v7.0.3 (732b59c2) +* fixed element shifting in ACP menu that's been bothering me for 5-ish years (31975a62) +* #9822, use correct username/pwd (30f38771) +* remove unused translator (2add84a5) +* ban info test (07859f7e) +* #9819, show same time info for ban (9f0e55ad) +* show local time for ban (7a2f0ae1) +* crash (c437b336) +* remove caller from payload after hooks is done (15f9aaa6) +* bad uid reference (ce8ea6ea) +* update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic) (7777812e) +* #9818, fix totalTime calculation (c4fc7bf9) +* missing microdata in category data (1ed62aa8) +* #9812, add topics:schedule (c0a52924) +* for subfolders (31a6d4b3) +* req.path doesn't have full url (0236ea86) +* escape moderation note before adding to dom (75ebe786) +* #9811, send bodyClass on 403 (40c9fca9) +* also launch docker workflow on release branches (944a7985) +* xss on flags page via ban reason (ba3582b8) +* up timeout for psql tests (896ff215) +* redis batch (0c4b875e) +* redis processing batch+1 items every iteration (3261edcc) +* #9560, don't save post diffs if content didn't change (8b576a37) +* #9790, get baseIndex on update for infinitescroll (6a55c027) +* #9790, fix sorting of more than one page of pinned topics (2657804c) +* privileges added by plugins (#9802) (3ecbb624) +* #9800, don't send all welcome test emails to test@example.org @julianlam (71ed50b9) +* docker - remove sha tag (b06e8dba) +* Return QEMU back, remove platforms definition (52eace4b) +* Docker workflow tweaks (#9792) (e7f4cde4) +* browsers autocompleting smtp fields when they should not (34afb747) + +##### Refactors + +* no regex (18252fb9) +* remove async.waterfall (58ac55c1) +* remove async.waterfall (222dccaf) +* remove async.waterfall (f35a0f43) +* allow plugins to replace og:image, or specify additional og:image (819917da) + +##### Code Style Changes + +* give me an A! :100: (0b4d7d1f) + +#### v1.18.2 (2021-09-08) + +##### Chores + +* **deps:** update commitlint monorepo to v13 (87ba768f) +* incrementing version number - v1.18.1 (f8f80e4f) +* update changelog for v1.18.1 (0713475d) + +##### New Features + +* a slightly less ugly rewards panel (bf0c02a7) + +##### Bug Fixes + +* dashboard graph controls (a7855c4c) +* #9767 ACP change group icon fix (580a016b) +* #9781 (#9782) (0ce4b87d) +* replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit (856ba78a) +* handle missing uid in deprecated socket call (cdaea611) +* use privileges.users.canEdit for image upload priv check (e33e046f) +* errors from registerComplete (a48bbdbf) +* simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug) (60de0844) +* lint (1e2bda13) +* manifest error (488f0978) +* #9772, regression from https://github.com/NodeBB/NodeBB/commit/70a04bc10577e90e28d66a647d38cafc3307a285 (72710b80) +* push back some deprecations, remove deprecated stuff scheduled for v1.18.0 (dd4e66e2) +* deprecate userData.showHidden as it is functionally equivalent to userData.canEdit (4ac701d7) +* focus on save button on plugin activation (46e5e17d) +* #9773, fire hooks properly for priv changes (#9774) (6869920e) +* **deps:** + * update dependency sharp to v0.29.1 (ac6cd02f) + * update dependency nodebb-plugin-dbsearch to v5.0.3 (338f90fc) + * update dependency nodebb-theme-vanilla to v12.1.3 (0b3ea5ad) + * update dependency nodebb-theme-persona to v11.2.5 (57e54d55) + +##### Refactors + +* deprecate picture update socket call, new API routes for picture update (0a41741b) + +##### Tests + +* added test for external image via new change picture API (8cbad61e) + +#### v1.18.1 (2021-09-03) + +##### Chores + +* found some hooks that don't play well docgen (ae793b4a) +* incrementing version number - v1.18.0 (1e436ae7) +* update changelog for v1.18.0 (2fd9c095) +* **deps:** update dependency mocha to v9.1.1 (64bac178) + +##### New Features + +* create folders in ACP uploads #9638 (#9750) (3df79683) +* column based view on wide priv. tables (#9699) (61f02f17) +* als (#9749) (e59d3575) +* add quick reply key (e9314842) +* add new lang key for no best posts (6e73d8c9) + +##### Bug Fixes + +* **deps:** + * update dependency autoprefixer to v10.3.4 (67b932f4) + * update dependency nodebb-theme-persona to v11.2.4 (fe18e100) + * update dependency mongodb to v3.7.0 (31a35d7f) + * update socket.io packages to v4.2.0 (f2028d70) + * update dependency ioredis to v4.27.9 (6052eb16) + * update dependency mongodb to v3.6.12 (#9761) (5fa982c1) + * update dependency nodebb-plugin-composer-default to v7.0.2 (33d51201) + * update dependency nodebb-theme-slick to v1.4.12 (1b416d7e) + * update dependency nodebb-theme-slick to v1.4.11 (65b32fa1) + * update dependency nodebb-theme-persona to v11.2.3 (6ce321e4) + * update dependency autoprefixer to v10.3.3 (91ba7cdf) + * update dependency nodebb-theme-slick to v1.4.9 (d80b378f) + * update dependency jquery-deserialize to v2.0.0 (#9744) (7f9451ce) +* determine indeterminate checkboxes (760ea9df) +* move app.alert back into the conditionals (ca9bae3a) +* only show email confirmation warning toast on pages that it applies (1bd1cc74) +* updated email confirm warning to be more positive (2d1380dd) +* automated tests are a good thing to have (6afeac37) + +##### Refactors + +* consistent jquery element var naming (fc0e655e) +* var to const (1272da65) + +#### v1.18.0 (2021-08-25) + +##### Breaking Changes + +* **emails:** restore ability for admins to edit a user's email address [breaking] (c4e3362b) +* #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] (d1959a25) +* made TopicList.onTopicsLoaded private [breaking] (07f25d8c) +* return proper API-style response if exception caught by error handler on v3 routes [breaking] (a54a3ee1) + +##### Chores + +* **deps:** + * update dependency husky to v7.0.2 (324c7d48) + * update dependency eslint-plugin-import to v2.24.2 (9a34fe18) + * update dependency eslint-config-nodebb to v0.0.2 (cd85a55d) + * update dependency mocha to v9.1.0 (c5a42273) + * update dependency eslint-plugin-import to v2.24.1 (daca09d4) + * update dependency @apidevtools/swagger-parser to v10.0.3 (ffdf61b8) + * update dependency jsdom to v17 (#9700) (41855375) + * update dependency eslint-plugin-import to v2.24.0 (23dafa20) + * update dependency lint-staged to v11.1.2 (d47bdde2) + * update dependency jsdom to v16.7.0 (9db28b4b) + * update dependency eslint to v7.32.0 (03a98f4d) + * update dependency mocha to v9.0.3 (40384fcb) + * update dependency lint-staged to v11.1.1 (7588aae1) + * update dependency lint-staged to v11.1.0 (cb5fe271) + * update dependency mocha to v9 (f43291f5) + * update dependency husky to v7 (702290c4) + * update dependency eslint to v7.31.0 (f5a53b7f) + * update dependency lint-staged to v11.0.1 (02101315) +* up markdown/composer-default, fixes: #9708 (b74eefac) +* incrementing version number - v1.17.2 (46be2046) +* update changelog for v1.17.2 (5c9c0605) + +##### Documentation Changes + +* some hook deprecation notices (6bc090f8) + +##### New Features + +* add confirmation modal to topic event deletion (e803737a) +* allow changing default search in (794bf01b) +* #9705, use radio buttons for flag reasons (382a4c27) +* Client-side hooks - replace window.trigger (#9679) (342503e0) +* closes #9684, allow event deletion (358ad740) +* replace eslint configs on server and client side to inherit rules from eslint-config-nodebb (f653a6ff) +* re-add FontAwesome font for compatibility (a370c26f) +* update to FontAwesome 5.15, resolve #6976 (41762e66) +* removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors (70a04bc1) +* updated email confirmation alert to more closely reflect email usage, remembering dismissal (bbbacd86) +* allow requirejs modules to be awaited (58adb762) +* show instructional modal after email change request (0e05cbe1) +* return back to profile after editing email (324a12b6) +* allow registration interstitial abort to also follow returnTo (b3c91641) +* plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session (96398faa) +* allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) (b0a4a1d3) +* return generic 404 on invalid confirm code (f53fc1ad) +* invites no longer require email (a917210c) +* show different registration intersitial lead text on new account vs. existing (74aaa0a9) +* removal of emailExists socket listener (12b2a979) +* add loggedin/guest class to body (04b1f702) +* convert _fireStaticHook to async function (auto-refactor by vscode) (21359eab) +* store topic tags in topic hash (#9656) (4a56388e) +* new hook `action:topics.loading` (in the same format as `action:posts.loading`) (e0db904b) +* schedule deprecation for `action:category.loaded` and `action:category.loading`. Use `action:topics.loaded/ing` instead (8ae4c300) +* internationalize API error messages (7036c375) +* #9651, change category desc to multiline (5fd190f7) +* **emails:** + * pass req in to filter:registration.interstitial (afd2d8da) + * display current email in interstitial form (f5291999) + * upgrade script for includeUnverifiedEmails (50517020) + * +includeUnverifiedEmails ACP setting (be97aa6f) + +##### Bug Fixes + +* lint (55693ec1) +* topic event deletion (1ee92c28) +* pluginPaths (0743554d) +* #9730, show warning if plugin is active but not installed (13878e9f) +* #9729, insert new posts after topic events (60bf5643) +* #9719, only apply to non https (c354cde3) +* #9727, addHandlers after hooks (77c3085a) +* allow smaller than 5mins for admin relogin duration (a288f51f) +* taskbar icon not pushed via composer/persona (3a81c8fd) +* #9698, pass along query params in redirect (9de64bf5) +* lint (8bf2896d) +* remove unnecessary quote (093ac1c0) +* parseInt tids (162ebacf) +* #9681, update posts in queue if target tid is merged (0c816429) +* email update interstitial to not error on empty email field (on new registration) (4a521ea2) +* updated ACP > Manage > Users to handle users with no email address (824a72b2) +* allowed reset and reset_notify emails to go out to unconfirmed email addresses (d5b5b7d5) +* bug where confirmation email was sent to the old email address, not the new one (414d733d) +* email validation flow, so that it actually works, fixed event logging bug, new email verification template (3bcd1f14) +* accidental early return in confirmByCode, tests, race condition (caf89687) +* test :shipit: (2c06ac9a) +* failing test from d1959a2 (f71f2951) +* #9668, add raw info to psql database page (6c47a060) +* use hooks module instead of window trigger (acb11cc7) +* tests (0960a814) +* translate language keys if passed in to formatApiResponse (415416d2) +* lint (ff78969c) +* tests (55d7e558) +* keep query string on redirects (47c8c692) +* **deps:** + * bump persona (12e7f8d5) + * update dependency nodebb-theme-persona to v11.2.1 (#9734) (2e1562b8) + * update dependency nodebb-theme-vanilla to v12.1.2 (#9735) (4bd66a7c) + * update dependency nodebb-theme-slick to v1.4.8 (#9732) (096c5a58) + * update dependency autoprefixer to v10.3.2 (d44e3a8e) + * update dependency nodebb-theme-persona to v11.2.0 (116f9cb5) + * update dependency ioredis to v4.27.8 (8461791a) + * update dependency nodebb-theme-persona to v11.1.3 (ec103ce8) + * update dependency sharp to v0.29.0 (626d5565) + * update dependency connect-mongo to v4.5.0 (ce6039f2) + * update dependency nodebb-theme-vanilla to v12.1.1 (de83f82e) + * update dependency nodebb-theme-persona to v11.1.2 (ee10ae04) + * update dependency yargs to v17.1.1 (38e38580) + * update dependency nodebb-theme-persona to v11.1.1 (47941418) + * update dependency mongodb to v3.6.11 (a0fd0268) + * update dependency yargs to v17.1.0 (181c20ba) + * update dependency ioredis to v4.27.7 (4c9d6b62) + * update theme versions for #9607 (3b34571d) + * update dependency postcss to v8.3.6 (ebdba8f1) + * update dependency html-to-text to v8 (3f24746c) + * update dependency yargs to v17 (1b6b1fe5) + * bump composer-default to v7 (51458c75) + * update dependency autoprefixer to v10.3.1 (0d3f74b7) + * update dependency nodebb-plugin-markdown to v8.14.2 (b6a84712) + * update dependency autoprefixer to v10.3.0 (72c9650f) + * update socket.io packages to v4.1.3 (f14df0d4) + * update dependency nodebb-plugin-composer-default to v6.5.34 (31dae04f) + * update dependency nodebb-theme-persona to v11.0.26 (ae14016e) + * update dependency nodebb-plugin-markdown to v8.14.1 (8b41684e) +* **emails:** + * broken test for api/user/email/:email (81611ae1) + * dont allow retrieving user data if showemail is false @julianlam (7d115c8e) + * registration tests, email no longer passed-in, API tests (confirm email for test accounts) (6694bdd5) + * don't automatically associate email during user creation if passed in at registration (e726048e) + * remove debug log (b4b65ecd) + * broken test due to sticky registration interstitial (ab9b6716) + +##### Refactors + +* remove promisify from redis, ioredis supports promises nati… (#9728) (6659e95a) +* get rid of async.waterfall/each (8fb53252) +* remove unused async (42dbd402) +* remove waterfall (6b6a7d4b) +* move interstitials into its own file in `src/user/` (e95df2f0) +* added user.email.remove method, updated email interstitial to handle email removal (ccf004f1) +* client-side to use flag notes API (ef4e74bf) +* fix wording (6ed7e937) +* **email:** validation checking methods, +tests fix (087e6020) +* **emails:** + * more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation (69c96dd2) + * interstitial for adding/updating email (f365bc46) + * remove email validation on client and server side (7c1d1c77) + +##### Code Style Changes + +* eslint (d2492ef4) +* lint fix (340ccb24) +* lint (52229172) + +##### Tests + +* **emails:** fixing broken tests introduced by e5ff68acd (a3a3b10f) + +#### v1.17.2 (2021-07-07) + +##### Chores + +* **deps:** + * update coverallsapp/github-action action to v1.1.3 (99c23037) + * update dependency eslint to v7.30.0 (725e70e9) + * update dependency coveralls to v3.1.1 (edefac96) + * update dependency eslint to v7.29.0 (2700f717) + * update dependency eslint to v7.28.0 (fac0bcbd) + * update dependency smtp-server to v3.9.0 (86723292) + * update dependency eslint-plugin-import to v2.23.4 (886d65f6) + * update dependency eslint-plugin-import to v2.23.3 (c3b0e2fa) +* lint (2b42e7ed) +* fix indentation (d07229aa) +* up rewards (ca9ca876) +* incrementing version number - v1.17.1 (0aad1312) +* update changelog for v1.17.1 (1e6ed0ad) + +##### Documentation Changes + +* add undoTimeout (2db77b0c) + +##### New Features + +* add merge/fork hooks (c9348efb) +* #9628, allow setting custom icon names (2fe30b6f) +* #9617 update fa link (52596902) +* add bodyClass to 500 page (46a454f1) +* clear reset tokens on successful login (f9728aff) +* add filter:categories.categorySearch (be19f27f) +* allow nested properties on category page (#9601) (cc0cf99f) +* show ip on acp manage users (8ea58432) +* add undoTimeout to moving posts as well #9599 (e588948f) +* make undoTimeout configurable, closes #9599 (05cc7ccb) +* introduce boolean res.locals flag to bypass session reroll (used by session-sharing) (816856b0) +* allow modifying default category privileges (57e46e41) +* add filter:notifications.create (ac7b093f) +* pass req.query to getUnreadData (3d5fef6e) +* added GET user route for api v3 (d2960aeb) + +##### Bug Fixes + +* **docs:** #9648 (e03782f2) +* **deps:** + * update dependency mongodb to v3.6.10 (f17625fb) + * update dependency nodebb-theme-persona to v11.0.25 (c11927c5) + * update dependency sortablejs to v1.14.0 (5ff9319f) + * update dependency nodebb-theme-persona to v11.0.24 (c7feea56) + * update dependency nodebb-plugin-composer-default to v6.5.33 (3611b04e) + * update dependency nodebb-plugin-markdown to v8.14.0 (e40f648f) + * update dependency nodebb-plugin-markdown to v8.13.1 (cf6fcc21) + * update dependency nodebb-plugin-composer-default to v6.5.32 (#9626) (90e3f5ac) + * update dependency nodebb-plugin-composer-default to v6.5.30 (#9624) (2060dc61) + * update dependency postcss to v8.3.5 (09aebbda) + * update dependency postcss to v8.3.4 (520050da) + * update dependency postcss to v8.3.3 (c7006ec6) + * update dependency ioredis to v4.27.6 (82b33dc4) + * bump persona (f4eb336a) + * update dependency postcss to v8.3.2 (88f21e91) + * update dependency postcss to v8.3.1 (71b4d634) + * update dependency ioredis to v4.27.5 (9f74caf6) + * update dependency connect-redis to v6 (#9590) (6632b2b6) + * update dependency ioredis to v4.27.4 (4ffd234f) + * update dependency nodebb-theme-persona to v11.0.21 (062928d2) + * update dependency mongodb to v3.6.9 (d8c64479) + * update dependency autoprefixer to v10.2.6 (3aeac357) +* #9634, re-jig top bar of Admin > Manage > Users (b8964843) +* hide private user data in api/v3/users/[uid] (97c8569a) +* numThumb upgrade script (d9e2190a) +* acp dashboard sometimes not loading on cold load (fee782c4) +* #9636, sanitize all attributes in meta and link tags (84904976) +* convert some hooks to use hooks module (09bac6bd) +* #9627 (acdbd049) +* #9629, translate content property of meta tags (561ce7d3) +* prevent crash in expandObjBy #9618 (ab6f062f) +* dont show system tags in whitelist dropdown to regular users (0d975bc4) +* #9622 (#9623) (84e06575) +* #9620, fix notif delay (73f40e96) +* #9619, add group chat filter to /notifications (c92fc19b) +* scope (3cd9434b) +* #9615, catch exceptions in renderOverride (1eda538d) +* purge uploaded images accordingly #9606 (#9611) (8168c6c4) +* keep query params when switching chat (7b4c0a16) +* accidental unnecessarily strict conditional that effectively rendered SSO state checking opt-in instead of opt-out (a2400f6b) +* introduce artificial delay + delay fudging on invalid email during reset token generation (f6c14d6b) +* #9605, expire all active reset tokens for a uid if that uid generates a new one (229f96f8) +* lint (8c952aa3) +* schema (39e13591) +* pagination on acp users search (6695927e) +* #9596, incorrect placeholder string in some translations (93d94564) +* extra ')' (6f732611) +* disallow editing of other users' notes (edcba61a) +* #9592, check session (286644d0) +* don't crash if session doesn't exist (3717df61) +* lint (66cae54e) +* improper use of filename extensions (16e0bca5) +* return null (d8d6c989) +* updates navigation menu user icon (f9b248b8) +* returnOriginal deprecation (3fb74445) +* error when trying to trim an object (48b8e3bb) +* **post-queue:** moderatedCids is an array of numbers (#9631) (db65360c) + +##### Performance Improvements + +* cache Topics.getTopicsTags (8e0561f2) +* bypass getMultipleUserSettings (10ddfff3) + +##### Tests + +* fixed broken tests from #9605, removed token clean on token usage as it is superceded by token clean on generation (+ associated test) (5c42b3ea) + +#### v1.17.1 (2021-05-26) + +##### Chores + +* **deps:** + * update dependency grunt to v1.4.1 (0e37bbfd) + * update dependency jsdom to v16.6.0 (60170ad6) + * update dependency eslint to v7.27.0 (298af98d) + * update dependency eslint-plugin-import to v2.23.0 (1623ba4f) + * update commitlint monorepo to v12.1.4 (4a01313d) + * update commitlint monorepo to v12.1.3 (b82774c5) + * update dependency eslint to v7.26.0 (d1418210) + * update dependency lint-staged to v11 (1bf57d40) + * update dependency mocha to v8.4.0 (461e187b) + * update dependency eslint to v7.25.0 (32c20806) + * update dependency grunt to v1.4.0 (a30deef3) +* incrementing version number - v1.17.0 (75f7972b) +* update changelog for v1.17.0 (4c441a1b) + +##### Documentation Changes + +* update API docs to better outline authentication options (6ef0c8e9) +* update API authentication verbiage (d08d0c42) + +##### New Features + +* keep query string when redirecting category (77dde41f) +* add req.query to flags.list/getCount (3d6bdeb3) +* add filter:flags.getFlagIdsWithFilters (d35c64b1) +* #9559, set order help text (f5847f4f) +* add filter:user.getWatchedCategories (4afca690) +* pass req.query to getUserDataByUserSlug (518157d9) +* #9508, add cluster support (94c12e37) +* #9551 (a3d6c56e) +* add template to hook (1f3e6601) +* add filter:account.getPostsFromUserSet (a2442ee9) +* automatically attempt reconnection on window focus (8cc61f11) +* #9533, allow redirect in build hooks (f6b583bb) +* add _hooks metadata object to all hooks that have object-type params (46899cca) +* add filter:categories.copySettingsFrom (d8e4fd4c) +* guard against multiple resolves (084c9851) +* #9511 send notifications on accept/reject (b40fc4b6) +* `hidden` class to FOUC (2bfa63ae) +* add filter:middleware.autoLocale (a478dc7e) +* remove sync hooks support (01956af4) + +##### Bug Fixes + +* #9580, proper 404 when ajaxifying (9ebfdeb7) +* lint (09f51792) +* #9567 fix tests (951e71a0) +* #9567, use regular 404 (5215c30a) +* ioredis upgrade fix, maybe (1ce59508) +* bug where interstitial errors were not properly passed to the front-end via req.flash (1d9cfe1e) +* #9553, use same fields for user search results in acp (0551642a) +* lint (e8c5c18a) +* lint (ffa80163) +* tests (fad5988e) +* tests (074ee859) +* wrong error message checked (a9bb1088) +* #9507 session reroll causes socket.io to become confused (#9534) (ec6d1e23) +* isObjectField(s) empty field (2c22b06f) +* do not register SW for Safari until upstream fixes #9193 (ce5fea2a) +* infinite scroll with small number of items #9524 (#9525) (cb1dd0a3) +* #9519 unable to properly ajaxify to home on subfolder installs if anchor did not have a trailing slash (db48b952) +* #9512, fix chat icon if no privileges (6ed8890c) +* #9503, dont error in markUnread if room doesnt exist (308252f5) +* use socket.request.headers (9e07efc1) +* buildReqObject headers for socket.io calls (ed534f34) +* **deps:** + * update dependency sharp to v0.28.3 (963a9fe6) + * update dependency ioredis to v4.27.3 (075dab27) + * update dependency nodebb-theme-vanilla to v12.0.8 (#9574) (10290f54) + * update dependency mongodb to v3.6.8 (#9573) (64935787) + * update dependency postcss to v8.3.0 (ad4afd59) + * update dependency nodebb-theme-persona to v11.0.20 (403bcfac) + * update dependency nodebb-plugin-composer-default to v6.5.29 (8d7e4420) + * update dependency mongodb to v3.6.7 (f29e4e87) + * update dependency textcomplete to ^0.18.0 (9b7653cc) + * update socket.io packages to v4.1.2 (#9563) (ca7c77bc) + * update dependency nodebb-plugin-dbsearch to v5.0.2 (#9562) (2d0564cb) + * update dependency nodebb-theme-slick to v1.4.7 (bf4aa50c) + * update dependency nodebb-plugin-composer-default to v6.5.28 (4164b322) + * update socket.io packages to v4.1.1 (155a7fb6) + * update socket.io packages to v4.1.0 (53335677) + * update dependency sharp to v0.28.2 (4bc07a08) + * update dependency postcss to v8.2.15 (7770c2a1) + * update dependency nodebb-theme-persona to v11.0.19 (3145c7d5) + * update dependency nodebb-plugin-mentions to v2.13.11 (7e2ea4df) + * update dependency nodebb-plugin-markdown to v8.12.10 (2ac5a085) + * update dependency nodebb-plugin-markdown to v8.12.9 (ee3634cc) + * update socket.io packages to v4.0.2 (ff98f854) + * update dependency postcss to v8.2.14 (22ec1ea5) + * update dependency sitemap to v7 (0389dd96) + * update dependency nodebb-widget-essentials to v5.0.4 (19f1cbfc) + * update dependency nodebb-theme-persona to v11.0.18 (33d91fde) + * update dependency connect-redis to v5.2.0 (c0d54a06) + * update dependency postcss to v8.2.13 (831e5c26) + * update dependency postcss to v8.2.12 (38454df9) +* **#9508:** switch to ioredis (#9545) (dd81dd03) + +##### Refactors + +* cli/upgrade async/await (#9558) (ac86937c) +* bubble other errors (0096cf17) + +##### Reverts + +* sync hooks (5fe97b9c) + +##### Tests + +* fix tests (1029a06a) +* fix redis tests (4e490f60) +* add test for undefined fields in getObjectsFields (92de49be) + +#### v1.17.0 (2021-04-22) + +##### Breaking Changes + +* add additional flag hooks [breaking] (00a68a95) +* remove deprecated `User.emailConfirm` [breaking] (fb84c785) +* remove deprecated plugin hook `filter:privileges:isUserAllowedTo` [breaking] (5a775e09) +* remove deprecated plugin hook methods [breaking] (d41de481) +* more removals of thumb specific backwards-compatibility [breaking] (cc0d562e) +* remove deprecated `filter:admin/header.build` hook [breaking] (5f9f241e) +* remove deprecated v2 style responses for thumbs upload route [breaking] (84dfdfe6) +* remove deprecated getObject routes [breaking] (2ad0d0d0) +* remove 'filters' and 'categories' from flag details API return [breaking] (8b72479f) +* filtering logic of flags [breaking] (1603566b) +* feature flag for auto-resolving a user's flags on ban [breaking] (6b1c97db) +* allow interstitial callbacks to be async functions [breaking] (280285cd) + +##### Chores + +* **deps:** + * update dependency jsdom to v16.5.3 (0f249aa7) + * update dependency eslint to v7.24.0 (60c0c16f) + * update dependency husky to v6 (f155f326) + * update commitlint monorepo to v12.1.1 (b4d01388) + * update dependency jsdom to v16.5.2 (5e2e7a58) + * update dependency eslint to v7.23.0 (d600cd94) + * update dependency husky to v5.2.0 (77f551a4) + * update dependency jsdom to v16.5.1 (28ed579b) + * update dependency eslint to v7.22.0 (775c3b91) + * update dependency mocha to v8.3.2 (3ce731d8) + * update dependency jsdom to v16.5.0 (fd926d61) + * update dependency mocha to v8.3.1 (651c629f) + * update dependency husky to v5.1.3 (8791b44e) + * update dependency husky to v5.1.2 (5f061b94) + * update commitlint monorepo to v12 (42f7cd52) + * update dependency eslint to v7.21.0 (59518437) + * update dependency husky to v5.1.1 (2551295c) + * update dependency husky to v5.1.0 (dc06fe22) + * update dependency eslint to v7.20.0 (9ec0b2ed) + * update dependency mocha to v8.3.0 (73f07958) + * update dependency husky to v5 (d89ccf26) + * update dependency lint-staged to v10.5.4 (030ecffa) + * update dependency eslint to v7.19.0 (3696a199) +* incrementing version number - v1.17.0-beta.5 (42c4f963) +* fix indent (6406e527) +* benchpress 2.4.1 (3403635c) +* remove log (a1ee1a2a) +* incrementing version number - v1.17.0-beta.4 (91992240) +* bump composer-default (289bfc0b) +* up themes (d14ba1f4) +* remove node 10 (8d3ec234) +* bump composer-default to 6.5.20 (33fbfdfe) +* incrementing version number - v1.17.0-beta.3 (6e8b1bb9) +* add multiparty dep (ef3ec96a) +* incrementing version number - v1.17.0-beta.2 (0c1945dc) +* incrementing version number - v1.17.0-beta.1 (31872aac) +* bump composer (30954789) +* bump deps (#9335) (b9fd2c87) +* incrementing version number - v1.17.0-beta.0 (b61257ef) +* incrementing version number - v1.16.3-beta.0 (477157cc) +* extra console.log (1ae8dda8) +* up composer (1c9acef6) +* eslint max-len (cc9d6fd0) +* eslint no-restricted-syntax (5c2f0f05) +* eslint prefer-rest-params, prefer-spread (115d19e2) +* eslint prefer-destructuring (23f212a4) +* eslint object-curly-newline (8d1462ff) +* eslint function-paren-newline (62869bae) +* eslint no-var, vars-on-top (dab3b235) +* eslint prefer-arrow-callback (b56d9e12) +* eslint prefer-template (707b55b6) +* eslint import/newline-after-import (4ee0f145) +* eslint no-script-url (9f6a682c) +* eslint no-bitwise (dad01e30) +* eslint rules matching existing styles (58528d1a) +* fallbacks (74be1a59) +* deprecation notices for plugins using plugin old hook methods (3052256d) +* add deprecation notice in comments for ajaxify.loadExtraScripts (8b09292e) +* incrementing version number - v1.16.2 (ea7f8381) +* update changelog for v1.16.2 (d3883d4b) + +##### Documentation Changes + +* fixed typo (e7550673) +* added comment re: #9305 (65c57c73) +* update deprecation-removal version for plugin hook helper methods in 1.18.0 (15ba0abb) + +##### New Features + +* lang strings (9b71b087) +* rate limit file uploads (a9978fcf) +* filter flags by username #8489 (#9451) (8faa6e45) +* roll session identifier on login, as security best practice (697ed3bf) +* allow different slugs (4494728c) +* remove sort again (fd3bc605) +* update hook (f65d2162) +* add reverse of recent to getSortedTopics (05f22361) +* allow exists methods to work with arrays and single id (285aa365) +* pass all data to filter:category.get (d16b45fd) +* add action:posts.loaded (dbb59228) +* rescheduling (editing ST) (#9445) (aa0137b1) +* upgrade sharp (#9442) (f7f46e7c) +* optional urlMethod param for loginStrategies (9e1f72a4) +* add hooks to language loading (#9426) (344575dd) +* doggy.gif (b06f0ea2) +* allow adding sorted-list items from forms outside of modal (a3e95e79) +* scheduled topics (#9399) (077330b7) +* show link if category is a link (a94d9651) +* make info page full width (dd12c83f) +* allow optional fields argument on db.getObject(s) (#9385) (4327a09d) +* closes #9380, add category filtering and topic tools to tag page (668508cc) +* allow sync function (#9379) (34b9aaed) +* allow filter functions that return promises or the data directly (e6c52cf2) +* add resolve flag to post tools (52082e12) +* hide revert button in ACP > Privileges until privileges change (4cbd13fd) +* bring back static hook timeout (46270f9f) +* upgrade connect-mongo, closes https://github.com/NodeBB/NodeBB/pull/9367 (3c60ccfd) +* pass interstital errors to individual partials as well as to registerComplete (f71cb0e4) +* add filter:plugins.firehook (5eb3132d) +* copy default favicon if it doesn't exist (754283d3) +* add missing translation keys (17184bfa) +* allow missing (or non-array) middlewares argument in route helper methods (4b545085) +* pass modified params, only affects filter hooks (e74df539) +* add back topic id input (696c4895) +* expose username validation logic to user lib, new hook `filter:username.check` (bfd512b9) +* add $.deserialize to client side (e5133a78) +* allow for settings.save/settings.load on client side (66196d2c) +* remove promise-pollyfil (902a88c2) +* category privilege API routes (c1b3079d) +* change uploadCroppedPicture to use updateProfile as well (0af9d26f) +* use updateProfile for picture change (a598abcd) +* allow payload to be passed to emailer test method (1155b0c4) +* add uid of user who created flag to action:flags.create (069ac60f) +* new client-side hook `filter:api.options` to allow plugins to modify api requests (7d391d47) +* keep notifs for one month, load 50 notifications instead of 30 (02f08111) +* also pass in uid to `filter:email.prepare` (86b0c57d) +* new hook `filter:email.prepare` (27ea3dcb) +* new hook static:email.send (bf90d158) +* show time info for upgrade scripts (14a6c349) +* add dashboard sub-pages to ACP menu (73dc64d9) +* recent logins sessions table in dashbaord subpage (2f89b0d7) +* topics dashboard details subpage (e1ed514b) +* update user list in dashboard/users on graph update (c57c7703) +* show list of recent users in dashboard/users (cc938224) +* req.query parsing and dynamically loading data instead (6fdcae73) +* new hooks for notifications get/getCount (079a13d4) +* allow hook unregistration, and temporary page-based hooks (d0136074) +* report login statistics from analytics data, instead of its own zset (16d3c457) +* track login sessions for admin dashboard reporting (9a9f366d) +* track successful logins in analytics (504fd107) +* pass user picture object into change_picture_modal (c96fd3b1) +* add logout to invalid session (beb14273) +* category search test (a592ebd1) +* pass post object to filter:post.tools (ed3d9dcb) +* allow defining a list of system tags (0e07f3c9) +* add category search test, #9307 (bbaaead0) +* add tag filter to getSortedTopics (9ce6f8ad) +* ability to re-order topic thumbnails (7223074f) +* add close button to topic thumbnail modal (db027170) +* #9304, add category/topic/username to post queue notification emails (0738dae8) +* add failing test for list append/prepend with list (#9303) (8f0386d9) +* link to post-queue from topic event (a4b4a556) +* post-queue topic event (8fd78ce5) +* add post-queue cache (3f35fd33) +* newsletter opt-in/out in UCP, closes #21 (3c7cd9a6) +* load user posts/topics via xhr on infinitescroll (35954734) +* #9294, put new categories at top (4b2bf12f) +* add invalid event name to error message (670cde78) +* new notifications load/loaded hooks on client side (7edc8f45) +* pass req.session into buildReqObject (a6fa351b) +* new hook `action:login.continue` (4f976390) +* banned-users group (53e0d4d2) +* #9109, ability to delete a post's diffs (eb642f40) +* add .delete() method to api module (501441b7) +* doc add description (cc560ca3) +* add doc for query param (ed11e171) +* #9234, add pagination to /api/recent/posts/:term? (fffdc4e0) +* allow sorted-lists on multiple pages (d5d24594) +* #9232, add profile picture into exported zip (f6cd2862) +* new hook `filter:login.override`, deprecate `action:auth.overrideLogin` (b820d234) +* guard password fields in login/register against accidental caps lock (4bb3b032) +* ability to search categories, #8813 (34c42c6f) +* restore action:script.load, allow modifying loaded module via static:script.init (05be1c66) +* async/await redis connection (fdfbc902) +* async/await psql connection (33bf1b0e) +* add group name to csv event (672959c1) +* **user:** icon background selector in change picture modal (95502124) +* **remountable-routes:** + * allow category and account routes to be remounted (9021f071) + * allow /admin and /post to be remountable (f01af62b) +* **topic-events:** + * topic events GET route in write API (dc84559d) + * server-side tests for topic events (449c379d) + * clear out topic events when a topic is purged (0d4a3775) + * client-side handling on topic event log (8e93bf73) + * handle newest_to_oldest sort in topic events, WIP (882e6a15) + * generic css for timeline-event (2293a07a) + * support for uids in topic event payloads (611d1f87) + * work in progress topic events logic and client-side implementation (ab2e1ecb) +* **hooks:** + * update action:ajaxify.end to use new hooks module (1d775721) + * client-side hooks module (01c9b184) + +##### Bug Fixes + +* regress. rescheduling shouldn't add to sets that pinning removed… (#9477) (8b79c7f1) +* logic is hard (4dd38446) +* run in series (bc0ca61c) +* wrong variable for cache (2e9efc0e) +* accidentally committed this (13fa983e) +* tests (eb240c90) +* eslint (fa0c92a7) +* use req.ip instead, since guests can upload as well (ea22cd30) +* #9492, keep query params on redirect (36f119a9) +* stripTags for editing sorted list items as well (93598982) +* #9487, session data gathered during a session is lost upon login (1fee6a70) +* failure on session reroll 🍣 test (f4c5050a) +* registration interstitials not handling promise rejections properly (e845c34b) +* stripHTMLTags for sorted list entries (75073c0e) +* restore original behavior for up/downvoting when logged out (e50408b4) +* let recent replies respect oldest/newest sort settings (60eed8d8) +* #9483, fix events count display (6907837f) +* escape flag reason (161081e9) +* copy change on plugin activate to instruct admins to rebuild as well as restart (95d5359c) +* updateCategoryTagsCount (2dc3283f) +* #9473 (#9476) (036f935f) +* #9474, load hooks on page load (1af34b43) +* spec (d09cdc04) +* #9466, don't call leaveRoom in maintenance mode (f32ea173) +* exempt ST from being del/res via last main posts (#9468) (a0dd9080) +* #9462, on install copy default favicon (784600d9) +* #9463 (c5ae8a70) +* #9465 (4041e786) +* #9450 express session saved even if saveUninitialized explicitly passed in (9c52fd2e) +* acp crash (cb53a64c) +* #9447, include query params in previousUrl (536591f8) +* thumb count not updated when uploading multiple thumbs at a time (1ad1787e) +* change email button stays disabled if user submitted an invalid email (01f63e5d) +* use app.logout() to clear session after deleting user (cfdef77b) +* ./nodebb help with commander@7 (#9434) (2a03012e) +* hide titleRaw for deleted topics as well (edf80cfb) +* #9410, fix post queue (c5dda64f) +* privilege tables (9052db93) +* #9420, paginate after loading notifications (67b09cba) +* hooks for alert animate, no more fadein/fadeout for reconnect alert (d9e20290) +* #9414, use posts:view_deleted (e42b152f) +* preserve order when changing parent (2ceda70a) +* #9411 (3c4e93a3) +* #9412 (cef58d1d) +* #9406, update flag post tools (93c595d9) +* typo in switch..case (d8ff9851) +* #9404, show signatures if the target user has signature privilege (801570e4) +* selector (ee69c1f8) +* sorting when filtering by uid (75553b24) +* allow local (and overridden) login strategies to pass Error objects back (98b72ca5) +* category search not using uid (6aa60b63) +* inf scroll with subfolder install (262e059f) +* flicker on dashboard (2041b808) +* #9398, crash on post flag (90d64fe1) +* #9395, pass all data from client to Topics.reply (#9396) (a8f7b244) +* lint (4ac38ab2) +* #9394, fix guest handles (eb360351) +* #9387, don't try to load undefined images (03e30634) +* #9389, allow admins to add themselves to private groups (5c59354c) +* #9386, add missing translation string (482641e3) +* #9383, don't show deleted topic titles in inf scroll (e789fe8d) +* #9378, crash on verifyToken if API Token settings not saved (null case error) (cc489708) +* closes #9382, fix digest topic links (35700d16) +* spec (1e1127bd) +* regression from filter hook change (53f67ff3) +* crash if unreadTopics is undefined (617f4730) +* dont crash if login el doesnt exist (f45c0aab) +* regression via c1b3079d93fb4c49ba62a4be5279b7bff8e5a54d (2a939aad) +* change notification updateCount to use client-side hooks (84725130) +* tests (39b0e0fb) +* #9370, show correct teaser index if sorting is newest to oldest (9382fc6d) +* don't copy if src doesn't exist (ebccc794) +* #9362 best not to check file exists on every page load; copying favicon to uploads/system folder instead (771a8955) +* #9362 (ad565495) +* regression where login redirect for admin routes didn't go to local=1 (678e8f0f) +* lint (f4f61b92) +* if no in passed use "titles" to match header search (e787e6ea) +* add back middleware.authenticateOrGuest (166d65a1) +* request authentication called twice in account routes (e3b2c00d) +* #9354, don't close quicksearch results if mouse is down on them (8a4c361e) +* #9339, only log email errors once per digest, notification push (3aa26c4d) +* winston.info (3f42d40c) +* #9351 bad logic when inserting rows to privilege tables, also a missing tfoot :foot: (c5e25788) +* app.parseAndTranslate to always return promise (c2650169) +* bug where fallback window trigger was not firing if there were no hook listeners attached (1e579428) +* bad assignment (c8b78654) +* #9348 incorrect redirect via connect-ensure-login (fbe9215b) +* bug where loginSeconds setting was ignored for local login (f806befd) +* remove old dep (b58bacaf) +* notif pruning (2737f653) +* notification prune test (ca817631) +* user icon text overflow in some cases (2b7d0b5a) +* use components for toggleNavbar instead (114e3a1e) +* allow interstitial callbacks to be functional (no cb required) (9bf94ad5) +* don't publish before pubClient is connected (cdf5d18f) +* remove unused async (48f1e265) +* in setupPageRoute helper, buildHeader after plugin hooks have fired (984c9dd9) +* timeago missing on table update (655e2c67) +* wrong qs param, allow string to be passed to util.getDaysArray (f8e1a74c) +* wrong call to sortedSetAdd (dbe5f702) +* session not persisting to database in some scenarios (020f0b83) +* allow hidden inputs in user settings page (beaac0a1) +* use root context if buildAvatar context is undefined (b4c0b32b) +* use bootbox module (fa91525a) +* #9307, use _.flatten (25c8f026) +* awaiting res.render in send404 controller > > A plugin wanted to use `response:rotuer.page` to 404 a specific page on some condition. res.render returns early in send404 and so must be awaited otherwise multiple responses will be sent (2fef4627) +* do not overwrite `config.port` from URL, if it's already set (34096b73) +* switch back to getSortedSetRange (8686fbfa) +* settings v3 (91734a64) +* another topic thumb test fix (782bef5e) +* thumbs.associate logic fix + tests (7ebb6d30) +* missing awaits, possible test fix (7665adf7) +* #9301, dont call sitemapstream if there are no entries in categories/pages/topics.xml (9a6cf3d9) +* properly incase its the same path (807b0d43) +* numThumbs count on associate (76bcc0c9) +* missing cache deletion calls for post-queue cache (1490b32d) +* use of removed URL to get post data (36e8d251) +* init topic events from webserver.js (b81508c4) +* check null topics (b753c69c) +* guard against null topics (58cd797e) +* tests, new categories go to top now (fc90f32e) +* #9292, messageobj.content already parsed (c953b1b3) +* clear category cache on copy parent (765db86d) +* delete category cache key on category create (ed3e9ce2) +* typo (c61cc37b) +* wait for event.log to finish before killing process (a5fa212f) +* tests, only generate csrf_token on 404 gets (b6493f89) +* #9287, generate csrf_token on 404 (94f72d60) +* do not blindly escape a notification's bodyLong (783786cf) +* pass jquery object in to action:notifications.loaded hook (16610b2d) +* #9275, (0cca6893) +* don't use global bootbox obj (cfa0d423) +* remove console.log (550cd995) +* move service worker back to relative_path/service-worker.js (fca17cb7) +* spec (ab0ef442) +* markread selector (a4878a5b) +* position when scrolling up (3090a2ae) +* cache key collision (e40af441) +* tests breakage due to 67e3fb64981fe2310b17515e1f18c32021a5e983 (5c21c33e) +* register returnTo logic to match login route (67e3fb64) +* tests (492cbc62) +* posts.uploads.sync dissociates uploaded thumbs of the main pid (f79aeef8) +* update grammar on unban text (68da1c55) +* privileges page - tweak icon position and width, group name wrapping (c729adeb) +* autofocus on search field in ACP > Manage > Plugins (4af9c2fc) +* openapi test specs (cabec378) +* include admins (7c9674de) +* include admins, limit to category mods, correct privilege name (eaf9d2e4) +* http 200 test for api routes (bd583963) +* invalid API call when unfollowing a user (58655e9a) +* example (833c73e8) +* #9127, scope service worker to relative_path for the forum (#9239) (2bc74cff) +* update docs (4c12e0aa) +* broken test after sorted-lists logic change (d6f60f45) +* clear all locks on restart (9834f72f) +* `action:admin.settingsLoaded` to use new hooks lib (5131eb6b) +* crash on firing action hook that had no listeners registered (b0f5d5a5) +* bug where `action:settings.sorted-list.loaded` fired early (1a04ec64) +* regression where `filter:settings.set` no longer received sorted-lists (a8be6fb8) +* #9231, fix redis pubsub connection (5bc1f5b4) +* don't translate message on every ajaxify (a29dd21d) +* tests (05c53394) +* improper override of req.body.username in login logic (74199220) +* full settings hash not passed through to action:settings.set (473d5f4a) +* #9223, don't overwrite stmp settings (a5bf9779) +* multiple sorted-lists do not save to the correct set (4029ec37) +* pass module name to `static:script.init`, +comments (f8bf9e99) +* handle delete and update for categories:name zset (e8429f50) +* tests remove old routes (faeb6373) +* removed object routes (d41ce873) +* removed methods (647d3ba8) +* incorrect return for Thumbs.get() if thumbs were disabled (7b090c58) +* script failure if client-side page script does not exist (7da1b43f) +* bug where `action:ajaxify.end` was never called if there were no init scripts (faf59603) +* update js concatenation logic to bundle scripts.rjs into minfile regardless of build environment (8ff07bc1) +* #7125, allow list for page route, configurable via plugin hook (f975063b) +* error on flag list if no flag filters were saved in session (942d9247) +* mod cid filter accidentally saved in session (35c92d0c) +* more tests for #9217 (ce7c74b2) +* tests for #9217 (f2a5cd0b) +* missing return for #9217 (27cae0d5) +* #9217, render 400 error page on bad access to /register (b2b1450e) +* redis check compat tests (78896fc6) +* registration completion overriding returnTo if it was already set (a186ea0f) +* add missing user delete event types (5c1b7429) +* missing option for user-deleteAccount on ACP Events page (1c420602) +* **deps:** + * update dependency html-to-text to v7.1.1 (427e4f47) + * update dependency redis to v3.1.2 (35a4d0be) + * update dependency validator to v13.6.0 (e3d5d8d7) + * update dependency nodebb-plugin-composer-default to v6.5.27 (1b846271) + * update dependency redis to v3.1.1 (286a63e3) + * update dependency nodebb-theme-persona to v11.0.17 (51d58ce6) + * update dependency nodebb-theme-vanilla to v12.0.7 (16a1ba57) + * update dependency postcss to v8.2.10 (31cec2de) + * update dependency nodebb-plugin-mentions to v2.13.9 (fe087806) + * update dependency mongodb to v3.6.6 (#9467) (4264b236) + * update dependency sharp to v0.28.1 (34cbc9e2) + * update dependency nodebb-theme-persona to v11.0.16 (a8330b6d) + * update dependency nodebb-theme-vanilla to v12.0.6 (c02310b8) + * update dependency nodebb-theme-persona to v11.0.15 (316c71d7) + * update socket.io packages to v4.0.1 (e7776f8d) + * update dependency redis to v3.1.0 (fd9ff334) + * update dependency nodebb-plugin-composer-default to v6.5.26 (#9446) (8d9afbc6) + * update dependency postcss to v8.2.9 (6f51c460) + * update dependency nodebb-theme-persona to v11.0.14 (#9443) (fecfcd81) + * update dependency nodebb-theme-persona to v11.0.13 (#9437) (e5cc6e40) + * update dependency nodebb-theme-slick to v1.4.6 (dfdb0050) + * update dependency nodebb-theme-persona to v11.0.11 (27de58f2) + * update dependency benchpressjs to v2.4.3 (382f75bc) + * update dependency nodebb-plugin-composer-default to v6.5.25 (24236718) + * update dependency nodebb-theme-vanilla to v12.0.5 (89973d80) + * update dependency nodebb-plugin-composer-default to v6.5.24 (dec34446) + * update dependency nodebb-theme-persona to v11.0.10 (f78b4ba6) + * update dependency nodebb-plugin-composer-default to v6.5.23 (#9422) (e35d0741) + * update dependency nodebb-theme-persona to v11.0.8 (124cb9d9) + * update dependency benchpressjs to v2.4.2 (1dddcb49) + * update dependency nodebb-plugin-mentions to v2.13.8 (d511216c) + * update dependency connect-mongo to v4.4.1 (29ff5bb9) + * update dependency nodebb-theme-persona to v11.0.7 (c5734063) + * update dependency nodebb-theme-vanilla to v12.0.4 (#9409) (870e6c2c) + * update dependency nodebb-theme-slick to v1.4.5 (#9408) (24be8642) + * update dependency nodebb-theme-persona to v11.0.6 (#9407) (b50739c1) + * update dependency nodebb-plugin-spam-be-gone to v0.7.9 (#9405) (9359cae9) + * update dependency nodebb-theme-persona to v11.0.5 (47b2b97f) + * update dependency nodebb-plugin-composer-default to v6.5.21 (#9401) (2f70ac5a) + * update dependency mongodb to v3.6.5 (fcd887fd) + * update dependency nodebb-plugin-composer-default to v6.5.19 (#9391) (1631f159) + * update dependency nodebb-plugin-composer-default to v6.5.17 (#9384) (8d401760) + * update dependency nodebb-theme-persona to v11.0.3 (27facadb) + * update dependency socket.io-redis to v6.1.0 (adaddde6) + * update dependency nodebb-plugin-composer-default to v6.5.16 (a98e92b4) + * update dependency nodebb-plugin-markdown to v8.12.7 (#9371) (56b0bfd5) + * update dependency nodebb-theme-vanilla to v12.0.2 (#9369) (8923d34c) + * update dependency nodebb-theme-persona to v11.0.2 (#9368) (fa71c483) + * update socket.io packages to v4 (#9363) (13f3c504) + * update dependency postcss to v8.2.8 (680cf5ef) + * update dependency nodebb-theme-persona to v10.5.17 (2645bf55) + * update dependency connect-mongo to v4.3.1 (59459074) + * update dependency connect-mongo to v4.3.0 (f388086a) + * update dependency autoprefixer to v10.2.5 (4f4cdacc) + * update dependency postcss to v8.2.7 (72db3754) + * update dependency nodebb-plugin-composer-default to v6.5.13 (017af7cb) + * update dependency jquery to v3.6.0 (dd6082a0) + * update dependency connect-mongo to v4.2.2 (ec0912cc) + * update dependency nodebb-plugin-spam-be-gone to v0.7.8 (#9337) (536bae70) + * update dependency nodebb-plugin-composer-default to v6.5.12 (2674de01) + * update socket.io packages to v3.1.2 (510eb1f9) + * update dependency nodebb-theme-persona to v10.5.16 (217d3afd) + * update dependency nodebb-plugin-emoji-android to v2.0.5 (e8209341) + * update dependency sharp to v0.27.2 (c5231f10) + * update dependency nodebb-theme-vanilla to v11.4.5 (8596dcc4) + * update dependency nodebb-theme-persona to v10.5.15 (753ab0a0) + * update dependency nodebb-theme-persona to v10.5.14 (ed503b80) + * update dependency nodebb-theme-persona to v10.5.12 (ddd8fa31) + * update dependency benchpressjs to v2.4.1 (4ee3a8e8) + * update dependency nodebb-theme-persona to v10.5.10 (7f8fd4b0) + * update dependency nodebb-theme-persona to v10.5.9 (5dd748c6) + * require xregexp 5.0.1 (86e911ba) + * update dependency xregexp to v5 (513cd1c3) + * update dependency nodebb-theme-persona to v10.5.8 (54b4dc1d) + * update dependency postcss to v8.2.6 (4d92af5a) + * update dependency nodebb-theme-persona to v10.5.7 (#9288) (c2459fd5) + * update dependency nodebb-plugin-composer-default to v6.5.10 (b312725f) + * update dependency nodebb-theme-persona to v10.5.6 (4599144f) + * update dependency nodebb-widget-essentials to v5.0.3 (#9284) (eb9f058f) + * update dependency nodebb-plugin-composer-default to v6.5.9 (6e14014b) + * update dependency nodebb-plugin-composer-default to v6.5.8 (674a31d1) + * update dependency nodebb-theme-slick to v1.4.3 (#9278) (d3923585) + * update dependency nodebb-theme-vanilla to v11.4.4 (#9279) (1f28e8c3) + * update dependency nodebb-theme-persona to v10.5.5 (#9277) (a7b46adc) + * update dependency connect-redis to v5.1.0 (#9276) (83a0b6b8) + * update dependency nodebb-theme-persona to v10.5.4 (#9270) (dc145284) + * update dependency nodebb-theme-vanilla to v11.4.3 (#9272) (2fda6774) + * update dependency nodebb-theme-slick to v1.4.2 (2b12905d) + * update dependency nodebb-theme-lavender to v5.2.1 (fb2f1143) + * update dependency nodebb-theme-slick to v1.4.1 (#9262) (2cfab367) + * update socket.io packages to v3.1.1 (#9253) (2147d386) + * update dependency postcss to v8.2.5 (1fa0d4f4) + * update dependency nodebb-plugin-emoji-android to v2.0.1 (42e365d9) + * update dependency nodebb-plugin-markdown to v8.12.6 (4fd6027b) + * update dependency nodebb-plugin-mentions to v2.13.7 (8a2fe3d9) + * update dependency nodebb-theme-vanilla to v11.4.2 (2326e9a6) + * update dependency nodebb-theme-persona to v10.5.3 (9245ffaf) + * update dependency nodebb-plugin-dbsearch to v4.2.0 (389690c3) + * update dependency nodebb-plugin-composer-default to v6.5.7 (13e12c95) + * update dependency json2csv to v5.0.6 (0aa8e03f) + * bump theme deps for #9244 (44019e28) + * update dependency mongodb to v3.6.4 (56e4e56b) + * update dependency nodebb-theme-persona to v10.5.1 (04411449) + * update dependency nodebb-theme-vanilla to v11.4.0 (#9238) (897d29ec) + * update dependency nodebb-theme-slick to v1.4.0 (#9237) (8e2deab4) + * update dependency nodebb-theme-persona to v10.5.0 (#9236) (4f842a79) + * update dependency nodebb-theme-lavender to v5.2.0 (47fd1634) + * update dependency nodebb-plugin-dbsearch to v4.1.3 (1e10ebfb) + * update dependency nodebb-plugin-composer-default to v6.5.6 (0e2b329b) + * update dependency autoprefixer to v10.2.4 (6c3b1fde) + * update dependency nodebb-plugin-markdown to v8.12.5 (05901fcd) + * update dependency nodebb-theme-persona to v10.4.1 (a9b3fb37) + * update dependency sharp to v0.27.1 (a90773a6) + * bump persona to get timeline style (ca14c0e2) + * update dependency postcss to v8.2.4 (5b2f0be0) + * update dependency autoprefixer to v10.2.3 (d99cb1cf) + * update dependency postcss-clean to v1.2.0 (4232d97b) +* **#9315:** api v3 post, put, del JSON (0d59fe3d) +* **remountable-routes:** + * more fixes to remountable routes (9d17f397) + * bug with user routes remounting to itself (bc68e990) +* **#9252:** pass site domain to nodemailer (#9254) (5e5d37c3) +* **topic-events:** + * topicEvents.init() test (aa8b84bb) + * repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM (df2fdd56) +* **hooks:** + * bug where hook firing would fail if there were no listeners (efff8e2a) + * fallback handling for core invocations of hooks.fire (412d2858) + +##### Other Changes + +* schema docs for new ACP dashboard subpage routes (0804d547) + +##### Performance Improvements + +* increase batch size for notifs, run parallel (728ac5ff) +* faster category tags upgrade script (0dad568c) +* use setObjectBulk (95033ef7) +* make upgrade script faster (a07509f7) +* make upgrade script faster (0959b124) +* cache base_url (cf4002bc) +* single call to get digest topics, dont send duplicate topics (5ce28207) +* single db call to add all uids (90d5c9da) +* make digests a little bit faster (0185ea1b) +* only load thumbs for topics that actually have thumbs (7eebcbdb) + +##### Refactors + +* make debug handler async (1db8920b) +* widgets (#9471) (397baf02) +* style, no need to convert length to string (d00268c9) +* deprecate action:script.load, use filter:script.load instead (d1685600) +* remove uncessary check (f316c4d4) +* remove async.each/reduce from hooks for better stack traces (d05d7091) +* use hooks.fire (0d3979ef) +* fix variable name (1982edfd) +* account edit logic and template, closes #9364 (98bf4064) +* automatically authenticate all requests setup through route helpers (#9357) (7da061f0) +* async listen testSocket (0021c601) +* remove startsWith/endsWith (48bc23c0) +* app.parseAndTranslate to return promise if no callback passed (b5a6a314) +* privileges, export modules directly (#9325) (293b7c26) +* have Graph.init and Graph.update return promises (3fa2e3ce) +* abstract out some client side dashboard code into modules, analytics subpages for users, topics, and logins (f561799f) +* move picture change client-side logic to its own rjs module (28f6931e) +* remove dupe code (5286f208) +* thumbs.associate accepts both relative path and url in path arg (3e6640ef) +* move post queue retrival code to posts.getQueuedPosts (36f20211) +* call topic events init from within file itself (6074a0fb) +* improvements (970bd06f) +* update dom after diff deletion better (a2a7557c) +* removed 3 lines (4447a64e) +* use Map to track sorted lists in Settings.set() (65de2e76) +* **user:** all plugins to change list of icon background colours (fbccf6e2) +* **remountable-routes:** + * rename `src/routes/accounts.js` to `src/routes/user.js` to better match the route prefix (1f28713f) + * allow certain route prefixes to be mounted elsewhere (92758ec5) +* **topic-events:** + * expose addTopicEvents method in topic posts lib (9559fad8) + * break out some logic in events.get into local modifyEvent method (cec3fc93) + * fire topic event logging in topics/tools instead, pass uid into payload (425eca14) +* **hooks:** + * deprecate `action:script.load` client-side hook (8e5687a4) + * better error handling (e7bd038d) + +##### Reverts + +* revert tag sort (f9df6431) +* change toPid truthy (56523aa1) +* bring back backwards compat (a1c01446) + +##### Code Style Changes + +* eslint (b5ce8d25) +* **remountable-routes:** abstract removable routes code to a separate local fn (16c1d6e9) + +##### Tests + +* remove logs (435067aa) +* clear cache between runs, require middleware later in helpers (2ea468da) +* log (d15e2710) +* remove equals (354e0a82) +* test times (2f401d7d) +* log (80ef1082) +* added test for session id reroll on login (a3a7ab3a) +* add missing test (8ef38cb2) +* double filter test (70a653d0) +* admin/manage/users tests (0e67ab01) +* fix spec for topic thumbs (4c078084) +* added missing properties to topicObject (1d9ade4c) +* added missing test file (b31f6dd2) +* topic reordering tests (ad54b174) +* additional tests for topic thumbs (50664487) +* added more topic thumbnail tests (28b30134) +* post diff deletion tests (72b050b4) +* **user:** added additional tests for icon background colour (d3a9e76a) + +#### v1.16.2 (2021-01-21) + +##### Breaking Changes + +* unescape header navigation originalRoute [breaking] (6cb5888c) +* allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.8 (a6f5de86) + * update dependency eslint to v7.18.0 (afbef95f) + * update dependency husky to v4.3.7 (d3e041e2) +* incrementing version number - v1.16.2-beta.0 (43ff8e41) +* incrementing version number - v1.16.1 (e3cd7a23) +* update changelog for v1.16.1 (b6d71710) + +##### New Features + +* add filter:email.cancel to allow plugins to cancel sending emails (c2e23706) +* grant plugins the ability to specify options to the SSO handler (ab11435e) +* add unread-count badge if navigator contains /flags route (c07e1e16) +* handle HTTP 429 as a response code (8bbb3208) +* add write API route for checking login credentials (56f929ed) +* #8813, faster category search dropdown (072a0e32) +* **api:** schema definition for new credential checking route (0da28432) + +##### Bug Fixes + +* **deps:** + * update dependency bootbox to v5 (#8751) (b5cb2f8b) + * update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f) + * update socket.io packages to v3.1.0 (3d1224e1) + * update dependency nodebb-theme-slick to v1.3.8 (1901ecb2) + * update dependency sortablejs to v1.13.0 (36069da2) + * update dependency autoprefixer to v10.2.1 (5b3c48fd) +* https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8) +* restored sanity checks for post move socket calls (d85ad10d) +* don't chagne scrollTop if at the top of page (0fa4c11e) +* #9206, fix double escaped arguments (1590cdf1) +* regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232) +* don't crash if fullname is not a string (4fb90787) +* #9204, bypass groupname length check for system group in upgrade script (00ba89b6) +* add missing await (9938a139) +* ssoState passed to strategies even if not called for (9b289eca) +* use max (0a471b76) +* keep 60 topics minimum on topic list (c30b40ab) +* access checks for tags and thumbs get route (77ab4668) +* #9194 global mods unable to pin or unpin topics (c0fb1cb5) +* #9192, exit after logging error (ef16cd2e) +* make sure inviter user exists (69419571) +* #9178 missing language strings (and fallbacks) for post-queue (a407a51d) +* #9185, fix string boolean values (89e6c75d) +* test for topicThumbs (e817d5be) +* #9184 proper relative_path usage in topic thumbs.get (66da6bcd) +* #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e) +* #9177, handled multiple deleted users properly (eaf62d39) +* broken test caused by errant .pop(), missing await (4ede18ce) +* missing error message (d83d40cf) +* test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab) +* #9176, limit description size (da546970) +* broken test due to change in response code (9534d956) +* return a user object, not an array of user objects (in v3 login check route) (97d678fd) +* bad execution flow in utilities.login (8c86f5bc) +* missing breadcrumbs in schema (87a7d85e) +* random loadFiles added by errant vscode autocompletion (53422413) +* add missing breadcrumb on /user//categories (6cbb77af) +* `--help` usage info (a51c5698) + +##### Performance Improvements + +* use only required calls (f0dd302c) + +##### Refactors + +* **api:** + * post move to write API (966c4117) + * post diffs to use write API (e118e59c) +* change var to const (1374e0ee) +* single remove call (25ab99b9) +* flags lib to have a separate getFlagIdsWithFilters method (6a1311b4) +* split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f) + +##### Code Style Changes + +* update codeclimate config to be less sensitive to duplicate code blocks (fdf03472) + +#### v1.16.1 (2021-01-06) + +##### Chores + +* increase test timeout (0d7dfeeb) +* incrementing version number - v1.16.1-beta.0 (5fcf3ea6) +* add deprecation notice to topic thumb tpl value (05d8b3c3) +* minor reordering of lines (8e5a413e) +* incrementing version number - v1.16.0 (6d01fd50) +* update changelog for v1.16.0 (1437c62f) +* **deps:** + * update dependency eslint to v7.17.0 (18ae7cf7) + * update dependency eslint to v7.16.0 (2610dfcf) + * update actions/setup-node action to v2 (#9115) (55a55ea2) +* **api:** add deprecation notices re: #9123 (cdff8d28) + +##### New Features + +* #9173, show installed plugin versions in ./nodebb plugins (8c31afae) +* added note that you can now upload videos (4d6ddf6d) +* automatically attempt socket.io reconnection on ajaxify (e5edbc6f) +* #9135, don't try to reconnect forever (c1ecfd1e) +* add confirmation modal when assigning admin:admins-mods privilege (d90aa958) +* allow dashes in privilege group names (5b8558e9) +* allow multiple privileges to be defined for a given admin socket call (3aa5beb8) +* rename admin middleware header hook (fcc1e24a) +* explicitly add filter:admin/header.build hook (75b1bbd0) +* fix more tests, add more routes, update api test suite (cb32e32a) +* add registration/complete route, fix some other tests (14c51e3c) +* add missing schemas for various ACP settings routes (9de35ec5) +* add missing schema for category update and deletion (d6de9253) +* add schema for api ping routes (d85181e0) +* normalize paths before comparison (df8d62ba) +* additional test to ensure any new routes added to express have a corresponding schema doc (dbe85630) +* update html-to-text closes https://github.com/NodeBB/NodeBB/pull/8810 (a2152dd1) +* **api:** + * closes #9123 category and topic routes migrated to Write API (edb8da1e) + * #9123, migrate rest of the getObject controllers to Write API (9ecfac9b) + * #9123, migrate /api/post/pid/:pid to Write API (e267f295) + * group ownership API route, switch client-side to use API route (32e36f7b) + * add schema for groups update route (98550d61) + * added schema for email unsubscribe token (4fc13377) +* **acp:** + * admin tags privilege (223f0a55) + * admins-mods privilege (fb46a8d9) + * added new admin privilege for groups management (da191341) + +##### Bug Fixes + +* #9130, remove timestamp prefix from thumbnail names in API response (171017c3) +* #9166 missing relative path in topic thumbs modal and topic list (b9ba44ed) +* #9163, fix total connection count on ACP (1968bf50) +* genericise .necro-post, bump persona to latest (041d45c3) +* #9126, skip base64 and long values (33290850) +* #9127, use assets path (3121215e) +* inability for admins with setting privilege to save plugin settings (a555f024) +* #9149, server-side handling of disableChatMessageEditing (895e3d93) +* #9149, incorrect client-side `disableChatMessageEditing` value for admins/gmods (d27815a8) +* #9151, dont use service worker for posts requests (20c1b684) +* #9150, fix selector so it doesn't add img-responsive to profile pics (183cabe9) +* tests (28740360) +* dont show deleted posts in navigator (931105e6) +* bug in api path existence test (501a7b77) +* #9136, fix move topic/post timeout errors (2ef72a94) +* bad assignment logic in middleware.renderHeader (34ccabe3) +* #9113, wrong path separator used in thumbs.get (da4f9118) +* email testing and settings change from ACP (2be396ff) +* removing ability to specify deprecated topic 'thumb' on topic creation (713f029d) +* #9129, event is fired on socket.io (b369dc88) +* subfolder handling in tests (bbd97ccb) +* .flat() not defined in v10, added debug router to exclusion list (6062039d) +* all tests, wrap up work (f416dc17) +* two more routes (9c2de86a) +* api tests (b9a61d2d) +* don't return deleted: 0 for ephemeral groups (600807fb) +* send fewer items to client-side for ACP settings/email page (438fa5c8) +* errors in write-api schema (c079051b) +* broken tests from last round of fixes (990f1077) +* bad error message for request body api test (a9629357) +* modify backreference test to not check router.all() calls (7fc329de) +* add missing token generation route to write api spec (eef052c1) +* trigger action:posts.edited (b7b588f5) +* **deps:** + * update dependency autoprefixer to v10.2.0 (e445ae5a) + * update socket.io packages to v3.0.5 (fd045c67) + * update dependency nodebb-theme-persona to v10.3.16 (87e333b4) + * update dependency benchpressjs to v2.4.0 (4524f825) + * update dependency nodebb-theme-persona to v10.3.15 (189be9e0) + * update dependency nodebb-widget-essentials to v5.0.2 (1dd1d3b0) + * update dependency nodebb-widget-essentials to v5.0.1 (#9144) (f55dddb2) + * update dependency nodebb-plugin-composer-default to v6.5.5 (6d980d26) + * update dependency sharp to v0.27.0 (4919e596) + * update dependency nodebb-theme-persona to v10.3.12 (37b35f7d) + * update dependency nodebb-theme-persona to v10.3.11 (db4c6863) +* **tests:** handle nested allOf blocks (77a5adb6) +* **api:** + * failing test due to missing file (3959a7bd) + * tests (80ee3dfb) +* **pwa:** #9127 service-worker.js missing on subfolder installs (b8d4709e) + +##### Refactors + +* **openapi:** update TopicObject component to reference TopicObjectSlim in its schema (fb3f3f72) +* **api:** + * deprecated groups update socket in favour of API lib (1cd2689c) + * update group deletion calls to use write API (e640a41a) +* schema backreference test to use map instead of reduce, properly check write-api routes (878ee067) + +##### Tests + +* changed test a bit to see what is going on (5f038dff) + +#### v1.16.0 (2020-12-17) + +##### Breaking Changes + +* enable topic thumbnails across the board [breaking] (9342d611) +* #8808, remove utils.slugify (4a0d8833) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.6 (2371b432) + * bump persona to 10.3.9 (91899329) + * bump composer to 6.5.1, re: #9067 (228cfa67) + * update dependency husky to v4.3.5 (48a31763) + * update dependency husky to v4.3.4 (cf5c482d) + * update dependency eslint to v7.15.0 (f4c4d671) + * update dependency lint-staged to v10.5.3 (3e6f7359) +* appease codeclimate (9f62df15) +* add comment for clarification (6037f5ee) +* incrementing version number - v1.15.5 (57cd1343) +* update changelog for v1.15.5 (b0299326) +* **i18n:** fallbacks for new topic thumb keys (15f1a089) + +##### New Features + +* add new client side hooks (a15ef53c) +* remove max age since cache is cleared when thumbs change (ab96f526) +* show alt text instead of images in teasers (#9107) (d28581eb) +* migration of old topic thumbs to new format (74d73313) +* allow plugins to override ACP relogin challenge (4c87f301) +* add user.email.confirmByUid for sso plugins (80de572a) +* add thumbs to category data return (24e754d1) +* broken test for bad topic thumbs logic (ce8057f3) +* clent-side modal for managing topic thumbs (a30c8ab5) +* raise maximum thumb size to 512 (37c367d6) +* associate topic thumbs with post uploads (for the mainPid) (1c5cdb51) +* helper method to get thumbs by pid (cb7e4cda) +* closes #9048, tests for topic thumbs routes, write API schema (59506833) +* tests for topic thumbs (4152aa55) +* server-side work for #9047 (ef7d6db9) +* core work for #9042, thumb deletion now accepts uuids (b5d910f5) +* more work on topic thumbs refactor (90497e3e) +* expose uploaded thumbnails to client-side via API (1257aa98) +* server-side routes for handling multiple topic thumbnails (7e9e08f7) +* allow uploadThumb controller to be called in code (98cd9e35) +* move upgrade script and make it shorter (60e7de0d) +* allow clicks on navigator, clean dupe code (74274b60) +* socket.io 3 changes (#8845) (1c45fa1b) +* **deps:** update lavender to allow category sections (6d186be0) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.5.4 (#9120) (fff0cea6) + * update dependency nodebb-theme-slick to v1.3.7 (#9112) (30688b1b) + * update dependency nodebb-theme-lavender to v5.0.17 (#9111) (877f4673) + * update dependency nodebb-theme-vanilla to v11.3.10 (ff18cdfa) + * update dependency validator to v13.5.2 (#9094) (5d718348) + * update dependency nodebb-theme-vanilla to v11.3.9 (#9091) (f37dbeed) + * update dependency nodebb-plugin-composer-default to v6.5.3 (d036408d) + * update dependency nodebb-plugin-composer-default to v6.5.2 (b07fb9ab) + * bump composer-default to 6.5.0 (0db49121) + * update dependency autoprefixer to v10.1.0 (024d1fef) + * update dependency nodebb-theme-persona to v10.3.8 (#9084) (25f697b1) + * update socket.io packages to v3.0.4 (62463430) + * update dependency nodebb-theme-persona to v10.3.7 (c22cdb51) + * update dependency nodebb-theme-persona to v10.3.6 (#9077) (5937fbaf) + * update dependency nodebb-plugin-mentions to v2.13.6 (#9071) (a535350f) + * update dependency nodebb-theme-slick to v1.3.6 (#9072) (19c438c6) + * update dependency nodebb-widget-essentials to v5 (#9070) (d7f5efd9) + * update dependency nodebb-plugin-markdown to v8.12.4 (8fb814ba) + * update dependency nodebb-theme-persona to v10.3.5 (#9060) (0d082280) + * update dependency nodebb-theme-persona to v10.3.4 (#9059) (84e4e480) + * update dependency nodebb-theme-persona to v10.3.3 (3d7e2e1e) + * update dependency nodebb-theme-persona to v10.3.2 (#9056) (f49ce4ad) + * update dependency nodebb-theme-persona to v10.3.1 (#9054) (344caf5c) + * update dependency nodebb-theme-lavender to v5.0.15 (#9053) (e7d72d8a) + * update dependency nodebb-theme-persona to v10.3.0 (#9052) (dcd6fbaf) +* api usage (feecd665) +* #9117, lower query before search (4404e32e) +* #9114, fix client side groups update for memberPostCids (3ed55799) +* test (2dee3cbe) +* don't check "select all" if there are no enabled checkboxes (3ba05755) +* #9074, fix svg uploads (8f938eba) +* #9100 topic thumbs in OG image tags (ab987408) +* update version removal comments to 1.17 for some features (378a3a69) +* postgres is slow:tm: (05dd8597) +* derp? (f8dff94a) +* attempted fix for psql test in topic thumbs (9a4ea04a) +* use getSortedSetRange instead of getSortedSetsMembers (edf67f34) +* tests (bd5c4a5c) +* bad topic thumbs logic on local thumb upload (e83baa97) +* #9092, Topic thumbnails do not work with third-party uploaders (3e54b70c) +* move topic thumb tests to root level, so they actually get run by mocha (dd448e2b) +* tests for topic thumbs (9681557f) +* iteration logic bug (2170c400) +* spec (ae943974) +* changes to thumb resizing logic (67cf5e83) +* use file lib instead of direct fs module access (08736b18) +* added back missing topic thumb tests that were removed in last commit (c043cfeb) +* tests (5ec3b3d0) +* hack uploader to handle a response from v3 write api (41379e27) +* #9055, non-standard API response from addThumbs route (340387c1) +* do not allow thumb deletion route to arbitrarily delete other files in uploads folder (c09c238e) +* missing file added (ef10b6b7) +* references to since-removed Topics.thumbs.resizeAndUpload (1f0c1cd2) +* #9041, remove Topics.thumbs.resizeAndUpload() (43dc3e3e) +* #9040 (708b1c33) +* spec (1949d20a) +* #9085, dont prevent admins from deleting other users (0f480be6) +* show errors when user delete fails (ff2aa17b) +* dont start logout timer if adminReloginDuration is disabled (dd9ed236) +* #9045, no post usage info if '/files/' path received (efa4eca0) +* reconnectin no longer fires on socket.io 3 (13d5a144) +* default values, clamp postsPerPage/topicsPerPage to max (1f32d387) +* #9081, load raw settings before merging (9da0ed40) +* #9068 (86f0f82b) +* remove old utils.slugify tests (10cfdd4c) +* dont strip tags (792e9e70) +* #9065, settings v2/v3 conflict (91c20cec) +* #9063, missing handler for passwordless accounts in admin.checkPrivileges middleware (970ccb5a) +* timeago in navigation (a389a31b) +* navigation fixes (163d1a39) +* cache some jquery objects (73d2f51d) +* add ev.cancelable (63d08395) +* #9046, pretranslate string (790f4e45) +* redirect external with absolute urls (648f6215) +* external path for subfolder installs (458bfc0f) +* **spec:** broken link to status component (d31aae16) + +##### Performance Improvements + +* don't load thumbs if disabled globally, cache thumb results (2d5a224b) +* dont build identical langs (bb6cc49c) + +##### Refactors + +* topic thumbs lib to topics.thumbs (4fc9da81) + +#### v1.15.5 (2020-12-03) + +##### Chores + +* up persona (c111bde1) +* incrementing version number - v1.15.4 (a1b658d9) +* update changelog for v1.15.4 (252dddfc) + +##### New Features + +* add socket connect/disconnect action hooks (fcb10ebd) +* allow modifiying browser title on ajaxify (698718f8) + +##### Bug Fixes + +* #9032 (64ac483d) +* sso redirect on /login & /api/login (5d00b089) +* use file lib instead of directly accessing fs (for Assert.path) (3ea66f84) +* check uid as well (ef6c3b00) +* #7597, fix progress bar of cover/profile uploads (7e867cf9) +* **deps:** update dependency nodebb-plugin-spam-be-gone to v0.7.7 (#9039) (c7f2640a) + +#### v1.15.4 (2020-12-02) + +##### Chores + +* up persona (dde3171c) +* fallbacks for nodebb.error (82ca3760) +* fallbacks for nodebb.topic (5b269bc5) +* remove test code (07fe959c) +* incrementing version number - v1.15.3 (d1ae08fa) +* update changelog for v1.15.3 (cf157c9b) + +##### New Features + +* #9005, use timestamp in profile/cover images (5f0f476b) +* #8983, update pin tooltip in topic (954dc5b7) +* option to allow auto-joining of groups (optionally skip the "request membership" step) (685f3c6a) +* user notification settings for group.leave event (c1a7968d) +* add defaults for composer help (0cba2691) +* #8900, postQueue setting for category (1eb5fabd) +* #8960, update view count after merge (14bb0a44) +* use correct code (557f0f56) +* #8989, convert widget nav to dropdown (4c650aee) +* add handler for 501 api response (007a3258) +* add translation key for pin icon label with expiry (12b3aa0d) +* add pinExpiry and pinExpiryISO to topic data (ad8e7700) +* add cancel button to pin expiration modal (e1432caf) + +##### Bug Fixes + +* #9032, fix login redirect for sso plugins (6f68f4d2) +* #8962, dont show null for purged targets (86b7f8a5) +* selector on hooks page (3488daa1) +* notification on group.leave incorrectly showing "Guest has left X group" (f7558c60) +* #9019, add missing lang strings (b46d2f93) +* #9018 (e45b5cba) +* #9015, add default value for dailyDigestFreq (0f1fc10f) +* spec (cfb7b113) +* #8997, don't send notifications if uids already in group (f7c738de) +* #9002 ban templates not user friendly (4317cdea) +* #9010, show rest of info even if clusterMonitor priv is not granted (202dcef4) +* #9007 revoke old sessions after adding (d46740f8) +* guests dont always have sid (70073653) +* allow guests to see their replies immediately (a4fe4d3c) +* privs headers (92d1b8a6) +* pwd reset test (f25000cb) +* #8991, logout on password reset, dont verify email if password expired (5080f357) +* don't show topic search if no search privilege (8adbf54a) +* #8998, allow guests to use write api to post/reply (3cd0c9a4) +* guest handles to user displayname as well (5a137a0d) +* timestamp in queue, add post queue strings (546f58bf) +* #8992, set email:confirmed for first admin user (7f5efc3e) +* typo in upgrade script, closes #8990 (80f0750b) +* #8984, post-queue ux (1269103f) +* order (9ab4fb41) +* #8982, copy color on tag rename, dont copy if target exists (d3c04afb) +* tests (b596e948) +* api test (77a6dbac) +* remove dupe (cbbda451) +* csv test (3de692cd) +* spec, remove old tests (4afdf8bc) +* #8969, export csv to file (6e6a7a8f) +* spec for /tag (88e5cda5) +* #8980, fix lang string (f4d217d8) +* #8979 (bf171adc) +* #8971, disallow flags of privileged users (mods, gmods, admins) (1e7cf1cb) +* #8974, with password login for approval queue (dadb2527) +* #8974, dont show wrong message on register queue (fdca8b16) +* #8973, fix timestamp on ban modal (5c3deb4b) +* #8968, don't show topic search if search is not enabled (c8554b78) +* flicker on tooltips if server call takes long time (4c7374ea) +* missing select/clear all checkbox added to category privileges template (#8967) (a56a6577) +* use package.name for theme.id (#8965) (ba3981e2) +* winston usages (b8cafefc) +* #8957 (414caac0) +* dont go back after delete account actions (7e6427bc) +* error message (47a19d67) +* #8954, clear purged replies and toPids (#8959) (5bb5ec46) +* #8955, popstate to purged topic should go to homepage (39dae0aa) +* 'already-deleting' error on subsequent account content deletions (21d6225c) +* #8949, faster upgrade script (93863bb3) +* **deps:** + * update dependency nodebb-theme-vanilla to v11.3.8 (#9031) (18707940) + * update dependency nodebb-theme-slick to v1.3.5 (#9030) (4085f3e6) + * update dependency nodebb-theme-persona to v10.2.98 (#9029) (f7d60c43) + * update dependency nodebb-theme-persona to v10.2.97 (42b23a3b) + * update dependency nodebb-plugin-composer-default to v6.4.10 (#9025) (43bbfb67) + * update dependency nodebb-theme-vanilla to v11.3.7 (#9024) (3f597a55) + * update dependency nodebb-plugin-composer-default to v6.4.9 (#9023) (110186b9) + * update dependency nodebb-theme-slick to v1.3.4 (#9022) (8dc1437e) + * update dependency nodebb-theme-persona to v10.2.96 (#9021) (2c9cd286) + * update dependency nodebb-plugin-composer-default to v6.4.8 (#9017) (1f5f2e1d) + * update dependency nodebb-plugin-markdown to v8.12.3 (9004319e) + * update dependency validator to v13.5.1 (7b39cf4b) + * update dependency nodebb-theme-persona to v10.2.95 (#9001) (4ddab380) + * update dependency nodebb-theme-persona to v10.2.94 (#9000) (877d8554) + * update dependency nodebb-theme-persona to v10.2.93 (#8999) (c44d9d2f) + * update dependency nodebb-theme-persona to v10.2.92 (#8995) (346b91eb) + * update dependency nodebb-theme-vanilla to v11.3.6 (#8987) (6c980db1) + * update dependency nodebb-theme-persona to v10.2.91 (#8986) (8258536a) + * update dependency autoprefixer to v10.0.4 (#8985) (fad2d342) + * update dependency nodebb-plugin-markdown to v8.12.2 (f5714452) + * update dependency nodebb-theme-persona to v10.2.90 (5664807d) + * update dependency nodebb-theme-vanilla to v11.3.5 (19fe2493) + * update dependency nodebb-theme-persona to v10.2.89 (ad60bc06) + * update dependency autoprefixer to v10.0.3 (b2f0d38f) + * update dependency benchpressjs to v2.3.0 (6c316be4) +* **openapi:** + * spec for c1a7968d23f0809e7012edfccf49b193749998ec (69864b87) + * spec for 685f3c6aa6173383d6c31b87ed51cf8ed0ca44ce (1bb75e76) +* **acp:** + * #9008 undefined link for "no users browsing" state on dashboard (54dc449f) + * #9009 no-users-browsing untranslated on dashboard (286243cd) +* **spec:** + * from 6e6a7a8f8a9a75500ba1f336cabc882234212f88 (acb57666) + * breaking tests (88a60473) + * broken test due to canFlag addition (1b1205a9) + +##### Refactors + +* remove old hack (73746bb4) +* add TopicObjectSlim common schema (22715d54) +* pin/lock threadTools to use topicCommand, rewrote topicCommand to match categoryCommand signature (15c6f32c) + +#### v1.15.3 (2020-11-26) + +##### Chores + +* bump persona (720170a9) +* remove console.log (6a819944) +* move topic route schema up two levels as slug and index are optional (ae402e21) +* move category route schema up two levels as slug and index are optional (b3b501d7) +* up persona (0ffc091b) +* up persona (2f2f0ab7) +* up persona (5c9ff18e) +* add missing plugin hook deprecation warning (98a05e4d) +* pin autoprefixer to latest (46eb7701) +* incrementing version number - v1.15.3-beta.0 (28fa03bd) +* up persona (81984285) +* up slick (5f2fe883) +* incrementing version number - v1.15.2 (5867a5b9) +* update changelog for v1.15.2 (37965d45) +* **spec:** replace ugly hack with another hack for optional properties (45a4f136) +* **deps:** + * update dependency lint-staged to v10.5.2 (db205e2e) + * update dependency eslint to v7.14.0 (80404216) + +##### New Features + +* add topicOwnerPost #8778 (c037779f) +* clear reset tokens on user delete (4f37eddc) +* select/clear all checkboxes in privilege table (#8941) (00e75de7) +* show ban reason and expiry in write api responses, if user is banned (afb26bfe) +* automatically unban users in onSuccessfulLogin (6e5ec3f8) +* #8925, #8924 (3f337b5d) +* human readable uptime (672d4da0) +* allow ACP API access to bearer tokens (3b1c03ed) +* allow pins to expire (if set) (#8908) (046d0b16) +* #8637 (903e9d82) +* add displayname into user obj #8637 (#8909) (9ca44e6f) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.2.87 (#8946) (167ab3a4) + * update dependency nodebb-theme-persona to v10.2.86 (#8945) (5af5cb85) + * update dependency nconf to ^0.11.0 (58152606) + * update dependency postcss to v8.1.10 (5363ebbb) + * update dependency nodebb-theme-persona to v10.2.85 (#8928) (abc32d62) + * update dependency postcss to v8.1.9 (d1cb5d48) + * update dependency postcss to v8.1.8 (b47a470b) + * update dependency nodebb-theme-vanilla to v11.3.4 (#8914) (589f7a56) + * update dependency nodebb-theme-persona to v10.2.80 (#8913) (38127b04) + * update dependency nodebb-theme-persona to v10.2.79 (#8907) (8e1b2458) + * update dependency nodebb-theme-persona to v10.2.75 (b9856179) +* add topic uid to infinitescroll (6771ca15) +* #8943, session mismatch modal thrown on login (race condition) (d5845169) +* #8912 (ac734b83) +* #8918 (e32cd31e) +* basepath for r.js modules (3af4d13f) +* test (61c6a762) +* move meta.getServerTime call to admin namespace (1c0e8c16) +* add client side check for userslug #8939 (f20c12ee) +* #8939, fix username change notification getting filtered out (0ca40af8) +* #8931, fix lang string (cf903e4e) +* #8932, fix client side error when updating username (95a3f030) +* bug with Topics.resizeAndUploadThumb not checking for extension validity (eab4ca71) +* #8933 (2b73a14e) +* #8929, fix popular, top rss feed urls (77f0bff5) +* a derp (5dd3b031) +* spec (b18e7e31) +* improper handling of scheme-relative URLs in topic thumb logic (4ca62dc4) +* https://github.com/NodeBB/NodeBB/pull/8685 (5fa09832) +* on OP edit, call helper method to upload and resize thumb (f33a9185) +* https://github.com/NodeBB/NodeBB/pull/8759 (9ee1fb49) +* spec (c2bb6123) +* guest displayname (1be08b2e) +* show messages after app load (46acbfda) +* restart on js changes in vendor (814771bd) +* #8915, fix queue not being cleared after firing click events (6ef7e867) +* spec, only call modifyUser on unique user objects (dbd814c2) +* setting (ae5d4405) +* spec (8d060065) +* group userTitles translation escapes (e9585b9b) +* remove params from error log (965671a9) +* **spec:** always show thumb in topic response (493c568a) + +##### Refactors + +* remove unused require (db1c140f) +* move API banned response handler to separate internal method (906d7d73) +* move plugin hook methods to plugin.hooks.* (6e2da996) +* remove breaking change in pin expiry (ef3df47a) +* use categoryCommand local method for pin/lock in category tools (#8917) (00aee84b) + +#### v1.15.2 (2020-11-18) + +##### Chores + +* incrementing version number - v1.15.2-beta.1 (20c05e80) +* remove debug log (0a0b4661) +* incrementing version number - v1.15.2-beta.0 (996174a1) +* **deps:** update dependency smtp-server to v3.8.0 (5f5f0edb) + +##### Documentation Changes + +* openapi schema for user/group exist check, session deletion (bcccb331) + +##### New Features + +* #5274 (4e9b10ab) +* #4456 (fb567a7a) +* #8475, allow flagging self posts (a6afcfd5) +* #7550, show message if post is queued when js is disabled (120999bf) +* #8171, add oldCategory if topic is moved (35f932cd) +* #8204, separate notification type for group chats (b44ddecd) +* add test for custom translations (7928036a) +* https://github.com/NodeBB/NodeBB/issues/8147 (1d6bcbeb) +* invites regardless of registration type, invite privilege, groups to join on acceptance (#8786) (3ccebf11) +* add nodejs version to issue template (29c2ca94) +* allow groups to specify which cids to show member posts from (#8875) (8518404e) +* **api:** account deletion routes for the Write API (#8881) (a0b7a823) +* **deps:** benchpressjs@2.2.1 (#8887) (d30ea256) + +##### Bug Fixes + +* #6407, fix feeds (fa4177c3) +* navigation highlight (62b62821) +* benchpress warnings (a87ccccc) +* benchpress warnings (dfdc0c42) +* internal helper method hasGlobalPrivilege, DRY (e1d7c4d8) +* spec (2f4653a3) +* #8884, remove header/footer cache (e4d2764d) +* check tid in event handlers client side (9dac9630) +* #8883 (f14e42d8) +* #8872 missing admin/menu language key+fallback (fdab76f8) +* run every hour, dont show message if average_time is 0 (51b7eca1) +* add back test timeout for exports (b3e00489) +* pass length to messaging checkContent hook (dc9668e4) +* **deps:** + * update dependency nodebb-theme-persona to v10.2.74 (#8905) (5f6137f0) + * update dependency nodebb-theme-persona to v10.2.73 (#8904) (c2019b7b) + * update dependency nodebb-plugin-composer-default to v6.4.7 (#8902) (b7b1f203) + * update dependency nodebb-theme-persona to v10.2.72 (#8903) (bee8cfe4) + * update dependency nodebb-theme-vanilla to v11.3.3 (422aa7f0) + * update dependency nodebb-theme-persona to v10.2.71 (3b6e71d5) + * update dependency nodebb-theme-persona to v10.2.70 (d6dd1cb6) + * update dependency nodebb-theme-slick to v1.3.2 (2ce1fcd3) + * update dependency nodebb-theme-vanilla to v11.3.2 (9f2d0d42) + * update dependency nodebb-theme-persona to v10.2.69 (15810643) + * update dependency sharp to v0.26.3 (84d54577) + * update dependency nodebb-plugin-mentions to v2.13.5 (dde9f189) + * update dependency json2csv to v5.0.5 (b63b7ae5) + * update dependency benchpressjs to v2.2.2 (d1e804aa) + * update dependency nodebb-theme-vanilla to v11.3.1 (#8878) (85aaeded) + * update dependency nodebb-theme-slick to v1.3.1 (bbfb276a) + * update dependency nodebb-theme-persona to v10.2.68 (ec70329a) + * update dependency nodebb-plugin-spam-be-gone to v0.7.6 (#8877) (45922fae) + * update dependency nodebb-plugin-spam-be-gone to v0.7.5 (#8876) (48e82520) + * update dependency nodebb-plugin-spam-be-gone to v0.7.4 (#8874) (eab27f23) + +##### Refactors + +* client-side handlers for user invitations (d83eb7f8) +* async/await controllers/index.js (5598130a) +* less dupe code (8fbe8324) + +##### Tests + +* new api test to ensure each path's parameters are defined in context (97842c43) +* updated test name to be more specific (319cfeaa) + +#### v1.15.1 (2020-11-11) + +##### Chores + +* incrementing version number - v1.15.1-beta.0 (e033da8a) +* fallback l10n for admin-settings-api (8368c25b) +* **deps:** + * update dependency eslint to v7.13.0 (bcbc0854) + * update dependency eslint-config-airbnb-base to v14.2.1 (d227fe9f) + * update commitlint monorepo to v11 (90bcfa6d) + +##### New Features + +* #8864, add action:events.log (9c5c32d4) +* show db info side by side (62c0454c) +* add language keys for admin-settings-api (d32e4e02) +* #8824, cache refactor (#8851) (f1f9b225) +* move mkdirp to beforeBuild so it doesnt get called twice (6255874e) +* group exists API call in write api (d2631922) +* user exist route in write api (1446cec7) +* new shorthand route /api/v3/users/bySlug/:userslug (60e1e99b) +* allow passwords with length > 73 characters (#8818) (512f6de6) +* #8821, allow guest topic views (9e3eb5d4) + +##### Bug Fixes + +* #8869, dont escape category title,description twice (567c5f20) +* refresh flags list on bulk action success (769aba0a) +* test breakage from f300c933a50263039a57811f8cc716df39a138b0 (ee4d90f6) +* remove some unnecessary jquery wrappers (9f7902ef) +* send back jquery object to keep backwards compat (978f1ee0) +* use header/footer cache in prod (a0164b1c) +* add missing maxAge to cache (05a92885) +* clear header-cache after each suite (3f5f38dd) +* show msg on fail (255cf43e) +* spec (fe63c6ae) +* guest header/footer cache (2e446392) +* #8846, possible fix (74951f59) +* winston error message (16d03975) +* permanent redirect on user api redirect shorthand (6b196a20) +* user exist route needs no authentication (f2bb42c0) +* #8840, don't crash if /compose route is called with no query params (c61dee4b) +* XSS in event:banned messaging modal (f68bce86) +* #8838, fix chat dropdown timestamps (78ee8332) +* #8836, truncate fullname (76cd5b0f) +* #8827, do not require admin:users privilege to ban users (891a1ea2) +* **deps:** + * update dependency nodebb-plugin-mentions to v2.13.4 (1460a7a8) + * update dependency diff to v5 (72d1b3cd) + * update dependency nodebb-theme-persona to v10.2.67 (#8847) (e250c3f1) + * update dependency json2csv to v5.0.4 (#8865) (ba7b23ac) + * update dependency postcss to v8.1.7 (#8866) (2946bb16) + * update dependency nodebb-theme-slick to v1.2.40 (#8863) (20f4fe08) + * update dependency nodebb-plugin-mentions to v2.13.3 (#8862) (c18f4491) + * update dependency benchpressjs to v2.1.0 (14ba6383) + * update dependency benchpressjs to v2.0.9 (381a32ab) + * update dependency mongodb to v3.6.3 (#8841) (7e273e77) + * update dependency nodebb-theme-persona to v10.2.66 (#8839) (00f90cd9) + * update dependency nodebb-plugin-mentions to v2.13.2 (#8835) (064c99cd) + * update dependency postcss to v8.1.6 (e0cf9740) + * update dependency @nodebb/socket.io-adapter-mongo to v3.1.1 (#8831) (40eb658b) + * update dependency @nodebb/mubsub to v1.7.1 (#8830) (7b8a5567) + * update dependency postcss to v8.1.5 (9f5ef9d0) +* **#8828:** web install templates now compiled (#8832) (de5a21f1) +* **acp:** max-height for plugin menu list (eec630f1) + +##### Refactors + +* move session revocation route to write api (f300c933) +* change Benchpress.parse to .render (#8856) (e128264b) + +#### v1.15.0 (2020-11-04) + +##### Breaking Changes + +* remove toolsVisible in post tools' menu [breaking] (7e7366be) + +##### Chores + +* update changelog for v1.15.0-rc.5 (69f4d5ac) +* incrementing version number - v1.15.0-rc.5 (4bd2788b) +* add info log into tests (b6d86878) +* update renovate config to automatically merge non-major version bumps #yolo (1c8b8ce1) +* update changelog for v1.15.0-rc.4 (16882941) +* incrementing version number - v1.15.0-rc.4 (57b49320) +* update changelog for v1.15.0-rc.3 (2738041b) +* incrementing version number - v1.15.0-rc.3 (6de7760a) +* bump persona (e0b67817) +* update changelog for v1.15.0-rc.2 (c3a7ab54) +* incrementing version number - v1.15.0-rc.2 (7c084134) +* update changelog for v1.15.0-rc.1 (4f49b3da) +* incrementing version number - v1.15.0-rc.1 (943424b5) +* update changelog for v1.15.0-rc.0 (aab5f018) +* incrementing version number - v1.15.0-rc.0 (8d48455b) +* update changelog for v1.15.0-beta.30 (39648722) +* incrementing version number - v1.15.0-beta.30 (2dd3c962) +* some optimizations for codeclimate (4a63c20a) +* update changelog for v1.15.0-beta.29 (63696c40) +* incrementing version number - v1.15.0-beta.29 (fca176d2) +* refactor src/emailer.js (75459517) +* update changelog for v1.15.0-beta.28 (fd975a66) +* incrementing version number - v1.15.0-beta.28 (57f83162) +* update changelog for v1.15.0-beta.27 (70673824) +* incrementing version number - v1.15.0-beta.27 (78fad240) +* lint notifications.js (4fc84e9f) +* update changelog for v1.15.0-beta.26 (5e01d288) +* incrementing version number - v1.15.0-beta.26 (62c44095) +* up persona (ff8a833a) +* up persona (4a0f54ae) +* update changelog for v1.15.0-beta.25 (240a04b4) +* incrementing version number - v1.15.0-beta.25 (1124d4ee) +* up persona (032e6001) +* update changelog for v1.15.0-beta.24 (72ab5ba1) +* incrementing version number - v1.15.0-beta.24 (23ba071d) +* up persona (5407bf48) +* up persona (4c2eab4b) +* up persona (91133b0f) +* up persona (bcac0805) +* up persona (9dc4db1f) +* up persona (ba70a1bf) +* update changelog for v1.15.0-beta.23 (e6ea208c) +* incrementing version number - v1.15.0-beta.23 (61a04eb9) +* update changelog for v1.15.0-beta.22 (59ee74c2) +* incrementing version number - v1.15.0-beta.22 (9c9329ee) +* update changelog for v1.15.0-beta.21 (8089542e) +* incrementing version number - v1.15.0-beta.21 (966cdc13) +* update changelog for v1.15.0-beta.20 (1650f303) +* incrementing version number - v1.15.0-beta.20 (c8e57ec1) +* update changelog for v1.15.0-beta.19 (9cde5105) +* incrementing version number - v1.15.0-beta.19 (2eb7c284) +* update changelog for v1.15.0-beta.18 (b2ca9686) +* incrementing version number - v1.15.0-beta.18 (e096791e) +* update changelog for v1.15.0-beta.17 (d6178158) +* incrementing version number - v1.15.0-beta.17 (f1c28092) +* update changelog for v1.15.0-beta.16 (e08297ff) +* incrementing version number - v1.15.0-beta.16 (6043c9cb) +* update changelog for v1.15.0-beta.15 (f878b92c) +* incrementing version number - v1.15.0-beta.15 (10b94f9b) +* update changelog for v1.15.0-beta.14 (5e60d092) +* incrementing version number - v1.15.0-beta.14 (6ca4b86f) +* update commitlint config (61a8c6f0) +* update changelog for v1.15.0-beta.13 (ca8d492b) +* incrementing version number - v1.15.0-beta.13 (bdd71c51) +* update changelog for v1.15.0-beta.12 (0a242605) +* incrementing version number - v1.15.0-beta.12 (b852c9b7) +* update changelog for v1.15.0-beta.11 (f07ba866) +* incrementing version number - v1.15.0-beta.11 (c1ce7391) +* update changelog for v1.15.0-beta.10 (9c34eced) +* incrementing version number - v1.15.0-beta.10 (f252d4d7) +* update changelog for v1.15.0-beta.9 (affc7927) +* incrementing version number - v1.15.0-beta.9 (8dc513da) +* update changelog for v1.15.0-beta.8 (3b960c3b) +* incrementing version number - v1.15.0-beta.8 (34bb869c) +* update changelog for v1.15.0-beta.7 (e449ff9a) +* incrementing version number - v1.15.0-beta.7 (fd917b8e) +* update changelog for v1.15.0-beta.6 (a7f03b64) +* incrementing version number - v1.15.0-beta.6 (a9019cbe) +* update changelog for v1.15.0-beta.5 (0e90064e) +* incrementing version number - v1.15.0-beta.5 (81e4c4df) +* update changelog for v1.15.0-beta.4 (6c4aed8c) +* incrementing version number - v1.15.0-beta.4 (f2726a6d) +* update changelog for v1.15.0-beta.3 (11e2ccab) +* incrementing version number - v1.15.0-beta.3 (39178c2d) +* update changelog for v1.15.0-beta.2 (d8a9f1c3) +* incrementing version number - v1.15.0-beta.2 (59b50d0a) +* update changelog for v1.15.0-beta.1 (aeca19d5) +* incrementing version number - v1.15.0-beta.1 (4fa57fbb) +* incrementing version number - v1.15.0-beta.0 (bff80983) +* incrementing version number - v1.14.3-beta.16 (d9a05035) +* incrementing version number - v1.14.3-beta.15 (e2a253f2) +* incrementing version number - v1.14.3-beta.14 (9500871e) +* incrementing version number - v1.14.3-beta.13 (b5a2e4b6) +* incrementing version number - v1.14.3-beta.12 (f4c986a7) +* incrementing version number - v1.14.3-beta.11 (8618c32a) +* incrementing version number - v1.14.3-beta.10 (fa341714) +* incrementing version number - v1.14.3-beta.9 (9945c409) +* incrementing version number - v1.14.3-beta.8 (b5dcce9c) +* incrementing version number - v1.14.3-beta.7 (2531c44c) +* incrementing version number - v1.14.3-beta.6 (97088f68) +* incrementing version number - v1.14.3-beta.5 (a33a8a5a) +* incrementing version number - v1.14.3-beta.4 (55b3e376) +* incrementing version number - v1.14.3-beta.3 (5a5abf3c) +* incrementing version number - v1.14.3-beta.2 (bbab183f) +* incrementing version number - v1.14.3-beta.1 (2c06f6ac) +* incrementing version number - v1.14.3-beta.0 (3f87d5f9) +* update changelog for v1.14.2 (cd94c24a) +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* **deps:** + * update dependency mocha to v8.2.1 (35e725d1) + * update dependency lint-staged to v10.5.1 (2fa78e43) + * update dependency eslint to v7.12.1 (#8799) (224502d8) + * update dependency lint-staged to v10.5.0 (#8797) (1f2eca6a) + * update dependency eslint to v7.12.0 (#8791) (3108f628) + * update dependency lint-staged to v10.4.2 (#8773) (4bfd0087) + * update dependency eslint to v7.11.0 (#8747) (bb85c059) + * update dependency lint-staged to v10.4.1 (#8771) (08a240fa) + * update dependency mocha to v8.2.0 (#8772) (a471b1af) + * update dependency eslint-plugin-import to v2.22.1 (aacf8f22) + * update dependency eslint to v7.10.0 (#8687) (119ab719) + * update dependency lint-staged to v10.4.0 (2833624e) + * update dependency eslint to v7.9.0 (b1d781e8) + * update dependency eslint to v7.8.1 (#8597) (39110276) + * update dependency lint-staged to v10.3.0 (#8608) (dc1f1db9) + * update dependency mocha to v8.1.3 (#8588) (05efeff6) + * update dependency eslint to v7.8.0 (#8594) (e1b98142) + * update dependency lint-staged to v10.2.13 (efc30e97) + * update dependency mocha to v8.1.2 (#8579) (c722b0e5) + * update dependency grunt to v1.3.0 (df61d080) + * update commitlint monorepo to v9.1.2 (877cdfb9) + * update dependency eslint to v7.7.0 (#8564) (f1398da2) + * update dependency jsdom to v16.4.0 (#8554) (bb8f7c74) + * update dependency eslint-config-airbnb-base to v14.2.0 (#8396) (fde4f110) + * update dependency eslint-plugin-import to v2.22.0 (#8390) (788a8bfe) + * update dependency mocha to v8.1.1 (fe352eb1) + * update dependency eslint to v7.6.0 (#8540) (37418375) + * update dependency mocha to v8.1.0 (#8536) (72a78833) + * update dependency @apidevtools/swagger-parser to v10.0.1 (#8517) (8c498fa1) + * update dependency nyc to v15.1.0 (#8353) (c872bd8b) + * update dependency eslint to v7.5.0 (#8463) (b2be329c) + * update dependency jsdom to v16.3.0 (#8483) (82ada1bd) + * update dependency grunt to v1.2.1 (#8462) (b2dc6d60) + * update dependency @apidevtools/swagger-parser to v10 (9e2c3ce0) +* **writeapi:** cleanup (f6782471) + +##### New Features + +* add back error handling for a number of api calls (1afd2150) +* #8823, remove hardcoded write concern (a338f527) +* #8817, add login clientside hooks (715775a7) +* use github actions for ci (#8811) (eddf4a4f) +* allow mods/admins to see deleted posts on user profile (6e85920c) +* rearrange buttons on manage/users (27016d22) +* #8801, disable express compression by default (6ac73ccb) +* allow passing subset of user settings on update route (ec03af7a) +* wip, write api tests framework (b156b8b5) +* add filter:category.getFields (88a07e69) +* move postercount to topic hash (0db0231c) +* add free and total mem usage to info (a7b6d0df) +* new filter filter:teasers.configureStripTags (177a9610) +* send 'Vary' header when ACAO header set (d68ffea8) +* add filter.topics.getPostReplies (7a019494) +* topic reply to use api lib (also + missing file) (21974a77) +* send 401 for invalid-uid (ede9435f) +* async/await admin/search (c913900e) +* ignore test folder (2927509a) +* send back 403 on no-privileges error (14f9d8b0) +* refactor groups.delete (8ae1f81c) +* move groups.join to api (d69e503d) +* allow plugins to define api routes (9dd3cc04) +* require https if nodebb is configured with https url (a4ba2389) +* add nyc config (3326d80c) +* change user search to use filters array (a2edb86d) +* add filter (959314c9) +* require csrf token if not using bearer token (1e07886f) +* #8662, verified/unverified user groups (682e926c) +* more fixes (700e1e43) +* more work (40a05b70) +* wip admin/users (b038ac07) +* set unread false for guests (7beaf490) +* add stack to deprecate message (01265d08) +* add checkbox tests (d76229c0) +* add test for serialize/deserialize form (e92d4719) +* disable write api tests until fixed (ae5fb103) +* #8734, add slugify module, deprecate utils.slugify (bddfcb58) +* #8734, move bootstrap-tagsinput to package.json (f16c8268) +* #8734, move deserialize/serialize to package.json (eab7489e) +* #5964, #8734 remove colorpicker (948f2614) +* #8734 remove unused files (c721625a) +* #8734, move sortable to package.json (cc705e5e) +* #8734, move bootbox to package.json (300a8755) +* load jquery-form before using (3b231360) +* #8734, jquery-ui, jquery-form, timeago (#8748) (fda2aedf) +* remove unused textcomplete file (59311a63) +* #8734, remove semver.browser (ae3a231f) +* #8734, move slideout to package.json (2c1897b3) +* #8734, move tinycon to package.json (9c157de0) +* #8734, move visibilityjs to package.json (43589a74) +* #8734, move nprogress to package.json (a46cbb62) +* #8734 move r.js to package.json (aa08f882) +* revoke user sessions above threshold (#8731) (b3ed26ac) +* filter:settings.get plugin hook (c7d15dfa) +* topic delete/restore/purge/(un)pin/(un)lock (da25ce4d) +* add new api page to ACP menu (5fc7e7bf) +* management of API tokens via ACP (49652e6f) +* added DELETE /api/v1/categories/:cid route (3072de48) +* added PUT /api/v1/categories/:cid route (e942ad81) +* added POST /api/v1/categories route (dc666fd8) +* added PUT/DELETE /api/v1/users/:uid/ban routes (a5af2dc8) +* added POST and DELETE /api/v1/users/:uid/follow routes (b5bbcbae) +* added PUT /api/v1/users/:uid/password route (7aed174e) +* added DELETE /api/v1/users/:uid and DELETE /api/v1/users (a1ddc210) +* added openapi.yaml file for BEST documentation (91b79f17) +* added checkRequired middleware for API calls (7b6d43bc) +* migrating write-api skeleton into core (ec5c48b1) +* remove post/header selector (1542a5d7) +* category filter on post queue (#8710) (5d9a8681) +* #6594, add top/popular sections to digest email (#8709) (e60357d2) +* dedicated sorting buttons for plugin ordering in ACP (1761e13d) +* #8233, search sub categories (54737d30) +* move service-worker.js into its own file (f4d76f1e) +* analytics:maxCache setting in ACP (14ba1a6d) +* #8695, allow sort for guests (ea0f3262) +* up recommended size to 512x512 + ACP labels for PWA (9c5b6907) +* upload maskable icon for PWA (6478b32d) +* show top 5 trending plugins in new tab in Extend > Plugins (b12e8d63) +* register service worker, #8126 (aa268d5e) +* add theme-color meta tag for browser address bar (5172d731) +* basic service worker, minimum requirement for for a2hs; see #8126 (f69697b3) +* option in ACP to configure notification/email delay for chats (5b427a0c) +* allow autocomplete to pass optional params to user.search (611f3c61) +* upon plugin installation via ACP, check against nbbpm first (5ddf7022) +* up benchpress (8e88ccd6) +* add row highlighting for popular and unread (2cd5f959) +* return to previous page and/or category after marking topic unread (48a8ec4a) +* add missing lang key (bd9b6c99) +* add number of posters to topic (83d4e7ef) +* hightlight matches in quick search (f2f3ba49) +* add loading indicator (d38c8722) +* allow plugins to override tags and tag counts (81595095) +* edit test (ccddbb15) +* add x-posts/x-votes keys (23de5613) +* allow adding nested replies to a target component (ddc0ac37) +* hotkey "/" to open ACP search (43571bac) +* ctr-s for save on privileges page too (763cec31) +* ctrl-s now saves on settingsv1/v2 forms (80931423) +* single href (6669b23d) +* allow passing in container to threadTools (7148be2f) +* expose calculateTopicPostCount and getChildrenTree (43742437) +* allow custom req.query.filter on /unread /recent (de824007) +* fullname search (#8641) (4be693f2) +* sorted set lex test (9389749b) +* add topicIndex to category page (c1c617b3) +* up lavender/slick (34eb1bd2) +* switch to using topic/select component for merge (f6d56466) +* undo for posts move (762e9fe8) +* #8626, new move posts modal (5a40d26b) +* refactor app.js (5002e0f6) +* remove global RELATIVE_PATH (19c44861) +* remove app.template (3cd3b7a1) +* remove global window.templates (630bac2a) +* remove app.isConnected, use socket.connected (fddeb5c0) +* use const/let (6fc31df0) +* allow nbb to work with cloudflare rocket loader :rocket: (4d665955) +* move code (53a5f151) +* #8602, dont send emails to unconfirmed addresses (b6917b9d) +* add partials/footer/js.tpl (94da9fe5) +* add missing name to profile image upload (54b49725) +* add action:user.removeCoverPicture (b0a75922) +* add user data to action:user.removeUploadedPicture (962446a5) +* add userData to action:user.delete (9542ef12) +* force upgrade scripts for test (1b7ba2c8) +* replace relative urls to absolute before sending email notifs (1e5981c0) +* add client side action:flag.create (09de364e) +* additional sorting options for flags (0c203517) +* new filter hook prior to post queue addition (8cc36de2) +* add replies to getPostSummaryByPids (a9dfc9a7) +* add reply count to getPostSummaryByPids (de0f4aad) +* theme work for #8580, closes #8580 (6e805c1b) +* allow undo of topic move (abb5e81d) +* added alert.timeoutfn (cd8e7963) +* sort dependencies alphabetically (a4dbbc37) +* up persona (af9f328c) +* banning a user will resolve their post flags (354e6ccc) +* theme changes for #8571 (5415c01c) +* logic for bulk actions in flags list, #8571 (a3a22793) +* expose global/admin privileges to all routes (4737f937) +* additional tests for #8569 (e047b72c) +* flags list sorting, closes #8569 (346db0d8) +* up theme (bd557af2) +* allow adding multiple users to group (35a538ec) +* add filter:group.getOwnersAndMembers (f1e82b64) +* pass uid into filter:flags.list (9c70b662) +* added security policy for github (45c8de12) +* up deps (b97b51a8) +* one more test (a333cb6c) +* tests for password change (ecda4ad8) +* limit privileges column to superadmins only (0903eb4b) +* use nodebb-scoped bootswatch (12edd18b) +* use assetBaseUrl instead of hardcoding (6e918858) +* load timeago strings client-side (558a2d73) +* +assetBaseUrl, -l10BaseUrl, -requireBaseUrl (9adaccd0) +* #8550, add upgrade script test (b61a4da5) +* #8493, plugin helper for standardised link/button injection (0bbb813e) +* show event/params on error (d6baf5c2) +* introduce overridable l10nBaseUrl config value (def16f9e) +* allow multiple empty lines (58933c4c) +* remove administrator property from public routes (dfabd0a3) +* focus username when modal is shown (4216c277) +* add helmet middlewares (774e5d04) +* more discrete commit-on-save instead of commit-on-change w/ confirm modals (#8541) (a716a552) +* add ability to search groups in group details page (e7a502e0) +* use category selector in category page (fb7bb8d4) +* css fixes (560f3eb1) +* add privileges shortcut to groups list (91411cc4) +* allow passing groupName to user.search (f89ec205) +* #8531, closes #8531 (292d4904) +* allow direct link to flag from post tools, #8531 (c705e08a) +* allow changing requirejs base url (c4829fd8) +* ability to clear cache from acp (bbc7737e) +* reduce amount of data loaded on acp admin page (8d8117ff) +* remove require fallback for plugins (303bffdb) +* remove /assets/stylesheet.css (762b0be4) +* add node 14 (6250a2e2) +* make category tools in acp a dropdown (24535a62) +* series upload (37e56d94) +* resolve flag on delete/purge/ban/delete account (8bd63f61) +* 8502, don't change topics sitemaps on every reply (e045436c) +* allow building custom languages during dev (0a9ea91f) +* add link-plugins.sh (cc86f079) +* remove deprecated utils.walk (609e37a6) +* consolidation of flags to reduce flagspam, #8510 (55b0e902) +* change invalid language codes to default lang (3761f05c) +* add npx, fixes ghfw (a294e1cd) +* remove topics.async.getTopicData usage (ce6b20c4) +* remove deprecated checkGlobalPrivacySettings (0cea7136) +* remove deprecated isAdmin method (a0da2ba7) +* remove file.isFileTypeAllowed (2cdb935f) +* remove deprecated hooks (4eae927d) +* update readme (9869064e) +* up node version to 10 (b39e0140) +* highlight privs row if group is added / navigating from group page (10e4ae62) +* prevent navigation away from groups page if changes are unsaved (53f6139b) +* quick access dropdown on groups page to access privileges page (2c83278f) +* #8524, allow editing category of queued topic (844f2b4e) +* remove js-enabled (ff3c3435) +* remove js-enabled.css (ec057835) +* dont load all subscribers at once (2a5f8ab2) +* short more info (23a9a334) +* #8521, allow editing title before posting from queue (2485a550) +* show language when key isn't found (764969ab) +* allow searching categories in ACP (1e7397b1) +* #8509, don't scroll chat to bottom if user scrolled up (320008cd) +* added quick link to edit privileges on the category edit page (06143ca7) +* hide some filters behind 'more filters' button (9fb9185f) +* collapsible daily flags graph (d52d7bdb) +* **acp:** autocomplete user search for welcome notifications (d40779a4) +* **writeapi:** + * user settings API (c26f2b65) + * commented-out stub code for file upload (cfee431c) + * file deletion route (f870721f) + * admin settings update route (a55b3817) + * token generation/delete routes, ACP updates (2ec838fc) + * post bookmarking (0973feea) + * post voting (9942c248) + * post delete/restore/purge (414169fd) + * post editing (f66c2fb6) + * topic tags (1605e5e4) + * topic follow/ignore (9be56294) + * adding missing files (6096f74a) + * topic posting and replying (4c833d0b) + * added DELETE /groups/:slug/membership/:uid route (40dc1c38) + * added group joining and deletion (952dc211) + * abstracted ajax calls out to new api module (d044c322) + * added POST /api/v1/groups (ba345e53) +* **openapi:** + * schema validation for write api definitions file (87e3f26f) + * refactor into indiv. files to match API & tpl routing (ffbf2d6d) + * refactor into indiv. files to match API & tpl routing (84f5e4cf) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.4.6 (b44c7e96) + * update dependency nodebb-plugin-spam-be-gone to v0.7.3 (f06d4878) + * update dependency nodebb-theme-vanilla to v11.3.0 (0d80190f) + * update dependency textcomplete to ^0.18.0 (df5d66e5) + * update dependency nodebb-theme-persona to v10.2.65 (0c7d5860) + * update dependency jsesc to v3.0.2 (#8802) (c4431294) + * update dependency nodebb-plugin-composer-default to v6.4.5 (7d0d0005) + * update dependency nodebb-theme-persona to v10.2.63 (b3ca7de0) + * update dependency nodebb-theme-persona to v10.2.62 (#8798) (12c590ad) + * update dependency nodebb-plugin-mentions to v2.13.1 (#8790) (8353857b) + * update dependency nodebb-theme-persona to v10.2.61 (#8794) (9de8497d) + * update dependency benchpressjs to v2.0.8 (#8767) (3b88545b) + * update dependency sharp to v0.26.2 (#8765) (42aed15b) + * update dependency nodebb-rewards-essentials to v0.1.4 (#8764) (25c447df) + * update dependency nodebb-theme-persona to v10.2.60 (dcf72354) + * update dependency nodebb-plugin-mentions to v2.13.0 (#8758) (411fa8bc) + * update dependency nodebb-theme-persona to v10.2.59 (#8755) (cd34bfb1) + * update dependency nodebb-theme-persona to v10.2.58 (#8754) (a77ba71e) + * update dependency nodebb-plugin-composer-default to v6.4.4 (#8752) (0399ffaf) + * update dependency benchpressjs to v2.0.7 (#8733) (f8e2324c) + * update dependency nodebb-plugin-composer-default to v6.4.3 (#8750) (666064bf) + * update dependency nodebb-theme-persona to v10.2.57 (#8749) (1c94220b) + * update dependency nodebb-theme-persona to v10.2.56 (414fe19c) + * update dependency nodebb-theme-slick to v1.2.39 (1bc99411) + * bump vanilla/persona (944a7e0e) + * update dependency nodebb-theme-lavender to v5.0.14 (#8739) (43df4b8e) + * update dependency socket.io-client to v2.3.1 (#8700) (ba62ebb6) + * update dependency nodebb-theme-slick to v1.2.37 (#8741) (45aceb26) + * update dependency nodebb-theme-vanilla to v11.2.21 (#8740) (0c7af502) + * update dependency nodebb-theme-persona to v10.2.54 (#8736) (4207dde4) + * update dependency nodebb-theme-persona to v10.2.52 (#8735) (70c085ba) + * update dependency nodebb-theme-persona to v10.2.51 (#8729) (bae2eada) + * update dependency nodebb-theme-persona to v10.2.50 (#8727) (804729fc) + * update dependency nodebb-theme-persona to v10.2.49 (#8722) (b01bc2ae) + * update dependency nodebb-theme-persona to v10.2.48 (#8721) (01702613) + * update dependency nodebb-theme-persona to v10.2.47 (#8720) (04b1daac) + * update dependency nodebb-theme-persona to v10.2.46 (#8719) (ba906d7d) + * update dependency nodebb-plugin-composer-default to v6.4.2 (#8718) (229421ed) + * update dependency nodebb-plugin-composer-default to v6.4.0 (#8716) (b3a24f74) + * update dependency nodebb-plugin-mentions to v2.11.0 (#8714) (c95a3898) + * update dependency nodebb-theme-slick to v1.2.36 (#8713) (fc2795d3) + * update dependency nodebb-theme-vanilla to v11.2.20 (#8715) (2b0deeb7) + * update dependency nodebb-theme-persona to v10.2.45 (#8711) (f14b4945) + * update dependency nodebb-theme-persona to v10.2.43 (#8701) (1d0eaafb) + * update dependency nodebb-theme-persona to v10.2.42 (2a1da61c) + * update dependency nodebb-theme-vanilla to v11.2.18 (#8697) (9bdef707) + * update dependency nodebb-theme-slick to v1.2.34 (#8696) (3e2816ae) + * bump persona (f17d42ed) + * update dependency sanitize-html to v2 (1e5621c0) + * update dependency nodebb-theme-persona to v10.2.39 (#8684) (d0010c40) + * update dependency nodebb-theme-persona to v10.2.38 (#8683) (bb04f149) + * update dependency json2csv to v5.0.3 (30aa7e83) + * update dependency nodebb-theme-persona to v10.2.36 (#8680) (07172b6f) + * update dependency nodebb-theme-persona to v10.2.35 (#8679) (68a5e7e3) + * update dependency json2csv to v5.0.2 (5a2adb42) + * update dependency nodebb-theme-persona to v10.2.33 (#8675) (abe83773) + * update dependency nodebb-theme-persona to v10.2.31 (#8673) (80dbf97a) + * update dependency nodebb-plugin-composer-default to v6.3.57 (#8672) (7ecac97a) + * update dependency nodebb-theme-persona to v10.2.30 (#8671) (c8a75631) + * update dependency nodebb-theme-persona to v10.2.24 (#8663) (72cd5f13) + * update dependency postcss to v8.0.6 (#8657) (55921ccf) + * update dependency validator to v13.1.17 (#8659) (01232090) + * update dependency sharp to v0.26.1 (#8660) (b175d671) + * update dependency nodebb-widget-essentials to v4.1.2 (#8658) (dc0a4a49) + * postcss and autoprefixer version incompatibility (70d3ad02) + * update dependency nodebb-plugin-mentions to v2.10.0 (5ea172f9) + * update dependency autoprefixer to v10 (60679481) + * bump theme versions (685633d0) + * update dependency nodebb-plugin-composer-default to v6.3.56 (#8648) (8089387b) + * update dependency nodebb-theme-persona to v10.2.22 (c5ca2609) + * update dependency nodebb-theme-vanilla to v11.2.16 (8acdf3f6) + * update dependency nodebb-theme-persona to v10.2.21 (ed0469b5) + * update dependency nodebb-theme-vanilla to v11.2.15 (134ebba6) + * update dependency nodebb-theme-vanilla to v11.2.14 (31635e3e) + * update dependency nodebb-theme-persona to v10.2.20 (2a13e583) + * update dependency mongodb to v3.6.2 (#8634) (4969c869) + * update dependency nodebb-theme-vanilla to v11.2.13 (#8633) (8137cdc2) + * update dependency nodebb-theme-persona to v10.2.19 (#8632) (37e37c86) + * update dependency nodebb-theme-vanilla to v11.2.12 (#8628) (7ab87072) + * update dependency nodebb-theme-persona to v10.2.18 (#8627) (2740655d) + * update dependency nodebb-theme-vanilla to v11.2.11 (#8624) (fd6259c8) + * update dependency nodebb-theme-persona to v10.2.17 (#8623) (a1d310bd) + * update dependency nodebb-theme-slick to v1.2.30 (#8620) (251ea79b) + * update dependency nodebb-theme-persona to v10.2.16 (#8618) (0d85dc48) + * update dependency nodebb-theme-vanilla to v11.2.10 (#8619) (b52301b1) + * update dependency nodebb-theme-vanilla to v11.2.9 (#8616) (69373fde) + * update dependency nodebb-theme-persona to v10.2.15 (#8614) (3c0540c1) + * update dependency socket.io-redis to v5.4.0 (#8600) (5ba23f24) + * update dependency nodebb-theme-vanilla to v11.2.8 (#8599) (97e3543e) + * update dependency nodebb-theme-persona to v10.2.12 (#8598) (1bb0896e) + * update dependency nodebb-plugin-composer-default to v6.3.55 (#8606) (dfeb65bb) + * update dependency nodebb-plugin-markdown to v8.12.1 (27426c06) + * update dependency nodebb-theme-vanilla to v11.2.5 (64f4179a) + * update dependency nodebb-theme-persona to v10.2.10 (777419b2) + * update dependency sharp to v0.26.0 (#8578) (7ca967ee) + * update dependency ipaddr.js to v2 (49aeda01) + * update dependency nodebb-theme-lavender to v5.1.0 (87674d68) + * update dependency nodebb-theme-persona to v10.2.5 (8032c8bd) + * update dependency helmet to v4 (#8543) (ad68a338) + * update dependency mongodb to v3.6.0 (#8535) (4160e828) + * update dependency nodebb-theme-persona to v10.2.4 (#8544) (b30ecffb) + * update dependency nodebb-theme-persona to v10.2.1 (#8529) (7a59c2fc) + * update dependency nodebb-plugin-composer-default to v6.3.53 (d24a4bd3) + * bump themes (b714ed22) + * update dependency commander to v6 (#8518) (75fb2a47) + * update dependency archiver to v5 (#8523) (f1cc4e29) + * update dependency lru-cache to v6 (#8490) (2941b9f9) + * update dependency connect-redis to v5 (#8480) (9c17a677) + * update dependency nodebb-plugin-composer-default to v6.3.52 (#8522) (ac257a65) + * update dependency nodebb-theme-persona to v10.1.68 (#8520) (f06b1cec) + * update dependency nodebb-plugin-mentions to v2.9.3 (#8516) (b5df5766) + * update dependency nodebb-plugin-dbsearch to v4.1.2 (649c64e4) + * update dependency nodebb-plugin-mentions to v2.9.2 (91bdc12a) + * update dependency nodebb-plugin-composer-default to v6.3.51 (0e13fd0f) +* check is banned in buildHeader (4b63f993) +* undefined call (518d4fa1) +* missing await (08ff4041) +* client side crash when creating groups (5a2b14b7) +* disallow registration attempts with password length > 4096 (c0f699e6) +* missing await (4818ec37) +* broken test (87bff6cd) +* updated commitlint config to allow longer subjects, because nobody anywhere uses an email client that limits subject lines to 72 characters (a53d49a2) +* restore old behaviour of empty json w/ 401 code in admin middleware (dda5d426) +* deprecate middleware.isAdmin (15e0731d) +* post editing not taking plugin hook results into account (4439864c) +* #8805 define our own name for write API v3 (57ed6be7) +* removed superfluous assignment (a08fb8e5) +* createNewPosts to build tpl with ajaxify.data (0b6ef61e) +* handle ACP category enable/disable states after call success (bff53de0) +* remove setCategorySort and setTopicSort (a6a52430) +* sort setting not using correct field name (9082062e) +* update readme to include psql (2d29e603) +* breaking test from 0db0231cff097a6e983683e61284a72d42bd594d (cc1c7220) +* indentation (04185d94) +* add back derpy 20 second sleep (8e7914ff) +* missing method in test error output (3ebb3a34) +* topic object in post editing data return (3c98cd3d) +* bug where token generation route would fail on null case (618e0983) +* typo (2e9f27d8) +* return early for guests/spiders (203db47b) +* #8789,cache meta.settings (156e1396) +* spec (7a318352) +* tests (63e07c94) +* #8781 (db63f5e3) +* reset button loading html (1a4c0dec) +* #8779, fix move all (e6440c0d) +* allow admins adding users to global moderators (1f43e98f) +* incorrect logic for post history editable bool (a691be59) +* [breaking] send configured config URL as origin if not custom (205a1030) +* #8776 some users unable to restore old versions via history (7a8f7049) +* #8595, dont save escaped data when renaming groups (b26e9b59) +* keep sortBy while searching (3ee4936d) +* autocomplete.user on search page (85cfe49d) +* spec (cf474ab2) +* sortby (7bddec93) +* #8774 (b3619d3d) +* #8732 (c107649b) +* #8630, sort extra deps (e362c342) +* missing doTopicAction, fix wrong api params (e78c498e) +* test (8fd3c044) +* appropriate 404 handling for write API calls (b6cce75d) +* redis hget (b2ff1594) +* reimplementing isPrivilegedOrSelfAndPasswordMatch (e98285db) +* socket user bans (3f347baa) +* broken tests from api change (222b4c95) +* tests (7d86be2b) +* handler for group.join (51a60d3d) +* add missing file (d07f0081) +* #8768 (4418ff07) +* api bug where user profile editing continued even if not allowed (cc6e995e) +* module build (bae0f343) +* tests (b295d15e) +* csrf token only on non-GET routes (20bb9c7e) +* avatar selector (4b9444f1) +* test (e6ea71c9) +* timestamp (8c6a5591) +* #8763 (331d236f) +* lastonline again (a481024d) +* caret (71d82ec8) +* lastonline values (97628e2f) +* upgrade script (1289c105) +* cant join system groups (59bbede8) +* tests (a411df13) +* update server param to /api/v3 (0e0f1506) +* typo (c68653d0) +* testing openapi write tests (7aa4d104) +* enable tests (7b2301ff) +* test fix for write API (54e6003a) +* password reset to invalidate all existing reset tokens for that uid (30b3fedc) +* show more lines (ba2e1c4c) +* #8756, pass missing req to mock (30d6a2b8) +* #8757, allow all slashes in category route (1ee93848) +* timeago test for dev/prod (7db224f6) +* timeago test (cecdd291) +* undefined api require, @julianlam (931d44b5) +* watch tooltip (e2d407b7) +* module name (aedd28e0) +* pin sortablejs (8f436eb8) +* admin jquerui requires (75c96686) +* timeago locale switch (8c019a6a) +* category RSS feed was displaying deleted topics (9a5b8a79) +* #8734 make nprogress module (45e8a4d5) +* regression caused by 754595172549ba39b406bd36fc3387d95782d84f (8af30a51) +* dont allow adding duplicates to privileges page (12c8b1c2) +* #8728, dont add admins to table (f259063f) +* remove debug log (675a62da) +* tests (adcadbb2) +* bad merge w/ category ACP page (cb9369f1) +* bad logic in group assertion middleware (8e89f34d) +* errors thrown if no password sent in to profile edit route (7757f965) +* bug where middlewares seemingly ran in parallel (549ca110) +* follow route to match spec (db5c5b2c) +* missing one property in openapi doc (af2e424f) +* error handling with POST /api/v1/users (d8879d21) +* use POST call for user creation in ACP (58043e07) +* user creation POST route returns user data, updated openapi spec (bba2a463) +* selector, so it doesnt effect suggested topics (7138d433) +* use proper api url (264818e5) +* tests, get latest release tag recursively (8eb62e22) +* use app.parseAndTranslate instead of benchpress.parse (fc603a53) +* sorted list delete button (20e0cc5c) +* unable to register async method as response hook listener (dde5b6b8) +* dont allow sorting pinned topics on recent (b955fd36) +* use console.info instead of console.log for sw registration (3c7f79cb) +* spec (7cd83b9a) +* spec (6924eb6c) +* test (cb2f6f7c) +* dont let mods load postqueue for a cid they are not a mod of (7bf6d3b8) +* show disabled categories in admin&mods (2ea9768e) +* prevent mutiple highlighted rows on category/topic pages (60afb110) +* spec (fbd85680) +* do not show TOC if fewer than 2 headings (f1de084d) +* params cached in autocomplete module (caa8c00f) +* #8686, deprecate `plugin.json/library` (#8705) (017af63f) +* updating minimum node version in readme (d3951ebe) +* update "install plugins" link to go to the download tab (5441651e) +* overflow on submitPluginUsage field (c56236f0) +* #8699 tags route is case sensitive, though tags are not (38f88fc5) +* early button/anchor clicks do nothing (8437130e) +* early button/anchor clicks do nothing (966d3f76) +* error on `reset -p` if plugin is not active (7f58e3ab) +* manifest test + remove duplicate test (bf3c1c08) +* typo in getCompatiblePlugins (07af6213) +* typo (54705cc4) +* manifest - use absolute URL for start_url (31528a52) +* prefer webmanifest extension over json (46800b66) +* update notification delay ACP help text (4c1e717b) +* #8681 change owner modal's search should check if user is banned (b6f2f0e5) +* add img-responsive to post queue post items (f8032cd0) +* language key in reset password (2ad33058) +* issue where the last flag filter could not be removed (0fffe289) +* multiword match highlight (f8ef380b) +* tooltip placement on navbar search (82ab6cd3) +* rogue tooltip on navbar profile icon (683c01b0) +* #8580, @julianlam (445a840b) +* topic count on category page if filter is author (bbf6889e) +* match api when modifying ajaxify.data.deleted (int, not bool) (703ac1b6) +* lock/unlock toggle issue (9a7c3c68) +* #8665, trim email before checking validity (ac43cd8b) +* editing posts saving uncessary data (e72fe259) +* api spec (654d5830) +* #8640, add bookmarks to intFields (4f14dc7a) +* change user tooltip container to content (02a48e1c) +* auth tests (fe2dc310) +* #8656, rename /api/me to /api/self (af43f0e4) +* add user tooltips to body (047c4148) +* tests (22cd2654) +* use correct topic count for category (220297d5) +* clear old value on focus (42298fe6) +* skip elements if they dont have proper index (c9c9dd2f) +* call to reskin (99f24c59) +* move necro-post to be in-line with posts (44309ee6) +* tests, because redis is TOO FAST (4fca7938) +* remove old test (5e8c3761) +* client side crash if there are no topics (a8e18fdb) +* #8418 (38d3982b) +* typo (08912361) +* tests (65d049c6) +* check if unread_tids are followed (2d5bd153) +* openapi (e9094094) +* dont use hardcoded fontawesome icons for lock pin (632793b0) +* #8629 and change undo timeout to 10 seconds (65d94a3b) +* alert_id selector (2bebdf01) +* use text-right (a78e1df9) +* remove lang keys, remove sounds menu (a34b685c) +* lavender version (8a752364) +* tests (e3a0b4b1) +* wider widget area (4bace773) +* bypass nbbpm for now (33c1bd5f) +* #8432, add CSP frame-ancestors (46ab2711) +* allow setting maximumAboutMeLength to 0 (4588e521) +* additional commit for CF rocket loader (a38784f5) +* stack trace (4031a8ca) +* #8604 (a2638976) +* don't toggle elements if there is no inputEl (57f67e2b) +* don't crash on outdated redis instances (896fe9d6) +* update post-queue hook names (0e58d2b8) +* accept/reject in post-queue instead of accept/delete (694f4b2b) +* new openapi def for replies addition (b5871275) +* #8582 (9f9164a9) +* debug logging :dog: (fb3b4a02) +* ip-blacklist not working after #8580 (56101ae5) +* ip-blacklist not working after #8580 (c681b4b2) +* post-queue not working after #8580 (dc5bd760) +* #8411 missing language sources for ip-blacklist/post-queue (a93e1955) +* removed invalid options for the sendmail transport (#8576) (2b785628) +* missing localisation for topic move error (bacee6b4) +* select all checkbox does not re-enable bulk actions button (5d60dce3) +* dupes in unread followed topics (55533b11) +* wrong data passed to getCategories (39f4bbaa) +* openapi spec (4f7cfd53) +* api spec (c4ad14cb) +* username, email history disappering if content was deleted (91d9333a) +* up composer (9fd37753) +* package-install clobbering scoped nodebb plugins (840cb510) +* empty "manage" menu showing in ACP (4b0cb26b) +* hide nodebb version in ACP for non-superadmins (cc268605) +* change how admin middlewares are exported (f00595b3) +* one less return, to appease codeclimate (ae68a254) +* inability to access /admin if not superadmin (03bd76de) +* #8560, fix old upgrade script (29e3ab24) +* use promises in privilege save (9cbe9389) +* overzealous click handler on flag list row (7a5daff4) +* +comment, -debug log (9608b44f) +* multiple alerts in the same millisecond overwrite each other (589216e7) +* reintroduce 20s delay for api tests (56393795) +* client-side error in flags/detail (b2271eb6) +* #8570 (7daba7dd) +* sorting the flags list by newest is not considered a filter (3efe2362) +* flag list tests due to breaking change in API (360aa00d) +* no-widgets messaging in ACP + copy (334be113) +* #8568 perPage not acting like a filter (cabe62a0) +* #8562 (31c2b7d9) +* progress bar clobbering upgrade script name (2adae879) +* tweak upgrade script progress bar to only update 100 times in total (ac75c9a0) +* navigation title unescape upgrade script tweak (80a2a700) +* new language key for error handling (7456a0e3) +* upgrade scripts not run properly if schemaDate is present (de8eebbd) +* #8556, catch errors from admin check (bfaf648e) +* upgrade script for 1.15.0 (32682738) +* improper targetUid check during password change (16cee1b0) +* #8547, remove old deps during upgrade (#8557) (1d170e0c) +* #8558, only navigate if user is in same topic (79e847d4) +* upgrade script (231d34d0) +* don't allow duplicate upgrade script names (8887f0ed) +* tests (d6297b28) +* send hard 404 instead of soft 404 for missing modules (9f3b7811) +* #8549 send 308 Permanent Redirect on topic/category shortlinks (68f8d6e3) +* remove default helmet (c39c5113) +* map instead of forEach in privileges save (a7071bb8) +* remove duplicate configuration for helmet-hsts (0f10e083) +* don't process invalid topics, fallback to 0 score (335169f2) +* tests (6924a222) +* #8539, enforce content checks for post queue (bb224184) +* bug; additional reports could be added by the same user repeatedly (0f2b6f1f) +* #8538, go to first unread instead of last read (519e6659) +* #8533, validate and retry password during setup (0d698a07) +* #8534, dont show modal on search (9e80a9ef) +* language string (9f346c53) +* api test (8415d2f0) +* tests (9df871be) +* tests (69fb1527) +* reverse uid checks (7331faed) +* acp view category button if category is a link (2dfe9d49) +* remove old test (52718ce0) +* #8515, fix login redirect on subfolder (5e5815f0) +* tests (f48d1556) +* #4695, remove new notif alert (fd4c3cda) +* too small sortable handle for ACP>Manage>Categories (8473e165) +* less fixes for category dropdown (db07dd85) +* move check inside lock (57135761) +* #7351, display less errors with location and error message (d1cb405d) +* use shorter git url, #8527 (345fd72b) +* cursor for category select (4c90fac4) +* api docs for admin/manage/groups/x (8769e28b) +* edge case in test (b9cff577) +* api tests (42af4b57) +* #8500, allow regular users select topics on unread (7260646d) +* don't crash if content is undefined (4658121a) +* crash if csrfToken does not exist (a3c8d456) +* try again (6f889c9c) +* more tests (a46adb3f) +* tests (65395ae5) +* tests (72c60d19) +* tests (67ca5e32) +* #8508, dont allow moving topics if not moderator of target category (36531511) +* composer textarea placeholder l10n /cc @pitaj (1e14af45) +* **openapi:** + * final fixes to schemas (14e5c24e) + * users.yaml (16873800) + * moved write-api to public/openapi (49994f3a) + * test for new trending plugins in ACP (3fbddbe2) + * tests (d935f036) + * new api definition (8ff09630) +* **writeapi:** + * more tweaks to schema files (b2e9e3e0) + * fix components, + tag object schema (9f9e3c15) + * missing files for tests (a4f3270f) + * normalizing data (1392d064) + * tests (b092f65d) + * added examples to all parameter objects in schema (93f65f89) + * tests (ebcb664b) + * tests (229eb2c2) + * tests (b8703ba9) + * tests (41f55b7a) + * calls to profile editing routes 200 even if user DNE (8e7baac6) + * client-side group join API call (68ecf41e) + * authenticate middleware logic to work better with await (fd67355b) +* **refactor:** + * patching helpers.tryRoute for API routes, some re-org (d15d9e44) + * merging write-api auth middlewares with core middlewares (f6433ef2) +* **bug:** #8611, custom route logic corrected (#8612) (64a457a4) +* **docs:** updating changelog (6e34b9ef) + +##### Performance Improvements + +* reorder async calls (93bdfe2f) + +##### Refactors + +* simpler check in user.blocks.filter (a02ae6f5) +* remove usage of middlewares (266d7587) +* remove /users/{uid}/settings/{setting} route (aa8faf58) +* api test suite to accept methods other than GET (843aff58) +* remove unnecessary wrapper (a512d994) +* remove console.log, extra require (75024c35) +* show more lines of stack trace (ea31f505) +* posts api (d9a16855) +* post restore/delete/purge (272e73da) +* merge post.edit (9738e202) +* deprecate socket.emit('users.search') use api route (2279e372) +* api categories (083c74e0) +* remove sockets.reqFromSocket (bc880ee0) +* topic follow/ignore to use api lib (9ee3cb9b) +* topic tools' actions to use api lib (68d6818b) +* topic creation to use api lib (40598b36) +* setupApiRoute signature (bf480ee5) +* remove unused middleware (688d7a2c) +* user bans to use api lib (2d252f2f) +* move groups.leave, fix some tests (e367c540) +* change password/user follow to use api lib (960e925e) +* user deletion to use api lib (430e7f58) +* socket profile update to use api lib (77481947) +* socket profile update to use api lib (31ae8a83) +* user create and profile update to use api lib (23086dae) +* use single function for api code (5e2caf19) +* async/await src/user/approval (43afe7ff) +* async/await install/web.js (3881ac30) +* async/await (1fd2eba6) +* use app.render (d89477ca) +* api module (3673accd) +* api module returns promise, error-first cb if cb passed in (a784d10f) +* remove unused search call (dd7424e5) +* switch to using slugify module (dc29f4dc) +* require style (c954db84) +* middleware.assert.* (8ecef7b8) +* rewrite modules/api.js in AMD style (a905d7f0) +* remove posts.tools.purge (ed092bf6) +* shared constants (#8707) (1aa336d8) +* post edit (16039b11) +* expose new method for appending moderation note (29b357bc) +* socket posts delete/restore/purge so tid is not necessary (#8607) (f743f920) +* ip-blacklist and post-queue language files (4dc6e64a) +* moved ip-blacklist and post-queue styles/tpls to themes (b6b94a56) +* changed way middleware was exported (cf2f1e95) +* remove util.promisify calls (01899459) +* change pwd change logic (846b7d24) +* rewrite src/upgrade.js with async/await (33c5988c) +* change incrementViewCount and markAsRead to async/await (2c35d0ba) +* for codeclimate (2ee62483) +* rewrite src/install with async/await (776e34a8) +* removed rather redundant flag reporters zset (6c00ec84) +* flags object in post tools (fcdbdf63) +* pass only needed data (f1974fb9) +* startup (c54b6b9c) +* get rid of bind calls (af91c26a) +* setting codeclimate to A (bc26883a) +* make msg pretty (8ddc8dd1) +* flag sanity checks, +feat: flag limits (e3e55f25) +* **writeapi:** + * update route prefix to api/v3, default error option (3ea1aa47) + * post.tools.purge no longer a method (5e2a3ea6) + +##### Code Style Changes + +* **openapi:** + * break write API routes into individual files (dbb4cfe9) + * move schemas and responses out of write.yaml (ffac3c79) +* updates to openapi files (2928b9b8) +* allowing some es6 features client-side (e1c40b27) +* linting (cdb79488) + +##### Tests + +* **openapi:** missing commonprops addition (0dc55bbc) + +#### 1.14.3 (2020-07-08) + +##### Bug Fixes + +* improper targetUid check during password change (c2477d9d) + +#### 1.14.2 (2020-07-15) + +##### Chores + +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* up theme (63fb2ad7) +* incrementing version number - v1.14.2-beta.1 (9d1465d0) +* up theme (15aabfd3) +* up theme (599c5015) +* incrementing version number - v1.14.2-beta.0 (fca4ee31) +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* **deps:** update commitlint monorepo to v9.1.1 (0ca7e28a) + +##### New Features + +* logic for flag note editing, #8499 (14417209) +* logic for flag note deletion, #8499 (f85a45c7) +* #8460, export groups members as csv (00d39fb3) +* pass connection options to socket.io-adapter-mongo (393f19b4) +* #8023, allow wildcard search for uid/email (3dcf5387) +* up composer (6235b31c) +* #8427, daily downvote limits (c513b88d) +* warn user if whitelisted tags are less than minTags (4adbf87c) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-mentions to v2.9.1 (c54287fe) + * update dependency nodebb-plugin-mentions to v2.9.0 (7730e7da) + * update dependency nodebb-theme-persona to v10.1.62 (#8485) (4e9743ab) + * update dependency nodebb-plugin-composer-default to v6.3.49 (#8479) (ab244ca6) +* #8499 (65240a17) +* #8500 (5e984d10) +* invalid session error modal during logout (2286ee2a) +* #8488 (b3a88331) +* category search in selector (46a66863) +* groups.updateCover (73ddf1cb) +* **docs:** bad changelog (60bf488f) + +##### Other Changes + +* update changelog for v1.14.2" (e085c846) +* flag.showModal on flag modal appearance (3379d65f) +* NodeBB/NodeBB (2fba0a14) +* update changelog for v1.14.1" (26c74409) + +#### 1.14.1 (2020-07-08) + +##### Chores + +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* incrementing version number - v1.14.1-beta.3 (e8ecef6b) +* incrementing version number - v1.14.1-beta.2 (b8d9b6b1) +* incrementing version number - v1.14.1-beta.1 (be85123a) +* incrementing version number - v1.14.1-beta.0 (c279875a) +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) + +##### New Features + +* add tools to recent/unread (#8477) (658dd03b) +* fire new hooks on chat message editing (4f51838d) +* add back redis tests (bdc4d9e7) +* remove redis test (8461a179) +* use covered query (057b783d) +* add js-enabled.css to list of preloaded css files (da29b947) +* zscan (#8457) (723fe8e8) +* fix blocksCount not being returned on user profile (bd228d5e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.1.60 (#8478) (14eafcb6) + * bump nodebb-plugin-composer-default to 6.3.48 (943a344a) + * update dependency nodebb-plugin-dbsearch to v4.1.1 (#8476) (9f06f12c) + * update dependency nodebb-plugin-composer-default to v6.3.47 (#8473) (857900f1) + * update dependency nodebb-plugin-dbsearch to v4.1.0 (#8471) (eb51cfd4) + * update dependency nodebb-theme-persona to v10.1.59 (#8468) (ee38e05d) + * update dependency nodebb-widget-essentials to v4.1.1 (#8466) (519e035d) + * update dependency @nodebb/socket.io-adapter-mongo to v3.0.1 (#8464) (412ca4ae) +* #8474 (c2ca02df) +* show stack properly (7b04d897) +* editing chat messages does not go through content sanity checks (9a6b87d2) +* don't show blocked users under nested replies (d6c619cf) +* tests (87dd6c83) +* handle scan/zscan returning duplicate elements on redis (746222d6) +* #8467, fix url to merged topic in subfolder installs (9eb748b9) +* openapi (5f1865c0) +* openapi (65c0adc7) +* dont allow searching by email/ip if not privileged (ac6b571e) +* missing backgroundImage #8386 (fef04fcf) +* dont allow searching by ip/banned/flagged for regular users (02ac44cc) +* admin privileges client-side regression (f3441fce) +* only add blocksCount for self and admins (59a2ace6) +* tests (fd20e5c6) +* better changelog (f992af05) +* **tests:** + * another shot in the dark (8853cd1a) + * shot in the dark (9458d90b) +* **openapi:** tests (c468942f) + +##### Other Changes + +* update changelog for v1.14.1" (26c74409) +* //github.com/NodeBB/NodeBB (0d9461b1) +* //github.com/NodeBB/NodeBB (ace312e0) +* post.changeOwner (b60e1cbf) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.14.0 (2020-07-02) + +##### Chores + +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) +* bump persona (19f9af94) +* latest translations and fallbacks (22879633) +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency smtp-server to v3.7.0 (e80100b5) + * update dependency eslint to v7.3.1 (#8417) (33492744) + * update commitlint monorepo to v9 (569b7664) + * update dependency lint-staged to v10.2.11 (157e7444) + * update dependency lint-staged to v10.2.10 (102a6004) + * update dependency mocha to v8 (#8393) (f4bace03) + * update dependency eslint to v7.2.0 (cd1375cb) + * update dependency eslint-plugin-import to v2.21.1 (4b577a52) + * update dependency lint-staged to v10.2.9 (#8369) (124125f7) + * update dependency lint-staged to v10.2.8 (331b1a85) + * update dependency lint-staged to v10.2.7 (d1df0826) + * update dependency mocha to v7.2.0 (ecaa9b76) + * update dependency eslint to v7.1.0 (e62d892a) + * update dependency lint-staged to v10.2.6 (78d562b3) + * update dependency lint-staged to v10.2.4 (a26011e7) + * update dependency eslint to v7 (28df9aba) + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* polish for user blocks UX (6cb31791) +* #8450, next/prev link tags on /unread /recent (eb9704f8) +* allow flagging of user acounts from post tools menu (6931f29d) +* closes #8440, allow configuring max topic count (e09ab3dc) +* add missing translation key (bffb830d) +* #3783, min/max tags per category (c718b729) +* use tags partial instead of post_bar (0482fb29) +* hide elements if search element is a direct child of dropdown (4f6b6c56) +* increase wait (6aecc177) +* move export functions into child processes (8383992d) +* display stack trace on winston.error (e80379dc) +* show more relevant snippets (f70d1648) +* #8412 breadcrumbs for ip-blacklist/post queue/flags (35a06a84) +* show editor in post diffs if available (f909ed25) +* #8408 flags' quick assignment (d5af9769) +* bump themes, closes #8406 (cb5ba76b) +* allow post diffs to be restored, #8406 (58b3d608) +* add missing translation (3a80a165) +* up composer (96cb94dc) +* more search changes (6349fa03) +* more merge/search fixes (4b38533b) +* merge changes (bb3aa540) +* more search & merge fixes (5fd05dc9) +* merge improvements wip (c4bdeae0) +* #8387 expose global and admin privs to flags detail page (4acb3fb2) +* redirect /me to user profile (3be4d5f7) +* #8384 options to delete account, content, or both (4d60eac6) +* account content deletion, closes #8381 (67aca822) +* add missing language files for #8347 (656b391f) +* privileges for Admin Control Panel (#8355) (a82e9bd7) +* add buildHeaderAsync (#8367) (842b8abb) +* #8360 flag quick actions for delete/restore/purge (8ea16348) +* #8349, remove user posts from queue if user is deleted (5a2b5154) +* up plugins (5b009e07) +* add results into results container (9ffcb6f7) +* quick search changes (f12d448e) +* move quick search into search module (bb1a56f0) +* fix session mismatch errors by clearing cookie on logout (#8338) (5781a2dc) +* add getSortedSetMembers (0009f54e) +* add privilege give/rescind hooks (#8336) (ec5582b5) +* filter followed tids by category (f3afba61) +* use getSortedSetsMembers to load followed tids (1b9e8928) +* add batch size to cursors (a015af4a) +* up cache size (9600ede5) +* tweak intersection code, add tests (4ee3543e) +* change to contains to match scoped modules (6108064e) +* improve grunt restart/rebuild speed (cb662e15) +* don't overwrite req.query.lang if it exists (4263efa0) +* convert queries so they used indices directly (12c6bc2e) +* cookie SameSite property (ae2db423) +* if only one value is passed used faster function (2587112f) +* closes #8316, add more data to export profile (f0323b6c) +* throw error if uid is missing for update (1d3fa3bc) +* ignore mongodb playground file (a219285e) +* parse quick search tpl even if no results (765b8156) +* match hook property to topic property (0e58fa33) +* add methods for adding/removing tags from topics (bfad4572) +* write-api update, WIP (9fd5c439) +* closes #8308, edit post notif for watched topic posts (a73c755b) +* add null tests for sorted sets (edf9fe3b) +* Add hooks for user blocks (#8296) (c4545381) +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **docs:** updated changelog (87c1687d) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.3.46 (5a713d85) + * update dependency nodebb-plugin-mentions to v2.8.3 (#8449) (bbd85049) + * update dependency nodebb-plugin-mentions to v2.8.0 (d40720f9) + * update dependency nodebb-plugin-composer-default to v6.3.44 (#8436) (c1991abe) + * update dependency winston to v3.3.3 (#8431) (6a8f54fd) + * update dependency nodebb-theme-persona to v10.1.55 (#8434) (a860a793) + * update dependency nodebb-theme-vanilla to v11.1.30 (#8435) (272b4992) + * update dependency nodebb-theme-vanilla to v11.1.29 (#8429) (b5a68a44) + * update dependency nodebb-theme-persona to v10.1.54 (#8428) (3ffb6fde) + * update dependency winston to v3.3.2 (54310d69) + * update dependency nodebb-plugin-spam-be-gone to v0.7.2 (11244348) + * update dependency winston to v3.3.1 (#8421) (fd628570) + * #8412 bump themes (365996e7) + * bump persona/vanilla, closes #8408 (225cac18) + * update dependency sharp to v0.25.4 (#8403) (3c3e1515) + * update dependency nodebb-theme-vanilla to v11.1.25 (#8405) (90446365) + * update dependency nodebb-theme-persona to v10.1.50 (#8404) (44273a64) + * update dependency mongodb to v3.5.9 (#8402) (90570660) + * update dependency nodebb-plugin-composer-default to v6.3.43 (78b7382c) + * update dependency validator to v13.1.1 (#8397) (2ae68f9b) + * update dependency validator to v13.1.0 (#8391) (ad6e3634) + * update dependency nodebb-theme-vanilla to v11.1.24 (#8395) (eec03de8) + * update dependency nodebb-theme-persona to v10.1.49 (#8394) (90846740) + * update dependency postcss to v7.0.32 (87ce31d1) + * update dependency nodebb-plugin-composer-default to v6.3.41 (dde830db) + * update dependency nodebb-plugin-composer-default to v6.3.40 (#8388) (cf0f8f64) + * bump themes, closes #8387 (e97a2b71) + * bump themes (ccac6a35) + * update dependency nodebb-theme-persona to v10.1.46 (#8382) (036e6ef5) + * update dependency nodebb-theme-vanilla to v11.1.21 (#8383) (7caeb273) + * update dependency nodebb-plugin-composer-default to v6.3.39 (aeefc60b) + * update dependency nodebb-plugin-composer-default to v6.3.37 (7f6ff0b1) + * update dependency nodebb-plugin-composer-default to v6.3.36 (6b2ea077) + * update dependency nodebb-plugin-composer-default to v6.3.35 (2d582df7) + * update dependency nodebb-theme-persona to v10.1.45 (#8372) (771ea194) + * update dependency nodebb-theme-vanilla to v11.1.20 (#8373) (f8ee981b) + * update dependency socket.io-redis to v5.3.0 (#8370) (d2463bb4) + * update dependency nodebb-theme-vanilla to v11.1.19 (f6ad9605) + * update dependency nodebb-theme-persona to v10.1.44 (cb28e6cf) + * update dependency nodebb-plugin-composer-default to v6.3.34 (#8357) (d7ab0894) + * update dependency nodebb-plugin-composer-default to v6.3.33 (c4047179) + * update dependency nodebb-plugin-spam-be-gone to v0.7.1 (27ab36ac) + * update dependency nodebb-theme-persona to v10.1.43 (#8343) (dabff972) + * update dependency mongodb to v3.5.8 (#8342) (8224127f) + * update dependency nodebb-theme-persona to v10.1.40 (#8332) (a20af6e2) + * update dependency nodebb-plugin-spam-be-gone to v0.7.0 (cc206b4d) + * bump composer-default (827d42a9) + * bump composer-default (a665881b) + * update dependency nodebb-plugin-composer-default to v6.3.29 (bf8a2c2e) + * update dependency postcss to v7.0.30 (#8288) (a532e2bb) + * update dependency sharp to v0.25.3 (0437ecc2) + * update dependency nodebb-plugin-composer-default to v6.3.28 (#8309) (f246057a) + * update dependency nodebb-plugin-composer-default to v6.3.27 (#8307) (6d57d844) + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* don't show in unreplied if score is null (fd400a00) +* lint (0d0b9513) +* upgrade script to unescape navigation titles (37b6b8fd) +* test (f0ce309d) +* show controls @julianlam (023de94e) +* #8437, #8433 (e53a18f2) +* copy settings showing empty category selection (ed4b5caf) +* don't init autocomplete if user doesn't have privs (8482a54a) +* only allow valid uids (00d8ce26) +* tests (f03ca086) +* vulnerability in cover and admin uploads (#8419) (48b41deb) +* reverse tabnabbing exploit in post images (040e6a9a) +* follower count going out of sync with real follower count (2bcf7f72) +* test lock for user create (#8415) (bef37e27) +* add mising timestamp (f0526bff) +* ban (bfd7eafe) +* remove use of 'hidden' class in navbar toggling (5a367ecb) +* bug where category privs page thought it was on admin (2515aa77) +* #8410 (b3115ea8) +* tests breaking due to #8406 (d5578c99) +* add missing translations (42466d3c) +* #8401, #8237 (7ed1a014) +* add timestamp to initial username history (18d89239) +* crash in export posts if post content is undefined (53a9517d) +* messaging unread (0041c024) +* whitespace (a024cc13) +* typo (0595e710) +* #8392, clear group member cache when group is renamed (89b01024) +* return false (8591f5d2) +* language (a255c8f6) +* #8386, use backgroundImage everywhere (8627bee5) +* prevent logout form from submitting (d92032da) +* missing space in ACP menu dropdown (daeceb45) +* #8385 (942cc4b1) +* acp language keys from #8347 not updated in tx config (9ae7fd3e) +* #8363, dont break history (50703db8) +* #8363, go to hash when entering topic (0c265a41) +* #8374, revert event delete (30cc83c0) +* new language tag for select_tags (09184f40) +* remove duplicate link to manage/tags in settings/tags (260a482c) +* tests (3a078f59) +* handle search tag permission as well (1b5d5425) +* checking correct permissions for user search (#8371) (f6b92d24) +* change event name so it doesnt trigger complete event (7786187e) +* clear error log before checking (75b3a81d) +* #8323, let admins send validation emails without timeout (e603ebc0) +* #8352, remove webfonts (#8354) (de7ec47f) +* more tests (da90fd56) +* tests due to 0633ad327 (98dffa3a) +* retry failed setObject calls (2c9e8657) +* acp menu items (0633ad32) +* re-jigged tags acp pages (a83f4259) +* move checks into timeout (47d73a2a) +* #8339, add missing translation (a9315aee) +* don't explode if server sends `checkSession` (84c20f91) +* eliminate unnecessary try..catch (f0e59c14) +* test breakages from 8d995d1eb609837e4e6e4c77cd855766830378fa (a66fe013) +* #8320, dont load moderators separately for each category (0a31e3e6) +* show stack trace on startup errors (11bb6abb) +* don't trigger quick search if val doesn't change (d6c2764f) +* prevent duplicate search triggers (6f78113e) +* user faster method if sorting by smallest set (3ec05eea) +* add txt to list of default allowed file extensions (01bff2ae) +* search post snipets incase content is plain text (ada45a34) +* derp includes (d484731d) +* another test fix (f2907908) +* tests (feb748a4) +* tests on redis (7a801aba) +* tests, handle no sessions (8bf980cb) +* #8318, clean expired sessions on login and get (a0d76ff0) +* tests (a032e12b) +* #8317 (81e33b93) +* #8142 invalid session warning if server-side session destroyed (526b3cd9) +* check privileges before exporting post/topic data (5fd81c5c) +* exporting posts (dfae664e) +* undefined uid when downloading posts (bdda0222) +* #8311, fix allowUserHomePage value (1ba6929c) +* dont crash if topic is null (e20ad5c5) +* if category in selector has url use it (1f992cf3) +* convert cids to string for comparison (c47a1c4d) +* missing await (97c086ab) +* add missing schema item (4e14cb57) +* category selector disabled categories (337be368) +* #8305, don't use null values (6a5e86dc) +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **openapi:** + * tests for #8412 (4cae893f) + * api change for #8387 (6a969442) + * schema for new flags api (a0e243ee) + * broken tests (45dfeeb0) + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) +* **style:** + * more switch..case (6b1d1acb) + * switch..case (922d49be) + * enforcing "better" indentation for switch..case (d135b6f7) +* **docs:** added titles to all routes (aa4ae78b) + +##### Other Changes + +* id, category fields (2355d9d5) +* //github.com/NodeBB/NodeBB (c3c8b19a) +* //github.com/NodeBB/NodeBB (0ddfb6b0) +* //github.com/NodeBB/NodeBB (d1c1cb2c) +* //github.com/NodeBB/NodeBB (79a7f892) +* user.getFields to match topic/posts (a680a95e) +* //github.com/NodeBB/NodeBB (b459592a) +* //github.com/NodeBB/NodeBB (066b442e) +* //github.com/NodeBB/NodeBB (fd6bf0c9) +* //github.com/NodeBB/NodeBB (c1d8b9bb) +* middleware.renderHeader (2727f472) +* //github.com/NodeBB/NodeBB (69a87933) +* uploadFile (7f24200c) +* #8142 invalid session warning if server-side session destroyed" (e327d124) +* ''}) (2a00b0e9) +* //github.com/NodeBB/NodeBB (8c8cdc99) +* categories.getRecentTopicReplies (aad0880f) +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) +* **deps:** update dependency nodebb-plugin-mentions to v2.8.0" (5c7d37c0) + +##### Refactors + +* make code climate happier? (0d112b36) +* shorter code (af790e3f) +* shorter code (e8f0da6e) +* change name to privileges to match other apis (2100a03c) +* making rendering of header and footer async functions (023942da) +* remove general menu from ACP (#8347) (a51fff8b) +* use getSortedSetMembers (7d484fc0) +* src/flags.js because codeclimate (cf00cda0) +* flags detail page (8d995d1e) +* move code (3b6d57e4) +* remove console.log (40b5cbab) +* shorter function (7e429884) +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.13.3 (2020-05-08) + +##### Chores + +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **deps:** + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* **openapi:** + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) + +##### Other Changes + +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) + +##### Refactors + +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +#### 1.13.2 (2020-02-05) + +##### Chores + +* incrementing version number - v1.13.2 (71f4607d) +* bump themes (027f3f22) +* bump vanilla (236a1730) +* bump persona (82ace391) +* incrementing version number - v1.13.1 (cc6758a0) +* **deps:** + * update dependency eslint to v6.8.0 (#8062) (15783213) + * update dependency nyc to v15 (#8094) (976e26a9) + * update commitlint monorepo (#8100) (eb4a1a57) + * update dependency lint-staged to v10.0.7 (#8132) (cdfbcbb9) + * update dependency mocha to v7 (#8106) (b370333c) + * update dependency husky to v4 (dd440ce9) + * update dependency lint-staged to v10.0.1 (66992a55) + * update dependency lint-staged to v10 (d74eecfb) + +##### Documentation Changes + +* updated changelog (2edc6960) + +##### New Features + +* add test for isOnline (66febb80) +* add test for change post owner (df2c7851) +* check flag values on save (assignee and state) (#8122) (8e5a2276) + +##### Bug Fixes + +* admin relogin (a5ef6b53) +* #8135 (c35a21d7) +* handle mkdirp0.5->1.0x so it doesn't break upgrade (1e50616c) +* #8134, upgrade mkdirp to 1.0.x (87225a90) +* onSuccessfulLogin not working (111ed802) +* #8139, dont allow restore if not deleted by self (8c48f94b) +* use view_deleted when filtering, closes #8137 (9969dd63) +* escape invalid rules (d927b763) +* add missing await (3cca929a) +* missing await in SocketPosts.changeOwner (0ae1eb4f) +* #8133, check if user is in room before removing (23810cc6) +* add missing await (cd1fa27a) +* missing await (f799f017) +* dont return flag data to client (418c174d) +* check if user has read priv before flagging (51236df4) +* restrict getUsersInRoom to members (1f13ab8a) +* remove unused conditional, dont add dupe messages (3077eb94) +* tests for messaging (ecc579a2) +* #8127 user join system message duplicated (594cd7e1) +* background-size in taskbar images (106c141f) +* tests, was using hardcoded message id (1b08f376) +* typo in #8116 (8bb5e71e) +* build step defaults to series instead of parallel (3fac09b1) +* escape system message, don't allow editing system messages (6a63c1a1) +* escape register query param (c8fb7f92) +* delete upload (8c6a7954) +* check uploadName (153b1a0e) +* #8120, bubble errors from static hooks (01d1ae78) +* escape bootswatchSkin and homepageRoute (b0f3e48a) +* change owner missing await (3e525576) +* hsts always enabled (e3952674) +* escape topic.thumb (b7a57996) +* #8112, don't crash hook returns no data (4eb9652a) +* escape config.userLang/acpLang, don't allow invalid language codes (e06c1bfc) +* group create/join/update name validation (61da8c29) +* don't crash if groupData is missing (48f08627) +* #8105, fix export json on page load (5a8217de) +* #8103, fix advanced menu not displaying in ACP (52774531) +* meta description missing if url doesn't have post index (10989ccc) +* create user modal instantly closing (c1b1ee61) +* login with weak password (9d074731) +* dont check password strength on login (f6d7a24a) +* **deps:** + * update dependency connect-redis to v4.0.4 (#8143) (16ab641d) + * update dependency rimraf to v3.0.1 (#8138) (726ba71c) + * update dependency validator to v12.2.0 (#8136) (f07b4bfa) + * update dependency nodebb-theme-persona to v10.1.34 (#8140) (6d7131fb) + * update dependency nodebb-theme-persona to v10.1.31 (#8129) (c510a2c4) + * update dependency mongodb to v3.5.2 (#8092) (0e49cfb9) + * update dependency sharp to v0.24.0 (#8121) (16e8f496) + * update dependency nodebb-plugin-composer-default to v6.3.21 (#8119) (ca10f8f0) + * update dependency nodebb-widget-essentials to v4.0.18 (#8111) (df5e3a73) + +##### Other Changes + +* NodeBB/NodeBB (b959c24a) +* //github.com/NodeBB/NodeBB (ee4304b4) +* //github.com/NodeBB/NodeBB (bfaba895) +* save disableLeave (#8123) (09d55581) +* //github.com/NodeBB/NodeBB (842916ea) + +##### Refactors + +* messaging (30c50361) + +#### 1.13.1 (2019-12-19) + +##### Chores + +* incrementing version number - v1.13.1 (d1e0672f) +* incrementing version number - v1.13.0 (c38b2d23) +* **deps:** + * update dependency husky to v3.1.0 (#8046) (c3418c26) + * update dependency coveralls to v3.0.9 (#8067) (0aeee144) + * update dependency eslint to v6.7.0 (32cfe96f) + * update dependency coveralls to v3.0.8 (#8054) (8ba26104) + +##### Documentation Changes + +* updated changelog (94499da3) + +##### New Features + +* better output for cli plugins list, closes #8075 (4fc69443) +* #5272, allow changing user groups from manage users page (05c9fe27) +* merge social authentication into plugins menu in ACP (f9a8ebfc) +* convert middleware.isAdmin to async/await (efd1e88b) + +##### Bug Fixes + +* #8085, fix cookie name (dec157d6) +* #8058, fix incorrect digest setting display in ACP (1b992d82) +* remove select version (6a17e32d) +* travis config (3ae98300) +* travis :dog: (3731dc4e) +* #8078, dont mark notifications read without a mergeId (a8df6d62) +* #8077, show continue chat on all profile pages (7af1c873) +* profile showing posts from deleted topics (2679f37d) +* #8073, configurable necroThreshold (4d669783) +* allow members to search as well (b323df2f) +* #8069, dont show hidden groups in search (c2cd7de8) +* missing await (33fd4a1c) +* #8064, break-word on post-queue (1bda92e3) +* #6711 (7ed002a1) +* #8061, don't crash if there is a network problem (de404102) +* #8059, properly mark topic unread when using mark unread for all (a688aaae) +* #8042, dont show errors after clearing form (3811e0a3) +* unhandled promise rejection error on reset error (51073772) +* #8050, fix redirect after registration (366ad5cd) +* make _csrf a secure cookie if the website is using https (#8045) (0efe27b1) +* #8034 (0a96c923) +* serialize (a2545204) +* show login fields if user has local password (1eca5b3d) +* use the correct attribute name for widgets (6c404b81) +* **deps:** + * update dependency semver to v7 (483d7535) + * update dependency nodebb-theme-vanilla to v11.1.12 (610ecf35) + * update dependency sharp to v0.23.4 (#8076) (eb18c182) + * update dependency nodebb-theme-persona to v10.1.30 (0514383a) + * update dependency nodebb-plugin-markdown to v8.11.0 (702ca164) + * update dependency connect-mongo to v3.2.0 (2aef7a5b) + * update dependency mongodb to v3.3.5 (#8065) (68118e43) + * update dependency nodebb-theme-persona to v10.1.29 (#8057) (34933091) + * update dependency sharp to v0.23.3 (#8044) (6fa88823) + * update dependency validator to v12.1.0 (#8055) (488ea394) + * update dependency nodebb-theme-slick to v1.2.28 (#8041) (b3511f71) + * update dependency nodebb-theme-vanilla to v11.1.11 (#8040) (d567c4ae) + * update dependency nodebb-theme-persona to v10.1.28 (#8039) (6c87bed5) + * update dependency nodebb-plugin-dbsearch to v4.0.7 (#8038) (1e2e16b4) + +##### Refactors + +* async/await middleware (a227cbe3) +* change to const/let (3454a24b) +* shorter returns (cec00795) + +### 1.13.0 (2019-11-13) + +##### Chores + +* incrementing version number - v1.13.0 (c38b2d23) +* incrementing version number - v1.12.2 (810e2c0b) +* **deps:** + * update dependency jsdom to v15.2.1 (9d946d1c) + * update dependency eslint to v6.6.0 (d0e428e9) + * update dependency lint-staged to v9.4.2 (#7954) (d108c7d0) + * update dependency mocha to v6.2.2 (#7984) (e31a47cd) + * update dependency coveralls to v3.0.7 (#7961) (9b308e4b) + * update dependency jsdom to v15.2.0 (#7971) (9b4e9882) + * update dependency husky to v3.0.9 (fd5095a3) + * update dependency husky to v3.0.8 (88cae415) + * update dependency lint-staged to v9.4.1 (a2a7bb3d) + * update node.js to v8.16.1 (f9ad826b) + * update node:8.16.0 docker digest to bb12612 (48cc317c) + * update dependency eslint to v6.5.1 (da12e947) + * update dependency husky to v3.0.7 (10a30e66) + * update commitlint monorepo to v8.2.0 (ddd4e039) + * update dependency mocha to v6.2.1 (b172d106) + * update dependency lint-staged to v9.2.3 (ccccba81) + * update dependency coveralls to v3.0.6 (#7820) (2b1f840e) + * update dependency husky to v3.0.3 (cbede89a) + * update dependency lint-staged to v9 (f2e4664d) + * update dependency eslint-plugin-import to v2.18.2 (#7779) (57b2a553) + * update dependency eslint to v6.1.0 (#7783) (7257e6b2) + * update dependency husky to v3.0.2 (7ad72b32) + * update node:8.16.0 docker digest to c671dc2 (e76214a2) + * update dependency mocha to v6.2.0 (d43f5dcf) + * update node:8.16.0 docker digest to 310db2a (c46a0772) + * update dependency husky to v3.0.1 (28151f86) + * update dependency eslint-plugin-import to v2.18.1 (9fda2c1f) + * update commitlint monorepo to v8.1.0 (f73468d5) + * update dependency coveralls to v3.0.5 (5b746d53) + * update dependency husky to v2.7.0 (1d0fd028) + * update dependency eslint to v6.0.1 (77347d0a) + * update dependency husky to v2.6.0 (fc69e891) + * update dependency eslint-plugin-import to v2.18.0 (744e4428) + * update dependency husky to v2.5.0 (4960b925) + * update dependency lint-staged to v8.2.1 (2fa68e3b) + * update node:8.16.0 docker digest to 06adec3 (fc224cca) + * update dependency husky to v2.4.1 (17ec8fde) + * update node:8.16.0 docker digest to d5ad3f5 (f9e99fa3) + * update node:8.16.0 docker digest to 75b524a (5995834b) + * update node:8.16.0 docker digest to b9a98ae (fca6d794) + * update dependency lint-staged to v8.2.0 (376390c4) + * update dependency husky to v2.4.0 (3d2ec0bb) + * update dependency coveralls to v3.0.4 (c360e0c2) + * update dependency eslint-plugin-import to v2.17.3 (eac4e2f1) + * update node:8.16.0 docker digest to 957cab2 (cc6fa97c) + * update commitlint monorepo to v8 (80532831) + +##### Documentation Changes + +* updated changelog (183b0ed3) + +##### New Features + +* displaying one-click unsubscribe link in email footer (#8024) (df139928) +* #7467, pass query params when redirecting to posts (480a64aa) +* use helpers.setupAdminPageRoute (b5a30006) +* wip, better digest handling (+ eventual digest resend logic) (#7995) (645d6472) +* add action:messaging.save (ac5c560c) +* #7957, allow post queue based on group (1cedc4a0) +* add filter:topics.unreadCutoff (e020b85b) +* Add filter:topic.delete and filter:topic.restore (#7946) (#7989) (989107d9) +* no more session cookie for guests (#7982) (cf7e0cfd) +* Implement WICG change-password-url (#7072) (#7990) (df1efe5f) +* log errors from mubsub (b01a47cb) +* upgrade to sitemap5 (#7980) (d6792188) +* #7964, change all categories at once (485fbd2f) +* closes #7952, translate widget-settings (990508a5) +* remove ability to delete events from acp (554e6711) +* resetting theme will reset skin (03827fa6) +* disable timeout on launch route (4bc77d06) +* add new hook to get custom category tids for unread (b1926054) +* adding filter:login.check and loginFormEntry[] for the filter:login.build hook (#7861) (94810fd6) +* #7932, redirect to group details after creation (2444ed5c) +* add new hook filteR:topics.getSortedTids (b93c826d) +* bypass cropper for gifs (9a756004) +* deprecate file.isFileTypeAllowed (ffe3670f) +* send notification to group owners when someone leaves (ed122364) +* add failing test for pagination (#7924) (22b02f14) +* refactor getSortedSetRange to allow big arrays (b602c044) +* add new test (1e5246f9) +* add rss feed url for tags (bbc2e956) +* add sm2x avatar class #7813 (35a4ca2f) +* #7090, abililty to hide widgets (71cd602d) +* #7760, body-parser config (5de6d885) +* actually cache duh (f05c1dae) +* cache tags:topic:count (63bd252f) +* increase search timeouts (1789ecb4) +* make handleSearch public (ebe5ed22) +* increase size of local cache (b81405a8) +* don't hardcode numberic fields in user search (09410ff1) +* allow only watching core (451c7fd4) +* client-side taskbar.update method, deprecates .updateTitle() (9b09ee0e) +* option to restrict group leaving, closes #7770 (1796b65d) +* preserver querystring when changing category sort (ad96b0e0) +* html sanitization on all filter:parse.* hooks, closes #7872 (2580306d) +* up socket.io-adapter-mongo (3d2cb628) +* update LESS to v3.x, #7855 (#7867) (aea04de0) +* up psql socket.io adapter (b565e568) +* add client side hook for quick search&normal search (f31d30cd) +* allow floating pinned topics to top in getSortedTopics (1d7e0c63) +* promisify recent.getData (6f7ab586) +* faster initial stat loading (89cd31ed) +* cache stats, mongo count sucks (cb50b3f4) +* dashboard stats (3ff6e1bb) +* add filter:search.getPosts (aeb44faf) +* add image and imageClass to post summaries (80bd52fc) +* #7842, make isInvited, isPending work with uids (fa268556) +* convert search controller to async/await (acf12e3d) +* notification on membership acceptance, closes #7835 (1a2a381a) +* additional events logged for various group actions (1ce33faa) +* async (e6353486) +* async/await controllers/admin/dashboard (32ea04a8) +* async/await admin/controllers (72590b34) +* async/await (7beef91c) +* async/await refactor (3cc7ec63) +* async/await controllers/accounts (a3541d88) +* rewrite getRawPost to async/await (b734defb) +* added new filter hook filter:post.getRawPost (973075cf) +* convert categories controller to async/await (e9fd49e2) +* new client-side hooks for chat minimize and close (3d3fa865) +* test psql without defineProperty (#7815) (af1f7249) +* fire updateRemainingLength hook for chats (af968c6a) +* send pids into filter:post.getFields hook (0e07ffa1) +* move cache tpl (65fc0612) +* async refactor (3a9d83a4) +* move group privs above user, add labels (47e30a67) +* widgets/index.js (dec8040c) +* use promise version (4d6b6871) +* #7743, meta/dependencies (1c2540d3) +* #7743, widgets/admin (96ebe7b5) +* #7743, meta/languages and languages (c02686bf) +* added filter:tags.getAll plugin hook (66aa443b) +* #7743, events (102d4b02) +* #7743 meta/errors (97d7a850) +* get rid of async.eachSeries (99cf47ee) +* #7743 meta/tags.js (7b908639) +* #7743 meta/templates.js (79eed9ae) +* #7743 navigation (764a2b12) +* #7743 account/posts controller (e72f3e4f) +* #7743 finish topics controller (9b3f4b98) +* #7743, webserver (0d047f4e) +* #7743 meta/themes.js (7dc0eaf0) +* #7743, meta/sounds (a15c50bf) +* #7743 , meta/cachebuster, meta/configs (7f72181e) +* convert src/messaging/* to async/await (#7778) (756a717e) +* #7743 meta/blacklist (fcf8fd51) +* #7743 meta/index (69860e58) +* #7743 plugins (c126cd85) +* #7743 plugins/data (f5f5f76b) +* dont waste whitespace (17f843f9) +* switch to promise.all (34d85b52) +* #7743, privileges (faccb191) +* #7743 , search.js (6d3a92b8) +* shorter name (8e75646a) +* cache group:members for priv groups (daed76d5) +* #7743 finish groups (72def7df) +* #7743, groups/index, invite, leave,membership (a39ca51e) +* #7743,groups/index,join (d5342a40) +* #7743, groups/delete,ownership,posts,user (fcd4445a) +* #7743 groups/cover,create,data (5e8614e1) +* #7743, finish post module (c0c6c652) +* #7743 posts/diff, posts/edit (c4bb467e) +* #7743, posts module (1b2b308a) +* #7743, finish user module (a51ec591) +* #7743 (6fea46b6) +* #7743 (cd80c263) +* #7743 (0a690c57) +* #7743 (1c5fad6d) +* #7743 (fe4c0481) +* #7743 categories (fcf3e077) +* #7743, user/digest, user/email, user/follow (c610eb14) +* #7743, user/create, user/data, user/delete (d6e36c31) +* #7743 , user/block, user/categories (4541caa4) +* #7743 notifications (6f738c2b) +* remove unused code, add 2 tests (cd2e68cb) +* #7743 user/ban, up mubsub (1970214a) +* #7743, user/approval, user/auth (b24ce976) +* #7743, posts/votes (8ef75be3) +* #7743 posts (e1ecc36d) +* #7743 user/admin.js (2c335955) +* add utils.promiseParallel (4170abfd) +* #7743, posts/user.js (0a6cfb37) +* added new admin option newbiePostEditDuration (#7737) (8a6a58ee) +* returning category data in tags page (75ff4d7d) +* ACP analytics API route (#7725) (a0c0ef1b) +* closes #7718 (ee4d78ca) +* add status to post summaries (41bc6ca2) +* use arrow functions (3100d803) +* ability to sort watched topics, closes #3735 (f24c14d7) +* use fewer system resources to draw the progress bar (d0ee312c) +* removed series from upgrade script (23fb904f) +* remove duped zadds, these are already in topics.onNewPostMade (cb51c239) +* log data on error (f8a7cf73) +* cleanup, use bulk (198d0587) +* #7707, added sortedSetAddBulk (3ecd703e) +* change widget-* to data-widget-* (#7703) (13efbc99) +* shorter setsCard (3780a58f) +* show best & latest posts on profile (b53a60c2) +* use db.sortedSetsAdd (7e54d7aa) +* use db.sortedSetsAdd (29a124c4) +* dont log action:plugins.fireHook (a7600b4b) +* upgrade to connect-mongo 3.0.0, closes #7693 (ebfc369a) +* add hook for user notifications, closes #7672 (ede060a6) +* user/notifications refactor (580f7860) +* send new post/topic event in batches (8c331088) +* allowing count to be passed to ./nodebb events (f6d3cc0e) +* awaitable websockets (#7645) (aee47b29) +* hooks can now return promise or call callbacks (a6436716) +* fallback strings for ACP events (99120676) +* design revamp of ACP events page (#7664) (c7f95cce) +* optimize group rename (48538b28) +* allow multiple scores in sortedSetsAdd (31ccc860) +* optimize copy privileges (0dca13e9) +* on category search reveal children and parents (0721bee1) +* async3 upgrade (#7639) (4d9bc30d) +* #7627, close chat on ajaxify on mobile (6cebc7f0) +* update meta tags on ajaxify (#7580), fixes #7544 (a41769e6) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v3.3.4 (#8032) (2093418d) + * update dependency nodebb-theme-vanilla to v11.1.10 (c01699f7) + * update dependency nodebb-theme-persona to v10.1.27 (182397b1) + * update dependency nodebb-plugin-spam-be-gone to v0.6.7 (#8027) (c2565a2f) + * update dependency nodebb-theme-slick to v1.2.27 (#8020) (7122bdc7) + * update dependency nodebb-theme-persona to v10.1.26 (#8019) (73d9752e) + * update dependency connect-mongo to v3.1.2 (#8013) (bfea9d39) + * update dependency postcss to v7.0.21 (#7998) (ef5f6714) + * update dependency nodebb-plugin-composer-default to v6.3.17 (#8009) (e1e2d20c) + * update dependency sharp to v0.23.2 (#8005) (420f9fe4) + * update dependency nodebb-theme-persona to v10.1.25 (#8012) (cb91e756) + * update dependency connect-mongo to v3.1.1 (#8006) (7655265c) + * update dependency connect-mongo to v3.1.0 (#7994) (401d1eed) + * bump persona (6155c460) + * update dependency nodebb-theme-persona to v10.1.23 (#7986) (9bd6f686) + * update dependency nodebb-theme-persona to v10.1.22 (#7965) (bf6ae6d6) + * update dependency nodebb-rewards-essentials to v0.1.2 (#7962) (692d94bf) + * update dependency nodebb-theme-persona to v10.1.21 (#7956) (1a150d8f) + * update dependency nodebb-plugin-spam-be-gone to v0.6.6 (#7944) (cffbb325) + * update dependency nodebb-theme-persona to v10.1.20 (#7943) (9589fa32) + * update dependency nodebb-theme-persona to v10.1.19 (#7942) (0d629f06) + * update dependency connect-redis to v4.0.3 (#7933) (2856333d) + * update dependency spider-detector to v2 (310039e8) + * update socket.io packages to v2.3.0 (764ed7f8) + * update dependency sharp to v0.23.1 (#7928) (17437897) + * update dependency nodebb-plugin-dbsearch to v4.0.6 (#7918) (44cd7189) + * update dependency nodebb-plugin-composer-default to v6.3.16 (#7917) (d8fe6e42) + * update dependency nodebb-plugin-composer-default to v6.3.15 (#7916) (c5e5e24b) + * update dependency nodebb-plugin-composer-default to v6.3.14 (#7914) (e18392ab) + * update dependency nodebb-theme-persona to v10.1.18 (#7906) (8ed80bcb) + * update dependency nodebb-rewards-essentials to v0.1.1 (#7905) (5b8bb3e4) + * update dependency connect-redis to v4 (#7869) (8b7f6566) + * update dependency nodebb-plugin-mentions to v2.7.3 (#7899) (b2423bae) + * update dependency nodebb-plugin-mentions to v2.7.2 (#7898) (a3120a62) + * update dependency nodebb-plugin-dbsearch to v4.0.5 (#7896) (106c20e2) + * update dependency nodebb-plugin-composer-default to v6.3.13 (#7895) (fa251ece) + * update dependency nodebb-plugin-mentions to v2.7.1 (8c2fc577) + * update dependency nodebb-plugin-composer-default to v6.3.12 (#7889) (429e124f) + * update dependency nodebb-plugin-composer-default to v6.3.11 (#7888) (516b62ea) + * update dependency nodebb-plugin-composer-default to v6.3.10 (6a4a9e26) + * update dependency nodebb-plugin-dbsearch to v4.0.4 (#7883) (12ba589d) + * update dependency postcss to v7.0.18 (c75f3d27) + * update dependency nodebb-theme-persona to v10.1.17 (317c6771) + * update dependency nodebb-theme-vanilla to v11.1.8 (6e9caddc) + * update dependency nodebb-plugin-composer-default to v6.3.9 (effe3989) + * update dependency nodebb-plugin-mentions to v2.7.0 (b69769bb) + * update dependency benchpressjs to v2 (#7876) (9149db1f) + * update dependency nodebb-plugin-composer-default to v6.3.8 (793c5eaa) + * update dependency nodebb-plugin-composer-default to v6.3.7 (57de99d2) + * update dependency mongodb to v3.3.2 (#7871) (4ee2c090) + * update dependency nodebb-plugin-spam-be-gone to v0.6.5 (#7865) (8ce2a5fc) + * update dependency mongodb to v3.3.1 (#7862) (0dfce49f) + * update dependency connect-pg-simple to v6 [security] (#7864) (e4b5d0b4) + * update dependency nodebb-plugin-mentions to v2.6.1 (a1210985) + * update dependency nodebb-plugin-mentions to v2.6.0 (cdccc646) + * update dependency rimraf to v3 (#7843) (2f02edbc) + * update dependency rimraf to v2.7.1 (#7838) (cf2504f8) + * update dependency nodebb-theme-persona to v10.1.16 (#7848) (ca7ba9be) + * update dependency nodebb-theme-persona to v10.1.15 (#7845) (b1c0beb7) + * update dependency nodebb-theme-persona to v10.1.14 (#7837) (661284cf) + * update dependency nodebb-theme-persona to v10.1.13 (eaea6f63) + * update dependency sitemap to v4 (d3d677da) + * update dependency commander to v3 (7a5dbd9f) + * update dependency mongodb to v3.3.0 (360e172e) + * update dependency nodebb-plugin-markdown to v8.10.4 (61f9be99) + * update dependency nodebb-plugin-markdown to v8.10.3 (d860f8c7) + * update dependency sharp to v0.23.0 (#7806) (2258452c) + * update dependency nodebb-theme-persona to v10.1.12 (#7799) (b9aac424) + * update dependency nodebb-plugin-dbsearch to v4 (#7797) (d98313b5) + * update dependency nodebb-plugin-dbsearch to v3.0.8 (#7796) (ef734b62) + * update dependency nodebb-theme-persona to v10.1.11 (8b1fc5c8) + * update dependency nodebb-theme-vanilla to v11.1.7 (ba1bb528) + * update dependency nodebb-theme-vanilla to v11.1.6 (#7784) (7a88c4cc) + * update dependency nodebb-theme-slick to v1.2.26 (#7782) (e074b0bf) + * update dependency nodebb-theme-persona to v10.1.10 (#7781) (4f20b4d3) + * update dependency nodebb-plugin-composer-default to v6.3.6 (3fdc638b) + * update dependency connect-redis to v3.4.2 (8a11193f) + * update dependency nodebb-plugin-mentions to v2.5.4 (45223cde) + * update dependency nodebb-plugin-markdown to v8.10.2 (86546232) + * update dependency nodebb-theme-persona to v10.1.9 (#7759) (c1660a1a) + * update dependency nodebb-plugin-dbsearch to v3.0.7 (#7758) (efedd621) + * update dependency nodebb-plugin-composer-default to v6.3.5 (7f4b1043) + * update dependency nodebb-theme-vanilla to v11.1.5 (#7756) (15e01d12) + * update dependency nodebb-theme-persona to v10.1.8 (#7755) (19679608) + * update dependency nodebb-theme-persona to v10.1.7 (#7754) (3cb6cfe8) + * update dependency nodebb-plugin-composer-default to v6.3.3 (8394a0fd) + * update dependency nodebb-theme-vanilla to v11.1.4 (#7741) (43ce5f8a) + * update dependency nodebb-theme-persona to v10.1.5 (27da2325) + * update dependency validator to v11.1.0 (#7738) (bd09ba92) + * bump composer-default (851424a7) + * update dependency nodebb-theme-persona to v10.1.4 (f426e105) + * update dependency nodebb-plugin-composer-default to v6.2.16 (#7723) (fb087029) + * update dependency nodebb-theme-persona to v10.1.3 (413259a2) + * update dependency nodebb-theme-lavender to v5.0.11 (#7705) (208c821e) + * update dependency nodebb-theme-vanilla to v11.1.3 (#7714) (e0b2ae8d) + * update dependency nodebb-theme-slick to v1.2.25 (#7713) (af7ecd2f) + * update dependency nodebb-theme-persona to v10.1.2 (#7712) (e5733f40) + * update dependency nodebb-plugin-mentions to v2.5.3 (26ff02dc) + * update dependency nodebb-theme-persona to v10.1.1 (4e513cf3) + * update dependency nodebb-theme-vanilla to v11.1.2 (c2887505) + * update dependency nodebb-theme-vanilla to v11.1.1 (#7700) (b3ed89f5) + * update dependency nodebb-theme-slick to v1.2.24 (#7699) (629b5ce3) + * update to eslint@6 (289dada5) + * update dependency nodebb-plugin-emoji to v3 (15020b46) + * update dependency nodebb-plugin-emoji to v3 (6b43d26f) + * update dependency nodebb-theme-persona to v10.1.0 (fc89516e) + * update dependency nodebb-theme-vanilla to v11.1.0 (c9689f11) + * update dependency nodebb-theme-persona to v10.0.1 (#7687) (ada8f22e) + * update dependency nodebb-theme-vanilla to v11.0.1 (#7688) (6db3604e) + * update dependency nodebb-theme-vanilla to v11 (89fea9d3) + * update dependency nodebb-theme-persona to v10 (0a7778bd) + * update dependency nodebb-theme-lavender to v5.0.10 (#7682) (e1e4abeb) + * update dependency nodebb-plugin-markdown to v8.10.0 (de046297) + * update dependency postcss to v7.0.17 (ae891390) + * update dependency nodebb-rewards-essentials to v0.0.14 (#7671) (3f4f8afa) + * update dependency mongodb to v3.2.7 (#7665) (988cbb63) + * update dependency nodebb-plugin-composer-default to v6.2.15 (e21246a9) + * update dependency nodebb-theme-persona to v9.1.38 (#7652) (d202be5b) + * update dependency nodebb-theme-vanilla to v10.1.34 (#7653) (e3308659) + * update dependency nodebb-theme-vanilla to v10.1.33 (#7651) (6f70397b) + * update dependency nodebb-theme-persona to v9.1.37 (#7650) (d43bdb41) + * update dependency async to v3.0.1 (#7649) (3b8e6e15) + * update dependency mongodb to v3.2.6 (#7616) (3f21096d) + * update dependency validator to v11 (a3d42404) + * update dependency nodebb-plugin-composer-default to v6.2.14 (#7635) (b174c2d2) + * update dependency nodebb-theme-vanilla to v10.1.32 (#7631) (85ca5b19) + * update dependency nodebb-plugin-composer-default to v6.2.13 (d1f29e26) + * update dependency nodebb-plugin-spam-be-gone to v0.6.3 (#7614) (20fa751c) +* crash if post doesn't have topic data (eabc6f47) +* don't touch objects that don't have the required fields (e52ecfaf) +* add missing await to sendValidationEmail (f4381ba3) +* #8007 added tfoot to clear new group button (dee1d447) +* tests (e3c9dafa) +* #8018, allow absolute urls in notification.path (0037a038) +* #8010, fix isBanned call (59242d31) +* #8003, check children recursively (c4e58160) +* dont show delete topics on unread (b91c4790) +* #8000, tweak wording; password reset success (3952849f) +* parseInt cutoff (0e5e47f4) +* lint (4b8897d9) +* convert param to string in slugify (441dd86d) +* cli/reset.js (#7979) (f9f85fc4) +* #7977, fix undefined url (#7978) (95a372df) +* passwords always expiring upon login (ddf3812c) +* #7974 (#7976) (ca3be1f3) +* delete follower/followingCount as well (d72b0d16) +* event tests (0da4f7ee) +* #7958, give rewards one by one (3775301f) +* rewards page acp not loading rewards (88818a5b) +* #7929, use fixed bootswatch (dd202931) +* #7960, dont try to save size for non images (f272daaf) +* #7941, validate some input fields (565f9726) +* don't show deleted topics on unread (661a0f50) +* #7951, don't send notification for system messages (c01b0fbd) +* #7953, allow icon only group badges (5b458fc7) +* remove 0 fields (ac4a5004) +* remove unused data from post/topic/user hashes (75bcb0f4) +* groups not visible on widget panes (205d3f9d) +* new nav items will show group select (c5f7b66c) +* move post and change owner (f402d727) +* 404 on new groups with spaces (b19f0a68) +* #7940, run upgrade scripts on startup (7823144b) +* #7949, delete old user notifs (38322ec3) +* tests (6fb29e84) +* check threshold before setting bookmark (f983f536) +* mongo collection stats (4e28e575) +* #7947, disable unused cookie (91e8e390) +* #7945, show watched categories in ignored categories (c9bf6d0f) +* db.init calls (18bf865d) +* #7938, escape username in registration queue (d5dda26f) +* #7901, handle group names that are translation keys (3455c27a) +* fix the order of groups on user profile (41f8da2e) +* #7935, ACP digest wording (54c9f877) +* #7934, return tids (10f168b8) +* tests (3caa387a) +* tests (9c051386) +* remove jquery (95ab0712) +* picture not showing up in change modal (13c87059) +* profile page meta tags getting escaped twice (7effc892) +* missing await (2150701f) +* potential for XSS here (40f131a6) +* account/categories (7a0f6074) +* redis tests (1f054c7e) +* #7921, dont create wrong entries in db for flag (a651d154) +* #7913, dont allow urls in fullname/location, validate birthday (babb9d7c) +* upgrade scripts (bd026cb1) +* only allow png/jpg/bmp in cover/profile images (96ab8d05) +* #7919, add useUnifiedTopology (910b9b88) +* crash in feed (873ec519) +* lang key (795d4183) +* time cutoff and lang string (5b8550f0) +* returned data (87f6ac59) +* dont send all category data back to recent&unread etc (955e00fd) +* #7912 (ecf39727) +* only return necessary data for categories (307abaa8) +* dont crash if callback is undefined (e0fec866) +* #7800, dont crash on resize (781b3f1a) +* change params (de461968) +* remove dupe code (9b151b23) +* #7894, translate log in to view (2a5fe2b8) +* minor typo (b99279a8) +* #7893, check private upload setting (0843497d) +* #7892, handle string 'true'/'false' (77cb4b55) +* dont show deleted topics in digest (4652c68b) +* #7824, update timeago settings on userlanguage change (3887fc67) +* don't move theme/plugin to top if its already active (acd95764) +* #7853, dissociation on post purge (30a86ed5) +* added comment back (0c4cd840) +* inability for plugins to actually alter parser sanitization config (fe452762) +* htmlentity instead of url encoding for room rename system message (9b8ac89e) +* page count for filters (e291a609) +* #7866, show correct title based on digest interval (547bb496) +* #7780 (21e81f96) +* pinned tids showing on page > 1 (f2912e9f) +* #7860, allow running single upgrade scripts from plugins (a4dec7e3) +* reset should not automatically build assets (a67762bc) +* update morgan and lodash (2b1912a9) +* #7842, groups.invite works with an array of uids (1e0190ab) +* #7844, add uid to events, log plugin install/uninstall events (592d9c82) +* removed console.logs (c44bf48c) +* broken tests from 71b205a889da1ee8dd326b0891d122a522084f54 (f736f0b3) +* typo (c6c13725) +* category description getting translated in ACP (647713f3) +* #7791 (71620519) +* #7831, fix pagination (014e3153) +* remove empty line (292bbe34) +* remove useless catchs and empty line (5fce4558) +* #7823, fix topic move readding pids when topic is deleted (fd5f9822) +* #7826, fix order of categories on recent dropdown (3ecac97d) +* redis pubsub not being required correctly (8d4f2086) +* mongo.close using wrong client (186321e6) +* digest not sending topics (bc6f22eb) +* #7816, adding GDPR and TOU interstitials earlier on route reloading (52a2e5d6) +* #7809, dont check postDelay if submitting from queue (9780f5b9) +* newPostEditDuration (2abe244b) +* #7789 (6a289fba) +* #7798, fix nested post selection (666e0eaf) +* #7788, fix on topic move and new post (8bf40d04) +* #7788, fix another edge case (053ff510) +* topicData passed to action:topic.edit (b10ad7b6) +* derpy catch (ce912886) +* #7788 No new posts (#7793) (3c32d860) +* user urls in subfolder install (6a486e35) +* #7765 (0b498acd) +* tests (87552c55) +* revert requires (3dd806dc) +* #7763, parse about me on all profile pages (f8d34101) +* status and groupTitle, if its not set (e2e33dfb) +* don't return promise (2f0a331f) +* socket.io methods calling callbacks twice if method returns promise (44a33520) +* tests (87b1148f) +* tests (930ffd07) +* #7601 removed check for another user when sending messages (0e8ee31b) +* mongodb tests (3b24de4c) +* getTopicsFromSet (13aaf07b) +* #7762, allow array for isBanned (9eb1fcd4) +* add flag for change post owner (46639be3) +* sitemap ajaxify (9f78bd7a) +* #7751, make necro separator a partial (2b70e86f) +* #7748, if reputation system is disabled, dont check min reputation (7b95ebbb) +* remove left over code, use proper names (0ac49d63) +* compatibility conditional (fba67196) +* private upload img replacement should happen before img wrapping (16aae517) +* #7423 private uploads are linked to login page, for guests (49e3a368) +* typo (f3440ebf) +* #7722, hsts deprecation warnings (8b1dadb7) +* upgrade script #7720 (accf48f3) +* indents (a5de54f8) +* remove debug code that should not have made it in (af17c6e3) +* dont display post tools if there are no options (708df46e) +* output span in buildAvatar helper instead of div (69fae1a7) +* restore uid in teasers userObj (67b8cb89) +* dont allow edit if post is deleted by someone else (667bc67f) +* dont show delete posts on profile (e48c7cd7) +* on new post add it to cid::uid::pids (6a7bc1c5) +* #5570, create per category user post zsets (a39f0ef5) +* restrict drag drop to pin icon, closes #7702 (e1c05e59) +* remove dupe code (68e5d7ad) +* get uids directly for csv (39ee3980) +* typo (a251032f) +* id/for (b4cc8d88) +* #7659 add option to change cookie link url (25ea6347) +* middle vertical-align for .avatar elements (1894cd9b) +* dependency checker always triggering dep upgrade, hopefully (c241551d) +* #7483, show latest undeleted message as teaser (644504ff) +* #7567, allow invite and approval at the same time (4b843ba1) +* #7625, on group rename update nav/widget items (5b85ed31) +* psql error (8d319e42) +* try to fix psql :dog: (2e6b562f) +* no need for moderate bit for global mods and admins (8aef689f) +* attribute name so it works for both templates (ebb32e78) +* #7647, fix getModeratorUids (64679b37) +* #7644 (5cd9e1bf) +* bad usage of async requisition (603c5262) +* 7638, returnTo accidentally saved into user hash (f321b426) +* #7634, make strip exif configurable (157b921e) +* #7636, use reputation threshold for post queue (a8409fbd) +* #7623, wait for lastonline to update on /users (63e5d383) +* https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/53 (e65ddc98) +* #7593, unable to set account password if no password set (80c0d579) +* incorrect pathname format for app.previousUrl (a97e97b9) +* #7598, use notice element instead of alert (106d52a4) +* #7620, allow adding new fields into user objects for posts (a8e65205) +* #7629, new filter hook for room rename (7ba4a864) +* #7628, log email send errors (7a4b68e8) +* {username} not working in notification.tpl (f55cc667) +* do not prevent nbb from starting (3b0459a0) +* #7624, default open state on stateless flags (91f0bce6) +* #7431, add /unread link to topic route (15391da5) +* #7619 (35d10f76) +* #7618 save pathname into app.previousUrl ins. of entire url (7e5cb72a) +* handle missing timestamps (172e6888) +* broken test for meta tags on ajaxify (b70e03a7) +* #7613 (15ce23da) +* #7600, removing nbsp from email CTAs (#7606) (f552cea5) +* #7604 shortened CTA text and added custom text for some notifs (#7605) (b32da57f) +* **style:** + * requiring parens in block bodies (29f96b19) + * updated code to follow new eslint recommendations (09212309) + +##### Refactors + +* use arrow function (6b3eb014) +* async/await (02d38caf) +* remove log, topics.exists (f8c8038a) +* async/await (dc8d721c) +* async/await mongo (1f0c6f3d) +* async/await socket.io/index (603908c1) +* async/await image.js (c5ffd8cc) +* remove var (05e753c7) +* async/await flags.js (ac6eb31c) +* async/await flags (0ced71be) +* shorter map (572bc297) +* remove logs (03971049) +* dont modify key (7e7ea7a6) +* remove logs (e32a5546) +* async/await flags (9ee1a882) +* shorter, new Date doesnt throw (625b0815) +* remove temp var (b842057f) +* async/await file (f9d6912b) +* async/await analytics (223c108c) +* change to const (5505628c) +* returned fields (86b16629) +* async/await emailer (63bd3fc5) +* async/await routes/feeds (ec3b5dd9) +* async/await rewards (b110aec6) +* async/await socket.io (a7d2b8a1) +* async/await (52b2d670) +* async/await (75d7ae92) +* async/await socket.io/topics (5c2afe5e) +* async/await controllers/user.js (3c6c40b1) +* async/await uploads (5c0266d8) +* move tos parsing to /tos (3e2ed21d) +* remove commented out code (ec98945a) +* async/await controllers/authentication (b9105ef9) +* remove async from isPasswordValid, function is sync (22f80116) +* make categories.buildForSelectCategories non async (6cda3698) +* remove dupe code (a4d84a66) +* async/await socket.io/posts (e93ef0d7) +* async/await socket.io/admin (88dfbf21) +* socket.io/admin/categories async/await (71e50bbf) +* admin groups.join socket async/await (4588a4fd) +* password async/await (dd8386d9) +* sitemap to async/await (0164e51f) +* remove hook assign (d3727207) +* async/await users (f9a804e0) +* remove empty line (19b63bfa) +* remove vars (69333f59) +* async/await controllers (2c4f0446) +* async/await controllers/tags (53624885) +* async/await (f15c7f12) +* globalmods/groups (0722cc47) +* controllers/category.js (bd8736db) +* use arrow func (27c27b49) +* async/await controllers/api (4eaa630b) +* async/await admin/controllers (6f375482) +* async/await, remove dupe code for homepage routes (c9250a01) +* async/await for src/socket.io/groups.js (71b205a8) +* rewrote SocketPosts.getRawPost in await style (08530bb3) +* replace avatar conditional code with buildAvatar helper (#7681) (25238899) + +##### Reverts + +* accidental removal of some needed translation source strings (868dedd1) + +#### 1.12.2 (2019-05-15) + +##### Chores + +* incrementing version number - v1.12.2 (22db818e) +* bump themes #7576 (d349754d) +* bump themes (59bdc970) +* bump themes (abcca134) +* bump themes (551b18cd) +* incrementing version number - v1.12.1 (dd973abe) +* **deps:** + * update dependency lint-staged to v8.1.7 (dc6b49ca) + * update commitlint monorepo (9998e86b) + * update dependency jsdom to v15.1.0 (fcd6dc88) + * update dependency mocha to v6.1.4 (3ff8154b) + * update node:8.16.0 docker digest to b5484d1 (6421f10f) + * update dependency husky to v2.3.0 (c20e3313) + * update dependency nyc to v14.1.1 (#7584) (9047210c) + * update dependency eslint to v5.16.0 (692e2ead) + * update dependency nyc to v14 (9210baf5) + * update dependency husky to v2.2.0 (8a018a5f) + * update dependency lint-staged to v8.1.6 (4e39caf8) + * update dependency husky to v2.1.0 (65ff0bbd) + * update dependency husky to v2 (e81a1dbb) + * update dependency eslint-plugin-import to v2.17.2 (#7546) (c1fb17f9) + * update dependency jsdom to v15 (#7556) (d4d8d98f) + * update dependency jsdom to v14.1.0 (#7555) (ca694fd1) + * update node.js to v8.16.0 (#7554) (f10708e7) + * update dependency eslint-plugin-import to v2.17.1 (69dd8e4d) + * update dependency mocha to v6.1.2 (b7169772) + +##### Documentation Changes + +* updated changelog (93b688d0) + +##### New Features + +* let theme know downvoting is disabled, closes https://github.com/NodeBB/NodeBB/pull/7568 (bd94fbc2) +* closes #7583 (cf5aeace) +* #7319 (9385c8e3) +* add node12 to travis (1a7036a6) +* allow file uploading on registration interstitial (ddffc904) +* #7527 (ba5e1eaa) +* #7515 (c38db4f7) + +##### Bug Fixes + +* #7599 image size measurement erroring out on missing path (0d86781c) +* #7590 updated chat and post edit and delete timeout labels in ACP (4f0dc443) +* tests (3a7e99a5) +* #7586, switchTimeagoLanguage shouldn't discriminate against languages w/o shorthands (1703233f) +* #7576 "Disable password changes" can be sidestepped (50260e13) +* if editing password is disabled in ACP, prevent direct access via route/socket (related: #7576) (e114b16d) +* #7582 (c9ca72d0) +* #7461 (96cb29aa) +* increase batch size (3d938e7b) +* #7564 (bf6fc502) +* group cover upload not working for s3 upload (#7571) (8945ebcb) +* test (b9903120) +* #7539 (c940a733) +* #7565 (07e9b67e) +* #7464 (32cf07d7) +* #7147 (fe6d64cc) +* #7424 (f86d74d8) +* #7562 (09681e6c) +* node12 tests (8775e7e6) +* add post queue to /compose POST route (c6cd6c57) +* remove redis object cache (4df925e7) +* #7545 (74038849) +* failing test from 00552d7183f0416a0caa113fe2f1e658659648f7 (9bf3517d) +* fire filter:register.complete for users approved via registration queue (00552d71) +* #7540 (8778f00b) +* more graceful error handling and output for cli/reset (d3ebda73) +* #6438 only apply whitelist when fields request empty (#7528) (808c4909) +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.31 (#7589) (a9f9d19b) + * update dependency nodebb-theme-persona to v9.1.36 (#7588) (bd86e58d) + * update dependency mongodb to v3.2.4 (#7581) (26d6d0be) + * update dependency postcss to v7.0.16 (10a47a29) + * update dependency nodebb-theme-persona to v9.1.33 (#7563) (7c4201f2) + * update dependency sharp to v0.22.1 (#7561) (288a25f0) + * update dependency nodebb-plugin-composer-default to v6.2.12 (#7538) (a54f8f00) + * update dependency mongodb to v3.2.3 (97a7f02f) + +#### 1.12.1 (2019-04-10) + +##### Chores + +* incrementing version number - v1.12.1 (dd973abe) +* comment cleanup (6bed51ef) +* bump persona (1f4db132) +* bump themes, fix: https://github.com/NodeBB/NodeBB/issues/7446 (0d19bb3d) +* incrementing version number - v1.12.0 (d87f8c52) +* **deps:** + * update dependency lint-staged to v8.1.5 (ae17481d) + * update node:8.15.1 docker digest to 918f0be (5f787d73) + * update node:8.15.1 docker digest to 3d43ad1 (ea77ad4e) + * update dependency grunt to v1.0.4 (a9130fad) + * update dependency eslint to v5.15.3 (d2932cf6) + * update dependency mocha to v6.0.2 (#7408) (1c671c32) + * update dependency eslint to v5.15.1 (d8486e88) + * update node:8.15.1 docker digest to c151597 (2cb0bdea) + * update dependency jsdom to v14 (a967253a) + +##### Documentation Changes + +* updating changelog (9aeb291e) + +##### New Features + +* #7515 (ac889db1) +* update unban logic/invocation and refactor User.bans module (3fbb6faf) +* add original sessionID to static:user.loggedOut (abe4abb6) +* #7501 (2ee2cd52) +* allow multiple cids for getActiveUsers (81306fff) +* manual password expiry. closes #7471 (24dcae21) +* #7358 (7211dde7) + +##### Bug Fixes + +* don't crash if templateData is undefined (eb2c3e56) +* clear children before building tree (397e062a) +* upgrade script date (4f3ca4d8) +* #7519 (ed91d3f2) +* #7517 (e479fad7) +* #7470 Properly handle recompilation of email templates (75ae29c1) +* resolve CORS error on uploading via URL (3871a02c) +* #7461 (dbc4d840) +* #7491 (8cc1864a) +* #7476 (4db0efe3) +* #7508 (b52dba5c) +* escape search snippet closes #7506 (e906bea4) +* #7490 once again (3ec9fc40) +* #7502 (3304ffe9) +* #7503 (1f3554ff) +* #7493, adding robots noindex meta tag to compose and reset routes (6415ba82) +* #7490, handling of image sizes if no size saved in db (86e1cdd5) +* #7494 (8f55ab13) +* #6911, email throttling options set (63e16ec0) +* throttling email output to 2 messages every second, fixes #6911 (33a1bf6c) +* #7469 missing email logos, occasionally (8d62ead3) +* #7487 (fddb783e) +* #7485 (78e0b983) +* move upload_url to prestart so it is defined in upgrade scripts (ad2d7a69) +* #7342 (cead89f0) +* #7477 (240f563a) +* #7473 (c289b904) +* #7378 (c37b2f2e) +* #7454 (dcdd41c7) +* #7472 (962b7f73) +* remove async.series, dont crash if postAtIndex is undefined (dd8d4f20) +* tests (c12e1d19) +* #7468 (b4a9bb10) +* #7444 Re-factor handling of og:image tags (#7463) (697a6597) +* tests (45d7e37a) +* callbacks (b48b6d75) +* return early if keys is empty (7addc5a0) +* return early if keys is empty (b3962c16) +* prevent infinite loops if category is already in children (b71e0eb1) +* #7448 (4732bed3) +* return early if there are not blocked uids (73d14e45) +* #7008 (756dfd8a) +* typo (f9d92db5) +* tests (e71ae80c) +* #7406 (cbfbcee5) +* #7432 (777ca032) +* change user/system cpu usage (aecdf739) +* strip exif data on image uploads (5eaa14e7) +* **deps:** + * update dependency nodebb-theme-persona to v9.1.29 (e5c12a49) + * update dependency nodebb-plugin-composer-default to v6.2.11 (30b042b8) + * update dependency nodebb-plugin-composer-default to v6.2.10 (cf180e09) + * update dependency html-to-text to v5 (b39ce25c) + * update dependency semver to v6 (8662aa95) + * update dependency spdx-license-list to v6 (447cf66b) + * update dependency nodebb-widget-essentials to v4.0.17 (#7489) (0f9cb86d) + * update dependency mongodb to v3.2.2 (#7482) (357f931c) + * update dependency nodemailer to v6 (0274c2bd) + * update dependency sharp to v0.22.0 (#7466) (c3261415) + * update dependency nodebb-theme-slick to v1.2.23 (#7460) (c20cd528) + * update dependency nodebb-theme-vanilla to v10.1.25 (fe30e06d) + * update dependency nodebb-theme-persona to v9.1.27 (5c605392) + * update dependency connect-redis to v3.4.1 (02804fe9) + * update dependency nodebb-plugin-composer-default to v6.2.9 (#7442) (80293146) + * update dependency nodebb-theme-vanilla to v10.1.23 (#7438) (48dd3c5b) + * update dependency nodebb-theme-slick to v1.2.22 (#7437) (3f4ae4b0) + * update dependency nodebb-theme-persona to v9.1.25 (#7436) (9887bb4f) + * update dependency nodebb-plugin-composer-default to v6.2.8 (#7435) (c18f2e1f) + +### 1.12.0 (2019-03-06) + +##### Chores + +* incrementing version number - v1.12.0 (d87f8c52) +* incrementing version number - v1.11.2 (757bff27) +* **deps:** + * update node:8.15.1 docker digest to 287b8a5 (0b8d1833) + * update node.js to v8.15.1 (ae89db28) + * update dependency mocha to v6 (#7387) (30bdb1a1) + * update dependency coveralls to v3.0.3 (#7397) (cf74904c) + * update dependency eslint to v5.14.1 (4df9c206) + * update dependency jsdom to v13.2.0 (cb5e3d83) + * update node:8.15.0 docker digest to a8a9d8e (edcb5314) + * update dependency nyc to v13.3.0 (a78f5da5) + * update dependency lint-staged to v8.1.4 (18c90913) + * update dependency eslint to v5.14.0 (9d8d2d0d) + * update commitlint monorepo (aed5b29d) + * update dependency eslint-plugin-import to v2.16.0 (e0fa6965) + * update dependency @commitlint/cli to v7.4.0 (362d9397) + * update dependency lint-staged to v8.1.1 (96644350) + +##### Documentation Changes + +* updated changelog (aec2f210) + +##### New Features + +* admin/groups style change (2b6f1a05) +* add process cpu usage to admin (db477538) +* pass options to digest (23da3009) +* revamp email templates to be more style agnostic (#7375) (f32a9922) +* lower search timeout (fc830c0f) +* quick search (8a0e1280) +* add vote status to getPostData API call (eafe76de) +* make topic search a function (d2b83967) +* quick search (c01d43e0) +* check overide (ba90bf31) +* check CI failure (f2d7f75e) +* logging password resets and errors into event log (0c09b740) +* add `action:alert.new`, `action:alert.update` hooks (daadcc48) +* allow themes to define custom classes for categories via filter:admin.category.get (5031bfe8) +* show more unread notifs (d75a0d77) +* pass topic creation data to action:topic.save (cd2f72fb) +* textcomplete over jquery-textcomplete, closes #7309 (02a8ed9b) +* new hook filter:privileges.posts.edit (f659ef4d) +* new hook type: `response` (a23854e3) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v9.1.24 (0f2d3181) + * update dependency nodebb-plugin-composer-default to v6.2.7 (#7411) (9ebc900a) + * bump markdown (82c8ee3f) + * bump markdown (7ce5a81f) + * bump persona (a0b71f09) + * update dependency nodebb-theme-vanilla to v10.1.21 (#7404) (699eddcb) + * update dependency nodebb-theme-persona to v9.1.22 (#7403) (d87751ea) + * update dependency nodebb-theme-persona to v9.1.21 (#7401) (f721155d) + * update dependency nodebb-theme-slick to v1.2.21 (#7398) (f6e55651) + * update dependency nodebb-widget-essentials to v4.0.14 (#7399) (f812e0b7) + * update dependency nodebb-theme-persona to v9.1.19 (#7392) (deff7b34) + * update dependency nodebb-plugin-composer-default to v6.2.6 (#7389) (fab32a49) + * update dependency nodebb-theme-persona to v9.1.18 (042b81a0) + * update dependency nodebb-theme-persona to v9.1.17 (#7379) (546e04e1) + * update dependency nodebb-plugin-composer-default to v6.2.5 (#7374) (d0874f34) + * update dependency async to v2.6.2 (#7365) (264eadde) + * update dependency nodebb-plugin-composer-default to v6.2.4 (30ff4582) + * update dependency nodebb-theme-persona to v9.1.16 (65df6711) + * update dependency nodebb-plugin-markdown to v8.9.0 (07b29d59) + * bump contenteditable to v0.1.1, #7325 (fbbe2ab7) + * update dependency nodebb-plugin-composer-default to v6.2.3 (#7341) (176efb5f) + * update dependency nodebb-theme-persona to v9.1.15 (#7295) (8f69ffd4) + * update dependency nodebb-theme-slick to v1.2.20 (#7197) (a82bd3d0) + * update dependency nodebb-theme-lavender to v5.0.9 (#7322) (b350be27) + * update dependency nodebb-plugin-composer-default to v6.2.2 (99f82fb3) + * update dependency winston to v3.2.1 (#7317) (7e872d32) + * update dependency nodebb-plugin-markdown to v8.8.8 (#7314) (9cf81afe) + * update dependency nodebb-plugin-dbsearch to v3.0.6 (#7305) (d48ef6d8) + * update dependency nodebb-plugin-dbsearch to v3.0.5 (#7304) (57e3f162) + * update dependency nodebb-theme-vanilla to v10.1.19 (#7301) (443dcee4) + * update dependency winston to v3.2.0 (#7299) (6f957cb9) + * update dependency nodebb-plugin-spam-be-gone to v0.6.0 (247ac828) +* #7413 (684175f7) +* #7414 (e331f6b5) +* l2spread @baris nib (0360f6e1) +* restored email logo to all outgoing emails (6c1f9c3c) +* die hydra!!! (ad6c8dcc) +* incorrect teaserPost logic (97313508) +* normalized font sizes for paragraphs in digest (43c4eb23) +* removed notification subheader translation string (6f272e34) +* broken 50% border radius on emails, failing tests (d3a10628) +* hook names getting objectified by winston (6472a065) +* failing tests from revamped-emails branch (3a7f1c19) +* #7395 (03305db8) +* mounting of all-route middlewares to router instead of app (d722f3b8) +* incorrect returnTo set in registerComplete (f972f752) +* search.api not working on subfolder (158f68eb) +* tests for #7385 (7a534453) +* #7385 better handling for errors in Adv>Databases (57069a5c) +* no relative path needed in req.session.returnTo (949b10f1) +* don't refresh page when enabling/disabling categories (d5ece9a4) +* #7373 (c2e7ae7f) +* autocomplete not triggered if chat switched (ab0e547d) +* #7366 (6c2f48f1) +* #7357 (45c322ae) +* #7359 (2996a5dc) +* re-introducing indeterminate checkbox state to ACP privs (e8f3c256) +* #7354 (c6ad8fae) +* uid check (efd7d953) +* uid checks (c24dcf78) +* only allow numbers as scores (#7356) (5917dec2) +* #7231, missing success alert on group name change in ACP (0fffcb38) +* remove debug logs (fe63fca8) +* don't use same db as prod values (39e35275) +* database 0 was being replaced with undefined because 0 is falsy (bcd62586) +* #7352 (2e2c3ac1) +* #7261, banned users still get digests (aca05560) +* #7346, panel-header widget colours in ACP (91a7b907) +* #7350 (8c68780e) +* eslint failure from daadcc4889a91b9bbd279d49db348610cc079ccc (96b6ce1f) +* prevent crash if results.stats or results.serverStatus is undefined (fab52b84) +* move `action:alert.update` to after translator (d864da1a) +* #7098 (fc6767e1) +* #7232 (70d9c6c4) +* #7229 (e59b907d) +* #7339 (12c58990) +* #7338 (8e3bf581) +* dont crash if userData is undefined #7262 (56a493d8) +* #7240 (a2f08e7d) +* give default privs on new install to guests/spiders (cd120990) +* #6806 (c72da559) +* #7334 (ae779ea4) +* closes #7217 (9d1fcf4e) +* merge post notifs (6e69a9ab) +* don't crash if body doesn't have `skin-` (f6cfbbb5) +* #7324 (c7abf07a) +* allow regular groups to local login (0366cfd8) +* #7316 (5353960a) +* #7306 (8aebe884) +* #7312 (7a4a8ea4) +* #7311, missing dependencies (263e58df) +* #7300 (920efad0) +* #6848 (70f8b418) +* #7298 privilege header misalignment (df6f75eb) +* #7211 (cf918078) +* #7215 (7a9780f6) +* #7296, local login privilege available to registered-users only (7fb3c168) +* #7094 (d03220cd) + +#### 1.11.2 (2019-01-24) + +##### Chores + +* incrementing version number - v1.11.2 (757bff27) +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update node:8.15.0 docker digest to cb66110 (1719cd77) + * update dependency eslint-plugin-import to v2.15.0 (f7191eb9) + * update dependency eslint to v5.12.1 (d928c54d) + * update dependency @commitlint/cli to v7.3.2 (6ae2b972) + * update node.js to v8.15.0 (ac39fe90) + * update dependency eslint to v5.12.0 (f96ef7bb) + * update commitlint monorepo to v7.3.1 (50594118) + * update dependency smtp-server to v3.5.0 (00063708) + * update dependency husky to v1.3.1 (719995a4) + * update dependency eslint to v5.11.0 (#7151) (26f3bdbf) + * update dependency husky to v1.3.0 (eb606281) + * update dependency jsdom to v13.1.0 (60e9430b) + * update dependency eslint to v5.10.0 (#7084) (dae861da) + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### Documentation Changes + +* updated changelog for v1.11.1 (c04e192d) + +##### New Features + +* new hook filter:user.logout (63061ffd) +* explicit handling of SSO success and failure (059a4be2) +* additional options for SSO plugins (2b9322e1) +* get rid of disk access (ed5d2d6d) +* support for one-click unsubscribe from email clients (#7203) (70a87d43) +* added new hook `static:sockets.validateSession` (#7189) (0263b4da) +* #7120 (f4ea2c43) +* #7032 (0c1ac4d6) +* small fixes (fef7e13c) +* name topic controller (b9b9d8b2) +* header (0cb9bba4) +* more naming (ae0fe5e8) +* give the rest of the middlewares names (f88db22c) +* give names to more middlewares (fdfbcc6e) +* give names to middlewares (53793e16) +* change sortedSetsScore (d2c2d56f) +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) +* **deps:** update bootstrap to v3.4.0 (#7106) (d1ea5d15) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* test (bc41848a) +* #7235 (7064fd06) +* use ACP config value for checking online status (ef0e7808) +* log error to prevent headers already sent (a22a3a98) +* #7289 timeago shorthand toggle fails on non-existant language (cee47f78) +* #7276 improper request for client-noskin.css (5ee173c2) +* #7274 incorrect handling of client script 404s (831d0795) +* #7270 Flags graph label not translatable (8ceb35f5) +* #7266 body does not contain skin class (f122fc44) +* generate timeago codes from files (7524d3c3) +* removal of timeago fallback middleware (#7259) (c831ff0d) +* post queue notifs (ac655564) +* added missing translation and error state for password change (51b5fb98) +* #7236, header search stops working after header update (3859d417) +* #7226, added placeholder styling for fa-nbb-none (87c2d108) +* escape hook method (9328eeca) +* #7216, hide taskbar on chat modal invocation on mobile (a70db885) +* #7208 (428f587c) +* #7054 (a662f118) +* #7209 (b9833483) +* missing notification (1a3838e1) +* #7193, closes #7194 (7809ba28) +* #https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/49 (6f1fb4eb) +* #7187 (28459d04) +* #7176, FUOC on app.reskin() (954af0f0) +* #7174 (9aa1aa68) +* #7181 (0d409610) +* #7142 (8da3b2a4) +* #7179 (03299736) +* #7169 Fixed logout being broken (b0eaa858) +* #7167, composer and chat not closing on logout (629b3554) +* shorter function (43e7cc0a) +* #7162 (2da0a657) +* uid filtering (72afc180) +* dont crash if default cover is invalid (41fb5cca) +* #7136 socket.disconnect() now called on invalid session (8e9de540) +* RTL not respected when changed in user settings, related to #7146 (4873a339) +* #7146 Better RTL handling on (de-)authentication (d81e0a5f) +* #7118, invoking autoLocale middleware on logout (900f0a0b) +* closes #6784 (#7137) (7fb29f42) +* 7100 (ab81cca7) +* #7139 (3917022a) +* #7116 (7e828404) +* #7138 (29a85aec) +* lint (b47f939b) +* #7091, #7093 (69e0dbbf) +* #7131 (d31684e8) +* remove cache (b2a74b41) +* loop (60390c01) +* #7124 (4650a760) +* unread badge (9f506268) +* move the check to get methods (99e0895e) +* #7115 (989879a6) +* #6979 (29b63ae7) +* upgrade script key (0eef3e1c) +* remove log (00afc5b3) +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **deps:** + * update dependency nodebb-widget-essentials to v4.0.13 (#7293) (22cbcc3e) + * update dependency mongodb to v3.1.13 (1aadbc3c) + * update dependency postcss to v7.0.14 (4d64de76) + * #7271, updating autoprefixer to latest version (a7af0198) + * #7270 (b48f1b4d) + * update dependency sharp to v0.21.3 (#7267) (8a64667f) + * theme upgrades for #7266 (5607261c) + * update dependency mongodb to v3.1.12 (eeab7d20) + * update dependency mongodb to v3.1.11 (#7252) (b5f188b6) + * update dependency validator to v10.11.0 (77dc8fc7) + * update dependency nodebb-plugin-composer-default to v6.1.21 (2fbb2614) + * update dependency postcss to v7.0.12 (f1842295) + * update dependency postcss to v7.0.11 (57bec2fb) + * update dependency sharp to v0.21.2 (8f3c4b09) + * update dependency postcss to v7.0.10 (82475fe5) + * update dependency postcss to v7.0.9 (f171c169) + * update dependency nodebb-theme-vanilla to v10.1.15 (ea059e89) + * update dependency nodebb-theme-persona to v9.1.10 (96482569) + * update dependency nodebb-theme-persona to v9.1.9 (bbe05043) + * update dependency nodebb-theme-vanilla to v10.1.14 (6cc5dbc8) + * update dependency nodebb-theme-persona to v9.1.8 (e5443690) + * update dependency pg-cursor to v2 (29acad42) + * update dependency diff to v4 (#7198) (84e228bb) + * update dependency nodebb-plugin-mentions to v2.5.2 (#7199) (0a647316) + * update dependency nodebb-plugin-markdown to v8.8.7 (90b4d40e) + * update dependency rimraf to v2.6.3 (f4cc3122) + * update dependency spider-detector to v1.0.19 (#7177) (0faba325) + * update dependency nodemailer to v5 (4993b03c) + * update dependency json-2-csv to v3 (80cee665) + * update dependency nodebb-plugin-composer-default to v6.1.20 (07bf0b98) + * update dependency nodebb-theme-persona to v9.1.7 (#7161) (c68d4ae8) + * update dependency nodebb-plugin-composer-default to v6.1.19 (#7159) (07af46ea) + * update dependency nodebb-plugin-composer-default to v6.1.18 (#7158) (584b45fc) + * update dependency validator to v10.10.0 (#7152) (8003bed8) + * update dependency nodebb-plugin-mentions to v2.5.0 (792dce14) + * update dependency nodebb-theme-persona to v9.1.6 (#7141) (325b0293) + * update dependency nodebb-plugin-dbsearch to v3.0.4 (ddd07c1a) + * update dependency nodebb-widget-essentials to v4.0.12 (#7133) (f614a44d) + * update dependency nodebb-plugin-mentions to v2.4.0 (9ab31d7e) + * update dependency postcss to v7.0.7 (7ef8c3fd) + * update dependency sharp to v0.21.1 (#7082) (bf75f3e3) + * update dependency nodebb-theme-vanilla to v10.1.13 (#7114) (fc5598b9) + * update dependency nodebb-theme-slick to v1.2.19 (#7113) (56ad43aa) + * update dependency nodebb-theme-persona to v9.1.5 (#7112) (953f8fe5) + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Other Changes + +* //github.com/NodeBB/nodebb-theme-persona/issues/363 (702be3f6) +* //github.com/NodeBB/NodeBB/issues/6433 (7e00d6b9) +* #6408 (f0f30041) +* #6425 (fbf52407) +* //github.com/NodeBB/NodeBB/issues/6073 (5da24b41) +* #5862, setting chat list height even if no message list is present (bc9a1250) +* //github.com/Schamper/nodebb-plugin-poll/issues/86 (c0f39032) + +##### Refactors + +* use loash when possible (#7230) (e1ca2d81) + +##### Code Style Changes + +* lint fix (fbe6ccd7) +* **eslint:** + * match operator-linebreak preferences (ba619c7e) + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + +#### 1.11.1 (2018-12-14) + +##### Chores + +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + +##### New Features + +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) + +##### Code Style Changes + +* **eslint:** match operator-linebreak preferences (ba619c7e) + +### 1.11.0 (2018-11-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### New Features + +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Code Style Changes + +* **eslint:** + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + diff --git a/.stryker-tmp/sandbox3435591/Dockerfile b/.stryker-tmp/sandbox3435591/Dockerfile new file mode 100644 index 0000000000..f3b76ab35b --- /dev/null +++ b/.stryker-tmp/sandbox3435591/Dockerfile @@ -0,0 +1,75 @@ +FROM node:lts as build + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +COPY . /usr/src/app/ + +# Install corepack to allow usage of other package managers +RUN corepack enable + +# Removing unnecessary files for us +RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \; + +# Prepage package.json +RUN cp /usr/src/app/install/package.json /usr/src/app/ + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive \ + apt-get -y --no-install-recommends install \ + tini + +RUN groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +USER ${USER} + +RUN npm install --omit=dev + # TODO: generate lockfiles for each package manager + ## pnpm import \ + +FROM node:lts-slim AS final + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && mkdir -p /usr/src/app/logs/ /opt/config/ \ + && chown -R ${USER}:${USER} /usr/src/app/ /opt/config/ + +COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ +COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ + +RUN chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/tini + +# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. +# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate + +USER ${USER} + +EXPOSE 4567 + +VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] + +# Utilising tini as our init system within the Docker container for graceful start-up and termination. +# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals. +# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments. +# By integrating tini, we enhance the reliability and stability of our Docker containers. +# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing. +ENTRYPOINT ["tini", "--", "entrypoint.sh"] \ No newline at end of file diff --git a/.stryker-tmp/sandbox3435591/Gruntfile.js b/.stryker-tmp/sandbox3435591/Gruntfile.js new file mode 100644 index 0000000000..855c1bfa99 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/Gruntfile.js @@ -0,0 +1,202 @@ +// @ts-nocheck +'use strict'; + +const path = require('path'); +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); +const winston = require('winston'); +const { fork } = require('child_process'); + +const { env } = process; +let worker; + +env.NODE_ENV = env.NODE_ENV || 'development'; + +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); + +const db = require('./src/database'); +const plugins = require('./src/plugins'); + +module.exports = function (grunt) { + const args = []; + + if (!grunt.option('verbose')) { + args.push('--log-level=info'); + nconf.set('log-level', 'info'); + } + prestart.setupWinston(); + + grunt.initConfig({ + watch: {}, + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + + grunt.registerTask('default', ['watch']); + + grunt.registerTask('init', async function () { + const done = this.async(); + let pluginList = []; + if (!process.argv.includes('--core')) { + await db.init(); + pluginList = await plugins.getActive(); + addBaseThemes(pluginList); + if (!pluginList.includes('nodebb-plugin-composer-default')) { + pluginList.push('nodebb-plugin-composer-default'); + } + if (!pluginList.includes('nodebb-theme-harmony')) { + pluginList.push('nodebb-theme-harmony'); + } + } + + const styleUpdated_Client = pluginList.map(p => `node_modules/${p}/*.scss`) + .concat(pluginList.map(p => `node_modules/${p}/*.css`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static|scss)/**/*.scss`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); + + const clientUpdated = pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.js`); + const serverUpdated = pluginList.map(p => `node_modules/${p}/*.js`) + .concat(pluginList.map(p => `node_modules/${p}/+(lib|src)/**/*.js`)); + + const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`); + const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`); + const interval = 100; + grunt.config(['watch'], { + styleUpdated: { + files: [ + 'public/scss/**/*.scss', + ...styleUpdated_Client, + ], + options: { + interval: interval, + }, + }, + clientUpdated: { + files: [ + 'public/src/**/*.js', + 'public/vendor/**/*.js', + ...clientUpdated, + 'node_modules/benchpressjs/build/benchpress.js', + ], + options: { + interval: interval, + }, + }, + serverUpdated: { + files: [ + 'app.js', + 'install/*.js', + 'src/**/*.js', + 'public/src/modules/translator.common.js', + 'public/src/modules/helpers.common.js', + 'public/src/utils.common.js', + serverUpdated, + '!src/upgrades/**', + ], + options: { + interval: interval, + }, + }, + templatesUpdated: { + files: [ + 'src/views/**/*.tpl', + ...templatesUpdated, + ], + options: { + interval: interval, + }, + }, + langUpdated: { + files: [ + 'public/language/en-GB/*.json', + 'public/language/en-GB/**/*.json', + ...langUpdated, + ], + options: { + interval: interval, + }, + }, + }); + const build = require('./src/meta/build'); + if (!grunt.option('skip')) { + await build.build(true, { watch: true }); + } + run(); + done(); + }); + + function run() { + if (worker) { + worker.kill(); + } + + const execArgv = []; + const inspect = process.argv.find(a => a.startsWith('--inspect')); + + if (inspect) { + execArgv.push(inspect); + } + + worker = fork('app.js', args, { + env, + execArgv, + }); + } + + grunt.task.run('init'); + + grunt.event.removeAllListeners('watch'); + grunt.event.on('watch', (action, filepath, target) => { + let compiling; + if (target === 'styleUpdated') { + compiling = ['clientCSS', 'acpCSS']; + } else if (target === 'clientUpdated') { + compiling = ['js']; + } else if (target === 'templatesUpdated') { + compiling = ['tpl']; + } else if (target === 'langUpdated') { + compiling = ['lang']; + } else if (target === 'serverUpdated') { + // empty require cache + const paths = ['./src/meta/build.js', './src/meta/index.js']; + paths.forEach(p => delete require.cache[require.resolve(p)]); + return run(); + } + + require('./src/meta/build').build(compiling, { webpack: false }, (err) => { + if (err) { + winston.error(err.stack); + } + if (worker) { + worker.send({ compiling: compiling }); + } + }); + }); +}; + +function addBaseThemes(pluginList) { + let themeId = pluginList.find(p => p.includes('nodebb-theme-')); + if (!themeId) { + return pluginList; + } + let baseTheme; + do { + try { + baseTheme = require(`${themeId}/theme`).baseTheme; + } catch (err) { + console.log(err); + } + + if (baseTheme) { + pluginList.push(baseTheme); + themeId = baseTheme; + } + } while (baseTheme); + return pluginList; +} diff --git a/.stryker-tmp/sandbox3435591/LICENSE b/.stryker-tmp/sandbox3435591/LICENSE new file mode 100644 index 0000000000..94a9ed024d --- /dev/null +++ b/.stryker-tmp/sandbox3435591/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/.stryker-tmp/sandbox3435591/README.md b/.stryker-tmp/sandbox3435591/README.md new file mode 100644 index 0000000000..2fd96967ba --- /dev/null +++ b/.stryker-tmp/sandbox3435591/README.md @@ -0,0 +1,86 @@ +Team Members: Andrew Cheng, Emily Yu, Tin Chi Lo, Joyce Lam, Jorge Gracia + +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/ithVU1OO) +# ![NodeBB](public/images/sm-card.png) + +[![Workflow](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml/badge.svg)](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml) +[![Coverage Status](https://coveralls.io/repos/github/CMU-313/NodeBB/badge.svg)](https://coveralls.io/github/CMU-313/NodeBB) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=CMU-313_NodeBB&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=CMU-313_NodeBB) + +[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging. + +NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins. + +### [Try it now](//try.nodebb.org) | [Documentation](//docs.nodebb.org) + +## Screenshots + +NodeBB's theming engine is highly flexible and does not restrict your design choices. Check out some themed installs in these screenshots below: + +[![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png) +[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png) +[![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png) +[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png) +[![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png) +[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png) +[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png) +[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg) + +Our minimalist "Harmony" theme gets you going right away, no coding experience required. + +![Rendering of a NodeBB install on desktop and mobile devices](https://user-images.githubusercontent.com/923011/228570420-2a4db745-b20d-474a-a571-1b59259508ef.png) + +## How can I follow along/contribute? + +* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase. +* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via SCSS or CSS. NodeBB's base theme utilizes [Bootstrap 5](http://getbootstrap.com/) as a frontend toolkit. +* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://explore.transifex.com/nodebb/nodebb/) for internationalization. +* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development. + +## Requirements + +NodeBB requires the following software to be installed: + +* A version of Node.js at least 16 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions)) +* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater +* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured. +* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) + +## Installation + +[Please refer to platform-specific installation documentation](https://docs.nodebb.org/installing/os). +If installing via the cloud (or using Docker), [please see cloud-based installation documentation](https://docs.nodebb.org/installing/cloud/). + +## Securing NodeBB + +It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind: + +1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions: + * Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only + * Use `requirepass` to secure Redis behind a password (preferably a long one) + * Familiarise yourself with [Redis Security](http://redis.io/topics/security) +2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`. + * e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access) + + +## Upgrading NodeBB + +Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/configuring/upgrade/) + +## License + +NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html). + +Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org. + +## More Information/Links + +* [Demo](https://try.nodebb.org) +* [Developer Community](http://community.nodebb.org) +* [Documentation & Installation Instructions](https://docs.nodebb.org) +* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/) +* [NodeBB Blog](https://nodebb.org/blog) +* [Premium Hosting for NodeBB](https://www.nodebb.org/ "NodeBB") +* Unofficial IRC community – channel `#nodebb` on Libera.chat +* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter") +* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") diff --git a/.stryker-tmp/sandbox3435591/UserGuide.md b/.stryker-tmp/sandbox3435591/UserGuide.md new file mode 100644 index 0000000000..3240426214 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/UserGuide.md @@ -0,0 +1,12 @@ +User Story #11: +As a user, I would like to be able to visualize instructor posts differently so that I can make sure that I don't miss any important announcements from the instructor. + +To test the flagging instructor posts feature, run nodebb with the frontend changes, any signed in account should work. When opening a post or a list of posts, you should be able to see "! instructor" next to all instructor posts. Unfortunately, this feature did not work as we expected, and we could not run our backend functions that check if a post was created by an instructor in the frontend. Meaning, all posts and post lists show the flag regardless of whether or not they were created by an instructor. + +We also created tests for the isInstructor function (which checks if a user is an instructor) in tests/user.js. + +User Story #14: +As a user, I would like to be able to pin posts so that I can focus on certain posts that I am interested in. + +This feature is not fully developed. We are struggling to join the front_end feature with the backend methods and implementation for toggling the pinned field within the post object. Our front end feature is fully developed and visible through + diff --git a/.stryker-tmp/sandbox3435591/app.js b/.stryker-tmp/sandbox3435591/app.js new file mode 100644 index 0000000000..2826e2f2d7 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/app.js @@ -0,0 +1,84 @@ +/* + NodeBB - A better forum platform for the modern web + https://github.com/NodeBB/NodeBB/ + Copyright (C) 2013-2021 NodeBB Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +// @ts-nocheck + + +'use strict'; + +require('./require-main'); + +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); + +const winston = require('winston'); +const path = require('path'); + +const file = require('./src/file'); + +process.env.NODE_ENV = process.env.NODE_ENV || 'production'; +global.env = process.env.NODE_ENV || 'production'; + +// Alternate configuration file support +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); + +const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database')); + +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); +prestart.setupWinston(); +prestart.versionCheck(); +winston.verbose('* using configuration stored in: %s', configFile); + +if (!process.send) { + // If run using `node app`, log GNU copyright info along with server info + winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`); + winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); + winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); + winston.info(''); +} + +if (nconf.get('setup') || nconf.get('install')) { + require('./src/cli/setup').setup(); +} else if (!configExists) { + require('./install/web').install(nconf.get('port')); +} else if (nconf.get('upgrade')) { + require('./src/cli/upgrade').upgrade(true); +} else if (nconf.get('reset')) { + require('./src/cli/reset').reset({ + theme: nconf.get('t'), + plugin: nconf.get('p'), + widgets: nconf.get('w'), + settings: nconf.get('s'), + all: nconf.get('a'), + }); +} else if (nconf.get('activate')) { + require('./src/cli/manage').activate(nconf.get('activate')); +} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') { + require('./src/cli/manage').listPlugins(); +} else if (nconf.get('build')) { + require('./src/cli/manage').build(nconf.get('build')); +} else if (nconf.get('events')) { + require('./src/cli/manage').listEvents(); +} else { + require('./src/start').start(); +} diff --git a/.stryker-tmp/sandbox3435591/build/.gitignore b/.stryker-tmp/sandbox3435591/build/.gitignore new file mode 100644 index 0000000000..9addbff7eb --- /dev/null +++ b/.stryker-tmp/sandbox3435591/build/.gitignore @@ -0,0 +1,4 @@ +* +*/ +!export +!.gitignore diff --git a/.stryker-tmp/sandbox3435591/build/export/.gitignore b/.stryker-tmp/sandbox3435591/build/export/.gitignore new file mode 100644 index 0000000000..f8d55e0e3f --- /dev/null +++ b/.stryker-tmp/sandbox3435591/build/export/.gitignore @@ -0,0 +1,3 @@ +. +!.gitignore +!README \ No newline at end of file diff --git a/.stryker-tmp/sandbox3435591/build/export/README b/.stryker-tmp/sandbox3435591/build/export/README new file mode 100644 index 0000000000..a9015033f4 --- /dev/null +++ b/.stryker-tmp/sandbox3435591/build/export/README @@ -0,0 +1,5 @@ +This directory contains archives of user uploads that are prepared on-demand +when a user wants to retrieve a copy of their uploaded content. + +You can delete the files in here at will. They will just be regenerated if +requested again. \ No newline at end of file diff --git a/.stryker-tmp/sandbox4272740/.codeclimate.yml b/.stryker-tmp/sandbox4272740/.codeclimate.yml new file mode 100644 index 0000000000..d40cc58e75 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.codeclimate.yml @@ -0,0 +1,30 @@ +# Save as .codeclimate.yml (note leading .) in project root directory +version: "2" +languages: + Ruby: false + JavaScript: true + PHP: false +checks: + file-lines: + config: + threshold: 500 + method-lines: + config: + threshold: 75 + method-complexity: + config: + threshold: 10 + similar-code: + config: + threshold: 65 +plugins: + duplication: + enabled: true + config: + languages: + javascript: + mass_threshold: 110 + count_threshold: 3 +exclude_paths: +- "public/vendor/*" +- "test/*" \ No newline at end of file diff --git a/.stryker-tmp/sandbox4272740/.docker/.gitkeep b/.stryker-tmp/sandbox4272740/.docker/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.stryker-tmp/sandbox4272740/.dockerignore b/.stryker-tmp/sandbox4272740/.dockerignore new file mode 100644 index 0000000000..46ab37b3ab --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.dockerignore @@ -0,0 +1,10 @@ +.* +logs +test +node_modules +commitlint.config.js +nodebb.bat +renovate.json +*.yml +*.md +Dockerfile diff --git a/.stryker-tmp/sandbox4272740/.editorconfig b/.stryker-tmp/sandbox4272740/.editorconfig new file mode 100644 index 0000000000..71cf54ef4d --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[{*.js, *.css, *.tpl, *.json}] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false diff --git a/.stryker-tmp/sandbox4272740/.eslintignore b/.stryker-tmp/sandbox4272740/.eslintignore new file mode 100644 index 0000000000..b304ee19d8 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.eslintignore @@ -0,0 +1,21 @@ +node_modules/ +*.sublime-project +*.sublime-workspace +.project +.vagrant +.DS_Store +logs/ +/public/templates +/public/uploads +/public/vendor +/public/src/modules/string.js +.idea/ +.vscode/ +*.ipr +*.iws +/coverage +/build +.eslintrc +test/files +*.min.js +install/docker/ \ No newline at end of file diff --git a/.stryker-tmp/sandbox4272740/.eslintrc b/.stryker-tmp/sandbox4272740/.eslintrc new file mode 100644 index 0000000000..abd292af1b --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "nodebb" +} diff --git a/.stryker-tmp/sandbox4272740/.gitattributes b/.stryker-tmp/sandbox4272740/.gitattributes new file mode 100644 index 0000000000..e0fa7609a5 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.gitattributes @@ -0,0 +1,13 @@ +# These files are text and should be normalized (convert crlf => lf) +*.json text +*.css text +*.less text +*.tpl text +*.html text +*.js text +*.md text + +# Images should be treated as binary +# (binary is a macro for -text -diff) +*.png binary +*.jpg binary \ No newline at end of file diff --git a/.stryker-tmp/sandbox4272740/.github/CONTRIBUTING.md b/.stryker-tmp/sandbox4272740/.github/CONTRIBUTING.md new file mode 100644 index 0000000000..11911cd409 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/CONTRIBUTING.md @@ -0,0 +1,69 @@ +# Submitting a Pull Request to NodeBB? + +First of all, thank you! Before submission, please run `npm test` to lint and run the automated NodeBB tests. If everything passes, you're good to go. If you have any errors, please fix them and re-run `npm test` to make sure there aren't any others. + +## Styleguide and linting + +NodeBB mostly conforms to the [AirBnB Javascript style guide](https://github.com/airbnb/javascript#readme). If you're running into a lot of ESlint errors, you may want to install an editor plugin to display them in real time. + +## Contributor License Agreement + +Thank you for considering contributing to NodeBB. **Before you are able to submit a pull request, please take a moment to read our [contributor license agreement](https://gist.github.com/psychobunny/65946d7aa8854b12fab9)** and agree to it on the pull request page on GitHub. In summary, signing this document means that 1) you own the code that you are contributing and 2) you give permission to NodeBB Inc. to license the code to others. This agreement applies to any repository under the NodeBB organization. + +If you are writing contributions as part of employment from another company / individual, then your employer will need to sign a separate agreement. Please [contact us](mailto:accounts@nodebb.org) so that we can send this additional agreement to your employer. + + +# Having problems installing NodeBB? + +Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/installing/os/), please head over to our [community support forum](https://community.nodebb.org) for advice. + +# Found a Security Vulnerability? + +If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**. +A member of the NodeBB security team will respond to the issue. +Please do not post it to the public bug tracker. + +# Issues & Bugs + +Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem. + +In general, if we can't reproduce it, we can't fix it! + +## Try the latest version of NodeBB + +There is a chance that the issue you are experiencing may have already been fixed. + +## Provide the NodeBB version number and git hash + +You can find the NodeBB version number in the Admin Control Panel (ACP), as well as the first line output to the shell when running NodeBB + +``` plaintext +3/4 12:38:57 [10752] - info: NodeBB v1.4.5 Copyright (C) 2013-2017 NodeBB Inc. +3/4 12:38:57 [10752] - info: This program comes with ABSOLUTELY NO WARRANTY. +3/4 12:38:57 [10752] - info: This is free software, and you are welcome to redistribute it under certain conditions. +``` + +If you are running NodeBB via git, it is also helpful to let the maintainers know what commit hash you are on. To find the commit hash, execute the following command: + +``` bash +$ cd /path/to/my/nodebb +$ git rev-parse HEAD +``` + +If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know. + +## Provide theme versions if issue is related to the theme/display +Use `npm ls` to list the versions of the theme you're using. In this example, we're running the Persona theme, which depends on the Vanilla theme. + +``` bash +$ npm ls nodebb-theme-vanilla nodebb-theme-persona +nodebb@1.4.3 /path/to/nodebb ++-- nodebb-theme-persona@4.2.4 +`-- nodebb-theme-vanilla@5.2.0 +``` + +## Attempt to use `git bisect` + +If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`. + +A full guide can be found here: [Debugging with Git/Binary Search](http://git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search) diff --git a/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/bug-report.yml b/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000000..f8faf31515 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,81 @@ +name: Bug Report +description: File a bug report +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: input + attributes: + label: NodeBB version + placeholder: e.g. v2.2.0 + - type: input + attributes: + label: NodeBB git hash + description: to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory + placeholder: e.g. 783250ee6f8c51cdc243ce3b8d9f1a080517247e + - type: input + attributes: + label: NodeJS version + placeholder: e.g. v16.15.1 + - type: textarea + attributes: + label: Installed NodeBB plugins + description: to find installed plugins run `./nodebb plugins` + placeholder: | + e.g. + * nodebb-plugin-2factor@5.0.1 (installed, disabled) + * nodebb-plugin-composer-default@8.0.0 (installed, enabled) + * nodebb-plugin-dbsearch@5.1.5 (installed, disabled) + * nodebb-plugin-emoji@4.0.4 (installed, enabled) + * nodebb-plugin-emoji-android@3.0.0 (installed, enabled) + * nodebb-plugin-markdown@10.0.0 (installed, enabled) + * nodebb-plugin-mentions@3.0.11 (installed, enabled) + * nodebb-plugin-spam-be-gone@1.0.0 (installed, disabled) + * nodebb-rewards-essentials@0.2.1 (installed, enabled) + * nodebb-theme-lavender@6.0.0 (installed, disabled) + * nodebb-theme-persona@12.0.11 (installed, enabled) + * nodebb-theme-slick@2.0.2 (installed, disabled) + * nodebb-theme-vanilla@12.1.18 (installed, disabled) + * nodebb-widget-essentials@6.0.0 (installed, enabled) + - type: dropdown + attributes: + label: Database type + multiple: true + options: + - MongoDB + - Redis + - PostgreSQL + - type: input + attributes: + label: Database version + description: "`mongod --version`, `redis-server --version`, or `postgres --version`" + placeholder: e.g. v5.0.9 + - type: textarea + attributes: + label: Exact steps to cause this issue + placeholder: | + 1. First I did this... + 2. Then, I clicked on this item... + + A quick note: MP4 and MOV formatted video files are now allowed to be uploaded to GH. + Please upload if reproduction steps are hard to describe or reproduce reliably. + - type: textarea + attributes: + label: What you expected + placeholder: e.g. I expected *abc* to *xyz* + - type: textarea + attributes: + label: What happened instead + placeholder: e.g. Instead, I got *zyx* and NodeBB set fire to my house + - type: textarea + attributes: + label: Anything else? + description: Any additional context about the issue you're encountering + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/config.yml b/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..ab47f0760d --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Community Forum + url: https://community.nodebb.org + about: Github Issues are for bug reports and feature requests only, please use community forum for other support diff --git a/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/feature-request.yml b/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000000..382d874014 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,24 @@ +name: Feature Request +description: Suggest a new feature +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: textarea + attributes: + label: Description + validations: + required: true + - type: input + attributes: + label: Community forum reference + description: If this feature was already discussed on the Community Forum link it here + placeholder: https://community.nodebb.org/topic/0/example-feature-request + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox4272740/.github/SECURITY.md b/.stryker-tmp/sandbox4272740/.github/SECURITY.md new file mode 100644 index 0000000000..0dffd0a60f --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/SECURITY.md @@ -0,0 +1,9 @@ +# Reporting a security vulnerability + +NodeBB's security policy is based around a private bug bounty program. Users are invited to explore NodeBB for vulnerabilities, and report them to the NodeBB team so that they can be patched. + +If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead, even if you are not sure whether something qualifies. + +# Bug Bounty Program + +Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the [dedicated page for our Bug Bounty Program](https://nodebb.org/bounty). diff --git a/.stryker-tmp/sandbox4272740/.github/workflows/azure-deploy-f24.yml b/.stryker-tmp/sandbox4272740/.github/workflows/azure-deploy-f24.yml new file mode 100644 index 0000000000..752ac4b7bf --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/workflows/azure-deploy-f24.yml @@ -0,0 +1,54 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +name: Build and deploy Node.js app to Azure Web App - nodebb-f24 + +on: + push: + branches: + - f24 + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + lint-and-test: + uses: + ./.github/workflows/test.yaml + + build-and-deploy: + if: github.repository == 'cmu-313/nodebb-f24-hunan-hunters' + needs: lint-and-test + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js version + uses: actions/setup-node@v3 + with: + node-version: '20.x' + + - name: Set up NodeBB + run: | + ./nodebb setup '{"url":"https://nodebb-hunanhunters.azurewebsites.net:443", + "admin:username": "admin", + "admin:password": "${{ secrets.ADMIN_PASSWORD }}", + "admin:password:confirm": "${{ secrets.ADMIN_PASSWORD }}", + "admin:email": "rohanpadhye@cmu.edu", + "database": "redis", + "redis:host": "${{ secrets.REDIS_HOST }}", + "redis:port": "6379", + "redis:password": "${{ secrets.REDIS_PASSWORD }}" }' + + - name: 'Deploy to Azure Web App' + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'nodebb-hunanhunters' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_8CE2E89DDD294B98BF913663FFF5E9D5 }} + package: . diff --git a/.stryker-tmp/sandbox4272740/.github/workflows/docker.yml b/.stryker-tmp/sandbox4272740/.github/workflows/docker.yml new file mode 100644 index 0000000000..67aee91b9a --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/workflows/docker.yml @@ -0,0 +1,72 @@ +name: Run Docker + +# Controls when the workflow will run +on: + push: + branches: + - 'master' + - 'v*.x' + tags: + - 'v*' + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +permissions: + contents: read + packages: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Get current date in NST + run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}}.x + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }} + type=raw,value=${{ env.CURRENT_DATE_NST }} + flavor: | + latest=true + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: var-cache-node-modules + key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }} + + - name: Build and push Docker images + uses: docker/build-push-action@v5 + with: + cache-from: type=gha + cache-to: type=gha,mode=min + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: ${{ steps.meta.outputs.tags }} diff --git a/.stryker-tmp/sandbox4272740/.github/workflows/test.yaml b/.stryker-tmp/sandbox4272740/.github/workflows/test.yaml new file mode 100644 index 0000000000..c4e8f090bd --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/workflows/test.yaml @@ -0,0 +1,87 @@ +name: Lint and test + +on: + pull_request: + branches: + - f24 + workflow_call: # Usually called from deploy + +defaults: + run: + shell: bash + +permissions: + checks: write # for coverallsapp/github-action to create new checks + contents: read # for actions/checkout to fetch code + +jobs: + test: + runs-on: ubuntu-latest + env: + TEST_ENV: 'production' + + services: + redis: + image: 'redis:7.2.4' + # Set health checks to wait until redis has started + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps port 6379 on service container to the host + - 6379:6379 + + steps: + - uses: actions/checkout@v4 + + - run: cp install/package.json package.json + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: NPM Install + uses: bahmutov/npm-install@v1 + with: + useLockFile: false + + - name: Setup for Redis + env: + SETUP: >- + { + "url": "http://127.0.0.1:4567/forum", + "secret": "abcdef", + "admin:username": "admin", + "admin:email": "test@example.org", + "admin:password": "hAN3Eg8W", + "admin:password:confirm": "hAN3Eg8W", + + "database": "redis", + "redis:host": "127.0.0.1", + "redis:port": 6379, + "redis:password": "", + "redis:database": 0 + } + CI: >- + { + "host": "127.0.0.1", + "database": 1, + "port": 6379 + } + run: | + node app --setup="${SETUP}" --ci="${CI}" + + - name: Run ESLint + run: npm run lint + + - name: Node tests + run: npm test + + - name: Extract coverage info + run: npm run coverage + + - name: Test coverage + uses: coverallsapp/github-action@v2 diff --git a/.stryker-tmp/sandbox4272740/.github/workflows/volunteers.yaml b/.stryker-tmp/sandbox4272740/.github/workflows/volunteers.yaml new file mode 100644 index 0000000000..3cd849b824 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.github/workflows/volunteers.yaml @@ -0,0 +1,12 @@ +name: "Issue volunteer assignment" + +on: [issue_comment, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: bhermann/issue-volunteer@v0.1.12 + with: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + diff --git a/.stryker-tmp/sandbox4272740/.gitignore b/.stryker-tmp/sandbox4272740/.gitignore new file mode 100644 index 0000000000..8a0aca8cc7 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.gitignore @@ -0,0 +1,77 @@ +dist/ +yarn.lock +npm-debug.log +node_modules/ +sftp-config.json +config.json +jsconfig.json +public/src/nodebb.min.js +!src/views/config.json +public/css/*.css +*.sublime-project +*.sublime-workspace +.project +*.swp +Vagrantfile +.vagrant +provision.sh +*.komodoproject +.DS_Store +feeds/recent.rss +.eslintcache +.svn + +logs/ + +pidfile + +# templates +/public/templates + +/public/uploads +/test/uploads + +# compiled files +/public/stylesheet.css +/public/admin.css +/public/nodebb.min.js +/public/nodebb.min.js.map +/public/acp.min.js +/public/acp.min.js.map +/public/installer.css +/public/installer.min.js +/public/bootstrap.min.css +/public/logo.png + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio +*.iml + +## Directory-based project format: +.idea/ +.vscode/ + +## File-based project format: +*.ipr +*.iws + +## Transifex +tx.exe +.transifexrc + +##Coverage output +coverage +.nyc_output + +*.log +test/files/normalise.jpg.png +test/files/normalise-resized.jpg +package-lock.json +/package.json +*.mongodb +link-plugins.sh +test.sh + +.docker/** +!**/.gitkeep +# stryker temp files +.stryker-tmp diff --git a/.stryker-tmp/sandbox4272740/.husky/.gitignore b/.stryker-tmp/sandbox4272740/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.stryker-tmp/sandbox4272740/.husky/commit-msg b/.stryker-tmp/sandbox4272740/.husky/commit-msg new file mode 100755 index 0000000000..e8511eaeaf --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit $1 diff --git a/.stryker-tmp/sandbox4272740/.husky/pre-commit b/.stryker-tmp/sandbox4272740/.husky/pre-commit new file mode 100755 index 0000000000..d37daa075e --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/.stryker-tmp/sandbox4272740/.mocharc.yml b/.stryker-tmp/sandbox4272740/.mocharc.yml new file mode 100644 index 0000000000..16d8518d1b --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.mocharc.yml @@ -0,0 +1,4 @@ +reporter: dot +timeout: 25000 +exit: true +bail: true diff --git a/.stryker-tmp/sandbox4272740/.tx/config b/.stryker-tmp/sandbox4272740/.tx/config new file mode 100644 index 0000000000..35758d9b05 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/.tx/config @@ -0,0 +1,4007 @@ +[main] +host = https://www.transifex.com + +[o:nodebb:p:nodebb:r:admin-admin] +file_filter = public/language//admin/admin.json +source_file = public/language/en-GB/admin/admin.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/admin/admin.json +trans.en@pirate = public/language/en-x-pirate/admin/admin.json +trans.hy = public/language/hy/admin/admin.json +trans.pl = public/language/pl/admin/admin.json +trans.th = public/language/th/admin/admin.json +trans.de = public/language/de/admin/admin.json +trans.el = public/language/el/admin/admin.json +trans.ar = public/language/ar/admin/admin.json +trans.bg = public/language/bg/admin/admin.json +trans.bn = public/language/bn/admin/admin.json +trans.it = public/language/it/admin/admin.json +trans.lv = public/language/lv/admin/admin.json +trans.nl = public/language/nl/admin/admin.json +trans.ru = public/language/ru/admin/admin.json +trans.sr = public/language/sr/admin/admin.json +trans.sv = public/language/sv/admin/admin.json +trans.uk = public/language/uk/admin/admin.json +trans.zh_CN = public/language/zh-CN/admin/admin.json +trans.fa_IR = public/language/fa-IR/admin/admin.json +trans.id = public/language/id/admin/admin.json +trans.ms = public/language/ms/admin/admin.json +trans.nb = public/language/nb/admin/admin.json +trans.sk = public/language/sk/admin/admin.json +trans.cs = public/language/cs/admin/admin.json +trans.fi = public/language/fi/admin/admin.json +trans.fr = public/language/fr/admin/admin.json +trans.rw = public/language/rw/admin/admin.json +trans.sq_AL = public/language/sq-AL/admin/admin.json +trans.en_US = public/language/en-US/admin/admin.json +trans.es = public/language/es/admin/admin.json +trans.et = public/language/et/admin/admin.json +trans.gl = public/language/gl/admin/admin.json +trans.he = public/language/he/admin/admin.json +trans.ja = public/language/ja/admin/admin.json +trans.lt = public/language/lt/admin/admin.json +trans.pt_PT = public/language/pt-PT/admin/admin.json +trans.sc = public/language/sc/admin/admin.json +trans.sl = public/language/sl/admin/admin.json +trans.vi = public/language/vi/admin/admin.json +trans.da = public/language/da/admin/admin.json +trans.hr = public/language/hr/admin/admin.json +trans.hu = public/language/hu/admin/admin.json +trans.ko = public/language/ko/admin/admin.json +trans.ro = public/language/ro/admin/admin.json +trans.tr = public/language/tr/admin/admin.json +trans.zh_TW = public/language/zh-TW/admin/admin.json + +[o:nodebb:p:nodebb:r:admin-advanced-cache] +file_filter = public/language//admin/advanced/cache.json +source_file = public/language/en-GB/admin/advanced/cache.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fa_IR = public/language/fa-IR/admin/advanced/cache.json +trans.he = public/language/he/admin/advanced/cache.json +trans.ko = public/language/ko/admin/advanced/cache.json +trans.pt_PT = public/language/pt-PT/admin/advanced/cache.json +trans.rw = public/language/rw/admin/advanced/cache.json +trans.tr = public/language/tr/admin/advanced/cache.json +trans.en_US = public/language/en-US/admin/advanced/cache.json +trans.hu = public/language/hu/admin/advanced/cache.json +trans.id = public/language/id/admin/advanced/cache.json +trans.ms = public/language/ms/admin/advanced/cache.json +trans.sc = public/language/sc/admin/advanced/cache.json +trans.sv = public/language/sv/admin/advanced/cache.json +trans.es = public/language/es/admin/advanced/cache.json +trans.gl = public/language/gl/admin/advanced/cache.json +trans.lv = public/language/lv/admin/advanced/cache.json +trans.nl = public/language/nl/admin/advanced/cache.json +trans.ru = public/language/ru/admin/advanced/cache.json +trans.zh_TW = public/language/zh-TW/admin/advanced/cache.json +trans.bn = public/language/bn/admin/advanced/cache.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/cache.json +trans.fr = public/language/fr/admin/advanced/cache.json +trans.hr = public/language/hr/admin/advanced/cache.json +trans.pt_BR = public/language/pt-BR/admin/advanced/cache.json +trans.ar = public/language/ar/admin/advanced/cache.json +trans.bg = public/language/bg/admin/advanced/cache.json +trans.cs = public/language/cs/admin/advanced/cache.json +trans.lt = public/language/lt/admin/advanced/cache.json +trans.nb = public/language/nb/admin/advanced/cache.json +trans.uk = public/language/uk/admin/advanced/cache.json +trans.el = public/language/el/admin/advanced/cache.json +trans.pl = public/language/pl/admin/advanced/cache.json +trans.sr = public/language/sr/admin/advanced/cache.json +trans.da = public/language/da/admin/advanced/cache.json +trans.et = public/language/et/admin/advanced/cache.json +trans.fi = public/language/fi/admin/advanced/cache.json +trans.hy = public/language/hy/admin/advanced/cache.json +trans.ja = public/language/ja/admin/advanced/cache.json +trans.sl = public/language/sl/admin/advanced/cache.json +trans.sq_AL = public/language/sq-AL/admin/advanced/cache.json +trans.th = public/language/th/admin/advanced/cache.json +trans.de = public/language/de/admin/advanced/cache.json +trans.it = public/language/it/admin/advanced/cache.json +trans.ro = public/language/ro/admin/advanced/cache.json +trans.sk = public/language/sk/admin/advanced/cache.json +trans.vi = public/language/vi/admin/advanced/cache.json +trans.zh_CN = public/language/zh-CN/admin/advanced/cache.json + +[o:nodebb:p:nodebb:r:admin-advanced-database] +file_filter = public/language//admin/advanced/database.json +source_file = public/language/en-GB/admin/advanced/database.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fr = public/language/fr/admin/advanced/database.json +trans.he = public/language/he/admin/advanced/database.json +trans.ja = public/language/ja/admin/advanced/database.json +trans.lv = public/language/lv/admin/advanced/database.json +trans.pt_PT = public/language/pt-PT/admin/advanced/database.json +trans.en_US = public/language/en-US/admin/advanced/database.json +trans.el = public/language/el/admin/advanced/database.json +trans.tr = public/language/tr/admin/advanced/database.json +trans.zh_CN = public/language/zh-CN/admin/advanced/database.json +trans.ar = public/language/ar/admin/advanced/database.json +trans.hr = public/language/hr/admin/advanced/database.json +trans.lt = public/language/lt/admin/advanced/database.json +trans.ro = public/language/ro/admin/advanced/database.json +trans.zh_TW = public/language/zh-TW/admin/advanced/database.json +trans.gl = public/language/gl/admin/advanced/database.json +trans.it = public/language/it/admin/advanced/database.json +trans.nb = public/language/nb/admin/advanced/database.json +trans.bn = public/language/bn/admin/advanced/database.json +trans.da = public/language/da/admin/advanced/database.json +trans.de = public/language/de/admin/advanced/database.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/database.json +trans.hu = public/language/hu/admin/advanced/database.json +trans.hy = public/language/hy/admin/advanced/database.json +trans.id = public/language/id/admin/advanced/database.json +trans.nl = public/language/nl/admin/advanced/database.json +trans.cs = public/language/cs/admin/advanced/database.json +trans.sv = public/language/sv/admin/advanced/database.json +trans.sr = public/language/sr/admin/advanced/database.json +trans.pl = public/language/pl/admin/advanced/database.json +trans.ru = public/language/ru/admin/advanced/database.json +trans.sc = public/language/sc/admin/advanced/database.json +trans.sl = public/language/sl/admin/advanced/database.json +trans.sq_AL = public/language/sq-AL/admin/advanced/database.json +trans.th = public/language/th/admin/advanced/database.json +trans.et = public/language/et/admin/advanced/database.json +trans.fa_IR = public/language/fa-IR/admin/advanced/database.json +trans.ko = public/language/ko/admin/advanced/database.json +trans.sk = public/language/sk/admin/advanced/database.json +trans.vi = public/language/vi/admin/advanced/database.json +trans.es = public/language/es/admin/advanced/database.json +trans.fi = public/language/fi/admin/advanced/database.json +trans.ms = public/language/ms/admin/advanced/database.json +trans.pt_BR = public/language/pt-BR/admin/advanced/database.json +trans.rw = public/language/rw/admin/advanced/database.json +trans.uk = public/language/uk/admin/advanced/database.json +trans.bg = public/language/bg/admin/advanced/database.json + +[o:nodebb:p:nodebb:r:admin-advanced-errors] +file_filter = public/language//admin/advanced/errors.json +source_file = public/language/en-GB/admin/advanced/errors.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/advanced/errors.json +trans.en_US = public/language/en-US/admin/advanced/errors.json +trans.es = public/language/es/admin/advanced/errors.json +trans.pl = public/language/pl/admin/advanced/errors.json +trans.sk = public/language/sk/admin/advanced/errors.json +trans.uk = public/language/uk/admin/advanced/errors.json +trans.da = public/language/da/admin/advanced/errors.json +trans.gl = public/language/gl/admin/advanced/errors.json +trans.hu = public/language/hu/admin/advanced/errors.json +trans.pt_PT = public/language/pt-PT/admin/advanced/errors.json +trans.vi = public/language/vi/admin/advanced/errors.json +trans.de = public/language/de/admin/advanced/errors.json +trans.ko = public/language/ko/admin/advanced/errors.json +trans.nb = public/language/nb/admin/advanced/errors.json +trans.sc = public/language/sc/admin/advanced/errors.json +trans.sl = public/language/sl/admin/advanced/errors.json +trans.tr = public/language/tr/admin/advanced/errors.json +trans.zh_CN = public/language/zh-CN/admin/advanced/errors.json +trans.fr = public/language/fr/admin/advanced/errors.json +trans.hy = public/language/hy/admin/advanced/errors.json +trans.pt_BR = public/language/pt-BR/admin/advanced/errors.json +trans.ro = public/language/ro/admin/advanced/errors.json +trans.sr = public/language/sr/admin/advanced/errors.json +trans.sv = public/language/sv/admin/advanced/errors.json +trans.fa_IR = public/language/fa-IR/admin/advanced/errors.json +trans.it = public/language/it/admin/advanced/errors.json +trans.lt = public/language/lt/admin/advanced/errors.json +trans.ms = public/language/ms/admin/advanced/errors.json +trans.ru = public/language/ru/admin/advanced/errors.json +trans.sq_AL = public/language/sq-AL/admin/advanced/errors.json +trans.ar = public/language/ar/admin/advanced/errors.json +trans.fi = public/language/fi/admin/advanced/errors.json +trans.he = public/language/he/admin/advanced/errors.json +trans.ja = public/language/ja/admin/advanced/errors.json +trans.th = public/language/th/admin/advanced/errors.json +trans.zh_TW = public/language/zh-TW/admin/advanced/errors.json +trans.bn = public/language/bn/admin/advanced/errors.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/errors.json +trans.hr = public/language/hr/admin/advanced/errors.json +trans.rw = public/language/rw/admin/advanced/errors.json +trans.bg = public/language/bg/admin/advanced/errors.json +trans.el = public/language/el/admin/advanced/errors.json +trans.et = public/language/et/admin/advanced/errors.json +trans.id = public/language/id/admin/advanced/errors.json +trans.lv = public/language/lv/admin/advanced/errors.json +trans.nl = public/language/nl/admin/advanced/errors.json + +[o:nodebb:p:nodebb:r:admin-advanced-events] +file_filter = public/language//admin/advanced/events.json +source_file = public/language/en-GB/admin/advanced/events.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/advanced/events.json +trans.el = public/language/el/admin/advanced/events.json +trans.lt = public/language/lt/admin/advanced/events.json +trans.pt_BR = public/language/pt-BR/admin/advanced/events.json +trans.zh_TW = public/language/zh-TW/admin/advanced/events.json +trans.th = public/language/th/admin/advanced/events.json +trans.gl = public/language/gl/admin/advanced/events.json +trans.ko = public/language/ko/admin/advanced/events.json +trans.nl = public/language/nl/admin/advanced/events.json +trans.ro = public/language/ro/admin/advanced/events.json +trans.sl = public/language/sl/admin/advanced/events.json +trans.ar = public/language/ar/admin/advanced/events.json +trans.hr = public/language/hr/admin/advanced/events.json +trans.vi = public/language/vi/admin/advanced/events.json +trans.fa_IR = public/language/fa-IR/admin/advanced/events.json +trans.ms = public/language/ms/admin/advanced/events.json +trans.tr = public/language/tr/admin/advanced/events.json +trans.nb = public/language/nb/admin/advanced/events.json +trans.pt_PT = public/language/pt-PT/admin/advanced/events.json +trans.sk = public/language/sk/admin/advanced/events.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/events.json +trans.es = public/language/es/admin/advanced/events.json +trans.et = public/language/et/admin/advanced/events.json +trans.he = public/language/he/admin/advanced/events.json +trans.lv = public/language/lv/admin/advanced/events.json +trans.sv = public/language/sv/admin/advanced/events.json +trans.zh_CN = public/language/zh-CN/admin/advanced/events.json +trans.pl = public/language/pl/admin/advanced/events.json +trans.rw = public/language/rw/admin/advanced/events.json +trans.cs = public/language/cs/admin/advanced/events.json +trans.de = public/language/de/admin/advanced/events.json +trans.fr = public/language/fr/admin/advanced/events.json +trans.hy = public/language/hy/admin/advanced/events.json +trans.id = public/language/id/admin/advanced/events.json +trans.ru = public/language/ru/admin/advanced/events.json +trans.sq_AL = public/language/sq-AL/admin/advanced/events.json +trans.uk = public/language/uk/admin/advanced/events.json +trans.da = public/language/da/admin/advanced/events.json +trans.en_US = public/language/en-US/admin/advanced/events.json +trans.hu = public/language/hu/admin/advanced/events.json +trans.it = public/language/it/admin/advanced/events.json +trans.ja = public/language/ja/admin/advanced/events.json +trans.bn = public/language/bn/admin/advanced/events.json +trans.fi = public/language/fi/admin/advanced/events.json +trans.sc = public/language/sc/admin/advanced/events.json +trans.sr = public/language/sr/admin/advanced/events.json + +[o:nodebb:p:nodebb:r:admin-advanced-logs] +file_filter = public/language//admin/advanced/logs.json +source_file = public/language/en-GB/admin/advanced/logs.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/advanced/logs.json +trans.ru = public/language/ru/admin/advanced/logs.json +trans.vi = public/language/vi/admin/advanced/logs.json +trans.id = public/language/id/admin/advanced/logs.json +trans.fi = public/language/fi/admin/advanced/logs.json +trans.he = public/language/he/admin/advanced/logs.json +trans.hr = public/language/hr/admin/advanced/logs.json +trans.ja = public/language/ja/admin/advanced/logs.json +trans.lt = public/language/lt/admin/advanced/logs.json +trans.nb = public/language/nb/admin/advanced/logs.json +trans.rw = public/language/rw/admin/advanced/logs.json +trans.es = public/language/es/admin/advanced/logs.json +trans.sv = public/language/sv/admin/advanced/logs.json +trans.fa_IR = public/language/fa-IR/admin/advanced/logs.json +trans.fr = public/language/fr/admin/advanced/logs.json +trans.gl = public/language/gl/admin/advanced/logs.json +trans.zh_TW = public/language/zh-TW/admin/advanced/logs.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/logs.json +trans.sc = public/language/sc/admin/advanced/logs.json +trans.sq_AL = public/language/sq-AL/admin/advanced/logs.json +trans.uk = public/language/uk/admin/advanced/logs.json +trans.hu = public/language/hu/admin/advanced/logs.json +trans.bn = public/language/bn/admin/advanced/logs.json +trans.de = public/language/de/admin/advanced/logs.json +trans.it = public/language/it/admin/advanced/logs.json +trans.lv = public/language/lv/admin/advanced/logs.json +trans.ms = public/language/ms/admin/advanced/logs.json +trans.pl = public/language/pl/admin/advanced/logs.json +trans.zh_CN = public/language/zh-CN/admin/advanced/logs.json +trans.ar = public/language/ar/admin/advanced/logs.json +trans.et = public/language/et/admin/advanced/logs.json +trans.hy = public/language/hy/admin/advanced/logs.json +trans.ko = public/language/ko/admin/advanced/logs.json +trans.th = public/language/th/admin/advanced/logs.json +trans.tr = public/language/tr/admin/advanced/logs.json +trans.cs = public/language/cs/admin/advanced/logs.json +trans.ro = public/language/ro/admin/advanced/logs.json +trans.pt_BR = public/language/pt-BR/admin/advanced/logs.json +trans.da = public/language/da/admin/advanced/logs.json +trans.el = public/language/el/admin/advanced/logs.json +trans.en_US = public/language/en-US/admin/advanced/logs.json +trans.pt_PT = public/language/pt-PT/admin/advanced/logs.json +trans.sk = public/language/sk/admin/advanced/logs.json +trans.sl = public/language/sl/admin/advanced/logs.json +trans.sr = public/language/sr/admin/advanced/logs.json +trans.bg = public/language/bg/admin/advanced/logs.json + +[o:nodebb:p:nodebb:r:admin-appearance-customise] +file_filter = public/language//admin/appearance/customise.json +source_file = public/language/en-GB/admin/appearance/customise.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/appearance/customise.json +trans.da = public/language/da/admin/appearance/customise.json +trans.es = public/language/es/admin/appearance/customise.json +trans.hy = public/language/hy/admin/appearance/customise.json +trans.th = public/language/th/admin/appearance/customise.json +trans.ar = public/language/ar/admin/appearance/customise.json +trans.bg = public/language/bg/admin/appearance/customise.json +trans.he = public/language/he/admin/appearance/customise.json +trans.lt = public/language/lt/admin/appearance/customise.json +trans.nb = public/language/nb/admin/appearance/customise.json +trans.pl = public/language/pl/admin/appearance/customise.json +trans.sl = public/language/sl/admin/appearance/customise.json +trans.zh_TW = public/language/zh-TW/admin/appearance/customise.json +trans.bn = public/language/bn/admin/appearance/customise.json +trans.el = public/language/el/admin/appearance/customise.json +trans.hu = public/language/hu/admin/appearance/customise.json +trans.sk = public/language/sk/admin/appearance/customise.json +trans.tr = public/language/tr/admin/appearance/customise.json +trans.et = public/language/et/admin/appearance/customise.json +trans.id = public/language/id/admin/appearance/customise.json +trans.lv = public/language/lv/admin/appearance/customise.json +trans.pt_BR = public/language/pt-BR/admin/appearance/customise.json +trans.sr = public/language/sr/admin/appearance/customise.json +trans.zh_CN = public/language/zh-CN/admin/appearance/customise.json +trans.fr = public/language/fr/admin/appearance/customise.json +trans.hr = public/language/hr/admin/appearance/customise.json +trans.it = public/language/it/admin/appearance/customise.json +trans.nl = public/language/nl/admin/appearance/customise.json +trans.sv = public/language/sv/admin/appearance/customise.json +trans.fi = public/language/fi/admin/appearance/customise.json +trans.gl = public/language/gl/admin/appearance/customise.json +trans.ko = public/language/ko/admin/appearance/customise.json +trans.sc = public/language/sc/admin/appearance/customise.json +trans.de = public/language/de/admin/appearance/customise.json +trans.en_US = public/language/en-US/admin/appearance/customise.json +trans.ja = public/language/ja/admin/appearance/customise.json +trans.ru = public/language/ru/admin/appearance/customise.json +trans.rw = public/language/rw/admin/appearance/customise.json +trans.vi = public/language/vi/admin/appearance/customise.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/customise.json +trans.fa_IR = public/language/fa-IR/admin/appearance/customise.json +trans.ms = public/language/ms/admin/appearance/customise.json +trans.pt_PT = public/language/pt-PT/admin/appearance/customise.json +trans.ro = public/language/ro/admin/appearance/customise.json +trans.sq_AL = public/language/sq-AL/admin/appearance/customise.json +trans.uk = public/language/uk/admin/appearance/customise.json + +[o:nodebb:p:nodebb:r:admin-appearance-skins] +file_filter = public/language//admin/appearance/skins.json +source_file = public/language/en-GB/admin/appearance/skins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/appearance/skins.json +trans.he = public/language/he/admin/appearance/skins.json +trans.hr = public/language/hr/admin/appearance/skins.json +trans.sc = public/language/sc/admin/appearance/skins.json +trans.sk = public/language/sk/admin/appearance/skins.json +trans.uk = public/language/uk/admin/appearance/skins.json +trans.vi = public/language/vi/admin/appearance/skins.json +trans.bn = public/language/bn/admin/appearance/skins.json +trans.ms = public/language/ms/admin/appearance/skins.json +trans.pl = public/language/pl/admin/appearance/skins.json +trans.sv = public/language/sv/admin/appearance/skins.json +trans.fi = public/language/fi/admin/appearance/skins.json +trans.da = public/language/da/admin/appearance/skins.json +trans.hu = public/language/hu/admin/appearance/skins.json +trans.hy = public/language/hy/admin/appearance/skins.json +trans.id = public/language/id/admin/appearance/skins.json +trans.lv = public/language/lv/admin/appearance/skins.json +trans.sq_AL = public/language/sq-AL/admin/appearance/skins.json +trans.cs = public/language/cs/admin/appearance/skins.json +trans.de = public/language/de/admin/appearance/skins.json +trans.ko = public/language/ko/admin/appearance/skins.json +trans.sl = public/language/sl/admin/appearance/skins.json +trans.zh_TW = public/language/zh-TW/admin/appearance/skins.json +trans.bg = public/language/bg/admin/appearance/skins.json +trans.en_US = public/language/en-US/admin/appearance/skins.json +trans.es = public/language/es/admin/appearance/skins.json +trans.sr = public/language/sr/admin/appearance/skins.json +trans.zh_CN = public/language/zh-CN/admin/appearance/skins.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/skins.json +trans.it = public/language/it/admin/appearance/skins.json +trans.ja = public/language/ja/admin/appearance/skins.json +trans.nb = public/language/nb/admin/appearance/skins.json +trans.fr = public/language/fr/admin/appearance/skins.json +trans.fa_IR = public/language/fa-IR/admin/appearance/skins.json +trans.gl = public/language/gl/admin/appearance/skins.json +trans.ro = public/language/ro/admin/appearance/skins.json +trans.ru = public/language/ru/admin/appearance/skins.json +trans.rw = public/language/rw/admin/appearance/skins.json +trans.el = public/language/el/admin/appearance/skins.json +trans.lt = public/language/lt/admin/appearance/skins.json +trans.nl = public/language/nl/admin/appearance/skins.json +trans.pt_BR = public/language/pt-BR/admin/appearance/skins.json +trans.pt_PT = public/language/pt-PT/admin/appearance/skins.json +trans.th = public/language/th/admin/appearance/skins.json +trans.tr = public/language/tr/admin/appearance/skins.json +trans.ar = public/language/ar/admin/appearance/skins.json + +[o:nodebb:p:nodebb:r:admin-appearance-themes] +file_filter = public/language//admin/appearance/themes.json +source_file = public/language/en-GB/admin/appearance/themes.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/appearance/themes.json +trans.ar = public/language/ar/admin/appearance/themes.json +trans.bg = public/language/bg/admin/appearance/themes.json +trans.bn = public/language/bn/admin/appearance/themes.json +trans.en_US = public/language/en-US/admin/appearance/themes.json +trans.fa_IR = public/language/fa-IR/admin/appearance/themes.json +trans.pt_BR = public/language/pt-BR/admin/appearance/themes.json +trans.ru = public/language/ru/admin/appearance/themes.json +trans.sv = public/language/sv/admin/appearance/themes.json +trans.cs = public/language/cs/admin/appearance/themes.json +trans.da = public/language/da/admin/appearance/themes.json +trans.sk = public/language/sk/admin/appearance/themes.json +trans.zh_CN = public/language/zh-CN/admin/appearance/themes.json +trans.et = public/language/et/admin/appearance/themes.json +trans.ja = public/language/ja/admin/appearance/themes.json +trans.sl = public/language/sl/admin/appearance/themes.json +trans.sr = public/language/sr/admin/appearance/themes.json +trans.hr = public/language/hr/admin/appearance/themes.json +trans.hu = public/language/hu/admin/appearance/themes.json +trans.ms = public/language/ms/admin/appearance/themes.json +trans.sc = public/language/sc/admin/appearance/themes.json +trans.th = public/language/th/admin/appearance/themes.json +trans.lt = public/language/lt/admin/appearance/themes.json +trans.el = public/language/el/admin/appearance/themes.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/themes.json +trans.fi = public/language/fi/admin/appearance/themes.json +trans.he = public/language/he/admin/appearance/themes.json +trans.hy = public/language/hy/admin/appearance/themes.json +trans.id = public/language/id/admin/appearance/themes.json +trans.ko = public/language/ko/admin/appearance/themes.json +trans.nb = public/language/nb/admin/appearance/themes.json +trans.pl = public/language/pl/admin/appearance/themes.json +trans.pt_PT = public/language/pt-PT/admin/appearance/themes.json +trans.tr = public/language/tr/admin/appearance/themes.json +trans.fr = public/language/fr/admin/appearance/themes.json +trans.nl = public/language/nl/admin/appearance/themes.json +trans.ro = public/language/ro/admin/appearance/themes.json +trans.uk = public/language/uk/admin/appearance/themes.json +trans.de = public/language/de/admin/appearance/themes.json +trans.es = public/language/es/admin/appearance/themes.json +trans.gl = public/language/gl/admin/appearance/themes.json +trans.it = public/language/it/admin/appearance/themes.json +trans.lv = public/language/lv/admin/appearance/themes.json +trans.vi = public/language/vi/admin/appearance/themes.json +trans.rw = public/language/rw/admin/appearance/themes.json +trans.zh_TW = public/language/zh-TW/admin/appearance/themes.json + +[o:nodebb:p:nodebb:r:admin-dashboard] +file_filter = public/language//admin/dashboard.json +source_file = public/language/en-GB/admin/dashboard.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/dashboard.json +trans.en_US = public/language/en-US/admin/dashboard.json +trans.fa_IR = public/language/fa-IR/admin/dashboard.json +trans.fr = public/language/fr/admin/dashboard.json +trans.hu = public/language/hu/admin/dashboard.json +trans.nl = public/language/nl/admin/dashboard.json +trans.pl = public/language/pl/admin/dashboard.json +trans.bg = public/language/bg/admin/dashboard.json +trans.el = public/language/el/admin/dashboard.json +trans.gl = public/language/gl/admin/dashboard.json +trans.hy = public/language/hy/admin/dashboard.json +trans.id = public/language/id/admin/dashboard.json +trans.ja = public/language/ja/admin/dashboard.json +trans.pt_BR = public/language/pt-BR/admin/dashboard.json +trans.zh_CN = public/language/zh-CN/admin/dashboard.json +trans.zh_TW = public/language/zh-TW/admin/dashboard.json +trans.uk = public/language/uk/admin/dashboard.json +trans.ar = public/language/ar/admin/dashboard.json +trans.de = public/language/de/admin/dashboard.json +trans.en@pirate = public/language/en-x-pirate/admin/dashboard.json +trans.es = public/language/es/admin/dashboard.json +trans.ko = public/language/ko/admin/dashboard.json +trans.sv = public/language/sv/admin/dashboard.json +trans.lv = public/language/lv/admin/dashboard.json +trans.ms = public/language/ms/admin/dashboard.json +trans.ru = public/language/ru/admin/dashboard.json +trans.sl = public/language/sl/admin/dashboard.json +trans.sq_AL = public/language/sq-AL/admin/dashboard.json +trans.da = public/language/da/admin/dashboard.json +trans.lt = public/language/lt/admin/dashboard.json +trans.he = public/language/he/admin/dashboard.json +trans.sr = public/language/sr/admin/dashboard.json +trans.vi = public/language/vi/admin/dashboard.json +trans.pt_PT = public/language/pt-PT/admin/dashboard.json +trans.ro = public/language/ro/admin/dashboard.json +trans.rw = public/language/rw/admin/dashboard.json +trans.sc = public/language/sc/admin/dashboard.json +trans.th = public/language/th/admin/dashboard.json +trans.sk = public/language/sk/admin/dashboard.json +trans.tr = public/language/tr/admin/dashboard.json +trans.cs = public/language/cs/admin/dashboard.json +trans.et = public/language/et/admin/dashboard.json +trans.fi = public/language/fi/admin/dashboard.json +trans.hr = public/language/hr/admin/dashboard.json +trans.it = public/language/it/admin/dashboard.json +trans.nb = public/language/nb/admin/dashboard.json + +[o:nodebb:p:nodebb:r:admin-development-info] +file_filter = public/language//admin/development/info.json +source_file = public/language/en-GB/admin/development/info.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/info.json +trans.et = public/language/et/admin/development/info.json +trans.hr = public/language/hr/admin/development/info.json +trans.ms = public/language/ms/admin/development/info.json +trans.pl = public/language/pl/admin/development/info.json +trans.pt_BR = public/language/pt-BR/admin/development/info.json +trans.ro = public/language/ro/admin/development/info.json +trans.rw = public/language/rw/admin/development/info.json +trans.sl = public/language/sl/admin/development/info.json +trans.sr = public/language/sr/admin/development/info.json +trans.uk = public/language/uk/admin/development/info.json +trans.da = public/language/da/admin/development/info.json +trans.en@pirate = public/language/en-x-pirate/admin/development/info.json +trans.es = public/language/es/admin/development/info.json +trans.fi = public/language/fi/admin/development/info.json +trans.it = public/language/it/admin/development/info.json +trans.lt = public/language/lt/admin/development/info.json +trans.th = public/language/th/admin/development/info.json +trans.ar = public/language/ar/admin/development/info.json +trans.bn = public/language/bn/admin/development/info.json +trans.fa_IR = public/language/fa-IR/admin/development/info.json +trans.hu = public/language/hu/admin/development/info.json +trans.id = public/language/id/admin/development/info.json +trans.lv = public/language/lv/admin/development/info.json +trans.gl = public/language/gl/admin/development/info.json +trans.hy = public/language/hy/admin/development/info.json +trans.zh_CN = public/language/zh-CN/admin/development/info.json +trans.cs = public/language/cs/admin/development/info.json +trans.ja = public/language/ja/admin/development/info.json +trans.nb = public/language/nb/admin/development/info.json +trans.sq_AL = public/language/sq-AL/admin/development/info.json +trans.sv = public/language/sv/admin/development/info.json +trans.bg = public/language/bg/admin/development/info.json +trans.he = public/language/he/admin/development/info.json +trans.sk = public/language/sk/admin/development/info.json +trans.el = public/language/el/admin/development/info.json +trans.fr = public/language/fr/admin/development/info.json +trans.ru = public/language/ru/admin/development/info.json +trans.sc = public/language/sc/admin/development/info.json +trans.tr = public/language/tr/admin/development/info.json +trans.en_US = public/language/en-US/admin/development/info.json +trans.ko = public/language/ko/admin/development/info.json +trans.nl = public/language/nl/admin/development/info.json +trans.pt_PT = public/language/pt-PT/admin/development/info.json +trans.vi = public/language/vi/admin/development/info.json +trans.zh_TW = public/language/zh-TW/admin/development/info.json + +[o:nodebb:p:nodebb:r:admin-development-logger] +file_filter = public/language//admin/development/logger.json +source_file = public/language/en-GB/admin/development/logger.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/logger.json +trans.fr = public/language/fr/admin/development/logger.json +trans.gl = public/language/gl/admin/development/logger.json +trans.hr = public/language/hr/admin/development/logger.json +trans.sl = public/language/sl/admin/development/logger.json +trans.vi = public/language/vi/admin/development/logger.json +trans.zh_TW = public/language/zh-TW/admin/development/logger.json +trans.ar = public/language/ar/admin/development/logger.json +trans.he = public/language/he/admin/development/logger.json +trans.id = public/language/id/admin/development/logger.json +trans.ko = public/language/ko/admin/development/logger.json +trans.lt = public/language/lt/admin/development/logger.json +trans.nb = public/language/nb/admin/development/logger.json +trans.pt_BR = public/language/pt-BR/admin/development/logger.json +trans.ro = public/language/ro/admin/development/logger.json +trans.fi = public/language/fi/admin/development/logger.json +trans.sc = public/language/sc/admin/development/logger.json +trans.ru = public/language/ru/admin/development/logger.json +trans.sq_AL = public/language/sq-AL/admin/development/logger.json +trans.th = public/language/th/admin/development/logger.json +trans.hy = public/language/hy/admin/development/logger.json +trans.fa_IR = public/language/fa-IR/admin/development/logger.json +trans.it = public/language/it/admin/development/logger.json +trans.lv = public/language/lv/admin/development/logger.json +trans.nl = public/language/nl/admin/development/logger.json +trans.pt_PT = public/language/pt-PT/admin/development/logger.json +trans.sk = public/language/sk/admin/development/logger.json +trans.sv = public/language/sv/admin/development/logger.json +trans.el = public/language/el/admin/development/logger.json +trans.uk = public/language/uk/admin/development/logger.json +trans.ms = public/language/ms/admin/development/logger.json +trans.zh_CN = public/language/zh-CN/admin/development/logger.json +trans.bn = public/language/bn/admin/development/logger.json +trans.et = public/language/et/admin/development/logger.json +trans.ja = public/language/ja/admin/development/logger.json +trans.da = public/language/da/admin/development/logger.json +trans.en@pirate = public/language/en-x-pirate/admin/development/logger.json +trans.es = public/language/es/admin/development/logger.json +trans.cs = public/language/cs/admin/development/logger.json +trans.en_US = public/language/en-US/admin/development/logger.json +trans.hu = public/language/hu/admin/development/logger.json +trans.pl = public/language/pl/admin/development/logger.json +trans.rw = public/language/rw/admin/development/logger.json +trans.sr = public/language/sr/admin/development/logger.json +trans.tr = public/language/tr/admin/development/logger.json +trans.bg = public/language/bg/admin/development/logger.json + +[o:nodebb:p:nodebb:r:admin-extend-plugins] +file_filter = public/language//admin/extend/plugins.json +source_file = public/language/en-GB/admin/extend/plugins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/extend/plugins.json +trans.et = public/language/et/admin/extend/plugins.json +trans.hr = public/language/hr/admin/extend/plugins.json +trans.hy = public/language/hy/admin/extend/plugins.json +trans.tr = public/language/tr/admin/extend/plugins.json +trans.it = public/language/it/admin/extend/plugins.json +trans.lv = public/language/lv/admin/extend/plugins.json +trans.sl = public/language/sl/admin/extend/plugins.json +trans.th = public/language/th/admin/extend/plugins.json +trans.en_US = public/language/en-US/admin/extend/plugins.json +trans.he = public/language/he/admin/extend/plugins.json +trans.nb = public/language/nb/admin/extend/plugins.json +trans.sk = public/language/sk/admin/extend/plugins.json +trans.uk = public/language/uk/admin/extend/plugins.json +trans.es = public/language/es/admin/extend/plugins.json +trans.lt = public/language/lt/admin/extend/plugins.json +trans.sv = public/language/sv/admin/extend/plugins.json +trans.nl = public/language/nl/admin/extend/plugins.json +trans.pt_PT = public/language/pt-PT/admin/extend/plugins.json +trans.ar = public/language/ar/admin/extend/plugins.json +trans.cs = public/language/cs/admin/extend/plugins.json +trans.fi = public/language/fi/admin/extend/plugins.json +trans.id = public/language/id/admin/extend/plugins.json +trans.ja = public/language/ja/admin/extend/plugins.json +trans.ko = public/language/ko/admin/extend/plugins.json +trans.ru = public/language/ru/admin/extend/plugins.json +trans.sr = public/language/sr/admin/extend/plugins.json +trans.bn = public/language/bn/admin/extend/plugins.json +trans.de = public/language/de/admin/extend/plugins.json +trans.el = public/language/el/admin/extend/plugins.json +trans.ms = public/language/ms/admin/extend/plugins.json +trans.pt_BR = public/language/pt-BR/admin/extend/plugins.json +trans.sq_AL = public/language/sq-AL/admin/extend/plugins.json +trans.zh_TW = public/language/zh-TW/admin/extend/plugins.json +trans.da = public/language/da/admin/extend/plugins.json +trans.fa_IR = public/language/fa-IR/admin/extend/plugins.json +trans.gl = public/language/gl/admin/extend/plugins.json +trans.hu = public/language/hu/admin/extend/plugins.json +trans.sc = public/language/sc/admin/extend/plugins.json +trans.vi = public/language/vi/admin/extend/plugins.json +trans.bg = public/language/bg/admin/extend/plugins.json +trans.fr = public/language/fr/admin/extend/plugins.json +trans.pl = public/language/pl/admin/extend/plugins.json +trans.ro = public/language/ro/admin/extend/plugins.json +trans.rw = public/language/rw/admin/extend/plugins.json +trans.zh_CN = public/language/zh-CN/admin/extend/plugins.json + +[o:nodebb:p:nodebb:r:admin-extend-rewards] +file_filter = public/language//admin/extend/rewards.json +source_file = public/language/en-GB/admin/extend/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/extend/rewards.json +trans.ar = public/language/ar/admin/extend/rewards.json +trans.fi = public/language/fi/admin/extend/rewards.json +trans.fr = public/language/fr/admin/extend/rewards.json +trans.sr = public/language/sr/admin/extend/rewards.json +trans.id = public/language/id/admin/extend/rewards.json +trans.pt_BR = public/language/pt-BR/admin/extend/rewards.json +trans.sq_AL = public/language/sq-AL/admin/extend/rewards.json +trans.pt_PT = public/language/pt-PT/admin/extend/rewards.json +trans.ro = public/language/ro/admin/extend/rewards.json +trans.ru = public/language/ru/admin/extend/rewards.json +trans.sk = public/language/sk/admin/extend/rewards.json +trans.es = public/language/es/admin/extend/rewards.json +trans.lt = public/language/lt/admin/extend/rewards.json +trans.nl = public/language/nl/admin/extend/rewards.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/rewards.json +trans.hr = public/language/hr/admin/extend/rewards.json +trans.ja = public/language/ja/admin/extend/rewards.json +trans.ko = public/language/ko/admin/extend/rewards.json +trans.nb = public/language/nb/admin/extend/rewards.json +trans.bg = public/language/bg/admin/extend/rewards.json +trans.bn = public/language/bn/admin/extend/rewards.json +trans.da = public/language/da/admin/extend/rewards.json +trans.hy = public/language/hy/admin/extend/rewards.json +trans.pl = public/language/pl/admin/extend/rewards.json +trans.sc = public/language/sc/admin/extend/rewards.json +trans.it = public/language/it/admin/extend/rewards.json +trans.tr = public/language/tr/admin/extend/rewards.json +trans.uk = public/language/uk/admin/extend/rewards.json +trans.vi = public/language/vi/admin/extend/rewards.json +trans.zh_CN = public/language/zh-CN/admin/extend/rewards.json +trans.en_US = public/language/en-US/admin/extend/rewards.json +trans.fa_IR = public/language/fa-IR/admin/extend/rewards.json +trans.he = public/language/he/admin/extend/rewards.json +trans.zh_TW = public/language/zh-TW/admin/extend/rewards.json +trans.lv = public/language/lv/admin/extend/rewards.json +trans.sl = public/language/sl/admin/extend/rewards.json +trans.cs = public/language/cs/admin/extend/rewards.json +trans.el = public/language/el/admin/extend/rewards.json +trans.et = public/language/et/admin/extend/rewards.json +trans.rw = public/language/rw/admin/extend/rewards.json +trans.sv = public/language/sv/admin/extend/rewards.json +trans.th = public/language/th/admin/extend/rewards.json +trans.de = public/language/de/admin/extend/rewards.json +trans.gl = public/language/gl/admin/extend/rewards.json +trans.hu = public/language/hu/admin/extend/rewards.json + +[o:nodebb:p:nodebb:r:admin-extend-widgets] +file_filter = public/language//admin/extend/widgets.json +source_file = public/language/en-GB/admin/extend/widgets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/extend/widgets.json +trans.el = public/language/el/admin/extend/widgets.json +trans.id = public/language/id/admin/extend/widgets.json +trans.nb = public/language/nb/admin/extend/widgets.json +trans.ro = public/language/ro/admin/extend/widgets.json +trans.rw = public/language/rw/admin/extend/widgets.json +trans.ar = public/language/ar/admin/extend/widgets.json +trans.hy = public/language/hy/admin/extend/widgets.json +trans.lv = public/language/lv/admin/extend/widgets.json +trans.ru = public/language/ru/admin/extend/widgets.json +trans.sc = public/language/sc/admin/extend/widgets.json +trans.sr = public/language/sr/admin/extend/widgets.json +trans.tr = public/language/tr/admin/extend/widgets.json +trans.vi = public/language/vi/admin/extend/widgets.json +trans.fr = public/language/fr/admin/extend/widgets.json +trans.fa_IR = public/language/fa-IR/admin/extend/widgets.json +trans.ko = public/language/ko/admin/extend/widgets.json +trans.lt = public/language/lt/admin/extend/widgets.json +trans.sq_AL = public/language/sq-AL/admin/extend/widgets.json +trans.uk = public/language/uk/admin/extend/widgets.json +trans.bg = public/language/bg/admin/extend/widgets.json +trans.de = public/language/de/admin/extend/widgets.json +trans.ms = public/language/ms/admin/extend/widgets.json +trans.nl = public/language/nl/admin/extend/widgets.json +trans.pt_BR = public/language/pt-BR/admin/extend/widgets.json +trans.sk = public/language/sk/admin/extend/widgets.json +trans.zh_CN = public/language/zh-CN/admin/extend/widgets.json +trans.da = public/language/da/admin/extend/widgets.json +trans.hu = public/language/hu/admin/extend/widgets.json +trans.ja = public/language/ja/admin/extend/widgets.json +trans.th = public/language/th/admin/extend/widgets.json +trans.et = public/language/et/admin/extend/widgets.json +trans.gl = public/language/gl/admin/extend/widgets.json +trans.he = public/language/he/admin/extend/widgets.json +trans.it = public/language/it/admin/extend/widgets.json +trans.pl = public/language/pl/admin/extend/widgets.json +trans.zh_TW = public/language/zh-TW/admin/extend/widgets.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/widgets.json +trans.fi = public/language/fi/admin/extend/widgets.json +trans.hr = public/language/hr/admin/extend/widgets.json +trans.sl = public/language/sl/admin/extend/widgets.json +trans.sv = public/language/sv/admin/extend/widgets.json +trans.cs = public/language/cs/admin/extend/widgets.json +trans.es = public/language/es/admin/extend/widgets.json +trans.pt_PT = public/language/pt-PT/admin/extend/widgets.json +trans.en_US = public/language/en-US/admin/extend/widgets.json + +[o:nodebb:p:nodebb:r:admin-manage-admins-mods] +file_filter = public/language//admin/manage/admins-mods.json +source_file = public/language/en-GB/admin/manage/admins-mods.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hu = public/language/hu/admin/manage/admins-mods.json +trans.nb = public/language/nb/admin/manage/admins-mods.json +trans.ru = public/language/ru/admin/manage/admins-mods.json +trans.fr = public/language/fr/admin/manage/admins-mods.json +trans.he = public/language/he/admin/manage/admins-mods.json +trans.lv = public/language/lv/admin/manage/admins-mods.json +trans.sc = public/language/sc/admin/manage/admins-mods.json +trans.vi = public/language/vi/admin/manage/admins-mods.json +trans.es = public/language/es/admin/manage/admins-mods.json +trans.lt = public/language/lt/admin/manage/admins-mods.json +trans.de = public/language/de/admin/manage/admins-mods.json +trans.ja = public/language/ja/admin/manage/admins-mods.json +trans.pl = public/language/pl/admin/manage/admins-mods.json +trans.sq_AL = public/language/sq-AL/admin/manage/admins-mods.json +trans.sr = public/language/sr/admin/manage/admins-mods.json +trans.zh_TW = public/language/zh-TW/admin/manage/admins-mods.json +trans.id = public/language/id/admin/manage/admins-mods.json +trans.ko = public/language/ko/admin/manage/admins-mods.json +trans.gl = public/language/gl/admin/manage/admins-mods.json +trans.hr = public/language/hr/admin/manage/admins-mods.json +trans.hy = public/language/hy/admin/manage/admins-mods.json +trans.rw = public/language/rw/admin/manage/admins-mods.json +trans.bn = public/language/bn/admin/manage/admins-mods.json +trans.fi = public/language/fi/admin/manage/admins-mods.json +trans.ms = public/language/ms/admin/manage/admins-mods.json +trans.pt_BR = public/language/pt-BR/admin/manage/admins-mods.json +trans.pt_PT = public/language/pt-PT/admin/manage/admins-mods.json +trans.sv = public/language/sv/admin/manage/admins-mods.json +trans.th = public/language/th/admin/manage/admins-mods.json +trans.uk = public/language/uk/admin/manage/admins-mods.json +trans.ar = public/language/ar/admin/manage/admins-mods.json +trans.bg = public/language/bg/admin/manage/admins-mods.json +trans.el = public/language/el/admin/manage/admins-mods.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/admins-mods.json +trans.en_US = public/language/en-US/admin/manage/admins-mods.json +trans.it = public/language/it/admin/manage/admins-mods.json +trans.nl = public/language/nl/admin/manage/admins-mods.json +trans.ro = public/language/ro/admin/manage/admins-mods.json +trans.cs = public/language/cs/admin/manage/admins-mods.json +trans.da = public/language/da/admin/manage/admins-mods.json +trans.zh_CN = public/language/zh-CN/admin/manage/admins-mods.json +trans.sk = public/language/sk/admin/manage/admins-mods.json +trans.sl = public/language/sl/admin/manage/admins-mods.json +trans.tr = public/language/tr/admin/manage/admins-mods.json +trans.et = public/language/et/admin/manage/admins-mods.json +trans.fa_IR = public/language/fa-IR/admin/manage/admins-mods.json + +[o:nodebb:p:nodebb:r:admin-manage-categories] +file_filter = public/language//admin/manage/categories.json +source_file = public/language/en-GB/admin/manage/categories.json +source_lang = en_GB +type = KEYVALUEJSON +trans.es = public/language/es/admin/manage/categories.json +trans.gl = public/language/gl/admin/manage/categories.json +trans.pt_PT = public/language/pt-PT/admin/manage/categories.json +trans.sc = public/language/sc/admin/manage/categories.json +trans.zh_TW = public/language/zh-TW/admin/manage/categories.json +trans.bg = public/language/bg/admin/manage/categories.json +trans.hu = public/language/hu/admin/manage/categories.json +trans.hy = public/language/hy/admin/manage/categories.json +trans.sk = public/language/sk/admin/manage/categories.json +trans.uk = public/language/uk/admin/manage/categories.json +trans.vi = public/language/vi/admin/manage/categories.json +trans.bn = public/language/bn/admin/manage/categories.json +trans.en_US = public/language/en-US/admin/manage/categories.json +trans.fr = public/language/fr/admin/manage/categories.json +trans.it = public/language/it/admin/manage/categories.json +trans.nb = public/language/nb/admin/manage/categories.json +trans.ru = public/language/ru/admin/manage/categories.json +trans.sr = public/language/sr/admin/manage/categories.json +trans.fa_IR = public/language/fa-IR/admin/manage/categories.json +trans.id = public/language/id/admin/manage/categories.json +trans.ms = public/language/ms/admin/manage/categories.json +trans.pl = public/language/pl/admin/manage/categories.json +trans.tr = public/language/tr/admin/manage/categories.json +trans.zh_CN = public/language/zh-CN/admin/manage/categories.json +trans.lt = public/language/lt/admin/manage/categories.json +trans.sl = public/language/sl/admin/manage/categories.json +trans.sv = public/language/sv/admin/manage/categories.json +trans.rw = public/language/rw/admin/manage/categories.json +trans.el = public/language/el/admin/manage/categories.json +trans.et = public/language/et/admin/manage/categories.json +trans.fi = public/language/fi/admin/manage/categories.json +trans.he = public/language/he/admin/manage/categories.json +trans.ja = public/language/ja/admin/manage/categories.json +trans.ko = public/language/ko/admin/manage/categories.json +trans.ro = public/language/ro/admin/manage/categories.json +trans.cs = public/language/cs/admin/manage/categories.json +trans.sq_AL = public/language/sq-AL/admin/manage/categories.json +trans.th = public/language/th/admin/manage/categories.json +trans.pt_BR = public/language/pt-BR/admin/manage/categories.json +trans.ar = public/language/ar/admin/manage/categories.json +trans.da = public/language/da/admin/manage/categories.json +trans.de = public/language/de/admin/manage/categories.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/categories.json +trans.hr = public/language/hr/admin/manage/categories.json +trans.lv = public/language/lv/admin/manage/categories.json +trans.nl = public/language/nl/admin/manage/categories.json + +[o:nodebb:p:nodebb:r:admin-manage-digest] +file_filter = public/language//admin/manage/digest.json +source_file = public/language/en-GB/admin/manage/digest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/manage/digest.json +trans.fi = public/language/fi/admin/manage/digest.json +trans.gl = public/language/gl/admin/manage/digest.json +trans.fr = public/language/fr/admin/manage/digest.json +trans.hu = public/language/hu/admin/manage/digest.json +trans.id = public/language/id/admin/manage/digest.json +trans.lv = public/language/lv/admin/manage/digest.json +trans.pl = public/language/pl/admin/manage/digest.json +trans.sl = public/language/sl/admin/manage/digest.json +trans.da = public/language/da/admin/manage/digest.json +trans.fa_IR = public/language/fa-IR/admin/manage/digest.json +trans.sq_AL = public/language/sq-AL/admin/manage/digest.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/digest.json +trans.en_US = public/language/en-US/admin/manage/digest.json +trans.he = public/language/he/admin/manage/digest.json +trans.hr = public/language/hr/admin/manage/digest.json +trans.hy = public/language/hy/admin/manage/digest.json +trans.it = public/language/it/admin/manage/digest.json +trans.bg = public/language/bg/admin/manage/digest.json +trans.bn = public/language/bn/admin/manage/digest.json +trans.ro = public/language/ro/admin/manage/digest.json +trans.th = public/language/th/admin/manage/digest.json +trans.uk = public/language/uk/admin/manage/digest.json +trans.vi = public/language/vi/admin/manage/digest.json +trans.ms = public/language/ms/admin/manage/digest.json +trans.pt_BR = public/language/pt-BR/admin/manage/digest.json +trans.rw = public/language/rw/admin/manage/digest.json +trans.de = public/language/de/admin/manage/digest.json +trans.el = public/language/el/admin/manage/digest.json +trans.nl = public/language/nl/admin/manage/digest.json +trans.ru = public/language/ru/admin/manage/digest.json +trans.sv = public/language/sv/admin/manage/digest.json +trans.zh_TW = public/language/zh-TW/admin/manage/digest.json +trans.es = public/language/es/admin/manage/digest.json +trans.lt = public/language/lt/admin/manage/digest.json +trans.ko = public/language/ko/admin/manage/digest.json +trans.zh_CN = public/language/zh-CN/admin/manage/digest.json +trans.ar = public/language/ar/admin/manage/digest.json +trans.ja = public/language/ja/admin/manage/digest.json +trans.nb = public/language/nb/admin/manage/digest.json +trans.sk = public/language/sk/admin/manage/digest.json +trans.pt_PT = public/language/pt-PT/admin/manage/digest.json +trans.sc = public/language/sc/admin/manage/digest.json +trans.tr = public/language/tr/admin/manage/digest.json +trans.cs = public/language/cs/admin/manage/digest.json +trans.et = public/language/et/admin/manage/digest.json + +[o:nodebb:p:nodebb:r:admin-manage-groups] +file_filter = public/language//admin/manage/groups.json +source_file = public/language/en-GB/admin/manage/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_PT = public/language/pt-PT/admin/manage/groups.json +trans.tr = public/language/tr/admin/manage/groups.json +trans.uk = public/language/uk/admin/manage/groups.json +trans.zh_TW = public/language/zh-TW/admin/manage/groups.json +trans.nb = public/language/nb/admin/manage/groups.json +trans.id = public/language/id/admin/manage/groups.json +trans.lt = public/language/lt/admin/manage/groups.json +trans.pl = public/language/pl/admin/manage/groups.json +trans.sc = public/language/sc/admin/manage/groups.json +trans.hy = public/language/hy/admin/manage/groups.json +trans.he = public/language/he/admin/manage/groups.json +trans.ko = public/language/ko/admin/manage/groups.json +trans.sv = public/language/sv/admin/manage/groups.json +trans.bn = public/language/bn/admin/manage/groups.json +trans.es = public/language/es/admin/manage/groups.json +trans.ja = public/language/ja/admin/manage/groups.json +trans.th = public/language/th/admin/manage/groups.json +trans.cs = public/language/cs/admin/manage/groups.json +trans.fi = public/language/fi/admin/manage/groups.json +trans.hr = public/language/hr/admin/manage/groups.json +trans.it = public/language/it/admin/manage/groups.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/groups.json +trans.bg = public/language/bg/admin/manage/groups.json +trans.hu = public/language/hu/admin/manage/groups.json +trans.pt_BR = public/language/pt-BR/admin/manage/groups.json +trans.ro = public/language/ro/admin/manage/groups.json +trans.ru = public/language/ru/admin/manage/groups.json +trans.sq_AL = public/language/sq-AL/admin/manage/groups.json +trans.vi = public/language/vi/admin/manage/groups.json +trans.ar = public/language/ar/admin/manage/groups.json +trans.et = public/language/et/admin/manage/groups.json +trans.fa_IR = public/language/fa-IR/admin/manage/groups.json +trans.fr = public/language/fr/admin/manage/groups.json +trans.nl = public/language/nl/admin/manage/groups.json +trans.rw = public/language/rw/admin/manage/groups.json +trans.sl = public/language/sl/admin/manage/groups.json +trans.zh_CN = public/language/zh-CN/admin/manage/groups.json +trans.da = public/language/da/admin/manage/groups.json +trans.el = public/language/el/admin/manage/groups.json +trans.en_US = public/language/en-US/admin/manage/groups.json +trans.gl = public/language/gl/admin/manage/groups.json +trans.lv = public/language/lv/admin/manage/groups.json +trans.ms = public/language/ms/admin/manage/groups.json +trans.sk = public/language/sk/admin/manage/groups.json +trans.sr = public/language/sr/admin/manage/groups.json +trans.de = public/language/de/admin/manage/groups.json + +[o:nodebb:p:nodebb:r:admin-manage-privileges] +file_filter = public/language//admin/manage/privileges.json +source_file = public/language/en-GB/admin/manage/privileges.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/manage/privileges.json +trans.es = public/language/es/admin/manage/privileges.json +trans.fa_IR = public/language/fa-IR/admin/manage/privileges.json +trans.ms = public/language/ms/admin/manage/privileges.json +trans.ro = public/language/ro/admin/manage/privileges.json +trans.sl = public/language/sl/admin/manage/privileges.json +trans.el = public/language/el/admin/manage/privileges.json +trans.lt = public/language/lt/admin/manage/privileges.json +trans.pt_BR = public/language/pt-BR/admin/manage/privileges.json +trans.pt_PT = public/language/pt-PT/admin/manage/privileges.json +trans.hu = public/language/hu/admin/manage/privileges.json +trans.pl = public/language/pl/admin/manage/privileges.json +trans.sc = public/language/sc/admin/manage/privileges.json +trans.uk = public/language/uk/admin/manage/privileges.json +trans.bn = public/language/bn/admin/manage/privileges.json +trans.cs = public/language/cs/admin/manage/privileges.json +trans.da = public/language/da/admin/manage/privileges.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/privileges.json +trans.vi = public/language/vi/admin/manage/privileges.json +trans.en_US = public/language/en-US/admin/manage/privileges.json +trans.hy = public/language/hy/admin/manage/privileges.json +trans.sr = public/language/sr/admin/manage/privileges.json +trans.ja = public/language/ja/admin/manage/privileges.json +trans.nb = public/language/nb/admin/manage/privileges.json +trans.nl = public/language/nl/admin/manage/privileges.json +trans.sv = public/language/sv/admin/manage/privileges.json +trans.et = public/language/et/admin/manage/privileges.json +trans.fr = public/language/fr/admin/manage/privileges.json +trans.he = public/language/he/admin/manage/privileges.json +trans.hr = public/language/hr/admin/manage/privileges.json +trans.th = public/language/th/admin/manage/privileges.json +trans.sq_AL = public/language/sq-AL/admin/manage/privileges.json +trans.gl = public/language/gl/admin/manage/privileges.json +trans.ko = public/language/ko/admin/manage/privileges.json +trans.lv = public/language/lv/admin/manage/privileges.json +trans.sk = public/language/sk/admin/manage/privileges.json +trans.tr = public/language/tr/admin/manage/privileges.json +trans.fi = public/language/fi/admin/manage/privileges.json +trans.id = public/language/id/admin/manage/privileges.json +trans.it = public/language/it/admin/manage/privileges.json +trans.rw = public/language/rw/admin/manage/privileges.json +trans.zh_TW = public/language/zh-TW/admin/manage/privileges.json +trans.ar = public/language/ar/admin/manage/privileges.json +trans.de = public/language/de/admin/manage/privileges.json +trans.ru = public/language/ru/admin/manage/privileges.json +trans.zh_CN = public/language/zh-CN/admin/manage/privileges.json + +[o:nodebb:p:nodebb:r:admin-manage-registration] +file_filter = public/language//admin/manage/registration.json +source_file = public/language/en-GB/admin/manage/registration.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pl = public/language/pl/admin/manage/registration.json +trans.ro = public/language/ro/admin/manage/registration.json +trans.sk = public/language/sk/admin/manage/registration.json +trans.fi = public/language/fi/admin/manage/registration.json +trans.hu = public/language/hu/admin/manage/registration.json +trans.ms = public/language/ms/admin/manage/registration.json +trans.ru = public/language/ru/admin/manage/registration.json +trans.sc = public/language/sc/admin/manage/registration.json +trans.sr = public/language/sr/admin/manage/registration.json +trans.th = public/language/th/admin/manage/registration.json +trans.zh_TW = public/language/zh-TW/admin/manage/registration.json +trans.da = public/language/da/admin/manage/registration.json +trans.et = public/language/et/admin/manage/registration.json +trans.it = public/language/it/admin/manage/registration.json +trans.nb = public/language/nb/admin/manage/registration.json +trans.pt_BR = public/language/pt-BR/admin/manage/registration.json +trans.hy = public/language/hy/admin/manage/registration.json +trans.uk = public/language/uk/admin/manage/registration.json +trans.sq_AL = public/language/sq-AL/admin/manage/registration.json +trans.ar = public/language/ar/admin/manage/registration.json +trans.es = public/language/es/admin/manage/registration.json +trans.he = public/language/he/admin/manage/registration.json +trans.id = public/language/id/admin/manage/registration.json +trans.nl = public/language/nl/admin/manage/registration.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/registration.json +trans.en_US = public/language/en-US/admin/manage/registration.json +trans.rw = public/language/rw/admin/manage/registration.json +trans.sv = public/language/sv/admin/manage/registration.json +trans.tr = public/language/tr/admin/manage/registration.json +trans.vi = public/language/vi/admin/manage/registration.json +trans.bg = public/language/bg/admin/manage/registration.json +trans.cs = public/language/cs/admin/manage/registration.json +trans.fa_IR = public/language/fa-IR/admin/manage/registration.json +trans.fr = public/language/fr/admin/manage/registration.json +trans.lt = public/language/lt/admin/manage/registration.json +trans.ja = public/language/ja/admin/manage/registration.json +trans.ko = public/language/ko/admin/manage/registration.json +trans.lv = public/language/lv/admin/manage/registration.json +trans.bn = public/language/bn/admin/manage/registration.json +trans.de = public/language/de/admin/manage/registration.json +trans.el = public/language/el/admin/manage/registration.json +trans.gl = public/language/gl/admin/manage/registration.json +trans.hr = public/language/hr/admin/manage/registration.json +trans.pt_PT = public/language/pt-PT/admin/manage/registration.json +trans.sl = public/language/sl/admin/manage/registration.json +trans.zh_CN = public/language/zh-CN/admin/manage/registration.json + +[o:nodebb:p:nodebb:r:admin-manage-tags] +file_filter = public/language//admin/manage/tags.json +source_file = public/language/en-GB/admin/manage/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/manage/tags.json +trans.bg = public/language/bg/admin/manage/tags.json +trans.da = public/language/da/admin/manage/tags.json +trans.en_US = public/language/en-US/admin/manage/tags.json +trans.hu = public/language/hu/admin/manage/tags.json +trans.nb = public/language/nb/admin/manage/tags.json +trans.ru = public/language/ru/admin/manage/tags.json +trans.sq_AL = public/language/sq-AL/admin/manage/tags.json +trans.de = public/language/de/admin/manage/tags.json +trans.fi = public/language/fi/admin/manage/tags.json +trans.hr = public/language/hr/admin/manage/tags.json +trans.ko = public/language/ko/admin/manage/tags.json +trans.ms = public/language/ms/admin/manage/tags.json +trans.th = public/language/th/admin/manage/tags.json +trans.ar = public/language/ar/admin/manage/tags.json +trans.el = public/language/el/admin/manage/tags.json +trans.es = public/language/es/admin/manage/tags.json +trans.hy = public/language/hy/admin/manage/tags.json +trans.ja = public/language/ja/admin/manage/tags.json +trans.cs = public/language/cs/admin/manage/tags.json +trans.pl = public/language/pl/admin/manage/tags.json +trans.ro = public/language/ro/admin/manage/tags.json +trans.rw = public/language/rw/admin/manage/tags.json +trans.bn = public/language/bn/admin/manage/tags.json +trans.fa_IR = public/language/fa-IR/admin/manage/tags.json +trans.zh_CN = public/language/zh-CN/admin/manage/tags.json +trans.et = public/language/et/admin/manage/tags.json +trans.fr = public/language/fr/admin/manage/tags.json +trans.gl = public/language/gl/admin/manage/tags.json +trans.id = public/language/id/admin/manage/tags.json +trans.lt = public/language/lt/admin/manage/tags.json +trans.sv = public/language/sv/admin/manage/tags.json +trans.tr = public/language/tr/admin/manage/tags.json +trans.uk = public/language/uk/admin/manage/tags.json +trans.lv = public/language/lv/admin/manage/tags.json +trans.nl = public/language/nl/admin/manage/tags.json +trans.pt_BR = public/language/pt-BR/admin/manage/tags.json +trans.pt_PT = public/language/pt-PT/admin/manage/tags.json +trans.sc = public/language/sc/admin/manage/tags.json +trans.sk = public/language/sk/admin/manage/tags.json +trans.sl = public/language/sl/admin/manage/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/tags.json +trans.he = public/language/he/admin/manage/tags.json +trans.it = public/language/it/admin/manage/tags.json +trans.sr = public/language/sr/admin/manage/tags.json +trans.vi = public/language/vi/admin/manage/tags.json + +[o:nodebb:p:nodebb:r:admin-manage-uploads] +file_filter = public/language//admin/manage/uploads.json +source_file = public/language/en-GB/admin/manage/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/manage/uploads.json +trans.nb = public/language/nb/admin/manage/uploads.json +trans.tr = public/language/tr/admin/manage/uploads.json +trans.bg = public/language/bg/admin/manage/uploads.json +trans.bn = public/language/bn/admin/manage/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/uploads.json +trans.lt = public/language/lt/admin/manage/uploads.json +trans.sq_AL = public/language/sq-AL/admin/manage/uploads.json +trans.el = public/language/el/admin/manage/uploads.json +trans.en_US = public/language/en-US/admin/manage/uploads.json +trans.fi = public/language/fi/admin/manage/uploads.json +trans.hr = public/language/hr/admin/manage/uploads.json +trans.sv = public/language/sv/admin/manage/uploads.json +trans.ar = public/language/ar/admin/manage/uploads.json +trans.de = public/language/de/admin/manage/uploads.json +trans.fr = public/language/fr/admin/manage/uploads.json +trans.he = public/language/he/admin/manage/uploads.json +trans.ro = public/language/ro/admin/manage/uploads.json +trans.rw = public/language/rw/admin/manage/uploads.json +trans.gl = public/language/gl/admin/manage/uploads.json +trans.nl = public/language/nl/admin/manage/uploads.json +trans.pl = public/language/pl/admin/manage/uploads.json +trans.pt_BR = public/language/pt-BR/admin/manage/uploads.json +trans.sc = public/language/sc/admin/manage/uploads.json +trans.th = public/language/th/admin/manage/uploads.json +trans.es = public/language/es/admin/manage/uploads.json +trans.et = public/language/et/admin/manage/uploads.json +trans.lv = public/language/lv/admin/manage/uploads.json +trans.pt_PT = public/language/pt-PT/admin/manage/uploads.json +trans.sr = public/language/sr/admin/manage/uploads.json +trans.uk = public/language/uk/admin/manage/uploads.json +trans.vi = public/language/vi/admin/manage/uploads.json +trans.cs = public/language/cs/admin/manage/uploads.json +trans.ru = public/language/ru/admin/manage/uploads.json +trans.sk = public/language/sk/admin/manage/uploads.json +trans.sl = public/language/sl/admin/manage/uploads.json +trans.fa_IR = public/language/fa-IR/admin/manage/uploads.json +trans.hu = public/language/hu/admin/manage/uploads.json +trans.hy = public/language/hy/admin/manage/uploads.json +trans.zh_CN = public/language/zh-CN/admin/manage/uploads.json +trans.ko = public/language/ko/admin/manage/uploads.json +trans.zh_TW = public/language/zh-TW/admin/manage/uploads.json +trans.da = public/language/da/admin/manage/uploads.json +trans.id = public/language/id/admin/manage/uploads.json +trans.it = public/language/it/admin/manage/uploads.json +trans.ja = public/language/ja/admin/manage/uploads.json + +[o:nodebb:p:nodebb:r:admin-manage-users] +file_filter = public/language//admin/manage/users.json +source_file = public/language/en-GB/admin/manage/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/manage/users.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/users.json +trans.en_US = public/language/en-US/admin/manage/users.json +trans.fr = public/language/fr/admin/manage/users.json +trans.ko = public/language/ko/admin/manage/users.json +trans.ms = public/language/ms/admin/manage/users.json +trans.nb = public/language/nb/admin/manage/users.json +trans.pt_BR = public/language/pt-BR/admin/manage/users.json +trans.zh_CN = public/language/zh-CN/admin/manage/users.json +trans.zh_TW = public/language/zh-TW/admin/manage/users.json +trans.cs = public/language/cs/admin/manage/users.json +trans.gl = public/language/gl/admin/manage/users.json +trans.rw = public/language/rw/admin/manage/users.json +trans.bg = public/language/bg/admin/manage/users.json +trans.de = public/language/de/admin/manage/users.json +trans.et = public/language/et/admin/manage/users.json +trans.id = public/language/id/admin/manage/users.json +trans.pt_PT = public/language/pt-PT/admin/manage/users.json +trans.ru = public/language/ru/admin/manage/users.json +trans.da = public/language/da/admin/manage/users.json +trans.he = public/language/he/admin/manage/users.json +trans.hu = public/language/hu/admin/manage/users.json +trans.ro = public/language/ro/admin/manage/users.json +trans.bn = public/language/bn/admin/manage/users.json +trans.es = public/language/es/admin/manage/users.json +trans.it = public/language/it/admin/manage/users.json +trans.nl = public/language/nl/admin/manage/users.json +trans.sq_AL = public/language/sq-AL/admin/manage/users.json +trans.tr = public/language/tr/admin/manage/users.json +trans.vi = public/language/vi/admin/manage/users.json +trans.fi = public/language/fi/admin/manage/users.json +trans.sc = public/language/sc/admin/manage/users.json +trans.hy = public/language/hy/admin/manage/users.json +trans.ja = public/language/ja/admin/manage/users.json +trans.lt = public/language/lt/admin/manage/users.json +trans.th = public/language/th/admin/manage/users.json +trans.sl = public/language/sl/admin/manage/users.json +trans.ar = public/language/ar/admin/manage/users.json +trans.el = public/language/el/admin/manage/users.json +trans.fa_IR = public/language/fa-IR/admin/manage/users.json +trans.hr = public/language/hr/admin/manage/users.json +trans.lv = public/language/lv/admin/manage/users.json +trans.pl = public/language/pl/admin/manage/users.json +trans.sk = public/language/sk/admin/manage/users.json +trans.sr = public/language/sr/admin/manage/users.json +trans.sv = public/language/sv/admin/manage/users.json + +[o:nodebb:p:nodebb:r:admin-menu] +file_filter = public/language//admin/menu.json +source_file = public/language/en-GB/admin/menu.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/admin/menu.json +trans.th = public/language/th/admin/menu.json +trans.vi = public/language/vi/admin/menu.json +trans.zh_CN = public/language/zh-CN/admin/menu.json +trans.hr = public/language/hr/admin/menu.json +trans.ko = public/language/ko/admin/menu.json +trans.it = public/language/it/admin/menu.json +trans.lt = public/language/lt/admin/menu.json +trans.pl = public/language/pl/admin/menu.json +trans.sc = public/language/sc/admin/menu.json +trans.sv = public/language/sv/admin/menu.json +trans.en@pirate = public/language/en-x-pirate/admin/menu.json +trans.fr = public/language/fr/admin/menu.json +trans.de = public/language/de/admin/menu.json +trans.ms = public/language/ms/admin/menu.json +trans.sq_AL = public/language/sq-AL/admin/menu.json +trans.bg = public/language/bg/admin/menu.json +trans.da = public/language/da/admin/menu.json +trans.es = public/language/es/admin/menu.json +trans.hy = public/language/hy/admin/menu.json +trans.id = public/language/id/admin/menu.json +trans.ja = public/language/ja/admin/menu.json +trans.ro = public/language/ro/admin/menu.json +trans.rw = public/language/rw/admin/menu.json +trans.ar = public/language/ar/admin/menu.json +trans.en_US = public/language/en-US/admin/menu.json +trans.sl = public/language/sl/admin/menu.json +trans.uk = public/language/uk/admin/menu.json +trans.he = public/language/he/admin/menu.json +trans.hu = public/language/hu/admin/menu.json +trans.sr = public/language/sr/admin/menu.json +trans.cs = public/language/cs/admin/menu.json +trans.fa_IR = public/language/fa-IR/admin/menu.json +trans.sk = public/language/sk/admin/menu.json +trans.tr = public/language/tr/admin/menu.json +trans.fi = public/language/fi/admin/menu.json +trans.nl = public/language/nl/admin/menu.json +trans.pt_BR = public/language/pt-BR/admin/menu.json +trans.zh_TW = public/language/zh-TW/admin/menu.json +trans.el = public/language/el/admin/menu.json +trans.gl = public/language/gl/admin/menu.json +trans.lv = public/language/lv/admin/menu.json +trans.nb = public/language/nb/admin/menu.json +trans.pt_PT = public/language/pt-PT/admin/menu.json +trans.bn = public/language/bn/admin/menu.json +trans.et = public/language/et/admin/menu.json + +[o:nodebb:p:nodebb:r:admin-settings-advanced] +file_filter = public/language//admin/settings/advanced.json +source_file = public/language/en-GB/admin/settings/advanced.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/advanced.json +trans.sc = public/language/sc/admin/settings/advanced.json +trans.ar = public/language/ar/admin/settings/advanced.json +trans.bn = public/language/bn/admin/settings/advanced.json +trans.el = public/language/el/admin/settings/advanced.json +trans.fa_IR = public/language/fa-IR/admin/settings/advanced.json +trans.fr = public/language/fr/admin/settings/advanced.json +trans.hy = public/language/hy/admin/settings/advanced.json +trans.bg = public/language/bg/admin/settings/advanced.json +trans.lv = public/language/lv/admin/settings/advanced.json +trans.pt_BR = public/language/pt-BR/admin/settings/advanced.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/advanced.json +trans.es = public/language/es/admin/settings/advanced.json +trans.id = public/language/id/admin/settings/advanced.json +trans.rw = public/language/rw/admin/settings/advanced.json +trans.sl = public/language/sl/admin/settings/advanced.json +trans.it = public/language/it/admin/settings/advanced.json +trans.nb = public/language/nb/admin/settings/advanced.json +trans.pt_PT = public/language/pt-PT/admin/settings/advanced.json +trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json +trans.sr = public/language/sr/admin/settings/advanced.json +trans.zh_CN = public/language/zh-CN/admin/settings/advanced.json +trans.zh_TW = public/language/zh-TW/admin/settings/advanced.json +trans.cs = public/language/cs/admin/settings/advanced.json +trans.en_US = public/language/en-US/admin/settings/advanced.json +trans.hr = public/language/hr/admin/settings/advanced.json +trans.pl = public/language/pl/admin/settings/advanced.json +trans.ru = public/language/ru/admin/settings/advanced.json +trans.sv = public/language/sv/admin/settings/advanced.json +trans.vi = public/language/vi/admin/settings/advanced.json +trans.de = public/language/de/admin/settings/advanced.json +trans.et = public/language/et/admin/settings/advanced.json +trans.fi = public/language/fi/admin/settings/advanced.json +trans.ro = public/language/ro/admin/settings/advanced.json +trans.sk = public/language/sk/admin/settings/advanced.json +trans.uk = public/language/uk/admin/settings/advanced.json +trans.da = public/language/da/admin/settings/advanced.json +trans.gl = public/language/gl/admin/settings/advanced.json +trans.he = public/language/he/admin/settings/advanced.json +trans.hu = public/language/hu/admin/settings/advanced.json +trans.ja = public/language/ja/admin/settings/advanced.json +trans.tr = public/language/tr/admin/settings/advanced.json +trans.lt = public/language/lt/admin/settings/advanced.json +trans.ms = public/language/ms/admin/settings/advanced.json +trans.nl = public/language/nl/admin/settings/advanced.json +trans.th = public/language/th/admin/settings/advanced.json + +[o:nodebb:p:nodebb:r:admin-settings-api] +file_filter = public/language//admin/settings/api.json +source_file = public/language/en-GB/admin/settings/api.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/settings/api.json +trans.lv = public/language/lv/admin/settings/api.json +trans.nl = public/language/nl/admin/settings/api.json +trans.rw = public/language/rw/admin/settings/api.json +trans.sl = public/language/sl/admin/settings/api.json +trans.bn = public/language/bn/admin/settings/api.json +trans.de = public/language/de/admin/settings/api.json +trans.el = public/language/el/admin/settings/api.json +trans.en_US = public/language/en-US/admin/settings/api.json +trans.fi = public/language/fi/admin/settings/api.json +trans.he = public/language/he/admin/settings/api.json +trans.hr = public/language/hr/admin/settings/api.json +trans.hy = public/language/hy/admin/settings/api.json +trans.ja = public/language/ja/admin/settings/api.json +trans.ko = public/language/ko/admin/settings/api.json +trans.ms = public/language/ms/admin/settings/api.json +trans.pt_BR = public/language/pt-BR/admin/settings/api.json +trans.zh_CN = public/language/zh-CN/admin/settings/api.json +trans.zh_TW = public/language/zh-TW/admin/settings/api.json +trans.cs = public/language/cs/admin/settings/api.json +trans.it = public/language/it/admin/settings/api.json +trans.nb = public/language/nb/admin/settings/api.json +trans.pt_PT = public/language/pt-PT/admin/settings/api.json +trans.ru = public/language/ru/admin/settings/api.json +trans.uk = public/language/uk/admin/settings/api.json +trans.vi = public/language/vi/admin/settings/api.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/api.json +trans.fr = public/language/fr/admin/settings/api.json +trans.lt = public/language/lt/admin/settings/api.json +trans.sr = public/language/sr/admin/settings/api.json +trans.fa_IR = public/language/fa-IR/admin/settings/api.json +trans.sq_AL = public/language/sq-AL/admin/settings/api.json +trans.th = public/language/th/admin/settings/api.json +trans.da = public/language/da/admin/settings/api.json +trans.gl = public/language/gl/admin/settings/api.json +trans.pl = public/language/pl/admin/settings/api.json +trans.ar = public/language/ar/admin/settings/api.json +trans.es = public/language/es/admin/settings/api.json +trans.hu = public/language/hu/admin/settings/api.json +trans.sc = public/language/sc/admin/settings/api.json +trans.bg = public/language/bg/admin/settings/api.json +trans.id = public/language/id/admin/settings/api.json +trans.ro = public/language/ro/admin/settings/api.json +trans.sk = public/language/sk/admin/settings/api.json +trans.sv = public/language/sv/admin/settings/api.json +trans.tr = public/language/tr/admin/settings/api.json + +[o:nodebb:p:nodebb:r:admin-settings-chat] +file_filter = public/language//admin/settings/chat.json +source_file = public/language/en-GB/admin/settings/chat.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/chat.json +trans.es = public/language/es/admin/settings/chat.json +trans.et = public/language/et/admin/settings/chat.json +trans.ms = public/language/ms/admin/settings/chat.json +trans.sk = public/language/sk/admin/settings/chat.json +trans.sq_AL = public/language/sq-AL/admin/settings/chat.json +trans.da = public/language/da/admin/settings/chat.json +trans.de = public/language/de/admin/settings/chat.json +trans.en_US = public/language/en-US/admin/settings/chat.json +trans.fa_IR = public/language/fa-IR/admin/settings/chat.json +trans.fr = public/language/fr/admin/settings/chat.json +trans.id = public/language/id/admin/settings/chat.json +trans.ro = public/language/ro/admin/settings/chat.json +trans.el = public/language/el/admin/settings/chat.json +trans.hr = public/language/hr/admin/settings/chat.json +trans.ja = public/language/ja/admin/settings/chat.json +trans.ko = public/language/ko/admin/settings/chat.json +trans.nb = public/language/nb/admin/settings/chat.json +trans.nl = public/language/nl/admin/settings/chat.json +trans.uk = public/language/uk/admin/settings/chat.json +trans.he = public/language/he/admin/settings/chat.json +trans.sl = public/language/sl/admin/settings/chat.json +trans.sr = public/language/sr/admin/settings/chat.json +trans.cs = public/language/cs/admin/settings/chat.json +trans.pl = public/language/pl/admin/settings/chat.json +trans.pt_BR = public/language/pt-BR/admin/settings/chat.json +trans.sv = public/language/sv/admin/settings/chat.json +trans.zh_CN = public/language/zh-CN/admin/settings/chat.json +trans.bg = public/language/bg/admin/settings/chat.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/chat.json +trans.hu = public/language/hu/admin/settings/chat.json +trans.ru = public/language/ru/admin/settings/chat.json +trans.rw = public/language/rw/admin/settings/chat.json +trans.tr = public/language/tr/admin/settings/chat.json +trans.bn = public/language/bn/admin/settings/chat.json +trans.hy = public/language/hy/admin/settings/chat.json +trans.lt = public/language/lt/admin/settings/chat.json +trans.lv = public/language/lv/admin/settings/chat.json +trans.th = public/language/th/admin/settings/chat.json +trans.fi = public/language/fi/admin/settings/chat.json +trans.gl = public/language/gl/admin/settings/chat.json +trans.it = public/language/it/admin/settings/chat.json +trans.pt_PT = public/language/pt-PT/admin/settings/chat.json +trans.sc = public/language/sc/admin/settings/chat.json +trans.vi = public/language/vi/admin/settings/chat.json +trans.zh_TW = public/language/zh-TW/admin/settings/chat.json + +[o:nodebb:p:nodebb:r:admin-settings-cookies] +file_filter = public/language//admin/settings/cookies.json +source_file = public/language/en-GB/admin/settings/cookies.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/settings/cookies.json +trans.th = public/language/th/admin/settings/cookies.json +trans.zh_CN = public/language/zh-CN/admin/settings/cookies.json +trans.en_US = public/language/en-US/admin/settings/cookies.json +trans.lt = public/language/lt/admin/settings/cookies.json +trans.pl = public/language/pl/admin/settings/cookies.json +trans.ro = public/language/ro/admin/settings/cookies.json +trans.rw = public/language/rw/admin/settings/cookies.json +trans.sk = public/language/sk/admin/settings/cookies.json +trans.tr = public/language/tr/admin/settings/cookies.json +trans.ar = public/language/ar/admin/settings/cookies.json +trans.da = public/language/da/admin/settings/cookies.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/cookies.json +trans.gl = public/language/gl/admin/settings/cookies.json +trans.hu = public/language/hu/admin/settings/cookies.json +trans.vi = public/language/vi/admin/settings/cookies.json +trans.el = public/language/el/admin/settings/cookies.json +trans.et = public/language/et/admin/settings/cookies.json +trans.lv = public/language/lv/admin/settings/cookies.json +trans.ru = public/language/ru/admin/settings/cookies.json +trans.uk = public/language/uk/admin/settings/cookies.json +trans.ko = public/language/ko/admin/settings/cookies.json +trans.sv = public/language/sv/admin/settings/cookies.json +trans.bn = public/language/bn/admin/settings/cookies.json +trans.de = public/language/de/admin/settings/cookies.json +trans.he = public/language/he/admin/settings/cookies.json +trans.hy = public/language/hy/admin/settings/cookies.json +trans.it = public/language/it/admin/settings/cookies.json +trans.cs = public/language/cs/admin/settings/cookies.json +trans.hr = public/language/hr/admin/settings/cookies.json +trans.ja = public/language/ja/admin/settings/cookies.json +trans.pt_PT = public/language/pt-PT/admin/settings/cookies.json +trans.nb = public/language/nb/admin/settings/cookies.json +trans.sc = public/language/sc/admin/settings/cookies.json +trans.bg = public/language/bg/admin/settings/cookies.json +trans.fi = public/language/fi/admin/settings/cookies.json +trans.fr = public/language/fr/admin/settings/cookies.json +trans.id = public/language/id/admin/settings/cookies.json +trans.ms = public/language/ms/admin/settings/cookies.json +trans.zh_TW = public/language/zh-TW/admin/settings/cookies.json +trans.es = public/language/es/admin/settings/cookies.json +trans.fa_IR = public/language/fa-IR/admin/settings/cookies.json +trans.nl = public/language/nl/admin/settings/cookies.json +trans.sl = public/language/sl/admin/settings/cookies.json +trans.sq_AL = public/language/sq-AL/admin/settings/cookies.json +trans.pt_BR = public/language/pt-BR/admin/settings/cookies.json + +[o:nodebb:p:nodebb:r:admin-settings-email] +file_filter = public/language//admin/settings/email.json +source_file = public/language/en-GB/admin/settings/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/email.json +trans.tr = public/language/tr/admin/settings/email.json +trans.uk = public/language/uk/admin/settings/email.json +trans.ar = public/language/ar/admin/settings/email.json +trans.ja = public/language/ja/admin/settings/email.json +trans.pt_PT = public/language/pt-PT/admin/settings/email.json +trans.sr = public/language/sr/admin/settings/email.json +trans.ms = public/language/ms/admin/settings/email.json +trans.nb = public/language/nb/admin/settings/email.json +trans.ru = public/language/ru/admin/settings/email.json +trans.sk = public/language/sk/admin/settings/email.json +trans.fr = public/language/fr/admin/settings/email.json +trans.he = public/language/he/admin/settings/email.json +trans.id = public/language/id/admin/settings/email.json +trans.it = public/language/it/admin/settings/email.json +trans.sl = public/language/sl/admin/settings/email.json +trans.sq_AL = public/language/sq-AL/admin/settings/email.json +trans.hr = public/language/hr/admin/settings/email.json +trans.hu = public/language/hu/admin/settings/email.json +trans.ko = public/language/ko/admin/settings/email.json +trans.zh_TW = public/language/zh-TW/admin/settings/email.json +trans.bn = public/language/bn/admin/settings/email.json +trans.fi = public/language/fi/admin/settings/email.json +trans.pt_BR = public/language/pt-BR/admin/settings/email.json +trans.es = public/language/es/admin/settings/email.json +trans.pl = public/language/pl/admin/settings/email.json +trans.ro = public/language/ro/admin/settings/email.json +trans.rw = public/language/rw/admin/settings/email.json +trans.bg = public/language/bg/admin/settings/email.json +trans.cs = public/language/cs/admin/settings/email.json +trans.el = public/language/el/admin/settings/email.json +trans.en_US = public/language/en-US/admin/settings/email.json +trans.zh_CN = public/language/zh-CN/admin/settings/email.json +trans.fa_IR = public/language/fa-IR/admin/settings/email.json +trans.gl = public/language/gl/admin/settings/email.json +trans.hy = public/language/hy/admin/settings/email.json +trans.lv = public/language/lv/admin/settings/email.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/email.json +trans.et = public/language/et/admin/settings/email.json +trans.lt = public/language/lt/admin/settings/email.json +trans.th = public/language/th/admin/settings/email.json +trans.vi = public/language/vi/admin/settings/email.json +trans.da = public/language/da/admin/settings/email.json +trans.de = public/language/de/admin/settings/email.json +trans.nl = public/language/nl/admin/settings/email.json +trans.sc = public/language/sc/admin/settings/email.json + +[o:nodebb:p:nodebb:r:admin-settings-general] +file_filter = public/language//admin/settings/general.json +source_file = public/language/en-GB/admin/settings/general.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/general.json +trans.ro = public/language/ro/admin/settings/general.json +trans.sc = public/language/sc/admin/settings/general.json +trans.sk = public/language/sk/admin/settings/general.json +trans.sv = public/language/sv/admin/settings/general.json +trans.uk = public/language/uk/admin/settings/general.json +trans.fr = public/language/fr/admin/settings/general.json +trans.gl = public/language/gl/admin/settings/general.json +trans.zh_CN = public/language/zh-CN/admin/settings/general.json +trans.lt = public/language/lt/admin/settings/general.json +trans.rw = public/language/rw/admin/settings/general.json +trans.th = public/language/th/admin/settings/general.json +trans.tr = public/language/tr/admin/settings/general.json +trans.zh_TW = public/language/zh-TW/admin/settings/general.json +trans.de = public/language/de/admin/settings/general.json +trans.ja = public/language/ja/admin/settings/general.json +trans.en_US = public/language/en-US/admin/settings/general.json +trans.et = public/language/et/admin/settings/general.json +trans.fi = public/language/fi/admin/settings/general.json +trans.hy = public/language/hy/admin/settings/general.json +trans.id = public/language/id/admin/settings/general.json +trans.ru = public/language/ru/admin/settings/general.json +trans.cs = public/language/cs/admin/settings/general.json +trans.el = public/language/el/admin/settings/general.json +trans.sl = public/language/sl/admin/settings/general.json +trans.hu = public/language/hu/admin/settings/general.json +trans.it = public/language/it/admin/settings/general.json +trans.nl = public/language/nl/admin/settings/general.json +trans.pl = public/language/pl/admin/settings/general.json +trans.es = public/language/es/admin/settings/general.json +trans.fa_IR = public/language/fa-IR/admin/settings/general.json +trans.ms = public/language/ms/admin/settings/general.json +trans.nb = public/language/nb/admin/settings/general.json +trans.sr = public/language/sr/admin/settings/general.json +trans.da = public/language/da/admin/settings/general.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/general.json +trans.pt_PT = public/language/pt-PT/admin/settings/general.json +trans.he = public/language/he/admin/settings/general.json +trans.lv = public/language/lv/admin/settings/general.json +trans.pt_BR = public/language/pt-BR/admin/settings/general.json +trans.bn = public/language/bn/admin/settings/general.json +trans.hr = public/language/hr/admin/settings/general.json +trans.sq_AL = public/language/sq-AL/admin/settings/general.json +trans.vi = public/language/vi/admin/settings/general.json +trans.ar = public/language/ar/admin/settings/general.json +trans.bg = public/language/bg/admin/settings/general.json + +[o:nodebb:p:nodebb:r:admin-settings-group] +file_filter = public/language//admin/settings/group.json +source_file = public/language/en-GB/admin/settings/group.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sc = public/language/sc/admin/settings/group.json +trans.en_US = public/language/en-US/admin/settings/group.json +trans.et = public/language/et/admin/settings/group.json +trans.fr = public/language/fr/admin/settings/group.json +trans.it = public/language/it/admin/settings/group.json +trans.nb = public/language/nb/admin/settings/group.json +trans.es = public/language/es/admin/settings/group.json +trans.fa_IR = public/language/fa-IR/admin/settings/group.json +trans.gl = public/language/gl/admin/settings/group.json +trans.rw = public/language/rw/admin/settings/group.json +trans.sr = public/language/sr/admin/settings/group.json +trans.sq_AL = public/language/sq-AL/admin/settings/group.json +trans.th = public/language/th/admin/settings/group.json +trans.vi = public/language/vi/admin/settings/group.json +trans.bn = public/language/bn/admin/settings/group.json +trans.fi = public/language/fi/admin/settings/group.json +trans.hy = public/language/hy/admin/settings/group.json +trans.id = public/language/id/admin/settings/group.json +trans.ms = public/language/ms/admin/settings/group.json +trans.de = public/language/de/admin/settings/group.json +trans.he = public/language/he/admin/settings/group.json +trans.lv = public/language/lv/admin/settings/group.json +trans.pt_PT = public/language/pt-PT/admin/settings/group.json +trans.sk = public/language/sk/admin/settings/group.json +trans.tr = public/language/tr/admin/settings/group.json +trans.uk = public/language/uk/admin/settings/group.json +trans.cs = public/language/cs/admin/settings/group.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/group.json +trans.hu = public/language/hu/admin/settings/group.json +trans.nl = public/language/nl/admin/settings/group.json +trans.ru = public/language/ru/admin/settings/group.json +trans.lt = public/language/lt/admin/settings/group.json +trans.ro = public/language/ro/admin/settings/group.json +trans.sl = public/language/sl/admin/settings/group.json +trans.ar = public/language/ar/admin/settings/group.json +trans.bg = public/language/bg/admin/settings/group.json +trans.da = public/language/da/admin/settings/group.json +trans.hr = public/language/hr/admin/settings/group.json +trans.ko = public/language/ko/admin/settings/group.json +trans.el = public/language/el/admin/settings/group.json +trans.sv = public/language/sv/admin/settings/group.json +trans.ja = public/language/ja/admin/settings/group.json +trans.pl = public/language/pl/admin/settings/group.json +trans.pt_BR = public/language/pt-BR/admin/settings/group.json +trans.zh_CN = public/language/zh-CN/admin/settings/group.json +trans.zh_TW = public/language/zh-TW/admin/settings/group.json + +[o:nodebb:p:nodebb:r:admin-settings-guest] +file_filter = public/language//admin/settings/guest.json +source_file = public/language/en-GB/admin/settings/guest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/guest.json +trans.da = public/language/da/admin/settings/guest.json +trans.en_US = public/language/en-US/admin/settings/guest.json +trans.lt = public/language/lt/admin/settings/guest.json +trans.ms = public/language/ms/admin/settings/guest.json +trans.nl = public/language/nl/admin/settings/guest.json +trans.ru = public/language/ru/admin/settings/guest.json +trans.sc = public/language/sc/admin/settings/guest.json +trans.sr = public/language/sr/admin/settings/guest.json +trans.th = public/language/th/admin/settings/guest.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/guest.json +trans.it = public/language/it/admin/settings/guest.json +trans.lv = public/language/lv/admin/settings/guest.json +trans.pt_BR = public/language/pt-BR/admin/settings/guest.json +trans.sk = public/language/sk/admin/settings/guest.json +trans.de = public/language/de/admin/settings/guest.json +trans.es = public/language/es/admin/settings/guest.json +trans.hr = public/language/hr/admin/settings/guest.json +trans.pt_PT = public/language/pt-PT/admin/settings/guest.json +trans.rw = public/language/rw/admin/settings/guest.json +trans.sq_AL = public/language/sq-AL/admin/settings/guest.json +trans.el = public/language/el/admin/settings/guest.json +trans.tr = public/language/tr/admin/settings/guest.json +trans.zh_CN = public/language/zh-CN/admin/settings/guest.json +trans.bg = public/language/bg/admin/settings/guest.json +trans.fi = public/language/fi/admin/settings/guest.json +trans.hu = public/language/hu/admin/settings/guest.json +trans.ja = public/language/ja/admin/settings/guest.json +trans.nb = public/language/nb/admin/settings/guest.json +trans.pl = public/language/pl/admin/settings/guest.json +trans.sl = public/language/sl/admin/settings/guest.json +trans.vi = public/language/vi/admin/settings/guest.json +trans.bn = public/language/bn/admin/settings/guest.json +trans.fa_IR = public/language/fa-IR/admin/settings/guest.json +trans.fr = public/language/fr/admin/settings/guest.json +trans.hy = public/language/hy/admin/settings/guest.json +trans.ro = public/language/ro/admin/settings/guest.json +trans.et = public/language/et/admin/settings/guest.json +trans.gl = public/language/gl/admin/settings/guest.json +trans.sv = public/language/sv/admin/settings/guest.json +trans.uk = public/language/uk/admin/settings/guest.json +trans.zh_TW = public/language/zh-TW/admin/settings/guest.json +trans.ar = public/language/ar/admin/settings/guest.json +trans.he = public/language/he/admin/settings/guest.json +trans.id = public/language/id/admin/settings/guest.json +trans.ko = public/language/ko/admin/settings/guest.json + +[o:nodebb:p:nodebb:r:admin-settings-homepage] +file_filter = public/language//admin/settings/homepage.json +source_file = public/language/en-GB/admin/settings/homepage.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/admin/settings/homepage.json +trans.tr = public/language/tr/admin/settings/homepage.json +trans.vi = public/language/vi/admin/settings/homepage.json +trans.et = public/language/et/admin/settings/homepage.json +trans.fi = public/language/fi/admin/settings/homepage.json +trans.hy = public/language/hy/admin/settings/homepage.json +trans.ru = public/language/ru/admin/settings/homepage.json +trans.sr = public/language/sr/admin/settings/homepage.json +trans.es = public/language/es/admin/settings/homepage.json +trans.id = public/language/id/admin/settings/homepage.json +trans.lt = public/language/lt/admin/settings/homepage.json +trans.sk = public/language/sk/admin/settings/homepage.json +trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json +trans.th = public/language/th/admin/settings/homepage.json +trans.en_US = public/language/en-US/admin/settings/homepage.json +trans.lv = public/language/lv/admin/settings/homepage.json +trans.pt_PT = public/language/pt-PT/admin/settings/homepage.json +trans.sc = public/language/sc/admin/settings/homepage.json +trans.fa_IR = public/language/fa-IR/admin/settings/homepage.json +trans.he = public/language/he/admin/settings/homepage.json +trans.ms = public/language/ms/admin/settings/homepage.json +trans.cs = public/language/cs/admin/settings/homepage.json +trans.el = public/language/el/admin/settings/homepage.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/homepage.json +trans.gl = public/language/gl/admin/settings/homepage.json +trans.ko = public/language/ko/admin/settings/homepage.json +trans.ar = public/language/ar/admin/settings/homepage.json +trans.bg = public/language/bg/admin/settings/homepage.json +trans.bn = public/language/bn/admin/settings/homepage.json +trans.rw = public/language/rw/admin/settings/homepage.json +trans.zh_CN = public/language/zh-CN/admin/settings/homepage.json +trans.hr = public/language/hr/admin/settings/homepage.json +trans.it = public/language/it/admin/settings/homepage.json +trans.ja = public/language/ja/admin/settings/homepage.json +trans.nl = public/language/nl/admin/settings/homepage.json +trans.ro = public/language/ro/admin/settings/homepage.json +trans.da = public/language/da/admin/settings/homepage.json +trans.de = public/language/de/admin/settings/homepage.json +trans.fr = public/language/fr/admin/settings/homepage.json +trans.sv = public/language/sv/admin/settings/homepage.json +trans.hu = public/language/hu/admin/settings/homepage.json +trans.pt_BR = public/language/pt-BR/admin/settings/homepage.json +trans.sl = public/language/sl/admin/settings/homepage.json +trans.pl = public/language/pl/admin/settings/homepage.json +trans.uk = public/language/uk/admin/settings/homepage.json +trans.zh_TW = public/language/zh-TW/admin/settings/homepage.json + +[o:nodebb:p:nodebb:r:admin-settings-languages] +file_filter = public/language//admin/settings/languages.json +source_file = public/language/en-GB/admin/settings/languages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/settings/languages.json +trans.fa_IR = public/language/fa-IR/admin/settings/languages.json +trans.gl = public/language/gl/admin/settings/languages.json +trans.ro = public/language/ro/admin/settings/languages.json +trans.th = public/language/th/admin/settings/languages.json +trans.hr = public/language/hr/admin/settings/languages.json +trans.hy = public/language/hy/admin/settings/languages.json +trans.sc = public/language/sc/admin/settings/languages.json +trans.vi = public/language/vi/admin/settings/languages.json +trans.tr = public/language/tr/admin/settings/languages.json +trans.cs = public/language/cs/admin/settings/languages.json +trans.et = public/language/et/admin/settings/languages.json +trans.lv = public/language/lv/admin/settings/languages.json +trans.pl = public/language/pl/admin/settings/languages.json +trans.sr = public/language/sr/admin/settings/languages.json +trans.sv = public/language/sv/admin/settings/languages.json +trans.hu = public/language/hu/admin/settings/languages.json +trans.it = public/language/it/admin/settings/languages.json +trans.ja = public/language/ja/admin/settings/languages.json +trans.sl = public/language/sl/admin/settings/languages.json +trans.zh_TW = public/language/zh-TW/admin/settings/languages.json +trans.da = public/language/da/admin/settings/languages.json +trans.fr = public/language/fr/admin/settings/languages.json +trans.he = public/language/he/admin/settings/languages.json +trans.id = public/language/id/admin/settings/languages.json +trans.sq_AL = public/language/sq-AL/admin/settings/languages.json +trans.uk = public/language/uk/admin/settings/languages.json +trans.bn = public/language/bn/admin/settings/languages.json +trans.fi = public/language/fi/admin/settings/languages.json +trans.ko = public/language/ko/admin/settings/languages.json +trans.pt_BR = public/language/pt-BR/admin/settings/languages.json +trans.sk = public/language/sk/admin/settings/languages.json +trans.pt_PT = public/language/pt-PT/admin/settings/languages.json +trans.ru = public/language/ru/admin/settings/languages.json +trans.ar = public/language/ar/admin/settings/languages.json +trans.bg = public/language/bg/admin/settings/languages.json +trans.de = public/language/de/admin/settings/languages.json +trans.el = public/language/el/admin/settings/languages.json +trans.lt = public/language/lt/admin/settings/languages.json +trans.nl = public/language/nl/admin/settings/languages.json +trans.zh_CN = public/language/zh-CN/admin/settings/languages.json +trans.en_US = public/language/en-US/admin/settings/languages.json +trans.es = public/language/es/admin/settings/languages.json +trans.ms = public/language/ms/admin/settings/languages.json +trans.nb = public/language/nb/admin/settings/languages.json +trans.rw = public/language/rw/admin/settings/languages.json + +[o:nodebb:p:nodebb:r:admin-settings-navigation] +file_filter = public/language//admin/settings/navigation.json +source_file = public/language/en-GB/admin/settings/navigation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/navigation.json +trans.bn = public/language/bn/admin/settings/navigation.json +trans.es = public/language/es/admin/settings/navigation.json +trans.fa_IR = public/language/fa-IR/admin/settings/navigation.json +trans.nl = public/language/nl/admin/settings/navigation.json +trans.pt_BR = public/language/pt-BR/admin/settings/navigation.json +trans.rw = public/language/rw/admin/settings/navigation.json +trans.zh_CN = public/language/zh-CN/admin/settings/navigation.json +trans.da = public/language/da/admin/settings/navigation.json +trans.it = public/language/it/admin/settings/navigation.json +trans.ms = public/language/ms/admin/settings/navigation.json +trans.pt_PT = public/language/pt-PT/admin/settings/navigation.json +trans.vi = public/language/vi/admin/settings/navigation.json +trans.en_US = public/language/en-US/admin/settings/navigation.json +trans.fr = public/language/fr/admin/settings/navigation.json +trans.hu = public/language/hu/admin/settings/navigation.json +trans.hy = public/language/hy/admin/settings/navigation.json +trans.ja = public/language/ja/admin/settings/navigation.json +trans.lt = public/language/lt/admin/settings/navigation.json +trans.ru = public/language/ru/admin/settings/navigation.json +trans.sk = public/language/sk/admin/settings/navigation.json +trans.sr = public/language/sr/admin/settings/navigation.json +trans.de = public/language/de/admin/settings/navigation.json +trans.et = public/language/et/admin/settings/navigation.json +trans.fi = public/language/fi/admin/settings/navigation.json +trans.gl = public/language/gl/admin/settings/navigation.json +trans.sc = public/language/sc/admin/settings/navigation.json +trans.sl = public/language/sl/admin/settings/navigation.json +trans.th = public/language/th/admin/settings/navigation.json +trans.bg = public/language/bg/admin/settings/navigation.json +trans.cs = public/language/cs/admin/settings/navigation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/navigation.json +trans.ro = public/language/ro/admin/settings/navigation.json +trans.sq_AL = public/language/sq-AL/admin/settings/navigation.json +trans.tr = public/language/tr/admin/settings/navigation.json +trans.zh_TW = public/language/zh-TW/admin/settings/navigation.json +trans.ar = public/language/ar/admin/settings/navigation.json +trans.hr = public/language/hr/admin/settings/navigation.json +trans.id = public/language/id/admin/settings/navigation.json +trans.ko = public/language/ko/admin/settings/navigation.json +trans.nb = public/language/nb/admin/settings/navigation.json +trans.pl = public/language/pl/admin/settings/navigation.json +trans.sv = public/language/sv/admin/settings/navigation.json +trans.el = public/language/el/admin/settings/navigation.json +trans.he = public/language/he/admin/settings/navigation.json +trans.lv = public/language/lv/admin/settings/navigation.json + +[o:nodebb:p:nodebb:r:admin-settings-notifications] +file_filter = public/language//admin/settings/notifications.json +source_file = public/language/en-GB/admin/settings/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/settings/notifications.json +trans.fi = public/language/fi/admin/settings/notifications.json +trans.id = public/language/id/admin/settings/notifications.json +trans.pt_PT = public/language/pt-PT/admin/settings/notifications.json +trans.rw = public/language/rw/admin/settings/notifications.json +trans.ar = public/language/ar/admin/settings/notifications.json +trans.bn = public/language/bn/admin/settings/notifications.json +trans.el = public/language/el/admin/settings/notifications.json +trans.en_US = public/language/en-US/admin/settings/notifications.json +trans.sk = public/language/sk/admin/settings/notifications.json +trans.sr = public/language/sr/admin/settings/notifications.json +trans.sv = public/language/sv/admin/settings/notifications.json +trans.th = public/language/th/admin/settings/notifications.json +trans.cs = public/language/cs/admin/settings/notifications.json +trans.it = public/language/it/admin/settings/notifications.json +trans.ru = public/language/ru/admin/settings/notifications.json +trans.sq_AL = public/language/sq-AL/admin/settings/notifications.json +trans.vi = public/language/vi/admin/settings/notifications.json +trans.fr = public/language/fr/admin/settings/notifications.json +trans.hy = public/language/hy/admin/settings/notifications.json +trans.sl = public/language/sl/admin/settings/notifications.json +trans.uk = public/language/uk/admin/settings/notifications.json +trans.ms = public/language/ms/admin/settings/notifications.json +trans.nl = public/language/nl/admin/settings/notifications.json +trans.ro = public/language/ro/admin/settings/notifications.json +trans.sc = public/language/sc/admin/settings/notifications.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/notifications.json +trans.gl = public/language/gl/admin/settings/notifications.json +trans.he = public/language/he/admin/settings/notifications.json +trans.hu = public/language/hu/admin/settings/notifications.json +trans.tr = public/language/tr/admin/settings/notifications.json +trans.zh_CN = public/language/zh-CN/admin/settings/notifications.json +trans.ko = public/language/ko/admin/settings/notifications.json +trans.lv = public/language/lv/admin/settings/notifications.json +trans.nb = public/language/nb/admin/settings/notifications.json +trans.pl = public/language/pl/admin/settings/notifications.json +trans.bg = public/language/bg/admin/settings/notifications.json +trans.da = public/language/da/admin/settings/notifications.json +trans.de = public/language/de/admin/settings/notifications.json +trans.hr = public/language/hr/admin/settings/notifications.json +trans.pt_BR = public/language/pt-BR/admin/settings/notifications.json +trans.et = public/language/et/admin/settings/notifications.json +trans.lt = public/language/lt/admin/settings/notifications.json +trans.es = public/language/es/admin/settings/notifications.json +trans.fa_IR = public/language/fa-IR/admin/settings/notifications.json +trans.ja = public/language/ja/admin/settings/notifications.json + +[o:nodebb:p:nodebb:r:admin-settings-pagination] +file_filter = public/language//admin/settings/pagination.json +source_file = public/language/en-GB/admin/settings/pagination.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/settings/pagination.json +trans.th = public/language/th/admin/settings/pagination.json +trans.de = public/language/de/admin/settings/pagination.json +trans.ru = public/language/ru/admin/settings/pagination.json +trans.rw = public/language/rw/admin/settings/pagination.json +trans.sc = public/language/sc/admin/settings/pagination.json +trans.sk = public/language/sk/admin/settings/pagination.json +trans.lv = public/language/lv/admin/settings/pagination.json +trans.ar = public/language/ar/admin/settings/pagination.json +trans.el = public/language/el/admin/settings/pagination.json +trans.en_US = public/language/en-US/admin/settings/pagination.json +trans.et = public/language/et/admin/settings/pagination.json +trans.fr = public/language/fr/admin/settings/pagination.json +trans.bg = public/language/bg/admin/settings/pagination.json +trans.fi = public/language/fi/admin/settings/pagination.json +trans.ja = public/language/ja/admin/settings/pagination.json +trans.ms = public/language/ms/admin/settings/pagination.json +trans.uk = public/language/uk/admin/settings/pagination.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/pagination.json +trans.hu = public/language/hu/admin/settings/pagination.json +trans.ko = public/language/ko/admin/settings/pagination.json +trans.lt = public/language/lt/admin/settings/pagination.json +trans.nl = public/language/nl/admin/settings/pagination.json +trans.hr = public/language/hr/admin/settings/pagination.json +trans.pl = public/language/pl/admin/settings/pagination.json +trans.pt_BR = public/language/pt-BR/admin/settings/pagination.json +trans.cs = public/language/cs/admin/settings/pagination.json +trans.da = public/language/da/admin/settings/pagination.json +trans.es = public/language/es/admin/settings/pagination.json +trans.gl = public/language/gl/admin/settings/pagination.json +trans.he = public/language/he/admin/settings/pagination.json +trans.pt_PT = public/language/pt-PT/admin/settings/pagination.json +trans.ro = public/language/ro/admin/settings/pagination.json +trans.id = public/language/id/admin/settings/pagination.json +trans.tr = public/language/tr/admin/settings/pagination.json +trans.vi = public/language/vi/admin/settings/pagination.json +trans.fa_IR = public/language/fa-IR/admin/settings/pagination.json +trans.it = public/language/it/admin/settings/pagination.json +trans.sl = public/language/sl/admin/settings/pagination.json +trans.zh_CN = public/language/zh-CN/admin/settings/pagination.json +trans.zh_TW = public/language/zh-TW/admin/settings/pagination.json +trans.bn = public/language/bn/admin/settings/pagination.json +trans.hy = public/language/hy/admin/settings/pagination.json +trans.nb = public/language/nb/admin/settings/pagination.json +trans.sr = public/language/sr/admin/settings/pagination.json +trans.sv = public/language/sv/admin/settings/pagination.json + +[o:nodebb:p:nodebb:r:admin-settings-post] +file_filter = public/language//admin/settings/post.json +source_file = public/language/en-GB/admin/settings/post.json +source_lang = en_GB +type = KEYVALUEJSON +trans.id = public/language/id/admin/settings/post.json +trans.bn = public/language/bn/admin/settings/post.json +trans.da = public/language/da/admin/settings/post.json +trans.de = public/language/de/admin/settings/post.json +trans.en_US = public/language/en-US/admin/settings/post.json +trans.ms = public/language/ms/admin/settings/post.json +trans.ro = public/language/ro/admin/settings/post.json +trans.zh_TW = public/language/zh-TW/admin/settings/post.json +trans.cs = public/language/cs/admin/settings/post.json +trans.he = public/language/he/admin/settings/post.json +trans.ja = public/language/ja/admin/settings/post.json +trans.ko = public/language/ko/admin/settings/post.json +trans.hr = public/language/hr/admin/settings/post.json +trans.sq_AL = public/language/sq-AL/admin/settings/post.json +trans.lv = public/language/lv/admin/settings/post.json +trans.nl = public/language/nl/admin/settings/post.json +trans.pt_PT = public/language/pt-PT/admin/settings/post.json +trans.sr = public/language/sr/admin/settings/post.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/post.json +trans.et = public/language/et/admin/settings/post.json +trans.hu = public/language/hu/admin/settings/post.json +trans.it = public/language/it/admin/settings/post.json +trans.th = public/language/th/admin/settings/post.json +trans.gl = public/language/gl/admin/settings/post.json +trans.nb = public/language/nb/admin/settings/post.json +trans.sc = public/language/sc/admin/settings/post.json +trans.zh_CN = public/language/zh-CN/admin/settings/post.json +trans.rw = public/language/rw/admin/settings/post.json +trans.sv = public/language/sv/admin/settings/post.json +trans.vi = public/language/vi/admin/settings/post.json +trans.ar = public/language/ar/admin/settings/post.json +trans.el = public/language/el/admin/settings/post.json +trans.fa_IR = public/language/fa-IR/admin/settings/post.json +trans.fi = public/language/fi/admin/settings/post.json +trans.ru = public/language/ru/admin/settings/post.json +trans.bg = public/language/bg/admin/settings/post.json +trans.es = public/language/es/admin/settings/post.json +trans.hy = public/language/hy/admin/settings/post.json +trans.pt_BR = public/language/pt-BR/admin/settings/post.json +trans.sl = public/language/sl/admin/settings/post.json +trans.tr = public/language/tr/admin/settings/post.json +trans.uk = public/language/uk/admin/settings/post.json +trans.fr = public/language/fr/admin/settings/post.json +trans.lt = public/language/lt/admin/settings/post.json +trans.pl = public/language/pl/admin/settings/post.json +trans.sk = public/language/sk/admin/settings/post.json + +[o:nodebb:p:nodebb:r:admin-settings-reputation] +file_filter = public/language//admin/settings/reputation.json +source_file = public/language/en-GB/admin/settings/reputation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fi = public/language/fi/admin/settings/reputation.json +trans.ja = public/language/ja/admin/settings/reputation.json +trans.lt = public/language/lt/admin/settings/reputation.json +trans.pl = public/language/pl/admin/settings/reputation.json +trans.ro = public/language/ro/admin/settings/reputation.json +trans.bg = public/language/bg/admin/settings/reputation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/reputation.json +trans.fa_IR = public/language/fa-IR/admin/settings/reputation.json +trans.sl = public/language/sl/admin/settings/reputation.json +trans.sv = public/language/sv/admin/settings/reputation.json +trans.uk = public/language/uk/admin/settings/reputation.json +trans.sr = public/language/sr/admin/settings/reputation.json +trans.zh_CN = public/language/zh-CN/admin/settings/reputation.json +trans.ar = public/language/ar/admin/settings/reputation.json +trans.el = public/language/el/admin/settings/reputation.json +trans.es = public/language/es/admin/settings/reputation.json +trans.sc = public/language/sc/admin/settings/reputation.json +trans.hr = public/language/hr/admin/settings/reputation.json +trans.ko = public/language/ko/admin/settings/reputation.json +trans.nb = public/language/nb/admin/settings/reputation.json +trans.bn = public/language/bn/admin/settings/reputation.json +trans.de = public/language/de/admin/settings/reputation.json +trans.et = public/language/et/admin/settings/reputation.json +trans.rw = public/language/rw/admin/settings/reputation.json +trans.th = public/language/th/admin/settings/reputation.json +trans.zh_TW = public/language/zh-TW/admin/settings/reputation.json +trans.fr = public/language/fr/admin/settings/reputation.json +trans.it = public/language/it/admin/settings/reputation.json +trans.ru = public/language/ru/admin/settings/reputation.json +trans.pt_PT = public/language/pt-PT/admin/settings/reputation.json +trans.sk = public/language/sk/admin/settings/reputation.json +trans.id = public/language/id/admin/settings/reputation.json +trans.ms = public/language/ms/admin/settings/reputation.json +trans.nl = public/language/nl/admin/settings/reputation.json +trans.he = public/language/he/admin/settings/reputation.json +trans.sq_AL = public/language/sq-AL/admin/settings/reputation.json +trans.tr = public/language/tr/admin/settings/reputation.json +trans.cs = public/language/cs/admin/settings/reputation.json +trans.da = public/language/da/admin/settings/reputation.json +trans.en_US = public/language/en-US/admin/settings/reputation.json +trans.lv = public/language/lv/admin/settings/reputation.json +trans.pt_BR = public/language/pt-BR/admin/settings/reputation.json +trans.vi = public/language/vi/admin/settings/reputation.json +trans.gl = public/language/gl/admin/settings/reputation.json +trans.hu = public/language/hu/admin/settings/reputation.json +trans.hy = public/language/hy/admin/settings/reputation.json + +[o:nodebb:p:nodebb:r:admin-settings-social] +file_filter = public/language//admin/settings/social.json +source_file = public/language/en-GB/admin/settings/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/settings/social.json +trans.sc = public/language/sc/admin/settings/social.json +trans.sv = public/language/sv/admin/settings/social.json +trans.rw = public/language/rw/admin/settings/social.json +trans.bn = public/language/bn/admin/settings/social.json +trans.hr = public/language/hr/admin/settings/social.json +trans.id = public/language/id/admin/settings/social.json +trans.pt_PT = public/language/pt-PT/admin/settings/social.json +trans.de = public/language/de/admin/settings/social.json +trans.hu = public/language/hu/admin/settings/social.json +trans.pt_BR = public/language/pt-BR/admin/settings/social.json +trans.ja = public/language/ja/admin/settings/social.json +trans.sq_AL = public/language/sq-AL/admin/settings/social.json +trans.zh_TW = public/language/zh-TW/admin/settings/social.json +trans.cs = public/language/cs/admin/settings/social.json +trans.en_US = public/language/en-US/admin/settings/social.json +trans.fi = public/language/fi/admin/settings/social.json +trans.nb = public/language/nb/admin/settings/social.json +trans.pl = public/language/pl/admin/settings/social.json +trans.th = public/language/th/admin/settings/social.json +trans.bg = public/language/bg/admin/settings/social.json +trans.lt = public/language/lt/admin/settings/social.json +trans.lv = public/language/lv/admin/settings/social.json +trans.ko = public/language/ko/admin/settings/social.json +trans.es = public/language/es/admin/settings/social.json +trans.fr = public/language/fr/admin/settings/social.json +trans.he = public/language/he/admin/settings/social.json +trans.fa_IR = public/language/fa-IR/admin/settings/social.json +trans.hy = public/language/hy/admin/settings/social.json +trans.ms = public/language/ms/admin/settings/social.json +trans.ru = public/language/ru/admin/settings/social.json +trans.sk = public/language/sk/admin/settings/social.json +trans.ar = public/language/ar/admin/settings/social.json +trans.el = public/language/el/admin/settings/social.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/social.json +trans.uk = public/language/uk/admin/settings/social.json +trans.sl = public/language/sl/admin/settings/social.json +trans.sr = public/language/sr/admin/settings/social.json +trans.tr = public/language/tr/admin/settings/social.json +trans.it = public/language/it/admin/settings/social.json +trans.ro = public/language/ro/admin/settings/social.json +trans.vi = public/language/vi/admin/settings/social.json +trans.zh_CN = public/language/zh-CN/admin/settings/social.json +trans.da = public/language/da/admin/settings/social.json +trans.et = public/language/et/admin/settings/social.json +trans.gl = public/language/gl/admin/settings/social.json + +[o:nodebb:p:nodebb:r:admin-settings-sockets] +file_filter = public/language//admin/settings/sockets.json +source_file = public/language/en-GB/admin/settings/sockets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/sockets.json +trans.en_US = public/language/en-US/admin/settings/sockets.json +trans.gl = public/language/gl/admin/settings/sockets.json +trans.ja = public/language/ja/admin/settings/sockets.json +trans.pt_BR = public/language/pt-BR/admin/settings/sockets.json +trans.sc = public/language/sc/admin/settings/sockets.json +trans.tr = public/language/tr/admin/settings/sockets.json +trans.da = public/language/da/admin/settings/sockets.json +trans.lv = public/language/lv/admin/settings/sockets.json +trans.sk = public/language/sk/admin/settings/sockets.json +trans.sr = public/language/sr/admin/settings/sockets.json +trans.vi = public/language/vi/admin/settings/sockets.json +trans.ar = public/language/ar/admin/settings/sockets.json +trans.cs = public/language/cs/admin/settings/sockets.json +trans.de = public/language/de/admin/settings/sockets.json +trans.hy = public/language/hy/admin/settings/sockets.json +trans.id = public/language/id/admin/settings/sockets.json +trans.rw = public/language/rw/admin/settings/sockets.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sockets.json +trans.fi = public/language/fi/admin/settings/sockets.json +trans.it = public/language/it/admin/settings/sockets.json +trans.ro = public/language/ro/admin/settings/sockets.json +trans.nb = public/language/nb/admin/settings/sockets.json +trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json +trans.bg = public/language/bg/admin/settings/sockets.json +trans.bn = public/language/bn/admin/settings/sockets.json +trans.es = public/language/es/admin/settings/sockets.json +trans.fr = public/language/fr/admin/settings/sockets.json +trans.hr = public/language/hr/admin/settings/sockets.json +trans.ko = public/language/ko/admin/settings/sockets.json +trans.zh_TW = public/language/zh-TW/admin/settings/sockets.json +trans.el = public/language/el/admin/settings/sockets.json +trans.he = public/language/he/admin/settings/sockets.json +trans.ms = public/language/ms/admin/settings/sockets.json +trans.sv = public/language/sv/admin/settings/sockets.json +trans.et = public/language/et/admin/settings/sockets.json +trans.pl = public/language/pl/admin/settings/sockets.json +trans.ru = public/language/ru/admin/settings/sockets.json +trans.zh_CN = public/language/zh-CN/admin/settings/sockets.json +trans.th = public/language/th/admin/settings/sockets.json +trans.fa_IR = public/language/fa-IR/admin/settings/sockets.json +trans.hu = public/language/hu/admin/settings/sockets.json +trans.lt = public/language/lt/admin/settings/sockets.json +trans.nl = public/language/nl/admin/settings/sockets.json +trans.pt_PT = public/language/pt-PT/admin/settings/sockets.json +trans.sl = public/language/sl/admin/settings/sockets.json + +[o:nodebb:p:nodebb:r:admin-settings-sounds] +file_filter = public/language//admin/settings/sounds.json +source_file = public/language/en-GB/admin/settings/sounds.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/sounds.json +trans.de = public/language/de/admin/settings/sounds.json +trans.el = public/language/el/admin/settings/sounds.json +trans.es = public/language/es/admin/settings/sounds.json +trans.he = public/language/he/admin/settings/sounds.json +trans.it = public/language/it/admin/settings/sounds.json +trans.pt_BR = public/language/pt-BR/admin/settings/sounds.json +trans.sq_AL = public/language/sq-AL/admin/settings/sounds.json +trans.vi = public/language/vi/admin/settings/sounds.json +trans.hr = public/language/hr/admin/settings/sounds.json +trans.hu = public/language/hu/admin/settings/sounds.json +trans.bg = public/language/bg/admin/settings/sounds.json +trans.ja = public/language/ja/admin/settings/sounds.json +trans.lt = public/language/lt/admin/settings/sounds.json +trans.nl = public/language/nl/admin/settings/sounds.json +trans.ru = public/language/ru/admin/settings/sounds.json +trans.cs = public/language/cs/admin/settings/sounds.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sounds.json +trans.fa_IR = public/language/fa-IR/admin/settings/sounds.json +trans.fi = public/language/fi/admin/settings/sounds.json +trans.nb = public/language/nb/admin/settings/sounds.json +trans.th = public/language/th/admin/settings/sounds.json +trans.ar = public/language/ar/admin/settings/sounds.json +trans.da = public/language/da/admin/settings/sounds.json +trans.gl = public/language/gl/admin/settings/sounds.json +trans.lv = public/language/lv/admin/settings/sounds.json +trans.ms = public/language/ms/admin/settings/sounds.json +trans.sc = public/language/sc/admin/settings/sounds.json +trans.sr = public/language/sr/admin/settings/sounds.json +trans.bn = public/language/bn/admin/settings/sounds.json +trans.en_US = public/language/en-US/admin/settings/sounds.json +trans.hy = public/language/hy/admin/settings/sounds.json +trans.sk = public/language/sk/admin/settings/sounds.json +trans.sl = public/language/sl/admin/settings/sounds.json +trans.uk = public/language/uk/admin/settings/sounds.json +trans.zh_CN = public/language/zh-CN/admin/settings/sounds.json +trans.et = public/language/et/admin/settings/sounds.json +trans.fr = public/language/fr/admin/settings/sounds.json +trans.ko = public/language/ko/admin/settings/sounds.json +trans.ro = public/language/ro/admin/settings/sounds.json +trans.zh_TW = public/language/zh-TW/admin/settings/sounds.json +trans.id = public/language/id/admin/settings/sounds.json +trans.pl = public/language/pl/admin/settings/sounds.json +trans.pt_PT = public/language/pt-PT/admin/settings/sounds.json +trans.rw = public/language/rw/admin/settings/sounds.json +trans.tr = public/language/tr/admin/settings/sounds.json + +[o:nodebb:p:nodebb:r:admin-settings-tags] +file_filter = public/language//admin/settings/tags.json +source_file = public/language/en-GB/admin/settings/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/settings/tags.json +trans.cs = public/language/cs/admin/settings/tags.json +trans.de = public/language/de/admin/settings/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/tags.json +trans.lv = public/language/lv/admin/settings/tags.json +trans.th = public/language/th/admin/settings/tags.json +trans.zh_TW = public/language/zh-TW/admin/settings/tags.json +trans.hu = public/language/hu/admin/settings/tags.json +trans.it = public/language/it/admin/settings/tags.json +trans.pt_BR = public/language/pt-BR/admin/settings/tags.json +trans.rw = public/language/rw/admin/settings/tags.json +trans.sk = public/language/sk/admin/settings/tags.json +trans.sv = public/language/sv/admin/settings/tags.json +trans.ar = public/language/ar/admin/settings/tags.json +trans.gl = public/language/gl/admin/settings/tags.json +trans.ja = public/language/ja/admin/settings/tags.json +trans.lt = public/language/lt/admin/settings/tags.json +trans.sc = public/language/sc/admin/settings/tags.json +trans.zh_CN = public/language/zh-CN/admin/settings/tags.json +trans.ro = public/language/ro/admin/settings/tags.json +trans.bn = public/language/bn/admin/settings/tags.json +trans.hr = public/language/hr/admin/settings/tags.json +trans.ko = public/language/ko/admin/settings/tags.json +trans.nb = public/language/nb/admin/settings/tags.json +trans.el = public/language/el/admin/settings/tags.json +trans.et = public/language/et/admin/settings/tags.json +trans.he = public/language/he/admin/settings/tags.json +trans.ms = public/language/ms/admin/settings/tags.json +trans.nl = public/language/nl/admin/settings/tags.json +trans.sl = public/language/sl/admin/settings/tags.json +trans.tr = public/language/tr/admin/settings/tags.json +trans.es = public/language/es/admin/settings/tags.json +trans.fr = public/language/fr/admin/settings/tags.json +trans.hy = public/language/hy/admin/settings/tags.json +trans.pl = public/language/pl/admin/settings/tags.json +trans.ru = public/language/ru/admin/settings/tags.json +trans.sq_AL = public/language/sq-AL/admin/settings/tags.json +trans.sr = public/language/sr/admin/settings/tags.json +trans.uk = public/language/uk/admin/settings/tags.json +trans.da = public/language/da/admin/settings/tags.json +trans.en_US = public/language/en-US/admin/settings/tags.json +trans.fa_IR = public/language/fa-IR/admin/settings/tags.json +trans.fi = public/language/fi/admin/settings/tags.json +trans.id = public/language/id/admin/settings/tags.json +trans.pt_PT = public/language/pt-PT/admin/settings/tags.json +trans.vi = public/language/vi/admin/settings/tags.json + +[o:nodebb:p:nodebb:r:admin-settings-uploads] +file_filter = public/language//admin/settings/uploads.json +source_file = public/language/en-GB/admin/settings/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/uploads.json +trans.it = public/language/it/admin/settings/uploads.json +trans.ko = public/language/ko/admin/settings/uploads.json +trans.sk = public/language/sk/admin/settings/uploads.json +trans.sq_AL = public/language/sq-AL/admin/settings/uploads.json +trans.fa_IR = public/language/fa-IR/admin/settings/uploads.json +trans.he = public/language/he/admin/settings/uploads.json +trans.ja = public/language/ja/admin/settings/uploads.json +trans.nb = public/language/nb/admin/settings/uploads.json +trans.nl = public/language/nl/admin/settings/uploads.json +trans.zh_TW = public/language/zh-TW/admin/settings/uploads.json +trans.ro = public/language/ro/admin/settings/uploads.json +trans.sl = public/language/sl/admin/settings/uploads.json +trans.da = public/language/da/admin/settings/uploads.json +trans.es = public/language/es/admin/settings/uploads.json +trans.et = public/language/et/admin/settings/uploads.json +trans.hr = public/language/hr/admin/settings/uploads.json +trans.id = public/language/id/admin/settings/uploads.json +trans.pt_BR = public/language/pt-BR/admin/settings/uploads.json +trans.uk = public/language/uk/admin/settings/uploads.json +trans.vi = public/language/vi/admin/settings/uploads.json +trans.th = public/language/th/admin/settings/uploads.json +trans.bg = public/language/bg/admin/settings/uploads.json +trans.el = public/language/el/admin/settings/uploads.json +trans.hu = public/language/hu/admin/settings/uploads.json +trans.lv = public/language/lv/admin/settings/uploads.json +trans.ms = public/language/ms/admin/settings/uploads.json +trans.pt_PT = public/language/pt-PT/admin/settings/uploads.json +trans.lt = public/language/lt/admin/settings/uploads.json +trans.bn = public/language/bn/admin/settings/uploads.json +trans.cs = public/language/cs/admin/settings/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/uploads.json +trans.fi = public/language/fi/admin/settings/uploads.json +trans.fr = public/language/fr/admin/settings/uploads.json +trans.hy = public/language/hy/admin/settings/uploads.json +trans.gl = public/language/gl/admin/settings/uploads.json +trans.ru = public/language/ru/admin/settings/uploads.json +trans.sr = public/language/sr/admin/settings/uploads.json +trans.sv = public/language/sv/admin/settings/uploads.json +trans.zh_CN = public/language/zh-CN/admin/settings/uploads.json +trans.de = public/language/de/admin/settings/uploads.json +trans.en_US = public/language/en-US/admin/settings/uploads.json +trans.pl = public/language/pl/admin/settings/uploads.json +trans.rw = public/language/rw/admin/settings/uploads.json +trans.sc = public/language/sc/admin/settings/uploads.json +trans.tr = public/language/tr/admin/settings/uploads.json + +[o:nodebb:p:nodebb:r:admin-settings-user] +file_filter = public/language//admin/settings/user.json +source_file = public/language/en-GB/admin/settings/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/admin/settings/user.json +trans.el = public/language/el/admin/settings/user.json +trans.he = public/language/he/admin/settings/user.json +trans.ro = public/language/ro/admin/settings/user.json +trans.sq_AL = public/language/sq-AL/admin/settings/user.json +trans.gl = public/language/gl/admin/settings/user.json +trans.hu = public/language/hu/admin/settings/user.json +trans.nb = public/language/nb/admin/settings/user.json +trans.sv = public/language/sv/admin/settings/user.json +trans.uk = public/language/uk/admin/settings/user.json +trans.cs = public/language/cs/admin/settings/user.json +trans.en_US = public/language/en-US/admin/settings/user.json +trans.fa_IR = public/language/fa-IR/admin/settings/user.json +trans.fi = public/language/fi/admin/settings/user.json +trans.lv = public/language/lv/admin/settings/user.json +trans.ms = public/language/ms/admin/settings/user.json +trans.pl = public/language/pl/admin/settings/user.json +trans.ru = public/language/ru/admin/settings/user.json +trans.zh_CN = public/language/zh-CN/admin/settings/user.json +trans.hr = public/language/hr/admin/settings/user.json +trans.id = public/language/id/admin/settings/user.json +trans.it = public/language/it/admin/settings/user.json +trans.sk = public/language/sk/admin/settings/user.json +trans.sl = public/language/sl/admin/settings/user.json +trans.sr = public/language/sr/admin/settings/user.json +trans.tr = public/language/tr/admin/settings/user.json +trans.vi = public/language/vi/admin/settings/user.json +trans.de = public/language/de/admin/settings/user.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/user.json +trans.hy = public/language/hy/admin/settings/user.json +trans.pt_PT = public/language/pt-PT/admin/settings/user.json +trans.th = public/language/th/admin/settings/user.json +trans.zh_TW = public/language/zh-TW/admin/settings/user.json +trans.bn = public/language/bn/admin/settings/user.json +trans.nl = public/language/nl/admin/settings/user.json +trans.pt_BR = public/language/pt-BR/admin/settings/user.json +trans.rw = public/language/rw/admin/settings/user.json +trans.bg = public/language/bg/admin/settings/user.json +trans.fr = public/language/fr/admin/settings/user.json +trans.ko = public/language/ko/admin/settings/user.json +trans.ar = public/language/ar/admin/settings/user.json +trans.es = public/language/es/admin/settings/user.json +trans.et = public/language/et/admin/settings/user.json +trans.ja = public/language/ja/admin/settings/user.json +trans.lt = public/language/lt/admin/settings/user.json +trans.sc = public/language/sc/admin/settings/user.json + +[o:nodebb:p:nodebb:r:admin-settings-web-crawler] +file_filter = public/language//admin/settings/web-crawler.json +source_file = public/language/en-GB/admin/settings/web-crawler.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/web-crawler.json +trans.es = public/language/es/admin/settings/web-crawler.json +trans.fr = public/language/fr/admin/settings/web-crawler.json +trans.ko = public/language/ko/admin/settings/web-crawler.json +trans.pl = public/language/pl/admin/settings/web-crawler.json +trans.tr = public/language/tr/admin/settings/web-crawler.json +trans.uk = public/language/uk/admin/settings/web-crawler.json +trans.bg = public/language/bg/admin/settings/web-crawler.json +trans.el = public/language/el/admin/settings/web-crawler.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/web-crawler.json +trans.fa_IR = public/language/fa-IR/admin/settings/web-crawler.json +trans.ms = public/language/ms/admin/settings/web-crawler.json +trans.th = public/language/th/admin/settings/web-crawler.json +trans.gl = public/language/gl/admin/settings/web-crawler.json +trans.id = public/language/id/admin/settings/web-crawler.json +trans.sk = public/language/sk/admin/settings/web-crawler.json +trans.rw = public/language/rw/admin/settings/web-crawler.json +trans.da = public/language/da/admin/settings/web-crawler.json +trans.hr = public/language/hr/admin/settings/web-crawler.json +trans.hu = public/language/hu/admin/settings/web-crawler.json +trans.ja = public/language/ja/admin/settings/web-crawler.json +trans.lv = public/language/lv/admin/settings/web-crawler.json +trans.nl = public/language/nl/admin/settings/web-crawler.json +trans.pt_BR = public/language/pt-BR/admin/settings/web-crawler.json +trans.vi = public/language/vi/admin/settings/web-crawler.json +trans.en_US = public/language/en-US/admin/settings/web-crawler.json +trans.et = public/language/et/admin/settings/web-crawler.json +trans.fi = public/language/fi/admin/settings/web-crawler.json +trans.sq_AL = public/language/sq-AL/admin/settings/web-crawler.json +trans.sv = public/language/sv/admin/settings/web-crawler.json +trans.ar = public/language/ar/admin/settings/web-crawler.json +trans.de = public/language/de/admin/settings/web-crawler.json +trans.hy = public/language/hy/admin/settings/web-crawler.json +trans.nb = public/language/nb/admin/settings/web-crawler.json +trans.ro = public/language/ro/admin/settings/web-crawler.json +trans.sr = public/language/sr/admin/settings/web-crawler.json +trans.zh_TW = public/language/zh-TW/admin/settings/web-crawler.json +trans.he = public/language/he/admin/settings/web-crawler.json +trans.it = public/language/it/admin/settings/web-crawler.json +trans.lt = public/language/lt/admin/settings/web-crawler.json +trans.ru = public/language/ru/admin/settings/web-crawler.json +trans.sl = public/language/sl/admin/settings/web-crawler.json +trans.zh_CN = public/language/zh-CN/admin/settings/web-crawler.json +trans.bn = public/language/bn/admin/settings/web-crawler.json +trans.pt_PT = public/language/pt-PT/admin/settings/web-crawler.json +trans.sc = public/language/sc/admin/settings/web-crawler.json + +[o:nodebb:p:nodebb:r:themes-harmony] +file_filter = public/language//themes/harmony.json +source_file = public/language/en-GB/themes/harmony.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/harmony.json +trans.bg = public/language/bg/themes/harmony.json +trans.hr = public/language/hr/themes/harmony.json +trans.hy = public/language/hy/themes/harmony.json +trans.sk = public/language/sk/themes/harmony.json +trans.sl = public/language/sl/themes/harmony.json +trans.sq_AL = public/language/sq-AL/themes/harmony.json +trans.sv = public/language/sv/themes/harmony.json +trans.vi = public/language/vi/themes/harmony.json +trans.da = public/language/da/themes/harmony.json +trans.en_US = public/language/en-US/themes/harmony.json +trans.gl = public/language/gl/themes/harmony.json +trans.ko = public/language/ko/themes/harmony.json +trans.lt = public/language/lt/themes/harmony.json +trans.pt_BR = public/language/pt-BR/themes/harmony.json +trans.hu = public/language/hu/themes/harmony.json +trans.lv = public/language/lv/themes/harmony.json +trans.ro = public/language/ro/themes/harmony.json +trans.ru = public/language/ru/themes/harmony.json +trans.sr = public/language/sr/themes/harmony.json +trans.bn = public/language/bn/themes/harmony.json +trans.he = public/language/he/themes/harmony.json +trans.nl = public/language/nl/themes/harmony.json +trans.sc = public/language/sc/themes/harmony.json +trans.zh_CN = public/language/zh-CN/themes/harmony.json +trans.fi = public/language/fi/themes/harmony.json +trans.ja = public/language/ja/themes/harmony.json +trans.nb = public/language/nb/themes/harmony.json +trans.pl = public/language/pl/themes/harmony.json +trans.zh_TW = public/language/zh-TW/themes/harmony.json +trans.ar = public/language/ar/themes/harmony.json +trans.cs = public/language/cs/themes/harmony.json +trans.fa_IR = public/language/fa-IR/themes/harmony.json +trans.ms = public/language/ms/themes/harmony.json +trans.pt_PT = public/language/pt-PT/themes/harmony.json +trans.tr = public/language/tr/themes/harmony.json +trans.en@pirate = public/language/en-x-pirate/themes/harmony.json +trans.fr = public/language/fr/themes/harmony.json +trans.id = public/language/id/themes/harmony.json +trans.uk = public/language/uk/themes/harmony.json +trans.de = public/language/de/themes/harmony.json +trans.el = public/language/el/themes/harmony.json +trans.es = public/language/es/themes/harmony.json +trans.et = public/language/et/themes/harmony.json +trans.it = public/language/it/themes/harmony.json +trans.rw = public/language/rw/themes/harmony.json + +[o:nodebb:p:nodebb:r:themes-persona] +file_filter = public/language//themes/persona.json +source_file = public/language/en-GB/themes/persona.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/persona.json +trans.bg = public/language/bg/themes/persona.json +trans.hr = public/language/hr/themes/persona.json +trans.hy = public/language/hy/themes/persona.json +trans.sk = public/language/sk/themes/persona.json +trans.sl = public/language/sl/themes/persona.json +trans.sq_AL = public/language/sq-AL/themes/persona.json +trans.sv = public/language/sv/themes/persona.json +trans.vi = public/language/vi/themes/persona.json +trans.da = public/language/da/themes/persona.json +trans.en_US = public/language/en-US/themes/persona.json +trans.gl = public/language/gl/themes/persona.json +trans.ko = public/language/ko/themes/persona.json +trans.lt = public/language/lt/themes/persona.json +trans.pt_BR = public/language/pt-BR/themes/persona.json +trans.hu = public/language/hu/themes/persona.json +trans.lv = public/language/lv/themes/persona.json +trans.ro = public/language/ro/themes/persona.json +trans.ru = public/language/ru/themes/persona.json +trans.sr = public/language/sr/themes/persona.json +trans.bn = public/language/bn/themes/persona.json +trans.he = public/language/he/themes/persona.json +trans.nl = public/language/nl/themes/persona.json +trans.sc = public/language/sc/themes/persona.json +trans.zh_CN = public/language/zh-CN/themes/persona.json +trans.fi = public/language/fi/themes/persona.json +trans.ja = public/language/ja/themes/persona.json +trans.nb = public/language/nb/themes/persona.json +trans.pl = public/language/pl/themes/persona.json +trans.zh_TW = public/language/zh-TW/themes/persona.json +trans.ar = public/language/ar/themes/persona.json +trans.cs = public/language/cs/themes/persona.json +trans.fa_IR = public/language/fa-IR/themes/persona.json +trans.ms = public/language/ms/themes/persona.json +trans.pt_PT = public/language/pt-PT/themes/persona.json +trans.tr = public/language/tr/themes/persona.json +trans.en@pirate = public/language/en-x-pirate/themes/persona.json +trans.fr = public/language/fr/themes/persona.json +trans.id = public/language/id/themes/persona.json +trans.uk = public/language/uk/themes/persona.json +trans.de = public/language/de/themes/persona.json +trans.el = public/language/el/themes/persona.json +trans.es = public/language/es/themes/persona.json +trans.et = public/language/et/themes/persona.json +trans.it = public/language/it/themes/persona.json +trans.rw = public/language/rw/themes/persona.json + + +[o:nodebb:p:nodebb:r:aria] +file_filter = public/language//aria.json +source_file = public/language/en-GB/aria.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/aria.json +trans.bg = public/language/bg/aria.json +trans.hr = public/language/hr/aria.json +trans.hy = public/language/hy/aria.json +trans.sk = public/language/sk/aria.json +trans.sl = public/language/sl/aria.json +trans.sq_AL = public/language/sq-AL/aria.json +trans.sv = public/language/sv/aria.json +trans.vi = public/language/vi/aria.json +trans.da = public/language/da/aria.json +trans.en_US = public/language/en-US/aria.json +trans.gl = public/language/gl/aria.json +trans.ko = public/language/ko/aria.json +trans.lt = public/language/lt/aria.json +trans.pt_BR = public/language/pt-BR/aria.json +trans.hu = public/language/hu/aria.json +trans.lv = public/language/lv/aria.json +trans.ro = public/language/ro/aria.json +trans.ru = public/language/ru/aria.json +trans.sr = public/language/sr/aria.json +trans.bn = public/language/bn/aria.json +trans.he = public/language/he/aria.json +trans.nl = public/language/nl/aria.json +trans.sc = public/language/sc/aria.json +trans.zh_CN = public/language/zh-CN/aria.json +trans.fi = public/language/fi/aria.json +trans.ja = public/language/ja/aria.json +trans.nb = public/language/nb/aria.json +trans.pl = public/language/pl/aria.json +trans.zh_TW = public/language/zh-TW/aria.json +trans.ar = public/language/ar/aria.json +trans.cs = public/language/cs/aria.json +trans.fa_IR = public/language/fa-IR/aria.json +trans.ms = public/language/ms/aria.json +trans.pt_PT = public/language/pt-PT/aria.json +trans.tr = public/language/tr/aria.json +trans.en@pirate = public/language/en-x-pirate/aria.json +trans.fr = public/language/fr/aria.json +trans.id = public/language/id/aria.json +trans.uk = public/language/uk/aria.json +trans.de = public/language/de/aria.json +trans.el = public/language/el/aria.json +trans.es = public/language/es/aria.json +trans.et = public/language/et/aria.json +trans.it = public/language/it/aria.json +trans.rw = public/language/rw/aria.json + +[o:nodebb:p:nodebb:r:category] +file_filter = public/language//category.json +source_file = public/language/en-GB/category.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/category.json +trans.bg = public/language/bg/category.json +trans.hr = public/language/hr/category.json +trans.hy = public/language/hy/category.json +trans.sk = public/language/sk/category.json +trans.sl = public/language/sl/category.json +trans.sq_AL = public/language/sq-AL/category.json +trans.sv = public/language/sv/category.json +trans.vi = public/language/vi/category.json +trans.da = public/language/da/category.json +trans.en_US = public/language/en-US/category.json +trans.gl = public/language/gl/category.json +trans.ko = public/language/ko/category.json +trans.lt = public/language/lt/category.json +trans.pt_BR = public/language/pt-BR/category.json +trans.hu = public/language/hu/category.json +trans.lv = public/language/lv/category.json +trans.ro = public/language/ro/category.json +trans.ru = public/language/ru/category.json +trans.sr = public/language/sr/category.json +trans.bn = public/language/bn/category.json +trans.he = public/language/he/category.json +trans.nl = public/language/nl/category.json +trans.sc = public/language/sc/category.json +trans.zh_CN = public/language/zh-CN/category.json +trans.fi = public/language/fi/category.json +trans.ja = public/language/ja/category.json +trans.nb = public/language/nb/category.json +trans.pl = public/language/pl/category.json +trans.zh_TW = public/language/zh-TW/category.json +trans.ar = public/language/ar/category.json +trans.cs = public/language/cs/category.json +trans.fa_IR = public/language/fa-IR/category.json +trans.ms = public/language/ms/category.json +trans.pt_PT = public/language/pt-PT/category.json +trans.tr = public/language/tr/category.json +trans.en@pirate = public/language/en-x-pirate/category.json +trans.fr = public/language/fr/category.json +trans.id = public/language/id/category.json +trans.uk = public/language/uk/category.json +trans.de = public/language/de/category.json +trans.el = public/language/el/category.json +trans.es = public/language/es/category.json +trans.et = public/language/et/category.json +trans.it = public/language/it/category.json +trans.rw = public/language/rw/category.json + +[o:nodebb:p:nodebb:r:email] +file_filter = public/language//email.json +source_file = public/language/en-GB/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sk = public/language/sk/email.json +trans.zh_TW = public/language/zh-TW/email.json +trans.el = public/language/el/email.json +trans.fa_IR = public/language/fa-IR/email.json +trans.fi = public/language/fi/email.json +trans.id = public/language/id/email.json +trans.ko = public/language/ko/email.json +trans.en@pirate = public/language/en-x-pirate/email.json +trans.it = public/language/it/email.json +trans.lv = public/language/lv/email.json +trans.uk = public/language/uk/email.json +trans.zh_CN = public/language/zh-CN/email.json +trans.sv = public/language/sv/email.json +trans.bn = public/language/bn/email.json +trans.cs = public/language/cs/email.json +trans.ms = public/language/ms/email.json +trans.ro = public/language/ro/email.json +trans.ru = public/language/ru/email.json +trans.de = public/language/de/email.json +trans.hu = public/language/hu/email.json +trans.hy = public/language/hy/email.json +trans.sl = public/language/sl/email.json +trans.th = public/language/th/email.json +trans.ar = public/language/ar/email.json +trans.es = public/language/es/email.json +trans.gl = public/language/gl/email.json +trans.he = public/language/he/email.json +trans.ja = public/language/ja/email.json +trans.bg = public/language/bg/email.json +trans.et = public/language/et/email.json +trans.hr = public/language/hr/email.json +trans.pl = public/language/pl/email.json +trans.da = public/language/da/email.json +trans.fr = public/language/fr/email.json +trans.lt = public/language/lt/email.json +trans.pt_PT = public/language/pt-PT/email.json +trans.sc = public/language/sc/email.json +trans.sq_AL = public/language/sq-AL/email.json +trans.sr = public/language/sr/email.json +trans.tr = public/language/tr/email.json +trans.en_US = public/language/en-US/email.json +trans.nb = public/language/nb/email.json +trans.nl = public/language/nl/email.json +trans.pt_BR = public/language/pt-BR/email.json +trans.rw = public/language/rw/email.json +trans.vi = public/language/vi/email.json + +[o:nodebb:p:nodebb:r:error] +file_filter = public/language//error.json +source_file = public/language/en-GB/error.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/error.json +trans.ko = public/language/ko/error.json +trans.lv = public/language/lv/error.json +trans.sk = public/language/sk/error.json +trans.cs = public/language/cs/error.json +trans.it = public/language/it/error.json +trans.nl = public/language/nl/error.json +trans.sc = public/language/sc/error.json +trans.sl = public/language/sl/error.json +trans.sq_AL = public/language/sq-AL/error.json +trans.tr = public/language/tr/error.json +trans.hu = public/language/hu/error.json +trans.fr = public/language/fr/error.json +trans.hy = public/language/hy/error.json +trans.zh_CN = public/language/zh-CN/error.json +trans.ar = public/language/ar/error.json +trans.et = public/language/et/error.json +trans.fi = public/language/fi/error.json +trans.he = public/language/he/error.json +trans.hr = public/language/hr/error.json +trans.lt = public/language/lt/error.json +trans.ru = public/language/ru/error.json +trans.rw = public/language/rw/error.json +trans.bn = public/language/bn/error.json +trans.vi = public/language/vi/error.json +trans.fa_IR = public/language/fa-IR/error.json +trans.gl = public/language/gl/error.json +trans.nb = public/language/nb/error.json +trans.pl = public/language/pl/error.json +trans.ro = public/language/ro/error.json +trans.uk = public/language/uk/error.json +trans.es = public/language/es/error.json +trans.el = public/language/el/error.json +trans.en@pirate = public/language/en-x-pirate/error.json +trans.en_US = public/language/en-US/error.json +trans.ms = public/language/ms/error.json +trans.pt_PT = public/language/pt-PT/error.json +trans.bg = public/language/bg/error.json +trans.pt_BR = public/language/pt-BR/error.json +trans.sv = public/language/sv/error.json +trans.zh_TW = public/language/zh-TW/error.json +trans.da = public/language/da/error.json +trans.ja = public/language/ja/error.json +trans.sr = public/language/sr/error.json +trans.th = public/language/th/error.json +trans.id = public/language/id/error.json + +[o:nodebb:p:nodebb:r:flags] +file_filter = public/language//flags.json +source_file = public/language/en-GB/flags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/flags.json +trans.ru = public/language/ru/flags.json +trans.sc = public/language/sc/flags.json +trans.fi = public/language/fi/flags.json +trans.hr = public/language/hr/flags.json +trans.lv = public/language/lv/flags.json +trans.ms = public/language/ms/flags.json +trans.ja = public/language/ja/flags.json +trans.nl = public/language/nl/flags.json +trans.pt_PT = public/language/pt-PT/flags.json +trans.th = public/language/th/flags.json +trans.el = public/language/el/flags.json +trans.en_US = public/language/en-US/flags.json +trans.gl = public/language/gl/flags.json +trans.hy = public/language/hy/flags.json +trans.vi = public/language/vi/flags.json +trans.rw = public/language/rw/flags.json +trans.sr = public/language/sr/flags.json +trans.zh_TW = public/language/zh-TW/flags.json +trans.sq_AL = public/language/sq-AL/flags.json +trans.sv = public/language/sv/flags.json +trans.fa_IR = public/language/fa-IR/flags.json +trans.id = public/language/id/flags.json +trans.ko = public/language/ko/flags.json +trans.pl = public/language/pl/flags.json +trans.de = public/language/de/flags.json +trans.en@pirate = public/language/en-x-pirate/flags.json +trans.he = public/language/he/flags.json +trans.zh_CN = public/language/zh-CN/flags.json +trans.lt = public/language/lt/flags.json +trans.da = public/language/da/flags.json +trans.es = public/language/es/flags.json +trans.et = public/language/et/flags.json +trans.hu = public/language/hu/flags.json +trans.tr = public/language/tr/flags.json +trans.bn = public/language/bn/flags.json +trans.it = public/language/it/flags.json +trans.pt_BR = public/language/pt-BR/flags.json +trans.sk = public/language/sk/flags.json +trans.ro = public/language/ro/flags.json +trans.sl = public/language/sl/flags.json +trans.ar = public/language/ar/flags.json +trans.bg = public/language/bg/flags.json +trans.cs = public/language/cs/flags.json +trans.fr = public/language/fr/flags.json + +[o:nodebb:p:nodebb:r:global] +file_filter = public/language//global.json +source_file = public/language/en-GB/global.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/global.json +trans.pl = public/language/pl/global.json +trans.ru = public/language/ru/global.json +trans.bn = public/language/bn/global.json +trans.fr = public/language/fr/global.json +trans.hr = public/language/hr/global.json +trans.hy = public/language/hy/global.json +trans.lv = public/language/lv/global.json +trans.fa_IR = public/language/fa-IR/global.json +trans.sl = public/language/sl/global.json +trans.uk = public/language/uk/global.json +trans.sc = public/language/sc/global.json +trans.sv = public/language/sv/global.json +trans.th = public/language/th/global.json +trans.zh_TW = public/language/zh-TW/global.json +trans.hu = public/language/hu/global.json +trans.sk = public/language/sk/global.json +trans.sr = public/language/sr/global.json +trans.tr = public/language/tr/global.json +trans.nb = public/language/nb/global.json +trans.pt_BR = public/language/pt-BR/global.json +trans.pt_PT = public/language/pt-PT/global.json +trans.bg = public/language/bg/global.json +trans.da = public/language/da/global.json +trans.fi = public/language/fi/global.json +trans.id = public/language/id/global.json +trans.lt = public/language/lt/global.json +trans.ro = public/language/ro/global.json +trans.de = public/language/de/global.json +trans.el = public/language/el/global.json +trans.vi = public/language/vi/global.json +trans.zh_CN = public/language/zh-CN/global.json +trans.en_US = public/language/en-US/global.json +trans.et = public/language/et/global.json +trans.gl = public/language/gl/global.json +trans.he = public/language/he/global.json +trans.ko = public/language/ko/global.json +trans.ja = public/language/ja/global.json +trans.nl = public/language/nl/global.json +trans.rw = public/language/rw/global.json +trans.ar = public/language/ar/global.json +trans.cs = public/language/cs/global.json +trans.en@pirate = public/language/en-x-pirate/global.json +trans.es = public/language/es/global.json +trans.it = public/language/it/global.json +trans.sq_AL = public/language/sq-AL/global.json + +[o:nodebb:p:nodebb:r:groups] +file_filter = public/language//groups.json +source_file = public/language/en-GB/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/groups.json +trans.de = public/language/de/groups.json +trans.es = public/language/es/groups.json +trans.sc = public/language/sc/groups.json +trans.sr = public/language/sr/groups.json +trans.da = public/language/da/groups.json +trans.en@pirate = public/language/en-x-pirate/groups.json +trans.hy = public/language/hy/groups.json +trans.pt_PT = public/language/pt-PT/groups.json +trans.ms = public/language/ms/groups.json +trans.nb = public/language/nb/groups.json +trans.ro = public/language/ro/groups.json +trans.vi = public/language/vi/groups.json +trans.fa_IR = public/language/fa-IR/groups.json +trans.he = public/language/he/groups.json +trans.hr = public/language/hr/groups.json +trans.lv = public/language/lv/groups.json +trans.bg = public/language/bg/groups.json +trans.bn = public/language/bn/groups.json +trans.ja = public/language/ja/groups.json +trans.tr = public/language/tr/groups.json +trans.zh_CN = public/language/zh-CN/groups.json +trans.ar = public/language/ar/groups.json +trans.cs = public/language/cs/groups.json +trans.it = public/language/it/groups.json +trans.sk = public/language/sk/groups.json +trans.fi = public/language/fi/groups.json +trans.fr = public/language/fr/groups.json +trans.sq_AL = public/language/sq-AL/groups.json +trans.th = public/language/th/groups.json +trans.id = public/language/id/groups.json +trans.sl = public/language/sl/groups.json +trans.sv = public/language/sv/groups.json +trans.uk = public/language/uk/groups.json +trans.el = public/language/el/groups.json +trans.et = public/language/et/groups.json +trans.gl = public/language/gl/groups.json +trans.hu = public/language/hu/groups.json +trans.pl = public/language/pl/groups.json +trans.pt_BR = public/language/pt-BR/groups.json +trans.ru = public/language/ru/groups.json +trans.rw = public/language/rw/groups.json +trans.en_US = public/language/en-US/groups.json +trans.ko = public/language/ko/groups.json +trans.lt = public/language/lt/groups.json +trans.nl = public/language/nl/groups.json + +[o:nodebb:p:nodebb:r:ip-blacklist] +file_filter = public/language//ip-blacklist.json +source_file = public/language/en-GB/ip-blacklist.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/ip-blacklist.json +trans.et = public/language/et/ip-blacklist.json +trans.fi = public/language/fi/ip-blacklist.json +trans.hr = public/language/hr/ip-blacklist.json +trans.hu = public/language/hu/ip-blacklist.json +trans.ru = public/language/ru/ip-blacklist.json +trans.sk = public/language/sk/ip-blacklist.json +trans.sq_AL = public/language/sq-AL/ip-blacklist.json +trans.zh_CN = public/language/zh-CN/ip-blacklist.json +trans.da = public/language/da/ip-blacklist.json +trans.en@pirate = public/language/en-x-pirate/ip-blacklist.json +trans.he = public/language/he/ip-blacklist.json +trans.hy = public/language/hy/ip-blacklist.json +trans.lv = public/language/lv/ip-blacklist.json +trans.pt_BR = public/language/pt-BR/ip-blacklist.json +trans.sc = public/language/sc/ip-blacklist.json +trans.ar = public/language/ar/ip-blacklist.json +trans.fa_IR = public/language/fa-IR/ip-blacklist.json +trans.fr = public/language/fr/ip-blacklist.json +trans.gl = public/language/gl/ip-blacklist.json +trans.nb = public/language/nb/ip-blacklist.json +trans.sv = public/language/sv/ip-blacklist.json +trans.th = public/language/th/ip-blacklist.json +trans.bn = public/language/bn/ip-blacklist.json +trans.en_US = public/language/en-US/ip-blacklist.json +trans.ja = public/language/ja/ip-blacklist.json +trans.ms = public/language/ms/ip-blacklist.json +trans.nl = public/language/nl/ip-blacklist.json +trans.pt_PT = public/language/pt-PT/ip-blacklist.json +trans.ro = public/language/ro/ip-blacklist.json +trans.es = public/language/es/ip-blacklist.json +trans.id = public/language/id/ip-blacklist.json +trans.it = public/language/it/ip-blacklist.json +trans.uk = public/language/uk/ip-blacklist.json +trans.vi = public/language/vi/ip-blacklist.json +trans.zh_TW = public/language/zh-TW/ip-blacklist.json +trans.bg = public/language/bg/ip-blacklist.json +trans.de = public/language/de/ip-blacklist.json +trans.sl = public/language/sl/ip-blacklist.json +trans.pl = public/language/pl/ip-blacklist.json +trans.rw = public/language/rw/ip-blacklist.json +trans.cs = public/language/cs/ip-blacklist.json +trans.el = public/language/el/ip-blacklist.json +trans.ko = public/language/ko/ip-blacklist.json +trans.lt = public/language/lt/ip-blacklist.json +trans.tr = public/language/tr/ip-blacklist.json + +[o:nodebb:p:nodebb:r:language-1] +file_filter = public/language//language.json +source_file = public/language/en-GB/language.json +source_lang = en_GB +type = KEYVALUEJSON +trans.lt = public/language/lt/language.json +trans.vi = public/language/vi/language.json +trans.sr = public/language/sr/language.json +trans.tr = public/language/tr/language.json +trans.uk = public/language/uk/language.json +trans.bg = public/language/bg/language.json +trans.da = public/language/da/language.json +trans.en@pirate = public/language/en-x-pirate/language.json +trans.hr = public/language/hr/language.json +trans.rw = public/language/rw/language.json +trans.en_US = public/language/en-US/language.json +trans.et = public/language/et/language.json +trans.ja = public/language/ja/language.json +trans.nb = public/language/nb/language.json +trans.sk = public/language/sk/language.json +trans.el = public/language/el/language.json +trans.es = public/language/es/language.json +trans.fi = public/language/fi/language.json +trans.it = public/language/it/language.json +trans.pt_PT = public/language/pt-PT/language.json +trans.ro = public/language/ro/language.json +trans.th = public/language/th/language.json +trans.ar = public/language/ar/language.json +trans.bn = public/language/bn/language.json +trans.de = public/language/de/language.json +trans.ko = public/language/ko/language.json +trans.pl = public/language/pl/language.json +trans.gl = public/language/gl/language.json +trans.sq_AL = public/language/sq-AL/language.json +trans.zh_TW = public/language/zh-TW/language.json +trans.nl = public/language/nl/language.json +trans.ru = public/language/ru/language.json +trans.sc = public/language/sc/language.json +trans.cs = public/language/cs/language.json +trans.fr = public/language/fr/language.json +trans.he = public/language/he/language.json +trans.id = public/language/id/language.json +trans.lv = public/language/lv/language.json +trans.sl = public/language/sl/language.json +trans.sv = public/language/sv/language.json +trans.zh_CN = public/language/zh-CN/language.json +trans.fa_IR = public/language/fa-IR/language.json +trans.hu = public/language/hu/language.json +trans.hy = public/language/hy/language.json +trans.ms = public/language/ms/language.json +trans.pt_BR = public/language/pt-BR/language.json + +[o:nodebb:p:nodebb:r:login] +file_filter = public/language//login.json +source_file = public/language/en-GB/login.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/login.json +trans.cs = public/language/cs/login.json +trans.el = public/language/el/login.json +trans.ja = public/language/ja/login.json +trans.pt_BR = public/language/pt-BR/login.json +trans.ro = public/language/ro/login.json +trans.zh_TW = public/language/zh-TW/login.json +trans.bg = public/language/bg/login.json +trans.pt_PT = public/language/pt-PT/login.json +trans.sr = public/language/sr/login.json +trans.vi = public/language/vi/login.json +trans.zh_CN = public/language/zh-CN/login.json +trans.pl = public/language/pl/login.json +trans.gl = public/language/gl/login.json +trans.ko = public/language/ko/login.json +trans.lv = public/language/lv/login.json +trans.sl = public/language/sl/login.json +trans.sq_AL = public/language/sq-AL/login.json +trans.sv = public/language/sv/login.json +trans.tr = public/language/tr/login.json +trans.es = public/language/es/login.json +trans.sk = public/language/sk/login.json +trans.uk = public/language/uk/login.json +trans.it = public/language/it/login.json +trans.da = public/language/da/login.json +trans.fa_IR = public/language/fa-IR/login.json +trans.fi = public/language/fi/login.json +trans.fr = public/language/fr/login.json +trans.he = public/language/he/login.json +trans.hr = public/language/hr/login.json +trans.ar = public/language/ar/login.json +trans.en_US = public/language/en-US/login.json +trans.hu = public/language/hu/login.json +trans.ms = public/language/ms/login.json +trans.en@pirate = public/language/en-x-pirate/login.json +trans.hy = public/language/hy/login.json +trans.id = public/language/id/login.json +trans.nb = public/language/nb/login.json +trans.ru = public/language/ru/login.json +trans.rw = public/language/rw/login.json +trans.th = public/language/th/login.json +trans.et = public/language/et/login.json +trans.lt = public/language/lt/login.json +trans.nl = public/language/nl/login.json +trans.sc = public/language/sc/login.json +trans.de = public/language/de/login.json + +[o:nodebb:p:nodebb:r:modules] +file_filter = public/language//modules.json +source_file = public/language/en-GB/modules.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sl = public/language/sl/modules.json +trans.sq_AL = public/language/sq-AL/modules.json +trans.da = public/language/da/modules.json +trans.et = public/language/et/modules.json +trans.fr = public/language/fr/modules.json +trans.lt = public/language/lt/modules.json +trans.ms = public/language/ms/modules.json +trans.sk = public/language/sk/modules.json +trans.vi = public/language/vi/modules.json +trans.fa_IR = public/language/fa-IR/modules.json +trans.hr = public/language/hr/modules.json +trans.lv = public/language/lv/modules.json +trans.nb = public/language/nb/modules.json +trans.ro = public/language/ro/modules.json +trans.sv = public/language/sv/modules.json +trans.en@pirate = public/language/en-x-pirate/modules.json +trans.tr = public/language/tr/modules.json +trans.cs = public/language/cs/modules.json +trans.de = public/language/de/modules.json +trans.fi = public/language/fi/modules.json +trans.he = public/language/he/modules.json +trans.hy = public/language/hy/modules.json +trans.sr = public/language/sr/modules.json +trans.el = public/language/el/modules.json +trans.hu = public/language/hu/modules.json +trans.ko = public/language/ko/modules.json +trans.es = public/language/es/modules.json +trans.id = public/language/id/modules.json +trans.nl = public/language/nl/modules.json +trans.sc = public/language/sc/modules.json +trans.th = public/language/th/modules.json +trans.zh_TW = public/language/zh-TW/modules.json +trans.bg = public/language/bg/modules.json +trans.bn = public/language/bn/modules.json +trans.en_US = public/language/en-US/modules.json +trans.it = public/language/it/modules.json +trans.pl = public/language/pl/modules.json +trans.uk = public/language/uk/modules.json +trans.rw = public/language/rw/modules.json +trans.zh_CN = public/language/zh-CN/modules.json +trans.ar = public/language/ar/modules.json +trans.gl = public/language/gl/modules.json +trans.ja = public/language/ja/modules.json +trans.pt_BR = public/language/pt-BR/modules.json +trans.pt_PT = public/language/pt-PT/modules.json +trans.ru = public/language/ru/modules.json + +[o:nodebb:p:nodebb:r:notifications] +file_filter = public/language//notifications.json +source_file = public/language/en-GB/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/notifications.json +trans.sq_AL = public/language/sq-AL/notifications.json +trans.el = public/language/el/notifications.json +trans.en_US = public/language/en-US/notifications.json +trans.ja = public/language/ja/notifications.json +trans.pl = public/language/pl/notifications.json +trans.sr = public/language/sr/notifications.json +trans.th = public/language/th/notifications.json +trans.tr = public/language/tr/notifications.json +trans.zh_CN = public/language/zh-CN/notifications.json +trans.cs = public/language/cs/notifications.json +trans.de = public/language/de/notifications.json +trans.fa_IR = public/language/fa-IR/notifications.json +trans.sl = public/language/sl/notifications.json +trans.sc = public/language/sc/notifications.json +trans.uk = public/language/uk/notifications.json +trans.bn = public/language/bn/notifications.json +trans.fi = public/language/fi/notifications.json +trans.lt = public/language/lt/notifications.json +trans.pt_PT = public/language/pt-PT/notifications.json +trans.es = public/language/es/notifications.json +trans.gl = public/language/gl/notifications.json +trans.sv = public/language/sv/notifications.json +trans.zh_TW = public/language/zh-TW/notifications.json +trans.pt_BR = public/language/pt-BR/notifications.json +trans.rw = public/language/rw/notifications.json +trans.lv = public/language/lv/notifications.json +trans.bg = public/language/bg/notifications.json +trans.he = public/language/he/notifications.json +trans.hu = public/language/hu/notifications.json +trans.it = public/language/it/notifications.json +trans.nl = public/language/nl/notifications.json +trans.ro = public/language/ro/notifications.json +trans.sk = public/language/sk/notifications.json +trans.vi = public/language/vi/notifications.json +trans.et = public/language/et/notifications.json +trans.hy = public/language/hy/notifications.json +trans.ko = public/language/ko/notifications.json +trans.ms = public/language/ms/notifications.json +trans.hr = public/language/hr/notifications.json +trans.id = public/language/id/notifications.json +trans.nb = public/language/nb/notifications.json +trans.ar = public/language/ar/notifications.json +trans.da = public/language/da/notifications.json +trans.en@pirate = public/language/en-x-pirate/notifications.json +trans.fr = public/language/fr/notifications.json + +[o:nodebb:p:nodebb:r:pages] +file_filter = public/language//pages.json +source_file = public/language/en-GB/pages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.he = public/language/he/pages.json +trans.nb = public/language/nb/pages.json +trans.sv = public/language/sv/pages.json +trans.pt_BR = public/language/pt-BR/pages.json +trans.tr = public/language/tr/pages.json +trans.zh_TW = public/language/zh-TW/pages.json +trans.bn = public/language/bn/pages.json +trans.gl = public/language/gl/pages.json +trans.hr = public/language/hr/pages.json +trans.id = public/language/id/pages.json +trans.lt = public/language/lt/pages.json +trans.zh_CN = public/language/zh-CN/pages.json +trans.bg = public/language/bg/pages.json +trans.et = public/language/et/pages.json +trans.it = public/language/it/pages.json +trans.ro = public/language/ro/pages.json +trans.sl = public/language/sl/pages.json +trans.sk = public/language/sk/pages.json +trans.sr = public/language/sr/pages.json +trans.uk = public/language/uk/pages.json +trans.de = public/language/de/pages.json +trans.en@pirate = public/language/en-x-pirate/pages.json +trans.en_US = public/language/en-US/pages.json +trans.pt_PT = public/language/pt-PT/pages.json +trans.rw = public/language/rw/pages.json +trans.th = public/language/th/pages.json +trans.vi = public/language/vi/pages.json +trans.hu = public/language/hu/pages.json +trans.hy = public/language/hy/pages.json +trans.nl = public/language/nl/pages.json +trans.ru = public/language/ru/pages.json +trans.sc = public/language/sc/pages.json +trans.cs = public/language/cs/pages.json +trans.fi = public/language/fi/pages.json +trans.ko = public/language/ko/pages.json +trans.lv = public/language/lv/pages.json +trans.sq_AL = public/language/sq-AL/pages.json +trans.ar = public/language/ar/pages.json +trans.da = public/language/da/pages.json +trans.es = public/language/es/pages.json +trans.pl = public/language/pl/pages.json +trans.el = public/language/el/pages.json +trans.fa_IR = public/language/fa-IR/pages.json +trans.fr = public/language/fr/pages.json +trans.ja = public/language/ja/pages.json +trans.ms = public/language/ms/pages.json + +[o:nodebb:p:nodebb:r:post-queue] +file_filter = public/language//post-queue.json +source_file = public/language/en-GB/post-queue.json +source_lang = en_GB +type = KEYVALUEJSON +trans.it = public/language/it/post-queue.json +trans.ko = public/language/ko/post-queue.json +trans.lv = public/language/lv/post-queue.json +trans.nl = public/language/nl/post-queue.json +trans.rw = public/language/rw/post-queue.json +trans.da = public/language/da/post-queue.json +trans.de = public/language/de/post-queue.json +trans.el = public/language/el/post-queue.json +trans.sk = public/language/sk/post-queue.json +trans.sc = public/language/sc/post-queue.json +trans.sr = public/language/sr/post-queue.json +trans.tr = public/language/tr/post-queue.json +trans.uk = public/language/uk/post-queue.json +trans.ja = public/language/ja/post-queue.json +trans.ms = public/language/ms/post-queue.json +trans.ru = public/language/ru/post-queue.json +trans.fr = public/language/fr/post-queue.json +trans.hu = public/language/hu/post-queue.json +trans.lt = public/language/lt/post-queue.json +trans.pl = public/language/pl/post-queue.json +trans.ro = public/language/ro/post-queue.json +trans.bn = public/language/bn/post-queue.json +trans.en@pirate = public/language/en-x-pirate/post-queue.json +trans.fa_IR = public/language/fa-IR/post-queue.json +trans.sl = public/language/sl/post-queue.json +trans.vi = public/language/vi/post-queue.json +trans.zh_CN = public/language/zh-CN/post-queue.json +trans.id = public/language/id/post-queue.json +trans.en_US = public/language/en-US/post-queue.json +trans.sq_AL = public/language/sq-AL/post-queue.json +trans.sv = public/language/sv/post-queue.json +trans.zh_TW = public/language/zh-TW/post-queue.json +trans.ar = public/language/ar/post-queue.json +trans.bg = public/language/bg/post-queue.json +trans.cs = public/language/cs/post-queue.json +trans.hr = public/language/hr/post-queue.json +trans.pt_BR = public/language/pt-BR/post-queue.json +trans.th = public/language/th/post-queue.json +trans.es = public/language/es/post-queue.json +trans.et = public/language/et/post-queue.json +trans.gl = public/language/gl/post-queue.json +trans.hy = public/language/hy/post-queue.json +trans.pt_PT = public/language/pt-PT/post-queue.json +trans.fi = public/language/fi/post-queue.json +trans.he = public/language/he/post-queue.json +trans.nb = public/language/nb/post-queue.json + +[o:nodebb:p:nodebb:r:recent] +file_filter = public/language//recent.json +source_file = public/language/en-GB/recent.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/recent.json +trans.sr = public/language/sr/recent.json +trans.sk = public/language/sk/recent.json +trans.uk = public/language/uk/recent.json +trans.bg = public/language/bg/recent.json +trans.cs = public/language/cs/recent.json +trans.da = public/language/da/recent.json +trans.hy = public/language/hy/recent.json +trans.id = public/language/id/recent.json +trans.lv = public/language/lv/recent.json +trans.ar = public/language/ar/recent.json +trans.de = public/language/de/recent.json +trans.es = public/language/es/recent.json +trans.fa_IR = public/language/fa-IR/recent.json +trans.gl = public/language/gl/recent.json +trans.hu = public/language/hu/recent.json +trans.lt = public/language/lt/recent.json +trans.pt_BR = public/language/pt-BR/recent.json +trans.ru = public/language/ru/recent.json +trans.vi = public/language/vi/recent.json +trans.rw = public/language/rw/recent.json +trans.sl = public/language/sl/recent.json +trans.el = public/language/el/recent.json +trans.en_US = public/language/en-US/recent.json +trans.he = public/language/he/recent.json +trans.hr = public/language/hr/recent.json +trans.ro = public/language/ro/recent.json +trans.tr = public/language/tr/recent.json +trans.zh_CN = public/language/zh-CN/recent.json +trans.bn = public/language/bn/recent.json +trans.en@pirate = public/language/en-x-pirate/recent.json +trans.ja = public/language/ja/recent.json +trans.nb = public/language/nb/recent.json +trans.nl = public/language/nl/recent.json +trans.sv = public/language/sv/recent.json +trans.th = public/language/th/recent.json +trans.fr = public/language/fr/recent.json +trans.it = public/language/it/recent.json +trans.ms = public/language/ms/recent.json +trans.pl = public/language/pl/recent.json +trans.pt_PT = public/language/pt-PT/recent.json +trans.et = public/language/et/recent.json +trans.fi = public/language/fi/recent.json +trans.ko = public/language/ko/recent.json +trans.sc = public/language/sc/recent.json +trans.zh_TW = public/language/zh-TW/recent.json + +[o:nodebb:p:nodebb:r:register] +file_filter = public/language//register.json +source_file = public/language/en-GB/register.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/register.json +trans.tr = public/language/tr/register.json +trans.et = public/language/et/register.json +trans.he = public/language/he/register.json +trans.lv = public/language/lv/register.json +trans.nl = public/language/nl/register.json +trans.sc = public/language/sc/register.json +trans.en@pirate = public/language/en-x-pirate/register.json +trans.es = public/language/es/register.json +trans.pl = public/language/pl/register.json +trans.sl = public/language/sl/register.json +trans.uk = public/language/uk/register.json +trans.pt_PT = public/language/pt-PT/register.json +trans.ar = public/language/ar/register.json +trans.bg = public/language/bg/register.json +trans.de = public/language/de/register.json +trans.hr = public/language/hr/register.json +trans.nb = public/language/nb/register.json +trans.gl = public/language/gl/register.json +trans.sk = public/language/sk/register.json +trans.hy = public/language/hy/register.json +trans.ko = public/language/ko/register.json +trans.ms = public/language/ms/register.json +trans.ro = public/language/ro/register.json +trans.rw = public/language/rw/register.json +trans.zh_CN = public/language/zh-CN/register.json +trans.fi = public/language/fi/register.json +trans.it = public/language/it/register.json +trans.ru = public/language/ru/register.json +trans.sr = public/language/sr/register.json +trans.vi = public/language/vi/register.json +trans.sv = public/language/sv/register.json +trans.zh_TW = public/language/zh-TW/register.json +trans.bn = public/language/bn/register.json +trans.cs = public/language/cs/register.json +trans.fa_IR = public/language/fa-IR/register.json +trans.hu = public/language/hu/register.json +trans.lt = public/language/lt/register.json +trans.ja = public/language/ja/register.json +trans.pt_BR = public/language/pt-BR/register.json +trans.th = public/language/th/register.json +trans.da = public/language/da/register.json +trans.el = public/language/el/register.json +trans.en_US = public/language/en-US/register.json +trans.fr = public/language/fr/register.json +trans.id = public/language/id/register.json + +[o:nodebb:p:nodebb:r:reset_password] +file_filter = public/language//reset_password.json +source_file = public/language/en-GB/reset_password.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/reset_password.json +trans.fr = public/language/fr/reset_password.json +trans.hr = public/language/hr/reset_password.json +trans.hy = public/language/hy/reset_password.json +trans.ja = public/language/ja/reset_password.json +trans.pt_PT = public/language/pt-PT/reset_password.json +trans.zh_CN = public/language/zh-CN/reset_password.json +trans.sv = public/language/sv/reset_password.json +trans.de = public/language/de/reset_password.json +trans.fa_IR = public/language/fa-IR/reset_password.json +trans.gl = public/language/gl/reset_password.json +trans.hu = public/language/hu/reset_password.json +trans.id = public/language/id/reset_password.json +trans.rw = public/language/rw/reset_password.json +trans.sc = public/language/sc/reset_password.json +trans.vi = public/language/vi/reset_password.json +trans.bn = public/language/bn/reset_password.json +trans.he = public/language/he/reset_password.json +trans.ro = public/language/ro/reset_password.json +trans.sq_AL = public/language/sq-AL/reset_password.json +trans.ar = public/language/ar/reset_password.json +trans.cs = public/language/cs/reset_password.json +trans.ko = public/language/ko/reset_password.json +trans.ms = public/language/ms/reset_password.json +trans.pt_BR = public/language/pt-BR/reset_password.json +trans.sr = public/language/sr/reset_password.json +trans.tr = public/language/tr/reset_password.json +trans.ru = public/language/ru/reset_password.json +trans.zh_TW = public/language/zh-TW/reset_password.json +trans.da = public/language/da/reset_password.json +trans.en@pirate = public/language/en-x-pirate/reset_password.json +trans.en_US = public/language/en-US/reset_password.json +trans.lt = public/language/lt/reset_password.json +trans.lv = public/language/lv/reset_password.json +trans.nb = public/language/nb/reset_password.json +trans.sk = public/language/sk/reset_password.json +trans.el = public/language/el/reset_password.json +trans.es = public/language/es/reset_password.json +trans.et = public/language/et/reset_password.json +trans.uk = public/language/uk/reset_password.json +trans.fi = public/language/fi/reset_password.json +trans.it = public/language/it/reset_password.json +trans.nl = public/language/nl/reset_password.json +trans.pl = public/language/pl/reset_password.json +trans.sl = public/language/sl/reset_password.json +trans.th = public/language/th/reset_password.json + +[o:nodebb:p:nodebb:r:rewards] +file_filter = public/language//rewards.json +source_file = public/language/en-GB/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/rewards.json +trans.fr = public/language/fr/rewards.json +trans.hr = public/language/hr/rewards.json +trans.hy = public/language/hy/rewards.json +trans.ja = public/language/ja/rewards.json +trans.pt_PT = public/language/pt-PT/rewards.json +trans.zh_CN = public/language/zh-CN/rewards.json +trans.sv = public/language/sv/rewards.json +trans.de = public/language/de/rewards.json +trans.fa_IR = public/language/fa-IR/rewards.json +trans.gl = public/language/gl/rewards.json +trans.hu = public/language/hu/rewards.json +trans.id = public/language/id/rewards.json +trans.rw = public/language/rw/rewards.json +trans.sc = public/language/sc/rewards.json +trans.vi = public/language/vi/rewards.json +trans.bn = public/language/bn/rewards.json +trans.he = public/language/he/rewards.json +trans.ro = public/language/ro/rewards.json +trans.sq_AL = public/language/sq-AL/rewards.json +trans.ar = public/language/ar/rewards.json +trans.cs = public/language/cs/rewards.json +trans.ko = public/language/ko/rewards.json +trans.ms = public/language/ms/rewards.json +trans.pt_BR = public/language/pt-BR/rewards.json +trans.sr = public/language/sr/rewards.json +trans.tr = public/language/tr/rewards.json +trans.ru = public/language/ru/rewards.json +trans.zh_TW = public/language/zh-TW/rewards.json +trans.da = public/language/da/rewards.json +trans.en@pirate = public/language/en-x-pirate/rewards.json +trans.en_US = public/language/en-US/rewards.json +trans.lt = public/language/lt/rewards.json +trans.lv = public/language/lv/rewards.json +trans.nb = public/language/nb/rewards.json +trans.sk = public/language/sk/rewards.json +trans.el = public/language/el/rewards.json +trans.es = public/language/es/rewards.json +trans.et = public/language/et/rewards.json +trans.uk = public/language/uk/rewards.json +trans.fi = public/language/fi/rewards.json +trans.it = public/language/it/rewards.json +trans.nl = public/language/nl/rewards.json +trans.pl = public/language/pl/rewards.json +trans.sl = public/language/sl/rewards.json +trans.th = public/language/th/rewards.json + +[o:nodebb:p:nodebb:r:search] +file_filter = public/language//search.json +source_file = public/language/en-GB/search.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/search.json +trans.en_US = public/language/en-US/search.json +trans.ms = public/language/ms/search.json +trans.hr = public/language/hr/search.json +trans.hu = public/language/hu/search.json +trans.id = public/language/id/search.json +trans.bg = public/language/bg/search.json +trans.de = public/language/de/search.json +trans.en@pirate = public/language/en-x-pirate/search.json +trans.fa_IR = public/language/fa-IR/search.json +trans.fi = public/language/fi/search.json +trans.sc = public/language/sc/search.json +trans.sk = public/language/sk/search.json +trans.sl = public/language/sl/search.json +trans.sq_AL = public/language/sq-AL/search.json +trans.sr = public/language/sr/search.json +trans.bn = public/language/bn/search.json +trans.ja = public/language/ja/search.json +trans.ko = public/language/ko/search.json +trans.pl = public/language/pl/search.json +trans.ro = public/language/ro/search.json +trans.zh_TW = public/language/zh-TW/search.json +trans.cs = public/language/cs/search.json +trans.he = public/language/he/search.json +trans.nb = public/language/nb/search.json +trans.zh_CN = public/language/zh-CN/search.json +trans.lv = public/language/lv/search.json +trans.rw = public/language/rw/search.json +trans.sv = public/language/sv/search.json +trans.ru = public/language/ru/search.json +trans.tr = public/language/tr/search.json +trans.uk = public/language/uk/search.json +trans.el = public/language/el/search.json +trans.fr = public/language/fr/search.json +trans.gl = public/language/gl/search.json +trans.it = public/language/it/search.json +trans.pt_BR = public/language/pt-BR/search.json +trans.nl = public/language/nl/search.json +trans.pt_PT = public/language/pt-PT/search.json +trans.th = public/language/th/search.json +trans.vi = public/language/vi/search.json +trans.ar = public/language/ar/search.json +trans.es = public/language/es/search.json +trans.et = public/language/et/search.json +trans.hy = public/language/hy/search.json +trans.lt = public/language/lt/search.json + +[o:nodebb:p:nodebb:r:social] +file_filter = public/language//social.json +source_file = public/language/en-GB/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/social.json +trans.en_US = public/language/en-US/social.json +trans.ms = public/language/ms/social.json +trans.hr = public/language/hr/social.json +trans.hu = public/language/hu/social.json +trans.id = public/language/id/social.json +trans.bg = public/language/bg/social.json +trans.de = public/language/de/social.json +trans.en@pirate = public/language/en-x-pirate/social.json +trans.fa_IR = public/language/fa-IR/social.json +trans.fi = public/language/fi/social.json +trans.sc = public/language/sc/social.json +trans.sk = public/language/sk/social.json +trans.sl = public/language/sl/social.json +trans.sq_AL = public/language/sq-AL/social.json +trans.sr = public/language/sr/social.json +trans.bn = public/language/bn/social.json +trans.ja = public/language/ja/social.json +trans.ko = public/language/ko/social.json +trans.pl = public/language/pl/social.json +trans.ro = public/language/ro/social.json +trans.zh_TW = public/language/zh-TW/social.json +trans.cs = public/language/cs/social.json +trans.he = public/language/he/social.json +trans.nb = public/language/nb/social.json +trans.zh_CN = public/language/zh-CN/social.json +trans.lv = public/language/lv/social.json +trans.rw = public/language/rw/social.json +trans.sv = public/language/sv/social.json +trans.ru = public/language/ru/social.json +trans.tr = public/language/tr/social.json +trans.uk = public/language/uk/social.json +trans.el = public/language/el/social.json +trans.fr = public/language/fr/social.json +trans.gl = public/language/gl/social.json +trans.it = public/language/it/social.json +trans.pt_BR = public/language/pt-BR/social.json +trans.nl = public/language/nl/social.json +trans.pt_PT = public/language/pt-PT/social.json +trans.th = public/language/th/social.json +trans.vi = public/language/vi/social.json +trans.ar = public/language/ar/social.json +trans.es = public/language/es/social.json +trans.et = public/language/et/social.json +trans.hy = public/language/hy/social.json +trans.lt = public/language/lt/social.json + +[o:nodebb:p:nodebb:r:success] +file_filter = public/language//success.json +source_file = public/language/en-GB/success.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/success.json +trans.en@pirate = public/language/en-x-pirate/success.json +trans.es = public/language/es/success.json +trans.he = public/language/he/success.json +trans.hy = public/language/hy/success.json +trans.ja = public/language/ja/success.json +trans.ko = public/language/ko/success.json +trans.pl = public/language/pl/success.json +trans.de = public/language/de/success.json +trans.fa_IR = public/language/fa-IR/success.json +trans.ro = public/language/ro/success.json +trans.en_US = public/language/en-US/success.json +trans.lt = public/language/lt/success.json +trans.ru = public/language/ru/success.json +trans.sq_AL = public/language/sq-AL/success.json +trans.vi = public/language/vi/success.json +trans.bg = public/language/bg/success.json +trans.hr = public/language/hr/success.json +trans.ms = public/language/ms/success.json +trans.th = public/language/th/success.json +trans.zh_CN = public/language/zh-CN/success.json +trans.bn = public/language/bn/success.json +trans.fr = public/language/fr/success.json +trans.hu = public/language/hu/success.json +trans.id = public/language/id/success.json +trans.rw = public/language/rw/success.json +trans.sl = public/language/sl/success.json +trans.zh_TW = public/language/zh-TW/success.json +trans.ar = public/language/ar/success.json +trans.et = public/language/et/success.json +trans.it = public/language/it/success.json +trans.pt_PT = public/language/pt-PT/success.json +trans.sk = public/language/sk/success.json +trans.sv = public/language/sv/success.json +trans.tr = public/language/tr/success.json +trans.cs = public/language/cs/success.json +trans.fi = public/language/fi/success.json +trans.lv = public/language/lv/success.json +trans.nl = public/language/nl/success.json +trans.sc = public/language/sc/success.json +trans.da = public/language/da/success.json +trans.el = public/language/el/success.json +trans.gl = public/language/gl/success.json +trans.nb = public/language/nb/success.json +trans.sr = public/language/sr/success.json +trans.uk = public/language/uk/success.json + +[o:nodebb:p:nodebb:r:tags] +file_filter = public/language//tags.json +source_file = public/language/en-GB/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/tags.json +trans.nl = public/language/nl/tags.json +trans.pt_BR = public/language/pt-BR/tags.json +trans.uk = public/language/uk/tags.json +trans.el = public/language/el/tags.json +trans.fa_IR = public/language/fa-IR/tags.json +trans.he = public/language/he/tags.json +trans.hr = public/language/hr/tags.json +trans.th = public/language/th/tags.json +trans.sl = public/language/sl/tags.json +trans.bg = public/language/bg/tags.json +trans.en_US = public/language/en-US/tags.json +trans.fi = public/language/fi/tags.json +trans.rw = public/language/rw/tags.json +trans.sc = public/language/sc/tags.json +trans.tr = public/language/tr/tags.json +trans.vi = public/language/vi/tags.json +trans.ar = public/language/ar/tags.json +trans.de = public/language/de/tags.json +trans.es = public/language/es/tags.json +trans.pt_PT = public/language/pt-PT/tags.json +trans.ro = public/language/ro/tags.json +trans.ru = public/language/ru/tags.json +trans.sk = public/language/sk/tags.json +trans.sr = public/language/sr/tags.json +trans.cs = public/language/cs/tags.json +trans.da = public/language/da/tags.json +trans.en@pirate = public/language/en-x-pirate/tags.json +trans.hu = public/language/hu/tags.json +trans.ja = public/language/ja/tags.json +trans.zh_CN = public/language/zh-CN/tags.json +trans.gl = public/language/gl/tags.json +trans.lv = public/language/lv/tags.json +trans.ms = public/language/ms/tags.json +trans.nb = public/language/nb/tags.json +trans.sv = public/language/sv/tags.json +trans.sq_AL = public/language/sq-AL/tags.json +trans.zh_TW = public/language/zh-TW/tags.json +trans.bn = public/language/bn/tags.json +trans.fr = public/language/fr/tags.json +trans.id = public/language/id/tags.json +trans.ko = public/language/ko/tags.json +trans.lt = public/language/lt/tags.json +trans.hy = public/language/hy/tags.json +trans.it = public/language/it/tags.json +trans.pl = public/language/pl/tags.json + +[o:nodebb:p:nodebb:r:top] +file_filter = public/language//top.json +source_file = public/language/en-GB/top.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hy = public/language/hy/top.json +trans.el = public/language/el/top.json +trans.fa_IR = public/language/fa-IR/top.json +trans.nl = public/language/nl/top.json +trans.cs = public/language/cs/top.json +trans.en_US = public/language/en-US/top.json +trans.fi = public/language/fi/top.json +trans.he = public/language/he/top.json +trans.lt = public/language/lt/top.json +trans.ms = public/language/ms/top.json +trans.sk = public/language/sk/top.json +trans.vi = public/language/vi/top.json +trans.bg = public/language/bg/top.json +trans.de = public/language/de/top.json +trans.hu = public/language/hu/top.json +trans.pl = public/language/pl/top.json +trans.pt_PT = public/language/pt-PT/top.json +trans.sl = public/language/sl/top.json +trans.en@pirate = public/language/en-x-pirate/top.json +trans.gl = public/language/gl/top.json +trans.rw = public/language/rw/top.json +trans.sq_AL = public/language/sq-AL/top.json +trans.zh_CN = public/language/zh-CN/top.json +trans.ko = public/language/ko/top.json +trans.ro = public/language/ro/top.json +trans.pt_BR = public/language/pt-BR/top.json +trans.bn = public/language/bn/top.json +trans.fr = public/language/fr/top.json +trans.et = public/language/et/top.json +trans.id = public/language/id/top.json +trans.ja = public/language/ja/top.json +trans.lv = public/language/lv/top.json +trans.ru = public/language/ru/top.json +trans.sc = public/language/sc/top.json +trans.ar = public/language/ar/top.json +trans.da = public/language/da/top.json +trans.uk = public/language/uk/top.json +trans.sv = public/language/sv/top.json +trans.th = public/language/th/top.json +trans.it = public/language/it/top.json +trans.nb = public/language/nb/top.json +trans.sr = public/language/sr/top.json +trans.tr = public/language/tr/top.json +trans.zh_TW = public/language/zh-TW/top.json +trans.es = public/language/es/top.json +trans.hr = public/language/hr/top.json + +[o:nodebb:p:nodebb:r:topic] +file_filter = public/language//topic.json +source_file = public/language/en-GB/topic.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/topic.json +trans.hu = public/language/hu/topic.json +trans.nb = public/language/nb/topic.json +trans.nl = public/language/nl/topic.json +trans.sk = public/language/sk/topic.json +trans.ar = public/language/ar/topic.json +trans.es = public/language/es/topic.json +trans.fr = public/language/fr/topic.json +trans.lv = public/language/lv/topic.json +trans.ms = public/language/ms/topic.json +trans.pl = public/language/pl/topic.json +trans.pt_PT = public/language/pt-PT/topic.json +trans.uk = public/language/uk/topic.json +trans.ru = public/language/ru/topic.json +trans.bg = public/language/bg/topic.json +trans.en@pirate = public/language/en-x-pirate/topic.json +trans.fa_IR = public/language/fa-IR/topic.json +trans.fi = public/language/fi/topic.json +trans.he = public/language/he/topic.json +trans.ja = public/language/ja/topic.json +trans.pt_BR = public/language/pt-BR/topic.json +trans.tr = public/language/tr/topic.json +trans.zh_TW = public/language/zh-TW/topic.json +trans.bn = public/language/bn/topic.json +trans.da = public/language/da/topic.json +trans.en_US = public/language/en-US/topic.json +trans.hr = public/language/hr/topic.json +trans.it = public/language/it/topic.json +trans.ro = public/language/ro/topic.json +trans.cs = public/language/cs/topic.json +trans.de = public/language/de/topic.json +trans.sr = public/language/sr/topic.json +trans.sv = public/language/sv/topic.json +trans.vi = public/language/vi/topic.json +trans.ko = public/language/ko/topic.json +trans.sl = public/language/sl/topic.json +trans.el = public/language/el/topic.json +trans.gl = public/language/gl/topic.json +trans.id = public/language/id/topic.json +trans.lt = public/language/lt/topic.json +trans.sq_AL = public/language/sq-AL/topic.json +trans.th = public/language/th/topic.json +trans.hy = public/language/hy/topic.json +trans.rw = public/language/rw/topic.json +trans.sc = public/language/sc/topic.json +trans.zh_CN = public/language/zh-CN/topic.json + +[o:nodebb:p:nodebb:r:unread] +file_filter = public/language//unread.json +source_file = public/language/en-GB/unread.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/unread.json +trans.zh_TW = public/language/zh-TW/unread.json +trans.fa_IR = public/language/fa-IR/unread.json +trans.fr = public/language/fr/unread.json +trans.es = public/language/es/unread.json +trans.it = public/language/it/unread.json +trans.ms = public/language/ms/unread.json +trans.ro = public/language/ro/unread.json +trans.de = public/language/de/unread.json +trans.en@pirate = public/language/en-x-pirate/unread.json +trans.hr = public/language/hr/unread.json +trans.hu = public/language/hu/unread.json +trans.lt = public/language/lt/unread.json +trans.ru = public/language/ru/unread.json +trans.sl = public/language/sl/unread.json +trans.th = public/language/th/unread.json +trans.bg = public/language/bg/unread.json +trans.gl = public/language/gl/unread.json +trans.uk = public/language/uk/unread.json +trans.vi = public/language/vi/unread.json +trans.ja = public/language/ja/unread.json +trans.lv = public/language/lv/unread.json +trans.nl = public/language/nl/unread.json +trans.sr = public/language/sr/unread.json +trans.zh_CN = public/language/zh-CN/unread.json +trans.hy = public/language/hy/unread.json +trans.id = public/language/id/unread.json +trans.da = public/language/da/unread.json +trans.en_US = public/language/en-US/unread.json +trans.sk = public/language/sk/unread.json +trans.bn = public/language/bn/unread.json +trans.cs = public/language/cs/unread.json +trans.nb = public/language/nb/unread.json +trans.rw = public/language/rw/unread.json +trans.sq_AL = public/language/sq-AL/unread.json +trans.tr = public/language/tr/unread.json +trans.ar = public/language/ar/unread.json +trans.el = public/language/el/unread.json +trans.he = public/language/he/unread.json +trans.pt_PT = public/language/pt-PT/unread.json +trans.et = public/language/et/unread.json +trans.fi = public/language/fi/unread.json +trans.sc = public/language/sc/unread.json +trans.sv = public/language/sv/unread.json +trans.ko = public/language/ko/unread.json +trans.pl = public/language/pl/unread.json + +[o:nodebb:p:nodebb:r:uploads] +file_filter = public/language//uploads.json +source_file = public/language/en-GB/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/uploads.json +trans.cs = public/language/cs/uploads.json +trans.el = public/language/el/uploads.json +trans.hu = public/language/hu/uploads.json +trans.hy = public/language/hy/uploads.json +trans.it = public/language/it/uploads.json +trans.tr = public/language/tr/uploads.json +trans.uk = public/language/uk/uploads.json +trans.zh_CN = public/language/zh-CN/uploads.json +trans.en@pirate = public/language/en-x-pirate/uploads.json +trans.lt = public/language/lt/uploads.json +trans.lv = public/language/lv/uploads.json +trans.pt_BR = public/language/pt-BR/uploads.json +trans.sk = public/language/sk/uploads.json +trans.bn = public/language/bn/uploads.json +trans.hr = public/language/hr/uploads.json +trans.pl = public/language/pl/uploads.json +trans.zh_TW = public/language/zh-TW/uploads.json +trans.ru = public/language/ru/uploads.json +trans.sl = public/language/sl/uploads.json +trans.sq_AL = public/language/sq-AL/uploads.json +trans.et = public/language/et/uploads.json +trans.id = public/language/id/uploads.json +trans.ms = public/language/ms/uploads.json +trans.nb = public/language/nb/uploads.json +trans.pt_PT = public/language/pt-PT/uploads.json +trans.da = public/language/da/uploads.json +trans.es = public/language/es/uploads.json +trans.fr = public/language/fr/uploads.json +trans.th = public/language/th/uploads.json +trans.ar = public/language/ar/uploads.json +trans.en_US = public/language/en-US/uploads.json +trans.fi = public/language/fi/uploads.json +trans.gl = public/language/gl/uploads.json +trans.rw = public/language/rw/uploads.json +trans.ro = public/language/ro/uploads.json +trans.sr = public/language/sr/uploads.json +trans.vi = public/language/vi/uploads.json +trans.bg = public/language/bg/uploads.json +trans.de = public/language/de/uploads.json +trans.fa_IR = public/language/fa-IR/uploads.json +trans.ja = public/language/ja/uploads.json +trans.nl = public/language/nl/uploads.json +trans.he = public/language/he/uploads.json +trans.ko = public/language/ko/uploads.json +trans.sc = public/language/sc/uploads.json + +[o:nodebb:p:nodebb:r:user] +file_filter = public/language//user.json +source_file = public/language/en-GB/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/user.json +trans.sr = public/language/sr/user.json +trans.lt = public/language/lt/user.json +trans.da = public/language/da/user.json +trans.it = public/language/it/user.json +trans.ru = public/language/ru/user.json +trans.sk = public/language/sk/user.json +trans.ar = public/language/ar/user.json +trans.fr = public/language/fr/user.json +trans.he = public/language/he/user.json +trans.id = public/language/id/user.json +trans.es = public/language/es/user.json +trans.cs = public/language/cs/user.json +trans.et = public/language/et/user.json +trans.pt_BR = public/language/pt-BR/user.json +trans.zh_CN = public/language/zh-CN/user.json +trans.zh_TW = public/language/zh-TW/user.json +trans.bn = public/language/bn/user.json +trans.de = public/language/de/user.json +trans.el = public/language/el/user.json +trans.en@pirate = public/language/en-x-pirate/user.json +trans.en_US = public/language/en-US/user.json +trans.fa_IR = public/language/fa-IR/user.json +trans.gl = public/language/gl/user.json +trans.pl = public/language/pl/user.json +trans.bg = public/language/bg/user.json +trans.sv = public/language/sv/user.json +trans.th = public/language/th/user.json +trans.tr = public/language/tr/user.json +trans.uk = public/language/uk/user.json +trans.vi = public/language/vi/user.json +trans.fi = public/language/fi/user.json +trans.ko = public/language/ko/user.json +trans.lv = public/language/lv/user.json +trans.pt_PT = public/language/pt-PT/user.json +trans.rw = public/language/rw/user.json +trans.sl = public/language/sl/user.json +trans.sq_AL = public/language/sq-AL/user.json +trans.hr = public/language/hr/user.json +trans.hy = public/language/hy/user.json +trans.ja = public/language/ja/user.json +trans.nb = public/language/nb/user.json +trans.nl = public/language/nl/user.json +trans.ro = public/language/ro/user.json +trans.sc = public/language/sc/user.json +trans.hu = public/language/hu/user.json + +[o:nodebb:p:nodebb:r:users] +file_filter = public/language//users.json +source_file = public/language/en-GB/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/users.json +trans.de = public/language/de/users.json +trans.en@pirate = public/language/en-x-pirate/users.json +trans.ru = public/language/ru/users.json +trans.sc = public/language/sc/users.json +trans.en_US = public/language/en-US/users.json +trans.bn = public/language/bn/users.json +trans.hy = public/language/hy/users.json +trans.ro = public/language/ro/users.json +trans.fi = public/language/fi/users.json +trans.it = public/language/it/users.json +trans.pl = public/language/pl/users.json +trans.sk = public/language/sk/users.json +trans.ar = public/language/ar/users.json +trans.bg = public/language/bg/users.json +trans.el = public/language/el/users.json +trans.fa_IR = public/language/fa-IR/users.json +trans.sq_AL = public/language/sq-AL/users.json +trans.cs = public/language/cs/users.json +trans.he = public/language/he/users.json +trans.ja = public/language/ja/users.json +trans.ko = public/language/ko/users.json +trans.nb = public/language/nb/users.json +trans.pt_PT = public/language/pt-PT/users.json +trans.sr = public/language/sr/users.json +trans.zh_CN = public/language/zh-CN/users.json +trans.da = public/language/da/users.json +trans.id = public/language/id/users.json +trans.lt = public/language/lt/users.json +trans.ms = public/language/ms/users.json +trans.nl = public/language/nl/users.json +trans.rw = public/language/rw/users.json +trans.sl = public/language/sl/users.json +trans.th = public/language/th/users.json +trans.es = public/language/es/users.json +trans.fr = public/language/fr/users.json +trans.gl = public/language/gl/users.json +trans.hr = public/language/hr/users.json +trans.uk = public/language/uk/users.json +trans.vi = public/language/vi/users.json +trans.sv = public/language/sv/users.json +trans.tr = public/language/tr/users.json +trans.et = public/language/et/users.json +trans.hu = public/language/hu/users.json +trans.lv = public/language/lv/users.json +trans.pt_BR = public/language/pt-BR/users.json + diff --git a/.stryker-tmp/sandbox4272740/CHANGELOG.md b/.stryker-tmp/sandbox4272740/CHANGELOG.md new file mode 100644 index 0000000000..b66481805a --- /dev/null +++ b/.stryker-tmp/sandbox4272740/CHANGELOG.md @@ -0,0 +1,11657 @@ +#### v3.8.3 (2024-06-27) + +##### Chores + +* up themes (b15a5894) +* up harmony (3eb69c58) +* up harmony (b98333f3) +* up dbsearch (8a42db6f) +* use nodebb fork of spider-detector (3a1b39c9) +* up 2factor (142de2ca) +* incrementing version number - v3.8.2 (72d91251) +* update changelog for v3.8.2 (3854a434) +* incrementing version number - v3.8.1 (527326f7) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12656, only send required meta/link tags on /api calls (64875b3f) +* show links in post queue (500e3342) +* show connetion count on /info (60b4bc66) +* make upload scores descending for ordering (3ec44d64) +* add isACP to config, closes #12623 (c51b772f) +* allow passing min,max to sortedSetsCardSum (70b4a0e2) +* add voters/upvoters v3 routes (1aaa6cbb) + +##### Bug Fixes + +* wront topic events showing up in topic (54b01395) +* dont show self in suggested topics (381bbb04) +* #12645, use titleRaw like reply button (3332480c) +* update follower/following counts after removing uid from zsets (6f6cfb1a) +* suggested topic tid (351ee71d) +* #12633, don't check post index (6e3b012b) +* recent chat pagination, closes #12637 (f7c9b7ae) +* info.tpl table (6f79d305) +* closes #12632, dont load data twice (66adfa29) +* don't error if file required too early (4430de8c) +* require of spider-detector (be86d8ef) +* return early for guests/spiders (8d56e097) +* dont show error alert when user user mouse overs votes (6bbe3d1c) +* dont load chat rooms for quests/spiders (ca4a7751) +* set uid in case its spider(-1), closes #12621 (9d74539a) +* dont add spiders to online_guests room (bcd4997d) +* dont autoconnect for spiders, closes #12620 (b6671d16) +* #12614 fix html markup for widget containers (56b5850a) + +##### Other Changes + +* remove unused winston (69ce3bf0) +* remove unused (adb0566f) +* fix semicolons (795a0daa) +* fix whitespace (b4db2f7f) + +##### Performance Improvements + +* cleanup sessions every 30 seconds (26feb2bb) +* change revokeSession to work with an array of sids (172bc249) +* dont make db call if posts is already loaded client side (461e95d8) +* if sigs disabled dont filter uids (73241bd5) +* cache isAdmin, isGlobalMod checks (fedfce7b) +* get rid of async call in user load for expiring bans (023d52a3) +* call getIconbackgrounds once (1dadd16f) +* get rid of more calls, fix other profile pages #12632 (5c6a853e) + +##### Refactors + +* sessionUUID (#12658) (d6c946cf) +* move delete call (65a91ea5) +* use array.some (85b329af) +* add placeholders on demand (8f486b1b) +* move getTopicData call to avoid db calls when its not in cache (252d0df7) +* remove exits check (74dd2844) +* move als requires, move autoLocale to api/page routes (3356022a) +* move requires down (8eccdb48) +* posts cache to get rid of require in functions (236ac323) +* closes #12629, allow passing arrays to meta.userOrGroupExists (bad15643) +* suggest topics, use strings for tids (8ded36f2) +* #12623, add filter:config.get.admin (2d86552b) +* add sanity checks to sio (e98f1848) + +##### Tests + +* dont track session for api/v3 (#12660) (61e5293a) +* move set (9108c900) +* spec (41f1cd69) +* spec (b148d0fc) +* fix path replace (9ecee782) +* update openapi spec (9af3a2da) +* fix tests (c2f63090) +* return empty array on db.exists([]); (1b283ccc) +* fix test only set for spiders (7c2a3a6e) +* fix post test (42230300) + +#### v3.8.2 (2024-05-29) + +##### Chores + +* up composer (83facb7d) +* up harmony (17ea61a0) +* incrementing version number - v3.8.1 (527326f7) +* update changelog for v3.8.1 (5ef3e0f3) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* show ignored/watched topics in topic list, closes #10974 (29dbe92d) +* convert "All Votes Are Public" toggle to vote visibility (e0515080) + +##### Bug Fixes + +* wrong var for ignored (7969e62d) +* reduce docker image size again and speed up build (56ef2bdd) +* update thumb count when removing thumbs (6214336c) + +##### Refactors + +* render (2c0f8c91) + +#### v3.8.1 (2024-05-15) + +##### Chores + +* incrementing version number - v3.8.0 (e228a6eb) +* update changelog for v3.8.0 (2ef2750d) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* wrong mention version (1d1f499b) + +##### Tests + +* use node 20 (a40f54aa) +* remove node 18 (6bd22e53) + +#### v3.8.0 (2024-05-15) + +##### Chores + +* **deps:** + * update redis docker tag to v7.2.4 (#12272) (7a8116a4) + * update actions/cache action to v4 (#12563) (88ff9f9d) + * update postgres docker tag to v16.3 (#12560) (339f6267) + * update dependency sass-embedded to v1.77.1 (#12565) (07160062) + * update postgres docker tag to v16.3 (#12555) (b8a52863) + * update dependency sass-embedded to v1.77.0 (#12548) (0fa11561) + * update coverallsapp/github-action action to v2.3.0 (#12554) (b4023ff9) + * update dependency sass-embedded to v1.76.0 (#12542) (7ee42724) + * update commitlint monorepo to v19.3.0 (#12526) (dad57e04) + * update commitlint monorepo to v19.2.2 (#12515) (97519ca4) + * update dependency smtp-server to v3.13.4 (#12516) (4c468b5c) + * update dependency sass-embedded to v1.75.0 (#12499) (a2229e71) + * update dependency sass-embedded to v1.74.1 (#12468) (97a649e3) + * update dependency mocha to v10.4.0 (#12445) (449c0fcd) + * update dependency @commitlint/cli to v19.2.1 (#12420) (dc19c840) + * update dependency @commitlint/cli to v19.2.0 (#12412) (41212e8f) + * update dependency sass-embedded to v1.72.0 (#12406) (6d62e592) + * update commitlint monorepo to v19.1.0 (#12403) (3d095a6b) +* up themes (1e3a321d) +* incrementing version number - v3.7.5 (6882894d) +* update changelog for v3.7.5 (febeede5) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* up harmony (80a1a0e0) +* up harmony (1a000eae) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.flags, nodebb.user (19f8a77c) + * fallback strings for new resources: nodebb.user (7ad477af) + * fallback strings for new resources: nodebb.admin-settings-navigation (18eec147) + * fallback strings for new resources: nodebb.admin-advanced-events (213db951) + * fallback strings for new resources: nodebb.admin-manage-users (43f52737) + +##### New Features + +* track uid for email/username changes, closes #12454 (325d00ea) +* closes #12477, allow editing moderation notes (af205cc4) +* parse moderation notes as markdown (7d24b04b) +* closes #12490, show profile flags on account info page (b429045f) +* closes #12491, add unban & unmute history (985663fa) +* new client-side hook to allow plugins to modify relogin url (c778f6eb) +* closes #12453, filter events by user/group (4030f18a) +* move all user profile pics to folder, closes #12449 (#12450) (8f9ac5c1) +* allow customizing uploads.upload socket methods (dc67f54e) +* allow custom fields in user csv export, closes #12401 (83ca23ca) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.33.2 (#12572) (19602dcd) + * update dependency esbuild to v0.21.2 (#12569) (dc4f32af) + * update dependency rimraf to v5.0.7 (#12568) (035ced85) + * update dependency sass to v1.77.1 (#12566) (7a64410a) + * update dependency rimraf to v5.0.6 (#12562) (185d61fc) + * update dependency validator to v13.12.0 (#12556) (7a009445) + * update dependency sass to v1.77.0 (#12550) (d3840280) + * update dependency mongodb to v6.6.1 (#12547) (751a143e) + * update dependency esbuild to v0.21.1 (#12549) (ed07cfcc) + * update dependency semver to v7.6.2 (#12552) (5264deca) + * update dependency mongodb to v6.6.0 (#12544) (4813772c) + * update dependency nodebb-plugin-composer-default to v10.2.35 (#12546) (8fcfb181) + * update dependency sass to v1.76.0 (#12541) (8f60603b) + * update dependency tough-cookie to v4.1.4 (#12540) (ad708c9f) + * update dependency lru-cache to v10.2.2 (#12532) (c036786c) + * update dependency jquery-ui to v1.13.3 (#12534) (3f62b892) + * update dependency nodebb-widget-essentials to v7.0.16 (#12535) (d5bfe32e) + * update dependency nodebb-plugin-composer-default to v10.2.34 (#12530) (bc51968e) + * update dependency ace-builds to v1.33.1 (#12527) (18a843bc) + * update fontsource monorepo (#12523) (bde9136b) + * update dependency ipaddr.js to v2.2.0 (#12522) (d6d0ebd5) + * update dependency cropperjs to v1.6.2 (#12524) (5e7ec5b6) + * update dependency ioredis to v5.4.1 (#12520) (66a35490) + * update dependency ioredis to v5.4.0 (#12519) (da0888e6) + * update dependency nodebb-plugin-spam-be-gone to v2.2.2 (#12518) (5b4471bf) + * update dependency nodebb-plugin-emoji to v5.1.15 (#12517) (20f8ba78) + * update dependency nodebb-theme-harmony to v1.2.49 (#12497) (c4cb9d36) + * update dependency nodebb-plugin-mentions to v4.5.2 (#12470) (37bdf753) + * update dependency ace-builds to v1.33.0 (#12501) (83a932e6) + * update dependency sass to v1.75.0 (#12500) (f5c3d4e1) + * update dependency nodebb-theme-harmony to v1.2.47 (#12487) (2bcd5239) + * update dependency cron to v3.1.7 (#12484) (6237d5fe) + * update dependency workerpool to v9.1.1 (#12475) (b6193629) + * update dependency nodebb-theme-persona to v13.3.13 (#12479) (01b3a06a) + * update dependency nodebb-theme-harmony to v1.2.46 (#12478) (499514a8) + * update dependency nodebb-theme-persona to v13.3.12 (#12467) (0f209fa4) + * update dependency nodebb-theme-harmony to v1.2.45 (#12466) (1fef883b) + * update dependency sass to v1.74.1 (#12469) (8f771b6f) + * update dependency pg-cursor to v2.10.5 (#12462) (dde7a498) + * update dependency pg to v8.11.5 (#12461) (623ccc53) + * update dependency @fortawesome/fontawesome-free to v6.5.2 (#12460) (1953277b) + * update dependency nodebb-plugin-mentions to v4.4.3 (#12463) (d24c4148) + * update dependency pg to v8.11.4 (#12455) (a7d9811e) + * update dependency @fontsource/poppins to v5.0.13 (#12457) (5c214930) + * update dependency pg-cursor to v2.10.4 (#12456) (af10aaaa) + * update dependency ace-builds to v1.32.9 (#12451) (deacf366) + * update dependency express to v4.19.2 (#12441) (263ca1ca) + * update dependency winston to v3.13.0 (#12440) (08be8f3c) + * update dependency webpack to v5.91.0 (#12426) (ca82d020) + * update dependency ace-builds to v1.32.8 (#12439) (23f46345) + * update dependency sanitize-html to v2.13.0 (#12427) (2550f26f) + * update dependency postcss to v8.4.38 (#12429) (ace6f12f) + * update dependency express to v4.19.1 (#12425) (a27b999f) + * update dependency autoprefixer to v10.4.19 (#12428) (fa57b81f) + * update dependency nodebb-theme-lavender to v7.1.8 (15c7691c) + * update dependency nodebb-plugin-mentions to v4.4.2 (#12410) (a8b631dd) + * update dependency postcss to v8.4.37 (#12417) (9c91f093) + * update dependency nodemailer to v6.9.13 (#12424) (c7a506a8) + * update dependency nodebb-plugin-ntfy to v1.7.4 (#12414) (4e119783) + * update dependency esbuild to v0.20.2 (#12411) (93fb1e0f) + * update socket.io packages to v4.7.5 (#12409) (6a730312) + * update dependency @socket.io/redis-adapter to v8.3.0 (#12405) (05219412) + * update dependency sass to v1.72.0 (#12407) (89684786) + * update dependency mongodb to v6.5.0 (#12402) (b163264e) + * update dependency archiver to v7.0.1 (#12400) (817a5468) + * update dependency nodemailer to v6.9.12 (#12398) (27d5aaa5) + * update dependency nodebb-theme-harmony to v1.2.38 (#12397) (b9a1fc3f) + * update fontsource monorepo (#12390) (8d6ef3d5) + * update dependency nodebb-plugin-mentions to v4.4.1 (#12393) (4d18c38b) + * update dependency winston to v3.12.0 (#12391) (98ff47ec) +* chat message search, closes #12571 (49a510e9) +* chat message search, closes #12571 (d926d9dd) +* some issues with "small" docker improvements (#12564) (bc807c46) +* use reference object for post summary v3 api call (2a58d099) +* unintentional object pollution by buildForSelectCategories (88a5dfb7) +* getCategoryById to return shallow clone of object (dc35bf8b) +* #12533, go to post after changing owner (983a35e6) +* topic selection in merge (f2892385) +* closes #12474, fix search dropdown on mobile for merge (ce03680f) +* #12481, remove priv groups from groupslug:groupname mapping (#12482) (7033d11e) +* bump 2factor (4d2c95ca) +* date on upgrade script (73f98568) +* use CategoryObject in admins-mods schema def (4da1e9c4) +* missing uid for modify event, closes #12394 (7c37f32d) +* **docker:** support all previously used env variables correctly (#12567) (995b2de5) + +##### Refactors + +* add missing form-label class (36016ee1) +* use groupslug:groupname for search and acp page (ee5c021c) + +##### Tests + +* fix schema (5eb8c90b) +* fix redis tests (57422420) +* fix moderation note test (fed5165f) +* add back timestamp (c73f759c) + +#### v3.7.5 (2024-05-03) + +##### Chores + +* incrementing version number - v3.7.4 (6678744c) +* update changelog for v3.7.4 (8a1b281b) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12543, use PATCH (420c8999) + +#### v3.7.4 (2024-04-17) + +##### Chores + +* up harmony (18990795) +* up harmony (c2465a16) +* up themes (ba86740a) +* up themes (5d8a5571) +* incrementing version number - v3.7.3 (2d62b6f6) +* update changelog for v3.7.3 (8d450eea) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12495, add unblock button to users on /blocks (afe597a2) + +##### Bug Fixes + +* zipObject (110ce66a) +* index should be cid (8410cec7) +* uniqCids (de0176ef) +* if votes are not public, dont show upvoter names in tooltip (5af69dbc) +* add canView check to /api/v3/users/:uid (5bee324c) +* is user doesnt have view:users privilege (14f5774f) +* copy dropdown closing on copy ip/text/link (48281f96) +* align teaser avatar (5fcd1a8a) +* if you have chat:privileged the chat icons should show up (ca07e517) +* #12485, resolve flags on a topics posts on topic delete (d7256796) +* #12471, remove readable strings (0b1f2546) + +##### Refactors + +* add new hooks for notifications/websockets (d2e042d1) +* move parseInt to filter (52e71522) +* better label for show to groups (cfd29db0) + +##### Tests + +* update spec (6816e39b) +* fix tests and use action (acab46e6) + +#### v3.7.3 (2024-04-03) + +##### Chores + +* up ntfy (0058ca68) +* incrementing version number - v3.7.2 (cc257e7e) +* update changelog for v3.7.2 (277e1787) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change digest to use posts sorting first (3aae9234) +* #12452, fix admin/mod image change (c206ccdd) + +#### v3.7.2 (2024-03-27) + +##### Chores + +* up harmony (0171e73a) +* up harmony (c6915398) +* incrementing version number - v3.7.1 (712365a5) +* update changelog for v3.7.1 (07640389) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add hook to modify sorting options/fields (168419cf) +* add playsinline video attribute (#12419) (5924a6eb) + +##### Bug Fixes + +* #12446, fix groups.ownership.rescind (ed41e416) +* #12415, fix notification escaping for queued posts (4787d013) + +##### Refactors + +* remove log (3b2d8551) + +##### Tests + +* add test for #12446 (bf4e257c) + +#### v3.7.1 (2024-03-14) + +##### Chores + +* up harmony (1b24b337) +* up harmony (b6c3a9d2) +* up harmony (f107a7ff) +* incrementing version number - v3.7.0 (9a6153d7) +* update changelog for v3.7.0 (f1f81b17) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* allow setting max-old-space-size in config (d1ce594c) + +##### Bug Fixes + +* #12408, fix mem leak due to mongodb 6.4.0 (285293c4) +* tids:create on topic post (3b48695b) + +#### v3.7.0 (2024-03-06) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-post, nodebb.topic (0bd0a740) + * fallback strings for new resources: nodebb.themes-harmony (8fb0ed82) + * fallback strings for new resources: nodebb.aria (a55fb29e) + * fallback strings for new resources: nodebb.aria (e6a358ed) + * fallback strings for new resources: nodebb.user (c88811a9) + * fallback strings for new resources: nodebb.topic (7e862a78) + * fallback strings for new resources: nodebb.topic, nodebb.unread (53ea10a7) + * fallback strings for new resources: nodebb.global (73e7d467) + * fallback strings for new resources: nodebb.topic (72f1e515) + * fallback strings for new resources: nodebb.global (642cd8e2) + * fallback strings for new resources: nodebb.global, nodebb.user (a998136c) + * fallback strings for new resources: nodebb.tags (4d35cb4e) + * fallback strings for new resources: nodebb.global, nodebb.themes-harmony (0bc9ac74) + * fallback strings for new resources: nodebb.global, nodebb.topic (a2819e9e) + * fallback strings for new resources: nodebb.error (9d5702f8) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (1230d22d) + * fallback strings for new resources: nodebb.admin-dashboard (f3974c0b) + * fallback strings for new resources: nodebb.search (43bf1f9b) +* up harmony (25ef62dc) +* up peace (3aaa0727) +* up peace (65f3c734) +* incrementing version number - v3.6.7 (86a17e38) +* update changelog for v3.6.7 (caf8722f) +* up harmony (22cd80b9) +* up themes (96fc20a3) +* up themes (421c7fc5) +* closes #12355 (fadee8d7) +* up themes (9ee864ce) +* up composer (8324adc5) +* up composer (0ff7adb4) +* incrementing version number - v3.6.6 (6604bf37) +* up themes (43a02c89) +* up themes (69342342) +* up harmony (9bbaef84) +* up harmony (35e98a9f) +* up harmony (22398d47) +* up themes (5cbb8bb1) +* up harmony (3f3f0d66) +* up harmony (4f42172d) +* up harmony (c0db10af) +* up harmony (0743cb3c) +* incrementing version number - v3.6.5 (6c653625) +* up harmony (09414efa) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* up harmony (bbdefad3) +* incrementing version number - v3.6.2 (0f577a57) +* up themes (79ebbee5) +* incrementing version number - v3.6.1 (f1a69468) +* up composer (c31e321b) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update commitlint monorepo to v19 (#12369) (516c8d04) + * update dependency smtp-server to v3.13.3 (#12378) (0ab1982c) + * update dependency eslint to v8.57.0 (#12362) (6c33c01d) + * update dependency sass-embedded to v1.71.1 (#12350) (99ad9d38) + * update dependency sass-embedded to v1.71.0 (#12344) (920f787f) + * update postgres docker tag to v16.2 (#12338) (254bad89) + * update commitlint monorepo to v18.6.1 (#12339) (92ef8548) + * update dependency mocha to v10.3.0 (#12334) (9cd299db) + * update dependency smtp-server to v3.13.2 (#12324) (048e664c) + * update dependency lint-staged to v15.2.2 (#12327) (a7008fb3) + * update dependency lint-staged to v15.2.1 (#12319) (264e71d2) + * update commitlint monorepo to v18.6.0 (#12305) (7e7bbfa4) + * update dependency jsdom to v24 (#12294) (45f02ff0) + * update commitlint monorepo to v18.5.0 (#12296) (5a776f9f) + * update dependency sass-embedded to v1.70.0 (#12286) (0063dd45) + * update dependency jsdom to v23.2.0 (#12269) (7cc69df0) + * update dependency jsdom to v23.1.0 (#12265) (12aeb6f7) + * update commitlint monorepo to v18.4.4 (#12261) (b25dfd47) + * update dependency sass-embedded to v1.69.7 (#12257) (ce78cb0e) + * update dependency sass-embedded to v1.69.6 (#12249) (1777ec4b) + +##### New Features + +* add new sorting option to categories (2a9b0a3c) +* add chat widget areas, closes #12375 (53b3c5d6) +* add hook into user.posts.isReady (7207814b) +* refactor group title editing (112493fa) +* cli command for maintenance mode closes #12293 (80960296) +* fallbacks for aria.json (19bc442b) +* add new lang keys for a11y (3ce89d1e) +* add missing aria/role attributes to dropdown elements (7917fd82) +* add lang keys for hidden labels (e298fb6b) +* show unread categories based on unread topics (#12317) (45cfb369) +* limit post/user flags per day closes #12274 (2b1fdc56) +* search in bookmarks on search page (5213e22a) +* #12247 (c5730b36) + +##### Bug Fixes + +* #12389, update privilege group check (87a79059) +* dupe id (f4b63790) +* #12357, properly update lists and counters (f34ebcc9) +* use lang key for user avatar label (863f5d0a) +* spec (4bcbf759) +* move winston logging for plugin hook firing to debug level (e240d0f9) +* closes #12326 (9302d9b4) +* some layout fixes for group details page (301eee17) +* bookmark in topic data is nullable now (d500ebb1) +* bug where body wasn't properly sent on ap-style content-types (4b87c30f) +* dont send topic notification to poster (c2239e48) +* **deps:** + * update dependency nodebb-theme-harmony to v1.2.36 (#12392) (db2f7c03) + * update dependency nodebb-theme-peace to v2.2.4 (#12381) (073a79eb) + * update dependency mongodb to v6.4.0 (#12382) (716482b2) + * update dependency nodebb-plugin-mentions to v4.4.0 (#12385) (6f04859e) + * update dependency ace-builds to v1.32.7 (#12386) (9eb54394) + * update dependency autoprefixer to v10.4.18 (#12387) (339e2cfa) + * update dependency nodebb-theme-harmony to v1.2.35 (#12388) (7b1b4510) + * update dependency nodebb-theme-harmony to v1.2.34 (#12383) (430c6b6c) + * update dependency nodemailer to v6.9.11 (#12380) (aa6859df) + * update dependency express to v4.18.3 (#12379) (2c3540b2) + * update dependency nodebb-plugin-markdown to v12.2.6 (#12371) (fb98dc05) + * update dependency archiver to v7 (#12374) (9de0ab31) + * update dependency chart.js to v4.4.2 (#12376) (131d2fe7) + * update dependency bootswatch to v5.3.3 (#12373) (1ed4d763) + * update dependency fetch-cookie to v3.0.1 (#12363) (835820a0) + * update dependency sanitize-html to v2.12.1 (#12360) (00bcf935) + * update dependency spdx-license-list to v6.9.0 (#12354) (b58dde1c) + * update dependency sass to v1.71.1 (#12351) (3094996b) + * update dependency sanitize-html to v2.12.0 (#12353) (ee90866a) + * update dependency nodemailer to v6.9.10 (#12356) (80ea6eb9) + * update dependency bootstrap to v5.3.3 (#12348) (4007882b) + * update dependency sass to v1.71.0 (#12345) (faf5a9c8) + * update dependency esbuild to v0.20.1 (#12346) (a0021b1d) + * update dependency webpack to v5.90.3 (#12347) (748bbab0) + * update dependency nodebb-plugin-spam-be-gone to v2.2.1 (#12343) (acad7317) + * update dependency webpack to v5.90.2 (#12341) (cb6fe9c7) + * update dependency nodebb-theme-harmony to v1.2.25 (#12340) (99474a7e) + * update dependency commander to v12 (#12325) (b61486eb) + * update dependency diff to v5.2.0 (#12337) (d0f6f0cc) + * update dependency postcss to v8.4.35 (#12333) (3bc506f6) + * update dependency ace-builds to v1.32.6 (#12332) (523f7ace) + * update dependency postcss to v8.4.34 (#12330) (9d036be3) + * update dependency semver to v7.6.0 (#12328) (3af04956) + * update dependency fetch-cookie to v2.2.0 (#12323) (b56d6a88) + * update dependency nodebb-theme-harmony to v1.2.12 (#12318) (65fead81) + * update dependency webpack to v5.90.1 (#12322) (98b455ce) + * update dependency nodemailer to v6.9.9 (#12321) (3f74cca3) + * update dependency ace-builds to v1.32.5 (#12316) (ef06be6d) + * update dependency nodebb-theme-harmony to v1.2.10 (#12314) (d648972c) + * update dependency ace-builds to v1.32.4 (#12313) (9fb7c163) + * update dependency express-session to v1.18.0 (#12311) (6444eeb9) + * update dependency esbuild to v0.20.0 (#12309) (aa1344fc) + * update dependency nodebb-theme-harmony to v1.2.8 (#12310) (fd20e3a5) + * update dependency nodebb-theme-harmony to v1.2.7 (#12307) (eabbf195) + * update dependency lru-cache to v10.2.0 (#12306) (400a1aa3) + * update dependency webpack to v5.90.0 (#12303) (44a798bc) + * update dependency esbuild to v0.19.12 (#12302) (72bb81f0) + * update dependency connect-redis to v7.1.1 (#12298) (575f072a) + * update dependency nodebb-theme-harmony to v1.2.6 (#12300) (e1adf5b3) + * update dependency nodebb-widget-essentials to v7.0.15 (#12295) (876fa4a7) + * update dependency nodebb-theme-persona to v13.3.3 (#12290) (f8893cd8) + * update dependency nodebb-theme-harmony to v1.2.4 (#12292) (e33e9dea) + * update dependency autoprefixer to v10.4.17 (#12285) (9e11b927) + * update dependency workerpool to v9.1.0 (#12288) (7a24961d) + * update dependency sass to v1.70.0 (#12287) (a1cdec08) + * update dependency sortablejs to v1.15.2 (#12283) (cc93caff) + * update dependency nodebb-theme-persona to v13.3.2 (#12284) (91ce17c7) + * update dependency nodebb-theme-harmony to v1.2.3 (#12280) (34a8069b) + * update dependency nodebb-theme-persona to v13.3.1 (#12281) (fe0845b9) + * update dependency nodebb-theme-harmony to v1.2.2 (#12279) (fc78b00c) + * update socket.io packages to v4.7.4 (#12278) (16598f7f) + * update dependency postcss to v8.4.33 (#12264) (3a32fc8f) + * update dependency nodebb-theme-harmony to v1.1.108 (#12263) (4924d170) + * update socket.io packages to v4.7.3 (#12259) (eb7a3091) + * update dependency sass to v1.69.7 (#12258) (d5dc4655) + * update dependency nodemailer to v6.9.8 (#12254) (1953a635) + * update dependency esbuild to v0.19.11 (#12253) (c8007bf6) + * update dependency ace-builds to v1.32.3 (#12252) (c40b2322) + * update dependency sass to v1.69.6 (#12250) (f8a0cb9e) + * update dependency terser-webpack-plugin to v5.3.10 (#12248) (9101caff) + * update dependency workerpool to v9.0.4 (#12244) (8165f454) + * update dependency workerpool to v9.0.3 (#12238) (3e08ef81) + * update dependency esbuild to v0.19.10 (#12237) (6ef8e767) + +##### Other Changes + +* fix (f5586968) + +##### Refactors + +* move tomap inside (5e89dfad) +* shorter tag translation (a9e8c184) +* search stats (82f6721d) + +##### Tests + +* fix test (c8a5e24a) +* update test (5afc735b) + +#### v3.6.7 (2024-02-28) + +##### Chores + +* incrementing version number - v3.6.6 (6604bf37) +* update changelog for v3.6.6 (debaa2b9) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12372, fix manual digest buttons (107f5613) +* closes #12365, staticHooks with callbacks (00e29403) +* #12359, fix api call (c61b3bbd) +* closes #12358, only load pending/invited for owners (3960d370) +* retry setAdd on e11000 error (4a405ce0) + +##### Tests + +* better test for #12352 (4e51bf81) + +#### v3.6.6 (2024-02-14) + +##### Chores + +* incrementing version number - v3.6.5 (6c653625) +* update changelog for v3.6.5 (04039f76) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12329, fix default value of categoryWatchState (88e9fa37) + +##### Tests + +* fix spec (5fec8b23) + +#### v3.6.5 (2024-01-31) + +##### Chores + +* incrementing version number - v3.6.4 (83d131b4) +* update changelog for v3.6.4 (6e6c3974) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12320, .text() gets \n\t characters (67c8bd99) + +#### v3.6.4 (2024-01-24) + +##### Chores + +* incrementing version number - v3.6.3 (fc7d2bfd) +* update changelog for v3.6.3 (92ffc57c) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add success hook to quick reply (cb21f28b) + +##### Bug Fixes + +* if there is no bookmarkThreshold dont init unread indicator (cf40d681) +* remove leftover code from 2.x, closes #12301 (d5f445f1) +* copy single line code blocks, closes #12297 (06269cdf) +* validate plugin id in toggleActive (76f3efff) + +##### Tests + +* add plugin id tests (e8befbcc) + +#### v3.6.3 (2024-01-12) + +##### Chores + +* incrementing version number - v3.6.2 (0f577a57) +* update changelog for v3.6.2 (82a936c3) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12275, pin sharp to 0.32.6 (f3927ce7) +* topic event translations closes #12273 (5f91cc83) + +#### v3.6.2 (2024-01-10) + +##### Chores + +* up composer (ef8f8db7) +* up harmony (2bed405c) +* up harmony (b6dbe1a6) +* up lavender (16f0affa) +* up themes (980bfee8) +* incrementing version number - v3.6.1 (f1a69468) +* update changelog for v3.6.1 (1e4abdbf) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12247 (0af19afd) + +##### Bug Fixes + +* recent loading (d3d6d77d) +* closes #12246, direction is passed in as string as query param with new api call (8867f243) +* stricter selector for sort (a74b5141) + +##### Performance Improvements + +* dont load all followed tids on unread/recent?filter=watched (563e03b6) + +#### v3.6.1 (2023-12-22) + +##### Chores + +* incrementing version number - v3.6.0 (4cdf85f8) +* update changelog for v3.6.0 (eb92cee6) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12243, don' set process.env.config if it doesnt exist (788404c1) +* lang key for move notification closes #12241 (48a2b5f7) +* dont send topic notification to poster (e72b26f5) + +#### v3.6.0 (2023-12-20) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.error (d3cfa1b7) + * fallback strings for new resources: nodebb.post-queue (64fe1278) + * fallback strings for new resources: nodebb.post-queue (f98205c1) + * fallback strings for new resources: nodebb.social (081352b6) + * fallback strings for new resources: nodebb.modules (4fe84ae8) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.admin-settings-post, nodebb.admin-settings-user (94777927) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.category, nodebb.notifications (29b3a403) + * fallback strings for new resources: nodebb.error (7d8f700f) + * fallback strings for new resources: nodebb.modules (83931138) +* make error:email-taken slightly more descriptive (dd0743d3) +* up harmony (250cc771) +* up harmony (9324a75c) +* incrementing version number - v3.5.3 (ed0e8783) +* update changelog for v3.5.3 (e49ddaf8) +* up harmony (dbbf3a2c) +* up harmony (e4656bd4) +* incrementing version number - v3.5.2 (52fbb2da) +* up themes (0ec9d4c3) +* added missing deprecation warning for .getTopics (9079ad0b) +* update note at top of file (2de534fa) +* up dbsearch (b6981693) +* up themes (9a1f8e9b) +* incrementing version number - v3.5.1 (4c543488) +* up themes (ed10dda2) +* up composer (22d7e92f) +* up themes (fcdd3737) +* v4 note for deprecations (f4c36b84) +* minor re-order of routes/controllers in admin api v3 router/controller (181a9399) +* add in note at top of files ready for deletion in v4 (54a08087) +* up harmony (1b8dcbc2) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update dependency eslint-plugin-import to v2.29.1 (#12229) (055b7597) + * update dependency eslint to v8.56.0 (#12231) (a7dd0f92) + * update dependency eslint to v8.55.0 (#12203) (32a403b2) + * update dependency lint-staged to v15.2.0 (#12210) (9763e97f) + * update dependency jsdom to v23.0.1 (#12196) (a50b141f) + * update dependency jsdom to v23 (#12186) (8c0472a0) + * update commitlint monorepo to v18.4.3 (#12177) (fd5d7b65) + * update dependency eslint to v8.54.0 (#12172) (b6275453) + * update commitlint monorepo to v18.4.2 (#12169) (d6a92d4c) + * update postgres docker tag to v16.1 (#12167) (616ff573) + * update mongo docker tag to v7 (#12166) (5f8a4f3a) + * update redis docker tag to v7.2.3 (#12165) (c41f9a75) + * update dependency lint-staged to v15.1.0 (#12161) (1796ed2b) + * update dependency @commitlint/cli to v18.4.1 (#12162) (be3d3393) + * update commitlint monorepo to v18.4.0 (#12159) (128c24f2) + * update dependency eslint to v8.53.0 (#12151) (d1a7ba35) + * update redis docker tag to v7.2.3 (#12152) (2eff6912) + * update commitlint monorepo to v18 (#12105) (97016f47) + * update dependency sass-embedded to v1.69.5 (#12127) (9e8a2116) +* **socket.io:** deprecate categories.(isModerator|ignore|watch|getSelectCategories|getMoveCategories|getCategoriesByPrivilege) (f1dbfaa2) + +##### Documentation Changes + +* fix improper verbiage in category watch schema (f8cc8548) +* openapi schema for api.search.categories (4ffe0417) +* **socket.io:** + * openapi schema for remaining added routes (5399e86a) + * added schema for new routes (f279bca0) + +##### New Features + +* add 500 page for missing tpls, closes #12230 (06221a0d) +* remove gif exif stripping exception (f8219aa6) +* update groups.leave to allow global mods to kick users out of groups (2c6024e0) +* better layout for manage chat room modal (f4faa0b7) +* update Messaging.toggleOwner to optionally take a third `state` argument (932bd292) +* new language strings for post-queue page (5d03321e) +* add some new social share buttons (ace171a6) +* docker improvements (#12031) (7f3a9968) +* closes #12158, add sortable rewards (5ea7dec9) +* add copy text (4b2491be) +* closes #12154, add exempt groups (fdff165e) +* update moved keys (119c3362) +* move new user restrrictions (3d505c5c) +* add tracking categories and make watching send notifications (#12147) (84fed97b) +* add new lang string for minutes (d8d26c9f) +* add direct message link (#12138) (4c4f3ac9) +* closes #5584, setup winston to output to file (87a859aa) +* batch.processSortedSet min/max (#12129) (6c7e6144) + +##### Bug Fixes + +* fix display post history (dc975838) +* update isJSON test in request lib (506d7be5) +* 503 rendering on ajaxify (f7e0fd0b) +* #12227, fix crash in redirect (2dc1def5) +* deprecated emailer hook (565ca3cc) +* extract all pages when stripping metadata (0b3eb6c0) +* incorrect call to load additional group members (78835ebb) +* closes #12185, fix cli user password reset (b9050139) +* don't require login for listing categories (50a90f8e) +* #12183, remove ensureLoggedIn middleware (0a4f3c8a) +* remove unused requires (b5940a5d) +* remove lodash require (f9c471a0) +* #12171, bump harmony (89a1134c) +* update design of post-queue (41bdc9e8) +* update post-queue template for #12171 (63ba4986) +* language key (4c7c46f3) +* another missing state (f4bbc5bd) +* add missing tracking (3b91e8e2) +* bump harmony (a5e3754b) +* #12133 dropdown menus on mobile stay open during ajaxify (4601a6f7) +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (b4297cd8) +* #12141, use apiv3 for category search module (cefd4061) +* made parentCid optional in api.search.categories (581516c8) +* don't count internal links towards link count when restricting new users from posting links (022fa0e7) +* closes #12126, fix language keys (075cd598) +* param (e5a60dc8) +* handle public chat rooms too (6a696c43) +* suppress chat message notifications for users who are known to be in the chat room (uid is present in the corresponding socket.io room) (18c27d1a) +* **deps:** + * update dependency workerpool to v9 (#12234) (2cccbcf6) + * update dependency sharp to v0.33.1 (#12233) (45143000) + * update dependency csrf-sync to v4.0.3 (#12232) (9e2a6f86) + * update dependency ace-builds to v1.32.2 (#12228) (b6ca117a) + * update dependency ace-builds to v1.32.1 (#12226) (6036d144) + * update dependency esbuild to v0.19.9 (#12224) (d96d4d09) + * update dependency @fontsource/inter to v5.0.16 (#12219) (e32eb8b3) + * update dependency chart.js to v4.4.1 (#12217) (b6b569c0) + * update dependency nodebb-theme-persona to v13.2.49 (#12218) (6dab99fd) + * update dependency postcss to v8.4.32 (#12204) (da879704) + * update dependency @fortawesome/fontawesome-free to v6.5.1 (#12198) (b41c7f2a) + * update dependency nodebb-theme-harmony to v1.1.101 (#12199) (72d6a4b1) + * update dependency sortablejs to v1.15.1 (#12200) (cd625705) + * update dependency ace-builds to v1.32.0 (#12197) (75f063ba) + * update dependency @fortawesome/fontawesome-free to v6.5.0 (#12193) (a94f4a48) + * update dependency sharp to v0.33.0 (#12194) (1f287c74) + * update dependency fs-extra to v11.2.0 (#12191) (4eaf2320) + * update dependency passport to v0.7.0 (#12190) (bbf7c5e1) + * update dependency esbuild to v0.19.8 (#12187) (bc59856e) + * update dependency lru-cache to v10.1.0 (#12181) (22932bdb) + * update dependency esbuild to v0.19.7 (#12176) (00cb5839) + * update dependency lru-cache to v10.0.3 (#12175) (c404ef73) + * update dependency ace-builds to v1.31.2 (#12168) (b4a41af9) + * update dependency mongodb to v6.3.0 (#12170) (85936a59) + * update dependency lru-cache to v10.0.2 (#12160) (9d18d3c7) + * update dependency helmet to v7.1.0 (#12155) (50aa1a7c) + * update dependency async to v3.2.5 (#12150) (0e9eafa1) + * update dependency nodebb-theme-persona to v13.2.44 (#12149) (b489af06) + * update dependency nodebb-theme-harmony to v1.1.95 (#12148) (77b0baea) + * update dependency connect-pg-simple to v9.0.1 (#12144) (4e23d0d1) + * update dependency nodebb-theme-persona to v13.2.43 (#12140) (91e45fa2) + * update dependency nodebb-theme-harmony to v1.1.92 (#12131) (a3452c8f) + * update dependency nodebb-theme-peace to v2.1.24 (#12139) (29a59b90) + * update dependency spdx-license-list to v6.8.0 (2337d641) + * update dependency nodebb-plugin-composer-default to v10.2.25 (#12136) (cdb40719) + * update dependency cron to v3.1.6 (#12132) (2fb3af3c) + * update dependency ace-builds to v1.31.1 (#12135) (6b28f1dc) + * update dependency workerpool to v8 (#12121) (9bed7646) + * update dependency sass to v1.69.5 (#12128) (b351c00a) +* **socket.io:** update getPosts controller to return object containing posts instead of straight array (54000aab) + +##### Other Changes + +* **socket.io:** deprecate socketGroups.getChatGroups in favour of api.admin.listGroups (dc4cc74f) + +##### Refactors + +* line breaks good (4e560ade) +* replace deprecated call with api call (f91b823e) +* move async call to parallel (dabc282d) +* **socket.io:** + * deprecate SocketModules.chats.typing in favour of api.chats.toggleTyping (c1e6be77) + * deprecate SocketModules.chats.loadPinnedMessages in favour of api.chats.getPinnedMessages" (401e8636) + * deprecate SocketModules.chats.searchMessages in favour of api.search.roomMessages (f9dc3502) + * deprecate SocketModules.chats.setNotificationSetting in favour of api.chats.watch (75c8cda1) + * deprecated SocketModules.chats.toggleOwner in favour of api.chats.toggleOwner (b13c6ee4) + * deprecated SocketModules.chats.searchMembers in favour of api.search.roomUsers (6e952263) + * deprecate SocketModules.sortPublicRooms in favour of api.chats.sortPublicRooms (62b7dfd4) + * deprecate SocketModules.chat.getUnreadCount in favour of api.chats.getUnread (5eaffb42) + * deprecate SocketModules.chats.getIP in favour of api.chats.getIpAddress (214989a8) + * deprecate SocketModules.chats.hasPrivateChat in favour of api.users.getPrivateRoomId (0d3c94e6) + * deprecate SocketModules.chats.canMessage and .markAllRead with no alternative. deprecate .getRecentChats in favour of api.chats.list (a4133500) + * deprecate SocketModules.chats.isDnD in favour of api.users.getStatus (eebea4df) + * deprecate SocketModules.chats.getRaw in favour of api.chats.getRawMessage (c4b4e79b) + * deprecate socketGroups.loadMoreMembers in favour of api.groups.listMembers (807d778c) + * deprecate socketGroups.searchMembers in favour of api.groups.listMembers (d2f3333a) + * deprecate socketGroups.loadMore in favour of api.groups.list (b61e8147) + * deprecate categories.categorySearch in favour of api.search.categories (00de9d5b) + * deprecate categories.loadMore in favour of api.categories.getTopics (1ce4ca54) + * deprecate categories.loadMoreSubCategories in favour of api.categories.getChildren (010727f5) + * deprecate categories.setWatchState in favour of api.categories.setWatchState (d7c6b3d6) + * deprecate categories.getTopicCount in favour of api.categories.getTopicCount (c442b6e6) + * deprecate categories.get in favour of api.categories.list (96046373) + * deprecate categories.getRecentReplies in favour of api.categories.getPosts (52b78e83) + +##### Tests + +* migrate socket modules tests to v3 api (445b70de) +* migrate socket.io groups tests to use api v3 (2c1c4dfe) + +#### v3.5.3 (2023-12-13) + +##### Chores + +* up composer (245e5df3) +* up composer default (c1f82b78) +* incrementing version number - v3.5.2 (52fbb2da) +* update changelog for v3.5.2 (e2e85053) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change translator escape (c434262e) + +##### Other Changes + +* add types for database abstration layer (#10762) (17cd19c7) + +#### v3.5.2 (2023-11-29) + +##### Chores + +* up composer (49013f81) +* incrementing version number - v3.5.1 (4c543488) +* update changelog for v3.5.1 (48f7ae99) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12185, fix cli user password reset (6790000d) +* thumb width (a9ef58a5) + +#### v3.5.1 (2023-11-14) + +##### Chores + +* up mentions (b1b3dcb6) +* incrementing version number - v3.5.0 (d06fb4f0) +* update changelog for v3.5.0 (5d7c10f1) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12123, allow setting hh:mm for pin expiry (1f800747) + +##### Bug Fixes + +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (dcb0c4db) +* closes #12156, missing data for privilege tables (21e59538) +* thumb width (46f6f9ef) +* closes #12126, fix language keys (668a355a) + +#### v3.5.0 (2023-10-25) + +##### Chores + +* up persona (8428cc8d) +* up harmony (bd9eebd7) +* up harmony (574f95f5) +* up harmony (2c996606) +* up harmony (f619696b) +* up harmony (0d2e0752) +* up persona (75170693) +* up themes (36fe90dd) +* up themes (4d6a6ff5) +* up rewards (35d9a78d) +* up harmony (e09b0332) +* up harmony (ad72f653) +* up persona (215ac672) +* up harmony (560403a9) +* up harmony (a5a33db7) +* up harmony (732af96f) +* up harmony (2af856d8) +* up harmony (05a9dd4e) +* up harmony (15a0a196) +* up deps for lang key change (96c9ccc4) +* up harmony (cddfdae0) +* up harmony (90692d95) +* up harmony (7e75cfaf) +* up harmony (a5c1b2a0) +* up harmony (3a108cab) +* up persona (cc5e9d9c) +* up harmony (769f879e) +* up themes (46530337) +* incrementing version number - v3.4.3 (5c984250) +* update changelog for v3.4.3 (08949be9) +* up themes (e0b29ba9) +* up emoji (00dd0cb3) +* up emoji (86de8cb2) +* up emoji (5081ff48) +* up emoji (805aaa5e) +* up emoji (7568be3c) +* up themes (b7d8fd1e) +* up themes (d0682905) +* incrementing version number - v3.4.2 (3f0dac38) +* up deps (f1021542) +* up composer (45b9803a) +* up composer (7e5d9b71) +* up harmony (13ea14f1) +* up engines (0f9f875b) +* incrementing version number - v3.4.1 (01e69574) +* up dbsearch (b4775b18) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update actions/setup-node action to v4 (#12114) (762ad161) + * update dependency eslint-plugin-import to v2.29.0 (#12112) (2ae031ed) + * update redis docker tag to v7.2.2 (#12097) (bb812937) + * update dependency eslint to v8.52.0 (#12106) (8acdd355) + * update commitlint monorepo to v17.8.1 (#12104) (022e2a10) + * update dependency lint-staged to v15.0.2 (#12099) (8549d7de) + * update dependency sass-embedded to v1.69.4 (#12093) (f5f1679c) + * update dependency lint-staged to v15 (#12086) (d1cd625d) + * update commitlint monorepo to v17.8.0 (#12084) (225acb2e) + * update dependency sass-embedded to v1.69.2 (#12073) (9967ae6b) + * update dependency sass-embedded to v1.69.1 (#12071) (7fe72085) + * update dependency eslint to v8.51.0 (#12063) (6c01148e) + * update dependency @commitlint/cli to v17.7.2 (#12047) (d10a09a0) + * update dependency eslint to v8.50.0 (#12029) (65051066) + * update postgres docker tag to v16 (#12012) (6fa6f73b) + * update actions/checkout action to v4 (#11978) (b4233366) + * update docker/build-push-action action to v5 (#11997) (4ecfe40e) + * update docker/login-action action to v3 (#11998) (478f7c74) + * update docker/metadata-action action to v5 (#11999) (21b280d2) + * update docker/setup-buildx-action action to v3 (#12000) (95f7112a) + * update docker/setup-qemu-action action to v3 (#12001) (f286d7fa) + * update dependency sass-embedded to v1.67.0 (#12003) (b9d04e2f) + * update dependency eslint to v8.49.0 (#11993) (ceed4327) + * update coverallsapp/github-action action to v2.2.3 (#11988) (a473b515) + * update redis docker tag to v7.2.1 (#11987) (0b231fd3) +* **i18n:** + * fallback strings for new resources: nodebb.admin-extend-widgets (990bbd8c) + * fallback strings for new resources: nodebb.admin-manage-privileges (3cb6881c) + * fallback strings for new resources: nodebb.themes-harmony (67fec93d) + * fallback strings for new resources: nodebb.notifications (ed77a0b1) + * fallback strings for new resources: nodebb.admin-advanced-database (b517645f) + * fallback strings for new resources: nodebb.error, nodebb.flags (19cfd89f) + * fallback strings for new resources: nodebb.admin-extend-widgets (8b5f0334) + * fallback strings for new resources: nodebb.email (fc8a6b31) + * fallback strings for new resources: nodebb.admin-settings-post (8cb2c270) + * fallback strings for new resources: nodebb.email, nodebb.notifications (a71378cb) + * fallback strings for new resources: nodebb.topic (8df56d60) + * fallback strings for new resources: nodebb.notifications, nodebb.pages, nodebb.tags, nodebb.user (2627e974) + * fallback strings for new resources: nodebb.modules (ec3ab986) + * fallback strings for new resources: nodebb.admin-settings-chat (968ee0c7) + +##### New Features + +* show # of widgets on templates (2ca5192b) +* #12101, dont return rssFeedUrl if feeds are disabled (2955fdb5) +* add sidebar setting lang key (97a86ba4) +* award notif filter (9e9046bf) +* update to mongodb 6.1 (#12087) (e542b27d) +* add category canonical url (f96b0b7a) +* update error handler to check for pseudo-standard no-* prefix and route to 404 handler instead (db5b0f47) +* flag rescinding logic + api method (e012edea) +* backend methods for rescinding a report, supplemental adds and removing a report now adds to the flag history (bc0f362c) +* use homePageTitle in breadcrumbs if its set (1a745201) +* 3 column layout for widgets (db9279eb) +* update all language keys to use - instead of _ (#12059) (844cb91b) +* closes #12052, ability to disable stale topic warning (f8a3aceb) +* add .has() method in cache/ttl lib (d478de16) +* upgrade chartjs to 4.x (fe192b92) +* closes #11553, add forked from message like merged into (be14f6cc) +* add workerpool for password, closes #10326 (#12038) (8b25aff7) +* add new hook action:chat.onMessagesAddedToDom (a7517d88) +* add composerActions for chat rooms (d906097a) +* add heading strings (8c977f4c) +* introduce new ACP setting for newbie chat message delay, defaults to 2 minutes (223e7656) + +##### Bug Fixes + +* **deps:** + * update dependency cron to v3.1.4 (#12117) (3e45788f) + * update dependency ace-builds to v1.31.0 (#12113) (aba7eb0f) + * update dependency nconf to v0.12.1 (#12111) (91d00979) + * update dependency @fontsource/inter to v5.0.15 (#12108) (99c3c874) + * update dependency nodemailer to v6.9.7 (#12109) (e546adaa) + * update dependency mongodb to v6.2.0 (#11965) (7302e769) + * update dependency @fontsource/inter to v5.0.14 (#12103) (c9c6175a) + * update dependency cron to v3.1.3 (#12100) (bad9198e) + * update dependency sass to v1.69.4 (#12094) (2adc96c2) + * update dependency esbuild to v0.19.5 (#12091) (94434125) + * update dependency webpack-merge to v5.10.0 (#12088) (d45f506f) + * update dependency webpack to v5.89.0 (#12083) (1ebdfaea) + * update dependency connect-mongo to v5.1.0 (#12085) (212a3415) + * update dependency ace-builds to v1.30.0 (#12082) (8456682c) + * update dependency cron to v3.1.1 (#12078) (24d6b73f) + * update dependency commander to v11.1.0 (#12079) (7d38e9ed) + * update dependency sass to v1.69.3 (#12076) (193e54e2) + * update dependency workerpool to v6.5.1 (#12077) (14eede15) + * update dependency sass to v1.69.2 (#12074) (0dd4cedf) + * update dependency nodemailer to v6.9.6 (#12068) (6c59d72a) + * update dependency winston to v3.11.0 (#12064) (fdf279a3) + * update dependency cron to v3 (#12049) (f2fad2d3) + * update dependency @fontsource/inter to v5.0.13 (#12065) (512ac525) + * update dependency ace-builds to v1.29.0 (#12067) (b04fbf89) + * update dependency sass to v1.69.1 (#12070) (a5d2871c) + * update dependency @fontsource/inter to v5.0.12 (#12053) (1033218c) + * update dependency sass to v1.69.0 (#12060) (ecb847fc) + * update dependency nodebb-plugin-2factor to v7.4.0 (6c5c1afd) + * update dependency nodebb-plugin-ntfy to v1.7.3 (98e58252) + * update dependency postcss to v8.4.31 (#12048) (eaa7aff3) + * update dependency esbuild to v0.19.4 (#12046) (4289230f) + * update dependency rimraf to v5.0.5 (#12036) (3549fbdd) + * update dependency nodebb-theme-persona to v13.2.34 (#12043) (339481ca) + * update dependency nodebb-plugin-spam-be-gone to v2.2.0 (#12039) (84648db2) + * update dependency cron to v2.4.4 (#12033) (c1f873b3) + * update dependency ace-builds to v1.28.0 (#12028) (3262923a) + * update dependency nodebb-plugin-2factor to v7.3.1 (#12026) (d29ea026) + * update dependency nodebb-plugin-ntfy to v1.7.2 (#12024) (360d3257) + * update dependency sass to v1.68.0 (#12023) (be600a84) + * update dependency autoprefixer to v10.4.16 (#12022) (f6b6e6c7) + * update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (639fb33f) + * update dependency bootswatch to v5.3.2 (#12020) (5dc368a9) + * update dependency ace-builds to v1.27.0 (#12019) (f73ed6dd) + * update dependency nodebb-plugin-emoji to v5.1.10 (#12018) (16fe4fde) + * update dependency sharp to v0.32.6 (#12016) (f838498b) + * update dependency postcss to v8.4.30 (#12015) (7dbc6668) + * update dependency rtlcss to v4.1.1 (#12014) (ba894a04) + * update dependency nodebb-plugin-ntfy to v1.7.1 (#12011) (4e834a2e) + * update dependency ace-builds to v1.26.0 (#12010) (5a003acb) + * update dependency mongodb to v5.9.0 (#12008) (5bfcd34c) + * update dependency cropperjs to v1.6.1 (#12013) (9f5362c8) + * update dependency ace-builds to v1.25.1 (#12006) (1558d7a2) + * update dependency bootstrap to v5.3.2 (#12005) (44d120df) + * update dependency esbuild to v0.19.3 (#12002) (ef41b8bc) + * update dependency sass to v1.67.0 (#12004) (d2e49472) + * update dependency ace-builds to v1.24.2 (#11991) (447b7954) +* closes #12115 , toggle hasmore as well (728d63f9) +* #10276, only move widgets if area doesn't exist (1739f5a9) +* #12090, dont award disabled rewards (c1ae879d) +* rewards fixes (347a43f4) +* use template name instead of component (f6120ebb) +* incorrect data passed to api.flags.get (cc8fe435) +* missing body classes on error pages (54a810dd) +* edit notification key (bda37ac2) +* lang key (bffa7880) +* #12062, relax blockquote selector (99bdad80) +* allowing forward slash in language keys, temporarily allowing upper case characters (d25a24fc) +* rename filter-perPage to filter-per-page (872ddc26) +* upgrade script date (6f5a965a) +* add upgrade script for notifications (6c3ff86b) +* lang key, type has _, lang keys changed to use - (1072b38b) +* #12017, unreliable forum updated messaging (715bdac3) +* #12057, allow gmods to change user email (344ece8d) +* only show emailChanged alert for self (56794cf8) +* closes #12054 handle negative start/stop in psql (0f4e6648) +* make socket errors and static hook errors less noisy (2a1be01a) +* restore notificationSendDelay back to 60 (5fe1ad95) +* breaking tests (857433d1) +* #12044, only load notifications when opening dropdown (dbd0a715) +* change `notificationSendDelay` to default to 10 seconds instead of 60, #11445 (cf50b0fe) +* clear interstitial data if there are no additional interstitials on abort (bdc221eb) +* #11808, reduce zeal of middleware.registrationComplete (74902e4a) +* pass in missing uid (d50473df) +* #12025, validity checking on user-provided toPid value (fe42fd4e) +* #12032, truncate long category names (b518e036) +* field name importance (8041f4d1) +* closes #12007, parseInt notification fields (b8e43143) +* on shutdown clear locks (615b2f0f) +* remaining text, when sending with send button (6553e454) +* nodebb/nodebb-plugin-link-preview#18, remove sup from allowedTags, add source + source attributes (f09f4105) +* use isPrivileged instead of isAdmin (b9c3cdb6) +* failing test due to increased chat message delay (ff07fc44) +* better labels in ACP chat settings, #11983 (88dd21e2) +* bump chat message delay by 10x to 2000ms, re: #11983 (9b0b33cc) +* #11981, post immediately when canceling scheduling (aa797f23) +* **i18n:** + * added rewards resource and fallbacks (47910d70) + * fallbacks for new language keys (2b3d2055) + * push fallbacks for modules resource (9b384b98) + +##### Other Changes + +* fix quotes (b8705380) +* fix lint (3b46ad42) + +##### Performance Improvements + +* no need to count on every call (130815c7) + +##### Refactors + +* get rid of util.promisify on async function (b1ff93f8) +* fix comment (ff6bfeb8) +* get rid of async.series (c7c6e8ff) +* shorter timeago (6149252b) +* shorter code for pinned topics (ff952e59) +* change private message email subject (f9fb3c3a) +* use helpers.isAllowedTo (47c16e90) +* add email notification delay to chat message notifications (a47b4805) +* remove chat message notification queue, implement merge IDs for chat message notifications, so they can be grouped together (3ba371f6) +* update buildCategoryLabel (82ea9192) +* use esm only import used chart types/plugins (56b31674) +* get rid of exists db call, use promise.parallel (8895b152) +* get rid of some async.waterfall/series/parallel calls (e452c097) +* get rid of async.waterfall/series (8bc2ef22) +* reduce socket.emits for typing (4d1b8e76) + +##### Tests + +* add spec for new notif type (90e10b9c) +* worked with chatgpt to restrict the i18n test a bit to match requirements (99364427) +* fix flag tests (6606d96a) +* added test cases for .addReport and .rescindReport() (da239059) +* added i18n test to enforce kebab casing (69dde2b9) +* add reverse list test (66be9826) +* additional tests for #12034 (d7e9f324) +* added tests for new logic paths (toPid validation on post creation) (ce740301) +* 💥 i18n tests (8202c555) + +#### v3.4.3 (2023-09-27) + +##### Chores + +* incrementing version number - v3.4.2 (3f0dac38) +* update changelog for v3.4.2 (f9323de6) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change priv to topics:read (cddac03a) +* #12035, filter tids in mark all read (77d6d0ab) +* properly wrap promise to callback-style function (#12030) (aff19a6c) +* #12009, check if suggested/current versions are valid (7ca37bd6) +* **deps:** update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (c805824f) + +##### Refactors + +* remove nested promise (379ed0e2) + +#### v3.4.2 (2023-09-12) + +##### Chores + +* up harmony (bd94f263) +* up harmony (46f260b5) +* up harmony (62afd0bd) +* up composer/persona (5c628c56) +* up harmony (3e07c18d) +* up deps (3f7de1c7) +* up harmony (512c44d5) +* up harmony (319d3b1f) +* up themes (d7a7c355) +* incrementing version number - v3.4.1 (01e69574) +* update changelog for v3.4.1 (f24a334c) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* **deps:** bump 2factor (6bc2b6c5) +* move database call used to associate a NodeBB session UUID to its express session id into user.auth.addSession, which is the only time it is called (e1bced8c) +* toMid to posts you cant see (53106c00) +* closes #11982, fix element in prepEdit (e4ecb96f) +* prep edit so textarea isn't below text input (f2c4041f) + +##### Refactors + +* reduce socket.emits for typing (aebd9278) + +##### Tests + +* remove errant .only() (9dc9d5ef) +* fix room count (66251166) + +#### v3.4.1 (2023-09-06) + +##### Chores + +* up dbsearch (8357bb2e) +* incrementing version number - v3.4.0 (fd9247c5) +* update changelog for v3.4.0 (5c023025) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11981, post immediately when canceling scheduling (19b7cdb2) + +#### v3.4.0 (2023-09-06) + +##### Chores + +* up ntfy (d79f79e8) +* up dbsearch (6d27f778) +* up themes, dont send typing on page load (45ed12c5) +* up harmony (21ad49fe) +* up themes (e10a5fa5) +* up themes (8132d36b) +* up themes (10d11924) +* up harmony (0334b389) +* up harmony (32c870f4) +* incrementing version number - v3.3.9 (5805e770) +* update changelog for v3.3.9 (50d44777) +* up composer (ffd6ea5a) +* up composer (c2534287) +* up composer (540b9f18) +* up composer (87015e9b) +* up themes (dd3647ed) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* markdown dep (03f11a24) +* up markdown (f399db9d) +* incrementing version number - v3.3.6 (7fb38792) +* up deps (a7843a40) +* up composer (05a7c761) +* up themes (c4b865e1) +* up themes (7d9ff9bf) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* up themes (5c14438d) +* up themes (cb3252be) +* up harmony (c7df93b4) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update coverallsapp/github-action action to v2.2.2 (#11977) (15c6fd6b) + * update dependency jquery to v3.7.1 (#11963) (94f07c14) + * update dependency eslint to v8.48.0 (#11953) (4d0055f0) + * update dependency lint-staged to v14.0.1 (#11936) (1e0661dc) + * update dependency eslint-plugin-import to v2.28.1 (#11848) (44a9d88a) + * update redis docker tag to v7.2.0 (#11924) (c41a4a0f) + * update dependency sass-embedded to v1.66.1 (#11926) (64925578) + * update mongo docker tag to v7 (#11928) (7ebdfe71) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (271cf81e) + * fallback strings for new resources: nodebb.notifications (69f86747) + * fallback strings for new resources: nodebb.email, nodebb.modules, nodebb.notifications (6a1b1141) + +##### New Features + +* typing user list in chat (60035744) +* add data-allow-dupe and data-navigator-ignore (92f5c146) +* add a filter hook to login (a3d6dba6) +* use all events in addTopicEvents (4bc21a2e) +* add socket.data.uid on connect (f026e740) +* #11949, show alert if posts is going to be queued (731466e5) +* #6021 add min:rep-post-links (#11938) (979f24b1) +* add new notif type for public rooms (b65d8e82) +* better acp sidebar in dark mode (c92ecfb4) +* check mute when messaging, closes #11932 (9534f9b9) +* log roomId/roomName on delete (b958a39a) + +##### Bug Fixes + +* **deps:** + * update dependency nodemailer to v6.9.5 (#11980) (d2636989) + * update dependency archiver to v6.0.1 (#11976) (0e885a20) + * update dependency nodebb-theme-harmony to v1.1.50 (#11975) (b46425b1) + * update dependency spdx-license-list to v6.7.0 (#11974) (9138702d) + * update dependency postcss to v8.4.29 (#11968) (286dcf9a) + * update dependency jsonwebtoken to v9.0.2 (#11972) (4251394f) + * update dependency cron to v2.4.3 (#11957) (b25793cd) + * update dependency nodebb-theme-peace to v2.1.16 (#11958) (44611e05) + * update dependency cropperjs to v1.6.0 (#11956) (521a13f4) + * update dependency nodebb-plugin-composer-default to v10.2.17 (#11951) (d20c9cf2) + * update dependency nodebb-theme-harmony to v1.1.43 (#11950) (d28b1f4b) + * update dependency mongodb to v5.8.1 (#11948) (551e4043) + * bump markdown (f9b8a079) + * bump ntfy (79703919) + * update dependency nodebb-plugin-markdown to v12.2.1 (#11939) (a04d3972) + * update dependency mongodb to v5.8.0 (#11940) (76a4fee9) + * update dependency pg to v8.11.3 (#11919) (9c837632) + * update dependency archiver to v6 (#11929) (0b1b6af3) + * update dependency sass to v1.66.1 (#11927) (01c94daf) + * update dependency pg-cursor to v2.10.3 (#11920) (c09c29fa) +* don't create tooltips on mobile (ded596fe) +* always return string from helper (bdeca049) +* double escape issue, body is escaped in composer-default (6ae0d207) +* make selector stricter (9f7a39c5) +* #11969, match the server side behaviour for filters (887dfd7d) +* remove og:image value (#11966) (90ac82d0) +* don't try to parse response if request is head #11960 (440299e6) +* pinned msgs when switching chats (acee6777) +* deleted chat messages (#11962) (1a1fd64d) +* closes #11954, fix custom skins with spaces (965780b7) +* dont show chat notif if you are already in the room (3d6668e7) +* #11947, make user message has a numeric timestamp (dc0fb81b) +* #11944, dont refresh page when uninstalling (f5baca14) +* closes #11921 (e3969706) +* bookmark scroll doing ajaxify (2e0964e6) +* closes #11937, add dropup early based on position on screen (a7a266d7) +* improper SSO format (regression), update openapi schema (4a846803) +* return empty array for 'sso' otherwise (db15e7c4) +* #11906, remove retrieval of SSO data in getAllData internal method, only retrieve for calling user or admins, and only on edit page (a6c98de6) +* language string (4e0c6329) +* admins should see public chats (aeb27f4b) +* show access denied instead of internal error (7dd143e1) + +##### Other Changes + +* remove unused translator (34242e7a) +* fix spec (c0eefe72) + +##### Refactors + +* use map/get (98c3d2e9) +* add targetUid to email-change event (4e5340d2) +* how admins change emails (#11973) (8db13d8e) + +##### Tests + +* one more fix (8b533d54) +* fix tests, dont hang if payload is string (6b09b7c7) +* fix redirect test (35e689cf) + +#### v3.3.9 (2023-08-25) + +##### Chores + +* up mentions (4ec3a480) +* incrementing version number - v3.3.8 (a5603565) +* update changelog for v3.3.8 (65e16e9f) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* isPrivilegeGroup not capturing admin privileges (d13e7cd3) + +##### Tests + +* add some tests for isPrivilegeGroup (d5c8bf9e) + +#### v3.3.8 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.7 (b26f1744) +* update changelog for v3.3.7 (1193fa04) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* msg ref (4ba76338) +* #11947, make user message has a numeric timestamp (2d62a772) + +#### v3.3.7 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.6 (7fb38792) +* update changelog for v3.3.6 (a43354c0) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #11945, fix skins loading if there are no custom skins (438c4c89) + +#### v3.3.6 (2023-08-22) + +##### Chores + +* up deps (db55f18a) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +#### v3.3.4 (2023-08-20) + +##### Chores + +* incrementing version number - v3.3.3 (f94d239b) +* update changelog for v3.3.3 (38149a57) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script, get rid of nested processSortedSet (78a7cfe9) + +#### v3.3.3 (2023-08-19) + +##### Chores + +* incrementing version number - v3.3.2 (ec9dac97) +* update changelog for v3.3.2 (2ecf15c4) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* one more fix (51587ca3) +* one more upgrade script fix (b5d1e917) +* post preview on skins remove clearfix and floats (5a8e6af4) + +##### Refactors + +* add connectionTimeout to psql (90f29571) + +#### v3.3.2 (2023-08-18) + +##### Chores + +* incrementing version number - v3.3.1 (151cc68f) +* update changelog for v3.3.1 (6f961f9c) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script (c02f1d70) + +#### v3.3.1 (2023-08-18) + +##### Chores + +* up themes (62231baa) +* incrementing version number - v3.3.0 (fc1ad70f) +* update changelog for v3.3.0 (46f7405d) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #11930, ability to set custom skins as default (db07ab15) + +##### Bug Fixes + +* some more upgrade script fixes (f23b0b5b) +* #11906, userData.sso — don't serve deauthUrl or non-associated url if caller uid is not same as target uid (19e047e2) +* include latin-ext subset of fonts in admin styles (#11918) (556a1c48) + +##### Other Changes + +* fix lint (d1949cee) + +#### v3.3.0 (2023-08-16) + +##### Chores + +* **deps:** + * update dependency smtp-server to v3.13.0 (#11913) (7f6865cc) + * update dependency lint-staged to v14 (#11909) (ee78b418) + * update dependency lint-staged to v13.3.0 (#11908) (6f3b7bc8) + * update dependency eslint to v8.47.0 (#11904) (af3c5e54) + * update dependency @commitlint/cli to v17.7.1 (#11896) (1d44b004) + * update commitlint monorepo to v17.7.0 (#11892) (d1d38097) + * update dependency sass-embedded to v1.64.2 (#11858) (c9c23513) + * update dependency eslint to v8.46.0 (#11852) (8a761ff7) + * update dependency sass-embedded to v1.64.1 (#11833) (1cca1760) + * update commitlint monorepo to v17.6.7 (#11817) (ac65ab42) + * update dependency sass-embedded to v1.64.0 (#11821) (560bb29c) + * update actions/setup-node action to v3 (#10347) (c8387828) + * update mongo docker tag to v6 (#10889) (f2715979) + * update dependency eslint to v8.45.0 (#11800) (b53da688) + * update coverallsapp/github-action action to v2.2.1 (#11795) (adfde1d4) + * update redis docker tag to v7.0.12 (#11789) (40477c85) + * update dependency eslint to v8.44.0 (#11771) (0bad8578) +* up emoji (ffa8b729) +* up harmony (c83a7023) +* up composer (c9663718) +* up harmony/composer (5d030a77) +* up composer (e151ec86) +* up composer-default (8d2ac658) +* up harmony (dfc155e4) +* up themes (9501d855) +* up harmony (89968048) +* harmony (a282f701) +* up themes (35c97bcb) +* up themes (8b31815f) +* up themes (ba2f6031) +* harmony (e8fb02f3) +* up harmony (3b125ba2) +* up harmony (58968353) +* up themes (8444af1c) +* up harmony (6faec937) +* up composer (7bfe327c) +* up mentions (0495b863) +* up themes (472fbd85) +* up harmony (f3776501) +* up theme (05c1e1f1) +* up harmony (ee0128d7) +* up harmony (ba03e223) +* up themes (6fc80f9f) +* incrementing version number - v3.2.3 (b06d3e63) +* update changelog for v3.2.3 (afb38c71) +* up mentions (4b92df75) +* up composer (48a04eb7) +* up harmony (efc250f2) +* up themes (6b017eb1) +* up harmony (08491053) +* up harmony (3b7b0d41) +* remove test log (b93cc788) +* up plugins (d1132ac4) +* up themes (35ac434c) +* up themes (98e0d141) +* up harmony (ac063fe5) +* up mentions (d545c143) +* up themes (b36bec95) +* up themes (62429252) +* remove log (954db1ee) +* up themes (9fda8dce) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* up markdown (f23cda10) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-dashboard (80ea4eb0) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.error (e27d1743) + * fallback strings for new resources: nodebb.modules (ab668617) + * fallback strings for new resources: nodebb.global (bee5a9b4) + * fallback strings for new resources: nodebb.error (eca28302) + * fallback strings for new resources: nodebb.admin-dashboard (ac355acd) + * fallback strings for new resources: nodebb.admin-dashboard (62b7be1c) + * fallback strings for new resources: nodebb.admin-menu (ad9d8f77) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-manage-categories (f075e12a) + * fallback strings for new resources: nodebb.modules (2c54e362) + * fallback strings for new resources: nodebb.admin-manage-users (9284b7e4) + * fallback strings for new resources: nodebb.modules (4ed0ed45) + * fallback strings for new resources: nodebb.topic (9c0b98df) + * fallback strings for new resources: nodebb.email (3613d1e6) + * fallback strings for new resources: nodebb.modules (a7dae508) + * fallback strings for new resources: nodebb.admin-settings-guest (640e32d4) + * fallback strings for new resources: nodebb.error, nodebb.modules (2710037c) + * fallback strings for new resources: nodebb.admin-admin (58bdedaf) + +##### New Features + +* closes #11902, ability to clear search history (7a79fed8) +* #11897, show guest handles in post queue and after using POST /compose (76fde8ef) +* #11881, limit room names (9349cb63) +* add toMid to chat messages (0316f324) +* add category selector to analytics page (acef5e33) +* middleware.handleMultipart, applies on API routes — invokes multipart middleware based on content-type header (bcc4b82c) +* #11868 apply blacklist to routes (#11873) (23404ad1) +* add icon to invite/accept notifs (78c5dfdc) +* add flags link to acp manage menu, closes #11867 (99c22942) +* move to npm fontawesome dependency and support fa pro (#11820) (b709ed9e) +* password check hook (#11853) (8ac34f8e) +* #11850, chat msg search (11bfeaf1) +* #11814, dont check content len for admins (f359a767) +* closes #11843, refresh search after changing filters (907c5fa6) +* #11842, ability to change reputation of users (ac027387) +* closes #11812, add unread public rooms into digest (eb0fcd32) +* allow multiple room owners, closes #6503 (91642cb3) +* show online users at the top of userlist and update (911ef058) +* simplified api module handler logic, content-type detection/parsing (2d016af8) +* allow FormData object to be passed in to the API module (ed99ea20) + +##### Bug Fixes + +* **deps:** + * update dependency postcss to v8.4.28 (#11915) (eafa03ab) + * update dependency sharp to v0.32.5 (#11916) (a013b161) + * update dependency ace-builds to v1.24.1 (#11914) (4a97ee0f) + * update dependency cron to v2.4.1 (#11911) (6476c4b8) + * update dependency esbuild to v0.19.2 (#11910) (d9e08e05) + * update dependency autoprefixer to v10.4.15 (#11907) (2a1e33dd) + * update dependency nodebb-plugin-2factor to v7.2.1 (#11898) (762658d4) + * update dependency nodebb-plugin-ntfy to v1.4.0 (#11905) (b8d926f9) + * update dependency lru-cache to v10.0.1 (#11899) (fd385647) + * update dependency esbuild to v0.19.1 (#11903) (12771b70) + * update dependency sass to v1.65.1 (#11895) (4b04b41e) + * update dependency ace-builds to v1.24.0 (#11893) (8f6feb0b) + * update dependency compare-versions to v6.1.0 (#11883) (9608b124) + * update dependency nodebb-plugin-ntfy to v1.3.0 (#11889) (53006408) + * update dependency esbuild to v0.19.0 (#11884) (454a968e) + * update dependency nodebb-theme-persona to v13.2.17 (#11888) (70f83075) + * update dependency nodebb-theme-harmony to v1.1.33 (#11887) (31ed1a40) + * update fontsource monorepo to v5.0.8 (#11880) (4cb0b738) + * update dependency esbuild to v0.18.19 (#11882) (2c8fd3b8) + * update dependency esbuild to v0.18.18 (#11879) (9a07cdbd) + * update dependency nodebb-plugin-ntfy to v1.2.5 (#11876) (7710a5e6) + * update dependency @fortawesome/fontawesome-free to v6.4.2 (#11870) (7d5a8666) + * update fontsource monorepo to v5.0.7 (#11869) (2c8bf84c) + * update dependency validator to v13.11.0 (#11877) (4594cd67) + * update dependency nodebb-plugin-ntfy to v1.2.4 (ae8f5398) + * update socket.io packages to v4.7.2 (#11871) (d4d339f9) + * update dependency pg to v8.11.2 (#11859) (5582fe92) + * update dependency pg-cursor to v2.10.2 (#11860) (c79c1e5f) + * update dependency sass to v1.64.2 (#11861) (da852139) + * update dependency esbuild to v0.18.17 (#11844) (ba379836) + * update dependency cron to v2.4.0 (#11839) (b1db67ce) + * update dependency postcss to v8.4.27 (#11827) (8d8930f8) + * update dependency sharp to v0.32.4 (#11828) (ef9fd345) + * update dependency sass to v1.64.1 (#11834) (878fe217) + * update dependency esbuild to v0.18.16 (#11838) (ace36434) + * update dependency esbuild to v0.18.15 (#11823) (8ab9c72c) + * update dependency nodemailer to v6.9.4 (#11819) (fcb99af1) + * update dependency sass to v1.64.0 (#11822) (e7626d90) + * update dependency nodebb-plugin-ntfy to v1.1.0 (#11815) (465b3e09) + * update dependency webpack to v5.88.2 (#11811) (4095cda6) + * update dependency esbuild to v0.18.14 (#11813) (de13aae6) + * update dependency esbuild to v0.18.13 (#11801) (212f90bb) + * update dependency sharp to v0.32.3 (#11799) (406ced79) + * update dependency postcss to v8.4.26 (#11798) (8e295464) + * update dependency esbuild to v0.18.12 (#11794) (f15265ff) + * update dependency winston to v3.10.0 (#11792) (786fff6f) + * update dependency sharp to v0.32.2 (#11791) (d156e67e) + * update dependency nodebb-plugin-ntfy to v1.0.16 (#11790) (3c5e5d3e) + * update fontsource monorepo to v5.0.5 (#11785) (efd784fa) + * update dependency compare-versions to v6 (#11784) (50fd242b) + * update dependency semver to v7.5.4 (#11783) (3bf10941) + * update dependency mongodb to v5.7.0 (#11781) (833a1ba7) + * update dependency postcss to v8.4.25 (#11780) (7fb8e414) + * update dependency jsonwebtoken to v9.0.1 (#11778) (bb89a12a) + * update dependency ace-builds to v1.23.4 (#11782) (b2cabd43) + * update fontsource monorepo to v5.0.4 (#11776) (5eedd8eb) + * update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (1932a31d) + * update dependency nodebb-theme-persona to v13.1.7 (#11769) (d2e6062b) + * update dependency @isaacs/ttlcache to v1.4.1 (#11774) (63bbb366) + * update dependency esbuild to v0.18.11 (#11772) (335a3619) + * update dependency webpack to v5.88.1 (#11764) (a3111e4d) +* if you send message scrollToBottom (223c85e4) +* clicking on email consent form label checks the wrong box (2fe93361) +* clicking on email consent form label checks the wrong box (514af5d6) +* copy FA fonts to build directory instead of serving them directly (#11891) (ac4623ee) +* use config.undoTimeout instead of hardcoded value (850cfb33) +* add missing id/for to all checkboxes (ae747875) +* #11875, simplify alerts and show progress (881a28eb) +* bug where api module would throw if response contained no content-type header (007d735f) +* chat mark read regression (f4e2e617) +* fix escaped characters in tooltips, fix priv checks in tooltips (82562bec) +* #11855, remove superfluous password challenge on admin email update (unless they're updating their own) (4ca71f63) +* register abort can error on weird session state (#11854) (c9511915) +* #11847, typo in markNotification (5a8b4125) +* #11837, use userslug for check (e2fa8cf3) +* #11841, use unique nid per user who flagged (17783440) +* reset_code.tpl card block expanding to bottom of container (2792d771) +* closes #11825, user icons in global privileges (dae4f9f7) +* fallback for room timestamp (77550a50) +* dont error if timestamp is missing (6cc86b6e) +* topic postercount field if owner is changed (00be053e) +* updateOwner (16fe1eb9) +* unread notif filter (3e7ca4f2) +* closes #11806, fix code blocks (165b0f85) +* allow escape to close chat modals (4c311502) +* on leave/kick remove matching sockets from rooms (a766f74f) +* spec (79fae26d) +* lint (1e38a16b) +* client side js crash (adb3a5e6) +* #11797, update title on chat switch (840792ae) +* always return empty array if its not set (5c208610) +* mobile back button (9149a9a2) +* clear cache on sort (e03fdcd6) +* #11787 (bf2c429a) +* fetch handler not passing back errors or success payloads (8a531826) +* group membership methods for guests/spiders (2791eb8a) + +##### Other Changes + +* new filter to filter skins (c1361ee5) +* //github.com/NodeBB/NodeBB/issues/11818 (f7ae8963) +* //github.com/NodeBB/NodeBB/issues/11818 (0dce4c46) + +##### Performance Improvements + +* faster upgrade script (43060f3c) + +##### Refactors + +* ip blacklist.test (38c0c8de) +* dont load all tokens in verify token (2fe193d6) +* dont sleep if iteration is done on first one (0136e924) +* use fetch() throughout, instead of jQuery .ajax() (7415b16d) + +##### Tests + +* fix test if ip is invalid (38377982) +* fix tests to use regular uid (d615273d) +* fix tests since nid format changed (e41042ee) +* fix test (9e574e07) +* log e11000 errors (934df69e) +* fix spec (b63cd548) +* fix (e31f5c42) + +#### v3.2.3 (2023-07-19) + +##### Chores + +* downgrade harmony to correct version (7c94506b) +* incrementing version number - v3.2.2 (758ecfcd) +* update changelog for v3.2.2 (91a432ad) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* typo in replied to link (3024dac1) +* logs page whitespace (2a3d6d5c) +* version alert in acp (05c9cca7) +* #11804, fix direction of dropdown on rtl (a4dba8d3) +* #11802, fix anchor ids in acp settings (562e4d6e) +* #11803, fix rtl in acp (a0478c70) + +#### v3.2.2 (2023-07-12) + +##### Chores + +* up themes (f1170b18) +* up spam-be-gone (eed34d04) +* remove log (509faa5e) +* incrementing version number - v3.2.1 (20145074) +* update changelog for v3.2.1 (c7f8cee9) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11787 (6ae0df4f) +* #11786 fix selector for upgradable plugins (bf114c11) + +#### v3.2.1 (2023-07-05) + +##### Chores + +* up harmony (9fc5ae08) +* up composer (82d37702) +* up spider-detector (97d8f858) +* incrementing version number - v3.2.0 (9ecac38e) +* update changelog for v3.2.0 (080f9e75) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11766, allow privileged users to vote and chat (1bda9073) +* #11775, trim -rtl from targetSkin (0183e5f8) +* #11773, fix create token button (64d30182) +* add ?page= to canonical urls (4045681a) +* group membership methods for guests/spiders (7d5fe20b) +* **deps:** update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (a1110f10) + +#### v3.2.0 (2023-06-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13.2.3 (#11762) (26af152a) + * update commitlint monorepo to v17.6.6 (#11750) (a19e7b5c) + * update dependency sass-embedded to v1.63.6 (#11742) (8a961794) + * update dependency sass-embedded to v1.63.5 (#11738) (94d1dbc7) + * update dependency eslint to v8.43.0 (#11722) (7beadb6b) + * update coverallsapp/github-action action to v2.2.0 (#11690) (9282bc58) + * update dependency eslint to v8.42.0 (#11672) (55e5467d) + * update commitlint monorepo to v17.6.5 (#11648) (3b53f415) + * update dependency jsdom to v22.1.0 (#11640) (9a5d39c0) + * update dependency smtp-server to v3.12.0 (#11628) (57e3f999) + * update dependency eslint to v8.41.0 (#11616) (70bb50cd) + * update redis docker tag to v7 (#10830) (f1e2342d) + * update dependency jquery to v3.7.0 (#11591) (12c03130) +* up harmony (94013139) +* up persona (8b4e2ca9) +* up deps (b1de9472) +* up harmony (db5016cc) +* up harmony (8f6889e0) +* up harmony (c4c06be5) +* up harmony (777c7d09) +* up deps (7f465006) +* up harmony (f9e37829) +* incrementing version number - v3.1.7 (0b4e81ab) +* update changelog for v3.1.7 (8744e412) +* up persona (7a0e5c6d) +* up harmony (be474fb4) +* up harmony (1896b486) +* up persona (09d42076) +* up harmony (cce42fec) +* up markdown (4107d6b8) +* up themes (b2f70a2e) +* up composer (21919524) +* up harmony (64441602) +* incrementing version number - v3.1.6 (b3a3b130) +* up themes (61420fdc) +* up themes (f9990cab) +* bump themes for da02361b13d064763223533368f9b71d998ecf37 (c97977f8) +* up harmony (0f84f597) +* up emoji (4b0d3940) +* up emoji (291aa58e) +* incrementing version number - v3.1.5 (ec19343a) +* up harmony (56ac610b) +* up themes (0bfe361c) +* up themes (67ab222d) +* update lang key (1cc079f3) +* up harmony (590a7237) +* up harmony (ed54c7c0) +* up harmony (91760eef) +* up emoji (7ab05f5d) +* up harmony (43887328) +* up emoji (9a3c62f7) +* up emoji (783fbfd8) +* up emoji (7a3468a1) +* up emoji (933f5a90) +* up harmony (61f4202e) +* up themes (5d089363) +* scroll up alert (ca6f43c5) +* harmony (c48f15c5) +* up themes (14c93cd5) +* up harmony (6188d8be) +* up harmony (9e416d7f) +* incrementing version number - v3.1.4 (2452783c) +* up persona (78c2e29c) +* up markdown (7f5ec0ef) +* up themes (cdfc1bfe) +* up harmony (fd80b612) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-appearance-skins (7ca85c60) + * fallback strings for new resources: nodebb.admin-advanced-cache, nodebb.admin-advanced-errors, nodebb.admin-development-logger (fa8e656d) + * fallback strings for new resources: nodebb.admin-appearance-customise (0863afd0) + * fallback strings for new resources: nodebb.user (195b09d5) + * fallback strings for new resources: nodebb.admin-manage-users (934b6792) + * fallback strings for new resources: nodebb.themes-harmony (619c4ff7) + * fallback strings for new resources: nodebb.topic (639eeb44) + * fallback strings for new resources: nodebb.admin-appearance-customise, nodebb.admin-appearance-skins, nodebb.admin-appearance-themes, nodebb.admin-settings-api (d508772c) + * fallback strings for new resources: nodebb.admin-manage-groups (e53929fc) + * fallback strings for new resources: nodebb.users (1ffc9221) + * fallback strings for new resources: nodebb.modules (54a683bb) + * fallback strings for new resources: nodebb.themes-harmony (0aef9a91) + * fallback strings for new resources: nodebb.admin-settings-api (78bc71aa) + +##### New Features + +* closes #11747, add pagination to tokens page (4b11cd0d) +* add vote privs to topic (#11734) (86faed6f) +* custom skins panel in acp (556fd65d) +* add req and socket to als, closes https://github.com/NodeBB/NodeBB/pull/10304 (68ddca1e) +* #11714, add page title (1a5e18cd) +* #11714, add registrationQueue flag (3080eb7e) +* do not show the replies container in a post's footer if the only reply present is the next post (da02361b) +* add new tab to define bs variables (de68f749) +* bring back noskin option (2edfe0ef) +* add not validated/expired (5fae09f3) +* closes #11671, allow custom classes on body (e89cfd44) +* upgrade fonts (392a7d28) +* allow more params to app.newTopic/newReply (325c1955) +* update progress bar more frequently (99aaa9f1) +* closes #11630 (8c9ab01f) +* add hidden-empty utility (63ae03b4) +* translate bodyShort (ed15cbb0) +* add lang string and drag fix (db9b807c) +* center chat modal attr (4833a2b9) +* token rolling API for admins (4f524e9f) +* token editing and deletion (ce23caf7) +* api token migration, new ACP tokens list, token creation (e4888dea) +* internal utility functions for token management (creation, deletion, etc) (7b8bffd7) + +##### Bug Fixes + +* **deps:** + * update socket.io packages to v4.7.1 (#11763) (1de2d632) + * update dependency ace-builds to v1.23.1 (#11759) (53ab5931) + * update dependency esbuild to v0.18.10 (#11760) (e7f68aec) + * update dependency pg-cursor to v2.10.1 (#11757) (a814440c) + * update dependency pg to v8.11.1 (#11758) (8b56fa2f) + * update dependency esbuild to v0.18.9 (#11755) (3adc7505) + * update socket.io packages to v4.7.0 (#11744) (b25e7247) + * update dependency semver to v7.5.3 (#11745) (9d0edc36) + * update dependency esbuild to v0.18.8 (#11751) (a7243790) + * update dependency esbuild to v0.18.7 (#11749) (85e5619c) + * update dependency sass to v1.63.6 (#11743) (939e5818) + * update dependency webpack to v5.88.0 (#11741) (c45854d9) + * update dependency sanitize-html to v2.11.0 (#11740) (9d5fadad) + * update dependency esbuild to v0.18.6 (#11736) (e0c137c9) + * update dependency sass to v1.63.5 (#11737) (61e45cb3) + * update dependency ace-builds to v1.23.0 (#11739) (a53e7d21) + * update dependency esbuild to v0.18.5 (#11730) (2a56d21c) + * update dependency esbuild to v0.18.4 (#11721) (ae349004) + * update dependency commander to v11 (#11719) (d454c5c4) + * update dependency lru-cache to v10 (#11716) (b3bdb9d0) + * update dependency semver to v7.5.2 (#11718) (770021e0) + * update dependency esbuild to v0.18.3 (#11715) (9f94b56f) + * update dependency webpack to v5.87.0 (#11713) (f95929b2) + * update dependency nodebb-plugin-2factor to v7.1.3 (#11711) (c9e41e10) + * update dependency sass to v1.63.4 (#11709) (dfcef322) + * update dependency esbuild to v0.18.2 (#11705) (9521c8de) + * update dependency nodebb-plugin-2factor to v7.1.1 (#11703) (fe96d6f8) + * update dependency ace-builds to v1.22.1 (#11699) (b0d91a55) + * update dependency esbuild to v0.18.1 (#11701) (5247f763) + * update dependency nodebb-theme-harmony to v1.0.47 (#11700) (96a7add5) + * update dependency sass to v1.63.3 (#11693) (1512a37d) + * update dependency @fontsource/poppins to v5.0.3 (#11696) (1bd8f898) + * update dependency @fontsource/inter to v5.0.3 (#11695) (ddb41fbe) + * update dependency esbuild to v0.18.0 (#11698) (2b419f93) + * update dependency webpack to v5.86.0 (#11691) (744f399c) + * update dependency connect-pg-simple to v9 (#11692) (32cebaa6) + * update dependency mongodb to v5.6.0 (#11670) (1738f3c5) + * update dependency lru-cache to v9.1.2 (#11668) (09fff40c) + * update dependency nodebb-plugin-emoji to v5.1.0 (#11683) (bf76989e) + * update dependency nodebb-plugin-dbsearch to v6.1.0 (#11689) (9ef40569) + * update dependency nodebb-theme-persona to v13.1.0 (#11688) (6240a8c6) + * update dependency nodebb-plugin-composer-default to v10.2.0 (#11686) (bfdb72ca) + * update dependency nodebb-plugin-mentions to v4.2.0 (#11687) (d58c9d8c) + * update dependency nodebb-plugin-2factor to v7.1.0 (#11685) (64557680) + * update dependency nodebb-plugin-markdown to v12.1.0 (#11684) (ed2d9a96) + * update dependency nodebb-theme-lavender to v7.1.0 (#11682) (c23deb87) + * update dependency nodebb-plugin-spam-be-gone to v2.1.0 (#11681) (5d8d0946) + * update dependency nodebb-theme-harmony to v1.0.43 (#11680) (601a0363) + * update dependency webpack to v5.85.1 (#11678) (ccf3d3bc) + * update dependency nodebb-theme-harmony to v1.0.42 (#11674) (d41651dc) + * update dependency nodebb-plugin-composer-default to v10.1.9 (#11676) (929835de) + * update dependency nodebb-theme-harmony to v1.0.40 (#11669) (b5ee0247) + * pin dependencies (#11660) (1033cd1c) + * update dependency webpack to v5.85.0 (#11663) (e6344db8) + * update dependency @fontsource/inter to v5 (#11661) (e5e8debf) + * update dependency nodebb-theme-harmony to v1.0.39 (#11659) (6d4ab1d0) + * update socket.io packages to v4.6.2 (#11658) (fe10356c) + * update dependency ipaddr.js to v2.1.0 (#11653) (a13b5c40) + * update dependency nodebb-plugin-composer-default to v10.1.8 (#11656) (032425b2) + * update dependency nodebb-plugin-markdown to v12.0.5 (#11657) (a7a1cda5) + * update dependency nodebb-theme-persona to v13.0.73 (#11652) (e4c2015f) + * update dependency nodebb-plugin-composer-default to v10.1.7 (#11654) (d242bc29) + * update dependency nodemailer to v6.9.3 (#11644) (bd93ab8b) + * update dependency nodebb-theme-harmony to v1.0.38 (#11646) (f9ba518a) + * update dependency nodebb-theme-persona to v13.0.72 (#11647) (c474841e) + * update dependency nodebb-widget-essentials to v7.0.13 (#11645) (5daa733c) + * update dependency webpack to v5.84.1 (#11635) (7c333fb1) + * update dependency @popperjs/core to v2.11.8 (#11636) (14ac1206) + * update dependency winston to v3.9.0 (#11637) (45af9333) + * update dependency postcss to v8.4.24 (#11642) (1bc3c384) + * update dependency nodebb-theme-persona to v13.0.71 (#11641) (a6be0cd7) + * update dependency nodebb-plugin-composer-default to v10.1.6 (#11638) (3c9a960e) + * update dependency cron to v2.3.1 (#11633) (f5bcdc87) + * update dependency nodebb-theme-persona to v13.0.70 (#11632) (73d8ac66) + * update dependency webpack to v5.84.0 (#11631) (23532464) + * update dependency nodebb-theme-peace to v2.0.27 (#11629) (b10227dc) + * update dependency ace-builds to v1.22.0 (#11621) (70d0fc1a) + * update dependency nodebb-plugin-emoji to v5.0.16 (#11626) (21b61b37) + * update dependency webpack-merge to v5.9.0 (#11622) (5c70b428) + * update dependency nodebb-theme-peace to v2.0.25 (#11615) (f0336af4) + * update dependency webpack to v5.83.1 (#11608) (a4ae2e08) + * update dependency rimraf to v5.0.1 (#11610) (d1ccfac1) + * update dependency terser-webpack-plugin to v5.3.9 (#11611) (af00ebbe) + * update dependency ace-builds to v1.21.1 (#11607) (d26c9bf8) + * update dependency pg-cursor to v2.10.0 (#11605) (10ed33f1) + * update dependency @socket.io/redis-adapter to v8.2.1 (#11602) (49b3badb) + * update dependency ace-builds to v1.21.0 (#11603) (3d9f6f41) + * update dependency pg to v8.11.0 (#11604) (9840289c) + * update dependency semver to v7.5.1 (#11597) (18606f9c) + * update dependency esbuild to v0.17.19 (#11598) (28fb4e10) + * update dependency mongodb to v5.5.0 (#11593) (88e891fc) + * update dependency nodemailer to v6.9.2 (#11590) (3a883e3f) + * update dependency connect-redis to v7.1.0 (#11592) (97ec0c75) + * update dependency webpack to v5.82.1 (#11585) (90e53177) + * update dependency ace-builds to v1.20.0 (#11587) (326d820f) +* #11761, don't escape topic title twice (01c36f8b) +* use btn instead of icon (aefef763) +* rollback ace-builds 1.23.0 doesnt work (ea150162) +* #11756, fix unique visitor stats in acp table (e45f513b) +* dont overwrite postIndex (c21d7dbc) +* closes #11731, set postIndex on pagination (cbd98c1b) +* pinned topic ordering if parent element has non topic elements (cfedd087) +* delete events not working (281078f5) +* if reply is in different topic dont hide in parent (9ee1d7b0) +* web (6d5f6a15) +* var name (b48a6e26) +* error toast on lost connection (2c89d784) +* dont send 200 status on admin upload errors (#11707) (8ca65b0c) +* #11702, don't escape backgroundImage twice (6740a51e) +* closes #11697, remove min attribute from rep thresholds (4a6249a4) +* skins page revert (33a6b3e1) +* dont add deleted users to users:online (d0e9eb2c) +* #11679, fix username change (db3bff09) +* closes #11673, topic search for harmony (ee8cb378) +* #11664, dont create backlinks for quotes (d3c5a79d) +* wrap on events page (a5b080ea) +* app.newTopic usage (9f3bdf75) +* rtl fixes for code and long text (05460d8e) +* topic count in tools after purge closes #11651 (1974abeb) +* add loadingMore flag to chat infinite load (e0300ab7) +* #11619, fix selector (cdeaef6b) +* text area height calculation in chats (c52916de) +* textarea on error (c77b6224) +* closes #11612 (3cef2535) +* edge case in category filter (5daaa5ea) +* #11572 (29303f4a) +* browser title if options.title is undefined (adf14ea5) +* lang strings (d6ead3d4) +* #11594 (11d315df) +* relocated upgrade script, removed outdated code that called core.api for tokens (3e6dd78d) + +##### Other Changes + +* fix whitespace (4768d06b) +* fix unused (dcc2bb10) +* //github.com/NodeBB/NodeBB/issues/11612 (cf7d9334) +* up peace (0da8b506) +* use csrf_token in ws handshake (#11573) (63b859f0) +* closes #11577 (ad1ae291) + +##### Performance Improvements + +* make less db calls to load indices (0b2feb9e) + +##### Refactors + +* show both emails in user list (daa5ac85) +* move async call to promise.all (e56e44ab) +* remove script (2360d296) +* remove log (9522951f) +* remove log (32f60df1) +* use new params (2cf865e8) +* use app.parseAndTranslate (b1fbc194) +* remove return (e0149462) + +##### Reverts + +* remove emoji email css (7b8ebd0a) + +##### Tests + +* fix spec (94f06301) +* make email requirement flag changes more explicit in tests, so cases do not rely on variable values from other cases (a8399aa2) +* fix another test (c638186b) +* fix email tests @julianlam (64718d0c) +* openapi (2f94eb21) +* openapi (bc74afaf) +* remove is touch test (1ab0faa4) +* remove socket.io test (366b18e0) +* log socket.io error (3cb4edf1) +* fix another test (12e75ff4) +* fix test (c201bf45) +* add back missing tests (031ffe49) +* add missing tests (a75fd636) +* fix digest test (aff6d20f) +* add email (4bfebc81) +* digest (61563b01) +* additional tests for .roll() (6765d053) +* fix authentication tests to use new token saving utility functions (f42b636a) + +#### v3.1.7 (2023-06-21) + +##### Chores + +* incrementing version number - v3.1.6 (b3a3b130) +* update changelog for v3.1.6 (f10a2d2e) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11735, crash when making guest reply (f2fe7c06) +* #11729, only check registered users (090a7921) +* #11723, fix pagination on following/follower page (4e146eb5) + +#### v3.1.6 (2023-06-15) + +##### Chores + +* incrementing version number - v3.1.5 (ec19343a) +* update changelog for v3.1.5 (b0d16861) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11717 prevent crash in messaging (8620a2cd) +* closes #11708, fix quick reply check (a757716d) + +#### v3.1.5 (2023-06-13) + +##### Chores + +* fix persona (74174414) +* up themes (97ff1f11) +* incrementing version number - v3.1.4 (2452783c) +* update changelog for v3.1.4 (633dc2de) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add back support for req.body._csrf (67f44a32) + +##### Bug Fixes + +* improper neutralization of user input in image wrapping code (1d1639d4) +* don't update edit data if edited timestamp is not available (c5cd76e7) +* filter null nav items (b73f307a) +* rimraf usage in user image delete (3256fb30) +* closes #11620, fix copy code when line numbers are enabled (82e26829) +* logins dashboard user images (8cb6ebb9) + +##### Refactors + +* change welcome headers to be smaller (0c4870ec) + +##### Tests + +* remove socket.io test (24ebb153) + +#### v3.1.4 (2023-05-18) + +##### Chores + +* up markdown (51bf5e95) +* incrementing version number - v3.1.3 (3b4e9d3f) +* update changelog for v3.1.3 (9924fde6) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* textarea on error (469aa551) +* closes #11613, closes #11614 (d8d486a6) +* closes #11612 (8f6a68ca) +* #11572 (2910cb2b) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11612 (24bd9d4e) + +##### Refactors + +* remove unused require (05b58c70) +* remove log (ca2be0e8) + +#### v3.1.3 (2023-05-15) + +##### Chores + +* incrementing version number - v3.1.2 (40fa3489) +* update changelog for v3.1.2 (5b398782) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Continuous Integration + +* use GitHub Actions expression instead of handlebars template (#11599) (412a1ecf) +* tag with branch name if not default branch (cd7fdfce) + +##### Bug Fixes + +* #11601, dont trigger edit if chat input has text (d55cd464) +* #11600, prevent helmet crash on startup (8eed5a84) +* #11594 (85d104c3) + +##### Other Changes + +* use csrf_token in ws handshake (#11573) (51096ad2) + +#### v3.1.2 (2023-05-12) + +##### Chores + +* incrementing version number - v3.1.1 (40250733) +* update changelog for v3.1.1 (ccd6f48c) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11595, use default value (28740de7) + +#### v3.1.1 (2023-05-11) + +##### Chores + +* incrementing version number - v3.1.0 (0cb386bd) +* update changelog for v3.1.0 (2c515dc3) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Documentation Changes + +* updating changelog to move line re: breaking change down to new features (b259a000) + +##### Bug Fixes + +* failing test case (3251bca2) +* #11589, regression where a user could not confirm their email if requireEmailAddress was enabled (686ecea1) + +#### v3.1.0 (2023-05-10) + +##### Chores + +* up themes (14a5c1aa) +* up harmony (f9997b27) +* up dbsearch (2b259b20) +* up harmony (9064920f) +* up harmony (622d75d7) +* up markdown (c92a14ab) +* up harmony (475ecf42) +* up emoji (ca7ff292) +* up deps (64add3e3) +* up harmony (048fbcaa) +* up deps (f337ca65) +* up widgets (68283bcd) +* up harmony (eab2679f) +* up harmony (7f19913b) +* up themes (832fe95a) +* incrementing version number - v3.0.1 (26f6ea49) +* update changelog for v3.0.1 (fd30af10) +* whopps (ec0da196) +* up harmony (2caf4afc) +* up harmony (9e4bd4e9) +* up composer (01960f27) +* up deps (b6915247) +* up themes (4b374f04) +* up harmony (ee085c1d) +* up widgets (2588853b) +* up harmony (01669fa5) +* up harmony (c58d07f4) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.themes-harmony, nodebb.themes-persona (48a4fd50) + * fallback strings for new resources: nodebb.admin-settings-email (489163aa) + * fallback strings for new resources: nodebb.user (6a2c6de0) + * fallback strings for new resources: nodebb.admin-extend-widgets (5f728445) + * fallback strings for new resources: nodebb.groups (db802db6) + * fallback strings for new resources: nodebb.global, nodebb.pages (819ded6f) + * fallback strings for new resources: nodebb.global (6fe660a3) + * fallback strings for new resources: nodebb.error, nodebb.tags, nodebb.topic (a908bed8) + * fallback strings for new resources: nodebb.global (6e7465de) + * fallback strings for new resources: nodebb.global (28a1df16) + * fallback strings for new resources: nodebb.modules (3b0b2b2f) + * fallback strings for new resources: nodebb.global (6f573c27) + * fallback strings for new resources: nodebb.global (da5bfacd) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-appearance-customise, nodebb.admin-dashboard, nodebb.admin-extend-widgets, nodebb.admin-manage-groups, nodebb.admin-manage-privileges, nodebb.admin-settings-api, nodebb.admin-settings-navigation, nodebb.admin-settings-user, nodebb.error, nodebb.flags, nodebb.global, nodebb.groups, nodebb.modules, nodebb.pages, nodebb.post-queue, nodebb.recent, nodebb.register, nodebb.search, nodebb.tags, nodebb.topic, nodebb.user, nodebb.users (de282c0b) + * fallback strings for new resources: nodebb.topic (ab17e5c3) +* **deps:** + * update dependency eslint to v8.40.0 (#11574) (54f4aba0) + * update commitlint monorepo to v17.6.3 (#11568) (fe041498) + * update dependency jsdom to v22 (#11551) (76cc1cf3) + * update dependency jsdom to v21.1.2 (#11547) (f0d989e4) + * update commitlint monorepo to v17.6.1 (#11478) (c4c55684) + * update dependency lint-staged to v13.2.2 (#11521) (2e2bc54b) + +##### Continuous Integration + +* add 3.x docker tag (163c977d) +* only publish latest from master (c588d741) +* multi-platform docker image (#11479) (0417e5f1) + +##### Documentation Changes + +* openapi schema for newly added routes (02f567ff) + +##### New Features + +* update transifex config with new language strings (529f2d17) +* #11584 (f6b2d376) +* add helper to convert isostrings to localeString (e1bb277f) +* up emoji, remove title parse code (78f79347) +* add getSortedSetMembersWithScores (#11579) (f083cd55) +* add app.newReply (101fe81d) +* expiration date for widgets (fbf44a10) +* closes #11549, new error pages (83fca316) +* write API shorthand to query post routes by their topic index (requires tid in either query string or request body) (d814e281) +* allow tag editing from topic tools (e3551d80) +* #11537, copy ip on click (4aa87366) +* #7096, improve chat editing (eb0c77fd) +* Change Date translation string (e42967d7) +* #11431 (3099d57f) +* add missing i18n (e83a9a72) +* show even uninstalled active plugins if set via config (2bfdd761) +* add option to autoinstall plugins on setup (74cb2243) +* closes #11428, add a copy code button to code blocks (0a292fc1) +* closes #11432, use edited time if its greater (c3854b78) +* move topic thumb to template (84a78c2d) +* open topic thumbs on click in a bootbox dialog instead of opening in same page; complements nodebb/nodebb-theme-harmony#12 (04219c4c) +* closes #11424, add category selector to fork modal (#11491) (6b51dd5a) +* started work on porting socket methods to write API (f2082d7d) + +##### Bug Fixes + +* reset password (8a1ec4d6) +* strip html tags from browser title (e1473bcc) +* chat ip button not doing anything if clicked outside of icon (f974c230) +* add an additional check on page load to enforce `requireEmailAddress` setting (84313712) +* selector for nav scroll (34730caf) +* gdrp checkboxes (ca93084c) +* #11570 (18e76ba5) +* closes #11559, fix some rtl issues (093ec0e8) +* closes #11561, close dialogs on escape/backdrop click (0af2b800) +* show edit indicator after an edit without reloading the page (24e0e502) +* add back removed socket method, added deprecation warnings, as there are no breaking changes allowed in v3.1.0 (cdd77480) +* closes #11511 (ec8d8ec4) +* outgoing style (e070b851) +* #11541, fix leave chat error (8e0f9ce5) +* closes #11539 (d0a15e9e) +* add check for no tids (156b8e77) +* remove positions (9f485ce6) +* scroll on edit textarea (5ead9b73) +* #11531, fix teasers (c23689d3) +* #11530, fix topic rescheduling (2720a692) +* #10594, move counter code (#11529) (5607e5bc) +* only add copy button to multiline codeblocks (619e910f) +* go back to post queue after deleting an account in post queue (#11513) (c3ebda22) +* **deps:** + * update dependency helmet to v6.2.0 (#11576) (77b05b73) + * update dependency terser-webpack-plugin to v5.3.8 (#11575) (f6db5f60) + * update dependency nodebb-theme-persona to v13.0.63 (#11571) (84548edb) + * update dependency mongodb to v5.4.0 (#11569) (bac0b7b2) + * update dependency @isaacs/ttlcache to v1.4.0 (#11567) (ae7547e2) + * update dependency nodebb-theme-persona to v13.0.61 (#11566) (5f4197a9) + * update dependency nodebb-theme-harmony to v1.0.15 (#11565) (e630cf25) + * update dependency ace-builds to v1.19.0 (#11557) (0813ee78) + * update dependency webpack to v5.82.0 (#11564) (cdebc0d1) + * update dependency nodebb-plugin-spam-be-gone to v2.0.7 (#11563) (80bcd938) + * update dependency nodebb-theme-harmony to v1.0.11 (#11556) (904adf57) + * update dependency @socket.io/redis-adapter to v8.2.0 (#11555) (700d1da9) + * update dependency nodebb-plugin-composer-default to v10.1.4 (#11552) (efadd714) + * update dependency nodebb-plugin-emoji to v5.0.8 (#11550) (602f0520) + * update dependency nodebb-plugin-mentions to v4.1.1 (#11548) (72bc471e) + * update dependency nodebb-widget-essentials to v7.0.11 (#11536) (e0f0c08a) + * bump composer-default, closes #11534 (b0005f18) + * update dependency sharp to v0.32.1 (#11527) (ce05e743) + * update dependency yargs to v17.7.2 (#11528) (1d7e981f) + * update dependency webpack to v5.81.0 (#11523) (e9d30f76) + * update dependency nodebb-plugin-emoji to v5.0.7 (#11522) (81799777) + * update dependency nodebb-plugin-mentions to v4.1.0 (#11518) (42bd1a63) + * update dependency lru-cache to v9.1.1 (#11493) (d4bf0ae7) + * update dependency webpack to v5.80.0 (#11503) (6413efbb) + * update dependency mongodb to v5.3.0 (#11496) (e55f1b55) + * update dependency sass to v1.62.1 (#11517) (d8829872) + +##### Other Changes + +* fix comma (073f4d37) + +##### Refactors + +* removed parsing for taskbar (e832d365) +* move to modals (8e63e43a) +* topic mark read/unread routes (36895421) +* migrate `posts.getReplies` to write API (69b40938) +* deprecate socket method posts.getPidIndex (ee9f53f1) +* if position (87047210) +* remove position classes (503fab51) + +##### Tests + +* added test cases for #11562 (393a8913) +* fix assert.reject calls (e0db9a89) +* fix brackets (0c20d7cd) +* remove log (9800d65a) +* increase delay after export (8a359d63) +* replace calls to getReplies socket call to api method (82b4984b) +* fix group tests (b891c5ac) + +#### v3.0.1 (2023-05-02) + +##### Chores + +* incrementing version number - v3.0.0 (224e08cd) +* update changelog for v3.0.0 (56ad381f) + +##### Bug Fixes + +* #11554, email requirement bypass by sending in whitespace (2b8dd3d2) +* update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5) +* #11545, wrong message shown to new users re: email confirmation (2b70063e) +* black on red coloration on error when a bad reset code is received (604a8f7e) +* use query param sort over user setting if it's set (9484ddc3) + +#### v3.0.0 (2023-04-26) + +##### Breaking Changes + +* #11426, proper v3 style error on maintenance mode [breaking] (2615c1e5) +* #11362, regular mods are also subject to post queue [breaking] (c843984d) + +##### Chores + +* **deps:** + * update dependency eslint to v8.39.0 (#11507) (e74e76b1) + * update coverallsapp/github-action action to v2.1.2 (#11497) (fec552d2) + * update coverallsapp/github-action action to v2.1.1 (#11494) (f8ae6ef7) + * update dependency sass-embedded to v1.62.0 (#11467) (1dc6eb51) + * update coverallsapp/github-action action to v2.1.0 (#11458) (88b02d90) + * update dependency eslint to v8.38.0 (#11448) (afa37d6d) + * update dependency sass-embedded to v1.61.0 (#11442) (c7ccf9b8) + * update dependency lint-staged to v13.2.1 (#11444) (1a888f50) + * update dependency eslint to v8.37.0 (#11410) (defc01d9) + * update dependency @commitlint/cli to v17.5.1 (#11408) (0e57afa9) + * update dependency sass-embedded to v1.60.0 (#11392) (034666b4) + * update dependency @commitlint/cli to v17.5.0 (#11384) (69a7bfbe) + * update postgres docker tag to v15 (#10976) (f286b66f) + * update dependency @apidevtools/swagger-parser to v10 (#11207) (f21c8ca4) + * update docker/build-push-action action to v4 (#11245) (8ddb302f) + * update dependency sass-embedded to v1.59.3 (#11371) (2cde7231) + * update coverallsapp/github-action action to v2 (#11369) (a5a4b307) + * update dependency jsdom to v21.1.1 (#11355) (ae53a6e0) + * update dependency eslint to v8.36.0 (#11349) (50f14768) + * update dependency lint-staged to v13.2.0 (#11346) (d8f787eb) + * update dependency jquery to v3.6.4 (#11339) (87be2694) + * update coverallsapp/github-action action to v1.2.4 (#11323) (e8e35de3) + * update dependency eslint to v8.35.0 (#11324) (f155eedb) + * update commitlint monorepo to v17.4.4 (#11317) (a4aeee96) + * update dependency lint-staged to v13.1.2 (#11298) (45c3b9df) + * update dependency lint-staged to v13.1.1 (#11268) (4d68b0d4) + * update dependency eslint to v8.34.0 (#11291) (330f7ec8) + * update commitlint monorepo to v17.4.3 (#11293) (558c1c98) + * update dependency grunt to v1.6.1 (#11244) (9f0c352e) + * update dependency eslint to v8.33.0 (#11243) (eeca887b) + * update dependency jsdom to v21.1.0 (#11202) (09712b57) + * update commitlint monorepo to v17.4.2 (#11186) (5648c8ea) + * update dependency eslint to v8.32.0 (#11189) (56731d89) + * update dependency @apidevtools/swagger-parser to v9.0.1 (c1785080) + * update dependency eslint-plugin-import to v2.27.5 (f8461538) + * update dependency @commitlint/cli to v17.4.1 (#11137) (66b41d67) + * update dependency jsdom to v21 (#11134) (7905d573) + * update commitlint monorepo to v17.4.0 (#11123) (2ea1510f) + * update dependency husky to v8.0.3 (19c2b350) + * update dependency eslint to v8.31.0 (#11118) (8f83f790) + * update dependency jquery to v3.6.3 (#11107) (0665834d) + * update dependency eslint to v8.30.0 (#11102) (18bcc3cf) + * update dependency mocha to v10.2.0 (#11094) (ad96a4d8) + * update dependency lint-staged to v13.1.0 (#11082) (7a1c258d) + * update dependency eslint to v8.29.0 (#11074) (49143328) + * update dependency lint-staged to v13.0.4 (#11064) (ac14099b) +* up harmony (a405343d) +* up deps (1767fe3d) +* up composer (0962c063) +* up harmony (2c91c4e1) +* up harmony (cef9e791) +* up harmony (bea1826f) +* up harmony (52f32b0b) +* up widgets (22cb918c) +* up deps (445a4752) +* up composer (d1b9f83d) +* up harmony (d5636df2) +* up harmony (1fcbee0f) +* up harmony (4363c0bb) +* up harmony (24c24e6c) +* up harmony (eff9f98d) +* up harmony (9020cd40) +* up harmony (5dc1d6d5) +* up harmony (b912a132) +* up harmony (6962d206) +* rc.2 (654abb48) +* harmony beta.102 (3a50ad3a) +* up harmony (90e2e0bf) +* up harmony (0e3d34cc) +* up harmony (5cc1dd51) +* up harmony (e18d0df8) +* up harmony (4fb021a7) +* up harmony (ec106d91) +* up harmony (f1f32a47) +* up deps (08d159f5) +* up harmony (fe73c007) +* up harmony (764aca62) +* up harmony (2d75625b) +* up harmony (cc138c93) +* up harmony (a44f170a) +* up harmony (80f7dce8) +* remove logs (68db271d) +* up harmony (3f834480) +* up themes (7b7f473e) +* up harmony (361441bd) +* bump version tag for RC (e6e08d56) +* up harmony (4305c0a1) +* up rimraf to 4.x (#11377) (1502068e) +* up connect-redis to 7.x, drop node 14 (#11376) (fafa1304) +* up harmony (7d831f0b) +* up mongo deps (#11375) (5db037f1) +* add back missing dep upgrades (95ab5c41) +* fallbacks for new language string (830a20f1) +* up jquery (babe7fac) +* **i18n:** + * fallback strings for new resources: nodebb.topic (30234cf7) + * fallback strings for new resources: nodebb.error (026f2d94) + * fallback strings for new resources: nodebb.global (7ff9e494) + * fallback strings for new resources: nodebb.error (3bcfef5e) + * fallback strings for new resources: nodebb.recent (d1789206) + * fallback strings for new resources: nodebb.topic (04652ceb) + * fallback strings for new resources: nodebb.post-queue (eaa5454f) + * fallback strings for new resources: nodebb.user (92ec5bd9) + * fallback strings for new resources: nodebb.admin-settings-api (44c2d402) + * fallback strings for new resources: nodebb.admin-dashboard (58552300) + * fallback strings for new resources: nodebb.post-queue (7439d0a6) + * fallback strings for new resources: nodebb.error (7bc22a59) + * fallback strings for new resources: nodebb.admin-settings-user (0767ed57) + * fallback strings for new resources: nodebb.admin-settings-email (d8b45c61) + * fallback strings for new resources: nodebb.admin-settings-email (80cf05d8) + +##### Documentation Changes + +* update api introductions (5ab4d2fc) +* openapi schema for newly added routes (be323255) +* update readme with new screenshot and updated copy for Harmony (7599870f) +* fix openapi spec for new property in post queue route (ddd03248) + +##### New Features + +* add hits/sec for cache (94f2e508) +* i18n post-later (655a11d0) +* update mkdirp to 3.x, closes #11455 (132476d5) +* update rimraf to 5.x, closes #11456 (43c6087b) +* update lru-cache to 9.x, closes #11454 (c3cedefe) +* #11420, add new GET routes to retrieve pending and invited members of a group, plus accept/reject pending (0788fb51) +* fallbacks for social.json (ac2aefd8) +* add social.json #11419 (c22c6e12) +* allow multiple topic selects in topic-list (645ebec8) +* update thumbs modal styling (c0b62346) +* add support for selected topic count (69f24ed9) +* change chat notification delivery (2c5a5bf3) +* add placeholder for category search (9c0996e4) +* closes #11139, move sort settings to user settings page (77ddfc64) +* display when an api key was last used, in ACP, #10873 (40222984) +* log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper (efa64032) +* add rel="author" to topic route (4cf04f06) +* search dashboard time range (ebb5d2d2) +* allow file uploads on mobile chat (79731735) +* api v3 route to add email to user, optionally bypassing validation email, closes #11009 (fdc41646) +* fire filter:topics.getUnreadTids even if there are no urnead topics (b81fd81a) +* add force flag to plugin install in cli (#11089) (d447236b) +* update transifex config (for use with new cli) (21a366ec) +* integrating basic client-side form validity checking in settings v1 and v2 (07a3cee6) +* add ./nodebb install (6fe87975) + +##### Bug Fixes + +* bump mentions and harmony (d2066f59) +* #11512, filter by cid (e8fb6711) +* closes #11511, reset skin if it was removed from bootswatch (7d7904b0) +* closes #11508, update selector (9894d05f) +* add composer:showHelpTab to api (5c26cb58) +* numeric strings in mongo (#11498) (6bed65dd) +* regression in toolmodal category selector (91851364) +* don't crash if taskbar.tasklist is not defined yet (5feb509b) +* closes #11473, kudos to @pitaj (57d64b35) +* closes #11466 (59b14978) +* #11438, show flag history to mods (6eb1dd86) +* topic thumbnail removal error Relaxed DOM selector to accommodate changed tpl (70f4d7f0) +* upload modal error handler (dd8719a1) +* #11451 , use bookmark from localstorage for guests (2235f6c2) +* closes #11446, add alert-link to 403,404,400 messages (2830d681) +* closes #11447, fix timestamp of fork event (0cd657ff) +* #11440, update timestamp on lastpost button (0e5ae212) +* throw generic not-allowed error on groups.join if a non-owner tries to add another user to a group (0fc9fdd5) +* remove socketGroups.addMember; update admin checks to allow admin:groups privilege, hide add member controls if not admin (18447b06) +* remove socketGroups.kick (f043dcec) +* remove socketGroups.issueMassInvite (9d49ec60) +* handle client-side acceptAll and rejectAll (b53f92fa) +* use api routes for group accept/reject (34d99c15) +* updating user bookmark when entering topic at the end from teaser (cc1c493b) +* closes #11437, link to queued post from event (8680ea4d) +* direct replies on dynamic posts (5d9b23ca) +* topic labels on topics_list (2615192f) +* #11396, removal of base_templates_path variable (7cb2e02c) +* dont show search input if user doesn't have tag search priv (a83734fb) +* add missing delete (2a9b3ee4) +* buttons for post queue content editing (33ad5a72) +* #9397, trash the active session on account lockout, if there is one (03e05b51) +* #11381, bug where the call to `action:settings.sorted-list.itemLoaded` did not properly pass in the correct element (2614b95c) +* #11357 clear cache on thumb remove (1e7f32b1) +* missing postAtIndex handling (e6d7e55f) +* update main post timestamp when rescheduling (5a2c6c1c) +* add back req.query fallback for backwards compatibility (83d36336) +* update csrf parser to accept csrf_token form value if present (ea95668a) +* schema changes for #11206 (9007ace1) +* new language keys for #11206 (966724ad) +* remove unneeded assignment, as req and locals will not likely ever be completely reassigned (a69bc2cf) +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (0a691e67) +* relax selectors for client-side form validation so that all form elements are checked (52e7ad4d) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (13738888) +* replace input type number with text/pattern (cde4c6ac) +* **deps:** + * update dependency mkdirp to v3.0.1 (#11516) (f66eba29) + * update dependency semver to v7.5.0 (#11492) (a8a2ebbe) + * update dependency esbuild to v0.17.18 (#11509) (f0408ea9) + * update dependency nodebb-plugin-emoji to v5.0.6 (#11510) (04f77ada) + * update dependency postcss to v8.4.23 (#11504) (967b9840) + * update dependency ace-builds to v1.18.0 (#11505) (22f6b8f6) + * update dependency nodebb-plugin-2factor to v7.0.5 (#11495) (666fe04e) + * update dependency lru-cache to v9.0.3 (#11481) (d2b8512c) + * update dependency commander to v10.0.1 (#11486) (ba2b7f5b) + * update dependency ioredis to v5.3.2 (#11487) (90fca08e) + * update dependency postcss to v8.4.22 (#11488) (fe4e9383) + * update dependency esbuild to v0.17.17 (#11489) (4cd8c2ff) + * update dependency webpack to v5.79.0 (#11476) (455de50d) + * update dependency ace-builds to v1.17.0 (#11472) (550d125d) + * update dependency helmet to v6.1.5 (#11464) (4e5fbc54) + * update dependency sass to v1.62.0 (#11468) (c1164544) + * update dependency semver to v7.4.0 (#11461) (1ab7fdc8) + * update dependency rtlcss to v4.1.0 (#11460) (c0d92961) + * update dependency helmet to v6.1.4 (#11459) (415f8781) + * update dependency helmet to v6.1.3 (#11452) (d165164a) + * update dependency esbuild to v0.17.16 (#11457) (bdacd1c6) + * update dependency helmet to v6.1.1 (#11449) (5d880e9d) + * update dependency lru-cache to v8.0.5 (#11434) (d7125a0c) + * update dependency webpack to v5.78.0 (#11436) (62a84f63) + * update dependency sass to v1.61.0 (#11443) (248c5f62) + * bump mentions (f49fc5ca) + * update dependency mongodb to v5.2.0 (#11433) (4bede9fb) + * update dependency nodebb-plugin-composer-default to v10.0.44 (#11430) (569944f1) + * update dependency esbuild to v0.17.15 (#11429) (0187e177) + * update dependency nodebb-plugin-mentions to v4.0.5 (#11417) (1ac37b43) + * update dependency webpack to v5.77.0 (#11415) (e9039018) + * update dependency nodebb-rewards-essentials to v0.2.3 (#11406) (9f5dc9ad) + * update dependency nodebb-theme-persona to v13.0.55 (#11407) (609c0558) + * update dependency esbuild to v0.17.14 (#11399) (89060027) + * update dependency nodebb-theme-persona to v13.0.53 (#11401) (415da6c2) + * update dependency sharp to v0.32.0 (#11395) (b17ab944) + * update dependency esbuild to v0.17.13 (#11397) (4ab60c88) + * update dependency csrf-sync to v4.0.1 (#11398) (e753603e) + * update dependency @popperjs/core to v2.11.7 (#11394) (6947e60b) + * update dependency sass to v1.60.0 (#11391) (400a7abf) + * update dependency rimraf to v4.4.1 (#11388) (5d2900e9) + * update dependency @isaacs/ttlcache to v1.2.2 (#11389) (96305e12) + * update dependency html-to-text to v9.0.5 (#11390) (5a7104f1) + * update dependency helmet to v6 (#10891) (97f08135) + * update dependency nodebb-widget-essentials to v7.0.7 (#11387) (98b58bcc) + * update dependency mkdirp to v2.1.6 (#11386) (8c07a8d7) + * update dependency webpack to v5.76.3 (#11385) (7f54709d) + * update dependency fs-extra to v11.1.1 (#11380) (7c780210) + * update dependency commander to v10 (#11208) (a2d3f674) + * update dependency lru-cache to v8.0.4 (#11378) (238a7809) + * update dependency lru-cache to v8 (#11356) (0d236adf) + * update dependency ace-builds to v1.16.0 (#11372) (75436dc0) + * update dependency sass to v1.59.3 (#11373) (b0b060da) + * update dependency nodebb-plugin-spam-be-gone to v2.0.6 (#11370) (6edb908b) + * update dependency cron to v2.3.0 (#11368) (ae9d6d77) + * update dependency graceful-fs to v4.2.11 (#11367) (f90696de) + * update dependency esbuild to v0.17.12 (#11366) (2273a822) + * update dependency webpack to v5.76.2 (#11361) (a5f19ee6) + * update dependency webpack to v5.76.1 (#11348) (967c0ccf) + * update dependency autoprefixer to v10.4.14 (#11344) (5afea4b7) + * update dependency terser-webpack-plugin to v5.3.7 (#11345) (29fbecfc) + * update dependency webpack to v5.76.0 (#11341) (b543a0d0) + * update dependency nodebb-plugin-spam-be-gone to v1.0.3 (#11340) (5fa38fbe) + * update dependency pg-cursor to v2.9.0 (#11338) (34cf64f5) + * update dependency pg to v8.10.0 (#11337) (9a7f73ca) + * update dependency mkdirp to v2.1.5 (#11336) (a85276a6) + * update dependency lru-cache to v7.18.3 (#11335) (b70716f1) + * update dependency esbuild to v0.17.11 (#11333) (18b3ac6e) + * update dependency ace-builds to v1.15.3 (#11332) (b8efa466) + * update dependency mkdirp to v2.1.4 (#11330) (a6f22afa) + * update dependency lru-cache to v7.18.1 (#11327) (b526d42e) + * update dependency nodebb-plugin-mentions to v3.0.13 (#11320) (22a3ba65) + * update dependency yargs to v17.7.1 (#11316) (b75212f7) + * update dependency sanitize-html to v2.10.0 (#11319) (3d855842) + * update socket.io packages to v4.6.1 (#11318) (17c2467d) + * update dependency lru-cache to v7.17.0 (#11315) (4211e4dd) + * update dependency body-parser to v1.20.2 (#11313) (02d69920) + * update dependency esbuild to v0.17.10 (#11314) (865e1506) + * bump theme versions (c76e344f) + * update dependency lru-cache to v7.15.0 (#11305) (affac569) + * update dependency ace-builds to v1.15.2 (#11304) (01b2915e) + * update dependency nodebb-plugin-composer-default to v9.2.5 (#11301) (0ad5f476) + * update dependency logrotate-stream to v0.2.9 (#11300) (e29b9b1d) + * update dependency ace-builds to v1.15.1 (#11299) (1a0910bb) + * update dependency ioredis to v5.3.1 (#11294) (75bd6caa) + * update socket.io packages to v4.6.0 (#11272) (b9bb0532) + * update dependency html-to-text to v9.0.4 (#11290) (3ef49223) + * update dependency benchpressjs to v2.5.1 (#11270) (e4e01f47) + * update dependency esbuild to v0.17.8 (#11289) (2f5f47ea) + * update dependency @socket.io/redis-adapter to v8.1.0 (#11269) (7abcf80a) + * update dependency mongodb to v4.14.0 (#11271) (98395d18) + * update dependency esbuild to v0.17.6 (#11266) (145dcb2f) + * update dependency sanitize-html to v2.9.0 (#11261) (0e9cfcad) + * update dependency validator to v13.9.0 (#11262) (7cdbf77d) + * bump persona theme (5dc4d285) + * update dependency pg-cursor to v2.8.0 (#11236) (6c872a05) + * update dependency nodebb-rewards-essentials to v0.2.2 (#11234) (c271762c) + * update dependency pg to v8.9.0 (#11235) (972d1770) + * update dependency esbuild to v0.17.5 (#11233) (1a28598b) + * update dependency ace-builds to v1.15.0 (#11223) (9b34ab66) + * update dependency ioredis to v5.3.0 (#11224) (37493514) + * update dependency nodebb-theme-persona to v12.1.14 (#11221) (94074e90) + * update dependency nodemailer to v6.9.1 (#11222) (0e0176a1) + * update dependency mkdirp to v2 (#11211) (466c7a3a) + * update dependency ioredis to v5.2.6 (#11210) (557198a3) + * update dependency nodemailer to v6.9.0 (#11205) (69f4ff75) + * update dependency ioredis to v5.2.5 (#11187) (a2b00534) + * update dependency esbuild to v0.17.4 (#11204) (d0e3eadb) + * update dependency nodebb-theme-persona to v12.1.13 (2994c42b) + * update dependency @socket.io/redis-adapter to v8.0.1 (aa873e80) + * update dependency jsonwebtoken to v9 (79cd4a36) + * update dependency nodebb-plugin-2factor to v5.1.3 (8dc96894) + * update dependency cron to v2.2.0 (#11140) (aaf9abed) + * update dependency esbuild to v0.16.16 (#11135) (4b147ee2) + * update dependency commander to v9.5.0 (#11133) (aced93de) + * update dependency postcss to v8.4.21 (#11130) (aa6788b7) + * update dependency esbuild to v0.16.15 (#11132) (581960de) + * update dependency esbuild to v0.16.14 (#11127) (95897197) + * update dependency esbuild to v0.16.13 (#11121) (ca434647) + * update dependency esbuild to v0.16.12 (#11116) (e3fa0152) + * update dependency esbuild to v0.16.11 (0ec6d6c2) + * update dependency nodebb-theme-slick to v2.0.4 (#11113) (a634481b) + * update dependency esbuild to v0.16.10 (#11104) (048f5674) + * update dependency mongodb to v4.13.0 (#11105) (3f5bda7e) + * update dependency esbuild to v0.16.8 (#11101) (db7ea20c) + * update dependency sanitize-html to v2.8.0 (#11098) (65241b1a) + * update dependency ace-builds to v1.14.0 (#11095) (10056e5b) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (cc376656) + * update dependency postcss to v8.4.20 (#11097) (d4f04511) + * update dependency compare-versions to v5.0.3 (#11092) (32fecad7) + * update dependency html-to-text to v9.0.3 (#11093) (6aab1c58) + * update dependency @socket.io/redis-adapter to v8 (#11084) (a82c6743) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (6774b35f) + * update dependency esbuild to v0.16.7 (#11086) (27a049fb) + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (c749f38c) + * update dependency esbuild to v0.16.3 (#11083) (8eb880f6) + * update dependency html-to-text to v9 (#11075) (aa3a51b1) + * update dependency ace-builds to v1.13.2 (#11080) (67ede5c6) + * update dependency fs-extra to v11 (#11072) (fa3e6540) + * update dependency esbuild to v0.15.16 (#11069) (ced87417) + * update dependency mongodb to v4.12.1 (#11062) (3c5b0210) + * update dependency mongodb to v4.12.1 (#11062) (643dce38) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11501 (2055aae1) +* //github.com/NodeBB/NodeBB/issues/11500 (9ec5f1f5) +* remove chalk (a0bac74e) +* //github.com/NodeBB/NodeBB/issues/11329 (661a6e04) +* satisfy lint errors (bb0397cb) + +##### Refactors + +* get rid of floats in deleted-message.tpl (f055b7fb) +* remove log, to much noise (9806d89f) +* group invitations; issuing, accepting, rejecting; now via API (18c45b44) +* replace rimraf glob doesn't work on windows (d36aad07) +* simple load new posts (45addcf5) +* post-queue frontend logic (ddcdaacc) +* `helpers.loginUser` to be fully async (fecdab8b) +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (14091de8) + +##### Tests + +* Blob doesnt exist in node 16 (3c6f225a) +* no need for this check (bb4be716) +* fix utils (eacbad7f) +* missing utils tests (699c3bdf) +* remove history test (9c162186) +* fix escaping (c5e83eb9) +* fix lang test (a8efe3df) +* fix openapi schema to reflect new route (92073cf2) +* fix broken test (38175b5e) + +#### v2.8.12 (2023-04-26) + +##### Chores + +* removing superfluous changelog items (5343d2a0) +* incrementing version number - v2.8.11 (2ec81eff) +* update changelog for v2.8.11 (f2ca93f6) +* incrementing version number - v2.8.10 (5b7c3671) +* incrementing version number - v2.8.9 (57f14e41) +* incrementing version number - v2.8.8 (b331b942) +* incrementing version number - v2.8.7 (3f8248d6) +* incrementing version number - v2.8.6 (af6ce447) +* incrementing version number - v2.8.5 (bff5ce2d) +* incrementing version number - v2.8.4 (a46b2bbc) +* incrementing version number - v2.8.3 (c20b20a7) +* incrementing version number - v2.8.2 (050e43f8) +* incrementing version number - v2.8.1 (727f879e) +* incrementing version number - v2.8.0 (8e77673d) +* incrementing version number - v2.7.0 (96cc0617) +* incrementing version number - v2.6.1 (7e52a7a5) +* incrementing version number - v2.6.0 (e7fcf482) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### New Features + +* name theme on error:theme-not-set-in-configuration (ae5afdbc) + +##### Bug Fixes + +* #11519, clear parent cache all the way to root (30b6bcfc) +* only remove deleted tag, closes #11515 (de2669a2) +* NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483) (c9311832) + +##### Tests + +* remove old comment (21fb8590) + +#### v2.8.11 (2023-04-11) + +##### Chores + +* incrementing version number - v2.8.10 (5b7c3671) +* update changelog for v2.8.10 (188ec62f) + +##### Continuous Integration + +* publish to ghcr instead of docker hub (c2756728) + +##### Documentation Changes + +* update readme with new screenshot and updated copy for Harmony (67055006) + +##### Bug Fixes + +* don't crash on objects with toString property (4d2d7689) +* fire action:user.online on user login (7397873d) + +##### Tests + +* update socket.io test (e0b20658) + +#### v2.8.10 (2023-03-27) + +##### Chores + +* up composer-default (e9a8e195) +* incrementing version number - v2.8.9 (57f14e41) +* update changelog for v2.8.9 (18b2150e) + +##### Bug Fixes + +* #11403, remove loader.js crash counter logic (830f142b) +* don't crash if event name is not a string (37b48b82) +* closes #11173, move cache clear code (c2961ad4) + +##### Other Changes + +* fix arrow (1aff9cad) +* whitespace (894f392b) + +#### v2.8.9 (2023-03-19) + +##### Chores + +* up cron (73a50d17) +* incrementing version number - v2.8.8 (b331b942) +* update changelog for v2.8.8 (c03d5db7) + +##### Bug Fixes + +* thumb remove on windows, closes #11357 (767c1d1f) +* #11357 clear cache on thumb remove (a3a38e4b) +* closes #11352, try/catch rss feeds (cfd50272) +* closes #11343, don't crash if tags array is empty (56427e4f) + +##### Code Style Changes + +* more fixes (93aa43f7) + +##### Tests + +* openapi for thumbs (9e685e65) + +#### v2.8.8 (2023-03-09) + +##### Chores + +* incrementing version number - v2.8.7 (3f8248d6) +* update changelog for v2.8.7 (2ca38e7b) + +##### Bug Fixes + +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (22fc8fe3) +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (17d0b40e) +* tag filtering when changing filter to watched topics (1545223e) +* get cid from pid instead of passing in (f054a4f4) +* closes #11331, allow 0 length content if set to 0 in acp (8c762d32) + +#### v2.8.7 (2023-03-01) + +##### Chores + +* incrementing version number - v2.8.6 (af6ce447) +* update changelog for v2.8.6 (f3306d03) + +##### Documentation Changes + +* update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d) + +##### Bug Fixes + +* display 25 topics on category feed (79155109) +* object destructuring overwriting type parameter (ec58700f) +* alert on page load (8cf4a6f6) +* show error alert if password change fails (3bd9a871) +* update main post timestamp when rescheduling (edd2fc38) +* show admins/globalmods if content is purged (326b9268) +* email expiry timestamps (e335d0f6) +* #11259, clean old emails when updating via admin (#11260) (845c8013) +* #11257, onSuccessfulLogin called with improper uid (7a5bcc21) + +##### Tests + +* add dummy emailer hook in authentication test (1b29dbb6) + +#### v2.8.6 (2023-02-03) + +##### Chores + +* **i18n:** fallback strings for new resources: nodebb.error (8335f90a) +* incrementing version number - v2.8.5 (bff5ce2d) +* update changelog for v2.8.5 (24e58c28) + +##### New Features + +* add sitemap filter hooks for categories/topic pages (bf92ee0e) +* closes #11241, add missing error lang keys (c241baf6) +* #11240, only show relevant users in flags assignee list (0713482b) + +##### Bug Fixes + +* #11254, return check for reroll property (202378b9) +* closes #11249, notification uses displayname (705cd13a) +* wrong link to topics in acp dashboard (b5598a6e) +* https://github.com/NodeBB/NodeBB/issues/11239 (1d3c0e5a) +* notif filter selecte field (6d819b05) + +##### Other Changes + +* remove unused (d68352cc) + +#### v2.8.5 (2023-01-27) + +##### Chores + +* incrementing version number - v2.8.4 (a46b2bbc) +* update changelog for v2.8.4 (c13f0e21) + +##### Bug Fixes + +* import resolution within plugin modules (#11219) (f6c96948) + +#### v2.8.4 (2023-01-26) + +##### Chores + +* incrementing version number - v2.8.3 (c20b20a7) +* update changelog for v2.8.3 (eb2841ee) + +#### v2.8.3 (2023-01-25) + +##### Chores + +* remove extraneous lines from changelog (48c9f447) +* incrementing version number - v2.8.2 (050e43f8) +* update changelog for v2.8.2 (66aa3169) + +##### Bug Fixes + +* import resolution within plugin modules (#11200) (89e059a0) +* #11195, allow users with admin:users privilege to delete users in acp (0bffd3d9) +* #11194, allow access to sub dashboard pages (7d04e952) +* #11136, tests, and returning the proper number of arrays (459bc523) +* #11136, only show mods of active categories when getModeratorUids is called (39e009c0) +* closes #11173, clear require cache if wrong dependency is installed (747cb1f0) +* **deps:** + * downgrade swagger-parser to v9 (00e48803) + * pinning sub dependency json-schema-ref-parser to 9.0.9 (9c250b78) + +##### Reverts + +* a788bd1344825ad4759e39d6e98d8bf3695bd639 (fecd84d1) +* 9c250b78b05ca2abf31a79971ed0c60ca07664ec, fix: comment out broken test for now (a788bd13) + +##### Tests + +* fix broken test (f295174e) + +#### v2.8.2 (2023-01-13) + +##### Chores + +* incrementing version number - v2.8.1 (727f879e) +* update changelog for v2.8.1 (d17d4ec0) + +##### Bug Fixes + +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (25ae58e8) + +#### v2.8.1 (2022-12-30) + +##### Chores + +* fallbacks for new language string (8a69e740) +* remove extraneous lines from changelog (bbaf26ce) +* incrementing version number - v2.8.0 (8e77673d) +* update changelog for v2.8.0 (a5c2edb9) + +##### Bug Fixes + +* vulnerability in socket.io nested namespaces (#11117) (586eed14) +* lock post/reply similar to user.create (1ea9481a) + +#### v2.8.0 (2022-12-21) + +##### Chores + +* **deps:** + * update dependency jquery to v3.6.3 (#11107) (13a3faa0) + * update dependency eslint to v8.30.0 (#11102) (485ee130) + * update dependency mocha to v10.2.0 (#11094) (c4cc1e61) +* up jquery (3e8f5378) +* remove extraneous lines from changelog (e213dbc3) +* incrementing version number - v2.7.0 (96cc0617) +* update changelog for v2.7.0 (4701c96d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (717b3612) + * fallback strings for new resources: nodebb.admin-settings-email (4f4b4800) + +##### New Features + +* add force flag to plugin install in cli (#11089) (de31cb1a) +* integrating basic client-side form validity checking in settings v1 and v2 (33af2d9c) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.31.3 (#11110) (ef500af8) + * update dependency sanitize-html to v2.8.1 (#11109) (7ab46b78) + * update dependency esbuild to v0.16.10 (#11104) (eb6a9c47) + * update dependency mongodb to v4.13.0 (#11105) (05443dbe) + * update dependency esbuild to v0.16.8 (#11101) (18ff6caa) + * update dependency sanitize-html to v2.8.0 (#11098) (faaf09f7) + * update dependency ace-builds to v1.14.0 (#11095) (cde44587) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (5dda9a5b) + * update dependency postcss to v8.4.20 (#11097) (0a5adb41) + * update dependency compare-versions to v5.0.3 (#11092) (8b209f16) + * update dependency html-to-text to v9.0.3 (#11093) (7bcfe38e) + * update dependency @socket.io/redis-adapter to v8 (#11084) (7b9bbef5) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (7b48156c) + * update dependency esbuild to v0.16.7 (#11086) (65ef722e) + * update dependency esbuild to v0.16.3 (#11083) (4f67fc1a) + * update dependency esbuild to v0.15.16 (#11069) (22493ffb) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (896493db) +* replace input type number with text/pattern (2bc23a95) + +##### Refactors + +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (9f531f95) +* remove debug log closes #11090 (06f4801e) + +#### v2.7.0 (2022-12-14) + +##### Chores + +* added stub file in hy (9ee8502d) +* **deps:** + * update dependency lint-staged to v13.1.0 (#11082) (693d4783) + * update dependency eslint to v8.29.0 (#11074) (eab5b754) + * update dependency lint-staged to v13.0.4 (#11064) (f947ac6d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (0e319a58) + * fallback strings for new resources: nodebb.admin-settings-email (9676b192) + +##### New Features + +* update transifex config (for use with new cli) (f11094cb) +* integrating basic client-side form validity checking in settings v1 and v2 (dadbcd73) +* add ./nodebb install (4efc19d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (df3f1c5e) + * update dependency esbuild to v0.16.3 (#11083) (85d38158) + * update dependency html-to-text to v9 (#11075) (d8e9738d) + * update dependency ace-builds to v1.13.2 (#11080) (35be4594) + * update dependency fs-extra to v11 (#11072) (aafb7f6e) + * update dependency esbuild to v0.15.16 (#11069) (7bc4b836) + * update dependency mongodb to v4.12.1 (#11062) (e14d4abc) +* relax selectors for client-side form validation so that all form elements are checked (43e7c988) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (db8d3a94) +* replace input type number with text/pattern (45ae31f8) +* categories.js not showing custom privileges (#10856) (8c4d6bbe) +* #11077, add admin uploads paths to priv mapping (07a02125) + +##### Tests + +* dont try to load admin upload routes (c2bb2b30) + +#### v2.6.1 (2022-11-28) + +##### Chores + +* incrementing version number - v2.6.0 (e7fcf482) +* update changelog for v2.6.0 (eedd84ae) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Documentation Changes + +* remote extraneous lines from changelog (8a15e58d) + +##### Bug Fixes + +* prototype vulnerability in socket.io onMessage (48d14392) +* #11066, fix custom privilege/path in routePrefixMap (0e495f9e) + +##### Refactors + +* not deprecated on 2.x (91c2e5ac) + +#### v2.6.0 (2022-11-23) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-advanced (1d7dbf14) + * fallback strings for new resources: nodebb.admin-settings-advanced (05b6758e) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.admin-settings-email (9ad3b214) +* **deps:** + * update commitlint monorepo to v17.3.0 (#11058) (f4784205) + * update dependency eslint to v8.28.0 (#11059) (d480f26b) + * update dependency jsdom to v20.0.3 (#11054) (5750ded1) + * update dependency jquery to v3.6.1 (#11048) (6611d44c) + * update dependency eslint-config-nodebb to v0.2.1 (#11043) (07c81d5d) + * update commitlint monorepo to v17.2.0 (#11026) (26be289e) + * update dependency husky to v8.0.2 (#11018) (4b3978be) + * update dependency eslint to v8.27.0 (#11004) (4fcef7c5) + * update dependency jsdom to v20.0.2 (#11014) (a6e4fee1) + * update dependency mocha to v10.1.0 (#10980) (ffa117ab) + * update dependency eslint to v8.25.0 (3719233a) + * update dependency jsdom to v20.0.1 (#10934) (241b7c4f) + * update dependency eslint to v8.24.0 (#10922) (8bcbff33) + * update commitlint monorepo (#10888) (3f30056a) + * update postgres docker tag to v14 (#10829) (5aa55d29) + * update dependency eslint to v8.23.1 (#10885) (0c6fb6e3) +* remove derpy extra changelog bits (445f09f0) +* incrementing version number - v2.5.8 (dec0e7de) +* update changelog for v2.5.8 (c9cd8975) + +##### New Features + +* add permissions-policy header (864fe0f9) +* allow groups to be exempt from maintenance mode (3c85b944) +* add search data to filter:search.inContent (be92be4e) +* add relevant topic events to post objects (a584dae6) +* client-side hooks for navigator scroll action (135fe55b) +* j and k hotkeys in topic to navigate through it quickly (aeb94c32) +* a couple utility methods in navigator module to get and set count and index (9f9a835f) +* paginate recentposts.rss and (ebd7c05c) +* add quiet to action:settings.set (665f36b7) + +##### Bug Fixes + +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (110311b2) +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (fc49665f) +* #11052, add missing await (bb82eb71) +* pin jquery version for all packages that include it as a subdependency (a87f64b4) +* #10877, define a resolution for jquery subdependency of timeago (5aaebdd3) +* #11044, allow banned users to post (abcfb631) +* check schedule privilege, closes #11032 (61090615) +* mixing of old and new bch syntax (1e484643) +* category ordering add test (61d32bde) +* use `--omit=dev` flag for npm instead of `--production` (53d47a58) +* update nav thumb on setIndex call (thx @barisusakli) (664bc5f5) +* do not call `navigator.update()` when `scrollToElement` is explicitly passed a new index value (b7287c1e) +* race condition where `navigator.update` was called when it should not be (fa643eb8) +* be tidier and explicitly clean up ctrl-f hotkey on topic page (5b9de0e5) +* listen to -d flag on cli upgrade (fe249fa5) +* automatically remove `lang` parameter if it matches the forum default (881c7c4d) +* **deps:** + * update socket.io packages to v4.5.4 (#11061) (709ca59d) + * update dependency esbuild to v0.15.15 (#11056) (d449710e) + * update dependency nodebb-theme-persona to v12.1.12 (#11057) (18eb35a1) + * update dependency cropperjs to v1.5.13 (#11055) (13f3a048) + * update dependency nodebb-plugin-markdown to v10.1.1 (#11047) (62a60cbf) + * update dependency mongodb to v4.12.0 (#11049) (59b4d95f) + * update dependency connect-pg-simple to v8 (#11033) (ca162c04) + * update dependency ace-builds to v1.13.1 (#11045) (e0b9240d) + * update dependency esbuild to v0.15.14 (a5355d78) + * update dependency nodebb-theme-persona to v12.1.11 (2af7fd5f) + * update dependency postcss to v8.4.19 (#11028) (b94bb1bf) + * update dependency ace-builds to v1.13.0 (#11031) (313d0c32) + * update dependency webpack to v5.75.0 (#11027) (40c9cc05) + * update dependency yargs to v17.6.2 (#11025) (8d3907b5) + * update dependency lru-cache to v7.14.1 (#11023) (1ea2a32b) + * update dependency sharp to v0.31.2 (#11024) (51919f7a) + * update dependency esbuild to v0.15.13 (#11021) (c4a1905b) + * update dependency ioredis to v5.2.4 (#11022) (e144debb) + * update dependency ace-builds to v1.12.5 (#11019) (de507f72) + * update dependency mongodb to v4.11.0 (#10994) (9ca2482a) + * update dependency autoprefixer to v10.4.13 (#11020) (35d67ad3) + * update dependency nodebb-plugin-composer-default to v9.2.4 (#10998) (5a5771e1) + * update dependency sanitize-html to v2.7.3 (#11008) (73a60854) + * update dependency nodebb-plugin-composer-default to v9.2.3 (#10997) (ee4fde13) + * update dependency esbuild to v0.15.12 (#10996) (29fddd65) + * update dependency nodebb-plugin-composer-default to v9.2.2 (1fc2f1e8) + * update dependency nodebb-theme-persona to v12.1.9 (6471b698) + * bump composer-default (7b9e0847) + * update dependency ace-builds to v1.12.3 (1e930f9d) + * update dependency nodebb-theme-persona to v12.1.8 (#10982) (9900e5f4) + * update dependency ace-builds to v1.12.2 (4260f0c2) + * update dependency ace-builds to v1.12.1 (6485bc25) + * update dependency ace-builds to v1.12.0 (#10978) (00ce8fd8) + * update socket.io packages to v4.5.3 (#10977) (fb41fbe7) + * update dependency nodebb-plugin-emoji to v4.0.6 (dcca3397) + * update dependency esbuild to v0.15.11 (ff69c3e1) + * update dependency @isaacs/ttlcache to v1.2.1 (647bbd57) + * update dependency nodebb-plugin-mentions to v3.0.12 (60d0145b) + * update dependency postcss to v8.4.18 (3c2a636c) + * update dependency nodebb-plugin-spam-be-gone to v1.0.2 (#10958) (b68faa09) + * update dependency body-parser to v1.20.1 (#10941) (0f63947b) + * update dependency express to v4.18.2 (#10948) (ff53064c) + * update dependency semver to v7.3.8 (#10937) (1b89b661) + * update dependency nodebb-theme-persona to v12.1.7 (1873b527) + * update dependency commander to v9.4.1 (#10928) (855a2bad) + * update dependency postcss to v8.4.17 (#10929) (d84ee308) + * update dependency nodemailer to v6.8.0 (#10925) (222ab6ae) + * update dependency yargs to v17.6.0 (#10931) (7c3c3d02) + * update dependency nodebb-plugin-spam-be-gone to v1.0.1 (#10912) (28d1844e) + * update dependency ace-builds to v1.11.2 (#10923) (87c84fe8) + * update dependency sharp to v0.31.1 (#10926) (8e23e410) + * update dependency ace-builds to v1.11.1 (#10920) (ce77605a) + * update dependency ace-builds to v1.11.0 (#10909) (d900fd17) + * update dependency autoprefixer to v10.4.12 (#10911) (54294871) + * update dependency compare-versions to v5 (#10890) (f971385b) + * bump persona #10907 (846eda0a) + * bump persona, #10907 (27c80d39) + * update dependency mongodb to v4.10.0 (#10908) (bbe7f779) + * update dependency nodebb-theme-persona to v12.1.3 (#10903) (0debc51b) + * update dependency nodebb-plugin-2factor to v5.1.1 (02fe6875) + * update dependency nodebb-theme-persona to v12.1.2 (425bf87b) + * update dependency sanitize-html to v2.7.2 (#10893) (bfeb0368) + * update dependency autoprefixer to v10.4.11 (#10892) (0758655a) + * update dependency sharp to v0.31.0 (#10887) (2836be5c) + * update socket.io packages to v4.5.2 (#10884) (22f3d0bb) + * update dependency nodebb-plugin-2factor to v5.1.0 (#10886) (335990be) + * update dependency autoprefixer to v10.4.10 (#10883) (0c2a88de) + * update dependency winston to v3.8.2 (#10882) (d911a1bf) + * update dependency pg to v8.8.0 (#10863) (01129a39) + * update dependency nodebb-plugin-emoji to v4.0.5 (#10881) (34d243e4) + * update dependency ioredis to v5.2.3 (#10861) (5e375e4a) + * update dependency pg-cursor to v2.7.4 (#10862) (86b63fab) + * update dependency mongodb to v4.9.1 (#10880) (5583ab95) + * update dependency autoprefixer to v10.4.9 (#10879) (cc6798bb) + * update dependency postcss to v8.4.16 (#10824) (8c680db5) + * update dependency jquery to v3.6.1 (#10868) (6687f49b) + * update dependency ace-builds to v1.10.1 (#10840) (c0c3ee01) + * bump composer-default to v9.2.0 (29ddeaa1) + +##### Refactors + +* don't prevent startup if staticDir is undefined (b34e859c) +* added new ajaxify method .cleanup, called before ajaxify.start. (3700174c) + +#### v2.5.8 (2022-11-09) + +##### Chores + +* really fix indents this time (c2024f34) +* fix indents (d50512e7) +* add bootstrap5 to test runner for now (be5d6d29) +* incrementing version number - v2.5.7 (5836bf4a) +* update changelog for v2.5.7 (17e948ab) + +##### New Features + +* new search hooks (b5d38bc6) +* add search data to filter:search.inContent (e3f21562) + +##### Bug Fixes + +* pass csrf_token into calls to /register/abort, #11017 (2f9d8c35) +* check for csrf token on /register/abort, + theme changes for v2.x branches of themes (55a197a7) +* upgrade script to work from 0.x to 2.x (a31ba824) +* #10519, image height in emails (673261ff) +* fallback language strings for #10987 (b9c8c02f) +* #10993, apply autoLocale middleware to guests only (6f673f80) +* check cid as well as template (9227b82e) +* revert breaking change, add back SocketUser.emailConfirm (9ee30fe7) +* in appropriately named language key `email-confirm-email2` (09f3ac65) +* correctly pass dev flag to package installer (7672194c) +* use `--omit=dev` flag for npm instead of `--production` (09cfd0bd) + +##### Refactors + +* use utils.debounce (d264c6ac) + +##### Tests + +* fix tests again (06d15391) +* fix test (c833d3cd) + +#### v2.5.7 (2022-10-14) + +##### Chores + +* incrementing version number - v2.5.6 (c7bd7dbf) +* update changelog for v2.5.6 (e92238d0) + +##### Performance Improvements + +* speed up build (dd4e9cce) + +#### v2.5.6 (2022-10-13) + +##### Chores + +* incrementing version number - v2.5.5 (3509ed94) +* update changelog for v2.5.5 (e7d0040d) + +##### Bug Fixes + +* use admin:groups priv for groups (#10960) (b879b6a0) +* https://github.com/NodeBB/NodeBB/issues/10525 (e35b0a86) + +#### v2.5.5 (2022-10-11) + +##### Chores + +* up plugins (b91ef6dd) +* incrementing version number - v2.5.4 (e83260ca) +* update changelog for v2.5.4 (aabf073c) + +#### v2.5.4 (2022-10-11) + +##### Chores + +* 🤔 (7240e8ce) +* incrementing version number - v2.5.3 (7e922936) +* update changelog for v2.5.3 (fdf240f6) + +##### Continuous Integration + +* add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi (fe0020fb) + +##### Bug Fixes + +* EEXISTS error on linux if plugin/theme overrides core js file (ebd5dcc6) +* category ordering add test (177d9048) +* crash in category drag, closes #10932 (989b55d0) +* broken flag history on flag update (803398e9) +* scroll to post if theme doesn't have top navbar (aad0a618) +* add lru-cache to checked packages, to fix upgrade issue with lru-cache (14515f60) + +#### v2.5.3 (2022-09-19) + +##### Chores + +* remove duplicate version increment lines in changelog (5dbcfef9) +* bring back treding plugins (8aa1596d) +* incrementing version number - v2.5.2 (babcd17e) +* update changelog for v2.5.2 (84b6a7c7) + +##### New Features + +* store topic title and tags in diffs (#10900) (b5dd89e1) + +##### Bug Fixes + +* #10906, allow `middleware.checkAccountPermissions` to be called with either uid or userslug in params (cf4f5447) +* #10896, unescape / in taskbar (8e2129f8) +* add back timeago to post history modal (d3e38df8) +* **deps:** bump composer-default to v9.1.1 (1d80a07e) + +##### Other Changes + +* fix lint (3d5a6b39) + +##### Performance Improvements + +* disable trending plugins, too slow due to nbbpm (b392450c) + +##### Tests + +* add back /admin/extend/plugins test (1c9c39a8) + +#### v2.5.2 (2022-09-04) + +##### Chores + +* incrementing version number - v2.5.1 (ce3aa950) +* update changelog for v2.5.1 (2b2fd4f3) + +##### Bug Fixes + +* registration regression, closes #10875 (f6f37dc1) + +##### Other Changes + +* fix lint error (b45e2413) + +##### Tests + +* disable nbbpm test temporarily (1dc79d76) + +#### v2.5.1 (2022-09-02) + +##### Chores + +* incrementing version number - v2.5.0 (01d276cb) +* update changelog for v2.5.0 (1076285d) + +##### Bug Fixes + +* missing escape on ACP category backgroundImage property (67cb7035) +* **deps:** temporarily add back old textcomplete dependencies so emoji plugin can import them (61d1e9e0) + +#### v2.5.0 (2022-09-01) + +##### Breaking Changes + +* reduce nodebb.min.js size by around 800kb (b7addffc) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation (e20433ec) + * fallback strings for new resources: nodebb.admin-settings-post (fcbbb4d6) + * fallback strings for new resources: nodebb.admin-advanced-cache (90fc50e1) +* move @textcomplete and its modules to composer-default (3cbb7a3d) +* remove client-side js file for tpl that no longer exists (bc2ea860) +* incrementing version number - v2.4.5 (dd3e1a28) +* update changelog for v2.4.5 (d505cc47) + +* **deps:** + * update dependency eslint to v8.22.0 (#10835) (8fce68d3) + * update mongo docker tag to v3.7 (8afaed22) + * update docker/setup-qemu-action action to v2 (4aecf399) + * update redis docker tag to v2.8.23 (#10811) (269382e0) + * update redis docker tag to v2.8.23 (#10811) (59fd0efe) + +##### Documentation Changes + +* **openapi:** v3 spec for new user export routes (70652ad4) + +##### New Features + +* remove visibilityjs (#10870) (19207325) +* introduce ACP defined option to rescind notif or do nothing on flag resolve/reject (15b1561f) +* allow v3 api to handle 202 and 204 response codes as well. (0cda5aa3) +* don't show signatures again in pagination mode in same topic (0a6900fc) +* setting to show signatures only once in topics, closes #10071 (aba420a3) +* add event type to topic event component (bcb94ede) +* allow plugins to add to admin cache list (#10833) (a9bbb586) + +##### Bug Fixes + +* **deps:** + * update dependency compare-versions to v4.1.4 (884d4075) + * update dependency mongodb to v4.9.0 (e51004e2) + * update dependency lru-cache to v7.14.0 (d8a52f81) + * bump composer-default to v9 (81f8d84f) + * remove textcomplete in favour of @textcomplete/core (same package, just refactored) (b7bcc367) + * update dependency nodebb-theme-persona to v12.1.1 (#10838) (444b4d57) + * update dependency ace-builds to v1.9.5 (4c44d125) + * update dependency lru-cache to v7.13.2 (4ddc0c7a) + * update dependency nodemailer to v6.7.8 (dd385184) + * pin dependency @isaacs/ttlcache to 1.2.0 (150a7488) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (9a7dd3a3) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (69c87c2c) +* empty thread tools container on open (a088eb19) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (c1936e87) +* empty thread tools container on open (df36d967) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (3dd3cd82) +* removing duplicate session rerolling code (as it is in passport@^0.6 now) (65b3996a) +* don't crash if post is undefined (e06e526e) +* return at least one in sizeCalculation (#10832) (3975fa2e) + +##### Refactors + +* remove console.log (a2d0cd16) +* move export generation logic to v3 controller, GET/HEAD routes for exports (d0570518) +* use group.slug on acp group urls closes #8277 (14c79763) + +##### Tests + +* have some build tests not pollute build folder (7c5a915d) +* User.hidePrivateData (b424ba46) +* passport0.6 (#10638) (33458701) + +#### v2.4.5 (2022-08-22) + +##### Chores + +* incrementing version number - v2.4.4 (d5525c87) +* update changelog for v2.4.4 (77e492b8) + +##### Bug Fixes + +* wrap passport.authenticate to pass in keepSessionInfo if not already set (9b96c33d) +* parseInt caller.uid closes #10849 (bc37a5c5) + +#### v2.4.4 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.3 (9c647c6c) +* update changelog for v2.4.3 (06da15a5) + +##### Bug Fixes + +* missing req, closes #10847 (489fb3a3) + +#### v2.4.3 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.2 (3aa7b855) +* update changelog for v2.4.2 (ba7a3466) + +##### Bug Fixes + +* #10845, disallow inline viewing of uploaded html files (4dc7fa05) + +#### v2.4.2 (2022-08-17) + +##### Chores + +* incrementing version number - v2.4.1 (60cbd148) +* update changelog for v2.4.1 (4b6baabb) + +##### Documentation Changes + +* explain what export routes actually do in OpenAPI documentation (#10836) (72e7b9f7) + +##### Bug Fixes + +* #10841, incorrect conditional in email interstitial partial (ec048a01) +* don't crash if post is undefined (4a3e36a7) + +##### Tests + +* passport0.6 (#10638) (6b2a6f90) + +#### v2.4.1 (2022-08-14) + +##### Chores + +* **deps:** + * update docker/build-push-action action to v3 (bfd6318c) + * update docker/login-action action to v2 (3d68accf) + * update docker/setup-buildx-action action to v2 (371ac032) +* incrementing version number - v2.4.0 (4834cde3) +* update changelog for v2.4.0 (c4714ff7) + +##### Bug Fixes + +* return at least one in sizeCalculation (#10832) (15ca460c) + +#### v2.4.0 (2022-08-10) + +##### Chores + +* **deps:** + * update dependency eslint to v8.21.0 (13a17bd1) + * bump commander from 7.2.0 to 9.4.0 in /install (993b7747) +* update to new transifex project url (659cfe85) +* re-order interstitial tests so email and gdpr tests are in sub-blocks (342cca35) +* opt-out of dependabot, due to conflicts with renovate (70d60289) +* incrementing version number - v2.3.1 (d2425942) +* update changelog for v2.3.1 (2f487175) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (cdaa8f21) + * fallback strings for new resources: nodebb.admin-settings-email (3e56c547) + * fallback strings for new resources: nodebb.user (bcf7ef67) + +##### New Features + +* support packageManager property in package.json (b3a37a7f) +* automatically enable the SMTP transport option if the SMTP service is changed (4055e3bd) +* present a password challenge on email update flow (7fcee42b) +* add client side filter:chat.send, closes #10729 (cb084cbd) +* fire hook to allow plugins to filter the pids returned in a user profile (17e44ff5) +* closes #10719, don't trim children if category is marked section (be917e8d) +* closes #10719, don't trim children if category is marked section (0bec52bc) + +##### Bug Fixes + +* adapt to breaking change in commander (38bf30c8) +* move panel-offset setting code back to theme header (d0255fc6) +* #10808; tweak copy for gmail app passwords support (7082291b) +* don't require password challenge if no password is set in user account (9d27e907) +* do not throw if password passed into `isPasswordCorrect` is invalid, just return false (287f4c2c) +* don't crash if req.body.username is not string (7e8ad785) +* don't crash if target/user is undefined (55c5588a) +* race condition causing undefined ajaxify.data (4586f68e) +* #10809, test runner to only run tests for plugins included in `test_plugins` (1ca09b63) +* #10805, hide unconfirmed emails from user data retrieval methods (cba9047f) +* use different emoji on NodeBB Ready — again because procrastination (3e062a7f) +* unnecessary escape (cd438b32) +* remove socket.io cluster adapter (#10742) (456b8798) +* #10783, do not purge files without a timestamp prefix (dc3a6a29) +* **deps:** + * bump persona v12.1.0 (1465598d) + * bump 2factor to v5.0.2 (bd18004d) + * update dependency sanitize-html to v2.7.1 (#10792) (f02492bd) + * update dependency html-to-text to v8.2.1 (f22790c0) + * update dependency webpack to v5.74.0 (e748e31f) + * update dependency autoprefixer to v10.4.8 (#10799) (4ca0d571) + +##### Performance Improvements + +* make single db call (d73f0f9c) + +##### Tests + +* additional tests for password challenge on email update (65c59cc1) +* add dummy emailer hook to suppress sendmail error logging (8e1a4bb5) +* fix one last failing test (68bcd7f4) +* fix user email tests (06f089af) +* fix tests so that when user.create is called, email is set prior to confirmation (f93a0b83) + +#### v2.3.1 (2022-07-29) + +##### Chores + +* **deps:** + * bump sanitize-html from 2.7.0 to 2.7.1 in /install (7b606d2e) + * bump webpack from 5.73.0 to 5.74.0 in /install (a9900625) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-advanced, nodebb.admin-menu, nodebb.error (17120e03) +* incrementing version number - v2.3.0 (046ea120) +* update changelog for v2.3.0 (a6f7fff0) + +##### New Features + +* add emoji to startup logs, because procrastination. (5176fb15) + +##### Bug Fixes + +* #10798, logic error in COEP header; helmet config (89173f17) +* #10795, early return for selection tooltip based on calling user privilege (847d2b91) +* **deps:** update persona to v12.0.14 (9f225e70) + +#### v2.3.0 (2022-07-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13 (07ce0c39) + * bump ace-builds from 1.7.1 to 1.8.1 in /install (f397d968) + * bump ioredis from 5.2.0 to 5.2.2 in /install (067a5110) +* have renovate work off of `develop` branch instead (f334e398) +* update changelog for v2.2.5 (6c3ebf3b) + +##### New Features + +* add client side filter:chat.send, closes #10729 (b2da02d6) +* UI changes for ACP > Manage > Categories (#10782) (820bc994) +* show an informative message when no plugins are found after filtering (6840a742) +* Allow defining active plugins in config (#10767) (23cb67a1) +* allow plugins to toggle whether IPs are shown in the users CSV export (a6af47da) +* fire hook to allow plugins to filter the pids returned in a user profile (c26be43a) +* closes #10719, don't trim children if category is marked section (7e80cc10) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.8.1 (8384b7cf) + * update dependency helmet to v5.1.1 (03a173bb) +* bug where fallback to forum search was not working due to client-side error (25046642) +* better looking placeholder text for ACP search (1b9c6819) +* use `user.hidePrivateData();` more consistently across user retrieval endpoints (0529f2fb) +* minor margin tweak for alert in acp header (4faf0cdf) +* cannot turn off all networks (bbc7f2af) +* cannot setting networks for sharing posts (2e088a8e) + +##### Refactors + +* invert helmet configuration (dcacd815) + +#### v2.2.5 (2022-07-21) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.19.0 to 8.20.0 in /install (8d109fef) + * bump @commitlint/config-angular in /install (2a88a50f) +* **deps:** + * bump cron from 2.0.0 to 2.1.0 in /install (4c1bda32) + * bump jquery-ui from 1.13.1 to 1.13.2 in /install (abb19e98) + * bump nodebb-theme-persona in /install (9e52b8c6) + * bump ioredis from 5.1.0 to 5.2.0 in /install (8c20fdad) +* incrementing version number - v2.2.4 (d1d63e6b) +* update changelog for v2.2.4 (52f7ed64) +* incrementing version number - v2.2.3 (f80476b9) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* expire email validation tokens on password change (c93bd010) +* remove extraneous console.log (0d58e8a6) +* **deps:** update dependency mongodb to v4.8.0 (bff239da) + +#### v2.2.4 (2022-07-12) + +##### Chores + +* **deps:** + * update docker/metadata-action action to v4 (42a45a71) + * bump ace-builds from 1.5.3 to 1.7.1 in /install (d568d2f5) + * bump winston from 3.8.0 to 3.8.1 in /install (26b73b39) + * bump ioredis from 5.0.6 to 5.1.0 in /install (0d55c42d) + * bump nodemailer from 6.7.5 to 6.7.7 in /install (bd37b286) +* **deps-dev:** + * bump @commitlint/cli from 17.0.2 to 17.0.3 in /install (9e44cdad) + * bump eslint from 8.18.0 to 8.19.0 in /install (7139ad5f) +* incrementing version number - v2.2.3 (f80476b9) +* update changelog for v2.2.3 (8719a93f) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* **deps:** update dependency diff to v5.1.0 (452e5bf7) +* #10733, extraneous apostrophes in plugin upgrader (3c41ae04) +* get version from install/package.json instead (60114219) +* #10739, always re-add theme to active plugins, on theme set (8d701ec3) + +#### v2.2.3 (2022-07-05) + +##### Chores + +* incrementing version number - v2.2.2 (343ffa66) +* update changelog for v2.2.2 (f59ddc34) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* move call to `ajaxify.parseData` out to root level (b778e38c) +* move `ajaxify.parseData` back out to DOMContentLoaded (2582cb53) + +##### Refactors + +* rewrite ajaxify.parseData in vanilla (165b804d) + +#### v2.2.2 (2022-06-30) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0) + * bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9) +* incrementing version number - v2.2.1 (efc77b2a) +* update changelog for v2.2.1 (667780cf) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73) +* observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce) + +##### Refactors + +* allow user.hidePrivateData() to handle an array of `userData` (3f5ae893) + +#### v2.2.1 (2022-06-24) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (da481163) + * fallback strings for new resources: nodebb.admin-settings-advanced (34d75e96) +* add in warning in language directories about not editing files directly (06074e8c) +* incrementing version number - v2.2.0 (eecb836d) +* update changelog for v2.2.0 (bb3766df) + +##### Documentation Changes + +* remove the redundant security policy template (7f5b285e) + +##### New Features + +* cross origin opener policy options (#10710) (88132358) + +##### Bug Fixes + +* **deps:** + * update dependency winston to v3.8.0 (#10725) (d4a5039e) + * update dependency sharp to v0.30.7 (#10724) (0a07c2c0) +* handle ENOENT on file deletion, closes #10645 (43f9e6c8) + +##### Tests + +* fix i18n tests (05c30677) + +#### v2.2.0 (2022-06-15) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (f5afb5c3) + * fallback strings for new resources: nodebb.admin-manage-users (b1dc0531) + * fallback strings for new resources: nodebb.topic (d7d32a8a) +* remove unnecessary `affected` set from deprecated plugin hook (bef236f3) +* bump persona, #10699 (c7fa73b1) +* bump vanilla (d90fc18b) +* bump persona, closes #10566 (5bc972df) +* update changelog for v2.1.1 (ca038b84) +* **deps:** + * bump less from 4.1.2 to 4.1.3 in /install (#10685) (78322636) + * bump nodebb-plugin-2factor from 5.0.0 to 5.0.1 in /install (#10686) (701d8d76) + * bump spdx-license-list from 6.5.0 to 6.6.0 in /install (c82d34c8) + +##### New Features + +* new cronjob and ACP option to delete orphans after configurable number of days, closes #10659 (88aee439) +* allowed plugins to modify email verification details prior to db saving or email send/plugin fire (b9d4724e) +* pass absolute url to post into post tools response, #10566 (ece733ed) + +##### Bug Fixes + +* no need to pass in empty Set in deprecated hooks (3a015eb8) +* #10696, fix alert for password reset email (2da188fe) +* #10692 (b6f8e2fd) +* #10690, all uploads in `uploads/files` showing orphaned (a04da673) +* bug where post associations are not shown when the directory is `files` (7f870beb) + +##### Refactors + +* move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans (22368b99) + +##### Tests + +* add more asserts to failing test (ea1ed667) + +#### v2.1.1 (2022-06-08) + +##### Chores + +* **deps:** + * bump nodebb-theme-persona from 12.0.8 to 12.0.9 in /install (bb39dfba) + * bump mongodb from 4.6.0 to 4.7.0 in /install (a8987856) + * bump async from 3.2.3 to 3.2.4 in /install (ce38f711) + * bump xregexp from 5.1.0 to 5.1.1 in /install (eb9a46f8) + * bump webpack from 5.72.1 to 5.73.0 in /install (#10677) (6239a1ff) + * bump nodebb-theme-slick from 2.0.1 to 2.0.2 in /install (557648e6) +* **deps-dev:** + * bump @commitlint/config-angular in /install (e5e788d2) + * bump eslint from 8.16.0 to 8.17.0 in /install (52c86dba) +* incrementing version number - v2.1.0 (a3114d33) +* update changelog for v2.1.0 (7121949d) + +##### Documentation Changes + +* fix changelog to more accurately reflect new changes (a9744416) + +##### Bug Fixes + +* #10675, don't ajaxify to /assets/ urls (48564cfa) + +##### Other Changes + +* //github.com/pichalite/nodebb-theme-slick/issues/60 (6a0339de) + +#### v2.1.0 (2022-06-02) + +##### Chores + +* update changelog for v2.1.0 (7121949d) +* incrementing version number - v2.1.0 (987045c3) +* bump persona (91f32487) +* update changelog for v2.0.1 (abd8e216) +* incrementing version number - v2.0.1 (768427d4) +* remove optional `middleware` parameter from setupPageRoute and setupAdminPageRoute calls (54ff768f) +* add note re: sort module (5aca106b) +* up emoji (265a0139) +* update changelog for v2.0.0 (60fc3f5d) +* incrementing version number - v2.0.0 (f23c3ff5) +* **deps:** + * bump nodebb-plugin-2factor from 4.0.1 to 5.0.0 in /install (6e95e5c5) + * update dependency lint-staged to v12.5.0 (01f607a5) + * update dependency lint-staged to v12.4.3 (8885d228) + * update dependency eslint to v8.16.0 (#10654) (f6728404) + * bump sharp from 0.30.4 to 0.30.5 in /install (#10651) (d9f2096d) + * bump postcss from 8.4.13 to 8.4.14 in /install (#10652) (0772ec07) + * bump socket.io-client from 4.5.0 to 4.5.1 in /install (#10653) (a13a523b) + * update dependency lint-staged to v12.4.2 (#10647) (18e76c21) + * bump nodebb-plugin-mentions in /install (#10648) (e894147c) + * bump helmet from 5.0.2 to 5.1.0 in /install (#10641) (5faaf6a1) + * bump socket.io from 4.5.0 to 4.5.1 in /install (#10639) (9d9b3f4e) + * bump ioredis from 5.0.4 to 5.0.5 in /install (#10637) (f9c9ac9c) + * bump ace-builds from 1.4.14 to 1.5.1 in /install (#10636) (acf188b0) + * bump yargs from 17.4.1 to 17.5.1 in /install (#10624) (c7aefe9c) + * update dependency @commitlint/cli to v16.3.0 (1dc96717) + * bump mongodb from 4.5.0 to 4.6.0 in /install (#10603) (aee74bd6) + * bump express-session from 1.17.2 to 1.17.3 in /install (#10604) (b1967681) + * bump webpack from 5.72.0 to 5.72.1 in /install (#10600) (06edb6e6) +* **deps-dev:** + * bump @commitlint/cli from 17.0.1 to 17.0.2 in /install (#10672) (5f6e9f67) + * bump @commitlint/cli from 16.3.0 to 17.0.1 in /install (#10644) (fe873182) + * bump @commitlint/config-angular in /install (#10614) (9c4ef133) + * bump husky from 8.0.0 to 8.0.1 in /install (#10595) (54876583) + * bump grunt from 1.5.2 to 1.5.3 in /install (fcb6c191) + * bump husky from 7.0.4 to 8.0.0 in /install (#10591) (03453a62) + * bump eslint from 8.14.0 to 8.15.0 in /install (#10592) (0d75c6cb) +* **i18n:** + * fallback strings for new resources: nodebb.user (2bace634) + * fallback strings for new resources: nodebb.admin-manage-admins-mods (192aa2d3) + +##### New Features + +* add clipboard to runtime modules (39d61061) +* add mute history, closes #10596 (c926358d) +* allow unban/unmute on flag details page. closes #10593 (9acdc680) +* paginaton for admins-mods, closes #10610 (b860c260) +* fix typo, show route in deprecation notice for third-param removal in `setupPageRoute` (14110596) +* add button to see category children, closes #10606 (a5831412) +* closes #10601, ability to prevent alerts on topic list (dc320c89) +* add post to hook params (f07b4484) +* add sorted-list.parse (e904f438) +* add new hook that fires when sorted-set list modal is shown (8faa6f23) +* #10585, ability to mute from flag details (7867ccd7) +* send back missing parameters as array of missing properties, in API response (0c19b1e5) +* add hook for user invite (323dbc97) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.5.3 (#10667) (e7fd1861) + * update dependency ioredis to v5.0.6 (#10668) (5bafab79) + * update dependency nodebb-theme-persona to v12.0.8 (#10669) (e47a63f0) + * update dependency nodebb-plugin-2factor to v4.0.1 (#10665) (356f9a18) + * update dependency ace-builds to v1.5.2 (#10664) (7b5f53fc) + * update dependency nodebb-theme-persona to v12.0.7 (#10666) (a9a26836) + * update dependency sharp to v0.30.6 (#10662) (23232508) + * update dependency nodebb-theme-persona to v12.0.5 (#10649) (1fd68281) + * update dependency cron to v2 (#10568) (ad370202) + * update dependency clipboard to v2.0.11 (#10574) (db67a50a) + * update dependency nodebb-theme-slick to v2.0.1 (#10578) (d98f4ea9) + * update dependency nodebb-theme-persona to v12.0.2 (#10577) (930aefcf) + * update dependency nodemailer to v6.7.5 (#10573) (6eef08f9) +* buildBreadcrumbs naively prepending relative path even if absolute paths are passed in (a3564260) +* more generic copy for notif/chat button labels (f6a7582c) +* #10642, fix order of dom ready events (2bfccac7) +* get rid of math.random in utils.generateUUID (e802fab8) +* #10528, gray out disabled nav items (7e4d2852) +* encode privilege name for API call (92abb352) +* #10631, fix user digest setting display acp (0084b563) +* translate api error messages to user lang, closes #10623, (b17a81bf) +* alert template error. closes #10620 (24a640d9) +* closes #10621, convert \r\n to \n so it isn't counted as 2 characters (3a009f96) +* remove ev, hooks don't pass event, closes #10611 (082a9e1d) +* 'unread' postIndex regression closes #10607 (0e60a704) +* clear dragging on mouseup as well (70ad4a52) +* #10588 exit code 1 on failed plugin activation (e2ff1e39) +* #10584, dont show backlinks if you dont have read privilege (5e7d366f) +* #10586, fix webinstaller folders (1928a186) +* closes #10583, replace removed socket method with api method (5e82cf23) +* add missing fs-extra, #10580 (e7077393) + +##### Other Changes + +* unnecessary escape (60eeae95) +* fix semicolon (3a77e714) + +##### Refactors + +* return module if it doesn't have default export (12b58fcf) +* deprecate middleware param (#10513) (84f27263) + +##### Tests + +* fix tests again (191fb9f4) +* fix UUID test (6677efd7) + +#### v2.0.1 (2022-05-28) + +##### Bug Fixes + +* get rid of math.random in utils.generateUUID (a4ab49c2) + +#### v2.0.0 (2022-05-04) + +##### Chores + +* incrementing version number - v2.0.0 (f23c3ff5) +* update changelog for v1.19.7 (a764df52) +* **deps:** + * update dependency mocha to v10 (a7986773) + * bump nodebb-plugin-dbsearch from 5.1.3 to 5.1.4 in /install (#10545) (a2e263a1) + * update dependency smtp-server to v3.11.0 (62f1c78a) +* **i18n:** + * fallback strings for new resources: nodebb.post-queue (d617c665) + * fallback strings for new resources: nodebb.post-queue (3492dd11) + * fallback strings for new resources: nodebb.error, nodebb.flags (72d47a0b) + +##### New Features + +* show number of selected posts in reject confirm (012860a4) +* post queue bulk actions closes #10520, fix #10555, (23175110) +* output canonical URL as last line on NodeBB boot (e4a9c078) + +##### Bug Fixes + +* **deps:** + * update dependency @socket.io/redis-adapter to v7.2.0 (#10571) (c3c77915) + * update dependency autoprefixer to v10.4.7 (#10563) (68168a7d) + * update dependency nodebb-theme-persona to v12.0.1 (#10561) (1d446e14) + * update dependency nodebb-plugin-mentions to v3.0.10 (#10560) (eb3c398e) + * update dependency nodebb-plugin-dbsearch to v5.1.5 (#10559) (c3ff28ff) + * update dependency nodebb-plugin-mentions to v3.0.9 (#10554) (1acbe4c1) + * update dependency postcss to v8.4.13 (#10553) (6217db00) + * update dependency express to v4.18.1 (#10550) (b0dc5615) + * pin dependency webpack to 5.72.0 (#10549) (672ab25a) + * update dependency cron to v1.8.3 (#10543) (d6843294) + * update dependency bootbox to v5.5.3 (#10531) (8d47f352) + * update dependency nodemailer to v6.7.4 (#10540) (afefee08) +* #10569, fix category move event text (ea01ba01) + +##### Refactors + +* not used anymore (d2e6f317) + +#### v1.19.7 (2022-04-28) + +##### Breaking Changes + +* #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking] (46fbe156) + +##### Chores + +* incrementing version number - v1.19.7 (0c4850e2) +* update changelog for v1.19.6 (acca7811) +* **deps:** + * update commitlint monorepo to v16.2.4 (0d9179f7) + * update dependency lint-staged to v12.4.1 (#10527) (804542e4) + * bump socket.io from 4.4.1 to 4.5.0 in /install (#10523) (0c2d015c) + * update dependency eslint to v8.14.0 (#10514) (40b7ff4b) + * update dependency lint-staged to v12.4.0 (fff818c6) + * update dependency lint-staged to v12.3.8 (7c1d98c7) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (01e65395) + +##### New Features + +* make it simpler to use redis sentinels (82389469) +* closes #10501, minimum reputation to chat (b28f9f77) + +##### Bug Fixes + +* typo in hook name (21dbd476) +* upload test for latest sharp (424db9ff) +* #10502, allow unblocking admin/mod (b9f91643) +* **deps:** + * update dependency express to v4.18.0 (#10526) (5ae690a6) + * update socket.io packages to v4.5.0 (#10522) (d86c447a) + * update dependency autoprefixer to v10.4.5 (#10521) (5ce4c874) + * update dependency nodebb-plugin-2factor to v3.0.7 (#10510) (b81a0cfe) + * update dependency nodebb-widget-essentials to v5.0.11 (#10517) (a767d623) + * update dependency sharp to v0.30.4 (#10504) (a36911fc) + * update dependency prompt to v1.3.0 (#10487) (07678fb5) + * update dependency nconf to v0.12.0 (#10496) (fe492b11) + * update dependency archiver to v5.3.1 (#10500) (6c727859) + +##### Refactors + +* closes #10509 (7f241dbb) +* show invalid uri (ac125538) +* skip content length check if submitting from post-queue (a8e642ad) + +##### Tests + +* remove node18 until nodemailer is fixed (50658a82) +* remove node 12, add 18 (976914e7) + +#### v1.19.6 (2022-04-13) + +##### Chores + +* incrementing version number - v1.19.6 (283a0072) +* update changelog for v1.19.5 (05032ca2) +* **deps:** + * bump semver from 7.3.6 to 7.3.7 in /install (#10493) (65cec8d0) + * update dependency grunt to v1.5.2 (9f496659) + * update dependency grunt to v1.5.1 (0a8bf44e) + * update dependency grunt to v1.5.0 (e82d8bb6) + * update dependency eslint to v8.13.0 (bc3aabb4) + * update dependency eslint-plugin-import to v2.26.0 (a2ebf53b) + * bump nodebb-theme-persona from 11.4.3 to 11.4.4 in /install (#10437) (5b1789c1) + * bump nodebb-plugin-composer-default in /install (#10438) (c8c42933) + * update dependency eslint to v8.12.0 (a6590e20) + * update dependency lint-staged to v12.3.7 (#10407) (5f36ad39) +* **i18n:** fallback strings for new resources: nodebb.post-queue (a06d1246) + +##### New Features + +* #10460, add cutoff to suggested topics (799e94e0) +* add response:helpers.notAllowed (e8058ca3) +* add filter:image.stripEXIF (b8765df5) +* add confirm to reject, closes #10427 (538ad9e1) +* allow client-side hook registration chaining (b88bb3cf) +* delete flagId field from post/user on flag purge (31251282) +* add flags.purge (3b529b84) +* new admin events, closes #10405 (421ba6e1) +* add Albanian localisation :tada: (309968bf) + +##### Bug Fixes + +* dont add caller to arrays (5316029f) +* #10491, don't leak deleted message in cleanedContent (c52401da) +* #10473, trim trailing slashes on config url (9f91db16) +* closes #10436, fix DST issue on acp dashboard (39877763) +* delete history as well (002a241c) +* handle purge posts as well (93b60532) +* byCid removal, targetCid not stored in flagObj (03fdb5be) +* upgrade script (55be4202) +* column counts for other privileges (2b9b2b4a) +* **deps:** + * update dependency nodebb-plugin-mentions to v3.0.8 (#10490) (7c733e9c) + * update dependency winston to v3.7.2 (#10454) (dc03a2f9) + * update dependency nconf to v0.11.4 (#10481) (f253bbdd) + * update dependency yargs to v17.4.1 (#10480) (bbf2b73e) + * update dependency ioredis to v5.0.4 (#10479) (88200ec1) + * update dependency html-to-text to v8.2.0 (#10471) (91026e5f) + * update dependency semver to v7.3.6 (#10466) (c50de911) + * update dependency html-to-text to v8.1.1 (#10470) (b3ec8059) + * update dependency nodebb-widget-essentials to v5.0.10 (#10461) (b6517cfd) + * update dependency body-parser to v1.20.0 (#10450) (26511185) + * update dependency spdx-license-list to v6.5.0 (#10452) (5e37f34e) + * update dependency graceful-fs to v4.2.10 (#10457) (947fa193) + * update dependency mongodb to v4.5.0 (#10458) (30f728ca) + * update dependency ioredis to v5.0.3 (#10446) (0d744d30) + * update dependency ioredis to v5 (#10434) (060ad1b0) + * update dependency nodebb-plugin-2factor to v3.0.6 (#10435) (0ac426e0) + * update dependency nodebb-plugin-composer-default to v7.0.21 (#10429) (898e0e89) + * update dependency nodebb-plugin-spam-be-gone to v0.8.1 (#10425) (47399bfe) + * update dependency sortablejs to v1.15.0 (#10418) (12cd1df2) + * update dependency nodemailer to v6.7.3 (#10421) (7e542495) + * update dependency yargs to v17.4.0 (#10416) (eaa05517) + * update dependency nodebb-theme-persona to v11.4.3 (#10414) (720a9dba) + * update dependency connect-redis to v6.1.3 (#10390) (06594131) +* **security:** + * explicitly declare cache-control header instead of using middleware (38ca73c4) + * cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers. (1f6f389f) + * explicitly set cache-control 'private' on any page where a header is built (e39cdd49) + +##### Performance Improvements + +* WIP #10449, allow array of pids for posts.purge (#10465) (76797371) +* #10410, faster upgrade script (dab22d5f) + +##### Refactors + +* replace deprecated String.prototype.substr() (#10432) (200f0b2e) +* remove some verbose logging (9abe22a0) +* :trollface: (29b86b32) +* shorter generateTopicClass (f76c0e89) + +#### v1.19.5 (2022-03-16) + +##### Chores + +* incrementing version number - v1.19.5 (48d6eb4f) +* update changelog for v1.19.4 (0e6e49b2) +* **deps:** + * bump less from 3.13.1 to 4.1.2 in /install (#9856) (d33485f6) + * bump autoprefixer from 10.4.2 to 10.4.4 in /install (#10403) (90094935) + * update dependency lint-staged to v12.3.6 (0a4522a2) + * update commitlint monorepo to v16.2.3 (0a97015d) + * bump nodebb-plugin-spam-be-gone in /install (#10387) (445e3d70) + * bump connect-redis from 6.1.1 to 6.1.2 in /install (#10391) (145621f7) + * update dependency eslint to v8.11.0 (feaf3068) + * update dependency mocha to v9.2.2 (#10383) (4ffbd78d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-manage-users (2f09c22c) + * fallback strings for new resources: nodebb.admin-manage-privileges, nodebb.admin-manage-users, nodebb.error, nodebb.user (15508bac) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (5274a6aa) + +##### New Features + +* collect hook logs in order to reduce console noise, flush on ajaxify loadScript completion (935704a8) +* add support for PATCH method in api module (4b79dfd2) +* on online users page override timeago cutoff to 24 hours (7c946570) +* ability to mute users (be6bbabd) +* min:rep:upvote, and other limits similar to downvotes (3414a23b) +* post-queue hooks, closes #10381 (2056ac04) + +##### Bug Fixes + +* topic events if there is a blocked user in topic (3935a86b) +* topic events disappearing if there are queued posts (2808c952) +* #10393, move 'Create User' control to overflow menu (cd687cff) +* don't append to history on refresh or ajaxify to same url (c83987bd) +* global privs (7d063d73) +* #10384 -- mixed up sizes for fallback touch icons (cb113208) +* #10377, remove logging of env vars (997ab7d4) +* **deps:** + * update dependency postcss to v8.4.12 (#10396) (bdbc168d) + * update dependency sharp to v0.30.3 (#10389) (b4213859) + +##### Refactors + +* closes #10301 (c8e986d6) + +##### Tests + +* skip i18n tests if the github event is a pull request (e578c605) +* fix middleware test (24c1f879) +* fix category tests (6344c3b6) +* fix one more test (a5511425) + +#### v1.19.4 (2022-03-09) + +##### Chores + +* incrementing version number - v1.19.4 (67282057) +* delay `filter:email.send` removal to v2.0.0 (83fd4311) +* up persona (c23b2089) +* incrementing version number - v1.19.3 (09cb11c8) +* update changelog for v1.19.3 (0b48ec54) +* **deps:** + * bump postcss from 8.4.7 to 8.4.8 in /install (#10372) (d7a4ae1f) + * update dependency lint-staged to v12.3.5 (517ae926) + * bump nodebb-plugin-spam-be-gone in /install (81e7ca20) + * update dependency eslint to v8.10.0 (e83c8be2) + * bump postcss from 8.4.6 to 8.4.7 in /install (52ee5ce8) + * bump json2csv from 5.0.6 to 5.0.7 in /install (e44cbb24) + * update dependency smtp-server to v3.10.0 (67e4df78) + * update dependency mocha to v9.2.1 (00eebf10) + * bump prompt from 1.2.1 to 1.2.2 in /install (21913b5b) + * bump express from 4.17.2 to 4.17.3 in /install (5321ba4d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.flags (a5fe8350) + * fallback strings for new resources: nodebb.topic (dc0f9a73) + +##### New Features + +* add hook filter:posts.getUserInfoForPosts (df46ab48) +* add translateKeys (e841d59a) +* post auto flagging on downvotes #10029 (#10367) (62187caa) +* closes #10324, show recently online users as well (eac9cd03) +* resolve paths for staticDirs as well (e0b1c374) +* ability to go through your posts in a topic (b517b376) +* **sorted-list:** add new client-side hook `filter:settings.sorted-list.loadItem` (92d613e4) + +##### Bug Fixes + +* apply some DRY (a3b4c668) +* optional params (e9a86cb9) +* #10374, use quick search in setting (70e613f8) +* #10366, remove dupe /files (371b4658) +* always show self on /users?online (56345777) +* db call (21cd1e61) +* lastonline timestamps and display for guests (cc665fd6) +* #10357 (7ee4e4e0) +* #10358, bad uploads path (5479f364) +* #10360, only take top level posts (37ef8366) +* #10354, flag actions regression (fec907d9) +* dont overwrite asset_base_url if its set (0e12f82d) +* allow calls to api module without a defined payload (914733e4) +* #10334, use the correct env vars for web install (6b22d0e1) +* persona test fail (10a5901e) +* #10316, fix quoting regression (0b813d60) +* #10322 (5694e62e) +* #10329, select elements in sorted-list not showing proper values (1fa41342) +* allow translation keys in `label` attributes (52836f3a) +* don't load setup.json into nconf if setup.json doesn't exist (6e156daa) +* regression caused by 94b79ce4024f72a3eee2cfa06b05d8f66898149f (4164898d) +* **deps:** + * update dependency nodebb-plugin-markdown to v9.0.10 (bcb68ee9) + * update dependency mongodb to v4.4.1 (#10364) (4b730df9) + * update dependency nodebb-theme-persona to v11.4.2 (#10361) (4d590f65) + * update dependency body-parser to v1.19.2 (#10298) (c75714b7) + * update dependency sharp to v0.30.2 (#10359) (1a6c2c55) + * update dependency nodebb-plugin-mentions to v3.0.7 (#10355) (3e5a0f0d) + * update dependency nodebb-plugin-2factor to v3.0.5 (f30c65a4) + * update dependency nodebb-theme-persona to v11.4.1 (#10337) (b84e61d5) + * update dependency nodebb-theme-persona to v11.4.0 (#10325) (244d8801) + * update dependency nodebb-plugin-mentions to v3.0.6 (#10328) (31cbff19) + * update dependency nodebb-plugin-dbsearch to v5.1.3 (#10330) (1c1062e1) + * update dependency nodebb-plugin-markdown to v9.0.8 (#10327) (c17b9bd4) + * update dependency mongodb to v4.4.0 (#10319) (afd2993d) + * update dependency nodebb-plugin-emoji to v3.5.17 (#10314) (04900291) + * update dependency nodebb-plugin-dbsearch to v5.1.2 (#10313) (0e30362b) + * update dependency nodebb-widget-essentials to v5.0.9 (#10307) (5666c103) + * update dependency nodebb-widget-essentials to v5.0.8 (#10306) (636f1baf) +* **sorted-list:** + * call loadItem hook on add/edit items as well as on item retrieval, refactor edit to call parse() (1c8d1d23) + * only call `.stripHTMLTags()` on string values (fb4f89f3) + +##### Refactors + +* show a louder deprecation notice, alert once for each hook, not per plugin per hook (93b80f17) +* move header unread code to separate module (40230725) +* remove code that doesn't do anything (4a1e761a) +* wrap around if at end (3acd2ac8) +* change lang string (94961196) + +##### Tests + +* possible fix random psql test failure (50ed3a32) +* log configJSON (9db90a30) +* check contents of config.json in tests (32f69301) + +#### v1.19.3 (2022-02-16) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (4043f179) + * fallback strings for new resources: nodebb.user (775d9077) +* **deps:** + * update dependency lint-staged to v12.3.4 (9577ef8d) + * update commitlint monorepo to v16.2.1 (2290cee5) + * update dependency eslint to v8.9.0 (763cd193) +* remove punycode dep (e9cb1452) +* incrementing version number - v1.19.2 (e49b31f0) +* update changelog for v1.19.2 (f012984d) + +##### New Features + +* delete diffs on post purge, closes #10291 (e9e48a75) +* closes #10296 (58b5781c) +* deleting a user upload dissociates from posts, and vice versa (d5ed8736) +* #10276, dont change/revert theme if its current (398d25c2) + +##### Bug Fixes + +* #10302, fix regression (503e27f7) +* one last try (9205169f) +* doggy.gif (2f64d633) +* one more fix (cfdfbf32) +* dupe key errors (770fcd9e) +* #10292, delete missing fields (dbf7a458) +* local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()` (b9edee14) +* #10144, automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired (84dfda59) +* four-space indents in package.json (9aa3e442) +* #10289, remove lodash dependency in src/cli/package-install.js (81fa2e22) +* non-functional upgrade script (1c7fb8fe) +* language keys (350052ec) +* #10273, properly calculate item count for best/controversial (d70ce3a9) +* **deps:** + * update dependency nodebb-plugin-emoji to v3.5.16 (#10297) (b47ca86d) + * update dependency nodebb-plugin-markdown to v9.0.7 (#10293) (5b0d4a8e) + * update dependency nodebb-plugin-emoji to v3.5.14 (#10295) (7af057fa) + * update dependency nodebb-plugin-mentions to v3.0.5 (#10294) (55a98183) + * update dependency winston to v3.6.0 (#10285) (22da7a10) + * update dependency nodebb-plugin-markdown to v9.0.6 (3225a1af) + * update dependency nodebb-plugin-spam-be-gone to v0.7.13 (#10280) (3dc108d3) + * update dependency nodebb-plugin-emoji to v3.5.12 (#10279) (2c0b6322) + * update dependency nodebb-plugin-emoji to v3.5.11 (#10274) (766ef4e5) + +##### Refactors + +* lazy load slugify (946d351f) +* .deleteUpload() to accept array of paths (7ef9c7d2) +* fix user uploads paths, and associate uid with user uploads (ea36016d) +* change the post uploads' hash seeds to have the `files/` prefix (6489e9fd) +* abstract some common code out to local utility methods (aad0c5fd) +* move post upload tests to its own file (d92da828) +* remove extra zset remove, closes #10277 (489c0d30) + +##### Code Style Changes + +* linting errors (5d7e1ebc) + +##### Tests + +* fix topic thumb tests and topic thumbs to work properly with post upload assoc. (fb78570c) +* user uploads.js tests (8c2752ba) +* testing user upload methods, already fixed one bug (11275d68) + +#### v1.19.2 (2022-02-09) + +##### Chores + +* up persona (14ecafb6) +* up markdown (8a4b7dc4) +* add missing quote (b98758d3) +* use source and current local vars, + docs (9e4147f0) +* up persona (1eaae1d0) +* up emoji (106ef7cf) +* persona (3b4cf971) +* persona (78db61cf) +* up deps (c7a56439) +* add punycode dependency (452f29c0) +* up persona (d50d4a9e) +* up persona (458606bc) +* up persona (cfe53305) +* up persona (f29bed27) +* up packages (b4a4e60e) +* up persona (3e30b6cd) +* incrementing version number - v1.19.1 (7f450268) +* update changelog for v1.19.1 (55df683a) +* **deps:** + * bump ioredis from 4.28.4 to 4.28.5 in /install (#10254) (b496ad44) + * bump nodebb-widget-essentials in /install (#10219) (b71025ce) + * update dependency lint-staged to v12.3.3 (6ba25557) + * update dependency eslint to v8.8.0 (153693e0) + * bump nodebb-theme-persona in /install (#10199) (2db54e67) + * update dependency lint-staged to v12.3.2 (814cb66b) + * update dependency mocha to v9.2.0 (05e2b354) + * bump helmet from 5.0.1 to 5.0.2 in /install (1f037bf6) + * update dependency lint-staged to v12.3.1 (ac244af3) + * update dependency lint-staged to v12.3.0 (7060837b) + * bump helmet from 4.6.0 to 5.0.1 in /install (5d3900dc) +* **i18n:** + * fallback strings for new resources: nodebb.modules (a71b8e59) + * fallback strings for new resources: nodebb.global, nodebb.pages (aa812f03) + * fallback strings for new resources: nodebb.users (70eeb204) + * fallback strings for new resources: nodebb.admin-settings-email (e9588ca7) + * fallback strings for new resources: nodebb.admin-settings-advanced (2ec4e31f) + +##### Documentation Changes + +* openapi spec for new route (9b912db7) +* some tweaks to cli help (c869d7db) + +##### New Features + +* handle array of keys in psql exists for zsets (5143ca33) +* upgrade script to clean up leftover :thumb zsets (0ac28435) +* more tests for ensuring downvoted posts are added to the :votes zset (1b8eeaf8) +* upgrade script to store downvotes posts in the user :votes sorted set (cf88483f) +* new accounts route to show most downvoted ('controversial') posts (5afd5de0) +* v3 user email tests (aa8914a1) +* allow gif profile images, sharp 0.30.0 supports gifs (7f1c4477) +* detect alternative package managers based on lockfile (8ba9e67c) +* new language key for user search in chat (766ad6b7) +* remove colors in favour of chalk (#10142) (cf8f62ae) +* add upload helper module for drag&drop, paste, closes #6388 (cf5c0968) +* no more sending emails to banned users, + feature flag (ea27eaf1) +* push the theme name into body class (e1e1d522) +* add ACP toggles for COEP and CORP headers (d91aeea3) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.30.1 (#10270) (8e52abe8) + * update dependency nodebb-widget-essentials to v5.0.7 (#10269) (6c0f7034) + * update dependency nodebb-theme-persona to v11.3.37 (#10265) (78d48c37) + * update dependency ioredis to v4.28.5 (#10252) (721a70c0) + * update dependency connect-redis to v6.1.1 (#10260) (a10e4940) + * update dependency nodebb-theme-persona to v11.3.36 (#10253) (0e2a4a2d) + * update dependency nodebb-theme-persona to v11.3.35 (#10251) (6465e012) + * update dependency pg-cursor to v2.7.3 (#10244) (e6185883) + * update dependency nodebb-theme-persona to v11.3.33 (#10248) (32477676) + * update dependency nodebb-theme-vanilla to v12.1.17 (#10249) (8f5b5ef1) + * update dependency nodebb-plugin-emoji to v3.5.9 (#10250) (1eb0939e) + * update dependency sanitize-html to v2.7.0 (#10246) (845717b8) + * update dependency pg to v8.7.3 (#10243) (531a3b1e) + * update dependency connect-redis to v6.1.0 (#10245) (c343b631) + * update dependency nodebb-theme-persona to v11.3.31 (#10241) (f1bed441) + * update dependency nodebb-plugin-composer-default to v7.0.20 (#10231) (a4702959) + * update dependency nodebb-theme-persona to v11.3.30 (#10232) (916a0db3) + * update dependency nodebb-plugin-emoji to v3.5.8 (#10239) (ebf4e12b) + * update dependency sharp to v0.30.0 (#10221) (2924cd3b) + * update dependency ioredis to v4.28.4 (#10224) (cda07cb7) + * update dependency clipboard to v2.0.10 (2c605d1c) + * update dependency sitemap to v7.1.1 (1bf938da) + * update dependency winston to v3.5.1 (b0dd68bb) + * pin dependency punycode to 2.1.1 (e7ba24c5) + * update dependency postcss to v8.4.6 (322f1033) + * update dependency nodebb-plugin-markdown to v9 (7d5080cd) + * update dependency ace-builds to v1.4.14 (#10200) (c50f6512) + * update dependency winston to v3.5.0 (#10202) (a7f142be) + * update dependency clipboard to v2.0.9 (#10203) (c6164e48) +* remove extraneous devDependencies on package merge (a2c7d69e) +* #10257, topic thumbs not deleting on topic deletion (0f788b8e) +* #10256, allow quote tooltip on mobile (fb3f4f9a) +* #10255, create verified/unverified groups on install (08f2a050) +* controversial posts/bests posts not showing anything (079c487d) +* regression in package.json merging logic that caused extraneous packages to not be removed (d34471f6) +* #10229, package merging should deep merge nested objects (689c125c) +* use fs.promises (a0a38706) +* bug where .reduce() exploded due to no initial value, if input value was an empty array (5cff6e3f) +* https://github.com/NodeBB/NodeBB/issues/10242 (dcb201df) +* missing early return (ad635175) +* handle case where email is explicitly passed into user.create, and thus is set in user hash, but confirmation request may have expired (936562c3) +* #10236, don't check email:uid, instead verify an email confirmation is active (0322e984) +* don't crash if requestedFields is undefined (98839108) +* a missed invocation of colors (c3d926ff) +* proactively guard against homograph characters in website values (fa7dcdb9) +* #10208, don't use leading slash in directory names (1d01741a) +* don't crash if quick search doesn't return posts (93d18383) +* properly unregister hooks in emailer tests (fc2c755c) +* email ban tests (dee9cca3) +* update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler (d4e5259f) +* derp (b3f7b742) +* bug where page wouldn't complete loading if data.scripts was emptied (578145ac) +* use escaped group names in invite modal (2a89ad82) +* https://github.com/julianlam/nodebb-plugin-mentions/issues/170 (dc6e629d) +* #10197, fix relative path urls for dashboard pages (92a249c9) +* actually, CORP is ok (df8c8ad8) +* update defaults for corp and coep to be more permissive, for now, to be reverted for v1.20.0 (4467299e) +* if no group label is selected, select no group title option (94da5026) + +##### Other Changes + +* remove unused require (6be330f2) + +##### Performance Improvements + +* increase batch size (b548083b) + +##### Refactors + +* update chat plcaeholder message (fbd9ba79) +* updated package-install.js exports style, new exported method 'getPackageManager' for use in cases where nconf is unreliable, fix bug where nconf was not correctly set up in cli tools, proper installation of dev dependencies based on global env value (9a169085) +* emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent (f0e32ff1) +* sorted-list .get() to be async fn (89b559a2) + +##### Tests + +* fix occasional test failure (2dbdd181) +* add test to verify that a sorted set is automatically deleted if its last element is removed (#10261) (60680876) +* stricter isValidationPending check (d1b1f50b) +* fix derp (680e36da) +* up acp plugin page timeout (a214f9a6) + +#### v1.19.1 (2022-01-21) + +##### Chores + +* **deps:** + * bump compare-versions from 4.1.2 to 4.1.3 in /install (#10154) (4a5182e4) + * update dependency lint-staged to v12.2.2 (f090de36) + * update dependency @commitlint/cli to v16.1.0 (44d81a95) + * update dependency lint-staged to v12.2.1 (857ac480) + * update dependency @commitlint/cli to v16.0.3 (9c63d076) + * update dependency lint-staged to v12.2.0 (1a0c117d) + * update dependency eslint to v8.7.0 (8abaf3f6) + * update dependency mocha to v9.1.4 (f5ad173b) +* up persona (89871d71) +* add test.sh to gitignore (d7796f0b) +* delete test script (250274c7) +* remove unused lang key #10180 (2fe91e36) +* incrementing version number - v1.19.0 (18b0a29f) +* update changelog for v1.19.0 (c8f1bc53) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-user (78cd6de7) + * fallback strings for new resources: nodebb.user (3ec9197c) + * fallback strings for new resources: nodebb.email (354aa1a5) + +##### New Features + +* revert label js change (1c80adf1) +* hide all categories link on flags filters (e9d0db28) +* nicer error handling for bad jwt in unsubscribe template (31ea2266) + +##### Bug Fixes + +* **deps:** + * update dependency jquery-ui to v1.13.1 (#10186) (55b3a355) + * update dependency multiparty to v4.2.3 (#10188) (7fa2ba70) + * update dependency nodebb-theme-persona to v11.3.15 (#10155) (e03d4747) + * update dependency mongodb to v4.3.1 (#10178) (693ca1f1) + * update dependency nodebb-plugin-composer-default to v7.0.18 (#10164) (2c75cce6) +* urls used when recent/unread/popular/top is used as the homepage (28359665) +* mark unread button showing the selected category (fdfafb44) +* catch exceptions from sendNotifications (c1ec2047) +* multiple cid filter on flags page (3e8cb732) +* post indices if there is a blocked user in topic (f9279b63) +* dont add duplicate link backs (3b72ff87) +* #10175, fix topic linkbacks duplicating on post edit (b06c6329) +* #10173, don't show optional message if email is required (d1eb21c5) +* #10172, fix postqueue accept/reject notification text (6a75ed50) +* #10167, fix regression prevent guest post (4799efc7) +* CSRF handler to go back to saving in session (#10159) (e9ee843b) +* #10158, fix extra padding (03f5cbcc) + +##### Refactors + +* add method to error messages (c9fabb0e) + +##### Tests + +* add failing guest csrf test (#10169) (10949184) + +#### v1.19.0 (2022-01-13) + +##### Breaking Changes + +* `GET /chats/:roomId/users` [breaking] (6eea6451) +* remove socket.emit('user.exists') (1f063058) +* remove socket.emit('user.changeUsernameEmail') (6b45dee9) +* #10077, store nav items in objects (69c96078) +* remove socket.emit('topics.follow') (f918a381) +* remove socket.emit('topics.post') (6ad04721) +* remove socket.emit('user.banUsers'); (49641a32) +* remove socket.emit('posts.reply') (4604a572) +* remove socket.emit('user.changePicture') (6d95684b) +* remove socket.emit('user.search') (0d694c78) +* remove socketHelpers.setDefaultPostData (99f865c6) +* remove deprecated groups socket calls (02ea17ea) +* remove deprecated methods (0d1e57dc) +* remove socket.emit('posts.delete') (bd1cb2d4) +* remove socket.emit('posts.upvote') (ec1d5e38) +* remove socket.emit('posts.move') (8427c5d9) +* remove socket.emit('posts.edit') (4247f624) +* remove socket.emit('posts.bookmark/unbookmark') (f7418ccd) +* remove deprecated admin.groups methods (07e2741e) +* remove socket.emit('categories.getCategory') (45d755b6) +* remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') (cc3f82bc) +* remove deprecated socket.emit('admin.categories.update') (0b9c01f9) +* remove deprecated socket.emit('admin.categories.purge') (ba5d2e7b) +* remove deprecated socket.emit('admin.categories.create') (b3353723) +* remove deprecated socket.emit('admin.categories.getAll') (10c19af2) +* remove getTopicPosts(tid, ...) usage (170e5dd9) +* remove deprecated post diff socket calls (8117b7f2) +* remove deprecated user middlewares (1a7fffc7) +* remove action:category.loaded, use action:topics.loading (36aa6034) +* remove setTopicSort/setCategorySort (6dcdf1d3) +* remove deprecated socket user create/delete functions (a7d1dfb6) +* remove deprecated uploads.delete (c93d7fdb) +* remove deprecated methods (79de48c5) +* remove socket.io/flags.js (c5f08fdc) + +##### Chores + +* org; merge consecutive await calls into one Promise.all (be4dbe34) +* fix #9213 (0a5420ed) +* revert engines change in install/package.json (487f25ba) +* update renovate config (f95acce3) +* update renovate range strategy... (bc0f33df) +* remove debug logs in test/api.js (82768fcf) +* use apiv3 for room rename tests (e745e212) +* trigger lang (540eeae9) +* up themes (71fa8175) +* right dropdown (7aa85882) +* right dropdown (a998cc1c) +* update readme mongodb version (af5393ec) +* incrementing version number - v1.18.6 (3a78a151) +* update changelog for v1.18.6 (3c8109e2) +* **deps:** + * update commitlint monorepo (56d134c3) + * update dependency lint-staged to v12.1.7 (40e7007f) + * update dependency lint-staged to v12.1.6 (f78108ac) + * update dependency eslint-plugin-import to v2.25.4 (a69afdb6) + * update dependency lint-staged to v12.1.5 (12038039) + * update dependency eslint to v8.6.0 (b546ff4e) + * update dependency lint-staged to v12.1.4 (87779fc8) + * update dependency jsdom to v19 (#10053) (ee05b762) + * update dependency lint-staged to v12.1.3 (c0dd8dcb) + * update dependency eslint to v8.5.0 (55b9fab1) + * update dependency eslint to v8.4.1 (ba02f015) + * update dependency eslint to v8.4.0 (4b113715) + * update dependency lint-staged to v12 (b3423389) + * update dependency eslint to v8 (e9aadde1) + * update commitlint monorepo to v15 (f6c6425d) + * update dependency jsdom to v18.1.1 (87433b79) + * bump compare-versions from 3.6.0 to 4.1.1 in /install (ea9f2c73) + * update dependency jsdom to v18.1.0 (d7c2a311) +* **i18n:** + * fallback strings for new resources: nodebb.user (d79d7e80) + * fallback strings for new resources: nodebb.admin-settings-uploads (e6a46ef6) + * fallback strings for new resources: nodebb.error (207ae8cd) + * fallback strings for new resources: nodebb.post-queue (edba10e2) + * fallback strings for new resources: nodebb.modules, nodebb.notifications (fd939f8b) + * fallback strings for new resources: nodebb.admin-admin (4a53adf6) + * fallback strings for new resources: nodebb.admin-admin (b052a8e7) + * fallback strings for new resources: nodebb.topic (23c915ba) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.login (eecd02fb) + * fallback strings for new resources: nodebb.admin-settings-email (72e1c281) + +##### Documentation Changes + +* comment hint :shipit: (ffdf26af) +* fix description for route (47ab9526) +* roomId is number (0aa25f20) +* openAPI documentation for routes (55e68e2f) +* use social media card in readme header (33c8b197) +* add social media card (f7b3f69f) +* add docs link higher up (1a85aaad) +* update readme blurb (e325aa93) + +##### New Features + +* bundling nodebb-plugin-2factor with all NodeBB installations, v1.19.0 onwards :tada: (31b4b8fd) +* revoke user sessions on successful password reset (6ca216ab) +* allow % in tags, #10135 (a75a043b) +* allow isCluster, isPrimary, and jobsDisabled to be passed in as numbers in addition to string/bool (b5b188fd) +* `GET /api/v3/chats/:roomId/messages` (2fe53cf8) +* `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` (fe17c94c) +* `POST /chats/:roomId/users` (d62ee846) +* `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` (d5fd098e) +* middleware.assert.message (90fcbe44) +* `GET /chats/:roomId/:mid` (b2929605) +* `PUT /chats/:roomId/:mid` (f48ed365) +* allow API checkRequired middleware error to be internationalized (74f1905e) +* `PUT /api/v3/chats/:roomId` (9a4fd5dc) +* `POST /api/v3/chats/:roomId` (eeffb9d9) +* `GET /api/v3/chats/:roomId` (09cf9c77) +* `POST /api/v3/chats`, chat room creation, plus openAPI docs update (40b4544e) +* `GET /api/v3/chats` (94bead71) +* stub code for v3 chats api (02e878be) +* #9506, allow seeing and editing your queued posts (c4042c70) +* pass in all query params to category search filter (599bffd8) +* add data param to filter:categories.search (c4156bdd) +* ensure that all requests handled by NodeBB fall under the relative_path as configured (a3bdb706) +* show 10 members (d9c42c00) +* closes #10018 (1e535528) +* #10018 add href (06bfec88) +* #10018 , wip (0f14f23b) +* autocomplete for activate/reset (f0d192fb) +* #10008, add history entry for note deletion (c26870d2) +* #9957, don't remove existing fields form config.json (0532c1b2) +* add feature flag to disable verification emails, closes #9996 (09e0c6d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-markdown to v8.14.6 (ad6f6051) + * update dependency winston to v3.4.0 (#10150) (2fee1d07) + * update dependency ioredis to v4.28.3 (#10151) (bfad04ab) + * pin dependencies (da2bb340) + * pin dependency socket.io-adapter-cluster to 1.0.1 (#10146) (15bf3db2) + * update dependency nodebb-theme-vanilla to v12.1.15 (#10149) (2fa3cd0d) + * update dependency nodebb-theme-slick to v1.4.23 (#10148) (762de2d8) + * update dependency nodebb-theme-persona to v11.3.13 (#10147) (385d4c71) + * update dependency winston to v3.3.4 (4bada01b) + * update dependency autoprefixer to v10.4.2 (a47883e8) + * update dependency mongodb to v4.3.0 (50eb4556) + * update socket.io packages to v4.4.1 (9eb00cb2) + * update dependency nodebb-rewards-essentials to v0.2.1 (0a15c99e) + * update dependency autoprefixer to v10.4.1 (f1aa5f7d) + * update dependency yargs to v17.3.1 (5c3335b7) + * update dependency nodebb-theme-vanilla to v12.1.14 (#10102) (dd8b1f75) + * update dependency nodebb-theme-slick to v1.4.22 (#10101) (dd1633ff) + * update dependency nodebb-theme-lavender to v5.3.2 (#10099) (eccdfc9d) + * update dependency nodebb-theme-persona to v11.3.12 (#10100) (4f6fc10b) + * update dependency nodebb-theme-persona to v11.3.11 (32cbf760) + * update dependency nodebb-theme-slick to v1.4.21 (9253519c) + * update dependency nodebb-theme-slick to v1.4.20 (#10084) (019804e1) + * update dependency nodebb-theme-vanilla to v12.1.13 (#10085) (66c759ed) + * update dependency nodebb-theme-persona to v11.3.10 (#10083) (d276c9cd) + * update dependency nodebb-plugin-composer-default to v7.0.17 (#10082) (0ef9c7ab) + * update dependency nodebb-theme-vanilla to v12.1.12 (dda7c075) + * update dependency nodebb-theme-slick to v1.4.19 (4577600e) + * update dependency nodebb-theme-persona to v11.3.8 (5e2281c3) + * update dependency mongodb to v4.2.2 (0551a19e) + * update dependency postcss to v8.4.5 (16398dd9) + * update dependency compare-versions to v4.1.2 (de1ed01d) + * bump persona (16c88a97) + * bump persona (c90a8926) + * update dependency nodebb-plugin-mentions to v3.0.4 (#10063) (07217762) + * update dependency nodebb-plugin-spam-be-gone to v0.7.12 (#10064) (a5840c5a) + * update dependency nodebb-theme-slick to v1.4.18 (#10065) (5477cf32) + * update dependency nodebb-plugin-markdown to v8.14.5 (#10062) (60d778f0) + * update dependency nodebb-theme-persona to v11.3.5 (#10059) (8695d370) + * update dependency nodebb-plugin-dbsearch to v5.1.1 (70068d6c) + * update dependency nodebb-plugin-composer-default to v7.0.15 (84b03a34) + * update dependency nodebb-theme-persona to v11.3.3 (8cbe0df2) + * bump emoji plugin (14e35247) + * update dependency ioredis to v4.28.2 (597d826b) + * update dependency yargs to v17.3.0 (115de4e5) + * update dependency mime to v3 (#9963) (49813cce) + * update dependency mongodb to v4.2.1 (f72af319) + * update dependency @socket.io/redis-adapter to v7.1.0 (ed4b0cf7) + * update dependency postcss to v8.4.4 (b34b8aa9) + * update dependency postcss to v8.4.3 (2dadf786) + * update dependency postcss to v8.4.1 (6a273798) + * update dependency postcss to v8.4.0 (29345275) + * update dependency ioredis to v4.28.1 (9966a00f) + * update dependency nodebb-theme-persona to v11.3.1 (fdae6991) + * update socket.io packages to v4.4.0 (f05d308a) + * update dependency nodebb-theme-vanilla to v12.1.10 (68dddbd9) + * update dependency nodebb-theme-persona to v11.2.22 (3eb91a20) + * update dependency nodebb-plugin-mentions to v3.0.3 (5ec32c31) + * update dependency mongodb to v4.2.0 (#10011) (2378fc84) + * update dependency @socket.io/redis-adapter to v7.0.1 (aae7be02) + * update dependency sharp to v0.29.3 (46162537) +* lint (c9592e17) +* icon alignment issue that was also bugging me :shipit: (37a71291) +* #10143, add back ace editor searchbox (42caef7f) +* #10095, add login info to email interstitial (5eb02f59) +* #10121, fix error messages in user creation (8ad64ec0) +* #10115, fix chat autocomplete hook (69a7634a) +* notice links in subfolder installs (cc27a324) +* move authenticateRequest before interstitial and maintenance mode middlewares, allowed plugins to disable authentication on certain routes (d89fc44c) +* retry incrObjtFieldBy (07232a8c) +* use component instead of class name (b179f0fc) +* assertion check to ensure messages are in the room when editing/deleting, etc (d95b4ee2) +* rename language key for incorrect parameter type error (aeb43b9b) +* deprecate chats.leave (16ba16cd) +* re-allow kicking of the other party in a 1-to-1 chat (6294beea) +* isFinite check for room assertion, more test migrating (140f9d24) +* #10096, don't display preview for links if hostname doesnt match (a115b771) +* only render preview on topic page (a9f81215) +* don't crash server if analytics fails to save (8fb89d76) +* upgrade script to handle strings as well (e332acf3) +* #10090, remove left over necro posts messages (fdaf8274) +* #10086, if pidfile is empty delete (59214ca2) +* utils method (91e21ecc) +* prevent crash if groups is not valid json (cc0a087a) +* upgrade script (968d4616) +* delete left over nav items after removal of some (737e1c19) +* targetBlank/dropdown not getting cleared (10e890e4) +* prettier bulk method usage (3b0c42a5) +* bug where groupChat property was not set for chat rooms (42959df0) +* #9484 show user history only to admins and gmods (bc7707aa) +* no need to pass 'img' to teaser tags stripping as images are already converted to alt text (45c9dde3) +* #10069, don't modify fields array (a8afdc60) +* #10068, update data-index values after sort (236d4e80) +* #10068, baseIndex should be read before sort update fix off by one error (9af23351) +* tests (45d8157f) +* #10067, count posts instead of incr/decr (830166d1) +* handle start=0 stop=0 for topics.getTopicPosts (906dc567) +* wrong usage of is ACP (4f423610) +* don't throw on invalid session, just return early so socket is not opened. (fa01801f) +* #10052, dont use spaces in tag class name (a2953583) +* don't crash if tid is falsy (1cdb0b1e) +* regression from https://github.com/NodeBB/NodeBB/commit/27c05448e1532ce466658513af0e2ff65576b410 (50063fe2) +* keep query params on /me redirects (941ecaf8) +* 403/400/500 page not generating csrf_token (65c55041) +* error pages dont have config.csrf_token (3dd681eb) +* quote button staying on screen on slow computers (d378bf4c) +* removed unused var (e0caa5e0) +* #10027, properly auto confirm first user (2473d5d8) +* cli password reset (71e34be5) +* #10023, bump persona (a10ea03c) +* #10020, /api/post/upload returns v3 style response (242f8e95) +* consolidate plugin reset logic (449366ca) +* search crash (9245f71a) +* #10010, handle reverse sorting for topic events (d5bfd512) +* #10006, dont allow new rooms or adding to a room if target is blocked (047f031d) + +##### Other Changes + +* remove unused (afc75ba4) +* fix (682f6089) +* missing ; (20e76699) +* remove unused (cbf198fe) +* remove unused (a20abdce) +* fix (0a6eeb93) +* remove unused utils (82b72f7e) +* fix (fa1ac04d) + +##### Performance Improvements + +* only add middleware if relativePath is set (41db9436) +* don't load all set members to get count (0414356c) +* create user tooltips on demand (23147235) +* closes #9994, bulk methods for settings (d412ba44) +* remove createUserTooltips (facc10e4) + +##### Refactors + +* remove unused language key (5278b11a) +* put message api calls behind `/messages` prefix, #10097 (aaa6f752) +* rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await (c990211c) +* only write analytics data on nbb that has runJobs=true (35fea58a) +* remove knonwOwner param (42781467) +* remove console.log (a7644466) +* remove unused validator (4e1d4217) +* only pass qs (b8896d13) +* change error message (1e60ae87) +* use hasOwnProperty (9f1b8a3b) +* remove object.create (dbba0c39) +* remove unused args (3d3ae82f) +* remove comment (633061f4) +* use .map to return promises (d4f3ee67) +* async (cfd47448) +* async (f0394c49) +* use async (8491f67d) +* remove unused (e3c0f0be) +* always returns array (9627fa90) +* use async/await (f4aa249d) +* change var name (36eb47d9) +* alerts (621c142f) +* use alerts.error/success (cba78aee) +* use lang keys, fix typo (dd02c49f) +* use alerts module (1980feed) +* dont need local function (2bb0828a) +* DRY (324262cb) +* use routePrefixMap instead of routeRegexpMap, +tests (#10035) (6c07433d) +* use hasOwnProprety (daf385cd) +* tab rules (fb363957) +* change category feed so it is not updated on every reply (697dd376) +* dont expost entire res._locals to client side (e368feef) +* shorter meta.settings.get (190532b3) +* clone settings before returning (51cbeccb) +* remove another async.series (27c05448) +* remove tabs after declaration (4359e5c9) +* update dates (6d38eab6) +* clone before returning (f729e519) +* add filter:topic.getPosts (258f368e) +* setObjectBulk to match sortedSetAddBulk (8379c11b) +* remove more async.eachSeries/mapSeries (d1964095) +* make a single call to set widgets per template (8750ee04) +* remove jshint, remove async.parallel (80f9963b) + +##### Code Style Changes + +* eslint (d960f601) + +##### Tests + +* fix util test (6c1e184c) +* update tag tests, fix linux symlink error (9b75b1ed) +* fix restore test (0d9ec9d3) +* fix user tests calling deprecated socket methods (e747998c) +* add email interstitial tests (1264dcb5) +* don't use csrf_token for get,head, options (5e08f7e6) +* fix tests (0e273ab2) +* remove old test (68fd0875) +* make it async (5c3d5f1f) +* fix (26f00ffb) +* one more getTopicPosts test (f8f0a83b) +* utils.params (7b99dc46) +* regular user shouldn't see admin:privileges (cd2040ac) +* add missing tests (58431221) +* add api token tests (7434cbf6) +* add missing tests (404a8774) +* upgrade.runParticular (2bdb4906) +* add missing acp root category test (c17ec996) +* cache dump test (217aae4c) +* add missing controllers (bc120dba) +* fix tpl name (edf7c647) +* add mising email.test tpls (6d186ff1) +* debug routes in dev (754cdab8) +* add digest route test (1280d9ae) +* digest (f11bc33a) +* fix function name (0e725125) +* submitUsage (d375dcb8) +* remove log (d7c32ccb) +* middleware/expose.js (29b3587d) +* up mongodb version (500cad78) +* mainPost removed from inf scroll (aac0792a) + +#### v1.18.6 (2021-11-10) + +##### Chores + +* make it a link (a0f0dd02) +* update badges, remove david doesnt work (dad31c8e) +* up themes (b1d6c9ba) +* up mentions (98b98a11) +* up mentions (3e4d477e) +* fix type.yaml example and summary (591424ce) +* incrementing version number - v1.18.5 (1e418f5b) +* update changelog for v1.18.5 (82eda23a) +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* **deps:** + * update dependency eslint-plugin-import to v2.25.3 (45a0895c) + * update commitlint monorepo to v14 (dc78125a) + * update dependency jsdom to v18.0.1 (7d468e72) +* **i18n:** + * fallback strings for new resources: nodebb.admin-development-info (91676c6c) + * fallback strings for new resources: nodebb.admin-settings-navigation (3727e39f) + * fallback strings for new resources: nodebb.admin-settings-post (46789910) + +##### New Features + +* #9992, hooks.one (96f13e4f) +* use auto-generated meta and link tags in ACP, closes #9991 (1719bff8) +* add node 16 (#9847) (d27c9696) +* #9967, allow dropdowns in navigation (2e623dd2) +* show number of events per type in acp (b916e42f) +* show posts previews if enabled on mouse over (8c670316) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-slick to v1.4.16 (#9990) (cf30876f) + * update dependency nodebb-plugin-composer-default to v7.0.14 (#9989) (ef02bdc4) + * update dependency nodebb-plugin-composer-default to v7.0.13 (#9988) (654c8e61) + * update dependency nodebb-plugin-mentions to v3.0.2 (1a22b0ec) + * update dependency socket.io to v4.3.2 (98ebc4d9) + * update dependency html-to-text to v8.1.0 (c1f5889f) + * update dependency nodebb-plugin-dbsearch to v5.1.0 (#9983) (4f1ee1fc) + * update dependency nodebb-plugin-composer-default to v7.0.12 (7fee0e32) + * update dependency nodebb-plugin-mentions to v3.0.1 (#9979) (8224a2a9) + * update dependency nodebb-plugin-spam-be-gone to v0.7.11 (91293ecc) + * update dependency nodebb-theme-lavender to v5.3.1 (f7295aaa) + * update dependency nodebb-plugin-mentions to v3 (#9966) (0888aae6) + * update dependency mongodb to v4.1.4 (#9968) (f5993731) + * update dependency nodebb-theme-persona to v11.2.21 (#9969) (8fac8d61) + * update dependency nodebb-plugin-mentions to v2.15.1 (0f8a68c0) + * update dependency validator to v13.7.0 (81c8d70c) + * update dependency autoprefixer to v10.4.0 (755860f1) +* ability to enumerate email via updateProfile method (c1ac2912) +* accidentally not clearing email when said email is confirmed for a different uid (b912a564) +* #9976 (28dd31a8) +* #9976, handle array or object (9bfb6c72) +* dont show previews on mobile (41e02400) +* category load more btn visibility (05468526) +* #9973, ignore if assigning to same parent (66e7cdac) +* #9972 (67cb2491) +* remove tooltip on ajaxify (f728abda) +* don't highlight external nav items (8a88295d) +* don't use # for previews (5a0efd2d) +* events for just topic with main post (3d611ab7) +* #9954, get next post timestamp (89399c0e) +* topic events not rendered in infinitescroll (a7f235db) +* broken post uploads due to 6a976a9db0340e34577961ce8d5d9479c78f7856 (485b6ced) +* #9950, rename account export routes to remove `uid/` prefix (0ee85d5a) +* double invocation of authenticateRequest (60352eca) +* #9945, call authenticateRequest middleware for mount points in /api (6a976a9d) +* hooks is sometimes undefined (74aa12c9) +* typo in flags (bc4b19b4) +* remove unused code (50b2ebf8) +* handle undefined data.query (8f08d9ca) + +##### Performance Improvements + +* only load posts once (9fbb3b11) + +##### Refactors + +* shorter require (41c3eb82) +* deprecate app.alert functions user alerts module directly (0428912c) +* deprecate app.logout (8b4510cc) +* simpler rejoin (61903448) +* deprecate app.openChat/newChat (f352be63) +* move search functions from app.js to search module (1a9b1598) +* move session messages (666fe209) +* move warnings/messages out of app.js (51855254) +* remove jshint (0a7ff208) +* cleanup info, better cpu usage % (4b738c8c) +* acp only uses 3 modes and a single theme (890bf03f) +* display errors from category drag/drop (c1cc35a9) +* use utils.debounce (e8c17fee) + +##### Tests + +* add another assert for random failing test (ae64b9f4) +* socket.emit doesnt exist in tests (61d1f565) +* show body when test fails (e3f5b706) +* lint (3d2398ac) +* fix tpl test (30cce142) +* dbsearch no longer has staticDir (3386893b) +* increase timeout (4ac9270a) +* fix account export test routes (10bb8cf7) +* add test aliases.buildTargets (62ac9a8b) +* empty query params for search (bda5d144) + +#### v1.18.5 (2021-10-27) + +##### Breaking Changes + +* disable javascript in custom less tab (719cfc0d) + +##### Chores + +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* up themes (463b2076) +* up persona (1438f409) +* incrementing version number - v1.18.4 (945c2b0b) +* update changelog for v1.18.4 (7cbcb521) +* **deps:** + * update dependency lint-staged to v11.2.6 (8d4bb8bb) + * update dependency lint-staged to v11.2.5 (0728a994) + * update dependency lint-staged to v11.2.4 (f76a7882) + * update dependency husky to v7.0.4 (2a3e13f3) + * update dependency mocha to v9.1.3 (4784f016) + * update dependency eslint-plugin-import to v2.25.2 (3c3f45d9) + * update dependency jsdom to v18 (4b8dcd4c) + * update dependency eslint-plugin-import to v2.25.1 (7c4aebbd) + * update dependency lint-staged to v11.2.3 (288b5456) + * update dependency lint-staged to v11.2.2 (f96c8c4d) + * update dependency @commitlint/cli to v13.2.1 (52c38a1d) + * update dependency lint-staged to v11.2.1 (022e8df0) + * update dependency eslint-config-nodebb to v0.0.3 (4b92df82) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email, nodebb.error (9b68dc37) + * fallback strings for new resources: nodebb.admin-dashboard (ff962b5d) + * fallback strings for new resources: nodebb.admin-dashboard, nodebb.admin-menu (abe59131) + * fallback strings for new resources: nodebb.admin-manage-digest, nodebb.admin-settings-user, nodebb.user (2bed40be) + +##### Documentation Changes + +* update verbiage re: login API route (94c4f87b) + +##### New Features + +* new ACP option `emailPrompt` ... which allows administrators to disable the client-side prompt to encourage users to enter or confirm their email addresses (80ea12c1) +* show popular searches (f4cf482a) +* new plugin hook to allow plugins to reject email address on new registration or email change (6b4f35c2) +* utilities login API route now starts an actual login session, if requested (806a1e50) +* add method name to deprecation message (b91ae088) +* quote tooltip (66fca4e0) +* additional quality options for jpeg uploads, added quality and compression settings for png uploads (d22b076b) +* #8053, biweekly digest option (f7967bdf) +* core submit button dropdown (605a5381) +* added failing i18n tests (35af7634) +* confirm before deleting all events (#9875) (56d05b4e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v12.1.7 (#9944) (bf20965f) + * update dependency nodebb-theme-persona to v11.2.19 (#9943) (bcf85fcf) + * update dependency nodebb-rewards-essentials to v0.2.0 (7c2ecb12) + * update dependency nodebb-theme-vanilla to v12.1.6 (49b8b983) + * update dependency nodebb-theme-persona to v11.2.18 (ed0adf2c) + * update dependency nodebb-theme-persona to v11.2.17 (78661079) + * update dependency postcss to v8.3.11 (a5f4e206) + * update dependency nodebb-theme-vanilla to v12.1.5 (d74a6bd3) + * update dependency sharp to v0.29.2 (8b8fe393) + * update dependency postcss to v8.3.10 (b18a24e9) + * update dependency nodebb-theme-persona to v11.2.15 (f3c8d7da) + * update dependency nodebb-theme-persona to v11.2.14 (#9919) (5e08e67b) + * update dependency socket.io-client to v4.3.2 (deba3e27) + * update dependency socket.io to v4.3.1 (e1554f61) + * update socket.io packages (ce5a0a21) + * update dependency nodebb-plugin-spam-be-gone to v0.7.10 (600a8720) + * update dependency nodebb-plugin-composer-default to v7.0.10 (b0128f85) + * update dependency nodebb-plugin-markdown to v8.14.4 (f8f35d7e) + * update dependency nodebb-plugin-composer-default to v7.0.9 (ed874662) + * update dependency nodebb-theme-persona to v11.2.13 (1dba75e9) + * update dependency ioredis to v4.28.0 (4ff5452d) + * update dependency nodebb-theme-persona to v11.2.12 (fe9f82f6) + * update dependency ioredis to v4.27.11 (6d2e0aa9) + * update dependency nodebb-plugin-mentions to v2.14.1 (820f8cdf) + * update dependency jquery-ui to v1.13.0 (b0eb2aed) +* remove loading="lazy", fixes inf. scroll loaded images (01572785) +* windows tests (25ebbd65) +* undefined query showing in searches (6cfaea06) +* don't repeat search if on same page (89f5e06b) +* api session revoke test (0926ae6e) +* crash (da64810a) +* add missing translation (eb075c73) +* move record to controller (ee8e0480) +* profile edit fields showing translated values (63572c23) +* #9934, fix translator test (8d316d18) +* token verify (04dab1d5) +* guard against prototype pollution (1783f918) +* translator path traversal (c8b2fc46) +* there is no alltime digest, fixes translation in test email (e62948f7) +* clicking outside postContainer should close tooltip (47df62e7) +* minification regression (998b9e79) +* tooltip (fec7ebed) +* biweekly digest #8053 (9cb4de50) +* restore plugin upgrade checking logic (44687394) +* fallbacks for new langauge key (ed4ebd22) +* #9917, show topics as unread for guests (4333d217) +* clarify site settings urls vs config.json url (#9912) (6436aa65) +* clarify SMTP enable toggle (#9911) (09f198fc) +* don't overwrite reloadRequired with false (9e0ce027) +* delete translations in admin/general folder (since general was removed and relocated elsewhere) (b460e590) +* pushed missing key to tx and pulled fallbacks (21b61082) +* adding missing language namespace "top" (0f9b0b78) +* extra debug log (bd893cda) +* have renovate add `dependencies` label to its PRs (eddb9868) +* no global bootbox (#9879) (227456fb) +* #9872 update app badge with notification count if applicable (3e69bcdf) +* better nomenclature (c1149d04) +* html attributes (#9877) (3acaac4c) +* escape thumbs, allow robots meta tag (4f9717fb) +* missing translations (#9876) (7935bd9e) + +##### Performance Improvements + +* dont fs.open if plugin doesnt have language namespace (#9893) (1feb111a) + +##### Refactors + +* wider value field (c428ba80) +* dont save partial searches (c7e078d4) +* use search api for topic search (64192731) +* slowdown quick search (19ee7174) +* typo (a5287906) +* add callback to loadNotifications (f02fba29) +* simplified utilities API > login rout (506c34a8) +* log error as well (1d62bd6d) +* catch errors from buildHeader in error handler :fire: (73a9ca09) +* add missing helpers.tryRoute (d4da9840) +* shorter middleware (ee0282f5) +* meta/minifier use async/await (b2429ef0) +* remove unused var (90b81262) +* catch errors from digest (8e319a9b) +* less.render returns promise (14bc83a8) +* less.render already returns promise (6da32392) +* prompt.get already returns promise (c70eaa0a) +* no need for async/callbacks (057d1d58) +* no more :cow: (38756a0c) +* allow array of uids for blocks.is/list (a9bc6a09) +* show full url on error log (8e6bd7e9) +* var to const and let (#9885) (b0a24d6d) +* remove unused code (997fb2b3) +* remove unused colorpicker (543d8521) + +##### Reverts + +* lazy load (3d1cf168) + +##### Tests + +* fix broken openapi3 schema (7ef5214e) +* restore commented-out i18n test (fa1afbcf) +* moved topic event and topic thumb tests to subfolder for better organisation (154ffea0) +* remove escape (6c25b9db) +* possible fix to timeout (63109c07) +* increase timeout (8654a996) + +#### v1.18.4 (2021-10-06) + +##### Chores + +* up persona (f4e62fb1) +* incrementing version number - v1.18.3 (57358743) +* update changelog for v1.18.3 (f066ddb8) +* **deps:** + * update dependency lint-staged to v11.2.0 (840b49b9) + * update commitlint monorepo to v13.2.0 (aa370310) + * update dependency mocha to v9.1.2 (6385b88e) + +##### Documentation Changes + +* added link to unofficial IRC channel (c5a48b44) + +##### New Features + +* use unread icon in mobile (27e53b42) +* cli user management commands (#9848) (d1ff3d62) +* #9855, allow uid for post queue notifications (5aea6c6a) +* add userData to static:user.delete (f24b630e) +* closes #9845, sort by views (6399b428) +* duplicate `requireEmailAddress` settings block to Settings > User (a9645475) +* mongodb driver 4.x (#9832) (07adb49e) +* a useless hover effect because raisins (1a61ffc5) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.1.3 (b4fc2773) + * update dependency postcss to v8.3.9 (9455e5b2) + * update dependency autoprefixer to v10.3.7 (78895d05) + * update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1) + * update dependency ioredis to v4.27.10 (4694382c) + * update dependency nodebb-theme-persona to v11.2.9 (346e0890) + * update dependency autoprefixer to v10.3.6 (058fdca4) + * update dependency yargs to v17.2.1 (d50dd801) + * update dependency postcss to v8.3.8 (193c92e3) + * update dependency passport to ^0.5.0 (daea8a86) + * update dependency connect-pg-simple to v7 (#9785) (054f3da6) + * update dependency yargs to v17.2.0 (c78309b5) +* #9866, fire vote hooks after reputation changes (#9867) (8ad9a103) +* #9865, don't display register messages after login (96f5312d) +* dont show decimails on auto approva minutes (a0df3890) +* #9864 (e954ca10) +* delete old topic tags (a70c69fa) +* switch inf. scroll to xhr (#9854) (4404e819) +* #9828, max-width (40915105) +* handle undefined returnTo on registerAbort (ac1b9692) +* lint (ff850b24) +* psql tests (123354ca) +* psql test (f8d4ec6c) +* possible test fix for subfolder redirect (3605ac81) +* missing relative path in test (4eacfef0) +* #9834, missing null email check on new registrations, added tests (58e0a366) +* crossorigin not showing up on manifest link tag (0faa4937) +* #9827, fix reward duplication (89af00d1) + +##### Performance Improvements + +* convert promise.all to single query (#9851) (ea04aede) + +##### Refactors + +* use utils.debounce (a7668a7f) +* remove async.waterfall from remaining upgrade scripts (6b34065f) + +##### Tests + +* dashboard (4f8647a5) +* add tests for admin privileges (9fe9ab08) +* add missing tests (34798325) +* remove debug log (8cb47548) +* no need to create fake interstitial as NodeBB comes with some by default (cb69934a) + +#### v1.18.3 (2021-09-22) + +##### Chores + +* **deps:** update docker/build-push-action action to v2.7.0 (ee027719) +* incrementing version number - v1.18.2 (0a56158b) +* update changelog for v1.18.2 (27e9282a) + +##### New Features + +* move filter:topic.post hook to top of method (f194809f) +* add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) (66eaae44) +* allow removing multiple items from list (397835a0) +* add uid to filter:user.saveSettings (7f48edc0) +* headers for global privs #9717 (#9762) (84ff1152) +* add ACP option to require email address on new registration (006fc700) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v7.0.7 (98554294) + * update dependency postcss to v8.3.7 (6ebe707c) + * update dependency autoprefixer to v10.3.5 (25687441) + * update dependency nodebb-plugin-composer-default to v7.0.6 (#9815) (c18678ce) + * update dependency nodebb-theme-persona to v11.2.8 (#9816) (39d73d0c) + * update dependency connect-mongo to v4.6.0 (8e886c85) + * update dependency nodebb-plugin-composer-default to v7.0.4 (8af54255) + * update dependency mongodb to v3.7.1 (9049dcd7) + * update dependency nodebb-theme-persona to v11.2.6 (506035b5) + * update dependency nodebb-theme-slick to v1.4.13 (787306a6) + * update dependency nodebb-plugin-composer-default to v7.0.3 (732b59c2) +* fixed element shifting in ACP menu that's been bothering me for 5-ish years (31975a62) +* #9822, use correct username/pwd (30f38771) +* remove unused translator (2add84a5) +* ban info test (07859f7e) +* #9819, show same time info for ban (9f0e55ad) +* show local time for ban (7a2f0ae1) +* crash (c437b336) +* remove caller from payload after hooks is done (15f9aaa6) +* bad uid reference (ce8ea6ea) +* update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic) (7777812e) +* #9818, fix totalTime calculation (c4fc7bf9) +* missing microdata in category data (1ed62aa8) +* #9812, add topics:schedule (c0a52924) +* for subfolders (31a6d4b3) +* req.path doesn't have full url (0236ea86) +* escape moderation note before adding to dom (75ebe786) +* #9811, send bodyClass on 403 (40c9fca9) +* also launch docker workflow on release branches (944a7985) +* xss on flags page via ban reason (ba3582b8) +* up timeout for psql tests (896ff215) +* redis batch (0c4b875e) +* redis processing batch+1 items every iteration (3261edcc) +* #9560, don't save post diffs if content didn't change (8b576a37) +* #9790, get baseIndex on update for infinitescroll (6a55c027) +* #9790, fix sorting of more than one page of pinned topics (2657804c) +* privileges added by plugins (#9802) (3ecbb624) +* #9800, don't send all welcome test emails to test@example.org @julianlam (71ed50b9) +* docker - remove sha tag (b06e8dba) +* Return QEMU back, remove platforms definition (52eace4b) +* Docker workflow tweaks (#9792) (e7f4cde4) +* browsers autocompleting smtp fields when they should not (34afb747) + +##### Refactors + +* no regex (18252fb9) +* remove async.waterfall (58ac55c1) +* remove async.waterfall (222dccaf) +* remove async.waterfall (f35a0f43) +* allow plugins to replace og:image, or specify additional og:image (819917da) + +##### Code Style Changes + +* give me an A! :100: (0b4d7d1f) + +#### v1.18.2 (2021-09-08) + +##### Chores + +* **deps:** update commitlint monorepo to v13 (87ba768f) +* incrementing version number - v1.18.1 (f8f80e4f) +* update changelog for v1.18.1 (0713475d) + +##### New Features + +* a slightly less ugly rewards panel (bf0c02a7) + +##### Bug Fixes + +* dashboard graph controls (a7855c4c) +* #9767 ACP change group icon fix (580a016b) +* #9781 (#9782) (0ce4b87d) +* replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit (856ba78a) +* handle missing uid in deprecated socket call (cdaea611) +* use privileges.users.canEdit for image upload priv check (e33e046f) +* errors from registerComplete (a48bbdbf) +* simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug) (60de0844) +* lint (1e2bda13) +* manifest error (488f0978) +* #9772, regression from https://github.com/NodeBB/NodeBB/commit/70a04bc10577e90e28d66a647d38cafc3307a285 (72710b80) +* push back some deprecations, remove deprecated stuff scheduled for v1.18.0 (dd4e66e2) +* deprecate userData.showHidden as it is functionally equivalent to userData.canEdit (4ac701d7) +* focus on save button on plugin activation (46e5e17d) +* #9773, fire hooks properly for priv changes (#9774) (6869920e) +* **deps:** + * update dependency sharp to v0.29.1 (ac6cd02f) + * update dependency nodebb-plugin-dbsearch to v5.0.3 (338f90fc) + * update dependency nodebb-theme-vanilla to v12.1.3 (0b3ea5ad) + * update dependency nodebb-theme-persona to v11.2.5 (57e54d55) + +##### Refactors + +* deprecate picture update socket call, new API routes for picture update (0a41741b) + +##### Tests + +* added test for external image via new change picture API (8cbad61e) + +#### v1.18.1 (2021-09-03) + +##### Chores + +* found some hooks that don't play well docgen (ae793b4a) +* incrementing version number - v1.18.0 (1e436ae7) +* update changelog for v1.18.0 (2fd9c095) +* **deps:** update dependency mocha to v9.1.1 (64bac178) + +##### New Features + +* create folders in ACP uploads #9638 (#9750) (3df79683) +* column based view on wide priv. tables (#9699) (61f02f17) +* als (#9749) (e59d3575) +* add quick reply key (e9314842) +* add new lang key for no best posts (6e73d8c9) + +##### Bug Fixes + +* **deps:** + * update dependency autoprefixer to v10.3.4 (67b932f4) + * update dependency nodebb-theme-persona to v11.2.4 (fe18e100) + * update dependency mongodb to v3.7.0 (31a35d7f) + * update socket.io packages to v4.2.0 (f2028d70) + * update dependency ioredis to v4.27.9 (6052eb16) + * update dependency mongodb to v3.6.12 (#9761) (5fa982c1) + * update dependency nodebb-plugin-composer-default to v7.0.2 (33d51201) + * update dependency nodebb-theme-slick to v1.4.12 (1b416d7e) + * update dependency nodebb-theme-slick to v1.4.11 (65b32fa1) + * update dependency nodebb-theme-persona to v11.2.3 (6ce321e4) + * update dependency autoprefixer to v10.3.3 (91ba7cdf) + * update dependency nodebb-theme-slick to v1.4.9 (d80b378f) + * update dependency jquery-deserialize to v2.0.0 (#9744) (7f9451ce) +* determine indeterminate checkboxes (760ea9df) +* move app.alert back into the conditionals (ca9bae3a) +* only show email confirmation warning toast on pages that it applies (1bd1cc74) +* updated email confirm warning to be more positive (2d1380dd) +* automated tests are a good thing to have (6afeac37) + +##### Refactors + +* consistent jquery element var naming (fc0e655e) +* var to const (1272da65) + +#### v1.18.0 (2021-08-25) + +##### Breaking Changes + +* **emails:** restore ability for admins to edit a user's email address [breaking] (c4e3362b) +* #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] (d1959a25) +* made TopicList.onTopicsLoaded private [breaking] (07f25d8c) +* return proper API-style response if exception caught by error handler on v3 routes [breaking] (a54a3ee1) + +##### Chores + +* **deps:** + * update dependency husky to v7.0.2 (324c7d48) + * update dependency eslint-plugin-import to v2.24.2 (9a34fe18) + * update dependency eslint-config-nodebb to v0.0.2 (cd85a55d) + * update dependency mocha to v9.1.0 (c5a42273) + * update dependency eslint-plugin-import to v2.24.1 (daca09d4) + * update dependency @apidevtools/swagger-parser to v10.0.3 (ffdf61b8) + * update dependency jsdom to v17 (#9700) (41855375) + * update dependency eslint-plugin-import to v2.24.0 (23dafa20) + * update dependency lint-staged to v11.1.2 (d47bdde2) + * update dependency jsdom to v16.7.0 (9db28b4b) + * update dependency eslint to v7.32.0 (03a98f4d) + * update dependency mocha to v9.0.3 (40384fcb) + * update dependency lint-staged to v11.1.1 (7588aae1) + * update dependency lint-staged to v11.1.0 (cb5fe271) + * update dependency mocha to v9 (f43291f5) + * update dependency husky to v7 (702290c4) + * update dependency eslint to v7.31.0 (f5a53b7f) + * update dependency lint-staged to v11.0.1 (02101315) +* up markdown/composer-default, fixes: #9708 (b74eefac) +* incrementing version number - v1.17.2 (46be2046) +* update changelog for v1.17.2 (5c9c0605) + +##### Documentation Changes + +* some hook deprecation notices (6bc090f8) + +##### New Features + +* add confirmation modal to topic event deletion (e803737a) +* allow changing default search in (794bf01b) +* #9705, use radio buttons for flag reasons (382a4c27) +* Client-side hooks - replace window.trigger (#9679) (342503e0) +* closes #9684, allow event deletion (358ad740) +* replace eslint configs on server and client side to inherit rules from eslint-config-nodebb (f653a6ff) +* re-add FontAwesome font for compatibility (a370c26f) +* update to FontAwesome 5.15, resolve #6976 (41762e66) +* removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors (70a04bc1) +* updated email confirmation alert to more closely reflect email usage, remembering dismissal (bbbacd86) +* allow requirejs modules to be awaited (58adb762) +* show instructional modal after email change request (0e05cbe1) +* return back to profile after editing email (324a12b6) +* allow registration interstitial abort to also follow returnTo (b3c91641) +* plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session (96398faa) +* allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) (b0a4a1d3) +* return generic 404 on invalid confirm code (f53fc1ad) +* invites no longer require email (a917210c) +* show different registration intersitial lead text on new account vs. existing (74aaa0a9) +* removal of emailExists socket listener (12b2a979) +* add loggedin/guest class to body (04b1f702) +* convert _fireStaticHook to async function (auto-refactor by vscode) (21359eab) +* store topic tags in topic hash (#9656) (4a56388e) +* new hook `action:topics.loading` (in the same format as `action:posts.loading`) (e0db904b) +* schedule deprecation for `action:category.loaded` and `action:category.loading`. Use `action:topics.loaded/ing` instead (8ae4c300) +* internationalize API error messages (7036c375) +* #9651, change category desc to multiline (5fd190f7) +* **emails:** + * pass req in to filter:registration.interstitial (afd2d8da) + * display current email in interstitial form (f5291999) + * upgrade script for includeUnverifiedEmails (50517020) + * +includeUnverifiedEmails ACP setting (be97aa6f) + +##### Bug Fixes + +* lint (55693ec1) +* topic event deletion (1ee92c28) +* pluginPaths (0743554d) +* #9730, show warning if plugin is active but not installed (13878e9f) +* #9729, insert new posts after topic events (60bf5643) +* #9719, only apply to non https (c354cde3) +* #9727, addHandlers after hooks (77c3085a) +* allow smaller than 5mins for admin relogin duration (a288f51f) +* taskbar icon not pushed via composer/persona (3a81c8fd) +* #9698, pass along query params in redirect (9de64bf5) +* lint (8bf2896d) +* remove unnecessary quote (093ac1c0) +* parseInt tids (162ebacf) +* #9681, update posts in queue if target tid is merged (0c816429) +* email update interstitial to not error on empty email field (on new registration) (4a521ea2) +* updated ACP > Manage > Users to handle users with no email address (824a72b2) +* allowed reset and reset_notify emails to go out to unconfirmed email addresses (d5b5b7d5) +* bug where confirmation email was sent to the old email address, not the new one (414d733d) +* email validation flow, so that it actually works, fixed event logging bug, new email verification template (3bcd1f14) +* accidental early return in confirmByCode, tests, race condition (caf89687) +* test :shipit: (2c06ac9a) +* failing test from d1959a2 (f71f2951) +* #9668, add raw info to psql database page (6c47a060) +* use hooks module instead of window trigger (acb11cc7) +* tests (0960a814) +* translate language keys if passed in to formatApiResponse (415416d2) +* lint (ff78969c) +* tests (55d7e558) +* keep query string on redirects (47c8c692) +* **deps:** + * bump persona (12e7f8d5) + * update dependency nodebb-theme-persona to v11.2.1 (#9734) (2e1562b8) + * update dependency nodebb-theme-vanilla to v12.1.2 (#9735) (4bd66a7c) + * update dependency nodebb-theme-slick to v1.4.8 (#9732) (096c5a58) + * update dependency autoprefixer to v10.3.2 (d44e3a8e) + * update dependency nodebb-theme-persona to v11.2.0 (116f9cb5) + * update dependency ioredis to v4.27.8 (8461791a) + * update dependency nodebb-theme-persona to v11.1.3 (ec103ce8) + * update dependency sharp to v0.29.0 (626d5565) + * update dependency connect-mongo to v4.5.0 (ce6039f2) + * update dependency nodebb-theme-vanilla to v12.1.1 (de83f82e) + * update dependency nodebb-theme-persona to v11.1.2 (ee10ae04) + * update dependency yargs to v17.1.1 (38e38580) + * update dependency nodebb-theme-persona to v11.1.1 (47941418) + * update dependency mongodb to v3.6.11 (a0fd0268) + * update dependency yargs to v17.1.0 (181c20ba) + * update dependency ioredis to v4.27.7 (4c9d6b62) + * update theme versions for #9607 (3b34571d) + * update dependency postcss to v8.3.6 (ebdba8f1) + * update dependency html-to-text to v8 (3f24746c) + * update dependency yargs to v17 (1b6b1fe5) + * bump composer-default to v7 (51458c75) + * update dependency autoprefixer to v10.3.1 (0d3f74b7) + * update dependency nodebb-plugin-markdown to v8.14.2 (b6a84712) + * update dependency autoprefixer to v10.3.0 (72c9650f) + * update socket.io packages to v4.1.3 (f14df0d4) + * update dependency nodebb-plugin-composer-default to v6.5.34 (31dae04f) + * update dependency nodebb-theme-persona to v11.0.26 (ae14016e) + * update dependency nodebb-plugin-markdown to v8.14.1 (8b41684e) +* **emails:** + * broken test for api/user/email/:email (81611ae1) + * dont allow retrieving user data if showemail is false @julianlam (7d115c8e) + * registration tests, email no longer passed-in, API tests (confirm email for test accounts) (6694bdd5) + * don't automatically associate email during user creation if passed in at registration (e726048e) + * remove debug log (b4b65ecd) + * broken test due to sticky registration interstitial (ab9b6716) + +##### Refactors + +* remove promisify from redis, ioredis supports promises nati… (#9728) (6659e95a) +* get rid of async.waterfall/each (8fb53252) +* remove unused async (42dbd402) +* remove waterfall (6b6a7d4b) +* move interstitials into its own file in `src/user/` (e95df2f0) +* added user.email.remove method, updated email interstitial to handle email removal (ccf004f1) +* client-side to use flag notes API (ef4e74bf) +* fix wording (6ed7e937) +* **email:** validation checking methods, +tests fix (087e6020) +* **emails:** + * more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation (69c96dd2) + * interstitial for adding/updating email (f365bc46) + * remove email validation on client and server side (7c1d1c77) + +##### Code Style Changes + +* eslint (d2492ef4) +* lint fix (340ccb24) +* lint (52229172) + +##### Tests + +* **emails:** fixing broken tests introduced by e5ff68acd (a3a3b10f) + +#### v1.17.2 (2021-07-07) + +##### Chores + +* **deps:** + * update coverallsapp/github-action action to v1.1.3 (99c23037) + * update dependency eslint to v7.30.0 (725e70e9) + * update dependency coveralls to v3.1.1 (edefac96) + * update dependency eslint to v7.29.0 (2700f717) + * update dependency eslint to v7.28.0 (fac0bcbd) + * update dependency smtp-server to v3.9.0 (86723292) + * update dependency eslint-plugin-import to v2.23.4 (886d65f6) + * update dependency eslint-plugin-import to v2.23.3 (c3b0e2fa) +* lint (2b42e7ed) +* fix indentation (d07229aa) +* up rewards (ca9ca876) +* incrementing version number - v1.17.1 (0aad1312) +* update changelog for v1.17.1 (1e6ed0ad) + +##### Documentation Changes + +* add undoTimeout (2db77b0c) + +##### New Features + +* add merge/fork hooks (c9348efb) +* #9628, allow setting custom icon names (2fe30b6f) +* #9617 update fa link (52596902) +* add bodyClass to 500 page (46a454f1) +* clear reset tokens on successful login (f9728aff) +* add filter:categories.categorySearch (be19f27f) +* allow nested properties on category page (#9601) (cc0cf99f) +* show ip on acp manage users (8ea58432) +* add undoTimeout to moving posts as well #9599 (e588948f) +* make undoTimeout configurable, closes #9599 (05cc7ccb) +* introduce boolean res.locals flag to bypass session reroll (used by session-sharing) (816856b0) +* allow modifying default category privileges (57e46e41) +* add filter:notifications.create (ac7b093f) +* pass req.query to getUnreadData (3d5fef6e) +* added GET user route for api v3 (d2960aeb) + +##### Bug Fixes + +* **docs:** #9648 (e03782f2) +* **deps:** + * update dependency mongodb to v3.6.10 (f17625fb) + * update dependency nodebb-theme-persona to v11.0.25 (c11927c5) + * update dependency sortablejs to v1.14.0 (5ff9319f) + * update dependency nodebb-theme-persona to v11.0.24 (c7feea56) + * update dependency nodebb-plugin-composer-default to v6.5.33 (3611b04e) + * update dependency nodebb-plugin-markdown to v8.14.0 (e40f648f) + * update dependency nodebb-plugin-markdown to v8.13.1 (cf6fcc21) + * update dependency nodebb-plugin-composer-default to v6.5.32 (#9626) (90e3f5ac) + * update dependency nodebb-plugin-composer-default to v6.5.30 (#9624) (2060dc61) + * update dependency postcss to v8.3.5 (09aebbda) + * update dependency postcss to v8.3.4 (520050da) + * update dependency postcss to v8.3.3 (c7006ec6) + * update dependency ioredis to v4.27.6 (82b33dc4) + * bump persona (f4eb336a) + * update dependency postcss to v8.3.2 (88f21e91) + * update dependency postcss to v8.3.1 (71b4d634) + * update dependency ioredis to v4.27.5 (9f74caf6) + * update dependency connect-redis to v6 (#9590) (6632b2b6) + * update dependency ioredis to v4.27.4 (4ffd234f) + * update dependency nodebb-theme-persona to v11.0.21 (062928d2) + * update dependency mongodb to v3.6.9 (d8c64479) + * update dependency autoprefixer to v10.2.6 (3aeac357) +* #9634, re-jig top bar of Admin > Manage > Users (b8964843) +* hide private user data in api/v3/users/[uid] (97c8569a) +* numThumb upgrade script (d9e2190a) +* acp dashboard sometimes not loading on cold load (fee782c4) +* #9636, sanitize all attributes in meta and link tags (84904976) +* convert some hooks to use hooks module (09bac6bd) +* #9627 (acdbd049) +* #9629, translate content property of meta tags (561ce7d3) +* prevent crash in expandObjBy #9618 (ab6f062f) +* dont show system tags in whitelist dropdown to regular users (0d975bc4) +* #9622 (#9623) (84e06575) +* #9620, fix notif delay (73f40e96) +* #9619, add group chat filter to /notifications (c92fc19b) +* scope (3cd9434b) +* #9615, catch exceptions in renderOverride (1eda538d) +* purge uploaded images accordingly #9606 (#9611) (8168c6c4) +* keep query params when switching chat (7b4c0a16) +* accidental unnecessarily strict conditional that effectively rendered SSO state checking opt-in instead of opt-out (a2400f6b) +* introduce artificial delay + delay fudging on invalid email during reset token generation (f6c14d6b) +* #9605, expire all active reset tokens for a uid if that uid generates a new one (229f96f8) +* lint (8c952aa3) +* schema (39e13591) +* pagination on acp users search (6695927e) +* #9596, incorrect placeholder string in some translations (93d94564) +* extra ')' (6f732611) +* disallow editing of other users' notes (edcba61a) +* #9592, check session (286644d0) +* don't crash if session doesn't exist (3717df61) +* lint (66cae54e) +* improper use of filename extensions (16e0bca5) +* return null (d8d6c989) +* updates navigation menu user icon (f9b248b8) +* returnOriginal deprecation (3fb74445) +* error when trying to trim an object (48b8e3bb) +* **post-queue:** moderatedCids is an array of numbers (#9631) (db65360c) + +##### Performance Improvements + +* cache Topics.getTopicsTags (8e0561f2) +* bypass getMultipleUserSettings (10ddfff3) + +##### Tests + +* fixed broken tests from #9605, removed token clean on token usage as it is superceded by token clean on generation (+ associated test) (5c42b3ea) + +#### v1.17.1 (2021-05-26) + +##### Chores + +* **deps:** + * update dependency grunt to v1.4.1 (0e37bbfd) + * update dependency jsdom to v16.6.0 (60170ad6) + * update dependency eslint to v7.27.0 (298af98d) + * update dependency eslint-plugin-import to v2.23.0 (1623ba4f) + * update commitlint monorepo to v12.1.4 (4a01313d) + * update commitlint monorepo to v12.1.3 (b82774c5) + * update dependency eslint to v7.26.0 (d1418210) + * update dependency lint-staged to v11 (1bf57d40) + * update dependency mocha to v8.4.0 (461e187b) + * update dependency eslint to v7.25.0 (32c20806) + * update dependency grunt to v1.4.0 (a30deef3) +* incrementing version number - v1.17.0 (75f7972b) +* update changelog for v1.17.0 (4c441a1b) + +##### Documentation Changes + +* update API docs to better outline authentication options (6ef0c8e9) +* update API authentication verbiage (d08d0c42) + +##### New Features + +* keep query string when redirecting category (77dde41f) +* add req.query to flags.list/getCount (3d6bdeb3) +* add filter:flags.getFlagIdsWithFilters (d35c64b1) +* #9559, set order help text (f5847f4f) +* add filter:user.getWatchedCategories (4afca690) +* pass req.query to getUserDataByUserSlug (518157d9) +* #9508, add cluster support (94c12e37) +* #9551 (a3d6c56e) +* add template to hook (1f3e6601) +* add filter:account.getPostsFromUserSet (a2442ee9) +* automatically attempt reconnection on window focus (8cc61f11) +* #9533, allow redirect in build hooks (f6b583bb) +* add _hooks metadata object to all hooks that have object-type params (46899cca) +* add filter:categories.copySettingsFrom (d8e4fd4c) +* guard against multiple resolves (084c9851) +* #9511 send notifications on accept/reject (b40fc4b6) +* `hidden` class to FOUC (2bfa63ae) +* add filter:middleware.autoLocale (a478dc7e) +* remove sync hooks support (01956af4) + +##### Bug Fixes + +* #9580, proper 404 when ajaxifying (9ebfdeb7) +* lint (09f51792) +* #9567 fix tests (951e71a0) +* #9567, use regular 404 (5215c30a) +* ioredis upgrade fix, maybe (1ce59508) +* bug where interstitial errors were not properly passed to the front-end via req.flash (1d9cfe1e) +* #9553, use same fields for user search results in acp (0551642a) +* lint (e8c5c18a) +* lint (ffa80163) +* tests (fad5988e) +* tests (074ee859) +* wrong error message checked (a9bb1088) +* #9507 session reroll causes socket.io to become confused (#9534) (ec6d1e23) +* isObjectField(s) empty field (2c22b06f) +* do not register SW for Safari until upstream fixes #9193 (ce5fea2a) +* infinite scroll with small number of items #9524 (#9525) (cb1dd0a3) +* #9519 unable to properly ajaxify to home on subfolder installs if anchor did not have a trailing slash (db48b952) +* #9512, fix chat icon if no privileges (6ed8890c) +* #9503, dont error in markUnread if room doesnt exist (308252f5) +* use socket.request.headers (9e07efc1) +* buildReqObject headers for socket.io calls (ed534f34) +* **deps:** + * update dependency sharp to v0.28.3 (963a9fe6) + * update dependency ioredis to v4.27.3 (075dab27) + * update dependency nodebb-theme-vanilla to v12.0.8 (#9574) (10290f54) + * update dependency mongodb to v3.6.8 (#9573) (64935787) + * update dependency postcss to v8.3.0 (ad4afd59) + * update dependency nodebb-theme-persona to v11.0.20 (403bcfac) + * update dependency nodebb-plugin-composer-default to v6.5.29 (8d7e4420) + * update dependency mongodb to v3.6.7 (f29e4e87) + * update dependency textcomplete to ^0.18.0 (9b7653cc) + * update socket.io packages to v4.1.2 (#9563) (ca7c77bc) + * update dependency nodebb-plugin-dbsearch to v5.0.2 (#9562) (2d0564cb) + * update dependency nodebb-theme-slick to v1.4.7 (bf4aa50c) + * update dependency nodebb-plugin-composer-default to v6.5.28 (4164b322) + * update socket.io packages to v4.1.1 (155a7fb6) + * update socket.io packages to v4.1.0 (53335677) + * update dependency sharp to v0.28.2 (4bc07a08) + * update dependency postcss to v8.2.15 (7770c2a1) + * update dependency nodebb-theme-persona to v11.0.19 (3145c7d5) + * update dependency nodebb-plugin-mentions to v2.13.11 (7e2ea4df) + * update dependency nodebb-plugin-markdown to v8.12.10 (2ac5a085) + * update dependency nodebb-plugin-markdown to v8.12.9 (ee3634cc) + * update socket.io packages to v4.0.2 (ff98f854) + * update dependency postcss to v8.2.14 (22ec1ea5) + * update dependency sitemap to v7 (0389dd96) + * update dependency nodebb-widget-essentials to v5.0.4 (19f1cbfc) + * update dependency nodebb-theme-persona to v11.0.18 (33d91fde) + * update dependency connect-redis to v5.2.0 (c0d54a06) + * update dependency postcss to v8.2.13 (831e5c26) + * update dependency postcss to v8.2.12 (38454df9) +* **#9508:** switch to ioredis (#9545) (dd81dd03) + +##### Refactors + +* cli/upgrade async/await (#9558) (ac86937c) +* bubble other errors (0096cf17) + +##### Reverts + +* sync hooks (5fe97b9c) + +##### Tests + +* fix tests (1029a06a) +* fix redis tests (4e490f60) +* add test for undefined fields in getObjectsFields (92de49be) + +#### v1.17.0 (2021-04-22) + +##### Breaking Changes + +* add additional flag hooks [breaking] (00a68a95) +* remove deprecated `User.emailConfirm` [breaking] (fb84c785) +* remove deprecated plugin hook `filter:privileges:isUserAllowedTo` [breaking] (5a775e09) +* remove deprecated plugin hook methods [breaking] (d41de481) +* more removals of thumb specific backwards-compatibility [breaking] (cc0d562e) +* remove deprecated `filter:admin/header.build` hook [breaking] (5f9f241e) +* remove deprecated v2 style responses for thumbs upload route [breaking] (84dfdfe6) +* remove deprecated getObject routes [breaking] (2ad0d0d0) +* remove 'filters' and 'categories' from flag details API return [breaking] (8b72479f) +* filtering logic of flags [breaking] (1603566b) +* feature flag for auto-resolving a user's flags on ban [breaking] (6b1c97db) +* allow interstitial callbacks to be async functions [breaking] (280285cd) + +##### Chores + +* **deps:** + * update dependency jsdom to v16.5.3 (0f249aa7) + * update dependency eslint to v7.24.0 (60c0c16f) + * update dependency husky to v6 (f155f326) + * update commitlint monorepo to v12.1.1 (b4d01388) + * update dependency jsdom to v16.5.2 (5e2e7a58) + * update dependency eslint to v7.23.0 (d600cd94) + * update dependency husky to v5.2.0 (77f551a4) + * update dependency jsdom to v16.5.1 (28ed579b) + * update dependency eslint to v7.22.0 (775c3b91) + * update dependency mocha to v8.3.2 (3ce731d8) + * update dependency jsdom to v16.5.0 (fd926d61) + * update dependency mocha to v8.3.1 (651c629f) + * update dependency husky to v5.1.3 (8791b44e) + * update dependency husky to v5.1.2 (5f061b94) + * update commitlint monorepo to v12 (42f7cd52) + * update dependency eslint to v7.21.0 (59518437) + * update dependency husky to v5.1.1 (2551295c) + * update dependency husky to v5.1.0 (dc06fe22) + * update dependency eslint to v7.20.0 (9ec0b2ed) + * update dependency mocha to v8.3.0 (73f07958) + * update dependency husky to v5 (d89ccf26) + * update dependency lint-staged to v10.5.4 (030ecffa) + * update dependency eslint to v7.19.0 (3696a199) +* incrementing version number - v1.17.0-beta.5 (42c4f963) +* fix indent (6406e527) +* benchpress 2.4.1 (3403635c) +* remove log (a1ee1a2a) +* incrementing version number - v1.17.0-beta.4 (91992240) +* bump composer-default (289bfc0b) +* up themes (d14ba1f4) +* remove node 10 (8d3ec234) +* bump composer-default to 6.5.20 (33fbfdfe) +* incrementing version number - v1.17.0-beta.3 (6e8b1bb9) +* add multiparty dep (ef3ec96a) +* incrementing version number - v1.17.0-beta.2 (0c1945dc) +* incrementing version number - v1.17.0-beta.1 (31872aac) +* bump composer (30954789) +* bump deps (#9335) (b9fd2c87) +* incrementing version number - v1.17.0-beta.0 (b61257ef) +* incrementing version number - v1.16.3-beta.0 (477157cc) +* extra console.log (1ae8dda8) +* up composer (1c9acef6) +* eslint max-len (cc9d6fd0) +* eslint no-restricted-syntax (5c2f0f05) +* eslint prefer-rest-params, prefer-spread (115d19e2) +* eslint prefer-destructuring (23f212a4) +* eslint object-curly-newline (8d1462ff) +* eslint function-paren-newline (62869bae) +* eslint no-var, vars-on-top (dab3b235) +* eslint prefer-arrow-callback (b56d9e12) +* eslint prefer-template (707b55b6) +* eslint import/newline-after-import (4ee0f145) +* eslint no-script-url (9f6a682c) +* eslint no-bitwise (dad01e30) +* eslint rules matching existing styles (58528d1a) +* fallbacks (74be1a59) +* deprecation notices for plugins using plugin old hook methods (3052256d) +* add deprecation notice in comments for ajaxify.loadExtraScripts (8b09292e) +* incrementing version number - v1.16.2 (ea7f8381) +* update changelog for v1.16.2 (d3883d4b) + +##### Documentation Changes + +* fixed typo (e7550673) +* added comment re: #9305 (65c57c73) +* update deprecation-removal version for plugin hook helper methods in 1.18.0 (15ba0abb) + +##### New Features + +* lang strings (9b71b087) +* rate limit file uploads (a9978fcf) +* filter flags by username #8489 (#9451) (8faa6e45) +* roll session identifier on login, as security best practice (697ed3bf) +* allow different slugs (4494728c) +* remove sort again (fd3bc605) +* update hook (f65d2162) +* add reverse of recent to getSortedTopics (05f22361) +* allow exists methods to work with arrays and single id (285aa365) +* pass all data to filter:category.get (d16b45fd) +* add action:posts.loaded (dbb59228) +* rescheduling (editing ST) (#9445) (aa0137b1) +* upgrade sharp (#9442) (f7f46e7c) +* optional urlMethod param for loginStrategies (9e1f72a4) +* add hooks to language loading (#9426) (344575dd) +* doggy.gif (b06f0ea2) +* allow adding sorted-list items from forms outside of modal (a3e95e79) +* scheduled topics (#9399) (077330b7) +* show link if category is a link (a94d9651) +* make info page full width (dd12c83f) +* allow optional fields argument on db.getObject(s) (#9385) (4327a09d) +* closes #9380, add category filtering and topic tools to tag page (668508cc) +* allow sync function (#9379) (34b9aaed) +* allow filter functions that return promises or the data directly (e6c52cf2) +* add resolve flag to post tools (52082e12) +* hide revert button in ACP > Privileges until privileges change (4cbd13fd) +* bring back static hook timeout (46270f9f) +* upgrade connect-mongo, closes https://github.com/NodeBB/NodeBB/pull/9367 (3c60ccfd) +* pass interstital errors to individual partials as well as to registerComplete (f71cb0e4) +* add filter:plugins.firehook (5eb3132d) +* copy default favicon if it doesn't exist (754283d3) +* add missing translation keys (17184bfa) +* allow missing (or non-array) middlewares argument in route helper methods (4b545085) +* pass modified params, only affects filter hooks (e74df539) +* add back topic id input (696c4895) +* expose username validation logic to user lib, new hook `filter:username.check` (bfd512b9) +* add $.deserialize to client side (e5133a78) +* allow for settings.save/settings.load on client side (66196d2c) +* remove promise-pollyfil (902a88c2) +* category privilege API routes (c1b3079d) +* change uploadCroppedPicture to use updateProfile as well (0af9d26f) +* use updateProfile for picture change (a598abcd) +* allow payload to be passed to emailer test method (1155b0c4) +* add uid of user who created flag to action:flags.create (069ac60f) +* new client-side hook `filter:api.options` to allow plugins to modify api requests (7d391d47) +* keep notifs for one month, load 50 notifications instead of 30 (02f08111) +* also pass in uid to `filter:email.prepare` (86b0c57d) +* new hook `filter:email.prepare` (27ea3dcb) +* new hook static:email.send (bf90d158) +* show time info for upgrade scripts (14a6c349) +* add dashboard sub-pages to ACP menu (73dc64d9) +* recent logins sessions table in dashbaord subpage (2f89b0d7) +* topics dashboard details subpage (e1ed514b) +* update user list in dashboard/users on graph update (c57c7703) +* show list of recent users in dashboard/users (cc938224) +* req.query parsing and dynamically loading data instead (6fdcae73) +* new hooks for notifications get/getCount (079a13d4) +* allow hook unregistration, and temporary page-based hooks (d0136074) +* report login statistics from analytics data, instead of its own zset (16d3c457) +* track login sessions for admin dashboard reporting (9a9f366d) +* track successful logins in analytics (504fd107) +* pass user picture object into change_picture_modal (c96fd3b1) +* add logout to invalid session (beb14273) +* category search test (a592ebd1) +* pass post object to filter:post.tools (ed3d9dcb) +* allow defining a list of system tags (0e07f3c9) +* add category search test, #9307 (bbaaead0) +* add tag filter to getSortedTopics (9ce6f8ad) +* ability to re-order topic thumbnails (7223074f) +* add close button to topic thumbnail modal (db027170) +* #9304, add category/topic/username to post queue notification emails (0738dae8) +* add failing test for list append/prepend with list (#9303) (8f0386d9) +* link to post-queue from topic event (a4b4a556) +* post-queue topic event (8fd78ce5) +* add post-queue cache (3f35fd33) +* newsletter opt-in/out in UCP, closes #21 (3c7cd9a6) +* load user posts/topics via xhr on infinitescroll (35954734) +* #9294, put new categories at top (4b2bf12f) +* add invalid event name to error message (670cde78) +* new notifications load/loaded hooks on client side (7edc8f45) +* pass req.session into buildReqObject (a6fa351b) +* new hook `action:login.continue` (4f976390) +* banned-users group (53e0d4d2) +* #9109, ability to delete a post's diffs (eb642f40) +* add .delete() method to api module (501441b7) +* doc add description (cc560ca3) +* add doc for query param (ed11e171) +* #9234, add pagination to /api/recent/posts/:term? (fffdc4e0) +* allow sorted-lists on multiple pages (d5d24594) +* #9232, add profile picture into exported zip (f6cd2862) +* new hook `filter:login.override`, deprecate `action:auth.overrideLogin` (b820d234) +* guard password fields in login/register against accidental caps lock (4bb3b032) +* ability to search categories, #8813 (34c42c6f) +* restore action:script.load, allow modifying loaded module via static:script.init (05be1c66) +* async/await redis connection (fdfbc902) +* async/await psql connection (33bf1b0e) +* add group name to csv event (672959c1) +* **user:** icon background selector in change picture modal (95502124) +* **remountable-routes:** + * allow category and account routes to be remounted (9021f071) + * allow /admin and /post to be remountable (f01af62b) +* **topic-events:** + * topic events GET route in write API (dc84559d) + * server-side tests for topic events (449c379d) + * clear out topic events when a topic is purged (0d4a3775) + * client-side handling on topic event log (8e93bf73) + * handle newest_to_oldest sort in topic events, WIP (882e6a15) + * generic css for timeline-event (2293a07a) + * support for uids in topic event payloads (611d1f87) + * work in progress topic events logic and client-side implementation (ab2e1ecb) +* **hooks:** + * update action:ajaxify.end to use new hooks module (1d775721) + * client-side hooks module (01c9b184) + +##### Bug Fixes + +* regress. rescheduling shouldn't add to sets that pinning removed… (#9477) (8b79c7f1) +* logic is hard (4dd38446) +* run in series (bc0ca61c) +* wrong variable for cache (2e9efc0e) +* accidentally committed this (13fa983e) +* tests (eb240c90) +* eslint (fa0c92a7) +* use req.ip instead, since guests can upload as well (ea22cd30) +* #9492, keep query params on redirect (36f119a9) +* stripTags for editing sorted list items as well (93598982) +* #9487, session data gathered during a session is lost upon login (1fee6a70) +* failure on session reroll 🍣 test (f4c5050a) +* registration interstitials not handling promise rejections properly (e845c34b) +* stripHTMLTags for sorted list entries (75073c0e) +* restore original behavior for up/downvoting when logged out (e50408b4) +* let recent replies respect oldest/newest sort settings (60eed8d8) +* #9483, fix events count display (6907837f) +* escape flag reason (161081e9) +* copy change on plugin activate to instruct admins to rebuild as well as restart (95d5359c) +* updateCategoryTagsCount (2dc3283f) +* #9473 (#9476) (036f935f) +* #9474, load hooks on page load (1af34b43) +* spec (d09cdc04) +* #9466, don't call leaveRoom in maintenance mode (f32ea173) +* exempt ST from being del/res via last main posts (#9468) (a0dd9080) +* #9462, on install copy default favicon (784600d9) +* #9463 (c5ae8a70) +* #9465 (4041e786) +* #9450 express session saved even if saveUninitialized explicitly passed in (9c52fd2e) +* acp crash (cb53a64c) +* #9447, include query params in previousUrl (536591f8) +* thumb count not updated when uploading multiple thumbs at a time (1ad1787e) +* change email button stays disabled if user submitted an invalid email (01f63e5d) +* use app.logout() to clear session after deleting user (cfdef77b) +* ./nodebb help with commander@7 (#9434) (2a03012e) +* hide titleRaw for deleted topics as well (edf80cfb) +* #9410, fix post queue (c5dda64f) +* privilege tables (9052db93) +* #9420, paginate after loading notifications (67b09cba) +* hooks for alert animate, no more fadein/fadeout for reconnect alert (d9e20290) +* #9414, use posts:view_deleted (e42b152f) +* preserve order when changing parent (2ceda70a) +* #9411 (3c4e93a3) +* #9412 (cef58d1d) +* #9406, update flag post tools (93c595d9) +* typo in switch..case (d8ff9851) +* #9404, show signatures if the target user has signature privilege (801570e4) +* selector (ee69c1f8) +* sorting when filtering by uid (75553b24) +* allow local (and overridden) login strategies to pass Error objects back (98b72ca5) +* category search not using uid (6aa60b63) +* inf scroll with subfolder install (262e059f) +* flicker on dashboard (2041b808) +* #9398, crash on post flag (90d64fe1) +* #9395, pass all data from client to Topics.reply (#9396) (a8f7b244) +* lint (4ac38ab2) +* #9394, fix guest handles (eb360351) +* #9387, don't try to load undefined images (03e30634) +* #9389, allow admins to add themselves to private groups (5c59354c) +* #9386, add missing translation string (482641e3) +* #9383, don't show deleted topic titles in inf scroll (e789fe8d) +* #9378, crash on verifyToken if API Token settings not saved (null case error) (cc489708) +* closes #9382, fix digest topic links (35700d16) +* spec (1e1127bd) +* regression from filter hook change (53f67ff3) +* crash if unreadTopics is undefined (617f4730) +* dont crash if login el doesnt exist (f45c0aab) +* regression via c1b3079d93fb4c49ba62a4be5279b7bff8e5a54d (2a939aad) +* change notification updateCount to use client-side hooks (84725130) +* tests (39b0e0fb) +* #9370, show correct teaser index if sorting is newest to oldest (9382fc6d) +* don't copy if src doesn't exist (ebccc794) +* #9362 best not to check file exists on every page load; copying favicon to uploads/system folder instead (771a8955) +* #9362 (ad565495) +* regression where login redirect for admin routes didn't go to local=1 (678e8f0f) +* lint (f4f61b92) +* if no in passed use "titles" to match header search (e787e6ea) +* add back middleware.authenticateOrGuest (166d65a1) +* request authentication called twice in account routes (e3b2c00d) +* #9354, don't close quicksearch results if mouse is down on them (8a4c361e) +* #9339, only log email errors once per digest, notification push (3aa26c4d) +* winston.info (3f42d40c) +* #9351 bad logic when inserting rows to privilege tables, also a missing tfoot :foot: (c5e25788) +* app.parseAndTranslate to always return promise (c2650169) +* bug where fallback window trigger was not firing if there were no hook listeners attached (1e579428) +* bad assignment (c8b78654) +* #9348 incorrect redirect via connect-ensure-login (fbe9215b) +* bug where loginSeconds setting was ignored for local login (f806befd) +* remove old dep (b58bacaf) +* notif pruning (2737f653) +* notification prune test (ca817631) +* user icon text overflow in some cases (2b7d0b5a) +* use components for toggleNavbar instead (114e3a1e) +* allow interstitial callbacks to be functional (no cb required) (9bf94ad5) +* don't publish before pubClient is connected (cdf5d18f) +* remove unused async (48f1e265) +* in setupPageRoute helper, buildHeader after plugin hooks have fired (984c9dd9) +* timeago missing on table update (655e2c67) +* wrong qs param, allow string to be passed to util.getDaysArray (f8e1a74c) +* wrong call to sortedSetAdd (dbe5f702) +* session not persisting to database in some scenarios (020f0b83) +* allow hidden inputs in user settings page (beaac0a1) +* use root context if buildAvatar context is undefined (b4c0b32b) +* use bootbox module (fa91525a) +* #9307, use _.flatten (25c8f026) +* awaiting res.render in send404 controller > > A plugin wanted to use `response:rotuer.page` to 404 a specific page on some condition. res.render returns early in send404 and so must be awaited otherwise multiple responses will be sent (2fef4627) +* do not overwrite `config.port` from URL, if it's already set (34096b73) +* switch back to getSortedSetRange (8686fbfa) +* settings v3 (91734a64) +* another topic thumb test fix (782bef5e) +* thumbs.associate logic fix + tests (7ebb6d30) +* missing awaits, possible test fix (7665adf7) +* #9301, dont call sitemapstream if there are no entries in categories/pages/topics.xml (9a6cf3d9) +* properly incase its the same path (807b0d43) +* numThumbs count on associate (76bcc0c9) +* missing cache deletion calls for post-queue cache (1490b32d) +* use of removed URL to get post data (36e8d251) +* init topic events from webserver.js (b81508c4) +* check null topics (b753c69c) +* guard against null topics (58cd797e) +* tests, new categories go to top now (fc90f32e) +* #9292, messageobj.content already parsed (c953b1b3) +* clear category cache on copy parent (765db86d) +* delete category cache key on category create (ed3e9ce2) +* typo (c61cc37b) +* wait for event.log to finish before killing process (a5fa212f) +* tests, only generate csrf_token on 404 gets (b6493f89) +* #9287, generate csrf_token on 404 (94f72d60) +* do not blindly escape a notification's bodyLong (783786cf) +* pass jquery object in to action:notifications.loaded hook (16610b2d) +* #9275, (0cca6893) +* don't use global bootbox obj (cfa0d423) +* remove console.log (550cd995) +* move service worker back to relative_path/service-worker.js (fca17cb7) +* spec (ab0ef442) +* markread selector (a4878a5b) +* position when scrolling up (3090a2ae) +* cache key collision (e40af441) +* tests breakage due to 67e3fb64981fe2310b17515e1f18c32021a5e983 (5c21c33e) +* register returnTo logic to match login route (67e3fb64) +* tests (492cbc62) +* posts.uploads.sync dissociates uploaded thumbs of the main pid (f79aeef8) +* update grammar on unban text (68da1c55) +* privileges page - tweak icon position and width, group name wrapping (c729adeb) +* autofocus on search field in ACP > Manage > Plugins (4af9c2fc) +* openapi test specs (cabec378) +* include admins (7c9674de) +* include admins, limit to category mods, correct privilege name (eaf9d2e4) +* http 200 test for api routes (bd583963) +* invalid API call when unfollowing a user (58655e9a) +* example (833c73e8) +* #9127, scope service worker to relative_path for the forum (#9239) (2bc74cff) +* update docs (4c12e0aa) +* broken test after sorted-lists logic change (d6f60f45) +* clear all locks on restart (9834f72f) +* `action:admin.settingsLoaded` to use new hooks lib (5131eb6b) +* crash on firing action hook that had no listeners registered (b0f5d5a5) +* bug where `action:settings.sorted-list.loaded` fired early (1a04ec64) +* regression where `filter:settings.set` no longer received sorted-lists (a8be6fb8) +* #9231, fix redis pubsub connection (5bc1f5b4) +* don't translate message on every ajaxify (a29dd21d) +* tests (05c53394) +* improper override of req.body.username in login logic (74199220) +* full settings hash not passed through to action:settings.set (473d5f4a) +* #9223, don't overwrite stmp settings (a5bf9779) +* multiple sorted-lists do not save to the correct set (4029ec37) +* pass module name to `static:script.init`, +comments (f8bf9e99) +* handle delete and update for categories:name zset (e8429f50) +* tests remove old routes (faeb6373) +* removed object routes (d41ce873) +* removed methods (647d3ba8) +* incorrect return for Thumbs.get() if thumbs were disabled (7b090c58) +* script failure if client-side page script does not exist (7da1b43f) +* bug where `action:ajaxify.end` was never called if there were no init scripts (faf59603) +* update js concatenation logic to bundle scripts.rjs into minfile regardless of build environment (8ff07bc1) +* #7125, allow list for page route, configurable via plugin hook (f975063b) +* error on flag list if no flag filters were saved in session (942d9247) +* mod cid filter accidentally saved in session (35c92d0c) +* more tests for #9217 (ce7c74b2) +* tests for #9217 (f2a5cd0b) +* missing return for #9217 (27cae0d5) +* #9217, render 400 error page on bad access to /register (b2b1450e) +* redis check compat tests (78896fc6) +* registration completion overriding returnTo if it was already set (a186ea0f) +* add missing user delete event types (5c1b7429) +* missing option for user-deleteAccount on ACP Events page (1c420602) +* **deps:** + * update dependency html-to-text to v7.1.1 (427e4f47) + * update dependency redis to v3.1.2 (35a4d0be) + * update dependency validator to v13.6.0 (e3d5d8d7) + * update dependency nodebb-plugin-composer-default to v6.5.27 (1b846271) + * update dependency redis to v3.1.1 (286a63e3) + * update dependency nodebb-theme-persona to v11.0.17 (51d58ce6) + * update dependency nodebb-theme-vanilla to v12.0.7 (16a1ba57) + * update dependency postcss to v8.2.10 (31cec2de) + * update dependency nodebb-plugin-mentions to v2.13.9 (fe087806) + * update dependency mongodb to v3.6.6 (#9467) (4264b236) + * update dependency sharp to v0.28.1 (34cbc9e2) + * update dependency nodebb-theme-persona to v11.0.16 (a8330b6d) + * update dependency nodebb-theme-vanilla to v12.0.6 (c02310b8) + * update dependency nodebb-theme-persona to v11.0.15 (316c71d7) + * update socket.io packages to v4.0.1 (e7776f8d) + * update dependency redis to v3.1.0 (fd9ff334) + * update dependency nodebb-plugin-composer-default to v6.5.26 (#9446) (8d9afbc6) + * update dependency postcss to v8.2.9 (6f51c460) + * update dependency nodebb-theme-persona to v11.0.14 (#9443) (fecfcd81) + * update dependency nodebb-theme-persona to v11.0.13 (#9437) (e5cc6e40) + * update dependency nodebb-theme-slick to v1.4.6 (dfdb0050) + * update dependency nodebb-theme-persona to v11.0.11 (27de58f2) + * update dependency benchpressjs to v2.4.3 (382f75bc) + * update dependency nodebb-plugin-composer-default to v6.5.25 (24236718) + * update dependency nodebb-theme-vanilla to v12.0.5 (89973d80) + * update dependency nodebb-plugin-composer-default to v6.5.24 (dec34446) + * update dependency nodebb-theme-persona to v11.0.10 (f78b4ba6) + * update dependency nodebb-plugin-composer-default to v6.5.23 (#9422) (e35d0741) + * update dependency nodebb-theme-persona to v11.0.8 (124cb9d9) + * update dependency benchpressjs to v2.4.2 (1dddcb49) + * update dependency nodebb-plugin-mentions to v2.13.8 (d511216c) + * update dependency connect-mongo to v4.4.1 (29ff5bb9) + * update dependency nodebb-theme-persona to v11.0.7 (c5734063) + * update dependency nodebb-theme-vanilla to v12.0.4 (#9409) (870e6c2c) + * update dependency nodebb-theme-slick to v1.4.5 (#9408) (24be8642) + * update dependency nodebb-theme-persona to v11.0.6 (#9407) (b50739c1) + * update dependency nodebb-plugin-spam-be-gone to v0.7.9 (#9405) (9359cae9) + * update dependency nodebb-theme-persona to v11.0.5 (47b2b97f) + * update dependency nodebb-plugin-composer-default to v6.5.21 (#9401) (2f70ac5a) + * update dependency mongodb to v3.6.5 (fcd887fd) + * update dependency nodebb-plugin-composer-default to v6.5.19 (#9391) (1631f159) + * update dependency nodebb-plugin-composer-default to v6.5.17 (#9384) (8d401760) + * update dependency nodebb-theme-persona to v11.0.3 (27facadb) + * update dependency socket.io-redis to v6.1.0 (adaddde6) + * update dependency nodebb-plugin-composer-default to v6.5.16 (a98e92b4) + * update dependency nodebb-plugin-markdown to v8.12.7 (#9371) (56b0bfd5) + * update dependency nodebb-theme-vanilla to v12.0.2 (#9369) (8923d34c) + * update dependency nodebb-theme-persona to v11.0.2 (#9368) (fa71c483) + * update socket.io packages to v4 (#9363) (13f3c504) + * update dependency postcss to v8.2.8 (680cf5ef) + * update dependency nodebb-theme-persona to v10.5.17 (2645bf55) + * update dependency connect-mongo to v4.3.1 (59459074) + * update dependency connect-mongo to v4.3.0 (f388086a) + * update dependency autoprefixer to v10.2.5 (4f4cdacc) + * update dependency postcss to v8.2.7 (72db3754) + * update dependency nodebb-plugin-composer-default to v6.5.13 (017af7cb) + * update dependency jquery to v3.6.0 (dd6082a0) + * update dependency connect-mongo to v4.2.2 (ec0912cc) + * update dependency nodebb-plugin-spam-be-gone to v0.7.8 (#9337) (536bae70) + * update dependency nodebb-plugin-composer-default to v6.5.12 (2674de01) + * update socket.io packages to v3.1.2 (510eb1f9) + * update dependency nodebb-theme-persona to v10.5.16 (217d3afd) + * update dependency nodebb-plugin-emoji-android to v2.0.5 (e8209341) + * update dependency sharp to v0.27.2 (c5231f10) + * update dependency nodebb-theme-vanilla to v11.4.5 (8596dcc4) + * update dependency nodebb-theme-persona to v10.5.15 (753ab0a0) + * update dependency nodebb-theme-persona to v10.5.14 (ed503b80) + * update dependency nodebb-theme-persona to v10.5.12 (ddd8fa31) + * update dependency benchpressjs to v2.4.1 (4ee3a8e8) + * update dependency nodebb-theme-persona to v10.5.10 (7f8fd4b0) + * update dependency nodebb-theme-persona to v10.5.9 (5dd748c6) + * require xregexp 5.0.1 (86e911ba) + * update dependency xregexp to v5 (513cd1c3) + * update dependency nodebb-theme-persona to v10.5.8 (54b4dc1d) + * update dependency postcss to v8.2.6 (4d92af5a) + * update dependency nodebb-theme-persona to v10.5.7 (#9288) (c2459fd5) + * update dependency nodebb-plugin-composer-default to v6.5.10 (b312725f) + * update dependency nodebb-theme-persona to v10.5.6 (4599144f) + * update dependency nodebb-widget-essentials to v5.0.3 (#9284) (eb9f058f) + * update dependency nodebb-plugin-composer-default to v6.5.9 (6e14014b) + * update dependency nodebb-plugin-composer-default to v6.5.8 (674a31d1) + * update dependency nodebb-theme-slick to v1.4.3 (#9278) (d3923585) + * update dependency nodebb-theme-vanilla to v11.4.4 (#9279) (1f28e8c3) + * update dependency nodebb-theme-persona to v10.5.5 (#9277) (a7b46adc) + * update dependency connect-redis to v5.1.0 (#9276) (83a0b6b8) + * update dependency nodebb-theme-persona to v10.5.4 (#9270) (dc145284) + * update dependency nodebb-theme-vanilla to v11.4.3 (#9272) (2fda6774) + * update dependency nodebb-theme-slick to v1.4.2 (2b12905d) + * update dependency nodebb-theme-lavender to v5.2.1 (fb2f1143) + * update dependency nodebb-theme-slick to v1.4.1 (#9262) (2cfab367) + * update socket.io packages to v3.1.1 (#9253) (2147d386) + * update dependency postcss to v8.2.5 (1fa0d4f4) + * update dependency nodebb-plugin-emoji-android to v2.0.1 (42e365d9) + * update dependency nodebb-plugin-markdown to v8.12.6 (4fd6027b) + * update dependency nodebb-plugin-mentions to v2.13.7 (8a2fe3d9) + * update dependency nodebb-theme-vanilla to v11.4.2 (2326e9a6) + * update dependency nodebb-theme-persona to v10.5.3 (9245ffaf) + * update dependency nodebb-plugin-dbsearch to v4.2.0 (389690c3) + * update dependency nodebb-plugin-composer-default to v6.5.7 (13e12c95) + * update dependency json2csv to v5.0.6 (0aa8e03f) + * bump theme deps for #9244 (44019e28) + * update dependency mongodb to v3.6.4 (56e4e56b) + * update dependency nodebb-theme-persona to v10.5.1 (04411449) + * update dependency nodebb-theme-vanilla to v11.4.0 (#9238) (897d29ec) + * update dependency nodebb-theme-slick to v1.4.0 (#9237) (8e2deab4) + * update dependency nodebb-theme-persona to v10.5.0 (#9236) (4f842a79) + * update dependency nodebb-theme-lavender to v5.2.0 (47fd1634) + * update dependency nodebb-plugin-dbsearch to v4.1.3 (1e10ebfb) + * update dependency nodebb-plugin-composer-default to v6.5.6 (0e2b329b) + * update dependency autoprefixer to v10.2.4 (6c3b1fde) + * update dependency nodebb-plugin-markdown to v8.12.5 (05901fcd) + * update dependency nodebb-theme-persona to v10.4.1 (a9b3fb37) + * update dependency sharp to v0.27.1 (a90773a6) + * bump persona to get timeline style (ca14c0e2) + * update dependency postcss to v8.2.4 (5b2f0be0) + * update dependency autoprefixer to v10.2.3 (d99cb1cf) + * update dependency postcss-clean to v1.2.0 (4232d97b) +* **#9315:** api v3 post, put, del JSON (0d59fe3d) +* **remountable-routes:** + * more fixes to remountable routes (9d17f397) + * bug with user routes remounting to itself (bc68e990) +* **#9252:** pass site domain to nodemailer (#9254) (5e5d37c3) +* **topic-events:** + * topicEvents.init() test (aa8b84bb) + * repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM (df2fdd56) +* **hooks:** + * bug where hook firing would fail if there were no listeners (efff8e2a) + * fallback handling for core invocations of hooks.fire (412d2858) + +##### Other Changes + +* schema docs for new ACP dashboard subpage routes (0804d547) + +##### Performance Improvements + +* increase batch size for notifs, run parallel (728ac5ff) +* faster category tags upgrade script (0dad568c) +* use setObjectBulk (95033ef7) +* make upgrade script faster (a07509f7) +* make upgrade script faster (0959b124) +* cache base_url (cf4002bc) +* single call to get digest topics, dont send duplicate topics (5ce28207) +* single db call to add all uids (90d5c9da) +* make digests a little bit faster (0185ea1b) +* only load thumbs for topics that actually have thumbs (7eebcbdb) + +##### Refactors + +* make debug handler async (1db8920b) +* widgets (#9471) (397baf02) +* style, no need to convert length to string (d00268c9) +* deprecate action:script.load, use filter:script.load instead (d1685600) +* remove uncessary check (f316c4d4) +* remove async.each/reduce from hooks for better stack traces (d05d7091) +* use hooks.fire (0d3979ef) +* fix variable name (1982edfd) +* account edit logic and template, closes #9364 (98bf4064) +* automatically authenticate all requests setup through route helpers (#9357) (7da061f0) +* async listen testSocket (0021c601) +* remove startsWith/endsWith (48bc23c0) +* app.parseAndTranslate to return promise if no callback passed (b5a6a314) +* privileges, export modules directly (#9325) (293b7c26) +* have Graph.init and Graph.update return promises (3fa2e3ce) +* abstract out some client side dashboard code into modules, analytics subpages for users, topics, and logins (f561799f) +* move picture change client-side logic to its own rjs module (28f6931e) +* remove dupe code (5286f208) +* thumbs.associate accepts both relative path and url in path arg (3e6640ef) +* move post queue retrival code to posts.getQueuedPosts (36f20211) +* call topic events init from within file itself (6074a0fb) +* improvements (970bd06f) +* update dom after diff deletion better (a2a7557c) +* removed 3 lines (4447a64e) +* use Map to track sorted lists in Settings.set() (65de2e76) +* **user:** all plugins to change list of icon background colours (fbccf6e2) +* **remountable-routes:** + * rename `src/routes/accounts.js` to `src/routes/user.js` to better match the route prefix (1f28713f) + * allow certain route prefixes to be mounted elsewhere (92758ec5) +* **topic-events:** + * expose addTopicEvents method in topic posts lib (9559fad8) + * break out some logic in events.get into local modifyEvent method (cec3fc93) + * fire topic event logging in topics/tools instead, pass uid into payload (425eca14) +* **hooks:** + * deprecate `action:script.load` client-side hook (8e5687a4) + * better error handling (e7bd038d) + +##### Reverts + +* revert tag sort (f9df6431) +* change toPid truthy (56523aa1) +* bring back backwards compat (a1c01446) + +##### Code Style Changes + +* eslint (b5ce8d25) +* **remountable-routes:** abstract removable routes code to a separate local fn (16c1d6e9) + +##### Tests + +* remove logs (435067aa) +* clear cache between runs, require middleware later in helpers (2ea468da) +* log (d15e2710) +* remove equals (354e0a82) +* test times (2f401d7d) +* log (80ef1082) +* added test for session id reroll on login (a3a7ab3a) +* add missing test (8ef38cb2) +* double filter test (70a653d0) +* admin/manage/users tests (0e67ab01) +* fix spec for topic thumbs (4c078084) +* added missing properties to topicObject (1d9ade4c) +* added missing test file (b31f6dd2) +* topic reordering tests (ad54b174) +* additional tests for topic thumbs (50664487) +* added more topic thumbnail tests (28b30134) +* post diff deletion tests (72b050b4) +* **user:** added additional tests for icon background colour (d3a9e76a) + +#### v1.16.2 (2021-01-21) + +##### Breaking Changes + +* unescape header navigation originalRoute [breaking] (6cb5888c) +* allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.8 (a6f5de86) + * update dependency eslint to v7.18.0 (afbef95f) + * update dependency husky to v4.3.7 (d3e041e2) +* incrementing version number - v1.16.2-beta.0 (43ff8e41) +* incrementing version number - v1.16.1 (e3cd7a23) +* update changelog for v1.16.1 (b6d71710) + +##### New Features + +* add filter:email.cancel to allow plugins to cancel sending emails (c2e23706) +* grant plugins the ability to specify options to the SSO handler (ab11435e) +* add unread-count badge if navigator contains /flags route (c07e1e16) +* handle HTTP 429 as a response code (8bbb3208) +* add write API route for checking login credentials (56f929ed) +* #8813, faster category search dropdown (072a0e32) +* **api:** schema definition for new credential checking route (0da28432) + +##### Bug Fixes + +* **deps:** + * update dependency bootbox to v5 (#8751) (b5cb2f8b) + * update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f) + * update socket.io packages to v3.1.0 (3d1224e1) + * update dependency nodebb-theme-slick to v1.3.8 (1901ecb2) + * update dependency sortablejs to v1.13.0 (36069da2) + * update dependency autoprefixer to v10.2.1 (5b3c48fd) +* https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8) +* restored sanity checks for post move socket calls (d85ad10d) +* don't chagne scrollTop if at the top of page (0fa4c11e) +* #9206, fix double escaped arguments (1590cdf1) +* regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232) +* don't crash if fullname is not a string (4fb90787) +* #9204, bypass groupname length check for system group in upgrade script (00ba89b6) +* add missing await (9938a139) +* ssoState passed to strategies even if not called for (9b289eca) +* use max (0a471b76) +* keep 60 topics minimum on topic list (c30b40ab) +* access checks for tags and thumbs get route (77ab4668) +* #9194 global mods unable to pin or unpin topics (c0fb1cb5) +* #9192, exit after logging error (ef16cd2e) +* make sure inviter user exists (69419571) +* #9178 missing language strings (and fallbacks) for post-queue (a407a51d) +* #9185, fix string boolean values (89e6c75d) +* test for topicThumbs (e817d5be) +* #9184 proper relative_path usage in topic thumbs.get (66da6bcd) +* #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e) +* #9177, handled multiple deleted users properly (eaf62d39) +* broken test caused by errant .pop(), missing await (4ede18ce) +* missing error message (d83d40cf) +* test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab) +* #9176, limit description size (da546970) +* broken test due to change in response code (9534d956) +* return a user object, not an array of user objects (in v3 login check route) (97d678fd) +* bad execution flow in utilities.login (8c86f5bc) +* missing breadcrumbs in schema (87a7d85e) +* random loadFiles added by errant vscode autocompletion (53422413) +* add missing breadcrumb on /user//categories (6cbb77af) +* `--help` usage info (a51c5698) + +##### Performance Improvements + +* use only required calls (f0dd302c) + +##### Refactors + +* **api:** + * post move to write API (966c4117) + * post diffs to use write API (e118e59c) +* change var to const (1374e0ee) +* single remove call (25ab99b9) +* flags lib to have a separate getFlagIdsWithFilters method (6a1311b4) +* split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f) + +##### Code Style Changes + +* update codeclimate config to be less sensitive to duplicate code blocks (fdf03472) + +#### v1.16.1 (2021-01-06) + +##### Chores + +* increase test timeout (0d7dfeeb) +* incrementing version number - v1.16.1-beta.0 (5fcf3ea6) +* add deprecation notice to topic thumb tpl value (05d8b3c3) +* minor reordering of lines (8e5a413e) +* incrementing version number - v1.16.0 (6d01fd50) +* update changelog for v1.16.0 (1437c62f) +* **deps:** + * update dependency eslint to v7.17.0 (18ae7cf7) + * update dependency eslint to v7.16.0 (2610dfcf) + * update actions/setup-node action to v2 (#9115) (55a55ea2) +* **api:** add deprecation notices re: #9123 (cdff8d28) + +##### New Features + +* #9173, show installed plugin versions in ./nodebb plugins (8c31afae) +* added note that you can now upload videos (4d6ddf6d) +* automatically attempt socket.io reconnection on ajaxify (e5edbc6f) +* #9135, don't try to reconnect forever (c1ecfd1e) +* add confirmation modal when assigning admin:admins-mods privilege (d90aa958) +* allow dashes in privilege group names (5b8558e9) +* allow multiple privileges to be defined for a given admin socket call (3aa5beb8) +* rename admin middleware header hook (fcc1e24a) +* explicitly add filter:admin/header.build hook (75b1bbd0) +* fix more tests, add more routes, update api test suite (cb32e32a) +* add registration/complete route, fix some other tests (14c51e3c) +* add missing schemas for various ACP settings routes (9de35ec5) +* add missing schema for category update and deletion (d6de9253) +* add schema for api ping routes (d85181e0) +* normalize paths before comparison (df8d62ba) +* additional test to ensure any new routes added to express have a corresponding schema doc (dbe85630) +* update html-to-text closes https://github.com/NodeBB/NodeBB/pull/8810 (a2152dd1) +* **api:** + * closes #9123 category and topic routes migrated to Write API (edb8da1e) + * #9123, migrate rest of the getObject controllers to Write API (9ecfac9b) + * #9123, migrate /api/post/pid/:pid to Write API (e267f295) + * group ownership API route, switch client-side to use API route (32e36f7b) + * add schema for groups update route (98550d61) + * added schema for email unsubscribe token (4fc13377) +* **acp:** + * admin tags privilege (223f0a55) + * admins-mods privilege (fb46a8d9) + * added new admin privilege for groups management (da191341) + +##### Bug Fixes + +* #9130, remove timestamp prefix from thumbnail names in API response (171017c3) +* #9166 missing relative path in topic thumbs modal and topic list (b9ba44ed) +* #9163, fix total connection count on ACP (1968bf50) +* genericise .necro-post, bump persona to latest (041d45c3) +* #9126, skip base64 and long values (33290850) +* #9127, use assets path (3121215e) +* inability for admins with setting privilege to save plugin settings (a555f024) +* #9149, server-side handling of disableChatMessageEditing (895e3d93) +* #9149, incorrect client-side `disableChatMessageEditing` value for admins/gmods (d27815a8) +* #9151, dont use service worker for posts requests (20c1b684) +* #9150, fix selector so it doesn't add img-responsive to profile pics (183cabe9) +* tests (28740360) +* dont show deleted posts in navigator (931105e6) +* bug in api path existence test (501a7b77) +* #9136, fix move topic/post timeout errors (2ef72a94) +* bad assignment logic in middleware.renderHeader (34ccabe3) +* #9113, wrong path separator used in thumbs.get (da4f9118) +* email testing and settings change from ACP (2be396ff) +* removing ability to specify deprecated topic 'thumb' on topic creation (713f029d) +* #9129, event is fired on socket.io (b369dc88) +* subfolder handling in tests (bbd97ccb) +* .flat() not defined in v10, added debug router to exclusion list (6062039d) +* all tests, wrap up work (f416dc17) +* two more routes (9c2de86a) +* api tests (b9a61d2d) +* don't return deleted: 0 for ephemeral groups (600807fb) +* send fewer items to client-side for ACP settings/email page (438fa5c8) +* errors in write-api schema (c079051b) +* broken tests from last round of fixes (990f1077) +* bad error message for request body api test (a9629357) +* modify backreference test to not check router.all() calls (7fc329de) +* add missing token generation route to write api spec (eef052c1) +* trigger action:posts.edited (b7b588f5) +* **deps:** + * update dependency autoprefixer to v10.2.0 (e445ae5a) + * update socket.io packages to v3.0.5 (fd045c67) + * update dependency nodebb-theme-persona to v10.3.16 (87e333b4) + * update dependency benchpressjs to v2.4.0 (4524f825) + * update dependency nodebb-theme-persona to v10.3.15 (189be9e0) + * update dependency nodebb-widget-essentials to v5.0.2 (1dd1d3b0) + * update dependency nodebb-widget-essentials to v5.0.1 (#9144) (f55dddb2) + * update dependency nodebb-plugin-composer-default to v6.5.5 (6d980d26) + * update dependency sharp to v0.27.0 (4919e596) + * update dependency nodebb-theme-persona to v10.3.12 (37b35f7d) + * update dependency nodebb-theme-persona to v10.3.11 (db4c6863) +* **tests:** handle nested allOf blocks (77a5adb6) +* **api:** + * failing test due to missing file (3959a7bd) + * tests (80ee3dfb) +* **pwa:** #9127 service-worker.js missing on subfolder installs (b8d4709e) + +##### Refactors + +* **openapi:** update TopicObject component to reference TopicObjectSlim in its schema (fb3f3f72) +* **api:** + * deprecated groups update socket in favour of API lib (1cd2689c) + * update group deletion calls to use write API (e640a41a) +* schema backreference test to use map instead of reduce, properly check write-api routes (878ee067) + +##### Tests + +* changed test a bit to see what is going on (5f038dff) + +#### v1.16.0 (2020-12-17) + +##### Breaking Changes + +* enable topic thumbnails across the board [breaking] (9342d611) +* #8808, remove utils.slugify (4a0d8833) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.6 (2371b432) + * bump persona to 10.3.9 (91899329) + * bump composer to 6.5.1, re: #9067 (228cfa67) + * update dependency husky to v4.3.5 (48a31763) + * update dependency husky to v4.3.4 (cf5c482d) + * update dependency eslint to v7.15.0 (f4c4d671) + * update dependency lint-staged to v10.5.3 (3e6f7359) +* appease codeclimate (9f62df15) +* add comment for clarification (6037f5ee) +* incrementing version number - v1.15.5 (57cd1343) +* update changelog for v1.15.5 (b0299326) +* **i18n:** fallbacks for new topic thumb keys (15f1a089) + +##### New Features + +* add new client side hooks (a15ef53c) +* remove max age since cache is cleared when thumbs change (ab96f526) +* show alt text instead of images in teasers (#9107) (d28581eb) +* migration of old topic thumbs to new format (74d73313) +* allow plugins to override ACP relogin challenge (4c87f301) +* add user.email.confirmByUid for sso plugins (80de572a) +* add thumbs to category data return (24e754d1) +* broken test for bad topic thumbs logic (ce8057f3) +* clent-side modal for managing topic thumbs (a30c8ab5) +* raise maximum thumb size to 512 (37c367d6) +* associate topic thumbs with post uploads (for the mainPid) (1c5cdb51) +* helper method to get thumbs by pid (cb7e4cda) +* closes #9048, tests for topic thumbs routes, write API schema (59506833) +* tests for topic thumbs (4152aa55) +* server-side work for #9047 (ef7d6db9) +* core work for #9042, thumb deletion now accepts uuids (b5d910f5) +* more work on topic thumbs refactor (90497e3e) +* expose uploaded thumbnails to client-side via API (1257aa98) +* server-side routes for handling multiple topic thumbnails (7e9e08f7) +* allow uploadThumb controller to be called in code (98cd9e35) +* move upgrade script and make it shorter (60e7de0d) +* allow clicks on navigator, clean dupe code (74274b60) +* socket.io 3 changes (#8845) (1c45fa1b) +* **deps:** update lavender to allow category sections (6d186be0) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.5.4 (#9120) (fff0cea6) + * update dependency nodebb-theme-slick to v1.3.7 (#9112) (30688b1b) + * update dependency nodebb-theme-lavender to v5.0.17 (#9111) (877f4673) + * update dependency nodebb-theme-vanilla to v11.3.10 (ff18cdfa) + * update dependency validator to v13.5.2 (#9094) (5d718348) + * update dependency nodebb-theme-vanilla to v11.3.9 (#9091) (f37dbeed) + * update dependency nodebb-plugin-composer-default to v6.5.3 (d036408d) + * update dependency nodebb-plugin-composer-default to v6.5.2 (b07fb9ab) + * bump composer-default to 6.5.0 (0db49121) + * update dependency autoprefixer to v10.1.0 (024d1fef) + * update dependency nodebb-theme-persona to v10.3.8 (#9084) (25f697b1) + * update socket.io packages to v3.0.4 (62463430) + * update dependency nodebb-theme-persona to v10.3.7 (c22cdb51) + * update dependency nodebb-theme-persona to v10.3.6 (#9077) (5937fbaf) + * update dependency nodebb-plugin-mentions to v2.13.6 (#9071) (a535350f) + * update dependency nodebb-theme-slick to v1.3.6 (#9072) (19c438c6) + * update dependency nodebb-widget-essentials to v5 (#9070) (d7f5efd9) + * update dependency nodebb-plugin-markdown to v8.12.4 (8fb814ba) + * update dependency nodebb-theme-persona to v10.3.5 (#9060) (0d082280) + * update dependency nodebb-theme-persona to v10.3.4 (#9059) (84e4e480) + * update dependency nodebb-theme-persona to v10.3.3 (3d7e2e1e) + * update dependency nodebb-theme-persona to v10.3.2 (#9056) (f49ce4ad) + * update dependency nodebb-theme-persona to v10.3.1 (#9054) (344caf5c) + * update dependency nodebb-theme-lavender to v5.0.15 (#9053) (e7d72d8a) + * update dependency nodebb-theme-persona to v10.3.0 (#9052) (dcd6fbaf) +* api usage (feecd665) +* #9117, lower query before search (4404e32e) +* #9114, fix client side groups update for memberPostCids (3ed55799) +* test (2dee3cbe) +* don't check "select all" if there are no enabled checkboxes (3ba05755) +* #9074, fix svg uploads (8f938eba) +* #9100 topic thumbs in OG image tags (ab987408) +* update version removal comments to 1.17 for some features (378a3a69) +* postgres is slow:tm: (05dd8597) +* derp? (f8dff94a) +* attempted fix for psql test in topic thumbs (9a4ea04a) +* use getSortedSetRange instead of getSortedSetsMembers (edf67f34) +* tests (bd5c4a5c) +* bad topic thumbs logic on local thumb upload (e83baa97) +* #9092, Topic thumbnails do not work with third-party uploaders (3e54b70c) +* move topic thumb tests to root level, so they actually get run by mocha (dd448e2b) +* tests for topic thumbs (9681557f) +* iteration logic bug (2170c400) +* spec (ae943974) +* changes to thumb resizing logic (67cf5e83) +* use file lib instead of direct fs module access (08736b18) +* added back missing topic thumb tests that were removed in last commit (c043cfeb) +* tests (5ec3b3d0) +* hack uploader to handle a response from v3 write api (41379e27) +* #9055, non-standard API response from addThumbs route (340387c1) +* do not allow thumb deletion route to arbitrarily delete other files in uploads folder (c09c238e) +* missing file added (ef10b6b7) +* references to since-removed Topics.thumbs.resizeAndUpload (1f0c1cd2) +* #9041, remove Topics.thumbs.resizeAndUpload() (43dc3e3e) +* #9040 (708b1c33) +* spec (1949d20a) +* #9085, dont prevent admins from deleting other users (0f480be6) +* show errors when user delete fails (ff2aa17b) +* dont start logout timer if adminReloginDuration is disabled (dd9ed236) +* #9045, no post usage info if '/files/' path received (efa4eca0) +* reconnectin no longer fires on socket.io 3 (13d5a144) +* default values, clamp postsPerPage/topicsPerPage to max (1f32d387) +* #9081, load raw settings before merging (9da0ed40) +* #9068 (86f0f82b) +* remove old utils.slugify tests (10cfdd4c) +* dont strip tags (792e9e70) +* #9065, settings v2/v3 conflict (91c20cec) +* #9063, missing handler for passwordless accounts in admin.checkPrivileges middleware (970ccb5a) +* timeago in navigation (a389a31b) +* navigation fixes (163d1a39) +* cache some jquery objects (73d2f51d) +* add ev.cancelable (63d08395) +* #9046, pretranslate string (790f4e45) +* redirect external with absolute urls (648f6215) +* external path for subfolder installs (458bfc0f) +* **spec:** broken link to status component (d31aae16) + +##### Performance Improvements + +* don't load thumbs if disabled globally, cache thumb results (2d5a224b) +* dont build identical langs (bb6cc49c) + +##### Refactors + +* topic thumbs lib to topics.thumbs (4fc9da81) + +#### v1.15.5 (2020-12-03) + +##### Chores + +* up persona (c111bde1) +* incrementing version number - v1.15.4 (a1b658d9) +* update changelog for v1.15.4 (252dddfc) + +##### New Features + +* add socket connect/disconnect action hooks (fcb10ebd) +* allow modifiying browser title on ajaxify (698718f8) + +##### Bug Fixes + +* #9032 (64ac483d) +* sso redirect on /login & /api/login (5d00b089) +* use file lib instead of directly accessing fs (for Assert.path) (3ea66f84) +* check uid as well (ef6c3b00) +* #7597, fix progress bar of cover/profile uploads (7e867cf9) +* **deps:** update dependency nodebb-plugin-spam-be-gone to v0.7.7 (#9039) (c7f2640a) + +#### v1.15.4 (2020-12-02) + +##### Chores + +* up persona (dde3171c) +* fallbacks for nodebb.error (82ca3760) +* fallbacks for nodebb.topic (5b269bc5) +* remove test code (07fe959c) +* incrementing version number - v1.15.3 (d1ae08fa) +* update changelog for v1.15.3 (cf157c9b) + +##### New Features + +* #9005, use timestamp in profile/cover images (5f0f476b) +* #8983, update pin tooltip in topic (954dc5b7) +* option to allow auto-joining of groups (optionally skip the "request membership" step) (685f3c6a) +* user notification settings for group.leave event (c1a7968d) +* add defaults for composer help (0cba2691) +* #8900, postQueue setting for category (1eb5fabd) +* #8960, update view count after merge (14bb0a44) +* use correct code (557f0f56) +* #8989, convert widget nav to dropdown (4c650aee) +* add handler for 501 api response (007a3258) +* add translation key for pin icon label with expiry (12b3aa0d) +* add pinExpiry and pinExpiryISO to topic data (ad8e7700) +* add cancel button to pin expiration modal (e1432caf) + +##### Bug Fixes + +* #9032, fix login redirect for sso plugins (6f68f4d2) +* #8962, dont show null for purged targets (86b7f8a5) +* selector on hooks page (3488daa1) +* notification on group.leave incorrectly showing "Guest has left X group" (f7558c60) +* #9019, add missing lang strings (b46d2f93) +* #9018 (e45b5cba) +* #9015, add default value for dailyDigestFreq (0f1fc10f) +* spec (cfb7b113) +* #8997, don't send notifications if uids already in group (f7c738de) +* #9002 ban templates not user friendly (4317cdea) +* #9010, show rest of info even if clusterMonitor priv is not granted (202dcef4) +* #9007 revoke old sessions after adding (d46740f8) +* guests dont always have sid (70073653) +* allow guests to see their replies immediately (a4fe4d3c) +* privs headers (92d1b8a6) +* pwd reset test (f25000cb) +* #8991, logout on password reset, dont verify email if password expired (5080f357) +* don't show topic search if no search privilege (8adbf54a) +* #8998, allow guests to use write api to post/reply (3cd0c9a4) +* guest handles to user displayname as well (5a137a0d) +* timestamp in queue, add post queue strings (546f58bf) +* #8992, set email:confirmed for first admin user (7f5efc3e) +* typo in upgrade script, closes #8990 (80f0750b) +* #8984, post-queue ux (1269103f) +* order (9ab4fb41) +* #8982, copy color on tag rename, dont copy if target exists (d3c04afb) +* tests (b596e948) +* api test (77a6dbac) +* remove dupe (cbbda451) +* csv test (3de692cd) +* spec, remove old tests (4afdf8bc) +* #8969, export csv to file (6e6a7a8f) +* spec for /tag (88e5cda5) +* #8980, fix lang string (f4d217d8) +* #8979 (bf171adc) +* #8971, disallow flags of privileged users (mods, gmods, admins) (1e7cf1cb) +* #8974, with password login for approval queue (dadb2527) +* #8974, dont show wrong message on register queue (fdca8b16) +* #8973, fix timestamp on ban modal (5c3deb4b) +* #8968, don't show topic search if search is not enabled (c8554b78) +* flicker on tooltips if server call takes long time (4c7374ea) +* missing select/clear all checkbox added to category privileges template (#8967) (a56a6577) +* use package.name for theme.id (#8965) (ba3981e2) +* winston usages (b8cafefc) +* #8957 (414caac0) +* dont go back after delete account actions (7e6427bc) +* error message (47a19d67) +* #8954, clear purged replies and toPids (#8959) (5bb5ec46) +* #8955, popstate to purged topic should go to homepage (39dae0aa) +* 'already-deleting' error on subsequent account content deletions (21d6225c) +* #8949, faster upgrade script (93863bb3) +* **deps:** + * update dependency nodebb-theme-vanilla to v11.3.8 (#9031) (18707940) + * update dependency nodebb-theme-slick to v1.3.5 (#9030) (4085f3e6) + * update dependency nodebb-theme-persona to v10.2.98 (#9029) (f7d60c43) + * update dependency nodebb-theme-persona to v10.2.97 (42b23a3b) + * update dependency nodebb-plugin-composer-default to v6.4.10 (#9025) (43bbfb67) + * update dependency nodebb-theme-vanilla to v11.3.7 (#9024) (3f597a55) + * update dependency nodebb-plugin-composer-default to v6.4.9 (#9023) (110186b9) + * update dependency nodebb-theme-slick to v1.3.4 (#9022) (8dc1437e) + * update dependency nodebb-theme-persona to v10.2.96 (#9021) (2c9cd286) + * update dependency nodebb-plugin-composer-default to v6.4.8 (#9017) (1f5f2e1d) + * update dependency nodebb-plugin-markdown to v8.12.3 (9004319e) + * update dependency validator to v13.5.1 (7b39cf4b) + * update dependency nodebb-theme-persona to v10.2.95 (#9001) (4ddab380) + * update dependency nodebb-theme-persona to v10.2.94 (#9000) (877d8554) + * update dependency nodebb-theme-persona to v10.2.93 (#8999) (c44d9d2f) + * update dependency nodebb-theme-persona to v10.2.92 (#8995) (346b91eb) + * update dependency nodebb-theme-vanilla to v11.3.6 (#8987) (6c980db1) + * update dependency nodebb-theme-persona to v10.2.91 (#8986) (8258536a) + * update dependency autoprefixer to v10.0.4 (#8985) (fad2d342) + * update dependency nodebb-plugin-markdown to v8.12.2 (f5714452) + * update dependency nodebb-theme-persona to v10.2.90 (5664807d) + * update dependency nodebb-theme-vanilla to v11.3.5 (19fe2493) + * update dependency nodebb-theme-persona to v10.2.89 (ad60bc06) + * update dependency autoprefixer to v10.0.3 (b2f0d38f) + * update dependency benchpressjs to v2.3.0 (6c316be4) +* **openapi:** + * spec for c1a7968d23f0809e7012edfccf49b193749998ec (69864b87) + * spec for 685f3c6aa6173383d6c31b87ed51cf8ed0ca44ce (1bb75e76) +* **acp:** + * #9008 undefined link for "no users browsing" state on dashboard (54dc449f) + * #9009 no-users-browsing untranslated on dashboard (286243cd) +* **spec:** + * from 6e6a7a8f8a9a75500ba1f336cabc882234212f88 (acb57666) + * breaking tests (88a60473) + * broken test due to canFlag addition (1b1205a9) + +##### Refactors + +* remove old hack (73746bb4) +* add TopicObjectSlim common schema (22715d54) +* pin/lock threadTools to use topicCommand, rewrote topicCommand to match categoryCommand signature (15c6f32c) + +#### v1.15.3 (2020-11-26) + +##### Chores + +* bump persona (720170a9) +* remove console.log (6a819944) +* move topic route schema up two levels as slug and index are optional (ae402e21) +* move category route schema up two levels as slug and index are optional (b3b501d7) +* up persona (0ffc091b) +* up persona (2f2f0ab7) +* up persona (5c9ff18e) +* add missing plugin hook deprecation warning (98a05e4d) +* pin autoprefixer to latest (46eb7701) +* incrementing version number - v1.15.3-beta.0 (28fa03bd) +* up persona (81984285) +* up slick (5f2fe883) +* incrementing version number - v1.15.2 (5867a5b9) +* update changelog for v1.15.2 (37965d45) +* **spec:** replace ugly hack with another hack for optional properties (45a4f136) +* **deps:** + * update dependency lint-staged to v10.5.2 (db205e2e) + * update dependency eslint to v7.14.0 (80404216) + +##### New Features + +* add topicOwnerPost #8778 (c037779f) +* clear reset tokens on user delete (4f37eddc) +* select/clear all checkboxes in privilege table (#8941) (00e75de7) +* show ban reason and expiry in write api responses, if user is banned (afb26bfe) +* automatically unban users in onSuccessfulLogin (6e5ec3f8) +* #8925, #8924 (3f337b5d) +* human readable uptime (672d4da0) +* allow ACP API access to bearer tokens (3b1c03ed) +* allow pins to expire (if set) (#8908) (046d0b16) +* #8637 (903e9d82) +* add displayname into user obj #8637 (#8909) (9ca44e6f) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.2.87 (#8946) (167ab3a4) + * update dependency nodebb-theme-persona to v10.2.86 (#8945) (5af5cb85) + * update dependency nconf to ^0.11.0 (58152606) + * update dependency postcss to v8.1.10 (5363ebbb) + * update dependency nodebb-theme-persona to v10.2.85 (#8928) (abc32d62) + * update dependency postcss to v8.1.9 (d1cb5d48) + * update dependency postcss to v8.1.8 (b47a470b) + * update dependency nodebb-theme-vanilla to v11.3.4 (#8914) (589f7a56) + * update dependency nodebb-theme-persona to v10.2.80 (#8913) (38127b04) + * update dependency nodebb-theme-persona to v10.2.79 (#8907) (8e1b2458) + * update dependency nodebb-theme-persona to v10.2.75 (b9856179) +* add topic uid to infinitescroll (6771ca15) +* #8943, session mismatch modal thrown on login (race condition) (d5845169) +* #8912 (ac734b83) +* #8918 (e32cd31e) +* basepath for r.js modules (3af4d13f) +* test (61c6a762) +* move meta.getServerTime call to admin namespace (1c0e8c16) +* add client side check for userslug #8939 (f20c12ee) +* #8939, fix username change notification getting filtered out (0ca40af8) +* #8931, fix lang string (cf903e4e) +* #8932, fix client side error when updating username (95a3f030) +* bug with Topics.resizeAndUploadThumb not checking for extension validity (eab4ca71) +* #8933 (2b73a14e) +* #8929, fix popular, top rss feed urls (77f0bff5) +* a derp (5dd3b031) +* spec (b18e7e31) +* improper handling of scheme-relative URLs in topic thumb logic (4ca62dc4) +* https://github.com/NodeBB/NodeBB/pull/8685 (5fa09832) +* on OP edit, call helper method to upload and resize thumb (f33a9185) +* https://github.com/NodeBB/NodeBB/pull/8759 (9ee1fb49) +* spec (c2bb6123) +* guest displayname (1be08b2e) +* show messages after app load (46acbfda) +* restart on js changes in vendor (814771bd) +* #8915, fix queue not being cleared after firing click events (6ef7e867) +* spec, only call modifyUser on unique user objects (dbd814c2) +* setting (ae5d4405) +* spec (8d060065) +* group userTitles translation escapes (e9585b9b) +* remove params from error log (965671a9) +* **spec:** always show thumb in topic response (493c568a) + +##### Refactors + +* remove unused require (db1c140f) +* move API banned response handler to separate internal method (906d7d73) +* move plugin hook methods to plugin.hooks.* (6e2da996) +* remove breaking change in pin expiry (ef3df47a) +* use categoryCommand local method for pin/lock in category tools (#8917) (00aee84b) + +#### v1.15.2 (2020-11-18) + +##### Chores + +* incrementing version number - v1.15.2-beta.1 (20c05e80) +* remove debug log (0a0b4661) +* incrementing version number - v1.15.2-beta.0 (996174a1) +* **deps:** update dependency smtp-server to v3.8.0 (5f5f0edb) + +##### Documentation Changes + +* openapi schema for user/group exist check, session deletion (bcccb331) + +##### New Features + +* #5274 (4e9b10ab) +* #4456 (fb567a7a) +* #8475, allow flagging self posts (a6afcfd5) +* #7550, show message if post is queued when js is disabled (120999bf) +* #8171, add oldCategory if topic is moved (35f932cd) +* #8204, separate notification type for group chats (b44ddecd) +* add test for custom translations (7928036a) +* https://github.com/NodeBB/NodeBB/issues/8147 (1d6bcbeb) +* invites regardless of registration type, invite privilege, groups to join on acceptance (#8786) (3ccebf11) +* add nodejs version to issue template (29c2ca94) +* allow groups to specify which cids to show member posts from (#8875) (8518404e) +* **api:** account deletion routes for the Write API (#8881) (a0b7a823) +* **deps:** benchpressjs@2.2.1 (#8887) (d30ea256) + +##### Bug Fixes + +* #6407, fix feeds (fa4177c3) +* navigation highlight (62b62821) +* benchpress warnings (a87ccccc) +* benchpress warnings (dfdc0c42) +* internal helper method hasGlobalPrivilege, DRY (e1d7c4d8) +* spec (2f4653a3) +* #8884, remove header/footer cache (e4d2764d) +* check tid in event handlers client side (9dac9630) +* #8883 (f14e42d8) +* #8872 missing admin/menu language key+fallback (fdab76f8) +* run every hour, dont show message if average_time is 0 (51b7eca1) +* add back test timeout for exports (b3e00489) +* pass length to messaging checkContent hook (dc9668e4) +* **deps:** + * update dependency nodebb-theme-persona to v10.2.74 (#8905) (5f6137f0) + * update dependency nodebb-theme-persona to v10.2.73 (#8904) (c2019b7b) + * update dependency nodebb-plugin-composer-default to v6.4.7 (#8902) (b7b1f203) + * update dependency nodebb-theme-persona to v10.2.72 (#8903) (bee8cfe4) + * update dependency nodebb-theme-vanilla to v11.3.3 (422aa7f0) + * update dependency nodebb-theme-persona to v10.2.71 (3b6e71d5) + * update dependency nodebb-theme-persona to v10.2.70 (d6dd1cb6) + * update dependency nodebb-theme-slick to v1.3.2 (2ce1fcd3) + * update dependency nodebb-theme-vanilla to v11.3.2 (9f2d0d42) + * update dependency nodebb-theme-persona to v10.2.69 (15810643) + * update dependency sharp to v0.26.3 (84d54577) + * update dependency nodebb-plugin-mentions to v2.13.5 (dde9f189) + * update dependency json2csv to v5.0.5 (b63b7ae5) + * update dependency benchpressjs to v2.2.2 (d1e804aa) + * update dependency nodebb-theme-vanilla to v11.3.1 (#8878) (85aaeded) + * update dependency nodebb-theme-slick to v1.3.1 (bbfb276a) + * update dependency nodebb-theme-persona to v10.2.68 (ec70329a) + * update dependency nodebb-plugin-spam-be-gone to v0.7.6 (#8877) (45922fae) + * update dependency nodebb-plugin-spam-be-gone to v0.7.5 (#8876) (48e82520) + * update dependency nodebb-plugin-spam-be-gone to v0.7.4 (#8874) (eab27f23) + +##### Refactors + +* client-side handlers for user invitations (d83eb7f8) +* async/await controllers/index.js (5598130a) +* less dupe code (8fbe8324) + +##### Tests + +* new api test to ensure each path's parameters are defined in context (97842c43) +* updated test name to be more specific (319cfeaa) + +#### v1.15.1 (2020-11-11) + +##### Chores + +* incrementing version number - v1.15.1-beta.0 (e033da8a) +* fallback l10n for admin-settings-api (8368c25b) +* **deps:** + * update dependency eslint to v7.13.0 (bcbc0854) + * update dependency eslint-config-airbnb-base to v14.2.1 (d227fe9f) + * update commitlint monorepo to v11 (90bcfa6d) + +##### New Features + +* #8864, add action:events.log (9c5c32d4) +* show db info side by side (62c0454c) +* add language keys for admin-settings-api (d32e4e02) +* #8824, cache refactor (#8851) (f1f9b225) +* move mkdirp to beforeBuild so it doesnt get called twice (6255874e) +* group exists API call in write api (d2631922) +* user exist route in write api (1446cec7) +* new shorthand route /api/v3/users/bySlug/:userslug (60e1e99b) +* allow passwords with length > 73 characters (#8818) (512f6de6) +* #8821, allow guest topic views (9e3eb5d4) + +##### Bug Fixes + +* #8869, dont escape category title,description twice (567c5f20) +* refresh flags list on bulk action success (769aba0a) +* test breakage from f300c933a50263039a57811f8cc716df39a138b0 (ee4d90f6) +* remove some unnecessary jquery wrappers (9f7902ef) +* send back jquery object to keep backwards compat (978f1ee0) +* use header/footer cache in prod (a0164b1c) +* add missing maxAge to cache (05a92885) +* clear header-cache after each suite (3f5f38dd) +* show msg on fail (255cf43e) +* spec (fe63c6ae) +* guest header/footer cache (2e446392) +* #8846, possible fix (74951f59) +* winston error message (16d03975) +* permanent redirect on user api redirect shorthand (6b196a20) +* user exist route needs no authentication (f2bb42c0) +* #8840, don't crash if /compose route is called with no query params (c61dee4b) +* XSS in event:banned messaging modal (f68bce86) +* #8838, fix chat dropdown timestamps (78ee8332) +* #8836, truncate fullname (76cd5b0f) +* #8827, do not require admin:users privilege to ban users (891a1ea2) +* **deps:** + * update dependency nodebb-plugin-mentions to v2.13.4 (1460a7a8) + * update dependency diff to v5 (72d1b3cd) + * update dependency nodebb-theme-persona to v10.2.67 (#8847) (e250c3f1) + * update dependency json2csv to v5.0.4 (#8865) (ba7b23ac) + * update dependency postcss to v8.1.7 (#8866) (2946bb16) + * update dependency nodebb-theme-slick to v1.2.40 (#8863) (20f4fe08) + * update dependency nodebb-plugin-mentions to v2.13.3 (#8862) (c18f4491) + * update dependency benchpressjs to v2.1.0 (14ba6383) + * update dependency benchpressjs to v2.0.9 (381a32ab) + * update dependency mongodb to v3.6.3 (#8841) (7e273e77) + * update dependency nodebb-theme-persona to v10.2.66 (#8839) (00f90cd9) + * update dependency nodebb-plugin-mentions to v2.13.2 (#8835) (064c99cd) + * update dependency postcss to v8.1.6 (e0cf9740) + * update dependency @nodebb/socket.io-adapter-mongo to v3.1.1 (#8831) (40eb658b) + * update dependency @nodebb/mubsub to v1.7.1 (#8830) (7b8a5567) + * update dependency postcss to v8.1.5 (9f5ef9d0) +* **#8828:** web install templates now compiled (#8832) (de5a21f1) +* **acp:** max-height for plugin menu list (eec630f1) + +##### Refactors + +* move session revocation route to write api (f300c933) +* change Benchpress.parse to .render (#8856) (e128264b) + +#### v1.15.0 (2020-11-04) + +##### Breaking Changes + +* remove toolsVisible in post tools' menu [breaking] (7e7366be) + +##### Chores + +* update changelog for v1.15.0-rc.5 (69f4d5ac) +* incrementing version number - v1.15.0-rc.5 (4bd2788b) +* add info log into tests (b6d86878) +* update renovate config to automatically merge non-major version bumps #yolo (1c8b8ce1) +* update changelog for v1.15.0-rc.4 (16882941) +* incrementing version number - v1.15.0-rc.4 (57b49320) +* update changelog for v1.15.0-rc.3 (2738041b) +* incrementing version number - v1.15.0-rc.3 (6de7760a) +* bump persona (e0b67817) +* update changelog for v1.15.0-rc.2 (c3a7ab54) +* incrementing version number - v1.15.0-rc.2 (7c084134) +* update changelog for v1.15.0-rc.1 (4f49b3da) +* incrementing version number - v1.15.0-rc.1 (943424b5) +* update changelog for v1.15.0-rc.0 (aab5f018) +* incrementing version number - v1.15.0-rc.0 (8d48455b) +* update changelog for v1.15.0-beta.30 (39648722) +* incrementing version number - v1.15.0-beta.30 (2dd3c962) +* some optimizations for codeclimate (4a63c20a) +* update changelog for v1.15.0-beta.29 (63696c40) +* incrementing version number - v1.15.0-beta.29 (fca176d2) +* refactor src/emailer.js (75459517) +* update changelog for v1.15.0-beta.28 (fd975a66) +* incrementing version number - v1.15.0-beta.28 (57f83162) +* update changelog for v1.15.0-beta.27 (70673824) +* incrementing version number - v1.15.0-beta.27 (78fad240) +* lint notifications.js (4fc84e9f) +* update changelog for v1.15.0-beta.26 (5e01d288) +* incrementing version number - v1.15.0-beta.26 (62c44095) +* up persona (ff8a833a) +* up persona (4a0f54ae) +* update changelog for v1.15.0-beta.25 (240a04b4) +* incrementing version number - v1.15.0-beta.25 (1124d4ee) +* up persona (032e6001) +* update changelog for v1.15.0-beta.24 (72ab5ba1) +* incrementing version number - v1.15.0-beta.24 (23ba071d) +* up persona (5407bf48) +* up persona (4c2eab4b) +* up persona (91133b0f) +* up persona (bcac0805) +* up persona (9dc4db1f) +* up persona (ba70a1bf) +* update changelog for v1.15.0-beta.23 (e6ea208c) +* incrementing version number - v1.15.0-beta.23 (61a04eb9) +* update changelog for v1.15.0-beta.22 (59ee74c2) +* incrementing version number - v1.15.0-beta.22 (9c9329ee) +* update changelog for v1.15.0-beta.21 (8089542e) +* incrementing version number - v1.15.0-beta.21 (966cdc13) +* update changelog for v1.15.0-beta.20 (1650f303) +* incrementing version number - v1.15.0-beta.20 (c8e57ec1) +* update changelog for v1.15.0-beta.19 (9cde5105) +* incrementing version number - v1.15.0-beta.19 (2eb7c284) +* update changelog for v1.15.0-beta.18 (b2ca9686) +* incrementing version number - v1.15.0-beta.18 (e096791e) +* update changelog for v1.15.0-beta.17 (d6178158) +* incrementing version number - v1.15.0-beta.17 (f1c28092) +* update changelog for v1.15.0-beta.16 (e08297ff) +* incrementing version number - v1.15.0-beta.16 (6043c9cb) +* update changelog for v1.15.0-beta.15 (f878b92c) +* incrementing version number - v1.15.0-beta.15 (10b94f9b) +* update changelog for v1.15.0-beta.14 (5e60d092) +* incrementing version number - v1.15.0-beta.14 (6ca4b86f) +* update commitlint config (61a8c6f0) +* update changelog for v1.15.0-beta.13 (ca8d492b) +* incrementing version number - v1.15.0-beta.13 (bdd71c51) +* update changelog for v1.15.0-beta.12 (0a242605) +* incrementing version number - v1.15.0-beta.12 (b852c9b7) +* update changelog for v1.15.0-beta.11 (f07ba866) +* incrementing version number - v1.15.0-beta.11 (c1ce7391) +* update changelog for v1.15.0-beta.10 (9c34eced) +* incrementing version number - v1.15.0-beta.10 (f252d4d7) +* update changelog for v1.15.0-beta.9 (affc7927) +* incrementing version number - v1.15.0-beta.9 (8dc513da) +* update changelog for v1.15.0-beta.8 (3b960c3b) +* incrementing version number - v1.15.0-beta.8 (34bb869c) +* update changelog for v1.15.0-beta.7 (e449ff9a) +* incrementing version number - v1.15.0-beta.7 (fd917b8e) +* update changelog for v1.15.0-beta.6 (a7f03b64) +* incrementing version number - v1.15.0-beta.6 (a9019cbe) +* update changelog for v1.15.0-beta.5 (0e90064e) +* incrementing version number - v1.15.0-beta.5 (81e4c4df) +* update changelog for v1.15.0-beta.4 (6c4aed8c) +* incrementing version number - v1.15.0-beta.4 (f2726a6d) +* update changelog for v1.15.0-beta.3 (11e2ccab) +* incrementing version number - v1.15.0-beta.3 (39178c2d) +* update changelog for v1.15.0-beta.2 (d8a9f1c3) +* incrementing version number - v1.15.0-beta.2 (59b50d0a) +* update changelog for v1.15.0-beta.1 (aeca19d5) +* incrementing version number - v1.15.0-beta.1 (4fa57fbb) +* incrementing version number - v1.15.0-beta.0 (bff80983) +* incrementing version number - v1.14.3-beta.16 (d9a05035) +* incrementing version number - v1.14.3-beta.15 (e2a253f2) +* incrementing version number - v1.14.3-beta.14 (9500871e) +* incrementing version number - v1.14.3-beta.13 (b5a2e4b6) +* incrementing version number - v1.14.3-beta.12 (f4c986a7) +* incrementing version number - v1.14.3-beta.11 (8618c32a) +* incrementing version number - v1.14.3-beta.10 (fa341714) +* incrementing version number - v1.14.3-beta.9 (9945c409) +* incrementing version number - v1.14.3-beta.8 (b5dcce9c) +* incrementing version number - v1.14.3-beta.7 (2531c44c) +* incrementing version number - v1.14.3-beta.6 (97088f68) +* incrementing version number - v1.14.3-beta.5 (a33a8a5a) +* incrementing version number - v1.14.3-beta.4 (55b3e376) +* incrementing version number - v1.14.3-beta.3 (5a5abf3c) +* incrementing version number - v1.14.3-beta.2 (bbab183f) +* incrementing version number - v1.14.3-beta.1 (2c06f6ac) +* incrementing version number - v1.14.3-beta.0 (3f87d5f9) +* update changelog for v1.14.2 (cd94c24a) +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* **deps:** + * update dependency mocha to v8.2.1 (35e725d1) + * update dependency lint-staged to v10.5.1 (2fa78e43) + * update dependency eslint to v7.12.1 (#8799) (224502d8) + * update dependency lint-staged to v10.5.0 (#8797) (1f2eca6a) + * update dependency eslint to v7.12.0 (#8791) (3108f628) + * update dependency lint-staged to v10.4.2 (#8773) (4bfd0087) + * update dependency eslint to v7.11.0 (#8747) (bb85c059) + * update dependency lint-staged to v10.4.1 (#8771) (08a240fa) + * update dependency mocha to v8.2.0 (#8772) (a471b1af) + * update dependency eslint-plugin-import to v2.22.1 (aacf8f22) + * update dependency eslint to v7.10.0 (#8687) (119ab719) + * update dependency lint-staged to v10.4.0 (2833624e) + * update dependency eslint to v7.9.0 (b1d781e8) + * update dependency eslint to v7.8.1 (#8597) (39110276) + * update dependency lint-staged to v10.3.0 (#8608) (dc1f1db9) + * update dependency mocha to v8.1.3 (#8588) (05efeff6) + * update dependency eslint to v7.8.0 (#8594) (e1b98142) + * update dependency lint-staged to v10.2.13 (efc30e97) + * update dependency mocha to v8.1.2 (#8579) (c722b0e5) + * update dependency grunt to v1.3.0 (df61d080) + * update commitlint monorepo to v9.1.2 (877cdfb9) + * update dependency eslint to v7.7.0 (#8564) (f1398da2) + * update dependency jsdom to v16.4.0 (#8554) (bb8f7c74) + * update dependency eslint-config-airbnb-base to v14.2.0 (#8396) (fde4f110) + * update dependency eslint-plugin-import to v2.22.0 (#8390) (788a8bfe) + * update dependency mocha to v8.1.1 (fe352eb1) + * update dependency eslint to v7.6.0 (#8540) (37418375) + * update dependency mocha to v8.1.0 (#8536) (72a78833) + * update dependency @apidevtools/swagger-parser to v10.0.1 (#8517) (8c498fa1) + * update dependency nyc to v15.1.0 (#8353) (c872bd8b) + * update dependency eslint to v7.5.0 (#8463) (b2be329c) + * update dependency jsdom to v16.3.0 (#8483) (82ada1bd) + * update dependency grunt to v1.2.1 (#8462) (b2dc6d60) + * update dependency @apidevtools/swagger-parser to v10 (9e2c3ce0) +* **writeapi:** cleanup (f6782471) + +##### New Features + +* add back error handling for a number of api calls (1afd2150) +* #8823, remove hardcoded write concern (a338f527) +* #8817, add login clientside hooks (715775a7) +* use github actions for ci (#8811) (eddf4a4f) +* allow mods/admins to see deleted posts on user profile (6e85920c) +* rearrange buttons on manage/users (27016d22) +* #8801, disable express compression by default (6ac73ccb) +* allow passing subset of user settings on update route (ec03af7a) +* wip, write api tests framework (b156b8b5) +* add filter:category.getFields (88a07e69) +* move postercount to topic hash (0db0231c) +* add free and total mem usage to info (a7b6d0df) +* new filter filter:teasers.configureStripTags (177a9610) +* send 'Vary' header when ACAO header set (d68ffea8) +* add filter.topics.getPostReplies (7a019494) +* topic reply to use api lib (also + missing file) (21974a77) +* send 401 for invalid-uid (ede9435f) +* async/await admin/search (c913900e) +* ignore test folder (2927509a) +* send back 403 on no-privileges error (14f9d8b0) +* refactor groups.delete (8ae1f81c) +* move groups.join to api (d69e503d) +* allow plugins to define api routes (9dd3cc04) +* require https if nodebb is configured with https url (a4ba2389) +* add nyc config (3326d80c) +* change user search to use filters array (a2edb86d) +* add filter (959314c9) +* require csrf token if not using bearer token (1e07886f) +* #8662, verified/unverified user groups (682e926c) +* more fixes (700e1e43) +* more work (40a05b70) +* wip admin/users (b038ac07) +* set unread false for guests (7beaf490) +* add stack to deprecate message (01265d08) +* add checkbox tests (d76229c0) +* add test for serialize/deserialize form (e92d4719) +* disable write api tests until fixed (ae5fb103) +* #8734, add slugify module, deprecate utils.slugify (bddfcb58) +* #8734, move bootstrap-tagsinput to package.json (f16c8268) +* #8734, move deserialize/serialize to package.json (eab7489e) +* #5964, #8734 remove colorpicker (948f2614) +* #8734 remove unused files (c721625a) +* #8734, move sortable to package.json (cc705e5e) +* #8734, move bootbox to package.json (300a8755) +* load jquery-form before using (3b231360) +* #8734, jquery-ui, jquery-form, timeago (#8748) (fda2aedf) +* remove unused textcomplete file (59311a63) +* #8734, remove semver.browser (ae3a231f) +* #8734, move slideout to package.json (2c1897b3) +* #8734, move tinycon to package.json (9c157de0) +* #8734, move visibilityjs to package.json (43589a74) +* #8734, move nprogress to package.json (a46cbb62) +* #8734 move r.js to package.json (aa08f882) +* revoke user sessions above threshold (#8731) (b3ed26ac) +* filter:settings.get plugin hook (c7d15dfa) +* topic delete/restore/purge/(un)pin/(un)lock (da25ce4d) +* add new api page to ACP menu (5fc7e7bf) +* management of API tokens via ACP (49652e6f) +* added DELETE /api/v1/categories/:cid route (3072de48) +* added PUT /api/v1/categories/:cid route (e942ad81) +* added POST /api/v1/categories route (dc666fd8) +* added PUT/DELETE /api/v1/users/:uid/ban routes (a5af2dc8) +* added POST and DELETE /api/v1/users/:uid/follow routes (b5bbcbae) +* added PUT /api/v1/users/:uid/password route (7aed174e) +* added DELETE /api/v1/users/:uid and DELETE /api/v1/users (a1ddc210) +* added openapi.yaml file for BEST documentation (91b79f17) +* added checkRequired middleware for API calls (7b6d43bc) +* migrating write-api skeleton into core (ec5c48b1) +* remove post/header selector (1542a5d7) +* category filter on post queue (#8710) (5d9a8681) +* #6594, add top/popular sections to digest email (#8709) (e60357d2) +* dedicated sorting buttons for plugin ordering in ACP (1761e13d) +* #8233, search sub categories (54737d30) +* move service-worker.js into its own file (f4d76f1e) +* analytics:maxCache setting in ACP (14ba1a6d) +* #8695, allow sort for guests (ea0f3262) +* up recommended size to 512x512 + ACP labels for PWA (9c5b6907) +* upload maskable icon for PWA (6478b32d) +* show top 5 trending plugins in new tab in Extend > Plugins (b12e8d63) +* register service worker, #8126 (aa268d5e) +* add theme-color meta tag for browser address bar (5172d731) +* basic service worker, minimum requirement for for a2hs; see #8126 (f69697b3) +* option in ACP to configure notification/email delay for chats (5b427a0c) +* allow autocomplete to pass optional params to user.search (611f3c61) +* upon plugin installation via ACP, check against nbbpm first (5ddf7022) +* up benchpress (8e88ccd6) +* add row highlighting for popular and unread (2cd5f959) +* return to previous page and/or category after marking topic unread (48a8ec4a) +* add missing lang key (bd9b6c99) +* add number of posters to topic (83d4e7ef) +* hightlight matches in quick search (f2f3ba49) +* add loading indicator (d38c8722) +* allow plugins to override tags and tag counts (81595095) +* edit test (ccddbb15) +* add x-posts/x-votes keys (23de5613) +* allow adding nested replies to a target component (ddc0ac37) +* hotkey "/" to open ACP search (43571bac) +* ctr-s for save on privileges page too (763cec31) +* ctrl-s now saves on settingsv1/v2 forms (80931423) +* single href (6669b23d) +* allow passing in container to threadTools (7148be2f) +* expose calculateTopicPostCount and getChildrenTree (43742437) +* allow custom req.query.filter on /unread /recent (de824007) +* fullname search (#8641) (4be693f2) +* sorted set lex test (9389749b) +* add topicIndex to category page (c1c617b3) +* up lavender/slick (34eb1bd2) +* switch to using topic/select component for merge (f6d56466) +* undo for posts move (762e9fe8) +* #8626, new move posts modal (5a40d26b) +* refactor app.js (5002e0f6) +* remove global RELATIVE_PATH (19c44861) +* remove app.template (3cd3b7a1) +* remove global window.templates (630bac2a) +* remove app.isConnected, use socket.connected (fddeb5c0) +* use const/let (6fc31df0) +* allow nbb to work with cloudflare rocket loader :rocket: (4d665955) +* move code (53a5f151) +* #8602, dont send emails to unconfirmed addresses (b6917b9d) +* add partials/footer/js.tpl (94da9fe5) +* add missing name to profile image upload (54b49725) +* add action:user.removeCoverPicture (b0a75922) +* add user data to action:user.removeUploadedPicture (962446a5) +* add userData to action:user.delete (9542ef12) +* force upgrade scripts for test (1b7ba2c8) +* replace relative urls to absolute before sending email notifs (1e5981c0) +* add client side action:flag.create (09de364e) +* additional sorting options for flags (0c203517) +* new filter hook prior to post queue addition (8cc36de2) +* add replies to getPostSummaryByPids (a9dfc9a7) +* add reply count to getPostSummaryByPids (de0f4aad) +* theme work for #8580, closes #8580 (6e805c1b) +* allow undo of topic move (abb5e81d) +* added alert.timeoutfn (cd8e7963) +* sort dependencies alphabetically (a4dbbc37) +* up persona (af9f328c) +* banning a user will resolve their post flags (354e6ccc) +* theme changes for #8571 (5415c01c) +* logic for bulk actions in flags list, #8571 (a3a22793) +* expose global/admin privileges to all routes (4737f937) +* additional tests for #8569 (e047b72c) +* flags list sorting, closes #8569 (346db0d8) +* up theme (bd557af2) +* allow adding multiple users to group (35a538ec) +* add filter:group.getOwnersAndMembers (f1e82b64) +* pass uid into filter:flags.list (9c70b662) +* added security policy for github (45c8de12) +* up deps (b97b51a8) +* one more test (a333cb6c) +* tests for password change (ecda4ad8) +* limit privileges column to superadmins only (0903eb4b) +* use nodebb-scoped bootswatch (12edd18b) +* use assetBaseUrl instead of hardcoding (6e918858) +* load timeago strings client-side (558a2d73) +* +assetBaseUrl, -l10BaseUrl, -requireBaseUrl (9adaccd0) +* #8550, add upgrade script test (b61a4da5) +* #8493, plugin helper for standardised link/button injection (0bbb813e) +* show event/params on error (d6baf5c2) +* introduce overridable l10nBaseUrl config value (def16f9e) +* allow multiple empty lines (58933c4c) +* remove administrator property from public routes (dfabd0a3) +* focus username when modal is shown (4216c277) +* add helmet middlewares (774e5d04) +* more discrete commit-on-save instead of commit-on-change w/ confirm modals (#8541) (a716a552) +* add ability to search groups in group details page (e7a502e0) +* use category selector in category page (fb7bb8d4) +* css fixes (560f3eb1) +* add privileges shortcut to groups list (91411cc4) +* allow passing groupName to user.search (f89ec205) +* #8531, closes #8531 (292d4904) +* allow direct link to flag from post tools, #8531 (c705e08a) +* allow changing requirejs base url (c4829fd8) +* ability to clear cache from acp (bbc7737e) +* reduce amount of data loaded on acp admin page (8d8117ff) +* remove require fallback for plugins (303bffdb) +* remove /assets/stylesheet.css (762b0be4) +* add node 14 (6250a2e2) +* make category tools in acp a dropdown (24535a62) +* series upload (37e56d94) +* resolve flag on delete/purge/ban/delete account (8bd63f61) +* 8502, don't change topics sitemaps on every reply (e045436c) +* allow building custom languages during dev (0a9ea91f) +* add link-plugins.sh (cc86f079) +* remove deprecated utils.walk (609e37a6) +* consolidation of flags to reduce flagspam, #8510 (55b0e902) +* change invalid language codes to default lang (3761f05c) +* add npx, fixes ghfw (a294e1cd) +* remove topics.async.getTopicData usage (ce6b20c4) +* remove deprecated checkGlobalPrivacySettings (0cea7136) +* remove deprecated isAdmin method (a0da2ba7) +* remove file.isFileTypeAllowed (2cdb935f) +* remove deprecated hooks (4eae927d) +* update readme (9869064e) +* up node version to 10 (b39e0140) +* highlight privs row if group is added / navigating from group page (10e4ae62) +* prevent navigation away from groups page if changes are unsaved (53f6139b) +* quick access dropdown on groups page to access privileges page (2c83278f) +* #8524, allow editing category of queued topic (844f2b4e) +* remove js-enabled (ff3c3435) +* remove js-enabled.css (ec057835) +* dont load all subscribers at once (2a5f8ab2) +* short more info (23a9a334) +* #8521, allow editing title before posting from queue (2485a550) +* show language when key isn't found (764969ab) +* allow searching categories in ACP (1e7397b1) +* #8509, don't scroll chat to bottom if user scrolled up (320008cd) +* added quick link to edit privileges on the category edit page (06143ca7) +* hide some filters behind 'more filters' button (9fb9185f) +* collapsible daily flags graph (d52d7bdb) +* **acp:** autocomplete user search for welcome notifications (d40779a4) +* **writeapi:** + * user settings API (c26f2b65) + * commented-out stub code for file upload (cfee431c) + * file deletion route (f870721f) + * admin settings update route (a55b3817) + * token generation/delete routes, ACP updates (2ec838fc) + * post bookmarking (0973feea) + * post voting (9942c248) + * post delete/restore/purge (414169fd) + * post editing (f66c2fb6) + * topic tags (1605e5e4) + * topic follow/ignore (9be56294) + * adding missing files (6096f74a) + * topic posting and replying (4c833d0b) + * added DELETE /groups/:slug/membership/:uid route (40dc1c38) + * added group joining and deletion (952dc211) + * abstracted ajax calls out to new api module (d044c322) + * added POST /api/v1/groups (ba345e53) +* **openapi:** + * schema validation for write api definitions file (87e3f26f) + * refactor into indiv. files to match API & tpl routing (ffbf2d6d) + * refactor into indiv. files to match API & tpl routing (84f5e4cf) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.4.6 (b44c7e96) + * update dependency nodebb-plugin-spam-be-gone to v0.7.3 (f06d4878) + * update dependency nodebb-theme-vanilla to v11.3.0 (0d80190f) + * update dependency textcomplete to ^0.18.0 (df5d66e5) + * update dependency nodebb-theme-persona to v10.2.65 (0c7d5860) + * update dependency jsesc to v3.0.2 (#8802) (c4431294) + * update dependency nodebb-plugin-composer-default to v6.4.5 (7d0d0005) + * update dependency nodebb-theme-persona to v10.2.63 (b3ca7de0) + * update dependency nodebb-theme-persona to v10.2.62 (#8798) (12c590ad) + * update dependency nodebb-plugin-mentions to v2.13.1 (#8790) (8353857b) + * update dependency nodebb-theme-persona to v10.2.61 (#8794) (9de8497d) + * update dependency benchpressjs to v2.0.8 (#8767) (3b88545b) + * update dependency sharp to v0.26.2 (#8765) (42aed15b) + * update dependency nodebb-rewards-essentials to v0.1.4 (#8764) (25c447df) + * update dependency nodebb-theme-persona to v10.2.60 (dcf72354) + * update dependency nodebb-plugin-mentions to v2.13.0 (#8758) (411fa8bc) + * update dependency nodebb-theme-persona to v10.2.59 (#8755) (cd34bfb1) + * update dependency nodebb-theme-persona to v10.2.58 (#8754) (a77ba71e) + * update dependency nodebb-plugin-composer-default to v6.4.4 (#8752) (0399ffaf) + * update dependency benchpressjs to v2.0.7 (#8733) (f8e2324c) + * update dependency nodebb-plugin-composer-default to v6.4.3 (#8750) (666064bf) + * update dependency nodebb-theme-persona to v10.2.57 (#8749) (1c94220b) + * update dependency nodebb-theme-persona to v10.2.56 (414fe19c) + * update dependency nodebb-theme-slick to v1.2.39 (1bc99411) + * bump vanilla/persona (944a7e0e) + * update dependency nodebb-theme-lavender to v5.0.14 (#8739) (43df4b8e) + * update dependency socket.io-client to v2.3.1 (#8700) (ba62ebb6) + * update dependency nodebb-theme-slick to v1.2.37 (#8741) (45aceb26) + * update dependency nodebb-theme-vanilla to v11.2.21 (#8740) (0c7af502) + * update dependency nodebb-theme-persona to v10.2.54 (#8736) (4207dde4) + * update dependency nodebb-theme-persona to v10.2.52 (#8735) (70c085ba) + * update dependency nodebb-theme-persona to v10.2.51 (#8729) (bae2eada) + * update dependency nodebb-theme-persona to v10.2.50 (#8727) (804729fc) + * update dependency nodebb-theme-persona to v10.2.49 (#8722) (b01bc2ae) + * update dependency nodebb-theme-persona to v10.2.48 (#8721) (01702613) + * update dependency nodebb-theme-persona to v10.2.47 (#8720) (04b1daac) + * update dependency nodebb-theme-persona to v10.2.46 (#8719) (ba906d7d) + * update dependency nodebb-plugin-composer-default to v6.4.2 (#8718) (229421ed) + * update dependency nodebb-plugin-composer-default to v6.4.0 (#8716) (b3a24f74) + * update dependency nodebb-plugin-mentions to v2.11.0 (#8714) (c95a3898) + * update dependency nodebb-theme-slick to v1.2.36 (#8713) (fc2795d3) + * update dependency nodebb-theme-vanilla to v11.2.20 (#8715) (2b0deeb7) + * update dependency nodebb-theme-persona to v10.2.45 (#8711) (f14b4945) + * update dependency nodebb-theme-persona to v10.2.43 (#8701) (1d0eaafb) + * update dependency nodebb-theme-persona to v10.2.42 (2a1da61c) + * update dependency nodebb-theme-vanilla to v11.2.18 (#8697) (9bdef707) + * update dependency nodebb-theme-slick to v1.2.34 (#8696) (3e2816ae) + * bump persona (f17d42ed) + * update dependency sanitize-html to v2 (1e5621c0) + * update dependency nodebb-theme-persona to v10.2.39 (#8684) (d0010c40) + * update dependency nodebb-theme-persona to v10.2.38 (#8683) (bb04f149) + * update dependency json2csv to v5.0.3 (30aa7e83) + * update dependency nodebb-theme-persona to v10.2.36 (#8680) (07172b6f) + * update dependency nodebb-theme-persona to v10.2.35 (#8679) (68a5e7e3) + * update dependency json2csv to v5.0.2 (5a2adb42) + * update dependency nodebb-theme-persona to v10.2.33 (#8675) (abe83773) + * update dependency nodebb-theme-persona to v10.2.31 (#8673) (80dbf97a) + * update dependency nodebb-plugin-composer-default to v6.3.57 (#8672) (7ecac97a) + * update dependency nodebb-theme-persona to v10.2.30 (#8671) (c8a75631) + * update dependency nodebb-theme-persona to v10.2.24 (#8663) (72cd5f13) + * update dependency postcss to v8.0.6 (#8657) (55921ccf) + * update dependency validator to v13.1.17 (#8659) (01232090) + * update dependency sharp to v0.26.1 (#8660) (b175d671) + * update dependency nodebb-widget-essentials to v4.1.2 (#8658) (dc0a4a49) + * postcss and autoprefixer version incompatibility (70d3ad02) + * update dependency nodebb-plugin-mentions to v2.10.0 (5ea172f9) + * update dependency autoprefixer to v10 (60679481) + * bump theme versions (685633d0) + * update dependency nodebb-plugin-composer-default to v6.3.56 (#8648) (8089387b) + * update dependency nodebb-theme-persona to v10.2.22 (c5ca2609) + * update dependency nodebb-theme-vanilla to v11.2.16 (8acdf3f6) + * update dependency nodebb-theme-persona to v10.2.21 (ed0469b5) + * update dependency nodebb-theme-vanilla to v11.2.15 (134ebba6) + * update dependency nodebb-theme-vanilla to v11.2.14 (31635e3e) + * update dependency nodebb-theme-persona to v10.2.20 (2a13e583) + * update dependency mongodb to v3.6.2 (#8634) (4969c869) + * update dependency nodebb-theme-vanilla to v11.2.13 (#8633) (8137cdc2) + * update dependency nodebb-theme-persona to v10.2.19 (#8632) (37e37c86) + * update dependency nodebb-theme-vanilla to v11.2.12 (#8628) (7ab87072) + * update dependency nodebb-theme-persona to v10.2.18 (#8627) (2740655d) + * update dependency nodebb-theme-vanilla to v11.2.11 (#8624) (fd6259c8) + * update dependency nodebb-theme-persona to v10.2.17 (#8623) (a1d310bd) + * update dependency nodebb-theme-slick to v1.2.30 (#8620) (251ea79b) + * update dependency nodebb-theme-persona to v10.2.16 (#8618) (0d85dc48) + * update dependency nodebb-theme-vanilla to v11.2.10 (#8619) (b52301b1) + * update dependency nodebb-theme-vanilla to v11.2.9 (#8616) (69373fde) + * update dependency nodebb-theme-persona to v10.2.15 (#8614) (3c0540c1) + * update dependency socket.io-redis to v5.4.0 (#8600) (5ba23f24) + * update dependency nodebb-theme-vanilla to v11.2.8 (#8599) (97e3543e) + * update dependency nodebb-theme-persona to v10.2.12 (#8598) (1bb0896e) + * update dependency nodebb-plugin-composer-default to v6.3.55 (#8606) (dfeb65bb) + * update dependency nodebb-plugin-markdown to v8.12.1 (27426c06) + * update dependency nodebb-theme-vanilla to v11.2.5 (64f4179a) + * update dependency nodebb-theme-persona to v10.2.10 (777419b2) + * update dependency sharp to v0.26.0 (#8578) (7ca967ee) + * update dependency ipaddr.js to v2 (49aeda01) + * update dependency nodebb-theme-lavender to v5.1.0 (87674d68) + * update dependency nodebb-theme-persona to v10.2.5 (8032c8bd) + * update dependency helmet to v4 (#8543) (ad68a338) + * update dependency mongodb to v3.6.0 (#8535) (4160e828) + * update dependency nodebb-theme-persona to v10.2.4 (#8544) (b30ecffb) + * update dependency nodebb-theme-persona to v10.2.1 (#8529) (7a59c2fc) + * update dependency nodebb-plugin-composer-default to v6.3.53 (d24a4bd3) + * bump themes (b714ed22) + * update dependency commander to v6 (#8518) (75fb2a47) + * update dependency archiver to v5 (#8523) (f1cc4e29) + * update dependency lru-cache to v6 (#8490) (2941b9f9) + * update dependency connect-redis to v5 (#8480) (9c17a677) + * update dependency nodebb-plugin-composer-default to v6.3.52 (#8522) (ac257a65) + * update dependency nodebb-theme-persona to v10.1.68 (#8520) (f06b1cec) + * update dependency nodebb-plugin-mentions to v2.9.3 (#8516) (b5df5766) + * update dependency nodebb-plugin-dbsearch to v4.1.2 (649c64e4) + * update dependency nodebb-plugin-mentions to v2.9.2 (91bdc12a) + * update dependency nodebb-plugin-composer-default to v6.3.51 (0e13fd0f) +* check is banned in buildHeader (4b63f993) +* undefined call (518d4fa1) +* missing await (08ff4041) +* client side crash when creating groups (5a2b14b7) +* disallow registration attempts with password length > 4096 (c0f699e6) +* missing await (4818ec37) +* broken test (87bff6cd) +* updated commitlint config to allow longer subjects, because nobody anywhere uses an email client that limits subject lines to 72 characters (a53d49a2) +* restore old behaviour of empty json w/ 401 code in admin middleware (dda5d426) +* deprecate middleware.isAdmin (15e0731d) +* post editing not taking plugin hook results into account (4439864c) +* #8805 define our own name for write API v3 (57ed6be7) +* removed superfluous assignment (a08fb8e5) +* createNewPosts to build tpl with ajaxify.data (0b6ef61e) +* handle ACP category enable/disable states after call success (bff53de0) +* remove setCategorySort and setTopicSort (a6a52430) +* sort setting not using correct field name (9082062e) +* update readme to include psql (2d29e603) +* breaking test from 0db0231cff097a6e983683e61284a72d42bd594d (cc1c7220) +* indentation (04185d94) +* add back derpy 20 second sleep (8e7914ff) +* missing method in test error output (3ebb3a34) +* topic object in post editing data return (3c98cd3d) +* bug where token generation route would fail on null case (618e0983) +* typo (2e9f27d8) +* return early for guests/spiders (203db47b) +* #8789,cache meta.settings (156e1396) +* spec (7a318352) +* tests (63e07c94) +* #8781 (db63f5e3) +* reset button loading html (1a4c0dec) +* #8779, fix move all (e6440c0d) +* allow admins adding users to global moderators (1f43e98f) +* incorrect logic for post history editable bool (a691be59) +* [breaking] send configured config URL as origin if not custom (205a1030) +* #8776 some users unable to restore old versions via history (7a8f7049) +* #8595, dont save escaped data when renaming groups (b26e9b59) +* keep sortBy while searching (3ee4936d) +* autocomplete.user on search page (85cfe49d) +* spec (cf474ab2) +* sortby (7bddec93) +* #8774 (b3619d3d) +* #8732 (c107649b) +* #8630, sort extra deps (e362c342) +* missing doTopicAction, fix wrong api params (e78c498e) +* test (8fd3c044) +* appropriate 404 handling for write API calls (b6cce75d) +* redis hget (b2ff1594) +* reimplementing isPrivilegedOrSelfAndPasswordMatch (e98285db) +* socket user bans (3f347baa) +* broken tests from api change (222b4c95) +* tests (7d86be2b) +* handler for group.join (51a60d3d) +* add missing file (d07f0081) +* #8768 (4418ff07) +* api bug where user profile editing continued even if not allowed (cc6e995e) +* module build (bae0f343) +* tests (b295d15e) +* csrf token only on non-GET routes (20bb9c7e) +* avatar selector (4b9444f1) +* test (e6ea71c9) +* timestamp (8c6a5591) +* #8763 (331d236f) +* lastonline again (a481024d) +* caret (71d82ec8) +* lastonline values (97628e2f) +* upgrade script (1289c105) +* cant join system groups (59bbede8) +* tests (a411df13) +* update server param to /api/v3 (0e0f1506) +* typo (c68653d0) +* testing openapi write tests (7aa4d104) +* enable tests (7b2301ff) +* test fix for write API (54e6003a) +* password reset to invalidate all existing reset tokens for that uid (30b3fedc) +* show more lines (ba2e1c4c) +* #8756, pass missing req to mock (30d6a2b8) +* #8757, allow all slashes in category route (1ee93848) +* timeago test for dev/prod (7db224f6) +* timeago test (cecdd291) +* undefined api require, @julianlam (931d44b5) +* watch tooltip (e2d407b7) +* module name (aedd28e0) +* pin sortablejs (8f436eb8) +* admin jquerui requires (75c96686) +* timeago locale switch (8c019a6a) +* category RSS feed was displaying deleted topics (9a5b8a79) +* #8734 make nprogress module (45e8a4d5) +* regression caused by 754595172549ba39b406bd36fc3387d95782d84f (8af30a51) +* dont allow adding duplicates to privileges page (12c8b1c2) +* #8728, dont add admins to table (f259063f) +* remove debug log (675a62da) +* tests (adcadbb2) +* bad merge w/ category ACP page (cb9369f1) +* bad logic in group assertion middleware (8e89f34d) +* errors thrown if no password sent in to profile edit route (7757f965) +* bug where middlewares seemingly ran in parallel (549ca110) +* follow route to match spec (db5c5b2c) +* missing one property in openapi doc (af2e424f) +* error handling with POST /api/v1/users (d8879d21) +* use POST call for user creation in ACP (58043e07) +* user creation POST route returns user data, updated openapi spec (bba2a463) +* selector, so it doesnt effect suggested topics (7138d433) +* use proper api url (264818e5) +* tests, get latest release tag recursively (8eb62e22) +* use app.parseAndTranslate instead of benchpress.parse (fc603a53) +* sorted list delete button (20e0cc5c) +* unable to register async method as response hook listener (dde5b6b8) +* dont allow sorting pinned topics on recent (b955fd36) +* use console.info instead of console.log for sw registration (3c7f79cb) +* spec (7cd83b9a) +* spec (6924eb6c) +* test (cb2f6f7c) +* dont let mods load postqueue for a cid they are not a mod of (7bf6d3b8) +* show disabled categories in admin&mods (2ea9768e) +* prevent mutiple highlighted rows on category/topic pages (60afb110) +* spec (fbd85680) +* do not show TOC if fewer than 2 headings (f1de084d) +* params cached in autocomplete module (caa8c00f) +* #8686, deprecate `plugin.json/library` (#8705) (017af63f) +* updating minimum node version in readme (d3951ebe) +* update "install plugins" link to go to the download tab (5441651e) +* overflow on submitPluginUsage field (c56236f0) +* #8699 tags route is case sensitive, though tags are not (38f88fc5) +* early button/anchor clicks do nothing (8437130e) +* early button/anchor clicks do nothing (966d3f76) +* error on `reset -p` if plugin is not active (7f58e3ab) +* manifest test + remove duplicate test (bf3c1c08) +* typo in getCompatiblePlugins (07af6213) +* typo (54705cc4) +* manifest - use absolute URL for start_url (31528a52) +* prefer webmanifest extension over json (46800b66) +* update notification delay ACP help text (4c1e717b) +* #8681 change owner modal's search should check if user is banned (b6f2f0e5) +* add img-responsive to post queue post items (f8032cd0) +* language key in reset password (2ad33058) +* issue where the last flag filter could not be removed (0fffe289) +* multiword match highlight (f8ef380b) +* tooltip placement on navbar search (82ab6cd3) +* rogue tooltip on navbar profile icon (683c01b0) +* #8580, @julianlam (445a840b) +* topic count on category page if filter is author (bbf6889e) +* match api when modifying ajaxify.data.deleted (int, not bool) (703ac1b6) +* lock/unlock toggle issue (9a7c3c68) +* #8665, trim email before checking validity (ac43cd8b) +* editing posts saving uncessary data (e72fe259) +* api spec (654d5830) +* #8640, add bookmarks to intFields (4f14dc7a) +* change user tooltip container to content (02a48e1c) +* auth tests (fe2dc310) +* #8656, rename /api/me to /api/self (af43f0e4) +* add user tooltips to body (047c4148) +* tests (22cd2654) +* use correct topic count for category (220297d5) +* clear old value on focus (42298fe6) +* skip elements if they dont have proper index (c9c9dd2f) +* call to reskin (99f24c59) +* move necro-post to be in-line with posts (44309ee6) +* tests, because redis is TOO FAST (4fca7938) +* remove old test (5e8c3761) +* client side crash if there are no topics (a8e18fdb) +* #8418 (38d3982b) +* typo (08912361) +* tests (65d049c6) +* check if unread_tids are followed (2d5bd153) +* openapi (e9094094) +* dont use hardcoded fontawesome icons for lock pin (632793b0) +* #8629 and change undo timeout to 10 seconds (65d94a3b) +* alert_id selector (2bebdf01) +* use text-right (a78e1df9) +* remove lang keys, remove sounds menu (a34b685c) +* lavender version (8a752364) +* tests (e3a0b4b1) +* wider widget area (4bace773) +* bypass nbbpm for now (33c1bd5f) +* #8432, add CSP frame-ancestors (46ab2711) +* allow setting maximumAboutMeLength to 0 (4588e521) +* additional commit for CF rocket loader (a38784f5) +* stack trace (4031a8ca) +* #8604 (a2638976) +* don't toggle elements if there is no inputEl (57f67e2b) +* don't crash on outdated redis instances (896fe9d6) +* update post-queue hook names (0e58d2b8) +* accept/reject in post-queue instead of accept/delete (694f4b2b) +* new openapi def for replies addition (b5871275) +* #8582 (9f9164a9) +* debug logging :dog: (fb3b4a02) +* ip-blacklist not working after #8580 (56101ae5) +* ip-blacklist not working after #8580 (c681b4b2) +* post-queue not working after #8580 (dc5bd760) +* #8411 missing language sources for ip-blacklist/post-queue (a93e1955) +* removed invalid options for the sendmail transport (#8576) (2b785628) +* missing localisation for topic move error (bacee6b4) +* select all checkbox does not re-enable bulk actions button (5d60dce3) +* dupes in unread followed topics (55533b11) +* wrong data passed to getCategories (39f4bbaa) +* openapi spec (4f7cfd53) +* api spec (c4ad14cb) +* username, email history disappering if content was deleted (91d9333a) +* up composer (9fd37753) +* package-install clobbering scoped nodebb plugins (840cb510) +* empty "manage" menu showing in ACP (4b0cb26b) +* hide nodebb version in ACP for non-superadmins (cc268605) +* change how admin middlewares are exported (f00595b3) +* one less return, to appease codeclimate (ae68a254) +* inability to access /admin if not superadmin (03bd76de) +* #8560, fix old upgrade script (29e3ab24) +* use promises in privilege save (9cbe9389) +* overzealous click handler on flag list row (7a5daff4) +* +comment, -debug log (9608b44f) +* multiple alerts in the same millisecond overwrite each other (589216e7) +* reintroduce 20s delay for api tests (56393795) +* client-side error in flags/detail (b2271eb6) +* #8570 (7daba7dd) +* sorting the flags list by newest is not considered a filter (3efe2362) +* flag list tests due to breaking change in API (360aa00d) +* no-widgets messaging in ACP + copy (334be113) +* #8568 perPage not acting like a filter (cabe62a0) +* #8562 (31c2b7d9) +* progress bar clobbering upgrade script name (2adae879) +* tweak upgrade script progress bar to only update 100 times in total (ac75c9a0) +* navigation title unescape upgrade script tweak (80a2a700) +* new language key for error handling (7456a0e3) +* upgrade scripts not run properly if schemaDate is present (de8eebbd) +* #8556, catch errors from admin check (bfaf648e) +* upgrade script for 1.15.0 (32682738) +* improper targetUid check during password change (16cee1b0) +* #8547, remove old deps during upgrade (#8557) (1d170e0c) +* #8558, only navigate if user is in same topic (79e847d4) +* upgrade script (231d34d0) +* don't allow duplicate upgrade script names (8887f0ed) +* tests (d6297b28) +* send hard 404 instead of soft 404 for missing modules (9f3b7811) +* #8549 send 308 Permanent Redirect on topic/category shortlinks (68f8d6e3) +* remove default helmet (c39c5113) +* map instead of forEach in privileges save (a7071bb8) +* remove duplicate configuration for helmet-hsts (0f10e083) +* don't process invalid topics, fallback to 0 score (335169f2) +* tests (6924a222) +* #8539, enforce content checks for post queue (bb224184) +* bug; additional reports could be added by the same user repeatedly (0f2b6f1f) +* #8538, go to first unread instead of last read (519e6659) +* #8533, validate and retry password during setup (0d698a07) +* #8534, dont show modal on search (9e80a9ef) +* language string (9f346c53) +* api test (8415d2f0) +* tests (9df871be) +* tests (69fb1527) +* reverse uid checks (7331faed) +* acp view category button if category is a link (2dfe9d49) +* remove old test (52718ce0) +* #8515, fix login redirect on subfolder (5e5815f0) +* tests (f48d1556) +* #4695, remove new notif alert (fd4c3cda) +* too small sortable handle for ACP>Manage>Categories (8473e165) +* less fixes for category dropdown (db07dd85) +* move check inside lock (57135761) +* #7351, display less errors with location and error message (d1cb405d) +* use shorter git url, #8527 (345fd72b) +* cursor for category select (4c90fac4) +* api docs for admin/manage/groups/x (8769e28b) +* edge case in test (b9cff577) +* api tests (42af4b57) +* #8500, allow regular users select topics on unread (7260646d) +* don't crash if content is undefined (4658121a) +* crash if csrfToken does not exist (a3c8d456) +* try again (6f889c9c) +* more tests (a46adb3f) +* tests (65395ae5) +* tests (72c60d19) +* tests (67ca5e32) +* #8508, dont allow moving topics if not moderator of target category (36531511) +* composer textarea placeholder l10n /cc @pitaj (1e14af45) +* **openapi:** + * final fixes to schemas (14e5c24e) + * users.yaml (16873800) + * moved write-api to public/openapi (49994f3a) + * test for new trending plugins in ACP (3fbddbe2) + * tests (d935f036) + * new api definition (8ff09630) +* **writeapi:** + * more tweaks to schema files (b2e9e3e0) + * fix components, + tag object schema (9f9e3c15) + * missing files for tests (a4f3270f) + * normalizing data (1392d064) + * tests (b092f65d) + * added examples to all parameter objects in schema (93f65f89) + * tests (ebcb664b) + * tests (229eb2c2) + * tests (b8703ba9) + * tests (41f55b7a) + * calls to profile editing routes 200 even if user DNE (8e7baac6) + * client-side group join API call (68ecf41e) + * authenticate middleware logic to work better with await (fd67355b) +* **refactor:** + * patching helpers.tryRoute for API routes, some re-org (d15d9e44) + * merging write-api auth middlewares with core middlewares (f6433ef2) +* **bug:** #8611, custom route logic corrected (#8612) (64a457a4) +* **docs:** updating changelog (6e34b9ef) + +##### Performance Improvements + +* reorder async calls (93bdfe2f) + +##### Refactors + +* simpler check in user.blocks.filter (a02ae6f5) +* remove usage of middlewares (266d7587) +* remove /users/{uid}/settings/{setting} route (aa8faf58) +* api test suite to accept methods other than GET (843aff58) +* remove unnecessary wrapper (a512d994) +* remove console.log, extra require (75024c35) +* show more lines of stack trace (ea31f505) +* posts api (d9a16855) +* post restore/delete/purge (272e73da) +* merge post.edit (9738e202) +* deprecate socket.emit('users.search') use api route (2279e372) +* api categories (083c74e0) +* remove sockets.reqFromSocket (bc880ee0) +* topic follow/ignore to use api lib (9ee3cb9b) +* topic tools' actions to use api lib (68d6818b) +* topic creation to use api lib (40598b36) +* setupApiRoute signature (bf480ee5) +* remove unused middleware (688d7a2c) +* user bans to use api lib (2d252f2f) +* move groups.leave, fix some tests (e367c540) +* change password/user follow to use api lib (960e925e) +* user deletion to use api lib (430e7f58) +* socket profile update to use api lib (77481947) +* socket profile update to use api lib (31ae8a83) +* user create and profile update to use api lib (23086dae) +* use single function for api code (5e2caf19) +* async/await src/user/approval (43afe7ff) +* async/await install/web.js (3881ac30) +* async/await (1fd2eba6) +* use app.render (d89477ca) +* api module (3673accd) +* api module returns promise, error-first cb if cb passed in (a784d10f) +* remove unused search call (dd7424e5) +* switch to using slugify module (dc29f4dc) +* require style (c954db84) +* middleware.assert.* (8ecef7b8) +* rewrite modules/api.js in AMD style (a905d7f0) +* remove posts.tools.purge (ed092bf6) +* shared constants (#8707) (1aa336d8) +* post edit (16039b11) +* expose new method for appending moderation note (29b357bc) +* socket posts delete/restore/purge so tid is not necessary (#8607) (f743f920) +* ip-blacklist and post-queue language files (4dc6e64a) +* moved ip-blacklist and post-queue styles/tpls to themes (b6b94a56) +* changed way middleware was exported (cf2f1e95) +* remove util.promisify calls (01899459) +* change pwd change logic (846b7d24) +* rewrite src/upgrade.js with async/await (33c5988c) +* change incrementViewCount and markAsRead to async/await (2c35d0ba) +* for codeclimate (2ee62483) +* rewrite src/install with async/await (776e34a8) +* removed rather redundant flag reporters zset (6c00ec84) +* flags object in post tools (fcdbdf63) +* pass only needed data (f1974fb9) +* startup (c54b6b9c) +* get rid of bind calls (af91c26a) +* setting codeclimate to A (bc26883a) +* make msg pretty (8ddc8dd1) +* flag sanity checks, +feat: flag limits (e3e55f25) +* **writeapi:** + * update route prefix to api/v3, default error option (3ea1aa47) + * post.tools.purge no longer a method (5e2a3ea6) + +##### Code Style Changes + +* **openapi:** + * break write API routes into individual files (dbb4cfe9) + * move schemas and responses out of write.yaml (ffac3c79) +* updates to openapi files (2928b9b8) +* allowing some es6 features client-side (e1c40b27) +* linting (cdb79488) + +##### Tests + +* **openapi:** missing commonprops addition (0dc55bbc) + +#### 1.14.3 (2020-07-08) + +##### Bug Fixes + +* improper targetUid check during password change (c2477d9d) + +#### 1.14.2 (2020-07-15) + +##### Chores + +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* up theme (63fb2ad7) +* incrementing version number - v1.14.2-beta.1 (9d1465d0) +* up theme (15aabfd3) +* up theme (599c5015) +* incrementing version number - v1.14.2-beta.0 (fca4ee31) +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* **deps:** update commitlint monorepo to v9.1.1 (0ca7e28a) + +##### New Features + +* logic for flag note editing, #8499 (14417209) +* logic for flag note deletion, #8499 (f85a45c7) +* #8460, export groups members as csv (00d39fb3) +* pass connection options to socket.io-adapter-mongo (393f19b4) +* #8023, allow wildcard search for uid/email (3dcf5387) +* up composer (6235b31c) +* #8427, daily downvote limits (c513b88d) +* warn user if whitelisted tags are less than minTags (4adbf87c) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-mentions to v2.9.1 (c54287fe) + * update dependency nodebb-plugin-mentions to v2.9.0 (7730e7da) + * update dependency nodebb-theme-persona to v10.1.62 (#8485) (4e9743ab) + * update dependency nodebb-plugin-composer-default to v6.3.49 (#8479) (ab244ca6) +* #8499 (65240a17) +* #8500 (5e984d10) +* invalid session error modal during logout (2286ee2a) +* #8488 (b3a88331) +* category search in selector (46a66863) +* groups.updateCover (73ddf1cb) +* **docs:** bad changelog (60bf488f) + +##### Other Changes + +* update changelog for v1.14.2" (e085c846) +* flag.showModal on flag modal appearance (3379d65f) +* NodeBB/NodeBB (2fba0a14) +* update changelog for v1.14.1" (26c74409) + +#### 1.14.1 (2020-07-08) + +##### Chores + +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* incrementing version number - v1.14.1-beta.3 (e8ecef6b) +* incrementing version number - v1.14.1-beta.2 (b8d9b6b1) +* incrementing version number - v1.14.1-beta.1 (be85123a) +* incrementing version number - v1.14.1-beta.0 (c279875a) +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) + +##### New Features + +* add tools to recent/unread (#8477) (658dd03b) +* fire new hooks on chat message editing (4f51838d) +* add back redis tests (bdc4d9e7) +* remove redis test (8461a179) +* use covered query (057b783d) +* add js-enabled.css to list of preloaded css files (da29b947) +* zscan (#8457) (723fe8e8) +* fix blocksCount not being returned on user profile (bd228d5e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.1.60 (#8478) (14eafcb6) + * bump nodebb-plugin-composer-default to 6.3.48 (943a344a) + * update dependency nodebb-plugin-dbsearch to v4.1.1 (#8476) (9f06f12c) + * update dependency nodebb-plugin-composer-default to v6.3.47 (#8473) (857900f1) + * update dependency nodebb-plugin-dbsearch to v4.1.0 (#8471) (eb51cfd4) + * update dependency nodebb-theme-persona to v10.1.59 (#8468) (ee38e05d) + * update dependency nodebb-widget-essentials to v4.1.1 (#8466) (519e035d) + * update dependency @nodebb/socket.io-adapter-mongo to v3.0.1 (#8464) (412ca4ae) +* #8474 (c2ca02df) +* show stack properly (7b04d897) +* editing chat messages does not go through content sanity checks (9a6b87d2) +* don't show blocked users under nested replies (d6c619cf) +* tests (87dd6c83) +* handle scan/zscan returning duplicate elements on redis (746222d6) +* #8467, fix url to merged topic in subfolder installs (9eb748b9) +* openapi (5f1865c0) +* openapi (65c0adc7) +* dont allow searching by email/ip if not privileged (ac6b571e) +* missing backgroundImage #8386 (fef04fcf) +* dont allow searching by ip/banned/flagged for regular users (02ac44cc) +* admin privileges client-side regression (f3441fce) +* only add blocksCount for self and admins (59a2ace6) +* tests (fd20e5c6) +* better changelog (f992af05) +* **tests:** + * another shot in the dark (8853cd1a) + * shot in the dark (9458d90b) +* **openapi:** tests (c468942f) + +##### Other Changes + +* update changelog for v1.14.1" (26c74409) +* //github.com/NodeBB/NodeBB (0d9461b1) +* //github.com/NodeBB/NodeBB (ace312e0) +* post.changeOwner (b60e1cbf) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.14.0 (2020-07-02) + +##### Chores + +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) +* bump persona (19f9af94) +* latest translations and fallbacks (22879633) +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency smtp-server to v3.7.0 (e80100b5) + * update dependency eslint to v7.3.1 (#8417) (33492744) + * update commitlint monorepo to v9 (569b7664) + * update dependency lint-staged to v10.2.11 (157e7444) + * update dependency lint-staged to v10.2.10 (102a6004) + * update dependency mocha to v8 (#8393) (f4bace03) + * update dependency eslint to v7.2.0 (cd1375cb) + * update dependency eslint-plugin-import to v2.21.1 (4b577a52) + * update dependency lint-staged to v10.2.9 (#8369) (124125f7) + * update dependency lint-staged to v10.2.8 (331b1a85) + * update dependency lint-staged to v10.2.7 (d1df0826) + * update dependency mocha to v7.2.0 (ecaa9b76) + * update dependency eslint to v7.1.0 (e62d892a) + * update dependency lint-staged to v10.2.6 (78d562b3) + * update dependency lint-staged to v10.2.4 (a26011e7) + * update dependency eslint to v7 (28df9aba) + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* polish for user blocks UX (6cb31791) +* #8450, next/prev link tags on /unread /recent (eb9704f8) +* allow flagging of user acounts from post tools menu (6931f29d) +* closes #8440, allow configuring max topic count (e09ab3dc) +* add missing translation key (bffb830d) +* #3783, min/max tags per category (c718b729) +* use tags partial instead of post_bar (0482fb29) +* hide elements if search element is a direct child of dropdown (4f6b6c56) +* increase wait (6aecc177) +* move export functions into child processes (8383992d) +* display stack trace on winston.error (e80379dc) +* show more relevant snippets (f70d1648) +* #8412 breadcrumbs for ip-blacklist/post queue/flags (35a06a84) +* show editor in post diffs if available (f909ed25) +* #8408 flags' quick assignment (d5af9769) +* bump themes, closes #8406 (cb5ba76b) +* allow post diffs to be restored, #8406 (58b3d608) +* add missing translation (3a80a165) +* up composer (96cb94dc) +* more search changes (6349fa03) +* more merge/search fixes (4b38533b) +* merge changes (bb3aa540) +* more search & merge fixes (5fd05dc9) +* merge improvements wip (c4bdeae0) +* #8387 expose global and admin privs to flags detail page (4acb3fb2) +* redirect /me to user profile (3be4d5f7) +* #8384 options to delete account, content, or both (4d60eac6) +* account content deletion, closes #8381 (67aca822) +* add missing language files for #8347 (656b391f) +* privileges for Admin Control Panel (#8355) (a82e9bd7) +* add buildHeaderAsync (#8367) (842b8abb) +* #8360 flag quick actions for delete/restore/purge (8ea16348) +* #8349, remove user posts from queue if user is deleted (5a2b5154) +* up plugins (5b009e07) +* add results into results container (9ffcb6f7) +* quick search changes (f12d448e) +* move quick search into search module (bb1a56f0) +* fix session mismatch errors by clearing cookie on logout (#8338) (5781a2dc) +* add getSortedSetMembers (0009f54e) +* add privilege give/rescind hooks (#8336) (ec5582b5) +* filter followed tids by category (f3afba61) +* use getSortedSetsMembers to load followed tids (1b9e8928) +* add batch size to cursors (a015af4a) +* up cache size (9600ede5) +* tweak intersection code, add tests (4ee3543e) +* change to contains to match scoped modules (6108064e) +* improve grunt restart/rebuild speed (cb662e15) +* don't overwrite req.query.lang if it exists (4263efa0) +* convert queries so they used indices directly (12c6bc2e) +* cookie SameSite property (ae2db423) +* if only one value is passed used faster function (2587112f) +* closes #8316, add more data to export profile (f0323b6c) +* throw error if uid is missing for update (1d3fa3bc) +* ignore mongodb playground file (a219285e) +* parse quick search tpl even if no results (765b8156) +* match hook property to topic property (0e58fa33) +* add methods for adding/removing tags from topics (bfad4572) +* write-api update, WIP (9fd5c439) +* closes #8308, edit post notif for watched topic posts (a73c755b) +* add null tests for sorted sets (edf9fe3b) +* Add hooks for user blocks (#8296) (c4545381) +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **docs:** updated changelog (87c1687d) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.3.46 (5a713d85) + * update dependency nodebb-plugin-mentions to v2.8.3 (#8449) (bbd85049) + * update dependency nodebb-plugin-mentions to v2.8.0 (d40720f9) + * update dependency nodebb-plugin-composer-default to v6.3.44 (#8436) (c1991abe) + * update dependency winston to v3.3.3 (#8431) (6a8f54fd) + * update dependency nodebb-theme-persona to v10.1.55 (#8434) (a860a793) + * update dependency nodebb-theme-vanilla to v11.1.30 (#8435) (272b4992) + * update dependency nodebb-theme-vanilla to v11.1.29 (#8429) (b5a68a44) + * update dependency nodebb-theme-persona to v10.1.54 (#8428) (3ffb6fde) + * update dependency winston to v3.3.2 (54310d69) + * update dependency nodebb-plugin-spam-be-gone to v0.7.2 (11244348) + * update dependency winston to v3.3.1 (#8421) (fd628570) + * #8412 bump themes (365996e7) + * bump persona/vanilla, closes #8408 (225cac18) + * update dependency sharp to v0.25.4 (#8403) (3c3e1515) + * update dependency nodebb-theme-vanilla to v11.1.25 (#8405) (90446365) + * update dependency nodebb-theme-persona to v10.1.50 (#8404) (44273a64) + * update dependency mongodb to v3.5.9 (#8402) (90570660) + * update dependency nodebb-plugin-composer-default to v6.3.43 (78b7382c) + * update dependency validator to v13.1.1 (#8397) (2ae68f9b) + * update dependency validator to v13.1.0 (#8391) (ad6e3634) + * update dependency nodebb-theme-vanilla to v11.1.24 (#8395) (eec03de8) + * update dependency nodebb-theme-persona to v10.1.49 (#8394) (90846740) + * update dependency postcss to v7.0.32 (87ce31d1) + * update dependency nodebb-plugin-composer-default to v6.3.41 (dde830db) + * update dependency nodebb-plugin-composer-default to v6.3.40 (#8388) (cf0f8f64) + * bump themes, closes #8387 (e97a2b71) + * bump themes (ccac6a35) + * update dependency nodebb-theme-persona to v10.1.46 (#8382) (036e6ef5) + * update dependency nodebb-theme-vanilla to v11.1.21 (#8383) (7caeb273) + * update dependency nodebb-plugin-composer-default to v6.3.39 (aeefc60b) + * update dependency nodebb-plugin-composer-default to v6.3.37 (7f6ff0b1) + * update dependency nodebb-plugin-composer-default to v6.3.36 (6b2ea077) + * update dependency nodebb-plugin-composer-default to v6.3.35 (2d582df7) + * update dependency nodebb-theme-persona to v10.1.45 (#8372) (771ea194) + * update dependency nodebb-theme-vanilla to v11.1.20 (#8373) (f8ee981b) + * update dependency socket.io-redis to v5.3.0 (#8370) (d2463bb4) + * update dependency nodebb-theme-vanilla to v11.1.19 (f6ad9605) + * update dependency nodebb-theme-persona to v10.1.44 (cb28e6cf) + * update dependency nodebb-plugin-composer-default to v6.3.34 (#8357) (d7ab0894) + * update dependency nodebb-plugin-composer-default to v6.3.33 (c4047179) + * update dependency nodebb-plugin-spam-be-gone to v0.7.1 (27ab36ac) + * update dependency nodebb-theme-persona to v10.1.43 (#8343) (dabff972) + * update dependency mongodb to v3.5.8 (#8342) (8224127f) + * update dependency nodebb-theme-persona to v10.1.40 (#8332) (a20af6e2) + * update dependency nodebb-plugin-spam-be-gone to v0.7.0 (cc206b4d) + * bump composer-default (827d42a9) + * bump composer-default (a665881b) + * update dependency nodebb-plugin-composer-default to v6.3.29 (bf8a2c2e) + * update dependency postcss to v7.0.30 (#8288) (a532e2bb) + * update dependency sharp to v0.25.3 (0437ecc2) + * update dependency nodebb-plugin-composer-default to v6.3.28 (#8309) (f246057a) + * update dependency nodebb-plugin-composer-default to v6.3.27 (#8307) (6d57d844) + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* don't show in unreplied if score is null (fd400a00) +* lint (0d0b9513) +* upgrade script to unescape navigation titles (37b6b8fd) +* test (f0ce309d) +* show controls @julianlam (023de94e) +* #8437, #8433 (e53a18f2) +* copy settings showing empty category selection (ed4b5caf) +* don't init autocomplete if user doesn't have privs (8482a54a) +* only allow valid uids (00d8ce26) +* tests (f03ca086) +* vulnerability in cover and admin uploads (#8419) (48b41deb) +* reverse tabnabbing exploit in post images (040e6a9a) +* follower count going out of sync with real follower count (2bcf7f72) +* test lock for user create (#8415) (bef37e27) +* add mising timestamp (f0526bff) +* ban (bfd7eafe) +* remove use of 'hidden' class in navbar toggling (5a367ecb) +* bug where category privs page thought it was on admin (2515aa77) +* #8410 (b3115ea8) +* tests breaking due to #8406 (d5578c99) +* add missing translations (42466d3c) +* #8401, #8237 (7ed1a014) +* add timestamp to initial username history (18d89239) +* crash in export posts if post content is undefined (53a9517d) +* messaging unread (0041c024) +* whitespace (a024cc13) +* typo (0595e710) +* #8392, clear group member cache when group is renamed (89b01024) +* return false (8591f5d2) +* language (a255c8f6) +* #8386, use backgroundImage everywhere (8627bee5) +* prevent logout form from submitting (d92032da) +* missing space in ACP menu dropdown (daeceb45) +* #8385 (942cc4b1) +* acp language keys from #8347 not updated in tx config (9ae7fd3e) +* #8363, dont break history (50703db8) +* #8363, go to hash when entering topic (0c265a41) +* #8374, revert event delete (30cc83c0) +* new language tag for select_tags (09184f40) +* remove duplicate link to manage/tags in settings/tags (260a482c) +* tests (3a078f59) +* handle search tag permission as well (1b5d5425) +* checking correct permissions for user search (#8371) (f6b92d24) +* change event name so it doesnt trigger complete event (7786187e) +* clear error log before checking (75b3a81d) +* #8323, let admins send validation emails without timeout (e603ebc0) +* #8352, remove webfonts (#8354) (de7ec47f) +* more tests (da90fd56) +* tests due to 0633ad327 (98dffa3a) +* retry failed setObject calls (2c9e8657) +* acp menu items (0633ad32) +* re-jigged tags acp pages (a83f4259) +* move checks into timeout (47d73a2a) +* #8339, add missing translation (a9315aee) +* don't explode if server sends `checkSession` (84c20f91) +* eliminate unnecessary try..catch (f0e59c14) +* test breakages from 8d995d1eb609837e4e6e4c77cd855766830378fa (a66fe013) +* #8320, dont load moderators separately for each category (0a31e3e6) +* show stack trace on startup errors (11bb6abb) +* don't trigger quick search if val doesn't change (d6c2764f) +* prevent duplicate search triggers (6f78113e) +* user faster method if sorting by smallest set (3ec05eea) +* add txt to list of default allowed file extensions (01bff2ae) +* search post snipets incase content is plain text (ada45a34) +* derp includes (d484731d) +* another test fix (f2907908) +* tests (feb748a4) +* tests on redis (7a801aba) +* tests, handle no sessions (8bf980cb) +* #8318, clean expired sessions on login and get (a0d76ff0) +* tests (a032e12b) +* #8317 (81e33b93) +* #8142 invalid session warning if server-side session destroyed (526b3cd9) +* check privileges before exporting post/topic data (5fd81c5c) +* exporting posts (dfae664e) +* undefined uid when downloading posts (bdda0222) +* #8311, fix allowUserHomePage value (1ba6929c) +* dont crash if topic is null (e20ad5c5) +* if category in selector has url use it (1f992cf3) +* convert cids to string for comparison (c47a1c4d) +* missing await (97c086ab) +* add missing schema item (4e14cb57) +* category selector disabled categories (337be368) +* #8305, don't use null values (6a5e86dc) +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **openapi:** + * tests for #8412 (4cae893f) + * api change for #8387 (6a969442) + * schema for new flags api (a0e243ee) + * broken tests (45dfeeb0) + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) +* **style:** + * more switch..case (6b1d1acb) + * switch..case (922d49be) + * enforcing "better" indentation for switch..case (d135b6f7) +* **docs:** added titles to all routes (aa4ae78b) + +##### Other Changes + +* id, category fields (2355d9d5) +* //github.com/NodeBB/NodeBB (c3c8b19a) +* //github.com/NodeBB/NodeBB (0ddfb6b0) +* //github.com/NodeBB/NodeBB (d1c1cb2c) +* //github.com/NodeBB/NodeBB (79a7f892) +* user.getFields to match topic/posts (a680a95e) +* //github.com/NodeBB/NodeBB (b459592a) +* //github.com/NodeBB/NodeBB (066b442e) +* //github.com/NodeBB/NodeBB (fd6bf0c9) +* //github.com/NodeBB/NodeBB (c1d8b9bb) +* middleware.renderHeader (2727f472) +* //github.com/NodeBB/NodeBB (69a87933) +* uploadFile (7f24200c) +* #8142 invalid session warning if server-side session destroyed" (e327d124) +* ''}) (2a00b0e9) +* //github.com/NodeBB/NodeBB (8c8cdc99) +* categories.getRecentTopicReplies (aad0880f) +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) +* **deps:** update dependency nodebb-plugin-mentions to v2.8.0" (5c7d37c0) + +##### Refactors + +* make code climate happier? (0d112b36) +* shorter code (af790e3f) +* shorter code (e8f0da6e) +* change name to privileges to match other apis (2100a03c) +* making rendering of header and footer async functions (023942da) +* remove general menu from ACP (#8347) (a51fff8b) +* use getSortedSetMembers (7d484fc0) +* src/flags.js because codeclimate (cf00cda0) +* flags detail page (8d995d1e) +* move code (3b6d57e4) +* remove console.log (40b5cbab) +* shorter function (7e429884) +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.13.3 (2020-05-08) + +##### Chores + +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **deps:** + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* **openapi:** + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) + +##### Other Changes + +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) + +##### Refactors + +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +#### 1.13.2 (2020-02-05) + +##### Chores + +* incrementing version number - v1.13.2 (71f4607d) +* bump themes (027f3f22) +* bump vanilla (236a1730) +* bump persona (82ace391) +* incrementing version number - v1.13.1 (cc6758a0) +* **deps:** + * update dependency eslint to v6.8.0 (#8062) (15783213) + * update dependency nyc to v15 (#8094) (976e26a9) + * update commitlint monorepo (#8100) (eb4a1a57) + * update dependency lint-staged to v10.0.7 (#8132) (cdfbcbb9) + * update dependency mocha to v7 (#8106) (b370333c) + * update dependency husky to v4 (dd440ce9) + * update dependency lint-staged to v10.0.1 (66992a55) + * update dependency lint-staged to v10 (d74eecfb) + +##### Documentation Changes + +* updated changelog (2edc6960) + +##### New Features + +* add test for isOnline (66febb80) +* add test for change post owner (df2c7851) +* check flag values on save (assignee and state) (#8122) (8e5a2276) + +##### Bug Fixes + +* admin relogin (a5ef6b53) +* #8135 (c35a21d7) +* handle mkdirp0.5->1.0x so it doesn't break upgrade (1e50616c) +* #8134, upgrade mkdirp to 1.0.x (87225a90) +* onSuccessfulLogin not working (111ed802) +* #8139, dont allow restore if not deleted by self (8c48f94b) +* use view_deleted when filtering, closes #8137 (9969dd63) +* escape invalid rules (d927b763) +* add missing await (3cca929a) +* missing await in SocketPosts.changeOwner (0ae1eb4f) +* #8133, check if user is in room before removing (23810cc6) +* add missing await (cd1fa27a) +* missing await (f799f017) +* dont return flag data to client (418c174d) +* check if user has read priv before flagging (51236df4) +* restrict getUsersInRoom to members (1f13ab8a) +* remove unused conditional, dont add dupe messages (3077eb94) +* tests for messaging (ecc579a2) +* #8127 user join system message duplicated (594cd7e1) +* background-size in taskbar images (106c141f) +* tests, was using hardcoded message id (1b08f376) +* typo in #8116 (8bb5e71e) +* build step defaults to series instead of parallel (3fac09b1) +* escape system message, don't allow editing system messages (6a63c1a1) +* escape register query param (c8fb7f92) +* delete upload (8c6a7954) +* check uploadName (153b1a0e) +* #8120, bubble errors from static hooks (01d1ae78) +* escape bootswatchSkin and homepageRoute (b0f3e48a) +* change owner missing await (3e525576) +* hsts always enabled (e3952674) +* escape topic.thumb (b7a57996) +* #8112, don't crash hook returns no data (4eb9652a) +* escape config.userLang/acpLang, don't allow invalid language codes (e06c1bfc) +* group create/join/update name validation (61da8c29) +* don't crash if groupData is missing (48f08627) +* #8105, fix export json on page load (5a8217de) +* #8103, fix advanced menu not displaying in ACP (52774531) +* meta description missing if url doesn't have post index (10989ccc) +* create user modal instantly closing (c1b1ee61) +* login with weak password (9d074731) +* dont check password strength on login (f6d7a24a) +* **deps:** + * update dependency connect-redis to v4.0.4 (#8143) (16ab641d) + * update dependency rimraf to v3.0.1 (#8138) (726ba71c) + * update dependency validator to v12.2.0 (#8136) (f07b4bfa) + * update dependency nodebb-theme-persona to v10.1.34 (#8140) (6d7131fb) + * update dependency nodebb-theme-persona to v10.1.31 (#8129) (c510a2c4) + * update dependency mongodb to v3.5.2 (#8092) (0e49cfb9) + * update dependency sharp to v0.24.0 (#8121) (16e8f496) + * update dependency nodebb-plugin-composer-default to v6.3.21 (#8119) (ca10f8f0) + * update dependency nodebb-widget-essentials to v4.0.18 (#8111) (df5e3a73) + +##### Other Changes + +* NodeBB/NodeBB (b959c24a) +* //github.com/NodeBB/NodeBB (ee4304b4) +* //github.com/NodeBB/NodeBB (bfaba895) +* save disableLeave (#8123) (09d55581) +* //github.com/NodeBB/NodeBB (842916ea) + +##### Refactors + +* messaging (30c50361) + +#### 1.13.1 (2019-12-19) + +##### Chores + +* incrementing version number - v1.13.1 (d1e0672f) +* incrementing version number - v1.13.0 (c38b2d23) +* **deps:** + * update dependency husky to v3.1.0 (#8046) (c3418c26) + * update dependency coveralls to v3.0.9 (#8067) (0aeee144) + * update dependency eslint to v6.7.0 (32cfe96f) + * update dependency coveralls to v3.0.8 (#8054) (8ba26104) + +##### Documentation Changes + +* updated changelog (94499da3) + +##### New Features + +* better output for cli plugins list, closes #8075 (4fc69443) +* #5272, allow changing user groups from manage users page (05c9fe27) +* merge social authentication into plugins menu in ACP (f9a8ebfc) +* convert middleware.isAdmin to async/await (efd1e88b) + +##### Bug Fixes + +* #8085, fix cookie name (dec157d6) +* #8058, fix incorrect digest setting display in ACP (1b992d82) +* remove select version (6a17e32d) +* travis config (3ae98300) +* travis :dog: (3731dc4e) +* #8078, dont mark notifications read without a mergeId (a8df6d62) +* #8077, show continue chat on all profile pages (7af1c873) +* profile showing posts from deleted topics (2679f37d) +* #8073, configurable necroThreshold (4d669783) +* allow members to search as well (b323df2f) +* #8069, dont show hidden groups in search (c2cd7de8) +* missing await (33fd4a1c) +* #8064, break-word on post-queue (1bda92e3) +* #6711 (7ed002a1) +* #8061, don't crash if there is a network problem (de404102) +* #8059, properly mark topic unread when using mark unread for all (a688aaae) +* #8042, dont show errors after clearing form (3811e0a3) +* unhandled promise rejection error on reset error (51073772) +* #8050, fix redirect after registration (366ad5cd) +* make _csrf a secure cookie if the website is using https (#8045) (0efe27b1) +* #8034 (0a96c923) +* serialize (a2545204) +* show login fields if user has local password (1eca5b3d) +* use the correct attribute name for widgets (6c404b81) +* **deps:** + * update dependency semver to v7 (483d7535) + * update dependency nodebb-theme-vanilla to v11.1.12 (610ecf35) + * update dependency sharp to v0.23.4 (#8076) (eb18c182) + * update dependency nodebb-theme-persona to v10.1.30 (0514383a) + * update dependency nodebb-plugin-markdown to v8.11.0 (702ca164) + * update dependency connect-mongo to v3.2.0 (2aef7a5b) + * update dependency mongodb to v3.3.5 (#8065) (68118e43) + * update dependency nodebb-theme-persona to v10.1.29 (#8057) (34933091) + * update dependency sharp to v0.23.3 (#8044) (6fa88823) + * update dependency validator to v12.1.0 (#8055) (488ea394) + * update dependency nodebb-theme-slick to v1.2.28 (#8041) (b3511f71) + * update dependency nodebb-theme-vanilla to v11.1.11 (#8040) (d567c4ae) + * update dependency nodebb-theme-persona to v10.1.28 (#8039) (6c87bed5) + * update dependency nodebb-plugin-dbsearch to v4.0.7 (#8038) (1e2e16b4) + +##### Refactors + +* async/await middleware (a227cbe3) +* change to const/let (3454a24b) +* shorter returns (cec00795) + +### 1.13.0 (2019-11-13) + +##### Chores + +* incrementing version number - v1.13.0 (c38b2d23) +* incrementing version number - v1.12.2 (810e2c0b) +* **deps:** + * update dependency jsdom to v15.2.1 (9d946d1c) + * update dependency eslint to v6.6.0 (d0e428e9) + * update dependency lint-staged to v9.4.2 (#7954) (d108c7d0) + * update dependency mocha to v6.2.2 (#7984) (e31a47cd) + * update dependency coveralls to v3.0.7 (#7961) (9b308e4b) + * update dependency jsdom to v15.2.0 (#7971) (9b4e9882) + * update dependency husky to v3.0.9 (fd5095a3) + * update dependency husky to v3.0.8 (88cae415) + * update dependency lint-staged to v9.4.1 (a2a7bb3d) + * update node.js to v8.16.1 (f9ad826b) + * update node:8.16.0 docker digest to bb12612 (48cc317c) + * update dependency eslint to v6.5.1 (da12e947) + * update dependency husky to v3.0.7 (10a30e66) + * update commitlint monorepo to v8.2.0 (ddd4e039) + * update dependency mocha to v6.2.1 (b172d106) + * update dependency lint-staged to v9.2.3 (ccccba81) + * update dependency coveralls to v3.0.6 (#7820) (2b1f840e) + * update dependency husky to v3.0.3 (cbede89a) + * update dependency lint-staged to v9 (f2e4664d) + * update dependency eslint-plugin-import to v2.18.2 (#7779) (57b2a553) + * update dependency eslint to v6.1.0 (#7783) (7257e6b2) + * update dependency husky to v3.0.2 (7ad72b32) + * update node:8.16.0 docker digest to c671dc2 (e76214a2) + * update dependency mocha to v6.2.0 (d43f5dcf) + * update node:8.16.0 docker digest to 310db2a (c46a0772) + * update dependency husky to v3.0.1 (28151f86) + * update dependency eslint-plugin-import to v2.18.1 (9fda2c1f) + * update commitlint monorepo to v8.1.0 (f73468d5) + * update dependency coveralls to v3.0.5 (5b746d53) + * update dependency husky to v2.7.0 (1d0fd028) + * update dependency eslint to v6.0.1 (77347d0a) + * update dependency husky to v2.6.0 (fc69e891) + * update dependency eslint-plugin-import to v2.18.0 (744e4428) + * update dependency husky to v2.5.0 (4960b925) + * update dependency lint-staged to v8.2.1 (2fa68e3b) + * update node:8.16.0 docker digest to 06adec3 (fc224cca) + * update dependency husky to v2.4.1 (17ec8fde) + * update node:8.16.0 docker digest to d5ad3f5 (f9e99fa3) + * update node:8.16.0 docker digest to 75b524a (5995834b) + * update node:8.16.0 docker digest to b9a98ae (fca6d794) + * update dependency lint-staged to v8.2.0 (376390c4) + * update dependency husky to v2.4.0 (3d2ec0bb) + * update dependency coveralls to v3.0.4 (c360e0c2) + * update dependency eslint-plugin-import to v2.17.3 (eac4e2f1) + * update node:8.16.0 docker digest to 957cab2 (cc6fa97c) + * update commitlint monorepo to v8 (80532831) + +##### Documentation Changes + +* updated changelog (183b0ed3) + +##### New Features + +* displaying one-click unsubscribe link in email footer (#8024) (df139928) +* #7467, pass query params when redirecting to posts (480a64aa) +* use helpers.setupAdminPageRoute (b5a30006) +* wip, better digest handling (+ eventual digest resend logic) (#7995) (645d6472) +* add action:messaging.save (ac5c560c) +* #7957, allow post queue based on group (1cedc4a0) +* add filter:topics.unreadCutoff (e020b85b) +* Add filter:topic.delete and filter:topic.restore (#7946) (#7989) (989107d9) +* no more session cookie for guests (#7982) (cf7e0cfd) +* Implement WICG change-password-url (#7072) (#7990) (df1efe5f) +* log errors from mubsub (b01a47cb) +* upgrade to sitemap5 (#7980) (d6792188) +* #7964, change all categories at once (485fbd2f) +* closes #7952, translate widget-settings (990508a5) +* remove ability to delete events from acp (554e6711) +* resetting theme will reset skin (03827fa6) +* disable timeout on launch route (4bc77d06) +* add new hook to get custom category tids for unread (b1926054) +* adding filter:login.check and loginFormEntry[] for the filter:login.build hook (#7861) (94810fd6) +* #7932, redirect to group details after creation (2444ed5c) +* add new hook filteR:topics.getSortedTids (b93c826d) +* bypass cropper for gifs (9a756004) +* deprecate file.isFileTypeAllowed (ffe3670f) +* send notification to group owners when someone leaves (ed122364) +* add failing test for pagination (#7924) (22b02f14) +* refactor getSortedSetRange to allow big arrays (b602c044) +* add new test (1e5246f9) +* add rss feed url for tags (bbc2e956) +* add sm2x avatar class #7813 (35a4ca2f) +* #7090, abililty to hide widgets (71cd602d) +* #7760, body-parser config (5de6d885) +* actually cache duh (f05c1dae) +* cache tags:topic:count (63bd252f) +* increase search timeouts (1789ecb4) +* make handleSearch public (ebe5ed22) +* increase size of local cache (b81405a8) +* don't hardcode numberic fields in user search (09410ff1) +* allow only watching core (451c7fd4) +* client-side taskbar.update method, deprecates .updateTitle() (9b09ee0e) +* option to restrict group leaving, closes #7770 (1796b65d) +* preserver querystring when changing category sort (ad96b0e0) +* html sanitization on all filter:parse.* hooks, closes #7872 (2580306d) +* up socket.io-adapter-mongo (3d2cb628) +* update LESS to v3.x, #7855 (#7867) (aea04de0) +* up psql socket.io adapter (b565e568) +* add client side hook for quick search&normal search (f31d30cd) +* allow floating pinned topics to top in getSortedTopics (1d7e0c63) +* promisify recent.getData (6f7ab586) +* faster initial stat loading (89cd31ed) +* cache stats, mongo count sucks (cb50b3f4) +* dashboard stats (3ff6e1bb) +* add filter:search.getPosts (aeb44faf) +* add image and imageClass to post summaries (80bd52fc) +* #7842, make isInvited, isPending work with uids (fa268556) +* convert search controller to async/await (acf12e3d) +* notification on membership acceptance, closes #7835 (1a2a381a) +* additional events logged for various group actions (1ce33faa) +* async (e6353486) +* async/await controllers/admin/dashboard (32ea04a8) +* async/await admin/controllers (72590b34) +* async/await (7beef91c) +* async/await refactor (3cc7ec63) +* async/await controllers/accounts (a3541d88) +* rewrite getRawPost to async/await (b734defb) +* added new filter hook filter:post.getRawPost (973075cf) +* convert categories controller to async/await (e9fd49e2) +* new client-side hooks for chat minimize and close (3d3fa865) +* test psql without defineProperty (#7815) (af1f7249) +* fire updateRemainingLength hook for chats (af968c6a) +* send pids into filter:post.getFields hook (0e07ffa1) +* move cache tpl (65fc0612) +* async refactor (3a9d83a4) +* move group privs above user, add labels (47e30a67) +* widgets/index.js (dec8040c) +* use promise version (4d6b6871) +* #7743, meta/dependencies (1c2540d3) +* #7743, widgets/admin (96ebe7b5) +* #7743, meta/languages and languages (c02686bf) +* added filter:tags.getAll plugin hook (66aa443b) +* #7743, events (102d4b02) +* #7743 meta/errors (97d7a850) +* get rid of async.eachSeries (99cf47ee) +* #7743 meta/tags.js (7b908639) +* #7743 meta/templates.js (79eed9ae) +* #7743 navigation (764a2b12) +* #7743 account/posts controller (e72f3e4f) +* #7743 finish topics controller (9b3f4b98) +* #7743, webserver (0d047f4e) +* #7743 meta/themes.js (7dc0eaf0) +* #7743, meta/sounds (a15c50bf) +* #7743 , meta/cachebuster, meta/configs (7f72181e) +* convert src/messaging/* to async/await (#7778) (756a717e) +* #7743 meta/blacklist (fcf8fd51) +* #7743 meta/index (69860e58) +* #7743 plugins (c126cd85) +* #7743 plugins/data (f5f5f76b) +* dont waste whitespace (17f843f9) +* switch to promise.all (34d85b52) +* #7743, privileges (faccb191) +* #7743 , search.js (6d3a92b8) +* shorter name (8e75646a) +* cache group:members for priv groups (daed76d5) +* #7743 finish groups (72def7df) +* #7743, groups/index, invite, leave,membership (a39ca51e) +* #7743,groups/index,join (d5342a40) +* #7743, groups/delete,ownership,posts,user (fcd4445a) +* #7743 groups/cover,create,data (5e8614e1) +* #7743, finish post module (c0c6c652) +* #7743 posts/diff, posts/edit (c4bb467e) +* #7743, posts module (1b2b308a) +* #7743, finish user module (a51ec591) +* #7743 (6fea46b6) +* #7743 (cd80c263) +* #7743 (0a690c57) +* #7743 (1c5fad6d) +* #7743 (fe4c0481) +* #7743 categories (fcf3e077) +* #7743, user/digest, user/email, user/follow (c610eb14) +* #7743, user/create, user/data, user/delete (d6e36c31) +* #7743 , user/block, user/categories (4541caa4) +* #7743 notifications (6f738c2b) +* remove unused code, add 2 tests (cd2e68cb) +* #7743 user/ban, up mubsub (1970214a) +* #7743, user/approval, user/auth (b24ce976) +* #7743, posts/votes (8ef75be3) +* #7743 posts (e1ecc36d) +* #7743 user/admin.js (2c335955) +* add utils.promiseParallel (4170abfd) +* #7743, posts/user.js (0a6cfb37) +* added new admin option newbiePostEditDuration (#7737) (8a6a58ee) +* returning category data in tags page (75ff4d7d) +* ACP analytics API route (#7725) (a0c0ef1b) +* closes #7718 (ee4d78ca) +* add status to post summaries (41bc6ca2) +* use arrow functions (3100d803) +* ability to sort watched topics, closes #3735 (f24c14d7) +* use fewer system resources to draw the progress bar (d0ee312c) +* removed series from upgrade script (23fb904f) +* remove duped zadds, these are already in topics.onNewPostMade (cb51c239) +* log data on error (f8a7cf73) +* cleanup, use bulk (198d0587) +* #7707, added sortedSetAddBulk (3ecd703e) +* change widget-* to data-widget-* (#7703) (13efbc99) +* shorter setsCard (3780a58f) +* show best & latest posts on profile (b53a60c2) +* use db.sortedSetsAdd (7e54d7aa) +* use db.sortedSetsAdd (29a124c4) +* dont log action:plugins.fireHook (a7600b4b) +* upgrade to connect-mongo 3.0.0, closes #7693 (ebfc369a) +* add hook for user notifications, closes #7672 (ede060a6) +* user/notifications refactor (580f7860) +* send new post/topic event in batches (8c331088) +* allowing count to be passed to ./nodebb events (f6d3cc0e) +* awaitable websockets (#7645) (aee47b29) +* hooks can now return promise or call callbacks (a6436716) +* fallback strings for ACP events (99120676) +* design revamp of ACP events page (#7664) (c7f95cce) +* optimize group rename (48538b28) +* allow multiple scores in sortedSetsAdd (31ccc860) +* optimize copy privileges (0dca13e9) +* on category search reveal children and parents (0721bee1) +* async3 upgrade (#7639) (4d9bc30d) +* #7627, close chat on ajaxify on mobile (6cebc7f0) +* update meta tags on ajaxify (#7580), fixes #7544 (a41769e6) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v3.3.4 (#8032) (2093418d) + * update dependency nodebb-theme-vanilla to v11.1.10 (c01699f7) + * update dependency nodebb-theme-persona to v10.1.27 (182397b1) + * update dependency nodebb-plugin-spam-be-gone to v0.6.7 (#8027) (c2565a2f) + * update dependency nodebb-theme-slick to v1.2.27 (#8020) (7122bdc7) + * update dependency nodebb-theme-persona to v10.1.26 (#8019) (73d9752e) + * update dependency connect-mongo to v3.1.2 (#8013) (bfea9d39) + * update dependency postcss to v7.0.21 (#7998) (ef5f6714) + * update dependency nodebb-plugin-composer-default to v6.3.17 (#8009) (e1e2d20c) + * update dependency sharp to v0.23.2 (#8005) (420f9fe4) + * update dependency nodebb-theme-persona to v10.1.25 (#8012) (cb91e756) + * update dependency connect-mongo to v3.1.1 (#8006) (7655265c) + * update dependency connect-mongo to v3.1.0 (#7994) (401d1eed) + * bump persona (6155c460) + * update dependency nodebb-theme-persona to v10.1.23 (#7986) (9bd6f686) + * update dependency nodebb-theme-persona to v10.1.22 (#7965) (bf6ae6d6) + * update dependency nodebb-rewards-essentials to v0.1.2 (#7962) (692d94bf) + * update dependency nodebb-theme-persona to v10.1.21 (#7956) (1a150d8f) + * update dependency nodebb-plugin-spam-be-gone to v0.6.6 (#7944) (cffbb325) + * update dependency nodebb-theme-persona to v10.1.20 (#7943) (9589fa32) + * update dependency nodebb-theme-persona to v10.1.19 (#7942) (0d629f06) + * update dependency connect-redis to v4.0.3 (#7933) (2856333d) + * update dependency spider-detector to v2 (310039e8) + * update socket.io packages to v2.3.0 (764ed7f8) + * update dependency sharp to v0.23.1 (#7928) (17437897) + * update dependency nodebb-plugin-dbsearch to v4.0.6 (#7918) (44cd7189) + * update dependency nodebb-plugin-composer-default to v6.3.16 (#7917) (d8fe6e42) + * update dependency nodebb-plugin-composer-default to v6.3.15 (#7916) (c5e5e24b) + * update dependency nodebb-plugin-composer-default to v6.3.14 (#7914) (e18392ab) + * update dependency nodebb-theme-persona to v10.1.18 (#7906) (8ed80bcb) + * update dependency nodebb-rewards-essentials to v0.1.1 (#7905) (5b8bb3e4) + * update dependency connect-redis to v4 (#7869) (8b7f6566) + * update dependency nodebb-plugin-mentions to v2.7.3 (#7899) (b2423bae) + * update dependency nodebb-plugin-mentions to v2.7.2 (#7898) (a3120a62) + * update dependency nodebb-plugin-dbsearch to v4.0.5 (#7896) (106c20e2) + * update dependency nodebb-plugin-composer-default to v6.3.13 (#7895) (fa251ece) + * update dependency nodebb-plugin-mentions to v2.7.1 (8c2fc577) + * update dependency nodebb-plugin-composer-default to v6.3.12 (#7889) (429e124f) + * update dependency nodebb-plugin-composer-default to v6.3.11 (#7888) (516b62ea) + * update dependency nodebb-plugin-composer-default to v6.3.10 (6a4a9e26) + * update dependency nodebb-plugin-dbsearch to v4.0.4 (#7883) (12ba589d) + * update dependency postcss to v7.0.18 (c75f3d27) + * update dependency nodebb-theme-persona to v10.1.17 (317c6771) + * update dependency nodebb-theme-vanilla to v11.1.8 (6e9caddc) + * update dependency nodebb-plugin-composer-default to v6.3.9 (effe3989) + * update dependency nodebb-plugin-mentions to v2.7.0 (b69769bb) + * update dependency benchpressjs to v2 (#7876) (9149db1f) + * update dependency nodebb-plugin-composer-default to v6.3.8 (793c5eaa) + * update dependency nodebb-plugin-composer-default to v6.3.7 (57de99d2) + * update dependency mongodb to v3.3.2 (#7871) (4ee2c090) + * update dependency nodebb-plugin-spam-be-gone to v0.6.5 (#7865) (8ce2a5fc) + * update dependency mongodb to v3.3.1 (#7862) (0dfce49f) + * update dependency connect-pg-simple to v6 [security] (#7864) (e4b5d0b4) + * update dependency nodebb-plugin-mentions to v2.6.1 (a1210985) + * update dependency nodebb-plugin-mentions to v2.6.0 (cdccc646) + * update dependency rimraf to v3 (#7843) (2f02edbc) + * update dependency rimraf to v2.7.1 (#7838) (cf2504f8) + * update dependency nodebb-theme-persona to v10.1.16 (#7848) (ca7ba9be) + * update dependency nodebb-theme-persona to v10.1.15 (#7845) (b1c0beb7) + * update dependency nodebb-theme-persona to v10.1.14 (#7837) (661284cf) + * update dependency nodebb-theme-persona to v10.1.13 (eaea6f63) + * update dependency sitemap to v4 (d3d677da) + * update dependency commander to v3 (7a5dbd9f) + * update dependency mongodb to v3.3.0 (360e172e) + * update dependency nodebb-plugin-markdown to v8.10.4 (61f9be99) + * update dependency nodebb-plugin-markdown to v8.10.3 (d860f8c7) + * update dependency sharp to v0.23.0 (#7806) (2258452c) + * update dependency nodebb-theme-persona to v10.1.12 (#7799) (b9aac424) + * update dependency nodebb-plugin-dbsearch to v4 (#7797) (d98313b5) + * update dependency nodebb-plugin-dbsearch to v3.0.8 (#7796) (ef734b62) + * update dependency nodebb-theme-persona to v10.1.11 (8b1fc5c8) + * update dependency nodebb-theme-vanilla to v11.1.7 (ba1bb528) + * update dependency nodebb-theme-vanilla to v11.1.6 (#7784) (7a88c4cc) + * update dependency nodebb-theme-slick to v1.2.26 (#7782) (e074b0bf) + * update dependency nodebb-theme-persona to v10.1.10 (#7781) (4f20b4d3) + * update dependency nodebb-plugin-composer-default to v6.3.6 (3fdc638b) + * update dependency connect-redis to v3.4.2 (8a11193f) + * update dependency nodebb-plugin-mentions to v2.5.4 (45223cde) + * update dependency nodebb-plugin-markdown to v8.10.2 (86546232) + * update dependency nodebb-theme-persona to v10.1.9 (#7759) (c1660a1a) + * update dependency nodebb-plugin-dbsearch to v3.0.7 (#7758) (efedd621) + * update dependency nodebb-plugin-composer-default to v6.3.5 (7f4b1043) + * update dependency nodebb-theme-vanilla to v11.1.5 (#7756) (15e01d12) + * update dependency nodebb-theme-persona to v10.1.8 (#7755) (19679608) + * update dependency nodebb-theme-persona to v10.1.7 (#7754) (3cb6cfe8) + * update dependency nodebb-plugin-composer-default to v6.3.3 (8394a0fd) + * update dependency nodebb-theme-vanilla to v11.1.4 (#7741) (43ce5f8a) + * update dependency nodebb-theme-persona to v10.1.5 (27da2325) + * update dependency validator to v11.1.0 (#7738) (bd09ba92) + * bump composer-default (851424a7) + * update dependency nodebb-theme-persona to v10.1.4 (f426e105) + * update dependency nodebb-plugin-composer-default to v6.2.16 (#7723) (fb087029) + * update dependency nodebb-theme-persona to v10.1.3 (413259a2) + * update dependency nodebb-theme-lavender to v5.0.11 (#7705) (208c821e) + * update dependency nodebb-theme-vanilla to v11.1.3 (#7714) (e0b2ae8d) + * update dependency nodebb-theme-slick to v1.2.25 (#7713) (af7ecd2f) + * update dependency nodebb-theme-persona to v10.1.2 (#7712) (e5733f40) + * update dependency nodebb-plugin-mentions to v2.5.3 (26ff02dc) + * update dependency nodebb-theme-persona to v10.1.1 (4e513cf3) + * update dependency nodebb-theme-vanilla to v11.1.2 (c2887505) + * update dependency nodebb-theme-vanilla to v11.1.1 (#7700) (b3ed89f5) + * update dependency nodebb-theme-slick to v1.2.24 (#7699) (629b5ce3) + * update to eslint@6 (289dada5) + * update dependency nodebb-plugin-emoji to v3 (15020b46) + * update dependency nodebb-plugin-emoji to v3 (6b43d26f) + * update dependency nodebb-theme-persona to v10.1.0 (fc89516e) + * update dependency nodebb-theme-vanilla to v11.1.0 (c9689f11) + * update dependency nodebb-theme-persona to v10.0.1 (#7687) (ada8f22e) + * update dependency nodebb-theme-vanilla to v11.0.1 (#7688) (6db3604e) + * update dependency nodebb-theme-vanilla to v11 (89fea9d3) + * update dependency nodebb-theme-persona to v10 (0a7778bd) + * update dependency nodebb-theme-lavender to v5.0.10 (#7682) (e1e4abeb) + * update dependency nodebb-plugin-markdown to v8.10.0 (de046297) + * update dependency postcss to v7.0.17 (ae891390) + * update dependency nodebb-rewards-essentials to v0.0.14 (#7671) (3f4f8afa) + * update dependency mongodb to v3.2.7 (#7665) (988cbb63) + * update dependency nodebb-plugin-composer-default to v6.2.15 (e21246a9) + * update dependency nodebb-theme-persona to v9.1.38 (#7652) (d202be5b) + * update dependency nodebb-theme-vanilla to v10.1.34 (#7653) (e3308659) + * update dependency nodebb-theme-vanilla to v10.1.33 (#7651) (6f70397b) + * update dependency nodebb-theme-persona to v9.1.37 (#7650) (d43bdb41) + * update dependency async to v3.0.1 (#7649) (3b8e6e15) + * update dependency mongodb to v3.2.6 (#7616) (3f21096d) + * update dependency validator to v11 (a3d42404) + * update dependency nodebb-plugin-composer-default to v6.2.14 (#7635) (b174c2d2) + * update dependency nodebb-theme-vanilla to v10.1.32 (#7631) (85ca5b19) + * update dependency nodebb-plugin-composer-default to v6.2.13 (d1f29e26) + * update dependency nodebb-plugin-spam-be-gone to v0.6.3 (#7614) (20fa751c) +* crash if post doesn't have topic data (eabc6f47) +* don't touch objects that don't have the required fields (e52ecfaf) +* add missing await to sendValidationEmail (f4381ba3) +* #8007 added tfoot to clear new group button (dee1d447) +* tests (e3c9dafa) +* #8018, allow absolute urls in notification.path (0037a038) +* #8010, fix isBanned call (59242d31) +* #8003, check children recursively (c4e58160) +* dont show delete topics on unread (b91c4790) +* #8000, tweak wording; password reset success (3952849f) +* parseInt cutoff (0e5e47f4) +* lint (4b8897d9) +* convert param to string in slugify (441dd86d) +* cli/reset.js (#7979) (f9f85fc4) +* #7977, fix undefined url (#7978) (95a372df) +* passwords always expiring upon login (ddf3812c) +* #7974 (#7976) (ca3be1f3) +* delete follower/followingCount as well (d72b0d16) +* event tests (0da4f7ee) +* #7958, give rewards one by one (3775301f) +* rewards page acp not loading rewards (88818a5b) +* #7929, use fixed bootswatch (dd202931) +* #7960, dont try to save size for non images (f272daaf) +* #7941, validate some input fields (565f9726) +* don't show deleted topics on unread (661a0f50) +* #7951, don't send notification for system messages (c01b0fbd) +* #7953, allow icon only group badges (5b458fc7) +* remove 0 fields (ac4a5004) +* remove unused data from post/topic/user hashes (75bcb0f4) +* groups not visible on widget panes (205d3f9d) +* new nav items will show group select (c5f7b66c) +* move post and change owner (f402d727) +* 404 on new groups with spaces (b19f0a68) +* #7940, run upgrade scripts on startup (7823144b) +* #7949, delete old user notifs (38322ec3) +* tests (6fb29e84) +* check threshold before setting bookmark (f983f536) +* mongo collection stats (4e28e575) +* #7947, disable unused cookie (91e8e390) +* #7945, show watched categories in ignored categories (c9bf6d0f) +* db.init calls (18bf865d) +* #7938, escape username in registration queue (d5dda26f) +* #7901, handle group names that are translation keys (3455c27a) +* fix the order of groups on user profile (41f8da2e) +* #7935, ACP digest wording (54c9f877) +* #7934, return tids (10f168b8) +* tests (3caa387a) +* tests (9c051386) +* remove jquery (95ab0712) +* picture not showing up in change modal (13c87059) +* profile page meta tags getting escaped twice (7effc892) +* missing await (2150701f) +* potential for XSS here (40f131a6) +* account/categories (7a0f6074) +* redis tests (1f054c7e) +* #7921, dont create wrong entries in db for flag (a651d154) +* #7913, dont allow urls in fullname/location, validate birthday (babb9d7c) +* upgrade scripts (bd026cb1) +* only allow png/jpg/bmp in cover/profile images (96ab8d05) +* #7919, add useUnifiedTopology (910b9b88) +* crash in feed (873ec519) +* lang key (795d4183) +* time cutoff and lang string (5b8550f0) +* returned data (87f6ac59) +* dont send all category data back to recent&unread etc (955e00fd) +* #7912 (ecf39727) +* only return necessary data for categories (307abaa8) +* dont crash if callback is undefined (e0fec866) +* #7800, dont crash on resize (781b3f1a) +* change params (de461968) +* remove dupe code (9b151b23) +* #7894, translate log in to view (2a5fe2b8) +* minor typo (b99279a8) +* #7893, check private upload setting (0843497d) +* #7892, handle string 'true'/'false' (77cb4b55) +* dont show deleted topics in digest (4652c68b) +* #7824, update timeago settings on userlanguage change (3887fc67) +* don't move theme/plugin to top if its already active (acd95764) +* #7853, dissociation on post purge (30a86ed5) +* added comment back (0c4cd840) +* inability for plugins to actually alter parser sanitization config (fe452762) +* htmlentity instead of url encoding for room rename system message (9b8ac89e) +* page count for filters (e291a609) +* #7866, show correct title based on digest interval (547bb496) +* #7780 (21e81f96) +* pinned tids showing on page > 1 (f2912e9f) +* #7860, allow running single upgrade scripts from plugins (a4dec7e3) +* reset should not automatically build assets (a67762bc) +* update morgan and lodash (2b1912a9) +* #7842, groups.invite works with an array of uids (1e0190ab) +* #7844, add uid to events, log plugin install/uninstall events (592d9c82) +* removed console.logs (c44bf48c) +* broken tests from 71b205a889da1ee8dd326b0891d122a522084f54 (f736f0b3) +* typo (c6c13725) +* category description getting translated in ACP (647713f3) +* #7791 (71620519) +* #7831, fix pagination (014e3153) +* remove empty line (292bbe34) +* remove useless catchs and empty line (5fce4558) +* #7823, fix topic move readding pids when topic is deleted (fd5f9822) +* #7826, fix order of categories on recent dropdown (3ecac97d) +* redis pubsub not being required correctly (8d4f2086) +* mongo.close using wrong client (186321e6) +* digest not sending topics (bc6f22eb) +* #7816, adding GDPR and TOU interstitials earlier on route reloading (52a2e5d6) +* #7809, dont check postDelay if submitting from queue (9780f5b9) +* newPostEditDuration (2abe244b) +* #7789 (6a289fba) +* #7798, fix nested post selection (666e0eaf) +* #7788, fix on topic move and new post (8bf40d04) +* #7788, fix another edge case (053ff510) +* topicData passed to action:topic.edit (b10ad7b6) +* derpy catch (ce912886) +* #7788 No new posts (#7793) (3c32d860) +* user urls in subfolder install (6a486e35) +* #7765 (0b498acd) +* tests (87552c55) +* revert requires (3dd806dc) +* #7763, parse about me on all profile pages (f8d34101) +* status and groupTitle, if its not set (e2e33dfb) +* don't return promise (2f0a331f) +* socket.io methods calling callbacks twice if method returns promise (44a33520) +* tests (87b1148f) +* tests (930ffd07) +* #7601 removed check for another user when sending messages (0e8ee31b) +* mongodb tests (3b24de4c) +* getTopicsFromSet (13aaf07b) +* #7762, allow array for isBanned (9eb1fcd4) +* add flag for change post owner (46639be3) +* sitemap ajaxify (9f78bd7a) +* #7751, make necro separator a partial (2b70e86f) +* #7748, if reputation system is disabled, dont check min reputation (7b95ebbb) +* remove left over code, use proper names (0ac49d63) +* compatibility conditional (fba67196) +* private upload img replacement should happen before img wrapping (16aae517) +* #7423 private uploads are linked to login page, for guests (49e3a368) +* typo (f3440ebf) +* #7722, hsts deprecation warnings (8b1dadb7) +* upgrade script #7720 (accf48f3) +* indents (a5de54f8) +* remove debug code that should not have made it in (af17c6e3) +* dont display post tools if there are no options (708df46e) +* output span in buildAvatar helper instead of div (69fae1a7) +* restore uid in teasers userObj (67b8cb89) +* dont allow edit if post is deleted by someone else (667bc67f) +* dont show delete posts on profile (e48c7cd7) +* on new post add it to cid::uid::pids (6a7bc1c5) +* #5570, create per category user post zsets (a39f0ef5) +* restrict drag drop to pin icon, closes #7702 (e1c05e59) +* remove dupe code (68e5d7ad) +* get uids directly for csv (39ee3980) +* typo (a251032f) +* id/for (b4cc8d88) +* #7659 add option to change cookie link url (25ea6347) +* middle vertical-align for .avatar elements (1894cd9b) +* dependency checker always triggering dep upgrade, hopefully (c241551d) +* #7483, show latest undeleted message as teaser (644504ff) +* #7567, allow invite and approval at the same time (4b843ba1) +* #7625, on group rename update nav/widget items (5b85ed31) +* psql error (8d319e42) +* try to fix psql :dog: (2e6b562f) +* no need for moderate bit for global mods and admins (8aef689f) +* attribute name so it works for both templates (ebb32e78) +* #7647, fix getModeratorUids (64679b37) +* #7644 (5cd9e1bf) +* bad usage of async requisition (603c5262) +* 7638, returnTo accidentally saved into user hash (f321b426) +* #7634, make strip exif configurable (157b921e) +* #7636, use reputation threshold for post queue (a8409fbd) +* #7623, wait for lastonline to update on /users (63e5d383) +* https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/53 (e65ddc98) +* #7593, unable to set account password if no password set (80c0d579) +* incorrect pathname format for app.previousUrl (a97e97b9) +* #7598, use notice element instead of alert (106d52a4) +* #7620, allow adding new fields into user objects for posts (a8e65205) +* #7629, new filter hook for room rename (7ba4a864) +* #7628, log email send errors (7a4b68e8) +* {username} not working in notification.tpl (f55cc667) +* do not prevent nbb from starting (3b0459a0) +* #7624, default open state on stateless flags (91f0bce6) +* #7431, add /unread link to topic route (15391da5) +* #7619 (35d10f76) +* #7618 save pathname into app.previousUrl ins. of entire url (7e5cb72a) +* handle missing timestamps (172e6888) +* broken test for meta tags on ajaxify (b70e03a7) +* #7613 (15ce23da) +* #7600, removing nbsp from email CTAs (#7606) (f552cea5) +* #7604 shortened CTA text and added custom text for some notifs (#7605) (b32da57f) +* **style:** + * requiring parens in block bodies (29f96b19) + * updated code to follow new eslint recommendations (09212309) + +##### Refactors + +* use arrow function (6b3eb014) +* async/await (02d38caf) +* remove log, topics.exists (f8c8038a) +* async/await (dc8d721c) +* async/await mongo (1f0c6f3d) +* async/await socket.io/index (603908c1) +* async/await image.js (c5ffd8cc) +* remove var (05e753c7) +* async/await flags.js (ac6eb31c) +* async/await flags (0ced71be) +* shorter map (572bc297) +* remove logs (03971049) +* dont modify key (7e7ea7a6) +* remove logs (e32a5546) +* async/await flags (9ee1a882) +* shorter, new Date doesnt throw (625b0815) +* remove temp var (b842057f) +* async/await file (f9d6912b) +* async/await analytics (223c108c) +* change to const (5505628c) +* returned fields (86b16629) +* async/await emailer (63bd3fc5) +* async/await routes/feeds (ec3b5dd9) +* async/await rewards (b110aec6) +* async/await socket.io (a7d2b8a1) +* async/await (52b2d670) +* async/await (75d7ae92) +* async/await socket.io/topics (5c2afe5e) +* async/await controllers/user.js (3c6c40b1) +* async/await uploads (5c0266d8) +* move tos parsing to /tos (3e2ed21d) +* remove commented out code (ec98945a) +* async/await controllers/authentication (b9105ef9) +* remove async from isPasswordValid, function is sync (22f80116) +* make categories.buildForSelectCategories non async (6cda3698) +* remove dupe code (a4d84a66) +* async/await socket.io/posts (e93ef0d7) +* async/await socket.io/admin (88dfbf21) +* socket.io/admin/categories async/await (71e50bbf) +* admin groups.join socket async/await (4588a4fd) +* password async/await (dd8386d9) +* sitemap to async/await (0164e51f) +* remove hook assign (d3727207) +* async/await users (f9a804e0) +* remove empty line (19b63bfa) +* remove vars (69333f59) +* async/await controllers (2c4f0446) +* async/await controllers/tags (53624885) +* async/await (f15c7f12) +* globalmods/groups (0722cc47) +* controllers/category.js (bd8736db) +* use arrow func (27c27b49) +* async/await controllers/api (4eaa630b) +* async/await admin/controllers (6f375482) +* async/await, remove dupe code for homepage routes (c9250a01) +* async/await for src/socket.io/groups.js (71b205a8) +* rewrote SocketPosts.getRawPost in await style (08530bb3) +* replace avatar conditional code with buildAvatar helper (#7681) (25238899) + +##### Reverts + +* accidental removal of some needed translation source strings (868dedd1) + +#### 1.12.2 (2019-05-15) + +##### Chores + +* incrementing version number - v1.12.2 (22db818e) +* bump themes #7576 (d349754d) +* bump themes (59bdc970) +* bump themes (abcca134) +* bump themes (551b18cd) +* incrementing version number - v1.12.1 (dd973abe) +* **deps:** + * update dependency lint-staged to v8.1.7 (dc6b49ca) + * update commitlint monorepo (9998e86b) + * update dependency jsdom to v15.1.0 (fcd6dc88) + * update dependency mocha to v6.1.4 (3ff8154b) + * update node:8.16.0 docker digest to b5484d1 (6421f10f) + * update dependency husky to v2.3.0 (c20e3313) + * update dependency nyc to v14.1.1 (#7584) (9047210c) + * update dependency eslint to v5.16.0 (692e2ead) + * update dependency nyc to v14 (9210baf5) + * update dependency husky to v2.2.0 (8a018a5f) + * update dependency lint-staged to v8.1.6 (4e39caf8) + * update dependency husky to v2.1.0 (65ff0bbd) + * update dependency husky to v2 (e81a1dbb) + * update dependency eslint-plugin-import to v2.17.2 (#7546) (c1fb17f9) + * update dependency jsdom to v15 (#7556) (d4d8d98f) + * update dependency jsdom to v14.1.0 (#7555) (ca694fd1) + * update node.js to v8.16.0 (#7554) (f10708e7) + * update dependency eslint-plugin-import to v2.17.1 (69dd8e4d) + * update dependency mocha to v6.1.2 (b7169772) + +##### Documentation Changes + +* updated changelog (93b688d0) + +##### New Features + +* let theme know downvoting is disabled, closes https://github.com/NodeBB/NodeBB/pull/7568 (bd94fbc2) +* closes #7583 (cf5aeace) +* #7319 (9385c8e3) +* add node12 to travis (1a7036a6) +* allow file uploading on registration interstitial (ddffc904) +* #7527 (ba5e1eaa) +* #7515 (c38db4f7) + +##### Bug Fixes + +* #7599 image size measurement erroring out on missing path (0d86781c) +* #7590 updated chat and post edit and delete timeout labels in ACP (4f0dc443) +* tests (3a7e99a5) +* #7586, switchTimeagoLanguage shouldn't discriminate against languages w/o shorthands (1703233f) +* #7576 "Disable password changes" can be sidestepped (50260e13) +* if editing password is disabled in ACP, prevent direct access via route/socket (related: #7576) (e114b16d) +* #7582 (c9ca72d0) +* #7461 (96cb29aa) +* increase batch size (3d938e7b) +* #7564 (bf6fc502) +* group cover upload not working for s3 upload (#7571) (8945ebcb) +* test (b9903120) +* #7539 (c940a733) +* #7565 (07e9b67e) +* #7464 (32cf07d7) +* #7147 (fe6d64cc) +* #7424 (f86d74d8) +* #7562 (09681e6c) +* node12 tests (8775e7e6) +* add post queue to /compose POST route (c6cd6c57) +* remove redis object cache (4df925e7) +* #7545 (74038849) +* failing test from 00552d7183f0416a0caa113fe2f1e658659648f7 (9bf3517d) +* fire filter:register.complete for users approved via registration queue (00552d71) +* #7540 (8778f00b) +* more graceful error handling and output for cli/reset (d3ebda73) +* #6438 only apply whitelist when fields request empty (#7528) (808c4909) +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.31 (#7589) (a9f9d19b) + * update dependency nodebb-theme-persona to v9.1.36 (#7588) (bd86e58d) + * update dependency mongodb to v3.2.4 (#7581) (26d6d0be) + * update dependency postcss to v7.0.16 (10a47a29) + * update dependency nodebb-theme-persona to v9.1.33 (#7563) (7c4201f2) + * update dependency sharp to v0.22.1 (#7561) (288a25f0) + * update dependency nodebb-plugin-composer-default to v6.2.12 (#7538) (a54f8f00) + * update dependency mongodb to v3.2.3 (97a7f02f) + +#### 1.12.1 (2019-04-10) + +##### Chores + +* incrementing version number - v1.12.1 (dd973abe) +* comment cleanup (6bed51ef) +* bump persona (1f4db132) +* bump themes, fix: https://github.com/NodeBB/NodeBB/issues/7446 (0d19bb3d) +* incrementing version number - v1.12.0 (d87f8c52) +* **deps:** + * update dependency lint-staged to v8.1.5 (ae17481d) + * update node:8.15.1 docker digest to 918f0be (5f787d73) + * update node:8.15.1 docker digest to 3d43ad1 (ea77ad4e) + * update dependency grunt to v1.0.4 (a9130fad) + * update dependency eslint to v5.15.3 (d2932cf6) + * update dependency mocha to v6.0.2 (#7408) (1c671c32) + * update dependency eslint to v5.15.1 (d8486e88) + * update node:8.15.1 docker digest to c151597 (2cb0bdea) + * update dependency jsdom to v14 (a967253a) + +##### Documentation Changes + +* updating changelog (9aeb291e) + +##### New Features + +* #7515 (ac889db1) +* update unban logic/invocation and refactor User.bans module (3fbb6faf) +* add original sessionID to static:user.loggedOut (abe4abb6) +* #7501 (2ee2cd52) +* allow multiple cids for getActiveUsers (81306fff) +* manual password expiry. closes #7471 (24dcae21) +* #7358 (7211dde7) + +##### Bug Fixes + +* don't crash if templateData is undefined (eb2c3e56) +* clear children before building tree (397e062a) +* upgrade script date (4f3ca4d8) +* #7519 (ed91d3f2) +* #7517 (e479fad7) +* #7470 Properly handle recompilation of email templates (75ae29c1) +* resolve CORS error on uploading via URL (3871a02c) +* #7461 (dbc4d840) +* #7491 (8cc1864a) +* #7476 (4db0efe3) +* #7508 (b52dba5c) +* escape search snippet closes #7506 (e906bea4) +* #7490 once again (3ec9fc40) +* #7502 (3304ffe9) +* #7503 (1f3554ff) +* #7493, adding robots noindex meta tag to compose and reset routes (6415ba82) +* #7490, handling of image sizes if no size saved in db (86e1cdd5) +* #7494 (8f55ab13) +* #6911, email throttling options set (63e16ec0) +* throttling email output to 2 messages every second, fixes #6911 (33a1bf6c) +* #7469 missing email logos, occasionally (8d62ead3) +* #7487 (fddb783e) +* #7485 (78e0b983) +* move upload_url to prestart so it is defined in upgrade scripts (ad2d7a69) +* #7342 (cead89f0) +* #7477 (240f563a) +* #7473 (c289b904) +* #7378 (c37b2f2e) +* #7454 (dcdd41c7) +* #7472 (962b7f73) +* remove async.series, dont crash if postAtIndex is undefined (dd8d4f20) +* tests (c12e1d19) +* #7468 (b4a9bb10) +* #7444 Re-factor handling of og:image tags (#7463) (697a6597) +* tests (45d7e37a) +* callbacks (b48b6d75) +* return early if keys is empty (7addc5a0) +* return early if keys is empty (b3962c16) +* prevent infinite loops if category is already in children (b71e0eb1) +* #7448 (4732bed3) +* return early if there are not blocked uids (73d14e45) +* #7008 (756dfd8a) +* typo (f9d92db5) +* tests (e71ae80c) +* #7406 (cbfbcee5) +* #7432 (777ca032) +* change user/system cpu usage (aecdf739) +* strip exif data on image uploads (5eaa14e7) +* **deps:** + * update dependency nodebb-theme-persona to v9.1.29 (e5c12a49) + * update dependency nodebb-plugin-composer-default to v6.2.11 (30b042b8) + * update dependency nodebb-plugin-composer-default to v6.2.10 (cf180e09) + * update dependency html-to-text to v5 (b39ce25c) + * update dependency semver to v6 (8662aa95) + * update dependency spdx-license-list to v6 (447cf66b) + * update dependency nodebb-widget-essentials to v4.0.17 (#7489) (0f9cb86d) + * update dependency mongodb to v3.2.2 (#7482) (357f931c) + * update dependency nodemailer to v6 (0274c2bd) + * update dependency sharp to v0.22.0 (#7466) (c3261415) + * update dependency nodebb-theme-slick to v1.2.23 (#7460) (c20cd528) + * update dependency nodebb-theme-vanilla to v10.1.25 (fe30e06d) + * update dependency nodebb-theme-persona to v9.1.27 (5c605392) + * update dependency connect-redis to v3.4.1 (02804fe9) + * update dependency nodebb-plugin-composer-default to v6.2.9 (#7442) (80293146) + * update dependency nodebb-theme-vanilla to v10.1.23 (#7438) (48dd3c5b) + * update dependency nodebb-theme-slick to v1.2.22 (#7437) (3f4ae4b0) + * update dependency nodebb-theme-persona to v9.1.25 (#7436) (9887bb4f) + * update dependency nodebb-plugin-composer-default to v6.2.8 (#7435) (c18f2e1f) + +### 1.12.0 (2019-03-06) + +##### Chores + +* incrementing version number - v1.12.0 (d87f8c52) +* incrementing version number - v1.11.2 (757bff27) +* **deps:** + * update node:8.15.1 docker digest to 287b8a5 (0b8d1833) + * update node.js to v8.15.1 (ae89db28) + * update dependency mocha to v6 (#7387) (30bdb1a1) + * update dependency coveralls to v3.0.3 (#7397) (cf74904c) + * update dependency eslint to v5.14.1 (4df9c206) + * update dependency jsdom to v13.2.0 (cb5e3d83) + * update node:8.15.0 docker digest to a8a9d8e (edcb5314) + * update dependency nyc to v13.3.0 (a78f5da5) + * update dependency lint-staged to v8.1.4 (18c90913) + * update dependency eslint to v5.14.0 (9d8d2d0d) + * update commitlint monorepo (aed5b29d) + * update dependency eslint-plugin-import to v2.16.0 (e0fa6965) + * update dependency @commitlint/cli to v7.4.0 (362d9397) + * update dependency lint-staged to v8.1.1 (96644350) + +##### Documentation Changes + +* updated changelog (aec2f210) + +##### New Features + +* admin/groups style change (2b6f1a05) +* add process cpu usage to admin (db477538) +* pass options to digest (23da3009) +* revamp email templates to be more style agnostic (#7375) (f32a9922) +* lower search timeout (fc830c0f) +* quick search (8a0e1280) +* add vote status to getPostData API call (eafe76de) +* make topic search a function (d2b83967) +* quick search (c01d43e0) +* check overide (ba90bf31) +* check CI failure (f2d7f75e) +* logging password resets and errors into event log (0c09b740) +* add `action:alert.new`, `action:alert.update` hooks (daadcc48) +* allow themes to define custom classes for categories via filter:admin.category.get (5031bfe8) +* show more unread notifs (d75a0d77) +* pass topic creation data to action:topic.save (cd2f72fb) +* textcomplete over jquery-textcomplete, closes #7309 (02a8ed9b) +* new hook filter:privileges.posts.edit (f659ef4d) +* new hook type: `response` (a23854e3) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v9.1.24 (0f2d3181) + * update dependency nodebb-plugin-composer-default to v6.2.7 (#7411) (9ebc900a) + * bump markdown (82c8ee3f) + * bump markdown (7ce5a81f) + * bump persona (a0b71f09) + * update dependency nodebb-theme-vanilla to v10.1.21 (#7404) (699eddcb) + * update dependency nodebb-theme-persona to v9.1.22 (#7403) (d87751ea) + * update dependency nodebb-theme-persona to v9.1.21 (#7401) (f721155d) + * update dependency nodebb-theme-slick to v1.2.21 (#7398) (f6e55651) + * update dependency nodebb-widget-essentials to v4.0.14 (#7399) (f812e0b7) + * update dependency nodebb-theme-persona to v9.1.19 (#7392) (deff7b34) + * update dependency nodebb-plugin-composer-default to v6.2.6 (#7389) (fab32a49) + * update dependency nodebb-theme-persona to v9.1.18 (042b81a0) + * update dependency nodebb-theme-persona to v9.1.17 (#7379) (546e04e1) + * update dependency nodebb-plugin-composer-default to v6.2.5 (#7374) (d0874f34) + * update dependency async to v2.6.2 (#7365) (264eadde) + * update dependency nodebb-plugin-composer-default to v6.2.4 (30ff4582) + * update dependency nodebb-theme-persona to v9.1.16 (65df6711) + * update dependency nodebb-plugin-markdown to v8.9.0 (07b29d59) + * bump contenteditable to v0.1.1, #7325 (fbbe2ab7) + * update dependency nodebb-plugin-composer-default to v6.2.3 (#7341) (176efb5f) + * update dependency nodebb-theme-persona to v9.1.15 (#7295) (8f69ffd4) + * update dependency nodebb-theme-slick to v1.2.20 (#7197) (a82bd3d0) + * update dependency nodebb-theme-lavender to v5.0.9 (#7322) (b350be27) + * update dependency nodebb-plugin-composer-default to v6.2.2 (99f82fb3) + * update dependency winston to v3.2.1 (#7317) (7e872d32) + * update dependency nodebb-plugin-markdown to v8.8.8 (#7314) (9cf81afe) + * update dependency nodebb-plugin-dbsearch to v3.0.6 (#7305) (d48ef6d8) + * update dependency nodebb-plugin-dbsearch to v3.0.5 (#7304) (57e3f162) + * update dependency nodebb-theme-vanilla to v10.1.19 (#7301) (443dcee4) + * update dependency winston to v3.2.0 (#7299) (6f957cb9) + * update dependency nodebb-plugin-spam-be-gone to v0.6.0 (247ac828) +* #7413 (684175f7) +* #7414 (e331f6b5) +* l2spread @baris nib (0360f6e1) +* restored email logo to all outgoing emails (6c1f9c3c) +* die hydra!!! (ad6c8dcc) +* incorrect teaserPost logic (97313508) +* normalized font sizes for paragraphs in digest (43c4eb23) +* removed notification subheader translation string (6f272e34) +* broken 50% border radius on emails, failing tests (d3a10628) +* hook names getting objectified by winston (6472a065) +* failing tests from revamped-emails branch (3a7f1c19) +* #7395 (03305db8) +* mounting of all-route middlewares to router instead of app (d722f3b8) +* incorrect returnTo set in registerComplete (f972f752) +* search.api not working on subfolder (158f68eb) +* tests for #7385 (7a534453) +* #7385 better handling for errors in Adv>Databases (57069a5c) +* no relative path needed in req.session.returnTo (949b10f1) +* don't refresh page when enabling/disabling categories (d5ece9a4) +* #7373 (c2e7ae7f) +* autocomplete not triggered if chat switched (ab0e547d) +* #7366 (6c2f48f1) +* #7357 (45c322ae) +* #7359 (2996a5dc) +* re-introducing indeterminate checkbox state to ACP privs (e8f3c256) +* #7354 (c6ad8fae) +* uid check (efd7d953) +* uid checks (c24dcf78) +* only allow numbers as scores (#7356) (5917dec2) +* #7231, missing success alert on group name change in ACP (0fffcb38) +* remove debug logs (fe63fca8) +* don't use same db as prod values (39e35275) +* database 0 was being replaced with undefined because 0 is falsy (bcd62586) +* #7352 (2e2c3ac1) +* #7261, banned users still get digests (aca05560) +* #7346, panel-header widget colours in ACP (91a7b907) +* #7350 (8c68780e) +* eslint failure from daadcc4889a91b9bbd279d49db348610cc079ccc (96b6ce1f) +* prevent crash if results.stats or results.serverStatus is undefined (fab52b84) +* move `action:alert.update` to after translator (d864da1a) +* #7098 (fc6767e1) +* #7232 (70d9c6c4) +* #7229 (e59b907d) +* #7339 (12c58990) +* #7338 (8e3bf581) +* dont crash if userData is undefined #7262 (56a493d8) +* #7240 (a2f08e7d) +* give default privs on new install to guests/spiders (cd120990) +* #6806 (c72da559) +* #7334 (ae779ea4) +* closes #7217 (9d1fcf4e) +* merge post notifs (6e69a9ab) +* don't crash if body doesn't have `skin-` (f6cfbbb5) +* #7324 (c7abf07a) +* allow regular groups to local login (0366cfd8) +* #7316 (5353960a) +* #7306 (8aebe884) +* #7312 (7a4a8ea4) +* #7311, missing dependencies (263e58df) +* #7300 (920efad0) +* #6848 (70f8b418) +* #7298 privilege header misalignment (df6f75eb) +* #7211 (cf918078) +* #7215 (7a9780f6) +* #7296, local login privilege available to registered-users only (7fb3c168) +* #7094 (d03220cd) + +#### 1.11.2 (2019-01-24) + +##### Chores + +* incrementing version number - v1.11.2 (757bff27) +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update node:8.15.0 docker digest to cb66110 (1719cd77) + * update dependency eslint-plugin-import to v2.15.0 (f7191eb9) + * update dependency eslint to v5.12.1 (d928c54d) + * update dependency @commitlint/cli to v7.3.2 (6ae2b972) + * update node.js to v8.15.0 (ac39fe90) + * update dependency eslint to v5.12.0 (f96ef7bb) + * update commitlint monorepo to v7.3.1 (50594118) + * update dependency smtp-server to v3.5.0 (00063708) + * update dependency husky to v1.3.1 (719995a4) + * update dependency eslint to v5.11.0 (#7151) (26f3bdbf) + * update dependency husky to v1.3.0 (eb606281) + * update dependency jsdom to v13.1.0 (60e9430b) + * update dependency eslint to v5.10.0 (#7084) (dae861da) + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### Documentation Changes + +* updated changelog for v1.11.1 (c04e192d) + +##### New Features + +* new hook filter:user.logout (63061ffd) +* explicit handling of SSO success and failure (059a4be2) +* additional options for SSO plugins (2b9322e1) +* get rid of disk access (ed5d2d6d) +* support for one-click unsubscribe from email clients (#7203) (70a87d43) +* added new hook `static:sockets.validateSession` (#7189) (0263b4da) +* #7120 (f4ea2c43) +* #7032 (0c1ac4d6) +* small fixes (fef7e13c) +* name topic controller (b9b9d8b2) +* header (0cb9bba4) +* more naming (ae0fe5e8) +* give the rest of the middlewares names (f88db22c) +* give names to more middlewares (fdfbcc6e) +* give names to middlewares (53793e16) +* change sortedSetsScore (d2c2d56f) +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) +* **deps:** update bootstrap to v3.4.0 (#7106) (d1ea5d15) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* test (bc41848a) +* #7235 (7064fd06) +* use ACP config value for checking online status (ef0e7808) +* log error to prevent headers already sent (a22a3a98) +* #7289 timeago shorthand toggle fails on non-existant language (cee47f78) +* #7276 improper request for client-noskin.css (5ee173c2) +* #7274 incorrect handling of client script 404s (831d0795) +* #7270 Flags graph label not translatable (8ceb35f5) +* #7266 body does not contain skin class (f122fc44) +* generate timeago codes from files (7524d3c3) +* removal of timeago fallback middleware (#7259) (c831ff0d) +* post queue notifs (ac655564) +* added missing translation and error state for password change (51b5fb98) +* #7236, header search stops working after header update (3859d417) +* #7226, added placeholder styling for fa-nbb-none (87c2d108) +* escape hook method (9328eeca) +* #7216, hide taskbar on chat modal invocation on mobile (a70db885) +* #7208 (428f587c) +* #7054 (a662f118) +* #7209 (b9833483) +* missing notification (1a3838e1) +* #7193, closes #7194 (7809ba28) +* #https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/49 (6f1fb4eb) +* #7187 (28459d04) +* #7176, FUOC on app.reskin() (954af0f0) +* #7174 (9aa1aa68) +* #7181 (0d409610) +* #7142 (8da3b2a4) +* #7179 (03299736) +* #7169 Fixed logout being broken (b0eaa858) +* #7167, composer and chat not closing on logout (629b3554) +* shorter function (43e7cc0a) +* #7162 (2da0a657) +* uid filtering (72afc180) +* dont crash if default cover is invalid (41fb5cca) +* #7136 socket.disconnect() now called on invalid session (8e9de540) +* RTL not respected when changed in user settings, related to #7146 (4873a339) +* #7146 Better RTL handling on (de-)authentication (d81e0a5f) +* #7118, invoking autoLocale middleware on logout (900f0a0b) +* closes #6784 (#7137) (7fb29f42) +* 7100 (ab81cca7) +* #7139 (3917022a) +* #7116 (7e828404) +* #7138 (29a85aec) +* lint (b47f939b) +* #7091, #7093 (69e0dbbf) +* #7131 (d31684e8) +* remove cache (b2a74b41) +* loop (60390c01) +* #7124 (4650a760) +* unread badge (9f506268) +* move the check to get methods (99e0895e) +* #7115 (989879a6) +* #6979 (29b63ae7) +* upgrade script key (0eef3e1c) +* remove log (00afc5b3) +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **deps:** + * update dependency nodebb-widget-essentials to v4.0.13 (#7293) (22cbcc3e) + * update dependency mongodb to v3.1.13 (1aadbc3c) + * update dependency postcss to v7.0.14 (4d64de76) + * #7271, updating autoprefixer to latest version (a7af0198) + * #7270 (b48f1b4d) + * update dependency sharp to v0.21.3 (#7267) (8a64667f) + * theme upgrades for #7266 (5607261c) + * update dependency mongodb to v3.1.12 (eeab7d20) + * update dependency mongodb to v3.1.11 (#7252) (b5f188b6) + * update dependency validator to v10.11.0 (77dc8fc7) + * update dependency nodebb-plugin-composer-default to v6.1.21 (2fbb2614) + * update dependency postcss to v7.0.12 (f1842295) + * update dependency postcss to v7.0.11 (57bec2fb) + * update dependency sharp to v0.21.2 (8f3c4b09) + * update dependency postcss to v7.0.10 (82475fe5) + * update dependency postcss to v7.0.9 (f171c169) + * update dependency nodebb-theme-vanilla to v10.1.15 (ea059e89) + * update dependency nodebb-theme-persona to v9.1.10 (96482569) + * update dependency nodebb-theme-persona to v9.1.9 (bbe05043) + * update dependency nodebb-theme-vanilla to v10.1.14 (6cc5dbc8) + * update dependency nodebb-theme-persona to v9.1.8 (e5443690) + * update dependency pg-cursor to v2 (29acad42) + * update dependency diff to v4 (#7198) (84e228bb) + * update dependency nodebb-plugin-mentions to v2.5.2 (#7199) (0a647316) + * update dependency nodebb-plugin-markdown to v8.8.7 (90b4d40e) + * update dependency rimraf to v2.6.3 (f4cc3122) + * update dependency spider-detector to v1.0.19 (#7177) (0faba325) + * update dependency nodemailer to v5 (4993b03c) + * update dependency json-2-csv to v3 (80cee665) + * update dependency nodebb-plugin-composer-default to v6.1.20 (07bf0b98) + * update dependency nodebb-theme-persona to v9.1.7 (#7161) (c68d4ae8) + * update dependency nodebb-plugin-composer-default to v6.1.19 (#7159) (07af46ea) + * update dependency nodebb-plugin-composer-default to v6.1.18 (#7158) (584b45fc) + * update dependency validator to v10.10.0 (#7152) (8003bed8) + * update dependency nodebb-plugin-mentions to v2.5.0 (792dce14) + * update dependency nodebb-theme-persona to v9.1.6 (#7141) (325b0293) + * update dependency nodebb-plugin-dbsearch to v3.0.4 (ddd07c1a) + * update dependency nodebb-widget-essentials to v4.0.12 (#7133) (f614a44d) + * update dependency nodebb-plugin-mentions to v2.4.0 (9ab31d7e) + * update dependency postcss to v7.0.7 (7ef8c3fd) + * update dependency sharp to v0.21.1 (#7082) (bf75f3e3) + * update dependency nodebb-theme-vanilla to v10.1.13 (#7114) (fc5598b9) + * update dependency nodebb-theme-slick to v1.2.19 (#7113) (56ad43aa) + * update dependency nodebb-theme-persona to v9.1.5 (#7112) (953f8fe5) + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Other Changes + +* //github.com/NodeBB/nodebb-theme-persona/issues/363 (702be3f6) +* //github.com/NodeBB/NodeBB/issues/6433 (7e00d6b9) +* #6408 (f0f30041) +* #6425 (fbf52407) +* //github.com/NodeBB/NodeBB/issues/6073 (5da24b41) +* #5862, setting chat list height even if no message list is present (bc9a1250) +* //github.com/Schamper/nodebb-plugin-poll/issues/86 (c0f39032) + +##### Refactors + +* use loash when possible (#7230) (e1ca2d81) + +##### Code Style Changes + +* lint fix (fbe6ccd7) +* **eslint:** + * match operator-linebreak preferences (ba619c7e) + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + +#### 1.11.1 (2018-12-14) + +##### Chores + +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + +##### New Features + +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) + +##### Code Style Changes + +* **eslint:** match operator-linebreak preferences (ba619c7e) + +### 1.11.0 (2018-11-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### New Features + +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Code Style Changes + +* **eslint:** + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + diff --git a/.stryker-tmp/sandbox4272740/Dockerfile b/.stryker-tmp/sandbox4272740/Dockerfile new file mode 100644 index 0000000000..f3b76ab35b --- /dev/null +++ b/.stryker-tmp/sandbox4272740/Dockerfile @@ -0,0 +1,75 @@ +FROM node:lts as build + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +COPY . /usr/src/app/ + +# Install corepack to allow usage of other package managers +RUN corepack enable + +# Removing unnecessary files for us +RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \; + +# Prepage package.json +RUN cp /usr/src/app/install/package.json /usr/src/app/ + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive \ + apt-get -y --no-install-recommends install \ + tini + +RUN groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +USER ${USER} + +RUN npm install --omit=dev + # TODO: generate lockfiles for each package manager + ## pnpm import \ + +FROM node:lts-slim AS final + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && mkdir -p /usr/src/app/logs/ /opt/config/ \ + && chown -R ${USER}:${USER} /usr/src/app/ /opt/config/ + +COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ +COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ + +RUN chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/tini + +# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. +# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate + +USER ${USER} + +EXPOSE 4567 + +VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] + +# Utilising tini as our init system within the Docker container for graceful start-up and termination. +# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals. +# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments. +# By integrating tini, we enhance the reliability and stability of our Docker containers. +# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing. +ENTRYPOINT ["tini", "--", "entrypoint.sh"] \ No newline at end of file diff --git a/.stryker-tmp/sandbox4272740/Gruntfile.js b/.stryker-tmp/sandbox4272740/Gruntfile.js new file mode 100644 index 0000000000..855c1bfa99 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/Gruntfile.js @@ -0,0 +1,202 @@ +// @ts-nocheck +'use strict'; + +const path = require('path'); +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); +const winston = require('winston'); +const { fork } = require('child_process'); + +const { env } = process; +let worker; + +env.NODE_ENV = env.NODE_ENV || 'development'; + +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); + +const db = require('./src/database'); +const plugins = require('./src/plugins'); + +module.exports = function (grunt) { + const args = []; + + if (!grunt.option('verbose')) { + args.push('--log-level=info'); + nconf.set('log-level', 'info'); + } + prestart.setupWinston(); + + grunt.initConfig({ + watch: {}, + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + + grunt.registerTask('default', ['watch']); + + grunt.registerTask('init', async function () { + const done = this.async(); + let pluginList = []; + if (!process.argv.includes('--core')) { + await db.init(); + pluginList = await plugins.getActive(); + addBaseThemes(pluginList); + if (!pluginList.includes('nodebb-plugin-composer-default')) { + pluginList.push('nodebb-plugin-composer-default'); + } + if (!pluginList.includes('nodebb-theme-harmony')) { + pluginList.push('nodebb-theme-harmony'); + } + } + + const styleUpdated_Client = pluginList.map(p => `node_modules/${p}/*.scss`) + .concat(pluginList.map(p => `node_modules/${p}/*.css`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static|scss)/**/*.scss`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); + + const clientUpdated = pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.js`); + const serverUpdated = pluginList.map(p => `node_modules/${p}/*.js`) + .concat(pluginList.map(p => `node_modules/${p}/+(lib|src)/**/*.js`)); + + const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`); + const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`); + const interval = 100; + grunt.config(['watch'], { + styleUpdated: { + files: [ + 'public/scss/**/*.scss', + ...styleUpdated_Client, + ], + options: { + interval: interval, + }, + }, + clientUpdated: { + files: [ + 'public/src/**/*.js', + 'public/vendor/**/*.js', + ...clientUpdated, + 'node_modules/benchpressjs/build/benchpress.js', + ], + options: { + interval: interval, + }, + }, + serverUpdated: { + files: [ + 'app.js', + 'install/*.js', + 'src/**/*.js', + 'public/src/modules/translator.common.js', + 'public/src/modules/helpers.common.js', + 'public/src/utils.common.js', + serverUpdated, + '!src/upgrades/**', + ], + options: { + interval: interval, + }, + }, + templatesUpdated: { + files: [ + 'src/views/**/*.tpl', + ...templatesUpdated, + ], + options: { + interval: interval, + }, + }, + langUpdated: { + files: [ + 'public/language/en-GB/*.json', + 'public/language/en-GB/**/*.json', + ...langUpdated, + ], + options: { + interval: interval, + }, + }, + }); + const build = require('./src/meta/build'); + if (!grunt.option('skip')) { + await build.build(true, { watch: true }); + } + run(); + done(); + }); + + function run() { + if (worker) { + worker.kill(); + } + + const execArgv = []; + const inspect = process.argv.find(a => a.startsWith('--inspect')); + + if (inspect) { + execArgv.push(inspect); + } + + worker = fork('app.js', args, { + env, + execArgv, + }); + } + + grunt.task.run('init'); + + grunt.event.removeAllListeners('watch'); + grunt.event.on('watch', (action, filepath, target) => { + let compiling; + if (target === 'styleUpdated') { + compiling = ['clientCSS', 'acpCSS']; + } else if (target === 'clientUpdated') { + compiling = ['js']; + } else if (target === 'templatesUpdated') { + compiling = ['tpl']; + } else if (target === 'langUpdated') { + compiling = ['lang']; + } else if (target === 'serverUpdated') { + // empty require cache + const paths = ['./src/meta/build.js', './src/meta/index.js']; + paths.forEach(p => delete require.cache[require.resolve(p)]); + return run(); + } + + require('./src/meta/build').build(compiling, { webpack: false }, (err) => { + if (err) { + winston.error(err.stack); + } + if (worker) { + worker.send({ compiling: compiling }); + } + }); + }); +}; + +function addBaseThemes(pluginList) { + let themeId = pluginList.find(p => p.includes('nodebb-theme-')); + if (!themeId) { + return pluginList; + } + let baseTheme; + do { + try { + baseTheme = require(`${themeId}/theme`).baseTheme; + } catch (err) { + console.log(err); + } + + if (baseTheme) { + pluginList.push(baseTheme); + themeId = baseTheme; + } + } while (baseTheme); + return pluginList; +} diff --git a/.stryker-tmp/sandbox4272740/LICENSE b/.stryker-tmp/sandbox4272740/LICENSE new file mode 100644 index 0000000000..94a9ed024d --- /dev/null +++ b/.stryker-tmp/sandbox4272740/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/.stryker-tmp/sandbox4272740/README.md b/.stryker-tmp/sandbox4272740/README.md new file mode 100644 index 0000000000..2fd96967ba --- /dev/null +++ b/.stryker-tmp/sandbox4272740/README.md @@ -0,0 +1,86 @@ +Team Members: Andrew Cheng, Emily Yu, Tin Chi Lo, Joyce Lam, Jorge Gracia + +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/ithVU1OO) +# ![NodeBB](public/images/sm-card.png) + +[![Workflow](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml/badge.svg)](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml) +[![Coverage Status](https://coveralls.io/repos/github/CMU-313/NodeBB/badge.svg)](https://coveralls.io/github/CMU-313/NodeBB) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=CMU-313_NodeBB&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=CMU-313_NodeBB) + +[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging. + +NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins. + +### [Try it now](//try.nodebb.org) | [Documentation](//docs.nodebb.org) + +## Screenshots + +NodeBB's theming engine is highly flexible and does not restrict your design choices. Check out some themed installs in these screenshots below: + +[![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png) +[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png) +[![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png) +[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png) +[![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png) +[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png) +[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png) +[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg) + +Our minimalist "Harmony" theme gets you going right away, no coding experience required. + +![Rendering of a NodeBB install on desktop and mobile devices](https://user-images.githubusercontent.com/923011/228570420-2a4db745-b20d-474a-a571-1b59259508ef.png) + +## How can I follow along/contribute? + +* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase. +* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via SCSS or CSS. NodeBB's base theme utilizes [Bootstrap 5](http://getbootstrap.com/) as a frontend toolkit. +* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://explore.transifex.com/nodebb/nodebb/) for internationalization. +* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development. + +## Requirements + +NodeBB requires the following software to be installed: + +* A version of Node.js at least 16 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions)) +* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater +* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured. +* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) + +## Installation + +[Please refer to platform-specific installation documentation](https://docs.nodebb.org/installing/os). +If installing via the cloud (or using Docker), [please see cloud-based installation documentation](https://docs.nodebb.org/installing/cloud/). + +## Securing NodeBB + +It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind: + +1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions: + * Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only + * Use `requirepass` to secure Redis behind a password (preferably a long one) + * Familiarise yourself with [Redis Security](http://redis.io/topics/security) +2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`. + * e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access) + + +## Upgrading NodeBB + +Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/configuring/upgrade/) + +## License + +NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html). + +Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org. + +## More Information/Links + +* [Demo](https://try.nodebb.org) +* [Developer Community](http://community.nodebb.org) +* [Documentation & Installation Instructions](https://docs.nodebb.org) +* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/) +* [NodeBB Blog](https://nodebb.org/blog) +* [Premium Hosting for NodeBB](https://www.nodebb.org/ "NodeBB") +* Unofficial IRC community – channel `#nodebb` on Libera.chat +* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter") +* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") diff --git a/.stryker-tmp/sandbox4272740/UserGuide.md b/.stryker-tmp/sandbox4272740/UserGuide.md new file mode 100644 index 0000000000..3240426214 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/UserGuide.md @@ -0,0 +1,12 @@ +User Story #11: +As a user, I would like to be able to visualize instructor posts differently so that I can make sure that I don't miss any important announcements from the instructor. + +To test the flagging instructor posts feature, run nodebb with the frontend changes, any signed in account should work. When opening a post or a list of posts, you should be able to see "! instructor" next to all instructor posts. Unfortunately, this feature did not work as we expected, and we could not run our backend functions that check if a post was created by an instructor in the frontend. Meaning, all posts and post lists show the flag regardless of whether or not they were created by an instructor. + +We also created tests for the isInstructor function (which checks if a user is an instructor) in tests/user.js. + +User Story #14: +As a user, I would like to be able to pin posts so that I can focus on certain posts that I am interested in. + +This feature is not fully developed. We are struggling to join the front_end feature with the backend methods and implementation for toggling the pinned field within the post object. Our front end feature is fully developed and visible through + diff --git a/.stryker-tmp/sandbox4272740/app.js b/.stryker-tmp/sandbox4272740/app.js new file mode 100644 index 0000000000..2826e2f2d7 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/app.js @@ -0,0 +1,84 @@ +/* + NodeBB - A better forum platform for the modern web + https://github.com/NodeBB/NodeBB/ + Copyright (C) 2013-2021 NodeBB Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +// @ts-nocheck + + +'use strict'; + +require('./require-main'); + +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); + +const winston = require('winston'); +const path = require('path'); + +const file = require('./src/file'); + +process.env.NODE_ENV = process.env.NODE_ENV || 'production'; +global.env = process.env.NODE_ENV || 'production'; + +// Alternate configuration file support +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); + +const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database')); + +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); +prestart.setupWinston(); +prestart.versionCheck(); +winston.verbose('* using configuration stored in: %s', configFile); + +if (!process.send) { + // If run using `node app`, log GNU copyright info along with server info + winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`); + winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); + winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); + winston.info(''); +} + +if (nconf.get('setup') || nconf.get('install')) { + require('./src/cli/setup').setup(); +} else if (!configExists) { + require('./install/web').install(nconf.get('port')); +} else if (nconf.get('upgrade')) { + require('./src/cli/upgrade').upgrade(true); +} else if (nconf.get('reset')) { + require('./src/cli/reset').reset({ + theme: nconf.get('t'), + plugin: nconf.get('p'), + widgets: nconf.get('w'), + settings: nconf.get('s'), + all: nconf.get('a'), + }); +} else if (nconf.get('activate')) { + require('./src/cli/manage').activate(nconf.get('activate')); +} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') { + require('./src/cli/manage').listPlugins(); +} else if (nconf.get('build')) { + require('./src/cli/manage').build(nconf.get('build')); +} else if (nconf.get('events')) { + require('./src/cli/manage').listEvents(); +} else { + require('./src/start').start(); +} diff --git a/.stryker-tmp/sandbox4272740/build/.gitignore b/.stryker-tmp/sandbox4272740/build/.gitignore new file mode 100644 index 0000000000..9addbff7eb --- /dev/null +++ b/.stryker-tmp/sandbox4272740/build/.gitignore @@ -0,0 +1,4 @@ +* +*/ +!export +!.gitignore diff --git a/.stryker-tmp/sandbox4272740/build/export/.gitignore b/.stryker-tmp/sandbox4272740/build/export/.gitignore new file mode 100644 index 0000000000..f8d55e0e3f --- /dev/null +++ b/.stryker-tmp/sandbox4272740/build/export/.gitignore @@ -0,0 +1,3 @@ +. +!.gitignore +!README \ No newline at end of file diff --git a/.stryker-tmp/sandbox4272740/build/export/README b/.stryker-tmp/sandbox4272740/build/export/README new file mode 100644 index 0000000000..a9015033f4 --- /dev/null +++ b/.stryker-tmp/sandbox4272740/build/export/README @@ -0,0 +1,5 @@ +This directory contains archives of user uploads that are prepared on-demand +when a user wants to retrieve a copy of their uploaded content. + +You can delete the files in here at will. They will just be regenerated if +requested again. \ No newline at end of file diff --git a/.stryker-tmp/sandbox6184526/.codeclimate.yml b/.stryker-tmp/sandbox6184526/.codeclimate.yml new file mode 100644 index 0000000000..d40cc58e75 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.codeclimate.yml @@ -0,0 +1,30 @@ +# Save as .codeclimate.yml (note leading .) in project root directory +version: "2" +languages: + Ruby: false + JavaScript: true + PHP: false +checks: + file-lines: + config: + threshold: 500 + method-lines: + config: + threshold: 75 + method-complexity: + config: + threshold: 10 + similar-code: + config: + threshold: 65 +plugins: + duplication: + enabled: true + config: + languages: + javascript: + mass_threshold: 110 + count_threshold: 3 +exclude_paths: +- "public/vendor/*" +- "test/*" \ No newline at end of file diff --git a/.stryker-tmp/sandbox6184526/.docker/.gitkeep b/.stryker-tmp/sandbox6184526/.docker/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.stryker-tmp/sandbox6184526/.dockerignore b/.stryker-tmp/sandbox6184526/.dockerignore new file mode 100644 index 0000000000..46ab37b3ab --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.dockerignore @@ -0,0 +1,10 @@ +.* +logs +test +node_modules +commitlint.config.js +nodebb.bat +renovate.json +*.yml +*.md +Dockerfile diff --git a/.stryker-tmp/sandbox6184526/.editorconfig b/.stryker-tmp/sandbox6184526/.editorconfig new file mode 100644 index 0000000000..71cf54ef4d --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[{*.js, *.css, *.tpl, *.json}] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false diff --git a/.stryker-tmp/sandbox6184526/.eslintignore b/.stryker-tmp/sandbox6184526/.eslintignore new file mode 100644 index 0000000000..b304ee19d8 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.eslintignore @@ -0,0 +1,21 @@ +node_modules/ +*.sublime-project +*.sublime-workspace +.project +.vagrant +.DS_Store +logs/ +/public/templates +/public/uploads +/public/vendor +/public/src/modules/string.js +.idea/ +.vscode/ +*.ipr +*.iws +/coverage +/build +.eslintrc +test/files +*.min.js +install/docker/ \ No newline at end of file diff --git a/.stryker-tmp/sandbox6184526/.eslintrc b/.stryker-tmp/sandbox6184526/.eslintrc new file mode 100644 index 0000000000..abd292af1b --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "nodebb" +} diff --git a/.stryker-tmp/sandbox6184526/.gitattributes b/.stryker-tmp/sandbox6184526/.gitattributes new file mode 100644 index 0000000000..e0fa7609a5 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.gitattributes @@ -0,0 +1,13 @@ +# These files are text and should be normalized (convert crlf => lf) +*.json text +*.css text +*.less text +*.tpl text +*.html text +*.js text +*.md text + +# Images should be treated as binary +# (binary is a macro for -text -diff) +*.png binary +*.jpg binary \ No newline at end of file diff --git a/.stryker-tmp/sandbox6184526/.github/CONTRIBUTING.md b/.stryker-tmp/sandbox6184526/.github/CONTRIBUTING.md new file mode 100644 index 0000000000..11911cd409 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/CONTRIBUTING.md @@ -0,0 +1,69 @@ +# Submitting a Pull Request to NodeBB? + +First of all, thank you! Before submission, please run `npm test` to lint and run the automated NodeBB tests. If everything passes, you're good to go. If you have any errors, please fix them and re-run `npm test` to make sure there aren't any others. + +## Styleguide and linting + +NodeBB mostly conforms to the [AirBnB Javascript style guide](https://github.com/airbnb/javascript#readme). If you're running into a lot of ESlint errors, you may want to install an editor plugin to display them in real time. + +## Contributor License Agreement + +Thank you for considering contributing to NodeBB. **Before you are able to submit a pull request, please take a moment to read our [contributor license agreement](https://gist.github.com/psychobunny/65946d7aa8854b12fab9)** and agree to it on the pull request page on GitHub. In summary, signing this document means that 1) you own the code that you are contributing and 2) you give permission to NodeBB Inc. to license the code to others. This agreement applies to any repository under the NodeBB organization. + +If you are writing contributions as part of employment from another company / individual, then your employer will need to sign a separate agreement. Please [contact us](mailto:accounts@nodebb.org) so that we can send this additional agreement to your employer. + + +# Having problems installing NodeBB? + +Chances are somebody has run into this problem before. After consulting our [documentation](https://docs.nodebb.org/installing/os/), please head over to our [community support forum](https://community.nodebb.org) for advice. + +# Found a Security Vulnerability? + +If you believe you have identified a security vulnerability with NodeBB, report it as soon as possible via email to **security@nodebb.org**. +A member of the NodeBB security team will respond to the issue. +Please do not post it to the public bug tracker. + +# Issues & Bugs + +Thanks for reporting an issue with NodeBB! Please follow these guidelines in order to streamline the debugging process. The more guidelines you follow, the easier it will be for us to reproduce your problem. + +In general, if we can't reproduce it, we can't fix it! + +## Try the latest version of NodeBB + +There is a chance that the issue you are experiencing may have already been fixed. + +## Provide the NodeBB version number and git hash + +You can find the NodeBB version number in the Admin Control Panel (ACP), as well as the first line output to the shell when running NodeBB + +``` plaintext +3/4 12:38:57 [10752] - info: NodeBB v1.4.5 Copyright (C) 2013-2017 NodeBB Inc. +3/4 12:38:57 [10752] - info: This program comes with ABSOLUTELY NO WARRANTY. +3/4 12:38:57 [10752] - info: This is free software, and you are welcome to redistribute it under certain conditions. +``` + +If you are running NodeBB via git, it is also helpful to let the maintainers know what commit hash you are on. To find the commit hash, execute the following command: + +``` bash +$ cd /path/to/my/nodebb +$ git rev-parse HEAD +``` + +If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know. + +## Provide theme versions if issue is related to the theme/display +Use `npm ls` to list the versions of the theme you're using. In this example, we're running the Persona theme, which depends on the Vanilla theme. + +``` bash +$ npm ls nodebb-theme-vanilla nodebb-theme-persona +nodebb@1.4.3 /path/to/nodebb ++-- nodebb-theme-persona@4.2.4 +`-- nodebb-theme-vanilla@5.2.0 +``` + +## Attempt to use `git bisect` + +If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`. + +A full guide can be found here: [Debugging with Git/Binary Search](http://git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search) diff --git a/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/bug-report.yml b/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000000..f8faf31515 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,81 @@ +name: Bug Report +description: File a bug report +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: input + attributes: + label: NodeBB version + placeholder: e.g. v2.2.0 + - type: input + attributes: + label: NodeBB git hash + description: to find your git hash, execute `git rev-parse HEAD` from the main NodeBB directory + placeholder: e.g. 783250ee6f8c51cdc243ce3b8d9f1a080517247e + - type: input + attributes: + label: NodeJS version + placeholder: e.g. v16.15.1 + - type: textarea + attributes: + label: Installed NodeBB plugins + description: to find installed plugins run `./nodebb plugins` + placeholder: | + e.g. + * nodebb-plugin-2factor@5.0.1 (installed, disabled) + * nodebb-plugin-composer-default@8.0.0 (installed, enabled) + * nodebb-plugin-dbsearch@5.1.5 (installed, disabled) + * nodebb-plugin-emoji@4.0.4 (installed, enabled) + * nodebb-plugin-emoji-android@3.0.0 (installed, enabled) + * nodebb-plugin-markdown@10.0.0 (installed, enabled) + * nodebb-plugin-mentions@3.0.11 (installed, enabled) + * nodebb-plugin-spam-be-gone@1.0.0 (installed, disabled) + * nodebb-rewards-essentials@0.2.1 (installed, enabled) + * nodebb-theme-lavender@6.0.0 (installed, disabled) + * nodebb-theme-persona@12.0.11 (installed, enabled) + * nodebb-theme-slick@2.0.2 (installed, disabled) + * nodebb-theme-vanilla@12.1.18 (installed, disabled) + * nodebb-widget-essentials@6.0.0 (installed, enabled) + - type: dropdown + attributes: + label: Database type + multiple: true + options: + - MongoDB + - Redis + - PostgreSQL + - type: input + attributes: + label: Database version + description: "`mongod --version`, `redis-server --version`, or `postgres --version`" + placeholder: e.g. v5.0.9 + - type: textarea + attributes: + label: Exact steps to cause this issue + placeholder: | + 1. First I did this... + 2. Then, I clicked on this item... + + A quick note: MP4 and MOV formatted video files are now allowed to be uploaded to GH. + Please upload if reproduction steps are hard to describe or reproduce reliably. + - type: textarea + attributes: + label: What you expected + placeholder: e.g. I expected *abc* to *xyz* + - type: textarea + attributes: + label: What happened instead + placeholder: e.g. Instead, I got *zyx* and NodeBB set fire to my house + - type: textarea + attributes: + label: Anything else? + description: Any additional context about the issue you're encountering + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/config.yml b/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..ab47f0760d --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Community Forum + url: https://community.nodebb.org + about: Github Issues are for bug reports and feature requests only, please use community forum for other support diff --git a/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/feature-request.yml b/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000000..382d874014 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,24 @@ +name: Feature Request +description: Suggest a new feature +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Github Issues are for bug reports and feature requests only + Please visit https://community.nodebb.org for other support + Found a security exploit? Please email us at security@nodebb.org instead for immediate attention + ### → DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER ← + - type: textarea + attributes: + label: Description + validations: + required: true + - type: input + attributes: + label: Community forum reference + description: If this feature was already discussed on the Community Forum link it here + placeholder: https://community.nodebb.org/topic/0/example-feature-request + - type: markdown + attributes: + value: "**Thank you!**" diff --git a/.stryker-tmp/sandbox6184526/.github/SECURITY.md b/.stryker-tmp/sandbox6184526/.github/SECURITY.md new file mode 100644 index 0000000000..0dffd0a60f --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/SECURITY.md @@ -0,0 +1,9 @@ +# Reporting a security vulnerability + +NodeBB's security policy is based around a private bug bounty program. Users are invited to explore NodeBB for vulnerabilities, and report them to the NodeBB team so that they can be patched. + +If you have found a security vulnerability, **do not post it onto our GitHub tracker**. Some security vulnerabilities are quite severe and discretion is recommended. Email the NodeBB Security Team at security@nodebb.org, instead, even if you are not sure whether something qualifies. + +# Bug Bounty Program + +Security vulnerability reports may be eligible for a bounty based on severity and confirmation from NodeBB team members. For full details regarding our bug bounty program, including the bounty amounts, please consult the [dedicated page for our Bug Bounty Program](https://nodebb.org/bounty). diff --git a/.stryker-tmp/sandbox6184526/.github/workflows/azure-deploy-f24.yml b/.stryker-tmp/sandbox6184526/.github/workflows/azure-deploy-f24.yml new file mode 100644 index 0000000000..752ac4b7bf --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/workflows/azure-deploy-f24.yml @@ -0,0 +1,54 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +name: Build and deploy Node.js app to Azure Web App - nodebb-f24 + +on: + push: + branches: + - f24 + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + lint-and-test: + uses: + ./.github/workflows/test.yaml + + build-and-deploy: + if: github.repository == 'cmu-313/nodebb-f24-hunan-hunters' + needs: lint-and-test + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js version + uses: actions/setup-node@v3 + with: + node-version: '20.x' + + - name: Set up NodeBB + run: | + ./nodebb setup '{"url":"https://nodebb-hunanhunters.azurewebsites.net:443", + "admin:username": "admin", + "admin:password": "${{ secrets.ADMIN_PASSWORD }}", + "admin:password:confirm": "${{ secrets.ADMIN_PASSWORD }}", + "admin:email": "rohanpadhye@cmu.edu", + "database": "redis", + "redis:host": "${{ secrets.REDIS_HOST }}", + "redis:port": "6379", + "redis:password": "${{ secrets.REDIS_PASSWORD }}" }' + + - name: 'Deploy to Azure Web App' + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'nodebb-hunanhunters' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_8CE2E89DDD294B98BF913663FFF5E9D5 }} + package: . diff --git a/.stryker-tmp/sandbox6184526/.github/workflows/docker.yml b/.stryker-tmp/sandbox6184526/.github/workflows/docker.yml new file mode 100644 index 0000000000..67aee91b9a --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/workflows/docker.yml @@ -0,0 +1,72 @@ +name: Run Docker + +# Controls when the workflow will run +on: + push: + branches: + - 'master' + - 'v*.x' + tags: + - 'v*' + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +permissions: + contents: read + packages: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Get current date in NST + run: echo "CURRENT_DATE_NST=$(date +'%Y%m%d-%H%M%S' -d '-3 hours -30 minutes')" >> $GITHUB_ENV + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}}.x + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch,enable=${{ github.event.repository.default_branch != github.ref }} + type=raw,value=${{ env.CURRENT_DATE_NST }} + flavor: | + latest=true + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: var-cache-node-modules + key: var-cache-node-modules-${{ hashFiles('Dockerfile', 'install/package.json') }} + + - name: Build and push Docker images + uses: docker/build-push-action@v5 + with: + cache-from: type=gha + cache-to: type=gha,mode=min + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + tags: ${{ steps.meta.outputs.tags }} diff --git a/.stryker-tmp/sandbox6184526/.github/workflows/test.yaml b/.stryker-tmp/sandbox6184526/.github/workflows/test.yaml new file mode 100644 index 0000000000..c4e8f090bd --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/workflows/test.yaml @@ -0,0 +1,87 @@ +name: Lint and test + +on: + pull_request: + branches: + - f24 + workflow_call: # Usually called from deploy + +defaults: + run: + shell: bash + +permissions: + checks: write # for coverallsapp/github-action to create new checks + contents: read # for actions/checkout to fetch code + +jobs: + test: + runs-on: ubuntu-latest + env: + TEST_ENV: 'production' + + services: + redis: + image: 'redis:7.2.4' + # Set health checks to wait until redis has started + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps port 6379 on service container to the host + - 6379:6379 + + steps: + - uses: actions/checkout@v4 + + - run: cp install/package.json package.json + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: NPM Install + uses: bahmutov/npm-install@v1 + with: + useLockFile: false + + - name: Setup for Redis + env: + SETUP: >- + { + "url": "http://127.0.0.1:4567/forum", + "secret": "abcdef", + "admin:username": "admin", + "admin:email": "test@example.org", + "admin:password": "hAN3Eg8W", + "admin:password:confirm": "hAN3Eg8W", + + "database": "redis", + "redis:host": "127.0.0.1", + "redis:port": 6379, + "redis:password": "", + "redis:database": 0 + } + CI: >- + { + "host": "127.0.0.1", + "database": 1, + "port": 6379 + } + run: | + node app --setup="${SETUP}" --ci="${CI}" + + - name: Run ESLint + run: npm run lint + + - name: Node tests + run: npm test + + - name: Extract coverage info + run: npm run coverage + + - name: Test coverage + uses: coverallsapp/github-action@v2 diff --git a/.stryker-tmp/sandbox6184526/.github/workflows/volunteers.yaml b/.stryker-tmp/sandbox6184526/.github/workflows/volunteers.yaml new file mode 100644 index 0000000000..3cd849b824 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.github/workflows/volunteers.yaml @@ -0,0 +1,12 @@ +name: "Issue volunteer assignment" + +on: [issue_comment, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: bhermann/issue-volunteer@v0.1.12 + with: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + diff --git a/.stryker-tmp/sandbox6184526/.gitignore b/.stryker-tmp/sandbox6184526/.gitignore new file mode 100644 index 0000000000..8a0aca8cc7 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.gitignore @@ -0,0 +1,77 @@ +dist/ +yarn.lock +npm-debug.log +node_modules/ +sftp-config.json +config.json +jsconfig.json +public/src/nodebb.min.js +!src/views/config.json +public/css/*.css +*.sublime-project +*.sublime-workspace +.project +*.swp +Vagrantfile +.vagrant +provision.sh +*.komodoproject +.DS_Store +feeds/recent.rss +.eslintcache +.svn + +logs/ + +pidfile + +# templates +/public/templates + +/public/uploads +/test/uploads + +# compiled files +/public/stylesheet.css +/public/admin.css +/public/nodebb.min.js +/public/nodebb.min.js.map +/public/acp.min.js +/public/acp.min.js.map +/public/installer.css +/public/installer.min.js +/public/bootstrap.min.css +/public/logo.png + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio +*.iml + +## Directory-based project format: +.idea/ +.vscode/ + +## File-based project format: +*.ipr +*.iws + +## Transifex +tx.exe +.transifexrc + +##Coverage output +coverage +.nyc_output + +*.log +test/files/normalise.jpg.png +test/files/normalise-resized.jpg +package-lock.json +/package.json +*.mongodb +link-plugins.sh +test.sh + +.docker/** +!**/.gitkeep +# stryker temp files +.stryker-tmp diff --git a/.stryker-tmp/sandbox6184526/.husky/.gitignore b/.stryker-tmp/sandbox6184526/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.stryker-tmp/sandbox6184526/.husky/commit-msg b/.stryker-tmp/sandbox6184526/.husky/commit-msg new file mode 100755 index 0000000000..e8511eaeaf --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit $1 diff --git a/.stryker-tmp/sandbox6184526/.husky/pre-commit b/.stryker-tmp/sandbox6184526/.husky/pre-commit new file mode 100755 index 0000000000..d37daa075e --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/.stryker-tmp/sandbox6184526/.mocharc.yml b/.stryker-tmp/sandbox6184526/.mocharc.yml new file mode 100644 index 0000000000..16d8518d1b --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.mocharc.yml @@ -0,0 +1,4 @@ +reporter: dot +timeout: 25000 +exit: true +bail: true diff --git a/.stryker-tmp/sandbox6184526/.tx/config b/.stryker-tmp/sandbox6184526/.tx/config new file mode 100644 index 0000000000..35758d9b05 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/.tx/config @@ -0,0 +1,4007 @@ +[main] +host = https://www.transifex.com + +[o:nodebb:p:nodebb:r:admin-admin] +file_filter = public/language//admin/admin.json +source_file = public/language/en-GB/admin/admin.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/admin/admin.json +trans.en@pirate = public/language/en-x-pirate/admin/admin.json +trans.hy = public/language/hy/admin/admin.json +trans.pl = public/language/pl/admin/admin.json +trans.th = public/language/th/admin/admin.json +trans.de = public/language/de/admin/admin.json +trans.el = public/language/el/admin/admin.json +trans.ar = public/language/ar/admin/admin.json +trans.bg = public/language/bg/admin/admin.json +trans.bn = public/language/bn/admin/admin.json +trans.it = public/language/it/admin/admin.json +trans.lv = public/language/lv/admin/admin.json +trans.nl = public/language/nl/admin/admin.json +trans.ru = public/language/ru/admin/admin.json +trans.sr = public/language/sr/admin/admin.json +trans.sv = public/language/sv/admin/admin.json +trans.uk = public/language/uk/admin/admin.json +trans.zh_CN = public/language/zh-CN/admin/admin.json +trans.fa_IR = public/language/fa-IR/admin/admin.json +trans.id = public/language/id/admin/admin.json +trans.ms = public/language/ms/admin/admin.json +trans.nb = public/language/nb/admin/admin.json +trans.sk = public/language/sk/admin/admin.json +trans.cs = public/language/cs/admin/admin.json +trans.fi = public/language/fi/admin/admin.json +trans.fr = public/language/fr/admin/admin.json +trans.rw = public/language/rw/admin/admin.json +trans.sq_AL = public/language/sq-AL/admin/admin.json +trans.en_US = public/language/en-US/admin/admin.json +trans.es = public/language/es/admin/admin.json +trans.et = public/language/et/admin/admin.json +trans.gl = public/language/gl/admin/admin.json +trans.he = public/language/he/admin/admin.json +trans.ja = public/language/ja/admin/admin.json +trans.lt = public/language/lt/admin/admin.json +trans.pt_PT = public/language/pt-PT/admin/admin.json +trans.sc = public/language/sc/admin/admin.json +trans.sl = public/language/sl/admin/admin.json +trans.vi = public/language/vi/admin/admin.json +trans.da = public/language/da/admin/admin.json +trans.hr = public/language/hr/admin/admin.json +trans.hu = public/language/hu/admin/admin.json +trans.ko = public/language/ko/admin/admin.json +trans.ro = public/language/ro/admin/admin.json +trans.tr = public/language/tr/admin/admin.json +trans.zh_TW = public/language/zh-TW/admin/admin.json + +[o:nodebb:p:nodebb:r:admin-advanced-cache] +file_filter = public/language//admin/advanced/cache.json +source_file = public/language/en-GB/admin/advanced/cache.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fa_IR = public/language/fa-IR/admin/advanced/cache.json +trans.he = public/language/he/admin/advanced/cache.json +trans.ko = public/language/ko/admin/advanced/cache.json +trans.pt_PT = public/language/pt-PT/admin/advanced/cache.json +trans.rw = public/language/rw/admin/advanced/cache.json +trans.tr = public/language/tr/admin/advanced/cache.json +trans.en_US = public/language/en-US/admin/advanced/cache.json +trans.hu = public/language/hu/admin/advanced/cache.json +trans.id = public/language/id/admin/advanced/cache.json +trans.ms = public/language/ms/admin/advanced/cache.json +trans.sc = public/language/sc/admin/advanced/cache.json +trans.sv = public/language/sv/admin/advanced/cache.json +trans.es = public/language/es/admin/advanced/cache.json +trans.gl = public/language/gl/admin/advanced/cache.json +trans.lv = public/language/lv/admin/advanced/cache.json +trans.nl = public/language/nl/admin/advanced/cache.json +trans.ru = public/language/ru/admin/advanced/cache.json +trans.zh_TW = public/language/zh-TW/admin/advanced/cache.json +trans.bn = public/language/bn/admin/advanced/cache.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/cache.json +trans.fr = public/language/fr/admin/advanced/cache.json +trans.hr = public/language/hr/admin/advanced/cache.json +trans.pt_BR = public/language/pt-BR/admin/advanced/cache.json +trans.ar = public/language/ar/admin/advanced/cache.json +trans.bg = public/language/bg/admin/advanced/cache.json +trans.cs = public/language/cs/admin/advanced/cache.json +trans.lt = public/language/lt/admin/advanced/cache.json +trans.nb = public/language/nb/admin/advanced/cache.json +trans.uk = public/language/uk/admin/advanced/cache.json +trans.el = public/language/el/admin/advanced/cache.json +trans.pl = public/language/pl/admin/advanced/cache.json +trans.sr = public/language/sr/admin/advanced/cache.json +trans.da = public/language/da/admin/advanced/cache.json +trans.et = public/language/et/admin/advanced/cache.json +trans.fi = public/language/fi/admin/advanced/cache.json +trans.hy = public/language/hy/admin/advanced/cache.json +trans.ja = public/language/ja/admin/advanced/cache.json +trans.sl = public/language/sl/admin/advanced/cache.json +trans.sq_AL = public/language/sq-AL/admin/advanced/cache.json +trans.th = public/language/th/admin/advanced/cache.json +trans.de = public/language/de/admin/advanced/cache.json +trans.it = public/language/it/admin/advanced/cache.json +trans.ro = public/language/ro/admin/advanced/cache.json +trans.sk = public/language/sk/admin/advanced/cache.json +trans.vi = public/language/vi/admin/advanced/cache.json +trans.zh_CN = public/language/zh-CN/admin/advanced/cache.json + +[o:nodebb:p:nodebb:r:admin-advanced-database] +file_filter = public/language//admin/advanced/database.json +source_file = public/language/en-GB/admin/advanced/database.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fr = public/language/fr/admin/advanced/database.json +trans.he = public/language/he/admin/advanced/database.json +trans.ja = public/language/ja/admin/advanced/database.json +trans.lv = public/language/lv/admin/advanced/database.json +trans.pt_PT = public/language/pt-PT/admin/advanced/database.json +trans.en_US = public/language/en-US/admin/advanced/database.json +trans.el = public/language/el/admin/advanced/database.json +trans.tr = public/language/tr/admin/advanced/database.json +trans.zh_CN = public/language/zh-CN/admin/advanced/database.json +trans.ar = public/language/ar/admin/advanced/database.json +trans.hr = public/language/hr/admin/advanced/database.json +trans.lt = public/language/lt/admin/advanced/database.json +trans.ro = public/language/ro/admin/advanced/database.json +trans.zh_TW = public/language/zh-TW/admin/advanced/database.json +trans.gl = public/language/gl/admin/advanced/database.json +trans.it = public/language/it/admin/advanced/database.json +trans.nb = public/language/nb/admin/advanced/database.json +trans.bn = public/language/bn/admin/advanced/database.json +trans.da = public/language/da/admin/advanced/database.json +trans.de = public/language/de/admin/advanced/database.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/database.json +trans.hu = public/language/hu/admin/advanced/database.json +trans.hy = public/language/hy/admin/advanced/database.json +trans.id = public/language/id/admin/advanced/database.json +trans.nl = public/language/nl/admin/advanced/database.json +trans.cs = public/language/cs/admin/advanced/database.json +trans.sv = public/language/sv/admin/advanced/database.json +trans.sr = public/language/sr/admin/advanced/database.json +trans.pl = public/language/pl/admin/advanced/database.json +trans.ru = public/language/ru/admin/advanced/database.json +trans.sc = public/language/sc/admin/advanced/database.json +trans.sl = public/language/sl/admin/advanced/database.json +trans.sq_AL = public/language/sq-AL/admin/advanced/database.json +trans.th = public/language/th/admin/advanced/database.json +trans.et = public/language/et/admin/advanced/database.json +trans.fa_IR = public/language/fa-IR/admin/advanced/database.json +trans.ko = public/language/ko/admin/advanced/database.json +trans.sk = public/language/sk/admin/advanced/database.json +trans.vi = public/language/vi/admin/advanced/database.json +trans.es = public/language/es/admin/advanced/database.json +trans.fi = public/language/fi/admin/advanced/database.json +trans.ms = public/language/ms/admin/advanced/database.json +trans.pt_BR = public/language/pt-BR/admin/advanced/database.json +trans.rw = public/language/rw/admin/advanced/database.json +trans.uk = public/language/uk/admin/advanced/database.json +trans.bg = public/language/bg/admin/advanced/database.json + +[o:nodebb:p:nodebb:r:admin-advanced-errors] +file_filter = public/language//admin/advanced/errors.json +source_file = public/language/en-GB/admin/advanced/errors.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/advanced/errors.json +trans.en_US = public/language/en-US/admin/advanced/errors.json +trans.es = public/language/es/admin/advanced/errors.json +trans.pl = public/language/pl/admin/advanced/errors.json +trans.sk = public/language/sk/admin/advanced/errors.json +trans.uk = public/language/uk/admin/advanced/errors.json +trans.da = public/language/da/admin/advanced/errors.json +trans.gl = public/language/gl/admin/advanced/errors.json +trans.hu = public/language/hu/admin/advanced/errors.json +trans.pt_PT = public/language/pt-PT/admin/advanced/errors.json +trans.vi = public/language/vi/admin/advanced/errors.json +trans.de = public/language/de/admin/advanced/errors.json +trans.ko = public/language/ko/admin/advanced/errors.json +trans.nb = public/language/nb/admin/advanced/errors.json +trans.sc = public/language/sc/admin/advanced/errors.json +trans.sl = public/language/sl/admin/advanced/errors.json +trans.tr = public/language/tr/admin/advanced/errors.json +trans.zh_CN = public/language/zh-CN/admin/advanced/errors.json +trans.fr = public/language/fr/admin/advanced/errors.json +trans.hy = public/language/hy/admin/advanced/errors.json +trans.pt_BR = public/language/pt-BR/admin/advanced/errors.json +trans.ro = public/language/ro/admin/advanced/errors.json +trans.sr = public/language/sr/admin/advanced/errors.json +trans.sv = public/language/sv/admin/advanced/errors.json +trans.fa_IR = public/language/fa-IR/admin/advanced/errors.json +trans.it = public/language/it/admin/advanced/errors.json +trans.lt = public/language/lt/admin/advanced/errors.json +trans.ms = public/language/ms/admin/advanced/errors.json +trans.ru = public/language/ru/admin/advanced/errors.json +trans.sq_AL = public/language/sq-AL/admin/advanced/errors.json +trans.ar = public/language/ar/admin/advanced/errors.json +trans.fi = public/language/fi/admin/advanced/errors.json +trans.he = public/language/he/admin/advanced/errors.json +trans.ja = public/language/ja/admin/advanced/errors.json +trans.th = public/language/th/admin/advanced/errors.json +trans.zh_TW = public/language/zh-TW/admin/advanced/errors.json +trans.bn = public/language/bn/admin/advanced/errors.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/errors.json +trans.hr = public/language/hr/admin/advanced/errors.json +trans.rw = public/language/rw/admin/advanced/errors.json +trans.bg = public/language/bg/admin/advanced/errors.json +trans.el = public/language/el/admin/advanced/errors.json +trans.et = public/language/et/admin/advanced/errors.json +trans.id = public/language/id/admin/advanced/errors.json +trans.lv = public/language/lv/admin/advanced/errors.json +trans.nl = public/language/nl/admin/advanced/errors.json + +[o:nodebb:p:nodebb:r:admin-advanced-events] +file_filter = public/language//admin/advanced/events.json +source_file = public/language/en-GB/admin/advanced/events.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/advanced/events.json +trans.el = public/language/el/admin/advanced/events.json +trans.lt = public/language/lt/admin/advanced/events.json +trans.pt_BR = public/language/pt-BR/admin/advanced/events.json +trans.zh_TW = public/language/zh-TW/admin/advanced/events.json +trans.th = public/language/th/admin/advanced/events.json +trans.gl = public/language/gl/admin/advanced/events.json +trans.ko = public/language/ko/admin/advanced/events.json +trans.nl = public/language/nl/admin/advanced/events.json +trans.ro = public/language/ro/admin/advanced/events.json +trans.sl = public/language/sl/admin/advanced/events.json +trans.ar = public/language/ar/admin/advanced/events.json +trans.hr = public/language/hr/admin/advanced/events.json +trans.vi = public/language/vi/admin/advanced/events.json +trans.fa_IR = public/language/fa-IR/admin/advanced/events.json +trans.ms = public/language/ms/admin/advanced/events.json +trans.tr = public/language/tr/admin/advanced/events.json +trans.nb = public/language/nb/admin/advanced/events.json +trans.pt_PT = public/language/pt-PT/admin/advanced/events.json +trans.sk = public/language/sk/admin/advanced/events.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/events.json +trans.es = public/language/es/admin/advanced/events.json +trans.et = public/language/et/admin/advanced/events.json +trans.he = public/language/he/admin/advanced/events.json +trans.lv = public/language/lv/admin/advanced/events.json +trans.sv = public/language/sv/admin/advanced/events.json +trans.zh_CN = public/language/zh-CN/admin/advanced/events.json +trans.pl = public/language/pl/admin/advanced/events.json +trans.rw = public/language/rw/admin/advanced/events.json +trans.cs = public/language/cs/admin/advanced/events.json +trans.de = public/language/de/admin/advanced/events.json +trans.fr = public/language/fr/admin/advanced/events.json +trans.hy = public/language/hy/admin/advanced/events.json +trans.id = public/language/id/admin/advanced/events.json +trans.ru = public/language/ru/admin/advanced/events.json +trans.sq_AL = public/language/sq-AL/admin/advanced/events.json +trans.uk = public/language/uk/admin/advanced/events.json +trans.da = public/language/da/admin/advanced/events.json +trans.en_US = public/language/en-US/admin/advanced/events.json +trans.hu = public/language/hu/admin/advanced/events.json +trans.it = public/language/it/admin/advanced/events.json +trans.ja = public/language/ja/admin/advanced/events.json +trans.bn = public/language/bn/admin/advanced/events.json +trans.fi = public/language/fi/admin/advanced/events.json +trans.sc = public/language/sc/admin/advanced/events.json +trans.sr = public/language/sr/admin/advanced/events.json + +[o:nodebb:p:nodebb:r:admin-advanced-logs] +file_filter = public/language//admin/advanced/logs.json +source_file = public/language/en-GB/admin/advanced/logs.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/advanced/logs.json +trans.ru = public/language/ru/admin/advanced/logs.json +trans.vi = public/language/vi/admin/advanced/logs.json +trans.id = public/language/id/admin/advanced/logs.json +trans.fi = public/language/fi/admin/advanced/logs.json +trans.he = public/language/he/admin/advanced/logs.json +trans.hr = public/language/hr/admin/advanced/logs.json +trans.ja = public/language/ja/admin/advanced/logs.json +trans.lt = public/language/lt/admin/advanced/logs.json +trans.nb = public/language/nb/admin/advanced/logs.json +trans.rw = public/language/rw/admin/advanced/logs.json +trans.es = public/language/es/admin/advanced/logs.json +trans.sv = public/language/sv/admin/advanced/logs.json +trans.fa_IR = public/language/fa-IR/admin/advanced/logs.json +trans.fr = public/language/fr/admin/advanced/logs.json +trans.gl = public/language/gl/admin/advanced/logs.json +trans.zh_TW = public/language/zh-TW/admin/advanced/logs.json +trans.en@pirate = public/language/en-x-pirate/admin/advanced/logs.json +trans.sc = public/language/sc/admin/advanced/logs.json +trans.sq_AL = public/language/sq-AL/admin/advanced/logs.json +trans.uk = public/language/uk/admin/advanced/logs.json +trans.hu = public/language/hu/admin/advanced/logs.json +trans.bn = public/language/bn/admin/advanced/logs.json +trans.de = public/language/de/admin/advanced/logs.json +trans.it = public/language/it/admin/advanced/logs.json +trans.lv = public/language/lv/admin/advanced/logs.json +trans.ms = public/language/ms/admin/advanced/logs.json +trans.pl = public/language/pl/admin/advanced/logs.json +trans.zh_CN = public/language/zh-CN/admin/advanced/logs.json +trans.ar = public/language/ar/admin/advanced/logs.json +trans.et = public/language/et/admin/advanced/logs.json +trans.hy = public/language/hy/admin/advanced/logs.json +trans.ko = public/language/ko/admin/advanced/logs.json +trans.th = public/language/th/admin/advanced/logs.json +trans.tr = public/language/tr/admin/advanced/logs.json +trans.cs = public/language/cs/admin/advanced/logs.json +trans.ro = public/language/ro/admin/advanced/logs.json +trans.pt_BR = public/language/pt-BR/admin/advanced/logs.json +trans.da = public/language/da/admin/advanced/logs.json +trans.el = public/language/el/admin/advanced/logs.json +trans.en_US = public/language/en-US/admin/advanced/logs.json +trans.pt_PT = public/language/pt-PT/admin/advanced/logs.json +trans.sk = public/language/sk/admin/advanced/logs.json +trans.sl = public/language/sl/admin/advanced/logs.json +trans.sr = public/language/sr/admin/advanced/logs.json +trans.bg = public/language/bg/admin/advanced/logs.json + +[o:nodebb:p:nodebb:r:admin-appearance-customise] +file_filter = public/language//admin/appearance/customise.json +source_file = public/language/en-GB/admin/appearance/customise.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/appearance/customise.json +trans.da = public/language/da/admin/appearance/customise.json +trans.es = public/language/es/admin/appearance/customise.json +trans.hy = public/language/hy/admin/appearance/customise.json +trans.th = public/language/th/admin/appearance/customise.json +trans.ar = public/language/ar/admin/appearance/customise.json +trans.bg = public/language/bg/admin/appearance/customise.json +trans.he = public/language/he/admin/appearance/customise.json +trans.lt = public/language/lt/admin/appearance/customise.json +trans.nb = public/language/nb/admin/appearance/customise.json +trans.pl = public/language/pl/admin/appearance/customise.json +trans.sl = public/language/sl/admin/appearance/customise.json +trans.zh_TW = public/language/zh-TW/admin/appearance/customise.json +trans.bn = public/language/bn/admin/appearance/customise.json +trans.el = public/language/el/admin/appearance/customise.json +trans.hu = public/language/hu/admin/appearance/customise.json +trans.sk = public/language/sk/admin/appearance/customise.json +trans.tr = public/language/tr/admin/appearance/customise.json +trans.et = public/language/et/admin/appearance/customise.json +trans.id = public/language/id/admin/appearance/customise.json +trans.lv = public/language/lv/admin/appearance/customise.json +trans.pt_BR = public/language/pt-BR/admin/appearance/customise.json +trans.sr = public/language/sr/admin/appearance/customise.json +trans.zh_CN = public/language/zh-CN/admin/appearance/customise.json +trans.fr = public/language/fr/admin/appearance/customise.json +trans.hr = public/language/hr/admin/appearance/customise.json +trans.it = public/language/it/admin/appearance/customise.json +trans.nl = public/language/nl/admin/appearance/customise.json +trans.sv = public/language/sv/admin/appearance/customise.json +trans.fi = public/language/fi/admin/appearance/customise.json +trans.gl = public/language/gl/admin/appearance/customise.json +trans.ko = public/language/ko/admin/appearance/customise.json +trans.sc = public/language/sc/admin/appearance/customise.json +trans.de = public/language/de/admin/appearance/customise.json +trans.en_US = public/language/en-US/admin/appearance/customise.json +trans.ja = public/language/ja/admin/appearance/customise.json +trans.ru = public/language/ru/admin/appearance/customise.json +trans.rw = public/language/rw/admin/appearance/customise.json +trans.vi = public/language/vi/admin/appearance/customise.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/customise.json +trans.fa_IR = public/language/fa-IR/admin/appearance/customise.json +trans.ms = public/language/ms/admin/appearance/customise.json +trans.pt_PT = public/language/pt-PT/admin/appearance/customise.json +trans.ro = public/language/ro/admin/appearance/customise.json +trans.sq_AL = public/language/sq-AL/admin/appearance/customise.json +trans.uk = public/language/uk/admin/appearance/customise.json + +[o:nodebb:p:nodebb:r:admin-appearance-skins] +file_filter = public/language//admin/appearance/skins.json +source_file = public/language/en-GB/admin/appearance/skins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/appearance/skins.json +trans.he = public/language/he/admin/appearance/skins.json +trans.hr = public/language/hr/admin/appearance/skins.json +trans.sc = public/language/sc/admin/appearance/skins.json +trans.sk = public/language/sk/admin/appearance/skins.json +trans.uk = public/language/uk/admin/appearance/skins.json +trans.vi = public/language/vi/admin/appearance/skins.json +trans.bn = public/language/bn/admin/appearance/skins.json +trans.ms = public/language/ms/admin/appearance/skins.json +trans.pl = public/language/pl/admin/appearance/skins.json +trans.sv = public/language/sv/admin/appearance/skins.json +trans.fi = public/language/fi/admin/appearance/skins.json +trans.da = public/language/da/admin/appearance/skins.json +trans.hu = public/language/hu/admin/appearance/skins.json +trans.hy = public/language/hy/admin/appearance/skins.json +trans.id = public/language/id/admin/appearance/skins.json +trans.lv = public/language/lv/admin/appearance/skins.json +trans.sq_AL = public/language/sq-AL/admin/appearance/skins.json +trans.cs = public/language/cs/admin/appearance/skins.json +trans.de = public/language/de/admin/appearance/skins.json +trans.ko = public/language/ko/admin/appearance/skins.json +trans.sl = public/language/sl/admin/appearance/skins.json +trans.zh_TW = public/language/zh-TW/admin/appearance/skins.json +trans.bg = public/language/bg/admin/appearance/skins.json +trans.en_US = public/language/en-US/admin/appearance/skins.json +trans.es = public/language/es/admin/appearance/skins.json +trans.sr = public/language/sr/admin/appearance/skins.json +trans.zh_CN = public/language/zh-CN/admin/appearance/skins.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/skins.json +trans.it = public/language/it/admin/appearance/skins.json +trans.ja = public/language/ja/admin/appearance/skins.json +trans.nb = public/language/nb/admin/appearance/skins.json +trans.fr = public/language/fr/admin/appearance/skins.json +trans.fa_IR = public/language/fa-IR/admin/appearance/skins.json +trans.gl = public/language/gl/admin/appearance/skins.json +trans.ro = public/language/ro/admin/appearance/skins.json +trans.ru = public/language/ru/admin/appearance/skins.json +trans.rw = public/language/rw/admin/appearance/skins.json +trans.el = public/language/el/admin/appearance/skins.json +trans.lt = public/language/lt/admin/appearance/skins.json +trans.nl = public/language/nl/admin/appearance/skins.json +trans.pt_BR = public/language/pt-BR/admin/appearance/skins.json +trans.pt_PT = public/language/pt-PT/admin/appearance/skins.json +trans.th = public/language/th/admin/appearance/skins.json +trans.tr = public/language/tr/admin/appearance/skins.json +trans.ar = public/language/ar/admin/appearance/skins.json + +[o:nodebb:p:nodebb:r:admin-appearance-themes] +file_filter = public/language//admin/appearance/themes.json +source_file = public/language/en-GB/admin/appearance/themes.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/appearance/themes.json +trans.ar = public/language/ar/admin/appearance/themes.json +trans.bg = public/language/bg/admin/appearance/themes.json +trans.bn = public/language/bn/admin/appearance/themes.json +trans.en_US = public/language/en-US/admin/appearance/themes.json +trans.fa_IR = public/language/fa-IR/admin/appearance/themes.json +trans.pt_BR = public/language/pt-BR/admin/appearance/themes.json +trans.ru = public/language/ru/admin/appearance/themes.json +trans.sv = public/language/sv/admin/appearance/themes.json +trans.cs = public/language/cs/admin/appearance/themes.json +trans.da = public/language/da/admin/appearance/themes.json +trans.sk = public/language/sk/admin/appearance/themes.json +trans.zh_CN = public/language/zh-CN/admin/appearance/themes.json +trans.et = public/language/et/admin/appearance/themes.json +trans.ja = public/language/ja/admin/appearance/themes.json +trans.sl = public/language/sl/admin/appearance/themes.json +trans.sr = public/language/sr/admin/appearance/themes.json +trans.hr = public/language/hr/admin/appearance/themes.json +trans.hu = public/language/hu/admin/appearance/themes.json +trans.ms = public/language/ms/admin/appearance/themes.json +trans.sc = public/language/sc/admin/appearance/themes.json +trans.th = public/language/th/admin/appearance/themes.json +trans.lt = public/language/lt/admin/appearance/themes.json +trans.el = public/language/el/admin/appearance/themes.json +trans.en@pirate = public/language/en-x-pirate/admin/appearance/themes.json +trans.fi = public/language/fi/admin/appearance/themes.json +trans.he = public/language/he/admin/appearance/themes.json +trans.hy = public/language/hy/admin/appearance/themes.json +trans.id = public/language/id/admin/appearance/themes.json +trans.ko = public/language/ko/admin/appearance/themes.json +trans.nb = public/language/nb/admin/appearance/themes.json +trans.pl = public/language/pl/admin/appearance/themes.json +trans.pt_PT = public/language/pt-PT/admin/appearance/themes.json +trans.tr = public/language/tr/admin/appearance/themes.json +trans.fr = public/language/fr/admin/appearance/themes.json +trans.nl = public/language/nl/admin/appearance/themes.json +trans.ro = public/language/ro/admin/appearance/themes.json +trans.uk = public/language/uk/admin/appearance/themes.json +trans.de = public/language/de/admin/appearance/themes.json +trans.es = public/language/es/admin/appearance/themes.json +trans.gl = public/language/gl/admin/appearance/themes.json +trans.it = public/language/it/admin/appearance/themes.json +trans.lv = public/language/lv/admin/appearance/themes.json +trans.vi = public/language/vi/admin/appearance/themes.json +trans.rw = public/language/rw/admin/appearance/themes.json +trans.zh_TW = public/language/zh-TW/admin/appearance/themes.json + +[o:nodebb:p:nodebb:r:admin-dashboard] +file_filter = public/language//admin/dashboard.json +source_file = public/language/en-GB/admin/dashboard.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/dashboard.json +trans.en_US = public/language/en-US/admin/dashboard.json +trans.fa_IR = public/language/fa-IR/admin/dashboard.json +trans.fr = public/language/fr/admin/dashboard.json +trans.hu = public/language/hu/admin/dashboard.json +trans.nl = public/language/nl/admin/dashboard.json +trans.pl = public/language/pl/admin/dashboard.json +trans.bg = public/language/bg/admin/dashboard.json +trans.el = public/language/el/admin/dashboard.json +trans.gl = public/language/gl/admin/dashboard.json +trans.hy = public/language/hy/admin/dashboard.json +trans.id = public/language/id/admin/dashboard.json +trans.ja = public/language/ja/admin/dashboard.json +trans.pt_BR = public/language/pt-BR/admin/dashboard.json +trans.zh_CN = public/language/zh-CN/admin/dashboard.json +trans.zh_TW = public/language/zh-TW/admin/dashboard.json +trans.uk = public/language/uk/admin/dashboard.json +trans.ar = public/language/ar/admin/dashboard.json +trans.de = public/language/de/admin/dashboard.json +trans.en@pirate = public/language/en-x-pirate/admin/dashboard.json +trans.es = public/language/es/admin/dashboard.json +trans.ko = public/language/ko/admin/dashboard.json +trans.sv = public/language/sv/admin/dashboard.json +trans.lv = public/language/lv/admin/dashboard.json +trans.ms = public/language/ms/admin/dashboard.json +trans.ru = public/language/ru/admin/dashboard.json +trans.sl = public/language/sl/admin/dashboard.json +trans.sq_AL = public/language/sq-AL/admin/dashboard.json +trans.da = public/language/da/admin/dashboard.json +trans.lt = public/language/lt/admin/dashboard.json +trans.he = public/language/he/admin/dashboard.json +trans.sr = public/language/sr/admin/dashboard.json +trans.vi = public/language/vi/admin/dashboard.json +trans.pt_PT = public/language/pt-PT/admin/dashboard.json +trans.ro = public/language/ro/admin/dashboard.json +trans.rw = public/language/rw/admin/dashboard.json +trans.sc = public/language/sc/admin/dashboard.json +trans.th = public/language/th/admin/dashboard.json +trans.sk = public/language/sk/admin/dashboard.json +trans.tr = public/language/tr/admin/dashboard.json +trans.cs = public/language/cs/admin/dashboard.json +trans.et = public/language/et/admin/dashboard.json +trans.fi = public/language/fi/admin/dashboard.json +trans.hr = public/language/hr/admin/dashboard.json +trans.it = public/language/it/admin/dashboard.json +trans.nb = public/language/nb/admin/dashboard.json + +[o:nodebb:p:nodebb:r:admin-development-info] +file_filter = public/language//admin/development/info.json +source_file = public/language/en-GB/admin/development/info.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/info.json +trans.et = public/language/et/admin/development/info.json +trans.hr = public/language/hr/admin/development/info.json +trans.ms = public/language/ms/admin/development/info.json +trans.pl = public/language/pl/admin/development/info.json +trans.pt_BR = public/language/pt-BR/admin/development/info.json +trans.ro = public/language/ro/admin/development/info.json +trans.rw = public/language/rw/admin/development/info.json +trans.sl = public/language/sl/admin/development/info.json +trans.sr = public/language/sr/admin/development/info.json +trans.uk = public/language/uk/admin/development/info.json +trans.da = public/language/da/admin/development/info.json +trans.en@pirate = public/language/en-x-pirate/admin/development/info.json +trans.es = public/language/es/admin/development/info.json +trans.fi = public/language/fi/admin/development/info.json +trans.it = public/language/it/admin/development/info.json +trans.lt = public/language/lt/admin/development/info.json +trans.th = public/language/th/admin/development/info.json +trans.ar = public/language/ar/admin/development/info.json +trans.bn = public/language/bn/admin/development/info.json +trans.fa_IR = public/language/fa-IR/admin/development/info.json +trans.hu = public/language/hu/admin/development/info.json +trans.id = public/language/id/admin/development/info.json +trans.lv = public/language/lv/admin/development/info.json +trans.gl = public/language/gl/admin/development/info.json +trans.hy = public/language/hy/admin/development/info.json +trans.zh_CN = public/language/zh-CN/admin/development/info.json +trans.cs = public/language/cs/admin/development/info.json +trans.ja = public/language/ja/admin/development/info.json +trans.nb = public/language/nb/admin/development/info.json +trans.sq_AL = public/language/sq-AL/admin/development/info.json +trans.sv = public/language/sv/admin/development/info.json +trans.bg = public/language/bg/admin/development/info.json +trans.he = public/language/he/admin/development/info.json +trans.sk = public/language/sk/admin/development/info.json +trans.el = public/language/el/admin/development/info.json +trans.fr = public/language/fr/admin/development/info.json +trans.ru = public/language/ru/admin/development/info.json +trans.sc = public/language/sc/admin/development/info.json +trans.tr = public/language/tr/admin/development/info.json +trans.en_US = public/language/en-US/admin/development/info.json +trans.ko = public/language/ko/admin/development/info.json +trans.nl = public/language/nl/admin/development/info.json +trans.pt_PT = public/language/pt-PT/admin/development/info.json +trans.vi = public/language/vi/admin/development/info.json +trans.zh_TW = public/language/zh-TW/admin/development/info.json + +[o:nodebb:p:nodebb:r:admin-development-logger] +file_filter = public/language//admin/development/logger.json +source_file = public/language/en-GB/admin/development/logger.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/admin/development/logger.json +trans.fr = public/language/fr/admin/development/logger.json +trans.gl = public/language/gl/admin/development/logger.json +trans.hr = public/language/hr/admin/development/logger.json +trans.sl = public/language/sl/admin/development/logger.json +trans.vi = public/language/vi/admin/development/logger.json +trans.zh_TW = public/language/zh-TW/admin/development/logger.json +trans.ar = public/language/ar/admin/development/logger.json +trans.he = public/language/he/admin/development/logger.json +trans.id = public/language/id/admin/development/logger.json +trans.ko = public/language/ko/admin/development/logger.json +trans.lt = public/language/lt/admin/development/logger.json +trans.nb = public/language/nb/admin/development/logger.json +trans.pt_BR = public/language/pt-BR/admin/development/logger.json +trans.ro = public/language/ro/admin/development/logger.json +trans.fi = public/language/fi/admin/development/logger.json +trans.sc = public/language/sc/admin/development/logger.json +trans.ru = public/language/ru/admin/development/logger.json +trans.sq_AL = public/language/sq-AL/admin/development/logger.json +trans.th = public/language/th/admin/development/logger.json +trans.hy = public/language/hy/admin/development/logger.json +trans.fa_IR = public/language/fa-IR/admin/development/logger.json +trans.it = public/language/it/admin/development/logger.json +trans.lv = public/language/lv/admin/development/logger.json +trans.nl = public/language/nl/admin/development/logger.json +trans.pt_PT = public/language/pt-PT/admin/development/logger.json +trans.sk = public/language/sk/admin/development/logger.json +trans.sv = public/language/sv/admin/development/logger.json +trans.el = public/language/el/admin/development/logger.json +trans.uk = public/language/uk/admin/development/logger.json +trans.ms = public/language/ms/admin/development/logger.json +trans.zh_CN = public/language/zh-CN/admin/development/logger.json +trans.bn = public/language/bn/admin/development/logger.json +trans.et = public/language/et/admin/development/logger.json +trans.ja = public/language/ja/admin/development/logger.json +trans.da = public/language/da/admin/development/logger.json +trans.en@pirate = public/language/en-x-pirate/admin/development/logger.json +trans.es = public/language/es/admin/development/logger.json +trans.cs = public/language/cs/admin/development/logger.json +trans.en_US = public/language/en-US/admin/development/logger.json +trans.hu = public/language/hu/admin/development/logger.json +trans.pl = public/language/pl/admin/development/logger.json +trans.rw = public/language/rw/admin/development/logger.json +trans.sr = public/language/sr/admin/development/logger.json +trans.tr = public/language/tr/admin/development/logger.json +trans.bg = public/language/bg/admin/development/logger.json + +[o:nodebb:p:nodebb:r:admin-extend-plugins] +file_filter = public/language//admin/extend/plugins.json +source_file = public/language/en-GB/admin/extend/plugins.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/extend/plugins.json +trans.et = public/language/et/admin/extend/plugins.json +trans.hr = public/language/hr/admin/extend/plugins.json +trans.hy = public/language/hy/admin/extend/plugins.json +trans.tr = public/language/tr/admin/extend/plugins.json +trans.it = public/language/it/admin/extend/plugins.json +trans.lv = public/language/lv/admin/extend/plugins.json +trans.sl = public/language/sl/admin/extend/plugins.json +trans.th = public/language/th/admin/extend/plugins.json +trans.en_US = public/language/en-US/admin/extend/plugins.json +trans.he = public/language/he/admin/extend/plugins.json +trans.nb = public/language/nb/admin/extend/plugins.json +trans.sk = public/language/sk/admin/extend/plugins.json +trans.uk = public/language/uk/admin/extend/plugins.json +trans.es = public/language/es/admin/extend/plugins.json +trans.lt = public/language/lt/admin/extend/plugins.json +trans.sv = public/language/sv/admin/extend/plugins.json +trans.nl = public/language/nl/admin/extend/plugins.json +trans.pt_PT = public/language/pt-PT/admin/extend/plugins.json +trans.ar = public/language/ar/admin/extend/plugins.json +trans.cs = public/language/cs/admin/extend/plugins.json +trans.fi = public/language/fi/admin/extend/plugins.json +trans.id = public/language/id/admin/extend/plugins.json +trans.ja = public/language/ja/admin/extend/plugins.json +trans.ko = public/language/ko/admin/extend/plugins.json +trans.ru = public/language/ru/admin/extend/plugins.json +trans.sr = public/language/sr/admin/extend/plugins.json +trans.bn = public/language/bn/admin/extend/plugins.json +trans.de = public/language/de/admin/extend/plugins.json +trans.el = public/language/el/admin/extend/plugins.json +trans.ms = public/language/ms/admin/extend/plugins.json +trans.pt_BR = public/language/pt-BR/admin/extend/plugins.json +trans.sq_AL = public/language/sq-AL/admin/extend/plugins.json +trans.zh_TW = public/language/zh-TW/admin/extend/plugins.json +trans.da = public/language/da/admin/extend/plugins.json +trans.fa_IR = public/language/fa-IR/admin/extend/plugins.json +trans.gl = public/language/gl/admin/extend/plugins.json +trans.hu = public/language/hu/admin/extend/plugins.json +trans.sc = public/language/sc/admin/extend/plugins.json +trans.vi = public/language/vi/admin/extend/plugins.json +trans.bg = public/language/bg/admin/extend/plugins.json +trans.fr = public/language/fr/admin/extend/plugins.json +trans.pl = public/language/pl/admin/extend/plugins.json +trans.ro = public/language/ro/admin/extend/plugins.json +trans.rw = public/language/rw/admin/extend/plugins.json +trans.zh_CN = public/language/zh-CN/admin/extend/plugins.json + +[o:nodebb:p:nodebb:r:admin-extend-rewards] +file_filter = public/language//admin/extend/rewards.json +source_file = public/language/en-GB/admin/extend/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/extend/rewards.json +trans.ar = public/language/ar/admin/extend/rewards.json +trans.fi = public/language/fi/admin/extend/rewards.json +trans.fr = public/language/fr/admin/extend/rewards.json +trans.sr = public/language/sr/admin/extend/rewards.json +trans.id = public/language/id/admin/extend/rewards.json +trans.pt_BR = public/language/pt-BR/admin/extend/rewards.json +trans.sq_AL = public/language/sq-AL/admin/extend/rewards.json +trans.pt_PT = public/language/pt-PT/admin/extend/rewards.json +trans.ro = public/language/ro/admin/extend/rewards.json +trans.ru = public/language/ru/admin/extend/rewards.json +trans.sk = public/language/sk/admin/extend/rewards.json +trans.es = public/language/es/admin/extend/rewards.json +trans.lt = public/language/lt/admin/extend/rewards.json +trans.nl = public/language/nl/admin/extend/rewards.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/rewards.json +trans.hr = public/language/hr/admin/extend/rewards.json +trans.ja = public/language/ja/admin/extend/rewards.json +trans.ko = public/language/ko/admin/extend/rewards.json +trans.nb = public/language/nb/admin/extend/rewards.json +trans.bg = public/language/bg/admin/extend/rewards.json +trans.bn = public/language/bn/admin/extend/rewards.json +trans.da = public/language/da/admin/extend/rewards.json +trans.hy = public/language/hy/admin/extend/rewards.json +trans.pl = public/language/pl/admin/extend/rewards.json +trans.sc = public/language/sc/admin/extend/rewards.json +trans.it = public/language/it/admin/extend/rewards.json +trans.tr = public/language/tr/admin/extend/rewards.json +trans.uk = public/language/uk/admin/extend/rewards.json +trans.vi = public/language/vi/admin/extend/rewards.json +trans.zh_CN = public/language/zh-CN/admin/extend/rewards.json +trans.en_US = public/language/en-US/admin/extend/rewards.json +trans.fa_IR = public/language/fa-IR/admin/extend/rewards.json +trans.he = public/language/he/admin/extend/rewards.json +trans.zh_TW = public/language/zh-TW/admin/extend/rewards.json +trans.lv = public/language/lv/admin/extend/rewards.json +trans.sl = public/language/sl/admin/extend/rewards.json +trans.cs = public/language/cs/admin/extend/rewards.json +trans.el = public/language/el/admin/extend/rewards.json +trans.et = public/language/et/admin/extend/rewards.json +trans.rw = public/language/rw/admin/extend/rewards.json +trans.sv = public/language/sv/admin/extend/rewards.json +trans.th = public/language/th/admin/extend/rewards.json +trans.de = public/language/de/admin/extend/rewards.json +trans.gl = public/language/gl/admin/extend/rewards.json +trans.hu = public/language/hu/admin/extend/rewards.json + +[o:nodebb:p:nodebb:r:admin-extend-widgets] +file_filter = public/language//admin/extend/widgets.json +source_file = public/language/en-GB/admin/extend/widgets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/admin/extend/widgets.json +trans.el = public/language/el/admin/extend/widgets.json +trans.id = public/language/id/admin/extend/widgets.json +trans.nb = public/language/nb/admin/extend/widgets.json +trans.ro = public/language/ro/admin/extend/widgets.json +trans.rw = public/language/rw/admin/extend/widgets.json +trans.ar = public/language/ar/admin/extend/widgets.json +trans.hy = public/language/hy/admin/extend/widgets.json +trans.lv = public/language/lv/admin/extend/widgets.json +trans.ru = public/language/ru/admin/extend/widgets.json +trans.sc = public/language/sc/admin/extend/widgets.json +trans.sr = public/language/sr/admin/extend/widgets.json +trans.tr = public/language/tr/admin/extend/widgets.json +trans.vi = public/language/vi/admin/extend/widgets.json +trans.fr = public/language/fr/admin/extend/widgets.json +trans.fa_IR = public/language/fa-IR/admin/extend/widgets.json +trans.ko = public/language/ko/admin/extend/widgets.json +trans.lt = public/language/lt/admin/extend/widgets.json +trans.sq_AL = public/language/sq-AL/admin/extend/widgets.json +trans.uk = public/language/uk/admin/extend/widgets.json +trans.bg = public/language/bg/admin/extend/widgets.json +trans.de = public/language/de/admin/extend/widgets.json +trans.ms = public/language/ms/admin/extend/widgets.json +trans.nl = public/language/nl/admin/extend/widgets.json +trans.pt_BR = public/language/pt-BR/admin/extend/widgets.json +trans.sk = public/language/sk/admin/extend/widgets.json +trans.zh_CN = public/language/zh-CN/admin/extend/widgets.json +trans.da = public/language/da/admin/extend/widgets.json +trans.hu = public/language/hu/admin/extend/widgets.json +trans.ja = public/language/ja/admin/extend/widgets.json +trans.th = public/language/th/admin/extend/widgets.json +trans.et = public/language/et/admin/extend/widgets.json +trans.gl = public/language/gl/admin/extend/widgets.json +trans.he = public/language/he/admin/extend/widgets.json +trans.it = public/language/it/admin/extend/widgets.json +trans.pl = public/language/pl/admin/extend/widgets.json +trans.zh_TW = public/language/zh-TW/admin/extend/widgets.json +trans.en@pirate = public/language/en-x-pirate/admin/extend/widgets.json +trans.fi = public/language/fi/admin/extend/widgets.json +trans.hr = public/language/hr/admin/extend/widgets.json +trans.sl = public/language/sl/admin/extend/widgets.json +trans.sv = public/language/sv/admin/extend/widgets.json +trans.cs = public/language/cs/admin/extend/widgets.json +trans.es = public/language/es/admin/extend/widgets.json +trans.pt_PT = public/language/pt-PT/admin/extend/widgets.json +trans.en_US = public/language/en-US/admin/extend/widgets.json + +[o:nodebb:p:nodebb:r:admin-manage-admins-mods] +file_filter = public/language//admin/manage/admins-mods.json +source_file = public/language/en-GB/admin/manage/admins-mods.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hu = public/language/hu/admin/manage/admins-mods.json +trans.nb = public/language/nb/admin/manage/admins-mods.json +trans.ru = public/language/ru/admin/manage/admins-mods.json +trans.fr = public/language/fr/admin/manage/admins-mods.json +trans.he = public/language/he/admin/manage/admins-mods.json +trans.lv = public/language/lv/admin/manage/admins-mods.json +trans.sc = public/language/sc/admin/manage/admins-mods.json +trans.vi = public/language/vi/admin/manage/admins-mods.json +trans.es = public/language/es/admin/manage/admins-mods.json +trans.lt = public/language/lt/admin/manage/admins-mods.json +trans.de = public/language/de/admin/manage/admins-mods.json +trans.ja = public/language/ja/admin/manage/admins-mods.json +trans.pl = public/language/pl/admin/manage/admins-mods.json +trans.sq_AL = public/language/sq-AL/admin/manage/admins-mods.json +trans.sr = public/language/sr/admin/manage/admins-mods.json +trans.zh_TW = public/language/zh-TW/admin/manage/admins-mods.json +trans.id = public/language/id/admin/manage/admins-mods.json +trans.ko = public/language/ko/admin/manage/admins-mods.json +trans.gl = public/language/gl/admin/manage/admins-mods.json +trans.hr = public/language/hr/admin/manage/admins-mods.json +trans.hy = public/language/hy/admin/manage/admins-mods.json +trans.rw = public/language/rw/admin/manage/admins-mods.json +trans.bn = public/language/bn/admin/manage/admins-mods.json +trans.fi = public/language/fi/admin/manage/admins-mods.json +trans.ms = public/language/ms/admin/manage/admins-mods.json +trans.pt_BR = public/language/pt-BR/admin/manage/admins-mods.json +trans.pt_PT = public/language/pt-PT/admin/manage/admins-mods.json +trans.sv = public/language/sv/admin/manage/admins-mods.json +trans.th = public/language/th/admin/manage/admins-mods.json +trans.uk = public/language/uk/admin/manage/admins-mods.json +trans.ar = public/language/ar/admin/manage/admins-mods.json +trans.bg = public/language/bg/admin/manage/admins-mods.json +trans.el = public/language/el/admin/manage/admins-mods.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/admins-mods.json +trans.en_US = public/language/en-US/admin/manage/admins-mods.json +trans.it = public/language/it/admin/manage/admins-mods.json +trans.nl = public/language/nl/admin/manage/admins-mods.json +trans.ro = public/language/ro/admin/manage/admins-mods.json +trans.cs = public/language/cs/admin/manage/admins-mods.json +trans.da = public/language/da/admin/manage/admins-mods.json +trans.zh_CN = public/language/zh-CN/admin/manage/admins-mods.json +trans.sk = public/language/sk/admin/manage/admins-mods.json +trans.sl = public/language/sl/admin/manage/admins-mods.json +trans.tr = public/language/tr/admin/manage/admins-mods.json +trans.et = public/language/et/admin/manage/admins-mods.json +trans.fa_IR = public/language/fa-IR/admin/manage/admins-mods.json + +[o:nodebb:p:nodebb:r:admin-manage-categories] +file_filter = public/language//admin/manage/categories.json +source_file = public/language/en-GB/admin/manage/categories.json +source_lang = en_GB +type = KEYVALUEJSON +trans.es = public/language/es/admin/manage/categories.json +trans.gl = public/language/gl/admin/manage/categories.json +trans.pt_PT = public/language/pt-PT/admin/manage/categories.json +trans.sc = public/language/sc/admin/manage/categories.json +trans.zh_TW = public/language/zh-TW/admin/manage/categories.json +trans.bg = public/language/bg/admin/manage/categories.json +trans.hu = public/language/hu/admin/manage/categories.json +trans.hy = public/language/hy/admin/manage/categories.json +trans.sk = public/language/sk/admin/manage/categories.json +trans.uk = public/language/uk/admin/manage/categories.json +trans.vi = public/language/vi/admin/manage/categories.json +trans.bn = public/language/bn/admin/manage/categories.json +trans.en_US = public/language/en-US/admin/manage/categories.json +trans.fr = public/language/fr/admin/manage/categories.json +trans.it = public/language/it/admin/manage/categories.json +trans.nb = public/language/nb/admin/manage/categories.json +trans.ru = public/language/ru/admin/manage/categories.json +trans.sr = public/language/sr/admin/manage/categories.json +trans.fa_IR = public/language/fa-IR/admin/manage/categories.json +trans.id = public/language/id/admin/manage/categories.json +trans.ms = public/language/ms/admin/manage/categories.json +trans.pl = public/language/pl/admin/manage/categories.json +trans.tr = public/language/tr/admin/manage/categories.json +trans.zh_CN = public/language/zh-CN/admin/manage/categories.json +trans.lt = public/language/lt/admin/manage/categories.json +trans.sl = public/language/sl/admin/manage/categories.json +trans.sv = public/language/sv/admin/manage/categories.json +trans.rw = public/language/rw/admin/manage/categories.json +trans.el = public/language/el/admin/manage/categories.json +trans.et = public/language/et/admin/manage/categories.json +trans.fi = public/language/fi/admin/manage/categories.json +trans.he = public/language/he/admin/manage/categories.json +trans.ja = public/language/ja/admin/manage/categories.json +trans.ko = public/language/ko/admin/manage/categories.json +trans.ro = public/language/ro/admin/manage/categories.json +trans.cs = public/language/cs/admin/manage/categories.json +trans.sq_AL = public/language/sq-AL/admin/manage/categories.json +trans.th = public/language/th/admin/manage/categories.json +trans.pt_BR = public/language/pt-BR/admin/manage/categories.json +trans.ar = public/language/ar/admin/manage/categories.json +trans.da = public/language/da/admin/manage/categories.json +trans.de = public/language/de/admin/manage/categories.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/categories.json +trans.hr = public/language/hr/admin/manage/categories.json +trans.lv = public/language/lv/admin/manage/categories.json +trans.nl = public/language/nl/admin/manage/categories.json + +[o:nodebb:p:nodebb:r:admin-manage-digest] +file_filter = public/language//admin/manage/digest.json +source_file = public/language/en-GB/admin/manage/digest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/manage/digest.json +trans.fi = public/language/fi/admin/manage/digest.json +trans.gl = public/language/gl/admin/manage/digest.json +trans.fr = public/language/fr/admin/manage/digest.json +trans.hu = public/language/hu/admin/manage/digest.json +trans.id = public/language/id/admin/manage/digest.json +trans.lv = public/language/lv/admin/manage/digest.json +trans.pl = public/language/pl/admin/manage/digest.json +trans.sl = public/language/sl/admin/manage/digest.json +trans.da = public/language/da/admin/manage/digest.json +trans.fa_IR = public/language/fa-IR/admin/manage/digest.json +trans.sq_AL = public/language/sq-AL/admin/manage/digest.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/digest.json +trans.en_US = public/language/en-US/admin/manage/digest.json +trans.he = public/language/he/admin/manage/digest.json +trans.hr = public/language/hr/admin/manage/digest.json +trans.hy = public/language/hy/admin/manage/digest.json +trans.it = public/language/it/admin/manage/digest.json +trans.bg = public/language/bg/admin/manage/digest.json +trans.bn = public/language/bn/admin/manage/digest.json +trans.ro = public/language/ro/admin/manage/digest.json +trans.th = public/language/th/admin/manage/digest.json +trans.uk = public/language/uk/admin/manage/digest.json +trans.vi = public/language/vi/admin/manage/digest.json +trans.ms = public/language/ms/admin/manage/digest.json +trans.pt_BR = public/language/pt-BR/admin/manage/digest.json +trans.rw = public/language/rw/admin/manage/digest.json +trans.de = public/language/de/admin/manage/digest.json +trans.el = public/language/el/admin/manage/digest.json +trans.nl = public/language/nl/admin/manage/digest.json +trans.ru = public/language/ru/admin/manage/digest.json +trans.sv = public/language/sv/admin/manage/digest.json +trans.zh_TW = public/language/zh-TW/admin/manage/digest.json +trans.es = public/language/es/admin/manage/digest.json +trans.lt = public/language/lt/admin/manage/digest.json +trans.ko = public/language/ko/admin/manage/digest.json +trans.zh_CN = public/language/zh-CN/admin/manage/digest.json +trans.ar = public/language/ar/admin/manage/digest.json +trans.ja = public/language/ja/admin/manage/digest.json +trans.nb = public/language/nb/admin/manage/digest.json +trans.sk = public/language/sk/admin/manage/digest.json +trans.pt_PT = public/language/pt-PT/admin/manage/digest.json +trans.sc = public/language/sc/admin/manage/digest.json +trans.tr = public/language/tr/admin/manage/digest.json +trans.cs = public/language/cs/admin/manage/digest.json +trans.et = public/language/et/admin/manage/digest.json + +[o:nodebb:p:nodebb:r:admin-manage-groups] +file_filter = public/language//admin/manage/groups.json +source_file = public/language/en-GB/admin/manage/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_PT = public/language/pt-PT/admin/manage/groups.json +trans.tr = public/language/tr/admin/manage/groups.json +trans.uk = public/language/uk/admin/manage/groups.json +trans.zh_TW = public/language/zh-TW/admin/manage/groups.json +trans.nb = public/language/nb/admin/manage/groups.json +trans.id = public/language/id/admin/manage/groups.json +trans.lt = public/language/lt/admin/manage/groups.json +trans.pl = public/language/pl/admin/manage/groups.json +trans.sc = public/language/sc/admin/manage/groups.json +trans.hy = public/language/hy/admin/manage/groups.json +trans.he = public/language/he/admin/manage/groups.json +trans.ko = public/language/ko/admin/manage/groups.json +trans.sv = public/language/sv/admin/manage/groups.json +trans.bn = public/language/bn/admin/manage/groups.json +trans.es = public/language/es/admin/manage/groups.json +trans.ja = public/language/ja/admin/manage/groups.json +trans.th = public/language/th/admin/manage/groups.json +trans.cs = public/language/cs/admin/manage/groups.json +trans.fi = public/language/fi/admin/manage/groups.json +trans.hr = public/language/hr/admin/manage/groups.json +trans.it = public/language/it/admin/manage/groups.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/groups.json +trans.bg = public/language/bg/admin/manage/groups.json +trans.hu = public/language/hu/admin/manage/groups.json +trans.pt_BR = public/language/pt-BR/admin/manage/groups.json +trans.ro = public/language/ro/admin/manage/groups.json +trans.ru = public/language/ru/admin/manage/groups.json +trans.sq_AL = public/language/sq-AL/admin/manage/groups.json +trans.vi = public/language/vi/admin/manage/groups.json +trans.ar = public/language/ar/admin/manage/groups.json +trans.et = public/language/et/admin/manage/groups.json +trans.fa_IR = public/language/fa-IR/admin/manage/groups.json +trans.fr = public/language/fr/admin/manage/groups.json +trans.nl = public/language/nl/admin/manage/groups.json +trans.rw = public/language/rw/admin/manage/groups.json +trans.sl = public/language/sl/admin/manage/groups.json +trans.zh_CN = public/language/zh-CN/admin/manage/groups.json +trans.da = public/language/da/admin/manage/groups.json +trans.el = public/language/el/admin/manage/groups.json +trans.en_US = public/language/en-US/admin/manage/groups.json +trans.gl = public/language/gl/admin/manage/groups.json +trans.lv = public/language/lv/admin/manage/groups.json +trans.ms = public/language/ms/admin/manage/groups.json +trans.sk = public/language/sk/admin/manage/groups.json +trans.sr = public/language/sr/admin/manage/groups.json +trans.de = public/language/de/admin/manage/groups.json + +[o:nodebb:p:nodebb:r:admin-manage-privileges] +file_filter = public/language//admin/manage/privileges.json +source_file = public/language/en-GB/admin/manage/privileges.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/manage/privileges.json +trans.es = public/language/es/admin/manage/privileges.json +trans.fa_IR = public/language/fa-IR/admin/manage/privileges.json +trans.ms = public/language/ms/admin/manage/privileges.json +trans.ro = public/language/ro/admin/manage/privileges.json +trans.sl = public/language/sl/admin/manage/privileges.json +trans.el = public/language/el/admin/manage/privileges.json +trans.lt = public/language/lt/admin/manage/privileges.json +trans.pt_BR = public/language/pt-BR/admin/manage/privileges.json +trans.pt_PT = public/language/pt-PT/admin/manage/privileges.json +trans.hu = public/language/hu/admin/manage/privileges.json +trans.pl = public/language/pl/admin/manage/privileges.json +trans.sc = public/language/sc/admin/manage/privileges.json +trans.uk = public/language/uk/admin/manage/privileges.json +trans.bn = public/language/bn/admin/manage/privileges.json +trans.cs = public/language/cs/admin/manage/privileges.json +trans.da = public/language/da/admin/manage/privileges.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/privileges.json +trans.vi = public/language/vi/admin/manage/privileges.json +trans.en_US = public/language/en-US/admin/manage/privileges.json +trans.hy = public/language/hy/admin/manage/privileges.json +trans.sr = public/language/sr/admin/manage/privileges.json +trans.ja = public/language/ja/admin/manage/privileges.json +trans.nb = public/language/nb/admin/manage/privileges.json +trans.nl = public/language/nl/admin/manage/privileges.json +trans.sv = public/language/sv/admin/manage/privileges.json +trans.et = public/language/et/admin/manage/privileges.json +trans.fr = public/language/fr/admin/manage/privileges.json +trans.he = public/language/he/admin/manage/privileges.json +trans.hr = public/language/hr/admin/manage/privileges.json +trans.th = public/language/th/admin/manage/privileges.json +trans.sq_AL = public/language/sq-AL/admin/manage/privileges.json +trans.gl = public/language/gl/admin/manage/privileges.json +trans.ko = public/language/ko/admin/manage/privileges.json +trans.lv = public/language/lv/admin/manage/privileges.json +trans.sk = public/language/sk/admin/manage/privileges.json +trans.tr = public/language/tr/admin/manage/privileges.json +trans.fi = public/language/fi/admin/manage/privileges.json +trans.id = public/language/id/admin/manage/privileges.json +trans.it = public/language/it/admin/manage/privileges.json +trans.rw = public/language/rw/admin/manage/privileges.json +trans.zh_TW = public/language/zh-TW/admin/manage/privileges.json +trans.ar = public/language/ar/admin/manage/privileges.json +trans.de = public/language/de/admin/manage/privileges.json +trans.ru = public/language/ru/admin/manage/privileges.json +trans.zh_CN = public/language/zh-CN/admin/manage/privileges.json + +[o:nodebb:p:nodebb:r:admin-manage-registration] +file_filter = public/language//admin/manage/registration.json +source_file = public/language/en-GB/admin/manage/registration.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pl = public/language/pl/admin/manage/registration.json +trans.ro = public/language/ro/admin/manage/registration.json +trans.sk = public/language/sk/admin/manage/registration.json +trans.fi = public/language/fi/admin/manage/registration.json +trans.hu = public/language/hu/admin/manage/registration.json +trans.ms = public/language/ms/admin/manage/registration.json +trans.ru = public/language/ru/admin/manage/registration.json +trans.sc = public/language/sc/admin/manage/registration.json +trans.sr = public/language/sr/admin/manage/registration.json +trans.th = public/language/th/admin/manage/registration.json +trans.zh_TW = public/language/zh-TW/admin/manage/registration.json +trans.da = public/language/da/admin/manage/registration.json +trans.et = public/language/et/admin/manage/registration.json +trans.it = public/language/it/admin/manage/registration.json +trans.nb = public/language/nb/admin/manage/registration.json +trans.pt_BR = public/language/pt-BR/admin/manage/registration.json +trans.hy = public/language/hy/admin/manage/registration.json +trans.uk = public/language/uk/admin/manage/registration.json +trans.sq_AL = public/language/sq-AL/admin/manage/registration.json +trans.ar = public/language/ar/admin/manage/registration.json +trans.es = public/language/es/admin/manage/registration.json +trans.he = public/language/he/admin/manage/registration.json +trans.id = public/language/id/admin/manage/registration.json +trans.nl = public/language/nl/admin/manage/registration.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/registration.json +trans.en_US = public/language/en-US/admin/manage/registration.json +trans.rw = public/language/rw/admin/manage/registration.json +trans.sv = public/language/sv/admin/manage/registration.json +trans.tr = public/language/tr/admin/manage/registration.json +trans.vi = public/language/vi/admin/manage/registration.json +trans.bg = public/language/bg/admin/manage/registration.json +trans.cs = public/language/cs/admin/manage/registration.json +trans.fa_IR = public/language/fa-IR/admin/manage/registration.json +trans.fr = public/language/fr/admin/manage/registration.json +trans.lt = public/language/lt/admin/manage/registration.json +trans.ja = public/language/ja/admin/manage/registration.json +trans.ko = public/language/ko/admin/manage/registration.json +trans.lv = public/language/lv/admin/manage/registration.json +trans.bn = public/language/bn/admin/manage/registration.json +trans.de = public/language/de/admin/manage/registration.json +trans.el = public/language/el/admin/manage/registration.json +trans.gl = public/language/gl/admin/manage/registration.json +trans.hr = public/language/hr/admin/manage/registration.json +trans.pt_PT = public/language/pt-PT/admin/manage/registration.json +trans.sl = public/language/sl/admin/manage/registration.json +trans.zh_CN = public/language/zh-CN/admin/manage/registration.json + +[o:nodebb:p:nodebb:r:admin-manage-tags] +file_filter = public/language//admin/manage/tags.json +source_file = public/language/en-GB/admin/manage/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/manage/tags.json +trans.bg = public/language/bg/admin/manage/tags.json +trans.da = public/language/da/admin/manage/tags.json +trans.en_US = public/language/en-US/admin/manage/tags.json +trans.hu = public/language/hu/admin/manage/tags.json +trans.nb = public/language/nb/admin/manage/tags.json +trans.ru = public/language/ru/admin/manage/tags.json +trans.sq_AL = public/language/sq-AL/admin/manage/tags.json +trans.de = public/language/de/admin/manage/tags.json +trans.fi = public/language/fi/admin/manage/tags.json +trans.hr = public/language/hr/admin/manage/tags.json +trans.ko = public/language/ko/admin/manage/tags.json +trans.ms = public/language/ms/admin/manage/tags.json +trans.th = public/language/th/admin/manage/tags.json +trans.ar = public/language/ar/admin/manage/tags.json +trans.el = public/language/el/admin/manage/tags.json +trans.es = public/language/es/admin/manage/tags.json +trans.hy = public/language/hy/admin/manage/tags.json +trans.ja = public/language/ja/admin/manage/tags.json +trans.cs = public/language/cs/admin/manage/tags.json +trans.pl = public/language/pl/admin/manage/tags.json +trans.ro = public/language/ro/admin/manage/tags.json +trans.rw = public/language/rw/admin/manage/tags.json +trans.bn = public/language/bn/admin/manage/tags.json +trans.fa_IR = public/language/fa-IR/admin/manage/tags.json +trans.zh_CN = public/language/zh-CN/admin/manage/tags.json +trans.et = public/language/et/admin/manage/tags.json +trans.fr = public/language/fr/admin/manage/tags.json +trans.gl = public/language/gl/admin/manage/tags.json +trans.id = public/language/id/admin/manage/tags.json +trans.lt = public/language/lt/admin/manage/tags.json +trans.sv = public/language/sv/admin/manage/tags.json +trans.tr = public/language/tr/admin/manage/tags.json +trans.uk = public/language/uk/admin/manage/tags.json +trans.lv = public/language/lv/admin/manage/tags.json +trans.nl = public/language/nl/admin/manage/tags.json +trans.pt_BR = public/language/pt-BR/admin/manage/tags.json +trans.pt_PT = public/language/pt-PT/admin/manage/tags.json +trans.sc = public/language/sc/admin/manage/tags.json +trans.sk = public/language/sk/admin/manage/tags.json +trans.sl = public/language/sl/admin/manage/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/tags.json +trans.he = public/language/he/admin/manage/tags.json +trans.it = public/language/it/admin/manage/tags.json +trans.sr = public/language/sr/admin/manage/tags.json +trans.vi = public/language/vi/admin/manage/tags.json + +[o:nodebb:p:nodebb:r:admin-manage-uploads] +file_filter = public/language//admin/manage/uploads.json +source_file = public/language/en-GB/admin/manage/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/admin/manage/uploads.json +trans.nb = public/language/nb/admin/manage/uploads.json +trans.tr = public/language/tr/admin/manage/uploads.json +trans.bg = public/language/bg/admin/manage/uploads.json +trans.bn = public/language/bn/admin/manage/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/uploads.json +trans.lt = public/language/lt/admin/manage/uploads.json +trans.sq_AL = public/language/sq-AL/admin/manage/uploads.json +trans.el = public/language/el/admin/manage/uploads.json +trans.en_US = public/language/en-US/admin/manage/uploads.json +trans.fi = public/language/fi/admin/manage/uploads.json +trans.hr = public/language/hr/admin/manage/uploads.json +trans.sv = public/language/sv/admin/manage/uploads.json +trans.ar = public/language/ar/admin/manage/uploads.json +trans.de = public/language/de/admin/manage/uploads.json +trans.fr = public/language/fr/admin/manage/uploads.json +trans.he = public/language/he/admin/manage/uploads.json +trans.ro = public/language/ro/admin/manage/uploads.json +trans.rw = public/language/rw/admin/manage/uploads.json +trans.gl = public/language/gl/admin/manage/uploads.json +trans.nl = public/language/nl/admin/manage/uploads.json +trans.pl = public/language/pl/admin/manage/uploads.json +trans.pt_BR = public/language/pt-BR/admin/manage/uploads.json +trans.sc = public/language/sc/admin/manage/uploads.json +trans.th = public/language/th/admin/manage/uploads.json +trans.es = public/language/es/admin/manage/uploads.json +trans.et = public/language/et/admin/manage/uploads.json +trans.lv = public/language/lv/admin/manage/uploads.json +trans.pt_PT = public/language/pt-PT/admin/manage/uploads.json +trans.sr = public/language/sr/admin/manage/uploads.json +trans.uk = public/language/uk/admin/manage/uploads.json +trans.vi = public/language/vi/admin/manage/uploads.json +trans.cs = public/language/cs/admin/manage/uploads.json +trans.ru = public/language/ru/admin/manage/uploads.json +trans.sk = public/language/sk/admin/manage/uploads.json +trans.sl = public/language/sl/admin/manage/uploads.json +trans.fa_IR = public/language/fa-IR/admin/manage/uploads.json +trans.hu = public/language/hu/admin/manage/uploads.json +trans.hy = public/language/hy/admin/manage/uploads.json +trans.zh_CN = public/language/zh-CN/admin/manage/uploads.json +trans.ko = public/language/ko/admin/manage/uploads.json +trans.zh_TW = public/language/zh-TW/admin/manage/uploads.json +trans.da = public/language/da/admin/manage/uploads.json +trans.id = public/language/id/admin/manage/uploads.json +trans.it = public/language/it/admin/manage/uploads.json +trans.ja = public/language/ja/admin/manage/uploads.json + +[o:nodebb:p:nodebb:r:admin-manage-users] +file_filter = public/language//admin/manage/users.json +source_file = public/language/en-GB/admin/manage/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/manage/users.json +trans.en@pirate = public/language/en-x-pirate/admin/manage/users.json +trans.en_US = public/language/en-US/admin/manage/users.json +trans.fr = public/language/fr/admin/manage/users.json +trans.ko = public/language/ko/admin/manage/users.json +trans.ms = public/language/ms/admin/manage/users.json +trans.nb = public/language/nb/admin/manage/users.json +trans.pt_BR = public/language/pt-BR/admin/manage/users.json +trans.zh_CN = public/language/zh-CN/admin/manage/users.json +trans.zh_TW = public/language/zh-TW/admin/manage/users.json +trans.cs = public/language/cs/admin/manage/users.json +trans.gl = public/language/gl/admin/manage/users.json +trans.rw = public/language/rw/admin/manage/users.json +trans.bg = public/language/bg/admin/manage/users.json +trans.de = public/language/de/admin/manage/users.json +trans.et = public/language/et/admin/manage/users.json +trans.id = public/language/id/admin/manage/users.json +trans.pt_PT = public/language/pt-PT/admin/manage/users.json +trans.ru = public/language/ru/admin/manage/users.json +trans.da = public/language/da/admin/manage/users.json +trans.he = public/language/he/admin/manage/users.json +trans.hu = public/language/hu/admin/manage/users.json +trans.ro = public/language/ro/admin/manage/users.json +trans.bn = public/language/bn/admin/manage/users.json +trans.es = public/language/es/admin/manage/users.json +trans.it = public/language/it/admin/manage/users.json +trans.nl = public/language/nl/admin/manage/users.json +trans.sq_AL = public/language/sq-AL/admin/manage/users.json +trans.tr = public/language/tr/admin/manage/users.json +trans.vi = public/language/vi/admin/manage/users.json +trans.fi = public/language/fi/admin/manage/users.json +trans.sc = public/language/sc/admin/manage/users.json +trans.hy = public/language/hy/admin/manage/users.json +trans.ja = public/language/ja/admin/manage/users.json +trans.lt = public/language/lt/admin/manage/users.json +trans.th = public/language/th/admin/manage/users.json +trans.sl = public/language/sl/admin/manage/users.json +trans.ar = public/language/ar/admin/manage/users.json +trans.el = public/language/el/admin/manage/users.json +trans.fa_IR = public/language/fa-IR/admin/manage/users.json +trans.hr = public/language/hr/admin/manage/users.json +trans.lv = public/language/lv/admin/manage/users.json +trans.pl = public/language/pl/admin/manage/users.json +trans.sk = public/language/sk/admin/manage/users.json +trans.sr = public/language/sr/admin/manage/users.json +trans.sv = public/language/sv/admin/manage/users.json + +[o:nodebb:p:nodebb:r:admin-menu] +file_filter = public/language//admin/menu.json +source_file = public/language/en-GB/admin/menu.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/admin/menu.json +trans.th = public/language/th/admin/menu.json +trans.vi = public/language/vi/admin/menu.json +trans.zh_CN = public/language/zh-CN/admin/menu.json +trans.hr = public/language/hr/admin/menu.json +trans.ko = public/language/ko/admin/menu.json +trans.it = public/language/it/admin/menu.json +trans.lt = public/language/lt/admin/menu.json +trans.pl = public/language/pl/admin/menu.json +trans.sc = public/language/sc/admin/menu.json +trans.sv = public/language/sv/admin/menu.json +trans.en@pirate = public/language/en-x-pirate/admin/menu.json +trans.fr = public/language/fr/admin/menu.json +trans.de = public/language/de/admin/menu.json +trans.ms = public/language/ms/admin/menu.json +trans.sq_AL = public/language/sq-AL/admin/menu.json +trans.bg = public/language/bg/admin/menu.json +trans.da = public/language/da/admin/menu.json +trans.es = public/language/es/admin/menu.json +trans.hy = public/language/hy/admin/menu.json +trans.id = public/language/id/admin/menu.json +trans.ja = public/language/ja/admin/menu.json +trans.ro = public/language/ro/admin/menu.json +trans.rw = public/language/rw/admin/menu.json +trans.ar = public/language/ar/admin/menu.json +trans.en_US = public/language/en-US/admin/menu.json +trans.sl = public/language/sl/admin/menu.json +trans.uk = public/language/uk/admin/menu.json +trans.he = public/language/he/admin/menu.json +trans.hu = public/language/hu/admin/menu.json +trans.sr = public/language/sr/admin/menu.json +trans.cs = public/language/cs/admin/menu.json +trans.fa_IR = public/language/fa-IR/admin/menu.json +trans.sk = public/language/sk/admin/menu.json +trans.tr = public/language/tr/admin/menu.json +trans.fi = public/language/fi/admin/menu.json +trans.nl = public/language/nl/admin/menu.json +trans.pt_BR = public/language/pt-BR/admin/menu.json +trans.zh_TW = public/language/zh-TW/admin/menu.json +trans.el = public/language/el/admin/menu.json +trans.gl = public/language/gl/admin/menu.json +trans.lv = public/language/lv/admin/menu.json +trans.nb = public/language/nb/admin/menu.json +trans.pt_PT = public/language/pt-PT/admin/menu.json +trans.bn = public/language/bn/admin/menu.json +trans.et = public/language/et/admin/menu.json + +[o:nodebb:p:nodebb:r:admin-settings-advanced] +file_filter = public/language//admin/settings/advanced.json +source_file = public/language/en-GB/admin/settings/advanced.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/advanced.json +trans.sc = public/language/sc/admin/settings/advanced.json +trans.ar = public/language/ar/admin/settings/advanced.json +trans.bn = public/language/bn/admin/settings/advanced.json +trans.el = public/language/el/admin/settings/advanced.json +trans.fa_IR = public/language/fa-IR/admin/settings/advanced.json +trans.fr = public/language/fr/admin/settings/advanced.json +trans.hy = public/language/hy/admin/settings/advanced.json +trans.bg = public/language/bg/admin/settings/advanced.json +trans.lv = public/language/lv/admin/settings/advanced.json +trans.pt_BR = public/language/pt-BR/admin/settings/advanced.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/advanced.json +trans.es = public/language/es/admin/settings/advanced.json +trans.id = public/language/id/admin/settings/advanced.json +trans.rw = public/language/rw/admin/settings/advanced.json +trans.sl = public/language/sl/admin/settings/advanced.json +trans.it = public/language/it/admin/settings/advanced.json +trans.nb = public/language/nb/admin/settings/advanced.json +trans.pt_PT = public/language/pt-PT/admin/settings/advanced.json +trans.sq_AL = public/language/sq-AL/admin/settings/advanced.json +trans.sr = public/language/sr/admin/settings/advanced.json +trans.zh_CN = public/language/zh-CN/admin/settings/advanced.json +trans.zh_TW = public/language/zh-TW/admin/settings/advanced.json +trans.cs = public/language/cs/admin/settings/advanced.json +trans.en_US = public/language/en-US/admin/settings/advanced.json +trans.hr = public/language/hr/admin/settings/advanced.json +trans.pl = public/language/pl/admin/settings/advanced.json +trans.ru = public/language/ru/admin/settings/advanced.json +trans.sv = public/language/sv/admin/settings/advanced.json +trans.vi = public/language/vi/admin/settings/advanced.json +trans.de = public/language/de/admin/settings/advanced.json +trans.et = public/language/et/admin/settings/advanced.json +trans.fi = public/language/fi/admin/settings/advanced.json +trans.ro = public/language/ro/admin/settings/advanced.json +trans.sk = public/language/sk/admin/settings/advanced.json +trans.uk = public/language/uk/admin/settings/advanced.json +trans.da = public/language/da/admin/settings/advanced.json +trans.gl = public/language/gl/admin/settings/advanced.json +trans.he = public/language/he/admin/settings/advanced.json +trans.hu = public/language/hu/admin/settings/advanced.json +trans.ja = public/language/ja/admin/settings/advanced.json +trans.tr = public/language/tr/admin/settings/advanced.json +trans.lt = public/language/lt/admin/settings/advanced.json +trans.ms = public/language/ms/admin/settings/advanced.json +trans.nl = public/language/nl/admin/settings/advanced.json +trans.th = public/language/th/admin/settings/advanced.json + +[o:nodebb:p:nodebb:r:admin-settings-api] +file_filter = public/language//admin/settings/api.json +source_file = public/language/en-GB/admin/settings/api.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/admin/settings/api.json +trans.lv = public/language/lv/admin/settings/api.json +trans.nl = public/language/nl/admin/settings/api.json +trans.rw = public/language/rw/admin/settings/api.json +trans.sl = public/language/sl/admin/settings/api.json +trans.bn = public/language/bn/admin/settings/api.json +trans.de = public/language/de/admin/settings/api.json +trans.el = public/language/el/admin/settings/api.json +trans.en_US = public/language/en-US/admin/settings/api.json +trans.fi = public/language/fi/admin/settings/api.json +trans.he = public/language/he/admin/settings/api.json +trans.hr = public/language/hr/admin/settings/api.json +trans.hy = public/language/hy/admin/settings/api.json +trans.ja = public/language/ja/admin/settings/api.json +trans.ko = public/language/ko/admin/settings/api.json +trans.ms = public/language/ms/admin/settings/api.json +trans.pt_BR = public/language/pt-BR/admin/settings/api.json +trans.zh_CN = public/language/zh-CN/admin/settings/api.json +trans.zh_TW = public/language/zh-TW/admin/settings/api.json +trans.cs = public/language/cs/admin/settings/api.json +trans.it = public/language/it/admin/settings/api.json +trans.nb = public/language/nb/admin/settings/api.json +trans.pt_PT = public/language/pt-PT/admin/settings/api.json +trans.ru = public/language/ru/admin/settings/api.json +trans.uk = public/language/uk/admin/settings/api.json +trans.vi = public/language/vi/admin/settings/api.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/api.json +trans.fr = public/language/fr/admin/settings/api.json +trans.lt = public/language/lt/admin/settings/api.json +trans.sr = public/language/sr/admin/settings/api.json +trans.fa_IR = public/language/fa-IR/admin/settings/api.json +trans.sq_AL = public/language/sq-AL/admin/settings/api.json +trans.th = public/language/th/admin/settings/api.json +trans.da = public/language/da/admin/settings/api.json +trans.gl = public/language/gl/admin/settings/api.json +trans.pl = public/language/pl/admin/settings/api.json +trans.ar = public/language/ar/admin/settings/api.json +trans.es = public/language/es/admin/settings/api.json +trans.hu = public/language/hu/admin/settings/api.json +trans.sc = public/language/sc/admin/settings/api.json +trans.bg = public/language/bg/admin/settings/api.json +trans.id = public/language/id/admin/settings/api.json +trans.ro = public/language/ro/admin/settings/api.json +trans.sk = public/language/sk/admin/settings/api.json +trans.sv = public/language/sv/admin/settings/api.json +trans.tr = public/language/tr/admin/settings/api.json + +[o:nodebb:p:nodebb:r:admin-settings-chat] +file_filter = public/language//admin/settings/chat.json +source_file = public/language/en-GB/admin/settings/chat.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/chat.json +trans.es = public/language/es/admin/settings/chat.json +trans.et = public/language/et/admin/settings/chat.json +trans.ms = public/language/ms/admin/settings/chat.json +trans.sk = public/language/sk/admin/settings/chat.json +trans.sq_AL = public/language/sq-AL/admin/settings/chat.json +trans.da = public/language/da/admin/settings/chat.json +trans.de = public/language/de/admin/settings/chat.json +trans.en_US = public/language/en-US/admin/settings/chat.json +trans.fa_IR = public/language/fa-IR/admin/settings/chat.json +trans.fr = public/language/fr/admin/settings/chat.json +trans.id = public/language/id/admin/settings/chat.json +trans.ro = public/language/ro/admin/settings/chat.json +trans.el = public/language/el/admin/settings/chat.json +trans.hr = public/language/hr/admin/settings/chat.json +trans.ja = public/language/ja/admin/settings/chat.json +trans.ko = public/language/ko/admin/settings/chat.json +trans.nb = public/language/nb/admin/settings/chat.json +trans.nl = public/language/nl/admin/settings/chat.json +trans.uk = public/language/uk/admin/settings/chat.json +trans.he = public/language/he/admin/settings/chat.json +trans.sl = public/language/sl/admin/settings/chat.json +trans.sr = public/language/sr/admin/settings/chat.json +trans.cs = public/language/cs/admin/settings/chat.json +trans.pl = public/language/pl/admin/settings/chat.json +trans.pt_BR = public/language/pt-BR/admin/settings/chat.json +trans.sv = public/language/sv/admin/settings/chat.json +trans.zh_CN = public/language/zh-CN/admin/settings/chat.json +trans.bg = public/language/bg/admin/settings/chat.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/chat.json +trans.hu = public/language/hu/admin/settings/chat.json +trans.ru = public/language/ru/admin/settings/chat.json +trans.rw = public/language/rw/admin/settings/chat.json +trans.tr = public/language/tr/admin/settings/chat.json +trans.bn = public/language/bn/admin/settings/chat.json +trans.hy = public/language/hy/admin/settings/chat.json +trans.lt = public/language/lt/admin/settings/chat.json +trans.lv = public/language/lv/admin/settings/chat.json +trans.th = public/language/th/admin/settings/chat.json +trans.fi = public/language/fi/admin/settings/chat.json +trans.gl = public/language/gl/admin/settings/chat.json +trans.it = public/language/it/admin/settings/chat.json +trans.pt_PT = public/language/pt-PT/admin/settings/chat.json +trans.sc = public/language/sc/admin/settings/chat.json +trans.vi = public/language/vi/admin/settings/chat.json +trans.zh_TW = public/language/zh-TW/admin/settings/chat.json + +[o:nodebb:p:nodebb:r:admin-settings-cookies] +file_filter = public/language//admin/settings/cookies.json +source_file = public/language/en-GB/admin/settings/cookies.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/admin/settings/cookies.json +trans.th = public/language/th/admin/settings/cookies.json +trans.zh_CN = public/language/zh-CN/admin/settings/cookies.json +trans.en_US = public/language/en-US/admin/settings/cookies.json +trans.lt = public/language/lt/admin/settings/cookies.json +trans.pl = public/language/pl/admin/settings/cookies.json +trans.ro = public/language/ro/admin/settings/cookies.json +trans.rw = public/language/rw/admin/settings/cookies.json +trans.sk = public/language/sk/admin/settings/cookies.json +trans.tr = public/language/tr/admin/settings/cookies.json +trans.ar = public/language/ar/admin/settings/cookies.json +trans.da = public/language/da/admin/settings/cookies.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/cookies.json +trans.gl = public/language/gl/admin/settings/cookies.json +trans.hu = public/language/hu/admin/settings/cookies.json +trans.vi = public/language/vi/admin/settings/cookies.json +trans.el = public/language/el/admin/settings/cookies.json +trans.et = public/language/et/admin/settings/cookies.json +trans.lv = public/language/lv/admin/settings/cookies.json +trans.ru = public/language/ru/admin/settings/cookies.json +trans.uk = public/language/uk/admin/settings/cookies.json +trans.ko = public/language/ko/admin/settings/cookies.json +trans.sv = public/language/sv/admin/settings/cookies.json +trans.bn = public/language/bn/admin/settings/cookies.json +trans.de = public/language/de/admin/settings/cookies.json +trans.he = public/language/he/admin/settings/cookies.json +trans.hy = public/language/hy/admin/settings/cookies.json +trans.it = public/language/it/admin/settings/cookies.json +trans.cs = public/language/cs/admin/settings/cookies.json +trans.hr = public/language/hr/admin/settings/cookies.json +trans.ja = public/language/ja/admin/settings/cookies.json +trans.pt_PT = public/language/pt-PT/admin/settings/cookies.json +trans.nb = public/language/nb/admin/settings/cookies.json +trans.sc = public/language/sc/admin/settings/cookies.json +trans.bg = public/language/bg/admin/settings/cookies.json +trans.fi = public/language/fi/admin/settings/cookies.json +trans.fr = public/language/fr/admin/settings/cookies.json +trans.id = public/language/id/admin/settings/cookies.json +trans.ms = public/language/ms/admin/settings/cookies.json +trans.zh_TW = public/language/zh-TW/admin/settings/cookies.json +trans.es = public/language/es/admin/settings/cookies.json +trans.fa_IR = public/language/fa-IR/admin/settings/cookies.json +trans.nl = public/language/nl/admin/settings/cookies.json +trans.sl = public/language/sl/admin/settings/cookies.json +trans.sq_AL = public/language/sq-AL/admin/settings/cookies.json +trans.pt_BR = public/language/pt-BR/admin/settings/cookies.json + +[o:nodebb:p:nodebb:r:admin-settings-email] +file_filter = public/language//admin/settings/email.json +source_file = public/language/en-GB/admin/settings/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/email.json +trans.tr = public/language/tr/admin/settings/email.json +trans.uk = public/language/uk/admin/settings/email.json +trans.ar = public/language/ar/admin/settings/email.json +trans.ja = public/language/ja/admin/settings/email.json +trans.pt_PT = public/language/pt-PT/admin/settings/email.json +trans.sr = public/language/sr/admin/settings/email.json +trans.ms = public/language/ms/admin/settings/email.json +trans.nb = public/language/nb/admin/settings/email.json +trans.ru = public/language/ru/admin/settings/email.json +trans.sk = public/language/sk/admin/settings/email.json +trans.fr = public/language/fr/admin/settings/email.json +trans.he = public/language/he/admin/settings/email.json +trans.id = public/language/id/admin/settings/email.json +trans.it = public/language/it/admin/settings/email.json +trans.sl = public/language/sl/admin/settings/email.json +trans.sq_AL = public/language/sq-AL/admin/settings/email.json +trans.hr = public/language/hr/admin/settings/email.json +trans.hu = public/language/hu/admin/settings/email.json +trans.ko = public/language/ko/admin/settings/email.json +trans.zh_TW = public/language/zh-TW/admin/settings/email.json +trans.bn = public/language/bn/admin/settings/email.json +trans.fi = public/language/fi/admin/settings/email.json +trans.pt_BR = public/language/pt-BR/admin/settings/email.json +trans.es = public/language/es/admin/settings/email.json +trans.pl = public/language/pl/admin/settings/email.json +trans.ro = public/language/ro/admin/settings/email.json +trans.rw = public/language/rw/admin/settings/email.json +trans.bg = public/language/bg/admin/settings/email.json +trans.cs = public/language/cs/admin/settings/email.json +trans.el = public/language/el/admin/settings/email.json +trans.en_US = public/language/en-US/admin/settings/email.json +trans.zh_CN = public/language/zh-CN/admin/settings/email.json +trans.fa_IR = public/language/fa-IR/admin/settings/email.json +trans.gl = public/language/gl/admin/settings/email.json +trans.hy = public/language/hy/admin/settings/email.json +trans.lv = public/language/lv/admin/settings/email.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/email.json +trans.et = public/language/et/admin/settings/email.json +trans.lt = public/language/lt/admin/settings/email.json +trans.th = public/language/th/admin/settings/email.json +trans.vi = public/language/vi/admin/settings/email.json +trans.da = public/language/da/admin/settings/email.json +trans.de = public/language/de/admin/settings/email.json +trans.nl = public/language/nl/admin/settings/email.json +trans.sc = public/language/sc/admin/settings/email.json + +[o:nodebb:p:nodebb:r:admin-settings-general] +file_filter = public/language//admin/settings/general.json +source_file = public/language/en-GB/admin/settings/general.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ko = public/language/ko/admin/settings/general.json +trans.ro = public/language/ro/admin/settings/general.json +trans.sc = public/language/sc/admin/settings/general.json +trans.sk = public/language/sk/admin/settings/general.json +trans.sv = public/language/sv/admin/settings/general.json +trans.uk = public/language/uk/admin/settings/general.json +trans.fr = public/language/fr/admin/settings/general.json +trans.gl = public/language/gl/admin/settings/general.json +trans.zh_CN = public/language/zh-CN/admin/settings/general.json +trans.lt = public/language/lt/admin/settings/general.json +trans.rw = public/language/rw/admin/settings/general.json +trans.th = public/language/th/admin/settings/general.json +trans.tr = public/language/tr/admin/settings/general.json +trans.zh_TW = public/language/zh-TW/admin/settings/general.json +trans.de = public/language/de/admin/settings/general.json +trans.ja = public/language/ja/admin/settings/general.json +trans.en_US = public/language/en-US/admin/settings/general.json +trans.et = public/language/et/admin/settings/general.json +trans.fi = public/language/fi/admin/settings/general.json +trans.hy = public/language/hy/admin/settings/general.json +trans.id = public/language/id/admin/settings/general.json +trans.ru = public/language/ru/admin/settings/general.json +trans.cs = public/language/cs/admin/settings/general.json +trans.el = public/language/el/admin/settings/general.json +trans.sl = public/language/sl/admin/settings/general.json +trans.hu = public/language/hu/admin/settings/general.json +trans.it = public/language/it/admin/settings/general.json +trans.nl = public/language/nl/admin/settings/general.json +trans.pl = public/language/pl/admin/settings/general.json +trans.es = public/language/es/admin/settings/general.json +trans.fa_IR = public/language/fa-IR/admin/settings/general.json +trans.ms = public/language/ms/admin/settings/general.json +trans.nb = public/language/nb/admin/settings/general.json +trans.sr = public/language/sr/admin/settings/general.json +trans.da = public/language/da/admin/settings/general.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/general.json +trans.pt_PT = public/language/pt-PT/admin/settings/general.json +trans.he = public/language/he/admin/settings/general.json +trans.lv = public/language/lv/admin/settings/general.json +trans.pt_BR = public/language/pt-BR/admin/settings/general.json +trans.bn = public/language/bn/admin/settings/general.json +trans.hr = public/language/hr/admin/settings/general.json +trans.sq_AL = public/language/sq-AL/admin/settings/general.json +trans.vi = public/language/vi/admin/settings/general.json +trans.ar = public/language/ar/admin/settings/general.json +trans.bg = public/language/bg/admin/settings/general.json + +[o:nodebb:p:nodebb:r:admin-settings-group] +file_filter = public/language//admin/settings/group.json +source_file = public/language/en-GB/admin/settings/group.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sc = public/language/sc/admin/settings/group.json +trans.en_US = public/language/en-US/admin/settings/group.json +trans.et = public/language/et/admin/settings/group.json +trans.fr = public/language/fr/admin/settings/group.json +trans.it = public/language/it/admin/settings/group.json +trans.nb = public/language/nb/admin/settings/group.json +trans.es = public/language/es/admin/settings/group.json +trans.fa_IR = public/language/fa-IR/admin/settings/group.json +trans.gl = public/language/gl/admin/settings/group.json +trans.rw = public/language/rw/admin/settings/group.json +trans.sr = public/language/sr/admin/settings/group.json +trans.sq_AL = public/language/sq-AL/admin/settings/group.json +trans.th = public/language/th/admin/settings/group.json +trans.vi = public/language/vi/admin/settings/group.json +trans.bn = public/language/bn/admin/settings/group.json +trans.fi = public/language/fi/admin/settings/group.json +trans.hy = public/language/hy/admin/settings/group.json +trans.id = public/language/id/admin/settings/group.json +trans.ms = public/language/ms/admin/settings/group.json +trans.de = public/language/de/admin/settings/group.json +trans.he = public/language/he/admin/settings/group.json +trans.lv = public/language/lv/admin/settings/group.json +trans.pt_PT = public/language/pt-PT/admin/settings/group.json +trans.sk = public/language/sk/admin/settings/group.json +trans.tr = public/language/tr/admin/settings/group.json +trans.uk = public/language/uk/admin/settings/group.json +trans.cs = public/language/cs/admin/settings/group.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/group.json +trans.hu = public/language/hu/admin/settings/group.json +trans.nl = public/language/nl/admin/settings/group.json +trans.ru = public/language/ru/admin/settings/group.json +trans.lt = public/language/lt/admin/settings/group.json +trans.ro = public/language/ro/admin/settings/group.json +trans.sl = public/language/sl/admin/settings/group.json +trans.ar = public/language/ar/admin/settings/group.json +trans.bg = public/language/bg/admin/settings/group.json +trans.da = public/language/da/admin/settings/group.json +trans.hr = public/language/hr/admin/settings/group.json +trans.ko = public/language/ko/admin/settings/group.json +trans.el = public/language/el/admin/settings/group.json +trans.sv = public/language/sv/admin/settings/group.json +trans.ja = public/language/ja/admin/settings/group.json +trans.pl = public/language/pl/admin/settings/group.json +trans.pt_BR = public/language/pt-BR/admin/settings/group.json +trans.zh_CN = public/language/zh-CN/admin/settings/group.json +trans.zh_TW = public/language/zh-TW/admin/settings/group.json + +[o:nodebb:p:nodebb:r:admin-settings-guest] +file_filter = public/language//admin/settings/guest.json +source_file = public/language/en-GB/admin/settings/guest.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/guest.json +trans.da = public/language/da/admin/settings/guest.json +trans.en_US = public/language/en-US/admin/settings/guest.json +trans.lt = public/language/lt/admin/settings/guest.json +trans.ms = public/language/ms/admin/settings/guest.json +trans.nl = public/language/nl/admin/settings/guest.json +trans.ru = public/language/ru/admin/settings/guest.json +trans.sc = public/language/sc/admin/settings/guest.json +trans.sr = public/language/sr/admin/settings/guest.json +trans.th = public/language/th/admin/settings/guest.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/guest.json +trans.it = public/language/it/admin/settings/guest.json +trans.lv = public/language/lv/admin/settings/guest.json +trans.pt_BR = public/language/pt-BR/admin/settings/guest.json +trans.sk = public/language/sk/admin/settings/guest.json +trans.de = public/language/de/admin/settings/guest.json +trans.es = public/language/es/admin/settings/guest.json +trans.hr = public/language/hr/admin/settings/guest.json +trans.pt_PT = public/language/pt-PT/admin/settings/guest.json +trans.rw = public/language/rw/admin/settings/guest.json +trans.sq_AL = public/language/sq-AL/admin/settings/guest.json +trans.el = public/language/el/admin/settings/guest.json +trans.tr = public/language/tr/admin/settings/guest.json +trans.zh_CN = public/language/zh-CN/admin/settings/guest.json +trans.bg = public/language/bg/admin/settings/guest.json +trans.fi = public/language/fi/admin/settings/guest.json +trans.hu = public/language/hu/admin/settings/guest.json +trans.ja = public/language/ja/admin/settings/guest.json +trans.nb = public/language/nb/admin/settings/guest.json +trans.pl = public/language/pl/admin/settings/guest.json +trans.sl = public/language/sl/admin/settings/guest.json +trans.vi = public/language/vi/admin/settings/guest.json +trans.bn = public/language/bn/admin/settings/guest.json +trans.fa_IR = public/language/fa-IR/admin/settings/guest.json +trans.fr = public/language/fr/admin/settings/guest.json +trans.hy = public/language/hy/admin/settings/guest.json +trans.ro = public/language/ro/admin/settings/guest.json +trans.et = public/language/et/admin/settings/guest.json +trans.gl = public/language/gl/admin/settings/guest.json +trans.sv = public/language/sv/admin/settings/guest.json +trans.uk = public/language/uk/admin/settings/guest.json +trans.zh_TW = public/language/zh-TW/admin/settings/guest.json +trans.ar = public/language/ar/admin/settings/guest.json +trans.he = public/language/he/admin/settings/guest.json +trans.id = public/language/id/admin/settings/guest.json +trans.ko = public/language/ko/admin/settings/guest.json + +[o:nodebb:p:nodebb:r:admin-settings-homepage] +file_filter = public/language//admin/settings/homepage.json +source_file = public/language/en-GB/admin/settings/homepage.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/admin/settings/homepage.json +trans.tr = public/language/tr/admin/settings/homepage.json +trans.vi = public/language/vi/admin/settings/homepage.json +trans.et = public/language/et/admin/settings/homepage.json +trans.fi = public/language/fi/admin/settings/homepage.json +trans.hy = public/language/hy/admin/settings/homepage.json +trans.ru = public/language/ru/admin/settings/homepage.json +trans.sr = public/language/sr/admin/settings/homepage.json +trans.es = public/language/es/admin/settings/homepage.json +trans.id = public/language/id/admin/settings/homepage.json +trans.lt = public/language/lt/admin/settings/homepage.json +trans.sk = public/language/sk/admin/settings/homepage.json +trans.sq_AL = public/language/sq-AL/admin/settings/homepage.json +trans.th = public/language/th/admin/settings/homepage.json +trans.en_US = public/language/en-US/admin/settings/homepage.json +trans.lv = public/language/lv/admin/settings/homepage.json +trans.pt_PT = public/language/pt-PT/admin/settings/homepage.json +trans.sc = public/language/sc/admin/settings/homepage.json +trans.fa_IR = public/language/fa-IR/admin/settings/homepage.json +trans.he = public/language/he/admin/settings/homepage.json +trans.ms = public/language/ms/admin/settings/homepage.json +trans.cs = public/language/cs/admin/settings/homepage.json +trans.el = public/language/el/admin/settings/homepage.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/homepage.json +trans.gl = public/language/gl/admin/settings/homepage.json +trans.ko = public/language/ko/admin/settings/homepage.json +trans.ar = public/language/ar/admin/settings/homepage.json +trans.bg = public/language/bg/admin/settings/homepage.json +trans.bn = public/language/bn/admin/settings/homepage.json +trans.rw = public/language/rw/admin/settings/homepage.json +trans.zh_CN = public/language/zh-CN/admin/settings/homepage.json +trans.hr = public/language/hr/admin/settings/homepage.json +trans.it = public/language/it/admin/settings/homepage.json +trans.ja = public/language/ja/admin/settings/homepage.json +trans.nl = public/language/nl/admin/settings/homepage.json +trans.ro = public/language/ro/admin/settings/homepage.json +trans.da = public/language/da/admin/settings/homepage.json +trans.de = public/language/de/admin/settings/homepage.json +trans.fr = public/language/fr/admin/settings/homepage.json +trans.sv = public/language/sv/admin/settings/homepage.json +trans.hu = public/language/hu/admin/settings/homepage.json +trans.pt_BR = public/language/pt-BR/admin/settings/homepage.json +trans.sl = public/language/sl/admin/settings/homepage.json +trans.pl = public/language/pl/admin/settings/homepage.json +trans.uk = public/language/uk/admin/settings/homepage.json +trans.zh_TW = public/language/zh-TW/admin/settings/homepage.json + +[o:nodebb:p:nodebb:r:admin-settings-languages] +file_filter = public/language//admin/settings/languages.json +source_file = public/language/en-GB/admin/settings/languages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.en@pirate = public/language/en-x-pirate/admin/settings/languages.json +trans.fa_IR = public/language/fa-IR/admin/settings/languages.json +trans.gl = public/language/gl/admin/settings/languages.json +trans.ro = public/language/ro/admin/settings/languages.json +trans.th = public/language/th/admin/settings/languages.json +trans.hr = public/language/hr/admin/settings/languages.json +trans.hy = public/language/hy/admin/settings/languages.json +trans.sc = public/language/sc/admin/settings/languages.json +trans.vi = public/language/vi/admin/settings/languages.json +trans.tr = public/language/tr/admin/settings/languages.json +trans.cs = public/language/cs/admin/settings/languages.json +trans.et = public/language/et/admin/settings/languages.json +trans.lv = public/language/lv/admin/settings/languages.json +trans.pl = public/language/pl/admin/settings/languages.json +trans.sr = public/language/sr/admin/settings/languages.json +trans.sv = public/language/sv/admin/settings/languages.json +trans.hu = public/language/hu/admin/settings/languages.json +trans.it = public/language/it/admin/settings/languages.json +trans.ja = public/language/ja/admin/settings/languages.json +trans.sl = public/language/sl/admin/settings/languages.json +trans.zh_TW = public/language/zh-TW/admin/settings/languages.json +trans.da = public/language/da/admin/settings/languages.json +trans.fr = public/language/fr/admin/settings/languages.json +trans.he = public/language/he/admin/settings/languages.json +trans.id = public/language/id/admin/settings/languages.json +trans.sq_AL = public/language/sq-AL/admin/settings/languages.json +trans.uk = public/language/uk/admin/settings/languages.json +trans.bn = public/language/bn/admin/settings/languages.json +trans.fi = public/language/fi/admin/settings/languages.json +trans.ko = public/language/ko/admin/settings/languages.json +trans.pt_BR = public/language/pt-BR/admin/settings/languages.json +trans.sk = public/language/sk/admin/settings/languages.json +trans.pt_PT = public/language/pt-PT/admin/settings/languages.json +trans.ru = public/language/ru/admin/settings/languages.json +trans.ar = public/language/ar/admin/settings/languages.json +trans.bg = public/language/bg/admin/settings/languages.json +trans.de = public/language/de/admin/settings/languages.json +trans.el = public/language/el/admin/settings/languages.json +trans.lt = public/language/lt/admin/settings/languages.json +trans.nl = public/language/nl/admin/settings/languages.json +trans.zh_CN = public/language/zh-CN/admin/settings/languages.json +trans.en_US = public/language/en-US/admin/settings/languages.json +trans.es = public/language/es/admin/settings/languages.json +trans.ms = public/language/ms/admin/settings/languages.json +trans.nb = public/language/nb/admin/settings/languages.json +trans.rw = public/language/rw/admin/settings/languages.json + +[o:nodebb:p:nodebb:r:admin-settings-navigation] +file_filter = public/language//admin/settings/navigation.json +source_file = public/language/en-GB/admin/settings/navigation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/navigation.json +trans.bn = public/language/bn/admin/settings/navigation.json +trans.es = public/language/es/admin/settings/navigation.json +trans.fa_IR = public/language/fa-IR/admin/settings/navigation.json +trans.nl = public/language/nl/admin/settings/navigation.json +trans.pt_BR = public/language/pt-BR/admin/settings/navigation.json +trans.rw = public/language/rw/admin/settings/navigation.json +trans.zh_CN = public/language/zh-CN/admin/settings/navigation.json +trans.da = public/language/da/admin/settings/navigation.json +trans.it = public/language/it/admin/settings/navigation.json +trans.ms = public/language/ms/admin/settings/navigation.json +trans.pt_PT = public/language/pt-PT/admin/settings/navigation.json +trans.vi = public/language/vi/admin/settings/navigation.json +trans.en_US = public/language/en-US/admin/settings/navigation.json +trans.fr = public/language/fr/admin/settings/navigation.json +trans.hu = public/language/hu/admin/settings/navigation.json +trans.hy = public/language/hy/admin/settings/navigation.json +trans.ja = public/language/ja/admin/settings/navigation.json +trans.lt = public/language/lt/admin/settings/navigation.json +trans.ru = public/language/ru/admin/settings/navigation.json +trans.sk = public/language/sk/admin/settings/navigation.json +trans.sr = public/language/sr/admin/settings/navigation.json +trans.de = public/language/de/admin/settings/navigation.json +trans.et = public/language/et/admin/settings/navigation.json +trans.fi = public/language/fi/admin/settings/navigation.json +trans.gl = public/language/gl/admin/settings/navigation.json +trans.sc = public/language/sc/admin/settings/navigation.json +trans.sl = public/language/sl/admin/settings/navigation.json +trans.th = public/language/th/admin/settings/navigation.json +trans.bg = public/language/bg/admin/settings/navigation.json +trans.cs = public/language/cs/admin/settings/navigation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/navigation.json +trans.ro = public/language/ro/admin/settings/navigation.json +trans.sq_AL = public/language/sq-AL/admin/settings/navigation.json +trans.tr = public/language/tr/admin/settings/navigation.json +trans.zh_TW = public/language/zh-TW/admin/settings/navigation.json +trans.ar = public/language/ar/admin/settings/navigation.json +trans.hr = public/language/hr/admin/settings/navigation.json +trans.id = public/language/id/admin/settings/navigation.json +trans.ko = public/language/ko/admin/settings/navigation.json +trans.nb = public/language/nb/admin/settings/navigation.json +trans.pl = public/language/pl/admin/settings/navigation.json +trans.sv = public/language/sv/admin/settings/navigation.json +trans.el = public/language/el/admin/settings/navigation.json +trans.he = public/language/he/admin/settings/navigation.json +trans.lv = public/language/lv/admin/settings/navigation.json + +[o:nodebb:p:nodebb:r:admin-settings-notifications] +file_filter = public/language//admin/settings/notifications.json +source_file = public/language/en-GB/admin/settings/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/admin/settings/notifications.json +trans.fi = public/language/fi/admin/settings/notifications.json +trans.id = public/language/id/admin/settings/notifications.json +trans.pt_PT = public/language/pt-PT/admin/settings/notifications.json +trans.rw = public/language/rw/admin/settings/notifications.json +trans.ar = public/language/ar/admin/settings/notifications.json +trans.bn = public/language/bn/admin/settings/notifications.json +trans.el = public/language/el/admin/settings/notifications.json +trans.en_US = public/language/en-US/admin/settings/notifications.json +trans.sk = public/language/sk/admin/settings/notifications.json +trans.sr = public/language/sr/admin/settings/notifications.json +trans.sv = public/language/sv/admin/settings/notifications.json +trans.th = public/language/th/admin/settings/notifications.json +trans.cs = public/language/cs/admin/settings/notifications.json +trans.it = public/language/it/admin/settings/notifications.json +trans.ru = public/language/ru/admin/settings/notifications.json +trans.sq_AL = public/language/sq-AL/admin/settings/notifications.json +trans.vi = public/language/vi/admin/settings/notifications.json +trans.fr = public/language/fr/admin/settings/notifications.json +trans.hy = public/language/hy/admin/settings/notifications.json +trans.sl = public/language/sl/admin/settings/notifications.json +trans.uk = public/language/uk/admin/settings/notifications.json +trans.ms = public/language/ms/admin/settings/notifications.json +trans.nl = public/language/nl/admin/settings/notifications.json +trans.ro = public/language/ro/admin/settings/notifications.json +trans.sc = public/language/sc/admin/settings/notifications.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/notifications.json +trans.gl = public/language/gl/admin/settings/notifications.json +trans.he = public/language/he/admin/settings/notifications.json +trans.hu = public/language/hu/admin/settings/notifications.json +trans.tr = public/language/tr/admin/settings/notifications.json +trans.zh_CN = public/language/zh-CN/admin/settings/notifications.json +trans.ko = public/language/ko/admin/settings/notifications.json +trans.lv = public/language/lv/admin/settings/notifications.json +trans.nb = public/language/nb/admin/settings/notifications.json +trans.pl = public/language/pl/admin/settings/notifications.json +trans.bg = public/language/bg/admin/settings/notifications.json +trans.da = public/language/da/admin/settings/notifications.json +trans.de = public/language/de/admin/settings/notifications.json +trans.hr = public/language/hr/admin/settings/notifications.json +trans.pt_BR = public/language/pt-BR/admin/settings/notifications.json +trans.et = public/language/et/admin/settings/notifications.json +trans.lt = public/language/lt/admin/settings/notifications.json +trans.es = public/language/es/admin/settings/notifications.json +trans.fa_IR = public/language/fa-IR/admin/settings/notifications.json +trans.ja = public/language/ja/admin/settings/notifications.json + +[o:nodebb:p:nodebb:r:admin-settings-pagination] +file_filter = public/language//admin/settings/pagination.json +source_file = public/language/en-GB/admin/settings/pagination.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/admin/settings/pagination.json +trans.th = public/language/th/admin/settings/pagination.json +trans.de = public/language/de/admin/settings/pagination.json +trans.ru = public/language/ru/admin/settings/pagination.json +trans.rw = public/language/rw/admin/settings/pagination.json +trans.sc = public/language/sc/admin/settings/pagination.json +trans.sk = public/language/sk/admin/settings/pagination.json +trans.lv = public/language/lv/admin/settings/pagination.json +trans.ar = public/language/ar/admin/settings/pagination.json +trans.el = public/language/el/admin/settings/pagination.json +trans.en_US = public/language/en-US/admin/settings/pagination.json +trans.et = public/language/et/admin/settings/pagination.json +trans.fr = public/language/fr/admin/settings/pagination.json +trans.bg = public/language/bg/admin/settings/pagination.json +trans.fi = public/language/fi/admin/settings/pagination.json +trans.ja = public/language/ja/admin/settings/pagination.json +trans.ms = public/language/ms/admin/settings/pagination.json +trans.uk = public/language/uk/admin/settings/pagination.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/pagination.json +trans.hu = public/language/hu/admin/settings/pagination.json +trans.ko = public/language/ko/admin/settings/pagination.json +trans.lt = public/language/lt/admin/settings/pagination.json +trans.nl = public/language/nl/admin/settings/pagination.json +trans.hr = public/language/hr/admin/settings/pagination.json +trans.pl = public/language/pl/admin/settings/pagination.json +trans.pt_BR = public/language/pt-BR/admin/settings/pagination.json +trans.cs = public/language/cs/admin/settings/pagination.json +trans.da = public/language/da/admin/settings/pagination.json +trans.es = public/language/es/admin/settings/pagination.json +trans.gl = public/language/gl/admin/settings/pagination.json +trans.he = public/language/he/admin/settings/pagination.json +trans.pt_PT = public/language/pt-PT/admin/settings/pagination.json +trans.ro = public/language/ro/admin/settings/pagination.json +trans.id = public/language/id/admin/settings/pagination.json +trans.tr = public/language/tr/admin/settings/pagination.json +trans.vi = public/language/vi/admin/settings/pagination.json +trans.fa_IR = public/language/fa-IR/admin/settings/pagination.json +trans.it = public/language/it/admin/settings/pagination.json +trans.sl = public/language/sl/admin/settings/pagination.json +trans.zh_CN = public/language/zh-CN/admin/settings/pagination.json +trans.zh_TW = public/language/zh-TW/admin/settings/pagination.json +trans.bn = public/language/bn/admin/settings/pagination.json +trans.hy = public/language/hy/admin/settings/pagination.json +trans.nb = public/language/nb/admin/settings/pagination.json +trans.sr = public/language/sr/admin/settings/pagination.json +trans.sv = public/language/sv/admin/settings/pagination.json + +[o:nodebb:p:nodebb:r:admin-settings-post] +file_filter = public/language//admin/settings/post.json +source_file = public/language/en-GB/admin/settings/post.json +source_lang = en_GB +type = KEYVALUEJSON +trans.id = public/language/id/admin/settings/post.json +trans.bn = public/language/bn/admin/settings/post.json +trans.da = public/language/da/admin/settings/post.json +trans.de = public/language/de/admin/settings/post.json +trans.en_US = public/language/en-US/admin/settings/post.json +trans.ms = public/language/ms/admin/settings/post.json +trans.ro = public/language/ro/admin/settings/post.json +trans.zh_TW = public/language/zh-TW/admin/settings/post.json +trans.cs = public/language/cs/admin/settings/post.json +trans.he = public/language/he/admin/settings/post.json +trans.ja = public/language/ja/admin/settings/post.json +trans.ko = public/language/ko/admin/settings/post.json +trans.hr = public/language/hr/admin/settings/post.json +trans.sq_AL = public/language/sq-AL/admin/settings/post.json +trans.lv = public/language/lv/admin/settings/post.json +trans.nl = public/language/nl/admin/settings/post.json +trans.pt_PT = public/language/pt-PT/admin/settings/post.json +trans.sr = public/language/sr/admin/settings/post.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/post.json +trans.et = public/language/et/admin/settings/post.json +trans.hu = public/language/hu/admin/settings/post.json +trans.it = public/language/it/admin/settings/post.json +trans.th = public/language/th/admin/settings/post.json +trans.gl = public/language/gl/admin/settings/post.json +trans.nb = public/language/nb/admin/settings/post.json +trans.sc = public/language/sc/admin/settings/post.json +trans.zh_CN = public/language/zh-CN/admin/settings/post.json +trans.rw = public/language/rw/admin/settings/post.json +trans.sv = public/language/sv/admin/settings/post.json +trans.vi = public/language/vi/admin/settings/post.json +trans.ar = public/language/ar/admin/settings/post.json +trans.el = public/language/el/admin/settings/post.json +trans.fa_IR = public/language/fa-IR/admin/settings/post.json +trans.fi = public/language/fi/admin/settings/post.json +trans.ru = public/language/ru/admin/settings/post.json +trans.bg = public/language/bg/admin/settings/post.json +trans.es = public/language/es/admin/settings/post.json +trans.hy = public/language/hy/admin/settings/post.json +trans.pt_BR = public/language/pt-BR/admin/settings/post.json +trans.sl = public/language/sl/admin/settings/post.json +trans.tr = public/language/tr/admin/settings/post.json +trans.uk = public/language/uk/admin/settings/post.json +trans.fr = public/language/fr/admin/settings/post.json +trans.lt = public/language/lt/admin/settings/post.json +trans.pl = public/language/pl/admin/settings/post.json +trans.sk = public/language/sk/admin/settings/post.json + +[o:nodebb:p:nodebb:r:admin-settings-reputation] +file_filter = public/language//admin/settings/reputation.json +source_file = public/language/en-GB/admin/settings/reputation.json +source_lang = en_GB +type = KEYVALUEJSON +trans.fi = public/language/fi/admin/settings/reputation.json +trans.ja = public/language/ja/admin/settings/reputation.json +trans.lt = public/language/lt/admin/settings/reputation.json +trans.pl = public/language/pl/admin/settings/reputation.json +trans.ro = public/language/ro/admin/settings/reputation.json +trans.bg = public/language/bg/admin/settings/reputation.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/reputation.json +trans.fa_IR = public/language/fa-IR/admin/settings/reputation.json +trans.sl = public/language/sl/admin/settings/reputation.json +trans.sv = public/language/sv/admin/settings/reputation.json +trans.uk = public/language/uk/admin/settings/reputation.json +trans.sr = public/language/sr/admin/settings/reputation.json +trans.zh_CN = public/language/zh-CN/admin/settings/reputation.json +trans.ar = public/language/ar/admin/settings/reputation.json +trans.el = public/language/el/admin/settings/reputation.json +trans.es = public/language/es/admin/settings/reputation.json +trans.sc = public/language/sc/admin/settings/reputation.json +trans.hr = public/language/hr/admin/settings/reputation.json +trans.ko = public/language/ko/admin/settings/reputation.json +trans.nb = public/language/nb/admin/settings/reputation.json +trans.bn = public/language/bn/admin/settings/reputation.json +trans.de = public/language/de/admin/settings/reputation.json +trans.et = public/language/et/admin/settings/reputation.json +trans.rw = public/language/rw/admin/settings/reputation.json +trans.th = public/language/th/admin/settings/reputation.json +trans.zh_TW = public/language/zh-TW/admin/settings/reputation.json +trans.fr = public/language/fr/admin/settings/reputation.json +trans.it = public/language/it/admin/settings/reputation.json +trans.ru = public/language/ru/admin/settings/reputation.json +trans.pt_PT = public/language/pt-PT/admin/settings/reputation.json +trans.sk = public/language/sk/admin/settings/reputation.json +trans.id = public/language/id/admin/settings/reputation.json +trans.ms = public/language/ms/admin/settings/reputation.json +trans.nl = public/language/nl/admin/settings/reputation.json +trans.he = public/language/he/admin/settings/reputation.json +trans.sq_AL = public/language/sq-AL/admin/settings/reputation.json +trans.tr = public/language/tr/admin/settings/reputation.json +trans.cs = public/language/cs/admin/settings/reputation.json +trans.da = public/language/da/admin/settings/reputation.json +trans.en_US = public/language/en-US/admin/settings/reputation.json +trans.lv = public/language/lv/admin/settings/reputation.json +trans.pt_BR = public/language/pt-BR/admin/settings/reputation.json +trans.vi = public/language/vi/admin/settings/reputation.json +trans.gl = public/language/gl/admin/settings/reputation.json +trans.hu = public/language/hu/admin/settings/reputation.json +trans.hy = public/language/hy/admin/settings/reputation.json + +[o:nodebb:p:nodebb:r:admin-settings-social] +file_filter = public/language//admin/settings/social.json +source_file = public/language/en-GB/admin/settings/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nl = public/language/nl/admin/settings/social.json +trans.sc = public/language/sc/admin/settings/social.json +trans.sv = public/language/sv/admin/settings/social.json +trans.rw = public/language/rw/admin/settings/social.json +trans.bn = public/language/bn/admin/settings/social.json +trans.hr = public/language/hr/admin/settings/social.json +trans.id = public/language/id/admin/settings/social.json +trans.pt_PT = public/language/pt-PT/admin/settings/social.json +trans.de = public/language/de/admin/settings/social.json +trans.hu = public/language/hu/admin/settings/social.json +trans.pt_BR = public/language/pt-BR/admin/settings/social.json +trans.ja = public/language/ja/admin/settings/social.json +trans.sq_AL = public/language/sq-AL/admin/settings/social.json +trans.zh_TW = public/language/zh-TW/admin/settings/social.json +trans.cs = public/language/cs/admin/settings/social.json +trans.en_US = public/language/en-US/admin/settings/social.json +trans.fi = public/language/fi/admin/settings/social.json +trans.nb = public/language/nb/admin/settings/social.json +trans.pl = public/language/pl/admin/settings/social.json +trans.th = public/language/th/admin/settings/social.json +trans.bg = public/language/bg/admin/settings/social.json +trans.lt = public/language/lt/admin/settings/social.json +trans.lv = public/language/lv/admin/settings/social.json +trans.ko = public/language/ko/admin/settings/social.json +trans.es = public/language/es/admin/settings/social.json +trans.fr = public/language/fr/admin/settings/social.json +trans.he = public/language/he/admin/settings/social.json +trans.fa_IR = public/language/fa-IR/admin/settings/social.json +trans.hy = public/language/hy/admin/settings/social.json +trans.ms = public/language/ms/admin/settings/social.json +trans.ru = public/language/ru/admin/settings/social.json +trans.sk = public/language/sk/admin/settings/social.json +trans.ar = public/language/ar/admin/settings/social.json +trans.el = public/language/el/admin/settings/social.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/social.json +trans.uk = public/language/uk/admin/settings/social.json +trans.sl = public/language/sl/admin/settings/social.json +trans.sr = public/language/sr/admin/settings/social.json +trans.tr = public/language/tr/admin/settings/social.json +trans.it = public/language/it/admin/settings/social.json +trans.ro = public/language/ro/admin/settings/social.json +trans.vi = public/language/vi/admin/settings/social.json +trans.zh_CN = public/language/zh-CN/admin/settings/social.json +trans.da = public/language/da/admin/settings/social.json +trans.et = public/language/et/admin/settings/social.json +trans.gl = public/language/gl/admin/settings/social.json + +[o:nodebb:p:nodebb:r:admin-settings-sockets] +file_filter = public/language//admin/settings/sockets.json +source_file = public/language/en-GB/admin/settings/sockets.json +source_lang = en_GB +type = KEYVALUEJSON +trans.uk = public/language/uk/admin/settings/sockets.json +trans.en_US = public/language/en-US/admin/settings/sockets.json +trans.gl = public/language/gl/admin/settings/sockets.json +trans.ja = public/language/ja/admin/settings/sockets.json +trans.pt_BR = public/language/pt-BR/admin/settings/sockets.json +trans.sc = public/language/sc/admin/settings/sockets.json +trans.tr = public/language/tr/admin/settings/sockets.json +trans.da = public/language/da/admin/settings/sockets.json +trans.lv = public/language/lv/admin/settings/sockets.json +trans.sk = public/language/sk/admin/settings/sockets.json +trans.sr = public/language/sr/admin/settings/sockets.json +trans.vi = public/language/vi/admin/settings/sockets.json +trans.ar = public/language/ar/admin/settings/sockets.json +trans.cs = public/language/cs/admin/settings/sockets.json +trans.de = public/language/de/admin/settings/sockets.json +trans.hy = public/language/hy/admin/settings/sockets.json +trans.id = public/language/id/admin/settings/sockets.json +trans.rw = public/language/rw/admin/settings/sockets.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sockets.json +trans.fi = public/language/fi/admin/settings/sockets.json +trans.it = public/language/it/admin/settings/sockets.json +trans.ro = public/language/ro/admin/settings/sockets.json +trans.nb = public/language/nb/admin/settings/sockets.json +trans.sq_AL = public/language/sq-AL/admin/settings/sockets.json +trans.bg = public/language/bg/admin/settings/sockets.json +trans.bn = public/language/bn/admin/settings/sockets.json +trans.es = public/language/es/admin/settings/sockets.json +trans.fr = public/language/fr/admin/settings/sockets.json +trans.hr = public/language/hr/admin/settings/sockets.json +trans.ko = public/language/ko/admin/settings/sockets.json +trans.zh_TW = public/language/zh-TW/admin/settings/sockets.json +trans.el = public/language/el/admin/settings/sockets.json +trans.he = public/language/he/admin/settings/sockets.json +trans.ms = public/language/ms/admin/settings/sockets.json +trans.sv = public/language/sv/admin/settings/sockets.json +trans.et = public/language/et/admin/settings/sockets.json +trans.pl = public/language/pl/admin/settings/sockets.json +trans.ru = public/language/ru/admin/settings/sockets.json +trans.zh_CN = public/language/zh-CN/admin/settings/sockets.json +trans.th = public/language/th/admin/settings/sockets.json +trans.fa_IR = public/language/fa-IR/admin/settings/sockets.json +trans.hu = public/language/hu/admin/settings/sockets.json +trans.lt = public/language/lt/admin/settings/sockets.json +trans.nl = public/language/nl/admin/settings/sockets.json +trans.pt_PT = public/language/pt-PT/admin/settings/sockets.json +trans.sl = public/language/sl/admin/settings/sockets.json + +[o:nodebb:p:nodebb:r:admin-settings-sounds] +file_filter = public/language//admin/settings/sounds.json +source_file = public/language/en-GB/admin/settings/sounds.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/admin/settings/sounds.json +trans.de = public/language/de/admin/settings/sounds.json +trans.el = public/language/el/admin/settings/sounds.json +trans.es = public/language/es/admin/settings/sounds.json +trans.he = public/language/he/admin/settings/sounds.json +trans.it = public/language/it/admin/settings/sounds.json +trans.pt_BR = public/language/pt-BR/admin/settings/sounds.json +trans.sq_AL = public/language/sq-AL/admin/settings/sounds.json +trans.vi = public/language/vi/admin/settings/sounds.json +trans.hr = public/language/hr/admin/settings/sounds.json +trans.hu = public/language/hu/admin/settings/sounds.json +trans.bg = public/language/bg/admin/settings/sounds.json +trans.ja = public/language/ja/admin/settings/sounds.json +trans.lt = public/language/lt/admin/settings/sounds.json +trans.nl = public/language/nl/admin/settings/sounds.json +trans.ru = public/language/ru/admin/settings/sounds.json +trans.cs = public/language/cs/admin/settings/sounds.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/sounds.json +trans.fa_IR = public/language/fa-IR/admin/settings/sounds.json +trans.fi = public/language/fi/admin/settings/sounds.json +trans.nb = public/language/nb/admin/settings/sounds.json +trans.th = public/language/th/admin/settings/sounds.json +trans.ar = public/language/ar/admin/settings/sounds.json +trans.da = public/language/da/admin/settings/sounds.json +trans.gl = public/language/gl/admin/settings/sounds.json +trans.lv = public/language/lv/admin/settings/sounds.json +trans.ms = public/language/ms/admin/settings/sounds.json +trans.sc = public/language/sc/admin/settings/sounds.json +trans.sr = public/language/sr/admin/settings/sounds.json +trans.bn = public/language/bn/admin/settings/sounds.json +trans.en_US = public/language/en-US/admin/settings/sounds.json +trans.hy = public/language/hy/admin/settings/sounds.json +trans.sk = public/language/sk/admin/settings/sounds.json +trans.sl = public/language/sl/admin/settings/sounds.json +trans.uk = public/language/uk/admin/settings/sounds.json +trans.zh_CN = public/language/zh-CN/admin/settings/sounds.json +trans.et = public/language/et/admin/settings/sounds.json +trans.fr = public/language/fr/admin/settings/sounds.json +trans.ko = public/language/ko/admin/settings/sounds.json +trans.ro = public/language/ro/admin/settings/sounds.json +trans.zh_TW = public/language/zh-TW/admin/settings/sounds.json +trans.id = public/language/id/admin/settings/sounds.json +trans.pl = public/language/pl/admin/settings/sounds.json +trans.pt_PT = public/language/pt-PT/admin/settings/sounds.json +trans.rw = public/language/rw/admin/settings/sounds.json +trans.tr = public/language/tr/admin/settings/sounds.json + +[o:nodebb:p:nodebb:r:admin-settings-tags] +file_filter = public/language//admin/settings/tags.json +source_file = public/language/en-GB/admin/settings/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/admin/settings/tags.json +trans.cs = public/language/cs/admin/settings/tags.json +trans.de = public/language/de/admin/settings/tags.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/tags.json +trans.lv = public/language/lv/admin/settings/tags.json +trans.th = public/language/th/admin/settings/tags.json +trans.zh_TW = public/language/zh-TW/admin/settings/tags.json +trans.hu = public/language/hu/admin/settings/tags.json +trans.it = public/language/it/admin/settings/tags.json +trans.pt_BR = public/language/pt-BR/admin/settings/tags.json +trans.rw = public/language/rw/admin/settings/tags.json +trans.sk = public/language/sk/admin/settings/tags.json +trans.sv = public/language/sv/admin/settings/tags.json +trans.ar = public/language/ar/admin/settings/tags.json +trans.gl = public/language/gl/admin/settings/tags.json +trans.ja = public/language/ja/admin/settings/tags.json +trans.lt = public/language/lt/admin/settings/tags.json +trans.sc = public/language/sc/admin/settings/tags.json +trans.zh_CN = public/language/zh-CN/admin/settings/tags.json +trans.ro = public/language/ro/admin/settings/tags.json +trans.bn = public/language/bn/admin/settings/tags.json +trans.hr = public/language/hr/admin/settings/tags.json +trans.ko = public/language/ko/admin/settings/tags.json +trans.nb = public/language/nb/admin/settings/tags.json +trans.el = public/language/el/admin/settings/tags.json +trans.et = public/language/et/admin/settings/tags.json +trans.he = public/language/he/admin/settings/tags.json +trans.ms = public/language/ms/admin/settings/tags.json +trans.nl = public/language/nl/admin/settings/tags.json +trans.sl = public/language/sl/admin/settings/tags.json +trans.tr = public/language/tr/admin/settings/tags.json +trans.es = public/language/es/admin/settings/tags.json +trans.fr = public/language/fr/admin/settings/tags.json +trans.hy = public/language/hy/admin/settings/tags.json +trans.pl = public/language/pl/admin/settings/tags.json +trans.ru = public/language/ru/admin/settings/tags.json +trans.sq_AL = public/language/sq-AL/admin/settings/tags.json +trans.sr = public/language/sr/admin/settings/tags.json +trans.uk = public/language/uk/admin/settings/tags.json +trans.da = public/language/da/admin/settings/tags.json +trans.en_US = public/language/en-US/admin/settings/tags.json +trans.fa_IR = public/language/fa-IR/admin/settings/tags.json +trans.fi = public/language/fi/admin/settings/tags.json +trans.id = public/language/id/admin/settings/tags.json +trans.pt_PT = public/language/pt-PT/admin/settings/tags.json +trans.vi = public/language/vi/admin/settings/tags.json + +[o:nodebb:p:nodebb:r:admin-settings-uploads] +file_filter = public/language//admin/settings/uploads.json +source_file = public/language/en-GB/admin/settings/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ar = public/language/ar/admin/settings/uploads.json +trans.it = public/language/it/admin/settings/uploads.json +trans.ko = public/language/ko/admin/settings/uploads.json +trans.sk = public/language/sk/admin/settings/uploads.json +trans.sq_AL = public/language/sq-AL/admin/settings/uploads.json +trans.fa_IR = public/language/fa-IR/admin/settings/uploads.json +trans.he = public/language/he/admin/settings/uploads.json +trans.ja = public/language/ja/admin/settings/uploads.json +trans.nb = public/language/nb/admin/settings/uploads.json +trans.nl = public/language/nl/admin/settings/uploads.json +trans.zh_TW = public/language/zh-TW/admin/settings/uploads.json +trans.ro = public/language/ro/admin/settings/uploads.json +trans.sl = public/language/sl/admin/settings/uploads.json +trans.da = public/language/da/admin/settings/uploads.json +trans.es = public/language/es/admin/settings/uploads.json +trans.et = public/language/et/admin/settings/uploads.json +trans.hr = public/language/hr/admin/settings/uploads.json +trans.id = public/language/id/admin/settings/uploads.json +trans.pt_BR = public/language/pt-BR/admin/settings/uploads.json +trans.uk = public/language/uk/admin/settings/uploads.json +trans.vi = public/language/vi/admin/settings/uploads.json +trans.th = public/language/th/admin/settings/uploads.json +trans.bg = public/language/bg/admin/settings/uploads.json +trans.el = public/language/el/admin/settings/uploads.json +trans.hu = public/language/hu/admin/settings/uploads.json +trans.lv = public/language/lv/admin/settings/uploads.json +trans.ms = public/language/ms/admin/settings/uploads.json +trans.pt_PT = public/language/pt-PT/admin/settings/uploads.json +trans.lt = public/language/lt/admin/settings/uploads.json +trans.bn = public/language/bn/admin/settings/uploads.json +trans.cs = public/language/cs/admin/settings/uploads.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/uploads.json +trans.fi = public/language/fi/admin/settings/uploads.json +trans.fr = public/language/fr/admin/settings/uploads.json +trans.hy = public/language/hy/admin/settings/uploads.json +trans.gl = public/language/gl/admin/settings/uploads.json +trans.ru = public/language/ru/admin/settings/uploads.json +trans.sr = public/language/sr/admin/settings/uploads.json +trans.sv = public/language/sv/admin/settings/uploads.json +trans.zh_CN = public/language/zh-CN/admin/settings/uploads.json +trans.de = public/language/de/admin/settings/uploads.json +trans.en_US = public/language/en-US/admin/settings/uploads.json +trans.pl = public/language/pl/admin/settings/uploads.json +trans.rw = public/language/rw/admin/settings/uploads.json +trans.sc = public/language/sc/admin/settings/uploads.json +trans.tr = public/language/tr/admin/settings/uploads.json + +[o:nodebb:p:nodebb:r:admin-settings-user] +file_filter = public/language//admin/settings/user.json +source_file = public/language/en-GB/admin/settings/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/admin/settings/user.json +trans.el = public/language/el/admin/settings/user.json +trans.he = public/language/he/admin/settings/user.json +trans.ro = public/language/ro/admin/settings/user.json +trans.sq_AL = public/language/sq-AL/admin/settings/user.json +trans.gl = public/language/gl/admin/settings/user.json +trans.hu = public/language/hu/admin/settings/user.json +trans.nb = public/language/nb/admin/settings/user.json +trans.sv = public/language/sv/admin/settings/user.json +trans.uk = public/language/uk/admin/settings/user.json +trans.cs = public/language/cs/admin/settings/user.json +trans.en_US = public/language/en-US/admin/settings/user.json +trans.fa_IR = public/language/fa-IR/admin/settings/user.json +trans.fi = public/language/fi/admin/settings/user.json +trans.lv = public/language/lv/admin/settings/user.json +trans.ms = public/language/ms/admin/settings/user.json +trans.pl = public/language/pl/admin/settings/user.json +trans.ru = public/language/ru/admin/settings/user.json +trans.zh_CN = public/language/zh-CN/admin/settings/user.json +trans.hr = public/language/hr/admin/settings/user.json +trans.id = public/language/id/admin/settings/user.json +trans.it = public/language/it/admin/settings/user.json +trans.sk = public/language/sk/admin/settings/user.json +trans.sl = public/language/sl/admin/settings/user.json +trans.sr = public/language/sr/admin/settings/user.json +trans.tr = public/language/tr/admin/settings/user.json +trans.vi = public/language/vi/admin/settings/user.json +trans.de = public/language/de/admin/settings/user.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/user.json +trans.hy = public/language/hy/admin/settings/user.json +trans.pt_PT = public/language/pt-PT/admin/settings/user.json +trans.th = public/language/th/admin/settings/user.json +trans.zh_TW = public/language/zh-TW/admin/settings/user.json +trans.bn = public/language/bn/admin/settings/user.json +trans.nl = public/language/nl/admin/settings/user.json +trans.pt_BR = public/language/pt-BR/admin/settings/user.json +trans.rw = public/language/rw/admin/settings/user.json +trans.bg = public/language/bg/admin/settings/user.json +trans.fr = public/language/fr/admin/settings/user.json +trans.ko = public/language/ko/admin/settings/user.json +trans.ar = public/language/ar/admin/settings/user.json +trans.es = public/language/es/admin/settings/user.json +trans.et = public/language/et/admin/settings/user.json +trans.ja = public/language/ja/admin/settings/user.json +trans.lt = public/language/lt/admin/settings/user.json +trans.sc = public/language/sc/admin/settings/user.json + +[o:nodebb:p:nodebb:r:admin-settings-web-crawler] +file_filter = public/language//admin/settings/web-crawler.json +source_file = public/language/en-GB/admin/settings/web-crawler.json +source_lang = en_GB +type = KEYVALUEJSON +trans.cs = public/language/cs/admin/settings/web-crawler.json +trans.es = public/language/es/admin/settings/web-crawler.json +trans.fr = public/language/fr/admin/settings/web-crawler.json +trans.ko = public/language/ko/admin/settings/web-crawler.json +trans.pl = public/language/pl/admin/settings/web-crawler.json +trans.tr = public/language/tr/admin/settings/web-crawler.json +trans.uk = public/language/uk/admin/settings/web-crawler.json +trans.bg = public/language/bg/admin/settings/web-crawler.json +trans.el = public/language/el/admin/settings/web-crawler.json +trans.en@pirate = public/language/en-x-pirate/admin/settings/web-crawler.json +trans.fa_IR = public/language/fa-IR/admin/settings/web-crawler.json +trans.ms = public/language/ms/admin/settings/web-crawler.json +trans.th = public/language/th/admin/settings/web-crawler.json +trans.gl = public/language/gl/admin/settings/web-crawler.json +trans.id = public/language/id/admin/settings/web-crawler.json +trans.sk = public/language/sk/admin/settings/web-crawler.json +trans.rw = public/language/rw/admin/settings/web-crawler.json +trans.da = public/language/da/admin/settings/web-crawler.json +trans.hr = public/language/hr/admin/settings/web-crawler.json +trans.hu = public/language/hu/admin/settings/web-crawler.json +trans.ja = public/language/ja/admin/settings/web-crawler.json +trans.lv = public/language/lv/admin/settings/web-crawler.json +trans.nl = public/language/nl/admin/settings/web-crawler.json +trans.pt_BR = public/language/pt-BR/admin/settings/web-crawler.json +trans.vi = public/language/vi/admin/settings/web-crawler.json +trans.en_US = public/language/en-US/admin/settings/web-crawler.json +trans.et = public/language/et/admin/settings/web-crawler.json +trans.fi = public/language/fi/admin/settings/web-crawler.json +trans.sq_AL = public/language/sq-AL/admin/settings/web-crawler.json +trans.sv = public/language/sv/admin/settings/web-crawler.json +trans.ar = public/language/ar/admin/settings/web-crawler.json +trans.de = public/language/de/admin/settings/web-crawler.json +trans.hy = public/language/hy/admin/settings/web-crawler.json +trans.nb = public/language/nb/admin/settings/web-crawler.json +trans.ro = public/language/ro/admin/settings/web-crawler.json +trans.sr = public/language/sr/admin/settings/web-crawler.json +trans.zh_TW = public/language/zh-TW/admin/settings/web-crawler.json +trans.he = public/language/he/admin/settings/web-crawler.json +trans.it = public/language/it/admin/settings/web-crawler.json +trans.lt = public/language/lt/admin/settings/web-crawler.json +trans.ru = public/language/ru/admin/settings/web-crawler.json +trans.sl = public/language/sl/admin/settings/web-crawler.json +trans.zh_CN = public/language/zh-CN/admin/settings/web-crawler.json +trans.bn = public/language/bn/admin/settings/web-crawler.json +trans.pt_PT = public/language/pt-PT/admin/settings/web-crawler.json +trans.sc = public/language/sc/admin/settings/web-crawler.json + +[o:nodebb:p:nodebb:r:themes-harmony] +file_filter = public/language//themes/harmony.json +source_file = public/language/en-GB/themes/harmony.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/harmony.json +trans.bg = public/language/bg/themes/harmony.json +trans.hr = public/language/hr/themes/harmony.json +trans.hy = public/language/hy/themes/harmony.json +trans.sk = public/language/sk/themes/harmony.json +trans.sl = public/language/sl/themes/harmony.json +trans.sq_AL = public/language/sq-AL/themes/harmony.json +trans.sv = public/language/sv/themes/harmony.json +trans.vi = public/language/vi/themes/harmony.json +trans.da = public/language/da/themes/harmony.json +trans.en_US = public/language/en-US/themes/harmony.json +trans.gl = public/language/gl/themes/harmony.json +trans.ko = public/language/ko/themes/harmony.json +trans.lt = public/language/lt/themes/harmony.json +trans.pt_BR = public/language/pt-BR/themes/harmony.json +trans.hu = public/language/hu/themes/harmony.json +trans.lv = public/language/lv/themes/harmony.json +trans.ro = public/language/ro/themes/harmony.json +trans.ru = public/language/ru/themes/harmony.json +trans.sr = public/language/sr/themes/harmony.json +trans.bn = public/language/bn/themes/harmony.json +trans.he = public/language/he/themes/harmony.json +trans.nl = public/language/nl/themes/harmony.json +trans.sc = public/language/sc/themes/harmony.json +trans.zh_CN = public/language/zh-CN/themes/harmony.json +trans.fi = public/language/fi/themes/harmony.json +trans.ja = public/language/ja/themes/harmony.json +trans.nb = public/language/nb/themes/harmony.json +trans.pl = public/language/pl/themes/harmony.json +trans.zh_TW = public/language/zh-TW/themes/harmony.json +trans.ar = public/language/ar/themes/harmony.json +trans.cs = public/language/cs/themes/harmony.json +trans.fa_IR = public/language/fa-IR/themes/harmony.json +trans.ms = public/language/ms/themes/harmony.json +trans.pt_PT = public/language/pt-PT/themes/harmony.json +trans.tr = public/language/tr/themes/harmony.json +trans.en@pirate = public/language/en-x-pirate/themes/harmony.json +trans.fr = public/language/fr/themes/harmony.json +trans.id = public/language/id/themes/harmony.json +trans.uk = public/language/uk/themes/harmony.json +trans.de = public/language/de/themes/harmony.json +trans.el = public/language/el/themes/harmony.json +trans.es = public/language/es/themes/harmony.json +trans.et = public/language/et/themes/harmony.json +trans.it = public/language/it/themes/harmony.json +trans.rw = public/language/rw/themes/harmony.json + +[o:nodebb:p:nodebb:r:themes-persona] +file_filter = public/language//themes/persona.json +source_file = public/language/en-GB/themes/persona.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/themes/persona.json +trans.bg = public/language/bg/themes/persona.json +trans.hr = public/language/hr/themes/persona.json +trans.hy = public/language/hy/themes/persona.json +trans.sk = public/language/sk/themes/persona.json +trans.sl = public/language/sl/themes/persona.json +trans.sq_AL = public/language/sq-AL/themes/persona.json +trans.sv = public/language/sv/themes/persona.json +trans.vi = public/language/vi/themes/persona.json +trans.da = public/language/da/themes/persona.json +trans.en_US = public/language/en-US/themes/persona.json +trans.gl = public/language/gl/themes/persona.json +trans.ko = public/language/ko/themes/persona.json +trans.lt = public/language/lt/themes/persona.json +trans.pt_BR = public/language/pt-BR/themes/persona.json +trans.hu = public/language/hu/themes/persona.json +trans.lv = public/language/lv/themes/persona.json +trans.ro = public/language/ro/themes/persona.json +trans.ru = public/language/ru/themes/persona.json +trans.sr = public/language/sr/themes/persona.json +trans.bn = public/language/bn/themes/persona.json +trans.he = public/language/he/themes/persona.json +trans.nl = public/language/nl/themes/persona.json +trans.sc = public/language/sc/themes/persona.json +trans.zh_CN = public/language/zh-CN/themes/persona.json +trans.fi = public/language/fi/themes/persona.json +trans.ja = public/language/ja/themes/persona.json +trans.nb = public/language/nb/themes/persona.json +trans.pl = public/language/pl/themes/persona.json +trans.zh_TW = public/language/zh-TW/themes/persona.json +trans.ar = public/language/ar/themes/persona.json +trans.cs = public/language/cs/themes/persona.json +trans.fa_IR = public/language/fa-IR/themes/persona.json +trans.ms = public/language/ms/themes/persona.json +trans.pt_PT = public/language/pt-PT/themes/persona.json +trans.tr = public/language/tr/themes/persona.json +trans.en@pirate = public/language/en-x-pirate/themes/persona.json +trans.fr = public/language/fr/themes/persona.json +trans.id = public/language/id/themes/persona.json +trans.uk = public/language/uk/themes/persona.json +trans.de = public/language/de/themes/persona.json +trans.el = public/language/el/themes/persona.json +trans.es = public/language/es/themes/persona.json +trans.et = public/language/et/themes/persona.json +trans.it = public/language/it/themes/persona.json +trans.rw = public/language/rw/themes/persona.json + + +[o:nodebb:p:nodebb:r:aria] +file_filter = public/language//aria.json +source_file = public/language/en-GB/aria.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/aria.json +trans.bg = public/language/bg/aria.json +trans.hr = public/language/hr/aria.json +trans.hy = public/language/hy/aria.json +trans.sk = public/language/sk/aria.json +trans.sl = public/language/sl/aria.json +trans.sq_AL = public/language/sq-AL/aria.json +trans.sv = public/language/sv/aria.json +trans.vi = public/language/vi/aria.json +trans.da = public/language/da/aria.json +trans.en_US = public/language/en-US/aria.json +trans.gl = public/language/gl/aria.json +trans.ko = public/language/ko/aria.json +trans.lt = public/language/lt/aria.json +trans.pt_BR = public/language/pt-BR/aria.json +trans.hu = public/language/hu/aria.json +trans.lv = public/language/lv/aria.json +trans.ro = public/language/ro/aria.json +trans.ru = public/language/ru/aria.json +trans.sr = public/language/sr/aria.json +trans.bn = public/language/bn/aria.json +trans.he = public/language/he/aria.json +trans.nl = public/language/nl/aria.json +trans.sc = public/language/sc/aria.json +trans.zh_CN = public/language/zh-CN/aria.json +trans.fi = public/language/fi/aria.json +trans.ja = public/language/ja/aria.json +trans.nb = public/language/nb/aria.json +trans.pl = public/language/pl/aria.json +trans.zh_TW = public/language/zh-TW/aria.json +trans.ar = public/language/ar/aria.json +trans.cs = public/language/cs/aria.json +trans.fa_IR = public/language/fa-IR/aria.json +trans.ms = public/language/ms/aria.json +trans.pt_PT = public/language/pt-PT/aria.json +trans.tr = public/language/tr/aria.json +trans.en@pirate = public/language/en-x-pirate/aria.json +trans.fr = public/language/fr/aria.json +trans.id = public/language/id/aria.json +trans.uk = public/language/uk/aria.json +trans.de = public/language/de/aria.json +trans.el = public/language/el/aria.json +trans.es = public/language/es/aria.json +trans.et = public/language/et/aria.json +trans.it = public/language/it/aria.json +trans.rw = public/language/rw/aria.json + +[o:nodebb:p:nodebb:r:category] +file_filter = public/language//category.json +source_file = public/language/en-GB/category.json +source_lang = en_GB +type = KEYVALUEJSON +trans.th = public/language/th/category.json +trans.bg = public/language/bg/category.json +trans.hr = public/language/hr/category.json +trans.hy = public/language/hy/category.json +trans.sk = public/language/sk/category.json +trans.sl = public/language/sl/category.json +trans.sq_AL = public/language/sq-AL/category.json +trans.sv = public/language/sv/category.json +trans.vi = public/language/vi/category.json +trans.da = public/language/da/category.json +trans.en_US = public/language/en-US/category.json +trans.gl = public/language/gl/category.json +trans.ko = public/language/ko/category.json +trans.lt = public/language/lt/category.json +trans.pt_BR = public/language/pt-BR/category.json +trans.hu = public/language/hu/category.json +trans.lv = public/language/lv/category.json +trans.ro = public/language/ro/category.json +trans.ru = public/language/ru/category.json +trans.sr = public/language/sr/category.json +trans.bn = public/language/bn/category.json +trans.he = public/language/he/category.json +trans.nl = public/language/nl/category.json +trans.sc = public/language/sc/category.json +trans.zh_CN = public/language/zh-CN/category.json +trans.fi = public/language/fi/category.json +trans.ja = public/language/ja/category.json +trans.nb = public/language/nb/category.json +trans.pl = public/language/pl/category.json +trans.zh_TW = public/language/zh-TW/category.json +trans.ar = public/language/ar/category.json +trans.cs = public/language/cs/category.json +trans.fa_IR = public/language/fa-IR/category.json +trans.ms = public/language/ms/category.json +trans.pt_PT = public/language/pt-PT/category.json +trans.tr = public/language/tr/category.json +trans.en@pirate = public/language/en-x-pirate/category.json +trans.fr = public/language/fr/category.json +trans.id = public/language/id/category.json +trans.uk = public/language/uk/category.json +trans.de = public/language/de/category.json +trans.el = public/language/el/category.json +trans.es = public/language/es/category.json +trans.et = public/language/et/category.json +trans.it = public/language/it/category.json +trans.rw = public/language/rw/category.json + +[o:nodebb:p:nodebb:r:email] +file_filter = public/language//email.json +source_file = public/language/en-GB/email.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sk = public/language/sk/email.json +trans.zh_TW = public/language/zh-TW/email.json +trans.el = public/language/el/email.json +trans.fa_IR = public/language/fa-IR/email.json +trans.fi = public/language/fi/email.json +trans.id = public/language/id/email.json +trans.ko = public/language/ko/email.json +trans.en@pirate = public/language/en-x-pirate/email.json +trans.it = public/language/it/email.json +trans.lv = public/language/lv/email.json +trans.uk = public/language/uk/email.json +trans.zh_CN = public/language/zh-CN/email.json +trans.sv = public/language/sv/email.json +trans.bn = public/language/bn/email.json +trans.cs = public/language/cs/email.json +trans.ms = public/language/ms/email.json +trans.ro = public/language/ro/email.json +trans.ru = public/language/ru/email.json +trans.de = public/language/de/email.json +trans.hu = public/language/hu/email.json +trans.hy = public/language/hy/email.json +trans.sl = public/language/sl/email.json +trans.th = public/language/th/email.json +trans.ar = public/language/ar/email.json +trans.es = public/language/es/email.json +trans.gl = public/language/gl/email.json +trans.he = public/language/he/email.json +trans.ja = public/language/ja/email.json +trans.bg = public/language/bg/email.json +trans.et = public/language/et/email.json +trans.hr = public/language/hr/email.json +trans.pl = public/language/pl/email.json +trans.da = public/language/da/email.json +trans.fr = public/language/fr/email.json +trans.lt = public/language/lt/email.json +trans.pt_PT = public/language/pt-PT/email.json +trans.sc = public/language/sc/email.json +trans.sq_AL = public/language/sq-AL/email.json +trans.sr = public/language/sr/email.json +trans.tr = public/language/tr/email.json +trans.en_US = public/language/en-US/email.json +trans.nb = public/language/nb/email.json +trans.nl = public/language/nl/email.json +trans.pt_BR = public/language/pt-BR/email.json +trans.rw = public/language/rw/email.json +trans.vi = public/language/vi/email.json + +[o:nodebb:p:nodebb:r:error] +file_filter = public/language//error.json +source_file = public/language/en-GB/error.json +source_lang = en_GB +type = KEYVALUEJSON +trans.de = public/language/de/error.json +trans.ko = public/language/ko/error.json +trans.lv = public/language/lv/error.json +trans.sk = public/language/sk/error.json +trans.cs = public/language/cs/error.json +trans.it = public/language/it/error.json +trans.nl = public/language/nl/error.json +trans.sc = public/language/sc/error.json +trans.sl = public/language/sl/error.json +trans.sq_AL = public/language/sq-AL/error.json +trans.tr = public/language/tr/error.json +trans.hu = public/language/hu/error.json +trans.fr = public/language/fr/error.json +trans.hy = public/language/hy/error.json +trans.zh_CN = public/language/zh-CN/error.json +trans.ar = public/language/ar/error.json +trans.et = public/language/et/error.json +trans.fi = public/language/fi/error.json +trans.he = public/language/he/error.json +trans.hr = public/language/hr/error.json +trans.lt = public/language/lt/error.json +trans.ru = public/language/ru/error.json +trans.rw = public/language/rw/error.json +trans.bn = public/language/bn/error.json +trans.vi = public/language/vi/error.json +trans.fa_IR = public/language/fa-IR/error.json +trans.gl = public/language/gl/error.json +trans.nb = public/language/nb/error.json +trans.pl = public/language/pl/error.json +trans.ro = public/language/ro/error.json +trans.uk = public/language/uk/error.json +trans.es = public/language/es/error.json +trans.el = public/language/el/error.json +trans.en@pirate = public/language/en-x-pirate/error.json +trans.en_US = public/language/en-US/error.json +trans.ms = public/language/ms/error.json +trans.pt_PT = public/language/pt-PT/error.json +trans.bg = public/language/bg/error.json +trans.pt_BR = public/language/pt-BR/error.json +trans.sv = public/language/sv/error.json +trans.zh_TW = public/language/zh-TW/error.json +trans.da = public/language/da/error.json +trans.ja = public/language/ja/error.json +trans.sr = public/language/sr/error.json +trans.th = public/language/th/error.json +trans.id = public/language/id/error.json + +[o:nodebb:p:nodebb:r:flags] +file_filter = public/language//flags.json +source_file = public/language/en-GB/flags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.nb = public/language/nb/flags.json +trans.ru = public/language/ru/flags.json +trans.sc = public/language/sc/flags.json +trans.fi = public/language/fi/flags.json +trans.hr = public/language/hr/flags.json +trans.lv = public/language/lv/flags.json +trans.ms = public/language/ms/flags.json +trans.ja = public/language/ja/flags.json +trans.nl = public/language/nl/flags.json +trans.pt_PT = public/language/pt-PT/flags.json +trans.th = public/language/th/flags.json +trans.el = public/language/el/flags.json +trans.en_US = public/language/en-US/flags.json +trans.gl = public/language/gl/flags.json +trans.hy = public/language/hy/flags.json +trans.vi = public/language/vi/flags.json +trans.rw = public/language/rw/flags.json +trans.sr = public/language/sr/flags.json +trans.zh_TW = public/language/zh-TW/flags.json +trans.sq_AL = public/language/sq-AL/flags.json +trans.sv = public/language/sv/flags.json +trans.fa_IR = public/language/fa-IR/flags.json +trans.id = public/language/id/flags.json +trans.ko = public/language/ko/flags.json +trans.pl = public/language/pl/flags.json +trans.de = public/language/de/flags.json +trans.en@pirate = public/language/en-x-pirate/flags.json +trans.he = public/language/he/flags.json +trans.zh_CN = public/language/zh-CN/flags.json +trans.lt = public/language/lt/flags.json +trans.da = public/language/da/flags.json +trans.es = public/language/es/flags.json +trans.et = public/language/et/flags.json +trans.hu = public/language/hu/flags.json +trans.tr = public/language/tr/flags.json +trans.bn = public/language/bn/flags.json +trans.it = public/language/it/flags.json +trans.pt_BR = public/language/pt-BR/flags.json +trans.sk = public/language/sk/flags.json +trans.ro = public/language/ro/flags.json +trans.sl = public/language/sl/flags.json +trans.ar = public/language/ar/flags.json +trans.bg = public/language/bg/flags.json +trans.cs = public/language/cs/flags.json +trans.fr = public/language/fr/flags.json + +[o:nodebb:p:nodebb:r:global] +file_filter = public/language//global.json +source_file = public/language/en-GB/global.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/global.json +trans.pl = public/language/pl/global.json +trans.ru = public/language/ru/global.json +trans.bn = public/language/bn/global.json +trans.fr = public/language/fr/global.json +trans.hr = public/language/hr/global.json +trans.hy = public/language/hy/global.json +trans.lv = public/language/lv/global.json +trans.fa_IR = public/language/fa-IR/global.json +trans.sl = public/language/sl/global.json +trans.uk = public/language/uk/global.json +trans.sc = public/language/sc/global.json +trans.sv = public/language/sv/global.json +trans.th = public/language/th/global.json +trans.zh_TW = public/language/zh-TW/global.json +trans.hu = public/language/hu/global.json +trans.sk = public/language/sk/global.json +trans.sr = public/language/sr/global.json +trans.tr = public/language/tr/global.json +trans.nb = public/language/nb/global.json +trans.pt_BR = public/language/pt-BR/global.json +trans.pt_PT = public/language/pt-PT/global.json +trans.bg = public/language/bg/global.json +trans.da = public/language/da/global.json +trans.fi = public/language/fi/global.json +trans.id = public/language/id/global.json +trans.lt = public/language/lt/global.json +trans.ro = public/language/ro/global.json +trans.de = public/language/de/global.json +trans.el = public/language/el/global.json +trans.vi = public/language/vi/global.json +trans.zh_CN = public/language/zh-CN/global.json +trans.en_US = public/language/en-US/global.json +trans.et = public/language/et/global.json +trans.gl = public/language/gl/global.json +trans.he = public/language/he/global.json +trans.ko = public/language/ko/global.json +trans.ja = public/language/ja/global.json +trans.nl = public/language/nl/global.json +trans.rw = public/language/rw/global.json +trans.ar = public/language/ar/global.json +trans.cs = public/language/cs/global.json +trans.en@pirate = public/language/en-x-pirate/global.json +trans.es = public/language/es/global.json +trans.it = public/language/it/global.json +trans.sq_AL = public/language/sq-AL/global.json + +[o:nodebb:p:nodebb:r:groups] +file_filter = public/language//groups.json +source_file = public/language/en-GB/groups.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/groups.json +trans.de = public/language/de/groups.json +trans.es = public/language/es/groups.json +trans.sc = public/language/sc/groups.json +trans.sr = public/language/sr/groups.json +trans.da = public/language/da/groups.json +trans.en@pirate = public/language/en-x-pirate/groups.json +trans.hy = public/language/hy/groups.json +trans.pt_PT = public/language/pt-PT/groups.json +trans.ms = public/language/ms/groups.json +trans.nb = public/language/nb/groups.json +trans.ro = public/language/ro/groups.json +trans.vi = public/language/vi/groups.json +trans.fa_IR = public/language/fa-IR/groups.json +trans.he = public/language/he/groups.json +trans.hr = public/language/hr/groups.json +trans.lv = public/language/lv/groups.json +trans.bg = public/language/bg/groups.json +trans.bn = public/language/bn/groups.json +trans.ja = public/language/ja/groups.json +trans.tr = public/language/tr/groups.json +trans.zh_CN = public/language/zh-CN/groups.json +trans.ar = public/language/ar/groups.json +trans.cs = public/language/cs/groups.json +trans.it = public/language/it/groups.json +trans.sk = public/language/sk/groups.json +trans.fi = public/language/fi/groups.json +trans.fr = public/language/fr/groups.json +trans.sq_AL = public/language/sq-AL/groups.json +trans.th = public/language/th/groups.json +trans.id = public/language/id/groups.json +trans.sl = public/language/sl/groups.json +trans.sv = public/language/sv/groups.json +trans.uk = public/language/uk/groups.json +trans.el = public/language/el/groups.json +trans.et = public/language/et/groups.json +trans.gl = public/language/gl/groups.json +trans.hu = public/language/hu/groups.json +trans.pl = public/language/pl/groups.json +trans.pt_BR = public/language/pt-BR/groups.json +trans.ru = public/language/ru/groups.json +trans.rw = public/language/rw/groups.json +trans.en_US = public/language/en-US/groups.json +trans.ko = public/language/ko/groups.json +trans.lt = public/language/lt/groups.json +trans.nl = public/language/nl/groups.json + +[o:nodebb:p:nodebb:r:ip-blacklist] +file_filter = public/language//ip-blacklist.json +source_file = public/language/en-GB/ip-blacklist.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sr = public/language/sr/ip-blacklist.json +trans.et = public/language/et/ip-blacklist.json +trans.fi = public/language/fi/ip-blacklist.json +trans.hr = public/language/hr/ip-blacklist.json +trans.hu = public/language/hu/ip-blacklist.json +trans.ru = public/language/ru/ip-blacklist.json +trans.sk = public/language/sk/ip-blacklist.json +trans.sq_AL = public/language/sq-AL/ip-blacklist.json +trans.zh_CN = public/language/zh-CN/ip-blacklist.json +trans.da = public/language/da/ip-blacklist.json +trans.en@pirate = public/language/en-x-pirate/ip-blacklist.json +trans.he = public/language/he/ip-blacklist.json +trans.hy = public/language/hy/ip-blacklist.json +trans.lv = public/language/lv/ip-blacklist.json +trans.pt_BR = public/language/pt-BR/ip-blacklist.json +trans.sc = public/language/sc/ip-blacklist.json +trans.ar = public/language/ar/ip-blacklist.json +trans.fa_IR = public/language/fa-IR/ip-blacklist.json +trans.fr = public/language/fr/ip-blacklist.json +trans.gl = public/language/gl/ip-blacklist.json +trans.nb = public/language/nb/ip-blacklist.json +trans.sv = public/language/sv/ip-blacklist.json +trans.th = public/language/th/ip-blacklist.json +trans.bn = public/language/bn/ip-blacklist.json +trans.en_US = public/language/en-US/ip-blacklist.json +trans.ja = public/language/ja/ip-blacklist.json +trans.ms = public/language/ms/ip-blacklist.json +trans.nl = public/language/nl/ip-blacklist.json +trans.pt_PT = public/language/pt-PT/ip-blacklist.json +trans.ro = public/language/ro/ip-blacklist.json +trans.es = public/language/es/ip-blacklist.json +trans.id = public/language/id/ip-blacklist.json +trans.it = public/language/it/ip-blacklist.json +trans.uk = public/language/uk/ip-blacklist.json +trans.vi = public/language/vi/ip-blacklist.json +trans.zh_TW = public/language/zh-TW/ip-blacklist.json +trans.bg = public/language/bg/ip-blacklist.json +trans.de = public/language/de/ip-blacklist.json +trans.sl = public/language/sl/ip-blacklist.json +trans.pl = public/language/pl/ip-blacklist.json +trans.rw = public/language/rw/ip-blacklist.json +trans.cs = public/language/cs/ip-blacklist.json +trans.el = public/language/el/ip-blacklist.json +trans.ko = public/language/ko/ip-blacklist.json +trans.lt = public/language/lt/ip-blacklist.json +trans.tr = public/language/tr/ip-blacklist.json + +[o:nodebb:p:nodebb:r:language-1] +file_filter = public/language//language.json +source_file = public/language/en-GB/language.json +source_lang = en_GB +type = KEYVALUEJSON +trans.lt = public/language/lt/language.json +trans.vi = public/language/vi/language.json +trans.sr = public/language/sr/language.json +trans.tr = public/language/tr/language.json +trans.uk = public/language/uk/language.json +trans.bg = public/language/bg/language.json +trans.da = public/language/da/language.json +trans.en@pirate = public/language/en-x-pirate/language.json +trans.hr = public/language/hr/language.json +trans.rw = public/language/rw/language.json +trans.en_US = public/language/en-US/language.json +trans.et = public/language/et/language.json +trans.ja = public/language/ja/language.json +trans.nb = public/language/nb/language.json +trans.sk = public/language/sk/language.json +trans.el = public/language/el/language.json +trans.es = public/language/es/language.json +trans.fi = public/language/fi/language.json +trans.it = public/language/it/language.json +trans.pt_PT = public/language/pt-PT/language.json +trans.ro = public/language/ro/language.json +trans.th = public/language/th/language.json +trans.ar = public/language/ar/language.json +trans.bn = public/language/bn/language.json +trans.de = public/language/de/language.json +trans.ko = public/language/ko/language.json +trans.pl = public/language/pl/language.json +trans.gl = public/language/gl/language.json +trans.sq_AL = public/language/sq-AL/language.json +trans.zh_TW = public/language/zh-TW/language.json +trans.nl = public/language/nl/language.json +trans.ru = public/language/ru/language.json +trans.sc = public/language/sc/language.json +trans.cs = public/language/cs/language.json +trans.fr = public/language/fr/language.json +trans.he = public/language/he/language.json +trans.id = public/language/id/language.json +trans.lv = public/language/lv/language.json +trans.sl = public/language/sl/language.json +trans.sv = public/language/sv/language.json +trans.zh_CN = public/language/zh-CN/language.json +trans.fa_IR = public/language/fa-IR/language.json +trans.hu = public/language/hu/language.json +trans.hy = public/language/hy/language.json +trans.ms = public/language/ms/language.json +trans.pt_BR = public/language/pt-BR/language.json + +[o:nodebb:p:nodebb:r:login] +file_filter = public/language//login.json +source_file = public/language/en-GB/login.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bn = public/language/bn/login.json +trans.cs = public/language/cs/login.json +trans.el = public/language/el/login.json +trans.ja = public/language/ja/login.json +trans.pt_BR = public/language/pt-BR/login.json +trans.ro = public/language/ro/login.json +trans.zh_TW = public/language/zh-TW/login.json +trans.bg = public/language/bg/login.json +trans.pt_PT = public/language/pt-PT/login.json +trans.sr = public/language/sr/login.json +trans.vi = public/language/vi/login.json +trans.zh_CN = public/language/zh-CN/login.json +trans.pl = public/language/pl/login.json +trans.gl = public/language/gl/login.json +trans.ko = public/language/ko/login.json +trans.lv = public/language/lv/login.json +trans.sl = public/language/sl/login.json +trans.sq_AL = public/language/sq-AL/login.json +trans.sv = public/language/sv/login.json +trans.tr = public/language/tr/login.json +trans.es = public/language/es/login.json +trans.sk = public/language/sk/login.json +trans.uk = public/language/uk/login.json +trans.it = public/language/it/login.json +trans.da = public/language/da/login.json +trans.fa_IR = public/language/fa-IR/login.json +trans.fi = public/language/fi/login.json +trans.fr = public/language/fr/login.json +trans.he = public/language/he/login.json +trans.hr = public/language/hr/login.json +trans.ar = public/language/ar/login.json +trans.en_US = public/language/en-US/login.json +trans.hu = public/language/hu/login.json +trans.ms = public/language/ms/login.json +trans.en@pirate = public/language/en-x-pirate/login.json +trans.hy = public/language/hy/login.json +trans.id = public/language/id/login.json +trans.nb = public/language/nb/login.json +trans.ru = public/language/ru/login.json +trans.rw = public/language/rw/login.json +trans.th = public/language/th/login.json +trans.et = public/language/et/login.json +trans.lt = public/language/lt/login.json +trans.nl = public/language/nl/login.json +trans.sc = public/language/sc/login.json +trans.de = public/language/de/login.json + +[o:nodebb:p:nodebb:r:modules] +file_filter = public/language//modules.json +source_file = public/language/en-GB/modules.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sl = public/language/sl/modules.json +trans.sq_AL = public/language/sq-AL/modules.json +trans.da = public/language/da/modules.json +trans.et = public/language/et/modules.json +trans.fr = public/language/fr/modules.json +trans.lt = public/language/lt/modules.json +trans.ms = public/language/ms/modules.json +trans.sk = public/language/sk/modules.json +trans.vi = public/language/vi/modules.json +trans.fa_IR = public/language/fa-IR/modules.json +trans.hr = public/language/hr/modules.json +trans.lv = public/language/lv/modules.json +trans.nb = public/language/nb/modules.json +trans.ro = public/language/ro/modules.json +trans.sv = public/language/sv/modules.json +trans.en@pirate = public/language/en-x-pirate/modules.json +trans.tr = public/language/tr/modules.json +trans.cs = public/language/cs/modules.json +trans.de = public/language/de/modules.json +trans.fi = public/language/fi/modules.json +trans.he = public/language/he/modules.json +trans.hy = public/language/hy/modules.json +trans.sr = public/language/sr/modules.json +trans.el = public/language/el/modules.json +trans.hu = public/language/hu/modules.json +trans.ko = public/language/ko/modules.json +trans.es = public/language/es/modules.json +trans.id = public/language/id/modules.json +trans.nl = public/language/nl/modules.json +trans.sc = public/language/sc/modules.json +trans.th = public/language/th/modules.json +trans.zh_TW = public/language/zh-TW/modules.json +trans.bg = public/language/bg/modules.json +trans.bn = public/language/bn/modules.json +trans.en_US = public/language/en-US/modules.json +trans.it = public/language/it/modules.json +trans.pl = public/language/pl/modules.json +trans.uk = public/language/uk/modules.json +trans.rw = public/language/rw/modules.json +trans.zh_CN = public/language/zh-CN/modules.json +trans.ar = public/language/ar/modules.json +trans.gl = public/language/gl/modules.json +trans.ja = public/language/ja/modules.json +trans.pt_BR = public/language/pt-BR/modules.json +trans.pt_PT = public/language/pt-PT/modules.json +trans.ru = public/language/ru/modules.json + +[o:nodebb:p:nodebb:r:notifications] +file_filter = public/language//notifications.json +source_file = public/language/en-GB/notifications.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ru = public/language/ru/notifications.json +trans.sq_AL = public/language/sq-AL/notifications.json +trans.el = public/language/el/notifications.json +trans.en_US = public/language/en-US/notifications.json +trans.ja = public/language/ja/notifications.json +trans.pl = public/language/pl/notifications.json +trans.sr = public/language/sr/notifications.json +trans.th = public/language/th/notifications.json +trans.tr = public/language/tr/notifications.json +trans.zh_CN = public/language/zh-CN/notifications.json +trans.cs = public/language/cs/notifications.json +trans.de = public/language/de/notifications.json +trans.fa_IR = public/language/fa-IR/notifications.json +trans.sl = public/language/sl/notifications.json +trans.sc = public/language/sc/notifications.json +trans.uk = public/language/uk/notifications.json +trans.bn = public/language/bn/notifications.json +trans.fi = public/language/fi/notifications.json +trans.lt = public/language/lt/notifications.json +trans.pt_PT = public/language/pt-PT/notifications.json +trans.es = public/language/es/notifications.json +trans.gl = public/language/gl/notifications.json +trans.sv = public/language/sv/notifications.json +trans.zh_TW = public/language/zh-TW/notifications.json +trans.pt_BR = public/language/pt-BR/notifications.json +trans.rw = public/language/rw/notifications.json +trans.lv = public/language/lv/notifications.json +trans.bg = public/language/bg/notifications.json +trans.he = public/language/he/notifications.json +trans.hu = public/language/hu/notifications.json +trans.it = public/language/it/notifications.json +trans.nl = public/language/nl/notifications.json +trans.ro = public/language/ro/notifications.json +trans.sk = public/language/sk/notifications.json +trans.vi = public/language/vi/notifications.json +trans.et = public/language/et/notifications.json +trans.hy = public/language/hy/notifications.json +trans.ko = public/language/ko/notifications.json +trans.ms = public/language/ms/notifications.json +trans.hr = public/language/hr/notifications.json +trans.id = public/language/id/notifications.json +trans.nb = public/language/nb/notifications.json +trans.ar = public/language/ar/notifications.json +trans.da = public/language/da/notifications.json +trans.en@pirate = public/language/en-x-pirate/notifications.json +trans.fr = public/language/fr/notifications.json + +[o:nodebb:p:nodebb:r:pages] +file_filter = public/language//pages.json +source_file = public/language/en-GB/pages.json +source_lang = en_GB +type = KEYVALUEJSON +trans.he = public/language/he/pages.json +trans.nb = public/language/nb/pages.json +trans.sv = public/language/sv/pages.json +trans.pt_BR = public/language/pt-BR/pages.json +trans.tr = public/language/tr/pages.json +trans.zh_TW = public/language/zh-TW/pages.json +trans.bn = public/language/bn/pages.json +trans.gl = public/language/gl/pages.json +trans.hr = public/language/hr/pages.json +trans.id = public/language/id/pages.json +trans.lt = public/language/lt/pages.json +trans.zh_CN = public/language/zh-CN/pages.json +trans.bg = public/language/bg/pages.json +trans.et = public/language/et/pages.json +trans.it = public/language/it/pages.json +trans.ro = public/language/ro/pages.json +trans.sl = public/language/sl/pages.json +trans.sk = public/language/sk/pages.json +trans.sr = public/language/sr/pages.json +trans.uk = public/language/uk/pages.json +trans.de = public/language/de/pages.json +trans.en@pirate = public/language/en-x-pirate/pages.json +trans.en_US = public/language/en-US/pages.json +trans.pt_PT = public/language/pt-PT/pages.json +trans.rw = public/language/rw/pages.json +trans.th = public/language/th/pages.json +trans.vi = public/language/vi/pages.json +trans.hu = public/language/hu/pages.json +trans.hy = public/language/hy/pages.json +trans.nl = public/language/nl/pages.json +trans.ru = public/language/ru/pages.json +trans.sc = public/language/sc/pages.json +trans.cs = public/language/cs/pages.json +trans.fi = public/language/fi/pages.json +trans.ko = public/language/ko/pages.json +trans.lv = public/language/lv/pages.json +trans.sq_AL = public/language/sq-AL/pages.json +trans.ar = public/language/ar/pages.json +trans.da = public/language/da/pages.json +trans.es = public/language/es/pages.json +trans.pl = public/language/pl/pages.json +trans.el = public/language/el/pages.json +trans.fa_IR = public/language/fa-IR/pages.json +trans.fr = public/language/fr/pages.json +trans.ja = public/language/ja/pages.json +trans.ms = public/language/ms/pages.json + +[o:nodebb:p:nodebb:r:post-queue] +file_filter = public/language//post-queue.json +source_file = public/language/en-GB/post-queue.json +source_lang = en_GB +type = KEYVALUEJSON +trans.it = public/language/it/post-queue.json +trans.ko = public/language/ko/post-queue.json +trans.lv = public/language/lv/post-queue.json +trans.nl = public/language/nl/post-queue.json +trans.rw = public/language/rw/post-queue.json +trans.da = public/language/da/post-queue.json +trans.de = public/language/de/post-queue.json +trans.el = public/language/el/post-queue.json +trans.sk = public/language/sk/post-queue.json +trans.sc = public/language/sc/post-queue.json +trans.sr = public/language/sr/post-queue.json +trans.tr = public/language/tr/post-queue.json +trans.uk = public/language/uk/post-queue.json +trans.ja = public/language/ja/post-queue.json +trans.ms = public/language/ms/post-queue.json +trans.ru = public/language/ru/post-queue.json +trans.fr = public/language/fr/post-queue.json +trans.hu = public/language/hu/post-queue.json +trans.lt = public/language/lt/post-queue.json +trans.pl = public/language/pl/post-queue.json +trans.ro = public/language/ro/post-queue.json +trans.bn = public/language/bn/post-queue.json +trans.en@pirate = public/language/en-x-pirate/post-queue.json +trans.fa_IR = public/language/fa-IR/post-queue.json +trans.sl = public/language/sl/post-queue.json +trans.vi = public/language/vi/post-queue.json +trans.zh_CN = public/language/zh-CN/post-queue.json +trans.id = public/language/id/post-queue.json +trans.en_US = public/language/en-US/post-queue.json +trans.sq_AL = public/language/sq-AL/post-queue.json +trans.sv = public/language/sv/post-queue.json +trans.zh_TW = public/language/zh-TW/post-queue.json +trans.ar = public/language/ar/post-queue.json +trans.bg = public/language/bg/post-queue.json +trans.cs = public/language/cs/post-queue.json +trans.hr = public/language/hr/post-queue.json +trans.pt_BR = public/language/pt-BR/post-queue.json +trans.th = public/language/th/post-queue.json +trans.es = public/language/es/post-queue.json +trans.et = public/language/et/post-queue.json +trans.gl = public/language/gl/post-queue.json +trans.hy = public/language/hy/post-queue.json +trans.pt_PT = public/language/pt-PT/post-queue.json +trans.fi = public/language/fi/post-queue.json +trans.he = public/language/he/post-queue.json +trans.nb = public/language/nb/post-queue.json + +[o:nodebb:p:nodebb:r:recent] +file_filter = public/language//recent.json +source_file = public/language/en-GB/recent.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/recent.json +trans.sr = public/language/sr/recent.json +trans.sk = public/language/sk/recent.json +trans.uk = public/language/uk/recent.json +trans.bg = public/language/bg/recent.json +trans.cs = public/language/cs/recent.json +trans.da = public/language/da/recent.json +trans.hy = public/language/hy/recent.json +trans.id = public/language/id/recent.json +trans.lv = public/language/lv/recent.json +trans.ar = public/language/ar/recent.json +trans.de = public/language/de/recent.json +trans.es = public/language/es/recent.json +trans.fa_IR = public/language/fa-IR/recent.json +trans.gl = public/language/gl/recent.json +trans.hu = public/language/hu/recent.json +trans.lt = public/language/lt/recent.json +trans.pt_BR = public/language/pt-BR/recent.json +trans.ru = public/language/ru/recent.json +trans.vi = public/language/vi/recent.json +trans.rw = public/language/rw/recent.json +trans.sl = public/language/sl/recent.json +trans.el = public/language/el/recent.json +trans.en_US = public/language/en-US/recent.json +trans.he = public/language/he/recent.json +trans.hr = public/language/hr/recent.json +trans.ro = public/language/ro/recent.json +trans.tr = public/language/tr/recent.json +trans.zh_CN = public/language/zh-CN/recent.json +trans.bn = public/language/bn/recent.json +trans.en@pirate = public/language/en-x-pirate/recent.json +trans.ja = public/language/ja/recent.json +trans.nb = public/language/nb/recent.json +trans.nl = public/language/nl/recent.json +trans.sv = public/language/sv/recent.json +trans.th = public/language/th/recent.json +trans.fr = public/language/fr/recent.json +trans.it = public/language/it/recent.json +trans.ms = public/language/ms/recent.json +trans.pl = public/language/pl/recent.json +trans.pt_PT = public/language/pt-PT/recent.json +trans.et = public/language/et/recent.json +trans.fi = public/language/fi/recent.json +trans.ko = public/language/ko/recent.json +trans.sc = public/language/sc/recent.json +trans.zh_TW = public/language/zh-TW/recent.json + +[o:nodebb:p:nodebb:r:register] +file_filter = public/language//register.json +source_file = public/language/en-GB/register.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sq_AL = public/language/sq-AL/register.json +trans.tr = public/language/tr/register.json +trans.et = public/language/et/register.json +trans.he = public/language/he/register.json +trans.lv = public/language/lv/register.json +trans.nl = public/language/nl/register.json +trans.sc = public/language/sc/register.json +trans.en@pirate = public/language/en-x-pirate/register.json +trans.es = public/language/es/register.json +trans.pl = public/language/pl/register.json +trans.sl = public/language/sl/register.json +trans.uk = public/language/uk/register.json +trans.pt_PT = public/language/pt-PT/register.json +trans.ar = public/language/ar/register.json +trans.bg = public/language/bg/register.json +trans.de = public/language/de/register.json +trans.hr = public/language/hr/register.json +trans.nb = public/language/nb/register.json +trans.gl = public/language/gl/register.json +trans.sk = public/language/sk/register.json +trans.hy = public/language/hy/register.json +trans.ko = public/language/ko/register.json +trans.ms = public/language/ms/register.json +trans.ro = public/language/ro/register.json +trans.rw = public/language/rw/register.json +trans.zh_CN = public/language/zh-CN/register.json +trans.fi = public/language/fi/register.json +trans.it = public/language/it/register.json +trans.ru = public/language/ru/register.json +trans.sr = public/language/sr/register.json +trans.vi = public/language/vi/register.json +trans.sv = public/language/sv/register.json +trans.zh_TW = public/language/zh-TW/register.json +trans.bn = public/language/bn/register.json +trans.cs = public/language/cs/register.json +trans.fa_IR = public/language/fa-IR/register.json +trans.hu = public/language/hu/register.json +trans.lt = public/language/lt/register.json +trans.ja = public/language/ja/register.json +trans.pt_BR = public/language/pt-BR/register.json +trans.th = public/language/th/register.json +trans.da = public/language/da/register.json +trans.el = public/language/el/register.json +trans.en_US = public/language/en-US/register.json +trans.fr = public/language/fr/register.json +trans.id = public/language/id/register.json + +[o:nodebb:p:nodebb:r:reset_password] +file_filter = public/language//reset_password.json +source_file = public/language/en-GB/reset_password.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/reset_password.json +trans.fr = public/language/fr/reset_password.json +trans.hr = public/language/hr/reset_password.json +trans.hy = public/language/hy/reset_password.json +trans.ja = public/language/ja/reset_password.json +trans.pt_PT = public/language/pt-PT/reset_password.json +trans.zh_CN = public/language/zh-CN/reset_password.json +trans.sv = public/language/sv/reset_password.json +trans.de = public/language/de/reset_password.json +trans.fa_IR = public/language/fa-IR/reset_password.json +trans.gl = public/language/gl/reset_password.json +trans.hu = public/language/hu/reset_password.json +trans.id = public/language/id/reset_password.json +trans.rw = public/language/rw/reset_password.json +trans.sc = public/language/sc/reset_password.json +trans.vi = public/language/vi/reset_password.json +trans.bn = public/language/bn/reset_password.json +trans.he = public/language/he/reset_password.json +trans.ro = public/language/ro/reset_password.json +trans.sq_AL = public/language/sq-AL/reset_password.json +trans.ar = public/language/ar/reset_password.json +trans.cs = public/language/cs/reset_password.json +trans.ko = public/language/ko/reset_password.json +trans.ms = public/language/ms/reset_password.json +trans.pt_BR = public/language/pt-BR/reset_password.json +trans.sr = public/language/sr/reset_password.json +trans.tr = public/language/tr/reset_password.json +trans.ru = public/language/ru/reset_password.json +trans.zh_TW = public/language/zh-TW/reset_password.json +trans.da = public/language/da/reset_password.json +trans.en@pirate = public/language/en-x-pirate/reset_password.json +trans.en_US = public/language/en-US/reset_password.json +trans.lt = public/language/lt/reset_password.json +trans.lv = public/language/lv/reset_password.json +trans.nb = public/language/nb/reset_password.json +trans.sk = public/language/sk/reset_password.json +trans.el = public/language/el/reset_password.json +trans.es = public/language/es/reset_password.json +trans.et = public/language/et/reset_password.json +trans.uk = public/language/uk/reset_password.json +trans.fi = public/language/fi/reset_password.json +trans.it = public/language/it/reset_password.json +trans.nl = public/language/nl/reset_password.json +trans.pl = public/language/pl/reset_password.json +trans.sl = public/language/sl/reset_password.json +trans.th = public/language/th/reset_password.json + +[o:nodebb:p:nodebb:r:rewards] +file_filter = public/language//rewards.json +source_file = public/language/en-GB/rewards.json +source_lang = en_GB +type = KEYVALUEJSON +trans.bg = public/language/bg/rewards.json +trans.fr = public/language/fr/rewards.json +trans.hr = public/language/hr/rewards.json +trans.hy = public/language/hy/rewards.json +trans.ja = public/language/ja/rewards.json +trans.pt_PT = public/language/pt-PT/rewards.json +trans.zh_CN = public/language/zh-CN/rewards.json +trans.sv = public/language/sv/rewards.json +trans.de = public/language/de/rewards.json +trans.fa_IR = public/language/fa-IR/rewards.json +trans.gl = public/language/gl/rewards.json +trans.hu = public/language/hu/rewards.json +trans.id = public/language/id/rewards.json +trans.rw = public/language/rw/rewards.json +trans.sc = public/language/sc/rewards.json +trans.vi = public/language/vi/rewards.json +trans.bn = public/language/bn/rewards.json +trans.he = public/language/he/rewards.json +trans.ro = public/language/ro/rewards.json +trans.sq_AL = public/language/sq-AL/rewards.json +trans.ar = public/language/ar/rewards.json +trans.cs = public/language/cs/rewards.json +trans.ko = public/language/ko/rewards.json +trans.ms = public/language/ms/rewards.json +trans.pt_BR = public/language/pt-BR/rewards.json +trans.sr = public/language/sr/rewards.json +trans.tr = public/language/tr/rewards.json +trans.ru = public/language/ru/rewards.json +trans.zh_TW = public/language/zh-TW/rewards.json +trans.da = public/language/da/rewards.json +trans.en@pirate = public/language/en-x-pirate/rewards.json +trans.en_US = public/language/en-US/rewards.json +trans.lt = public/language/lt/rewards.json +trans.lv = public/language/lv/rewards.json +trans.nb = public/language/nb/rewards.json +trans.sk = public/language/sk/rewards.json +trans.el = public/language/el/rewards.json +trans.es = public/language/es/rewards.json +trans.et = public/language/et/rewards.json +trans.uk = public/language/uk/rewards.json +trans.fi = public/language/fi/rewards.json +trans.it = public/language/it/rewards.json +trans.nl = public/language/nl/rewards.json +trans.pl = public/language/pl/rewards.json +trans.sl = public/language/sl/rewards.json +trans.th = public/language/th/rewards.json + +[o:nodebb:p:nodebb:r:search] +file_filter = public/language//search.json +source_file = public/language/en-GB/search.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/search.json +trans.en_US = public/language/en-US/search.json +trans.ms = public/language/ms/search.json +trans.hr = public/language/hr/search.json +trans.hu = public/language/hu/search.json +trans.id = public/language/id/search.json +trans.bg = public/language/bg/search.json +trans.de = public/language/de/search.json +trans.en@pirate = public/language/en-x-pirate/search.json +trans.fa_IR = public/language/fa-IR/search.json +trans.fi = public/language/fi/search.json +trans.sc = public/language/sc/search.json +trans.sk = public/language/sk/search.json +trans.sl = public/language/sl/search.json +trans.sq_AL = public/language/sq-AL/search.json +trans.sr = public/language/sr/search.json +trans.bn = public/language/bn/search.json +trans.ja = public/language/ja/search.json +trans.ko = public/language/ko/search.json +trans.pl = public/language/pl/search.json +trans.ro = public/language/ro/search.json +trans.zh_TW = public/language/zh-TW/search.json +trans.cs = public/language/cs/search.json +trans.he = public/language/he/search.json +trans.nb = public/language/nb/search.json +trans.zh_CN = public/language/zh-CN/search.json +trans.lv = public/language/lv/search.json +trans.rw = public/language/rw/search.json +trans.sv = public/language/sv/search.json +trans.ru = public/language/ru/search.json +trans.tr = public/language/tr/search.json +trans.uk = public/language/uk/search.json +trans.el = public/language/el/search.json +trans.fr = public/language/fr/search.json +trans.gl = public/language/gl/search.json +trans.it = public/language/it/search.json +trans.pt_BR = public/language/pt-BR/search.json +trans.nl = public/language/nl/search.json +trans.pt_PT = public/language/pt-PT/search.json +trans.th = public/language/th/search.json +trans.vi = public/language/vi/search.json +trans.ar = public/language/ar/search.json +trans.es = public/language/es/search.json +trans.et = public/language/et/search.json +trans.hy = public/language/hy/search.json +trans.lt = public/language/lt/search.json + +[o:nodebb:p:nodebb:r:social] +file_filter = public/language//social.json +source_file = public/language/en-GB/social.json +source_lang = en_GB +type = KEYVALUEJSON +trans.da = public/language/da/social.json +trans.en_US = public/language/en-US/social.json +trans.ms = public/language/ms/social.json +trans.hr = public/language/hr/social.json +trans.hu = public/language/hu/social.json +trans.id = public/language/id/social.json +trans.bg = public/language/bg/social.json +trans.de = public/language/de/social.json +trans.en@pirate = public/language/en-x-pirate/social.json +trans.fa_IR = public/language/fa-IR/social.json +trans.fi = public/language/fi/social.json +trans.sc = public/language/sc/social.json +trans.sk = public/language/sk/social.json +trans.sl = public/language/sl/social.json +trans.sq_AL = public/language/sq-AL/social.json +trans.sr = public/language/sr/social.json +trans.bn = public/language/bn/social.json +trans.ja = public/language/ja/social.json +trans.ko = public/language/ko/social.json +trans.pl = public/language/pl/social.json +trans.ro = public/language/ro/social.json +trans.zh_TW = public/language/zh-TW/social.json +trans.cs = public/language/cs/social.json +trans.he = public/language/he/social.json +trans.nb = public/language/nb/social.json +trans.zh_CN = public/language/zh-CN/social.json +trans.lv = public/language/lv/social.json +trans.rw = public/language/rw/social.json +trans.sv = public/language/sv/social.json +trans.ru = public/language/ru/social.json +trans.tr = public/language/tr/social.json +trans.uk = public/language/uk/social.json +trans.el = public/language/el/social.json +trans.fr = public/language/fr/social.json +trans.gl = public/language/gl/social.json +trans.it = public/language/it/social.json +trans.pt_BR = public/language/pt-BR/social.json +trans.nl = public/language/nl/social.json +trans.pt_PT = public/language/pt-PT/social.json +trans.th = public/language/th/social.json +trans.vi = public/language/vi/social.json +trans.ar = public/language/ar/social.json +trans.es = public/language/es/social.json +trans.et = public/language/et/social.json +trans.hy = public/language/hy/social.json +trans.lt = public/language/lt/social.json + +[o:nodebb:p:nodebb:r:success] +file_filter = public/language//success.json +source_file = public/language/en-GB/success.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/success.json +trans.en@pirate = public/language/en-x-pirate/success.json +trans.es = public/language/es/success.json +trans.he = public/language/he/success.json +trans.hy = public/language/hy/success.json +trans.ja = public/language/ja/success.json +trans.ko = public/language/ko/success.json +trans.pl = public/language/pl/success.json +trans.de = public/language/de/success.json +trans.fa_IR = public/language/fa-IR/success.json +trans.ro = public/language/ro/success.json +trans.en_US = public/language/en-US/success.json +trans.lt = public/language/lt/success.json +trans.ru = public/language/ru/success.json +trans.sq_AL = public/language/sq-AL/success.json +trans.vi = public/language/vi/success.json +trans.bg = public/language/bg/success.json +trans.hr = public/language/hr/success.json +trans.ms = public/language/ms/success.json +trans.th = public/language/th/success.json +trans.zh_CN = public/language/zh-CN/success.json +trans.bn = public/language/bn/success.json +trans.fr = public/language/fr/success.json +trans.hu = public/language/hu/success.json +trans.id = public/language/id/success.json +trans.rw = public/language/rw/success.json +trans.sl = public/language/sl/success.json +trans.zh_TW = public/language/zh-TW/success.json +trans.ar = public/language/ar/success.json +trans.et = public/language/et/success.json +trans.it = public/language/it/success.json +trans.pt_PT = public/language/pt-PT/success.json +trans.sk = public/language/sk/success.json +trans.sv = public/language/sv/success.json +trans.tr = public/language/tr/success.json +trans.cs = public/language/cs/success.json +trans.fi = public/language/fi/success.json +trans.lv = public/language/lv/success.json +trans.nl = public/language/nl/success.json +trans.sc = public/language/sc/success.json +trans.da = public/language/da/success.json +trans.el = public/language/el/success.json +trans.gl = public/language/gl/success.json +trans.nb = public/language/nb/success.json +trans.sr = public/language/sr/success.json +trans.uk = public/language/uk/success.json + +[o:nodebb:p:nodebb:r:tags] +file_filter = public/language//tags.json +source_file = public/language/en-GB/tags.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/tags.json +trans.nl = public/language/nl/tags.json +trans.pt_BR = public/language/pt-BR/tags.json +trans.uk = public/language/uk/tags.json +trans.el = public/language/el/tags.json +trans.fa_IR = public/language/fa-IR/tags.json +trans.he = public/language/he/tags.json +trans.hr = public/language/hr/tags.json +trans.th = public/language/th/tags.json +trans.sl = public/language/sl/tags.json +trans.bg = public/language/bg/tags.json +trans.en_US = public/language/en-US/tags.json +trans.fi = public/language/fi/tags.json +trans.rw = public/language/rw/tags.json +trans.sc = public/language/sc/tags.json +trans.tr = public/language/tr/tags.json +trans.vi = public/language/vi/tags.json +trans.ar = public/language/ar/tags.json +trans.de = public/language/de/tags.json +trans.es = public/language/es/tags.json +trans.pt_PT = public/language/pt-PT/tags.json +trans.ro = public/language/ro/tags.json +trans.ru = public/language/ru/tags.json +trans.sk = public/language/sk/tags.json +trans.sr = public/language/sr/tags.json +trans.cs = public/language/cs/tags.json +trans.da = public/language/da/tags.json +trans.en@pirate = public/language/en-x-pirate/tags.json +trans.hu = public/language/hu/tags.json +trans.ja = public/language/ja/tags.json +trans.zh_CN = public/language/zh-CN/tags.json +trans.gl = public/language/gl/tags.json +trans.lv = public/language/lv/tags.json +trans.ms = public/language/ms/tags.json +trans.nb = public/language/nb/tags.json +trans.sv = public/language/sv/tags.json +trans.sq_AL = public/language/sq-AL/tags.json +trans.zh_TW = public/language/zh-TW/tags.json +trans.bn = public/language/bn/tags.json +trans.fr = public/language/fr/tags.json +trans.id = public/language/id/tags.json +trans.ko = public/language/ko/tags.json +trans.lt = public/language/lt/tags.json +trans.hy = public/language/hy/tags.json +trans.it = public/language/it/tags.json +trans.pl = public/language/pl/tags.json + +[o:nodebb:p:nodebb:r:top] +file_filter = public/language//top.json +source_file = public/language/en-GB/top.json +source_lang = en_GB +type = KEYVALUEJSON +trans.hy = public/language/hy/top.json +trans.el = public/language/el/top.json +trans.fa_IR = public/language/fa-IR/top.json +trans.nl = public/language/nl/top.json +trans.cs = public/language/cs/top.json +trans.en_US = public/language/en-US/top.json +trans.fi = public/language/fi/top.json +trans.he = public/language/he/top.json +trans.lt = public/language/lt/top.json +trans.ms = public/language/ms/top.json +trans.sk = public/language/sk/top.json +trans.vi = public/language/vi/top.json +trans.bg = public/language/bg/top.json +trans.de = public/language/de/top.json +trans.hu = public/language/hu/top.json +trans.pl = public/language/pl/top.json +trans.pt_PT = public/language/pt-PT/top.json +trans.sl = public/language/sl/top.json +trans.en@pirate = public/language/en-x-pirate/top.json +trans.gl = public/language/gl/top.json +trans.rw = public/language/rw/top.json +trans.sq_AL = public/language/sq-AL/top.json +trans.zh_CN = public/language/zh-CN/top.json +trans.ko = public/language/ko/top.json +trans.ro = public/language/ro/top.json +trans.pt_BR = public/language/pt-BR/top.json +trans.bn = public/language/bn/top.json +trans.fr = public/language/fr/top.json +trans.et = public/language/et/top.json +trans.id = public/language/id/top.json +trans.ja = public/language/ja/top.json +trans.lv = public/language/lv/top.json +trans.ru = public/language/ru/top.json +trans.sc = public/language/sc/top.json +trans.ar = public/language/ar/top.json +trans.da = public/language/da/top.json +trans.uk = public/language/uk/top.json +trans.sv = public/language/sv/top.json +trans.th = public/language/th/top.json +trans.it = public/language/it/top.json +trans.nb = public/language/nb/top.json +trans.sr = public/language/sr/top.json +trans.tr = public/language/tr/top.json +trans.zh_TW = public/language/zh-TW/top.json +trans.es = public/language/es/top.json +trans.hr = public/language/hr/top.json + +[o:nodebb:p:nodebb:r:topic] +file_filter = public/language//topic.json +source_file = public/language/en-GB/topic.json +source_lang = en_GB +type = KEYVALUEJSON +trans.et = public/language/et/topic.json +trans.hu = public/language/hu/topic.json +trans.nb = public/language/nb/topic.json +trans.nl = public/language/nl/topic.json +trans.sk = public/language/sk/topic.json +trans.ar = public/language/ar/topic.json +trans.es = public/language/es/topic.json +trans.fr = public/language/fr/topic.json +trans.lv = public/language/lv/topic.json +trans.ms = public/language/ms/topic.json +trans.pl = public/language/pl/topic.json +trans.pt_PT = public/language/pt-PT/topic.json +trans.uk = public/language/uk/topic.json +trans.ru = public/language/ru/topic.json +trans.bg = public/language/bg/topic.json +trans.en@pirate = public/language/en-x-pirate/topic.json +trans.fa_IR = public/language/fa-IR/topic.json +trans.fi = public/language/fi/topic.json +trans.he = public/language/he/topic.json +trans.ja = public/language/ja/topic.json +trans.pt_BR = public/language/pt-BR/topic.json +trans.tr = public/language/tr/topic.json +trans.zh_TW = public/language/zh-TW/topic.json +trans.bn = public/language/bn/topic.json +trans.da = public/language/da/topic.json +trans.en_US = public/language/en-US/topic.json +trans.hr = public/language/hr/topic.json +trans.it = public/language/it/topic.json +trans.ro = public/language/ro/topic.json +trans.cs = public/language/cs/topic.json +trans.de = public/language/de/topic.json +trans.sr = public/language/sr/topic.json +trans.sv = public/language/sv/topic.json +trans.vi = public/language/vi/topic.json +trans.ko = public/language/ko/topic.json +trans.sl = public/language/sl/topic.json +trans.el = public/language/el/topic.json +trans.gl = public/language/gl/topic.json +trans.id = public/language/id/topic.json +trans.lt = public/language/lt/topic.json +trans.sq_AL = public/language/sq-AL/topic.json +trans.th = public/language/th/topic.json +trans.hy = public/language/hy/topic.json +trans.rw = public/language/rw/topic.json +trans.sc = public/language/sc/topic.json +trans.zh_CN = public/language/zh-CN/topic.json + +[o:nodebb:p:nodebb:r:unread] +file_filter = public/language//unread.json +source_file = public/language/en-GB/unread.json +source_lang = en_GB +type = KEYVALUEJSON +trans.pt_BR = public/language/pt-BR/unread.json +trans.zh_TW = public/language/zh-TW/unread.json +trans.fa_IR = public/language/fa-IR/unread.json +trans.fr = public/language/fr/unread.json +trans.es = public/language/es/unread.json +trans.it = public/language/it/unread.json +trans.ms = public/language/ms/unread.json +trans.ro = public/language/ro/unread.json +trans.de = public/language/de/unread.json +trans.en@pirate = public/language/en-x-pirate/unread.json +trans.hr = public/language/hr/unread.json +trans.hu = public/language/hu/unread.json +trans.lt = public/language/lt/unread.json +trans.ru = public/language/ru/unread.json +trans.sl = public/language/sl/unread.json +trans.th = public/language/th/unread.json +trans.bg = public/language/bg/unread.json +trans.gl = public/language/gl/unread.json +trans.uk = public/language/uk/unread.json +trans.vi = public/language/vi/unread.json +trans.ja = public/language/ja/unread.json +trans.lv = public/language/lv/unread.json +trans.nl = public/language/nl/unread.json +trans.sr = public/language/sr/unread.json +trans.zh_CN = public/language/zh-CN/unread.json +trans.hy = public/language/hy/unread.json +trans.id = public/language/id/unread.json +trans.da = public/language/da/unread.json +trans.en_US = public/language/en-US/unread.json +trans.sk = public/language/sk/unread.json +trans.bn = public/language/bn/unread.json +trans.cs = public/language/cs/unread.json +trans.nb = public/language/nb/unread.json +trans.rw = public/language/rw/unread.json +trans.sq_AL = public/language/sq-AL/unread.json +trans.tr = public/language/tr/unread.json +trans.ar = public/language/ar/unread.json +trans.el = public/language/el/unread.json +trans.he = public/language/he/unread.json +trans.pt_PT = public/language/pt-PT/unread.json +trans.et = public/language/et/unread.json +trans.fi = public/language/fi/unread.json +trans.sc = public/language/sc/unread.json +trans.sv = public/language/sv/unread.json +trans.ko = public/language/ko/unread.json +trans.pl = public/language/pl/unread.json + +[o:nodebb:p:nodebb:r:uploads] +file_filter = public/language//uploads.json +source_file = public/language/en-GB/uploads.json +source_lang = en_GB +type = KEYVALUEJSON +trans.sv = public/language/sv/uploads.json +trans.cs = public/language/cs/uploads.json +trans.el = public/language/el/uploads.json +trans.hu = public/language/hu/uploads.json +trans.hy = public/language/hy/uploads.json +trans.it = public/language/it/uploads.json +trans.tr = public/language/tr/uploads.json +trans.uk = public/language/uk/uploads.json +trans.zh_CN = public/language/zh-CN/uploads.json +trans.en@pirate = public/language/en-x-pirate/uploads.json +trans.lt = public/language/lt/uploads.json +trans.lv = public/language/lv/uploads.json +trans.pt_BR = public/language/pt-BR/uploads.json +trans.sk = public/language/sk/uploads.json +trans.bn = public/language/bn/uploads.json +trans.hr = public/language/hr/uploads.json +trans.pl = public/language/pl/uploads.json +trans.zh_TW = public/language/zh-TW/uploads.json +trans.ru = public/language/ru/uploads.json +trans.sl = public/language/sl/uploads.json +trans.sq_AL = public/language/sq-AL/uploads.json +trans.et = public/language/et/uploads.json +trans.id = public/language/id/uploads.json +trans.ms = public/language/ms/uploads.json +trans.nb = public/language/nb/uploads.json +trans.pt_PT = public/language/pt-PT/uploads.json +trans.da = public/language/da/uploads.json +trans.es = public/language/es/uploads.json +trans.fr = public/language/fr/uploads.json +trans.th = public/language/th/uploads.json +trans.ar = public/language/ar/uploads.json +trans.en_US = public/language/en-US/uploads.json +trans.fi = public/language/fi/uploads.json +trans.gl = public/language/gl/uploads.json +trans.rw = public/language/rw/uploads.json +trans.ro = public/language/ro/uploads.json +trans.sr = public/language/sr/uploads.json +trans.vi = public/language/vi/uploads.json +trans.bg = public/language/bg/uploads.json +trans.de = public/language/de/uploads.json +trans.fa_IR = public/language/fa-IR/uploads.json +trans.ja = public/language/ja/uploads.json +trans.nl = public/language/nl/uploads.json +trans.he = public/language/he/uploads.json +trans.ko = public/language/ko/uploads.json +trans.sc = public/language/sc/uploads.json + +[o:nodebb:p:nodebb:r:user] +file_filter = public/language//user.json +source_file = public/language/en-GB/user.json +source_lang = en_GB +type = KEYVALUEJSON +trans.ms = public/language/ms/user.json +trans.sr = public/language/sr/user.json +trans.lt = public/language/lt/user.json +trans.da = public/language/da/user.json +trans.it = public/language/it/user.json +trans.ru = public/language/ru/user.json +trans.sk = public/language/sk/user.json +trans.ar = public/language/ar/user.json +trans.fr = public/language/fr/user.json +trans.he = public/language/he/user.json +trans.id = public/language/id/user.json +trans.es = public/language/es/user.json +trans.cs = public/language/cs/user.json +trans.et = public/language/et/user.json +trans.pt_BR = public/language/pt-BR/user.json +trans.zh_CN = public/language/zh-CN/user.json +trans.zh_TW = public/language/zh-TW/user.json +trans.bn = public/language/bn/user.json +trans.de = public/language/de/user.json +trans.el = public/language/el/user.json +trans.en@pirate = public/language/en-x-pirate/user.json +trans.en_US = public/language/en-US/user.json +trans.fa_IR = public/language/fa-IR/user.json +trans.gl = public/language/gl/user.json +trans.pl = public/language/pl/user.json +trans.bg = public/language/bg/user.json +trans.sv = public/language/sv/user.json +trans.th = public/language/th/user.json +trans.tr = public/language/tr/user.json +trans.uk = public/language/uk/user.json +trans.vi = public/language/vi/user.json +trans.fi = public/language/fi/user.json +trans.ko = public/language/ko/user.json +trans.lv = public/language/lv/user.json +trans.pt_PT = public/language/pt-PT/user.json +trans.rw = public/language/rw/user.json +trans.sl = public/language/sl/user.json +trans.sq_AL = public/language/sq-AL/user.json +trans.hr = public/language/hr/user.json +trans.hy = public/language/hy/user.json +trans.ja = public/language/ja/user.json +trans.nb = public/language/nb/user.json +trans.nl = public/language/nl/user.json +trans.ro = public/language/ro/user.json +trans.sc = public/language/sc/user.json +trans.hu = public/language/hu/user.json + +[o:nodebb:p:nodebb:r:users] +file_filter = public/language//users.json +source_file = public/language/en-GB/users.json +source_lang = en_GB +type = KEYVALUEJSON +trans.zh_TW = public/language/zh-TW/users.json +trans.de = public/language/de/users.json +trans.en@pirate = public/language/en-x-pirate/users.json +trans.ru = public/language/ru/users.json +trans.sc = public/language/sc/users.json +trans.en_US = public/language/en-US/users.json +trans.bn = public/language/bn/users.json +trans.hy = public/language/hy/users.json +trans.ro = public/language/ro/users.json +trans.fi = public/language/fi/users.json +trans.it = public/language/it/users.json +trans.pl = public/language/pl/users.json +trans.sk = public/language/sk/users.json +trans.ar = public/language/ar/users.json +trans.bg = public/language/bg/users.json +trans.el = public/language/el/users.json +trans.fa_IR = public/language/fa-IR/users.json +trans.sq_AL = public/language/sq-AL/users.json +trans.cs = public/language/cs/users.json +trans.he = public/language/he/users.json +trans.ja = public/language/ja/users.json +trans.ko = public/language/ko/users.json +trans.nb = public/language/nb/users.json +trans.pt_PT = public/language/pt-PT/users.json +trans.sr = public/language/sr/users.json +trans.zh_CN = public/language/zh-CN/users.json +trans.da = public/language/da/users.json +trans.id = public/language/id/users.json +trans.lt = public/language/lt/users.json +trans.ms = public/language/ms/users.json +trans.nl = public/language/nl/users.json +trans.rw = public/language/rw/users.json +trans.sl = public/language/sl/users.json +trans.th = public/language/th/users.json +trans.es = public/language/es/users.json +trans.fr = public/language/fr/users.json +trans.gl = public/language/gl/users.json +trans.hr = public/language/hr/users.json +trans.uk = public/language/uk/users.json +trans.vi = public/language/vi/users.json +trans.sv = public/language/sv/users.json +trans.tr = public/language/tr/users.json +trans.et = public/language/et/users.json +trans.hu = public/language/hu/users.json +trans.lv = public/language/lv/users.json +trans.pt_BR = public/language/pt-BR/users.json + diff --git a/.stryker-tmp/sandbox6184526/CHANGELOG.md b/.stryker-tmp/sandbox6184526/CHANGELOG.md new file mode 100644 index 0000000000..b66481805a --- /dev/null +++ b/.stryker-tmp/sandbox6184526/CHANGELOG.md @@ -0,0 +1,11657 @@ +#### v3.8.3 (2024-06-27) + +##### Chores + +* up themes (b15a5894) +* up harmony (3eb69c58) +* up harmony (b98333f3) +* up dbsearch (8a42db6f) +* use nodebb fork of spider-detector (3a1b39c9) +* up 2factor (142de2ca) +* incrementing version number - v3.8.2 (72d91251) +* update changelog for v3.8.2 (3854a434) +* incrementing version number - v3.8.1 (527326f7) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12656, only send required meta/link tags on /api calls (64875b3f) +* show links in post queue (500e3342) +* show connetion count on /info (60b4bc66) +* make upload scores descending for ordering (3ec44d64) +* add isACP to config, closes #12623 (c51b772f) +* allow passing min,max to sortedSetsCardSum (70b4a0e2) +* add voters/upvoters v3 routes (1aaa6cbb) + +##### Bug Fixes + +* wront topic events showing up in topic (54b01395) +* dont show self in suggested topics (381bbb04) +* #12645, use titleRaw like reply button (3332480c) +* update follower/following counts after removing uid from zsets (6f6cfb1a) +* suggested topic tid (351ee71d) +* #12633, don't check post index (6e3b012b) +* recent chat pagination, closes #12637 (f7c9b7ae) +* info.tpl table (6f79d305) +* closes #12632, dont load data twice (66adfa29) +* don't error if file required too early (4430de8c) +* require of spider-detector (be86d8ef) +* return early for guests/spiders (8d56e097) +* dont show error alert when user user mouse overs votes (6bbe3d1c) +* dont load chat rooms for quests/spiders (ca4a7751) +* set uid in case its spider(-1), closes #12621 (9d74539a) +* dont add spiders to online_guests room (bcd4997d) +* dont autoconnect for spiders, closes #12620 (b6671d16) +* #12614 fix html markup for widget containers (56b5850a) + +##### Other Changes + +* remove unused winston (69ce3bf0) +* remove unused (adb0566f) +* fix semicolons (795a0daa) +* fix whitespace (b4db2f7f) + +##### Performance Improvements + +* cleanup sessions every 30 seconds (26feb2bb) +* change revokeSession to work with an array of sids (172bc249) +* dont make db call if posts is already loaded client side (461e95d8) +* if sigs disabled dont filter uids (73241bd5) +* cache isAdmin, isGlobalMod checks (fedfce7b) +* get rid of async call in user load for expiring bans (023d52a3) +* call getIconbackgrounds once (1dadd16f) +* get rid of more calls, fix other profile pages #12632 (5c6a853e) + +##### Refactors + +* sessionUUID (#12658) (d6c946cf) +* move delete call (65a91ea5) +* use array.some (85b329af) +* add placeholders on demand (8f486b1b) +* move getTopicData call to avoid db calls when its not in cache (252d0df7) +* remove exits check (74dd2844) +* move als requires, move autoLocale to api/page routes (3356022a) +* move requires down (8eccdb48) +* posts cache to get rid of require in functions (236ac323) +* closes #12629, allow passing arrays to meta.userOrGroupExists (bad15643) +* suggest topics, use strings for tids (8ded36f2) +* #12623, add filter:config.get.admin (2d86552b) +* add sanity checks to sio (e98f1848) + +##### Tests + +* dont track session for api/v3 (#12660) (61e5293a) +* move set (9108c900) +* spec (41f1cd69) +* spec (b148d0fc) +* fix path replace (9ecee782) +* update openapi spec (9af3a2da) +* fix tests (c2f63090) +* return empty array on db.exists([]); (1b283ccc) +* fix test only set for spiders (7c2a3a6e) +* fix post test (42230300) + +#### v3.8.2 (2024-05-29) + +##### Chores + +* up composer (83facb7d) +* up harmony (17ea61a0) +* incrementing version number - v3.8.1 (527326f7) +* update changelog for v3.8.1 (5ef3e0f3) +* incrementing version number - v3.8.0 (e228a6eb) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* show ignored/watched topics in topic list, closes #10974 (29dbe92d) +* convert "All Votes Are Public" toggle to vote visibility (e0515080) + +##### Bug Fixes + +* wrong var for ignored (7969e62d) +* reduce docker image size again and speed up build (56ef2bdd) +* update thumb count when removing thumbs (6214336c) + +##### Refactors + +* render (2c0f8c91) + +#### v3.8.1 (2024-05-15) + +##### Chores + +* incrementing version number - v3.8.0 (e228a6eb) +* update changelog for v3.8.0 (2ef2750d) +* incrementing version number - v3.7.5 (6882894d) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* wrong mention version (1d1f499b) + +##### Tests + +* use node 20 (a40f54aa) +* remove node 18 (6bd22e53) + +#### v3.8.0 (2024-05-15) + +##### Chores + +* **deps:** + * update redis docker tag to v7.2.4 (#12272) (7a8116a4) + * update actions/cache action to v4 (#12563) (88ff9f9d) + * update postgres docker tag to v16.3 (#12560) (339f6267) + * update dependency sass-embedded to v1.77.1 (#12565) (07160062) + * update postgres docker tag to v16.3 (#12555) (b8a52863) + * update dependency sass-embedded to v1.77.0 (#12548) (0fa11561) + * update coverallsapp/github-action action to v2.3.0 (#12554) (b4023ff9) + * update dependency sass-embedded to v1.76.0 (#12542) (7ee42724) + * update commitlint monorepo to v19.3.0 (#12526) (dad57e04) + * update commitlint monorepo to v19.2.2 (#12515) (97519ca4) + * update dependency smtp-server to v3.13.4 (#12516) (4c468b5c) + * update dependency sass-embedded to v1.75.0 (#12499) (a2229e71) + * update dependency sass-embedded to v1.74.1 (#12468) (97a649e3) + * update dependency mocha to v10.4.0 (#12445) (449c0fcd) + * update dependency @commitlint/cli to v19.2.1 (#12420) (dc19c840) + * update dependency @commitlint/cli to v19.2.0 (#12412) (41212e8f) + * update dependency sass-embedded to v1.72.0 (#12406) (6d62e592) + * update commitlint monorepo to v19.1.0 (#12403) (3d095a6b) +* up themes (1e3a321d) +* incrementing version number - v3.7.5 (6882894d) +* update changelog for v3.7.5 (febeede5) +* incrementing version number - v3.7.4 (6678744c) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* up harmony (80a1a0e0) +* up harmony (1a000eae) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.flags, nodebb.user (19f8a77c) + * fallback strings for new resources: nodebb.user (7ad477af) + * fallback strings for new resources: nodebb.admin-settings-navigation (18eec147) + * fallback strings for new resources: nodebb.admin-advanced-events (213db951) + * fallback strings for new resources: nodebb.admin-manage-users (43f52737) + +##### New Features + +* track uid for email/username changes, closes #12454 (325d00ea) +* closes #12477, allow editing moderation notes (af205cc4) +* parse moderation notes as markdown (7d24b04b) +* closes #12490, show profile flags on account info page (b429045f) +* closes #12491, add unban & unmute history (985663fa) +* new client-side hook to allow plugins to modify relogin url (c778f6eb) +* closes #12453, filter events by user/group (4030f18a) +* move all user profile pics to folder, closes #12449 (#12450) (8f9ac5c1) +* allow customizing uploads.upload socket methods (dc67f54e) +* allow custom fields in user csv export, closes #12401 (83ca23ca) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.33.2 (#12572) (19602dcd) + * update dependency esbuild to v0.21.2 (#12569) (dc4f32af) + * update dependency rimraf to v5.0.7 (#12568) (035ced85) + * update dependency sass to v1.77.1 (#12566) (7a64410a) + * update dependency rimraf to v5.0.6 (#12562) (185d61fc) + * update dependency validator to v13.12.0 (#12556) (7a009445) + * update dependency sass to v1.77.0 (#12550) (d3840280) + * update dependency mongodb to v6.6.1 (#12547) (751a143e) + * update dependency esbuild to v0.21.1 (#12549) (ed07cfcc) + * update dependency semver to v7.6.2 (#12552) (5264deca) + * update dependency mongodb to v6.6.0 (#12544) (4813772c) + * update dependency nodebb-plugin-composer-default to v10.2.35 (#12546) (8fcfb181) + * update dependency sass to v1.76.0 (#12541) (8f60603b) + * update dependency tough-cookie to v4.1.4 (#12540) (ad708c9f) + * update dependency lru-cache to v10.2.2 (#12532) (c036786c) + * update dependency jquery-ui to v1.13.3 (#12534) (3f62b892) + * update dependency nodebb-widget-essentials to v7.0.16 (#12535) (d5bfe32e) + * update dependency nodebb-plugin-composer-default to v10.2.34 (#12530) (bc51968e) + * update dependency ace-builds to v1.33.1 (#12527) (18a843bc) + * update fontsource monorepo (#12523) (bde9136b) + * update dependency ipaddr.js to v2.2.0 (#12522) (d6d0ebd5) + * update dependency cropperjs to v1.6.2 (#12524) (5e7ec5b6) + * update dependency ioredis to v5.4.1 (#12520) (66a35490) + * update dependency ioredis to v5.4.0 (#12519) (da0888e6) + * update dependency nodebb-plugin-spam-be-gone to v2.2.2 (#12518) (5b4471bf) + * update dependency nodebb-plugin-emoji to v5.1.15 (#12517) (20f8ba78) + * update dependency nodebb-theme-harmony to v1.2.49 (#12497) (c4cb9d36) + * update dependency nodebb-plugin-mentions to v4.5.2 (#12470) (37bdf753) + * update dependency ace-builds to v1.33.0 (#12501) (83a932e6) + * update dependency sass to v1.75.0 (#12500) (f5c3d4e1) + * update dependency nodebb-theme-harmony to v1.2.47 (#12487) (2bcd5239) + * update dependency cron to v3.1.7 (#12484) (6237d5fe) + * update dependency workerpool to v9.1.1 (#12475) (b6193629) + * update dependency nodebb-theme-persona to v13.3.13 (#12479) (01b3a06a) + * update dependency nodebb-theme-harmony to v1.2.46 (#12478) (499514a8) + * update dependency nodebb-theme-persona to v13.3.12 (#12467) (0f209fa4) + * update dependency nodebb-theme-harmony to v1.2.45 (#12466) (1fef883b) + * update dependency sass to v1.74.1 (#12469) (8f771b6f) + * update dependency pg-cursor to v2.10.5 (#12462) (dde7a498) + * update dependency pg to v8.11.5 (#12461) (623ccc53) + * update dependency @fortawesome/fontawesome-free to v6.5.2 (#12460) (1953277b) + * update dependency nodebb-plugin-mentions to v4.4.3 (#12463) (d24c4148) + * update dependency pg to v8.11.4 (#12455) (a7d9811e) + * update dependency @fontsource/poppins to v5.0.13 (#12457) (5c214930) + * update dependency pg-cursor to v2.10.4 (#12456) (af10aaaa) + * update dependency ace-builds to v1.32.9 (#12451) (deacf366) + * update dependency express to v4.19.2 (#12441) (263ca1ca) + * update dependency winston to v3.13.0 (#12440) (08be8f3c) + * update dependency webpack to v5.91.0 (#12426) (ca82d020) + * update dependency ace-builds to v1.32.8 (#12439) (23f46345) + * update dependency sanitize-html to v2.13.0 (#12427) (2550f26f) + * update dependency postcss to v8.4.38 (#12429) (ace6f12f) + * update dependency express to v4.19.1 (#12425) (a27b999f) + * update dependency autoprefixer to v10.4.19 (#12428) (fa57b81f) + * update dependency nodebb-theme-lavender to v7.1.8 (15c7691c) + * update dependency nodebb-plugin-mentions to v4.4.2 (#12410) (a8b631dd) + * update dependency postcss to v8.4.37 (#12417) (9c91f093) + * update dependency nodemailer to v6.9.13 (#12424) (c7a506a8) + * update dependency nodebb-plugin-ntfy to v1.7.4 (#12414) (4e119783) + * update dependency esbuild to v0.20.2 (#12411) (93fb1e0f) + * update socket.io packages to v4.7.5 (#12409) (6a730312) + * update dependency @socket.io/redis-adapter to v8.3.0 (#12405) (05219412) + * update dependency sass to v1.72.0 (#12407) (89684786) + * update dependency mongodb to v6.5.0 (#12402) (b163264e) + * update dependency archiver to v7.0.1 (#12400) (817a5468) + * update dependency nodemailer to v6.9.12 (#12398) (27d5aaa5) + * update dependency nodebb-theme-harmony to v1.2.38 (#12397) (b9a1fc3f) + * update fontsource monorepo (#12390) (8d6ef3d5) + * update dependency nodebb-plugin-mentions to v4.4.1 (#12393) (4d18c38b) + * update dependency winston to v3.12.0 (#12391) (98ff47ec) +* chat message search, closes #12571 (49a510e9) +* chat message search, closes #12571 (d926d9dd) +* some issues with "small" docker improvements (#12564) (bc807c46) +* use reference object for post summary v3 api call (2a58d099) +* unintentional object pollution by buildForSelectCategories (88a5dfb7) +* getCategoryById to return shallow clone of object (dc35bf8b) +* #12533, go to post after changing owner (983a35e6) +* topic selection in merge (f2892385) +* closes #12474, fix search dropdown on mobile for merge (ce03680f) +* #12481, remove priv groups from groupslug:groupname mapping (#12482) (7033d11e) +* bump 2factor (4d2c95ca) +* date on upgrade script (73f98568) +* use CategoryObject in admins-mods schema def (4da1e9c4) +* missing uid for modify event, closes #12394 (7c37f32d) +* **docker:** support all previously used env variables correctly (#12567) (995b2de5) + +##### Refactors + +* add missing form-label class (36016ee1) +* use groupslug:groupname for search and acp page (ee5c021c) + +##### Tests + +* fix schema (5eb8c90b) +* fix redis tests (57422420) +* fix moderation note test (fed5165f) +* add back timestamp (c73f759c) + +#### v3.7.5 (2024-05-03) + +##### Chores + +* incrementing version number - v3.7.4 (6678744c) +* update changelog for v3.7.4 (8a1b281b) +* incrementing version number - v3.7.3 (2d62b6f6) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12543, use PATCH (420c8999) + +#### v3.7.4 (2024-04-17) + +##### Chores + +* up harmony (18990795) +* up harmony (c2465a16) +* up themes (ba86740a) +* up themes (5d8a5571) +* incrementing version number - v3.7.3 (2d62b6f6) +* update changelog for v3.7.3 (8d450eea) +* incrementing version number - v3.7.2 (cc257e7e) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12495, add unblock button to users on /blocks (afe597a2) + +##### Bug Fixes + +* zipObject (110ce66a) +* index should be cid (8410cec7) +* uniqCids (de0176ef) +* if votes are not public, dont show upvoter names in tooltip (5af69dbc) +* add canView check to /api/v3/users/:uid (5bee324c) +* is user doesnt have view:users privilege (14f5774f) +* copy dropdown closing on copy ip/text/link (48281f96) +* align teaser avatar (5fcd1a8a) +* if you have chat:privileged the chat icons should show up (ca07e517) +* #12485, resolve flags on a topics posts on topic delete (d7256796) +* #12471, remove readable strings (0b1f2546) + +##### Refactors + +* add new hooks for notifications/websockets (d2e042d1) +* move parseInt to filter (52e71522) +* better label for show to groups (cfd29db0) + +##### Tests + +* update spec (6816e39b) +* fix tests and use action (acab46e6) + +#### v3.7.3 (2024-04-03) + +##### Chores + +* up ntfy (0058ca68) +* incrementing version number - v3.7.2 (cc257e7e) +* update changelog for v3.7.2 (277e1787) +* incrementing version number - v3.7.1 (712365a5) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change digest to use posts sorting first (3aae9234) +* #12452, fix admin/mod image change (c206ccdd) + +#### v3.7.2 (2024-03-27) + +##### Chores + +* up harmony (0171e73a) +* up harmony (c6915398) +* incrementing version number - v3.7.1 (712365a5) +* update changelog for v3.7.1 (07640389) +* incrementing version number - v3.7.0 (9a6153d7) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add hook to modify sorting options/fields (168419cf) +* add playsinline video attribute (#12419) (5924a6eb) + +##### Bug Fixes + +* #12446, fix groups.ownership.rescind (ed41e416) +* #12415, fix notification escaping for queued posts (4787d013) + +##### Refactors + +* remove log (3b2d8551) + +##### Tests + +* add test for #12446 (bf4e257c) + +#### v3.7.1 (2024-03-14) + +##### Chores + +* up harmony (1b24b337) +* up harmony (b6c3a9d2) +* up harmony (f107a7ff) +* incrementing version number - v3.7.0 (9a6153d7) +* update changelog for v3.7.0 (f1f81b17) +* incrementing version number - v3.6.7 (86a17e38) +* incrementing version number - v3.6.6 (6604bf37) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* allow setting max-old-space-size in config (d1ce594c) + +##### Bug Fixes + +* #12408, fix mem leak due to mongodb 6.4.0 (285293c4) +* tids:create on topic post (3b48695b) + +#### v3.7.0 (2024-03-06) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-post, nodebb.topic (0bd0a740) + * fallback strings for new resources: nodebb.themes-harmony (8fb0ed82) + * fallback strings for new resources: nodebb.aria (a55fb29e) + * fallback strings for new resources: nodebb.aria (e6a358ed) + * fallback strings for new resources: nodebb.user (c88811a9) + * fallback strings for new resources: nodebb.topic (7e862a78) + * fallback strings for new resources: nodebb.topic, nodebb.unread (53ea10a7) + * fallback strings for new resources: nodebb.global (73e7d467) + * fallback strings for new resources: nodebb.topic (72f1e515) + * fallback strings for new resources: nodebb.global (642cd8e2) + * fallback strings for new resources: nodebb.global, nodebb.user (a998136c) + * fallback strings for new resources: nodebb.tags (4d35cb4e) + * fallback strings for new resources: nodebb.global, nodebb.themes-harmony (0bc9ac74) + * fallback strings for new resources: nodebb.global, nodebb.topic (a2819e9e) + * fallback strings for new resources: nodebb.error (9d5702f8) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (1230d22d) + * fallback strings for new resources: nodebb.admin-dashboard (f3974c0b) + * fallback strings for new resources: nodebb.search (43bf1f9b) +* up harmony (25ef62dc) +* up peace (3aaa0727) +* up peace (65f3c734) +* incrementing version number - v3.6.7 (86a17e38) +* update changelog for v3.6.7 (caf8722f) +* up harmony (22cd80b9) +* up themes (96fc20a3) +* up themes (421c7fc5) +* closes #12355 (fadee8d7) +* up themes (9ee864ce) +* up composer (8324adc5) +* up composer (0ff7adb4) +* incrementing version number - v3.6.6 (6604bf37) +* up themes (43a02c89) +* up themes (69342342) +* up harmony (9bbaef84) +* up harmony (35e98a9f) +* up harmony (22398d47) +* up themes (5cbb8bb1) +* up harmony (3f3f0d66) +* up harmony (4f42172d) +* up harmony (c0db10af) +* up harmony (0743cb3c) +* incrementing version number - v3.6.5 (6c653625) +* up harmony (09414efa) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* up harmony (bbdefad3) +* incrementing version number - v3.6.2 (0f577a57) +* up themes (79ebbee5) +* incrementing version number - v3.6.1 (f1a69468) +* up composer (c31e321b) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update commitlint monorepo to v19 (#12369) (516c8d04) + * update dependency smtp-server to v3.13.3 (#12378) (0ab1982c) + * update dependency eslint to v8.57.0 (#12362) (6c33c01d) + * update dependency sass-embedded to v1.71.1 (#12350) (99ad9d38) + * update dependency sass-embedded to v1.71.0 (#12344) (920f787f) + * update postgres docker tag to v16.2 (#12338) (254bad89) + * update commitlint monorepo to v18.6.1 (#12339) (92ef8548) + * update dependency mocha to v10.3.0 (#12334) (9cd299db) + * update dependency smtp-server to v3.13.2 (#12324) (048e664c) + * update dependency lint-staged to v15.2.2 (#12327) (a7008fb3) + * update dependency lint-staged to v15.2.1 (#12319) (264e71d2) + * update commitlint monorepo to v18.6.0 (#12305) (7e7bbfa4) + * update dependency jsdom to v24 (#12294) (45f02ff0) + * update commitlint monorepo to v18.5.0 (#12296) (5a776f9f) + * update dependency sass-embedded to v1.70.0 (#12286) (0063dd45) + * update dependency jsdom to v23.2.0 (#12269) (7cc69df0) + * update dependency jsdom to v23.1.0 (#12265) (12aeb6f7) + * update commitlint monorepo to v18.4.4 (#12261) (b25dfd47) + * update dependency sass-embedded to v1.69.7 (#12257) (ce78cb0e) + * update dependency sass-embedded to v1.69.6 (#12249) (1777ec4b) + +##### New Features + +* add new sorting option to categories (2a9b0a3c) +* add chat widget areas, closes #12375 (53b3c5d6) +* add hook into user.posts.isReady (7207814b) +* refactor group title editing (112493fa) +* cli command for maintenance mode closes #12293 (80960296) +* fallbacks for aria.json (19bc442b) +* add new lang keys for a11y (3ce89d1e) +* add missing aria/role attributes to dropdown elements (7917fd82) +* add lang keys for hidden labels (e298fb6b) +* show unread categories based on unread topics (#12317) (45cfb369) +* limit post/user flags per day closes #12274 (2b1fdc56) +* search in bookmarks on search page (5213e22a) +* #12247 (c5730b36) + +##### Bug Fixes + +* #12389, update privilege group check (87a79059) +* dupe id (f4b63790) +* #12357, properly update lists and counters (f34ebcc9) +* use lang key for user avatar label (863f5d0a) +* spec (4bcbf759) +* move winston logging for plugin hook firing to debug level (e240d0f9) +* closes #12326 (9302d9b4) +* some layout fixes for group details page (301eee17) +* bookmark in topic data is nullable now (d500ebb1) +* bug where body wasn't properly sent on ap-style content-types (4b87c30f) +* dont send topic notification to poster (c2239e48) +* **deps:** + * update dependency nodebb-theme-harmony to v1.2.36 (#12392) (db2f7c03) + * update dependency nodebb-theme-peace to v2.2.4 (#12381) (073a79eb) + * update dependency mongodb to v6.4.0 (#12382) (716482b2) + * update dependency nodebb-plugin-mentions to v4.4.0 (#12385) (6f04859e) + * update dependency ace-builds to v1.32.7 (#12386) (9eb54394) + * update dependency autoprefixer to v10.4.18 (#12387) (339e2cfa) + * update dependency nodebb-theme-harmony to v1.2.35 (#12388) (7b1b4510) + * update dependency nodebb-theme-harmony to v1.2.34 (#12383) (430c6b6c) + * update dependency nodemailer to v6.9.11 (#12380) (aa6859df) + * update dependency express to v4.18.3 (#12379) (2c3540b2) + * update dependency nodebb-plugin-markdown to v12.2.6 (#12371) (fb98dc05) + * update dependency archiver to v7 (#12374) (9de0ab31) + * update dependency chart.js to v4.4.2 (#12376) (131d2fe7) + * update dependency bootswatch to v5.3.3 (#12373) (1ed4d763) + * update dependency fetch-cookie to v3.0.1 (#12363) (835820a0) + * update dependency sanitize-html to v2.12.1 (#12360) (00bcf935) + * update dependency spdx-license-list to v6.9.0 (#12354) (b58dde1c) + * update dependency sass to v1.71.1 (#12351) (3094996b) + * update dependency sanitize-html to v2.12.0 (#12353) (ee90866a) + * update dependency nodemailer to v6.9.10 (#12356) (80ea6eb9) + * update dependency bootstrap to v5.3.3 (#12348) (4007882b) + * update dependency sass to v1.71.0 (#12345) (faf5a9c8) + * update dependency esbuild to v0.20.1 (#12346) (a0021b1d) + * update dependency webpack to v5.90.3 (#12347) (748bbab0) + * update dependency nodebb-plugin-spam-be-gone to v2.2.1 (#12343) (acad7317) + * update dependency webpack to v5.90.2 (#12341) (cb6fe9c7) + * update dependency nodebb-theme-harmony to v1.2.25 (#12340) (99474a7e) + * update dependency commander to v12 (#12325) (b61486eb) + * update dependency diff to v5.2.0 (#12337) (d0f6f0cc) + * update dependency postcss to v8.4.35 (#12333) (3bc506f6) + * update dependency ace-builds to v1.32.6 (#12332) (523f7ace) + * update dependency postcss to v8.4.34 (#12330) (9d036be3) + * update dependency semver to v7.6.0 (#12328) (3af04956) + * update dependency fetch-cookie to v2.2.0 (#12323) (b56d6a88) + * update dependency nodebb-theme-harmony to v1.2.12 (#12318) (65fead81) + * update dependency webpack to v5.90.1 (#12322) (98b455ce) + * update dependency nodemailer to v6.9.9 (#12321) (3f74cca3) + * update dependency ace-builds to v1.32.5 (#12316) (ef06be6d) + * update dependency nodebb-theme-harmony to v1.2.10 (#12314) (d648972c) + * update dependency ace-builds to v1.32.4 (#12313) (9fb7c163) + * update dependency express-session to v1.18.0 (#12311) (6444eeb9) + * update dependency esbuild to v0.20.0 (#12309) (aa1344fc) + * update dependency nodebb-theme-harmony to v1.2.8 (#12310) (fd20e3a5) + * update dependency nodebb-theme-harmony to v1.2.7 (#12307) (eabbf195) + * update dependency lru-cache to v10.2.0 (#12306) (400a1aa3) + * update dependency webpack to v5.90.0 (#12303) (44a798bc) + * update dependency esbuild to v0.19.12 (#12302) (72bb81f0) + * update dependency connect-redis to v7.1.1 (#12298) (575f072a) + * update dependency nodebb-theme-harmony to v1.2.6 (#12300) (e1adf5b3) + * update dependency nodebb-widget-essentials to v7.0.15 (#12295) (876fa4a7) + * update dependency nodebb-theme-persona to v13.3.3 (#12290) (f8893cd8) + * update dependency nodebb-theme-harmony to v1.2.4 (#12292) (e33e9dea) + * update dependency autoprefixer to v10.4.17 (#12285) (9e11b927) + * update dependency workerpool to v9.1.0 (#12288) (7a24961d) + * update dependency sass to v1.70.0 (#12287) (a1cdec08) + * update dependency sortablejs to v1.15.2 (#12283) (cc93caff) + * update dependency nodebb-theme-persona to v13.3.2 (#12284) (91ce17c7) + * update dependency nodebb-theme-harmony to v1.2.3 (#12280) (34a8069b) + * update dependency nodebb-theme-persona to v13.3.1 (#12281) (fe0845b9) + * update dependency nodebb-theme-harmony to v1.2.2 (#12279) (fc78b00c) + * update socket.io packages to v4.7.4 (#12278) (16598f7f) + * update dependency postcss to v8.4.33 (#12264) (3a32fc8f) + * update dependency nodebb-theme-harmony to v1.1.108 (#12263) (4924d170) + * update socket.io packages to v4.7.3 (#12259) (eb7a3091) + * update dependency sass to v1.69.7 (#12258) (d5dc4655) + * update dependency nodemailer to v6.9.8 (#12254) (1953a635) + * update dependency esbuild to v0.19.11 (#12253) (c8007bf6) + * update dependency ace-builds to v1.32.3 (#12252) (c40b2322) + * update dependency sass to v1.69.6 (#12250) (f8a0cb9e) + * update dependency terser-webpack-plugin to v5.3.10 (#12248) (9101caff) + * update dependency workerpool to v9.0.4 (#12244) (8165f454) + * update dependency workerpool to v9.0.3 (#12238) (3e08ef81) + * update dependency esbuild to v0.19.10 (#12237) (6ef8e767) + +##### Other Changes + +* fix (f5586968) + +##### Refactors + +* move tomap inside (5e89dfad) +* shorter tag translation (a9e8c184) +* search stats (82f6721d) + +##### Tests + +* fix test (c8a5e24a) +* update test (5afc735b) + +#### v3.6.7 (2024-02-28) + +##### Chores + +* incrementing version number - v3.6.6 (6604bf37) +* update changelog for v3.6.6 (debaa2b9) +* incrementing version number - v3.6.5 (6c653625) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12372, fix manual digest buttons (107f5613) +* closes #12365, staticHooks with callbacks (00e29403) +* #12359, fix api call (c61b3bbd) +* closes #12358, only load pending/invited for owners (3960d370) +* retry setAdd on e11000 error (4a405ce0) + +##### Tests + +* better test for #12352 (4e51bf81) + +#### v3.6.6 (2024-02-14) + +##### Chores + +* incrementing version number - v3.6.5 (6c653625) +* update changelog for v3.6.5 (04039f76) +* incrementing version number - v3.6.4 (83d131b4) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12329, fix default value of categoryWatchState (88e9fa37) + +##### Tests + +* fix spec (5fec8b23) + +#### v3.6.5 (2024-01-31) + +##### Chores + +* incrementing version number - v3.6.4 (83d131b4) +* update changelog for v3.6.4 (6e6c3974) +* incrementing version number - v3.6.3 (fc7d2bfd) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12320, .text() gets \n\t characters (67c8bd99) + +#### v3.6.4 (2024-01-24) + +##### Chores + +* incrementing version number - v3.6.3 (fc7d2bfd) +* update changelog for v3.6.3 (92ffc57c) +* incrementing version number - v3.6.2 (0f577a57) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add success hook to quick reply (cb21f28b) + +##### Bug Fixes + +* if there is no bookmarkThreshold dont init unread indicator (cf40d681) +* remove leftover code from 2.x, closes #12301 (d5f445f1) +* copy single line code blocks, closes #12297 (06269cdf) +* validate plugin id in toggleActive (76f3efff) + +##### Tests + +* add plugin id tests (e8befbcc) + +#### v3.6.3 (2024-01-12) + +##### Chores + +* incrementing version number - v3.6.2 (0f577a57) +* update changelog for v3.6.2 (82a936c3) +* incrementing version number - v3.6.1 (f1a69468) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12275, pin sharp to 0.32.6 (f3927ce7) +* topic event translations closes #12273 (5f91cc83) + +#### v3.6.2 (2024-01-10) + +##### Chores + +* up composer (ef8f8db7) +* up harmony (2bed405c) +* up harmony (b6dbe1a6) +* up lavender (16f0affa) +* up themes (980bfee8) +* incrementing version number - v3.6.1 (f1a69468) +* update changelog for v3.6.1 (1e4abdbf) +* incrementing version number - v3.6.0 (4cdf85f8) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #12247 (0af19afd) + +##### Bug Fixes + +* recent loading (d3d6d77d) +* closes #12246, direction is passed in as string as query param with new api call (8867f243) +* stricter selector for sort (a74b5141) + +##### Performance Improvements + +* dont load all followed tids on unread/recent?filter=watched (563e03b6) + +#### v3.6.1 (2023-12-22) + +##### Chores + +* incrementing version number - v3.6.0 (4cdf85f8) +* update changelog for v3.6.0 (eb92cee6) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12243, don' set process.env.config if it doesnt exist (788404c1) +* lang key for move notification closes #12241 (48a2b5f7) +* dont send topic notification to poster (e72b26f5) + +#### v3.6.0 (2023-12-20) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.error (d3cfa1b7) + * fallback strings for new resources: nodebb.post-queue (64fe1278) + * fallback strings for new resources: nodebb.post-queue (f98205c1) + * fallback strings for new resources: nodebb.social (081352b6) + * fallback strings for new resources: nodebb.modules (4fe84ae8) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.admin-settings-post, nodebb.admin-settings-user (94777927) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.category, nodebb.notifications (29b3a403) + * fallback strings for new resources: nodebb.error (7d8f700f) + * fallback strings for new resources: nodebb.modules (83931138) +* make error:email-taken slightly more descriptive (dd0743d3) +* up harmony (250cc771) +* up harmony (9324a75c) +* incrementing version number - v3.5.3 (ed0e8783) +* update changelog for v3.5.3 (e49ddaf8) +* up harmony (dbbf3a2c) +* up harmony (e4656bd4) +* incrementing version number - v3.5.2 (52fbb2da) +* up themes (0ec9d4c3) +* added missing deprecation warning for .getTopics (9079ad0b) +* update note at top of file (2de534fa) +* up dbsearch (b6981693) +* up themes (9a1f8e9b) +* incrementing version number - v3.5.1 (4c543488) +* up themes (ed10dda2) +* up composer (22d7e92f) +* up themes (fcdd3737) +* v4 note for deprecations (f4c36b84) +* minor re-order of routes/controllers in admin api v3 router/controller (181a9399) +* add in note at top of files ready for deletion in v4 (54a08087) +* up harmony (1b8dcbc2) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update dependency eslint-plugin-import to v2.29.1 (#12229) (055b7597) + * update dependency eslint to v8.56.0 (#12231) (a7dd0f92) + * update dependency eslint to v8.55.0 (#12203) (32a403b2) + * update dependency lint-staged to v15.2.0 (#12210) (9763e97f) + * update dependency jsdom to v23.0.1 (#12196) (a50b141f) + * update dependency jsdom to v23 (#12186) (8c0472a0) + * update commitlint monorepo to v18.4.3 (#12177) (fd5d7b65) + * update dependency eslint to v8.54.0 (#12172) (b6275453) + * update commitlint monorepo to v18.4.2 (#12169) (d6a92d4c) + * update postgres docker tag to v16.1 (#12167) (616ff573) + * update mongo docker tag to v7 (#12166) (5f8a4f3a) + * update redis docker tag to v7.2.3 (#12165) (c41f9a75) + * update dependency lint-staged to v15.1.0 (#12161) (1796ed2b) + * update dependency @commitlint/cli to v18.4.1 (#12162) (be3d3393) + * update commitlint monorepo to v18.4.0 (#12159) (128c24f2) + * update dependency eslint to v8.53.0 (#12151) (d1a7ba35) + * update redis docker tag to v7.2.3 (#12152) (2eff6912) + * update commitlint monorepo to v18 (#12105) (97016f47) + * update dependency sass-embedded to v1.69.5 (#12127) (9e8a2116) +* **socket.io:** deprecate categories.(isModerator|ignore|watch|getSelectCategories|getMoveCategories|getCategoriesByPrivilege) (f1dbfaa2) + +##### Documentation Changes + +* fix improper verbiage in category watch schema (f8cc8548) +* openapi schema for api.search.categories (4ffe0417) +* **socket.io:** + * openapi schema for remaining added routes (5399e86a) + * added schema for new routes (f279bca0) + +##### New Features + +* add 500 page for missing tpls, closes #12230 (06221a0d) +* remove gif exif stripping exception (f8219aa6) +* update groups.leave to allow global mods to kick users out of groups (2c6024e0) +* better layout for manage chat room modal (f4faa0b7) +* update Messaging.toggleOwner to optionally take a third `state` argument (932bd292) +* new language strings for post-queue page (5d03321e) +* add some new social share buttons (ace171a6) +* docker improvements (#12031) (7f3a9968) +* closes #12158, add sortable rewards (5ea7dec9) +* add copy text (4b2491be) +* closes #12154, add exempt groups (fdff165e) +* update moved keys (119c3362) +* move new user restrrictions (3d505c5c) +* add tracking categories and make watching send notifications (#12147) (84fed97b) +* add new lang string for minutes (d8d26c9f) +* add direct message link (#12138) (4c4f3ac9) +* closes #5584, setup winston to output to file (87a859aa) +* batch.processSortedSet min/max (#12129) (6c7e6144) + +##### Bug Fixes + +* fix display post history (dc975838) +* update isJSON test in request lib (506d7be5) +* 503 rendering on ajaxify (f7e0fd0b) +* #12227, fix crash in redirect (2dc1def5) +* deprecated emailer hook (565ca3cc) +* extract all pages when stripping metadata (0b3eb6c0) +* incorrect call to load additional group members (78835ebb) +* closes #12185, fix cli user password reset (b9050139) +* don't require login for listing categories (50a90f8e) +* #12183, remove ensureLoggedIn middleware (0a4f3c8a) +* remove unused requires (b5940a5d) +* remove lodash require (f9c471a0) +* #12171, bump harmony (89a1134c) +* update design of post-queue (41bdc9e8) +* update post-queue template for #12171 (63ba4986) +* language key (4c7c46f3) +* another missing state (f4bbc5bd) +* add missing tracking (3b91e8e2) +* bump harmony (a5e3754b) +* #12133 dropdown menus on mobile stay open during ajaxify (4601a6f7) +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (b4297cd8) +* #12141, use apiv3 for category search module (cefd4061) +* made parentCid optional in api.search.categories (581516c8) +* don't count internal links towards link count when restricting new users from posting links (022fa0e7) +* closes #12126, fix language keys (075cd598) +* param (e5a60dc8) +* handle public chat rooms too (6a696c43) +* suppress chat message notifications for users who are known to be in the chat room (uid is present in the corresponding socket.io room) (18c27d1a) +* **deps:** + * update dependency workerpool to v9 (#12234) (2cccbcf6) + * update dependency sharp to v0.33.1 (#12233) (45143000) + * update dependency csrf-sync to v4.0.3 (#12232) (9e2a6f86) + * update dependency ace-builds to v1.32.2 (#12228) (b6ca117a) + * update dependency ace-builds to v1.32.1 (#12226) (6036d144) + * update dependency esbuild to v0.19.9 (#12224) (d96d4d09) + * update dependency @fontsource/inter to v5.0.16 (#12219) (e32eb8b3) + * update dependency chart.js to v4.4.1 (#12217) (b6b569c0) + * update dependency nodebb-theme-persona to v13.2.49 (#12218) (6dab99fd) + * update dependency postcss to v8.4.32 (#12204) (da879704) + * update dependency @fortawesome/fontawesome-free to v6.5.1 (#12198) (b41c7f2a) + * update dependency nodebb-theme-harmony to v1.1.101 (#12199) (72d6a4b1) + * update dependency sortablejs to v1.15.1 (#12200) (cd625705) + * update dependency ace-builds to v1.32.0 (#12197) (75f063ba) + * update dependency @fortawesome/fontawesome-free to v6.5.0 (#12193) (a94f4a48) + * update dependency sharp to v0.33.0 (#12194) (1f287c74) + * update dependency fs-extra to v11.2.0 (#12191) (4eaf2320) + * update dependency passport to v0.7.0 (#12190) (bbf7c5e1) + * update dependency esbuild to v0.19.8 (#12187) (bc59856e) + * update dependency lru-cache to v10.1.0 (#12181) (22932bdb) + * update dependency esbuild to v0.19.7 (#12176) (00cb5839) + * update dependency lru-cache to v10.0.3 (#12175) (c404ef73) + * update dependency ace-builds to v1.31.2 (#12168) (b4a41af9) + * update dependency mongodb to v6.3.0 (#12170) (85936a59) + * update dependency lru-cache to v10.0.2 (#12160) (9d18d3c7) + * update dependency helmet to v7.1.0 (#12155) (50aa1a7c) + * update dependency async to v3.2.5 (#12150) (0e9eafa1) + * update dependency nodebb-theme-persona to v13.2.44 (#12149) (b489af06) + * update dependency nodebb-theme-harmony to v1.1.95 (#12148) (77b0baea) + * update dependency connect-pg-simple to v9.0.1 (#12144) (4e23d0d1) + * update dependency nodebb-theme-persona to v13.2.43 (#12140) (91e45fa2) + * update dependency nodebb-theme-harmony to v1.1.92 (#12131) (a3452c8f) + * update dependency nodebb-theme-peace to v2.1.24 (#12139) (29a59b90) + * update dependency spdx-license-list to v6.8.0 (2337d641) + * update dependency nodebb-plugin-composer-default to v10.2.25 (#12136) (cdb40719) + * update dependency cron to v3.1.6 (#12132) (2fb3af3c) + * update dependency ace-builds to v1.31.1 (#12135) (6b28f1dc) + * update dependency workerpool to v8 (#12121) (9bed7646) + * update dependency sass to v1.69.5 (#12128) (b351c00a) +* **socket.io:** update getPosts controller to return object containing posts instead of straight array (54000aab) + +##### Other Changes + +* **socket.io:** deprecate socketGroups.getChatGroups in favour of api.admin.listGroups (dc4cc74f) + +##### Refactors + +* line breaks good (4e560ade) +* replace deprecated call with api call (f91b823e) +* move async call to parallel (dabc282d) +* **socket.io:** + * deprecate SocketModules.chats.typing in favour of api.chats.toggleTyping (c1e6be77) + * deprecate SocketModules.chats.loadPinnedMessages in favour of api.chats.getPinnedMessages" (401e8636) + * deprecate SocketModules.chats.searchMessages in favour of api.search.roomMessages (f9dc3502) + * deprecate SocketModules.chats.setNotificationSetting in favour of api.chats.watch (75c8cda1) + * deprecated SocketModules.chats.toggleOwner in favour of api.chats.toggleOwner (b13c6ee4) + * deprecated SocketModules.chats.searchMembers in favour of api.search.roomUsers (6e952263) + * deprecate SocketModules.sortPublicRooms in favour of api.chats.sortPublicRooms (62b7dfd4) + * deprecate SocketModules.chat.getUnreadCount in favour of api.chats.getUnread (5eaffb42) + * deprecate SocketModules.chats.getIP in favour of api.chats.getIpAddress (214989a8) + * deprecate SocketModules.chats.hasPrivateChat in favour of api.users.getPrivateRoomId (0d3c94e6) + * deprecate SocketModules.chats.canMessage and .markAllRead with no alternative. deprecate .getRecentChats in favour of api.chats.list (a4133500) + * deprecate SocketModules.chats.isDnD in favour of api.users.getStatus (eebea4df) + * deprecate SocketModules.chats.getRaw in favour of api.chats.getRawMessage (c4b4e79b) + * deprecate socketGroups.loadMoreMembers in favour of api.groups.listMembers (807d778c) + * deprecate socketGroups.searchMembers in favour of api.groups.listMembers (d2f3333a) + * deprecate socketGroups.loadMore in favour of api.groups.list (b61e8147) + * deprecate categories.categorySearch in favour of api.search.categories (00de9d5b) + * deprecate categories.loadMore in favour of api.categories.getTopics (1ce4ca54) + * deprecate categories.loadMoreSubCategories in favour of api.categories.getChildren (010727f5) + * deprecate categories.setWatchState in favour of api.categories.setWatchState (d7c6b3d6) + * deprecate categories.getTopicCount in favour of api.categories.getTopicCount (c442b6e6) + * deprecate categories.get in favour of api.categories.list (96046373) + * deprecate categories.getRecentReplies in favour of api.categories.getPosts (52b78e83) + +##### Tests + +* migrate socket modules tests to v3 api (445b70de) +* migrate socket.io groups tests to use api v3 (2c1c4dfe) + +#### v3.5.3 (2023-12-13) + +##### Chores + +* up composer (245e5df3) +* up composer default (c1f82b78) +* incrementing version number - v3.5.2 (52fbb2da) +* update changelog for v3.5.2 (e2e85053) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change translator escape (c434262e) + +##### Other Changes + +* add types for database abstration layer (#10762) (17cd19c7) + +#### v3.5.2 (2023-11-29) + +##### Chores + +* up composer (49013f81) +* incrementing version number - v3.5.1 (4c543488) +* update changelog for v3.5.1 (48f7ae99) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #12185, fix cli user password reset (6790000d) +* thumb width (a9ef58a5) + +#### v3.5.1 (2023-11-14) + +##### Chores + +* up mentions (b1b3dcb6) +* incrementing version number - v3.5.0 (d06fb4f0) +* update changelog for v3.5.0 (5d7c10f1) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* closes #12123, allow setting hh:mm for pin expiry (1f800747) + +##### Bug Fixes + +* update ajaxifyTimer logic to only drop the request if the URL is the same as the one it's already processing (dcb0c4db) +* closes #12156, missing data for privilege tables (21e59538) +* thumb width (46f6f9ef) +* closes #12126, fix language keys (668a355a) + +#### v3.5.0 (2023-10-25) + +##### Chores + +* up persona (8428cc8d) +* up harmony (bd9eebd7) +* up harmony (574f95f5) +* up harmony (2c996606) +* up harmony (f619696b) +* up harmony (0d2e0752) +* up persona (75170693) +* up themes (36fe90dd) +* up themes (4d6a6ff5) +* up rewards (35d9a78d) +* up harmony (e09b0332) +* up harmony (ad72f653) +* up persona (215ac672) +* up harmony (560403a9) +* up harmony (a5a33db7) +* up harmony (732af96f) +* up harmony (2af856d8) +* up harmony (05a9dd4e) +* up harmony (15a0a196) +* up deps for lang key change (96c9ccc4) +* up harmony (cddfdae0) +* up harmony (90692d95) +* up harmony (7e75cfaf) +* up harmony (a5c1b2a0) +* up harmony (3a108cab) +* up persona (cc5e9d9c) +* up harmony (769f879e) +* up themes (46530337) +* incrementing version number - v3.4.3 (5c984250) +* update changelog for v3.4.3 (08949be9) +* up themes (e0b29ba9) +* up emoji (00dd0cb3) +* up emoji (86de8cb2) +* up emoji (5081ff48) +* up emoji (805aaa5e) +* up emoji (7568be3c) +* up themes (b7d8fd1e) +* up themes (d0682905) +* incrementing version number - v3.4.2 (3f0dac38) +* up deps (f1021542) +* up composer (45b9803a) +* up composer (7e5d9b71) +* up harmony (13ea14f1) +* up engines (0f9f875b) +* incrementing version number - v3.4.1 (01e69574) +* up dbsearch (b4775b18) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update actions/setup-node action to v4 (#12114) (762ad161) + * update dependency eslint-plugin-import to v2.29.0 (#12112) (2ae031ed) + * update redis docker tag to v7.2.2 (#12097) (bb812937) + * update dependency eslint to v8.52.0 (#12106) (8acdd355) + * update commitlint monorepo to v17.8.1 (#12104) (022e2a10) + * update dependency lint-staged to v15.0.2 (#12099) (8549d7de) + * update dependency sass-embedded to v1.69.4 (#12093) (f5f1679c) + * update dependency lint-staged to v15 (#12086) (d1cd625d) + * update commitlint monorepo to v17.8.0 (#12084) (225acb2e) + * update dependency sass-embedded to v1.69.2 (#12073) (9967ae6b) + * update dependency sass-embedded to v1.69.1 (#12071) (7fe72085) + * update dependency eslint to v8.51.0 (#12063) (6c01148e) + * update dependency @commitlint/cli to v17.7.2 (#12047) (d10a09a0) + * update dependency eslint to v8.50.0 (#12029) (65051066) + * update postgres docker tag to v16 (#12012) (6fa6f73b) + * update actions/checkout action to v4 (#11978) (b4233366) + * update docker/build-push-action action to v5 (#11997) (4ecfe40e) + * update docker/login-action action to v3 (#11998) (478f7c74) + * update docker/metadata-action action to v5 (#11999) (21b280d2) + * update docker/setup-buildx-action action to v3 (#12000) (95f7112a) + * update docker/setup-qemu-action action to v3 (#12001) (f286d7fa) + * update dependency sass-embedded to v1.67.0 (#12003) (b9d04e2f) + * update dependency eslint to v8.49.0 (#11993) (ceed4327) + * update coverallsapp/github-action action to v2.2.3 (#11988) (a473b515) + * update redis docker tag to v7.2.1 (#11987) (0b231fd3) +* **i18n:** + * fallback strings for new resources: nodebb.admin-extend-widgets (990bbd8c) + * fallback strings for new resources: nodebb.admin-manage-privileges (3cb6881c) + * fallback strings for new resources: nodebb.themes-harmony (67fec93d) + * fallback strings for new resources: nodebb.notifications (ed77a0b1) + * fallback strings for new resources: nodebb.admin-advanced-database (b517645f) + * fallback strings for new resources: nodebb.error, nodebb.flags (19cfd89f) + * fallback strings for new resources: nodebb.admin-extend-widgets (8b5f0334) + * fallback strings for new resources: nodebb.email (fc8a6b31) + * fallback strings for new resources: nodebb.admin-settings-post (8cb2c270) + * fallback strings for new resources: nodebb.email, nodebb.notifications (a71378cb) + * fallback strings for new resources: nodebb.topic (8df56d60) + * fallback strings for new resources: nodebb.notifications, nodebb.pages, nodebb.tags, nodebb.user (2627e974) + * fallback strings for new resources: nodebb.modules (ec3ab986) + * fallback strings for new resources: nodebb.admin-settings-chat (968ee0c7) + +##### New Features + +* show # of widgets on templates (2ca5192b) +* #12101, dont return rssFeedUrl if feeds are disabled (2955fdb5) +* add sidebar setting lang key (97a86ba4) +* award notif filter (9e9046bf) +* update to mongodb 6.1 (#12087) (e542b27d) +* add category canonical url (f96b0b7a) +* update error handler to check for pseudo-standard no-* prefix and route to 404 handler instead (db5b0f47) +* flag rescinding logic + api method (e012edea) +* backend methods for rescinding a report, supplemental adds and removing a report now adds to the flag history (bc0f362c) +* use homePageTitle in breadcrumbs if its set (1a745201) +* 3 column layout for widgets (db9279eb) +* update all language keys to use - instead of _ (#12059) (844cb91b) +* closes #12052, ability to disable stale topic warning (f8a3aceb) +* add .has() method in cache/ttl lib (d478de16) +* upgrade chartjs to 4.x (fe192b92) +* closes #11553, add forked from message like merged into (be14f6cc) +* add workerpool for password, closes #10326 (#12038) (8b25aff7) +* add new hook action:chat.onMessagesAddedToDom (a7517d88) +* add composerActions for chat rooms (d906097a) +* add heading strings (8c977f4c) +* introduce new ACP setting for newbie chat message delay, defaults to 2 minutes (223e7656) + +##### Bug Fixes + +* **deps:** + * update dependency cron to v3.1.4 (#12117) (3e45788f) + * update dependency ace-builds to v1.31.0 (#12113) (aba7eb0f) + * update dependency nconf to v0.12.1 (#12111) (91d00979) + * update dependency @fontsource/inter to v5.0.15 (#12108) (99c3c874) + * update dependency nodemailer to v6.9.7 (#12109) (e546adaa) + * update dependency mongodb to v6.2.0 (#11965) (7302e769) + * update dependency @fontsource/inter to v5.0.14 (#12103) (c9c6175a) + * update dependency cron to v3.1.3 (#12100) (bad9198e) + * update dependency sass to v1.69.4 (#12094) (2adc96c2) + * update dependency esbuild to v0.19.5 (#12091) (94434125) + * update dependency webpack-merge to v5.10.0 (#12088) (d45f506f) + * update dependency webpack to v5.89.0 (#12083) (1ebdfaea) + * update dependency connect-mongo to v5.1.0 (#12085) (212a3415) + * update dependency ace-builds to v1.30.0 (#12082) (8456682c) + * update dependency cron to v3.1.1 (#12078) (24d6b73f) + * update dependency commander to v11.1.0 (#12079) (7d38e9ed) + * update dependency sass to v1.69.3 (#12076) (193e54e2) + * update dependency workerpool to v6.5.1 (#12077) (14eede15) + * update dependency sass to v1.69.2 (#12074) (0dd4cedf) + * update dependency nodemailer to v6.9.6 (#12068) (6c59d72a) + * update dependency winston to v3.11.0 (#12064) (fdf279a3) + * update dependency cron to v3 (#12049) (f2fad2d3) + * update dependency @fontsource/inter to v5.0.13 (#12065) (512ac525) + * update dependency ace-builds to v1.29.0 (#12067) (b04fbf89) + * update dependency sass to v1.69.1 (#12070) (a5d2871c) + * update dependency @fontsource/inter to v5.0.12 (#12053) (1033218c) + * update dependency sass to v1.69.0 (#12060) (ecb847fc) + * update dependency nodebb-plugin-2factor to v7.4.0 (6c5c1afd) + * update dependency nodebb-plugin-ntfy to v1.7.3 (98e58252) + * update dependency postcss to v8.4.31 (#12048) (eaa7aff3) + * update dependency esbuild to v0.19.4 (#12046) (4289230f) + * update dependency rimraf to v5.0.5 (#12036) (3549fbdd) + * update dependency nodebb-theme-persona to v13.2.34 (#12043) (339481ca) + * update dependency nodebb-plugin-spam-be-gone to v2.2.0 (#12039) (84648db2) + * update dependency cron to v2.4.4 (#12033) (c1f873b3) + * update dependency ace-builds to v1.28.0 (#12028) (3262923a) + * update dependency nodebb-plugin-2factor to v7.3.1 (#12026) (d29ea026) + * update dependency nodebb-plugin-ntfy to v1.7.2 (#12024) (360d3257) + * update dependency sass to v1.68.0 (#12023) (be600a84) + * update dependency autoprefixer to v10.4.16 (#12022) (f6b6e6c7) + * update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (639fb33f) + * update dependency bootswatch to v5.3.2 (#12020) (5dc368a9) + * update dependency ace-builds to v1.27.0 (#12019) (f73ed6dd) + * update dependency nodebb-plugin-emoji to v5.1.10 (#12018) (16fe4fde) + * update dependency sharp to v0.32.6 (#12016) (f838498b) + * update dependency postcss to v8.4.30 (#12015) (7dbc6668) + * update dependency rtlcss to v4.1.1 (#12014) (ba894a04) + * update dependency nodebb-plugin-ntfy to v1.7.1 (#12011) (4e834a2e) + * update dependency ace-builds to v1.26.0 (#12010) (5a003acb) + * update dependency mongodb to v5.9.0 (#12008) (5bfcd34c) + * update dependency cropperjs to v1.6.1 (#12013) (9f5362c8) + * update dependency ace-builds to v1.25.1 (#12006) (1558d7a2) + * update dependency bootstrap to v5.3.2 (#12005) (44d120df) + * update dependency esbuild to v0.19.3 (#12002) (ef41b8bc) + * update dependency sass to v1.67.0 (#12004) (d2e49472) + * update dependency ace-builds to v1.24.2 (#11991) (447b7954) +* closes #12115 , toggle hasmore as well (728d63f9) +* #10276, only move widgets if area doesn't exist (1739f5a9) +* #12090, dont award disabled rewards (c1ae879d) +* rewards fixes (347a43f4) +* use template name instead of component (f6120ebb) +* incorrect data passed to api.flags.get (cc8fe435) +* missing body classes on error pages (54a810dd) +* edit notification key (bda37ac2) +* lang key (bffa7880) +* #12062, relax blockquote selector (99bdad80) +* allowing forward slash in language keys, temporarily allowing upper case characters (d25a24fc) +* rename filter-perPage to filter-per-page (872ddc26) +* upgrade script date (6f5a965a) +* add upgrade script for notifications (6c3ff86b) +* lang key, type has _, lang keys changed to use - (1072b38b) +* #12017, unreliable forum updated messaging (715bdac3) +* #12057, allow gmods to change user email (344ece8d) +* only show emailChanged alert for self (56794cf8) +* closes #12054 handle negative start/stop in psql (0f4e6648) +* make socket errors and static hook errors less noisy (2a1be01a) +* restore notificationSendDelay back to 60 (5fe1ad95) +* breaking tests (857433d1) +* #12044, only load notifications when opening dropdown (dbd0a715) +* change `notificationSendDelay` to default to 10 seconds instead of 60, #11445 (cf50b0fe) +* clear interstitial data if there are no additional interstitials on abort (bdc221eb) +* #11808, reduce zeal of middleware.registrationComplete (74902e4a) +* pass in missing uid (d50473df) +* #12025, validity checking on user-provided toPid value (fe42fd4e) +* #12032, truncate long category names (b518e036) +* field name importance (8041f4d1) +* closes #12007, parseInt notification fields (b8e43143) +* on shutdown clear locks (615b2f0f) +* remaining text, when sending with send button (6553e454) +* nodebb/nodebb-plugin-link-preview#18, remove sup from allowedTags, add source + source attributes (f09f4105) +* use isPrivileged instead of isAdmin (b9c3cdb6) +* failing test due to increased chat message delay (ff07fc44) +* better labels in ACP chat settings, #11983 (88dd21e2) +* bump chat message delay by 10x to 2000ms, re: #11983 (9b0b33cc) +* #11981, post immediately when canceling scheduling (aa797f23) +* **i18n:** + * added rewards resource and fallbacks (47910d70) + * fallbacks for new language keys (2b3d2055) + * push fallbacks for modules resource (9b384b98) + +##### Other Changes + +* fix quotes (b8705380) +* fix lint (3b46ad42) + +##### Performance Improvements + +* no need to count on every call (130815c7) + +##### Refactors + +* get rid of util.promisify on async function (b1ff93f8) +* fix comment (ff6bfeb8) +* get rid of async.series (c7c6e8ff) +* shorter timeago (6149252b) +* shorter code for pinned topics (ff952e59) +* change private message email subject (f9fb3c3a) +* use helpers.isAllowedTo (47c16e90) +* add email notification delay to chat message notifications (a47b4805) +* remove chat message notification queue, implement merge IDs for chat message notifications, so they can be grouped together (3ba371f6) +* update buildCategoryLabel (82ea9192) +* use esm only import used chart types/plugins (56b31674) +* get rid of exists db call, use promise.parallel (8895b152) +* get rid of some async.waterfall/series/parallel calls (e452c097) +* get rid of async.waterfall/series (8bc2ef22) +* reduce socket.emits for typing (4d1b8e76) + +##### Tests + +* add spec for new notif type (90e10b9c) +* worked with chatgpt to restrict the i18n test a bit to match requirements (99364427) +* fix flag tests (6606d96a) +* added test cases for .addReport and .rescindReport() (da239059) +* added i18n test to enforce kebab casing (69dde2b9) +* add reverse list test (66be9826) +* additional tests for #12034 (d7e9f324) +* added tests for new logic paths (toPid validation on post creation) (ce740301) +* 💥 i18n tests (8202c555) + +#### v3.4.3 (2023-09-27) + +##### Chores + +* incrementing version number - v3.4.2 (3f0dac38) +* update changelog for v3.4.2 (f9323de6) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* change priv to topics:read (cddac03a) +* #12035, filter tids in mark all read (77d6d0ab) +* properly wrap promise to callback-style function (#12030) (aff19a6c) +* #12009, check if suggested/current versions are valid (7ca37bd6) +* **deps:** update dependency nodebb-plugin-2factor to v7.3.0 (#12021) (c805824f) + +##### Refactors + +* remove nested promise (379ed0e2) + +#### v3.4.2 (2023-09-12) + +##### Chores + +* up harmony (bd94f263) +* up harmony (46f260b5) +* up harmony (62afd0bd) +* up composer/persona (5c628c56) +* up harmony (3e07c18d) +* up deps (3f7de1c7) +* up harmony (512c44d5) +* up harmony (319d3b1f) +* up themes (d7a7c355) +* incrementing version number - v3.4.1 (01e69574) +* update changelog for v3.4.1 (f24a334c) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* **deps:** bump 2factor (6bc2b6c5) +* move database call used to associate a NodeBB session UUID to its express session id into user.auth.addSession, which is the only time it is called (e1bced8c) +* toMid to posts you cant see (53106c00) +* closes #11982, fix element in prepEdit (e4ecb96f) +* prep edit so textarea isn't below text input (f2c4041f) + +##### Refactors + +* reduce socket.emits for typing (aebd9278) + +##### Tests + +* remove errant .only() (9dc9d5ef) +* fix room count (66251166) + +#### v3.4.1 (2023-09-06) + +##### Chores + +* up dbsearch (8357bb2e) +* incrementing version number - v3.4.0 (fd9247c5) +* update changelog for v3.4.0 (5c023025) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11981, post immediately when canceling scheduling (19b7cdb2) + +#### v3.4.0 (2023-09-06) + +##### Chores + +* up ntfy (d79f79e8) +* up dbsearch (6d27f778) +* up themes, dont send typing on page load (45ed12c5) +* up harmony (21ad49fe) +* up themes (e10a5fa5) +* up themes (8132d36b) +* up themes (10d11924) +* up harmony (0334b389) +* up harmony (32c870f4) +* incrementing version number - v3.3.9 (5805e770) +* update changelog for v3.3.9 (50d44777) +* up composer (ffd6ea5a) +* up composer (c2534287) +* up composer (540b9f18) +* up composer (87015e9b) +* up themes (dd3647ed) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* markdown dep (03f11a24) +* up markdown (f399db9d) +* incrementing version number - v3.3.6 (7fb38792) +* up deps (a7843a40) +* up composer (05a7c761) +* up themes (c4b865e1) +* up themes (7d9ff9bf) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* up themes (5c14438d) +* up themes (cb3252be) +* up harmony (c7df93b4) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **deps:** + * update coverallsapp/github-action action to v2.2.2 (#11977) (15c6fd6b) + * update dependency jquery to v3.7.1 (#11963) (94f07c14) + * update dependency eslint to v8.48.0 (#11953) (4d0055f0) + * update dependency lint-staged to v14.0.1 (#11936) (1e0661dc) + * update dependency eslint-plugin-import to v2.28.1 (#11848) (44a9d88a) + * update redis docker tag to v7.2.0 (#11924) (c41a4a0f) + * update dependency sass-embedded to v1.66.1 (#11926) (64925578) + * update mongo docker tag to v7 (#11928) (7ebdfe71) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (271cf81e) + * fallback strings for new resources: nodebb.notifications (69f86747) + * fallback strings for new resources: nodebb.email, nodebb.modules, nodebb.notifications (6a1b1141) + +##### New Features + +* typing user list in chat (60035744) +* add data-allow-dupe and data-navigator-ignore (92f5c146) +* add a filter hook to login (a3d6dba6) +* use all events in addTopicEvents (4bc21a2e) +* add socket.data.uid on connect (f026e740) +* #11949, show alert if posts is going to be queued (731466e5) +* #6021 add min:rep-post-links (#11938) (979f24b1) +* add new notif type for public rooms (b65d8e82) +* better acp sidebar in dark mode (c92ecfb4) +* check mute when messaging, closes #11932 (9534f9b9) +* log roomId/roomName on delete (b958a39a) + +##### Bug Fixes + +* **deps:** + * update dependency nodemailer to v6.9.5 (#11980) (d2636989) + * update dependency archiver to v6.0.1 (#11976) (0e885a20) + * update dependency nodebb-theme-harmony to v1.1.50 (#11975) (b46425b1) + * update dependency spdx-license-list to v6.7.0 (#11974) (9138702d) + * update dependency postcss to v8.4.29 (#11968) (286dcf9a) + * update dependency jsonwebtoken to v9.0.2 (#11972) (4251394f) + * update dependency cron to v2.4.3 (#11957) (b25793cd) + * update dependency nodebb-theme-peace to v2.1.16 (#11958) (44611e05) + * update dependency cropperjs to v1.6.0 (#11956) (521a13f4) + * update dependency nodebb-plugin-composer-default to v10.2.17 (#11951) (d20c9cf2) + * update dependency nodebb-theme-harmony to v1.1.43 (#11950) (d28b1f4b) + * update dependency mongodb to v5.8.1 (#11948) (551e4043) + * bump markdown (f9b8a079) + * bump ntfy (79703919) + * update dependency nodebb-plugin-markdown to v12.2.1 (#11939) (a04d3972) + * update dependency mongodb to v5.8.0 (#11940) (76a4fee9) + * update dependency pg to v8.11.3 (#11919) (9c837632) + * update dependency archiver to v6 (#11929) (0b1b6af3) + * update dependency sass to v1.66.1 (#11927) (01c94daf) + * update dependency pg-cursor to v2.10.3 (#11920) (c09c29fa) +* don't create tooltips on mobile (ded596fe) +* always return string from helper (bdeca049) +* double escape issue, body is escaped in composer-default (6ae0d207) +* make selector stricter (9f7a39c5) +* #11969, match the server side behaviour for filters (887dfd7d) +* remove og:image value (#11966) (90ac82d0) +* don't try to parse response if request is head #11960 (440299e6) +* pinned msgs when switching chats (acee6777) +* deleted chat messages (#11962) (1a1fd64d) +* closes #11954, fix custom skins with spaces (965780b7) +* dont show chat notif if you are already in the room (3d6668e7) +* #11947, make user message has a numeric timestamp (dc0fb81b) +* #11944, dont refresh page when uninstalling (f5baca14) +* closes #11921 (e3969706) +* bookmark scroll doing ajaxify (2e0964e6) +* closes #11937, add dropup early based on position on screen (a7a266d7) +* improper SSO format (regression), update openapi schema (4a846803) +* return empty array for 'sso' otherwise (db15e7c4) +* #11906, remove retrieval of SSO data in getAllData internal method, only retrieve for calling user or admins, and only on edit page (a6c98de6) +* language string (4e0c6329) +* admins should see public chats (aeb27f4b) +* show access denied instead of internal error (7dd143e1) + +##### Other Changes + +* remove unused translator (34242e7a) +* fix spec (c0eefe72) + +##### Refactors + +* use map/get (98c3d2e9) +* add targetUid to email-change event (4e5340d2) +* how admins change emails (#11973) (8db13d8e) + +##### Tests + +* one more fix (8b533d54) +* fix tests, dont hang if payload is string (6b09b7c7) +* fix redirect test (35e689cf) + +#### v3.3.9 (2023-08-25) + +##### Chores + +* up mentions (4ec3a480) +* incrementing version number - v3.3.8 (a5603565) +* update changelog for v3.3.8 (65e16e9f) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* isPrivilegeGroup not capturing admin privileges (d13e7cd3) + +##### Tests + +* add some tests for isPrivilegeGroup (d5c8bf9e) + +#### v3.3.8 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.7 (b26f1744) +* update changelog for v3.3.7 (1193fa04) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* msg ref (4ba76338) +* #11947, make user message has a numeric timestamp (2d62a772) + +#### v3.3.7 (2023-08-23) + +##### Chores + +* incrementing version number - v3.3.6 (7fb38792) +* update changelog for v3.3.6 (a43354c0) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* closes #11945, fix skins loading if there are no custom skins (438c4c89) + +#### v3.3.6 (2023-08-22) + +##### Chores + +* up deps (db55f18a) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +#### v3.3.4 (2023-08-20) + +##### Chores + +* incrementing version number - v3.3.3 (f94d239b) +* update changelog for v3.3.3 (38149a57) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script, get rid of nested processSortedSet (78a7cfe9) + +#### v3.3.3 (2023-08-19) + +##### Chores + +* incrementing version number - v3.3.2 (ec9dac97) +* update changelog for v3.3.2 (2ecf15c4) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* one more fix (51587ca3) +* one more upgrade script fix (b5d1e917) +* post preview on skins remove clearfix and floats (5a8e6af4) + +##### Refactors + +* add connectionTimeout to psql (90f29571) + +#### v3.3.2 (2023-08-18) + +##### Chores + +* incrementing version number - v3.3.1 (151cc68f) +* update changelog for v3.3.1 (6f961f9c) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* upgrade script (c02f1d70) + +#### v3.3.1 (2023-08-18) + +##### Chores + +* up themes (62231baa) +* incrementing version number - v3.3.0 (fc1ad70f) +* update changelog for v3.3.0 (46f7405d) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* #11930, ability to set custom skins as default (db07ab15) + +##### Bug Fixes + +* some more upgrade script fixes (f23b0b5b) +* #11906, userData.sso — don't serve deauthUrl or non-associated url if caller uid is not same as target uid (19e047e2) +* include latin-ext subset of fonts in admin styles (#11918) (556a1c48) + +##### Other Changes + +* fix lint (d1949cee) + +#### v3.3.0 (2023-08-16) + +##### Chores + +* **deps:** + * update dependency smtp-server to v3.13.0 (#11913) (7f6865cc) + * update dependency lint-staged to v14 (#11909) (ee78b418) + * update dependency lint-staged to v13.3.0 (#11908) (6f3b7bc8) + * update dependency eslint to v8.47.0 (#11904) (af3c5e54) + * update dependency @commitlint/cli to v17.7.1 (#11896) (1d44b004) + * update commitlint monorepo to v17.7.0 (#11892) (d1d38097) + * update dependency sass-embedded to v1.64.2 (#11858) (c9c23513) + * update dependency eslint to v8.46.0 (#11852) (8a761ff7) + * update dependency sass-embedded to v1.64.1 (#11833) (1cca1760) + * update commitlint monorepo to v17.6.7 (#11817) (ac65ab42) + * update dependency sass-embedded to v1.64.0 (#11821) (560bb29c) + * update actions/setup-node action to v3 (#10347) (c8387828) + * update mongo docker tag to v6 (#10889) (f2715979) + * update dependency eslint to v8.45.0 (#11800) (b53da688) + * update coverallsapp/github-action action to v2.2.1 (#11795) (adfde1d4) + * update redis docker tag to v7.0.12 (#11789) (40477c85) + * update dependency eslint to v8.44.0 (#11771) (0bad8578) +* up emoji (ffa8b729) +* up harmony (c83a7023) +* up composer (c9663718) +* up harmony/composer (5d030a77) +* up composer (e151ec86) +* up composer-default (8d2ac658) +* up harmony (dfc155e4) +* up themes (9501d855) +* up harmony (89968048) +* harmony (a282f701) +* up themes (35c97bcb) +* up themes (8b31815f) +* up themes (ba2f6031) +* harmony (e8fb02f3) +* up harmony (3b125ba2) +* up harmony (58968353) +* up themes (8444af1c) +* up harmony (6faec937) +* up composer (7bfe327c) +* up mentions (0495b863) +* up themes (472fbd85) +* up harmony (f3776501) +* up theme (05c1e1f1) +* up harmony (ee0128d7) +* up harmony (ba03e223) +* up themes (6fc80f9f) +* incrementing version number - v3.2.3 (b06d3e63) +* update changelog for v3.2.3 (afb38c71) +* up mentions (4b92df75) +* up composer (48a04eb7) +* up harmony (efc250f2) +* up themes (6b017eb1) +* up harmony (08491053) +* up harmony (3b7b0d41) +* remove test log (b93cc788) +* up plugins (d1132ac4) +* up themes (35ac434c) +* up themes (98e0d141) +* up harmony (ac063fe5) +* up mentions (d545c143) +* up themes (b36bec95) +* up themes (62429252) +* remove log (954db1ee) +* up themes (9fda8dce) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* up markdown (f23cda10) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-dashboard (80ea4eb0) + * fallback strings for new resources: nodebb.admin-settings-chat, nodebb.error (e27d1743) + * fallback strings for new resources: nodebb.modules (ab668617) + * fallback strings for new resources: nodebb.global (bee5a9b4) + * fallback strings for new resources: nodebb.error (eca28302) + * fallback strings for new resources: nodebb.admin-dashboard (ac355acd) + * fallback strings for new resources: nodebb.admin-dashboard (62b7be1c) + * fallback strings for new resources: nodebb.admin-menu (ad9d8f77) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-manage-categories (f075e12a) + * fallback strings for new resources: nodebb.modules (2c54e362) + * fallback strings for new resources: nodebb.admin-manage-users (9284b7e4) + * fallback strings for new resources: nodebb.modules (4ed0ed45) + * fallback strings for new resources: nodebb.topic (9c0b98df) + * fallback strings for new resources: nodebb.email (3613d1e6) + * fallback strings for new resources: nodebb.modules (a7dae508) + * fallback strings for new resources: nodebb.admin-settings-guest (640e32d4) + * fallback strings for new resources: nodebb.error, nodebb.modules (2710037c) + * fallback strings for new resources: nodebb.admin-admin (58bdedaf) + +##### New Features + +* closes #11902, ability to clear search history (7a79fed8) +* #11897, show guest handles in post queue and after using POST /compose (76fde8ef) +* #11881, limit room names (9349cb63) +* add toMid to chat messages (0316f324) +* add category selector to analytics page (acef5e33) +* middleware.handleMultipart, applies on API routes — invokes multipart middleware based on content-type header (bcc4b82c) +* #11868 apply blacklist to routes (#11873) (23404ad1) +* add icon to invite/accept notifs (78c5dfdc) +* add flags link to acp manage menu, closes #11867 (99c22942) +* move to npm fontawesome dependency and support fa pro (#11820) (b709ed9e) +* password check hook (#11853) (8ac34f8e) +* #11850, chat msg search (11bfeaf1) +* #11814, dont check content len for admins (f359a767) +* closes #11843, refresh search after changing filters (907c5fa6) +* #11842, ability to change reputation of users (ac027387) +* closes #11812, add unread public rooms into digest (eb0fcd32) +* allow multiple room owners, closes #6503 (91642cb3) +* show online users at the top of userlist and update (911ef058) +* simplified api module handler logic, content-type detection/parsing (2d016af8) +* allow FormData object to be passed in to the API module (ed99ea20) + +##### Bug Fixes + +* **deps:** + * update dependency postcss to v8.4.28 (#11915) (eafa03ab) + * update dependency sharp to v0.32.5 (#11916) (a013b161) + * update dependency ace-builds to v1.24.1 (#11914) (4a97ee0f) + * update dependency cron to v2.4.1 (#11911) (6476c4b8) + * update dependency esbuild to v0.19.2 (#11910) (d9e08e05) + * update dependency autoprefixer to v10.4.15 (#11907) (2a1e33dd) + * update dependency nodebb-plugin-2factor to v7.2.1 (#11898) (762658d4) + * update dependency nodebb-plugin-ntfy to v1.4.0 (#11905) (b8d926f9) + * update dependency lru-cache to v10.0.1 (#11899) (fd385647) + * update dependency esbuild to v0.19.1 (#11903) (12771b70) + * update dependency sass to v1.65.1 (#11895) (4b04b41e) + * update dependency ace-builds to v1.24.0 (#11893) (8f6feb0b) + * update dependency compare-versions to v6.1.0 (#11883) (9608b124) + * update dependency nodebb-plugin-ntfy to v1.3.0 (#11889) (53006408) + * update dependency esbuild to v0.19.0 (#11884) (454a968e) + * update dependency nodebb-theme-persona to v13.2.17 (#11888) (70f83075) + * update dependency nodebb-theme-harmony to v1.1.33 (#11887) (31ed1a40) + * update fontsource monorepo to v5.0.8 (#11880) (4cb0b738) + * update dependency esbuild to v0.18.19 (#11882) (2c8fd3b8) + * update dependency esbuild to v0.18.18 (#11879) (9a07cdbd) + * update dependency nodebb-plugin-ntfy to v1.2.5 (#11876) (7710a5e6) + * update dependency @fortawesome/fontawesome-free to v6.4.2 (#11870) (7d5a8666) + * update fontsource monorepo to v5.0.7 (#11869) (2c8bf84c) + * update dependency validator to v13.11.0 (#11877) (4594cd67) + * update dependency nodebb-plugin-ntfy to v1.2.4 (ae8f5398) + * update socket.io packages to v4.7.2 (#11871) (d4d339f9) + * update dependency pg to v8.11.2 (#11859) (5582fe92) + * update dependency pg-cursor to v2.10.2 (#11860) (c79c1e5f) + * update dependency sass to v1.64.2 (#11861) (da852139) + * update dependency esbuild to v0.18.17 (#11844) (ba379836) + * update dependency cron to v2.4.0 (#11839) (b1db67ce) + * update dependency postcss to v8.4.27 (#11827) (8d8930f8) + * update dependency sharp to v0.32.4 (#11828) (ef9fd345) + * update dependency sass to v1.64.1 (#11834) (878fe217) + * update dependency esbuild to v0.18.16 (#11838) (ace36434) + * update dependency esbuild to v0.18.15 (#11823) (8ab9c72c) + * update dependency nodemailer to v6.9.4 (#11819) (fcb99af1) + * update dependency sass to v1.64.0 (#11822) (e7626d90) + * update dependency nodebb-plugin-ntfy to v1.1.0 (#11815) (465b3e09) + * update dependency webpack to v5.88.2 (#11811) (4095cda6) + * update dependency esbuild to v0.18.14 (#11813) (de13aae6) + * update dependency esbuild to v0.18.13 (#11801) (212f90bb) + * update dependency sharp to v0.32.3 (#11799) (406ced79) + * update dependency postcss to v8.4.26 (#11798) (8e295464) + * update dependency esbuild to v0.18.12 (#11794) (f15265ff) + * update dependency winston to v3.10.0 (#11792) (786fff6f) + * update dependency sharp to v0.32.2 (#11791) (d156e67e) + * update dependency nodebb-plugin-ntfy to v1.0.16 (#11790) (3c5e5d3e) + * update fontsource monorepo to v5.0.5 (#11785) (efd784fa) + * update dependency compare-versions to v6 (#11784) (50fd242b) + * update dependency semver to v7.5.4 (#11783) (3bf10941) + * update dependency mongodb to v5.7.0 (#11781) (833a1ba7) + * update dependency postcss to v8.4.25 (#11780) (7fb8e414) + * update dependency jsonwebtoken to v9.0.1 (#11778) (bb89a12a) + * update dependency ace-builds to v1.23.4 (#11782) (b2cabd43) + * update fontsource monorepo to v5.0.4 (#11776) (5eedd8eb) + * update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (1932a31d) + * update dependency nodebb-theme-persona to v13.1.7 (#11769) (d2e6062b) + * update dependency @isaacs/ttlcache to v1.4.1 (#11774) (63bbb366) + * update dependency esbuild to v0.18.11 (#11772) (335a3619) + * update dependency webpack to v5.88.1 (#11764) (a3111e4d) +* if you send message scrollToBottom (223c85e4) +* clicking on email consent form label checks the wrong box (2fe93361) +* clicking on email consent form label checks the wrong box (514af5d6) +* copy FA fonts to build directory instead of serving them directly (#11891) (ac4623ee) +* use config.undoTimeout instead of hardcoded value (850cfb33) +* add missing id/for to all checkboxes (ae747875) +* #11875, simplify alerts and show progress (881a28eb) +* bug where api module would throw if response contained no content-type header (007d735f) +* chat mark read regression (f4e2e617) +* fix escaped characters in tooltips, fix priv checks in tooltips (82562bec) +* #11855, remove superfluous password challenge on admin email update (unless they're updating their own) (4ca71f63) +* register abort can error on weird session state (#11854) (c9511915) +* #11847, typo in markNotification (5a8b4125) +* #11837, use userslug for check (e2fa8cf3) +* #11841, use unique nid per user who flagged (17783440) +* reset_code.tpl card block expanding to bottom of container (2792d771) +* closes #11825, user icons in global privileges (dae4f9f7) +* fallback for room timestamp (77550a50) +* dont error if timestamp is missing (6cc86b6e) +* topic postercount field if owner is changed (00be053e) +* updateOwner (16fe1eb9) +* unread notif filter (3e7ca4f2) +* closes #11806, fix code blocks (165b0f85) +* allow escape to close chat modals (4c311502) +* on leave/kick remove matching sockets from rooms (a766f74f) +* spec (79fae26d) +* lint (1e38a16b) +* client side js crash (adb3a5e6) +* #11797, update title on chat switch (840792ae) +* always return empty array if its not set (5c208610) +* mobile back button (9149a9a2) +* clear cache on sort (e03fdcd6) +* #11787 (bf2c429a) +* fetch handler not passing back errors or success payloads (8a531826) +* group membership methods for guests/spiders (2791eb8a) + +##### Other Changes + +* new filter to filter skins (c1361ee5) +* //github.com/NodeBB/NodeBB/issues/11818 (f7ae8963) +* //github.com/NodeBB/NodeBB/issues/11818 (0dce4c46) + +##### Performance Improvements + +* faster upgrade script (43060f3c) + +##### Refactors + +* ip blacklist.test (38c0c8de) +* dont load all tokens in verify token (2fe193d6) +* dont sleep if iteration is done on first one (0136e924) +* use fetch() throughout, instead of jQuery .ajax() (7415b16d) + +##### Tests + +* fix test if ip is invalid (38377982) +* fix tests to use regular uid (d615273d) +* fix tests since nid format changed (e41042ee) +* fix test (9e574e07) +* log e11000 errors (934df69e) +* fix spec (b63cd548) +* fix (e31f5c42) + +#### v3.2.3 (2023-07-19) + +##### Chores + +* downgrade harmony to correct version (7c94506b) +* incrementing version number - v3.2.2 (758ecfcd) +* update changelog for v3.2.2 (91a432ad) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* typo in replied to link (3024dac1) +* logs page whitespace (2a3d6d5c) +* version alert in acp (05c9cca7) +* #11804, fix direction of dropdown on rtl (a4dba8d3) +* #11802, fix anchor ids in acp settings (562e4d6e) +* #11803, fix rtl in acp (a0478c70) + +#### v3.2.2 (2023-07-12) + +##### Chores + +* up themes (f1170b18) +* up spam-be-gone (eed34d04) +* remove log (509faa5e) +* incrementing version number - v3.2.1 (20145074) +* update changelog for v3.2.1 (c7f8cee9) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11787 (6ae0df4f) +* #11786 fix selector for upgradable plugins (bf114c11) + +#### v3.2.1 (2023-07-05) + +##### Chores + +* up harmony (9fc5ae08) +* up composer (82d37702) +* up spider-detector (97d8f858) +* incrementing version number - v3.2.0 (9ecac38e) +* update changelog for v3.2.0 (080f9e75) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11766, allow privileged users to vote and chat (1bda9073) +* #11775, trim -rtl from targetSkin (0183e5f8) +* #11773, fix create token button (64d30182) +* add ?page= to canonical urls (4045681a) +* group membership methods for guests/spiders (7d5fe20b) +* **deps:** update dependency nodebb-plugin-emoji to v5.1.3 (#11777) (a1110f10) + +#### v3.2.0 (2023-06-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13.2.3 (#11762) (26af152a) + * update commitlint monorepo to v17.6.6 (#11750) (a19e7b5c) + * update dependency sass-embedded to v1.63.6 (#11742) (8a961794) + * update dependency sass-embedded to v1.63.5 (#11738) (94d1dbc7) + * update dependency eslint to v8.43.0 (#11722) (7beadb6b) + * update coverallsapp/github-action action to v2.2.0 (#11690) (9282bc58) + * update dependency eslint to v8.42.0 (#11672) (55e5467d) + * update commitlint monorepo to v17.6.5 (#11648) (3b53f415) + * update dependency jsdom to v22.1.0 (#11640) (9a5d39c0) + * update dependency smtp-server to v3.12.0 (#11628) (57e3f999) + * update dependency eslint to v8.41.0 (#11616) (70bb50cd) + * update redis docker tag to v7 (#10830) (f1e2342d) + * update dependency jquery to v3.7.0 (#11591) (12c03130) +* up harmony (94013139) +* up persona (8b4e2ca9) +* up deps (b1de9472) +* up harmony (db5016cc) +* up harmony (8f6889e0) +* up harmony (c4c06be5) +* up harmony (777c7d09) +* up deps (7f465006) +* up harmony (f9e37829) +* incrementing version number - v3.1.7 (0b4e81ab) +* update changelog for v3.1.7 (8744e412) +* up persona (7a0e5c6d) +* up harmony (be474fb4) +* up harmony (1896b486) +* up persona (09d42076) +* up harmony (cce42fec) +* up markdown (4107d6b8) +* up themes (b2f70a2e) +* up composer (21919524) +* up harmony (64441602) +* incrementing version number - v3.1.6 (b3a3b130) +* up themes (61420fdc) +* up themes (f9990cab) +* bump themes for da02361b13d064763223533368f9b71d998ecf37 (c97977f8) +* up harmony (0f84f597) +* up emoji (4b0d3940) +* up emoji (291aa58e) +* incrementing version number - v3.1.5 (ec19343a) +* up harmony (56ac610b) +* up themes (0bfe361c) +* up themes (67ab222d) +* update lang key (1cc079f3) +* up harmony (590a7237) +* up harmony (ed54c7c0) +* up harmony (91760eef) +* up emoji (7ab05f5d) +* up harmony (43887328) +* up emoji (9a3c62f7) +* up emoji (783fbfd8) +* up emoji (7a3468a1) +* up emoji (933f5a90) +* up harmony (61f4202e) +* up themes (5d089363) +* scroll up alert (ca6f43c5) +* harmony (c48f15c5) +* up themes (14c93cd5) +* up harmony (6188d8be) +* up harmony (9e416d7f) +* incrementing version number - v3.1.4 (2452783c) +* up persona (78c2e29c) +* up markdown (7f5ec0ef) +* up themes (cdfc1bfe) +* up harmony (fd80b612) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.admin-appearance-skins (7ca85c60) + * fallback strings for new resources: nodebb.admin-advanced-cache, nodebb.admin-advanced-errors, nodebb.admin-development-logger (fa8e656d) + * fallback strings for new resources: nodebb.admin-appearance-customise (0863afd0) + * fallback strings for new resources: nodebb.user (195b09d5) + * fallback strings for new resources: nodebb.admin-manage-users (934b6792) + * fallback strings for new resources: nodebb.themes-harmony (619c4ff7) + * fallback strings for new resources: nodebb.topic (639eeb44) + * fallback strings for new resources: nodebb.admin-appearance-customise, nodebb.admin-appearance-skins, nodebb.admin-appearance-themes, nodebb.admin-settings-api (d508772c) + * fallback strings for new resources: nodebb.admin-manage-groups (e53929fc) + * fallback strings for new resources: nodebb.users (1ffc9221) + * fallback strings for new resources: nodebb.modules (54a683bb) + * fallback strings for new resources: nodebb.themes-harmony (0aef9a91) + * fallback strings for new resources: nodebb.admin-settings-api (78bc71aa) + +##### New Features + +* closes #11747, add pagination to tokens page (4b11cd0d) +* add vote privs to topic (#11734) (86faed6f) +* custom skins panel in acp (556fd65d) +* add req and socket to als, closes https://github.com/NodeBB/NodeBB/pull/10304 (68ddca1e) +* #11714, add page title (1a5e18cd) +* #11714, add registrationQueue flag (3080eb7e) +* do not show the replies container in a post's footer if the only reply present is the next post (da02361b) +* add new tab to define bs variables (de68f749) +* bring back noskin option (2edfe0ef) +* add not validated/expired (5fae09f3) +* closes #11671, allow custom classes on body (e89cfd44) +* upgrade fonts (392a7d28) +* allow more params to app.newTopic/newReply (325c1955) +* update progress bar more frequently (99aaa9f1) +* closes #11630 (8c9ab01f) +* add hidden-empty utility (63ae03b4) +* translate bodyShort (ed15cbb0) +* add lang string and drag fix (db9b807c) +* center chat modal attr (4833a2b9) +* token rolling API for admins (4f524e9f) +* token editing and deletion (ce23caf7) +* api token migration, new ACP tokens list, token creation (e4888dea) +* internal utility functions for token management (creation, deletion, etc) (7b8bffd7) + +##### Bug Fixes + +* **deps:** + * update socket.io packages to v4.7.1 (#11763) (1de2d632) + * update dependency ace-builds to v1.23.1 (#11759) (53ab5931) + * update dependency esbuild to v0.18.10 (#11760) (e7f68aec) + * update dependency pg-cursor to v2.10.1 (#11757) (a814440c) + * update dependency pg to v8.11.1 (#11758) (8b56fa2f) + * update dependency esbuild to v0.18.9 (#11755) (3adc7505) + * update socket.io packages to v4.7.0 (#11744) (b25e7247) + * update dependency semver to v7.5.3 (#11745) (9d0edc36) + * update dependency esbuild to v0.18.8 (#11751) (a7243790) + * update dependency esbuild to v0.18.7 (#11749) (85e5619c) + * update dependency sass to v1.63.6 (#11743) (939e5818) + * update dependency webpack to v5.88.0 (#11741) (c45854d9) + * update dependency sanitize-html to v2.11.0 (#11740) (9d5fadad) + * update dependency esbuild to v0.18.6 (#11736) (e0c137c9) + * update dependency sass to v1.63.5 (#11737) (61e45cb3) + * update dependency ace-builds to v1.23.0 (#11739) (a53e7d21) + * update dependency esbuild to v0.18.5 (#11730) (2a56d21c) + * update dependency esbuild to v0.18.4 (#11721) (ae349004) + * update dependency commander to v11 (#11719) (d454c5c4) + * update dependency lru-cache to v10 (#11716) (b3bdb9d0) + * update dependency semver to v7.5.2 (#11718) (770021e0) + * update dependency esbuild to v0.18.3 (#11715) (9f94b56f) + * update dependency webpack to v5.87.0 (#11713) (f95929b2) + * update dependency nodebb-plugin-2factor to v7.1.3 (#11711) (c9e41e10) + * update dependency sass to v1.63.4 (#11709) (dfcef322) + * update dependency esbuild to v0.18.2 (#11705) (9521c8de) + * update dependency nodebb-plugin-2factor to v7.1.1 (#11703) (fe96d6f8) + * update dependency ace-builds to v1.22.1 (#11699) (b0d91a55) + * update dependency esbuild to v0.18.1 (#11701) (5247f763) + * update dependency nodebb-theme-harmony to v1.0.47 (#11700) (96a7add5) + * update dependency sass to v1.63.3 (#11693) (1512a37d) + * update dependency @fontsource/poppins to v5.0.3 (#11696) (1bd8f898) + * update dependency @fontsource/inter to v5.0.3 (#11695) (ddb41fbe) + * update dependency esbuild to v0.18.0 (#11698) (2b419f93) + * update dependency webpack to v5.86.0 (#11691) (744f399c) + * update dependency connect-pg-simple to v9 (#11692) (32cebaa6) + * update dependency mongodb to v5.6.0 (#11670) (1738f3c5) + * update dependency lru-cache to v9.1.2 (#11668) (09fff40c) + * update dependency nodebb-plugin-emoji to v5.1.0 (#11683) (bf76989e) + * update dependency nodebb-plugin-dbsearch to v6.1.0 (#11689) (9ef40569) + * update dependency nodebb-theme-persona to v13.1.0 (#11688) (6240a8c6) + * update dependency nodebb-plugin-composer-default to v10.2.0 (#11686) (bfdb72ca) + * update dependency nodebb-plugin-mentions to v4.2.0 (#11687) (d58c9d8c) + * update dependency nodebb-plugin-2factor to v7.1.0 (#11685) (64557680) + * update dependency nodebb-plugin-markdown to v12.1.0 (#11684) (ed2d9a96) + * update dependency nodebb-theme-lavender to v7.1.0 (#11682) (c23deb87) + * update dependency nodebb-plugin-spam-be-gone to v2.1.0 (#11681) (5d8d0946) + * update dependency nodebb-theme-harmony to v1.0.43 (#11680) (601a0363) + * update dependency webpack to v5.85.1 (#11678) (ccf3d3bc) + * update dependency nodebb-theme-harmony to v1.0.42 (#11674) (d41651dc) + * update dependency nodebb-plugin-composer-default to v10.1.9 (#11676) (929835de) + * update dependency nodebb-theme-harmony to v1.0.40 (#11669) (b5ee0247) + * pin dependencies (#11660) (1033cd1c) + * update dependency webpack to v5.85.0 (#11663) (e6344db8) + * update dependency @fontsource/inter to v5 (#11661) (e5e8debf) + * update dependency nodebb-theme-harmony to v1.0.39 (#11659) (6d4ab1d0) + * update socket.io packages to v4.6.2 (#11658) (fe10356c) + * update dependency ipaddr.js to v2.1.0 (#11653) (a13b5c40) + * update dependency nodebb-plugin-composer-default to v10.1.8 (#11656) (032425b2) + * update dependency nodebb-plugin-markdown to v12.0.5 (#11657) (a7a1cda5) + * update dependency nodebb-theme-persona to v13.0.73 (#11652) (e4c2015f) + * update dependency nodebb-plugin-composer-default to v10.1.7 (#11654) (d242bc29) + * update dependency nodemailer to v6.9.3 (#11644) (bd93ab8b) + * update dependency nodebb-theme-harmony to v1.0.38 (#11646) (f9ba518a) + * update dependency nodebb-theme-persona to v13.0.72 (#11647) (c474841e) + * update dependency nodebb-widget-essentials to v7.0.13 (#11645) (5daa733c) + * update dependency webpack to v5.84.1 (#11635) (7c333fb1) + * update dependency @popperjs/core to v2.11.8 (#11636) (14ac1206) + * update dependency winston to v3.9.0 (#11637) (45af9333) + * update dependency postcss to v8.4.24 (#11642) (1bc3c384) + * update dependency nodebb-theme-persona to v13.0.71 (#11641) (a6be0cd7) + * update dependency nodebb-plugin-composer-default to v10.1.6 (#11638) (3c9a960e) + * update dependency cron to v2.3.1 (#11633) (f5bcdc87) + * update dependency nodebb-theme-persona to v13.0.70 (#11632) (73d8ac66) + * update dependency webpack to v5.84.0 (#11631) (23532464) + * update dependency nodebb-theme-peace to v2.0.27 (#11629) (b10227dc) + * update dependency ace-builds to v1.22.0 (#11621) (70d0fc1a) + * update dependency nodebb-plugin-emoji to v5.0.16 (#11626) (21b61b37) + * update dependency webpack-merge to v5.9.0 (#11622) (5c70b428) + * update dependency nodebb-theme-peace to v2.0.25 (#11615) (f0336af4) + * update dependency webpack to v5.83.1 (#11608) (a4ae2e08) + * update dependency rimraf to v5.0.1 (#11610) (d1ccfac1) + * update dependency terser-webpack-plugin to v5.3.9 (#11611) (af00ebbe) + * update dependency ace-builds to v1.21.1 (#11607) (d26c9bf8) + * update dependency pg-cursor to v2.10.0 (#11605) (10ed33f1) + * update dependency @socket.io/redis-adapter to v8.2.1 (#11602) (49b3badb) + * update dependency ace-builds to v1.21.0 (#11603) (3d9f6f41) + * update dependency pg to v8.11.0 (#11604) (9840289c) + * update dependency semver to v7.5.1 (#11597) (18606f9c) + * update dependency esbuild to v0.17.19 (#11598) (28fb4e10) + * update dependency mongodb to v5.5.0 (#11593) (88e891fc) + * update dependency nodemailer to v6.9.2 (#11590) (3a883e3f) + * update dependency connect-redis to v7.1.0 (#11592) (97ec0c75) + * update dependency webpack to v5.82.1 (#11585) (90e53177) + * update dependency ace-builds to v1.20.0 (#11587) (326d820f) +* #11761, don't escape topic title twice (01c36f8b) +* use btn instead of icon (aefef763) +* rollback ace-builds 1.23.0 doesnt work (ea150162) +* #11756, fix unique visitor stats in acp table (e45f513b) +* dont overwrite postIndex (c21d7dbc) +* closes #11731, set postIndex on pagination (cbd98c1b) +* pinned topic ordering if parent element has non topic elements (cfedd087) +* delete events not working (281078f5) +* if reply is in different topic dont hide in parent (9ee1d7b0) +* web (6d5f6a15) +* var name (b48a6e26) +* error toast on lost connection (2c89d784) +* dont send 200 status on admin upload errors (#11707) (8ca65b0c) +* #11702, don't escape backgroundImage twice (6740a51e) +* closes #11697, remove min attribute from rep thresholds (4a6249a4) +* skins page revert (33a6b3e1) +* dont add deleted users to users:online (d0e9eb2c) +* #11679, fix username change (db3bff09) +* closes #11673, topic search for harmony (ee8cb378) +* #11664, dont create backlinks for quotes (d3c5a79d) +* wrap on events page (a5b080ea) +* app.newTopic usage (9f3bdf75) +* rtl fixes for code and long text (05460d8e) +* topic count in tools after purge closes #11651 (1974abeb) +* add loadingMore flag to chat infinite load (e0300ab7) +* #11619, fix selector (cdeaef6b) +* text area height calculation in chats (c52916de) +* textarea on error (c77b6224) +* closes #11612 (3cef2535) +* edge case in category filter (5daaa5ea) +* #11572 (29303f4a) +* browser title if options.title is undefined (adf14ea5) +* lang strings (d6ead3d4) +* #11594 (11d315df) +* relocated upgrade script, removed outdated code that called core.api for tokens (3e6dd78d) + +##### Other Changes + +* fix whitespace (4768d06b) +* fix unused (dcc2bb10) +* //github.com/NodeBB/NodeBB/issues/11612 (cf7d9334) +* up peace (0da8b506) +* use csrf_token in ws handshake (#11573) (63b859f0) +* closes #11577 (ad1ae291) + +##### Performance Improvements + +* make less db calls to load indices (0b2feb9e) + +##### Refactors + +* show both emails in user list (daa5ac85) +* move async call to promise.all (e56e44ab) +* remove script (2360d296) +* remove log (9522951f) +* remove log (32f60df1) +* use new params (2cf865e8) +* use app.parseAndTranslate (b1fbc194) +* remove return (e0149462) + +##### Reverts + +* remove emoji email css (7b8ebd0a) + +##### Tests + +* fix spec (94f06301) +* make email requirement flag changes more explicit in tests, so cases do not rely on variable values from other cases (a8399aa2) +* fix another test (c638186b) +* fix email tests @julianlam (64718d0c) +* openapi (2f94eb21) +* openapi (bc74afaf) +* remove is touch test (1ab0faa4) +* remove socket.io test (366b18e0) +* log socket.io error (3cb4edf1) +* fix another test (12e75ff4) +* fix test (c201bf45) +* add back missing tests (031ffe49) +* add missing tests (a75fd636) +* fix digest test (aff6d20f) +* add email (4bfebc81) +* digest (61563b01) +* additional tests for .roll() (6765d053) +* fix authentication tests to use new token saving utility functions (f42b636a) + +#### v3.1.7 (2023-06-21) + +##### Chores + +* incrementing version number - v3.1.6 (b3a3b130) +* update changelog for v3.1.6 (f10a2d2e) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11735, crash when making guest reply (f2fe7c06) +* #11729, only check registered users (090a7921) +* #11723, fix pagination on following/follower page (4e146eb5) + +#### v3.1.6 (2023-06-15) + +##### Chores + +* incrementing version number - v3.1.5 (ec19343a) +* update changelog for v3.1.5 (b0d16861) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11717 prevent crash in messaging (8620a2cd) +* closes #11708, fix quick reply check (a757716d) + +#### v3.1.5 (2023-06-13) + +##### Chores + +* fix persona (74174414) +* up themes (97ff1f11) +* incrementing version number - v3.1.4 (2452783c) +* update changelog for v3.1.4 (633dc2de) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### New Features + +* add back support for req.body._csrf (67f44a32) + +##### Bug Fixes + +* improper neutralization of user input in image wrapping code (1d1639d4) +* don't update edit data if edited timestamp is not available (c5cd76e7) +* filter null nav items (b73f307a) +* rimraf usage in user image delete (3256fb30) +* closes #11620, fix copy code when line numbers are enabled (82e26829) +* logins dashboard user images (8cb6ebb9) + +##### Refactors + +* change welcome headers to be smaller (0c4870ec) + +##### Tests + +* remove socket.io test (24ebb153) + +#### v3.1.4 (2023-05-18) + +##### Chores + +* up markdown (51bf5e95) +* incrementing version number - v3.1.3 (3b4e9d3f) +* update changelog for v3.1.3 (9924fde6) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* textarea on error (469aa551) +* closes #11613, closes #11614 (d8d486a6) +* closes #11612 (8f6a68ca) +* #11572 (2910cb2b) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11612 (24bd9d4e) + +##### Refactors + +* remove unused require (05b58c70) +* remove log (ca2be0e8) + +#### v3.1.3 (2023-05-15) + +##### Chores + +* incrementing version number - v3.1.2 (40fa3489) +* update changelog for v3.1.2 (5b398782) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Continuous Integration + +* use GitHub Actions expression instead of handlebars template (#11599) (412a1ecf) +* tag with branch name if not default branch (cd7fdfce) + +##### Bug Fixes + +* #11601, dont trigger edit if chat input has text (d55cd464) +* #11600, prevent helmet crash on startup (8eed5a84) +* #11594 (85d104c3) + +##### Other Changes + +* use csrf_token in ws handshake (#11573) (51096ad2) + +#### v3.1.2 (2023-05-12) + +##### Chores + +* incrementing version number - v3.1.1 (40250733) +* update changelog for v3.1.1 (ccd6f48c) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #11595, use default value (28740de7) + +#### v3.1.1 (2023-05-11) + +##### Chores + +* incrementing version number - v3.1.0 (0cb386bd) +* update changelog for v3.1.0 (2c515dc3) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Documentation Changes + +* updating changelog to move line re: breaking change down to new features (b259a000) + +##### Bug Fixes + +* failing test case (3251bca2) +* #11589, regression where a user could not confirm their email if requireEmailAddress was enabled (686ecea1) + +#### v3.1.0 (2023-05-10) + +##### Chores + +* up themes (14a5c1aa) +* up harmony (f9997b27) +* up dbsearch (2b259b20) +* up harmony (9064920f) +* up harmony (622d75d7) +* up markdown (c92a14ab) +* up harmony (475ecf42) +* up emoji (ca7ff292) +* up deps (64add3e3) +* up harmony (048fbcaa) +* up deps (f337ca65) +* up widgets (68283bcd) +* up harmony (eab2679f) +* up harmony (7f19913b) +* up themes (832fe95a) +* incrementing version number - v3.0.1 (26f6ea49) +* update changelog for v3.0.1 (fd30af10) +* whopps (ec0da196) +* up harmony (2caf4afc) +* up harmony (9e4bd4e9) +* up composer (01960f27) +* up deps (b6915247) +* up themes (4b374f04) +* up harmony (ee085c1d) +* up widgets (2588853b) +* up harmony (01669fa5) +* up harmony (c58d07f4) +* incrementing version number - v3.0.0 (224e08cd) +* **i18n:** + * fallback strings for new resources: nodebb.themes-harmony, nodebb.themes-persona (48a4fd50) + * fallback strings for new resources: nodebb.admin-settings-email (489163aa) + * fallback strings for new resources: nodebb.user (6a2c6de0) + * fallback strings for new resources: nodebb.admin-extend-widgets (5f728445) + * fallback strings for new resources: nodebb.groups (db802db6) + * fallback strings for new resources: nodebb.global, nodebb.pages (819ded6f) + * fallback strings for new resources: nodebb.global (6fe660a3) + * fallback strings for new resources: nodebb.error, nodebb.tags, nodebb.topic (a908bed8) + * fallback strings for new resources: nodebb.global (6e7465de) + * fallback strings for new resources: nodebb.global (28a1df16) + * fallback strings for new resources: nodebb.modules (3b0b2b2f) + * fallback strings for new resources: nodebb.global (6f573c27) + * fallback strings for new resources: nodebb.global (da5bfacd) + * fallback strings for new resources: nodebb.admin-admin, nodebb.admin-appearance-customise, nodebb.admin-dashboard, nodebb.admin-extend-widgets, nodebb.admin-manage-groups, nodebb.admin-manage-privileges, nodebb.admin-settings-api, nodebb.admin-settings-navigation, nodebb.admin-settings-user, nodebb.error, nodebb.flags, nodebb.global, nodebb.groups, nodebb.modules, nodebb.pages, nodebb.post-queue, nodebb.recent, nodebb.register, nodebb.search, nodebb.tags, nodebb.topic, nodebb.user, nodebb.users (de282c0b) + * fallback strings for new resources: nodebb.topic (ab17e5c3) +* **deps:** + * update dependency eslint to v8.40.0 (#11574) (54f4aba0) + * update commitlint monorepo to v17.6.3 (#11568) (fe041498) + * update dependency jsdom to v22 (#11551) (76cc1cf3) + * update dependency jsdom to v21.1.2 (#11547) (f0d989e4) + * update commitlint monorepo to v17.6.1 (#11478) (c4c55684) + * update dependency lint-staged to v13.2.2 (#11521) (2e2bc54b) + +##### Continuous Integration + +* add 3.x docker tag (163c977d) +* only publish latest from master (c588d741) +* multi-platform docker image (#11479) (0417e5f1) + +##### Documentation Changes + +* openapi schema for newly added routes (02f567ff) + +##### New Features + +* update transifex config with new language strings (529f2d17) +* #11584 (f6b2d376) +* add helper to convert isostrings to localeString (e1bb277f) +* up emoji, remove title parse code (78f79347) +* add getSortedSetMembersWithScores (#11579) (f083cd55) +* add app.newReply (101fe81d) +* expiration date for widgets (fbf44a10) +* closes #11549, new error pages (83fca316) +* write API shorthand to query post routes by their topic index (requires tid in either query string or request body) (d814e281) +* allow tag editing from topic tools (e3551d80) +* #11537, copy ip on click (4aa87366) +* #7096, improve chat editing (eb0c77fd) +* Change Date translation string (e42967d7) +* #11431 (3099d57f) +* add missing i18n (e83a9a72) +* show even uninstalled active plugins if set via config (2bfdd761) +* add option to autoinstall plugins on setup (74cb2243) +* closes #11428, add a copy code button to code blocks (0a292fc1) +* closes #11432, use edited time if its greater (c3854b78) +* move topic thumb to template (84a78c2d) +* open topic thumbs on click in a bootbox dialog instead of opening in same page; complements nodebb/nodebb-theme-harmony#12 (04219c4c) +* closes #11424, add category selector to fork modal (#11491) (6b51dd5a) +* started work on porting socket methods to write API (f2082d7d) + +##### Bug Fixes + +* reset password (8a1ec4d6) +* strip html tags from browser title (e1473bcc) +* chat ip button not doing anything if clicked outside of icon (f974c230) +* add an additional check on page load to enforce `requireEmailAddress` setting (84313712) +* selector for nav scroll (34730caf) +* gdrp checkboxes (ca93084c) +* #11570 (18e76ba5) +* closes #11559, fix some rtl issues (093ec0e8) +* closes #11561, close dialogs on escape/backdrop click (0af2b800) +* show edit indicator after an edit without reloading the page (24e0e502) +* add back removed socket method, added deprecation warnings, as there are no breaking changes allowed in v3.1.0 (cdd77480) +* closes #11511 (ec8d8ec4) +* outgoing style (e070b851) +* #11541, fix leave chat error (8e0f9ce5) +* closes #11539 (d0a15e9e) +* add check for no tids (156b8e77) +* remove positions (9f485ce6) +* scroll on edit textarea (5ead9b73) +* #11531, fix teasers (c23689d3) +* #11530, fix topic rescheduling (2720a692) +* #10594, move counter code (#11529) (5607e5bc) +* only add copy button to multiline codeblocks (619e910f) +* go back to post queue after deleting an account in post queue (#11513) (c3ebda22) +* **deps:** + * update dependency helmet to v6.2.0 (#11576) (77b05b73) + * update dependency terser-webpack-plugin to v5.3.8 (#11575) (f6db5f60) + * update dependency nodebb-theme-persona to v13.0.63 (#11571) (84548edb) + * update dependency mongodb to v5.4.0 (#11569) (bac0b7b2) + * update dependency @isaacs/ttlcache to v1.4.0 (#11567) (ae7547e2) + * update dependency nodebb-theme-persona to v13.0.61 (#11566) (5f4197a9) + * update dependency nodebb-theme-harmony to v1.0.15 (#11565) (e630cf25) + * update dependency ace-builds to v1.19.0 (#11557) (0813ee78) + * update dependency webpack to v5.82.0 (#11564) (cdebc0d1) + * update dependency nodebb-plugin-spam-be-gone to v2.0.7 (#11563) (80bcd938) + * update dependency nodebb-theme-harmony to v1.0.11 (#11556) (904adf57) + * update dependency @socket.io/redis-adapter to v8.2.0 (#11555) (700d1da9) + * update dependency nodebb-plugin-composer-default to v10.1.4 (#11552) (efadd714) + * update dependency nodebb-plugin-emoji to v5.0.8 (#11550) (602f0520) + * update dependency nodebb-plugin-mentions to v4.1.1 (#11548) (72bc471e) + * update dependency nodebb-widget-essentials to v7.0.11 (#11536) (e0f0c08a) + * bump composer-default, closes #11534 (b0005f18) + * update dependency sharp to v0.32.1 (#11527) (ce05e743) + * update dependency yargs to v17.7.2 (#11528) (1d7e981f) + * update dependency webpack to v5.81.0 (#11523) (e9d30f76) + * update dependency nodebb-plugin-emoji to v5.0.7 (#11522) (81799777) + * update dependency nodebb-plugin-mentions to v4.1.0 (#11518) (42bd1a63) + * update dependency lru-cache to v9.1.1 (#11493) (d4bf0ae7) + * update dependency webpack to v5.80.0 (#11503) (6413efbb) + * update dependency mongodb to v5.3.0 (#11496) (e55f1b55) + * update dependency sass to v1.62.1 (#11517) (d8829872) + +##### Other Changes + +* fix comma (073f4d37) + +##### Refactors + +* removed parsing for taskbar (e832d365) +* move to modals (8e63e43a) +* topic mark read/unread routes (36895421) +* migrate `posts.getReplies` to write API (69b40938) +* deprecate socket method posts.getPidIndex (ee9f53f1) +* if position (87047210) +* remove position classes (503fab51) + +##### Tests + +* added test cases for #11562 (393a8913) +* fix assert.reject calls (e0db9a89) +* fix brackets (0c20d7cd) +* remove log (9800d65a) +* increase delay after export (8a359d63) +* replace calls to getReplies socket call to api method (82b4984b) +* fix group tests (b891c5ac) + +#### v3.0.1 (2023-05-02) + +##### Chores + +* incrementing version number - v3.0.0 (224e08cd) +* update changelog for v3.0.0 (56ad381f) + +##### Bug Fixes + +* #11554, email requirement bypass by sending in whitespace (2b8dd3d2) +* update openapi spec to specify optional `expiry` argument available to be passed in via request body. (b3787bd5) +* #11545, wrong message shown to new users re: email confirmation (2b70063e) +* black on red coloration on error when a bad reset code is received (604a8f7e) +* use query param sort over user setting if it's set (9484ddc3) + +#### v3.0.0 (2023-04-26) + +##### Breaking Changes + +* #11426, proper v3 style error on maintenance mode [breaking] (2615c1e5) +* #11362, regular mods are also subject to post queue [breaking] (c843984d) + +##### Chores + +* **deps:** + * update dependency eslint to v8.39.0 (#11507) (e74e76b1) + * update coverallsapp/github-action action to v2.1.2 (#11497) (fec552d2) + * update coverallsapp/github-action action to v2.1.1 (#11494) (f8ae6ef7) + * update dependency sass-embedded to v1.62.0 (#11467) (1dc6eb51) + * update coverallsapp/github-action action to v2.1.0 (#11458) (88b02d90) + * update dependency eslint to v8.38.0 (#11448) (afa37d6d) + * update dependency sass-embedded to v1.61.0 (#11442) (c7ccf9b8) + * update dependency lint-staged to v13.2.1 (#11444) (1a888f50) + * update dependency eslint to v8.37.0 (#11410) (defc01d9) + * update dependency @commitlint/cli to v17.5.1 (#11408) (0e57afa9) + * update dependency sass-embedded to v1.60.0 (#11392) (034666b4) + * update dependency @commitlint/cli to v17.5.0 (#11384) (69a7bfbe) + * update postgres docker tag to v15 (#10976) (f286b66f) + * update dependency @apidevtools/swagger-parser to v10 (#11207) (f21c8ca4) + * update docker/build-push-action action to v4 (#11245) (8ddb302f) + * update dependency sass-embedded to v1.59.3 (#11371) (2cde7231) + * update coverallsapp/github-action action to v2 (#11369) (a5a4b307) + * update dependency jsdom to v21.1.1 (#11355) (ae53a6e0) + * update dependency eslint to v8.36.0 (#11349) (50f14768) + * update dependency lint-staged to v13.2.0 (#11346) (d8f787eb) + * update dependency jquery to v3.6.4 (#11339) (87be2694) + * update coverallsapp/github-action action to v1.2.4 (#11323) (e8e35de3) + * update dependency eslint to v8.35.0 (#11324) (f155eedb) + * update commitlint monorepo to v17.4.4 (#11317) (a4aeee96) + * update dependency lint-staged to v13.1.2 (#11298) (45c3b9df) + * update dependency lint-staged to v13.1.1 (#11268) (4d68b0d4) + * update dependency eslint to v8.34.0 (#11291) (330f7ec8) + * update commitlint monorepo to v17.4.3 (#11293) (558c1c98) + * update dependency grunt to v1.6.1 (#11244) (9f0c352e) + * update dependency eslint to v8.33.0 (#11243) (eeca887b) + * update dependency jsdom to v21.1.0 (#11202) (09712b57) + * update commitlint monorepo to v17.4.2 (#11186) (5648c8ea) + * update dependency eslint to v8.32.0 (#11189) (56731d89) + * update dependency @apidevtools/swagger-parser to v9.0.1 (c1785080) + * update dependency eslint-plugin-import to v2.27.5 (f8461538) + * update dependency @commitlint/cli to v17.4.1 (#11137) (66b41d67) + * update dependency jsdom to v21 (#11134) (7905d573) + * update commitlint monorepo to v17.4.0 (#11123) (2ea1510f) + * update dependency husky to v8.0.3 (19c2b350) + * update dependency eslint to v8.31.0 (#11118) (8f83f790) + * update dependency jquery to v3.6.3 (#11107) (0665834d) + * update dependency eslint to v8.30.0 (#11102) (18bcc3cf) + * update dependency mocha to v10.2.0 (#11094) (ad96a4d8) + * update dependency lint-staged to v13.1.0 (#11082) (7a1c258d) + * update dependency eslint to v8.29.0 (#11074) (49143328) + * update dependency lint-staged to v13.0.4 (#11064) (ac14099b) +* up harmony (a405343d) +* up deps (1767fe3d) +* up composer (0962c063) +* up harmony (2c91c4e1) +* up harmony (cef9e791) +* up harmony (bea1826f) +* up harmony (52f32b0b) +* up widgets (22cb918c) +* up deps (445a4752) +* up composer (d1b9f83d) +* up harmony (d5636df2) +* up harmony (1fcbee0f) +* up harmony (4363c0bb) +* up harmony (24c24e6c) +* up harmony (eff9f98d) +* up harmony (9020cd40) +* up harmony (5dc1d6d5) +* up harmony (b912a132) +* up harmony (6962d206) +* rc.2 (654abb48) +* harmony beta.102 (3a50ad3a) +* up harmony (90e2e0bf) +* up harmony (0e3d34cc) +* up harmony (5cc1dd51) +* up harmony (e18d0df8) +* up harmony (4fb021a7) +* up harmony (ec106d91) +* up harmony (f1f32a47) +* up deps (08d159f5) +* up harmony (fe73c007) +* up harmony (764aca62) +* up harmony (2d75625b) +* up harmony (cc138c93) +* up harmony (a44f170a) +* up harmony (80f7dce8) +* remove logs (68db271d) +* up harmony (3f834480) +* up themes (7b7f473e) +* up harmony (361441bd) +* bump version tag for RC (e6e08d56) +* up harmony (4305c0a1) +* up rimraf to 4.x (#11377) (1502068e) +* up connect-redis to 7.x, drop node 14 (#11376) (fafa1304) +* up harmony (7d831f0b) +* up mongo deps (#11375) (5db037f1) +* add back missing dep upgrades (95ab5c41) +* fallbacks for new language string (830a20f1) +* up jquery (babe7fac) +* **i18n:** + * fallback strings for new resources: nodebb.topic (30234cf7) + * fallback strings for new resources: nodebb.error (026f2d94) + * fallback strings for new resources: nodebb.global (7ff9e494) + * fallback strings for new resources: nodebb.error (3bcfef5e) + * fallback strings for new resources: nodebb.recent (d1789206) + * fallback strings for new resources: nodebb.topic (04652ceb) + * fallback strings for new resources: nodebb.post-queue (eaa5454f) + * fallback strings for new resources: nodebb.user (92ec5bd9) + * fallback strings for new resources: nodebb.admin-settings-api (44c2d402) + * fallback strings for new resources: nodebb.admin-dashboard (58552300) + * fallback strings for new resources: nodebb.post-queue (7439d0a6) + * fallback strings for new resources: nodebb.error (7bc22a59) + * fallback strings for new resources: nodebb.admin-settings-user (0767ed57) + * fallback strings for new resources: nodebb.admin-settings-email (d8b45c61) + * fallback strings for new resources: nodebb.admin-settings-email (80cf05d8) + +##### Documentation Changes + +* update api introductions (5ab4d2fc) +* openapi schema for newly added routes (be323255) +* update readme with new screenshot and updated copy for Harmony (7599870f) +* fix openapi spec for new property in post queue route (ddd03248) + +##### New Features + +* add hits/sec for cache (94f2e508) +* i18n post-later (655a11d0) +* update mkdirp to 3.x, closes #11455 (132476d5) +* update rimraf to 5.x, closes #11456 (43c6087b) +* update lru-cache to 9.x, closes #11454 (c3cedefe) +* #11420, add new GET routes to retrieve pending and invited members of a group, plus accept/reject pending (0788fb51) +* fallbacks for social.json (ac2aefd8) +* add social.json #11419 (c22c6e12) +* allow multiple topic selects in topic-list (645ebec8) +* update thumbs modal styling (c0b62346) +* add support for selected topic count (69f24ed9) +* change chat notification delivery (2c5a5bf3) +* add placeholder for category search (9c0996e4) +* closes #11139, move sort settings to user settings page (77ddfc64) +* display when an api key was last used, in ACP, #10873 (40222984) +* log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper (efa64032) +* add rel="author" to topic route (4cf04f06) +* search dashboard time range (ebb5d2d2) +* allow file uploads on mobile chat (79731735) +* api v3 route to add email to user, optionally bypassing validation email, closes #11009 (fdc41646) +* fire filter:topics.getUnreadTids even if there are no urnead topics (b81fd81a) +* add force flag to plugin install in cli (#11089) (d447236b) +* update transifex config (for use with new cli) (21a366ec) +* integrating basic client-side form validity checking in settings v1 and v2 (07a3cee6) +* add ./nodebb install (6fe87975) + +##### Bug Fixes + +* bump mentions and harmony (d2066f59) +* #11512, filter by cid (e8fb6711) +* closes #11511, reset skin if it was removed from bootswatch (7d7904b0) +* closes #11508, update selector (9894d05f) +* add composer:showHelpTab to api (5c26cb58) +* numeric strings in mongo (#11498) (6bed65dd) +* regression in toolmodal category selector (91851364) +* don't crash if taskbar.tasklist is not defined yet (5feb509b) +* closes #11473, kudos to @pitaj (57d64b35) +* closes #11466 (59b14978) +* #11438, show flag history to mods (6eb1dd86) +* topic thumbnail removal error Relaxed DOM selector to accommodate changed tpl (70f4d7f0) +* upload modal error handler (dd8719a1) +* #11451 , use bookmark from localstorage for guests (2235f6c2) +* closes #11446, add alert-link to 403,404,400 messages (2830d681) +* closes #11447, fix timestamp of fork event (0cd657ff) +* #11440, update timestamp on lastpost button (0e5ae212) +* throw generic not-allowed error on groups.join if a non-owner tries to add another user to a group (0fc9fdd5) +* remove socketGroups.addMember; update admin checks to allow admin:groups privilege, hide add member controls if not admin (18447b06) +* remove socketGroups.kick (f043dcec) +* remove socketGroups.issueMassInvite (9d49ec60) +* handle client-side acceptAll and rejectAll (b53f92fa) +* use api routes for group accept/reject (34d99c15) +* updating user bookmark when entering topic at the end from teaser (cc1c493b) +* closes #11437, link to queued post from event (8680ea4d) +* direct replies on dynamic posts (5d9b23ca) +* topic labels on topics_list (2615192f) +* #11396, removal of base_templates_path variable (7cb2e02c) +* dont show search input if user doesn't have tag search priv (a83734fb) +* add missing delete (2a9b3ee4) +* buttons for post queue content editing (33ad5a72) +* #9397, trash the active session on account lockout, if there is one (03e05b51) +* #11381, bug where the call to `action:settings.sorted-list.itemLoaded` did not properly pass in the correct element (2614b95c) +* #11357 clear cache on thumb remove (1e7f32b1) +* missing postAtIndex handling (e6d7e55f) +* update main post timestamp when rescheduling (5a2c6c1c) +* add back req.query fallback for backwards compatibility (83d36336) +* update csrf parser to accept csrf_token form value if present (ea95668a) +* schema changes for #11206 (9007ace1) +* new language keys for #11206 (966724ad) +* remove unneeded assignment, as req and locals will not likely ever be completely reassigned (a69bc2cf) +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (0a691e67) +* relax selectors for client-side form validation so that all form elements are checked (52e7ad4d) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (13738888) +* replace input type number with text/pattern (cde4c6ac) +* **deps:** + * update dependency mkdirp to v3.0.1 (#11516) (f66eba29) + * update dependency semver to v7.5.0 (#11492) (a8a2ebbe) + * update dependency esbuild to v0.17.18 (#11509) (f0408ea9) + * update dependency nodebb-plugin-emoji to v5.0.6 (#11510) (04f77ada) + * update dependency postcss to v8.4.23 (#11504) (967b9840) + * update dependency ace-builds to v1.18.0 (#11505) (22f6b8f6) + * update dependency nodebb-plugin-2factor to v7.0.5 (#11495) (666fe04e) + * update dependency lru-cache to v9.0.3 (#11481) (d2b8512c) + * update dependency commander to v10.0.1 (#11486) (ba2b7f5b) + * update dependency ioredis to v5.3.2 (#11487) (90fca08e) + * update dependency postcss to v8.4.22 (#11488) (fe4e9383) + * update dependency esbuild to v0.17.17 (#11489) (4cd8c2ff) + * update dependency webpack to v5.79.0 (#11476) (455de50d) + * update dependency ace-builds to v1.17.0 (#11472) (550d125d) + * update dependency helmet to v6.1.5 (#11464) (4e5fbc54) + * update dependency sass to v1.62.0 (#11468) (c1164544) + * update dependency semver to v7.4.0 (#11461) (1ab7fdc8) + * update dependency rtlcss to v4.1.0 (#11460) (c0d92961) + * update dependency helmet to v6.1.4 (#11459) (415f8781) + * update dependency helmet to v6.1.3 (#11452) (d165164a) + * update dependency esbuild to v0.17.16 (#11457) (bdacd1c6) + * update dependency helmet to v6.1.1 (#11449) (5d880e9d) + * update dependency lru-cache to v8.0.5 (#11434) (d7125a0c) + * update dependency webpack to v5.78.0 (#11436) (62a84f63) + * update dependency sass to v1.61.0 (#11443) (248c5f62) + * bump mentions (f49fc5ca) + * update dependency mongodb to v5.2.0 (#11433) (4bede9fb) + * update dependency nodebb-plugin-composer-default to v10.0.44 (#11430) (569944f1) + * update dependency esbuild to v0.17.15 (#11429) (0187e177) + * update dependency nodebb-plugin-mentions to v4.0.5 (#11417) (1ac37b43) + * update dependency webpack to v5.77.0 (#11415) (e9039018) + * update dependency nodebb-rewards-essentials to v0.2.3 (#11406) (9f5dc9ad) + * update dependency nodebb-theme-persona to v13.0.55 (#11407) (609c0558) + * update dependency esbuild to v0.17.14 (#11399) (89060027) + * update dependency nodebb-theme-persona to v13.0.53 (#11401) (415da6c2) + * update dependency sharp to v0.32.0 (#11395) (b17ab944) + * update dependency esbuild to v0.17.13 (#11397) (4ab60c88) + * update dependency csrf-sync to v4.0.1 (#11398) (e753603e) + * update dependency @popperjs/core to v2.11.7 (#11394) (6947e60b) + * update dependency sass to v1.60.0 (#11391) (400a7abf) + * update dependency rimraf to v4.4.1 (#11388) (5d2900e9) + * update dependency @isaacs/ttlcache to v1.2.2 (#11389) (96305e12) + * update dependency html-to-text to v9.0.5 (#11390) (5a7104f1) + * update dependency helmet to v6 (#10891) (97f08135) + * update dependency nodebb-widget-essentials to v7.0.7 (#11387) (98b58bcc) + * update dependency mkdirp to v2.1.6 (#11386) (8c07a8d7) + * update dependency webpack to v5.76.3 (#11385) (7f54709d) + * update dependency fs-extra to v11.1.1 (#11380) (7c780210) + * update dependency commander to v10 (#11208) (a2d3f674) + * update dependency lru-cache to v8.0.4 (#11378) (238a7809) + * update dependency lru-cache to v8 (#11356) (0d236adf) + * update dependency ace-builds to v1.16.0 (#11372) (75436dc0) + * update dependency sass to v1.59.3 (#11373) (b0b060da) + * update dependency nodebb-plugin-spam-be-gone to v2.0.6 (#11370) (6edb908b) + * update dependency cron to v2.3.0 (#11368) (ae9d6d77) + * update dependency graceful-fs to v4.2.11 (#11367) (f90696de) + * update dependency esbuild to v0.17.12 (#11366) (2273a822) + * update dependency webpack to v5.76.2 (#11361) (a5f19ee6) + * update dependency webpack to v5.76.1 (#11348) (967c0ccf) + * update dependency autoprefixer to v10.4.14 (#11344) (5afea4b7) + * update dependency terser-webpack-plugin to v5.3.7 (#11345) (29fbecfc) + * update dependency webpack to v5.76.0 (#11341) (b543a0d0) + * update dependency nodebb-plugin-spam-be-gone to v1.0.3 (#11340) (5fa38fbe) + * update dependency pg-cursor to v2.9.0 (#11338) (34cf64f5) + * update dependency pg to v8.10.0 (#11337) (9a7f73ca) + * update dependency mkdirp to v2.1.5 (#11336) (a85276a6) + * update dependency lru-cache to v7.18.3 (#11335) (b70716f1) + * update dependency esbuild to v0.17.11 (#11333) (18b3ac6e) + * update dependency ace-builds to v1.15.3 (#11332) (b8efa466) + * update dependency mkdirp to v2.1.4 (#11330) (a6f22afa) + * update dependency lru-cache to v7.18.1 (#11327) (b526d42e) + * update dependency nodebb-plugin-mentions to v3.0.13 (#11320) (22a3ba65) + * update dependency yargs to v17.7.1 (#11316) (b75212f7) + * update dependency sanitize-html to v2.10.0 (#11319) (3d855842) + * update socket.io packages to v4.6.1 (#11318) (17c2467d) + * update dependency lru-cache to v7.17.0 (#11315) (4211e4dd) + * update dependency body-parser to v1.20.2 (#11313) (02d69920) + * update dependency esbuild to v0.17.10 (#11314) (865e1506) + * bump theme versions (c76e344f) + * update dependency lru-cache to v7.15.0 (#11305) (affac569) + * update dependency ace-builds to v1.15.2 (#11304) (01b2915e) + * update dependency nodebb-plugin-composer-default to v9.2.5 (#11301) (0ad5f476) + * update dependency logrotate-stream to v0.2.9 (#11300) (e29b9b1d) + * update dependency ace-builds to v1.15.1 (#11299) (1a0910bb) + * update dependency ioredis to v5.3.1 (#11294) (75bd6caa) + * update socket.io packages to v4.6.0 (#11272) (b9bb0532) + * update dependency html-to-text to v9.0.4 (#11290) (3ef49223) + * update dependency benchpressjs to v2.5.1 (#11270) (e4e01f47) + * update dependency esbuild to v0.17.8 (#11289) (2f5f47ea) + * update dependency @socket.io/redis-adapter to v8.1.0 (#11269) (7abcf80a) + * update dependency mongodb to v4.14.0 (#11271) (98395d18) + * update dependency esbuild to v0.17.6 (#11266) (145dcb2f) + * update dependency sanitize-html to v2.9.0 (#11261) (0e9cfcad) + * update dependency validator to v13.9.0 (#11262) (7cdbf77d) + * bump persona theme (5dc4d285) + * update dependency pg-cursor to v2.8.0 (#11236) (6c872a05) + * update dependency nodebb-rewards-essentials to v0.2.2 (#11234) (c271762c) + * update dependency pg to v8.9.0 (#11235) (972d1770) + * update dependency esbuild to v0.17.5 (#11233) (1a28598b) + * update dependency ace-builds to v1.15.0 (#11223) (9b34ab66) + * update dependency ioredis to v5.3.0 (#11224) (37493514) + * update dependency nodebb-theme-persona to v12.1.14 (#11221) (94074e90) + * update dependency nodemailer to v6.9.1 (#11222) (0e0176a1) + * update dependency mkdirp to v2 (#11211) (466c7a3a) + * update dependency ioredis to v5.2.6 (#11210) (557198a3) + * update dependency nodemailer to v6.9.0 (#11205) (69f4ff75) + * update dependency ioredis to v5.2.5 (#11187) (a2b00534) + * update dependency esbuild to v0.17.4 (#11204) (d0e3eadb) + * update dependency nodebb-theme-persona to v12.1.13 (2994c42b) + * update dependency @socket.io/redis-adapter to v8.0.1 (aa873e80) + * update dependency jsonwebtoken to v9 (79cd4a36) + * update dependency nodebb-plugin-2factor to v5.1.3 (8dc96894) + * update dependency cron to v2.2.0 (#11140) (aaf9abed) + * update dependency esbuild to v0.16.16 (#11135) (4b147ee2) + * update dependency commander to v9.5.0 (#11133) (aced93de) + * update dependency postcss to v8.4.21 (#11130) (aa6788b7) + * update dependency esbuild to v0.16.15 (#11132) (581960de) + * update dependency esbuild to v0.16.14 (#11127) (95897197) + * update dependency esbuild to v0.16.13 (#11121) (ca434647) + * update dependency esbuild to v0.16.12 (#11116) (e3fa0152) + * update dependency esbuild to v0.16.11 (0ec6d6c2) + * update dependency nodebb-theme-slick to v2.0.4 (#11113) (a634481b) + * update dependency esbuild to v0.16.10 (#11104) (048f5674) + * update dependency mongodb to v4.13.0 (#11105) (3f5bda7e) + * update dependency esbuild to v0.16.8 (#11101) (db7ea20c) + * update dependency sanitize-html to v2.8.0 (#11098) (65241b1a) + * update dependency ace-builds to v1.14.0 (#11095) (10056e5b) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (cc376656) + * update dependency postcss to v8.4.20 (#11097) (d4f04511) + * update dependency compare-versions to v5.0.3 (#11092) (32fecad7) + * update dependency html-to-text to v9.0.3 (#11093) (6aab1c58) + * update dependency @socket.io/redis-adapter to v8 (#11084) (a82c6743) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (6774b35f) + * update dependency esbuild to v0.16.7 (#11086) (27a049fb) + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (c749f38c) + * update dependency esbuild to v0.16.3 (#11083) (8eb880f6) + * update dependency html-to-text to v9 (#11075) (aa3a51b1) + * update dependency ace-builds to v1.13.2 (#11080) (67ede5c6) + * update dependency fs-extra to v11 (#11072) (fa3e6540) + * update dependency esbuild to v0.15.16 (#11069) (ced87417) + * update dependency mongodb to v4.12.1 (#11062) (3c5b0210) + * update dependency mongodb to v4.12.1 (#11062) (643dce38) + +##### Other Changes + +* //github.com/NodeBB/NodeBB/issues/11501 (2055aae1) +* //github.com/NodeBB/NodeBB/issues/11500 (9ec5f1f5) +* remove chalk (a0bac74e) +* //github.com/NodeBB/NodeBB/issues/11329 (661a6e04) +* satisfy lint errors (bb0397cb) + +##### Refactors + +* get rid of floats in deleted-message.tpl (f055b7fb) +* remove log, to much noise (9806d89f) +* group invitations; issuing, accepting, rejecting; now via API (18c45b44) +* replace rimraf glob doesn't work on windows (d36aad07) +* simple load new posts (45addcf5) +* post-queue frontend logic (ddcdaacc) +* `helpers.loginUser` to be fully async (fecdab8b) +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (14091de8) + +##### Tests + +* Blob doesnt exist in node 16 (3c6f225a) +* no need for this check (bb4be716) +* fix utils (eacbad7f) +* missing utils tests (699c3bdf) +* remove history test (9c162186) +* fix escaping (c5e83eb9) +* fix lang test (a8efe3df) +* fix openapi schema to reflect new route (92073cf2) +* fix broken test (38175b5e) + +#### v2.8.12 (2023-04-26) + +##### Chores + +* removing superfluous changelog items (5343d2a0) +* incrementing version number - v2.8.11 (2ec81eff) +* update changelog for v2.8.11 (f2ca93f6) +* incrementing version number - v2.8.10 (5b7c3671) +* incrementing version number - v2.8.9 (57f14e41) +* incrementing version number - v2.8.8 (b331b942) +* incrementing version number - v2.8.7 (3f8248d6) +* incrementing version number - v2.8.6 (af6ce447) +* incrementing version number - v2.8.5 (bff5ce2d) +* incrementing version number - v2.8.4 (a46b2bbc) +* incrementing version number - v2.8.3 (c20b20a7) +* incrementing version number - v2.8.2 (050e43f8) +* incrementing version number - v2.8.1 (727f879e) +* incrementing version number - v2.8.0 (8e77673d) +* incrementing version number - v2.7.0 (96cc0617) +* incrementing version number - v2.6.1 (7e52a7a5) +* incrementing version number - v2.6.0 (e7fcf482) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### New Features + +* name theme on error:theme-not-set-in-configuration (ae5afdbc) + +##### Bug Fixes + +* #11519, clear parent cache all the way to root (30b6bcfc) +* only remove deleted tag, closes #11515 (de2669a2) +* NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483) (c9311832) + +##### Tests + +* remove old comment (21fb8590) + +#### v2.8.11 (2023-04-11) + +##### Chores + +* incrementing version number - v2.8.10 (5b7c3671) +* update changelog for v2.8.10 (188ec62f) + +##### Continuous Integration + +* publish to ghcr instead of docker hub (c2756728) + +##### Documentation Changes + +* update readme with new screenshot and updated copy for Harmony (67055006) + +##### Bug Fixes + +* don't crash on objects with toString property (4d2d7689) +* fire action:user.online on user login (7397873d) + +##### Tests + +* update socket.io test (e0b20658) + +#### v2.8.10 (2023-03-27) + +##### Chores + +* up composer-default (e9a8e195) +* incrementing version number - v2.8.9 (57f14e41) +* update changelog for v2.8.9 (18b2150e) + +##### Bug Fixes + +* #11403, remove loader.js crash counter logic (830f142b) +* don't crash if event name is not a string (37b48b82) +* closes #11173, move cache clear code (c2961ad4) + +##### Other Changes + +* fix arrow (1aff9cad) +* whitespace (894f392b) + +#### v2.8.9 (2023-03-19) + +##### Chores + +* up cron (73a50d17) +* incrementing version number - v2.8.8 (b331b942) +* update changelog for v2.8.8 (c03d5db7) + +##### Bug Fixes + +* thumb remove on windows, closes #11357 (767c1d1f) +* #11357 clear cache on thumb remove (a3a38e4b) +* closes #11352, try/catch rss feeds (cfd50272) +* closes #11343, don't crash if tags array is empty (56427e4f) + +##### Code Style Changes + +* more fixes (93aa43f7) + +##### Tests + +* openapi for thumbs (9e685e65) + +#### v2.8.8 (2023-03-09) + +##### Chores + +* incrementing version number - v2.8.7 (3f8248d6) +* update changelog for v2.8.7 (2ca38e7b) + +##### Bug Fixes + +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (22fc8fe3) +* stop topic navigation hotkeys from firing if in a mousetrap-enabled form element (17d0b40e) +* tag filtering when changing filter to watched topics (1545223e) +* get cid from pid instead of passing in (f054a4f4) +* closes #11331, allow 0 length content if set to 0 in acp (8c762d32) + +#### v2.8.7 (2023-03-01) + +##### Chores + +* incrementing version number - v2.8.6 (af6ce447) +* update changelog for v2.8.6 (f3306d03) + +##### Documentation Changes + +* update openapi spec to include info about passing in timestamps for topic creation, removing timestamp as valid request param for topic replying (40e7b86d) + +##### Bug Fixes + +* display 25 topics on category feed (79155109) +* object destructuring overwriting type parameter (ec58700f) +* alert on page load (8cf4a6f6) +* show error alert if password change fails (3bd9a871) +* update main post timestamp when rescheduling (edd2fc38) +* show admins/globalmods if content is purged (326b9268) +* email expiry timestamps (e335d0f6) +* #11259, clean old emails when updating via admin (#11260) (845c8013) +* #11257, onSuccessfulLogin called with improper uid (7a5bcc21) + +##### Tests + +* add dummy emailer hook in authentication test (1b29dbb6) + +#### v2.8.6 (2023-02-03) + +##### Chores + +* **i18n:** fallback strings for new resources: nodebb.error (8335f90a) +* incrementing version number - v2.8.5 (bff5ce2d) +* update changelog for v2.8.5 (24e58c28) + +##### New Features + +* add sitemap filter hooks for categories/topic pages (bf92ee0e) +* closes #11241, add missing error lang keys (c241baf6) +* #11240, only show relevant users in flags assignee list (0713482b) + +##### Bug Fixes + +* #11254, return check for reroll property (202378b9) +* closes #11249, notification uses displayname (705cd13a) +* wrong link to topics in acp dashboard (b5598a6e) +* https://github.com/NodeBB/NodeBB/issues/11239 (1d3c0e5a) +* notif filter selecte field (6d819b05) + +##### Other Changes + +* remove unused (d68352cc) + +#### v2.8.5 (2023-01-27) + +##### Chores + +* incrementing version number - v2.8.4 (a46b2bbc) +* update changelog for v2.8.4 (c13f0e21) + +##### Bug Fixes + +* import resolution within plugin modules (#11219) (f6c96948) + +#### v2.8.4 (2023-01-26) + +##### Chores + +* incrementing version number - v2.8.3 (c20b20a7) +* update changelog for v2.8.3 (eb2841ee) + +#### v2.8.3 (2023-01-25) + +##### Chores + +* remove extraneous lines from changelog (48c9f447) +* incrementing version number - v2.8.2 (050e43f8) +* update changelog for v2.8.2 (66aa3169) + +##### Bug Fixes + +* import resolution within plugin modules (#11200) (89e059a0) +* #11195, allow users with admin:users privilege to delete users in acp (0bffd3d9) +* #11194, allow access to sub dashboard pages (7d04e952) +* #11136, tests, and returning the proper number of arrays (459bc523) +* #11136, only show mods of active categories when getModeratorUids is called (39e009c0) +* closes #11173, clear require cache if wrong dependency is installed (747cb1f0) +* **deps:** + * downgrade swagger-parser to v9 (00e48803) + * pinning sub dependency json-schema-ref-parser to 9.0.9 (9c250b78) + +##### Reverts + +* a788bd1344825ad4759e39d6e98d8bf3695bd639 (fecd84d1) +* 9c250b78b05ca2abf31a79971ed0c60ca07664ec, fix: comment out broken test for now (a788bd13) + +##### Tests + +* fix broken test (f295174e) + +#### v2.8.2 (2023-01-13) + +##### Chores + +* incrementing version number - v2.8.1 (727f879e) +* update changelog for v2.8.1 (d17d4ec0) + +##### Bug Fixes + +* move call to `filter:middleware.buildHeader` out of parallel so that req can be overridden by plugins prior to loading config (25ae58e8) + +#### v2.8.1 (2022-12-30) + +##### Chores + +* fallbacks for new language string (8a69e740) +* remove extraneous lines from changelog (bbaf26ce) +* incrementing version number - v2.8.0 (8e77673d) +* update changelog for v2.8.0 (a5c2edb9) + +##### Bug Fixes + +* vulnerability in socket.io nested namespaces (#11117) (586eed14) +* lock post/reply similar to user.create (1ea9481a) + +#### v2.8.0 (2022-12-21) + +##### Chores + +* **deps:** + * update dependency jquery to v3.6.3 (#11107) (13a3faa0) + * update dependency eslint to v8.30.0 (#11102) (485ee130) + * update dependency mocha to v10.2.0 (#11094) (c4cc1e61) +* up jquery (3e8f5378) +* remove extraneous lines from changelog (e213dbc3) +* incrementing version number - v2.7.0 (96cc0617) +* update changelog for v2.7.0 (4701c96d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (717b3612) + * fallback strings for new resources: nodebb.admin-settings-email (4f4b4800) + +##### New Features + +* add force flag to plugin install in cli (#11089) (de31cb1a) +* integrating basic client-side form validity checking in settings v1 and v2 (33af2d9c) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.31.3 (#11110) (ef500af8) + * update dependency sanitize-html to v2.8.1 (#11109) (7ab46b78) + * update dependency esbuild to v0.16.10 (#11104) (eb6a9c47) + * update dependency mongodb to v4.13.0 (#11105) (05443dbe) + * update dependency esbuild to v0.16.8 (#11101) (18ff6caa) + * update dependency sanitize-html to v2.8.0 (#11098) (faaf09f7) + * update dependency ace-builds to v1.14.0 (#11095) (cde44587) + * update dependency nodebb-plugin-2factor to v5.1.2 (#11096) (5dda9a5b) + * update dependency postcss to v8.4.20 (#11097) (0a5adb41) + * update dependency compare-versions to v5.0.3 (#11092) (8b209f16) + * update dependency html-to-text to v9.0.3 (#11093) (7bcfe38e) + * update dependency @socket.io/redis-adapter to v8 (#11084) (7b9bbef5) + * update dependency nodebb-widget-essentials to v6.0.1 (#11085) (7b48156c) + * update dependency esbuild to v0.16.7 (#11086) (65ef722e) + * update dependency esbuild to v0.16.3 (#11083) (4f67fc1a) + * update dependency esbuild to v0.15.16 (#11069) (22493ffb) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (896493db) +* replace input type number with text/pattern (2bc23a95) + +##### Refactors + +* flag states so that they are not hardcoded, allow plugins to add additional states, deprecated filter:flags.getFilters hook, closes #11065 (9f531f95) +* remove debug log closes #11090 (06f4801e) + +#### v2.7.0 (2022-12-14) + +##### Chores + +* added stub file in hy (9ee8502d) +* **deps:** + * update dependency lint-staged to v13.1.0 (#11082) (693d4783) + * update dependency eslint to v8.29.0 (#11074) (eab5b754) + * update dependency lint-staged to v13.0.4 (#11064) (f947ac6d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (0e319a58) + * fallback strings for new resources: nodebb.admin-settings-email (9676b192) + +##### New Features + +* update transifex config (for use with new cli) (f11094cb) +* integrating basic client-side form validity checking in settings v1 and v2 (dadbcd73) +* add ./nodebb install (4efc19d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-lavender to v6.0.1 (#11081) (df3f1c5e) + * update dependency esbuild to v0.16.3 (#11083) (85d38158) + * update dependency html-to-text to v9 (#11075) (d8e9738d) + * update dependency ace-builds to v1.13.2 (#11080) (35be4594) + * update dependency fs-extra to v11 (#11072) (aafb7f6e) + * update dependency esbuild to v0.15.16 (#11069) (7bc4b836) + * update dependency mongodb to v4.12.1 (#11062) (e14d4abc) +* relax selectors for client-side form validation so that all form elements are checked (43e7c988) +* change hsts-maxage back to numeric input type, change API token uid input to numeric text type (db8d3a94) +* replace input type number with text/pattern (45ae31f8) +* categories.js not showing custom privileges (#10856) (8c4d6bbe) +* #11077, add admin uploads paths to priv mapping (07a02125) + +##### Tests + +* dont try to load admin upload routes (c2bb2b30) + +#### v2.6.1 (2022-11-28) + +##### Chores + +* incrementing version number - v2.6.0 (e7fcf482) +* update changelog for v2.6.0 (eedd84ae) +* incrementing version number - v2.5.8 (dec0e7de) +* incrementing version number - v2.5.7 (5836bf4a) +* incrementing version number - v2.5.6 (c7bd7dbf) +* incrementing version number - v2.5.5 (3509ed94) +* incrementing version number - v2.5.4 (e83260ca) +* incrementing version number - v2.5.3 (7e922936) +* incrementing version number - v2.5.2 (babcd17e) +* incrementing version number - v2.5.1 (ce3aa950) +* incrementing version number - v2.5.0 (01d276cb) +* incrementing version number - v2.4.5 (dd3e1a28) +* incrementing version number - v2.4.4 (d5525c87) +* incrementing version number - v2.4.3 (9c647c6c) +* incrementing version number - v2.4.2 (3aa7b855) +* incrementing version number - v2.4.1 (60cbd148) +* incrementing version number - v2.4.0 (4834cde3) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Documentation Changes + +* remote extraneous lines from changelog (8a15e58d) + +##### Bug Fixes + +* prototype vulnerability in socket.io onMessage (48d14392) +* #11066, fix custom privilege/path in routePrefixMap (0e495f9e) + +##### Refactors + +* not deprecated on 2.x (91c2e5ac) + +#### v2.6.0 (2022-11-23) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-advanced (1d7dbf14) + * fallback strings for new resources: nodebb.admin-settings-advanced (05b6758e) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.admin-settings-email (9ad3b214) +* **deps:** + * update commitlint monorepo to v17.3.0 (#11058) (f4784205) + * update dependency eslint to v8.28.0 (#11059) (d480f26b) + * update dependency jsdom to v20.0.3 (#11054) (5750ded1) + * update dependency jquery to v3.6.1 (#11048) (6611d44c) + * update dependency eslint-config-nodebb to v0.2.1 (#11043) (07c81d5d) + * update commitlint monorepo to v17.2.0 (#11026) (26be289e) + * update dependency husky to v8.0.2 (#11018) (4b3978be) + * update dependency eslint to v8.27.0 (#11004) (4fcef7c5) + * update dependency jsdom to v20.0.2 (#11014) (a6e4fee1) + * update dependency mocha to v10.1.0 (#10980) (ffa117ab) + * update dependency eslint to v8.25.0 (3719233a) + * update dependency jsdom to v20.0.1 (#10934) (241b7c4f) + * update dependency eslint to v8.24.0 (#10922) (8bcbff33) + * update commitlint monorepo (#10888) (3f30056a) + * update postgres docker tag to v14 (#10829) (5aa55d29) + * update dependency eslint to v8.23.1 (#10885) (0c6fb6e3) +* remove derpy extra changelog bits (445f09f0) +* incrementing version number - v2.5.8 (dec0e7de) +* update changelog for v2.5.8 (c9cd8975) + +##### New Features + +* add permissions-policy header (864fe0f9) +* allow groups to be exempt from maintenance mode (3c85b944) +* add search data to filter:search.inContent (be92be4e) +* add relevant topic events to post objects (a584dae6) +* client-side hooks for navigator scroll action (135fe55b) +* j and k hotkeys in topic to navigate through it quickly (aeb94c32) +* a couple utility methods in navigator module to get and set count and index (9f9a835f) +* paginate recentposts.rss and (ebd7c05c) +* add quiet to action:settings.set (665f36b7) + +##### Bug Fixes + +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (110311b2) +* https://github.com/NodeBB-Community/nodebb-plugin-custom-pages/issues/68 (fc49665f) +* #11052, add missing await (bb82eb71) +* pin jquery version for all packages that include it as a subdependency (a87f64b4) +* #10877, define a resolution for jquery subdependency of timeago (5aaebdd3) +* #11044, allow banned users to post (abcfb631) +* check schedule privilege, closes #11032 (61090615) +* mixing of old and new bch syntax (1e484643) +* category ordering add test (61d32bde) +* use `--omit=dev` flag for npm instead of `--production` (53d47a58) +* update nav thumb on setIndex call (thx @barisusakli) (664bc5f5) +* do not call `navigator.update()` when `scrollToElement` is explicitly passed a new index value (b7287c1e) +* race condition where `navigator.update` was called when it should not be (fa643eb8) +* be tidier and explicitly clean up ctrl-f hotkey on topic page (5b9de0e5) +* listen to -d flag on cli upgrade (fe249fa5) +* automatically remove `lang` parameter if it matches the forum default (881c7c4d) +* **deps:** + * update socket.io packages to v4.5.4 (#11061) (709ca59d) + * update dependency esbuild to v0.15.15 (#11056) (d449710e) + * update dependency nodebb-theme-persona to v12.1.12 (#11057) (18eb35a1) + * update dependency cropperjs to v1.5.13 (#11055) (13f3a048) + * update dependency nodebb-plugin-markdown to v10.1.1 (#11047) (62a60cbf) + * update dependency mongodb to v4.12.0 (#11049) (59b4d95f) + * update dependency connect-pg-simple to v8 (#11033) (ca162c04) + * update dependency ace-builds to v1.13.1 (#11045) (e0b9240d) + * update dependency esbuild to v0.15.14 (a5355d78) + * update dependency nodebb-theme-persona to v12.1.11 (2af7fd5f) + * update dependency postcss to v8.4.19 (#11028) (b94bb1bf) + * update dependency ace-builds to v1.13.0 (#11031) (313d0c32) + * update dependency webpack to v5.75.0 (#11027) (40c9cc05) + * update dependency yargs to v17.6.2 (#11025) (8d3907b5) + * update dependency lru-cache to v7.14.1 (#11023) (1ea2a32b) + * update dependency sharp to v0.31.2 (#11024) (51919f7a) + * update dependency esbuild to v0.15.13 (#11021) (c4a1905b) + * update dependency ioredis to v5.2.4 (#11022) (e144debb) + * update dependency ace-builds to v1.12.5 (#11019) (de507f72) + * update dependency mongodb to v4.11.0 (#10994) (9ca2482a) + * update dependency autoprefixer to v10.4.13 (#11020) (35d67ad3) + * update dependency nodebb-plugin-composer-default to v9.2.4 (#10998) (5a5771e1) + * update dependency sanitize-html to v2.7.3 (#11008) (73a60854) + * update dependency nodebb-plugin-composer-default to v9.2.3 (#10997) (ee4fde13) + * update dependency esbuild to v0.15.12 (#10996) (29fddd65) + * update dependency nodebb-plugin-composer-default to v9.2.2 (1fc2f1e8) + * update dependency nodebb-theme-persona to v12.1.9 (6471b698) + * bump composer-default (7b9e0847) + * update dependency ace-builds to v1.12.3 (1e930f9d) + * update dependency nodebb-theme-persona to v12.1.8 (#10982) (9900e5f4) + * update dependency ace-builds to v1.12.2 (4260f0c2) + * update dependency ace-builds to v1.12.1 (6485bc25) + * update dependency ace-builds to v1.12.0 (#10978) (00ce8fd8) + * update socket.io packages to v4.5.3 (#10977) (fb41fbe7) + * update dependency nodebb-plugin-emoji to v4.0.6 (dcca3397) + * update dependency esbuild to v0.15.11 (ff69c3e1) + * update dependency @isaacs/ttlcache to v1.2.1 (647bbd57) + * update dependency nodebb-plugin-mentions to v3.0.12 (60d0145b) + * update dependency postcss to v8.4.18 (3c2a636c) + * update dependency nodebb-plugin-spam-be-gone to v1.0.2 (#10958) (b68faa09) + * update dependency body-parser to v1.20.1 (#10941) (0f63947b) + * update dependency express to v4.18.2 (#10948) (ff53064c) + * update dependency semver to v7.3.8 (#10937) (1b89b661) + * update dependency nodebb-theme-persona to v12.1.7 (1873b527) + * update dependency commander to v9.4.1 (#10928) (855a2bad) + * update dependency postcss to v8.4.17 (#10929) (d84ee308) + * update dependency nodemailer to v6.8.0 (#10925) (222ab6ae) + * update dependency yargs to v17.6.0 (#10931) (7c3c3d02) + * update dependency nodebb-plugin-spam-be-gone to v1.0.1 (#10912) (28d1844e) + * update dependency ace-builds to v1.11.2 (#10923) (87c84fe8) + * update dependency sharp to v0.31.1 (#10926) (8e23e410) + * update dependency ace-builds to v1.11.1 (#10920) (ce77605a) + * update dependency ace-builds to v1.11.0 (#10909) (d900fd17) + * update dependency autoprefixer to v10.4.12 (#10911) (54294871) + * update dependency compare-versions to v5 (#10890) (f971385b) + * bump persona #10907 (846eda0a) + * bump persona, #10907 (27c80d39) + * update dependency mongodb to v4.10.0 (#10908) (bbe7f779) + * update dependency nodebb-theme-persona to v12.1.3 (#10903) (0debc51b) + * update dependency nodebb-plugin-2factor to v5.1.1 (02fe6875) + * update dependency nodebb-theme-persona to v12.1.2 (425bf87b) + * update dependency sanitize-html to v2.7.2 (#10893) (bfeb0368) + * update dependency autoprefixer to v10.4.11 (#10892) (0758655a) + * update dependency sharp to v0.31.0 (#10887) (2836be5c) + * update socket.io packages to v4.5.2 (#10884) (22f3d0bb) + * update dependency nodebb-plugin-2factor to v5.1.0 (#10886) (335990be) + * update dependency autoprefixer to v10.4.10 (#10883) (0c2a88de) + * update dependency winston to v3.8.2 (#10882) (d911a1bf) + * update dependency pg to v8.8.0 (#10863) (01129a39) + * update dependency nodebb-plugin-emoji to v4.0.5 (#10881) (34d243e4) + * update dependency ioredis to v5.2.3 (#10861) (5e375e4a) + * update dependency pg-cursor to v2.7.4 (#10862) (86b63fab) + * update dependency mongodb to v4.9.1 (#10880) (5583ab95) + * update dependency autoprefixer to v10.4.9 (#10879) (cc6798bb) + * update dependency postcss to v8.4.16 (#10824) (8c680db5) + * update dependency jquery to v3.6.1 (#10868) (6687f49b) + * update dependency ace-builds to v1.10.1 (#10840) (c0c3ee01) + * bump composer-default to v9.2.0 (29ddeaa1) + +##### Refactors + +* don't prevent startup if staticDir is undefined (b34e859c) +* added new ajaxify method .cleanup, called before ajaxify.start. (3700174c) + +#### v2.5.8 (2022-11-09) + +##### Chores + +* really fix indents this time (c2024f34) +* fix indents (d50512e7) +* add bootstrap5 to test runner for now (be5d6d29) +* incrementing version number - v2.5.7 (5836bf4a) +* update changelog for v2.5.7 (17e948ab) + +##### New Features + +* new search hooks (b5d38bc6) +* add search data to filter:search.inContent (e3f21562) + +##### Bug Fixes + +* pass csrf_token into calls to /register/abort, #11017 (2f9d8c35) +* check for csrf token on /register/abort, + theme changes for v2.x branches of themes (55a197a7) +* upgrade script to work from 0.x to 2.x (a31ba824) +* #10519, image height in emails (673261ff) +* fallback language strings for #10987 (b9c8c02f) +* #10993, apply autoLocale middleware to guests only (6f673f80) +* check cid as well as template (9227b82e) +* revert breaking change, add back SocketUser.emailConfirm (9ee30fe7) +* in appropriately named language key `email-confirm-email2` (09f3ac65) +* correctly pass dev flag to package installer (7672194c) +* use `--omit=dev` flag for npm instead of `--production` (09cfd0bd) + +##### Refactors + +* use utils.debounce (d264c6ac) + +##### Tests + +* fix tests again (06d15391) +* fix test (c833d3cd) + +#### v2.5.7 (2022-10-14) + +##### Chores + +* incrementing version number - v2.5.6 (c7bd7dbf) +* update changelog for v2.5.6 (e92238d0) + +##### Performance Improvements + +* speed up build (dd4e9cce) + +#### v2.5.6 (2022-10-13) + +##### Chores + +* incrementing version number - v2.5.5 (3509ed94) +* update changelog for v2.5.5 (e7d0040d) + +##### Bug Fixes + +* use admin:groups priv for groups (#10960) (b879b6a0) +* https://github.com/NodeBB/NodeBB/issues/10525 (e35b0a86) + +#### v2.5.5 (2022-10-11) + +##### Chores + +* up plugins (b91ef6dd) +* incrementing version number - v2.5.4 (e83260ca) +* update changelog for v2.5.4 (aabf073c) + +#### v2.5.4 (2022-10-11) + +##### Chores + +* 🤔 (7240e8ce) +* incrementing version number - v2.5.3 (7e922936) +* update changelog for v2.5.3 (fdf240f6) + +##### Continuous Integration + +* add minimum GitHub token permissions for workflows Signed-off-by: Ashish Kurmi (fe0020fb) + +##### Bug Fixes + +* EEXISTS error on linux if plugin/theme overrides core js file (ebd5dcc6) +* category ordering add test (177d9048) +* crash in category drag, closes #10932 (989b55d0) +* broken flag history on flag update (803398e9) +* scroll to post if theme doesn't have top navbar (aad0a618) +* add lru-cache to checked packages, to fix upgrade issue with lru-cache (14515f60) + +#### v2.5.3 (2022-09-19) + +##### Chores + +* remove duplicate version increment lines in changelog (5dbcfef9) +* bring back treding plugins (8aa1596d) +* incrementing version number - v2.5.2 (babcd17e) +* update changelog for v2.5.2 (84b6a7c7) + +##### New Features + +* store topic title and tags in diffs (#10900) (b5dd89e1) + +##### Bug Fixes + +* #10906, allow `middleware.checkAccountPermissions` to be called with either uid or userslug in params (cf4f5447) +* #10896, unescape / in taskbar (8e2129f8) +* add back timeago to post history modal (d3e38df8) +* **deps:** bump composer-default to v9.1.1 (1d80a07e) + +##### Other Changes + +* fix lint (3d5a6b39) + +##### Performance Improvements + +* disable trending plugins, too slow due to nbbpm (b392450c) + +##### Tests + +* add back /admin/extend/plugins test (1c9c39a8) + +#### v2.5.2 (2022-09-04) + +##### Chores + +* incrementing version number - v2.5.1 (ce3aa950) +* update changelog for v2.5.1 (2b2fd4f3) + +##### Bug Fixes + +* registration regression, closes #10875 (f6f37dc1) + +##### Other Changes + +* fix lint error (b45e2413) + +##### Tests + +* disable nbbpm test temporarily (1dc79d76) + +#### v2.5.1 (2022-09-02) + +##### Chores + +* incrementing version number - v2.5.0 (01d276cb) +* update changelog for v2.5.0 (1076285d) + +##### Bug Fixes + +* missing escape on ACP category backgroundImage property (67cb7035) +* **deps:** temporarily add back old textcomplete dependencies so emoji plugin can import them (61d1e9e0) + +#### v2.5.0 (2022-09-01) + +##### Breaking Changes + +* reduce nodebb.min.js size by around 800kb (b7addffc) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation (e20433ec) + * fallback strings for new resources: nodebb.admin-settings-post (fcbbb4d6) + * fallback strings for new resources: nodebb.admin-advanced-cache (90fc50e1) +* move @textcomplete and its modules to composer-default (3cbb7a3d) +* remove client-side js file for tpl that no longer exists (bc2ea860) +* incrementing version number - v2.4.5 (dd3e1a28) +* update changelog for v2.4.5 (d505cc47) + +* **deps:** + * update dependency eslint to v8.22.0 (#10835) (8fce68d3) + * update mongo docker tag to v3.7 (8afaed22) + * update docker/setup-qemu-action action to v2 (4aecf399) + * update redis docker tag to v2.8.23 (#10811) (269382e0) + * update redis docker tag to v2.8.23 (#10811) (59fd0efe) + +##### Documentation Changes + +* **openapi:** v3 spec for new user export routes (70652ad4) + +##### New Features + +* remove visibilityjs (#10870) (19207325) +* introduce ACP defined option to rescind notif or do nothing on flag resolve/reject (15b1561f) +* allow v3 api to handle 202 and 204 response codes as well. (0cda5aa3) +* don't show signatures again in pagination mode in same topic (0a6900fc) +* setting to show signatures only once in topics, closes #10071 (aba420a3) +* add event type to topic event component (bcb94ede) +* allow plugins to add to admin cache list (#10833) (a9bbb586) + +##### Bug Fixes + +* **deps:** + * update dependency compare-versions to v4.1.4 (884d4075) + * update dependency mongodb to v4.9.0 (e51004e2) + * update dependency lru-cache to v7.14.0 (d8a52f81) + * bump composer-default to v9 (81f8d84f) + * remove textcomplete in favour of @textcomplete/core (same package, just refactored) (b7bcc367) + * update dependency nodebb-theme-persona to v12.1.1 (#10838) (444b4d57) + * update dependency ace-builds to v1.9.5 (4c44d125) + * update dependency lru-cache to v7.13.2 (4ddc0c7a) + * update dependency nodemailer to v6.7.8 (dd385184) + * pin dependency @isaacs/ttlcache to 1.2.0 (150a7488) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (9a7dd3a3) + * update dependency nodebb-plugin-composer-default to v8.0.1 (#10819) (69c87c2c) +* empty thread tools container on open (a088eb19) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (c1936e87) +* empty thread tools container on open (df36d967) +* add dropup handler to thread tools menu, updated how post tools menu adds dropup handler (3dd3cd82) +* removing duplicate session rerolling code (as it is in passport@^0.6 now) (65b3996a) +* don't crash if post is undefined (e06e526e) +* return at least one in sizeCalculation (#10832) (3975fa2e) + +##### Refactors + +* remove console.log (a2d0cd16) +* move export generation logic to v3 controller, GET/HEAD routes for exports (d0570518) +* use group.slug on acp group urls closes #8277 (14c79763) + +##### Tests + +* have some build tests not pollute build folder (7c5a915d) +* User.hidePrivateData (b424ba46) +* passport0.6 (#10638) (33458701) + +#### v2.4.5 (2022-08-22) + +##### Chores + +* incrementing version number - v2.4.4 (d5525c87) +* update changelog for v2.4.4 (77e492b8) + +##### Bug Fixes + +* wrap passport.authenticate to pass in keepSessionInfo if not already set (9b96c33d) +* parseInt caller.uid closes #10849 (bc37a5c5) + +#### v2.4.4 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.3 (9c647c6c) +* update changelog for v2.4.3 (06da15a5) + +##### Bug Fixes + +* missing req, closes #10847 (489fb3a3) + +#### v2.4.3 (2022-08-18) + +##### Chores + +* incrementing version number - v2.4.2 (3aa7b855) +* update changelog for v2.4.2 (ba7a3466) + +##### Bug Fixes + +* #10845, disallow inline viewing of uploaded html files (4dc7fa05) + +#### v2.4.2 (2022-08-17) + +##### Chores + +* incrementing version number - v2.4.1 (60cbd148) +* update changelog for v2.4.1 (4b6baabb) + +##### Documentation Changes + +* explain what export routes actually do in OpenAPI documentation (#10836) (72e7b9f7) + +##### Bug Fixes + +* #10841, incorrect conditional in email interstitial partial (ec048a01) +* don't crash if post is undefined (4a3e36a7) + +##### Tests + +* passport0.6 (#10638) (6b2a6f90) + +#### v2.4.1 (2022-08-14) + +##### Chores + +* **deps:** + * update docker/build-push-action action to v3 (bfd6318c) + * update docker/login-action action to v2 (3d68accf) + * update docker/setup-buildx-action action to v2 (371ac032) +* incrementing version number - v2.4.0 (4834cde3) +* update changelog for v2.4.0 (c4714ff7) + +##### Bug Fixes + +* return at least one in sizeCalculation (#10832) (15ca460c) + +#### v2.4.0 (2022-08-10) + +##### Chores + +* **deps:** + * update dependency eslint to v8.21.0 (13a17bd1) + * bump commander from 7.2.0 to 9.4.0 in /install (993b7747) +* update to new transifex project url (659cfe85) +* re-order interstitial tests so email and gdpr tests are in sub-blocks (342cca35) +* opt-out of dependabot, due to conflicts with renovate (70d60289) +* incrementing version number - v2.3.1 (d2425942) +* update changelog for v2.3.1 (2f487175) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email (cdaa8f21) + * fallback strings for new resources: nodebb.admin-settings-email (3e56c547) + * fallback strings for new resources: nodebb.user (bcf7ef67) + +##### New Features + +* support packageManager property in package.json (b3a37a7f) +* automatically enable the SMTP transport option if the SMTP service is changed (4055e3bd) +* present a password challenge on email update flow (7fcee42b) +* add client side filter:chat.send, closes #10729 (cb084cbd) +* fire hook to allow plugins to filter the pids returned in a user profile (17e44ff5) +* closes #10719, don't trim children if category is marked section (be917e8d) +* closes #10719, don't trim children if category is marked section (0bec52bc) + +##### Bug Fixes + +* adapt to breaking change in commander (38bf30c8) +* move panel-offset setting code back to theme header (d0255fc6) +* #10808; tweak copy for gmail app passwords support (7082291b) +* don't require password challenge if no password is set in user account (9d27e907) +* do not throw if password passed into `isPasswordCorrect` is invalid, just return false (287f4c2c) +* don't crash if req.body.username is not string (7e8ad785) +* don't crash if target/user is undefined (55c5588a) +* race condition causing undefined ajaxify.data (4586f68e) +* #10809, test runner to only run tests for plugins included in `test_plugins` (1ca09b63) +* #10805, hide unconfirmed emails from user data retrieval methods (cba9047f) +* use different emoji on NodeBB Ready — again because procrastination (3e062a7f) +* unnecessary escape (cd438b32) +* remove socket.io cluster adapter (#10742) (456b8798) +* #10783, do not purge files without a timestamp prefix (dc3a6a29) +* **deps:** + * bump persona v12.1.0 (1465598d) + * bump 2factor to v5.0.2 (bd18004d) + * update dependency sanitize-html to v2.7.1 (#10792) (f02492bd) + * update dependency html-to-text to v8.2.1 (f22790c0) + * update dependency webpack to v5.74.0 (e748e31f) + * update dependency autoprefixer to v10.4.8 (#10799) (4ca0d571) + +##### Performance Improvements + +* make single db call (d73f0f9c) + +##### Tests + +* additional tests for password challenge on email update (65c59cc1) +* add dummy emailer hook to suppress sendmail error logging (8e1a4bb5) +* fix one last failing test (68bcd7f4) +* fix user email tests (06f089af) +* fix tests so that when user.create is called, email is set prior to confirmation (f93a0b83) + +#### v2.3.1 (2022-07-29) + +##### Chores + +* **deps:** + * bump sanitize-html from 2.7.0 to 2.7.1 in /install (7b606d2e) + * bump webpack from 5.73.0 to 5.74.0 in /install (a9900625) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-advanced, nodebb.admin-menu, nodebb.error (17120e03) +* incrementing version number - v2.3.0 (046ea120) +* update changelog for v2.3.0 (a6f7fff0) + +##### New Features + +* add emoji to startup logs, because procrastination. (5176fb15) + +##### Bug Fixes + +* #10798, logic error in COEP header; helmet config (89173f17) +* #10795, early return for selection tooltip based on calling user privilege (847d2b91) +* **deps:** update persona to v12.0.14 (9f225e70) + +#### v2.3.0 (2022-07-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v13 (07ce0c39) + * bump ace-builds from 1.7.1 to 1.8.1 in /install (f397d968) + * bump ioredis from 5.2.0 to 5.2.2 in /install (067a5110) +* have renovate work off of `develop` branch instead (f334e398) +* update changelog for v2.2.5 (6c3ebf3b) + +##### New Features + +* add client side filter:chat.send, closes #10729 (b2da02d6) +* UI changes for ACP > Manage > Categories (#10782) (820bc994) +* show an informative message when no plugins are found after filtering (6840a742) +* Allow defining active plugins in config (#10767) (23cb67a1) +* allow plugins to toggle whether IPs are shown in the users CSV export (a6af47da) +* fire hook to allow plugins to filter the pids returned in a user profile (c26be43a) +* closes #10719, don't trim children if category is marked section (7e80cc10) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.8.1 (8384b7cf) + * update dependency helmet to v5.1.1 (03a173bb) +* bug where fallback to forum search was not working due to client-side error (25046642) +* better looking placeholder text for ACP search (1b9c6819) +* use `user.hidePrivateData();` more consistently across user retrieval endpoints (0529f2fb) +* minor margin tweak for alert in acp header (4faf0cdf) +* cannot turn off all networks (bbc7f2af) +* cannot setting networks for sharing posts (2e088a8e) + +##### Refactors + +* invert helmet configuration (dcacd815) + +#### v2.2.5 (2022-07-21) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.19.0 to 8.20.0 in /install (8d109fef) + * bump @commitlint/config-angular in /install (2a88a50f) +* **deps:** + * bump cron from 2.0.0 to 2.1.0 in /install (4c1bda32) + * bump jquery-ui from 1.13.1 to 1.13.2 in /install (abb19e98) + * bump nodebb-theme-persona in /install (9e52b8c6) + * bump ioredis from 5.1.0 to 5.2.0 in /install (8c20fdad) +* incrementing version number - v2.2.4 (d1d63e6b) +* update changelog for v2.2.4 (52f7ed64) +* incrementing version number - v2.2.3 (f80476b9) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* expire email validation tokens on password change (c93bd010) +* remove extraneous console.log (0d58e8a6) +* **deps:** update dependency mongodb to v4.8.0 (bff239da) + +#### v2.2.4 (2022-07-12) + +##### Chores + +* **deps:** + * update docker/metadata-action action to v4 (42a45a71) + * bump ace-builds from 1.5.3 to 1.7.1 in /install (d568d2f5) + * bump winston from 3.8.0 to 3.8.1 in /install (26b73b39) + * bump ioredis from 5.0.6 to 5.1.0 in /install (0d55c42d) + * bump nodemailer from 6.7.5 to 6.7.7 in /install (bd37b286) +* **deps-dev:** + * bump @commitlint/cli from 17.0.2 to 17.0.3 in /install (9e44cdad) + * bump eslint from 8.18.0 to 8.19.0 in /install (7139ad5f) +* incrementing version number - v2.2.3 (f80476b9) +* update changelog for v2.2.3 (8719a93f) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* **deps:** update dependency diff to v5.1.0 (452e5bf7) +* #10733, extraneous apostrophes in plugin upgrader (3c41ae04) +* get version from install/package.json instead (60114219) +* #10739, always re-add theme to active plugins, on theme set (8d701ec3) + +#### v2.2.3 (2022-07-05) + +##### Chores + +* incrementing version number - v2.2.2 (343ffa66) +* update changelog for v2.2.2 (f59ddc34) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* move call to `ajaxify.parseData` out to root level (b778e38c) +* move `ajaxify.parseData` back out to DOMContentLoaded (2582cb53) + +##### Refactors + +* rewrite ajaxify.parseData in vanilla (165b804d) + +#### v2.2.2 (2022-06-30) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0) + * bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9) +* incrementing version number - v2.2.1 (efc77b2a) +* update changelog for v2.2.1 (667780cf) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73) +* observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce) + +##### Refactors + +* allow user.hidePrivateData() to handle an array of `userData` (3f5ae893) + +#### v2.2.1 (2022-06-24) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (da481163) + * fallback strings for new resources: nodebb.admin-settings-advanced (34d75e96) +* add in warning in language directories about not editing files directly (06074e8c) +* incrementing version number - v2.2.0 (eecb836d) +* update changelog for v2.2.0 (bb3766df) + +##### Documentation Changes + +* remove the redundant security policy template (7f5b285e) + +##### New Features + +* cross origin opener policy options (#10710) (88132358) + +##### Bug Fixes + +* **deps:** + * update dependency winston to v3.8.0 (#10725) (d4a5039e) + * update dependency sharp to v0.30.7 (#10724) (0a07c2c0) +* handle ENOENT on file deletion, closes #10645 (43f9e6c8) + +##### Tests + +* fix i18n tests (05c30677) + +#### v2.2.0 (2022-06-15) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (f5afb5c3) + * fallback strings for new resources: nodebb.admin-manage-users (b1dc0531) + * fallback strings for new resources: nodebb.topic (d7d32a8a) +* remove unnecessary `affected` set from deprecated plugin hook (bef236f3) +* bump persona, #10699 (c7fa73b1) +* bump vanilla (d90fc18b) +* bump persona, closes #10566 (5bc972df) +* update changelog for v2.1.1 (ca038b84) +* **deps:** + * bump less from 4.1.2 to 4.1.3 in /install (#10685) (78322636) + * bump nodebb-plugin-2factor from 5.0.0 to 5.0.1 in /install (#10686) (701d8d76) + * bump spdx-license-list from 6.5.0 to 6.6.0 in /install (c82d34c8) + +##### New Features + +* new cronjob and ACP option to delete orphans after configurable number of days, closes #10659 (88aee439) +* allowed plugins to modify email verification details prior to db saving or email send/plugin fire (b9d4724e) +* pass absolute url to post into post tools response, #10566 (ece733ed) + +##### Bug Fixes + +* no need to pass in empty Set in deprecated hooks (3a015eb8) +* #10696, fix alert for password reset email (2da188fe) +* #10692 (b6f8e2fd) +* #10690, all uploads in `uploads/files` showing orphaned (a04da673) +* bug where post associations are not shown when the directory is `files` (7f870beb) + +##### Refactors + +* move orphan cleaning logic to its own method, added tests for getOrphans and cleanOrphans (22368b99) + +##### Tests + +* add more asserts to failing test (ea1ed667) + +#### v2.1.1 (2022-06-08) + +##### Chores + +* **deps:** + * bump nodebb-theme-persona from 12.0.8 to 12.0.9 in /install (bb39dfba) + * bump mongodb from 4.6.0 to 4.7.0 in /install (a8987856) + * bump async from 3.2.3 to 3.2.4 in /install (ce38f711) + * bump xregexp from 5.1.0 to 5.1.1 in /install (eb9a46f8) + * bump webpack from 5.72.1 to 5.73.0 in /install (#10677) (6239a1ff) + * bump nodebb-theme-slick from 2.0.1 to 2.0.2 in /install (557648e6) +* **deps-dev:** + * bump @commitlint/config-angular in /install (e5e788d2) + * bump eslint from 8.16.0 to 8.17.0 in /install (52c86dba) +* incrementing version number - v2.1.0 (a3114d33) +* update changelog for v2.1.0 (7121949d) + +##### Documentation Changes + +* fix changelog to more accurately reflect new changes (a9744416) + +##### Bug Fixes + +* #10675, don't ajaxify to /assets/ urls (48564cfa) + +##### Other Changes + +* //github.com/pichalite/nodebb-theme-slick/issues/60 (6a0339de) + +#### v2.1.0 (2022-06-02) + +##### Chores + +* update changelog for v2.1.0 (7121949d) +* incrementing version number - v2.1.0 (987045c3) +* bump persona (91f32487) +* update changelog for v2.0.1 (abd8e216) +* incrementing version number - v2.0.1 (768427d4) +* remove optional `middleware` parameter from setupPageRoute and setupAdminPageRoute calls (54ff768f) +* add note re: sort module (5aca106b) +* up emoji (265a0139) +* update changelog for v2.0.0 (60fc3f5d) +* incrementing version number - v2.0.0 (f23c3ff5) +* **deps:** + * bump nodebb-plugin-2factor from 4.0.1 to 5.0.0 in /install (6e95e5c5) + * update dependency lint-staged to v12.5.0 (01f607a5) + * update dependency lint-staged to v12.4.3 (8885d228) + * update dependency eslint to v8.16.0 (#10654) (f6728404) + * bump sharp from 0.30.4 to 0.30.5 in /install (#10651) (d9f2096d) + * bump postcss from 8.4.13 to 8.4.14 in /install (#10652) (0772ec07) + * bump socket.io-client from 4.5.0 to 4.5.1 in /install (#10653) (a13a523b) + * update dependency lint-staged to v12.4.2 (#10647) (18e76c21) + * bump nodebb-plugin-mentions in /install (#10648) (e894147c) + * bump helmet from 5.0.2 to 5.1.0 in /install (#10641) (5faaf6a1) + * bump socket.io from 4.5.0 to 4.5.1 in /install (#10639) (9d9b3f4e) + * bump ioredis from 5.0.4 to 5.0.5 in /install (#10637) (f9c9ac9c) + * bump ace-builds from 1.4.14 to 1.5.1 in /install (#10636) (acf188b0) + * bump yargs from 17.4.1 to 17.5.1 in /install (#10624) (c7aefe9c) + * update dependency @commitlint/cli to v16.3.0 (1dc96717) + * bump mongodb from 4.5.0 to 4.6.0 in /install (#10603) (aee74bd6) + * bump express-session from 1.17.2 to 1.17.3 in /install (#10604) (b1967681) + * bump webpack from 5.72.0 to 5.72.1 in /install (#10600) (06edb6e6) +* **deps-dev:** + * bump @commitlint/cli from 17.0.1 to 17.0.2 in /install (#10672) (5f6e9f67) + * bump @commitlint/cli from 16.3.0 to 17.0.1 in /install (#10644) (fe873182) + * bump @commitlint/config-angular in /install (#10614) (9c4ef133) + * bump husky from 8.0.0 to 8.0.1 in /install (#10595) (54876583) + * bump grunt from 1.5.2 to 1.5.3 in /install (fcb6c191) + * bump husky from 7.0.4 to 8.0.0 in /install (#10591) (03453a62) + * bump eslint from 8.14.0 to 8.15.0 in /install (#10592) (0d75c6cb) +* **i18n:** + * fallback strings for new resources: nodebb.user (2bace634) + * fallback strings for new resources: nodebb.admin-manage-admins-mods (192aa2d3) + +##### New Features + +* add clipboard to runtime modules (39d61061) +* add mute history, closes #10596 (c926358d) +* allow unban/unmute on flag details page. closes #10593 (9acdc680) +* paginaton for admins-mods, closes #10610 (b860c260) +* fix typo, show route in deprecation notice for third-param removal in `setupPageRoute` (14110596) +* add button to see category children, closes #10606 (a5831412) +* closes #10601, ability to prevent alerts on topic list (dc320c89) +* add post to hook params (f07b4484) +* add sorted-list.parse (e904f438) +* add new hook that fires when sorted-set list modal is shown (8faa6f23) +* #10585, ability to mute from flag details (7867ccd7) +* send back missing parameters as array of missing properties, in API response (0c19b1e5) +* add hook for user invite (323dbc97) + +##### Bug Fixes + +* **deps:** + * update dependency ace-builds to v1.5.3 (#10667) (e7fd1861) + * update dependency ioredis to v5.0.6 (#10668) (5bafab79) + * update dependency nodebb-theme-persona to v12.0.8 (#10669) (e47a63f0) + * update dependency nodebb-plugin-2factor to v4.0.1 (#10665) (356f9a18) + * update dependency ace-builds to v1.5.2 (#10664) (7b5f53fc) + * update dependency nodebb-theme-persona to v12.0.7 (#10666) (a9a26836) + * update dependency sharp to v0.30.6 (#10662) (23232508) + * update dependency nodebb-theme-persona to v12.0.5 (#10649) (1fd68281) + * update dependency cron to v2 (#10568) (ad370202) + * update dependency clipboard to v2.0.11 (#10574) (db67a50a) + * update dependency nodebb-theme-slick to v2.0.1 (#10578) (d98f4ea9) + * update dependency nodebb-theme-persona to v12.0.2 (#10577) (930aefcf) + * update dependency nodemailer to v6.7.5 (#10573) (6eef08f9) +* buildBreadcrumbs naively prepending relative path even if absolute paths are passed in (a3564260) +* more generic copy for notif/chat button labels (f6a7582c) +* #10642, fix order of dom ready events (2bfccac7) +* get rid of math.random in utils.generateUUID (e802fab8) +* #10528, gray out disabled nav items (7e4d2852) +* encode privilege name for API call (92abb352) +* #10631, fix user digest setting display acp (0084b563) +* translate api error messages to user lang, closes #10623, (b17a81bf) +* alert template error. closes #10620 (24a640d9) +* closes #10621, convert \r\n to \n so it isn't counted as 2 characters (3a009f96) +* remove ev, hooks don't pass event, closes #10611 (082a9e1d) +* 'unread' postIndex regression closes #10607 (0e60a704) +* clear dragging on mouseup as well (70ad4a52) +* #10588 exit code 1 on failed plugin activation (e2ff1e39) +* #10584, dont show backlinks if you dont have read privilege (5e7d366f) +* #10586, fix webinstaller folders (1928a186) +* closes #10583, replace removed socket method with api method (5e82cf23) +* add missing fs-extra, #10580 (e7077393) + +##### Other Changes + +* unnecessary escape (60eeae95) +* fix semicolon (3a77e714) + +##### Refactors + +* return module if it doesn't have default export (12b58fcf) +* deprecate middleware param (#10513) (84f27263) + +##### Tests + +* fix tests again (191fb9f4) +* fix UUID test (6677efd7) + +#### v2.0.1 (2022-05-28) + +##### Bug Fixes + +* get rid of math.random in utils.generateUUID (a4ab49c2) + +#### v2.0.0 (2022-05-04) + +##### Chores + +* incrementing version number - v2.0.0 (f23c3ff5) +* update changelog for v1.19.7 (a764df52) +* **deps:** + * update dependency mocha to v10 (a7986773) + * bump nodebb-plugin-dbsearch from 5.1.3 to 5.1.4 in /install (#10545) (a2e263a1) + * update dependency smtp-server to v3.11.0 (62f1c78a) +* **i18n:** + * fallback strings for new resources: nodebb.post-queue (d617c665) + * fallback strings for new resources: nodebb.post-queue (3492dd11) + * fallback strings for new resources: nodebb.error, nodebb.flags (72d47a0b) + +##### New Features + +* show number of selected posts in reject confirm (012860a4) +* post queue bulk actions closes #10520, fix #10555, (23175110) +* output canonical URL as last line on NodeBB boot (e4a9c078) + +##### Bug Fixes + +* **deps:** + * update dependency @socket.io/redis-adapter to v7.2.0 (#10571) (c3c77915) + * update dependency autoprefixer to v10.4.7 (#10563) (68168a7d) + * update dependency nodebb-theme-persona to v12.0.1 (#10561) (1d446e14) + * update dependency nodebb-plugin-mentions to v3.0.10 (#10560) (eb3c398e) + * update dependency nodebb-plugin-dbsearch to v5.1.5 (#10559) (c3ff28ff) + * update dependency nodebb-plugin-mentions to v3.0.9 (#10554) (1acbe4c1) + * update dependency postcss to v8.4.13 (#10553) (6217db00) + * update dependency express to v4.18.1 (#10550) (b0dc5615) + * pin dependency webpack to 5.72.0 (#10549) (672ab25a) + * update dependency cron to v1.8.3 (#10543) (d6843294) + * update dependency bootbox to v5.5.3 (#10531) (8d47f352) + * update dependency nodemailer to v6.7.4 (#10540) (afefee08) +* #10569, fix category move event text (ea01ba01) + +##### Refactors + +* not used anymore (d2e6f317) + +#### v1.19.7 (2022-04-28) + +##### Breaking Changes + +* #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking] (46fbe156) + +##### Chores + +* incrementing version number - v1.19.7 (0c4850e2) +* update changelog for v1.19.6 (acca7811) +* **deps:** + * update commitlint monorepo to v16.2.4 (0d9179f7) + * update dependency lint-staged to v12.4.1 (#10527) (804542e4) + * bump socket.io from 4.4.1 to 4.5.0 in /install (#10523) (0c2d015c) + * update dependency eslint to v8.14.0 (#10514) (40b7ff4b) + * update dependency lint-staged to v12.4.0 (fff818c6) + * update dependency lint-staged to v12.3.8 (7c1d98c7) +* **i18n:** fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (01e65395) + +##### New Features + +* make it simpler to use redis sentinels (82389469) +* closes #10501, minimum reputation to chat (b28f9f77) + +##### Bug Fixes + +* typo in hook name (21dbd476) +* upload test for latest sharp (424db9ff) +* #10502, allow unblocking admin/mod (b9f91643) +* **deps:** + * update dependency express to v4.18.0 (#10526) (5ae690a6) + * update socket.io packages to v4.5.0 (#10522) (d86c447a) + * update dependency autoprefixer to v10.4.5 (#10521) (5ce4c874) + * update dependency nodebb-plugin-2factor to v3.0.7 (#10510) (b81a0cfe) + * update dependency nodebb-widget-essentials to v5.0.11 (#10517) (a767d623) + * update dependency sharp to v0.30.4 (#10504) (a36911fc) + * update dependency prompt to v1.3.0 (#10487) (07678fb5) + * update dependency nconf to v0.12.0 (#10496) (fe492b11) + * update dependency archiver to v5.3.1 (#10500) (6c727859) + +##### Refactors + +* closes #10509 (7f241dbb) +* show invalid uri (ac125538) +* skip content length check if submitting from post-queue (a8e642ad) + +##### Tests + +* remove node18 until nodemailer is fixed (50658a82) +* remove node 12, add 18 (976914e7) + +#### v1.19.6 (2022-04-13) + +##### Chores + +* incrementing version number - v1.19.6 (283a0072) +* update changelog for v1.19.5 (05032ca2) +* **deps:** + * bump semver from 7.3.6 to 7.3.7 in /install (#10493) (65cec8d0) + * update dependency grunt to v1.5.2 (9f496659) + * update dependency grunt to v1.5.1 (0a8bf44e) + * update dependency grunt to v1.5.0 (e82d8bb6) + * update dependency eslint to v8.13.0 (bc3aabb4) + * update dependency eslint-plugin-import to v2.26.0 (a2ebf53b) + * bump nodebb-theme-persona from 11.4.3 to 11.4.4 in /install (#10437) (5b1789c1) + * bump nodebb-plugin-composer-default in /install (#10438) (c8c42933) + * update dependency eslint to v8.12.0 (a6590e20) + * update dependency lint-staged to v12.3.7 (#10407) (5f36ad39) +* **i18n:** fallback strings for new resources: nodebb.post-queue (a06d1246) + +##### New Features + +* #10460, add cutoff to suggested topics (799e94e0) +* add response:helpers.notAllowed (e8058ca3) +* add filter:image.stripEXIF (b8765df5) +* add confirm to reject, closes #10427 (538ad9e1) +* allow client-side hook registration chaining (b88bb3cf) +* delete flagId field from post/user on flag purge (31251282) +* add flags.purge (3b529b84) +* new admin events, closes #10405 (421ba6e1) +* add Albanian localisation :tada: (309968bf) + +##### Bug Fixes + +* dont add caller to arrays (5316029f) +* #10491, don't leak deleted message in cleanedContent (c52401da) +* #10473, trim trailing slashes on config url (9f91db16) +* closes #10436, fix DST issue on acp dashboard (39877763) +* delete history as well (002a241c) +* handle purge posts as well (93b60532) +* byCid removal, targetCid not stored in flagObj (03fdb5be) +* upgrade script (55be4202) +* column counts for other privileges (2b9b2b4a) +* **deps:** + * update dependency nodebb-plugin-mentions to v3.0.8 (#10490) (7c733e9c) + * update dependency winston to v3.7.2 (#10454) (dc03a2f9) + * update dependency nconf to v0.11.4 (#10481) (f253bbdd) + * update dependency yargs to v17.4.1 (#10480) (bbf2b73e) + * update dependency ioredis to v5.0.4 (#10479) (88200ec1) + * update dependency html-to-text to v8.2.0 (#10471) (91026e5f) + * update dependency semver to v7.3.6 (#10466) (c50de911) + * update dependency html-to-text to v8.1.1 (#10470) (b3ec8059) + * update dependency nodebb-widget-essentials to v5.0.10 (#10461) (b6517cfd) + * update dependency body-parser to v1.20.0 (#10450) (26511185) + * update dependency spdx-license-list to v6.5.0 (#10452) (5e37f34e) + * update dependency graceful-fs to v4.2.10 (#10457) (947fa193) + * update dependency mongodb to v4.5.0 (#10458) (30f728ca) + * update dependency ioredis to v5.0.3 (#10446) (0d744d30) + * update dependency ioredis to v5 (#10434) (060ad1b0) + * update dependency nodebb-plugin-2factor to v3.0.6 (#10435) (0ac426e0) + * update dependency nodebb-plugin-composer-default to v7.0.21 (#10429) (898e0e89) + * update dependency nodebb-plugin-spam-be-gone to v0.8.1 (#10425) (47399bfe) + * update dependency sortablejs to v1.15.0 (#10418) (12cd1df2) + * update dependency nodemailer to v6.7.3 (#10421) (7e542495) + * update dependency yargs to v17.4.0 (#10416) (eaa05517) + * update dependency nodebb-theme-persona to v11.4.3 (#10414) (720a9dba) + * update dependency connect-redis to v6.1.3 (#10390) (06594131) +* **security:** + * explicitly declare cache-control header instead of using middleware (38ca73c4) + * cache-control on all pages using setupPageRoute or setupApiRoute, and 404 controllers. (1f6f389f) + * explicitly set cache-control 'private' on any page where a header is built (e39cdd49) + +##### Performance Improvements + +* WIP #10449, allow array of pids for posts.purge (#10465) (76797371) +* #10410, faster upgrade script (dab22d5f) + +##### Refactors + +* replace deprecated String.prototype.substr() (#10432) (200f0b2e) +* remove some verbose logging (9abe22a0) +* :trollface: (29b86b32) +* shorter generateTopicClass (f76c0e89) + +#### v1.19.5 (2022-03-16) + +##### Chores + +* incrementing version number - v1.19.5 (48d6eb4f) +* update changelog for v1.19.4 (0e6e49b2) +* **deps:** + * bump less from 3.13.1 to 4.1.2 in /install (#9856) (d33485f6) + * bump autoprefixer from 10.4.2 to 10.4.4 in /install (#10403) (90094935) + * update dependency lint-staged to v12.3.6 (0a4522a2) + * update commitlint monorepo to v16.2.3 (0a97015d) + * bump nodebb-plugin-spam-be-gone in /install (#10387) (445e3d70) + * bump connect-redis from 6.1.1 to 6.1.2 in /install (#10391) (145621f7) + * update dependency eslint to v8.11.0 (feaf3068) + * update dependency mocha to v9.2.2 (#10383) (4ffbd78d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-manage-users (2f09c22c) + * fallback strings for new resources: nodebb.admin-manage-privileges, nodebb.admin-manage-users, nodebb.error, nodebb.user (15508bac) + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.error (5274a6aa) + +##### New Features + +* collect hook logs in order to reduce console noise, flush on ajaxify loadScript completion (935704a8) +* add support for PATCH method in api module (4b79dfd2) +* on online users page override timeago cutoff to 24 hours (7c946570) +* ability to mute users (be6bbabd) +* min:rep:upvote, and other limits similar to downvotes (3414a23b) +* post-queue hooks, closes #10381 (2056ac04) + +##### Bug Fixes + +* topic events if there is a blocked user in topic (3935a86b) +* topic events disappearing if there are queued posts (2808c952) +* #10393, move 'Create User' control to overflow menu (cd687cff) +* don't append to history on refresh or ajaxify to same url (c83987bd) +* global privs (7d063d73) +* #10384 -- mixed up sizes for fallback touch icons (cb113208) +* #10377, remove logging of env vars (997ab7d4) +* **deps:** + * update dependency postcss to v8.4.12 (#10396) (bdbc168d) + * update dependency sharp to v0.30.3 (#10389) (b4213859) + +##### Refactors + +* closes #10301 (c8e986d6) + +##### Tests + +* skip i18n tests if the github event is a pull request (e578c605) +* fix middleware test (24c1f879) +* fix category tests (6344c3b6) +* fix one more test (a5511425) + +#### v1.19.4 (2022-03-09) + +##### Chores + +* incrementing version number - v1.19.4 (67282057) +* delay `filter:email.send` removal to v2.0.0 (83fd4311) +* up persona (c23b2089) +* incrementing version number - v1.19.3 (09cb11c8) +* update changelog for v1.19.3 (0b48ec54) +* **deps:** + * bump postcss from 8.4.7 to 8.4.8 in /install (#10372) (d7a4ae1f) + * update dependency lint-staged to v12.3.5 (517ae926) + * bump nodebb-plugin-spam-be-gone in /install (81e7ca20) + * update dependency eslint to v8.10.0 (e83c8be2) + * bump postcss from 8.4.6 to 8.4.7 in /install (52ee5ce8) + * bump json2csv from 5.0.6 to 5.0.7 in /install (e44cbb24) + * update dependency smtp-server to v3.10.0 (67e4df78) + * update dependency mocha to v9.2.1 (00eebf10) + * bump prompt from 1.2.1 to 1.2.2 in /install (21913b5b) + * bump express from 4.17.2 to 4.17.3 in /install (5321ba4d) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-reputation, nodebb.flags (a5fe8350) + * fallback strings for new resources: nodebb.topic (dc0f9a73) + +##### New Features + +* add hook filter:posts.getUserInfoForPosts (df46ab48) +* add translateKeys (e841d59a) +* post auto flagging on downvotes #10029 (#10367) (62187caa) +* closes #10324, show recently online users as well (eac9cd03) +* resolve paths for staticDirs as well (e0b1c374) +* ability to go through your posts in a topic (b517b376) +* **sorted-list:** add new client-side hook `filter:settings.sorted-list.loadItem` (92d613e4) + +##### Bug Fixes + +* apply some DRY (a3b4c668) +* optional params (e9a86cb9) +* #10374, use quick search in setting (70e613f8) +* #10366, remove dupe /files (371b4658) +* always show self on /users?online (56345777) +* db call (21cd1e61) +* lastonline timestamps and display for guests (cc665fd6) +* #10357 (7ee4e4e0) +* #10358, bad uploads path (5479f364) +* #10360, only take top level posts (37ef8366) +* #10354, flag actions regression (fec907d9) +* dont overwrite asset_base_url if its set (0e12f82d) +* allow calls to api module without a defined payload (914733e4) +* #10334, use the correct env vars for web install (6b22d0e1) +* persona test fail (10a5901e) +* #10316, fix quoting regression (0b813d60) +* #10322 (5694e62e) +* #10329, select elements in sorted-list not showing proper values (1fa41342) +* allow translation keys in `label` attributes (52836f3a) +* don't load setup.json into nconf if setup.json doesn't exist (6e156daa) +* regression caused by 94b79ce4024f72a3eee2cfa06b05d8f66898149f (4164898d) +* **deps:** + * update dependency nodebb-plugin-markdown to v9.0.10 (bcb68ee9) + * update dependency mongodb to v4.4.1 (#10364) (4b730df9) + * update dependency nodebb-theme-persona to v11.4.2 (#10361) (4d590f65) + * update dependency body-parser to v1.19.2 (#10298) (c75714b7) + * update dependency sharp to v0.30.2 (#10359) (1a6c2c55) + * update dependency nodebb-plugin-mentions to v3.0.7 (#10355) (3e5a0f0d) + * update dependency nodebb-plugin-2factor to v3.0.5 (f30c65a4) + * update dependency nodebb-theme-persona to v11.4.1 (#10337) (b84e61d5) + * update dependency nodebb-theme-persona to v11.4.0 (#10325) (244d8801) + * update dependency nodebb-plugin-mentions to v3.0.6 (#10328) (31cbff19) + * update dependency nodebb-plugin-dbsearch to v5.1.3 (#10330) (1c1062e1) + * update dependency nodebb-plugin-markdown to v9.0.8 (#10327) (c17b9bd4) + * update dependency mongodb to v4.4.0 (#10319) (afd2993d) + * update dependency nodebb-plugin-emoji to v3.5.17 (#10314) (04900291) + * update dependency nodebb-plugin-dbsearch to v5.1.2 (#10313) (0e30362b) + * update dependency nodebb-widget-essentials to v5.0.9 (#10307) (5666c103) + * update dependency nodebb-widget-essentials to v5.0.8 (#10306) (636f1baf) +* **sorted-list:** + * call loadItem hook on add/edit items as well as on item retrieval, refactor edit to call parse() (1c8d1d23) + * only call `.stripHTMLTags()` on string values (fb4f89f3) + +##### Refactors + +* show a louder deprecation notice, alert once for each hook, not per plugin per hook (93b80f17) +* move header unread code to separate module (40230725) +* remove code that doesn't do anything (4a1e761a) +* wrap around if at end (3acd2ac8) +* change lang string (94961196) + +##### Tests + +* possible fix random psql test failure (50ed3a32) +* log configJSON (9db90a30) +* check contents of config.json in tests (32f69301) + +#### v1.19.3 (2022-02-16) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (4043f179) + * fallback strings for new resources: nodebb.user (775d9077) +* **deps:** + * update dependency lint-staged to v12.3.4 (9577ef8d) + * update commitlint monorepo to v16.2.1 (2290cee5) + * update dependency eslint to v8.9.0 (763cd193) +* remove punycode dep (e9cb1452) +* incrementing version number - v1.19.2 (e49b31f0) +* update changelog for v1.19.2 (f012984d) + +##### New Features + +* delete diffs on post purge, closes #10291 (e9e48a75) +* closes #10296 (58b5781c) +* deleting a user upload dissociates from posts, and vice versa (d5ed8736) +* #10276, dont change/revert theme if its current (398d25c2) + +##### Bug Fixes + +* #10302, fix regression (503e27f7) +* one last try (9205169f) +* doggy.gif (2f64d633) +* one more fix (cfdfbf32) +* dupe key errors (770fcd9e) +* #10292, delete missing fields (dbf7a458) +* local deleteUploads() method in `src/user/delete.js` to call `User.deleteUpload()` (b9edee14) +* #10144, automatically delete uploads from disk on post purge, ACP option to keep uploads on disk if desired (84dfda59) +* four-space indents in package.json (9aa3e442) +* #10289, remove lodash dependency in src/cli/package-install.js (81fa2e22) +* non-functional upgrade script (1c7fb8fe) +* language keys (350052ec) +* #10273, properly calculate item count for best/controversial (d70ce3a9) +* **deps:** + * update dependency nodebb-plugin-emoji to v3.5.16 (#10297) (b47ca86d) + * update dependency nodebb-plugin-markdown to v9.0.7 (#10293) (5b0d4a8e) + * update dependency nodebb-plugin-emoji to v3.5.14 (#10295) (7af057fa) + * update dependency nodebb-plugin-mentions to v3.0.5 (#10294) (55a98183) + * update dependency winston to v3.6.0 (#10285) (22da7a10) + * update dependency nodebb-plugin-markdown to v9.0.6 (3225a1af) + * update dependency nodebb-plugin-spam-be-gone to v0.7.13 (#10280) (3dc108d3) + * update dependency nodebb-plugin-emoji to v3.5.12 (#10279) (2c0b6322) + * update dependency nodebb-plugin-emoji to v3.5.11 (#10274) (766ef4e5) + +##### Refactors + +* lazy load slugify (946d351f) +* .deleteUpload() to accept array of paths (7ef9c7d2) +* fix user uploads paths, and associate uid with user uploads (ea36016d) +* change the post uploads' hash seeds to have the `files/` prefix (6489e9fd) +* abstract some common code out to local utility methods (aad0c5fd) +* move post upload tests to its own file (d92da828) +* remove extra zset remove, closes #10277 (489c0d30) + +##### Code Style Changes + +* linting errors (5d7e1ebc) + +##### Tests + +* fix topic thumb tests and topic thumbs to work properly with post upload assoc. (fb78570c) +* user uploads.js tests (8c2752ba) +* testing user upload methods, already fixed one bug (11275d68) + +#### v1.19.2 (2022-02-09) + +##### Chores + +* up persona (14ecafb6) +* up markdown (8a4b7dc4) +* add missing quote (b98758d3) +* use source and current local vars, + docs (9e4147f0) +* up persona (1eaae1d0) +* up emoji (106ef7cf) +* persona (3b4cf971) +* persona (78db61cf) +* up deps (c7a56439) +* add punycode dependency (452f29c0) +* up persona (d50d4a9e) +* up persona (458606bc) +* up persona (cfe53305) +* up persona (f29bed27) +* up packages (b4a4e60e) +* up persona (3e30b6cd) +* incrementing version number - v1.19.1 (7f450268) +* update changelog for v1.19.1 (55df683a) +* **deps:** + * bump ioredis from 4.28.4 to 4.28.5 in /install (#10254) (b496ad44) + * bump nodebb-widget-essentials in /install (#10219) (b71025ce) + * update dependency lint-staged to v12.3.3 (6ba25557) + * update dependency eslint to v8.8.0 (153693e0) + * bump nodebb-theme-persona in /install (#10199) (2db54e67) + * update dependency lint-staged to v12.3.2 (814cb66b) + * update dependency mocha to v9.2.0 (05e2b354) + * bump helmet from 5.0.1 to 5.0.2 in /install (1f037bf6) + * update dependency lint-staged to v12.3.1 (ac244af3) + * update dependency lint-staged to v12.3.0 (7060837b) + * bump helmet from 4.6.0 to 5.0.1 in /install (5d3900dc) +* **i18n:** + * fallback strings for new resources: nodebb.modules (a71b8e59) + * fallback strings for new resources: nodebb.global, nodebb.pages (aa812f03) + * fallback strings for new resources: nodebb.users (70eeb204) + * fallback strings for new resources: nodebb.admin-settings-email (e9588ca7) + * fallback strings for new resources: nodebb.admin-settings-advanced (2ec4e31f) + +##### Documentation Changes + +* openapi spec for new route (9b912db7) +* some tweaks to cli help (c869d7db) + +##### New Features + +* handle array of keys in psql exists for zsets (5143ca33) +* upgrade script to clean up leftover :thumb zsets (0ac28435) +* more tests for ensuring downvoted posts are added to the :votes zset (1b8eeaf8) +* upgrade script to store downvotes posts in the user :votes sorted set (cf88483f) +* new accounts route to show most downvoted ('controversial') posts (5afd5de0) +* v3 user email tests (aa8914a1) +* allow gif profile images, sharp 0.30.0 supports gifs (7f1c4477) +* detect alternative package managers based on lockfile (8ba9e67c) +* new language key for user search in chat (766ad6b7) +* remove colors in favour of chalk (#10142) (cf8f62ae) +* add upload helper module for drag&drop, paste, closes #6388 (cf5c0968) +* no more sending emails to banned users, + feature flag (ea27eaf1) +* push the theme name into body class (e1e1d522) +* add ACP toggles for COEP and CORP headers (d91aeea3) + +##### Bug Fixes + +* **deps:** + * update dependency sharp to v0.30.1 (#10270) (8e52abe8) + * update dependency nodebb-widget-essentials to v5.0.7 (#10269) (6c0f7034) + * update dependency nodebb-theme-persona to v11.3.37 (#10265) (78d48c37) + * update dependency ioredis to v4.28.5 (#10252) (721a70c0) + * update dependency connect-redis to v6.1.1 (#10260) (a10e4940) + * update dependency nodebb-theme-persona to v11.3.36 (#10253) (0e2a4a2d) + * update dependency nodebb-theme-persona to v11.3.35 (#10251) (6465e012) + * update dependency pg-cursor to v2.7.3 (#10244) (e6185883) + * update dependency nodebb-theme-persona to v11.3.33 (#10248) (32477676) + * update dependency nodebb-theme-vanilla to v12.1.17 (#10249) (8f5b5ef1) + * update dependency nodebb-plugin-emoji to v3.5.9 (#10250) (1eb0939e) + * update dependency sanitize-html to v2.7.0 (#10246) (845717b8) + * update dependency pg to v8.7.3 (#10243) (531a3b1e) + * update dependency connect-redis to v6.1.0 (#10245) (c343b631) + * update dependency nodebb-theme-persona to v11.3.31 (#10241) (f1bed441) + * update dependency nodebb-plugin-composer-default to v7.0.20 (#10231) (a4702959) + * update dependency nodebb-theme-persona to v11.3.30 (#10232) (916a0db3) + * update dependency nodebb-plugin-emoji to v3.5.8 (#10239) (ebf4e12b) + * update dependency sharp to v0.30.0 (#10221) (2924cd3b) + * update dependency ioredis to v4.28.4 (#10224) (cda07cb7) + * update dependency clipboard to v2.0.10 (2c605d1c) + * update dependency sitemap to v7.1.1 (1bf938da) + * update dependency winston to v3.5.1 (b0dd68bb) + * pin dependency punycode to 2.1.1 (e7ba24c5) + * update dependency postcss to v8.4.6 (322f1033) + * update dependency nodebb-plugin-markdown to v9 (7d5080cd) + * update dependency ace-builds to v1.4.14 (#10200) (c50f6512) + * update dependency winston to v3.5.0 (#10202) (a7f142be) + * update dependency clipboard to v2.0.9 (#10203) (c6164e48) +* remove extraneous devDependencies on package merge (a2c7d69e) +* #10257, topic thumbs not deleting on topic deletion (0f788b8e) +* #10256, allow quote tooltip on mobile (fb3f4f9a) +* #10255, create verified/unverified groups on install (08f2a050) +* controversial posts/bests posts not showing anything (079c487d) +* regression in package.json merging logic that caused extraneous packages to not be removed (d34471f6) +* #10229, package merging should deep merge nested objects (689c125c) +* use fs.promises (a0a38706) +* bug where .reduce() exploded due to no initial value, if input value was an empty array (5cff6e3f) +* https://github.com/NodeBB/NodeBB/issues/10242 (dcb201df) +* missing early return (ad635175) +* handle case where email is explicitly passed into user.create, and thus is set in user hash, but confirmation request may have expired (936562c3) +* #10236, don't check email:uid, instead verify an email confirmation is active (0322e984) +* don't crash if requestedFields is undefined (98839108) +* a missed invocation of colors (c3d926ff) +* proactively guard against homograph characters in website values (fa7dcdb9) +* #10208, don't use leading slash in directory names (1d01741a) +* don't crash if quick search doesn't return posts (93d18383) +* properly unregister hooks in emailer tests (fc2c755c) +* email ban tests (dee9cca3) +* update usage of emailer.send to not catch (as errors are no longer thrown), email error throttler (d4e5259f) +* derp (b3f7b742) +* bug where page wouldn't complete loading if data.scripts was emptied (578145ac) +* use escaped group names in invite modal (2a89ad82) +* https://github.com/julianlam/nodebb-plugin-mentions/issues/170 (dc6e629d) +* #10197, fix relative path urls for dashboard pages (92a249c9) +* actually, CORP is ok (df8c8ad8) +* update defaults for corp and coep to be more permissive, for now, to be reverted for v1.20.0 (4467299e) +* if no group label is selected, select no group title option (94da5026) + +##### Other Changes + +* remove unused require (6be330f2) + +##### Performance Improvements + +* increase batch size (b548083b) + +##### Refactors + +* update chat plcaeholder message (fbd9ba79) +* updated package-install.js exports style, new exported method 'getPackageManager' for use in cases where nconf is unreliable, fix bug where nconf was not correctly set up in cli tools, proper installation of dev dependencies based on global env value (9a169085) +* emailer.send and emailer.sendToEmail returns Boolean based on message being successfully sent (f0e32ff1) +* sorted-list .get() to be async fn (89b559a2) + +##### Tests + +* fix occasional test failure (2dbdd181) +* add test to verify that a sorted set is automatically deleted if its last element is removed (#10261) (60680876) +* stricter isValidationPending check (d1b1f50b) +* fix derp (680e36da) +* up acp plugin page timeout (a214f9a6) + +#### v1.19.1 (2022-01-21) + +##### Chores + +* **deps:** + * bump compare-versions from 4.1.2 to 4.1.3 in /install (#10154) (4a5182e4) + * update dependency lint-staged to v12.2.2 (f090de36) + * update dependency @commitlint/cli to v16.1.0 (44d81a95) + * update dependency lint-staged to v12.2.1 (857ac480) + * update dependency @commitlint/cli to v16.0.3 (9c63d076) + * update dependency lint-staged to v12.2.0 (1a0c117d) + * update dependency eslint to v8.7.0 (8abaf3f6) + * update dependency mocha to v9.1.4 (f5ad173b) +* up persona (89871d71) +* add test.sh to gitignore (d7796f0b) +* delete test script (250274c7) +* remove unused lang key #10180 (2fe91e36) +* incrementing version number - v1.19.0 (18b0a29f) +* update changelog for v1.19.0 (c8f1bc53) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-user (78cd6de7) + * fallback strings for new resources: nodebb.user (3ec9197c) + * fallback strings for new resources: nodebb.email (354aa1a5) + +##### New Features + +* revert label js change (1c80adf1) +* hide all categories link on flags filters (e9d0db28) +* nicer error handling for bad jwt in unsubscribe template (31ea2266) + +##### Bug Fixes + +* **deps:** + * update dependency jquery-ui to v1.13.1 (#10186) (55b3a355) + * update dependency multiparty to v4.2.3 (#10188) (7fa2ba70) + * update dependency nodebb-theme-persona to v11.3.15 (#10155) (e03d4747) + * update dependency mongodb to v4.3.1 (#10178) (693ca1f1) + * update dependency nodebb-plugin-composer-default to v7.0.18 (#10164) (2c75cce6) +* urls used when recent/unread/popular/top is used as the homepage (28359665) +* mark unread button showing the selected category (fdfafb44) +* catch exceptions from sendNotifications (c1ec2047) +* multiple cid filter on flags page (3e8cb732) +* post indices if there is a blocked user in topic (f9279b63) +* dont add duplicate link backs (3b72ff87) +* #10175, fix topic linkbacks duplicating on post edit (b06c6329) +* #10173, don't show optional message if email is required (d1eb21c5) +* #10172, fix postqueue accept/reject notification text (6a75ed50) +* #10167, fix regression prevent guest post (4799efc7) +* CSRF handler to go back to saving in session (#10159) (e9ee843b) +* #10158, fix extra padding (03f5cbcc) + +##### Refactors + +* add method to error messages (c9fabb0e) + +##### Tests + +* add failing guest csrf test (#10169) (10949184) + +#### v1.19.0 (2022-01-13) + +##### Breaking Changes + +* `GET /chats/:roomId/users` [breaking] (6eea6451) +* remove socket.emit('user.exists') (1f063058) +* remove socket.emit('user.changeUsernameEmail') (6b45dee9) +* #10077, store nav items in objects (69c96078) +* remove socket.emit('topics.follow') (f918a381) +* remove socket.emit('topics.post') (6ad04721) +* remove socket.emit('user.banUsers'); (49641a32) +* remove socket.emit('posts.reply') (4604a572) +* remove socket.emit('user.changePicture') (6d95684b) +* remove socket.emit('user.search') (0d694c78) +* remove socketHelpers.setDefaultPostData (99f865c6) +* remove deprecated groups socket calls (02ea17ea) +* remove deprecated methods (0d1e57dc) +* remove socket.emit('posts.delete') (bd1cb2d4) +* remove socket.emit('posts.upvote') (ec1d5e38) +* remove socket.emit('posts.move') (8427c5d9) +* remove socket.emit('posts.edit') (4247f624) +* remove socket.emit('posts.bookmark/unbookmark') (f7418ccd) +* remove deprecated admin.groups methods (07e2741e) +* remove socket.emit('categories.getCategory') (45d755b6) +* remove socket.emit('admin.categories.setPrivilege') and socket.emit('admin.categories.getPrivilegeSettings') (cc3f82bc) +* remove deprecated socket.emit('admin.categories.update') (0b9c01f9) +* remove deprecated socket.emit('admin.categories.purge') (ba5d2e7b) +* remove deprecated socket.emit('admin.categories.create') (b3353723) +* remove deprecated socket.emit('admin.categories.getAll') (10c19af2) +* remove getTopicPosts(tid, ...) usage (170e5dd9) +* remove deprecated post diff socket calls (8117b7f2) +* remove deprecated user middlewares (1a7fffc7) +* remove action:category.loaded, use action:topics.loading (36aa6034) +* remove setTopicSort/setCategorySort (6dcdf1d3) +* remove deprecated socket user create/delete functions (a7d1dfb6) +* remove deprecated uploads.delete (c93d7fdb) +* remove deprecated methods (79de48c5) +* remove socket.io/flags.js (c5f08fdc) + +##### Chores + +* org; merge consecutive await calls into one Promise.all (be4dbe34) +* fix #9213 (0a5420ed) +* revert engines change in install/package.json (487f25ba) +* update renovate config (f95acce3) +* update renovate range strategy... (bc0f33df) +* remove debug logs in test/api.js (82768fcf) +* use apiv3 for room rename tests (e745e212) +* trigger lang (540eeae9) +* up themes (71fa8175) +* right dropdown (7aa85882) +* right dropdown (a998cc1c) +* update readme mongodb version (af5393ec) +* incrementing version number - v1.18.6 (3a78a151) +* update changelog for v1.18.6 (3c8109e2) +* **deps:** + * update commitlint monorepo (56d134c3) + * update dependency lint-staged to v12.1.7 (40e7007f) + * update dependency lint-staged to v12.1.6 (f78108ac) + * update dependency eslint-plugin-import to v2.25.4 (a69afdb6) + * update dependency lint-staged to v12.1.5 (12038039) + * update dependency eslint to v8.6.0 (b546ff4e) + * update dependency lint-staged to v12.1.4 (87779fc8) + * update dependency jsdom to v19 (#10053) (ee05b762) + * update dependency lint-staged to v12.1.3 (c0dd8dcb) + * update dependency eslint to v8.5.0 (55b9fab1) + * update dependency eslint to v8.4.1 (ba02f015) + * update dependency eslint to v8.4.0 (4b113715) + * update dependency lint-staged to v12 (b3423389) + * update dependency eslint to v8 (e9aadde1) + * update commitlint monorepo to v15 (f6c6425d) + * update dependency jsdom to v18.1.1 (87433b79) + * bump compare-versions from 3.6.0 to 4.1.1 in /install (ea9f2c73) + * update dependency jsdom to v18.1.0 (d7c2a311) +* **i18n:** + * fallback strings for new resources: nodebb.user (d79d7e80) + * fallback strings for new resources: nodebb.admin-settings-uploads (e6a46ef6) + * fallback strings for new resources: nodebb.error (207ae8cd) + * fallback strings for new resources: nodebb.post-queue (edba10e2) + * fallback strings for new resources: nodebb.modules, nodebb.notifications (fd939f8b) + * fallback strings for new resources: nodebb.admin-admin (4a53adf6) + * fallback strings for new resources: nodebb.admin-admin (b052a8e7) + * fallback strings for new resources: nodebb.topic (23c915ba) + * fallback strings for new resources: nodebb.admin-settings-user, nodebb.login (eecd02fb) + * fallback strings for new resources: nodebb.admin-settings-email (72e1c281) + +##### Documentation Changes + +* comment hint :shipit: (ffdf26af) +* fix description for route (47ab9526) +* roomId is number (0aa25f20) +* openAPI documentation for routes (55e68e2f) +* use social media card in readme header (33c8b197) +* add social media card (f7b3f69f) +* add docs link higher up (1a85aaad) +* update readme blurb (e325aa93) + +##### New Features + +* bundling nodebb-plugin-2factor with all NodeBB installations, v1.19.0 onwards :tada: (31b4b8fd) +* revoke user sessions on successful password reset (6ca216ab) +* allow % in tags, #10135 (a75a043b) +* allow isCluster, isPrimary, and jobsDisabled to be passed in as numbers in addition to string/bool (b5b188fd) +* `GET /api/v3/chats/:roomId/messages` (2fe53cf8) +* `DELETE /api/v3/chats/:roomId/users` and `DELETE /api/v3/chats/:roomId/users/:uid` (fe17c94c) +* `POST /chats/:roomId/users` (d62ee846) +* `POST /chats/:roomId/:mid` and `DELETE /chats/:roomId/:mid` (d5fd098e) +* middleware.assert.message (90fcbe44) +* `GET /chats/:roomId/:mid` (b2929605) +* `PUT /chats/:roomId/:mid` (f48ed365) +* allow API checkRequired middleware error to be internationalized (74f1905e) +* `PUT /api/v3/chats/:roomId` (9a4fd5dc) +* `POST /api/v3/chats/:roomId` (eeffb9d9) +* `GET /api/v3/chats/:roomId` (09cf9c77) +* `POST /api/v3/chats`, chat room creation, plus openAPI docs update (40b4544e) +* `GET /api/v3/chats` (94bead71) +* stub code for v3 chats api (02e878be) +* #9506, allow seeing and editing your queued posts (c4042c70) +* pass in all query params to category search filter (599bffd8) +* add data param to filter:categories.search (c4156bdd) +* ensure that all requests handled by NodeBB fall under the relative_path as configured (a3bdb706) +* show 10 members (d9c42c00) +* closes #10018 (1e535528) +* #10018 add href (06bfec88) +* #10018 , wip (0f14f23b) +* autocomplete for activate/reset (f0d192fb) +* #10008, add history entry for note deletion (c26870d2) +* #9957, don't remove existing fields form config.json (0532c1b2) +* add feature flag to disable verification emails, closes #9996 (09e0c6d5) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-markdown to v8.14.6 (ad6f6051) + * update dependency winston to v3.4.0 (#10150) (2fee1d07) + * update dependency ioredis to v4.28.3 (#10151) (bfad04ab) + * pin dependencies (da2bb340) + * pin dependency socket.io-adapter-cluster to 1.0.1 (#10146) (15bf3db2) + * update dependency nodebb-theme-vanilla to v12.1.15 (#10149) (2fa3cd0d) + * update dependency nodebb-theme-slick to v1.4.23 (#10148) (762de2d8) + * update dependency nodebb-theme-persona to v11.3.13 (#10147) (385d4c71) + * update dependency winston to v3.3.4 (4bada01b) + * update dependency autoprefixer to v10.4.2 (a47883e8) + * update dependency mongodb to v4.3.0 (50eb4556) + * update socket.io packages to v4.4.1 (9eb00cb2) + * update dependency nodebb-rewards-essentials to v0.2.1 (0a15c99e) + * update dependency autoprefixer to v10.4.1 (f1aa5f7d) + * update dependency yargs to v17.3.1 (5c3335b7) + * update dependency nodebb-theme-vanilla to v12.1.14 (#10102) (dd8b1f75) + * update dependency nodebb-theme-slick to v1.4.22 (#10101) (dd1633ff) + * update dependency nodebb-theme-lavender to v5.3.2 (#10099) (eccdfc9d) + * update dependency nodebb-theme-persona to v11.3.12 (#10100) (4f6fc10b) + * update dependency nodebb-theme-persona to v11.3.11 (32cbf760) + * update dependency nodebb-theme-slick to v1.4.21 (9253519c) + * update dependency nodebb-theme-slick to v1.4.20 (#10084) (019804e1) + * update dependency nodebb-theme-vanilla to v12.1.13 (#10085) (66c759ed) + * update dependency nodebb-theme-persona to v11.3.10 (#10083) (d276c9cd) + * update dependency nodebb-plugin-composer-default to v7.0.17 (#10082) (0ef9c7ab) + * update dependency nodebb-theme-vanilla to v12.1.12 (dda7c075) + * update dependency nodebb-theme-slick to v1.4.19 (4577600e) + * update dependency nodebb-theme-persona to v11.3.8 (5e2281c3) + * update dependency mongodb to v4.2.2 (0551a19e) + * update dependency postcss to v8.4.5 (16398dd9) + * update dependency compare-versions to v4.1.2 (de1ed01d) + * bump persona (16c88a97) + * bump persona (c90a8926) + * update dependency nodebb-plugin-mentions to v3.0.4 (#10063) (07217762) + * update dependency nodebb-plugin-spam-be-gone to v0.7.12 (#10064) (a5840c5a) + * update dependency nodebb-theme-slick to v1.4.18 (#10065) (5477cf32) + * update dependency nodebb-plugin-markdown to v8.14.5 (#10062) (60d778f0) + * update dependency nodebb-theme-persona to v11.3.5 (#10059) (8695d370) + * update dependency nodebb-plugin-dbsearch to v5.1.1 (70068d6c) + * update dependency nodebb-plugin-composer-default to v7.0.15 (84b03a34) + * update dependency nodebb-theme-persona to v11.3.3 (8cbe0df2) + * bump emoji plugin (14e35247) + * update dependency ioredis to v4.28.2 (597d826b) + * update dependency yargs to v17.3.0 (115de4e5) + * update dependency mime to v3 (#9963) (49813cce) + * update dependency mongodb to v4.2.1 (f72af319) + * update dependency @socket.io/redis-adapter to v7.1.0 (ed4b0cf7) + * update dependency postcss to v8.4.4 (b34b8aa9) + * update dependency postcss to v8.4.3 (2dadf786) + * update dependency postcss to v8.4.1 (6a273798) + * update dependency postcss to v8.4.0 (29345275) + * update dependency ioredis to v4.28.1 (9966a00f) + * update dependency nodebb-theme-persona to v11.3.1 (fdae6991) + * update socket.io packages to v4.4.0 (f05d308a) + * update dependency nodebb-theme-vanilla to v12.1.10 (68dddbd9) + * update dependency nodebb-theme-persona to v11.2.22 (3eb91a20) + * update dependency nodebb-plugin-mentions to v3.0.3 (5ec32c31) + * update dependency mongodb to v4.2.0 (#10011) (2378fc84) + * update dependency @socket.io/redis-adapter to v7.0.1 (aae7be02) + * update dependency sharp to v0.29.3 (46162537) +* lint (c9592e17) +* icon alignment issue that was also bugging me :shipit: (37a71291) +* #10143, add back ace editor searchbox (42caef7f) +* #10095, add login info to email interstitial (5eb02f59) +* #10121, fix error messages in user creation (8ad64ec0) +* #10115, fix chat autocomplete hook (69a7634a) +* notice links in subfolder installs (cc27a324) +* move authenticateRequest before interstitial and maintenance mode middlewares, allowed plugins to disable authentication on certain routes (d89fc44c) +* retry incrObjtFieldBy (07232a8c) +* use component instead of class name (b179f0fc) +* assertion check to ensure messages are in the room when editing/deleting, etc (d95b4ee2) +* rename language key for incorrect parameter type error (aeb43b9b) +* deprecate chats.leave (16ba16cd) +* re-allow kicking of the other party in a 1-to-1 chat (6294beea) +* isFinite check for room assertion, more test migrating (140f9d24) +* #10096, don't display preview for links if hostname doesnt match (a115b771) +* only render preview on topic page (a9f81215) +* don't crash server if analytics fails to save (8fb89d76) +* upgrade script to handle strings as well (e332acf3) +* #10090, remove left over necro posts messages (fdaf8274) +* #10086, if pidfile is empty delete (59214ca2) +* utils method (91e21ecc) +* prevent crash if groups is not valid json (cc0a087a) +* upgrade script (968d4616) +* delete left over nav items after removal of some (737e1c19) +* targetBlank/dropdown not getting cleared (10e890e4) +* prettier bulk method usage (3b0c42a5) +* bug where groupChat property was not set for chat rooms (42959df0) +* #9484 show user history only to admins and gmods (bc7707aa) +* no need to pass 'img' to teaser tags stripping as images are already converted to alt text (45c9dde3) +* #10069, don't modify fields array (a8afdc60) +* #10068, update data-index values after sort (236d4e80) +* #10068, baseIndex should be read before sort update fix off by one error (9af23351) +* tests (45d8157f) +* #10067, count posts instead of incr/decr (830166d1) +* handle start=0 stop=0 for topics.getTopicPosts (906dc567) +* wrong usage of is ACP (4f423610) +* don't throw on invalid session, just return early so socket is not opened. (fa01801f) +* #10052, dont use spaces in tag class name (a2953583) +* don't crash if tid is falsy (1cdb0b1e) +* regression from https://github.com/NodeBB/NodeBB/commit/27c05448e1532ce466658513af0e2ff65576b410 (50063fe2) +* keep query params on /me redirects (941ecaf8) +* 403/400/500 page not generating csrf_token (65c55041) +* error pages dont have config.csrf_token (3dd681eb) +* quote button staying on screen on slow computers (d378bf4c) +* removed unused var (e0caa5e0) +* #10027, properly auto confirm first user (2473d5d8) +* cli password reset (71e34be5) +* #10023, bump persona (a10ea03c) +* #10020, /api/post/upload returns v3 style response (242f8e95) +* consolidate plugin reset logic (449366ca) +* search crash (9245f71a) +* #10010, handle reverse sorting for topic events (d5bfd512) +* #10006, dont allow new rooms or adding to a room if target is blocked (047f031d) + +##### Other Changes + +* remove unused (afc75ba4) +* fix (682f6089) +* missing ; (20e76699) +* remove unused (cbf198fe) +* remove unused (a20abdce) +* fix (0a6eeb93) +* remove unused utils (82b72f7e) +* fix (fa1ac04d) + +##### Performance Improvements + +* only add middleware if relativePath is set (41db9436) +* don't load all set members to get count (0414356c) +* create user tooltips on demand (23147235) +* closes #9994, bulk methods for settings (d412ba44) +* remove createUserTooltips (facc10e4) + +##### Refactors + +* remove unused language key (5278b11a) +* put message api calls behind `/messages` prefix, #10097 (aaa6f752) +* rewrite messaging tests to use API v3 calls when available, rewrote a bunch of tests to async..await (c990211c) +* only write analytics data on nbb that has runJobs=true (35fea58a) +* remove knonwOwner param (42781467) +* remove console.log (a7644466) +* remove unused validator (4e1d4217) +* only pass qs (b8896d13) +* change error message (1e60ae87) +* use hasOwnProperty (9f1b8a3b) +* remove object.create (dbba0c39) +* remove unused args (3d3ae82f) +* remove comment (633061f4) +* use .map to return promises (d4f3ee67) +* async (cfd47448) +* async (f0394c49) +* use async (8491f67d) +* remove unused (e3c0f0be) +* always returns array (9627fa90) +* use async/await (f4aa249d) +* change var name (36eb47d9) +* alerts (621c142f) +* use alerts.error/success (cba78aee) +* use lang keys, fix typo (dd02c49f) +* use alerts module (1980feed) +* dont need local function (2bb0828a) +* DRY (324262cb) +* use routePrefixMap instead of routeRegexpMap, +tests (#10035) (6c07433d) +* use hasOwnProprety (daf385cd) +* tab rules (fb363957) +* change category feed so it is not updated on every reply (697dd376) +* dont expost entire res._locals to client side (e368feef) +* shorter meta.settings.get (190532b3) +* clone settings before returning (51cbeccb) +* remove another async.series (27c05448) +* remove tabs after declaration (4359e5c9) +* update dates (6d38eab6) +* clone before returning (f729e519) +* add filter:topic.getPosts (258f368e) +* setObjectBulk to match sortedSetAddBulk (8379c11b) +* remove more async.eachSeries/mapSeries (d1964095) +* make a single call to set widgets per template (8750ee04) +* remove jshint, remove async.parallel (80f9963b) + +##### Code Style Changes + +* eslint (d960f601) + +##### Tests + +* fix util test (6c1e184c) +* update tag tests, fix linux symlink error (9b75b1ed) +* fix restore test (0d9ec9d3) +* fix user tests calling deprecated socket methods (e747998c) +* add email interstitial tests (1264dcb5) +* don't use csrf_token for get,head, options (5e08f7e6) +* fix tests (0e273ab2) +* remove old test (68fd0875) +* make it async (5c3d5f1f) +* fix (26f00ffb) +* one more getTopicPosts test (f8f0a83b) +* utils.params (7b99dc46) +* regular user shouldn't see admin:privileges (cd2040ac) +* add missing tests (58431221) +* add api token tests (7434cbf6) +* add missing tests (404a8774) +* upgrade.runParticular (2bdb4906) +* add missing acp root category test (c17ec996) +* cache dump test (217aae4c) +* add missing controllers (bc120dba) +* fix tpl name (edf7c647) +* add mising email.test tpls (6d186ff1) +* debug routes in dev (754cdab8) +* add digest route test (1280d9ae) +* digest (f11bc33a) +* fix function name (0e725125) +* submitUsage (d375dcb8) +* remove log (d7c32ccb) +* middleware/expose.js (29b3587d) +* up mongodb version (500cad78) +* mainPost removed from inf scroll (aac0792a) + +#### v1.18.6 (2021-11-10) + +##### Chores + +* make it a link (a0f0dd02) +* update badges, remove david doesnt work (dad31c8e) +* up themes (b1d6c9ba) +* up mentions (98b98a11) +* up mentions (3e4d477e) +* fix type.yaml example and summary (591424ce) +* incrementing version number - v1.18.5 (1e418f5b) +* update changelog for v1.18.5 (82eda23a) +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* **deps:** + * update dependency eslint-plugin-import to v2.25.3 (45a0895c) + * update commitlint monorepo to v14 (dc78125a) + * update dependency jsdom to v18.0.1 (7d468e72) +* **i18n:** + * fallback strings for new resources: nodebb.admin-development-info (91676c6c) + * fallback strings for new resources: nodebb.admin-settings-navigation (3727e39f) + * fallback strings for new resources: nodebb.admin-settings-post (46789910) + +##### New Features + +* #9992, hooks.one (96f13e4f) +* use auto-generated meta and link tags in ACP, closes #9991 (1719bff8) +* add node 16 (#9847) (d27c9696) +* #9967, allow dropdowns in navigation (2e623dd2) +* show number of events per type in acp (b916e42f) +* show posts previews if enabled on mouse over (8c670316) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-slick to v1.4.16 (#9990) (cf30876f) + * update dependency nodebb-plugin-composer-default to v7.0.14 (#9989) (ef02bdc4) + * update dependency nodebb-plugin-composer-default to v7.0.13 (#9988) (654c8e61) + * update dependency nodebb-plugin-mentions to v3.0.2 (1a22b0ec) + * update dependency socket.io to v4.3.2 (98ebc4d9) + * update dependency html-to-text to v8.1.0 (c1f5889f) + * update dependency nodebb-plugin-dbsearch to v5.1.0 (#9983) (4f1ee1fc) + * update dependency nodebb-plugin-composer-default to v7.0.12 (7fee0e32) + * update dependency nodebb-plugin-mentions to v3.0.1 (#9979) (8224a2a9) + * update dependency nodebb-plugin-spam-be-gone to v0.7.11 (91293ecc) + * update dependency nodebb-theme-lavender to v5.3.1 (f7295aaa) + * update dependency nodebb-plugin-mentions to v3 (#9966) (0888aae6) + * update dependency mongodb to v4.1.4 (#9968) (f5993731) + * update dependency nodebb-theme-persona to v11.2.21 (#9969) (8fac8d61) + * update dependency nodebb-plugin-mentions to v2.15.1 (0f8a68c0) + * update dependency validator to v13.7.0 (81c8d70c) + * update dependency autoprefixer to v10.4.0 (755860f1) +* ability to enumerate email via updateProfile method (c1ac2912) +* accidentally not clearing email when said email is confirmed for a different uid (b912a564) +* #9976 (28dd31a8) +* #9976, handle array or object (9bfb6c72) +* dont show previews on mobile (41e02400) +* category load more btn visibility (05468526) +* #9973, ignore if assigning to same parent (66e7cdac) +* #9972 (67cb2491) +* remove tooltip on ajaxify (f728abda) +* don't highlight external nav items (8a88295d) +* don't use # for previews (5a0efd2d) +* events for just topic with main post (3d611ab7) +* #9954, get next post timestamp (89399c0e) +* topic events not rendered in infinitescroll (a7f235db) +* broken post uploads due to 6a976a9db0340e34577961ce8d5d9479c78f7856 (485b6ced) +* #9950, rename account export routes to remove `uid/` prefix (0ee85d5a) +* double invocation of authenticateRequest (60352eca) +* #9945, call authenticateRequest middleware for mount points in /api (6a976a9d) +* hooks is sometimes undefined (74aa12c9) +* typo in flags (bc4b19b4) +* remove unused code (50b2ebf8) +* handle undefined data.query (8f08d9ca) + +##### Performance Improvements + +* only load posts once (9fbb3b11) + +##### Refactors + +* shorter require (41c3eb82) +* deprecate app.alert functions user alerts module directly (0428912c) +* deprecate app.logout (8b4510cc) +* simpler rejoin (61903448) +* deprecate app.openChat/newChat (f352be63) +* move search functions from app.js to search module (1a9b1598) +* move session messages (666fe209) +* move warnings/messages out of app.js (51855254) +* remove jshint (0a7ff208) +* cleanup info, better cpu usage % (4b738c8c) +* acp only uses 3 modes and a single theme (890bf03f) +* display errors from category drag/drop (c1cc35a9) +* use utils.debounce (e8c17fee) + +##### Tests + +* add another assert for random failing test (ae64b9f4) +* socket.emit doesnt exist in tests (61d1f565) +* show body when test fails (e3f5b706) +* lint (3d2398ac) +* fix tpl test (30cce142) +* dbsearch no longer has staticDir (3386893b) +* increase timeout (4ac9270a) +* fix account export test routes (10bb8cf7) +* add test aliases.buildTargets (62ac9a8b) +* empty query params for search (bda5d144) + +#### v1.18.5 (2021-10-27) + +##### Breaking Changes + +* disable javascript in custom less tab (719cfc0d) + +##### Chores + +* remove .opacity() mixin as it is supported cross-browser (28efcb59) +* up themes (463b2076) +* up persona (1438f409) +* incrementing version number - v1.18.4 (945c2b0b) +* update changelog for v1.18.4 (7cbcb521) +* **deps:** + * update dependency lint-staged to v11.2.6 (8d4bb8bb) + * update dependency lint-staged to v11.2.5 (0728a994) + * update dependency lint-staged to v11.2.4 (f76a7882) + * update dependency husky to v7.0.4 (2a3e13f3) + * update dependency mocha to v9.1.3 (4784f016) + * update dependency eslint-plugin-import to v2.25.2 (3c3f45d9) + * update dependency jsdom to v18 (4b8dcd4c) + * update dependency eslint-plugin-import to v2.25.1 (7c4aebbd) + * update dependency lint-staged to v11.2.3 (288b5456) + * update dependency lint-staged to v11.2.2 (f96c8c4d) + * update dependency @commitlint/cli to v13.2.1 (52c38a1d) + * update dependency lint-staged to v11.2.1 (022e8df0) + * update dependency eslint-config-nodebb to v0.0.3 (4b92df82) +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-email, nodebb.error (9b68dc37) + * fallback strings for new resources: nodebb.admin-dashboard (ff962b5d) + * fallback strings for new resources: nodebb.admin-dashboard, nodebb.admin-menu (abe59131) + * fallback strings for new resources: nodebb.admin-manage-digest, nodebb.admin-settings-user, nodebb.user (2bed40be) + +##### Documentation Changes + +* update verbiage re: login API route (94c4f87b) + +##### New Features + +* new ACP option `emailPrompt` ... which allows administrators to disable the client-side prompt to encourage users to enter or confirm their email addresses (80ea12c1) +* show popular searches (f4cf482a) +* new plugin hook to allow plugins to reject email address on new registration or email change (6b4f35c2) +* utilities login API route now starts an actual login session, if requested (806a1e50) +* add method name to deprecation message (b91ae088) +* quote tooltip (66fca4e0) +* additional quality options for jpeg uploads, added quality and compression settings for png uploads (d22b076b) +* #8053, biweekly digest option (f7967bdf) +* core submit button dropdown (605a5381) +* added failing i18n tests (35af7634) +* confirm before deleting all events (#9875) (56d05b4e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v12.1.7 (#9944) (bf20965f) + * update dependency nodebb-theme-persona to v11.2.19 (#9943) (bcf85fcf) + * update dependency nodebb-rewards-essentials to v0.2.0 (7c2ecb12) + * update dependency nodebb-theme-vanilla to v12.1.6 (49b8b983) + * update dependency nodebb-theme-persona to v11.2.18 (ed0adf2c) + * update dependency nodebb-theme-persona to v11.2.17 (78661079) + * update dependency postcss to v8.3.11 (a5f4e206) + * update dependency nodebb-theme-vanilla to v12.1.5 (d74a6bd3) + * update dependency sharp to v0.29.2 (8b8fe393) + * update dependency postcss to v8.3.10 (b18a24e9) + * update dependency nodebb-theme-persona to v11.2.15 (f3c8d7da) + * update dependency nodebb-theme-persona to v11.2.14 (#9919) (5e08e67b) + * update dependency socket.io-client to v4.3.2 (deba3e27) + * update dependency socket.io to v4.3.1 (e1554f61) + * update socket.io packages (ce5a0a21) + * update dependency nodebb-plugin-spam-be-gone to v0.7.10 (600a8720) + * update dependency nodebb-plugin-composer-default to v7.0.10 (b0128f85) + * update dependency nodebb-plugin-markdown to v8.14.4 (f8f35d7e) + * update dependency nodebb-plugin-composer-default to v7.0.9 (ed874662) + * update dependency nodebb-theme-persona to v11.2.13 (1dba75e9) + * update dependency ioredis to v4.28.0 (4ff5452d) + * update dependency nodebb-theme-persona to v11.2.12 (fe9f82f6) + * update dependency ioredis to v4.27.11 (6d2e0aa9) + * update dependency nodebb-plugin-mentions to v2.14.1 (820f8cdf) + * update dependency jquery-ui to v1.13.0 (b0eb2aed) +* remove loading="lazy", fixes inf. scroll loaded images (01572785) +* windows tests (25ebbd65) +* undefined query showing in searches (6cfaea06) +* don't repeat search if on same page (89f5e06b) +* api session revoke test (0926ae6e) +* crash (da64810a) +* add missing translation (eb075c73) +* move record to controller (ee8e0480) +* profile edit fields showing translated values (63572c23) +* #9934, fix translator test (8d316d18) +* token verify (04dab1d5) +* guard against prototype pollution (1783f918) +* translator path traversal (c8b2fc46) +* there is no alltime digest, fixes translation in test email (e62948f7) +* clicking outside postContainer should close tooltip (47df62e7) +* minification regression (998b9e79) +* tooltip (fec7ebed) +* biweekly digest #8053 (9cb4de50) +* restore plugin upgrade checking logic (44687394) +* fallbacks for new langauge key (ed4ebd22) +* #9917, show topics as unread for guests (4333d217) +* clarify site settings urls vs config.json url (#9912) (6436aa65) +* clarify SMTP enable toggle (#9911) (09f198fc) +* don't overwrite reloadRequired with false (9e0ce027) +* delete translations in admin/general folder (since general was removed and relocated elsewhere) (b460e590) +* pushed missing key to tx and pulled fallbacks (21b61082) +* adding missing language namespace "top" (0f9b0b78) +* extra debug log (bd893cda) +* have renovate add `dependencies` label to its PRs (eddb9868) +* no global bootbox (#9879) (227456fb) +* #9872 update app badge with notification count if applicable (3e69bcdf) +* better nomenclature (c1149d04) +* html attributes (#9877) (3acaac4c) +* escape thumbs, allow robots meta tag (4f9717fb) +* missing translations (#9876) (7935bd9e) + +##### Performance Improvements + +* dont fs.open if plugin doesnt have language namespace (#9893) (1feb111a) + +##### Refactors + +* wider value field (c428ba80) +* dont save partial searches (c7e078d4) +* use search api for topic search (64192731) +* slowdown quick search (19ee7174) +* typo (a5287906) +* add callback to loadNotifications (f02fba29) +* simplified utilities API > login rout (506c34a8) +* log error as well (1d62bd6d) +* catch errors from buildHeader in error handler :fire: (73a9ca09) +* add missing helpers.tryRoute (d4da9840) +* shorter middleware (ee0282f5) +* meta/minifier use async/await (b2429ef0) +* remove unused var (90b81262) +* catch errors from digest (8e319a9b) +* less.render returns promise (14bc83a8) +* less.render already returns promise (6da32392) +* prompt.get already returns promise (c70eaa0a) +* no need for async/callbacks (057d1d58) +* no more :cow: (38756a0c) +* allow array of uids for blocks.is/list (a9bc6a09) +* show full url on error log (8e6bd7e9) +* var to const and let (#9885) (b0a24d6d) +* remove unused code (997fb2b3) +* remove unused colorpicker (543d8521) + +##### Reverts + +* lazy load (3d1cf168) + +##### Tests + +* fix broken openapi3 schema (7ef5214e) +* restore commented-out i18n test (fa1afbcf) +* moved topic event and topic thumb tests to subfolder for better organisation (154ffea0) +* remove escape (6c25b9db) +* possible fix to timeout (63109c07) +* increase timeout (8654a996) + +#### v1.18.4 (2021-10-06) + +##### Chores + +* up persona (f4e62fb1) +* incrementing version number - v1.18.3 (57358743) +* update changelog for v1.18.3 (f066ddb8) +* **deps:** + * update dependency lint-staged to v11.2.0 (840b49b9) + * update commitlint monorepo to v13.2.0 (aa370310) + * update dependency mocha to v9.1.2 (6385b88e) + +##### Documentation Changes + +* added link to unofficial IRC channel (c5a48b44) + +##### New Features + +* use unread icon in mobile (27e53b42) +* cli user management commands (#9848) (d1ff3d62) +* #9855, allow uid for post queue notifications (5aea6c6a) +* add userData to static:user.delete (f24b630e) +* closes #9845, sort by views (6399b428) +* duplicate `requireEmailAddress` settings block to Settings > User (a9645475) +* mongodb driver 4.x (#9832) (07adb49e) +* a useless hover effect because raisins (1a61ffc5) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.1.3 (b4fc2773) + * update dependency postcss to v8.3.9 (9455e5b2) + * update dependency autoprefixer to v10.3.7 (78895d05) + * update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1) + * update dependency ioredis to v4.27.10 (4694382c) + * update dependency nodebb-theme-persona to v11.2.9 (346e0890) + * update dependency autoprefixer to v10.3.6 (058fdca4) + * update dependency yargs to v17.2.1 (d50dd801) + * update dependency postcss to v8.3.8 (193c92e3) + * update dependency passport to ^0.5.0 (daea8a86) + * update dependency connect-pg-simple to v7 (#9785) (054f3da6) + * update dependency yargs to v17.2.0 (c78309b5) +* #9866, fire vote hooks after reputation changes (#9867) (8ad9a103) +* #9865, don't display register messages after login (96f5312d) +* dont show decimails on auto approva minutes (a0df3890) +* #9864 (e954ca10) +* delete old topic tags (a70c69fa) +* switch inf. scroll to xhr (#9854) (4404e819) +* #9828, max-width (40915105) +* handle undefined returnTo on registerAbort (ac1b9692) +* lint (ff850b24) +* psql tests (123354ca) +* psql test (f8d4ec6c) +* possible test fix for subfolder redirect (3605ac81) +* missing relative path in test (4eacfef0) +* #9834, missing null email check on new registrations, added tests (58e0a366) +* crossorigin not showing up on manifest link tag (0faa4937) +* #9827, fix reward duplication (89af00d1) + +##### Performance Improvements + +* convert promise.all to single query (#9851) (ea04aede) + +##### Refactors + +* use utils.debounce (a7668a7f) +* remove async.waterfall from remaining upgrade scripts (6b34065f) + +##### Tests + +* dashboard (4f8647a5) +* add tests for admin privileges (9fe9ab08) +* add missing tests (34798325) +* remove debug log (8cb47548) +* no need to create fake interstitial as NodeBB comes with some by default (cb69934a) + +#### v1.18.3 (2021-09-22) + +##### Chores + +* **deps:** update docker/build-push-action action to v2.7.0 (ee027719) +* incrementing version number - v1.18.2 (0a56158b) +* update changelog for v1.18.2 (27e9282a) + +##### New Features + +* move filter:topic.post hook to top of method (f194809f) +* add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) (66eaae44) +* allow removing multiple items from list (397835a0) +* add uid to filter:user.saveSettings (7f48edc0) +* headers for global privs #9717 (#9762) (84ff1152) +* add ACP option to require email address on new registration (006fc700) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v7.0.7 (98554294) + * update dependency postcss to v8.3.7 (6ebe707c) + * update dependency autoprefixer to v10.3.5 (25687441) + * update dependency nodebb-plugin-composer-default to v7.0.6 (#9815) (c18678ce) + * update dependency nodebb-theme-persona to v11.2.8 (#9816) (39d73d0c) + * update dependency connect-mongo to v4.6.0 (8e886c85) + * update dependency nodebb-plugin-composer-default to v7.0.4 (8af54255) + * update dependency mongodb to v3.7.1 (9049dcd7) + * update dependency nodebb-theme-persona to v11.2.6 (506035b5) + * update dependency nodebb-theme-slick to v1.4.13 (787306a6) + * update dependency nodebb-plugin-composer-default to v7.0.3 (732b59c2) +* fixed element shifting in ACP menu that's been bothering me for 5-ish years (31975a62) +* #9822, use correct username/pwd (30f38771) +* remove unused translator (2add84a5) +* ban info test (07859f7e) +* #9819, show same time info for ban (9f0e55ad) +* show local time for ban (7a2f0ae1) +* crash (c437b336) +* remove caller from payload after hooks is done (15f9aaa6) +* bad uid reference (ce8ea6ea) +* update Topics.post and Topics.reply so that plugins can modify uid (or redirect a reply to a different topic) (7777812e) +* #9818, fix totalTime calculation (c4fc7bf9) +* missing microdata in category data (1ed62aa8) +* #9812, add topics:schedule (c0a52924) +* for subfolders (31a6d4b3) +* req.path doesn't have full url (0236ea86) +* escape moderation note before adding to dom (75ebe786) +* #9811, send bodyClass on 403 (40c9fca9) +* also launch docker workflow on release branches (944a7985) +* xss on flags page via ban reason (ba3582b8) +* up timeout for psql tests (896ff215) +* redis batch (0c4b875e) +* redis processing batch+1 items every iteration (3261edcc) +* #9560, don't save post diffs if content didn't change (8b576a37) +* #9790, get baseIndex on update for infinitescroll (6a55c027) +* #9790, fix sorting of more than one page of pinned topics (2657804c) +* privileges added by plugins (#9802) (3ecbb624) +* #9800, don't send all welcome test emails to test@example.org @julianlam (71ed50b9) +* docker - remove sha tag (b06e8dba) +* Return QEMU back, remove platforms definition (52eace4b) +* Docker workflow tweaks (#9792) (e7f4cde4) +* browsers autocompleting smtp fields when they should not (34afb747) + +##### Refactors + +* no regex (18252fb9) +* remove async.waterfall (58ac55c1) +* remove async.waterfall (222dccaf) +* remove async.waterfall (f35a0f43) +* allow plugins to replace og:image, or specify additional og:image (819917da) + +##### Code Style Changes + +* give me an A! :100: (0b4d7d1f) + +#### v1.18.2 (2021-09-08) + +##### Chores + +* **deps:** update commitlint monorepo to v13 (87ba768f) +* incrementing version number - v1.18.1 (f8f80e4f) +* update changelog for v1.18.1 (0713475d) + +##### New Features + +* a slightly less ugly rewards panel (bf0c02a7) + +##### Bug Fixes + +* dashboard graph controls (a7855c4c) +* #9767 ACP change group icon fix (580a016b) +* #9781 (#9782) (0ce4b87d) +* replace logic in isPrivilegedOrSelfAndPasswordMatch to use privileges.users.canEdit (856ba78a) +* handle missing uid in deprecated socket call (cdaea611) +* use privileges.users.canEdit for image upload priv check (e33e046f) +* errors from registerComplete (a48bbdbf) +* simplify logic for fullname and email blanking in user retrieval (getUserDataByUserSlug) (60de0844) +* lint (1e2bda13) +* manifest error (488f0978) +* #9772, regression from https://github.com/NodeBB/NodeBB/commit/70a04bc10577e90e28d66a647d38cafc3307a285 (72710b80) +* push back some deprecations, remove deprecated stuff scheduled for v1.18.0 (dd4e66e2) +* deprecate userData.showHidden as it is functionally equivalent to userData.canEdit (4ac701d7) +* focus on save button on plugin activation (46e5e17d) +* #9773, fire hooks properly for priv changes (#9774) (6869920e) +* **deps:** + * update dependency sharp to v0.29.1 (ac6cd02f) + * update dependency nodebb-plugin-dbsearch to v5.0.3 (338f90fc) + * update dependency nodebb-theme-vanilla to v12.1.3 (0b3ea5ad) + * update dependency nodebb-theme-persona to v11.2.5 (57e54d55) + +##### Refactors + +* deprecate picture update socket call, new API routes for picture update (0a41741b) + +##### Tests + +* added test for external image via new change picture API (8cbad61e) + +#### v1.18.1 (2021-09-03) + +##### Chores + +* found some hooks that don't play well docgen (ae793b4a) +* incrementing version number - v1.18.0 (1e436ae7) +* update changelog for v1.18.0 (2fd9c095) +* **deps:** update dependency mocha to v9.1.1 (64bac178) + +##### New Features + +* create folders in ACP uploads #9638 (#9750) (3df79683) +* column based view on wide priv. tables (#9699) (61f02f17) +* als (#9749) (e59d3575) +* add quick reply key (e9314842) +* add new lang key for no best posts (6e73d8c9) + +##### Bug Fixes + +* **deps:** + * update dependency autoprefixer to v10.3.4 (67b932f4) + * update dependency nodebb-theme-persona to v11.2.4 (fe18e100) + * update dependency mongodb to v3.7.0 (31a35d7f) + * update socket.io packages to v4.2.0 (f2028d70) + * update dependency ioredis to v4.27.9 (6052eb16) + * update dependency mongodb to v3.6.12 (#9761) (5fa982c1) + * update dependency nodebb-plugin-composer-default to v7.0.2 (33d51201) + * update dependency nodebb-theme-slick to v1.4.12 (1b416d7e) + * update dependency nodebb-theme-slick to v1.4.11 (65b32fa1) + * update dependency nodebb-theme-persona to v11.2.3 (6ce321e4) + * update dependency autoprefixer to v10.3.3 (91ba7cdf) + * update dependency nodebb-theme-slick to v1.4.9 (d80b378f) + * update dependency jquery-deserialize to v2.0.0 (#9744) (7f9451ce) +* determine indeterminate checkboxes (760ea9df) +* move app.alert back into the conditionals (ca9bae3a) +* only show email confirmation warning toast on pages that it applies (1bd1cc74) +* updated email confirm warning to be more positive (2d1380dd) +* automated tests are a good thing to have (6afeac37) + +##### Refactors + +* consistent jquery element var naming (fc0e655e) +* var to const (1272da65) + +#### v1.18.0 (2021-08-25) + +##### Breaking Changes + +* **emails:** restore ability for admins to edit a user's email address [breaking] (c4e3362b) +* #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking] (d1959a25) +* made TopicList.onTopicsLoaded private [breaking] (07f25d8c) +* return proper API-style response if exception caught by error handler on v3 routes [breaking] (a54a3ee1) + +##### Chores + +* **deps:** + * update dependency husky to v7.0.2 (324c7d48) + * update dependency eslint-plugin-import to v2.24.2 (9a34fe18) + * update dependency eslint-config-nodebb to v0.0.2 (cd85a55d) + * update dependency mocha to v9.1.0 (c5a42273) + * update dependency eslint-plugin-import to v2.24.1 (daca09d4) + * update dependency @apidevtools/swagger-parser to v10.0.3 (ffdf61b8) + * update dependency jsdom to v17 (#9700) (41855375) + * update dependency eslint-plugin-import to v2.24.0 (23dafa20) + * update dependency lint-staged to v11.1.2 (d47bdde2) + * update dependency jsdom to v16.7.0 (9db28b4b) + * update dependency eslint to v7.32.0 (03a98f4d) + * update dependency mocha to v9.0.3 (40384fcb) + * update dependency lint-staged to v11.1.1 (7588aae1) + * update dependency lint-staged to v11.1.0 (cb5fe271) + * update dependency mocha to v9 (f43291f5) + * update dependency husky to v7 (702290c4) + * update dependency eslint to v7.31.0 (f5a53b7f) + * update dependency lint-staged to v11.0.1 (02101315) +* up markdown/composer-default, fixes: #9708 (b74eefac) +* incrementing version number - v1.17.2 (46be2046) +* update changelog for v1.17.2 (5c9c0605) + +##### Documentation Changes + +* some hook deprecation notices (6bc090f8) + +##### New Features + +* add confirmation modal to topic event deletion (e803737a) +* allow changing default search in (794bf01b) +* #9705, use radio buttons for flag reasons (382a4c27) +* Client-side hooks - replace window.trigger (#9679) (342503e0) +* closes #9684, allow event deletion (358ad740) +* replace eslint configs on server and client side to inherit rules from eslint-config-nodebb (f653a6ff) +* re-add FontAwesome font for compatibility (a370c26f) +* update to FontAwesome 5.15, resolve #6976 (41762e66) +* removed registerAndLoginUserCallback local helper, added handling if a bad interstitial doesn't go away nor throw errors (70a04bc1) +* updated email confirmation alert to more closely reflect email usage, remembering dismissal (bbbacd86) +* allow requirejs modules to be awaited (58adb762) +* show instructional modal after email change request (0e05cbe1) +* return back to profile after editing email (324a12b6) +* allow registration interstitial abort to also follow returnTo (b3c91641) +* plumb current session id into email removal/confirmation flow, so all other sessions are revoked except for the current session (96398faa) +* allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg) (b0a4a1d3) +* return generic 404 on invalid confirm code (f53fc1ad) +* invites no longer require email (a917210c) +* show different registration intersitial lead text on new account vs. existing (74aaa0a9) +* removal of emailExists socket listener (12b2a979) +* add loggedin/guest class to body (04b1f702) +* convert _fireStaticHook to async function (auto-refactor by vscode) (21359eab) +* store topic tags in topic hash (#9656) (4a56388e) +* new hook `action:topics.loading` (in the same format as `action:posts.loading`) (e0db904b) +* schedule deprecation for `action:category.loaded` and `action:category.loading`. Use `action:topics.loaded/ing` instead (8ae4c300) +* internationalize API error messages (7036c375) +* #9651, change category desc to multiline (5fd190f7) +* **emails:** + * pass req in to filter:registration.interstitial (afd2d8da) + * display current email in interstitial form (f5291999) + * upgrade script for includeUnverifiedEmails (50517020) + * +includeUnverifiedEmails ACP setting (be97aa6f) + +##### Bug Fixes + +* lint (55693ec1) +* topic event deletion (1ee92c28) +* pluginPaths (0743554d) +* #9730, show warning if plugin is active but not installed (13878e9f) +* #9729, insert new posts after topic events (60bf5643) +* #9719, only apply to non https (c354cde3) +* #9727, addHandlers after hooks (77c3085a) +* allow smaller than 5mins for admin relogin duration (a288f51f) +* taskbar icon not pushed via composer/persona (3a81c8fd) +* #9698, pass along query params in redirect (9de64bf5) +* lint (8bf2896d) +* remove unnecessary quote (093ac1c0) +* parseInt tids (162ebacf) +* #9681, update posts in queue if target tid is merged (0c816429) +* email update interstitial to not error on empty email field (on new registration) (4a521ea2) +* updated ACP > Manage > Users to handle users with no email address (824a72b2) +* allowed reset and reset_notify emails to go out to unconfirmed email addresses (d5b5b7d5) +* bug where confirmation email was sent to the old email address, not the new one (414d733d) +* email validation flow, so that it actually works, fixed event logging bug, new email verification template (3bcd1f14) +* accidental early return in confirmByCode, tests, race condition (caf89687) +* test :shipit: (2c06ac9a) +* failing test from d1959a2 (f71f2951) +* #9668, add raw info to psql database page (6c47a060) +* use hooks module instead of window trigger (acb11cc7) +* tests (0960a814) +* translate language keys if passed in to formatApiResponse (415416d2) +* lint (ff78969c) +* tests (55d7e558) +* keep query string on redirects (47c8c692) +* **deps:** + * bump persona (12e7f8d5) + * update dependency nodebb-theme-persona to v11.2.1 (#9734) (2e1562b8) + * update dependency nodebb-theme-vanilla to v12.1.2 (#9735) (4bd66a7c) + * update dependency nodebb-theme-slick to v1.4.8 (#9732) (096c5a58) + * update dependency autoprefixer to v10.3.2 (d44e3a8e) + * update dependency nodebb-theme-persona to v11.2.0 (116f9cb5) + * update dependency ioredis to v4.27.8 (8461791a) + * update dependency nodebb-theme-persona to v11.1.3 (ec103ce8) + * update dependency sharp to v0.29.0 (626d5565) + * update dependency connect-mongo to v4.5.0 (ce6039f2) + * update dependency nodebb-theme-vanilla to v12.1.1 (de83f82e) + * update dependency nodebb-theme-persona to v11.1.2 (ee10ae04) + * update dependency yargs to v17.1.1 (38e38580) + * update dependency nodebb-theme-persona to v11.1.1 (47941418) + * update dependency mongodb to v3.6.11 (a0fd0268) + * update dependency yargs to v17.1.0 (181c20ba) + * update dependency ioredis to v4.27.7 (4c9d6b62) + * update theme versions for #9607 (3b34571d) + * update dependency postcss to v8.3.6 (ebdba8f1) + * update dependency html-to-text to v8 (3f24746c) + * update dependency yargs to v17 (1b6b1fe5) + * bump composer-default to v7 (51458c75) + * update dependency autoprefixer to v10.3.1 (0d3f74b7) + * update dependency nodebb-plugin-markdown to v8.14.2 (b6a84712) + * update dependency autoprefixer to v10.3.0 (72c9650f) + * update socket.io packages to v4.1.3 (f14df0d4) + * update dependency nodebb-plugin-composer-default to v6.5.34 (31dae04f) + * update dependency nodebb-theme-persona to v11.0.26 (ae14016e) + * update dependency nodebb-plugin-markdown to v8.14.1 (8b41684e) +* **emails:** + * broken test for api/user/email/:email (81611ae1) + * dont allow retrieving user data if showemail is false @julianlam (7d115c8e) + * registration tests, email no longer passed-in, API tests (confirm email for test accounts) (6694bdd5) + * don't automatically associate email during user creation if passed in at registration (e726048e) + * remove debug log (b4b65ecd) + * broken test due to sticky registration interstitial (ab9b6716) + +##### Refactors + +* remove promisify from redis, ioredis supports promises nati… (#9728) (6659e95a) +* get rid of async.waterfall/each (8fb53252) +* remove unused async (42dbd402) +* remove waterfall (6b6a7d4b) +* move interstitials into its own file in `src/user/` (e95df2f0) +* added user.email.remove method, updated email interstitial to handle email removal (ccf004f1) +* client-side to use flag notes API (ef4e74bf) +* fix wording (6ed7e937) +* **email:** validation checking methods, +tests fix (087e6020) +* **emails:** + * more work in update email interstitial, interstitial skipping, email change on confirmation, deprecation of requireEmailConfirmation (69c96dd2) + * interstitial for adding/updating email (f365bc46) + * remove email validation on client and server side (7c1d1c77) + +##### Code Style Changes + +* eslint (d2492ef4) +* lint fix (340ccb24) +* lint (52229172) + +##### Tests + +* **emails:** fixing broken tests introduced by e5ff68acd (a3a3b10f) + +#### v1.17.2 (2021-07-07) + +##### Chores + +* **deps:** + * update coverallsapp/github-action action to v1.1.3 (99c23037) + * update dependency eslint to v7.30.0 (725e70e9) + * update dependency coveralls to v3.1.1 (edefac96) + * update dependency eslint to v7.29.0 (2700f717) + * update dependency eslint to v7.28.0 (fac0bcbd) + * update dependency smtp-server to v3.9.0 (86723292) + * update dependency eslint-plugin-import to v2.23.4 (886d65f6) + * update dependency eslint-plugin-import to v2.23.3 (c3b0e2fa) +* lint (2b42e7ed) +* fix indentation (d07229aa) +* up rewards (ca9ca876) +* incrementing version number - v1.17.1 (0aad1312) +* update changelog for v1.17.1 (1e6ed0ad) + +##### Documentation Changes + +* add undoTimeout (2db77b0c) + +##### New Features + +* add merge/fork hooks (c9348efb) +* #9628, allow setting custom icon names (2fe30b6f) +* #9617 update fa link (52596902) +* add bodyClass to 500 page (46a454f1) +* clear reset tokens on successful login (f9728aff) +* add filter:categories.categorySearch (be19f27f) +* allow nested properties on category page (#9601) (cc0cf99f) +* show ip on acp manage users (8ea58432) +* add undoTimeout to moving posts as well #9599 (e588948f) +* make undoTimeout configurable, closes #9599 (05cc7ccb) +* introduce boolean res.locals flag to bypass session reroll (used by session-sharing) (816856b0) +* allow modifying default category privileges (57e46e41) +* add filter:notifications.create (ac7b093f) +* pass req.query to getUnreadData (3d5fef6e) +* added GET user route for api v3 (d2960aeb) + +##### Bug Fixes + +* **docs:** #9648 (e03782f2) +* **deps:** + * update dependency mongodb to v3.6.10 (f17625fb) + * update dependency nodebb-theme-persona to v11.0.25 (c11927c5) + * update dependency sortablejs to v1.14.0 (5ff9319f) + * update dependency nodebb-theme-persona to v11.0.24 (c7feea56) + * update dependency nodebb-plugin-composer-default to v6.5.33 (3611b04e) + * update dependency nodebb-plugin-markdown to v8.14.0 (e40f648f) + * update dependency nodebb-plugin-markdown to v8.13.1 (cf6fcc21) + * update dependency nodebb-plugin-composer-default to v6.5.32 (#9626) (90e3f5ac) + * update dependency nodebb-plugin-composer-default to v6.5.30 (#9624) (2060dc61) + * update dependency postcss to v8.3.5 (09aebbda) + * update dependency postcss to v8.3.4 (520050da) + * update dependency postcss to v8.3.3 (c7006ec6) + * update dependency ioredis to v4.27.6 (82b33dc4) + * bump persona (f4eb336a) + * update dependency postcss to v8.3.2 (88f21e91) + * update dependency postcss to v8.3.1 (71b4d634) + * update dependency ioredis to v4.27.5 (9f74caf6) + * update dependency connect-redis to v6 (#9590) (6632b2b6) + * update dependency ioredis to v4.27.4 (4ffd234f) + * update dependency nodebb-theme-persona to v11.0.21 (062928d2) + * update dependency mongodb to v3.6.9 (d8c64479) + * update dependency autoprefixer to v10.2.6 (3aeac357) +* #9634, re-jig top bar of Admin > Manage > Users (b8964843) +* hide private user data in api/v3/users/[uid] (97c8569a) +* numThumb upgrade script (d9e2190a) +* acp dashboard sometimes not loading on cold load (fee782c4) +* #9636, sanitize all attributes in meta and link tags (84904976) +* convert some hooks to use hooks module (09bac6bd) +* #9627 (acdbd049) +* #9629, translate content property of meta tags (561ce7d3) +* prevent crash in expandObjBy #9618 (ab6f062f) +* dont show system tags in whitelist dropdown to regular users (0d975bc4) +* #9622 (#9623) (84e06575) +* #9620, fix notif delay (73f40e96) +* #9619, add group chat filter to /notifications (c92fc19b) +* scope (3cd9434b) +* #9615, catch exceptions in renderOverride (1eda538d) +* purge uploaded images accordingly #9606 (#9611) (8168c6c4) +* keep query params when switching chat (7b4c0a16) +* accidental unnecessarily strict conditional that effectively rendered SSO state checking opt-in instead of opt-out (a2400f6b) +* introduce artificial delay + delay fudging on invalid email during reset token generation (f6c14d6b) +* #9605, expire all active reset tokens for a uid if that uid generates a new one (229f96f8) +* lint (8c952aa3) +* schema (39e13591) +* pagination on acp users search (6695927e) +* #9596, incorrect placeholder string in some translations (93d94564) +* extra ')' (6f732611) +* disallow editing of other users' notes (edcba61a) +* #9592, check session (286644d0) +* don't crash if session doesn't exist (3717df61) +* lint (66cae54e) +* improper use of filename extensions (16e0bca5) +* return null (d8d6c989) +* updates navigation menu user icon (f9b248b8) +* returnOriginal deprecation (3fb74445) +* error when trying to trim an object (48b8e3bb) +* **post-queue:** moderatedCids is an array of numbers (#9631) (db65360c) + +##### Performance Improvements + +* cache Topics.getTopicsTags (8e0561f2) +* bypass getMultipleUserSettings (10ddfff3) + +##### Tests + +* fixed broken tests from #9605, removed token clean on token usage as it is superceded by token clean on generation (+ associated test) (5c42b3ea) + +#### v1.17.1 (2021-05-26) + +##### Chores + +* **deps:** + * update dependency grunt to v1.4.1 (0e37bbfd) + * update dependency jsdom to v16.6.0 (60170ad6) + * update dependency eslint to v7.27.0 (298af98d) + * update dependency eslint-plugin-import to v2.23.0 (1623ba4f) + * update commitlint monorepo to v12.1.4 (4a01313d) + * update commitlint monorepo to v12.1.3 (b82774c5) + * update dependency eslint to v7.26.0 (d1418210) + * update dependency lint-staged to v11 (1bf57d40) + * update dependency mocha to v8.4.0 (461e187b) + * update dependency eslint to v7.25.0 (32c20806) + * update dependency grunt to v1.4.0 (a30deef3) +* incrementing version number - v1.17.0 (75f7972b) +* update changelog for v1.17.0 (4c441a1b) + +##### Documentation Changes + +* update API docs to better outline authentication options (6ef0c8e9) +* update API authentication verbiage (d08d0c42) + +##### New Features + +* keep query string when redirecting category (77dde41f) +* add req.query to flags.list/getCount (3d6bdeb3) +* add filter:flags.getFlagIdsWithFilters (d35c64b1) +* #9559, set order help text (f5847f4f) +* add filter:user.getWatchedCategories (4afca690) +* pass req.query to getUserDataByUserSlug (518157d9) +* #9508, add cluster support (94c12e37) +* #9551 (a3d6c56e) +* add template to hook (1f3e6601) +* add filter:account.getPostsFromUserSet (a2442ee9) +* automatically attempt reconnection on window focus (8cc61f11) +* #9533, allow redirect in build hooks (f6b583bb) +* add _hooks metadata object to all hooks that have object-type params (46899cca) +* add filter:categories.copySettingsFrom (d8e4fd4c) +* guard against multiple resolves (084c9851) +* #9511 send notifications on accept/reject (b40fc4b6) +* `hidden` class to FOUC (2bfa63ae) +* add filter:middleware.autoLocale (a478dc7e) +* remove sync hooks support (01956af4) + +##### Bug Fixes + +* #9580, proper 404 when ajaxifying (9ebfdeb7) +* lint (09f51792) +* #9567 fix tests (951e71a0) +* #9567, use regular 404 (5215c30a) +* ioredis upgrade fix, maybe (1ce59508) +* bug where interstitial errors were not properly passed to the front-end via req.flash (1d9cfe1e) +* #9553, use same fields for user search results in acp (0551642a) +* lint (e8c5c18a) +* lint (ffa80163) +* tests (fad5988e) +* tests (074ee859) +* wrong error message checked (a9bb1088) +* #9507 session reroll causes socket.io to become confused (#9534) (ec6d1e23) +* isObjectField(s) empty field (2c22b06f) +* do not register SW for Safari until upstream fixes #9193 (ce5fea2a) +* infinite scroll with small number of items #9524 (#9525) (cb1dd0a3) +* #9519 unable to properly ajaxify to home on subfolder installs if anchor did not have a trailing slash (db48b952) +* #9512, fix chat icon if no privileges (6ed8890c) +* #9503, dont error in markUnread if room doesnt exist (308252f5) +* use socket.request.headers (9e07efc1) +* buildReqObject headers for socket.io calls (ed534f34) +* **deps:** + * update dependency sharp to v0.28.3 (963a9fe6) + * update dependency ioredis to v4.27.3 (075dab27) + * update dependency nodebb-theme-vanilla to v12.0.8 (#9574) (10290f54) + * update dependency mongodb to v3.6.8 (#9573) (64935787) + * update dependency postcss to v8.3.0 (ad4afd59) + * update dependency nodebb-theme-persona to v11.0.20 (403bcfac) + * update dependency nodebb-plugin-composer-default to v6.5.29 (8d7e4420) + * update dependency mongodb to v3.6.7 (f29e4e87) + * update dependency textcomplete to ^0.18.0 (9b7653cc) + * update socket.io packages to v4.1.2 (#9563) (ca7c77bc) + * update dependency nodebb-plugin-dbsearch to v5.0.2 (#9562) (2d0564cb) + * update dependency nodebb-theme-slick to v1.4.7 (bf4aa50c) + * update dependency nodebb-plugin-composer-default to v6.5.28 (4164b322) + * update socket.io packages to v4.1.1 (155a7fb6) + * update socket.io packages to v4.1.0 (53335677) + * update dependency sharp to v0.28.2 (4bc07a08) + * update dependency postcss to v8.2.15 (7770c2a1) + * update dependency nodebb-theme-persona to v11.0.19 (3145c7d5) + * update dependency nodebb-plugin-mentions to v2.13.11 (7e2ea4df) + * update dependency nodebb-plugin-markdown to v8.12.10 (2ac5a085) + * update dependency nodebb-plugin-markdown to v8.12.9 (ee3634cc) + * update socket.io packages to v4.0.2 (ff98f854) + * update dependency postcss to v8.2.14 (22ec1ea5) + * update dependency sitemap to v7 (0389dd96) + * update dependency nodebb-widget-essentials to v5.0.4 (19f1cbfc) + * update dependency nodebb-theme-persona to v11.0.18 (33d91fde) + * update dependency connect-redis to v5.2.0 (c0d54a06) + * update dependency postcss to v8.2.13 (831e5c26) + * update dependency postcss to v8.2.12 (38454df9) +* **#9508:** switch to ioredis (#9545) (dd81dd03) + +##### Refactors + +* cli/upgrade async/await (#9558) (ac86937c) +* bubble other errors (0096cf17) + +##### Reverts + +* sync hooks (5fe97b9c) + +##### Tests + +* fix tests (1029a06a) +* fix redis tests (4e490f60) +* add test for undefined fields in getObjectsFields (92de49be) + +#### v1.17.0 (2021-04-22) + +##### Breaking Changes + +* add additional flag hooks [breaking] (00a68a95) +* remove deprecated `User.emailConfirm` [breaking] (fb84c785) +* remove deprecated plugin hook `filter:privileges:isUserAllowedTo` [breaking] (5a775e09) +* remove deprecated plugin hook methods [breaking] (d41de481) +* more removals of thumb specific backwards-compatibility [breaking] (cc0d562e) +* remove deprecated `filter:admin/header.build` hook [breaking] (5f9f241e) +* remove deprecated v2 style responses for thumbs upload route [breaking] (84dfdfe6) +* remove deprecated getObject routes [breaking] (2ad0d0d0) +* remove 'filters' and 'categories' from flag details API return [breaking] (8b72479f) +* filtering logic of flags [breaking] (1603566b) +* feature flag for auto-resolving a user's flags on ban [breaking] (6b1c97db) +* allow interstitial callbacks to be async functions [breaking] (280285cd) + +##### Chores + +* **deps:** + * update dependency jsdom to v16.5.3 (0f249aa7) + * update dependency eslint to v7.24.0 (60c0c16f) + * update dependency husky to v6 (f155f326) + * update commitlint monorepo to v12.1.1 (b4d01388) + * update dependency jsdom to v16.5.2 (5e2e7a58) + * update dependency eslint to v7.23.0 (d600cd94) + * update dependency husky to v5.2.0 (77f551a4) + * update dependency jsdom to v16.5.1 (28ed579b) + * update dependency eslint to v7.22.0 (775c3b91) + * update dependency mocha to v8.3.2 (3ce731d8) + * update dependency jsdom to v16.5.0 (fd926d61) + * update dependency mocha to v8.3.1 (651c629f) + * update dependency husky to v5.1.3 (8791b44e) + * update dependency husky to v5.1.2 (5f061b94) + * update commitlint monorepo to v12 (42f7cd52) + * update dependency eslint to v7.21.0 (59518437) + * update dependency husky to v5.1.1 (2551295c) + * update dependency husky to v5.1.0 (dc06fe22) + * update dependency eslint to v7.20.0 (9ec0b2ed) + * update dependency mocha to v8.3.0 (73f07958) + * update dependency husky to v5 (d89ccf26) + * update dependency lint-staged to v10.5.4 (030ecffa) + * update dependency eslint to v7.19.0 (3696a199) +* incrementing version number - v1.17.0-beta.5 (42c4f963) +* fix indent (6406e527) +* benchpress 2.4.1 (3403635c) +* remove log (a1ee1a2a) +* incrementing version number - v1.17.0-beta.4 (91992240) +* bump composer-default (289bfc0b) +* up themes (d14ba1f4) +* remove node 10 (8d3ec234) +* bump composer-default to 6.5.20 (33fbfdfe) +* incrementing version number - v1.17.0-beta.3 (6e8b1bb9) +* add multiparty dep (ef3ec96a) +* incrementing version number - v1.17.0-beta.2 (0c1945dc) +* incrementing version number - v1.17.0-beta.1 (31872aac) +* bump composer (30954789) +* bump deps (#9335) (b9fd2c87) +* incrementing version number - v1.17.0-beta.0 (b61257ef) +* incrementing version number - v1.16.3-beta.0 (477157cc) +* extra console.log (1ae8dda8) +* up composer (1c9acef6) +* eslint max-len (cc9d6fd0) +* eslint no-restricted-syntax (5c2f0f05) +* eslint prefer-rest-params, prefer-spread (115d19e2) +* eslint prefer-destructuring (23f212a4) +* eslint object-curly-newline (8d1462ff) +* eslint function-paren-newline (62869bae) +* eslint no-var, vars-on-top (dab3b235) +* eslint prefer-arrow-callback (b56d9e12) +* eslint prefer-template (707b55b6) +* eslint import/newline-after-import (4ee0f145) +* eslint no-script-url (9f6a682c) +* eslint no-bitwise (dad01e30) +* eslint rules matching existing styles (58528d1a) +* fallbacks (74be1a59) +* deprecation notices for plugins using plugin old hook methods (3052256d) +* add deprecation notice in comments for ajaxify.loadExtraScripts (8b09292e) +* incrementing version number - v1.16.2 (ea7f8381) +* update changelog for v1.16.2 (d3883d4b) + +##### Documentation Changes + +* fixed typo (e7550673) +* added comment re: #9305 (65c57c73) +* update deprecation-removal version for plugin hook helper methods in 1.18.0 (15ba0abb) + +##### New Features + +* lang strings (9b71b087) +* rate limit file uploads (a9978fcf) +* filter flags by username #8489 (#9451) (8faa6e45) +* roll session identifier on login, as security best practice (697ed3bf) +* allow different slugs (4494728c) +* remove sort again (fd3bc605) +* update hook (f65d2162) +* add reverse of recent to getSortedTopics (05f22361) +* allow exists methods to work with arrays and single id (285aa365) +* pass all data to filter:category.get (d16b45fd) +* add action:posts.loaded (dbb59228) +* rescheduling (editing ST) (#9445) (aa0137b1) +* upgrade sharp (#9442) (f7f46e7c) +* optional urlMethod param for loginStrategies (9e1f72a4) +* add hooks to language loading (#9426) (344575dd) +* doggy.gif (b06f0ea2) +* allow adding sorted-list items from forms outside of modal (a3e95e79) +* scheduled topics (#9399) (077330b7) +* show link if category is a link (a94d9651) +* make info page full width (dd12c83f) +* allow optional fields argument on db.getObject(s) (#9385) (4327a09d) +* closes #9380, add category filtering and topic tools to tag page (668508cc) +* allow sync function (#9379) (34b9aaed) +* allow filter functions that return promises or the data directly (e6c52cf2) +* add resolve flag to post tools (52082e12) +* hide revert button in ACP > Privileges until privileges change (4cbd13fd) +* bring back static hook timeout (46270f9f) +* upgrade connect-mongo, closes https://github.com/NodeBB/NodeBB/pull/9367 (3c60ccfd) +* pass interstital errors to individual partials as well as to registerComplete (f71cb0e4) +* add filter:plugins.firehook (5eb3132d) +* copy default favicon if it doesn't exist (754283d3) +* add missing translation keys (17184bfa) +* allow missing (or non-array) middlewares argument in route helper methods (4b545085) +* pass modified params, only affects filter hooks (e74df539) +* add back topic id input (696c4895) +* expose username validation logic to user lib, new hook `filter:username.check` (bfd512b9) +* add $.deserialize to client side (e5133a78) +* allow for settings.save/settings.load on client side (66196d2c) +* remove promise-pollyfil (902a88c2) +* category privilege API routes (c1b3079d) +* change uploadCroppedPicture to use updateProfile as well (0af9d26f) +* use updateProfile for picture change (a598abcd) +* allow payload to be passed to emailer test method (1155b0c4) +* add uid of user who created flag to action:flags.create (069ac60f) +* new client-side hook `filter:api.options` to allow plugins to modify api requests (7d391d47) +* keep notifs for one month, load 50 notifications instead of 30 (02f08111) +* also pass in uid to `filter:email.prepare` (86b0c57d) +* new hook `filter:email.prepare` (27ea3dcb) +* new hook static:email.send (bf90d158) +* show time info for upgrade scripts (14a6c349) +* add dashboard sub-pages to ACP menu (73dc64d9) +* recent logins sessions table in dashbaord subpage (2f89b0d7) +* topics dashboard details subpage (e1ed514b) +* update user list in dashboard/users on graph update (c57c7703) +* show list of recent users in dashboard/users (cc938224) +* req.query parsing and dynamically loading data instead (6fdcae73) +* new hooks for notifications get/getCount (079a13d4) +* allow hook unregistration, and temporary page-based hooks (d0136074) +* report login statistics from analytics data, instead of its own zset (16d3c457) +* track login sessions for admin dashboard reporting (9a9f366d) +* track successful logins in analytics (504fd107) +* pass user picture object into change_picture_modal (c96fd3b1) +* add logout to invalid session (beb14273) +* category search test (a592ebd1) +* pass post object to filter:post.tools (ed3d9dcb) +* allow defining a list of system tags (0e07f3c9) +* add category search test, #9307 (bbaaead0) +* add tag filter to getSortedTopics (9ce6f8ad) +* ability to re-order topic thumbnails (7223074f) +* add close button to topic thumbnail modal (db027170) +* #9304, add category/topic/username to post queue notification emails (0738dae8) +* add failing test for list append/prepend with list (#9303) (8f0386d9) +* link to post-queue from topic event (a4b4a556) +* post-queue topic event (8fd78ce5) +* add post-queue cache (3f35fd33) +* newsletter opt-in/out in UCP, closes #21 (3c7cd9a6) +* load user posts/topics via xhr on infinitescroll (35954734) +* #9294, put new categories at top (4b2bf12f) +* add invalid event name to error message (670cde78) +* new notifications load/loaded hooks on client side (7edc8f45) +* pass req.session into buildReqObject (a6fa351b) +* new hook `action:login.continue` (4f976390) +* banned-users group (53e0d4d2) +* #9109, ability to delete a post's diffs (eb642f40) +* add .delete() method to api module (501441b7) +* doc add description (cc560ca3) +* add doc for query param (ed11e171) +* #9234, add pagination to /api/recent/posts/:term? (fffdc4e0) +* allow sorted-lists on multiple pages (d5d24594) +* #9232, add profile picture into exported zip (f6cd2862) +* new hook `filter:login.override`, deprecate `action:auth.overrideLogin` (b820d234) +* guard password fields in login/register against accidental caps lock (4bb3b032) +* ability to search categories, #8813 (34c42c6f) +* restore action:script.load, allow modifying loaded module via static:script.init (05be1c66) +* async/await redis connection (fdfbc902) +* async/await psql connection (33bf1b0e) +* add group name to csv event (672959c1) +* **user:** icon background selector in change picture modal (95502124) +* **remountable-routes:** + * allow category and account routes to be remounted (9021f071) + * allow /admin and /post to be remountable (f01af62b) +* **topic-events:** + * topic events GET route in write API (dc84559d) + * server-side tests for topic events (449c379d) + * clear out topic events when a topic is purged (0d4a3775) + * client-side handling on topic event log (8e93bf73) + * handle newest_to_oldest sort in topic events, WIP (882e6a15) + * generic css for timeline-event (2293a07a) + * support for uids in topic event payloads (611d1f87) + * work in progress topic events logic and client-side implementation (ab2e1ecb) +* **hooks:** + * update action:ajaxify.end to use new hooks module (1d775721) + * client-side hooks module (01c9b184) + +##### Bug Fixes + +* regress. rescheduling shouldn't add to sets that pinning removed… (#9477) (8b79c7f1) +* logic is hard (4dd38446) +* run in series (bc0ca61c) +* wrong variable for cache (2e9efc0e) +* accidentally committed this (13fa983e) +* tests (eb240c90) +* eslint (fa0c92a7) +* use req.ip instead, since guests can upload as well (ea22cd30) +* #9492, keep query params on redirect (36f119a9) +* stripTags for editing sorted list items as well (93598982) +* #9487, session data gathered during a session is lost upon login (1fee6a70) +* failure on session reroll 🍣 test (f4c5050a) +* registration interstitials not handling promise rejections properly (e845c34b) +* stripHTMLTags for sorted list entries (75073c0e) +* restore original behavior for up/downvoting when logged out (e50408b4) +* let recent replies respect oldest/newest sort settings (60eed8d8) +* #9483, fix events count display (6907837f) +* escape flag reason (161081e9) +* copy change on plugin activate to instruct admins to rebuild as well as restart (95d5359c) +* updateCategoryTagsCount (2dc3283f) +* #9473 (#9476) (036f935f) +* #9474, load hooks on page load (1af34b43) +* spec (d09cdc04) +* #9466, don't call leaveRoom in maintenance mode (f32ea173) +* exempt ST from being del/res via last main posts (#9468) (a0dd9080) +* #9462, on install copy default favicon (784600d9) +* #9463 (c5ae8a70) +* #9465 (4041e786) +* #9450 express session saved even if saveUninitialized explicitly passed in (9c52fd2e) +* acp crash (cb53a64c) +* #9447, include query params in previousUrl (536591f8) +* thumb count not updated when uploading multiple thumbs at a time (1ad1787e) +* change email button stays disabled if user submitted an invalid email (01f63e5d) +* use app.logout() to clear session after deleting user (cfdef77b) +* ./nodebb help with commander@7 (#9434) (2a03012e) +* hide titleRaw for deleted topics as well (edf80cfb) +* #9410, fix post queue (c5dda64f) +* privilege tables (9052db93) +* #9420, paginate after loading notifications (67b09cba) +* hooks for alert animate, no more fadein/fadeout for reconnect alert (d9e20290) +* #9414, use posts:view_deleted (e42b152f) +* preserve order when changing parent (2ceda70a) +* #9411 (3c4e93a3) +* #9412 (cef58d1d) +* #9406, update flag post tools (93c595d9) +* typo in switch..case (d8ff9851) +* #9404, show signatures if the target user has signature privilege (801570e4) +* selector (ee69c1f8) +* sorting when filtering by uid (75553b24) +* allow local (and overridden) login strategies to pass Error objects back (98b72ca5) +* category search not using uid (6aa60b63) +* inf scroll with subfolder install (262e059f) +* flicker on dashboard (2041b808) +* #9398, crash on post flag (90d64fe1) +* #9395, pass all data from client to Topics.reply (#9396) (a8f7b244) +* lint (4ac38ab2) +* #9394, fix guest handles (eb360351) +* #9387, don't try to load undefined images (03e30634) +* #9389, allow admins to add themselves to private groups (5c59354c) +* #9386, add missing translation string (482641e3) +* #9383, don't show deleted topic titles in inf scroll (e789fe8d) +* #9378, crash on verifyToken if API Token settings not saved (null case error) (cc489708) +* closes #9382, fix digest topic links (35700d16) +* spec (1e1127bd) +* regression from filter hook change (53f67ff3) +* crash if unreadTopics is undefined (617f4730) +* dont crash if login el doesnt exist (f45c0aab) +* regression via c1b3079d93fb4c49ba62a4be5279b7bff8e5a54d (2a939aad) +* change notification updateCount to use client-side hooks (84725130) +* tests (39b0e0fb) +* #9370, show correct teaser index if sorting is newest to oldest (9382fc6d) +* don't copy if src doesn't exist (ebccc794) +* #9362 best not to check file exists on every page load; copying favicon to uploads/system folder instead (771a8955) +* #9362 (ad565495) +* regression where login redirect for admin routes didn't go to local=1 (678e8f0f) +* lint (f4f61b92) +* if no in passed use "titles" to match header search (e787e6ea) +* add back middleware.authenticateOrGuest (166d65a1) +* request authentication called twice in account routes (e3b2c00d) +* #9354, don't close quicksearch results if mouse is down on them (8a4c361e) +* #9339, only log email errors once per digest, notification push (3aa26c4d) +* winston.info (3f42d40c) +* #9351 bad logic when inserting rows to privilege tables, also a missing tfoot :foot: (c5e25788) +* app.parseAndTranslate to always return promise (c2650169) +* bug where fallback window trigger was not firing if there were no hook listeners attached (1e579428) +* bad assignment (c8b78654) +* #9348 incorrect redirect via connect-ensure-login (fbe9215b) +* bug where loginSeconds setting was ignored for local login (f806befd) +* remove old dep (b58bacaf) +* notif pruning (2737f653) +* notification prune test (ca817631) +* user icon text overflow in some cases (2b7d0b5a) +* use components for toggleNavbar instead (114e3a1e) +* allow interstitial callbacks to be functional (no cb required) (9bf94ad5) +* don't publish before pubClient is connected (cdf5d18f) +* remove unused async (48f1e265) +* in setupPageRoute helper, buildHeader after plugin hooks have fired (984c9dd9) +* timeago missing on table update (655e2c67) +* wrong qs param, allow string to be passed to util.getDaysArray (f8e1a74c) +* wrong call to sortedSetAdd (dbe5f702) +* session not persisting to database in some scenarios (020f0b83) +* allow hidden inputs in user settings page (beaac0a1) +* use root context if buildAvatar context is undefined (b4c0b32b) +* use bootbox module (fa91525a) +* #9307, use _.flatten (25c8f026) +* awaiting res.render in send404 controller > > A plugin wanted to use `response:rotuer.page` to 404 a specific page on some condition. res.render returns early in send404 and so must be awaited otherwise multiple responses will be sent (2fef4627) +* do not overwrite `config.port` from URL, if it's already set (34096b73) +* switch back to getSortedSetRange (8686fbfa) +* settings v3 (91734a64) +* another topic thumb test fix (782bef5e) +* thumbs.associate logic fix + tests (7ebb6d30) +* missing awaits, possible test fix (7665adf7) +* #9301, dont call sitemapstream if there are no entries in categories/pages/topics.xml (9a6cf3d9) +* properly incase its the same path (807b0d43) +* numThumbs count on associate (76bcc0c9) +* missing cache deletion calls for post-queue cache (1490b32d) +* use of removed URL to get post data (36e8d251) +* init topic events from webserver.js (b81508c4) +* check null topics (b753c69c) +* guard against null topics (58cd797e) +* tests, new categories go to top now (fc90f32e) +* #9292, messageobj.content already parsed (c953b1b3) +* clear category cache on copy parent (765db86d) +* delete category cache key on category create (ed3e9ce2) +* typo (c61cc37b) +* wait for event.log to finish before killing process (a5fa212f) +* tests, only generate csrf_token on 404 gets (b6493f89) +* #9287, generate csrf_token on 404 (94f72d60) +* do not blindly escape a notification's bodyLong (783786cf) +* pass jquery object in to action:notifications.loaded hook (16610b2d) +* #9275, (0cca6893) +* don't use global bootbox obj (cfa0d423) +* remove console.log (550cd995) +* move service worker back to relative_path/service-worker.js (fca17cb7) +* spec (ab0ef442) +* markread selector (a4878a5b) +* position when scrolling up (3090a2ae) +* cache key collision (e40af441) +* tests breakage due to 67e3fb64981fe2310b17515e1f18c32021a5e983 (5c21c33e) +* register returnTo logic to match login route (67e3fb64) +* tests (492cbc62) +* posts.uploads.sync dissociates uploaded thumbs of the main pid (f79aeef8) +* update grammar on unban text (68da1c55) +* privileges page - tweak icon position and width, group name wrapping (c729adeb) +* autofocus on search field in ACP > Manage > Plugins (4af9c2fc) +* openapi test specs (cabec378) +* include admins (7c9674de) +* include admins, limit to category mods, correct privilege name (eaf9d2e4) +* http 200 test for api routes (bd583963) +* invalid API call when unfollowing a user (58655e9a) +* example (833c73e8) +* #9127, scope service worker to relative_path for the forum (#9239) (2bc74cff) +* update docs (4c12e0aa) +* broken test after sorted-lists logic change (d6f60f45) +* clear all locks on restart (9834f72f) +* `action:admin.settingsLoaded` to use new hooks lib (5131eb6b) +* crash on firing action hook that had no listeners registered (b0f5d5a5) +* bug where `action:settings.sorted-list.loaded` fired early (1a04ec64) +* regression where `filter:settings.set` no longer received sorted-lists (a8be6fb8) +* #9231, fix redis pubsub connection (5bc1f5b4) +* don't translate message on every ajaxify (a29dd21d) +* tests (05c53394) +* improper override of req.body.username in login logic (74199220) +* full settings hash not passed through to action:settings.set (473d5f4a) +* #9223, don't overwrite stmp settings (a5bf9779) +* multiple sorted-lists do not save to the correct set (4029ec37) +* pass module name to `static:script.init`, +comments (f8bf9e99) +* handle delete and update for categories:name zset (e8429f50) +* tests remove old routes (faeb6373) +* removed object routes (d41ce873) +* removed methods (647d3ba8) +* incorrect return for Thumbs.get() if thumbs were disabled (7b090c58) +* script failure if client-side page script does not exist (7da1b43f) +* bug where `action:ajaxify.end` was never called if there were no init scripts (faf59603) +* update js concatenation logic to bundle scripts.rjs into minfile regardless of build environment (8ff07bc1) +* #7125, allow list for page route, configurable via plugin hook (f975063b) +* error on flag list if no flag filters were saved in session (942d9247) +* mod cid filter accidentally saved in session (35c92d0c) +* more tests for #9217 (ce7c74b2) +* tests for #9217 (f2a5cd0b) +* missing return for #9217 (27cae0d5) +* #9217, render 400 error page on bad access to /register (b2b1450e) +* redis check compat tests (78896fc6) +* registration completion overriding returnTo if it was already set (a186ea0f) +* add missing user delete event types (5c1b7429) +* missing option for user-deleteAccount on ACP Events page (1c420602) +* **deps:** + * update dependency html-to-text to v7.1.1 (427e4f47) + * update dependency redis to v3.1.2 (35a4d0be) + * update dependency validator to v13.6.0 (e3d5d8d7) + * update dependency nodebb-plugin-composer-default to v6.5.27 (1b846271) + * update dependency redis to v3.1.1 (286a63e3) + * update dependency nodebb-theme-persona to v11.0.17 (51d58ce6) + * update dependency nodebb-theme-vanilla to v12.0.7 (16a1ba57) + * update dependency postcss to v8.2.10 (31cec2de) + * update dependency nodebb-plugin-mentions to v2.13.9 (fe087806) + * update dependency mongodb to v3.6.6 (#9467) (4264b236) + * update dependency sharp to v0.28.1 (34cbc9e2) + * update dependency nodebb-theme-persona to v11.0.16 (a8330b6d) + * update dependency nodebb-theme-vanilla to v12.0.6 (c02310b8) + * update dependency nodebb-theme-persona to v11.0.15 (316c71d7) + * update socket.io packages to v4.0.1 (e7776f8d) + * update dependency redis to v3.1.0 (fd9ff334) + * update dependency nodebb-plugin-composer-default to v6.5.26 (#9446) (8d9afbc6) + * update dependency postcss to v8.2.9 (6f51c460) + * update dependency nodebb-theme-persona to v11.0.14 (#9443) (fecfcd81) + * update dependency nodebb-theme-persona to v11.0.13 (#9437) (e5cc6e40) + * update dependency nodebb-theme-slick to v1.4.6 (dfdb0050) + * update dependency nodebb-theme-persona to v11.0.11 (27de58f2) + * update dependency benchpressjs to v2.4.3 (382f75bc) + * update dependency nodebb-plugin-composer-default to v6.5.25 (24236718) + * update dependency nodebb-theme-vanilla to v12.0.5 (89973d80) + * update dependency nodebb-plugin-composer-default to v6.5.24 (dec34446) + * update dependency nodebb-theme-persona to v11.0.10 (f78b4ba6) + * update dependency nodebb-plugin-composer-default to v6.5.23 (#9422) (e35d0741) + * update dependency nodebb-theme-persona to v11.0.8 (124cb9d9) + * update dependency benchpressjs to v2.4.2 (1dddcb49) + * update dependency nodebb-plugin-mentions to v2.13.8 (d511216c) + * update dependency connect-mongo to v4.4.1 (29ff5bb9) + * update dependency nodebb-theme-persona to v11.0.7 (c5734063) + * update dependency nodebb-theme-vanilla to v12.0.4 (#9409) (870e6c2c) + * update dependency nodebb-theme-slick to v1.4.5 (#9408) (24be8642) + * update dependency nodebb-theme-persona to v11.0.6 (#9407) (b50739c1) + * update dependency nodebb-plugin-spam-be-gone to v0.7.9 (#9405) (9359cae9) + * update dependency nodebb-theme-persona to v11.0.5 (47b2b97f) + * update dependency nodebb-plugin-composer-default to v6.5.21 (#9401) (2f70ac5a) + * update dependency mongodb to v3.6.5 (fcd887fd) + * update dependency nodebb-plugin-composer-default to v6.5.19 (#9391) (1631f159) + * update dependency nodebb-plugin-composer-default to v6.5.17 (#9384) (8d401760) + * update dependency nodebb-theme-persona to v11.0.3 (27facadb) + * update dependency socket.io-redis to v6.1.0 (adaddde6) + * update dependency nodebb-plugin-composer-default to v6.5.16 (a98e92b4) + * update dependency nodebb-plugin-markdown to v8.12.7 (#9371) (56b0bfd5) + * update dependency nodebb-theme-vanilla to v12.0.2 (#9369) (8923d34c) + * update dependency nodebb-theme-persona to v11.0.2 (#9368) (fa71c483) + * update socket.io packages to v4 (#9363) (13f3c504) + * update dependency postcss to v8.2.8 (680cf5ef) + * update dependency nodebb-theme-persona to v10.5.17 (2645bf55) + * update dependency connect-mongo to v4.3.1 (59459074) + * update dependency connect-mongo to v4.3.0 (f388086a) + * update dependency autoprefixer to v10.2.5 (4f4cdacc) + * update dependency postcss to v8.2.7 (72db3754) + * update dependency nodebb-plugin-composer-default to v6.5.13 (017af7cb) + * update dependency jquery to v3.6.0 (dd6082a0) + * update dependency connect-mongo to v4.2.2 (ec0912cc) + * update dependency nodebb-plugin-spam-be-gone to v0.7.8 (#9337) (536bae70) + * update dependency nodebb-plugin-composer-default to v6.5.12 (2674de01) + * update socket.io packages to v3.1.2 (510eb1f9) + * update dependency nodebb-theme-persona to v10.5.16 (217d3afd) + * update dependency nodebb-plugin-emoji-android to v2.0.5 (e8209341) + * update dependency sharp to v0.27.2 (c5231f10) + * update dependency nodebb-theme-vanilla to v11.4.5 (8596dcc4) + * update dependency nodebb-theme-persona to v10.5.15 (753ab0a0) + * update dependency nodebb-theme-persona to v10.5.14 (ed503b80) + * update dependency nodebb-theme-persona to v10.5.12 (ddd8fa31) + * update dependency benchpressjs to v2.4.1 (4ee3a8e8) + * update dependency nodebb-theme-persona to v10.5.10 (7f8fd4b0) + * update dependency nodebb-theme-persona to v10.5.9 (5dd748c6) + * require xregexp 5.0.1 (86e911ba) + * update dependency xregexp to v5 (513cd1c3) + * update dependency nodebb-theme-persona to v10.5.8 (54b4dc1d) + * update dependency postcss to v8.2.6 (4d92af5a) + * update dependency nodebb-theme-persona to v10.5.7 (#9288) (c2459fd5) + * update dependency nodebb-plugin-composer-default to v6.5.10 (b312725f) + * update dependency nodebb-theme-persona to v10.5.6 (4599144f) + * update dependency nodebb-widget-essentials to v5.0.3 (#9284) (eb9f058f) + * update dependency nodebb-plugin-composer-default to v6.5.9 (6e14014b) + * update dependency nodebb-plugin-composer-default to v6.5.8 (674a31d1) + * update dependency nodebb-theme-slick to v1.4.3 (#9278) (d3923585) + * update dependency nodebb-theme-vanilla to v11.4.4 (#9279) (1f28e8c3) + * update dependency nodebb-theme-persona to v10.5.5 (#9277) (a7b46adc) + * update dependency connect-redis to v5.1.0 (#9276) (83a0b6b8) + * update dependency nodebb-theme-persona to v10.5.4 (#9270) (dc145284) + * update dependency nodebb-theme-vanilla to v11.4.3 (#9272) (2fda6774) + * update dependency nodebb-theme-slick to v1.4.2 (2b12905d) + * update dependency nodebb-theme-lavender to v5.2.1 (fb2f1143) + * update dependency nodebb-theme-slick to v1.4.1 (#9262) (2cfab367) + * update socket.io packages to v3.1.1 (#9253) (2147d386) + * update dependency postcss to v8.2.5 (1fa0d4f4) + * update dependency nodebb-plugin-emoji-android to v2.0.1 (42e365d9) + * update dependency nodebb-plugin-markdown to v8.12.6 (4fd6027b) + * update dependency nodebb-plugin-mentions to v2.13.7 (8a2fe3d9) + * update dependency nodebb-theme-vanilla to v11.4.2 (2326e9a6) + * update dependency nodebb-theme-persona to v10.5.3 (9245ffaf) + * update dependency nodebb-plugin-dbsearch to v4.2.0 (389690c3) + * update dependency nodebb-plugin-composer-default to v6.5.7 (13e12c95) + * update dependency json2csv to v5.0.6 (0aa8e03f) + * bump theme deps for #9244 (44019e28) + * update dependency mongodb to v3.6.4 (56e4e56b) + * update dependency nodebb-theme-persona to v10.5.1 (04411449) + * update dependency nodebb-theme-vanilla to v11.4.0 (#9238) (897d29ec) + * update dependency nodebb-theme-slick to v1.4.0 (#9237) (8e2deab4) + * update dependency nodebb-theme-persona to v10.5.0 (#9236) (4f842a79) + * update dependency nodebb-theme-lavender to v5.2.0 (47fd1634) + * update dependency nodebb-plugin-dbsearch to v4.1.3 (1e10ebfb) + * update dependency nodebb-plugin-composer-default to v6.5.6 (0e2b329b) + * update dependency autoprefixer to v10.2.4 (6c3b1fde) + * update dependency nodebb-plugin-markdown to v8.12.5 (05901fcd) + * update dependency nodebb-theme-persona to v10.4.1 (a9b3fb37) + * update dependency sharp to v0.27.1 (a90773a6) + * bump persona to get timeline style (ca14c0e2) + * update dependency postcss to v8.2.4 (5b2f0be0) + * update dependency autoprefixer to v10.2.3 (d99cb1cf) + * update dependency postcss-clean to v1.2.0 (4232d97b) +* **#9315:** api v3 post, put, del JSON (0d59fe3d) +* **remountable-routes:** + * more fixes to remountable routes (9d17f397) + * bug with user routes remounting to itself (bc68e990) +* **#9252:** pass site domain to nodemailer (#9254) (5e5d37c3) +* **topic-events:** + * topicEvents.init() test (aa8b84bb) + * repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM (df2fdd56) +* **hooks:** + * bug where hook firing would fail if there were no listeners (efff8e2a) + * fallback handling for core invocations of hooks.fire (412d2858) + +##### Other Changes + +* schema docs for new ACP dashboard subpage routes (0804d547) + +##### Performance Improvements + +* increase batch size for notifs, run parallel (728ac5ff) +* faster category tags upgrade script (0dad568c) +* use setObjectBulk (95033ef7) +* make upgrade script faster (a07509f7) +* make upgrade script faster (0959b124) +* cache base_url (cf4002bc) +* single call to get digest topics, dont send duplicate topics (5ce28207) +* single db call to add all uids (90d5c9da) +* make digests a little bit faster (0185ea1b) +* only load thumbs for topics that actually have thumbs (7eebcbdb) + +##### Refactors + +* make debug handler async (1db8920b) +* widgets (#9471) (397baf02) +* style, no need to convert length to string (d00268c9) +* deprecate action:script.load, use filter:script.load instead (d1685600) +* remove uncessary check (f316c4d4) +* remove async.each/reduce from hooks for better stack traces (d05d7091) +* use hooks.fire (0d3979ef) +* fix variable name (1982edfd) +* account edit logic and template, closes #9364 (98bf4064) +* automatically authenticate all requests setup through route helpers (#9357) (7da061f0) +* async listen testSocket (0021c601) +* remove startsWith/endsWith (48bc23c0) +* app.parseAndTranslate to return promise if no callback passed (b5a6a314) +* privileges, export modules directly (#9325) (293b7c26) +* have Graph.init and Graph.update return promises (3fa2e3ce) +* abstract out some client side dashboard code into modules, analytics subpages for users, topics, and logins (f561799f) +* move picture change client-side logic to its own rjs module (28f6931e) +* remove dupe code (5286f208) +* thumbs.associate accepts both relative path and url in path arg (3e6640ef) +* move post queue retrival code to posts.getQueuedPosts (36f20211) +* call topic events init from within file itself (6074a0fb) +* improvements (970bd06f) +* update dom after diff deletion better (a2a7557c) +* removed 3 lines (4447a64e) +* use Map to track sorted lists in Settings.set() (65de2e76) +* **user:** all plugins to change list of icon background colours (fbccf6e2) +* **remountable-routes:** + * rename `src/routes/accounts.js` to `src/routes/user.js` to better match the route prefix (1f28713f) + * allow certain route prefixes to be mounted elsewhere (92758ec5) +* **topic-events:** + * expose addTopicEvents method in topic posts lib (9559fad8) + * break out some logic in events.get into local modifyEvent method (cec3fc93) + * fire topic event logging in topics/tools instead, pass uid into payload (425eca14) +* **hooks:** + * deprecate `action:script.load` client-side hook (8e5687a4) + * better error handling (e7bd038d) + +##### Reverts + +* revert tag sort (f9df6431) +* change toPid truthy (56523aa1) +* bring back backwards compat (a1c01446) + +##### Code Style Changes + +* eslint (b5ce8d25) +* **remountable-routes:** abstract removable routes code to a separate local fn (16c1d6e9) + +##### Tests + +* remove logs (435067aa) +* clear cache between runs, require middleware later in helpers (2ea468da) +* log (d15e2710) +* remove equals (354e0a82) +* test times (2f401d7d) +* log (80ef1082) +* added test for session id reroll on login (a3a7ab3a) +* add missing test (8ef38cb2) +* double filter test (70a653d0) +* admin/manage/users tests (0e67ab01) +* fix spec for topic thumbs (4c078084) +* added missing properties to topicObject (1d9ade4c) +* added missing test file (b31f6dd2) +* topic reordering tests (ad54b174) +* additional tests for topic thumbs (50664487) +* added more topic thumbnail tests (28b30134) +* post diff deletion tests (72b050b4) +* **user:** added additional tests for icon background colour (d3a9e76a) + +#### v1.16.2 (2021-01-21) + +##### Breaking Changes + +* unescape header navigation originalRoute [breaking] (6cb5888c) +* allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.8 (a6f5de86) + * update dependency eslint to v7.18.0 (afbef95f) + * update dependency husky to v4.3.7 (d3e041e2) +* incrementing version number - v1.16.2-beta.0 (43ff8e41) +* incrementing version number - v1.16.1 (e3cd7a23) +* update changelog for v1.16.1 (b6d71710) + +##### New Features + +* add filter:email.cancel to allow plugins to cancel sending emails (c2e23706) +* grant plugins the ability to specify options to the SSO handler (ab11435e) +* add unread-count badge if navigator contains /flags route (c07e1e16) +* handle HTTP 429 as a response code (8bbb3208) +* add write API route for checking login credentials (56f929ed) +* #8813, faster category search dropdown (072a0e32) +* **api:** schema definition for new credential checking route (0da28432) + +##### Bug Fixes + +* **deps:** + * update dependency bootbox to v5 (#8751) (b5cb2f8b) + * update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f) + * update socket.io packages to v3.1.0 (3d1224e1) + * update dependency nodebb-theme-slick to v1.3.8 (1901ecb2) + * update dependency sortablejs to v1.13.0 (36069da2) + * update dependency autoprefixer to v10.2.1 (5b3c48fd) +* https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8) +* restored sanity checks for post move socket calls (d85ad10d) +* don't chagne scrollTop if at the top of page (0fa4c11e) +* #9206, fix double escaped arguments (1590cdf1) +* regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232) +* don't crash if fullname is not a string (4fb90787) +* #9204, bypass groupname length check for system group in upgrade script (00ba89b6) +* add missing await (9938a139) +* ssoState passed to strategies even if not called for (9b289eca) +* use max (0a471b76) +* keep 60 topics minimum on topic list (c30b40ab) +* access checks for tags and thumbs get route (77ab4668) +* #9194 global mods unable to pin or unpin topics (c0fb1cb5) +* #9192, exit after logging error (ef16cd2e) +* make sure inviter user exists (69419571) +* #9178 missing language strings (and fallbacks) for post-queue (a407a51d) +* #9185, fix string boolean values (89e6c75d) +* test for topicThumbs (e817d5be) +* #9184 proper relative_path usage in topic thumbs.get (66da6bcd) +* #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e) +* #9177, handled multiple deleted users properly (eaf62d39) +* broken test caused by errant .pop(), missing await (4ede18ce) +* missing error message (d83d40cf) +* test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab) +* #9176, limit description size (da546970) +* broken test due to change in response code (9534d956) +* return a user object, not an array of user objects (in v3 login check route) (97d678fd) +* bad execution flow in utilities.login (8c86f5bc) +* missing breadcrumbs in schema (87a7d85e) +* random loadFiles added by errant vscode autocompletion (53422413) +* add missing breadcrumb on /user//categories (6cbb77af) +* `--help` usage info (a51c5698) + +##### Performance Improvements + +* use only required calls (f0dd302c) + +##### Refactors + +* **api:** + * post move to write API (966c4117) + * post diffs to use write API (e118e59c) +* change var to const (1374e0ee) +* single remove call (25ab99b9) +* flags lib to have a separate getFlagIdsWithFilters method (6a1311b4) +* split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f) + +##### Code Style Changes + +* update codeclimate config to be less sensitive to duplicate code blocks (fdf03472) + +#### v1.16.1 (2021-01-06) + +##### Chores + +* increase test timeout (0d7dfeeb) +* incrementing version number - v1.16.1-beta.0 (5fcf3ea6) +* add deprecation notice to topic thumb tpl value (05d8b3c3) +* minor reordering of lines (8e5a413e) +* incrementing version number - v1.16.0 (6d01fd50) +* update changelog for v1.16.0 (1437c62f) +* **deps:** + * update dependency eslint to v7.17.0 (18ae7cf7) + * update dependency eslint to v7.16.0 (2610dfcf) + * update actions/setup-node action to v2 (#9115) (55a55ea2) +* **api:** add deprecation notices re: #9123 (cdff8d28) + +##### New Features + +* #9173, show installed plugin versions in ./nodebb plugins (8c31afae) +* added note that you can now upload videos (4d6ddf6d) +* automatically attempt socket.io reconnection on ajaxify (e5edbc6f) +* #9135, don't try to reconnect forever (c1ecfd1e) +* add confirmation modal when assigning admin:admins-mods privilege (d90aa958) +* allow dashes in privilege group names (5b8558e9) +* allow multiple privileges to be defined for a given admin socket call (3aa5beb8) +* rename admin middleware header hook (fcc1e24a) +* explicitly add filter:admin/header.build hook (75b1bbd0) +* fix more tests, add more routes, update api test suite (cb32e32a) +* add registration/complete route, fix some other tests (14c51e3c) +* add missing schemas for various ACP settings routes (9de35ec5) +* add missing schema for category update and deletion (d6de9253) +* add schema for api ping routes (d85181e0) +* normalize paths before comparison (df8d62ba) +* additional test to ensure any new routes added to express have a corresponding schema doc (dbe85630) +* update html-to-text closes https://github.com/NodeBB/NodeBB/pull/8810 (a2152dd1) +* **api:** + * closes #9123 category and topic routes migrated to Write API (edb8da1e) + * #9123, migrate rest of the getObject controllers to Write API (9ecfac9b) + * #9123, migrate /api/post/pid/:pid to Write API (e267f295) + * group ownership API route, switch client-side to use API route (32e36f7b) + * add schema for groups update route (98550d61) + * added schema for email unsubscribe token (4fc13377) +* **acp:** + * admin tags privilege (223f0a55) + * admins-mods privilege (fb46a8d9) + * added new admin privilege for groups management (da191341) + +##### Bug Fixes + +* #9130, remove timestamp prefix from thumbnail names in API response (171017c3) +* #9166 missing relative path in topic thumbs modal and topic list (b9ba44ed) +* #9163, fix total connection count on ACP (1968bf50) +* genericise .necro-post, bump persona to latest (041d45c3) +* #9126, skip base64 and long values (33290850) +* #9127, use assets path (3121215e) +* inability for admins with setting privilege to save plugin settings (a555f024) +* #9149, server-side handling of disableChatMessageEditing (895e3d93) +* #9149, incorrect client-side `disableChatMessageEditing` value for admins/gmods (d27815a8) +* #9151, dont use service worker for posts requests (20c1b684) +* #9150, fix selector so it doesn't add img-responsive to profile pics (183cabe9) +* tests (28740360) +* dont show deleted posts in navigator (931105e6) +* bug in api path existence test (501a7b77) +* #9136, fix move topic/post timeout errors (2ef72a94) +* bad assignment logic in middleware.renderHeader (34ccabe3) +* #9113, wrong path separator used in thumbs.get (da4f9118) +* email testing and settings change from ACP (2be396ff) +* removing ability to specify deprecated topic 'thumb' on topic creation (713f029d) +* #9129, event is fired on socket.io (b369dc88) +* subfolder handling in tests (bbd97ccb) +* .flat() not defined in v10, added debug router to exclusion list (6062039d) +* all tests, wrap up work (f416dc17) +* two more routes (9c2de86a) +* api tests (b9a61d2d) +* don't return deleted: 0 for ephemeral groups (600807fb) +* send fewer items to client-side for ACP settings/email page (438fa5c8) +* errors in write-api schema (c079051b) +* broken tests from last round of fixes (990f1077) +* bad error message for request body api test (a9629357) +* modify backreference test to not check router.all() calls (7fc329de) +* add missing token generation route to write api spec (eef052c1) +* trigger action:posts.edited (b7b588f5) +* **deps:** + * update dependency autoprefixer to v10.2.0 (e445ae5a) + * update socket.io packages to v3.0.5 (fd045c67) + * update dependency nodebb-theme-persona to v10.3.16 (87e333b4) + * update dependency benchpressjs to v2.4.0 (4524f825) + * update dependency nodebb-theme-persona to v10.3.15 (189be9e0) + * update dependency nodebb-widget-essentials to v5.0.2 (1dd1d3b0) + * update dependency nodebb-widget-essentials to v5.0.1 (#9144) (f55dddb2) + * update dependency nodebb-plugin-composer-default to v6.5.5 (6d980d26) + * update dependency sharp to v0.27.0 (4919e596) + * update dependency nodebb-theme-persona to v10.3.12 (37b35f7d) + * update dependency nodebb-theme-persona to v10.3.11 (db4c6863) +* **tests:** handle nested allOf blocks (77a5adb6) +* **api:** + * failing test due to missing file (3959a7bd) + * tests (80ee3dfb) +* **pwa:** #9127 service-worker.js missing on subfolder installs (b8d4709e) + +##### Refactors + +* **openapi:** update TopicObject component to reference TopicObjectSlim in its schema (fb3f3f72) +* **api:** + * deprecated groups update socket in favour of API lib (1cd2689c) + * update group deletion calls to use write API (e640a41a) +* schema backreference test to use map instead of reduce, properly check write-api routes (878ee067) + +##### Tests + +* changed test a bit to see what is going on (5f038dff) + +#### v1.16.0 (2020-12-17) + +##### Breaking Changes + +* enable topic thumbnails across the board [breaking] (9342d611) +* #8808, remove utils.slugify (4a0d8833) + +##### Chores + +* **deps:** + * update dependency husky to v4.3.6 (2371b432) + * bump persona to 10.3.9 (91899329) + * bump composer to 6.5.1, re: #9067 (228cfa67) + * update dependency husky to v4.3.5 (48a31763) + * update dependency husky to v4.3.4 (cf5c482d) + * update dependency eslint to v7.15.0 (f4c4d671) + * update dependency lint-staged to v10.5.3 (3e6f7359) +* appease codeclimate (9f62df15) +* add comment for clarification (6037f5ee) +* incrementing version number - v1.15.5 (57cd1343) +* update changelog for v1.15.5 (b0299326) +* **i18n:** fallbacks for new topic thumb keys (15f1a089) + +##### New Features + +* add new client side hooks (a15ef53c) +* remove max age since cache is cleared when thumbs change (ab96f526) +* show alt text instead of images in teasers (#9107) (d28581eb) +* migration of old topic thumbs to new format (74d73313) +* allow plugins to override ACP relogin challenge (4c87f301) +* add user.email.confirmByUid for sso plugins (80de572a) +* add thumbs to category data return (24e754d1) +* broken test for bad topic thumbs logic (ce8057f3) +* clent-side modal for managing topic thumbs (a30c8ab5) +* raise maximum thumb size to 512 (37c367d6) +* associate topic thumbs with post uploads (for the mainPid) (1c5cdb51) +* helper method to get thumbs by pid (cb7e4cda) +* closes #9048, tests for topic thumbs routes, write API schema (59506833) +* tests for topic thumbs (4152aa55) +* server-side work for #9047 (ef7d6db9) +* core work for #9042, thumb deletion now accepts uuids (b5d910f5) +* more work on topic thumbs refactor (90497e3e) +* expose uploaded thumbnails to client-side via API (1257aa98) +* server-side routes for handling multiple topic thumbnails (7e9e08f7) +* allow uploadThumb controller to be called in code (98cd9e35) +* move upgrade script and make it shorter (60e7de0d) +* allow clicks on navigator, clean dupe code (74274b60) +* socket.io 3 changes (#8845) (1c45fa1b) +* **deps:** update lavender to allow category sections (6d186be0) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.5.4 (#9120) (fff0cea6) + * update dependency nodebb-theme-slick to v1.3.7 (#9112) (30688b1b) + * update dependency nodebb-theme-lavender to v5.0.17 (#9111) (877f4673) + * update dependency nodebb-theme-vanilla to v11.3.10 (ff18cdfa) + * update dependency validator to v13.5.2 (#9094) (5d718348) + * update dependency nodebb-theme-vanilla to v11.3.9 (#9091) (f37dbeed) + * update dependency nodebb-plugin-composer-default to v6.5.3 (d036408d) + * update dependency nodebb-plugin-composer-default to v6.5.2 (b07fb9ab) + * bump composer-default to 6.5.0 (0db49121) + * update dependency autoprefixer to v10.1.0 (024d1fef) + * update dependency nodebb-theme-persona to v10.3.8 (#9084) (25f697b1) + * update socket.io packages to v3.0.4 (62463430) + * update dependency nodebb-theme-persona to v10.3.7 (c22cdb51) + * update dependency nodebb-theme-persona to v10.3.6 (#9077) (5937fbaf) + * update dependency nodebb-plugin-mentions to v2.13.6 (#9071) (a535350f) + * update dependency nodebb-theme-slick to v1.3.6 (#9072) (19c438c6) + * update dependency nodebb-widget-essentials to v5 (#9070) (d7f5efd9) + * update dependency nodebb-plugin-markdown to v8.12.4 (8fb814ba) + * update dependency nodebb-theme-persona to v10.3.5 (#9060) (0d082280) + * update dependency nodebb-theme-persona to v10.3.4 (#9059) (84e4e480) + * update dependency nodebb-theme-persona to v10.3.3 (3d7e2e1e) + * update dependency nodebb-theme-persona to v10.3.2 (#9056) (f49ce4ad) + * update dependency nodebb-theme-persona to v10.3.1 (#9054) (344caf5c) + * update dependency nodebb-theme-lavender to v5.0.15 (#9053) (e7d72d8a) + * update dependency nodebb-theme-persona to v10.3.0 (#9052) (dcd6fbaf) +* api usage (feecd665) +* #9117, lower query before search (4404e32e) +* #9114, fix client side groups update for memberPostCids (3ed55799) +* test (2dee3cbe) +* don't check "select all" if there are no enabled checkboxes (3ba05755) +* #9074, fix svg uploads (8f938eba) +* #9100 topic thumbs in OG image tags (ab987408) +* update version removal comments to 1.17 for some features (378a3a69) +* postgres is slow:tm: (05dd8597) +* derp? (f8dff94a) +* attempted fix for psql test in topic thumbs (9a4ea04a) +* use getSortedSetRange instead of getSortedSetsMembers (edf67f34) +* tests (bd5c4a5c) +* bad topic thumbs logic on local thumb upload (e83baa97) +* #9092, Topic thumbnails do not work with third-party uploaders (3e54b70c) +* move topic thumb tests to root level, so they actually get run by mocha (dd448e2b) +* tests for topic thumbs (9681557f) +* iteration logic bug (2170c400) +* spec (ae943974) +* changes to thumb resizing logic (67cf5e83) +* use file lib instead of direct fs module access (08736b18) +* added back missing topic thumb tests that were removed in last commit (c043cfeb) +* tests (5ec3b3d0) +* hack uploader to handle a response from v3 write api (41379e27) +* #9055, non-standard API response from addThumbs route (340387c1) +* do not allow thumb deletion route to arbitrarily delete other files in uploads folder (c09c238e) +* missing file added (ef10b6b7) +* references to since-removed Topics.thumbs.resizeAndUpload (1f0c1cd2) +* #9041, remove Topics.thumbs.resizeAndUpload() (43dc3e3e) +* #9040 (708b1c33) +* spec (1949d20a) +* #9085, dont prevent admins from deleting other users (0f480be6) +* show errors when user delete fails (ff2aa17b) +* dont start logout timer if adminReloginDuration is disabled (dd9ed236) +* #9045, no post usage info if '/files/' path received (efa4eca0) +* reconnectin no longer fires on socket.io 3 (13d5a144) +* default values, clamp postsPerPage/topicsPerPage to max (1f32d387) +* #9081, load raw settings before merging (9da0ed40) +* #9068 (86f0f82b) +* remove old utils.slugify tests (10cfdd4c) +* dont strip tags (792e9e70) +* #9065, settings v2/v3 conflict (91c20cec) +* #9063, missing handler for passwordless accounts in admin.checkPrivileges middleware (970ccb5a) +* timeago in navigation (a389a31b) +* navigation fixes (163d1a39) +* cache some jquery objects (73d2f51d) +* add ev.cancelable (63d08395) +* #9046, pretranslate string (790f4e45) +* redirect external with absolute urls (648f6215) +* external path for subfolder installs (458bfc0f) +* **spec:** broken link to status component (d31aae16) + +##### Performance Improvements + +* don't load thumbs if disabled globally, cache thumb results (2d5a224b) +* dont build identical langs (bb6cc49c) + +##### Refactors + +* topic thumbs lib to topics.thumbs (4fc9da81) + +#### v1.15.5 (2020-12-03) + +##### Chores + +* up persona (c111bde1) +* incrementing version number - v1.15.4 (a1b658d9) +* update changelog for v1.15.4 (252dddfc) + +##### New Features + +* add socket connect/disconnect action hooks (fcb10ebd) +* allow modifiying browser title on ajaxify (698718f8) + +##### Bug Fixes + +* #9032 (64ac483d) +* sso redirect on /login & /api/login (5d00b089) +* use file lib instead of directly accessing fs (for Assert.path) (3ea66f84) +* check uid as well (ef6c3b00) +* #7597, fix progress bar of cover/profile uploads (7e867cf9) +* **deps:** update dependency nodebb-plugin-spam-be-gone to v0.7.7 (#9039) (c7f2640a) + +#### v1.15.4 (2020-12-02) + +##### Chores + +* up persona (dde3171c) +* fallbacks for nodebb.error (82ca3760) +* fallbacks for nodebb.topic (5b269bc5) +* remove test code (07fe959c) +* incrementing version number - v1.15.3 (d1ae08fa) +* update changelog for v1.15.3 (cf157c9b) + +##### New Features + +* #9005, use timestamp in profile/cover images (5f0f476b) +* #8983, update pin tooltip in topic (954dc5b7) +* option to allow auto-joining of groups (optionally skip the "request membership" step) (685f3c6a) +* user notification settings for group.leave event (c1a7968d) +* add defaults for composer help (0cba2691) +* #8900, postQueue setting for category (1eb5fabd) +* #8960, update view count after merge (14bb0a44) +* use correct code (557f0f56) +* #8989, convert widget nav to dropdown (4c650aee) +* add handler for 501 api response (007a3258) +* add translation key for pin icon label with expiry (12b3aa0d) +* add pinExpiry and pinExpiryISO to topic data (ad8e7700) +* add cancel button to pin expiration modal (e1432caf) + +##### Bug Fixes + +* #9032, fix login redirect for sso plugins (6f68f4d2) +* #8962, dont show null for purged targets (86b7f8a5) +* selector on hooks page (3488daa1) +* notification on group.leave incorrectly showing "Guest has left X group" (f7558c60) +* #9019, add missing lang strings (b46d2f93) +* #9018 (e45b5cba) +* #9015, add default value for dailyDigestFreq (0f1fc10f) +* spec (cfb7b113) +* #8997, don't send notifications if uids already in group (f7c738de) +* #9002 ban templates not user friendly (4317cdea) +* #9010, show rest of info even if clusterMonitor priv is not granted (202dcef4) +* #9007 revoke old sessions after adding (d46740f8) +* guests dont always have sid (70073653) +* allow guests to see their replies immediately (a4fe4d3c) +* privs headers (92d1b8a6) +* pwd reset test (f25000cb) +* #8991, logout on password reset, dont verify email if password expired (5080f357) +* don't show topic search if no search privilege (8adbf54a) +* #8998, allow guests to use write api to post/reply (3cd0c9a4) +* guest handles to user displayname as well (5a137a0d) +* timestamp in queue, add post queue strings (546f58bf) +* #8992, set email:confirmed for first admin user (7f5efc3e) +* typo in upgrade script, closes #8990 (80f0750b) +* #8984, post-queue ux (1269103f) +* order (9ab4fb41) +* #8982, copy color on tag rename, dont copy if target exists (d3c04afb) +* tests (b596e948) +* api test (77a6dbac) +* remove dupe (cbbda451) +* csv test (3de692cd) +* spec, remove old tests (4afdf8bc) +* #8969, export csv to file (6e6a7a8f) +* spec for /tag (88e5cda5) +* #8980, fix lang string (f4d217d8) +* #8979 (bf171adc) +* #8971, disallow flags of privileged users (mods, gmods, admins) (1e7cf1cb) +* #8974, with password login for approval queue (dadb2527) +* #8974, dont show wrong message on register queue (fdca8b16) +* #8973, fix timestamp on ban modal (5c3deb4b) +* #8968, don't show topic search if search is not enabled (c8554b78) +* flicker on tooltips if server call takes long time (4c7374ea) +* missing select/clear all checkbox added to category privileges template (#8967) (a56a6577) +* use package.name for theme.id (#8965) (ba3981e2) +* winston usages (b8cafefc) +* #8957 (414caac0) +* dont go back after delete account actions (7e6427bc) +* error message (47a19d67) +* #8954, clear purged replies and toPids (#8959) (5bb5ec46) +* #8955, popstate to purged topic should go to homepage (39dae0aa) +* 'already-deleting' error on subsequent account content deletions (21d6225c) +* #8949, faster upgrade script (93863bb3) +* **deps:** + * update dependency nodebb-theme-vanilla to v11.3.8 (#9031) (18707940) + * update dependency nodebb-theme-slick to v1.3.5 (#9030) (4085f3e6) + * update dependency nodebb-theme-persona to v10.2.98 (#9029) (f7d60c43) + * update dependency nodebb-theme-persona to v10.2.97 (42b23a3b) + * update dependency nodebb-plugin-composer-default to v6.4.10 (#9025) (43bbfb67) + * update dependency nodebb-theme-vanilla to v11.3.7 (#9024) (3f597a55) + * update dependency nodebb-plugin-composer-default to v6.4.9 (#9023) (110186b9) + * update dependency nodebb-theme-slick to v1.3.4 (#9022) (8dc1437e) + * update dependency nodebb-theme-persona to v10.2.96 (#9021) (2c9cd286) + * update dependency nodebb-plugin-composer-default to v6.4.8 (#9017) (1f5f2e1d) + * update dependency nodebb-plugin-markdown to v8.12.3 (9004319e) + * update dependency validator to v13.5.1 (7b39cf4b) + * update dependency nodebb-theme-persona to v10.2.95 (#9001) (4ddab380) + * update dependency nodebb-theme-persona to v10.2.94 (#9000) (877d8554) + * update dependency nodebb-theme-persona to v10.2.93 (#8999) (c44d9d2f) + * update dependency nodebb-theme-persona to v10.2.92 (#8995) (346b91eb) + * update dependency nodebb-theme-vanilla to v11.3.6 (#8987) (6c980db1) + * update dependency nodebb-theme-persona to v10.2.91 (#8986) (8258536a) + * update dependency autoprefixer to v10.0.4 (#8985) (fad2d342) + * update dependency nodebb-plugin-markdown to v8.12.2 (f5714452) + * update dependency nodebb-theme-persona to v10.2.90 (5664807d) + * update dependency nodebb-theme-vanilla to v11.3.5 (19fe2493) + * update dependency nodebb-theme-persona to v10.2.89 (ad60bc06) + * update dependency autoprefixer to v10.0.3 (b2f0d38f) + * update dependency benchpressjs to v2.3.0 (6c316be4) +* **openapi:** + * spec for c1a7968d23f0809e7012edfccf49b193749998ec (69864b87) + * spec for 685f3c6aa6173383d6c31b87ed51cf8ed0ca44ce (1bb75e76) +* **acp:** + * #9008 undefined link for "no users browsing" state on dashboard (54dc449f) + * #9009 no-users-browsing untranslated on dashboard (286243cd) +* **spec:** + * from 6e6a7a8f8a9a75500ba1f336cabc882234212f88 (acb57666) + * breaking tests (88a60473) + * broken test due to canFlag addition (1b1205a9) + +##### Refactors + +* remove old hack (73746bb4) +* add TopicObjectSlim common schema (22715d54) +* pin/lock threadTools to use topicCommand, rewrote topicCommand to match categoryCommand signature (15c6f32c) + +#### v1.15.3 (2020-11-26) + +##### Chores + +* bump persona (720170a9) +* remove console.log (6a819944) +* move topic route schema up two levels as slug and index are optional (ae402e21) +* move category route schema up two levels as slug and index are optional (b3b501d7) +* up persona (0ffc091b) +* up persona (2f2f0ab7) +* up persona (5c9ff18e) +* add missing plugin hook deprecation warning (98a05e4d) +* pin autoprefixer to latest (46eb7701) +* incrementing version number - v1.15.3-beta.0 (28fa03bd) +* up persona (81984285) +* up slick (5f2fe883) +* incrementing version number - v1.15.2 (5867a5b9) +* update changelog for v1.15.2 (37965d45) +* **spec:** replace ugly hack with another hack for optional properties (45a4f136) +* **deps:** + * update dependency lint-staged to v10.5.2 (db205e2e) + * update dependency eslint to v7.14.0 (80404216) + +##### New Features + +* add topicOwnerPost #8778 (c037779f) +* clear reset tokens on user delete (4f37eddc) +* select/clear all checkboxes in privilege table (#8941) (00e75de7) +* show ban reason and expiry in write api responses, if user is banned (afb26bfe) +* automatically unban users in onSuccessfulLogin (6e5ec3f8) +* #8925, #8924 (3f337b5d) +* human readable uptime (672d4da0) +* allow ACP API access to bearer tokens (3b1c03ed) +* allow pins to expire (if set) (#8908) (046d0b16) +* #8637 (903e9d82) +* add displayname into user obj #8637 (#8909) (9ca44e6f) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.2.87 (#8946) (167ab3a4) + * update dependency nodebb-theme-persona to v10.2.86 (#8945) (5af5cb85) + * update dependency nconf to ^0.11.0 (58152606) + * update dependency postcss to v8.1.10 (5363ebbb) + * update dependency nodebb-theme-persona to v10.2.85 (#8928) (abc32d62) + * update dependency postcss to v8.1.9 (d1cb5d48) + * update dependency postcss to v8.1.8 (b47a470b) + * update dependency nodebb-theme-vanilla to v11.3.4 (#8914) (589f7a56) + * update dependency nodebb-theme-persona to v10.2.80 (#8913) (38127b04) + * update dependency nodebb-theme-persona to v10.2.79 (#8907) (8e1b2458) + * update dependency nodebb-theme-persona to v10.2.75 (b9856179) +* add topic uid to infinitescroll (6771ca15) +* #8943, session mismatch modal thrown on login (race condition) (d5845169) +* #8912 (ac734b83) +* #8918 (e32cd31e) +* basepath for r.js modules (3af4d13f) +* test (61c6a762) +* move meta.getServerTime call to admin namespace (1c0e8c16) +* add client side check for userslug #8939 (f20c12ee) +* #8939, fix username change notification getting filtered out (0ca40af8) +* #8931, fix lang string (cf903e4e) +* #8932, fix client side error when updating username (95a3f030) +* bug with Topics.resizeAndUploadThumb not checking for extension validity (eab4ca71) +* #8933 (2b73a14e) +* #8929, fix popular, top rss feed urls (77f0bff5) +* a derp (5dd3b031) +* spec (b18e7e31) +* improper handling of scheme-relative URLs in topic thumb logic (4ca62dc4) +* https://github.com/NodeBB/NodeBB/pull/8685 (5fa09832) +* on OP edit, call helper method to upload and resize thumb (f33a9185) +* https://github.com/NodeBB/NodeBB/pull/8759 (9ee1fb49) +* spec (c2bb6123) +* guest displayname (1be08b2e) +* show messages after app load (46acbfda) +* restart on js changes in vendor (814771bd) +* #8915, fix queue not being cleared after firing click events (6ef7e867) +* spec, only call modifyUser on unique user objects (dbd814c2) +* setting (ae5d4405) +* spec (8d060065) +* group userTitles translation escapes (e9585b9b) +* remove params from error log (965671a9) +* **spec:** always show thumb in topic response (493c568a) + +##### Refactors + +* remove unused require (db1c140f) +* move API banned response handler to separate internal method (906d7d73) +* move plugin hook methods to plugin.hooks.* (6e2da996) +* remove breaking change in pin expiry (ef3df47a) +* use categoryCommand local method for pin/lock in category tools (#8917) (00aee84b) + +#### v1.15.2 (2020-11-18) + +##### Chores + +* incrementing version number - v1.15.2-beta.1 (20c05e80) +* remove debug log (0a0b4661) +* incrementing version number - v1.15.2-beta.0 (996174a1) +* **deps:** update dependency smtp-server to v3.8.0 (5f5f0edb) + +##### Documentation Changes + +* openapi schema for user/group exist check, session deletion (bcccb331) + +##### New Features + +* #5274 (4e9b10ab) +* #4456 (fb567a7a) +* #8475, allow flagging self posts (a6afcfd5) +* #7550, show message if post is queued when js is disabled (120999bf) +* #8171, add oldCategory if topic is moved (35f932cd) +* #8204, separate notification type for group chats (b44ddecd) +* add test for custom translations (7928036a) +* https://github.com/NodeBB/NodeBB/issues/8147 (1d6bcbeb) +* invites regardless of registration type, invite privilege, groups to join on acceptance (#8786) (3ccebf11) +* add nodejs version to issue template (29c2ca94) +* allow groups to specify which cids to show member posts from (#8875) (8518404e) +* **api:** account deletion routes for the Write API (#8881) (a0b7a823) +* **deps:** benchpressjs@2.2.1 (#8887) (d30ea256) + +##### Bug Fixes + +* #6407, fix feeds (fa4177c3) +* navigation highlight (62b62821) +* benchpress warnings (a87ccccc) +* benchpress warnings (dfdc0c42) +* internal helper method hasGlobalPrivilege, DRY (e1d7c4d8) +* spec (2f4653a3) +* #8884, remove header/footer cache (e4d2764d) +* check tid in event handlers client side (9dac9630) +* #8883 (f14e42d8) +* #8872 missing admin/menu language key+fallback (fdab76f8) +* run every hour, dont show message if average_time is 0 (51b7eca1) +* add back test timeout for exports (b3e00489) +* pass length to messaging checkContent hook (dc9668e4) +* **deps:** + * update dependency nodebb-theme-persona to v10.2.74 (#8905) (5f6137f0) + * update dependency nodebb-theme-persona to v10.2.73 (#8904) (c2019b7b) + * update dependency nodebb-plugin-composer-default to v6.4.7 (#8902) (b7b1f203) + * update dependency nodebb-theme-persona to v10.2.72 (#8903) (bee8cfe4) + * update dependency nodebb-theme-vanilla to v11.3.3 (422aa7f0) + * update dependency nodebb-theme-persona to v10.2.71 (3b6e71d5) + * update dependency nodebb-theme-persona to v10.2.70 (d6dd1cb6) + * update dependency nodebb-theme-slick to v1.3.2 (2ce1fcd3) + * update dependency nodebb-theme-vanilla to v11.3.2 (9f2d0d42) + * update dependency nodebb-theme-persona to v10.2.69 (15810643) + * update dependency sharp to v0.26.3 (84d54577) + * update dependency nodebb-plugin-mentions to v2.13.5 (dde9f189) + * update dependency json2csv to v5.0.5 (b63b7ae5) + * update dependency benchpressjs to v2.2.2 (d1e804aa) + * update dependency nodebb-theme-vanilla to v11.3.1 (#8878) (85aaeded) + * update dependency nodebb-theme-slick to v1.3.1 (bbfb276a) + * update dependency nodebb-theme-persona to v10.2.68 (ec70329a) + * update dependency nodebb-plugin-spam-be-gone to v0.7.6 (#8877) (45922fae) + * update dependency nodebb-plugin-spam-be-gone to v0.7.5 (#8876) (48e82520) + * update dependency nodebb-plugin-spam-be-gone to v0.7.4 (#8874) (eab27f23) + +##### Refactors + +* client-side handlers for user invitations (d83eb7f8) +* async/await controllers/index.js (5598130a) +* less dupe code (8fbe8324) + +##### Tests + +* new api test to ensure each path's parameters are defined in context (97842c43) +* updated test name to be more specific (319cfeaa) + +#### v1.15.1 (2020-11-11) + +##### Chores + +* incrementing version number - v1.15.1-beta.0 (e033da8a) +* fallback l10n for admin-settings-api (8368c25b) +* **deps:** + * update dependency eslint to v7.13.0 (bcbc0854) + * update dependency eslint-config-airbnb-base to v14.2.1 (d227fe9f) + * update commitlint monorepo to v11 (90bcfa6d) + +##### New Features + +* #8864, add action:events.log (9c5c32d4) +* show db info side by side (62c0454c) +* add language keys for admin-settings-api (d32e4e02) +* #8824, cache refactor (#8851) (f1f9b225) +* move mkdirp to beforeBuild so it doesnt get called twice (6255874e) +* group exists API call in write api (d2631922) +* user exist route in write api (1446cec7) +* new shorthand route /api/v3/users/bySlug/:userslug (60e1e99b) +* allow passwords with length > 73 characters (#8818) (512f6de6) +* #8821, allow guest topic views (9e3eb5d4) + +##### Bug Fixes + +* #8869, dont escape category title,description twice (567c5f20) +* refresh flags list on bulk action success (769aba0a) +* test breakage from f300c933a50263039a57811f8cc716df39a138b0 (ee4d90f6) +* remove some unnecessary jquery wrappers (9f7902ef) +* send back jquery object to keep backwards compat (978f1ee0) +* use header/footer cache in prod (a0164b1c) +* add missing maxAge to cache (05a92885) +* clear header-cache after each suite (3f5f38dd) +* show msg on fail (255cf43e) +* spec (fe63c6ae) +* guest header/footer cache (2e446392) +* #8846, possible fix (74951f59) +* winston error message (16d03975) +* permanent redirect on user api redirect shorthand (6b196a20) +* user exist route needs no authentication (f2bb42c0) +* #8840, don't crash if /compose route is called with no query params (c61dee4b) +* XSS in event:banned messaging modal (f68bce86) +* #8838, fix chat dropdown timestamps (78ee8332) +* #8836, truncate fullname (76cd5b0f) +* #8827, do not require admin:users privilege to ban users (891a1ea2) +* **deps:** + * update dependency nodebb-plugin-mentions to v2.13.4 (1460a7a8) + * update dependency diff to v5 (72d1b3cd) + * update dependency nodebb-theme-persona to v10.2.67 (#8847) (e250c3f1) + * update dependency json2csv to v5.0.4 (#8865) (ba7b23ac) + * update dependency postcss to v8.1.7 (#8866) (2946bb16) + * update dependency nodebb-theme-slick to v1.2.40 (#8863) (20f4fe08) + * update dependency nodebb-plugin-mentions to v2.13.3 (#8862) (c18f4491) + * update dependency benchpressjs to v2.1.0 (14ba6383) + * update dependency benchpressjs to v2.0.9 (381a32ab) + * update dependency mongodb to v3.6.3 (#8841) (7e273e77) + * update dependency nodebb-theme-persona to v10.2.66 (#8839) (00f90cd9) + * update dependency nodebb-plugin-mentions to v2.13.2 (#8835) (064c99cd) + * update dependency postcss to v8.1.6 (e0cf9740) + * update dependency @nodebb/socket.io-adapter-mongo to v3.1.1 (#8831) (40eb658b) + * update dependency @nodebb/mubsub to v1.7.1 (#8830) (7b8a5567) + * update dependency postcss to v8.1.5 (9f5ef9d0) +* **#8828:** web install templates now compiled (#8832) (de5a21f1) +* **acp:** max-height for plugin menu list (eec630f1) + +##### Refactors + +* move session revocation route to write api (f300c933) +* change Benchpress.parse to .render (#8856) (e128264b) + +#### v1.15.0 (2020-11-04) + +##### Breaking Changes + +* remove toolsVisible in post tools' menu [breaking] (7e7366be) + +##### Chores + +* update changelog for v1.15.0-rc.5 (69f4d5ac) +* incrementing version number - v1.15.0-rc.5 (4bd2788b) +* add info log into tests (b6d86878) +* update renovate config to automatically merge non-major version bumps #yolo (1c8b8ce1) +* update changelog for v1.15.0-rc.4 (16882941) +* incrementing version number - v1.15.0-rc.4 (57b49320) +* update changelog for v1.15.0-rc.3 (2738041b) +* incrementing version number - v1.15.0-rc.3 (6de7760a) +* bump persona (e0b67817) +* update changelog for v1.15.0-rc.2 (c3a7ab54) +* incrementing version number - v1.15.0-rc.2 (7c084134) +* update changelog for v1.15.0-rc.1 (4f49b3da) +* incrementing version number - v1.15.0-rc.1 (943424b5) +* update changelog for v1.15.0-rc.0 (aab5f018) +* incrementing version number - v1.15.0-rc.0 (8d48455b) +* update changelog for v1.15.0-beta.30 (39648722) +* incrementing version number - v1.15.0-beta.30 (2dd3c962) +* some optimizations for codeclimate (4a63c20a) +* update changelog for v1.15.0-beta.29 (63696c40) +* incrementing version number - v1.15.0-beta.29 (fca176d2) +* refactor src/emailer.js (75459517) +* update changelog for v1.15.0-beta.28 (fd975a66) +* incrementing version number - v1.15.0-beta.28 (57f83162) +* update changelog for v1.15.0-beta.27 (70673824) +* incrementing version number - v1.15.0-beta.27 (78fad240) +* lint notifications.js (4fc84e9f) +* update changelog for v1.15.0-beta.26 (5e01d288) +* incrementing version number - v1.15.0-beta.26 (62c44095) +* up persona (ff8a833a) +* up persona (4a0f54ae) +* update changelog for v1.15.0-beta.25 (240a04b4) +* incrementing version number - v1.15.0-beta.25 (1124d4ee) +* up persona (032e6001) +* update changelog for v1.15.0-beta.24 (72ab5ba1) +* incrementing version number - v1.15.0-beta.24 (23ba071d) +* up persona (5407bf48) +* up persona (4c2eab4b) +* up persona (91133b0f) +* up persona (bcac0805) +* up persona (9dc4db1f) +* up persona (ba70a1bf) +* update changelog for v1.15.0-beta.23 (e6ea208c) +* incrementing version number - v1.15.0-beta.23 (61a04eb9) +* update changelog for v1.15.0-beta.22 (59ee74c2) +* incrementing version number - v1.15.0-beta.22 (9c9329ee) +* update changelog for v1.15.0-beta.21 (8089542e) +* incrementing version number - v1.15.0-beta.21 (966cdc13) +* update changelog for v1.15.0-beta.20 (1650f303) +* incrementing version number - v1.15.0-beta.20 (c8e57ec1) +* update changelog for v1.15.0-beta.19 (9cde5105) +* incrementing version number - v1.15.0-beta.19 (2eb7c284) +* update changelog for v1.15.0-beta.18 (b2ca9686) +* incrementing version number - v1.15.0-beta.18 (e096791e) +* update changelog for v1.15.0-beta.17 (d6178158) +* incrementing version number - v1.15.0-beta.17 (f1c28092) +* update changelog for v1.15.0-beta.16 (e08297ff) +* incrementing version number - v1.15.0-beta.16 (6043c9cb) +* update changelog for v1.15.0-beta.15 (f878b92c) +* incrementing version number - v1.15.0-beta.15 (10b94f9b) +* update changelog for v1.15.0-beta.14 (5e60d092) +* incrementing version number - v1.15.0-beta.14 (6ca4b86f) +* update commitlint config (61a8c6f0) +* update changelog for v1.15.0-beta.13 (ca8d492b) +* incrementing version number - v1.15.0-beta.13 (bdd71c51) +* update changelog for v1.15.0-beta.12 (0a242605) +* incrementing version number - v1.15.0-beta.12 (b852c9b7) +* update changelog for v1.15.0-beta.11 (f07ba866) +* incrementing version number - v1.15.0-beta.11 (c1ce7391) +* update changelog for v1.15.0-beta.10 (9c34eced) +* incrementing version number - v1.15.0-beta.10 (f252d4d7) +* update changelog for v1.15.0-beta.9 (affc7927) +* incrementing version number - v1.15.0-beta.9 (8dc513da) +* update changelog for v1.15.0-beta.8 (3b960c3b) +* incrementing version number - v1.15.0-beta.8 (34bb869c) +* update changelog for v1.15.0-beta.7 (e449ff9a) +* incrementing version number - v1.15.0-beta.7 (fd917b8e) +* update changelog for v1.15.0-beta.6 (a7f03b64) +* incrementing version number - v1.15.0-beta.6 (a9019cbe) +* update changelog for v1.15.0-beta.5 (0e90064e) +* incrementing version number - v1.15.0-beta.5 (81e4c4df) +* update changelog for v1.15.0-beta.4 (6c4aed8c) +* incrementing version number - v1.15.0-beta.4 (f2726a6d) +* update changelog for v1.15.0-beta.3 (11e2ccab) +* incrementing version number - v1.15.0-beta.3 (39178c2d) +* update changelog for v1.15.0-beta.2 (d8a9f1c3) +* incrementing version number - v1.15.0-beta.2 (59b50d0a) +* update changelog for v1.15.0-beta.1 (aeca19d5) +* incrementing version number - v1.15.0-beta.1 (4fa57fbb) +* incrementing version number - v1.15.0-beta.0 (bff80983) +* incrementing version number - v1.14.3-beta.16 (d9a05035) +* incrementing version number - v1.14.3-beta.15 (e2a253f2) +* incrementing version number - v1.14.3-beta.14 (9500871e) +* incrementing version number - v1.14.3-beta.13 (b5a2e4b6) +* incrementing version number - v1.14.3-beta.12 (f4c986a7) +* incrementing version number - v1.14.3-beta.11 (8618c32a) +* incrementing version number - v1.14.3-beta.10 (fa341714) +* incrementing version number - v1.14.3-beta.9 (9945c409) +* incrementing version number - v1.14.3-beta.8 (b5dcce9c) +* incrementing version number - v1.14.3-beta.7 (2531c44c) +* incrementing version number - v1.14.3-beta.6 (97088f68) +* incrementing version number - v1.14.3-beta.5 (a33a8a5a) +* incrementing version number - v1.14.3-beta.4 (55b3e376) +* incrementing version number - v1.14.3-beta.3 (5a5abf3c) +* incrementing version number - v1.14.3-beta.2 (bbab183f) +* incrementing version number - v1.14.3-beta.1 (2c06f6ac) +* incrementing version number - v1.14.3-beta.0 (3f87d5f9) +* update changelog for v1.14.2 (cd94c24a) +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* **deps:** + * update dependency mocha to v8.2.1 (35e725d1) + * update dependency lint-staged to v10.5.1 (2fa78e43) + * update dependency eslint to v7.12.1 (#8799) (224502d8) + * update dependency lint-staged to v10.5.0 (#8797) (1f2eca6a) + * update dependency eslint to v7.12.0 (#8791) (3108f628) + * update dependency lint-staged to v10.4.2 (#8773) (4bfd0087) + * update dependency eslint to v7.11.0 (#8747) (bb85c059) + * update dependency lint-staged to v10.4.1 (#8771) (08a240fa) + * update dependency mocha to v8.2.0 (#8772) (a471b1af) + * update dependency eslint-plugin-import to v2.22.1 (aacf8f22) + * update dependency eslint to v7.10.0 (#8687) (119ab719) + * update dependency lint-staged to v10.4.0 (2833624e) + * update dependency eslint to v7.9.0 (b1d781e8) + * update dependency eslint to v7.8.1 (#8597) (39110276) + * update dependency lint-staged to v10.3.0 (#8608) (dc1f1db9) + * update dependency mocha to v8.1.3 (#8588) (05efeff6) + * update dependency eslint to v7.8.0 (#8594) (e1b98142) + * update dependency lint-staged to v10.2.13 (efc30e97) + * update dependency mocha to v8.1.2 (#8579) (c722b0e5) + * update dependency grunt to v1.3.0 (df61d080) + * update commitlint monorepo to v9.1.2 (877cdfb9) + * update dependency eslint to v7.7.0 (#8564) (f1398da2) + * update dependency jsdom to v16.4.0 (#8554) (bb8f7c74) + * update dependency eslint-config-airbnb-base to v14.2.0 (#8396) (fde4f110) + * update dependency eslint-plugin-import to v2.22.0 (#8390) (788a8bfe) + * update dependency mocha to v8.1.1 (fe352eb1) + * update dependency eslint to v7.6.0 (#8540) (37418375) + * update dependency mocha to v8.1.0 (#8536) (72a78833) + * update dependency @apidevtools/swagger-parser to v10.0.1 (#8517) (8c498fa1) + * update dependency nyc to v15.1.0 (#8353) (c872bd8b) + * update dependency eslint to v7.5.0 (#8463) (b2be329c) + * update dependency jsdom to v16.3.0 (#8483) (82ada1bd) + * update dependency grunt to v1.2.1 (#8462) (b2dc6d60) + * update dependency @apidevtools/swagger-parser to v10 (9e2c3ce0) +* **writeapi:** cleanup (f6782471) + +##### New Features + +* add back error handling for a number of api calls (1afd2150) +* #8823, remove hardcoded write concern (a338f527) +* #8817, add login clientside hooks (715775a7) +* use github actions for ci (#8811) (eddf4a4f) +* allow mods/admins to see deleted posts on user profile (6e85920c) +* rearrange buttons on manage/users (27016d22) +* #8801, disable express compression by default (6ac73ccb) +* allow passing subset of user settings on update route (ec03af7a) +* wip, write api tests framework (b156b8b5) +* add filter:category.getFields (88a07e69) +* move postercount to topic hash (0db0231c) +* add free and total mem usage to info (a7b6d0df) +* new filter filter:teasers.configureStripTags (177a9610) +* send 'Vary' header when ACAO header set (d68ffea8) +* add filter.topics.getPostReplies (7a019494) +* topic reply to use api lib (also + missing file) (21974a77) +* send 401 for invalid-uid (ede9435f) +* async/await admin/search (c913900e) +* ignore test folder (2927509a) +* send back 403 on no-privileges error (14f9d8b0) +* refactor groups.delete (8ae1f81c) +* move groups.join to api (d69e503d) +* allow plugins to define api routes (9dd3cc04) +* require https if nodebb is configured with https url (a4ba2389) +* add nyc config (3326d80c) +* change user search to use filters array (a2edb86d) +* add filter (959314c9) +* require csrf token if not using bearer token (1e07886f) +* #8662, verified/unverified user groups (682e926c) +* more fixes (700e1e43) +* more work (40a05b70) +* wip admin/users (b038ac07) +* set unread false for guests (7beaf490) +* add stack to deprecate message (01265d08) +* add checkbox tests (d76229c0) +* add test for serialize/deserialize form (e92d4719) +* disable write api tests until fixed (ae5fb103) +* #8734, add slugify module, deprecate utils.slugify (bddfcb58) +* #8734, move bootstrap-tagsinput to package.json (f16c8268) +* #8734, move deserialize/serialize to package.json (eab7489e) +* #5964, #8734 remove colorpicker (948f2614) +* #8734 remove unused files (c721625a) +* #8734, move sortable to package.json (cc705e5e) +* #8734, move bootbox to package.json (300a8755) +* load jquery-form before using (3b231360) +* #8734, jquery-ui, jquery-form, timeago (#8748) (fda2aedf) +* remove unused textcomplete file (59311a63) +* #8734, remove semver.browser (ae3a231f) +* #8734, move slideout to package.json (2c1897b3) +* #8734, move tinycon to package.json (9c157de0) +* #8734, move visibilityjs to package.json (43589a74) +* #8734, move nprogress to package.json (a46cbb62) +* #8734 move r.js to package.json (aa08f882) +* revoke user sessions above threshold (#8731) (b3ed26ac) +* filter:settings.get plugin hook (c7d15dfa) +* topic delete/restore/purge/(un)pin/(un)lock (da25ce4d) +* add new api page to ACP menu (5fc7e7bf) +* management of API tokens via ACP (49652e6f) +* added DELETE /api/v1/categories/:cid route (3072de48) +* added PUT /api/v1/categories/:cid route (e942ad81) +* added POST /api/v1/categories route (dc666fd8) +* added PUT/DELETE /api/v1/users/:uid/ban routes (a5af2dc8) +* added POST and DELETE /api/v1/users/:uid/follow routes (b5bbcbae) +* added PUT /api/v1/users/:uid/password route (7aed174e) +* added DELETE /api/v1/users/:uid and DELETE /api/v1/users (a1ddc210) +* added openapi.yaml file for BEST documentation (91b79f17) +* added checkRequired middleware for API calls (7b6d43bc) +* migrating write-api skeleton into core (ec5c48b1) +* remove post/header selector (1542a5d7) +* category filter on post queue (#8710) (5d9a8681) +* #6594, add top/popular sections to digest email (#8709) (e60357d2) +* dedicated sorting buttons for plugin ordering in ACP (1761e13d) +* #8233, search sub categories (54737d30) +* move service-worker.js into its own file (f4d76f1e) +* analytics:maxCache setting in ACP (14ba1a6d) +* #8695, allow sort for guests (ea0f3262) +* up recommended size to 512x512 + ACP labels for PWA (9c5b6907) +* upload maskable icon for PWA (6478b32d) +* show top 5 trending plugins in new tab in Extend > Plugins (b12e8d63) +* register service worker, #8126 (aa268d5e) +* add theme-color meta tag for browser address bar (5172d731) +* basic service worker, minimum requirement for for a2hs; see #8126 (f69697b3) +* option in ACP to configure notification/email delay for chats (5b427a0c) +* allow autocomplete to pass optional params to user.search (611f3c61) +* upon plugin installation via ACP, check against nbbpm first (5ddf7022) +* up benchpress (8e88ccd6) +* add row highlighting for popular and unread (2cd5f959) +* return to previous page and/or category after marking topic unread (48a8ec4a) +* add missing lang key (bd9b6c99) +* add number of posters to topic (83d4e7ef) +* hightlight matches in quick search (f2f3ba49) +* add loading indicator (d38c8722) +* allow plugins to override tags and tag counts (81595095) +* edit test (ccddbb15) +* add x-posts/x-votes keys (23de5613) +* allow adding nested replies to a target component (ddc0ac37) +* hotkey "/" to open ACP search (43571bac) +* ctr-s for save on privileges page too (763cec31) +* ctrl-s now saves on settingsv1/v2 forms (80931423) +* single href (6669b23d) +* allow passing in container to threadTools (7148be2f) +* expose calculateTopicPostCount and getChildrenTree (43742437) +* allow custom req.query.filter on /unread /recent (de824007) +* fullname search (#8641) (4be693f2) +* sorted set lex test (9389749b) +* add topicIndex to category page (c1c617b3) +* up lavender/slick (34eb1bd2) +* switch to using topic/select component for merge (f6d56466) +* undo for posts move (762e9fe8) +* #8626, new move posts modal (5a40d26b) +* refactor app.js (5002e0f6) +* remove global RELATIVE_PATH (19c44861) +* remove app.template (3cd3b7a1) +* remove global window.templates (630bac2a) +* remove app.isConnected, use socket.connected (fddeb5c0) +* use const/let (6fc31df0) +* allow nbb to work with cloudflare rocket loader :rocket: (4d665955) +* move code (53a5f151) +* #8602, dont send emails to unconfirmed addresses (b6917b9d) +* add partials/footer/js.tpl (94da9fe5) +* add missing name to profile image upload (54b49725) +* add action:user.removeCoverPicture (b0a75922) +* add user data to action:user.removeUploadedPicture (962446a5) +* add userData to action:user.delete (9542ef12) +* force upgrade scripts for test (1b7ba2c8) +* replace relative urls to absolute before sending email notifs (1e5981c0) +* add client side action:flag.create (09de364e) +* additional sorting options for flags (0c203517) +* new filter hook prior to post queue addition (8cc36de2) +* add replies to getPostSummaryByPids (a9dfc9a7) +* add reply count to getPostSummaryByPids (de0f4aad) +* theme work for #8580, closes #8580 (6e805c1b) +* allow undo of topic move (abb5e81d) +* added alert.timeoutfn (cd8e7963) +* sort dependencies alphabetically (a4dbbc37) +* up persona (af9f328c) +* banning a user will resolve their post flags (354e6ccc) +* theme changes for #8571 (5415c01c) +* logic for bulk actions in flags list, #8571 (a3a22793) +* expose global/admin privileges to all routes (4737f937) +* additional tests for #8569 (e047b72c) +* flags list sorting, closes #8569 (346db0d8) +* up theme (bd557af2) +* allow adding multiple users to group (35a538ec) +* add filter:group.getOwnersAndMembers (f1e82b64) +* pass uid into filter:flags.list (9c70b662) +* added security policy for github (45c8de12) +* up deps (b97b51a8) +* one more test (a333cb6c) +* tests for password change (ecda4ad8) +* limit privileges column to superadmins only (0903eb4b) +* use nodebb-scoped bootswatch (12edd18b) +* use assetBaseUrl instead of hardcoding (6e918858) +* load timeago strings client-side (558a2d73) +* +assetBaseUrl, -l10BaseUrl, -requireBaseUrl (9adaccd0) +* #8550, add upgrade script test (b61a4da5) +* #8493, plugin helper for standardised link/button injection (0bbb813e) +* show event/params on error (d6baf5c2) +* introduce overridable l10nBaseUrl config value (def16f9e) +* allow multiple empty lines (58933c4c) +* remove administrator property from public routes (dfabd0a3) +* focus username when modal is shown (4216c277) +* add helmet middlewares (774e5d04) +* more discrete commit-on-save instead of commit-on-change w/ confirm modals (#8541) (a716a552) +* add ability to search groups in group details page (e7a502e0) +* use category selector in category page (fb7bb8d4) +* css fixes (560f3eb1) +* add privileges shortcut to groups list (91411cc4) +* allow passing groupName to user.search (f89ec205) +* #8531, closes #8531 (292d4904) +* allow direct link to flag from post tools, #8531 (c705e08a) +* allow changing requirejs base url (c4829fd8) +* ability to clear cache from acp (bbc7737e) +* reduce amount of data loaded on acp admin page (8d8117ff) +* remove require fallback for plugins (303bffdb) +* remove /assets/stylesheet.css (762b0be4) +* add node 14 (6250a2e2) +* make category tools in acp a dropdown (24535a62) +* series upload (37e56d94) +* resolve flag on delete/purge/ban/delete account (8bd63f61) +* 8502, don't change topics sitemaps on every reply (e045436c) +* allow building custom languages during dev (0a9ea91f) +* add link-plugins.sh (cc86f079) +* remove deprecated utils.walk (609e37a6) +* consolidation of flags to reduce flagspam, #8510 (55b0e902) +* change invalid language codes to default lang (3761f05c) +* add npx, fixes ghfw (a294e1cd) +* remove topics.async.getTopicData usage (ce6b20c4) +* remove deprecated checkGlobalPrivacySettings (0cea7136) +* remove deprecated isAdmin method (a0da2ba7) +* remove file.isFileTypeAllowed (2cdb935f) +* remove deprecated hooks (4eae927d) +* update readme (9869064e) +* up node version to 10 (b39e0140) +* highlight privs row if group is added / navigating from group page (10e4ae62) +* prevent navigation away from groups page if changes are unsaved (53f6139b) +* quick access dropdown on groups page to access privileges page (2c83278f) +* #8524, allow editing category of queued topic (844f2b4e) +* remove js-enabled (ff3c3435) +* remove js-enabled.css (ec057835) +* dont load all subscribers at once (2a5f8ab2) +* short more info (23a9a334) +* #8521, allow editing title before posting from queue (2485a550) +* show language when key isn't found (764969ab) +* allow searching categories in ACP (1e7397b1) +* #8509, don't scroll chat to bottom if user scrolled up (320008cd) +* added quick link to edit privileges on the category edit page (06143ca7) +* hide some filters behind 'more filters' button (9fb9185f) +* collapsible daily flags graph (d52d7bdb) +* **acp:** autocomplete user search for welcome notifications (d40779a4) +* **writeapi:** + * user settings API (c26f2b65) + * commented-out stub code for file upload (cfee431c) + * file deletion route (f870721f) + * admin settings update route (a55b3817) + * token generation/delete routes, ACP updates (2ec838fc) + * post bookmarking (0973feea) + * post voting (9942c248) + * post delete/restore/purge (414169fd) + * post editing (f66c2fb6) + * topic tags (1605e5e4) + * topic follow/ignore (9be56294) + * adding missing files (6096f74a) + * topic posting and replying (4c833d0b) + * added DELETE /groups/:slug/membership/:uid route (40dc1c38) + * added group joining and deletion (952dc211) + * abstracted ajax calls out to new api module (d044c322) + * added POST /api/v1/groups (ba345e53) +* **openapi:** + * schema validation for write api definitions file (87e3f26f) + * refactor into indiv. files to match API & tpl routing (ffbf2d6d) + * refactor into indiv. files to match API & tpl routing (84f5e4cf) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.4.6 (b44c7e96) + * update dependency nodebb-plugin-spam-be-gone to v0.7.3 (f06d4878) + * update dependency nodebb-theme-vanilla to v11.3.0 (0d80190f) + * update dependency textcomplete to ^0.18.0 (df5d66e5) + * update dependency nodebb-theme-persona to v10.2.65 (0c7d5860) + * update dependency jsesc to v3.0.2 (#8802) (c4431294) + * update dependency nodebb-plugin-composer-default to v6.4.5 (7d0d0005) + * update dependency nodebb-theme-persona to v10.2.63 (b3ca7de0) + * update dependency nodebb-theme-persona to v10.2.62 (#8798) (12c590ad) + * update dependency nodebb-plugin-mentions to v2.13.1 (#8790) (8353857b) + * update dependency nodebb-theme-persona to v10.2.61 (#8794) (9de8497d) + * update dependency benchpressjs to v2.0.8 (#8767) (3b88545b) + * update dependency sharp to v0.26.2 (#8765) (42aed15b) + * update dependency nodebb-rewards-essentials to v0.1.4 (#8764) (25c447df) + * update dependency nodebb-theme-persona to v10.2.60 (dcf72354) + * update dependency nodebb-plugin-mentions to v2.13.0 (#8758) (411fa8bc) + * update dependency nodebb-theme-persona to v10.2.59 (#8755) (cd34bfb1) + * update dependency nodebb-theme-persona to v10.2.58 (#8754) (a77ba71e) + * update dependency nodebb-plugin-composer-default to v6.4.4 (#8752) (0399ffaf) + * update dependency benchpressjs to v2.0.7 (#8733) (f8e2324c) + * update dependency nodebb-plugin-composer-default to v6.4.3 (#8750) (666064bf) + * update dependency nodebb-theme-persona to v10.2.57 (#8749) (1c94220b) + * update dependency nodebb-theme-persona to v10.2.56 (414fe19c) + * update dependency nodebb-theme-slick to v1.2.39 (1bc99411) + * bump vanilla/persona (944a7e0e) + * update dependency nodebb-theme-lavender to v5.0.14 (#8739) (43df4b8e) + * update dependency socket.io-client to v2.3.1 (#8700) (ba62ebb6) + * update dependency nodebb-theme-slick to v1.2.37 (#8741) (45aceb26) + * update dependency nodebb-theme-vanilla to v11.2.21 (#8740) (0c7af502) + * update dependency nodebb-theme-persona to v10.2.54 (#8736) (4207dde4) + * update dependency nodebb-theme-persona to v10.2.52 (#8735) (70c085ba) + * update dependency nodebb-theme-persona to v10.2.51 (#8729) (bae2eada) + * update dependency nodebb-theme-persona to v10.2.50 (#8727) (804729fc) + * update dependency nodebb-theme-persona to v10.2.49 (#8722) (b01bc2ae) + * update dependency nodebb-theme-persona to v10.2.48 (#8721) (01702613) + * update dependency nodebb-theme-persona to v10.2.47 (#8720) (04b1daac) + * update dependency nodebb-theme-persona to v10.2.46 (#8719) (ba906d7d) + * update dependency nodebb-plugin-composer-default to v6.4.2 (#8718) (229421ed) + * update dependency nodebb-plugin-composer-default to v6.4.0 (#8716) (b3a24f74) + * update dependency nodebb-plugin-mentions to v2.11.0 (#8714) (c95a3898) + * update dependency nodebb-theme-slick to v1.2.36 (#8713) (fc2795d3) + * update dependency nodebb-theme-vanilla to v11.2.20 (#8715) (2b0deeb7) + * update dependency nodebb-theme-persona to v10.2.45 (#8711) (f14b4945) + * update dependency nodebb-theme-persona to v10.2.43 (#8701) (1d0eaafb) + * update dependency nodebb-theme-persona to v10.2.42 (2a1da61c) + * update dependency nodebb-theme-vanilla to v11.2.18 (#8697) (9bdef707) + * update dependency nodebb-theme-slick to v1.2.34 (#8696) (3e2816ae) + * bump persona (f17d42ed) + * update dependency sanitize-html to v2 (1e5621c0) + * update dependency nodebb-theme-persona to v10.2.39 (#8684) (d0010c40) + * update dependency nodebb-theme-persona to v10.2.38 (#8683) (bb04f149) + * update dependency json2csv to v5.0.3 (30aa7e83) + * update dependency nodebb-theme-persona to v10.2.36 (#8680) (07172b6f) + * update dependency nodebb-theme-persona to v10.2.35 (#8679) (68a5e7e3) + * update dependency json2csv to v5.0.2 (5a2adb42) + * update dependency nodebb-theme-persona to v10.2.33 (#8675) (abe83773) + * update dependency nodebb-theme-persona to v10.2.31 (#8673) (80dbf97a) + * update dependency nodebb-plugin-composer-default to v6.3.57 (#8672) (7ecac97a) + * update dependency nodebb-theme-persona to v10.2.30 (#8671) (c8a75631) + * update dependency nodebb-theme-persona to v10.2.24 (#8663) (72cd5f13) + * update dependency postcss to v8.0.6 (#8657) (55921ccf) + * update dependency validator to v13.1.17 (#8659) (01232090) + * update dependency sharp to v0.26.1 (#8660) (b175d671) + * update dependency nodebb-widget-essentials to v4.1.2 (#8658) (dc0a4a49) + * postcss and autoprefixer version incompatibility (70d3ad02) + * update dependency nodebb-plugin-mentions to v2.10.0 (5ea172f9) + * update dependency autoprefixer to v10 (60679481) + * bump theme versions (685633d0) + * update dependency nodebb-plugin-composer-default to v6.3.56 (#8648) (8089387b) + * update dependency nodebb-theme-persona to v10.2.22 (c5ca2609) + * update dependency nodebb-theme-vanilla to v11.2.16 (8acdf3f6) + * update dependency nodebb-theme-persona to v10.2.21 (ed0469b5) + * update dependency nodebb-theme-vanilla to v11.2.15 (134ebba6) + * update dependency nodebb-theme-vanilla to v11.2.14 (31635e3e) + * update dependency nodebb-theme-persona to v10.2.20 (2a13e583) + * update dependency mongodb to v3.6.2 (#8634) (4969c869) + * update dependency nodebb-theme-vanilla to v11.2.13 (#8633) (8137cdc2) + * update dependency nodebb-theme-persona to v10.2.19 (#8632) (37e37c86) + * update dependency nodebb-theme-vanilla to v11.2.12 (#8628) (7ab87072) + * update dependency nodebb-theme-persona to v10.2.18 (#8627) (2740655d) + * update dependency nodebb-theme-vanilla to v11.2.11 (#8624) (fd6259c8) + * update dependency nodebb-theme-persona to v10.2.17 (#8623) (a1d310bd) + * update dependency nodebb-theme-slick to v1.2.30 (#8620) (251ea79b) + * update dependency nodebb-theme-persona to v10.2.16 (#8618) (0d85dc48) + * update dependency nodebb-theme-vanilla to v11.2.10 (#8619) (b52301b1) + * update dependency nodebb-theme-vanilla to v11.2.9 (#8616) (69373fde) + * update dependency nodebb-theme-persona to v10.2.15 (#8614) (3c0540c1) + * update dependency socket.io-redis to v5.4.0 (#8600) (5ba23f24) + * update dependency nodebb-theme-vanilla to v11.2.8 (#8599) (97e3543e) + * update dependency nodebb-theme-persona to v10.2.12 (#8598) (1bb0896e) + * update dependency nodebb-plugin-composer-default to v6.3.55 (#8606) (dfeb65bb) + * update dependency nodebb-plugin-markdown to v8.12.1 (27426c06) + * update dependency nodebb-theme-vanilla to v11.2.5 (64f4179a) + * update dependency nodebb-theme-persona to v10.2.10 (777419b2) + * update dependency sharp to v0.26.0 (#8578) (7ca967ee) + * update dependency ipaddr.js to v2 (49aeda01) + * update dependency nodebb-theme-lavender to v5.1.0 (87674d68) + * update dependency nodebb-theme-persona to v10.2.5 (8032c8bd) + * update dependency helmet to v4 (#8543) (ad68a338) + * update dependency mongodb to v3.6.0 (#8535) (4160e828) + * update dependency nodebb-theme-persona to v10.2.4 (#8544) (b30ecffb) + * update dependency nodebb-theme-persona to v10.2.1 (#8529) (7a59c2fc) + * update dependency nodebb-plugin-composer-default to v6.3.53 (d24a4bd3) + * bump themes (b714ed22) + * update dependency commander to v6 (#8518) (75fb2a47) + * update dependency archiver to v5 (#8523) (f1cc4e29) + * update dependency lru-cache to v6 (#8490) (2941b9f9) + * update dependency connect-redis to v5 (#8480) (9c17a677) + * update dependency nodebb-plugin-composer-default to v6.3.52 (#8522) (ac257a65) + * update dependency nodebb-theme-persona to v10.1.68 (#8520) (f06b1cec) + * update dependency nodebb-plugin-mentions to v2.9.3 (#8516) (b5df5766) + * update dependency nodebb-plugin-dbsearch to v4.1.2 (649c64e4) + * update dependency nodebb-plugin-mentions to v2.9.2 (91bdc12a) + * update dependency nodebb-plugin-composer-default to v6.3.51 (0e13fd0f) +* check is banned in buildHeader (4b63f993) +* undefined call (518d4fa1) +* missing await (08ff4041) +* client side crash when creating groups (5a2b14b7) +* disallow registration attempts with password length > 4096 (c0f699e6) +* missing await (4818ec37) +* broken test (87bff6cd) +* updated commitlint config to allow longer subjects, because nobody anywhere uses an email client that limits subject lines to 72 characters (a53d49a2) +* restore old behaviour of empty json w/ 401 code in admin middleware (dda5d426) +* deprecate middleware.isAdmin (15e0731d) +* post editing not taking plugin hook results into account (4439864c) +* #8805 define our own name for write API v3 (57ed6be7) +* removed superfluous assignment (a08fb8e5) +* createNewPosts to build tpl with ajaxify.data (0b6ef61e) +* handle ACP category enable/disable states after call success (bff53de0) +* remove setCategorySort and setTopicSort (a6a52430) +* sort setting not using correct field name (9082062e) +* update readme to include psql (2d29e603) +* breaking test from 0db0231cff097a6e983683e61284a72d42bd594d (cc1c7220) +* indentation (04185d94) +* add back derpy 20 second sleep (8e7914ff) +* missing method in test error output (3ebb3a34) +* topic object in post editing data return (3c98cd3d) +* bug where token generation route would fail on null case (618e0983) +* typo (2e9f27d8) +* return early for guests/spiders (203db47b) +* #8789,cache meta.settings (156e1396) +* spec (7a318352) +* tests (63e07c94) +* #8781 (db63f5e3) +* reset button loading html (1a4c0dec) +* #8779, fix move all (e6440c0d) +* allow admins adding users to global moderators (1f43e98f) +* incorrect logic for post history editable bool (a691be59) +* [breaking] send configured config URL as origin if not custom (205a1030) +* #8776 some users unable to restore old versions via history (7a8f7049) +* #8595, dont save escaped data when renaming groups (b26e9b59) +* keep sortBy while searching (3ee4936d) +* autocomplete.user on search page (85cfe49d) +* spec (cf474ab2) +* sortby (7bddec93) +* #8774 (b3619d3d) +* #8732 (c107649b) +* #8630, sort extra deps (e362c342) +* missing doTopicAction, fix wrong api params (e78c498e) +* test (8fd3c044) +* appropriate 404 handling for write API calls (b6cce75d) +* redis hget (b2ff1594) +* reimplementing isPrivilegedOrSelfAndPasswordMatch (e98285db) +* socket user bans (3f347baa) +* broken tests from api change (222b4c95) +* tests (7d86be2b) +* handler for group.join (51a60d3d) +* add missing file (d07f0081) +* #8768 (4418ff07) +* api bug where user profile editing continued even if not allowed (cc6e995e) +* module build (bae0f343) +* tests (b295d15e) +* csrf token only on non-GET routes (20bb9c7e) +* avatar selector (4b9444f1) +* test (e6ea71c9) +* timestamp (8c6a5591) +* #8763 (331d236f) +* lastonline again (a481024d) +* caret (71d82ec8) +* lastonline values (97628e2f) +* upgrade script (1289c105) +* cant join system groups (59bbede8) +* tests (a411df13) +* update server param to /api/v3 (0e0f1506) +* typo (c68653d0) +* testing openapi write tests (7aa4d104) +* enable tests (7b2301ff) +* test fix for write API (54e6003a) +* password reset to invalidate all existing reset tokens for that uid (30b3fedc) +* show more lines (ba2e1c4c) +* #8756, pass missing req to mock (30d6a2b8) +* #8757, allow all slashes in category route (1ee93848) +* timeago test for dev/prod (7db224f6) +* timeago test (cecdd291) +* undefined api require, @julianlam (931d44b5) +* watch tooltip (e2d407b7) +* module name (aedd28e0) +* pin sortablejs (8f436eb8) +* admin jquerui requires (75c96686) +* timeago locale switch (8c019a6a) +* category RSS feed was displaying deleted topics (9a5b8a79) +* #8734 make nprogress module (45e8a4d5) +* regression caused by 754595172549ba39b406bd36fc3387d95782d84f (8af30a51) +* dont allow adding duplicates to privileges page (12c8b1c2) +* #8728, dont add admins to table (f259063f) +* remove debug log (675a62da) +* tests (adcadbb2) +* bad merge w/ category ACP page (cb9369f1) +* bad logic in group assertion middleware (8e89f34d) +* errors thrown if no password sent in to profile edit route (7757f965) +* bug where middlewares seemingly ran in parallel (549ca110) +* follow route to match spec (db5c5b2c) +* missing one property in openapi doc (af2e424f) +* error handling with POST /api/v1/users (d8879d21) +* use POST call for user creation in ACP (58043e07) +* user creation POST route returns user data, updated openapi spec (bba2a463) +* selector, so it doesnt effect suggested topics (7138d433) +* use proper api url (264818e5) +* tests, get latest release tag recursively (8eb62e22) +* use app.parseAndTranslate instead of benchpress.parse (fc603a53) +* sorted list delete button (20e0cc5c) +* unable to register async method as response hook listener (dde5b6b8) +* dont allow sorting pinned topics on recent (b955fd36) +* use console.info instead of console.log for sw registration (3c7f79cb) +* spec (7cd83b9a) +* spec (6924eb6c) +* test (cb2f6f7c) +* dont let mods load postqueue for a cid they are not a mod of (7bf6d3b8) +* show disabled categories in admin&mods (2ea9768e) +* prevent mutiple highlighted rows on category/topic pages (60afb110) +* spec (fbd85680) +* do not show TOC if fewer than 2 headings (f1de084d) +* params cached in autocomplete module (caa8c00f) +* #8686, deprecate `plugin.json/library` (#8705) (017af63f) +* updating minimum node version in readme (d3951ebe) +* update "install plugins" link to go to the download tab (5441651e) +* overflow on submitPluginUsage field (c56236f0) +* #8699 tags route is case sensitive, though tags are not (38f88fc5) +* early button/anchor clicks do nothing (8437130e) +* early button/anchor clicks do nothing (966d3f76) +* error on `reset -p` if plugin is not active (7f58e3ab) +* manifest test + remove duplicate test (bf3c1c08) +* typo in getCompatiblePlugins (07af6213) +* typo (54705cc4) +* manifest - use absolute URL for start_url (31528a52) +* prefer webmanifest extension over json (46800b66) +* update notification delay ACP help text (4c1e717b) +* #8681 change owner modal's search should check if user is banned (b6f2f0e5) +* add img-responsive to post queue post items (f8032cd0) +* language key in reset password (2ad33058) +* issue where the last flag filter could not be removed (0fffe289) +* multiword match highlight (f8ef380b) +* tooltip placement on navbar search (82ab6cd3) +* rogue tooltip on navbar profile icon (683c01b0) +* #8580, @julianlam (445a840b) +* topic count on category page if filter is author (bbf6889e) +* match api when modifying ajaxify.data.deleted (int, not bool) (703ac1b6) +* lock/unlock toggle issue (9a7c3c68) +* #8665, trim email before checking validity (ac43cd8b) +* editing posts saving uncessary data (e72fe259) +* api spec (654d5830) +* #8640, add bookmarks to intFields (4f14dc7a) +* change user tooltip container to content (02a48e1c) +* auth tests (fe2dc310) +* #8656, rename /api/me to /api/self (af43f0e4) +* add user tooltips to body (047c4148) +* tests (22cd2654) +* use correct topic count for category (220297d5) +* clear old value on focus (42298fe6) +* skip elements if they dont have proper index (c9c9dd2f) +* call to reskin (99f24c59) +* move necro-post to be in-line with posts (44309ee6) +* tests, because redis is TOO FAST (4fca7938) +* remove old test (5e8c3761) +* client side crash if there are no topics (a8e18fdb) +* #8418 (38d3982b) +* typo (08912361) +* tests (65d049c6) +* check if unread_tids are followed (2d5bd153) +* openapi (e9094094) +* dont use hardcoded fontawesome icons for lock pin (632793b0) +* #8629 and change undo timeout to 10 seconds (65d94a3b) +* alert_id selector (2bebdf01) +* use text-right (a78e1df9) +* remove lang keys, remove sounds menu (a34b685c) +* lavender version (8a752364) +* tests (e3a0b4b1) +* wider widget area (4bace773) +* bypass nbbpm for now (33c1bd5f) +* #8432, add CSP frame-ancestors (46ab2711) +* allow setting maximumAboutMeLength to 0 (4588e521) +* additional commit for CF rocket loader (a38784f5) +* stack trace (4031a8ca) +* #8604 (a2638976) +* don't toggle elements if there is no inputEl (57f67e2b) +* don't crash on outdated redis instances (896fe9d6) +* update post-queue hook names (0e58d2b8) +* accept/reject in post-queue instead of accept/delete (694f4b2b) +* new openapi def for replies addition (b5871275) +* #8582 (9f9164a9) +* debug logging :dog: (fb3b4a02) +* ip-blacklist not working after #8580 (56101ae5) +* ip-blacklist not working after #8580 (c681b4b2) +* post-queue not working after #8580 (dc5bd760) +* #8411 missing language sources for ip-blacklist/post-queue (a93e1955) +* removed invalid options for the sendmail transport (#8576) (2b785628) +* missing localisation for topic move error (bacee6b4) +* select all checkbox does not re-enable bulk actions button (5d60dce3) +* dupes in unread followed topics (55533b11) +* wrong data passed to getCategories (39f4bbaa) +* openapi spec (4f7cfd53) +* api spec (c4ad14cb) +* username, email history disappering if content was deleted (91d9333a) +* up composer (9fd37753) +* package-install clobbering scoped nodebb plugins (840cb510) +* empty "manage" menu showing in ACP (4b0cb26b) +* hide nodebb version in ACP for non-superadmins (cc268605) +* change how admin middlewares are exported (f00595b3) +* one less return, to appease codeclimate (ae68a254) +* inability to access /admin if not superadmin (03bd76de) +* #8560, fix old upgrade script (29e3ab24) +* use promises in privilege save (9cbe9389) +* overzealous click handler on flag list row (7a5daff4) +* +comment, -debug log (9608b44f) +* multiple alerts in the same millisecond overwrite each other (589216e7) +* reintroduce 20s delay for api tests (56393795) +* client-side error in flags/detail (b2271eb6) +* #8570 (7daba7dd) +* sorting the flags list by newest is not considered a filter (3efe2362) +* flag list tests due to breaking change in API (360aa00d) +* no-widgets messaging in ACP + copy (334be113) +* #8568 perPage not acting like a filter (cabe62a0) +* #8562 (31c2b7d9) +* progress bar clobbering upgrade script name (2adae879) +* tweak upgrade script progress bar to only update 100 times in total (ac75c9a0) +* navigation title unescape upgrade script tweak (80a2a700) +* new language key for error handling (7456a0e3) +* upgrade scripts not run properly if schemaDate is present (de8eebbd) +* #8556, catch errors from admin check (bfaf648e) +* upgrade script for 1.15.0 (32682738) +* improper targetUid check during password change (16cee1b0) +* #8547, remove old deps during upgrade (#8557) (1d170e0c) +* #8558, only navigate if user is in same topic (79e847d4) +* upgrade script (231d34d0) +* don't allow duplicate upgrade script names (8887f0ed) +* tests (d6297b28) +* send hard 404 instead of soft 404 for missing modules (9f3b7811) +* #8549 send 308 Permanent Redirect on topic/category shortlinks (68f8d6e3) +* remove default helmet (c39c5113) +* map instead of forEach in privileges save (a7071bb8) +* remove duplicate configuration for helmet-hsts (0f10e083) +* don't process invalid topics, fallback to 0 score (335169f2) +* tests (6924a222) +* #8539, enforce content checks for post queue (bb224184) +* bug; additional reports could be added by the same user repeatedly (0f2b6f1f) +* #8538, go to first unread instead of last read (519e6659) +* #8533, validate and retry password during setup (0d698a07) +* #8534, dont show modal on search (9e80a9ef) +* language string (9f346c53) +* api test (8415d2f0) +* tests (9df871be) +* tests (69fb1527) +* reverse uid checks (7331faed) +* acp view category button if category is a link (2dfe9d49) +* remove old test (52718ce0) +* #8515, fix login redirect on subfolder (5e5815f0) +* tests (f48d1556) +* #4695, remove new notif alert (fd4c3cda) +* too small sortable handle for ACP>Manage>Categories (8473e165) +* less fixes for category dropdown (db07dd85) +* move check inside lock (57135761) +* #7351, display less errors with location and error message (d1cb405d) +* use shorter git url, #8527 (345fd72b) +* cursor for category select (4c90fac4) +* api docs for admin/manage/groups/x (8769e28b) +* edge case in test (b9cff577) +* api tests (42af4b57) +* #8500, allow regular users select topics on unread (7260646d) +* don't crash if content is undefined (4658121a) +* crash if csrfToken does not exist (a3c8d456) +* try again (6f889c9c) +* more tests (a46adb3f) +* tests (65395ae5) +* tests (72c60d19) +* tests (67ca5e32) +* #8508, dont allow moving topics if not moderator of target category (36531511) +* composer textarea placeholder l10n /cc @pitaj (1e14af45) +* **openapi:** + * final fixes to schemas (14e5c24e) + * users.yaml (16873800) + * moved write-api to public/openapi (49994f3a) + * test for new trending plugins in ACP (3fbddbe2) + * tests (d935f036) + * new api definition (8ff09630) +* **writeapi:** + * more tweaks to schema files (b2e9e3e0) + * fix components, + tag object schema (9f9e3c15) + * missing files for tests (a4f3270f) + * normalizing data (1392d064) + * tests (b092f65d) + * added examples to all parameter objects in schema (93f65f89) + * tests (ebcb664b) + * tests (229eb2c2) + * tests (b8703ba9) + * tests (41f55b7a) + * calls to profile editing routes 200 even if user DNE (8e7baac6) + * client-side group join API call (68ecf41e) + * authenticate middleware logic to work better with await (fd67355b) +* **refactor:** + * patching helpers.tryRoute for API routes, some re-org (d15d9e44) + * merging write-api auth middlewares with core middlewares (f6433ef2) +* **bug:** #8611, custom route logic corrected (#8612) (64a457a4) +* **docs:** updating changelog (6e34b9ef) + +##### Performance Improvements + +* reorder async calls (93bdfe2f) + +##### Refactors + +* simpler check in user.blocks.filter (a02ae6f5) +* remove usage of middlewares (266d7587) +* remove /users/{uid}/settings/{setting} route (aa8faf58) +* api test suite to accept methods other than GET (843aff58) +* remove unnecessary wrapper (a512d994) +* remove console.log, extra require (75024c35) +* show more lines of stack trace (ea31f505) +* posts api (d9a16855) +* post restore/delete/purge (272e73da) +* merge post.edit (9738e202) +* deprecate socket.emit('users.search') use api route (2279e372) +* api categories (083c74e0) +* remove sockets.reqFromSocket (bc880ee0) +* topic follow/ignore to use api lib (9ee3cb9b) +* topic tools' actions to use api lib (68d6818b) +* topic creation to use api lib (40598b36) +* setupApiRoute signature (bf480ee5) +* remove unused middleware (688d7a2c) +* user bans to use api lib (2d252f2f) +* move groups.leave, fix some tests (e367c540) +* change password/user follow to use api lib (960e925e) +* user deletion to use api lib (430e7f58) +* socket profile update to use api lib (77481947) +* socket profile update to use api lib (31ae8a83) +* user create and profile update to use api lib (23086dae) +* use single function for api code (5e2caf19) +* async/await src/user/approval (43afe7ff) +* async/await install/web.js (3881ac30) +* async/await (1fd2eba6) +* use app.render (d89477ca) +* api module (3673accd) +* api module returns promise, error-first cb if cb passed in (a784d10f) +* remove unused search call (dd7424e5) +* switch to using slugify module (dc29f4dc) +* require style (c954db84) +* middleware.assert.* (8ecef7b8) +* rewrite modules/api.js in AMD style (a905d7f0) +* remove posts.tools.purge (ed092bf6) +* shared constants (#8707) (1aa336d8) +* post edit (16039b11) +* expose new method for appending moderation note (29b357bc) +* socket posts delete/restore/purge so tid is not necessary (#8607) (f743f920) +* ip-blacklist and post-queue language files (4dc6e64a) +* moved ip-blacklist and post-queue styles/tpls to themes (b6b94a56) +* changed way middleware was exported (cf2f1e95) +* remove util.promisify calls (01899459) +* change pwd change logic (846b7d24) +* rewrite src/upgrade.js with async/await (33c5988c) +* change incrementViewCount and markAsRead to async/await (2c35d0ba) +* for codeclimate (2ee62483) +* rewrite src/install with async/await (776e34a8) +* removed rather redundant flag reporters zset (6c00ec84) +* flags object in post tools (fcdbdf63) +* pass only needed data (f1974fb9) +* startup (c54b6b9c) +* get rid of bind calls (af91c26a) +* setting codeclimate to A (bc26883a) +* make msg pretty (8ddc8dd1) +* flag sanity checks, +feat: flag limits (e3e55f25) +* **writeapi:** + * update route prefix to api/v3, default error option (3ea1aa47) + * post.tools.purge no longer a method (5e2a3ea6) + +##### Code Style Changes + +* **openapi:** + * break write API routes into individual files (dbb4cfe9) + * move schemas and responses out of write.yaml (ffac3c79) +* updates to openapi files (2928b9b8) +* allowing some es6 features client-side (e1c40b27) +* linting (cdb79488) + +##### Tests + +* **openapi:** missing commonprops addition (0dc55bbc) + +#### 1.14.3 (2020-07-08) + +##### Bug Fixes + +* improper targetUid check during password change (c2477d9d) + +#### 1.14.2 (2020-07-15) + +##### Chores + +* incrementing version number - v1.14.2 (1e4d683f) +* update changelog for v1.14.2 (488e69fd) +* up theme (63fb2ad7) +* incrementing version number - v1.14.2-beta.1 (9d1465d0) +* up theme (15aabfd3) +* up theme (599c5015) +* incrementing version number - v1.14.2-beta.0 (fca4ee31) +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* **deps:** update commitlint monorepo to v9.1.1 (0ca7e28a) + +##### New Features + +* logic for flag note editing, #8499 (14417209) +* logic for flag note deletion, #8499 (f85a45c7) +* #8460, export groups members as csv (00d39fb3) +* pass connection options to socket.io-adapter-mongo (393f19b4) +* #8023, allow wildcard search for uid/email (3dcf5387) +* up composer (6235b31c) +* #8427, daily downvote limits (c513b88d) +* warn user if whitelisted tags are less than minTags (4adbf87c) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-mentions to v2.9.1 (c54287fe) + * update dependency nodebb-plugin-mentions to v2.9.0 (7730e7da) + * update dependency nodebb-theme-persona to v10.1.62 (#8485) (4e9743ab) + * update dependency nodebb-plugin-composer-default to v6.3.49 (#8479) (ab244ca6) +* #8499 (65240a17) +* #8500 (5e984d10) +* invalid session error modal during logout (2286ee2a) +* #8488 (b3a88331) +* category search in selector (46a66863) +* groups.updateCover (73ddf1cb) +* **docs:** bad changelog (60bf488f) + +##### Other Changes + +* update changelog for v1.14.2" (e085c846) +* flag.showModal on flag modal appearance (3379d65f) +* NodeBB/NodeBB (2fba0a14) +* update changelog for v1.14.1" (26c74409) + +#### 1.14.1 (2020-07-08) + +##### Chores + +* incrementing version number - v1.14.1 (31203b16) +* update changelog for v1.14.1 (d4c16086) +* incrementing version number - v1.14.1-beta.3 (e8ecef6b) +* incrementing version number - v1.14.1-beta.2 (b8d9b6b1) +* incrementing version number - v1.14.1-beta.1 (be85123a) +* incrementing version number - v1.14.1-beta.0 (c279875a) +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) + +##### New Features + +* add tools to recent/unread (#8477) (658dd03b) +* fire new hooks on chat message editing (4f51838d) +* add back redis tests (bdc4d9e7) +* remove redis test (8461a179) +* use covered query (057b783d) +* add js-enabled.css to list of preloaded css files (da29b947) +* zscan (#8457) (723fe8e8) +* fix blocksCount not being returned on user profile (bd228d5e) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v10.1.60 (#8478) (14eafcb6) + * bump nodebb-plugin-composer-default to 6.3.48 (943a344a) + * update dependency nodebb-plugin-dbsearch to v4.1.1 (#8476) (9f06f12c) + * update dependency nodebb-plugin-composer-default to v6.3.47 (#8473) (857900f1) + * update dependency nodebb-plugin-dbsearch to v4.1.0 (#8471) (eb51cfd4) + * update dependency nodebb-theme-persona to v10.1.59 (#8468) (ee38e05d) + * update dependency nodebb-widget-essentials to v4.1.1 (#8466) (519e035d) + * update dependency @nodebb/socket.io-adapter-mongo to v3.0.1 (#8464) (412ca4ae) +* #8474 (c2ca02df) +* show stack properly (7b04d897) +* editing chat messages does not go through content sanity checks (9a6b87d2) +* don't show blocked users under nested replies (d6c619cf) +* tests (87dd6c83) +* handle scan/zscan returning duplicate elements on redis (746222d6) +* #8467, fix url to merged topic in subfolder installs (9eb748b9) +* openapi (5f1865c0) +* openapi (65c0adc7) +* dont allow searching by email/ip if not privileged (ac6b571e) +* missing backgroundImage #8386 (fef04fcf) +* dont allow searching by ip/banned/flagged for regular users (02ac44cc) +* admin privileges client-side regression (f3441fce) +* only add blocksCount for self and admins (59a2ace6) +* tests (fd20e5c6) +* better changelog (f992af05) +* **tests:** + * another shot in the dark (8853cd1a) + * shot in the dark (9458d90b) +* **openapi:** tests (c468942f) + +##### Other Changes + +* update changelog for v1.14.1" (26c74409) +* //github.com/NodeBB/NodeBB (0d9461b1) +* //github.com/NodeBB/NodeBB (ace312e0) +* post.changeOwner (b60e1cbf) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.14.0 (2020-07-02) + +##### Chores + +* incrementing version number - v1.14.0 (bb73d6a4) +* update changelog for v1.14.0 (cffae0f1) +* bump persona (19f9af94) +* latest translations and fallbacks (22879633) +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency smtp-server to v3.7.0 (e80100b5) + * update dependency eslint to v7.3.1 (#8417) (33492744) + * update commitlint monorepo to v9 (569b7664) + * update dependency lint-staged to v10.2.11 (157e7444) + * update dependency lint-staged to v10.2.10 (102a6004) + * update dependency mocha to v8 (#8393) (f4bace03) + * update dependency eslint to v7.2.0 (cd1375cb) + * update dependency eslint-plugin-import to v2.21.1 (4b577a52) + * update dependency lint-staged to v10.2.9 (#8369) (124125f7) + * update dependency lint-staged to v10.2.8 (331b1a85) + * update dependency lint-staged to v10.2.7 (d1df0826) + * update dependency mocha to v7.2.0 (ecaa9b76) + * update dependency eslint to v7.1.0 (e62d892a) + * update dependency lint-staged to v10.2.6 (78d562b3) + * update dependency lint-staged to v10.2.4 (a26011e7) + * update dependency eslint to v7 (28df9aba) + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* polish for user blocks UX (6cb31791) +* #8450, next/prev link tags on /unread /recent (eb9704f8) +* allow flagging of user acounts from post tools menu (6931f29d) +* closes #8440, allow configuring max topic count (e09ab3dc) +* add missing translation key (bffb830d) +* #3783, min/max tags per category (c718b729) +* use tags partial instead of post_bar (0482fb29) +* hide elements if search element is a direct child of dropdown (4f6b6c56) +* increase wait (6aecc177) +* move export functions into child processes (8383992d) +* display stack trace on winston.error (e80379dc) +* show more relevant snippets (f70d1648) +* #8412 breadcrumbs for ip-blacklist/post queue/flags (35a06a84) +* show editor in post diffs if available (f909ed25) +* #8408 flags' quick assignment (d5af9769) +* bump themes, closes #8406 (cb5ba76b) +* allow post diffs to be restored, #8406 (58b3d608) +* add missing translation (3a80a165) +* up composer (96cb94dc) +* more search changes (6349fa03) +* more merge/search fixes (4b38533b) +* merge changes (bb3aa540) +* more search & merge fixes (5fd05dc9) +* merge improvements wip (c4bdeae0) +* #8387 expose global and admin privs to flags detail page (4acb3fb2) +* redirect /me to user profile (3be4d5f7) +* #8384 options to delete account, content, or both (4d60eac6) +* account content deletion, closes #8381 (67aca822) +* add missing language files for #8347 (656b391f) +* privileges for Admin Control Panel (#8355) (a82e9bd7) +* add buildHeaderAsync (#8367) (842b8abb) +* #8360 flag quick actions for delete/restore/purge (8ea16348) +* #8349, remove user posts from queue if user is deleted (5a2b5154) +* up plugins (5b009e07) +* add results into results container (9ffcb6f7) +* quick search changes (f12d448e) +* move quick search into search module (bb1a56f0) +* fix session mismatch errors by clearing cookie on logout (#8338) (5781a2dc) +* add getSortedSetMembers (0009f54e) +* add privilege give/rescind hooks (#8336) (ec5582b5) +* filter followed tids by category (f3afba61) +* use getSortedSetsMembers to load followed tids (1b9e8928) +* add batch size to cursors (a015af4a) +* up cache size (9600ede5) +* tweak intersection code, add tests (4ee3543e) +* change to contains to match scoped modules (6108064e) +* improve grunt restart/rebuild speed (cb662e15) +* don't overwrite req.query.lang if it exists (4263efa0) +* convert queries so they used indices directly (12c6bc2e) +* cookie SameSite property (ae2db423) +* if only one value is passed used faster function (2587112f) +* closes #8316, add more data to export profile (f0323b6c) +* throw error if uid is missing for update (1d3fa3bc) +* ignore mongodb playground file (a219285e) +* parse quick search tpl even if no results (765b8156) +* match hook property to topic property (0e58fa33) +* add methods for adding/removing tags from topics (bfad4572) +* write-api update, WIP (9fd5c439) +* closes #8308, edit post notif for watched topic posts (a73c755b) +* add null tests for sorted sets (edf9fe3b) +* Add hooks for user blocks (#8296) (c4545381) +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **docs:** updated changelog (87c1687d) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.3.46 (5a713d85) + * update dependency nodebb-plugin-mentions to v2.8.3 (#8449) (bbd85049) + * update dependency nodebb-plugin-mentions to v2.8.0 (d40720f9) + * update dependency nodebb-plugin-composer-default to v6.3.44 (#8436) (c1991abe) + * update dependency winston to v3.3.3 (#8431) (6a8f54fd) + * update dependency nodebb-theme-persona to v10.1.55 (#8434) (a860a793) + * update dependency nodebb-theme-vanilla to v11.1.30 (#8435) (272b4992) + * update dependency nodebb-theme-vanilla to v11.1.29 (#8429) (b5a68a44) + * update dependency nodebb-theme-persona to v10.1.54 (#8428) (3ffb6fde) + * update dependency winston to v3.3.2 (54310d69) + * update dependency nodebb-plugin-spam-be-gone to v0.7.2 (11244348) + * update dependency winston to v3.3.1 (#8421) (fd628570) + * #8412 bump themes (365996e7) + * bump persona/vanilla, closes #8408 (225cac18) + * update dependency sharp to v0.25.4 (#8403) (3c3e1515) + * update dependency nodebb-theme-vanilla to v11.1.25 (#8405) (90446365) + * update dependency nodebb-theme-persona to v10.1.50 (#8404) (44273a64) + * update dependency mongodb to v3.5.9 (#8402) (90570660) + * update dependency nodebb-plugin-composer-default to v6.3.43 (78b7382c) + * update dependency validator to v13.1.1 (#8397) (2ae68f9b) + * update dependency validator to v13.1.0 (#8391) (ad6e3634) + * update dependency nodebb-theme-vanilla to v11.1.24 (#8395) (eec03de8) + * update dependency nodebb-theme-persona to v10.1.49 (#8394) (90846740) + * update dependency postcss to v7.0.32 (87ce31d1) + * update dependency nodebb-plugin-composer-default to v6.3.41 (dde830db) + * update dependency nodebb-plugin-composer-default to v6.3.40 (#8388) (cf0f8f64) + * bump themes, closes #8387 (e97a2b71) + * bump themes (ccac6a35) + * update dependency nodebb-theme-persona to v10.1.46 (#8382) (036e6ef5) + * update dependency nodebb-theme-vanilla to v11.1.21 (#8383) (7caeb273) + * update dependency nodebb-plugin-composer-default to v6.3.39 (aeefc60b) + * update dependency nodebb-plugin-composer-default to v6.3.37 (7f6ff0b1) + * update dependency nodebb-plugin-composer-default to v6.3.36 (6b2ea077) + * update dependency nodebb-plugin-composer-default to v6.3.35 (2d582df7) + * update dependency nodebb-theme-persona to v10.1.45 (#8372) (771ea194) + * update dependency nodebb-theme-vanilla to v11.1.20 (#8373) (f8ee981b) + * update dependency socket.io-redis to v5.3.0 (#8370) (d2463bb4) + * update dependency nodebb-theme-vanilla to v11.1.19 (f6ad9605) + * update dependency nodebb-theme-persona to v10.1.44 (cb28e6cf) + * update dependency nodebb-plugin-composer-default to v6.3.34 (#8357) (d7ab0894) + * update dependency nodebb-plugin-composer-default to v6.3.33 (c4047179) + * update dependency nodebb-plugin-spam-be-gone to v0.7.1 (27ab36ac) + * update dependency nodebb-theme-persona to v10.1.43 (#8343) (dabff972) + * update dependency mongodb to v3.5.8 (#8342) (8224127f) + * update dependency nodebb-theme-persona to v10.1.40 (#8332) (a20af6e2) + * update dependency nodebb-plugin-spam-be-gone to v0.7.0 (cc206b4d) + * bump composer-default (827d42a9) + * bump composer-default (a665881b) + * update dependency nodebb-plugin-composer-default to v6.3.29 (bf8a2c2e) + * update dependency postcss to v7.0.30 (#8288) (a532e2bb) + * update dependency sharp to v0.25.3 (0437ecc2) + * update dependency nodebb-plugin-composer-default to v6.3.28 (#8309) (f246057a) + * update dependency nodebb-plugin-composer-default to v6.3.27 (#8307) (6d57d844) + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* don't show in unreplied if score is null (fd400a00) +* lint (0d0b9513) +* upgrade script to unescape navigation titles (37b6b8fd) +* test (f0ce309d) +* show controls @julianlam (023de94e) +* #8437, #8433 (e53a18f2) +* copy settings showing empty category selection (ed4b5caf) +* don't init autocomplete if user doesn't have privs (8482a54a) +* only allow valid uids (00d8ce26) +* tests (f03ca086) +* vulnerability in cover and admin uploads (#8419) (48b41deb) +* reverse tabnabbing exploit in post images (040e6a9a) +* follower count going out of sync with real follower count (2bcf7f72) +* test lock for user create (#8415) (bef37e27) +* add mising timestamp (f0526bff) +* ban (bfd7eafe) +* remove use of 'hidden' class in navbar toggling (5a367ecb) +* bug where category privs page thought it was on admin (2515aa77) +* #8410 (b3115ea8) +* tests breaking due to #8406 (d5578c99) +* add missing translations (42466d3c) +* #8401, #8237 (7ed1a014) +* add timestamp to initial username history (18d89239) +* crash in export posts if post content is undefined (53a9517d) +* messaging unread (0041c024) +* whitespace (a024cc13) +* typo (0595e710) +* #8392, clear group member cache when group is renamed (89b01024) +* return false (8591f5d2) +* language (a255c8f6) +* #8386, use backgroundImage everywhere (8627bee5) +* prevent logout form from submitting (d92032da) +* missing space in ACP menu dropdown (daeceb45) +* #8385 (942cc4b1) +* acp language keys from #8347 not updated in tx config (9ae7fd3e) +* #8363, dont break history (50703db8) +* #8363, go to hash when entering topic (0c265a41) +* #8374, revert event delete (30cc83c0) +* new language tag for select_tags (09184f40) +* remove duplicate link to manage/tags in settings/tags (260a482c) +* tests (3a078f59) +* handle search tag permission as well (1b5d5425) +* checking correct permissions for user search (#8371) (f6b92d24) +* change event name so it doesnt trigger complete event (7786187e) +* clear error log before checking (75b3a81d) +* #8323, let admins send validation emails without timeout (e603ebc0) +* #8352, remove webfonts (#8354) (de7ec47f) +* more tests (da90fd56) +* tests due to 0633ad327 (98dffa3a) +* retry failed setObject calls (2c9e8657) +* acp menu items (0633ad32) +* re-jigged tags acp pages (a83f4259) +* move checks into timeout (47d73a2a) +* #8339, add missing translation (a9315aee) +* don't explode if server sends `checkSession` (84c20f91) +* eliminate unnecessary try..catch (f0e59c14) +* test breakages from 8d995d1eb609837e4e6e4c77cd855766830378fa (a66fe013) +* #8320, dont load moderators separately for each category (0a31e3e6) +* show stack trace on startup errors (11bb6abb) +* don't trigger quick search if val doesn't change (d6c2764f) +* prevent duplicate search triggers (6f78113e) +* user faster method if sorting by smallest set (3ec05eea) +* add txt to list of default allowed file extensions (01bff2ae) +* search post snipets incase content is plain text (ada45a34) +* derp includes (d484731d) +* another test fix (f2907908) +* tests (feb748a4) +* tests on redis (7a801aba) +* tests, handle no sessions (8bf980cb) +* #8318, clean expired sessions on login and get (a0d76ff0) +* tests (a032e12b) +* #8317 (81e33b93) +* #8142 invalid session warning if server-side session destroyed (526b3cd9) +* check privileges before exporting post/topic data (5fd81c5c) +* exporting posts (dfae664e) +* undefined uid when downloading posts (bdda0222) +* #8311, fix allowUserHomePage value (1ba6929c) +* dont crash if topic is null (e20ad5c5) +* if category in selector has url use it (1f992cf3) +* convert cids to string for comparison (c47a1c4d) +* missing await (97c086ab) +* add missing schema item (4e14cb57) +* category selector disabled categories (337be368) +* #8305, don't use null values (6a5e86dc) +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **openapi:** + * tests for #8412 (4cae893f) + * api change for #8387 (6a969442) + * schema for new flags api (a0e243ee) + * broken tests (45dfeeb0) + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) +* **style:** + * more switch..case (6b1d1acb) + * switch..case (922d49be) + * enforcing "better" indentation for switch..case (d135b6f7) +* **docs:** added titles to all routes (aa4ae78b) + +##### Other Changes + +* id, category fields (2355d9d5) +* //github.com/NodeBB/NodeBB (c3c8b19a) +* //github.com/NodeBB/NodeBB (0ddfb6b0) +* //github.com/NodeBB/NodeBB (d1c1cb2c) +* //github.com/NodeBB/NodeBB (79a7f892) +* user.getFields to match topic/posts (a680a95e) +* //github.com/NodeBB/NodeBB (b459592a) +* //github.com/NodeBB/NodeBB (066b442e) +* //github.com/NodeBB/NodeBB (fd6bf0c9) +* //github.com/NodeBB/NodeBB (c1d8b9bb) +* middleware.renderHeader (2727f472) +* //github.com/NodeBB/NodeBB (69a87933) +* uploadFile (7f24200c) +* #8142 invalid session warning if server-side session destroyed" (e327d124) +* ''}) (2a00b0e9) +* //github.com/NodeBB/NodeBB (8c8cdc99) +* categories.getRecentTopicReplies (aad0880f) +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) +* **deps:** update dependency nodebb-plugin-mentions to v2.8.0" (5c7d37c0) + +##### Refactors + +* make code climate happier? (0d112b36) +* shorter code (af790e3f) +* shorter code (e8f0da6e) +* change name to privileges to match other apis (2100a03c) +* making rendering of header and footer async functions (023942da) +* remove general menu from ACP (#8347) (a51fff8b) +* use getSortedSetMembers (7d484fc0) +* src/flags.js because codeclimate (cf00cda0) +* flags detail page (8d995d1e) +* move code (3b6d57e4) +* remove console.log (40b5cbab) +* shorter function (7e429884) +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +##### Reverts + +* bad changelog (a761e31f) + +#### 1.13.3 (2020-05-08) + +##### Chores + +* incrementing version number - v1.13.3 (ee583e80) +* bump persona (d2bd746c) +* incrementing version number - v1.13.2 (beafd613) +* **deps:** + * update dependency coveralls to v3.1.0 (5ed4a108) + * pin dependency @apidevtools/swagger-parser to 9.0.1 (51eccef5) + * update dependency husky to v4.2.5 (30a25983) + * update dependency husky to v4.2.4 (0a650118) + * update dependency lint-staged to v10.1.3 (a9e68639) + * update dependency nyc to v15.0.1 (#8231) (a3789e28) + * update dependency lint-staged to v10.1.2 (#8235) (e1919c90) + * update dependency lint-staged to v10.1.1 (944a6f58) + * update dependency lint-staged to v10.1.0 (30bd233b) + * update dependency eslint-config-airbnb-base to v14.1.0 (811c3aee) + * update dependency jsdom to v16.2.2 (c5a7242d) + * update dependency eslint-plugin-import to v2.20.2 (b92c1600) + * update dependency lint-staged to v10.0.10 (0ad4b556) + * update dependency coveralls to v3.0.11 (14458087) + * update dependency smtp-server to v3.6.0 (22681945) + * update dependency mocha to v7.1.1 (#8215) (c5356541) + * update dependency grunt to v1.1.0 (#8214) (b0864e7c) + * update dependency husky to v4.2.3 (#8162) (776fe9d2) + * update dependency lint-staged to v10.0.8 (#8180) (13d8f6f1) + * update dependency eslint-plugin-import to v2.20.1 (#8081) (4cdb3131) + * update dependency jsdom to v16.2.1 (#8165) (fbd95a50) + * update dependency husky to v4.2.2 (#8160) (f4ed35c9) + * update dependency jsdom to v16 (#8114) (1037de02) + +##### Documentation Changes + +* updated changelog (146388aa) + +##### New Features + +* allow activating additional plugins for testing via config.json (a969c5ce) +* move plugin tests to separate file (3a23ddab) +* remove node14 for now (a72e4429) +* reduce infinite scroll area (3fcbd691) +* manifest.json improvements from #8126 (#8264) (6e5ebb61) +* show error if json is invalid (15345627) +* moved component specs into separate files (cd506557) +* added UserObject, UserObjectFull, Breadcrumb, Pagination component (64d79fe5) +* added some summary and descriptions (ae3e90d6) +* add some descriptions (442c018e) +* common schema (eade13f9) +* openapi component (1af5507a) +* add page query param to docs (9987813f) +* tag route doc (bbddaadf) +* local redoc view on development mode only (1136a369) +* added auto-generated, slimmed-down openapi 3.0 file for read api (7b155dab) +* add parent cids to body class (23571224) +* add 2 hooks for modifying privileges (d080c7b0) +* add user ip to admin/dev/info (5e91a67e) +* change option name (cba5b23e) +* add no-build to ./nodebb setup (476f6717) +* add awaitable socket.emit (4083a6e3) +* settings sorted list (#8170) (3c9689a5) +* guard against accidental ommision (79737c53) +* **openapi:** + * merging openapi-test branch into master (8387178b) + * move all commonprops out for commonprops component (65c78de6) + * added template to commonprops (2425f453) + +##### Bug Fixes + +* #8302, send string to writeFileSync (d09bd2cf) +* winston showing json object (7d081843) +* sortable topics even if only 1 pinned topic (6765de3d) +* #8298, use class name added by jQueryUI instead (dd2bc189) +* topic search shortcut for macs (f2c725c6) +* #8297, uids.length is different than topics.length (0431d75f) +* #8297 guest handles shown in category.tpl (fcb81cb8) +* only add to set if numRecentReplies>0 (16a98eaf) +* #8293, don't show error if there are no self messages (be305410) +* failing tests @julianlam (ecd622fd) +* #3321, run plugin tests for installed plugins (a6bb9f43) +* remove deprecated mocha.opts (3d0db963) +* spec (84383d39) +* #8290, if there are no filters go to ?reset=1 (9839346e) +* #8283, update gdpr link again (2d076344) +* add missing await (4f1128fd) +* #8287, dont readd user after deletion (9d153fd3) +* missing await (4d6b2ec3) +* #8286, rescind notif when its resolved/rejected (0391856d) +* #8284, parse ToS on register (0ca84bd9) +* #8283, point to official site (17d664e0) +* jquery xhtml violations (275e837b) +* #8274 Don't escape HTML in manage users (#8275) (4855f1de) +* crash in topic controller (0c7c70ed) +* crash when res.locals.linkTags is undefined (7cab2b0f) +* #8272 user link in digest email (e80b8101) +* tag of /api/unread/total (9ffdab02) +* response hook logic (5a1c6ee7) +* remove upload picture test (avatars) (6edf02d4) +* remove tests related to group covers, as route is gone (442fe65f) +* #8269, return array of topics from hook (4eafe0f0) +* remove dead picture upload code #8260 (ef52461f) +* path.resolve to logs file (5bcaf715) +* only trigger infinitescroll on scroll end (ba6d3fd3) +* wrong data returned in available.groups (c7ea84a2) +* no focus on find user modal (1b425ef1) +* accidental fp precision on flag and acp dash graphs (bcbf98aa) +* #8232, unresolvable session mismatch on register cancel (f2f6fbf1) +* pin jquery to 3.4.1, #8252 (e440d617) +* #8249, don't send move notifications for deleted posts/topics (d77036db) +* missing descriptions for common properties (7b31fb34) +* some definitions in read API spec (03739b6f) +* tagged all routes in read api spec (455d42bc) +* override ACAO header for read API spec file (240d9091) +* throw error if topic does not exist (59cf0e80) +* hookname (e93578b8) +* #8230, add hook getUserDataByUserSlug (0d1b5a7f) +* ignore case for group details route (15d6975e) +* lint (740e598a) +* lint (8e23dec8) +* #8221, fix parent selection (08031730) +* invite properly (071506eb) +* admins not seeing invite button (8f4b99a4) +* #8217, add missing lang key (0b5fac75) +* #8206 first message in chat has false `newSet` (93acd139) +* #8203, fix user invites refreshing page (2f9c7c62) +* #8202, filter non-existing users in search by uid (f07f4f8e) +* notification bodyShort truncated if there is a comma in topic title (266061c3) +* hsts max-age missing translation (b67af70d) +* call next (80f1bcad) +* try travis fix again (05bee629) +* try fixing psql on travis (bc9e92a1) +* dont let regular users see other users watched categories (cf6eadb9) +* also fix updating bookmark if sorting is newest_to_oldest (6e5de39b) +* #8188, fix bookmark if sorting is newest_to_oldest (32ada7c4) +* duplicate ID + label (ac241fb8) +* #8184 global mods unable to revoke other user sessions (f0db240a) +* return null if field does not exist (e72a29b3) +* #8179, limit length of location/website/fullname, check grouptitle (14e78667) +* tag key (32636755) +* #8175 (bc93b567) +* #8168 re-allowing slashes in homePageRoute (667608a0) +* tweak to session validation in addHeaders (eddbd868) +* only call clearCookie for logged in users (630f5d5b) +* #6422, update deleted/restored messages (06703408) +* #8163, prevent account deletion (4d0636f8) +* register (5a0c7c14) +* #8157, update recent tid when post is moved (e7495440) +* tests (b73aa84d) +* move start/stop every iteration (dd3893b1) +* #8154, move start/stop every iteration (300c04ce) +* #8154, respect stop (690bb69d) +* #8156 dont allow loading members from hidden groups (f23bc347) +* #8155, don't validate name on update if groupName didn't change (03a02e5d) +* return correct number of suggested topics (236e1e68) +* #8151, don't crash if taskbar doesn't have element (2e794801) +* logic for determining dailyStats hour vars (398f0120) +* fix daily analytics being one day off (9ecdb92f) +* remove debug line (0b9ad416) +* no decimal places for category analytics (14655f87) +* #8142, broken site if no server-side session (#8148) (d6e3f3f0) +* #8144 pluginHooks in maintenance mode middleware (0885ec68) +* **deps:** + * #8298 bump persona (158d9231) + * update dependency nodebb-plugin-composer-default to v6.3.25 (89d17647) + * update dependency jquery to v3.5.1 [security] (#8281) (a69f0b29) + * update dependency nodebb-rewards-essentials to v0.1.3 (#8289) (919034a7) + * update dependency mongodb to v3.5.7 (#8279) (25d509c4) + * actually, swagger-parser is a dev dependency (d09c6ae0) + * missing @apidevtools/swagger-parser (f1720735) + * update dependency nodebb-theme-persona to v10.1.37 (#8258) (b0c30ceb) + * update dependency archiver to v4 (28777f67) + * update dependency mongodb to v3.5.6 (#8256) (49236067) + * bump dependencies (#8239) (e68156e1) + * update dependency jsesc to v3.0.1 (#8243) (92b55ef5) + * update dependency jsesc to v3 (bb70cebb) + * update dependency pg to v8 (#8227) (ac98775f) + * update dependency validator to v13 (f497ee62) + * update dependency sharp to v0.25.2 (#8220) (dd660c87) + * bump markdown (ee6cb412) + * update dependency mongodb to v3.5.5 (#8205) (5535c50c) + * update dependency sitemap to v6 (#8198) (2052f14c) + * update dependency nodebb-plugin-composer-default to v6.3.23 (6d98d5a1) + * update dependency sharp to v0.25.1 (#8199) (21e91c91) + * update dependency nodebb-plugin-composer-default to v6.3.22 (#8193) (e01f05e3) + * update dependency nodebb-theme-slick to v1.2.29 (#8177) (9daa21ff) + * update dependency nodebb-theme-vanilla to v11.1.16 (#8178) (7d6a983b) + * update dependency nodebb-theme-persona to v10.1.35 (#8176) (3acc24b0) + * update dependency sharp to v0.24.1 (#8164) (7cc63f7d) + * update dependency mongodb to v3.5.3 (#8161) (4b907137) + * update dependency nodebb-widget-essentials to v4.1.0 (#8159) (a5f3c2a2) + * update dependency request to v2.88.2 (#8158) (7fde180a) + * update dependency redis to v3 (#8152) (ef964b11) + * update dependency rimraf to v3.0.2 (#8153) (d8efc6b6) +* **openapi:** + * v14 test fix (23a0b8c5) + * remove account and group upload routes (d342a28c) + * more fleshing out (058a15db) + * fleshed out admin routes (bae88e08) + * added some descriptions (ab4bd7e1) + * added PostsObject component (2395d2be) + * finished moving all category objects out (23dd2727) + * changed some descriptions (c939f8c6) + * added CategoryObject component (55d0a9ff) + * removed repeated breadcrumb blocks in favour of $ref (646fac1e) + * remove all repeated pagination blocks in favour of (ac579f9d) + * removed warning for category mods route (1cf62095) + * normalising the file for programmatic updates (3a5c6e07) + +##### Other Changes + +* #8298 (2e57d8ac) +* post.updatePostVoteCount (b25b51bd) +* //github.com/NodeBB/NodeBB (5e140454) +* categories.updateRecentTid (6c59683b) +* categories.updateRecentTid (51933c1f) +* router.page, dep. filter variant (0053e779) +* flags as well (5ebcdb18) +* crash when res.locals.linkTags is undefined" (fe03effe) +* //github.com/NodeBB/NodeBB (87a6ff0d) +* cnpm and pnpm (#8222) (e6a1741c) +* //github.com/NodeBB/NodeBB (7ae76477) +* openapi component" (683e5851) +* override ACAO header for read API spec file" (c82a2637) +* password.change (00e299e9) +* topic.tools.load (5aa76cdf) +* #8154, move start/stop every iteration" (4abe5eb7) + +##### Refactors + +* match core field name pinned (478ed6c1) +* getUsersCSV to use batch lib (1efb238a) +* reorganized socket.io admin modules (e1c6c3b2) + +#### 1.13.2 (2020-02-05) + +##### Chores + +* incrementing version number - v1.13.2 (71f4607d) +* bump themes (027f3f22) +* bump vanilla (236a1730) +* bump persona (82ace391) +* incrementing version number - v1.13.1 (cc6758a0) +* **deps:** + * update dependency eslint to v6.8.0 (#8062) (15783213) + * update dependency nyc to v15 (#8094) (976e26a9) + * update commitlint monorepo (#8100) (eb4a1a57) + * update dependency lint-staged to v10.0.7 (#8132) (cdfbcbb9) + * update dependency mocha to v7 (#8106) (b370333c) + * update dependency husky to v4 (dd440ce9) + * update dependency lint-staged to v10.0.1 (66992a55) + * update dependency lint-staged to v10 (d74eecfb) + +##### Documentation Changes + +* updated changelog (2edc6960) + +##### New Features + +* add test for isOnline (66febb80) +* add test for change post owner (df2c7851) +* check flag values on save (assignee and state) (#8122) (8e5a2276) + +##### Bug Fixes + +* admin relogin (a5ef6b53) +* #8135 (c35a21d7) +* handle mkdirp0.5->1.0x so it doesn't break upgrade (1e50616c) +* #8134, upgrade mkdirp to 1.0.x (87225a90) +* onSuccessfulLogin not working (111ed802) +* #8139, dont allow restore if not deleted by self (8c48f94b) +* use view_deleted when filtering, closes #8137 (9969dd63) +* escape invalid rules (d927b763) +* add missing await (3cca929a) +* missing await in SocketPosts.changeOwner (0ae1eb4f) +* #8133, check if user is in room before removing (23810cc6) +* add missing await (cd1fa27a) +* missing await (f799f017) +* dont return flag data to client (418c174d) +* check if user has read priv before flagging (51236df4) +* restrict getUsersInRoom to members (1f13ab8a) +* remove unused conditional, dont add dupe messages (3077eb94) +* tests for messaging (ecc579a2) +* #8127 user join system message duplicated (594cd7e1) +* background-size in taskbar images (106c141f) +* tests, was using hardcoded message id (1b08f376) +* typo in #8116 (8bb5e71e) +* build step defaults to series instead of parallel (3fac09b1) +* escape system message, don't allow editing system messages (6a63c1a1) +* escape register query param (c8fb7f92) +* delete upload (8c6a7954) +* check uploadName (153b1a0e) +* #8120, bubble errors from static hooks (01d1ae78) +* escape bootswatchSkin and homepageRoute (b0f3e48a) +* change owner missing await (3e525576) +* hsts always enabled (e3952674) +* escape topic.thumb (b7a57996) +* #8112, don't crash hook returns no data (4eb9652a) +* escape config.userLang/acpLang, don't allow invalid language codes (e06c1bfc) +* group create/join/update name validation (61da8c29) +* don't crash if groupData is missing (48f08627) +* #8105, fix export json on page load (5a8217de) +* #8103, fix advanced menu not displaying in ACP (52774531) +* meta description missing if url doesn't have post index (10989ccc) +* create user modal instantly closing (c1b1ee61) +* login with weak password (9d074731) +* dont check password strength on login (f6d7a24a) +* **deps:** + * update dependency connect-redis to v4.0.4 (#8143) (16ab641d) + * update dependency rimraf to v3.0.1 (#8138) (726ba71c) + * update dependency validator to v12.2.0 (#8136) (f07b4bfa) + * update dependency nodebb-theme-persona to v10.1.34 (#8140) (6d7131fb) + * update dependency nodebb-theme-persona to v10.1.31 (#8129) (c510a2c4) + * update dependency mongodb to v3.5.2 (#8092) (0e49cfb9) + * update dependency sharp to v0.24.0 (#8121) (16e8f496) + * update dependency nodebb-plugin-composer-default to v6.3.21 (#8119) (ca10f8f0) + * update dependency nodebb-widget-essentials to v4.0.18 (#8111) (df5e3a73) + +##### Other Changes + +* NodeBB/NodeBB (b959c24a) +* //github.com/NodeBB/NodeBB (ee4304b4) +* //github.com/NodeBB/NodeBB (bfaba895) +* save disableLeave (#8123) (09d55581) +* //github.com/NodeBB/NodeBB (842916ea) + +##### Refactors + +* messaging (30c50361) + +#### 1.13.1 (2019-12-19) + +##### Chores + +* incrementing version number - v1.13.1 (d1e0672f) +* incrementing version number - v1.13.0 (c38b2d23) +* **deps:** + * update dependency husky to v3.1.0 (#8046) (c3418c26) + * update dependency coveralls to v3.0.9 (#8067) (0aeee144) + * update dependency eslint to v6.7.0 (32cfe96f) + * update dependency coveralls to v3.0.8 (#8054) (8ba26104) + +##### Documentation Changes + +* updated changelog (94499da3) + +##### New Features + +* better output for cli plugins list, closes #8075 (4fc69443) +* #5272, allow changing user groups from manage users page (05c9fe27) +* merge social authentication into plugins menu in ACP (f9a8ebfc) +* convert middleware.isAdmin to async/await (efd1e88b) + +##### Bug Fixes + +* #8085, fix cookie name (dec157d6) +* #8058, fix incorrect digest setting display in ACP (1b992d82) +* remove select version (6a17e32d) +* travis config (3ae98300) +* travis :dog: (3731dc4e) +* #8078, dont mark notifications read without a mergeId (a8df6d62) +* #8077, show continue chat on all profile pages (7af1c873) +* profile showing posts from deleted topics (2679f37d) +* #8073, configurable necroThreshold (4d669783) +* allow members to search as well (b323df2f) +* #8069, dont show hidden groups in search (c2cd7de8) +* missing await (33fd4a1c) +* #8064, break-word on post-queue (1bda92e3) +* #6711 (7ed002a1) +* #8061, don't crash if there is a network problem (de404102) +* #8059, properly mark topic unread when using mark unread for all (a688aaae) +* #8042, dont show errors after clearing form (3811e0a3) +* unhandled promise rejection error on reset error (51073772) +* #8050, fix redirect after registration (366ad5cd) +* make _csrf a secure cookie if the website is using https (#8045) (0efe27b1) +* #8034 (0a96c923) +* serialize (a2545204) +* show login fields if user has local password (1eca5b3d) +* use the correct attribute name for widgets (6c404b81) +* **deps:** + * update dependency semver to v7 (483d7535) + * update dependency nodebb-theme-vanilla to v11.1.12 (610ecf35) + * update dependency sharp to v0.23.4 (#8076) (eb18c182) + * update dependency nodebb-theme-persona to v10.1.30 (0514383a) + * update dependency nodebb-plugin-markdown to v8.11.0 (702ca164) + * update dependency connect-mongo to v3.2.0 (2aef7a5b) + * update dependency mongodb to v3.3.5 (#8065) (68118e43) + * update dependency nodebb-theme-persona to v10.1.29 (#8057) (34933091) + * update dependency sharp to v0.23.3 (#8044) (6fa88823) + * update dependency validator to v12.1.0 (#8055) (488ea394) + * update dependency nodebb-theme-slick to v1.2.28 (#8041) (b3511f71) + * update dependency nodebb-theme-vanilla to v11.1.11 (#8040) (d567c4ae) + * update dependency nodebb-theme-persona to v10.1.28 (#8039) (6c87bed5) + * update dependency nodebb-plugin-dbsearch to v4.0.7 (#8038) (1e2e16b4) + +##### Refactors + +* async/await middleware (a227cbe3) +* change to const/let (3454a24b) +* shorter returns (cec00795) + +### 1.13.0 (2019-11-13) + +##### Chores + +* incrementing version number - v1.13.0 (c38b2d23) +* incrementing version number - v1.12.2 (810e2c0b) +* **deps:** + * update dependency jsdom to v15.2.1 (9d946d1c) + * update dependency eslint to v6.6.0 (d0e428e9) + * update dependency lint-staged to v9.4.2 (#7954) (d108c7d0) + * update dependency mocha to v6.2.2 (#7984) (e31a47cd) + * update dependency coveralls to v3.0.7 (#7961) (9b308e4b) + * update dependency jsdom to v15.2.0 (#7971) (9b4e9882) + * update dependency husky to v3.0.9 (fd5095a3) + * update dependency husky to v3.0.8 (88cae415) + * update dependency lint-staged to v9.4.1 (a2a7bb3d) + * update node.js to v8.16.1 (f9ad826b) + * update node:8.16.0 docker digest to bb12612 (48cc317c) + * update dependency eslint to v6.5.1 (da12e947) + * update dependency husky to v3.0.7 (10a30e66) + * update commitlint monorepo to v8.2.0 (ddd4e039) + * update dependency mocha to v6.2.1 (b172d106) + * update dependency lint-staged to v9.2.3 (ccccba81) + * update dependency coveralls to v3.0.6 (#7820) (2b1f840e) + * update dependency husky to v3.0.3 (cbede89a) + * update dependency lint-staged to v9 (f2e4664d) + * update dependency eslint-plugin-import to v2.18.2 (#7779) (57b2a553) + * update dependency eslint to v6.1.0 (#7783) (7257e6b2) + * update dependency husky to v3.0.2 (7ad72b32) + * update node:8.16.0 docker digest to c671dc2 (e76214a2) + * update dependency mocha to v6.2.0 (d43f5dcf) + * update node:8.16.0 docker digest to 310db2a (c46a0772) + * update dependency husky to v3.0.1 (28151f86) + * update dependency eslint-plugin-import to v2.18.1 (9fda2c1f) + * update commitlint monorepo to v8.1.0 (f73468d5) + * update dependency coveralls to v3.0.5 (5b746d53) + * update dependency husky to v2.7.0 (1d0fd028) + * update dependency eslint to v6.0.1 (77347d0a) + * update dependency husky to v2.6.0 (fc69e891) + * update dependency eslint-plugin-import to v2.18.0 (744e4428) + * update dependency husky to v2.5.0 (4960b925) + * update dependency lint-staged to v8.2.1 (2fa68e3b) + * update node:8.16.0 docker digest to 06adec3 (fc224cca) + * update dependency husky to v2.4.1 (17ec8fde) + * update node:8.16.0 docker digest to d5ad3f5 (f9e99fa3) + * update node:8.16.0 docker digest to 75b524a (5995834b) + * update node:8.16.0 docker digest to b9a98ae (fca6d794) + * update dependency lint-staged to v8.2.0 (376390c4) + * update dependency husky to v2.4.0 (3d2ec0bb) + * update dependency coveralls to v3.0.4 (c360e0c2) + * update dependency eslint-plugin-import to v2.17.3 (eac4e2f1) + * update node:8.16.0 docker digest to 957cab2 (cc6fa97c) + * update commitlint monorepo to v8 (80532831) + +##### Documentation Changes + +* updated changelog (183b0ed3) + +##### New Features + +* displaying one-click unsubscribe link in email footer (#8024) (df139928) +* #7467, pass query params when redirecting to posts (480a64aa) +* use helpers.setupAdminPageRoute (b5a30006) +* wip, better digest handling (+ eventual digest resend logic) (#7995) (645d6472) +* add action:messaging.save (ac5c560c) +* #7957, allow post queue based on group (1cedc4a0) +* add filter:topics.unreadCutoff (e020b85b) +* Add filter:topic.delete and filter:topic.restore (#7946) (#7989) (989107d9) +* no more session cookie for guests (#7982) (cf7e0cfd) +* Implement WICG change-password-url (#7072) (#7990) (df1efe5f) +* log errors from mubsub (b01a47cb) +* upgrade to sitemap5 (#7980) (d6792188) +* #7964, change all categories at once (485fbd2f) +* closes #7952, translate widget-settings (990508a5) +* remove ability to delete events from acp (554e6711) +* resetting theme will reset skin (03827fa6) +* disable timeout on launch route (4bc77d06) +* add new hook to get custom category tids for unread (b1926054) +* adding filter:login.check and loginFormEntry[] for the filter:login.build hook (#7861) (94810fd6) +* #7932, redirect to group details after creation (2444ed5c) +* add new hook filteR:topics.getSortedTids (b93c826d) +* bypass cropper for gifs (9a756004) +* deprecate file.isFileTypeAllowed (ffe3670f) +* send notification to group owners when someone leaves (ed122364) +* add failing test for pagination (#7924) (22b02f14) +* refactor getSortedSetRange to allow big arrays (b602c044) +* add new test (1e5246f9) +* add rss feed url for tags (bbc2e956) +* add sm2x avatar class #7813 (35a4ca2f) +* #7090, abililty to hide widgets (71cd602d) +* #7760, body-parser config (5de6d885) +* actually cache duh (f05c1dae) +* cache tags:topic:count (63bd252f) +* increase search timeouts (1789ecb4) +* make handleSearch public (ebe5ed22) +* increase size of local cache (b81405a8) +* don't hardcode numberic fields in user search (09410ff1) +* allow only watching core (451c7fd4) +* client-side taskbar.update method, deprecates .updateTitle() (9b09ee0e) +* option to restrict group leaving, closes #7770 (1796b65d) +* preserver querystring when changing category sort (ad96b0e0) +* html sanitization on all filter:parse.* hooks, closes #7872 (2580306d) +* up socket.io-adapter-mongo (3d2cb628) +* update LESS to v3.x, #7855 (#7867) (aea04de0) +* up psql socket.io adapter (b565e568) +* add client side hook for quick search&normal search (f31d30cd) +* allow floating pinned topics to top in getSortedTopics (1d7e0c63) +* promisify recent.getData (6f7ab586) +* faster initial stat loading (89cd31ed) +* cache stats, mongo count sucks (cb50b3f4) +* dashboard stats (3ff6e1bb) +* add filter:search.getPosts (aeb44faf) +* add image and imageClass to post summaries (80bd52fc) +* #7842, make isInvited, isPending work with uids (fa268556) +* convert search controller to async/await (acf12e3d) +* notification on membership acceptance, closes #7835 (1a2a381a) +* additional events logged for various group actions (1ce33faa) +* async (e6353486) +* async/await controllers/admin/dashboard (32ea04a8) +* async/await admin/controllers (72590b34) +* async/await (7beef91c) +* async/await refactor (3cc7ec63) +* async/await controllers/accounts (a3541d88) +* rewrite getRawPost to async/await (b734defb) +* added new filter hook filter:post.getRawPost (973075cf) +* convert categories controller to async/await (e9fd49e2) +* new client-side hooks for chat minimize and close (3d3fa865) +* test psql without defineProperty (#7815) (af1f7249) +* fire updateRemainingLength hook for chats (af968c6a) +* send pids into filter:post.getFields hook (0e07ffa1) +* move cache tpl (65fc0612) +* async refactor (3a9d83a4) +* move group privs above user, add labels (47e30a67) +* widgets/index.js (dec8040c) +* use promise version (4d6b6871) +* #7743, meta/dependencies (1c2540d3) +* #7743, widgets/admin (96ebe7b5) +* #7743, meta/languages and languages (c02686bf) +* added filter:tags.getAll plugin hook (66aa443b) +* #7743, events (102d4b02) +* #7743 meta/errors (97d7a850) +* get rid of async.eachSeries (99cf47ee) +* #7743 meta/tags.js (7b908639) +* #7743 meta/templates.js (79eed9ae) +* #7743 navigation (764a2b12) +* #7743 account/posts controller (e72f3e4f) +* #7743 finish topics controller (9b3f4b98) +* #7743, webserver (0d047f4e) +* #7743 meta/themes.js (7dc0eaf0) +* #7743, meta/sounds (a15c50bf) +* #7743 , meta/cachebuster, meta/configs (7f72181e) +* convert src/messaging/* to async/await (#7778) (756a717e) +* #7743 meta/blacklist (fcf8fd51) +* #7743 meta/index (69860e58) +* #7743 plugins (c126cd85) +* #7743 plugins/data (f5f5f76b) +* dont waste whitespace (17f843f9) +* switch to promise.all (34d85b52) +* #7743, privileges (faccb191) +* #7743 , search.js (6d3a92b8) +* shorter name (8e75646a) +* cache group:members for priv groups (daed76d5) +* #7743 finish groups (72def7df) +* #7743, groups/index, invite, leave,membership (a39ca51e) +* #7743,groups/index,join (d5342a40) +* #7743, groups/delete,ownership,posts,user (fcd4445a) +* #7743 groups/cover,create,data (5e8614e1) +* #7743, finish post module (c0c6c652) +* #7743 posts/diff, posts/edit (c4bb467e) +* #7743, posts module (1b2b308a) +* #7743, finish user module (a51ec591) +* #7743 (6fea46b6) +* #7743 (cd80c263) +* #7743 (0a690c57) +* #7743 (1c5fad6d) +* #7743 (fe4c0481) +* #7743 categories (fcf3e077) +* #7743, user/digest, user/email, user/follow (c610eb14) +* #7743, user/create, user/data, user/delete (d6e36c31) +* #7743 , user/block, user/categories (4541caa4) +* #7743 notifications (6f738c2b) +* remove unused code, add 2 tests (cd2e68cb) +* #7743 user/ban, up mubsub (1970214a) +* #7743, user/approval, user/auth (b24ce976) +* #7743, posts/votes (8ef75be3) +* #7743 posts (e1ecc36d) +* #7743 user/admin.js (2c335955) +* add utils.promiseParallel (4170abfd) +* #7743, posts/user.js (0a6cfb37) +* added new admin option newbiePostEditDuration (#7737) (8a6a58ee) +* returning category data in tags page (75ff4d7d) +* ACP analytics API route (#7725) (a0c0ef1b) +* closes #7718 (ee4d78ca) +* add status to post summaries (41bc6ca2) +* use arrow functions (3100d803) +* ability to sort watched topics, closes #3735 (f24c14d7) +* use fewer system resources to draw the progress bar (d0ee312c) +* removed series from upgrade script (23fb904f) +* remove duped zadds, these are already in topics.onNewPostMade (cb51c239) +* log data on error (f8a7cf73) +* cleanup, use bulk (198d0587) +* #7707, added sortedSetAddBulk (3ecd703e) +* change widget-* to data-widget-* (#7703) (13efbc99) +* shorter setsCard (3780a58f) +* show best & latest posts on profile (b53a60c2) +* use db.sortedSetsAdd (7e54d7aa) +* use db.sortedSetsAdd (29a124c4) +* dont log action:plugins.fireHook (a7600b4b) +* upgrade to connect-mongo 3.0.0, closes #7693 (ebfc369a) +* add hook for user notifications, closes #7672 (ede060a6) +* user/notifications refactor (580f7860) +* send new post/topic event in batches (8c331088) +* allowing count to be passed to ./nodebb events (f6d3cc0e) +* awaitable websockets (#7645) (aee47b29) +* hooks can now return promise or call callbacks (a6436716) +* fallback strings for ACP events (99120676) +* design revamp of ACP events page (#7664) (c7f95cce) +* optimize group rename (48538b28) +* allow multiple scores in sortedSetsAdd (31ccc860) +* optimize copy privileges (0dca13e9) +* on category search reveal children and parents (0721bee1) +* async3 upgrade (#7639) (4d9bc30d) +* #7627, close chat on ajaxify on mobile (6cebc7f0) +* update meta tags on ajaxify (#7580), fixes #7544 (a41769e6) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v3.3.4 (#8032) (2093418d) + * update dependency nodebb-theme-vanilla to v11.1.10 (c01699f7) + * update dependency nodebb-theme-persona to v10.1.27 (182397b1) + * update dependency nodebb-plugin-spam-be-gone to v0.6.7 (#8027) (c2565a2f) + * update dependency nodebb-theme-slick to v1.2.27 (#8020) (7122bdc7) + * update dependency nodebb-theme-persona to v10.1.26 (#8019) (73d9752e) + * update dependency connect-mongo to v3.1.2 (#8013) (bfea9d39) + * update dependency postcss to v7.0.21 (#7998) (ef5f6714) + * update dependency nodebb-plugin-composer-default to v6.3.17 (#8009) (e1e2d20c) + * update dependency sharp to v0.23.2 (#8005) (420f9fe4) + * update dependency nodebb-theme-persona to v10.1.25 (#8012) (cb91e756) + * update dependency connect-mongo to v3.1.1 (#8006) (7655265c) + * update dependency connect-mongo to v3.1.0 (#7994) (401d1eed) + * bump persona (6155c460) + * update dependency nodebb-theme-persona to v10.1.23 (#7986) (9bd6f686) + * update dependency nodebb-theme-persona to v10.1.22 (#7965) (bf6ae6d6) + * update dependency nodebb-rewards-essentials to v0.1.2 (#7962) (692d94bf) + * update dependency nodebb-theme-persona to v10.1.21 (#7956) (1a150d8f) + * update dependency nodebb-plugin-spam-be-gone to v0.6.6 (#7944) (cffbb325) + * update dependency nodebb-theme-persona to v10.1.20 (#7943) (9589fa32) + * update dependency nodebb-theme-persona to v10.1.19 (#7942) (0d629f06) + * update dependency connect-redis to v4.0.3 (#7933) (2856333d) + * update dependency spider-detector to v2 (310039e8) + * update socket.io packages to v2.3.0 (764ed7f8) + * update dependency sharp to v0.23.1 (#7928) (17437897) + * update dependency nodebb-plugin-dbsearch to v4.0.6 (#7918) (44cd7189) + * update dependency nodebb-plugin-composer-default to v6.3.16 (#7917) (d8fe6e42) + * update dependency nodebb-plugin-composer-default to v6.3.15 (#7916) (c5e5e24b) + * update dependency nodebb-plugin-composer-default to v6.3.14 (#7914) (e18392ab) + * update dependency nodebb-theme-persona to v10.1.18 (#7906) (8ed80bcb) + * update dependency nodebb-rewards-essentials to v0.1.1 (#7905) (5b8bb3e4) + * update dependency connect-redis to v4 (#7869) (8b7f6566) + * update dependency nodebb-plugin-mentions to v2.7.3 (#7899) (b2423bae) + * update dependency nodebb-plugin-mentions to v2.7.2 (#7898) (a3120a62) + * update dependency nodebb-plugin-dbsearch to v4.0.5 (#7896) (106c20e2) + * update dependency nodebb-plugin-composer-default to v6.3.13 (#7895) (fa251ece) + * update dependency nodebb-plugin-mentions to v2.7.1 (8c2fc577) + * update dependency nodebb-plugin-composer-default to v6.3.12 (#7889) (429e124f) + * update dependency nodebb-plugin-composer-default to v6.3.11 (#7888) (516b62ea) + * update dependency nodebb-plugin-composer-default to v6.3.10 (6a4a9e26) + * update dependency nodebb-plugin-dbsearch to v4.0.4 (#7883) (12ba589d) + * update dependency postcss to v7.0.18 (c75f3d27) + * update dependency nodebb-theme-persona to v10.1.17 (317c6771) + * update dependency nodebb-theme-vanilla to v11.1.8 (6e9caddc) + * update dependency nodebb-plugin-composer-default to v6.3.9 (effe3989) + * update dependency nodebb-plugin-mentions to v2.7.0 (b69769bb) + * update dependency benchpressjs to v2 (#7876) (9149db1f) + * update dependency nodebb-plugin-composer-default to v6.3.8 (793c5eaa) + * update dependency nodebb-plugin-composer-default to v6.3.7 (57de99d2) + * update dependency mongodb to v3.3.2 (#7871) (4ee2c090) + * update dependency nodebb-plugin-spam-be-gone to v0.6.5 (#7865) (8ce2a5fc) + * update dependency mongodb to v3.3.1 (#7862) (0dfce49f) + * update dependency connect-pg-simple to v6 [security] (#7864) (e4b5d0b4) + * update dependency nodebb-plugin-mentions to v2.6.1 (a1210985) + * update dependency nodebb-plugin-mentions to v2.6.0 (cdccc646) + * update dependency rimraf to v3 (#7843) (2f02edbc) + * update dependency rimraf to v2.7.1 (#7838) (cf2504f8) + * update dependency nodebb-theme-persona to v10.1.16 (#7848) (ca7ba9be) + * update dependency nodebb-theme-persona to v10.1.15 (#7845) (b1c0beb7) + * update dependency nodebb-theme-persona to v10.1.14 (#7837) (661284cf) + * update dependency nodebb-theme-persona to v10.1.13 (eaea6f63) + * update dependency sitemap to v4 (d3d677da) + * update dependency commander to v3 (7a5dbd9f) + * update dependency mongodb to v3.3.0 (360e172e) + * update dependency nodebb-plugin-markdown to v8.10.4 (61f9be99) + * update dependency nodebb-plugin-markdown to v8.10.3 (d860f8c7) + * update dependency sharp to v0.23.0 (#7806) (2258452c) + * update dependency nodebb-theme-persona to v10.1.12 (#7799) (b9aac424) + * update dependency nodebb-plugin-dbsearch to v4 (#7797) (d98313b5) + * update dependency nodebb-plugin-dbsearch to v3.0.8 (#7796) (ef734b62) + * update dependency nodebb-theme-persona to v10.1.11 (8b1fc5c8) + * update dependency nodebb-theme-vanilla to v11.1.7 (ba1bb528) + * update dependency nodebb-theme-vanilla to v11.1.6 (#7784) (7a88c4cc) + * update dependency nodebb-theme-slick to v1.2.26 (#7782) (e074b0bf) + * update dependency nodebb-theme-persona to v10.1.10 (#7781) (4f20b4d3) + * update dependency nodebb-plugin-composer-default to v6.3.6 (3fdc638b) + * update dependency connect-redis to v3.4.2 (8a11193f) + * update dependency nodebb-plugin-mentions to v2.5.4 (45223cde) + * update dependency nodebb-plugin-markdown to v8.10.2 (86546232) + * update dependency nodebb-theme-persona to v10.1.9 (#7759) (c1660a1a) + * update dependency nodebb-plugin-dbsearch to v3.0.7 (#7758) (efedd621) + * update dependency nodebb-plugin-composer-default to v6.3.5 (7f4b1043) + * update dependency nodebb-theme-vanilla to v11.1.5 (#7756) (15e01d12) + * update dependency nodebb-theme-persona to v10.1.8 (#7755) (19679608) + * update dependency nodebb-theme-persona to v10.1.7 (#7754) (3cb6cfe8) + * update dependency nodebb-plugin-composer-default to v6.3.3 (8394a0fd) + * update dependency nodebb-theme-vanilla to v11.1.4 (#7741) (43ce5f8a) + * update dependency nodebb-theme-persona to v10.1.5 (27da2325) + * update dependency validator to v11.1.0 (#7738) (bd09ba92) + * bump composer-default (851424a7) + * update dependency nodebb-theme-persona to v10.1.4 (f426e105) + * update dependency nodebb-plugin-composer-default to v6.2.16 (#7723) (fb087029) + * update dependency nodebb-theme-persona to v10.1.3 (413259a2) + * update dependency nodebb-theme-lavender to v5.0.11 (#7705) (208c821e) + * update dependency nodebb-theme-vanilla to v11.1.3 (#7714) (e0b2ae8d) + * update dependency nodebb-theme-slick to v1.2.25 (#7713) (af7ecd2f) + * update dependency nodebb-theme-persona to v10.1.2 (#7712) (e5733f40) + * update dependency nodebb-plugin-mentions to v2.5.3 (26ff02dc) + * update dependency nodebb-theme-persona to v10.1.1 (4e513cf3) + * update dependency nodebb-theme-vanilla to v11.1.2 (c2887505) + * update dependency nodebb-theme-vanilla to v11.1.1 (#7700) (b3ed89f5) + * update dependency nodebb-theme-slick to v1.2.24 (#7699) (629b5ce3) + * update to eslint@6 (289dada5) + * update dependency nodebb-plugin-emoji to v3 (15020b46) + * update dependency nodebb-plugin-emoji to v3 (6b43d26f) + * update dependency nodebb-theme-persona to v10.1.0 (fc89516e) + * update dependency nodebb-theme-vanilla to v11.1.0 (c9689f11) + * update dependency nodebb-theme-persona to v10.0.1 (#7687) (ada8f22e) + * update dependency nodebb-theme-vanilla to v11.0.1 (#7688) (6db3604e) + * update dependency nodebb-theme-vanilla to v11 (89fea9d3) + * update dependency nodebb-theme-persona to v10 (0a7778bd) + * update dependency nodebb-theme-lavender to v5.0.10 (#7682) (e1e4abeb) + * update dependency nodebb-plugin-markdown to v8.10.0 (de046297) + * update dependency postcss to v7.0.17 (ae891390) + * update dependency nodebb-rewards-essentials to v0.0.14 (#7671) (3f4f8afa) + * update dependency mongodb to v3.2.7 (#7665) (988cbb63) + * update dependency nodebb-plugin-composer-default to v6.2.15 (e21246a9) + * update dependency nodebb-theme-persona to v9.1.38 (#7652) (d202be5b) + * update dependency nodebb-theme-vanilla to v10.1.34 (#7653) (e3308659) + * update dependency nodebb-theme-vanilla to v10.1.33 (#7651) (6f70397b) + * update dependency nodebb-theme-persona to v9.1.37 (#7650) (d43bdb41) + * update dependency async to v3.0.1 (#7649) (3b8e6e15) + * update dependency mongodb to v3.2.6 (#7616) (3f21096d) + * update dependency validator to v11 (a3d42404) + * update dependency nodebb-plugin-composer-default to v6.2.14 (#7635) (b174c2d2) + * update dependency nodebb-theme-vanilla to v10.1.32 (#7631) (85ca5b19) + * update dependency nodebb-plugin-composer-default to v6.2.13 (d1f29e26) + * update dependency nodebb-plugin-spam-be-gone to v0.6.3 (#7614) (20fa751c) +* crash if post doesn't have topic data (eabc6f47) +* don't touch objects that don't have the required fields (e52ecfaf) +* add missing await to sendValidationEmail (f4381ba3) +* #8007 added tfoot to clear new group button (dee1d447) +* tests (e3c9dafa) +* #8018, allow absolute urls in notification.path (0037a038) +* #8010, fix isBanned call (59242d31) +* #8003, check children recursively (c4e58160) +* dont show delete topics on unread (b91c4790) +* #8000, tweak wording; password reset success (3952849f) +* parseInt cutoff (0e5e47f4) +* lint (4b8897d9) +* convert param to string in slugify (441dd86d) +* cli/reset.js (#7979) (f9f85fc4) +* #7977, fix undefined url (#7978) (95a372df) +* passwords always expiring upon login (ddf3812c) +* #7974 (#7976) (ca3be1f3) +* delete follower/followingCount as well (d72b0d16) +* event tests (0da4f7ee) +* #7958, give rewards one by one (3775301f) +* rewards page acp not loading rewards (88818a5b) +* #7929, use fixed bootswatch (dd202931) +* #7960, dont try to save size for non images (f272daaf) +* #7941, validate some input fields (565f9726) +* don't show deleted topics on unread (661a0f50) +* #7951, don't send notification for system messages (c01b0fbd) +* #7953, allow icon only group badges (5b458fc7) +* remove 0 fields (ac4a5004) +* remove unused data from post/topic/user hashes (75bcb0f4) +* groups not visible on widget panes (205d3f9d) +* new nav items will show group select (c5f7b66c) +* move post and change owner (f402d727) +* 404 on new groups with spaces (b19f0a68) +* #7940, run upgrade scripts on startup (7823144b) +* #7949, delete old user notifs (38322ec3) +* tests (6fb29e84) +* check threshold before setting bookmark (f983f536) +* mongo collection stats (4e28e575) +* #7947, disable unused cookie (91e8e390) +* #7945, show watched categories in ignored categories (c9bf6d0f) +* db.init calls (18bf865d) +* #7938, escape username in registration queue (d5dda26f) +* #7901, handle group names that are translation keys (3455c27a) +* fix the order of groups on user profile (41f8da2e) +* #7935, ACP digest wording (54c9f877) +* #7934, return tids (10f168b8) +* tests (3caa387a) +* tests (9c051386) +* remove jquery (95ab0712) +* picture not showing up in change modal (13c87059) +* profile page meta tags getting escaped twice (7effc892) +* missing await (2150701f) +* potential for XSS here (40f131a6) +* account/categories (7a0f6074) +* redis tests (1f054c7e) +* #7921, dont create wrong entries in db for flag (a651d154) +* #7913, dont allow urls in fullname/location, validate birthday (babb9d7c) +* upgrade scripts (bd026cb1) +* only allow png/jpg/bmp in cover/profile images (96ab8d05) +* #7919, add useUnifiedTopology (910b9b88) +* crash in feed (873ec519) +* lang key (795d4183) +* time cutoff and lang string (5b8550f0) +* returned data (87f6ac59) +* dont send all category data back to recent&unread etc (955e00fd) +* #7912 (ecf39727) +* only return necessary data for categories (307abaa8) +* dont crash if callback is undefined (e0fec866) +* #7800, dont crash on resize (781b3f1a) +* change params (de461968) +* remove dupe code (9b151b23) +* #7894, translate log in to view (2a5fe2b8) +* minor typo (b99279a8) +* #7893, check private upload setting (0843497d) +* #7892, handle string 'true'/'false' (77cb4b55) +* dont show deleted topics in digest (4652c68b) +* #7824, update timeago settings on userlanguage change (3887fc67) +* don't move theme/plugin to top if its already active (acd95764) +* #7853, dissociation on post purge (30a86ed5) +* added comment back (0c4cd840) +* inability for plugins to actually alter parser sanitization config (fe452762) +* htmlentity instead of url encoding for room rename system message (9b8ac89e) +* page count for filters (e291a609) +* #7866, show correct title based on digest interval (547bb496) +* #7780 (21e81f96) +* pinned tids showing on page > 1 (f2912e9f) +* #7860, allow running single upgrade scripts from plugins (a4dec7e3) +* reset should not automatically build assets (a67762bc) +* update morgan and lodash (2b1912a9) +* #7842, groups.invite works with an array of uids (1e0190ab) +* #7844, add uid to events, log plugin install/uninstall events (592d9c82) +* removed console.logs (c44bf48c) +* broken tests from 71b205a889da1ee8dd326b0891d122a522084f54 (f736f0b3) +* typo (c6c13725) +* category description getting translated in ACP (647713f3) +* #7791 (71620519) +* #7831, fix pagination (014e3153) +* remove empty line (292bbe34) +* remove useless catchs and empty line (5fce4558) +* #7823, fix topic move readding pids when topic is deleted (fd5f9822) +* #7826, fix order of categories on recent dropdown (3ecac97d) +* redis pubsub not being required correctly (8d4f2086) +* mongo.close using wrong client (186321e6) +* digest not sending topics (bc6f22eb) +* #7816, adding GDPR and TOU interstitials earlier on route reloading (52a2e5d6) +* #7809, dont check postDelay if submitting from queue (9780f5b9) +* newPostEditDuration (2abe244b) +* #7789 (6a289fba) +* #7798, fix nested post selection (666e0eaf) +* #7788, fix on topic move and new post (8bf40d04) +* #7788, fix another edge case (053ff510) +* topicData passed to action:topic.edit (b10ad7b6) +* derpy catch (ce912886) +* #7788 No new posts (#7793) (3c32d860) +* user urls in subfolder install (6a486e35) +* #7765 (0b498acd) +* tests (87552c55) +* revert requires (3dd806dc) +* #7763, parse about me on all profile pages (f8d34101) +* status and groupTitle, if its not set (e2e33dfb) +* don't return promise (2f0a331f) +* socket.io methods calling callbacks twice if method returns promise (44a33520) +* tests (87b1148f) +* tests (930ffd07) +* #7601 removed check for another user when sending messages (0e8ee31b) +* mongodb tests (3b24de4c) +* getTopicsFromSet (13aaf07b) +* #7762, allow array for isBanned (9eb1fcd4) +* add flag for change post owner (46639be3) +* sitemap ajaxify (9f78bd7a) +* #7751, make necro separator a partial (2b70e86f) +* #7748, if reputation system is disabled, dont check min reputation (7b95ebbb) +* remove left over code, use proper names (0ac49d63) +* compatibility conditional (fba67196) +* private upload img replacement should happen before img wrapping (16aae517) +* #7423 private uploads are linked to login page, for guests (49e3a368) +* typo (f3440ebf) +* #7722, hsts deprecation warnings (8b1dadb7) +* upgrade script #7720 (accf48f3) +* indents (a5de54f8) +* remove debug code that should not have made it in (af17c6e3) +* dont display post tools if there are no options (708df46e) +* output span in buildAvatar helper instead of div (69fae1a7) +* restore uid in teasers userObj (67b8cb89) +* dont allow edit if post is deleted by someone else (667bc67f) +* dont show delete posts on profile (e48c7cd7) +* on new post add it to cid::uid::pids (6a7bc1c5) +* #5570, create per category user post zsets (a39f0ef5) +* restrict drag drop to pin icon, closes #7702 (e1c05e59) +* remove dupe code (68e5d7ad) +* get uids directly for csv (39ee3980) +* typo (a251032f) +* id/for (b4cc8d88) +* #7659 add option to change cookie link url (25ea6347) +* middle vertical-align for .avatar elements (1894cd9b) +* dependency checker always triggering dep upgrade, hopefully (c241551d) +* #7483, show latest undeleted message as teaser (644504ff) +* #7567, allow invite and approval at the same time (4b843ba1) +* #7625, on group rename update nav/widget items (5b85ed31) +* psql error (8d319e42) +* try to fix psql :dog: (2e6b562f) +* no need for moderate bit for global mods and admins (8aef689f) +* attribute name so it works for both templates (ebb32e78) +* #7647, fix getModeratorUids (64679b37) +* #7644 (5cd9e1bf) +* bad usage of async requisition (603c5262) +* 7638, returnTo accidentally saved into user hash (f321b426) +* #7634, make strip exif configurable (157b921e) +* #7636, use reputation threshold for post queue (a8409fbd) +* #7623, wait for lastonline to update on /users (63e5d383) +* https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/53 (e65ddc98) +* #7593, unable to set account password if no password set (80c0d579) +* incorrect pathname format for app.previousUrl (a97e97b9) +* #7598, use notice element instead of alert (106d52a4) +* #7620, allow adding new fields into user objects for posts (a8e65205) +* #7629, new filter hook for room rename (7ba4a864) +* #7628, log email send errors (7a4b68e8) +* {username} not working in notification.tpl (f55cc667) +* do not prevent nbb from starting (3b0459a0) +* #7624, default open state on stateless flags (91f0bce6) +* #7431, add /unread link to topic route (15391da5) +* #7619 (35d10f76) +* #7618 save pathname into app.previousUrl ins. of entire url (7e5cb72a) +* handle missing timestamps (172e6888) +* broken test for meta tags on ajaxify (b70e03a7) +* #7613 (15ce23da) +* #7600, removing nbsp from email CTAs (#7606) (f552cea5) +* #7604 shortened CTA text and added custom text for some notifs (#7605) (b32da57f) +* **style:** + * requiring parens in block bodies (29f96b19) + * updated code to follow new eslint recommendations (09212309) + +##### Refactors + +* use arrow function (6b3eb014) +* async/await (02d38caf) +* remove log, topics.exists (f8c8038a) +* async/await (dc8d721c) +* async/await mongo (1f0c6f3d) +* async/await socket.io/index (603908c1) +* async/await image.js (c5ffd8cc) +* remove var (05e753c7) +* async/await flags.js (ac6eb31c) +* async/await flags (0ced71be) +* shorter map (572bc297) +* remove logs (03971049) +* dont modify key (7e7ea7a6) +* remove logs (e32a5546) +* async/await flags (9ee1a882) +* shorter, new Date doesnt throw (625b0815) +* remove temp var (b842057f) +* async/await file (f9d6912b) +* async/await analytics (223c108c) +* change to const (5505628c) +* returned fields (86b16629) +* async/await emailer (63bd3fc5) +* async/await routes/feeds (ec3b5dd9) +* async/await rewards (b110aec6) +* async/await socket.io (a7d2b8a1) +* async/await (52b2d670) +* async/await (75d7ae92) +* async/await socket.io/topics (5c2afe5e) +* async/await controllers/user.js (3c6c40b1) +* async/await uploads (5c0266d8) +* move tos parsing to /tos (3e2ed21d) +* remove commented out code (ec98945a) +* async/await controllers/authentication (b9105ef9) +* remove async from isPasswordValid, function is sync (22f80116) +* make categories.buildForSelectCategories non async (6cda3698) +* remove dupe code (a4d84a66) +* async/await socket.io/posts (e93ef0d7) +* async/await socket.io/admin (88dfbf21) +* socket.io/admin/categories async/await (71e50bbf) +* admin groups.join socket async/await (4588a4fd) +* password async/await (dd8386d9) +* sitemap to async/await (0164e51f) +* remove hook assign (d3727207) +* async/await users (f9a804e0) +* remove empty line (19b63bfa) +* remove vars (69333f59) +* async/await controllers (2c4f0446) +* async/await controllers/tags (53624885) +* async/await (f15c7f12) +* globalmods/groups (0722cc47) +* controllers/category.js (bd8736db) +* use arrow func (27c27b49) +* async/await controllers/api (4eaa630b) +* async/await admin/controllers (6f375482) +* async/await, remove dupe code for homepage routes (c9250a01) +* async/await for src/socket.io/groups.js (71b205a8) +* rewrote SocketPosts.getRawPost in await style (08530bb3) +* replace avatar conditional code with buildAvatar helper (#7681) (25238899) + +##### Reverts + +* accidental removal of some needed translation source strings (868dedd1) + +#### 1.12.2 (2019-05-15) + +##### Chores + +* incrementing version number - v1.12.2 (22db818e) +* bump themes #7576 (d349754d) +* bump themes (59bdc970) +* bump themes (abcca134) +* bump themes (551b18cd) +* incrementing version number - v1.12.1 (dd973abe) +* **deps:** + * update dependency lint-staged to v8.1.7 (dc6b49ca) + * update commitlint monorepo (9998e86b) + * update dependency jsdom to v15.1.0 (fcd6dc88) + * update dependency mocha to v6.1.4 (3ff8154b) + * update node:8.16.0 docker digest to b5484d1 (6421f10f) + * update dependency husky to v2.3.0 (c20e3313) + * update dependency nyc to v14.1.1 (#7584) (9047210c) + * update dependency eslint to v5.16.0 (692e2ead) + * update dependency nyc to v14 (9210baf5) + * update dependency husky to v2.2.0 (8a018a5f) + * update dependency lint-staged to v8.1.6 (4e39caf8) + * update dependency husky to v2.1.0 (65ff0bbd) + * update dependency husky to v2 (e81a1dbb) + * update dependency eslint-plugin-import to v2.17.2 (#7546) (c1fb17f9) + * update dependency jsdom to v15 (#7556) (d4d8d98f) + * update dependency jsdom to v14.1.0 (#7555) (ca694fd1) + * update node.js to v8.16.0 (#7554) (f10708e7) + * update dependency eslint-plugin-import to v2.17.1 (69dd8e4d) + * update dependency mocha to v6.1.2 (b7169772) + +##### Documentation Changes + +* updated changelog (93b688d0) + +##### New Features + +* let theme know downvoting is disabled, closes https://github.com/NodeBB/NodeBB/pull/7568 (bd94fbc2) +* closes #7583 (cf5aeace) +* #7319 (9385c8e3) +* add node12 to travis (1a7036a6) +* allow file uploading on registration interstitial (ddffc904) +* #7527 (ba5e1eaa) +* #7515 (c38db4f7) + +##### Bug Fixes + +* #7599 image size measurement erroring out on missing path (0d86781c) +* #7590 updated chat and post edit and delete timeout labels in ACP (4f0dc443) +* tests (3a7e99a5) +* #7586, switchTimeagoLanguage shouldn't discriminate against languages w/o shorthands (1703233f) +* #7576 "Disable password changes" can be sidestepped (50260e13) +* if editing password is disabled in ACP, prevent direct access via route/socket (related: #7576) (e114b16d) +* #7582 (c9ca72d0) +* #7461 (96cb29aa) +* increase batch size (3d938e7b) +* #7564 (bf6fc502) +* group cover upload not working for s3 upload (#7571) (8945ebcb) +* test (b9903120) +* #7539 (c940a733) +* #7565 (07e9b67e) +* #7464 (32cf07d7) +* #7147 (fe6d64cc) +* #7424 (f86d74d8) +* #7562 (09681e6c) +* node12 tests (8775e7e6) +* add post queue to /compose POST route (c6cd6c57) +* remove redis object cache (4df925e7) +* #7545 (74038849) +* failing test from 00552d7183f0416a0caa113fe2f1e658659648f7 (9bf3517d) +* fire filter:register.complete for users approved via registration queue (00552d71) +* #7540 (8778f00b) +* more graceful error handling and output for cli/reset (d3ebda73) +* #6438 only apply whitelist when fields request empty (#7528) (808c4909) +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.31 (#7589) (a9f9d19b) + * update dependency nodebb-theme-persona to v9.1.36 (#7588) (bd86e58d) + * update dependency mongodb to v3.2.4 (#7581) (26d6d0be) + * update dependency postcss to v7.0.16 (10a47a29) + * update dependency nodebb-theme-persona to v9.1.33 (#7563) (7c4201f2) + * update dependency sharp to v0.22.1 (#7561) (288a25f0) + * update dependency nodebb-plugin-composer-default to v6.2.12 (#7538) (a54f8f00) + * update dependency mongodb to v3.2.3 (97a7f02f) + +#### 1.12.1 (2019-04-10) + +##### Chores + +* incrementing version number - v1.12.1 (dd973abe) +* comment cleanup (6bed51ef) +* bump persona (1f4db132) +* bump themes, fix: https://github.com/NodeBB/NodeBB/issues/7446 (0d19bb3d) +* incrementing version number - v1.12.0 (d87f8c52) +* **deps:** + * update dependency lint-staged to v8.1.5 (ae17481d) + * update node:8.15.1 docker digest to 918f0be (5f787d73) + * update node:8.15.1 docker digest to 3d43ad1 (ea77ad4e) + * update dependency grunt to v1.0.4 (a9130fad) + * update dependency eslint to v5.15.3 (d2932cf6) + * update dependency mocha to v6.0.2 (#7408) (1c671c32) + * update dependency eslint to v5.15.1 (d8486e88) + * update node:8.15.1 docker digest to c151597 (2cb0bdea) + * update dependency jsdom to v14 (a967253a) + +##### Documentation Changes + +* updating changelog (9aeb291e) + +##### New Features + +* #7515 (ac889db1) +* update unban logic/invocation and refactor User.bans module (3fbb6faf) +* add original sessionID to static:user.loggedOut (abe4abb6) +* #7501 (2ee2cd52) +* allow multiple cids for getActiveUsers (81306fff) +* manual password expiry. closes #7471 (24dcae21) +* #7358 (7211dde7) + +##### Bug Fixes + +* don't crash if templateData is undefined (eb2c3e56) +* clear children before building tree (397e062a) +* upgrade script date (4f3ca4d8) +* #7519 (ed91d3f2) +* #7517 (e479fad7) +* #7470 Properly handle recompilation of email templates (75ae29c1) +* resolve CORS error on uploading via URL (3871a02c) +* #7461 (dbc4d840) +* #7491 (8cc1864a) +* #7476 (4db0efe3) +* #7508 (b52dba5c) +* escape search snippet closes #7506 (e906bea4) +* #7490 once again (3ec9fc40) +* #7502 (3304ffe9) +* #7503 (1f3554ff) +* #7493, adding robots noindex meta tag to compose and reset routes (6415ba82) +* #7490, handling of image sizes if no size saved in db (86e1cdd5) +* #7494 (8f55ab13) +* #6911, email throttling options set (63e16ec0) +* throttling email output to 2 messages every second, fixes #6911 (33a1bf6c) +* #7469 missing email logos, occasionally (8d62ead3) +* #7487 (fddb783e) +* #7485 (78e0b983) +* move upload_url to prestart so it is defined in upgrade scripts (ad2d7a69) +* #7342 (cead89f0) +* #7477 (240f563a) +* #7473 (c289b904) +* #7378 (c37b2f2e) +* #7454 (dcdd41c7) +* #7472 (962b7f73) +* remove async.series, dont crash if postAtIndex is undefined (dd8d4f20) +* tests (c12e1d19) +* #7468 (b4a9bb10) +* #7444 Re-factor handling of og:image tags (#7463) (697a6597) +* tests (45d7e37a) +* callbacks (b48b6d75) +* return early if keys is empty (7addc5a0) +* return early if keys is empty (b3962c16) +* prevent infinite loops if category is already in children (b71e0eb1) +* #7448 (4732bed3) +* return early if there are not blocked uids (73d14e45) +* #7008 (756dfd8a) +* typo (f9d92db5) +* tests (e71ae80c) +* #7406 (cbfbcee5) +* #7432 (777ca032) +* change user/system cpu usage (aecdf739) +* strip exif data on image uploads (5eaa14e7) +* **deps:** + * update dependency nodebb-theme-persona to v9.1.29 (e5c12a49) + * update dependency nodebb-plugin-composer-default to v6.2.11 (30b042b8) + * update dependency nodebb-plugin-composer-default to v6.2.10 (cf180e09) + * update dependency html-to-text to v5 (b39ce25c) + * update dependency semver to v6 (8662aa95) + * update dependency spdx-license-list to v6 (447cf66b) + * update dependency nodebb-widget-essentials to v4.0.17 (#7489) (0f9cb86d) + * update dependency mongodb to v3.2.2 (#7482) (357f931c) + * update dependency nodemailer to v6 (0274c2bd) + * update dependency sharp to v0.22.0 (#7466) (c3261415) + * update dependency nodebb-theme-slick to v1.2.23 (#7460) (c20cd528) + * update dependency nodebb-theme-vanilla to v10.1.25 (fe30e06d) + * update dependency nodebb-theme-persona to v9.1.27 (5c605392) + * update dependency connect-redis to v3.4.1 (02804fe9) + * update dependency nodebb-plugin-composer-default to v6.2.9 (#7442) (80293146) + * update dependency nodebb-theme-vanilla to v10.1.23 (#7438) (48dd3c5b) + * update dependency nodebb-theme-slick to v1.2.22 (#7437) (3f4ae4b0) + * update dependency nodebb-theme-persona to v9.1.25 (#7436) (9887bb4f) + * update dependency nodebb-plugin-composer-default to v6.2.8 (#7435) (c18f2e1f) + +### 1.12.0 (2019-03-06) + +##### Chores + +* incrementing version number - v1.12.0 (d87f8c52) +* incrementing version number - v1.11.2 (757bff27) +* **deps:** + * update node:8.15.1 docker digest to 287b8a5 (0b8d1833) + * update node.js to v8.15.1 (ae89db28) + * update dependency mocha to v6 (#7387) (30bdb1a1) + * update dependency coveralls to v3.0.3 (#7397) (cf74904c) + * update dependency eslint to v5.14.1 (4df9c206) + * update dependency jsdom to v13.2.0 (cb5e3d83) + * update node:8.15.0 docker digest to a8a9d8e (edcb5314) + * update dependency nyc to v13.3.0 (a78f5da5) + * update dependency lint-staged to v8.1.4 (18c90913) + * update dependency eslint to v5.14.0 (9d8d2d0d) + * update commitlint monorepo (aed5b29d) + * update dependency eslint-plugin-import to v2.16.0 (e0fa6965) + * update dependency @commitlint/cli to v7.4.0 (362d9397) + * update dependency lint-staged to v8.1.1 (96644350) + +##### Documentation Changes + +* updated changelog (aec2f210) + +##### New Features + +* admin/groups style change (2b6f1a05) +* add process cpu usage to admin (db477538) +* pass options to digest (23da3009) +* revamp email templates to be more style agnostic (#7375) (f32a9922) +* lower search timeout (fc830c0f) +* quick search (8a0e1280) +* add vote status to getPostData API call (eafe76de) +* make topic search a function (d2b83967) +* quick search (c01d43e0) +* check overide (ba90bf31) +* check CI failure (f2d7f75e) +* logging password resets and errors into event log (0c09b740) +* add `action:alert.new`, `action:alert.update` hooks (daadcc48) +* allow themes to define custom classes for categories via filter:admin.category.get (5031bfe8) +* show more unread notifs (d75a0d77) +* pass topic creation data to action:topic.save (cd2f72fb) +* textcomplete over jquery-textcomplete, closes #7309 (02a8ed9b) +* new hook filter:privileges.posts.edit (f659ef4d) +* new hook type: `response` (a23854e3) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-persona to v9.1.24 (0f2d3181) + * update dependency nodebb-plugin-composer-default to v6.2.7 (#7411) (9ebc900a) + * bump markdown (82c8ee3f) + * bump markdown (7ce5a81f) + * bump persona (a0b71f09) + * update dependency nodebb-theme-vanilla to v10.1.21 (#7404) (699eddcb) + * update dependency nodebb-theme-persona to v9.1.22 (#7403) (d87751ea) + * update dependency nodebb-theme-persona to v9.1.21 (#7401) (f721155d) + * update dependency nodebb-theme-slick to v1.2.21 (#7398) (f6e55651) + * update dependency nodebb-widget-essentials to v4.0.14 (#7399) (f812e0b7) + * update dependency nodebb-theme-persona to v9.1.19 (#7392) (deff7b34) + * update dependency nodebb-plugin-composer-default to v6.2.6 (#7389) (fab32a49) + * update dependency nodebb-theme-persona to v9.1.18 (042b81a0) + * update dependency nodebb-theme-persona to v9.1.17 (#7379) (546e04e1) + * update dependency nodebb-plugin-composer-default to v6.2.5 (#7374) (d0874f34) + * update dependency async to v2.6.2 (#7365) (264eadde) + * update dependency nodebb-plugin-composer-default to v6.2.4 (30ff4582) + * update dependency nodebb-theme-persona to v9.1.16 (65df6711) + * update dependency nodebb-plugin-markdown to v8.9.0 (07b29d59) + * bump contenteditable to v0.1.1, #7325 (fbbe2ab7) + * update dependency nodebb-plugin-composer-default to v6.2.3 (#7341) (176efb5f) + * update dependency nodebb-theme-persona to v9.1.15 (#7295) (8f69ffd4) + * update dependency nodebb-theme-slick to v1.2.20 (#7197) (a82bd3d0) + * update dependency nodebb-theme-lavender to v5.0.9 (#7322) (b350be27) + * update dependency nodebb-plugin-composer-default to v6.2.2 (99f82fb3) + * update dependency winston to v3.2.1 (#7317) (7e872d32) + * update dependency nodebb-plugin-markdown to v8.8.8 (#7314) (9cf81afe) + * update dependency nodebb-plugin-dbsearch to v3.0.6 (#7305) (d48ef6d8) + * update dependency nodebb-plugin-dbsearch to v3.0.5 (#7304) (57e3f162) + * update dependency nodebb-theme-vanilla to v10.1.19 (#7301) (443dcee4) + * update dependency winston to v3.2.0 (#7299) (6f957cb9) + * update dependency nodebb-plugin-spam-be-gone to v0.6.0 (247ac828) +* #7413 (684175f7) +* #7414 (e331f6b5) +* l2spread @baris nib (0360f6e1) +* restored email logo to all outgoing emails (6c1f9c3c) +* die hydra!!! (ad6c8dcc) +* incorrect teaserPost logic (97313508) +* normalized font sizes for paragraphs in digest (43c4eb23) +* removed notification subheader translation string (6f272e34) +* broken 50% border radius on emails, failing tests (d3a10628) +* hook names getting objectified by winston (6472a065) +* failing tests from revamped-emails branch (3a7f1c19) +* #7395 (03305db8) +* mounting of all-route middlewares to router instead of app (d722f3b8) +* incorrect returnTo set in registerComplete (f972f752) +* search.api not working on subfolder (158f68eb) +* tests for #7385 (7a534453) +* #7385 better handling for errors in Adv>Databases (57069a5c) +* no relative path needed in req.session.returnTo (949b10f1) +* don't refresh page when enabling/disabling categories (d5ece9a4) +* #7373 (c2e7ae7f) +* autocomplete not triggered if chat switched (ab0e547d) +* #7366 (6c2f48f1) +* #7357 (45c322ae) +* #7359 (2996a5dc) +* re-introducing indeterminate checkbox state to ACP privs (e8f3c256) +* #7354 (c6ad8fae) +* uid check (efd7d953) +* uid checks (c24dcf78) +* only allow numbers as scores (#7356) (5917dec2) +* #7231, missing success alert on group name change in ACP (0fffcb38) +* remove debug logs (fe63fca8) +* don't use same db as prod values (39e35275) +* database 0 was being replaced with undefined because 0 is falsy (bcd62586) +* #7352 (2e2c3ac1) +* #7261, banned users still get digests (aca05560) +* #7346, panel-header widget colours in ACP (91a7b907) +* #7350 (8c68780e) +* eslint failure from daadcc4889a91b9bbd279d49db348610cc079ccc (96b6ce1f) +* prevent crash if results.stats or results.serverStatus is undefined (fab52b84) +* move `action:alert.update` to after translator (d864da1a) +* #7098 (fc6767e1) +* #7232 (70d9c6c4) +* #7229 (e59b907d) +* #7339 (12c58990) +* #7338 (8e3bf581) +* dont crash if userData is undefined #7262 (56a493d8) +* #7240 (a2f08e7d) +* give default privs on new install to guests/spiders (cd120990) +* #6806 (c72da559) +* #7334 (ae779ea4) +* closes #7217 (9d1fcf4e) +* merge post notifs (6e69a9ab) +* don't crash if body doesn't have `skin-` (f6cfbbb5) +* #7324 (c7abf07a) +* allow regular groups to local login (0366cfd8) +* #7316 (5353960a) +* #7306 (8aebe884) +* #7312 (7a4a8ea4) +* #7311, missing dependencies (263e58df) +* #7300 (920efad0) +* #6848 (70f8b418) +* #7298 privilege header misalignment (df6f75eb) +* #7211 (cf918078) +* #7215 (7a9780f6) +* #7296, local login privilege available to registered-users only (7fb3c168) +* #7094 (d03220cd) + +#### 1.11.2 (2019-01-24) + +##### Chores + +* incrementing version number - v1.11.2 (757bff27) +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update node:8.15.0 docker digest to cb66110 (1719cd77) + * update dependency eslint-plugin-import to v2.15.0 (f7191eb9) + * update dependency eslint to v5.12.1 (d928c54d) + * update dependency @commitlint/cli to v7.3.2 (6ae2b972) + * update node.js to v8.15.0 (ac39fe90) + * update dependency eslint to v5.12.0 (f96ef7bb) + * update commitlint monorepo to v7.3.1 (50594118) + * update dependency smtp-server to v3.5.0 (00063708) + * update dependency husky to v1.3.1 (719995a4) + * update dependency eslint to v5.11.0 (#7151) (26f3bdbf) + * update dependency husky to v1.3.0 (eb606281) + * update dependency jsdom to v13.1.0 (60e9430b) + * update dependency eslint to v5.10.0 (#7084) (dae861da) + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### Documentation Changes + +* updated changelog for v1.11.1 (c04e192d) + +##### New Features + +* new hook filter:user.logout (63061ffd) +* explicit handling of SSO success and failure (059a4be2) +* additional options for SSO plugins (2b9322e1) +* get rid of disk access (ed5d2d6d) +* support for one-click unsubscribe from email clients (#7203) (70a87d43) +* added new hook `static:sockets.validateSession` (#7189) (0263b4da) +* #7120 (f4ea2c43) +* #7032 (0c1ac4d6) +* small fixes (fef7e13c) +* name topic controller (b9b9d8b2) +* header (0cb9bba4) +* more naming (ae0fe5e8) +* give the rest of the middlewares names (f88db22c) +* give names to more middlewares (fdfbcc6e) +* give names to middlewares (53793e16) +* change sortedSetsScore (d2c2d56f) +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) +* **deps:** update bootstrap to v3.4.0 (#7106) (d1ea5d15) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* test (bc41848a) +* #7235 (7064fd06) +* use ACP config value for checking online status (ef0e7808) +* log error to prevent headers already sent (a22a3a98) +* #7289 timeago shorthand toggle fails on non-existant language (cee47f78) +* #7276 improper request for client-noskin.css (5ee173c2) +* #7274 incorrect handling of client script 404s (831d0795) +* #7270 Flags graph label not translatable (8ceb35f5) +* #7266 body does not contain skin class (f122fc44) +* generate timeago codes from files (7524d3c3) +* removal of timeago fallback middleware (#7259) (c831ff0d) +* post queue notifs (ac655564) +* added missing translation and error state for password change (51b5fb98) +* #7236, header search stops working after header update (3859d417) +* #7226, added placeholder styling for fa-nbb-none (87c2d108) +* escape hook method (9328eeca) +* #7216, hide taskbar on chat modal invocation on mobile (a70db885) +* #7208 (428f587c) +* #7054 (a662f118) +* #7209 (b9833483) +* missing notification (1a3838e1) +* #7193, closes #7194 (7809ba28) +* #https://github.com/barisusakli/nodebb-plugin-dbsearch/issues/49 (6f1fb4eb) +* #7187 (28459d04) +* #7176, FUOC on app.reskin() (954af0f0) +* #7174 (9aa1aa68) +* #7181 (0d409610) +* #7142 (8da3b2a4) +* #7179 (03299736) +* #7169 Fixed logout being broken (b0eaa858) +* #7167, composer and chat not closing on logout (629b3554) +* shorter function (43e7cc0a) +* #7162 (2da0a657) +* uid filtering (72afc180) +* dont crash if default cover is invalid (41fb5cca) +* #7136 socket.disconnect() now called on invalid session (8e9de540) +* RTL not respected when changed in user settings, related to #7146 (4873a339) +* #7146 Better RTL handling on (de-)authentication (d81e0a5f) +* #7118, invoking autoLocale middleware on logout (900f0a0b) +* closes #6784 (#7137) (7fb29f42) +* 7100 (ab81cca7) +* #7139 (3917022a) +* #7116 (7e828404) +* #7138 (29a85aec) +* lint (b47f939b) +* #7091, #7093 (69e0dbbf) +* #7131 (d31684e8) +* remove cache (b2a74b41) +* loop (60390c01) +* #7124 (4650a760) +* unread badge (9f506268) +* move the check to get methods (99e0895e) +* #7115 (989879a6) +* #6979 (29b63ae7) +* upgrade script key (0eef3e1c) +* remove log (00afc5b3) +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **deps:** + * update dependency nodebb-widget-essentials to v4.0.13 (#7293) (22cbcc3e) + * update dependency mongodb to v3.1.13 (1aadbc3c) + * update dependency postcss to v7.0.14 (4d64de76) + * #7271, updating autoprefixer to latest version (a7af0198) + * #7270 (b48f1b4d) + * update dependency sharp to v0.21.3 (#7267) (8a64667f) + * theme upgrades for #7266 (5607261c) + * update dependency mongodb to v3.1.12 (eeab7d20) + * update dependency mongodb to v3.1.11 (#7252) (b5f188b6) + * update dependency validator to v10.11.0 (77dc8fc7) + * update dependency nodebb-plugin-composer-default to v6.1.21 (2fbb2614) + * update dependency postcss to v7.0.12 (f1842295) + * update dependency postcss to v7.0.11 (57bec2fb) + * update dependency sharp to v0.21.2 (8f3c4b09) + * update dependency postcss to v7.0.10 (82475fe5) + * update dependency postcss to v7.0.9 (f171c169) + * update dependency nodebb-theme-vanilla to v10.1.15 (ea059e89) + * update dependency nodebb-theme-persona to v9.1.10 (96482569) + * update dependency nodebb-theme-persona to v9.1.9 (bbe05043) + * update dependency nodebb-theme-vanilla to v10.1.14 (6cc5dbc8) + * update dependency nodebb-theme-persona to v9.1.8 (e5443690) + * update dependency pg-cursor to v2 (29acad42) + * update dependency diff to v4 (#7198) (84e228bb) + * update dependency nodebb-plugin-mentions to v2.5.2 (#7199) (0a647316) + * update dependency nodebb-plugin-markdown to v8.8.7 (90b4d40e) + * update dependency rimraf to v2.6.3 (f4cc3122) + * update dependency spider-detector to v1.0.19 (#7177) (0faba325) + * update dependency nodemailer to v5 (4993b03c) + * update dependency json-2-csv to v3 (80cee665) + * update dependency nodebb-plugin-composer-default to v6.1.20 (07bf0b98) + * update dependency nodebb-theme-persona to v9.1.7 (#7161) (c68d4ae8) + * update dependency nodebb-plugin-composer-default to v6.1.19 (#7159) (07af46ea) + * update dependency nodebb-plugin-composer-default to v6.1.18 (#7158) (584b45fc) + * update dependency validator to v10.10.0 (#7152) (8003bed8) + * update dependency nodebb-plugin-mentions to v2.5.0 (792dce14) + * update dependency nodebb-theme-persona to v9.1.6 (#7141) (325b0293) + * update dependency nodebb-plugin-dbsearch to v3.0.4 (ddd07c1a) + * update dependency nodebb-widget-essentials to v4.0.12 (#7133) (f614a44d) + * update dependency nodebb-plugin-mentions to v2.4.0 (9ab31d7e) + * update dependency postcss to v7.0.7 (7ef8c3fd) + * update dependency sharp to v0.21.1 (#7082) (bf75f3e3) + * update dependency nodebb-theme-vanilla to v10.1.13 (#7114) (fc5598b9) + * update dependency nodebb-theme-slick to v1.2.19 (#7113) (56ad43aa) + * update dependency nodebb-theme-persona to v9.1.5 (#7112) (953f8fe5) + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Other Changes + +* //github.com/NodeBB/nodebb-theme-persona/issues/363 (702be3f6) +* //github.com/NodeBB/NodeBB/issues/6433 (7e00d6b9) +* #6408 (f0f30041) +* #6425 (fbf52407) +* //github.com/NodeBB/NodeBB/issues/6073 (5da24b41) +* #5862, setting chat list height even if no message list is present (bc9a1250) +* //github.com/Schamper/nodebb-plugin-poll/issues/86 (c0f39032) + +##### Refactors + +* use loash when possible (#7230) (e1ca2d81) + +##### Code Style Changes + +* lint fix (fbe6ccd7) +* **eslint:** + * match operator-linebreak preferences (ba619c7e) + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + +#### 1.11.1 (2018-12-14) + +##### Chores + +* incrementing version number - v1.11.1 (2104877c) +* **deps:** + * update dependency husky to v1.2.1 (63f4b569) + * update node:8.14.0 docker digest to dd2381f (7449ae3e) + * update node.js to v8.14.0 (8a5a031d) + +##### New Features + +* Allow getting logfile path from config (#7044) (f3e8e065) +* remove uid::ignored:cids (#7099) (263c9180) +* cache category tag whitelist (78fa7340) +* make user cards look less derpy (31bb2ae9) +* added new middleware authenticateOrGuest (4fba1492) +* closes #7070 (7ca62b83) +* added README.md in languages folder (648964fa) +* up composer (7eee8e1d) +* allow array results (54c127d1) +* #7023 (f581c052) +* close #7002, console message if mismatched origins (89c025d1) +* added changelog file to root of repo (e89b4fca) +* **email:** don't escape html in notification bodies. (#7042) (d7c55bc3) + +##### Bug Fixes + +* #7108 (81697390) +* dont save data for non-positive uids (62f01a83) +* #7103 (f103390a) +* dont update cid::tids:votes if topic is pinned (2f57a4b9) +* #7102 (d117df77) +* #7102 (85a07e99) +* don't explode if there is no css el (74d0e88d) +* db info page (26ccd8f6) +* logAttempt conditional (a6c8e0ab) +* #7087, server-side protection against guest blocks (33d4956b) +* don't crash in flags.validate if user blocked target (81aa3a0b) +* dont send empty strings (555c092f) +* #7085 (fe0f95a2) +* #7086 (e55fb437) +* wrong variable #7085 (71163421) +* admins&mods when there are mutliple lines of users (de437e36) +* refreshing settings page on save if language changed (ed46c5e2) +* not calling authenticate middleware on resource direct access routes (eeaee8cc) +* #7038, autoLocale logic not playing nicely with no-refresh auths (#7059) (5f3d1c76) +* #7074 (2604cf63) +* #7071 buildSkinAsset won't rebuild continuously (a07d9898) +* #7063, logout code should do hard page nav to / or data.next (6df5668e) +* #7061 (eab297bd) +* skin not changing after login or logout, #7038 (28a1fa78) +* #7040 (a63ddbe2) +* #7041 (ec0c50d4) +* #7043 (8d7c3897) +* add missing render function (cb7c2d8c) +* #7033 (8808a033) +* #7037 (b86f1556) +* #6991, add timeout for version Github request (43c3bb02) +* #7030 (58d4376f) +* **deps:** + * update dependency nodebb-plugin-composer-default to v6.1.17 (3bcfd7fc) + * update dependency nodebb-theme-persona to v9.1.4 (b6ad5fd4) + * update dependency nodebb-plugin-markdown to v8.8.6 (#7079) (46fb365d) + * update dependency nodebb-theme-persona to v9.1.3 (#7075) (d2aea57a) + * update dependency nodebb-theme-persona to v9.1.2 (42e792ab) + * update dependency nodebb-theme-persona to v9.1.1 (#7069) (bdb33056) + * update dependency postcss to v7.0.6 (6b5428c5) + * update dependency nodebb-plugin-composer-default to v6.1.14 (#7058) (e48ed6e0) + * update dependency nodebb-plugin-composer-default to v6.1.13 (#7057) (ada1d6d0) + * update dependency nodebb-plugin-composer-default to v6.1.12 (#7056) (9f9f72da) + * update dependency nodebb-plugin-composer-default to v6.1.11 (#7055) (89acb896) + * update dependency nodebb-theme-slick to v1.2.18 (#7049) (b6cb77c1) + * update dependency nodebb-theme-slick to v1.2.17 (#7048) (7334c45b) + * update dependency nodebb-theme-slick to v1.2.16 (#7047) (1cb1af0c) + * update dependency connect-mongo to v2.0.3 (#7046) (d0d0c7f0) + * update dependency nodebb-plugin-dbsearch to v3.0.3 (#7035) (adb1b5f3) + * update dependency lru-cache to v4.1.5 (#7031) (887582eb) + * update dependency socket.io to v2.2.0 (b9d49867) + * update dependency socket.io-client to v2.2.0 (824bd541) + * update dependency nodebb-plugin-dbsearch to v3.0.2 (#7028) (11f1b409) + * update dependency nodebb-plugin-dbsearch to v3.0.1 (#7027) (e71f443c) +* **i18n:** pushed notifications source to tx, pulled fallbacks (8dd8370b) + +##### Code Style Changes + +* **eslint:** match operator-linebreak preferences (ba619c7e) + +### 1.11.0 (2018-11-28) + +##### Chores + +* **deps:** + * update dependency lint-staged to v8.1.0 (dd7f8a14) + * update dependency husky to v1.2.0 (aee21628) + * update node:8.12.0 docker digest to 5dae8ea (0ef451dd) + * update dependency husky to v1.1.4 (95d6ab06) + * update dependency eslint to v5.9.0 (92441794) + * pin dependencies (b0483f21) + * update dependency eslint-config-airbnb-base to v13 (#6599) (64b9dabf) + * update node.js to v8.12.0 (fa3afbd2) + * update dependency husky to v1.1.3 (6cee5b8e) + * update dependency lint-staged to v8.0.4 (9d258668) + * update dependency lint-staged to v8.0.3 (aaa6fe9e) + * update dependency lint-staged to v8 (95d7a5fa) + * update dependency jsdom to v13 (52f141c9) +* **husky:** setting up husky as recommended in docs (e8a3d929) + +##### New Features + +* enabling commitlint (c58a41ed) +* allow disabling of GDPR features via ACP toggle, closes #6847 (4919e9ef) + +##### Bug Fixes + +* **deps:** + * update dependency nodebb-theme-vanilla to v10.1.12 (cf928f44) + * update dependency nodebb-theme-persona to v9.1.0 (179be9ed) + * update dependency nodebb-theme-persona to v9.0.63 (#7019) (68ae3eb6) + * update dependency nodebb-plugin-markdown to v8.8.5 (d3ab7d1b) + * update dependency nodebb-theme-persona to v9.0.60 (#6984) (cbd50a80) + * update dependency nodebb-theme-vanilla to v10.1.10 (#6982) (4c769487) + * update dependency nodebb-theme-slick to v1.2.15 (#6981) (acaf1a05) + * update dependency nodebb-theme-persona to v9.0.59 (#6980) (5863bb2c) + * update dependency lru-cache to v4.1.4 (#6977) (375ab769) + * update dependency connect-mongo to v2.0.2 (#6975) (e1597b83) + * update dependency nodebb-plugin-markdown to v8.8.4 (84d1013d) + * update dependency nodebb-plugin-composer-default to v6.1.8 (fee7e336) + * update dependency nodebb-plugin-markdown to v8.8.3 (b182a195) + * update dependency nodebb-plugin-composer-default to v6.1.7 (#6966) (1101f327) + * update dependency nodebb-theme-persona to v9.0.58 (#6964) (6ade156b) + * update dependency mongodb to v3.1.10 (#6962) (662215fa) + * update dependency nodebb-theme-persona to v9.0.57 (#6956) (1bf1a439) + * update dependency nodebb-theme-persona to v9.0.55 (#6955) (e06683f7) + * update dependency nodebb-plugin-composer-default to v6.1.6 (c51ceaf0) + * update dependency nodebb-theme-persona to v9.0.54 (bb940b01) + * update dependency nodebb-plugin-mentions to v2.2.12 (#6936) (e12a803b) + * update dependency nodebb-theme-vanilla to v10.1.9 (#6935) (b480c321) + * update dependency nodebb-theme-slick to v1.2.14 (#6934) (9cdd5316) + * update dependency nodebb-theme-persona to v9.0.53 (#6933) (9ee1c2f8) + * update dependency nodebb-plugin-dbsearch to v2.0.23 (#6931) (dba1db9c) + * update dependency jsesc to v2.5.2 (511b4edc) + * update dependency validator to v10.9.0 (032caafa) + * update dependency spdx-license-list to v5 (a639b6b8) + * update dependency nodebb-theme-vanilla to v10.1.8 (eb0a322d) + * update dependency nodebb-theme-persona to v9.0.52 (6566a0cb) + * update dependency nodebb-plugin-dbsearch to v2.0.22 (#6916) (7808e58c) + * update dependency mongodb to v3.1.9 (#6914) (9a9f2af9) + * update dependency nodebb-theme-persona to v9.0.51 (e2274fe0) + * update dependency nodebb-theme-slick to v1.2.13 (3005428d) + * update dependency nodebb-theme-persona to v9.0.50 (#6902) (22140a20) + * update dependency nodebb-plugin-markdown to v8.8.2 (0b4c9a80) + * update dependency nodebb-theme-vanilla to v10.1.7 (3150a2fc) + * update dependency nodebb-theme-slick to v1.2.12 (#6881) (9bcda7f7) + * update dependency nodebb-theme-persona to v9.0.49 (#6880) (e0dc00da) + * update dependency nodebb-theme-persona to v9.0.48 (2b6f5eec) +* added admin/manage/uploads to tx config (7357926f) +* #7013, add cache buster to js-enabled.css (f6b92c1d) +* removal of scroll anchoring code in favour of browser handling (98c14e0e) +* custom navigation item not showing groups (d9452bf3) +* flags detail page crash if reporter blocks author (d027207f) +* #6922, skin assets not including plugin LESS files (a5022ce4) +* #6921, allow square brackets in usernames (da10ca08) +* interstitial redirects failing if done via ajaxify (3c8939a8) +* username trim on login, closes #6894 (157bea69) +* **uploads:** ugly filenames on uploaded asset downloading (f96208a0) +* **acp:** + * small UI fixes for ACP privileges category selector (#6946) (57b39d5b) + * hard-to-discover dropdown selector in ACP (b3f96d28) +* **l10n:** some translations (34cbd1fc) + +##### Code Style Changes + +* **eslint:** + * newlines in public/src as well (f7bd398e) + * enforcing newline on chained calls (95cc27f1) + diff --git a/.stryker-tmp/sandbox6184526/Dockerfile b/.stryker-tmp/sandbox6184526/Dockerfile new file mode 100644 index 0000000000..f3b76ab35b --- /dev/null +++ b/.stryker-tmp/sandbox6184526/Dockerfile @@ -0,0 +1,75 @@ +FROM node:lts as build + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +COPY . /usr/src/app/ + +# Install corepack to allow usage of other package managers +RUN corepack enable + +# Removing unnecessary files for us +RUN find . -mindepth 1 -maxdepth 1 -name '.*' ! -name '.' ! -name '..' -exec bash -c 'echo "Deleting {}"; rm -rf {}' \; + +# Prepage package.json +RUN cp /usr/src/app/install/package.json /usr/src/app/ + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive \ + apt-get -y --no-install-recommends install \ + tini + +RUN groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && chown -R ${USER}:${USER} /usr/src/app/ + +USER ${USER} + +RUN npm install --omit=dev + # TODO: generate lockfiles for each package manager + ## pnpm import \ + +FROM node:lts-slim AS final + +ENV NODE_ENV=production \ + DAEMON=false \ + SILENT=false \ + USER=nodebb \ + UID=1001 \ + GID=1001 + +WORKDIR /usr/src/app/ + +RUN corepack enable \ + && groupadd --gid ${GID} ${USER} \ + && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ + && mkdir -p /usr/src/app/logs/ /opt/config/ \ + && chown -R ${USER}:${USER} /usr/src/app/ /opt/config/ + +COPY --from=build --chown=${USER}:${USER} /usr/src/app/ /usr/src/app/install/docker/setup.json /usr/src/app/ +COPY --from=build --chown=${USER}:${USER} /usr/bin/tini /usr/src/app/install/docker/entrypoint.sh /usr/local/bin/ + +RUN chmod +x /usr/local/bin/entrypoint.sh \ + && chmod +x /usr/local/bin/tini + +# TODO: Have docker-compose use environment variables to create files like setup.json and config.json. +# COPY --from=hairyhenderson/gomplate:stable /gomplate /usr/local/bin/gomplate + +USER ${USER} + +EXPOSE 4567 + +VOLUME ["/usr/src/app/node_modules", "/usr/src/app/build", "/usr/src/app/public/uploads", "/opt/config/"] + +# Utilising tini as our init system within the Docker container for graceful start-up and termination. +# Tini serves as an uncomplicated init system, adept at managing the reaping of zombie processes and forwarding signals. +# This approach is crucial to circumvent issues with unmanaged subprocesses and signal handling in containerised environments. +# By integrating tini, we enhance the reliability and stability of our Docker containers. +# Ensures smooth start-up and shutdown processes, and reliable, safe handling of signal processing. +ENTRYPOINT ["tini", "--", "entrypoint.sh"] \ No newline at end of file diff --git a/.stryker-tmp/sandbox6184526/Gruntfile.js b/.stryker-tmp/sandbox6184526/Gruntfile.js new file mode 100644 index 0000000000..855c1bfa99 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/Gruntfile.js @@ -0,0 +1,202 @@ +// @ts-nocheck +'use strict'; + +const path = require('path'); +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); +const winston = require('winston'); +const { fork } = require('child_process'); + +const { env } = process; +let worker; + +env.NODE_ENV = env.NODE_ENV || 'development'; + +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); + +const db = require('./src/database'); +const plugins = require('./src/plugins'); + +module.exports = function (grunt) { + const args = []; + + if (!grunt.option('verbose')) { + args.push('--log-level=info'); + nconf.set('log-level', 'info'); + } + prestart.setupWinston(); + + grunt.initConfig({ + watch: {}, + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + + grunt.registerTask('default', ['watch']); + + grunt.registerTask('init', async function () { + const done = this.async(); + let pluginList = []; + if (!process.argv.includes('--core')) { + await db.init(); + pluginList = await plugins.getActive(); + addBaseThemes(pluginList); + if (!pluginList.includes('nodebb-plugin-composer-default')) { + pluginList.push('nodebb-plugin-composer-default'); + } + if (!pluginList.includes('nodebb-theme-harmony')) { + pluginList.push('nodebb-theme-harmony'); + } + } + + const styleUpdated_Client = pluginList.map(p => `node_modules/${p}/*.scss`) + .concat(pluginList.map(p => `node_modules/${p}/*.css`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static|scss)/**/*.scss`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); + + const clientUpdated = pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.js`); + const serverUpdated = pluginList.map(p => `node_modules/${p}/*.js`) + .concat(pluginList.map(p => `node_modules/${p}/+(lib|src)/**/*.js`)); + + const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`); + const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`); + const interval = 100; + grunt.config(['watch'], { + styleUpdated: { + files: [ + 'public/scss/**/*.scss', + ...styleUpdated_Client, + ], + options: { + interval: interval, + }, + }, + clientUpdated: { + files: [ + 'public/src/**/*.js', + 'public/vendor/**/*.js', + ...clientUpdated, + 'node_modules/benchpressjs/build/benchpress.js', + ], + options: { + interval: interval, + }, + }, + serverUpdated: { + files: [ + 'app.js', + 'install/*.js', + 'src/**/*.js', + 'public/src/modules/translator.common.js', + 'public/src/modules/helpers.common.js', + 'public/src/utils.common.js', + serverUpdated, + '!src/upgrades/**', + ], + options: { + interval: interval, + }, + }, + templatesUpdated: { + files: [ + 'src/views/**/*.tpl', + ...templatesUpdated, + ], + options: { + interval: interval, + }, + }, + langUpdated: { + files: [ + 'public/language/en-GB/*.json', + 'public/language/en-GB/**/*.json', + ...langUpdated, + ], + options: { + interval: interval, + }, + }, + }); + const build = require('./src/meta/build'); + if (!grunt.option('skip')) { + await build.build(true, { watch: true }); + } + run(); + done(); + }); + + function run() { + if (worker) { + worker.kill(); + } + + const execArgv = []; + const inspect = process.argv.find(a => a.startsWith('--inspect')); + + if (inspect) { + execArgv.push(inspect); + } + + worker = fork('app.js', args, { + env, + execArgv, + }); + } + + grunt.task.run('init'); + + grunt.event.removeAllListeners('watch'); + grunt.event.on('watch', (action, filepath, target) => { + let compiling; + if (target === 'styleUpdated') { + compiling = ['clientCSS', 'acpCSS']; + } else if (target === 'clientUpdated') { + compiling = ['js']; + } else if (target === 'templatesUpdated') { + compiling = ['tpl']; + } else if (target === 'langUpdated') { + compiling = ['lang']; + } else if (target === 'serverUpdated') { + // empty require cache + const paths = ['./src/meta/build.js', './src/meta/index.js']; + paths.forEach(p => delete require.cache[require.resolve(p)]); + return run(); + } + + require('./src/meta/build').build(compiling, { webpack: false }, (err) => { + if (err) { + winston.error(err.stack); + } + if (worker) { + worker.send({ compiling: compiling }); + } + }); + }); +}; + +function addBaseThemes(pluginList) { + let themeId = pluginList.find(p => p.includes('nodebb-theme-')); + if (!themeId) { + return pluginList; + } + let baseTheme; + do { + try { + baseTheme = require(`${themeId}/theme`).baseTheme; + } catch (err) { + console.log(err); + } + + if (baseTheme) { + pluginList.push(baseTheme); + themeId = baseTheme; + } + } while (baseTheme); + return pluginList; +} diff --git a/.stryker-tmp/sandbox6184526/LICENSE b/.stryker-tmp/sandbox6184526/LICENSE new file mode 100644 index 0000000000..94a9ed024d --- /dev/null +++ b/.stryker-tmp/sandbox6184526/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/.stryker-tmp/sandbox6184526/README.md b/.stryker-tmp/sandbox6184526/README.md new file mode 100644 index 0000000000..2fd96967ba --- /dev/null +++ b/.stryker-tmp/sandbox6184526/README.md @@ -0,0 +1,86 @@ +Team Members: Andrew Cheng, Emily Yu, Tin Chi Lo, Joyce Lam, Jorge Gracia + +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/ithVU1OO) +# ![NodeBB](public/images/sm-card.png) + +[![Workflow](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml/badge.svg)](https://github.com/CMU-313/NodeBB/actions/workflows/test.yaml) +[![Coverage Status](https://coveralls.io/repos/github/CMU-313/NodeBB/badge.svg)](https://coveralls.io/github/CMU-313/NodeBB) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=CMU-313_NodeBB&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=CMU-313_NodeBB) + +[**NodeBB Forum Software**](https://nodebb.org) is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging. + +NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins. + +### [Try it now](//try.nodebb.org) | [Documentation](//docs.nodebb.org) + +## Screenshots + +NodeBB's theming engine is highly flexible and does not restrict your design choices. Check out some themed installs in these screenshots below: + +[![](http://i.imgur.com/VCoOFyqb.png)](http://i.imgur.com/VCoOFyq.png) +[![](http://i.imgur.com/FLOUuIqb.png)](http://i.imgur.com/FLOUuIq.png) +[![](http://i.imgur.com/Ud1LrfIb.png)](http://i.imgur.com/Ud1LrfI.png) +[![](http://i.imgur.com/h6yZ66sb.png)](http://i.imgur.com/h6yZ66s.png) +[![](http://i.imgur.com/o90kVPib.png)](http://i.imgur.com/o90kVPi.png) +[![](http://i.imgur.com/AaRRrU2b.png)](http://i.imgur.com/AaRRrU2.png) +[![](http://i.imgur.com/LmHtPhob.png)](http://i.imgur.com/LmHtPho.png) +[![](http://i.imgur.com/paiJPJkb.jpg)](http://i.imgur.com/paiJPJk.jpg) + +Our minimalist "Harmony" theme gets you going right away, no coding experience required. + +![Rendering of a NodeBB install on desktop and mobile devices](https://user-images.githubusercontent.com/923011/228570420-2a4db745-b20d-474a-a571-1b59259508ef.png) + +## How can I follow along/contribute? + +* If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of [plugins](http://community.nodebb.org/category/7/nodebb-plugins) which would be a great starting point for learning the codebase. +* If you are a designer, [NodeBB needs themes](http://community.nodebb.org/category/10/nodebb-themes)! NodeBB's theming system allows extension of the base templates as well as styling via SCSS or CSS. NodeBB's base theme utilizes [Bootstrap 5](http://getbootstrap.com/) as a frontend toolkit. +* If you know languages other than English you can help us translate NodeBB. We use [Transifex](https://explore.transifex.com/nodebb/nodebb/) for internationalization. +* Please don't forget to **like**, **follow**, and **star our repo**! Join our growing [community](http://community.nodebb.org) to keep up to date with the latest NodeBB development. + +## Requirements + +NodeBB requires the following software to be installed: + +* A version of Node.js at least 16 or greater ([installation/upgrade instructions](https://github.com/nodesource/distributions)) +* MongoDB, version 3.6 or greater **or** Redis, version 2.8.9 or greater +* If you are using [clustering](https://docs.nodebb.org/configuring/scaling/) you need Redis installed and configured. +* nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) + +## Installation + +[Please refer to platform-specific installation documentation](https://docs.nodebb.org/installing/os). +If installing via the cloud (or using Docker), [please see cloud-based installation documentation](https://docs.nodebb.org/installing/cloud/). + +## Securing NodeBB + +It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind: + +1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions: + * Set `bind_address` to `127.0.0.1` so as to restrict access to the local machine only + * Use `requirepass` to secure Redis behind a password (preferably a long one) + * Familiarise yourself with [Redis Security](http://redis.io/topics/security) +2. Use `iptables` to secure your server from unintended open ports. In Ubuntu, `ufw` provides a friendlier interface to working with `iptables`. + * e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access) + + +## Upgrading NodeBB + +Detailed upgrade instructions are listed in [Upgrading NodeBB](https://docs.nodebb.org/configuring/upgrade/) + +## License + +NodeBB is licensed under the **GNU General Public License v3 (GPL-3)** (http://www.gnu.org/copyleft/gpl.html). + +Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org. + +## More Information/Links + +* [Demo](https://try.nodebb.org) +* [Developer Community](http://community.nodebb.org) +* [Documentation & Installation Instructions](https://docs.nodebb.org) +* [Help translate NodeBB](https://explore.transifex.com/nodebb/nodebb/) +* [NodeBB Blog](https://nodebb.org/blog) +* [Premium Hosting for NodeBB](https://www.nodebb.org/ "NodeBB") +* Unofficial IRC community – channel `#nodebb` on Libera.chat +* [Follow us on Twitter](http://www.twitter.com/NodeBB/ "NodeBB Twitter") +* [Like us on Facebook](http://www.facebook.com/NodeBB/ "NodeBB Facebook") diff --git a/.stryker-tmp/sandbox6184526/UserGuide.md b/.stryker-tmp/sandbox6184526/UserGuide.md new file mode 100644 index 0000000000..3240426214 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/UserGuide.md @@ -0,0 +1,12 @@ +User Story #11: +As a user, I would like to be able to visualize instructor posts differently so that I can make sure that I don't miss any important announcements from the instructor. + +To test the flagging instructor posts feature, run nodebb with the frontend changes, any signed in account should work. When opening a post or a list of posts, you should be able to see "! instructor" next to all instructor posts. Unfortunately, this feature did not work as we expected, and we could not run our backend functions that check if a post was created by an instructor in the frontend. Meaning, all posts and post lists show the flag regardless of whether or not they were created by an instructor. + +We also created tests for the isInstructor function (which checks if a user is an instructor) in tests/user.js. + +User Story #14: +As a user, I would like to be able to pin posts so that I can focus on certain posts that I am interested in. + +This feature is not fully developed. We are struggling to join the front_end feature with the backend methods and implementation for toggling the pinned field within the post object. Our front end feature is fully developed and visible through + diff --git a/.stryker-tmp/sandbox6184526/app.js b/.stryker-tmp/sandbox6184526/app.js new file mode 100644 index 0000000000..2826e2f2d7 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/app.js @@ -0,0 +1,84 @@ +/* + NodeBB - A better forum platform for the modern web + https://github.com/NodeBB/NodeBB/ + Copyright (C) 2013-2021 NodeBB Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +// @ts-nocheck + + +'use strict'; + +require('./require-main'); + +const nconf = require('nconf'); + +nconf.argv().env({ + separator: '__', +}); + +const winston = require('winston'); +const path = require('path'); + +const file = require('./src/file'); + +process.env.NODE_ENV = process.env.NODE_ENV || 'production'; +global.env = process.env.NODE_ENV || 'production'; + +// Alternate configuration file support +const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); + +const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database')); + +const prestart = require('./src/prestart'); + +prestart.loadConfig(configFile); +prestart.setupWinston(); +prestart.versionCheck(); +winston.verbose('* using configuration stored in: %s', configFile); + +if (!process.send) { + // If run using `node app`, log GNU copyright info along with server info + winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`); + winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); + winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); + winston.info(''); +} + +if (nconf.get('setup') || nconf.get('install')) { + require('./src/cli/setup').setup(); +} else if (!configExists) { + require('./install/web').install(nconf.get('port')); +} else if (nconf.get('upgrade')) { + require('./src/cli/upgrade').upgrade(true); +} else if (nconf.get('reset')) { + require('./src/cli/reset').reset({ + theme: nconf.get('t'), + plugin: nconf.get('p'), + widgets: nconf.get('w'), + settings: nconf.get('s'), + all: nconf.get('a'), + }); +} else if (nconf.get('activate')) { + require('./src/cli/manage').activate(nconf.get('activate')); +} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') { + require('./src/cli/manage').listPlugins(); +} else if (nconf.get('build')) { + require('./src/cli/manage').build(nconf.get('build')); +} else if (nconf.get('events')) { + require('./src/cli/manage').listEvents(); +} else { + require('./src/start').start(); +} diff --git a/.stryker-tmp/sandbox6184526/build/.gitignore b/.stryker-tmp/sandbox6184526/build/.gitignore new file mode 100644 index 0000000000..9addbff7eb --- /dev/null +++ b/.stryker-tmp/sandbox6184526/build/.gitignore @@ -0,0 +1,4 @@ +* +*/ +!export +!.gitignore diff --git a/.stryker-tmp/sandbox6184526/build/export/.gitignore b/.stryker-tmp/sandbox6184526/build/export/.gitignore new file mode 100644 index 0000000000..f8d55e0e3f --- /dev/null +++ b/.stryker-tmp/sandbox6184526/build/export/.gitignore @@ -0,0 +1,3 @@ +. +!.gitignore +!README \ No newline at end of file diff --git a/.stryker-tmp/sandbox6184526/build/export/README b/.stryker-tmp/sandbox6184526/build/export/README new file mode 100644 index 0000000000..a9015033f4 --- /dev/null +++ b/.stryker-tmp/sandbox6184526/build/export/README @@ -0,0 +1,5 @@ +This directory contains archives of user uploads that are prepared on-demand +when a user wants to retrieve a copy of their uploaded content. + +You can delete the files in here at will. They will just be regenerated if +requested again. \ No newline at end of file diff --git a/jalangi2 b/jalangi2 new file mode 160000 index 0000000000..50334ba542 --- /dev/null +++ b/jalangi2 @@ -0,0 +1 @@ +Subproject commit 50334ba542e2ff85254407324c7947c612a44445