diff --git a/.autod.conf.js b/.autod.conf.js
deleted file mode 100644
index 9787ec2cba..0000000000
--- a/.autod.conf.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'ues strict';
-
-module.exports = {
- write: true,
- plugin: 'autod-egg',
- prefix: '^',
- devprefix: '^',
- exclude: [
- 'test/fixtures',
- 'examples',
- 'benchmarks',
- "docs",
- ],
- devdep: [
- 'autod',
- 'autod-egg',
- 'nunjucks',
- 'koa',
- 'koa-router',
- 'toa',
- 'toa-router',
- ],
- keep: [
- ],
- semver: [
- 'koa@1',
- ],
-};
diff --git a/.eslintignore b/.eslintignore
index eb984b683c..dacb55c46c 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,3 +2,4 @@ test/fixtures
examples/**/app/public
logs
run
+docs/node_modules
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000000..5f59807ac1
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,13 @@
+# These are supported funding model platforms
+
+open_collective: eggjs # Replace with a single Open Collective username
+
+# github: [ fengmk2, popomore, atian25, dead_horse ] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+# patreon: # Replace with a single Patreon username
+# ko_fi: # Replace with a single Ko-fi username
+# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+# liberapay: # Replace with a single Liberapay username
+# issuehunt: # Replace with a single IssueHunt username
+# otechie: # Replace with a single Otechie username
+# custom: # Replace with a single custom sponsorship URL
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index b021f100e8..0000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-* **Node Version**:
-* **Egg Version**:
-* **Plugin Name**:
-* **Plugin Version**:
-* **Platform**:
-
-
diff --git a/.github/ISSUE_TEMPLATE/bug-report-cn.yml b/.github/ISSUE_TEMPLATE/bug-report-cn.yml
new file mode 100644
index 0000000000..84f3755a33
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report-cn.yml
@@ -0,0 +1,65 @@
+name: 🐛 Egg Bug 反馈
+description: 如发现 Egg 框架中的 Bug,请及时在此汇报。
+labels: [bug]
+body:
+ - type: textarea
+ attributes:
+ label: |
+ 在此输入你需要反馈的 Bug 具体信息(Bug in Detail):
+ placeholder: |
+ 1. 我做了什么。
+
+ 2. 我的预期值。
+
+ 3. 我实际得到的结果。
+
+ 4. 可以的话,请提供一些截图、视频作为附件以复现症状。
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: 可复现问题的仓库地址(Reproduction Repo)
+ description: |
+ 1. 请使用 `npm init egg --type=simple bug` 创建最小可复现问题的代码。
+
+ 2. 在 GitHub 中上传该代码项目,并在此处粘贴地址。你也可以直接将你的仓库压缩为 zip 文件直接以附件形式提交。
+ placeholder: |
+ https://github.com/YOUR_REPOSITORY_URL
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Node 版本号:
+ description: |
+ 你的当前复现问题的 Node 版本号:
+ placeholder: |
+ 使用 “node -v” 命令,在控制台得到版本号(例如:v8.5.0)。
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Eggjs 版本号:
+ description: |
+ 你的当前复现问题 Eggjs 版本号:
+ placeholder: |
+ 请直接在“package.json”中查阅(例如:3.1.0)。
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: "相关插件名称与版本号(PlugIn and Name):"
+ description: |
+ 插件名称以及版本号:
+ placeholder: |
+ 请直接在“package.json”中查阅(例如:egg-mysql,3.1.1)。
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: "操作平台与版本号(Platform and Version):"
+ description: |
+ 你的操作平台与版本号:
+ placeholder: |
+ Windows 10 专业版(21H2)
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 0000000000..11bd06379e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,65 @@
+name: 🐛 Bug Report For Eggjs
+description: Report an issue if something isn't working as expected 🤔.
+labels: [bug]
+body:
+ - type: textarea
+ attributes:
+ label: |
+ Your detail info about the Bug:
+ placeholder: |
+ 1. What I did.
+
+ 2. What I expected to happen.
+
+ 3. What I actually got.
+
+ 4. If possible, images/videos as attachments are welcomed to show the bug.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Reproduction Repo
+ description: |
+ 1. Please use `npm init egg --type=simple bug` to create your smallest repo.
+
+ 2. Submit it in the GitHub and paste your URL here. You can also attach your zip file directly.
+ placeholder: |
+ https://github.com/YOUR_REPOSITORY_URL or your zip file
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Node Version
+ description: |
+ What's your Node's version?
+ placeholder: |
+ Use "node -v" in your console to get it (e.g: v8.5.0).
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Eggjs Version
+ description: |
+ What's your Eggjs version?
+ placeholder: |
+ See it directly in your "package.json" file (e.g: 3.1.0)
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Plugin Name and its version
+ description: |
+ What's your plugin's name and version?
+ placeholder: |
+ See them directly in your "package.json" file (e.g: egg-mysql, 3.1.1)
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Platform and its version
+ description: |
+ What's your platform and its version?
+ placeholder: |
+ Windows 10 Professional(21H2)
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/feature-request-cn.yml b/.github/ISSUE_TEMPLATE/feature-request-cn.yml
new file mode 100644
index 0000000000..1dc6f7bb04
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request-cn.yml
@@ -0,0 +1,21 @@
+name: 💡 我有一个新点子
+description: 我对 Eggjs 框架有一个新的想法(或许我想来实现他)……
+labels: [feature request]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ 对于 Egg.js 框架,你有一个新的想法?
+ 不过在提交你的新点子之前,麻烦请检阅一下是否之前的帖子中有类似重复的内容。
+ - type: textarea
+ attributes:
+ label: 请详细告知你的新点子(Nice Ideas):
+ placeholder: |
+ 1. 您期望能够实现什么功能。
+
+ 2. 您的理由(如:我一直被什么问题困扰……)。
+ 如果方便的话,请提供截屏或者视频等详细信息。
+
+ 3. 我能够做一些什么(最好是能提供一些伪代码帮助实现)。
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
new file mode 100644
index 0000000000..0e10efe551
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -0,0 +1,23 @@
+name: 💡 Feature Request For Eggjs
+description: I have a suggestion (and may want to implement it)!
+labels: [feature request]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ You have an idea how to improve the Eggjs?
+
+ Before submitting, please have a look at the existing issues if there's already
+ something related to your suggestion.
+ - type: textarea
+ attributes:
+ label: "Enter your suggestions in details:"
+ placeholder: |
+ 1. What I expected to happen?
+
+ 2. Your reason (e.g: I'm always frustrated with...).
+ If possible, images or videos are welcome.
+
+ 3. What I plan to do (Optional but better in pseudo codes).
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/rfc-cn.yml b/.github/ISSUE_TEMPLATE/rfc-cn.yml
new file mode 100644
index 0000000000..6de5aec4bb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/rfc-cn.yml
@@ -0,0 +1,27 @@
+name: 🚀 RFC 提案
+description: 我对 Eggjs 框架技术架构功能层面上有重大新增、改进等。
+labels: [RFC proposal]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ 对于 Eggjs 框架功能你是否有重大的新增或改进之类的想法?
+
+ 不过在提交你的新想法或方案之前,麻烦请检阅一下是否之前的帖子中有类似重复的内容。
+ - type: textarea
+ attributes:
+ label: 请详细告知你的新解决思路(Your new RFCs):
+ placeholder: |
+ 1. 描述你希望解决的问题的现状,附上相关的 issue 地址。
+ 如果方便的话,请提供截屏或者视频等详细信息。
+
+ 2. 我能够做一些什么(譬如具体相关的的 API,描述思路,最好是能提供一些伪代码帮助实现)。
+ validations:
+ required: true
+ - type: checkboxes
+ attributes:
+ label: "跟进类型(Follow-up Types):"
+ description: 此议案跟进类型情况:
+ options:
+ - label: 这是某个任务
+ - label: 这是一个具体的 PR 的地址(URL)
diff --git a/.github/ISSUE_TEMPLATE/rfc.yml b/.github/ISSUE_TEMPLATE/rfc.yml
new file mode 100644
index 0000000000..10d4a469f3
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/rfc.yml
@@ -0,0 +1,31 @@
+name: 🚀 RFC Proposals
+description: I've got a major improvement (or idea) on the technical architecture of the Eggjs framework.
+labels: [RFC proposal]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Any better new/changable functions for the core technical architecture of the Egg.js framework?
+
+ But please make sure there's no duplicated issues related to your idea before submitting.
+ - type: textarea
+ attributes:
+ label: "Please describe your idea in detail:"
+ placeholder: |
+ 1. Describe the current situation of the problem you want to solve,
+ and attach the related issue address.
+
+ If it is possible, please provide screenshots or videos in detail.
+
+ 2. What can I do (related APIs, Your ideas, better to provide some pseudo code to help implementations).
+ validations:
+ required: true
+ - type: checkboxes
+ attributes:
+ label: Follow-up type
+ description: The type of the RFC proposals.
+ options:
+ - label: Some Task
+ - label: PR URL(s)
+ validations:
+ required: true
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index 48f9944f27..0000000000
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-##### Checklist
-
-
-- [ ] `npm test` passes
-- [ ] tests and/or benchmarks are included
-- [ ] documentation is changed or added
-- [ ] commit message follows commit guidelines
-
-##### Affected core subsystem(s)
-
-
-
-##### Description of change
-
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..444235616c
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 1
+updates:
+ - package-ecosystem: npm
+ directory: "/"
+ schedule:
+ interval: weekly
+ open-pull-requests-limit: 5
diff --git a/.github/workflows/chainalert.yml b/.github/workflows/chainalert.yml
new file mode 100644
index 0000000000..17b0f978fb
--- /dev/null
+++ b/.github/workflows/chainalert.yml
@@ -0,0 +1,12 @@
+name: ChainAlert
+on:
+ schedule:
+ - cron: '0 0 * * *'
+ push:
+ branches: [ master ]
+jobs:
+ chainalert:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: checkmarx/chainalert-github-action@v1
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 0000000000..e0fdf68971
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,68 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ master, 1.x, 3.x ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ master ]
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'javascript' ]
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
+ # Learn more about CodeQL language support at https://git.io/codeql-language-support
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v2
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
new file mode 100644
index 0000000000..559003fa3a
--- /dev/null
+++ b/.github/workflows/gh-pages.yml
@@ -0,0 +1,34 @@
+name: Github Pages
+
+on:
+ push:
+ branches: [ master ]
+
+jobs:
+ Runner:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ ubuntu-latest ]
+ node-version: [ 18 ]
+ steps:
+ - name: Checkout Git Source
+ uses: actions/checkout@master
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+
+ - name: Install Dependencies
+ run: npm i -g npminstall && npminstall
+
+ - name: Build Documents
+ run: npm run site:build && cp vercel.json ./site/dist/vercel.json
+
+ - name: Deploy Documents
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./site/dist
diff --git a/.github/workflows/nodejs-3.x.yml b/.github/workflows/nodejs-3.x.yml
new file mode 100644
index 0000000000..512b93f4a8
--- /dev/null
+++ b/.github/workflows/nodejs-3.x.yml
@@ -0,0 +1,18 @@
+name: CI for 3.x
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ Job:
+ name: Node.js
+ uses: node-modules/github-actions/.github/workflows/node-test.yml@master
+ with:
+ os: 'ubuntu-latest, macos-latest, windows-latest'
+ version: '14, 16, 18, 20, 22, 23'
+ install: 'npm i -g npminstall && npminstall'
+ secrets:
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
diff --git a/.github/workflows/pr-contributor-welcome.yml b/.github/workflows/pr-contributor-welcome.yml
new file mode 100644
index 0000000000..ce5382bee9
--- /dev/null
+++ b/.github/workflows/pr-contributor-welcome.yml
@@ -0,0 +1,34 @@
+# 当 PR 被合并时,留言欢迎加入共建群
+name: PullRequest Contributor Welcome
+
+on:
+ pull_request_target:
+ types:
+ - closed
+ paths:
+ - 'app/**'
+ - 'site/**'
+ - 'config/**'
+ - 'lib/**'
+ - 'test/**'
+ - '*.js'
+ - '*.ts'
+
+jobs:
+ check-merged:
+ runs-on: ubuntu-latest
+ needs: read-file
+ if: github.event.pull_request.merged == true
+ steps:
+ - uses: actions-cool/maintain-one-comment@v3
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ body: |
+ 🎉 Thanks for contribution. Please feel free to join DingTalk Social Community (Provide the PR link please).
+
+ 🎉 感谢参与贡献,欢迎扫码(或搜索群号 21751340)加入钉钉社区(进群后请提供 PR 地址)。
+
+
+
+
+ body-include: ''
diff --git a/.github/workflows/release-3.x.yml b/.github/workflows/release-3.x.yml
new file mode 100644
index 0000000000..5d9aed5d12
--- /dev/null
+++ b/.github/workflows/release-3.x.yml
@@ -0,0 +1,13 @@
+name: Release for 3.x
+
+on:
+ push:
+ branches: [ master ]
+
+jobs:
+ release:
+ name: Node.js
+ uses: eggjs/github-actions/.github/workflows/node-release.yml@master
+ secrets:
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+ GIT_TOKEN: ${{ secrets.GIT_TOKEN }}
diff --git a/.github/workflows/vercel-preview.yml b/.github/workflows/vercel-preview.yml
new file mode 100644
index 0000000000..359c81b2c8
--- /dev/null
+++ b/.github/workflows/vercel-preview.yml
@@ -0,0 +1,23 @@
+name: GitHub Actions Vercel Preview Deployment
+env:
+ VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
+ VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
+on:
+ push:
+ branches-ignore:
+ - master
+ - gh-pages
+
+jobs:
+ Deploy-Preview:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install Vercel CLI
+ run: npm install --global vercel@canary
+ - name: Pull Vercel Environment Information
+ run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
+ - name: Build Project Artifacts
+ run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
+ - name: Deploy Project Artifacts to Vercel
+ run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}
diff --git a/.github/workflows/vercel-production.yml b/.github/workflows/vercel-production.yml
new file mode 100644
index 0000000000..2e5535c21e
--- /dev/null
+++ b/.github/workflows/vercel-production.yml
@@ -0,0 +1,21 @@
+name: GitHub Actions Vercel Production Deployment
+env:
+ VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
+ VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
+on:
+ push:
+ branches:
+ - master
+jobs:
+ Deploy-Production:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install Vercel CLI
+ run: npm install --global vercel@canary
+ - name: Pull Vercel Environment Information
+ run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
+ - name: Build Project Artifacts
+ run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
+ - name: Deploy Project Artifacts to Vercel
+ run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 4a25a09c51..cd6dbe2e05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-node_modules
+/node_modules
coverage
*.log
npm-debug.log
@@ -10,12 +10,30 @@ run
.idea
.DS_Store
.tmp
-docs/CONTRIBUTING.md
-docs/README.md
-docs/db.json
-docs/source/release/index.md
-docs/source/member_guide.md
-docs/**/contributing.md
-docs/public
+*-lock.json
+*-lock.yaml
+yarn.lock
!test/fixtures/apps/loader-plugin/node_modules
+.editorconfig
+*clinic-flame*
+*clinic-doctor*
+.nyc_output/
+test/fixtures/apps/app-ts/**/*.js
+!test/fixtures/apps/app-ts/node_modules
+!test/fixtures/apps/app-ts/node_modules/**/*.js
+test/fixtures/apps/app-ts-esm/**/*.js
+test/fixtures/apps/app-ts-type-check/**/*.js
+test/fixtures/apps/app-ts-type-check/**/*.d.ts
+test/fixtures/apps/app-ts/**/*.d.ts
+test/fixtures/apps/app-ts-esm/**/*.d.ts
+
+# site
+site/dist
+!site/public
+
+.umi
+.umi-production
+.vercel
+package-lock.json
+.tshy*
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 03736ab24c..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-sudo: false
-language: node_js
-node_js:
- - '4'
- - '6'
-install:
- - npm i npminstall && npminstall
-script:
- - npm run ci
-after_script:
- - npminstall codecov && codecov
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000..c2660febef
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,2409 @@
+# Changelog
+
+## [3.30.1](https://github.com/eggjs/egg/compare/v3.30.0...v3.30.1) (2025-01-19)
+
+
+### Bug Fixes
+
+* redefine urllib export types ([#5386](https://github.com/eggjs/egg/issues/5386)) ([02d9fdb](https://github.com/eggjs/egg/commit/02d9fdb7c127f9e8150bdb8f23977a2effeaf6ae))
+
+## [3.30.0](https://github.com/eggjs/egg/compare/v3.29.0...v3.30.0) (2025-01-09)
+
+
+### Features
+
+* dump ignore support key path ([#5380](https://github.com/eggjs/egg/issues/5380)) ([74346c2](https://github.com/eggjs/egg/commit/74346c2d056cab63c3c3a905c1e8afbf857451b4))
+
+## [3.24.1](https://github.com/eggjs/egg/compare/v3.24.0...v3.24.1) (2024-06-07)
+
+
+### Bug Fixes
+
+* serverTimeout default to 0 (no timeout) ([#5325](https://github.com/eggjs/egg/issues/5325)) ([44ab507](https://github.com/eggjs/egg/commit/44ab507b6299c849a2fe31bee54f3a1909aa9d53))
+
+## [3.24.0](https://github.com/eggjs/egg/compare/v3.23.0...v3.24.0) (2024-06-07)
+
+
+### Features
+
+* add bodyParser.onProtoPoisoning type define ([#5324](https://github.com/eggjs/egg/issues/5324)) ([b3582e0](https://github.com/eggjs/egg/commit/b3582e02d0f5d85edbc03f3f20c4cdcc65619dc1))
+
+## [3.23.0](https://github.com/eggjs/egg/compare/v3.22.0...v3.23.0) (2024-05-08)
+
+
+### Features
+
+* use utility@2 ([#5312](https://github.com/eggjs/egg/issues/5312)) ([9bf5f22](https://github.com/eggjs/egg/commit/9bf5f22bfae44a1f44651efba7b3e167f9040714))
+
+## [3.22.0](https://github.com/eggjs/egg/compare/v3.21.0...v3.22.0) (2024-04-12)
+
+
+### Features
+
+* app.httpClient alias to app.httpclient ([#5304](https://github.com/eggjs/egg/issues/5304)) ([a6ebe0f](https://github.com/eggjs/egg/commit/a6ebe0f49a9e1a8506c26a0bb4e89a32528aa727))
+
+## [3.21.0](https://github.com/eggjs/egg/compare/v3.20.0...v3.21.0) (2024-03-31)
+
+
+### Features
+
+* tiny improvements for "convertValue" ([#5302](https://github.com/eggjs/egg/issues/5302)) ([794d7f3](https://github.com/eggjs/egg/commit/794d7f3e89c2a283e38d2082b407b79e480f0b50))
+
+## [3.20.0](https://github.com/eggjs/egg/compare/v3.19.0...v3.20.0) (2024-02-22)
+
+
+### Features
+
+* urllib-next alias to npm:urllib ([#5299](https://github.com/eggjs/egg/issues/5299)) ([61cd51d](https://github.com/eggjs/egg/commit/61cd51d02a86cb6ca8d510fb3ea3a1ed73f7beec))
+
+## [3.19.0](https://github.com/eggjs/egg/compare/v3.18.0...v3.19.0) (2024-02-08)
+
+
+### Features
+
+* 优化中文文档表达 ([#5290](https://github.com/eggjs/egg/issues/5290)) ([d73046b](https://github.com/eggjs/egg/commit/d73046bb9165c74473b6f28842de23c880e78a87))
+
+## [3.18.0](https://github.com/eggjs/egg/compare/v3.17.7...v3.18.0) (2024-01-21)
+
+
+### Features
+
+* auto set custom logger with onelogger ([#5287](https://github.com/eggjs/egg/issues/5287)) ([1fd79a2](https://github.com/eggjs/egg/commit/1fd79a2715b4eded47ae77d955de5fa50efa573b))
+
+## [3.17.7](https://github.com/eggjs/egg/compare/v3.17.6...v3.17.7) (2024-01-11)
+
+
+### Bug Fixes
+
+* omit koa application ctxStorage and currentContext define ([#5285](https://github.com/eggjs/egg/issues/5285)) ([4c24dac](https://github.com/eggjs/egg/commit/4c24dac1e9ec86051d806dd6940c1d5095723b4d))
+
+## [3.17.6](https://github.com/eggjs/egg/compare/v3.17.5...v3.17.6) (2024-01-10)
+
+
+### Bug Fixes
+
+* typo on index.d.ts ([#5284](https://github.com/eggjs/egg/issues/5284)) ([17ee60b](https://github.com/eggjs/egg/commit/17ee60b35a48c22eb90f392b688b4347c44b490d))
+
+## [3.17.5](https://github.com/eggjs/egg/compare/v3.17.4...v3.17.5) (2023-10-12)
+
+
+### Bug Fixes
+
+* set body parser error to status 400 by default ([#5262](https://github.com/eggjs/egg/issues/5262)) ([5ac26a3](https://github.com/eggjs/egg/commit/5ac26a39b4256b6a3fcd55da947a47a82811c7c1))
+
+## [3.17.4](https://github.com/eggjs/egg/compare/v3.17.3...v3.17.4) (2023-08-01)
+
+
+### Bug Fixes
+
+* use app.logger instead of ctx.logger ([#5246](https://github.com/eggjs/egg/issues/5246)) ([b700fb9](https://github.com/eggjs/egg/commit/b700fb962a866c6e699f5c88b342960cc5ee0b78)), closes [/github.com/eggjs/egg/issues/5213#issuecomment-1657771583](https://github.com/eggjs//github.com/eggjs/egg/issues/5213/issues/issuecomment-1657771583)
+
+## [3.17.3](https://github.com/eggjs/egg/compare/v3.17.2...v3.17.3) (2023-06-29)
+
+
+### Bug Fixes
+
+* add missing args definition on runSchedule ([#5232](https://github.com/eggjs/egg/issues/5232)) ([f90763b](https://github.com/eggjs/egg/commit/f90763b164897bf4992b6ec58c4eae20775c0006))
+
+## [3.17.2](https://github.com/eggjs/egg/compare/v3.17.1...v3.17.2) (2023-06-25)
+
+
+### Bug Fixes
+
+* don't require inspector module on production env ([#5228](https://github.com/eggjs/egg/issues/5228)) ([398fe15](https://github.com/eggjs/egg/commit/398fe15eb28c3bbe8d79a0c2b129d55922f45a9a))
+
+## [3.17.1](https://github.com/eggjs/egg/compare/v3.17.0...v3.17.1) (2023-06-22)
+
+
+### Bug Fixes
+
+* compatible with content-type extra semicolon ([#5217](https://github.com/eggjs/egg/issues/5217)) ([cfdca36](https://github.com/eggjs/egg/commit/cfdca36b4ee84397ed2cb1987982d502a3c8af0a))
+
+## [3.17.0](https://github.com/eggjs/egg/compare/v3.16.1...v3.17.0) (2023-06-19)
+
+
+### Features
+
+* add getSingletonInstance alias to singleton.get(id) ([#5216](https://github.com/eggjs/egg/issues/5216)) ([9868768](https://github.com/eggjs/egg/commit/98687685bb095d37166d3a66890f0164428a8e53))
+
+## [3.16.1](https://github.com/eggjs/egg/compare/v3.16.0...v3.16.1) (2023-06-15)
+
+
+### Bug Fixes
+
+* ipc not work with worker_threads mode ([#5210](https://github.com/eggjs/egg/issues/5210)) ([03c8cf7](https://github.com/eggjs/egg/commit/03c8cf743d1fb56a55dbc633f088b08410423c5a))
+
+## [3.16.0](https://github.com/eggjs/egg/compare/v3.15.0...v3.16.0) (2023-05-10)
+
+
+### Features
+
+* use egg-security@3.0.0 ([#5182](https://github.com/eggjs/egg/issues/5182)) ([a13b35e](https://github.com/eggjs/egg/commit/a13b35e05ca660fee3663db9381cdf44d63e44a0))
+
+## [3.15.0](https://github.com/eggjs/egg/compare/v3.14.2...v3.15.0) (2023-01-28)
+
+
+### Features
+
+* runInAnonymousContextScope support req ([#5134](https://github.com/eggjs/egg/issues/5134)) ([615d660](https://github.com/eggjs/egg/commit/615d6608ab2fc66af848fb82ce41ed359f41bfb0))
+
+## [3.14.2](https://github.com/eggjs/egg/compare/v3.14.1...v3.14.2) (2023-01-20)
+
+
+### Bug Fixes
+
+* **types:** app.router.url params should be optional ([#5132](https://github.com/eggjs/egg/issues/5132)) ([dda6bb3](https://github.com/eggjs/egg/commit/dda6bb3674af4acbdd7d5eb2f2ca373c714c7d2d))
+
+## [3.14.1](https://github.com/eggjs/egg/compare/v3.14.0...v3.14.1) (2023-01-17)
+
+
+### Bug Fixes
+
+* export urllib types directly ([#5128](https://github.com/eggjs/egg/issues/5128)) ([483bf1d](https://github.com/eggjs/egg/commit/483bf1d12bee5157f9a95e0a5b7403fc7562900e))
+
+## [3.14.0](https://github.com/eggjs/egg/compare/v3.13.0...v3.14.0) (2023-01-17)
+
+
+### Features
+
+* export urllib types ([#5127](https://github.com/eggjs/egg/issues/5127)) ([1f7b082](https://github.com/eggjs/egg/commit/1f7b08298ff4c6f118b93d3b3bf8e1fb3ac37db1))
+
+## [3.13.0](https://github.com/eggjs/egg/compare/v3.12.0...v3.13.0) (2023-01-13)
+
+
+### Features
+
+* log app start timeline on coreLogger ([#5122](https://github.com/eggjs/egg/issues/5122)) ([6c4e8bc](https://github.com/eggjs/egg/commit/6c4e8bca1b829ecd47e98cc9b0544c7aa874e755))
+
+## [3.12.0](https://github.com/eggjs/egg/compare/v3.11.1...v3.12.0) (2023-01-04)
+
+
+### Features
+
+* siteFile favicon config support async function type ([#5114](https://github.com/eggjs/egg/issues/5114)) ([667684f](https://github.com/eggjs/egg/commit/667684f79d8485ee9d9a03bf99077fa2dfef5507))
+
+## [3.11.1](https://github.com/eggjs/egg/compare/v3.11.0...v3.11.1) (2023-01-03)
+
+
+### Bug Fixes
+
+* remove duplicate identifier ssrf ([#5113](https://github.com/eggjs/egg/issues/5113)) ([2b407eb](https://github.com/eggjs/egg/commit/2b407ebce9112d96e5e8a452eef09bcc70496e92))
+
+## [3.11.0](https://github.com/eggjs/egg/compare/v3.10.0...v3.11.0) (2023-01-02)
+
+
+### Features
+
+* add ssrf declaration ([#4687](https://github.com/eggjs/egg/issues/4687)) ([b1414f2](https://github.com/eggjs/egg/commit/b1414f2c749da5ab9bf07abf26ff75eac0b9cb73))
+
+## [3.10.0](https://github.com/eggjs/egg/compare/v3.9.2...v3.10.0) (2023-01-02)
+
+
+### Features
+
+* use egg-core@5 ([#5111](https://github.com/eggjs/egg/issues/5111)) ([7b8edbf](https://github.com/eggjs/egg/commit/7b8edbf322ed59c76ce3a85cd4595605d743fb80))
+
+## [3.9.2](https://github.com/eggjs/egg/compare/v3.9.1...v3.9.2) (2022-12-21)
+
+
+### Bug Fixes
+
+* currentContext typo ([#5107](https://github.com/eggjs/egg/issues/5107)) ([713a081](https://github.com/eggjs/egg/commit/713a081475189ef6d00c85a559849ff97f824d11))
+
+## [3.9.1](https://github.com/eggjs/egg/compare/v3.9.0...v3.9.1) (2022-12-18)
+
+
+### Bug Fixes
+
+* Enable auto npm release workflow ([#5102](https://github.com/eggjs/egg/issues/5102)) ([13bbe6c](https://github.com/eggjs/egg/commit/13bbe6c24e1c8160ae629e12c81e30e27b6c3dba))
+
+## [3.9.1](https://github.com/eggjs/egg/compare/v3.9.0...v3.9.1) (2022-12-18)
+
+
+### Bug Fixes
+
+* Enable auto npm release workflow ([#5102](https://github.com/eggjs/egg/issues/5102)) ([13bbe6c](https://github.com/eggjs/egg/commit/13bbe6c24e1c8160ae629e12c81e30e27b6c3dba))
+
+---
+
+# History
+
+## 2022-12-16, Version 3.9.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * 📦 NEW: Run async function in the anonymous context scope
+
+ ```js
+ await app.runInAnonymousContextScope(async ctx => {
+ // run with anonymous ctx here
+ });
+ ```
+
+### Commits
+
+ * [[`af1206904`](http://github.com/eggjs/egg/commit/af12069041c1ea11217688c9c17d3712a44d3422)] - chore: update workflow for gh-pages (#5098) (Suyi <>)
+ * [[`344139e47`](http://github.com/eggjs/egg/commit/344139e4759f56ab2beca2e2a5c2783160396ba9)] - 🐛 FIX: Typo on HttpClient request (#5097) (fengmk2 <>)
+ * [[`1021faf78`](http://github.com/eggjs/egg/commit/1021faf78e5f23fa366c0034a38f81b0f361e9ec)] - 👌 IMPROVE: Keep more compatible d.ts on httpclient request (#5092) (fengmk2 <>)
+ * [[`9d6acfd7c`](http://github.com/eggjs/egg/commit/9d6acfd7c3266ae6a56e45cb7a72473d628f6e16)] - 📦 NEW: Run async function in the anonymous context scope (#5094) (fengmk2 <>)
+
+## 2022-12-12, Version 3.8.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * Upgrade egg-schedule@4 to support `app.currentContext` on scheduler
+
+### Commits
+
+ * [[`75d025b24`](http://github.com/eggjs/egg/commit/75d025b24e5e3016f2df84e2ba1901f42156c0b7)] - 👌 IMPROVE: Upgrade egg-schedule to v4 (#5088) (fengmk2 <>)
+
+## 2022-12-11, Version 3.7.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * 📦 NEW: Set `config.logger.enableFastContextLogger = true` to enable faster context logger
+
+### Commits
+
+ * [[`e94c7df63`](http://github.com/eggjs/egg/commit/e94c7df63e1812da672dbaf7200e652cc4537c7b)] - 📦 NEW: Upgrade egg-logger v3 to enable localStorage (#5085) (fengmk2 <>)
+ * [[`c76e16cf7`](http://github.com/eggjs/egg/commit/c76e16cf7fb67d5f2c1b19252e01a5e3fed9cf96)] - 📖 DOC: Use @eggjs/tsconfig for tsconfig.json (#5066) (fengmk2 <>)
+
+## 2022-12-09, Version 3.6.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * 🚀🚀🚀 Support `app.ctxStorage` and `app.currentContext` to get current execute ctx, see [koa#1455](https://github.com/koajs/koa/pull/1455)
+
+### Commits
+
+ * [[`bf36904e0`](http://github.com/eggjs/egg/commit/bf36904e0fb1d4477ebb7068dd8ad6726d29182f)] - 📦 NEW: Add ctxStorage and currentContext d.ts (#5079) (fengmk2 <>)
+ * [[`c68992ab7`](http://github.com/eggjs/egg/commit/c68992ab71b854f825df0ff3ea4b82e7666ec828)] - chore: ignore gp-pages branch while deploying preview (#5077) (Suyi <>)
+ * [[`13906825b`](http://github.com/eggjs/egg/commit/13906825bc3fab260aa0dd8888ce9fd19f2f70c5)] - chore: use actions to deploy vercel project (#5076) (Suyi <>)
+ * [[`5d825bb59`](http://github.com/eggjs/egg/commit/5d825bb59ed691bd45c3a8b2f6c222496910e250)] - docs: update communite links (#5073) (Suyi <>)
+
+## 2022-11-28, Version 3.5.1 @killagu
+
+### Notable Changes
+
+* **fixes**
+ * Dump `config/timing` when app start timeout
+
+### Commits
+
+ * [[`c859506a0`](http://github.com/eggjs/egg/commit/c859506a094181f5f45db16a8501daaaea56b3d3)] - fix: dump config/timing when timeout (#5069) (killa <>)
+
+## 2022-11-15, Version 3.5.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * Auto disable cluster-client heartbeat checker on debug mode
+
+### Commits
+
+ * [[`6de5cba5d`](http://github.com/eggjs/egg/commit/6de5cba5d0d02d09e9e6ee71f9e7b1cb3d65c24e)] - feat: disable cluster-client heartbeat on debug mode (#5059) (sinkhaha <<1468709106@qq.com>>)
+
+## 2022-11-07, Version 3.4.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * Upgrade egg-cluster v2 to support worker_threads start mode
+ * Drop httpclient callback and thunk style, a breaking change to egg@2
+ * Print warnning log when boot action takes more than 5000ms
+ * Don't need to patch keep-alive header on Node.js >= 14.20.0
+
+### Commits
+
+ * [[`2b5f289bb`](http://github.com/eggjs/egg/commit/2b5f289bba3bd14c2867136b5dcbf3bed5cfdf9e)] - 📦 NEW: Use egg-cluster v2 (#5055) (fengmk2 <>)
+ * [[`610a39e7f`](http://github.com/eggjs/egg/commit/610a39e7f41a17a2123705691d6c1bfdc3e12f88)] - 👌 IMPROVE: Drop httpclient callback and thunk style (#5052) (fengmk2 <>)
+ * [[`3a941d669`](http://github.com/eggjs/egg/commit/3a941d669cc1d2c12a2caad4dd24492e98444348)] - 👌 IMPROVE: Print warnning log when boot action takes more than 5000ms (#5049) (fengmk2 <>)
+ * [[`d820b739b`](http://github.com/eggjs/egg/commit/d820b739b95207bdea8c9b4c3da0f5059bc0113c)] - 👌 IMPROVE: Don't need to patch keep-alive header on Node.js >= 14.20.0 (#5051) (fengmk2 <>)
+ * [[`6ac4cdbfb`](http://github.com/eggjs/egg/commit/6ac4cdbfbb35905f6f315f51122c1badcb913b5c)] - 🤖 TEST: Add Node.js 19 ci runner (#5050) (fengmk2 <>)
+ * [[`d05cc015e`](http://github.com/eggjs/egg/commit/d05cc015e4a748bf41a4dbf46e978d1f4ad44954)] - docs: fix Application description (#5044) (ldc-37 <<34739463+ldc-37@users.noreply.github.com>>)
+
+## 2022-09-28, Version 3.3.3 @fengmk2
+
+### Notable Changes
+
+* **fixes**
+ * Allow override HttpClientNext
+
+### Commits
+ * [[`7ee19e840`](http://github.com/eggjs/egg/commit/7ee19e8402b1d23ecdc1791e044a1902049e14dd)] - 🐛 FIX: Allow override HttpClientNext (#5037) (fengmk2 <>)
+
+## 2022-09-27, Version 3.3.2 @atian25
+
+### Notable Changes
+
+* **fixes**
+ * update multipart 3.1.0, https://github.com/eggjs/egg-multipart/pull/56
+
+### Commits
+ * [[`201bfa749`](http://github.com/eggjs/egg/commit/201bfa7492920aafad71b7845e5cc6eaef69f8bc)] - fix: update multipart 3.1.0 (#5034) (TZ | 天猪 <>)
+
+
+## 2022-09-26, Version 3.3.1 @fengmk2
+
+### Notable Changes
+
+* **fixes**
+ * fallback egg-multipart@2 to support filename with non-ASCII characters
+### Commits
+
+ * [[`acadb28e2`](http://github.com/eggjs/egg/commit/acadb28e2814b0b91828e0766673f199d7767f3a)] - fix: fallback egg-multipart to v2 (#5032) (fengmk2 <>)
+
+
+## 2022-09-23, Version 3.3.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * Support config `serverGracefulIgnoreCode` to ignore error avoid process exit when uncatch error emit
+ See https://github.com/node-modules/graceful/pull/13
+### Commits
+
+ * [[`a0761d65f`](http://github.com/eggjs/egg/commit/a0761d65f5df1002853c169efedab969636247d3)] - feat(graceful): support serverGracefulIgnoreCode (#5027) (hyj1991 <>)
+ * [[`8b8dd3be9`](http://github.com/eggjs/egg/commit/8b8dd3be95bb53ad3c732b8bc9c20566021e955f)] - chore: remove jsdoc and disable vercel comment (#5026) (Suyi <>)
+ * [[`f4225339f`](http://github.com/eggjs/egg/commit/f4225339f6235f78fe53d34d1eb0993faa410b36)] - test: fix ci (#5025) (TZ | 天猪 <>)
+ * [[`5de994b9c`](http://github.com/eggjs/egg/commit/5de994b9c4cd17f9ecd4d4083c20b29f399a9e40)] - chore: fix action for gh-pages (#5024) (Suyi <>)
+
+## 2022-09-21, Version 3.2.0 @fengmk2
+
+### Notable Changes
+
+**features**
+ * [[`733d66989`](http://github.com/eggjs/egg/commit/733d66989d1f8657ce55b6032944188da635b8f0)] - feat: update egg-multipart 2.x -> 3.x (#5023) (TZ | 天猪 <>)
+ * [[`2ffb37ab5`](http://github.com/eggjs/egg/commit/2ffb37ab59395c9b14f153f91abb9f816a5e98ea)] - feat: Support urllib@3 (#5000) (fengmk2 <>)
+
+**others**
+ * [[`485781389`](http://github.com/eggjs/egg/commit/485781389e548ff0cf1eb107fea93c1bb01170d7)] - docs: update the version of the required Node (#5021) (Maledong <>)
+ * [[`bbd0e432e`](http://github.com/eggjs/egg/commit/bbd0e432e52832cc7a3d4b26a0141d7eb02e3793)] - chore: change the templates of bug/suggestion report (#5019) (Maledong <>)
+ * [[`2c5ba484a`](http://github.com/eggjs/egg/commit/2c5ba484a2dd8f214b9cdb53aa952688bc54cb2b)] - 🐛 FIX: Add config.httpclient.useHttpClientNext defined (#5001) (fengmk2 <>)
+
+## 2022-08-28, Version 3.1.0 @fengmk2
+
+### Notable Changes
+
+* **features**
+ * Support urllib@3 by `config.httpclient.useHttpClientNext = true`, see [#4847](https://github.com/eggjs/egg/issues/4847)
+
+### Commits
+ * [[`2c5ba484a`](http://github.com/eggjs/egg/commit/2c5ba484a2dd8f214b9cdb53aa952688bc54cb2b)] - 🐛 FIX: Add config.httpclient.useHttpClientNext defined (#5001) (fengmk2 <>)
+ * [[`2ffb37ab5`](http://github.com/eggjs/egg/commit/2ffb37ab59395c9b14f153f91abb9f816a5e98ea)] - feat: Support urllib@3 (#5000) (fengmk2 <>)
+
+## 2022-08-21, Version 3.0.0 @fengmk2
+
+**features**
+ * Drop Node.js 8, 10, 12 supports, this release is a LTS version for egg@2, see https://github.com/eggjs/egg/issues/3644#issuecomment-1221460692
+
+## 2022-06-17, Version 2.36.0 @atian25
+
+**features**
+ * [[`e0b93e023`](http://github.com/eggjs/egg/commit/e0b93e023e1258c4037c68dacfc41fc304602bbc)] - feat: should log unfinished timing item (#4968) (TZ | 天猪 <>)
+
+**others**
+ * [[`7f1689f9f`](http://github.com/eggjs/egg/commit/7f1689f9fbd286bde3b8b5aebf86af09a599359c)] - chore: typo CSRF on router.md (#4962) (Homyee King <>)
+ * [[`e31c09c20`](http://github.com/eggjs/egg/commit/e31c09c2001b15fbc2431f4c36f6e59da5e3ebca)] - chore: fix some comments (#4937) (Maledong <>)
+ * [[`b0c17fdd0`](http://github.com/eggjs/egg/commit/b0c17fdd02512f743786203c326dc86be636f9a6)] - chore: remove git.io (#4940) (Baoshuo Ren <>)
+ * [[`12755e275`](http://github.com/eggjs/egg/commit/12755e27555b8f84a745c319c89b1c4d75ae3f78)] - test: Create codeql-analysis.yml (#4935) (fengmk2 <>)
+ * [[`8078917fd`](http://github.com/eggjs/egg/commit/8078917fd66c41d21b0f2c738f77cc7916edfaca)] - chore: package upgrade and unittest fixture (#4933) (Maledong <>)
+ * [[`a5a358ceb`](http://github.com/eggjs/egg/commit/a5a358cebc78734d45a450a641913ae242c5dc70)] - chore: fix contributors badges on README.md (#4930) (XiaoRui <>)
+
+## 2022-04-01, Version 2.35.0 @mansonchor
+
+**features**
+ * [[`c1313f5ef`](http://github.com/eggjs/egg/commit/c1313f5ef960e5aaad7f04adb6665679f2ec10e2)] - feat: dumpConfig add appInfo (#4917) (mansonchor.github.com <>)
+
+**others**
+ * [[`4e5309188`](http://github.com/eggjs/egg/commit/4e5309188a60393435d5ab2df65ca67186f31035)] - test: add ChainAlert action (#4908) (fengmk2 <>)
+
+## 2022-03-16, Version 2.34.0
+
+**features**
+ * [[`caacd09c3`](http://github.com/eggjs/egg/commit/caacd09c38aae03fc291febbb97a43c8ecbdc221)] - feat: siteFile support custom control-cache (#4902) (binginsist <>)
+
+**others**
+ * [[`f97fe4a8c`](http://github.com/eggjs/egg/commit/f97fe4a8c8c0b5f8c097055213f9e7177b9ab2dd)] - test: change error code assert (#4907) (fengmk2 <>)
+ * [[`a7aa7f37d`](http://github.com/eggjs/egg/commit/a7aa7f37d901afd4c26a2a9aa57fe938b2109e94)] - docs: typo fix on deployment.zh-CN.md (#4906) (Krryxa <>)
+ * [[`d3fe13aa2`](http://github.com/eggjs/egg/commit/d3fe13aa25065995cfa9d78461be80194176f183)] - docs: typo fix on security.zh-CN.md (#4905) (Krryxa <>)
+ * [[`2dc723129`](http://github.com/eggjs/egg/commit/2dc723129614bd727e86871ae3e7cfc60166dd81)] - docs: use egg brand color for site (#4900) (Peach <>)
+ * [[`11bbd8527`](http://github.com/eggjs/egg/commit/11bbd852731b1583cae5a5d519baa20960c0521d)] - docs: enhance (#4884) (Suyi <>)
+ * [[`76d014bd5`](http://github.com/eggjs/egg/commit/76d014bd583c6d0b9b9f40ac2e6e7ba9dd66e8ed)] - docs: update node version (#4886) (lxinr <<33972246+lxinr@users.noreply.github.com>>)
+ * [[`9003cb5ad`](http://github.com/eggjs/egg/commit/9003cb5ad370d0c07b2baee88f3b25c597ac3929)] - docs: update https://registry.npm.taobao.org to https://registry.npmmirror.com (#4881) (Non-Official NPM Mirror Bot <<99484857+npmmirror@users.noreply.github.com>>)
+ * [[`b47409770`](http://github.com/eggjs/egg/commit/b47409770d76f03eb1ea0476be9e00207186c42e)] - docs: dumi (#4879) (Suyi <>)
+ * [[`56816dbc5`](http://github.com/eggjs/egg/commit/56816dbc59dbb1a4973ca60130c9ff3f5be8b2da)] - docs (sequelize): Changed `config.sequelize` to `exports.sequelize` in configuration part (#4873) (Aelita <<45784210+xsjcTony@users.noreply.github.com>>)
+ * [[`20842f9c2`](http://github.com/eggjs/egg/commit/20842f9c216ed538924936163b7ed18437c54cd7)] - docs: Add license scan report and status (#4880) (fossabot <>)
+
+## 2021-12-07, Version 2.33.1
+
+**features**
+ * [[`18dcadc1c`](http://github.com/eggjs/egg/commit/18dcadc1cf6c9837de605916a0d8b161a63e7218)] - feat: meta middleware x-readtime support performanceStarttime (#4827) (fengmk2 <>)
+
+**others**
+ * [[`8659d4bc3`](http://github.com/eggjs/egg/commit/8659d4bc37e0652d66d04d2e5504fdc0ef2f7f7d)] - docs: update contributors (#4826) (Suyi <>)
+ * [[`4d18732c7`](http://github.com/eggjs/egg/commit/4d18732c79e44a84140df05e879b8b5f569c2b4b)] - chore: remove @types/urllib from autod (fengmk2 <>)
+
+## 2021-12-06, Version 2.33.0
+
+**features**
+ * [[`0f6589e1d`](http://github.com/eggjs/egg/commit/0f6589e1dc9e538434eb1580327556d5aa264822)] - feat: support better logger timer in precise milliseconds (#4806) (fengmk2 <>)
+
+## 2021-11-15, Version 2.32.0 @atian25
+
+### Notable Changes
+
+* **features**
+ * handle ENETUNREACH error on httpclient
+
+### Commits
+
+ * [[`189c47804`](http://github.com/eggjs/egg/commit/189c478048d820b7b1a6ba6e8bce3444604876ff)] - feat: handle ENETUNREACH error on httpclient (#4792) (fengmk2 <>)
+
+
+## 2021-10-18, Version 2.31.0 @killagu
+
+### Notable Changes
+
+* **typing**
+ * support ssrf typing in config
+
+### Commits
+
+* [[`debfda7ab`](https://github.com/eggjs/egg/commit/debfda7ab38f4893b6f122abfbf3e5288af1441e)] - feat(config): support ssrf field in security config. (#4778) (Jasin Yip <>)
+
+## 2021-08-09, Version 2.30.0 @mansonchor
+
+### Notable Changes
+
+* **features**
+ * support disableDNSCache in one request even though config set to `enableDNSCache: true`
+
+* **docs**
+ * update ts docs, add missing zh-CN doc
+ * typo fix
+
+### Commits
+
+ * [[`13dd55076`](https://github.com/eggjs/egg.git/commit/13dd5507694a57a11e12d1ac6f71ba4a562d88c0)] - feat: support disableDNSCache by request args handle (#4728) (mansonchor.github.com <>)
+ * [[`1b4fde454`](https://github.com/eggjs/egg.git/commit/1b4fde454d2d61200a8b066ba841ad6d81b5b69d)] - unittest: rename and remove some useless tests (#4705) (Maledong <>)
+ * [[`156980d36`](https://github.com/eggjs/egg.git/commit/156980d369570531c1ef9cf842f02f513b56fe4a)] - doc: Typo fixture (#4707) (Maledong <>)
+ * [[`27aa49b59`](https://github.com/eggjs/egg.git/commit/27aa49b5945f08fa6b636479cf4cba7822e3af2d)] - doc: Typo fixture:「,」->「,」 (#4708) (陈煮酒 <<501205587@qq.com>>)
+ * [[`1f02a8d45`](https://github.com/eggjs/egg.git/commit/1f02a8d4560ca3334425e646c1ac87226aba3a63)] - doc: Add the missing zh-CN trans for typescript (#4703) (Maledong <<52018749+MaledongGit@users.noreply.github.com>>)
+ * [[`f5cf0d965`](https://github.com/eggjs/egg.git/commit/f5cf0d965fa4077da10e87f070e113496077872c)] - doc: "登陆" should be "登录" (#4697) (HOU Ce <<594965698@qq.com>>)
+ * [[`750558400`](https://github.com/eggjs/egg.git/commit/750558400e3bd5f39658dfcbedd4af7bc0bdda2a)] - docs: update ts docs (#4666) (吖猩 <>)
+ * [[`93d2b04b9`](https://github.com/eggjs/egg.git/commit/93d2b04b985145f27a39335300a78002a61da2a8)] - docs: fix loaderUpdate.md didReady example (#4652) (shadyzoz <>)
+
+## 2021-04-13, Version 2.29.4 @popomore
+
+### Notable Changes
+
+* **fixes**
+ * remove internal interval handler when close agent
+* **docs**
+ * Added english doc to how-to-migrate-from-1.x, Thx @ZixiaoWang
+ * typo improvement
+
+### Commits
+
+ * [[`ce234226b`](http://github.com/eggjs/egg/commit/ce234226bf0c43f03aedf727a7d195ae4175c01f)] - fix: remove internal interval handler when close agent (#4654) (Harry Chen <>)
+ * [[`6a6d68fb2`](http://github.com/eggjs/egg/commit/6a6d68fb228a3eae9b5cab3ba7afe0892d5e08ea)] - Typo fixture:制定 -> 指定 (#4639) (华晨 <>)
+ * [[`603c74b58`](http://github.com/eggjs/egg/commit/603c74b581d6b3a9ad80170335425b0876ffcb1f)] - docs: Added english doc to how-to-migrate-from-1.x (#4630) (Jacky Wang <>)
+ * [[`693df6066`](http://github.com/eggjs/egg/commit/693df60661735008e8a758258fc2df0bb9783f04)] - docs: fix schedule reference (#4556) (xuxu <>)
+ * [[`4ebbe8143`](http://github.com/eggjs/egg/commit/4ebbe814386102377870959129e831a3b20133c1)] - docs: fix typo (#4596) (suinia <>)
+
+## 2021-02-19, Version 2.29.3 @killa
+
+### Notable Changes
+
+* **fixes**
+ * fix ctx body typing
+
+### Commits
+ * [[`e9fba1b7b`](http://github.com/eggjs/egg/commit/e9fba1b7bbe3f54b023262aeb5487b31047e119e)] - fix: fix ctx body as any (#4613) (killa <>)
+
+## 2021-02-18, Version 2.29.2 @killa
+
+### Notable Changes
+
+* **fixes**
+ * fix query typing
+ * add overrideIgnore define
+
+### Commits
+
+ * [[`99682e4bd`](http://github.com/eggjs/egg/commit/99682e4bd5afe1697cab02001e919b967c264869)] - fix: fix query typing (#4611) (killa <>)
+ * [[`26017ee2e`](http://github.com/eggjs/egg/commit/26017ee2e49bd8a42b660baabe31284e00f81bcb)] - chore: fix comment typo at request.js (#4513) (Albert 理斯特 <>)
+ * [[`34048c275`](http://github.com/eggjs/egg/commit/34048c275afe1126716ef4265b667169e9866e53)] - fix: add overrideIgnore define (#4490) (kotot <<317643941@qq.com>>)
+ * [[`d652658d1`](http://github.com/eggjs/egg/commit/d652658d1205d0fbc73b4417c2ae54ee0a24f395)] - docs: d2 ads (#4508) (Suyi <>)
+
+## 2020-10-19, Version 2.29.1 @atian25
+
+### Notable Changes
+
+* **fixes**
+ * revert clear timing after ready, only disable
+ * won't set keep-alive header at Node.js ^12.19.0 || >=14.8.0
+
+### Commits
+
+ * [[`9f653afe7`](http://github.com/eggjs/egg/commit/9f653afe790e0ead44109c68dfffb8353fdca56c)] - fix: remove clear timing && skip keep-alive after 12.19.0 (#4497) (TZ | 天猪 <>)
+
+
+## 2020-09-23, Version 2.29.0 @atian25
+
+### Notable Changes
+
+* **features**
+ * dumpconfig also dump disabled plugin
+
+* **docs**
+ * csrf double cookie defense should enabled on all method
+ * test case for env.EGG_APP_CONFIG
+ * optimize multiple env configuration description
+
+### Commits
+
+ * [[`cc80c6ab8`](http://github.com/eggjs/egg/commit/cc80c6ab86c71b1c9ea244065d4766297bfb6c17)] - feat: dumpconfig also dump disabled plugin (#4480) (TZ | 天猪 <>)
+ * [[`1d32771e5`](http://github.com/eggjs/egg/commit/1d32771e5aeb8fa8546ad8bfacf2f438973afae0)] - doc: csrf double cookie defense should enabled on all method (#3881) (Hongcai Deng <>)
+ * [[`504e4bebc`](http://github.com/eggjs/egg/commit/504e4bebcef03830be7c7432210b5b6b1de9d06b)] - test: for env.EGG_APP_CONFIG (#4468) (TZ | 天猪 <>)
+ * [[`ff4dfaa09`](http://github.com/eggjs/egg/commit/ff4dfaa098ad40ab7a0773c44d409829fcbb0e41)] - docs(config): optimize multiple env configuration description (#4406) (Andy <>)
+ * [[`b283791da`](http://github.com/eggjs/egg/commit/b283791dab3c86beb14506668e2aa3ef21cb78e6)] - docs: update badge to github action (#4463) (TZ | 天猪 <>)
+
+
+## 2020-09-08, Version 2.28.0 @atian25
+
+### Notable Changes
+
+* **features**
+ * clear & disable timing after ready
+
+* **fixes**
+ * only set keep-alive header before Node.js 14.8.0
+
+* **typings**
+ * Added missing types in HttpClientConfig
+ * export EggLogger/EggHttpClient/EggContextHttpClient
+
+* **docs**
+ * fixed grammatical and spelling errors
+ * update compress url
+
+### Commits
+
+ * [[`b31b47df1`](http://github.com/eggjs/egg/commit/b31b47df10722bfac7ac13771db534f0200fc6ce)] - feat: clear & disable timing after ready (#4421) (TZ | 天猪 <>)
+ * [[`d25d32e58`](http://github.com/eggjs/egg/commit/d25d32e584b0bfd80f21cc522b91ac465f2852ac)] - fix: only set keep-alive header before Node.js 14.8.0 (#4457) (TZ | 天猪 <>)
+ * [[`a7ae46c84`](http://github.com/eggjs/egg/commit/a7ae46c847db07c0c4af1a85173bc4009d1219d9)] - type: Added missing types in HttpClientConfig (#4388) (Gcaufy <>)
+ * [[`064cc7a91`](http://github.com/eggjs/egg/commit/064cc7a91a2be89e39d72a833a1cb35cdcd8f201)] - docs: fixed grammatical and spelling errors (#4424) (Hridayesh Sharma <>)
+ * [[`95776d646`](http://github.com/eggjs/egg/commit/95776d6462080448e946c049f9ad4da4e9fc065e)] - docs: fix spelling mistakes and grammatical errors (#4423) (Hridayesh Sharma <>)
+ * [[`50976280f`](http://github.com/eggjs/egg/commit/50976280fcb19ce556ddc46f76da1f5fab46fa4a)] - docs: update compress url (#4415) (忽如寄 <<594613537@qq.com>>)
+
+## 2020-06-29, Version 2.27.0 @killa
+
+### Notable Changes
+
+* **typings**
+ * fix curl type
+ * export EggLogger/EggHttpClient/EggContextHttpClient
+
+* **docs**
+ * update docs about how to extends ctx.helper
+
+### Commits
+
+ * [[`b5cc8b6e3`](http://github.com/eggjs/egg/commit/b5cc8b6e361b1ac2e7b4eb509f1e6486fe1dab13)] - fix(dts): fix curl type (#4312) (胡宇航 <<591765099@qq.com>>)
+ * [[`432128a80`](http://github.com/eggjs/egg/commit/432128a80aefdc8d11a6571da1ff35550e85fd66)] - type: export EggLogger/EggHttpClient/EggContextHttpClient (#4280) (killa <>)
+ * [[`eca6b04c1`](http://github.com/eggjs/egg/commit/eca6b04c1c50bc69c53f9910cc35bb7441c7cb02)] - docs:update docs about how to extends ctx.helper (#4362) (EasonQwQ <<750225883@qq.com>>)
+
+
+## 2020-05-13, Version 2.26.1 @dead-horse
+
+### Notable Changes
+
+* **fixes**
+ * runInBackground always run after setImmediate
+
+* **docs**
+ * imporve docs
+ * imporve typings
+
+### Commits
+
+ * [[`9c67298d6`](http://github.com/eggjs/egg/commit/9c67298d69946d4ba0887c3648d3404e835c6902)] - test: run test on node 14 (#4272) (fengmk2 <>)
+ * [[`427a30a07`](http://github.com/eggjs/egg/commit/427a30a071d248cc2e5e15bb4bad35f3058e867f)] - test: make dnscache test case more stable (#4297) (Yiyu He <>)
+ * [[`64efd076b`](http://github.com/eggjs/egg/commit/64efd076bf9d937e36748f89bada6fce186913cd)] - fix: runInBackground always run after setImmediate (#4296) (Yiyu He <>)
+ * [[`69923977a`](http://github.com/eggjs/egg/commit/69923977a7e5c0825f2fc5c616852b0721411a0c)] - docs: Update doc for config of logger.consoleLevel (#4276) (xuxu <>)
+ * [[`7b6e4371c`](http://github.com/eggjs/egg/commit/7b6e4371c7367583627977a0ca4aa2ff66e28429)] - docs(typescript): Add --noEmit to unittest example code (#4250) (Ink <>)
+ * [[`3413e35fd`](http://github.com/eggjs/egg/commit/3413e35fd86408896e5c0b7e77ec2528ac08c9f9)] - chore: fix typo (#4234) (zoomdong <<1344492820@qq.com>>)
+ * [[`b4b9b50af`](http://github.com/eggjs/egg/commit/b4b9b50af1bb842e0138fc236d45882188698123)] - doc (socketio): fix packet middleware bug (#4204) (zfx <<502545703@qq.com>>)
+ * [[`2fcd605c6`](http://github.com/eggjs/egg/commit/2fcd605c6397480b0a5add9c11f7c7d071393de5)] - docs: update bodyParser types and doc (#4192) (sexy pig <<353071655@qq.com>>)
+ * [[`5e2bad0c4`](http://github.com/eggjs/egg/commit/5e2bad0c421952b7c84471df06d2ca80c20fa14c)] - docs: fix typo in router (#4203) (Xuemuyang <>)
+ * [[`1181a675c`](http://github.com/eggjs/egg/commit/1181a675cae08c2d6952b8c15a3a9375947e220b)] - docs(plugin): format en/basics/plugin.md (#4168) (chs97 <<623528324@qq.com>>)
+ * [[`e9011e8f3`](http://github.com/eggjs/egg/commit/e9011e8f332a97da7e6e112d0f1ded42f0b5db42)] - feat: add http method patch to typings (#4125) (xiaoxu <>)
+ * [[`2109505b4`](http://github.com/eggjs/egg/commit/2109505b40a159cd047075e566e9465b1ad5a365)] - test: fix doctools path on windows (#4090) (fengmk2 <>)
+
+
+## 2019-12-07, Version 2.26.0 @fengmk2
+
+### Notable changes
+
+* **features**
+ * add application level Cookie options, can fix [Cookie SameSite warning on Chrome](https://support.google.com/chrome/thread/16654793?hl=en) now.
+ * use new URL instead of url.parse, avoiding potential security issues.
+
+### Commits
+
+ * [[`b28134e77`](http://github.com/eggjs/egg/commit/b28134e7709c803eb7a7ed071a25bac8a28e3d1f)] - feat: add application level Cookie options (#4086) (fengmk2 <>)
+ * [[`b7718c1cc`](http://github.com/eggjs/egg/commit/b7718c1cc2b94b02ee728088060fdbc85e462b6d)] - fix: use new URL instead of url.parse (#4048) (Yiyu He <>)
+ * [[`afed9105d`](http://github.com/eggjs/egg/commit/afed9105df34aad60c40ecba0e44ddaad1a605dc)] - fix: index.d.ts (#4012) (dxd <>)
+ * [[`690711bab`](http://github.com/eggjs/egg/commit/690711bab8bd8c838b4dd651baea3bc49a5fa1f1)] - test: fix the testcase error of load_boot.test.js (#4041) (Xin Wang <>)
+ * [[`6c55a436b`](http://github.com/eggjs/egg/commit/6c55a436bf2afb7bb99810401a6f92b3a58471ff)] - docs: fix typo (#4028) (Xuehua Cai <>)
+
+## 2019-10-28, Version 2.25.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * support config.maxIpsCount, deprecate config.maxProxyCount
+ * singleton returns client name when create client
+
+### Commits
+
+ * [[`b3479e8e2`](http://github.com/eggjs/egg/commit/b3479e8e2b6cc74c95eef4334bd6b054fddb6158)] - feat: support config.maxIpsCount (#4014) (Yiyu He <>)
+ * [[`380e7d634`](http://github.com/eggjs/egg/commit/380e7d6344b4f608397fed5dea4f19918ca347f5)] - docs(env): cleanup the document (#3988) (Alpha <>)
+ * [[`2c5e64a50`](http://github.com/eggjs/egg/commit/2c5e64a50edd78522aa5bf83e4ea8ef4d72f5b40)] - docs: add promo link (#3995) (Haoliang Gao <>)
+ * [[`adca16637`](http://github.com/eggjs/egg/commit/adca1663712acd361dddd1b390ca48dda5a3608e)] - docs(deployment): update the description for hostname (#3994) (Suyi <>)
+ * [[`27dacb7c9`](http://github.com/eggjs/egg/commit/27dacb7c9dae4b65c1b973d39aae1f8c9a4cd7b1)] - feat:Singleton returns client name when create client (#3905) (暗色调 <<41288382+dark-tone@users.noreply.github.com>>)
+ * [[`d3f68c371`](http://github.com/eggjs/egg/commit/d3f68c3710946a63f640b1885e9c7120db935d8e)] - docs(deployment): modify hostname (#3987) (zfx <<502545703@qq.com>>)
+ * [[`73ad6c086`](http://github.com/eggjs/egg/commit/73ad6c0861d5d6f8235fde2a5ba985ad9f53fcfe)] - chore: use github actions to run CI (#3974) (Suyi <>)
+
+
+## 2019-10-11, Version 2.24.0 @thonatos
+
+### Notable changes
+
+* **features**
+ * feat: set default body-parser limitation to 1mb
+
+* **fixes**
+ * app.keys getter must have a setter either
+ * more log for bodyParser
+
+* **docs**
+ * add opencollective to sponsors list
+ * update lf url
+ * fix hsts docs error
+ * fix typo of socket.io
+ * modify invalid links
+
+### Commits
+
+ * [[`bddf1e183`](http://github.com/eggjs/egg/commit/bddf1e183b5b6fc0f1414f81948ffdedd71e16a9)] - feat: set default body-parser limitation to 1mb (#3903) (Suyi <>)
+ * [[`5ddf07c43`](http://github.com/eggjs/egg/commit/5ddf07c435ad81142a6e995583849e20c7348dda)] - docs: update readme (#3968) (Suyi <>)
+ * [[`be1b72606`](http://github.com/eggjs/egg/commit/be1b72606a62a8efe88849976126cc8ca61b8d7e)] - docs(security): hsts is disabled by default (#3972) (Suyi <>)
+ * [[`e5e948783`](http://github.com/eggjs/egg/commit/e5e948783a45ea138592a33e9ae7faa20a85af26)] - docs: add opencollective to sponsors list (#3971) (Suyi <>)
+ * [[`cde921456`](http://github.com/eggjs/egg/commit/cde921456657c16dba81c6fb9c991b62a826d120)] - docs: update lf url (#3922) (Suyi <>)
+ * [[`17b22c86b`](http://github.com/eggjs/egg/commit/17b22c86b7f83bc168d9c7176191618e19add1dd)] - docs: fix typo of socket.io (#3895) (lqzhgood <<9134671+lqzhgood@users.noreply.github.com>>)
+ * [[`a9d0cf5c0`](http://github.com/eggjs/egg/commit/a9d0cf5c0d5aadc957e12854f7a3ab6469f83f75)] - fix: app.keys getter must have a setter either (#3891) (Yiyu He <>)
+ * [[`f1707410b`](http://github.com/eggjs/egg/commit/f1707410bc3f703d69aae27965cc622b9a768107)] - docs(deployment): add logs that the egg app has been successfully connected to alinode (#3868) (hyj1991 <>)
+ * [[`24c388b4a`](http://github.com/eggjs/egg/commit/24c388b4a5ec4c717875a1510accbd5882800ad0)] - docs(egg-and-koa): modify invalid links (#3851) (sdjdd <<352207572@qq.com>>)
+ * [[`84894e871`](http://github.com/eggjs/egg/commit/84894e8714747876821447faeaada0dabc2a7147)] - chore: add sponsor config (#3751) (TZ | 天猪 <>)
+ * [[`064616934`](http://github.com/eggjs/egg/commit/064616934b4ff2c044395baae60bd33d3d7dc5ff)] - chore: add node12 for ci (#3196) (Haoliang Gao <>)
+ * [[`45a966621`](http://github.com/eggjs/egg/commit/45a966621746f9d2c9e8a91fc1b17f75d97033de)] - docs(quickstart): npm version for npm init command (#3836) (QingDeng <>)
+ * [[`341beda59`](http://github.com/eggjs/egg/commit/341beda59ee99867998e28603f9ed623e49c33aa)] - test: mv assert to fixtures (#3829) (Suyi <>)
+ * [[`79dbb14a5`](http://github.com/eggjs/egg/commit/79dbb14a535c27a55daf83b441b47aabff472b06)] - docs(logger): formatter (#3835) (TZ | 天猪 <>)
+
+## 2019-07-17, Version 2.23.0 @atian25
+
+### Notable changes
+
+* **features**
+ * error message rewrite when it has only a getter
+
+* **fixes**
+ * handleRequest method should return a promise
+ * more log for bodyParser
+
+* **docs**
+ * httpclient upload files
+ * typings improve
+
+### Commits
+
+ * [[`6bfc0eb5b`](http://github.com/eggjs/egg/commit/6bfc0eb5b9a6d38c73d46bf641ece6adda3481a1)] - feat: error message rewrite when it has only a getter (#3796) (TZ | 天猪 <>)
+ * [[`489f52b5c`](http://github.com/eggjs/egg/commit/489f52b5ce4078efccefc8837729b42c15828722)] - fix: handleRequest method should return a promise (#3820) (引证 <>)
+ * [[`29a2f2fd9`](http://github.com/eggjs/egg/commit/29a2f2fd92e4d3e3cf0ee9ff034d8cdce07ee693)] - fix: more log for bodyParser (#3809) (TZ | 天猪 <>)
+ * [[`6dc8a2d14`](http://github.com/eggjs/egg/commit/6dc8a2d14582c774479593f002af2f2b96e0ce96)] - chore: fix ci (#3825) (Suyi <>)
+ * [[`e30511eff`](http://github.com/eggjs/egg/commit/e30511effeb77d954e2c15b684c274b85da2c69b)] - docs: add alinode supported platforms (#3821) (hyj1991 <>)
+ * [[`c67ca2059`](http://github.com/eggjs/egg/commit/c67ca2059f2c44140e3a5bc46c38c87f52a08172)] - docs: open should come with protocol (#3787) (zhennann <>)
+ * [[`9adcd40f8`](http://github.com/eggjs/egg/commit/9adcd40f81a22670abf2f5f9167d9c8de438ad34)] - docs(lifecyle): add class export in sample code (#3758) (Kermit Xuan <<33770367+Kermit-Xuan@users.noreply.github.com>>)
+ * [[`4ca62734d`](http://github.com/eggjs/egg/commit/4ca62734db829cad7e3ea35bc6394de98c9ad160)] - fix: typos (#3768) (Jeff <>)
+ * [[`b1cb5332d`](http://github.com/eggjs/egg/commit/b1cb5332d433c158f59ab4877f3f6ab07bf9fe79)] - chore: remove @types/urllib (#3732) (TZ | 天猪 <>)
+ * [[`3de31f541`](http://github.com/eggjs/egg/commit/3de31f5418503f02afde9e92409d5f40e664c46c)] - fix(typings): add custom logger typings (#3697) (吖猩 <>)
+ * [[`35af6331c`](http://github.com/eggjs/egg/commit/35af6331c97b2e9c9f831ff193709f8fc984f3a9)] - docs: https options en version (#3702) (liulun <>)
+ * [[`9c23232a4`](http://github.com/eggjs/egg/commit/9c23232a47679bdcb8f071a5cc01f013f443aa05)] - docs(sequelize): replace findById with findByPk (#3700) (Zhao zuoqi <<30346283+Mavericker-1996@users.noreply.github.com>>)
+ * [[`3fccb4f27`](http://github.com/eggjs/egg/commit/3fccb4f275b2982b974a1a1d99cec32795f4efd3)] - docs: https options (#3701) (liulun <>)
+ * [[`5b2dbd5b0`](http://github.com/eggjs/egg/commit/5b2dbd5b097d80b0f9150d1a03ec1d9c73af8dec)] - test: fix some test methods failed on windows platform (#3686) (QingDeng <>)
+ * [[`409990299`](http://github.com/eggjs/egg/commit/409990299fd3afeb35968bc06b02f4b0137718ba)] - fix:add the doc test on windows (#3654) (Maledong <>)
+ * [[`17fab1c1d`](http://github.com/eggjs/egg/commit/17fab1c1d645076bda76be351fcb3c6f86cea4ca)] - docs: httpclient upload files (#3682) (TZ | 天猪 <>)
+ * [[`da2d439d6`](http://github.com/eggjs/egg/commit/da2d439d6f79f767055021bf96f7ef73207a751a)] - docs(lifecyle): fix typo (#3681) (+v <>)
+
+## 2019-04-30, Version 2.22.2 @atian25
+
+### Notable changes
+
+* **fixes**
+ * optimize declaration of httpclient
+
+### Commits
+
+ * [[`670ba3475`](http://github.com/eggjs/egg/commit/670ba34751af0b3869dd656064b4587affb888ec)] - fix(typings): optimize declaration of httpclient (#3665) (吖猩 <>)
+
+## 2019-04-29, Version 2.22.1 @atian25
+
+### Notable changes
+
+* **fixes**
+ * should restore agent messenger first
+
+### Commits
+
+ * [[`04adcf93b`](http://github.com/eggjs/egg/commit/04adcf93b8f0a8c48c35015e8d2a279fc7d06b24)] - fix: should restore agent messenger first (#3658) (TZ | 天猪 <>)
+ * [[`99eb75398`](http://github.com/eggjs/egg/commit/99eb7539850c117d3d8b05f669cae5a9e9269be8)] - docs: fix history time (#3655) (TZ | 天猪 <>)
+
+## 2019-04-29, Version 2.22.0 @atian25
+
+### Notable changes
+
+* **features**
+ * switch httpclient to httpclient2 for retry feature
+ * add BaseHookClass
+
+* **fixes**
+ * loadCustomLoader should be run before loadCustomApp
+
+* **docs**
+ * d.ts for single mode
+
+### Commits
+
+ * [[`d3b1cb5d9`](http://github.com/eggjs/egg/commit/d3b1cb5d9d2dd91330778966ba9813f56476a47b)] - fix: loadCustomLoader should be run before loadCustomApp (#3652) (Haoliang Gao <>)
+ * [[`7cc8aab02`](http://github.com/eggjs/egg/commit/7cc8aab02d89869b4ce460b2fa186aedcf00b64b)] - chore: update packages,remove 'plugin' and validations of doc generation (#3643) (Maledong <>)
+ * [[`bffb6448f`](http://github.com/eggjs/egg/commit/bffb6448f201ce0d61bd3a32b91f673cf5c074f4)] - docs: fix httpclient proxy (#3638) (TZ | 天猪 <>)
+ * [[`e7fbd68f3`](http://github.com/eggjs/egg/commit/e7fbd68f32054041b74bc860f11aca05c025c0a9)] - feat: switch httpclient to httpclient2 for retry feature (#3626) (TZ | 天猪 <>)
+ * [[`8bb7c7e7d`](http://github.com/eggjs/egg/commit/8bb7c7e7d59d6aeca4b2ed1eb580368dcb731a4d)] - feat: add BaseHookClass (#3581) (killa <>)
+ * [[`459454354`](http://github.com/eggjs/egg/commit/4594543543290a8c714fe3b9047c84578bf2f9a6)] - feat: index.d.ts添加单进程模式 (#3628) (jasine <>)
+ * [[`4b13a1ffb`](http://github.com/eggjs/egg/commit/4b13a1ffbed0895731bf38f72d5786d4b15f263f)] - chore: fix jsdocs (#3627) (TZ | 天猪 <>)
+
+## 2019-04-12, Version 2.21.1 @dead-horse
+
+### Notable changes
+
+* **fixes**
+ * Revert "feat: switch httpclient to httpclient2 for retry feature(which is a breaking change)
+
+### Commits
+
+ * [[`89872a76f`](http://github.com/eggjs/egg/commit/89872a76fc09cefb9ff92221a5c3b9977d206f7c)] - Revert "feat: switch httpclient to httpclient2 for retry feature (#36… (#3622) (Yiyu He <>)
+
+## 2019-04-11, Version 2.21.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * support config.maxProxyCount to help get the real client ip
+ * switch httpclient to httpclient2 for retry feature
+
+* **docs**
+ * add how to config egg behind a proxy
+ * update http_proxy usage
+ * change `egg-init` to `npm init egg`
+
+### Commits
+
+ * [[`01b9588a3`](http://github.com/eggjs/egg/commit/01b9588a35ba33a7088e79f6d3e08c713c4de963)] - feat: support config.maxProxyCount to help get the real client ip (#3612) (Yiyu He <>)
+ * [[`eead31862`](http://github.com/eggjs/egg/commit/eead318625347bb9de8f9d7ffc6fae5ae1b33901)] - feat: switch httpclient to httpclient2 for retry feature (#3606) (TZ | 天猪 <>)
+ * [[`879fe93a6`](http://github.com/eggjs/egg/commit/879fe93a6dde156101318c766a3c29ca07f1e18d)] - docs: add how to config egg behind a proxy (#3614) (Yiyu He <>)
+ * [[`2357fbc1e`](http://github.com/eggjs/egg/commit/2357fbc1ee18cf0a8ee8692ed2d62d2224acfe3b)] - docs: remove egg-ts-helper && inspect-brk (#3603) (TZ | 天猪 <>)
+ * [[`e0a1d8fc6`](http://github.com/eggjs/egg/commit/e0a1d8fc6806acc0a4141bc4cf67149069bfbdf0)] - docs: change egg-init to `npm init egg` (#3588) (TZ | 天猪 <>)
+ * [[`763923cd7`](http://github.com/eggjs/egg/commit/763923cd76be30496fee9f733db9500c1d8188f2)] - chore: remove unused plugins.puml link (#3579) (TZ | 天猪 <>)
+ * [[`b1746468d`](http://github.com/eggjs/egg/commit/b1746468dae2d02aeef37f6e8d85414624c79880)] - docs(httpclient): update http_proxy usage (#3569) (TZ | 天猪 <>)
+
+
+## 2019-03-25, Version 2.20.2 @whxaxes
+
+### Notable changes
+
+* **fixes**
+ * onClientError remove content-length header
+
+* **types**
+ * add custom loader typing
+ * import types from egg-core
+
+### Commits
+
+ * [[`f31cd38aa`](http://github.com/eggjs/egg/commit/f31cd38aa1c1cb58f4fb6b08020b0b49a9b5c1a8)] - fix(types): add custom loader typing (#3533) (吖猩 <>)
+ * [[`a73cfd067`](http://github.com/eggjs/egg/commit/a73cfd067b48b2c2301e50d5ab431dfecebddef4)] - fix(types): import types from egg-core (#3545) (吖猩 <>)
+ * [[`04adb930d`](http://github.com/eggjs/egg/commit/04adb930de61f6c3d1b7b9b4e7f49800e3b49602)] - fix: onClientError remove content-length header (#3544) (Yiyu He <>)
+
+## 2019-03-12, Version 2.20.1 @dead-horse
+
+### Notable changes
+
+* **fixes**
+ * empty querystring must be cached
+ * add Singleton class declare typings
+
+### Commits
+
+ * [[`2fc241a86`](http://github.com/eggjs/egg/commit/2fc241a8648d64faab78196ccd0377c781287e5e)] - fix: add Singleton class declare typings (#3522) (mars <>)
+ * [[`981bad58b`](http://github.com/eggjs/egg/commit/981bad58ba6c4644b8bbbd818a43bf0dd62e206f)] - fix: empty querystring must be cached (#3535) (Yiyu He <>)
+
+
+## 2019-03-07, Version 2.20.0 @popomore
+
+### Notable changes
+
+* **features**
+ * support customLoader
+
+* **chore**
+ * fix typo
+ * fix testcase
+
+### Commits
+
+ * [[`4cf06da27`](http://github.com/eggjs/egg/commit/4cf06da272a3f71b864efb6780ddfe2e6c1ad37c)] - feat: support customLoader (#3484) (Haoliang Gao <>)
+ * [[`2f2bd69bb`](http://github.com/eggjs/egg/commit/2f2bd69bb5a5ef5f9d45514c0640f3849bc64293)] - chore:Fix some typos in Chinese and English (#3514) (Maledong <>)
+ * [[`65bdd158c`](http://github.com/eggjs/egg/commit/65bdd158caf38abfc945de9aad8367a8567b1a18)] - Fix(cluster-client.test.js):Rollback to previous (#3507) (Maledong <>)
+
+## 2019-02-28, Version 2.19.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * single mode support ignore warning
+
+* **fixes**
+ * fix type defined
+
+### Commits
+
+ * [[`18efac152`](http://github.com/eggjs/egg/commit/18efac152dd5cf789d1e79b1c1fb1fb4ec2013a1)] - feat: single mode support ignore warning (#3501) (Yiyu He <>)
+ * [[`f9eea2a4d`](http://github.com/eggjs/egg/commit/f9eea2a4da805a1b2f0e8883860266d68eb432ff)] - fix(types): getFileStream options types (#3500) (kayikay <<469797590@qq.com>>)
+
+## 2019-02-26, Version 2.18.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * cluster-client support single process mode
+
+* **fixes**
+ * fix type defined
+
+### Commits
+
+ * [[`db1093128`](http://github.com/eggjs/egg/commit/db10931281dd39106e5c657e358117abd39b2103)] - feat: cluster-client support single cpu mode (#3497) (zōng yǔ <>)
+ * [[`f7e6ab535`](http://github.com/eggjs/egg/commit/f7e6ab535df378b35dfe6b6b49d7e009dc2bcf3f)] - doc (typescript.md): Chinese translation for the beginning of TypeScript's Introduction (#3488) (Maledong <>)
+ * [[`ac7e9a6b6`](http://github.com/eggjs/egg/commit/ac7e9a6b6d732d946dc238d9bad3eaabb81a1b70)] - fix: helper type (#3483) (吖猩 <>)
+
+
+## 2019-02-21, Version 2.17.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * agent context can be extended
+
+* **fixes**
+ * createAnonymousContext add host in headers
+
+### Commits
+* [[`7147b23cf`](http://github.com/eggjs/egg/commit/7147b23cf7edaa98a8f009d98de7ef2aaa5303a0)] - feat: agent context can be extended (#3478) (Hongcai Deng <>)
+* [[`a2f0d9620`](http://github.com/eggjs/egg/commit/a2f0d96204e05f11c5586ff0fa9441f4e3ab5dff)] - fix: createAnonymousContext add host in headers (#3477) (Yiyu He <>)
+* [[`5952d1240`](http://github.com/eggjs/egg/commit/5952d12404ae896a2338ee4ee79d68876ffbb205)] - docs(typescript): fix wrong path of LifeCycle (#3475) (CHANG, TZU-YEN <>)
+
+## 2019-02-18, Version 2.16.2 @dead-horse
+
+### Notable changes
+
+* **fixes**
+ * fix: messenger in single process mode support send without `to`
+
+### Commits
+
+ * [[`eac494184`](http://github.com/eggjs/egg/commit/eac4941846948ca6bb8a357d525ad82737425005)] - fix: support send without to argument (#3472) (Yiyu He <>)
+
+
+## 2019-02-15, Version 2.16.1 @atian25
+
+### Notable changes
+
+* **docs**
+ * remove declaration of view
+
+* **others**
+ * update dependencies
+
+### Commits
+
+ * [[`1e859f2e2`](http://github.com/eggjs/egg/commit/1e859f2e200260cab95ac0b860d85609eb3eec06)] - feat(types): remove declaration of view (#3466) (吖猩 <>)
+ * [[`4a3ab5ac0`](http://github.com/eggjs/egg/commit/4a3ab5ac0324537fc3cdbcc0e84e3085b8a34586)] - deps: update dependencies (#3464) (Yiyu He <>)
+
+## 2019-02-14, Version 2.16.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * allow ctx.router setter
+
+* **others**
+ * more document improvement
+
+### Commits
+
+ * [[`0b67c85f6`](http://github.com/eggjs/egg/commit/0b67c85f6f1798b2d3f377fb5ea336c96b60b6e3)] - feat: allow ctx.router setter (#3460) (fengmk2 <>)
+ * [[`ae5f56f3e`](http://github.com/eggjs/egg/commit/ae5f56f3e9b60eaa3507db44736020f3a13ec6f1)] - chore: Add principles for English titles and change all English titles (#3444) (Maledong <>)
+ * [[`a9bee07da`](http://github.com/eggjs/egg/commit/a9bee07daff1530da7350f9ad1ea56e21aa3eead)] - docs(sequelize): fix init doc (#3456) (Yiyu He <>)
+ * [[`f76c23052`](http://github.com/eggjs/egg/commit/f76c23052c86afcf158087f8b13a7e47ef76f67c)] - docs(logger): add logger.outputJSON to docs (#3425) (FX <>)
+
+
+## 2019-02-04, Version 2.15.1 @dead-horse
+
+### Notable changes
+
+* **fixes**
+ * add missing framework support for single process mode
+
+### Commits
+
+ * [[`277c024cf`](http://github.com/eggjs/egg/commit/277c024cf565948547dbc7a518d39d7f55318f58)] - fix: add missing framework support for single process mode (#3445) (Yiyu He <>)
+
+## 2019-02-03, Version 2.15.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * [EXPERIMENT FEATURE] support single process mode
+
+* **fixes**
+ * [TYPE] array supporting for config.static.dir
+ * [TYPE] fix IMiddleware type is incompatible
+ * [TYPE] fix type error while esModuleInterop is true
+
+* **others**
+ * more document improvement
+
+### Commits
+
+ * [[`83c423a0a`](http://github.com/eggjs/egg/commit/83c423a0a985e701bfaef7f10372268b4ce8cef5)] - docs(development.md): Add English translation (Jennie <>)
+ * [[`d79da17bd`](http://github.com/eggjs/egg/commit/d79da17bdbe94f7b78d923caa10abf21e6c5f752)] - fix: type error while esModuleInterop is true (#3436) (吖猩 <>)
+ * [[`20ba4632b`](http://github.com/eggjs/egg/commit/20ba4632ba32e3b81e760678b4bbe00cdf05388e)] - feat: support single process mode (#3430) (Yiyu He <>)
+ * [[`133616961`](http://github.com/eggjs/egg/commit/133616961e5a2e95d5e2cd1254d7304c846b859c)] - docs: fix typo in socketio.md (#3431) (kilmas <>)
+ * [[`e899630e9`](http://github.com/eggjs/egg/commit/e899630e97865701b81d428686a19288b1c87b98)] - fix: array supporting for config.static.dir (#3421) (Gray <>)
+ * [[`43f2e3c44`](http://github.com/eggjs/egg/commit/43f2e3c449a7b448506d2484ed729618b06bffec)] - fix: IMiddleware type is incompatible (#3419) (吖猩 <>)
+ * [[`b3256b54e`](http://github.com/eggjs/egg/commit/b3256b54eeb09b2cee3cfdb75e98d6c090844a10)] - doc:Add new loaderUpdate.md (#3395) (Maledong <>)
+ * [[`71768002a`](http://github.com/eggjs/egg/commit/71768002a468a8fd30b9516c0bed85fa27b99b0a)] - docs: Wrong words are corrected (#3418) (巧克力冰激凌 <<121017405@qq.com>>)
+ * [[`20d56c7a8`](http://github.com/eggjs/egg/commit/20d56c7a83a74bb81ee47b0b8c2785db15519996)] - fix: fix ts ci (#3416) (吖猩 <>)
+ * [[`8beacd13e`](http://github.com/eggjs/egg/commit/8beacd13e3bcfff6b6a1e02eea72cafdd343858c)] - docs(logger): add logger.disableConsoleAfterReady to docs (#3384) (吖猩 <>)
+ * [[`271bc6372`](http://github.com/eggjs/egg/commit/271bc63722723531556bbec06d621f964ad1db33)] - chore: typo "submit an PR" should be "submit a PR" (#3408) (DAI JIE <>)
+ * [[`688f67c9f`](http://github.com/eggjs/egg/commit/688f67c9f329c71ea4469b9d28d5ee41815831ed)] - Chore: Fix some chore issues (#3400) (Maledong <>)
+ * [[`cfcebc623`](http://github.com/eggjs/egg/commit/cfcebc6234c62780c6aecf84db3862efd74e430c)] - doc (typescript.md): Sync the English translation (#3397) (Maledong <>)
+ * [[`7e5ef2181`](http://github.com/eggjs/egg/commit/7e5ef21811f98e5d55884f2574092e6f2e7b619b)] - docs(typescript): optimize docs of typescript (#3374) (吖猩 <>)
+ * [[`2a801f789`](http://github.com/eggjs/egg/commit/2a801f789f6e60427657b507951de8fc8e4a830f)] - chore: comments typo fix (#3392) (Jeff <>)
+ * [[`9a4b72062`](http://github.com/eggjs/egg/commit/9a4b7206212a27d37a37a1d68b4739be306b1a7a)] - chore: fix issue template (#3369) (Suyi <>)
+ * [[`ef73396a5`](http://github.com/eggjs/egg/commit/ef73396a5828c6b4e55c85cd2b27c3830bd306e5)] - docs: improve debug docs (#3370) (TZ | 天猪 <>)
+ * [[`874e57fda`](http://github.com/eggjs/egg/commit/874e57fda480d3295c1b1b30198ca3493f57814d)] - docs(sequelize): fix init (#3372) (Yiyu He <>)
+ * [[`b2152c56f`](http://github.com/eggjs/egg/commit/b2152c56f525a87fe0c1cfe66949005f308e1569)] - Chore: Fix some typo translations (#3361) (Maledong <>)
+ * [[`d275929d1`](http://github.com/eggjs/egg/commit/d275929d17830c95a2c828611b5ca54ffb747270)] - docs(boot): update app start document (#3348) (Yiyu He <>)
+ * [[`9a8652beb`](http://github.com/eggjs/egg/commit/9a8652bebc29f3d097039196b10daa2575f49695)] - Fix: Change the diagram of "starting process" (#3358) (Maledong <>)
+ * [[`ac0f13bc6`](http://github.com/eggjs/egg/commit/ac0f13bc604ebfc08185b336a106ec7e5d1bc98f)] - Chore: Add missing links for "Sails" and union the spellings of "Plugin" (#3356) (Maledong <>)
+ * [[`cd52b063b`](http://github.com/eggjs/egg/commit/cd52b063b60e15bc78c440fdebc00ddd3dca9909)] - docs(cluster-and-ipc.md): fix typos and formatting errors (#3357) (Darren Poon <>)
+ * [[`37e3c1aba`](http://github.com/eggjs/egg/commit/37e3c1abab31f47fc492574464657a57ff686b2b)] - Chroe: Fix something in articles (#3349) (Maledong <>)
+
+## 2018-12-20, Version 2.14.2 @atian25
+
+### Notable changes
+
+* **fixes**
+ * fix d.ts context declaration not works
+
+* **docs**
+ * more document improvement
+
+### Commits
+ * [[`edfe66093`](http://github.com/eggjs/egg/commit/edfe66093c9ffe730ffd9804da1e2b264a48c38e)] - fix: Add comments for re-writing properties from Koa (#3332) (Maledong <>)
+ * [[`f312db78f`](http://github.com/eggjs/egg/commit/f312db78fc330da2bfe6efdb0f095d7b3b363beb)] - fix: fix context declaration not works (#3329) (Axes <>)
+ * [[`ef47a2746`](http://github.com/eggjs/egg/commit/ef47a274625a6ae8696857bef01b2c679dd65395)] - docs: fix config heading level (#3327) (Suyi <>)
+ * [[`cddd91ded`](http://github.com/eggjs/egg/commit/cddd91ded2fac1395487e2847caaf92afaafcf8e)] - chore: adjust template (TZ <>)
+ * [[`7319727a0`](http://github.com/eggjs/egg/commit/7319727a0b8a4fa210746ac201631a4b7db4359b)] - chore: Update issue templates (#3326) (TZ | 天猪 <>)
+ * [[`0cb246e26`](http://github.com/eggjs/egg/commit/0cb246e2663a288395a013ee78a1b34ab5b7c641)] - doc: Fix some translations with some icons (#3315) (Maledong <>)
+ * [[`9dc20377e`](http://github.com/eggjs/egg/commit/9dc20377e18e53278bcfac037e15a5a761cccdb3)] - doc: session special usage tip (#3304) (Jerry Wu <>)
+ * [[`6f4e91274`](http://github.com/eggjs/egg/commit/6f4e91274daa0685ba0ed8983ad5b6fd457322bc)] - docs: Update httpclient.md (#3276) (Albert <>)
+ * [[`64e88abfd`](http://github.com/eggjs/egg/commit/64e88abfd24d50096aa2d4ef442aafd46101429a)] - docs(egg-passport): add redirection desc while auth succeed (#3260) (Suyi <>)
+
+## 2018-11-24, Version 2.14.1 @atian25
+
+### Notable changes
+
+* **fixes**
+ * remove timeout log msg
+
+* **others**
+ * use circular-json-for-egg to remove deprecate message
+
+### Commits
+
+ * [[`0fb5a96c0`](http://github.com/eggjs/egg/commit/0fb5a96c023e916cb9c14c5960df62547ed391d8)] - fix: remove timeout log msg (#3229) (TZ | 天猪 <>)
+ * [[`de81caef1`](http://github.com/eggjs/egg/commit/de81caef1d91c229effadd25ddf752297c2a08f5)] - deps: use circular-json-for-egg to remove deprecate message (#3211) (Yiyu He <>)
+
+## 2018-11-17, Version 2.14.0 @dead-horse
+
+### Notable changes
+
+* **features**
+ * add create anonymous context to agent
+ * support server timeout
+
+* **fixes**
+ * curl: allow request timeout bigger than agent timeout
+ * triggerServerDidReady should be triggered only once
+
+### Commits
+
+ * [[`db999d3f7`](http://github.com/eggjs/egg/commit/db999d3f7afa210c855f3f1a4518e83f7d8c1dc6)] - docs: add serverTimeout to d.ts (#3200) (TZ | 天猪 <>)
+ * [[`a43fef4e1`](http://github.com/eggjs/egg/commit/a43fef4e1828937d3d84469989582df273de1493)] - docs(index.d.ts): curl 增加泛型 (#3197) (The Rock <>)
+ * [[`d40124a25`](http://github.com/eggjs/egg/commit/d40124a25fcd1b52ab862ee297139a022458b81d)] - feat: add create anonymous context to agent (#3193) (Hongcai Deng <>)
+ * [[`9dfd19ead`](http://github.com/eggjs/egg/commit/9dfd19eada8bae7be212155a2989d0ccc410e8eb)] - fix: triggerServerDidReady should be triggered only once (#3190) (killa <>)
+ * [[`7802528e1`](http://github.com/eggjs/egg/commit/7802528e122691eb2cb78174e1c1490d0a382c08)] - feat: support server timeout (#3133) (TZ |
+天猪 <>)
+ * [[`ff79101b5`](http://github.com/eggjs/egg/commit/ff79101b592d59ad12d110dd26dd7fa3d044b968)] - docs: Update service.md (#3191) (肖金 <>)
+ * [[`327fa174f`](http://github.com/eggjs/egg/commit/327fa174ffd74a67a77520d839eac282c916e8c0)] - fix: allow request timeout bigger than agent timeout (#3146) (fengmk2 <>)
+ * [[`86093c03a`](http://github.com/eggjs/egg/commit/86093c03a822a2b925de94cfda96198dc8159ade)] - docs: remove promo logo (#3176) (Suyi <>)
+
+## 2018-11-07, Version 2.13.0 @mansonchor
+
+### Notable changes
+
+* **feature**
+ * emit event when runInBackground catch error
+
+* **perf**
+ * better TypeScript support
+
+* **docs**
+ * supplement documentation
+
+
+### Commits
+
+ * [[`03378b8c3`](https://github.com/mansonchor/egg.git/commit/03378b8c3e48e7000a580a4acf5375f9ffcac4dc)] - docs(plugin.md): fix 'path' declaration example (#3152) (maigozhang <>)
+ * [[`3c25221bd`](https://github.com/mansonchor/egg.git/commit/3c25221bd24a0a39cd06540fad46884e4dda363c)] - chore: use is.string() in utils.js for consistency (#3153) (ZYSzys <>)
+ * [[`a9b0fcec6`](https://github.com/mansonchor/egg.git/commit/a9b0fcec636f7241d0f578dca6b99444dabfeb83)] - chore(typings): add method `beforeClose` in index.d.ts (#3120) (Erona <>)
+ * [[`4709db746`](https://github.com/mansonchor/egg.git/commit/4709db746d8f97de99c04558f1ba86443e394668)] - feature(context): emit event when runInBackground catch error (#3118) (mansonchor <>)
+ * [[`e1dc2a7a4`](https://github.com/mansonchor/egg.git/commit/e1dc2a7a409a8bf56a817773229d5fc6dcde796b)] - docs: add promo logo (#3113) (Haoliang Gao <>)
+ * [[`51e9c1578`](https://github.com/mansonchor/egg.git/commit/51e9c1578496ed2afb44c47fdfd77867a95fec52)] - chore(typings): add interface IBoot (#3098) (killa <>)
+ * [[`8052d7ff7`](https://github.com/mansonchor/egg.git/commit/8052d7ff7bf6278e8ce4b4de46e0e6324d0d3861)] - doc: Update the `configWillLoad` explainations (#3116) (Maledong <>)
+ * [[`c3c4e2e3e`](https://github.com/mansonchor/egg.git/commit/c3c4e2e3e04a924595d6837ab15c7b292e3529f6)] - docs: add configWillLoad to lifecycle (#3101) (fengmk2 <>)
+ * [[`4abdb4980`](https://github.com/mansonchor/egg.git/commit/4abdb49801ebb3075b408d6fb3b72eba1a70c056)] - docs(CONTRIBUTION): Add missing link for `Accquire the submitted files` (#3102) (Maledong <>)
+ * [[`c7061ec62`](https://github.com/mansonchor/egg.git/commit/c7061ec6255faa250c6565a4c102f64c0498683c)] - fix(docs): Grammar of "lots of" (#3100) (waiting <>)
+ * [[`92181e83f`](https://github.com/mansonchor/egg.git/commit/92181e83f98d55bd1a796a871ab5d438d02c8e84)] - doc (CONTRIBUTION): Add missing English translations and clearify dns (#3035) (Maledong <>)
+ * [[`0a7497987`](https://github.com/mansonchor/egg.git/commit/0a7497987067ce1c3376dfc30676c35f484a5ccc)] - doc(logger.md): Fix incorrect description on default log output level. (#3082) (TX-Kunkun <>)
+
+
+## 2018-10-08, Version 2.12.0 @dead-horse
+
+### Notable changes
+
+* **feature**
+ * add Subscription base class on app instance
+
+* **fix**
+ * upgrade to egg-logger@2, don't write log when stream was destroyed.
+ * pin circular-json@0.5.5 to avoid output deprecate message
+
+* **docs**
+ * corrected lots of documentation errors, thanks @Maledong
+ * use egg-logger definition
+
+
+### Commits
+
+ * [[`eb1eae736`](http://github.com/eggjs/egg/commit/eb1eae736c0fc541e6d21fb726d52d971d6a95da)] - refactor(typescript): use egg-logger definition (#3078) (Haoliang Gao <>)
+ * [[`04d9a3b85`](http://github.com/eggjs/egg/commit/04d9a3b85ef54819c0ad3ac505e7806db6a7e9b3)] - deps: egg-logger@2 (#3073) (Yiyu He <>)
+ * [[`886d9ad8f`](http://github.com/eggjs/egg/commit/886d9ad8fd11e1fbbd1712dd53ef464658f525b5)] - feat: add Subscription base class on app instance (#3058) (fengmk2 <>)
+ * [[`4c6fb2a17`](http://github.com/eggjs/egg/commit/4c6fb2a175c2481aa61aaad131f6812517bc7022)] - doc (socket.io): Make 'uws' cannot use anymore clear (#3068) (Maledong <>)
+ * [[`0d6798d22`](http://github.com/eggjs/egg/commit/0d6798d22d0e5016b0f7f25e5fa15ffe6900e16c)] - docs (Controller.md): Add new feat description (#3066) (Maledong <>)
+ * [[`399902680`](http://github.com/eggjs/egg/commit/39990268081d1da3fdb2d575802ea46cdf67bcd5)] - doc(typescript.md): Clarify the middleware's usages (#3039) (Maledong <>)
+ * [[`6bf812f73`](http://github.com/eggjs/egg/commit/6bf812f73603e967e405a815dcb2cc94dcb8384c)] - chore: fix middleware docs typo (#3060) (TZ | 天猪 <>)
+ * [[`b13d904d3`](http://github.com/eggjs/egg/commit/b13d904d302639c3b6068f109d4bcfa5aff12c61)] - test: avoid DNS pollution on local env (#3034) (fengmk2 <>)
+ * [[`bace2433b`](http://github.com/eggjs/egg/commit/bace2433bcc96d1507403c34711b2a2e450e6a6a)] - fix: remove loader.loadBootHook (Yiyu He <>)
+ * [[`6a7db2a35`](http://github.com/eggjs/egg/commit/6a7db2a3591a03b187bc3b52c67b37fde7984d34)] - doc (objects.md): Fix number and code errors (#3029) (Maledong <>)
+ * [[`c65a64899`](http://github.com/eggjs/egg/commit/c65a648991900b95a8ef0b21dcd8e3f715523df7)] - doc (TypeScript): Formation errors with missing translations (#3020) (Maledong <>)
+ * [[`abd8d1286`](http://github.com/eggjs/egg/commit/abd8d12861e17ff8fe5e950d589c00d17625beae)] - deps: pin circular-json@0.5.5 to avoid output deprecate message (#3023) (Yiyu He <>)
+ * [[`e3ffcbe64`](http://github.com/eggjs/egg/commit/e3ffcbe6449b95b50ea40583a28383e734c72fe1)] - docs (typescript.md): Add missing trans in English for TypeScript (#2998) (Maledong <>)
+
+## 2018-09-19, Version 2.11.2 @XadillaX
+
+### Notable changes
+
+* **fix**
+ * typescript: add missing 'ignore', 'match'
+* **refactor**
+ * separate dumping config object and config file
+
+### Commits
+
+ * [[`1d30166e0`](http://github.com/eggjs/egg/commit/1d30166e037e8890fc850e51bdba02af76772485)] - refactor: separate dumping config object and config file (#3014) (Khaidi Chu <>)
+ * [[`e3f183e96`](http://github.com/eggjs/egg/commit/e3f183e9658e603c74850376f2257bd88bc4a043)] - fix (typescript): Add missing 'ignore','match' (#3010) (Maledong <>)
+
+## 2018-09-14, Version 2.11.1 @popomore
+
+### Notable changes
+
+* **fix**
+ * httpclient: can't use runInBackground in agent
+
+* **deps**
+ * upgrade to debug@4 and coffee@5
+
+### Commits
+
+ * [[`eed74e861`](http://github.com/eggjs/egg/commit/eed74e8610e1ea189beed1c3526b38f0b59c48ab)] - chore: update deps, debug@4 and coffee@5 (#2995) (TZ | 天猪 <>)
+ * [[`a8a3dfb04`](http://github.com/eggjs/egg/commit/a8a3dfb04f11b1c48ed1f01154e4d4311bfafa4b)] - fix(httpclient): can't use runInBackground in agent (#3003) (Haoliang Gao <>)
+ * [[`4faf68f4b`](http://github.com/eggjs/egg/commit/4faf68f4b6dad160a151b3d76041a0521261b530)] - doc (loader.md): Add missing English translations (#2996) (Maledong <>)
+
+## 2018-09-11, Version 2.11.0 @atian25
+
+### Notable changes
+
+* **feature**
+ * support boot lifecycle, see https://github.com/eggjs/egg/issues/2520
+ * `dnshttpclient` now use async function instead of Promise
+
+* **fix**
+ * don't log when rawPacket is empty
+
+* **docs**
+ * add sequelize guide docs
+ * more document and typings improvement
+
+### Commits
+
+ * [[`0d876c71a`](http://github.com/eggjs/egg/commit/0d876c71a9c4862b93cb039f564ae3d3171e1cad)] - feat: support boot lifecyle (#2972) (killa <>)
+ * [[`b02ce1547`](http://github.com/eggjs/egg/commit/b02ce154777fc78a6d344fe45d915d013096bea3)] - chroe(doc): Fix some typos (#2988) (Maledong <>)
+ * [[`688067ae0`](http://github.com/eggjs/egg/commit/688067ae09071316cbf5310b17d92d4fec39b42a)] - docs: fix 2 typos (#2982) (Jeff <>)
+ * [[`a719fd345`](http://github.com/eggjs/egg/commit/a719fd34507ebbfcf800768fb58adc81aa9c5e36)] - docs: Fix and add missing typos (#2935) (Maledong <>)
+ * [[`815c27879`](http://github.com/eggjs/egg/commit/815c278792e94ccf85822b3496f10396236e6628)] - fix (typings): Upgrade to the latest version of 'egg-cookie' to fetch (#2958) (Maledong <>)
+ * [[`a2df5ad13`](http://github.com/eggjs/egg/commit/a2df5ad137dea5faf7724d480edcc482a1df9393)] - docs: fixed typo. (#2961) (Ariel Yang <>)
+ * [[`b971e6633`](http://github.com/eggjs/egg/commit/b971e66336af4c8e241303866c8fa9acaaf4e66f)] - test: fix sitefile icon test (#2940) (Yiyu He <>)
+ * [[`81826ed1a`](http://github.com/eggjs/egg/commit/81826ed1a826a3436f8c42b7b5466295c60f241e)] - docs: fix link to angular commit-message-format (#2939) (Vincent <>)
+ * [[`45e302459`](http://github.com/eggjs/egg/commit/45e30245952619e4ed95867b2f76b0bdd06e94cc)] - fix: don't log when rawPacket is empty (#2924) (Haoliang Gao <>)
+ * [[`db1286de7`](http://github.com/eggjs/egg/commit/db1286de73de2cd987dc8f28c0616e9a683824a6)] - chore(typings): add class EggLoader (#2321) (waiting <>)
+ * [[`80528ccec`](http://github.com/eggjs/egg/commit/80528cceced500b5ae49ebf6d9df242ba2ce5ea4)] - refactor(dnshttpclient): use async function instead of Promise (#2774) (Haoliang Gao <>)
+ * [[`fe9e95654`](http://github.com/eggjs/egg/commit/fe9e9565472c7de9ff8dfb8894917764fe26fa0b)] - doc (package.json,README.zh-CN): Fix some typos (#2927) (Maledong <>)
+ * [[`289e96278`](http://github.com/eggjs/egg/commit/289e96278359a1468e366a6f3f7b2094dd3b7d6c)] - docs(sequelize): hostname shoule be host (#2921) (Will <<1078954008@qq.com>>)
+ * [[`72cd808b8`](http://github.com/eggjs/egg/commit/72cd808b86f37847cf340d88ec4eb73b9d7a7aa0)] - docs: fix sequelize link (#2909) (Yiyu He <>)
+ * [[`ae9ec30b4`](http://github.com/eggjs/egg/commit/ae9ec30b410bba3f8a99ba741e59fdb13e51c806)] - docs: add sequelize (#2902) (Yiyu He <>)
+ * [[`68135608b`](http://github.com/eggjs/egg/commit/68135608b3518b7d3dbd852453061179f63d5e4f)] - docs(deployment): fix typo on grep (#2898) (Baffin Lee <>)
+ * [[`6bfe70b3d`](http://github.com/eggjs/egg/commit/6bfe70b3d64206c85dea19c308abb40c46c6e347)] - doc (en,zh-cn): Fix translations error (#2885) (Maledong <>)
+ * [[`96ed020ce`](http://github.com/eggjs/egg/commit/96ed020ce04919049181808cee217029586d11c3)] - docs: fix config and socketio error (#2884) (Suyi <