diff --git a/.github/workflows/test_suite.yml b/.github/workflows/test_suite.yml index b733060a2..a02b3e254 100644 --- a/.github/workflows/test_suite.yml +++ b/.github/workflows/test_suite.yml @@ -125,7 +125,7 @@ jobs: v1-meteor_build_cache- - name: Setup meteor - uses: meteorengineer/setup-meteor@v1 + uses: meteorengineer/setup-meteor@v2 with: meteor-release: '2.2' diff --git a/CHANGELOG.md b/CHANGELOG.md index c7e58b8d5..09cf3440c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,12 +15,25 @@ Fixing other platforms In Progress. [How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585) -# Upcoming WeKan ® release +# v7.45 2024-05-06 WeKan ® release This release adds the following updates: - [Update Docker base container to Ubuntu 24.04, and update software versions](https://github.com/wekan/wekan/commit/63117e87e759af965c8eeceaaa41f52815630d20). Thanks to developers of dependencies. +- [Updated dependencies](https://github.com/wekan/wekan/pull/5392). + Thanks to developers of dependencies. + +and fixes the following bugs: + +- [Fix display of tables with a large number of rows](https://github.com/wekan/wekan/pull/5393). + Thanks to novashdima. +- [Fix white List color and define Silver in CSS instead of leaving it unset](https://github.com/wekan/wekan/pull/5400). + Thanks to C0rn3j. +- [Allow silver color to be set in List and Swimlane](https://github.com/wekan/wekan/pull/5401). + Thanks to C0rn3j. +- [Fix Can't set a Due Date that has a leading zero in time, errors with invalid time](https://github.com/wekan/wekan/commit/9cebee734740790145ca574c539ccebd067cee7e). + Thanks to C0rn3j and xet7. Thanks to above GitHub users for their contributions and translators for their translations. diff --git a/Stackerfile.yml b/Stackerfile.yml index 99c49e0ae..2c772f91b 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v7.44.0" +appVersion: "v7.45.0" files: userUploads: - README.md diff --git a/client/components/lists/list.css b/client/components/lists/list.css index f24ac22f1..e0126de59 100644 --- a/client/components/lists/list.css +++ b/client/components/lists/list.css @@ -324,7 +324,6 @@ } .list-header-white { border-bottom: 6px solid #fff; - border: 1px solid #eee; } .list-header-green { border-bottom: 6px solid #3cb500; @@ -357,7 +356,7 @@ border-bottom: 6px solid #51e898; } .list-header-silver { - border-bottom: 6px solid unset; + border-bottom: 6px solid #e4e4e4; } .list-header-peachpuff { border-bottom: 6px solid #ffdab9; diff --git a/client/components/settings/adminReports.jade b/client/components/settings/adminReports.jade index 5fc99f0b5..955709ef8 100644 --- a/client/components/settings/adminReports.jade +++ b/client/components/settings/adminReports.jade @@ -58,18 +58,20 @@ template(name="rulesReport") h1 {{_ 'rulesReportTitle'}} if resultsCount table - tr - th Rule Title - th Board Title - th actionType - th activityType + thead + tr + th Rule Title + th Board Title + th actionType + th activityType each rule in results - tr - td {{ rule.title }} - td {{ rule.boardTitle }} - td {{ rule.action.actionType }} - td {{ rule.trigger.activityType }} + tbody + tr + td {{ rule.title }} + td {{ rule.boardTitle }} + td {{ rule.action.actionType }} + td {{ rule.trigger.activityType }} else div {{_ 'no-results' }} @@ -77,22 +79,24 @@ template(name="filesReport") h1 {{_ 'filesReportTitle'}} if resultsCount table - tr - th Filename - th.right Size (kB) - th MIME Type - th Attachment ID - th Board ID - th Card ID + thead + tr + th Filename + th.right Size (kB) + th MIME Type + th Attachment ID + th Board ID + th Card ID each att in results - tr - td {{ att.name }} - td.right {{ fileSize att.size }} - td {{ att.type }} - td {{ att._id }} - td {{ att.meta.boardId }} - td {{ att.meta.cardId }} + tbody + tr + td {{ att.name }} + td.right {{ fileSize att.size }} + td {{ att.type }} + td {{ att._id }} + td {{ att.meta.boardId }} + td {{ att.meta.cardId }} else div {{_ 'no-results' }} @@ -100,22 +104,24 @@ template(name="cardsReport") h1 {{_ 'cardsReportTitle'}} if resultsCount table.table - tr - th Card Title - th Board - th Swimlane - th List - th Members - th Assignees + thead + tr + th Card Title + th Board + th Swimlane + th List + th Members + th Assignees each card in results - tr - td {{abbreviate card.title }} - td {{abbreviate card.board.title }} - td {{abbreviate card.swimlane.title }} - td {{abbreviate card.list.title }} - td {{userNames card.members }} - td {{userNames card.assignees }} + tbody + tr + td {{abbreviate card.title }} + td {{abbreviate card.board.title }} + td {{abbreviate card.swimlane.title }} + td {{abbreviate card.list.title }} + td {{userNames card.members }} + td {{userNames card.assignees }} else div {{_ 'no-results' }} @@ -123,22 +129,24 @@ template(name="boardsReport") h1 {{_ 'boardsReportTitle'}} if resultsCount table.table - tr - th Title - th Id - th Permission - th Archived? - th Members - th Organizations - th Teams + thead + tr + th Title + th Id + th Permission + th Archived? + th Members + th Organizations + th Teams each board in results - tr - td {{abbreviate board.title }} - td {{abbreviate board._id }} - td {{ board.permission }} - td - = yesOrNo(board.archived) - td {{userNames board.members }} + tbody + tr + td {{abbreviate board.title }} + td {{abbreviate board._id }} + td {{ board.permission }} + td + = yesOrNo(board.archived) + td {{userNames board.members }} else div {{_ 'no-results' }} diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index 2e4fe5021..eca5eeab5 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -73,7 +73,7 @@ template(name="people") template(name="orgGeneral") table - tbody + thead tr th {{_ 'displayName'}} th {{_ 'description'}} @@ -84,12 +84,14 @@ template(name="orgGeneral") th {{_ 'active'}} th +newOrgRow - each org in orgList - +orgRow(orgId=org._id) + tbody + tr + each org in orgList + +orgRow(orgId=org._id) template(name="teamGeneral") table - tbody + thead tr th {{_ 'displayName'}} th {{_ 'description'}} @@ -99,14 +101,16 @@ template(name="teamGeneral") th {{_ 'active'}} th +newTeamRow - each team in teamList - +teamRow(teamId=team._id) + tbody + tr + each team in teamList + +teamRow(teamId=team._id) template(name="peopleGeneral") #divAddOrRemoveTeamContainer +modifyTeamsUsers table - tbody + thead tr th +selectAllUser @@ -124,6 +128,8 @@ template(name="peopleGeneral") th {{_ 'teams'}} th +newUserRow + tbody + tr each user in peopleList +peopleRow(userId=user._id) diff --git a/client/components/settings/settingBody.css b/client/components/settings/settingBody.css index 11abe1d6d..aceef5186 100644 --- a/client/components/settings/settingBody.css +++ b/client/components/settings/settingBody.css @@ -7,11 +7,13 @@ display: -moz-flex; display: -ms-flexbox; display: flex; + height: 100%; } .setting-content { color: #727479; background: #dedede; width: 100%; + height: 100%; position: absolute; } .setting-content .content-title { @@ -56,6 +58,8 @@ -moz-user-select: text; -ms-user-select: text; user-select: text; + max-height: 100%; + overflow: auto; } .setting-content .content-body .main-body ul li { padding: 0.5rem 0.5rem; diff --git a/client/components/settings/translationBody.jade b/client/components/settings/translationBody.jade index 073207bde..46d41d011 100644 --- a/client/components/settings/translationBody.jade +++ b/client/components/settings/translationBody.jade @@ -34,13 +34,14 @@ template(name="translation") template(name="translationGeneral") table - tbody + thead tr th {{_ 'language'}} th {{_ 'text'}} th {{_ 'translation-text'}} th +newTranslationRow + tbody each translation in translationList +translationRow(translationId=translation._id) diff --git a/client/components/swimlanes/swimlanes.css b/client/components/swimlanes/swimlanes.css index 509aa5525..74c07d7a2 100644 --- a/client/components/swimlanes/swimlanes.css +++ b/client/components/swimlanes/swimlanes.css @@ -157,7 +157,7 @@ color: #4d4d4d !important; } .swimlane-silver { - background: unset !important; + background: #ccc !important; color: #4d4d4d !important; } .swimlane-peachpuff { diff --git a/client/lib/datepicker.js b/client/lib/datepicker.js index 6fe612ec3..f298a752d 100644 --- a/client/lib/datepicker.js +++ b/client/lib/datepicker.js @@ -6,10 +6,11 @@ import moment from 'moment/min/moment-with-locales'; function adjustedTimeFormat() { return moment .localeData() - .longDateFormat('LT') - .replace(/HH/i, 'H'); + .longDateFormat('LT'); } +// .replace(/HH/i, 'H'); + export class DatePicker extends BlazeComponent { template() { return 'datepicker'; diff --git a/docs/wekan.wiki/Install-latest-Wekan-release-on-Uberspace.md b/docs/wekan.wiki/Install-latest-Wekan-release-on-Uberspace.md index 15a4a0c46..4bb27e41a 100644 --- a/docs/wekan.wiki/Install-latest-Wekan-release-on-Uberspace.md +++ b/docs/wekan.wiki/Install-latest-Wekan-release-on-Uberspace.md @@ -12,31 +12,31 @@ **Purpose**: Install latest Wekan release on [Uberspace](https://uberspace.de/) 6 and run as [daemontools](https://cr.yp.to/daemontools/faq/create.html) service in local userspace. -This script installs Wekan on a fresh Uberspace 6. It setup Node 4, MongoDB, a Port, installs Wekan and starts it as a service. It's tested with Wekan versions 0.32 and 0.63. +This script installs Wekan on a fresh Uberspace 6. It setup Node 4, MongoDB, a Port, installs Wekan and starts it as a service. It's tested with Wekan versions 0.32 and 0.63. You have two Options to use it. # Option 1: -You can run the commands of the following script step-by-step in the shell. +You can run the commands of the following script step-by-step in the shell. At first step set the SMTP-Password variable. Replace the `$1` with the password in that way `SMTP_PASS="smtp_password"` and continue line-by-line. # Option 2: Or you can run it automatically. * Save it as script in file `install_wekan.sh` -* Make it executable `chmod +x install_wekan.sh` -* And run it. Pass the SMTP-Password as command line parameter `./install_wekan.sh smtp_password`. +* Make it executable `chmod +x install_wekan.sh` +* And run it. Pass the SMTP-Password as command line parameter `./install_wekan.sh smtp_password`. ## ./install_wekan.sh ``` #!/bin/sh -## +## ## Usage: ./install_wekan.sh SMTP-password ## ## Draft ## Install Wekan (v0.63) on Uberspace 6 by Noodle / Chris -## -## Sources: +## +## Sources: ## https://github.com/wekan/wekan/wiki/Install-and-Update#manual-installation-steps ## https://wiki.uberspace.de/database:mongodb ## https://wiki.uberspace.de/development:nodejs @@ -71,8 +71,8 @@ test -d ~/service || uberspace-setup-svscan TEMPMDB="$(uberspace-setup-mongodb)" MONGO_USER="${USER}_mongoadmin" -MONGO_PORT="$(echo ${TEMPMDB} | egrep -o 'm#:\s[0-9]{5}\sUs' | cut -d' ' -f 2)" -MONGO_PASS="$(echo ${TEMPMDB} | egrep -o 'rd:\s.+\sTo\sconn' | cut -d' ' -f 2)" +MONGO_PORT="$(echo ${TEMPMDB} | grep -E -o 'm#:\s[0-9]{5}\sUs' | cut -d' ' -f 2)" +MONGO_PASS="$(echo ${TEMPMDB} | grep -E -o 'rd:\s.+\sTo\sconn' | cut -d' ' -f 2)" echo -e "MONGO_USER: ${MONGO_USER} \nMONGO_PORT: ${MONGO_PORT} \nMONGO_PASS: ${MONGO_PASS}" @@ -81,7 +81,7 @@ echo -e "MONGO_USER: ${MONGO_USER} \nMONGO_PORT: ${MONGO_PORT} \nMONGO_PASS: ${M ### Setup Websocket Port ### ############################ -export FREE_PORT="$(uberspace-add-port --protocol tcp --firewall | egrep -o '[0-9]{5}')" +export FREE_PORT="$(uberspace-add-port --protocol tcp --firewall | grep -E -o '[0-9]{5}')" echo "FREE_PORT: ${FREE_PORT}" @@ -162,14 +162,14 @@ More about [daemontools](https://cr.yp.to/daemontools/faq/create.html). # Uninstall Wekan To remove Wekan from your uberspace you have to do the following steps. -* Stop and remove the service. +* Stop and remove the service. `uberspace-remove-service -s wekan` -* Remove the complete data. +* Remove the complete data. ``` mongo admin --port $MONGO_PORT -u $MONGO_USER -p $MONGO_PASS use wekan db.dropDatabase() exit ``` -* Remove the installation. -`rm -Rf ~/wekan/ ~/etc/wekan-*` \ No newline at end of file +* Remove the installation. +`rm -Rf ~/wekan/ ~/etc/wekan-*` diff --git a/find-replace.sh b/find-replace.sh index 522affab9..d93a1ba0b 100755 --- a/find-replace.sh +++ b/find-replace.sh @@ -2,4 +2,4 @@ # Recursive find/replace. # Syntax: ./find-replace.sh searchtext replacetext -egrep -lRZ '$1' . | xargs -0 -l sed -i -e 's/$1/$2/g' +grep -E -lRZ '$1' . | xargs -0 -l sed -i -e 's/$1/$2/g' diff --git a/imports/i18n/data/ja.i18n.json b/imports/i18n/data/ja.i18n.json index 339d73c38..3d0b82f49 100644 --- a/imports/i18n/data/ja.i18n.json +++ b/imports/i18n/data/ja.i18n.json @@ -1246,7 +1246,7 @@ "show-checklist-at-minicard": "ミニカードでチェックリストを表示", "show-subtasks-field": "サブタスクフィールドを表示", "convert-to-markdown": "マークダウンに変換", - "import-board-zip": "Add .zip file that has board JSON files, and board name subdirectories with attachments", + "import-board-zip": "ボードJSONファイルを含む zip ファイルと、添付ファイルを含むボード名サブディレクトリを追加する", "collapse": "折りたたむ", - "uncollapse": "Uncollapse" + "uncollapse": "展開" } diff --git a/meta/icons/wekan-128.svg b/meta/icons/wekan-128.svg index d6e1ac5be..29d783ac5 100644 --- a/meta/icons/wekan-128.svg +++ b/meta/icons/wekan-128.svg @@ -1,72 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/meta/icons/wekan-150.svg b/meta/icons/wekan-150.svg index 51d4eedec..634d62f36 100644 --- a/meta/icons/wekan-150.svg +++ b/meta/icons/wekan-150.svg @@ -1,68 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/meta/icons/wekan-24.svg b/meta/icons/wekan-24.svg index d19a65a8e..b1dc1966e 100644 --- a/meta/icons/wekan-24.svg +++ b/meta/icons/wekan-24.svg @@ -1,34 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/meta/screenshots/board_view_01.png b/meta/screenshots/board_view_01.png index 6151a17ba..bd47bb40c 100755 Binary files a/meta/screenshots/board_view_01.png and b/meta/screenshots/board_view_01.png differ diff --git a/meta/screenshots/board_view_02.png b/meta/screenshots/board_view_02.png index 2e745a7ba..ee7d41229 100755 Binary files a/meta/screenshots/board_view_02.png and b/meta/screenshots/board_view_02.png differ diff --git a/models/lists.js b/models/lists.js index 126b7ea1e..c99edf8e7 100644 --- a/models/lists.js +++ b/models/lists.js @@ -146,7 +146,7 @@ Lists.attachSchema( */ type: String, optional: true, - // silver is the default, so it is left out + // silver is the default allowedValues: ALLOWED_COLORS, }, type: { @@ -352,9 +352,6 @@ Lists.mutations({ }, setColor(newColor) { - if (newColor === 'silver') { - newColor = null; - } return { $set: { color: newColor, diff --git a/models/swimlanes.js b/models/swimlanes.js index 1e94b3c97..6a834370d 100644 --- a/models/swimlanes.js +++ b/models/swimlanes.js @@ -70,7 +70,7 @@ Swimlanes.attachSchema( */ type: String, optional: true, - // silver is the default, so it is left out + // silver is the default allowedValues: ALLOWED_COLORS, }, updatedAt: { @@ -308,9 +308,6 @@ Swimlanes.mutations({ }, setColor(newColor) { - if (newColor === 'silver') { - newColor = null; - } return { $set: { color: newColor, diff --git a/package-lock.json b/package-lock.json index 521a7e072..41bda4d7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v7.44.0", + "version": "v7.45.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b36b52db7..2acbc0f1a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v7.44.0", + "version": "v7.45.0", "description": "Open-Source kanban", "private": true, "repository": { diff --git a/packages/meteor-autosize/img/ScreenShot1.png b/packages/meteor-autosize/img/ScreenShot1.png index 637dd0c63..902f25a5e 100644 Binary files a/packages/meteor-autosize/img/ScreenShot1.png and b/packages/meteor-autosize/img/ScreenShot1.png differ diff --git a/packages/meteor-autosize/img/ScreenShot2.png b/packages/meteor-autosize/img/ScreenShot2.png index 818c8a2bf..d2d3ad9e1 100644 Binary files a/packages/meteor-autosize/img/ScreenShot2.png and b/packages/meteor-autosize/img/ScreenShot2.png differ diff --git a/public/Square150x150Logo.scale-100.png b/public/Square150x150Logo.scale-100.png index 0445b50c7..bcddab58a 100644 Binary files a/public/Square150x150Logo.scale-100.png and b/public/Square150x150Logo.scale-100.png differ diff --git a/public/Square44x44Logo.scale-100.png b/public/Square44x44Logo.scale-100.png index bf8cacfee..da57467c8 100644 Binary files a/public/Square44x44Logo.scale-100.png and b/public/Square44x44Logo.scale-100.png differ diff --git a/public/StoreLogo.scale-100.png b/public/StoreLogo.scale-100.png index 5d73037ed..0de8dd974 100644 Binary files a/public/StoreLogo.scale-100.png and b/public/StoreLogo.scale-100.png differ diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png index 7d29824e2..8a72e0ebe 100644 Binary files a/public/android-chrome-192x192.png and b/public/android-chrome-192x192.png differ diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png index 7ecf363ad..8614bfb40 100644 Binary files a/public/android-chrome-512x512.png and b/public/android-chrome-512x512.png differ diff --git a/public/android/android-launchericon-144-144.png b/public/android/android-launchericon-144-144.png index 4f7050c99..6a7a896b8 100644 Binary files a/public/android/android-launchericon-144-144.png and b/public/android/android-launchericon-144-144.png differ diff --git a/public/android/android-launchericon-192-192.png b/public/android/android-launchericon-192-192.png index b6246fb58..a4cdc8eee 100644 Binary files a/public/android/android-launchericon-192-192.png and b/public/android/android-launchericon-192-192.png differ diff --git a/public/android/android-launchericon-48-48.png b/public/android/android-launchericon-48-48.png index 83d50d3a0..ba4207268 100644 Binary files a/public/android/android-launchericon-48-48.png and b/public/android/android-launchericon-48-48.png differ diff --git a/public/android/android-launchericon-512-512.png b/public/android/android-launchericon-512-512.png index 3d8977986..0f69b9976 100644 Binary files a/public/android/android-launchericon-512-512.png and b/public/android/android-launchericon-512-512.png differ diff --git a/public/android/android-launchericon-72-72.png b/public/android/android-launchericon-72-72.png index c8d197893..c62db8504 100644 Binary files a/public/android/android-launchericon-72-72.png and b/public/android/android-launchericon-72-72.png differ diff --git a/public/android/android-launchericon-96-96.png b/public/android/android-launchericon-96-96.png index 9f8d9452c..b17068900 100644 Binary files a/public/android/android-launchericon-96-96.png and b/public/android/android-launchericon-96-96.png differ diff --git a/public/api/wekan.html b/public/api/wekan.html index 2b71f9369..44adb0067 100644 --- a/public/api/wekan.html +++ b/public/api/wekan.html @@ -7,7 +7,7 @@ - Wekan REST API v7.44 + Wekan REST API v7.45 @@ -1548,7 +1548,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc