diff --git a/.eslintrc.yml b/.eslintrc.yml index d67763b0..b67991b5 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -55,9 +55,16 @@ rules: spaced-comment: [error, always] strict: off yoda: error - vue/require-default-prop: off + vue/component-tags-order: + - error + - order: + - template + - style + - script + vue/no-mutating-props: off vue/no-v-html: off - vue/no-use-v-if-with-v-for: off + vue/require-default-prop: off + vue/v-slot-style: [error, longform] plugins: - vue diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..6534742d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,16 @@ +contact_links: + - name: Docker container issues + url: https://github.com/thelounge/thelounge-docker/issues + about: Report issues related to the Docker container here + + - name: Debian package issues + url: https://github.com/thelounge/thelounge-deb/issues + about: Report issues related to the Debian package here + + - name: Arch Linux package issues + url: https://github.com/thelounge/thelounge-archlinux/issues + about: Report issues related to the Arch Linux package here + + - name: General support + url: https://demo.thelounge.chat/?join=%23thelounge + about: "Join #thelounge on Freenode to ask a question before creating an issue" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3597070..3695a8b1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,22 +8,34 @@ jobs: strategy: matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] - node_version: [ - 10.x, # EOL: April 2021 - 12.x, # EOL: April 2022 - ] - exclude: - - os: macOS-latest + include: + # EOL: April 2021 + - os: ubuntu-latest node_version: 10.x + # EOL: April 2022 + - os: ubuntu-latest + node_version: 12.x + + # EOL: April 2023 + - os: ubuntu-latest + node_version: 14.x + - os: macOS-latest + node_version: 14.x + - os: windows-latest + node_version: 14.x + + # EOL: June 2021 + - os: ubuntu-latest + node_version: 15.x + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@master - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: ${{ matrix.node_version }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1447242e..455bac87 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@master - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: registry-url: "https://registry.npmjs.org/" diff --git a/.stylelintrc.yml b/.stylelintrc.yml index f5a427f7..f743eccf 100644 --- a/.stylelintrc.yml +++ b/.stylelintrc.yml @@ -1,8 +1,5 @@ extends: stylelint-config-standard -ignoreFiles: - - client/css/bootstrap.css - rules: indentation: tab # complains about FontAwesome diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..d401e0e3 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "EditorConfig.EditorConfig", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "octref.vetur" + ], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..cb73945b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "configurations": [ + { + "type": "node-terminal", + "name": "Run Dev", + "request": "launch", + "command": "yarn dev", + "cwd": "${workspaceFolder}" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..d80731df --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "editor.formatOnSave": true, + "vetur.format.enable": false, + "prettier.useEditorConfig": true, + "prettier.requireConfig": true, + "prettier.disableLanguages": [], + "prettier.packageManager": "yarn", + "eslint.packageManager": "yarn", + "eslint.codeActionsOnSave.mode": "all" +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 34124bf4..c8c80e33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,148 @@ All notable changes to this project will be documented in this file. +## v4.3.0-pre.1 - 2021-03-02 [Pre-release] + +[See the full changelog](https://github.com/thelounge/thelounge/compare/v4.2.0...v4.3.0-pre.1) + +This is a pre-release for v4.3.0 to offer latest changes without having to wait for a stable release. +At this stage, features may still be added or modified until the first release candidate for this version gets released. + +Please refer to the commit list given above for a complete list of changes, or wait for the stable release to get a thoroughly prepared change log entry. + +As with all pre-releases, this version requires explicit use of the `next` tag to be installed: + +```sh +yarn global add thelounge@next +``` + +## v4.2.0 - 2020-08-19 + +For more details, [see the full changelog](https://github.com/thelounge/thelounge/compare/v4.1.0...v4.2.0) and [milestone](https://github.com/thelounge/thelounge/milestone/36?closed=1). + +This is a minor release with one significant new feature: a mentions panel! + +

+ Mentions panel +

+ +Other notable additions include custom highlight exceptions, a new configuration option to not send preview requests to 3rd party websites, and uploaded images will have [EXIF](https://en.wikipedia.org/wiki/Exif) data automatically removed. + +There's also a new section for configuring SASL on the Connect screen, and `SASL EXTERNAL` is now supported. + +

+ SASL authentication + SASL external (certfp) +

+ +Along with other bugs, a Chrome bug causing lag when typing has been fixed. Additionally, the `node-sqlite3` dependency has been updated, and you no longer need to re-install The Lounge when you update Node.js. + +And as an update for our Docker users, `thelounge-docker` now has support for ARM images; thanks [@williamboman](https://github.com/williamboman) and [@klausenbusk](https://github.com/klausenbusk)! + +### Added + +- Track mentions/highlights and add a window to view them ([#3858](https://github.com/thelounge/thelounge/pull/3858), [#3993](https://github.com/thelounge/thelounge/pull/3993), [#3862](https://github.com/thelounge/thelounge/pull/3862), [#3868](https://github.com/thelounge/thelounge/pull/3868), [#4003](https://github.com/thelounge/thelounge/pull/4003) by [@xPaw](https://github.com/xPaw)) +- Add an option to display 12-hour times ([#3787](https://github.com/thelounge/thelounge/pull/3787) by [@xPaw](https://github.com/xPaw)) +- Add clear channel history (available in channel context menu)([#3778](https://github.com/thelounge/thelounge/pull/3778) by [@xPaw](https://github.com/xPaw)) +- Add CertFP support; separate SASL configuration; merge `displayNetwork` and `lockNetwork` in The Lounge configuration file ([#3844](https://github.com/thelounge/thelounge/pull/3844) by [@xPaw](https://github.com/xPaw)) +- Add an indicator to `STATUSMSG` messages ([#3875](https://github.com/thelounge/thelounge/pull/3875) by [@xPaw](https://github.com/xPaw)) +- Add native app badges for highlights (Chrome 81+) ([#3845](https://github.com/thelounge/thelounge/pull/3845) by [@xPaw](https://github.com/xPaw)) +- Add generic monospace blocks for `INFO` and `HELP` numerics ([#3962](https://github.com/thelounge/thelounge/pull/3962) by [@xPaw](https://github.com/xPaw), [#4032](https://github.com/thelounge/thelounge/pull/4032) by [@xPaw](https://github.com/xPaw)) +- Add option to disable media preview ([#3983](https://github.com/thelounge/thelounge/pull/3983) by [@dalcde](https://github.com/dalcde)) +- Add custom highlight exceptions ([#3998](https://github.com/thelounge/thelounge/pull/3998) by [@Jay2k1](https://github.com/Jay2k1)) +- Add navigation in image viewer ([#3798](https://github.com/thelounge/thelounge/pull/3798) by [@richrd](https://github.com/richrd)) +- Render images in canvas before upload to remove EXIF data ([#3764](https://github.com/thelounge/thelounge/pull/3764) by [@xPaw](https://github.com/xPaw)) + +### Changed + +- Disable link prefetching for urls with no schema specified ([#4014](https://github.com/thelounge/thelounge/pull/4014) by [@xPaw](https://github.com/xPaw)) +- Disable settings sync for browser notifications and notification sound ([#4028](https://github.com/thelounge/thelounge/pull/4028) by [@xPaw](https://github.com/xPaw)) +- Make usernames case-insensitive when logging in ([#3918](https://github.com/thelounge/thelounge/pull/3918) by [@ashwinikammar](https://github.com/ashwinikammar)) +- Separate active sessions section ([#3817](https://github.com/thelounge/thelounge/pull/3817) by [@xPaw](https://github.com/xPaw)) +- Add `role=group` to status messages setting ([#3790](https://github.com/thelounge/thelounge/pull/3790) by [@xPaw](https://github.com/xPaw)) +- Filter user loading at startup for "advanced" LDAP ([#3871](https://github.com/thelounge/thelounge/pull/3871) by [@ebardie](https://github.com/ebardie)) +- Reconnects now use exponential backoff +- Update production dependencies to their latest versions: + - `uuid` ([#3791](https://github.com/thelounge/thelounge/pull/3791), [#3837](https://github.com/thelounge/thelounge/pull/3837), [#3890](https://github.com/thelounge/thelounge/pull/3890), [#3919](https://github.com/thelounge/thelounge/pull/3919), [#3957](https://github.com/thelounge/thelounge/pull/3957), [#4004](https://github.com/thelounge/thelounge/pull/4004)) + - `yarn` ([#3792](https://github.com/thelounge/thelounge/pull/3792), [#3800](https://github.com/thelounge/thelounge/pull/3800)) + - `file-type` ([#3801](https://github.com/thelounge/thelounge/pull/3801), [#3896](https://github.com/thelounge/thelounge/pull/3896), [#3909](https://github.com/thelounge/thelounge/pull/3909), [#3920](https://github.com/thelounge/thelounge/pull/3920), [#3934](https://github.com/thelounge/thelounge/pull/3934), [#3940](https://github.com/thelounge/thelounge/pull/3940)) + - `commander` ([#3807](https://github.com/thelounge/thelounge/pull/3807), [#3992](https://github.com/thelounge/thelounge/pull/3992)) + - `got` ([#3829](https://github.com/thelounge/thelounge/pull/3829), [#3869](https://github.com/thelounge/thelounge/pull/3869), [#3898](https://github.com/thelounge/thelounge/pull/3898), [#3905](https://github.com/thelounge/thelounge/pull/3905), [#3932](https://github.com/thelounge/thelounge/pull/3932), [#3935](https://github.com/thelounge/thelounge/pull/3935), [#3972](https://github.com/thelounge/thelounge/pull/3972), [#3988](https://github.com/thelounge/thelounge/pull/3988)) + - `irc-framework` ([#3838](https://github.com/thelounge/thelounge/pull/3838), [#3984](https://github.com/thelounge/thelounge/pull/3984)) + - `chalk` ([#3839](https://github.com/thelounge/thelounge/pull/3839)) + - `semver` ([#3843](https://github.com/thelounge/thelounge/pull/3843), [#3863](https://github.com/thelounge/thelounge/pull/3863)) + - `web-push` ([#3904](https://github.com/thelounge/thelounge/pull/3904)) + - `linkify-it` ([#3917](https://github.com/thelounge/thelounge/pull/3917)) + - `sqlite3` ([#3886](https://github.com/thelounge/thelounge/pull/3886)) + - `ldapjs` ([#3931](https://github.com/thelounge/thelounge/pull/3931), [#3996](https://github.com/thelounge/thelounge/pull/3996)) + - `tlds` ([#4015](https://github.com/thelounge/thelounge/pull/4015)) + +### Fixed + +- Fix sending unhandled numerics to target channel ([#3789](https://github.com/thelounge/thelounge/pull/3789) by [@xPaw](https://github.com/xPaw)) +- Fix up first argument not being used as part message ([#3808](https://github.com/thelounge/thelounge/pull/3808) by [@xPaw](https://github.com/xPaw)) +- Pass in client manager object in update checker ([#3797](https://github.com/thelounge/thelounge/pull/3797) by [@xPaw](https://github.com/xPaw)) +- Do not handle navigation keybinds in inputs if not empty ([#3814](https://github.com/thelounge/thelounge/pull/3814) by [@xPaw](https://github.com/xPaw)) +- Fix body overscroll and overflow on iOS Safari ([#3828](https://github.com/thelounge/thelounge/pull/3828) by [@stevenengler](https://github.com/stevenengler)) +- Fix off-by-one color error in webmanifest ([#3867](https://github.com/thelounge/thelounge/pull/3867) by [@maxpoulin64](https://github.com/maxpoulin64)) +- Support multiple arguments in eventbus emit ([#3885](https://github.com/thelounge/thelounge/pull/3885) by [@xPaw](https://github.com/xPaw)) +- Fix msg id order when loading from sqlite ([#3888](https://github.com/thelounge/thelounge/pull/3888) by [@xPaw](https://github.com/xPaw)) +- Reply to the server if that's where CTCP VERSION originated ([#3906](https://github.com/thelounge/thelounge/pull/3906) by [@xPaw](https://github.com/xPaw)) +- Fix date marker not displaying sometimes ([#3978](https://github.com/thelounge/thelounge/pull/3978) by [@xPaw](https://github.com/xPaw)) +- Allow changing network name in private mode with lockNetwork ([#3977](https://github.com/thelounge/thelounge/pull/3977) by [@xPaw](https://github.com/xPaw)) +- Fix upload tokens expiring while uploading when TL is proxied ([#3986](https://github.com/thelounge/thelounge/pull/3986) by [@xPaw](https://github.com/xPaw)) +- Refresh notification permission state when push is enabled ([#3987](https://github.com/thelounge/thelounge/pull/3987) by [@xPaw](https://github.com/xPaw)) +- Fix mode message only making last nick clickable ([#4005](https://github.com/thelounge/thelounge/pull/4005) by [@xPaw](https://github.com/xPaw)) +- Sync changed network name to open clients ([#4038](https://github.com/thelounge/thelounge/pull/4038) by [@xPaw](https://github.com/xPaw)) +- Fix layout trashing in Chrome causing typing lag ([#3999](https://github.com/thelounge/thelounge/pull/3999) by [@xPaw](https://github.com/xPaw)) +- Fixed a rare bug in `irc-framework` that caused duplicate messages + +### Internals + +- Optimize user list updates for quit/part/kick events ([#3857](https://github.com/thelounge/thelounge/pull/3857) by [@xPaw](https://github.com/xPaw)) +- Remove "The Lounge" from connect in public ([#3816](https://github.com/thelounge/thelounge/pull/3816) by [@xPaw](https://github.com/xPaw)) +- Replace all uses of `fs-extra` with native methods ([#3810](https://github.com/thelounge/thelounge/pull/3810) by [@xPaw](https://github.com/xPaw)) +- Upgrade to `mocha@7` and remove `mochapack` ([#3826](https://github.com/thelounge/thelounge/pull/3826) by [@xPaw](https://github.com/xPaw)) +- Remove `intersection-observer` polyfill ([#3864](https://github.com/thelounge/thelounge/pull/3864) by [@xPaw](https://github.com/xPaw)) +- Safeguard nick randomizer up to allowed length ([#3870](https://github.com/thelounge/thelounge/pull/3870) by [@xPaw](https://github.com/xPaw)) +- Replace vue events with our own event bus ([#3872](https://github.com/thelounge/thelounge/pull/3872) by [@xPaw](https://github.com/xPaw)) +- Cleanup vue router route guards ([#3995](https://github.com/thelounge/thelounge/pull/3995) by [@xPaw](https://github.com/xPaw)) +- Use lodash where possible ([#4020](https://github.com/thelounge/thelounge/pull/4020) by [@xPaw](https://github.com/xPaw)) +- Replace dashes to underscores in emoji autocompletion ([#4029](https://github.com/thelounge/thelounge/pull/4029) by [@xPaw](https://github.com/xPaw)) +- Changes required for vue 3 ([#3889](https://github.com/thelounge/thelounge/pull/3889) by [@timmw](https://github.com/timmw)) +- Test node v14 ([#3976](https://github.com/thelounge/thelounge/pull/3976) by [@xPaw](https://github.com/xPaw)) +- Update development dependencies to their latest versions. + +## v4.2.0-pre.2 - 2020-07-28 [Pre-release] + +[See the full changelog](https://github.com/thelounge/thelounge/compare/v4.2.0-pre.1...v4.2.0-pre.2) + +This is a pre-release for v4.2.0 to offer latest changes without having to wait for a stable release. +At this stage, features may still be added or modified until the first release candidate for this version gets released. + +Please refer to the commit list given above for a complete list of changes, or wait for the stable release to get a thoroughly prepared change log entry. + +As with all pre-releases, this version requires explicit use of the `next` tag to be installed: + +```sh +yarn global add thelounge@next +``` + +## v4.2.0-pre.1 - 2020-05-17 [Pre-release] + +[See the full changelog](https://github.com/thelounge/thelounge/compare/v4.1.0...v4.2.0-pre.1) + +This is a pre-release for v4.2.0 to offer latest changes without having to wait for a stable release. +At this stage, features may still be added or modified until the first release candidate for this version gets released. + +Please refer to the commit list given above for a complete list of changes, or wait for the stable release to get a thoroughly prepared change log entry. + +As with all pre-releases, this version requires explicit use of the `next` tag to be installed: + +```sh +yarn global add thelounge@next +``` + ## v4.1.0 - 2020-03-09 For more details, [see the full changelog](https://github.com/thelounge/thelounge/compare/v4.0.0...v4.1.0) and [milestone](https://github.com/thelounge/thelounge/milestone/35?closed=1). diff --git a/README.md b/README.md index 3a845572..8ea89439 100644 --- a/README.md +++ b/README.md @@ -85,5 +85,5 @@ Before submitting any change, make sure to: - Read the [Contributing instructions](https://github.com/thelounge/thelounge/blob/master/.github/CONTRIBUTING.md#contributing) - Run `yarn test` to execute linters and test suite -- Run `yarn build` if you change or add anything in `client/js` or `client/views` +- Run `yarn build` if you change or add anything in `client/js` or `client/components` - `yarn dev` can be used to start The Lounge with hot module reloading diff --git a/client/components/App.vue b/client/components/App.vue index b4e8c023..b136874f 100644 --- a/client/components/App.vue +++ b/client/components/App.vue @@ -13,6 +13,7 @@