diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index eedd056f3..6555279c9 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,30 +1,25 @@ -FROM ubuntu:24.04 -LABEL maintainer="wekan" -LABEL org.opencontainers.image.ref.name="ubuntu" -LABEL org.opencontainers.image.version="24.04" -LABEL org.opencontainers.image.source="https://github.com/wekan/wekan" +FROM ubuntu:21.10 +LABEL maintainer="sgr" # 2022-04-25: # - gyp does not yet work with Ubuntu 22.04 ubuntu:rolling, # so changing to 21.10. https://github.com/wekan/wekan/issues/4488 -ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ iproute2 apt-transport-https libarchive-tools" -ENV DEV_DEPS="curl python3 ca-certificates build-essential git" -ARG DEBIAN_FRONTEND=noninteractive +ENV BUILD_DEPS="gnupg gosu libarchive-tools wget curl bzip2 g++ build-essential python3 git ca-certificates iproute2" +ENV DEBIAN_FRONTEND=noninteractive ENV \ DEBUG=false \ - NODE_VERSION=v14.21.4 \ - METEOR_RELEASE=METEOR@2.14 \ + NODE_VERSION=v14.21.3 \ + METEOR_RELEASE=1.10.2 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ - NPM_VERSION=6.14.17 \ + NPM_VERSION=latest \ FIBERS_VERSION=4.0.1 \ ARCHITECTURE=linux-x64 \ SRC_PATH=./ \ WITH_API=true \ RESULTS_PER_PAGE="" \ - DEFAULT_BOARD_ID="" \ ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \ ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \ ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \ @@ -32,14 +27,15 @@ ENV \ ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \ ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \ ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS=90 \ + RICHER_CARD_COMMENT_EDITOR=false \ + CARD_OPENED_WEBHOOK_ENABLED=false \ + ATTACHMENTS_STORE_PATH="" \ ATTACHMENTS_UPLOAD_EXTERNAL_PROGRAM="" \ ATTACHMENTS_UPLOAD_MIME_TYPES="" \ ATTACHMENTS_UPLOAD_MAX_SIZE=0 \ AVATARS_UPLOAD_EXTERNAL_PROGRAM="" \ AVATARS_UPLOAD_MIME_TYPES="" \ AVATARS_UPLOAD_MAX_SIZE=0 \ - RICHER_CARD_COMMENT_EDITOR=false \ - CARD_OPENED_WEBHOOK_ENABLED=false \ MAX_IMAGE_PIXEL="" \ IMAGE_COMPRESS_RATIO="" \ NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \ @@ -51,15 +47,12 @@ ENV \ MATOMO_SITE_ID="" \ MATOMO_DO_NOT_TRACK=true \ MATOMO_WITH_USERNAME=false \ - METRICS_ALLOWED_IP_ADDRESSES="" \ BROWSER_POLICY_ENABLED=true \ TRUSTED_URL="" \ WEBHOOKS_ATTRIBUTES="" \ OAUTH2_ENABLED=false \ - OIDC_REDIRECTION_ENABLED=false \ OAUTH2_CA_CERT="" \ OAUTH2_ADFS_ENABLED=false \ - OAUTH2_B2C_ENABLED=false \ OAUTH2_LOGIN_STYLE=redirect \ OAUTH2_CLIENT_ID="" \ OAUTH2_SECRET="" \ @@ -76,9 +69,6 @@ ENV \ LDAP_ENABLE=false \ LDAP_PORT=389 \ LDAP_HOST="" \ - LDAP_AD_SIMPLE_AUTH="" \ - LDAP_USER_AUTHENTICATION=false \ - LDAP_USER_AUTHENTICATION_FIELD=uid \ LDAP_BASEDN="" \ LDAP_LOGIN_FALLBACK=false \ LDAP_RECONNECT=true \ @@ -96,6 +86,8 @@ ENV \ LDAP_ENCRYPTION=false \ LDAP_CA_CERT="" \ LDAP_REJECT_UNAUTHORIZED=false \ + LDAP_USER_AUTHENTICATION=false \ + LDAP_USER_AUTHENTICATION_FIELD=uid \ LDAP_USER_SEARCH_FILTER="" \ LDAP_USER_SEARCH_SCOPE="" \ LDAP_USER_SEARCH_FIELD="" \ @@ -150,32 +142,65 @@ ENV \ SAML_IDENTIFIER_FORMAT="" \ SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \ SAML_ATTRIBUTES="" \ - ORACLE_OIM_ENABLED=false \ - WAIT_SPINNER="" \ - WRITABLE_PATH=/data \ + DEFAULT_WAIT_SPINNER="" \ S3="" +# \ +# NODE_OPTIONS="--max_old_space_size=4096" -# NODE_OPTIONS="--max_old_space_size=4096" - -#--------------------------------------------- -# == at docker-compose.yml: AUTOLOGIN WITH OIDC/OAUTH2 ==== -# https://github.com/wekan/wekan/wiki/autologin -#- OIDC_REDIRECTION_ENABLED=true #--------------------------------------------------------------------- +# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132 +# Add more Node heap: +# NODE_OPTIONS="--max_old_space_size=4096" +# Add more stack: +# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js" +#--------------------------------------------------------------------- + +# Install OS +RUN set -o xtrace \ + && useradd --user-group -m --system --home-dir /home/wekan wekan \ + && apt-get update \ + && apt-get install --assume-yes --no-install-recommends apt-utils apt-transport-https ca-certificates 2>&1 \ + && apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS} + +# Install NodeJS +RUN set -o xtrace \ + && cd /tmp \ + && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-$ARCHITECTURE.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/SHASUMS256.txt.asc" \ + && grep " node-$NODE_VERSION-$ARCHITECTURE.tar.xz\$" SHASUMS256.txt.asc | sha256sum -c - \ + && tar -xJf "node-$NODE_VERSION-$ARCHITECTURE.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && rm "node-$NODE_VERSION-$ARCHITECTURE.tar.xz" SHASUMS256.txt.asc \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ + && mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp /root/.node-gyp/${NODE_VERSION} /home/wekan/.config \ + && npm install -g npm@${NPM_VERSION} \ + && chown wekan:wekan --recursive /home/wekan/.config + +ENV DEBIAN_FRONTEND=dialog + +USER wekan + +# Install Meteor +RUN set -o xtrace \ + && cd /home/wekan \ + && curl https://install.meteor.com/?release=$METEOR_VERSION --output /home/wekan/install-meteor.sh \ + # Replace tar with bsdtar in the install script; https://github.com/jshimko/meteor-launchpad/issues/39 + && sed --in-place "s/tar -xzf.*/bsdtar -xf \"\$TARBALL_FILE\" -C \"\$INSTALL_TMPDIR\"/g" /home/wekan/install-meteor.sh \ + && sed --in-place 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' /home/wekan/install-meteor.sh \ + && printf "\n[-] Installing Meteor $METEOR_VERSION...\n\n" \ + && sh /home/wekan/install-meteor.sh ENV PATH=$PATH:/home/wekan/.meteor/ -RUN <> /etc/environment -EOR +USER root + +RUN echo "export PATH=$PATH" >> /etc/environment + +USER wekan # Copy source dir -RUN < ### Server Setup Information - -Please anonymize info, and do not any of your Wekan board URLs, passwords, -API tokens etc to this public issue. - + * Did you test in newest Wekan?: * Did you configure root-url correctly so Wekan cards open correctly (see https://github.com/wekan/wekan/wiki/Settings)? * Operating System: @@ -31,25 +23,13 @@ API tokens etc to this public issue. * What webbrowser version are you using (Wekan should work on all modern browsers that support Javascript)? ### Problem description - -Add a recorded animated gif (e.g. with https://github.com/phw/peek) about -how it works currently, and screenshot mockups how it should work. - - + #### Reproduction Steps - - #### Logs + -Check Right Click / Inspect / Console in you browser - generally Chromium -based browsers show more detailed info than Firefox based browsers. - -Please anonymize logs. - + diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..3037f5b4f --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,69 @@ +name: "CodeQL" + +on: + push: + branches: [master] + pull_request: + # The branches below must be a subset of the branches above + branches: [master] + schedule: + - cron: '0 16 * * 3' + +permissions: + contents: read + +jobs: + analyze: + permissions: + actions: read # for github/codeql-action/init to get workflow details + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/autobuild to send a status report + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + # Override automatic language detection by changing the below list + # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] + language: ['javascript', 'python'] + # Learn more... + # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + + # 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/depsreview.yaml b/.github/workflows/depsreview.yaml index b9d6d20ff..da99d0c54 100644 --- a/.github/workflows/depsreview.yaml +++ b/.github/workflows/depsreview.yaml @@ -9,6 +9,6 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: 'Dependency Review' - uses: actions/dependency-review-action@v4 + uses: actions/dependency-review-action@v3 diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 173603b2c..13634199e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -9,11 +9,11 @@ on: schedule: - cron: '28 23 * * *' push: - branches: [ main ] + branches: [ master ] # Publish semver tags as releases. tags: [ 'v*.*.*' ] pull_request: - branches: [ main ] + branches: [ master ] env: # Use docker.io for Docker Hub if empty @@ -32,13 +32,13 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v3 # Login against a Docker registry except on PR # https://github.com/docker/login-action - name: Log into registry ${{ env.REGISTRY }} if: github.event_name != 'pull_request' - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 + uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -48,14 +48,14 @@ jobs: # https://github.com/docker/metadata-action - name: Extract Docker metadata id: meta - uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 + uses: docker/metadata-action@818d4b7b91585d195f67373fd9cb0332e31a7175 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} # Build and push Docker image with Buildx (don't push on PR) # https://github.com/docker/build-push-action - name: Build and push Docker image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 + uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825 with: context: . push: ${{ github.event_name != 'pull_request' }} diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 0a081ae7c..30a2879eb 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -3,7 +3,7 @@ name: Docker Image CI on: push: branches: - - main + - master permissions: contents: read @@ -15,6 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Build the Docker image run: docker build . --file Dockerfile --tag wekan:$(date +%s) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fcdbed26d..1b1e324d6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Release Charts on: push: branches: - - main + - master permissions: contents: read @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 with: fetch-depth: 0 @@ -25,6 +25,6 @@ jobs: git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.7.0 + uses: helm/chart-releaser-action@v1.5.0 env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/test_suite.yml b/.github/workflows/test_suite.yml index a02b3e254..6f496aa5b 100644 --- a/.github/workflows/test_suite.yml +++ b/.github/workflows/test_suite.yml @@ -3,7 +3,7 @@ name: Test suite on: push: branches: - - main + - master pull_request: permissions: @@ -18,7 +18,7 @@ jobs: # runs-on: ubuntu-latest # steps: # - name: checkout -# uses: actions/checkout@v4 +# uses: actions/checkout@v3 # # - name: setup node # uses: actions/setup-node@v1 @@ -42,7 +42,7 @@ jobs: # needs: [lintcode] # steps: # - name: checkout -# uses: actions/checkout@v4 +# uses: actions/checkout@v3 # # - name: setup node # uses: actions/setup-node@v1 @@ -65,7 +65,7 @@ jobs: # needs: [lintcode,lintstyle] # steps: # - name: checkout -# uses: actions/checkout@v4 +# uses: actions/checkout@v3 # # - name: setup node # uses: actions/setup-node@v1 @@ -90,12 +90,12 @@ jobs: # CHECKOUTS - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 # CACHING - name: Install Meteor id: cache-meteor-install - uses: actions/cache@v4 + uses: actions/cache@v3 with: path: ~/.meteor key: v1-meteor-${{ hashFiles('.meteor/versions') }} @@ -104,7 +104,7 @@ jobs: - name: Cache NPM dependencies id: cache-meteor-npm - uses: actions/cache@v4 + uses: actions/cache@v3 with: path: ~/.npm key: v1-npm-${{ hashFiles('package-lock.json') }} @@ -113,7 +113,7 @@ jobs: - name: Cache Meteor build id: cache-meteor-build - uses: actions/cache@v4 + uses: actions/cache@v3 with: path: | .meteor/local/resolver-result-cache.json @@ -125,7 +125,7 @@ jobs: v1-meteor_build_cache- - name: Setup meteor - uses: meteorengineer/setup-meteor@v2 + uses: meteorengineer/setup-meteor@v1 with: meteor-release: '2.2' @@ -136,7 +136,7 @@ jobs: run: sh ./test-wekan.sh -cv - name: Upload coverage - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: coverage-folder path: .coverage/ @@ -147,17 +147,17 @@ jobs: needs: [tests] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: Download coverage - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v3 with: name: coverage-folder path: .coverage/ - name: Coverage Report - uses: VeryGoodOpenSource/very_good_coverage@v3.0.0 + uses: VeryGoodOpenSource/very_good_coverage@v2.1.0 with: path: ".coverage/lcov.info" min_coverage: 1 # TODO add tests and increase to 95! diff --git a/.meteor/packages b/.meteor/packages index 95e40c00c..e17368e31 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -6,7 +6,7 @@ meteor-base@1.5.1 # Build system -ecmascript@0.16.8 +ecmascript@0.16.7 standard-minifier-js@2.8.1 mquandalle:jade coffeescript@2.4.1! @@ -16,15 +16,16 @@ es5-shim@4.8.0 # Collections aldeed:collection2 +cfs:standard-packages cottz:publish-relations dburles:collection-helpers idmontie:migrations easy:search -mongo@1.16.8 +mongo@1.16.6 mquandalle:collection-mutations # Account system -accounts-password@2.4.0 +accounts-password@2.3.4 useraccounts:core useraccounts:flow-routing useraccounts:unstyled @@ -42,7 +43,7 @@ jquery@3.0.0! random@1.2.1 reactive-dict@1.3.1 session@1.2.1 -tracker@1.3.3 +tracker@1.3.2 underscore@1.0.13 arillo:flow-router-helpers audit-argument-checks@1.0.7 @@ -52,12 +53,10 @@ ongoworks:speakingurl raix:handlebar-helpers http@2.0.0! # force new http package -# Datepicker -wekan-bootstrap-datepicker - # UI components ostrio:i18n reactive-var@1.0.12 +fortawesome:fontawesome mousetrap:mousetrap mquandalle:jquery-textcomplete mquandalle:mousetrap-bindglobal @@ -66,6 +65,8 @@ meteor-autosize shell-server@0.5.0 email@2.2.5 dynamic-import@0.7.3 +cfs:gridfs +rzymek:fullcalendar msavin:usercache # Keep stylus in 1.1.0, because building v2 takes extra 52 minutes. meteorhacks:subs-manager @@ -73,6 +74,7 @@ meteorhacks:aggregate@1.3.0 wekan-markdown konecty:mongo-counter percolate:synced-cron +cfs:filesystem ostrio:cookies ostrio:files@2.3.0 pascoual:pdfkit @@ -83,14 +85,9 @@ matb33:collection-hooks simple:json-routes kadira:flow-router spacebars -service-configuration@1.3.2 +service-configuration@1.3.1 communitypackages:picker minifier-css@1.6.4 blaze kadira:blaze-layout peerlibrary:blaze-components -ejson@1.1.3 -logging@1.3.3 -wekan-fullcalendar -momentjs:moment@2.29.3 -wekan-fontawesome diff --git a/.meteor/release b/.meteor/release index c500c39d6..e8cfc7ec4 100644 --- a/.meteor/release +++ b/.meteor/release @@ -1 +1 @@ -METEOR@2.14 +METEOR@2.12 diff --git a/.meteor/versions b/.meteor/versions index fbf430721..148481944 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,6 +1,6 @@ -accounts-base@2.2.10 -accounts-oauth@1.4.3 -accounts-password@2.4.0 +accounts-base@2.2.8 +accounts-oauth@1.4.2 +accounts-password@2.3.4 aldeed:collection2@2.10.0 aldeed:collection2-core@1.2.0 aldeed:schema-deny@1.1.0 @@ -10,16 +10,34 @@ allow-deny@1.1.1 arillo:flow-router-helpers@0.5.2 audit-argument-checks@1.0.7 autoupdate@1.8.0 -babel-compiler@7.10.5 +babel-compiler@7.10.4 babel-runtime@1.5.1 base64@1.0.12 binary-heap@1.0.11 blaze@2.7.1 blaze-tools@1.1.3 -boilerplate-generator@1.7.2 +boilerplate-generator@1.7.1 caching-compiler@1.2.2 caching-html-compiler@1.2.1 callback-hook@1.5.1 +cfs:access-point@0.1.49 +cfs:base-package@0.0.30 +cfs:collection@0.5.5 +cfs:collection-filters@0.2.4 +cfs:data-man@0.0.6 +cfs:file@0.1.17 +cfs:filesystem@0.1.2 +cfs:gridfs@0.0.34 +cfs:http-methods@0.0.32 +cfs:http-publish@0.0.13 +cfs:power-queue@0.9.11 +cfs:reactive-list@0.0.9 +cfs:reactive-property@0.0.4 +cfs:standard-packages@0.5.10 +cfs:storage-adapter@0.2.4 +cfs:tempstore@0.1.6 +cfs:upload-http@0.0.20 +cfs:worker@0.1.5 check@1.3.2 coffeescript@2.7.0 coffeescript-compiler@2.4.1 @@ -29,22 +47,23 @@ dburles:collection-helpers@1.1.0 ddp@1.4.1 ddp-client@2.6.1 ddp-common@1.4.0 -ddp-rate-limiter@1.2.1 -ddp-server@2.7.0 +ddp-rate-limiter@1.2.0 +ddp-server@2.6.1 deps@1.0.12 diff-sequence@1.1.2 dynamic-import@0.7.3 easy:search@2.2.1 easysearch:components@2.2.2 easysearch:core@2.2.2 -ecmascript@0.16.8 +ecmascript@0.16.7 ecmascript-runtime@0.8.1 ecmascript-runtime-client@0.12.1 ecmascript-runtime-server@0.11.0 ejson@1.1.3 email@2.2.5 es5-shim@4.8.0 -fetch@0.1.4 +fetch@0.1.3 +fortawesome:fontawesome@4.7.0 geojson-utils@1.0.11 hot-code-push@1.0.4 html-tools@1.1.3 @@ -58,12 +77,13 @@ kadira:blaze-layout@2.3.0 kadira:dochead@1.5.0 kadira:flow-router@2.12.1 konecty:mongo-counter@0.0.5_3 +livedata@1.0.18 lmieulet:meteor-coverage@1.1.4 localstorage@1.2.0 -logging@1.3.3 -matb33:collection-hooks@1.3.0 +logging@1.3.2 +matb33:collection-hooks@1.2.2 mdg:validation-error@0.5.1 -meteor@1.11.5 +meteor@1.11.2 meteor-autosize@5.0.1 meteor-base@1.5.1 meteorhacks:aggregate@1.3.0 @@ -77,11 +97,11 @@ minifier-css@1.6.4 minifier-js@2.7.5 minifiers@1.1.8-faster-rebuild.0 minimongo@1.9.3 -modern-browsers@0.1.10 -modules@0.20.0 +modern-browsers@0.1.9 +modules@0.19.0 modules-runtime@0.13.1 momentjs:moment@2.29.3 -mongo@1.16.8 +mongo@1.16.6 mongo-decimal@0.1.3 mongo-dev-server@1.1.0 mongo-id@1.0.8 @@ -94,8 +114,8 @@ mquandalle:jade-compiler@0.4.5 mquandalle:jquery-textcomplete@0.8.0_1 mquandalle:mousetrap-bindglobal@0.0.1 msavin:usercache@1.8.0 -npm-mongo@4.17.2 -oauth@2.2.1 +npm-mongo@4.16.0 +oauth@2.2.0 oauth2@1.3.2 observe-sequence@1.0.21 ongoworks:speakingurl@1.1.0 @@ -111,19 +131,20 @@ peerlibrary:blaze-components@0.23.0 peerlibrary:computed-field@0.10.0 peerlibrary:data-lookup@0.3.0 peerlibrary:reactive-field@0.6.0 -percolate:synced-cron@1.5.2 +percolate:synced-cron@1.3.2 promise@0.12.2 raix:eventemitter@0.1.3 raix:handlebar-helpers@0.2.5 random@1.2.1 rate-limit@1.1.1 -react-fast-refresh@0.2.8 +react-fast-refresh@0.2.7 reactive-dict@1.3.1 reactive-var@1.0.12 reload@1.3.1 retry@1.1.0 routepolicy@1.1.1 -service-configuration@1.3.3 +rzymek:fullcalendar@3.8.0 +service-configuration@1.3.1 session@1.2.1 sha@1.0.9 shell-server@0.5.0 @@ -132,7 +153,7 @@ simple:json-routes@2.3.1 simple:rest-accounts-password@1.2.2 simple:rest-bearer-token-parser@1.1.1 simple:rest-json-error-handler@1.1.1 -socket-stream-client@0.5.2 +socket-stream-client@0.5.1 spacebars@1.4.1 spacebars-compiler@1.3.1 standard-minifier-js@2.8.1 @@ -141,26 +162,22 @@ templating@1.4.1 templating-compiler@1.4.1 templating-runtime@1.5.0 templating-tools@1.2.2 -tracker@1.3.3 -typescript@4.9.5 +tracker@1.3.2 ui@1.0.13 underscore@1.0.13 url@1.3.2 useraccounts:core@1.16.2 useraccounts:flow-routing@1.15.0 useraccounts:unstyled@1.14.2 -webapp@1.13.6 +webapp@1.13.5 webapp-hashing@1.1.1 wekan-accounts-cas@0.1.0 wekan-accounts-lockout@1.0.0 wekan-accounts-oidc@1.0.10 wekan-accounts-sandstorm@0.8.0 -wekan-bootstrap-datepicker@1.10.0 -wekan-fontawesome@6.4.2 -wekan-fullcalendar@3.10.5 wekan-ldap@0.0.2 wekan-markdown@1.0.9 wekan-oidc@1.0.12 yasaricli:slugify@0.0.7 zimme:active-route@2.3.2 -zodern:types@1.0.10 +zodern:types@1.0.9 diff --git a/.tx/config b/.tx/config index 7745b5608..261af1170 100644 --- a/.tx/config +++ b/.tx/config @@ -1,6 +1,6 @@ [main] host = https://www.transifex.com -lang_map = te_IN: te-IN, es_AR: es-AR, es_419: es-LA, es_TX: es-TX, he_IL: he-IL, zh_CN: zh-CN, ar_EG: ar-EG, cs_CZ: cs-CZ, fa_IR: fa-IR, ms_MY: ms-MY, nl_NL: nl-NL, de_CH: de-CH, en_IT: en-IT, uz_UZ: uz-UZ, fr_CH: fr-CH, hi_IN: hi-IN, et_EE: et-EE, es_PE: es-PE, es_MX: es-MX, gl_ES: gl-ES, mn_MN: mn, sl_SI: sl, zh_TW: zh-TW, ast_ES: ast-ES, es_CL: es-CL, ja_JP: ja, lv_LV: lv, ro_RO: ro-RO, az_AZ: az-AZ, cy_GB: cy-GB, gu_IN: gu-IN, pl_PL: pl-PL, vep: ve-PP, en_BR: en-BR, en@ysv: en-YS, hu_HU: hu, ko_KR: ko-KR, pt_BR: pt-BR, zh_HK: zh-HK, zu_ZA: zu-ZA, en_MY: en-MY, ja-Hira: ja-HI, fi_FI: fi, vec: ve-CC, vi_VN: vi-VN, fr_FR: fr-FR, id_ID: id, zh_Hans: zh-Hans, en_DE: en-DE, en_GB: en-GB, el_GR: el-GR, uk_UA: uk-UA, az@latin: az-LA, de_AT: de-AT, uz@Latn: uz-LA, vls: vl-SS, ar_DZ: ar-DZ, bg_BG: bg, es_PY: es-PY, fy_NL: fy-NL, uz@Arab: uz-AR, ru_UA: ru-UA, war: wa-RR, zh_CN.GB2312: zh-GB +lang_map = es_AR: es-AR, es_419: es-LA, es_TX: es-TX, he_IL: he-IL, zh_CN: zh-CN, ar_EG: ar-EG, cs_CZ: cs-CZ, fa_IR: fa-IR, ms_MY: ms-MY, nl_NL: nl-NL, de_CH: de-CH, en_IT: en-IT, uz_UZ: uz-UZ, fr_CH: fr-CH, hi_IN: hi-IN, et_EE: et-EE, es_PE: es-PE, es_MX: es-MX, gl_ES: gl-ES, mn_MN: mn, sl_SI: sl, zh_TW: zh-TW, ast_ES: ast-ES, es_CL: es-CL, ja_JP: ja, lv_LV: lv, ro_RO: ro-RO, az_AZ: az-AZ, cy_GB: cy-GB, gu_IN: gu-IN, pl_PL: pl-PL, vep: ve-PP, en_BR: en-BR, en@ysv: en-YS, hu_HU: hu, ko_KR: ko-KR, pt_BR: pt-BR, zh_HK: zh-HK, zu_ZA: zu-ZA, en_MY: en-MY, ja-Hira: ja-HI, fi_FI: fi, vec: ve-CC, vi_VN: vi-VN, fr_FR: fr-FR, id_ID: id, zh_Hans: zh-Hans, en_DE: en-DE, en_GB: en-GB, el_GR: el-GR, uk_UA: uk-UA, az@latin: az-LA, de_AT: de-AT, uz@Latn: uz-LA, vls: vl-SS, ar_DZ: ar-DZ, bg_BG: bg, es_PY: es-PY, fy_NL: fy-NL, uz@Arab: uz-AR, ru_UA: ru-UA, war: wa-RR, zh_CN.GB2312: zh-GB [o:wekan:p:wekan:r:application] file_filter = imports/i18n/data/.i18n.json diff --git a/.vscode/launch.json b/.vscode/launch.json index 5cdd3f3ef..1cb8d89fa 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,57 +1,45 @@ { "version": "0.2.0", "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Meteor: Node", - "runtimeExecutable": "meteor", - "runtimeArgs": [ - "--port=4000", - "--exclude-archs=web.browser.legacy,web.cordova", - "--raw-logs" - ], - "env": { - "WRITABLE_PATH": "/tmp/uploads", + { + "type": "chrome", + "request": "launch", + "name": "Meteor: Chrome", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}" }, - "outputCapture": "std", - "restart": true, - "timeout": 60000 - }, - { - "type": "chrome", - "request": "launch", - "name": "Meteor: Chrome", - "url": "http://localhost:4000", - "sourceMapPathOverrides": { - "meteor://💻app/*": "${workspaceFolder}/*" + { + "type": "node", + "request": "launch", + "name": "Meteor: Node", + "runtimeExecutable": "/home/wekan/.meteor/meteor", + "runtimeArgs": ["run", "--inspect-brk=9229"], + "outputCapture": "std", + "port": 9229, + "timeout": 60000 }, - "userDataDir": "${env:HOME}/.vscode/chrome" - }, - { - "type": "node", - "request": "launch", - "name": "Test: Node", - "runtimeExecutable": "meteor", - "runtimeArgs": [ - "test", - "--port=4040", - "--exclude-archs=web.browser.legacy,web.cordova", - "--driver-package=meteortesting:mocha", - "--settings=settings.json", - "--raw-logs" - ], - "env": { - "TEST_WATCH": "1" - }, - "outputCapture": "std", - "timeout": 60000 - } + { + "type": "node", + "request": "launch", + "name": "Test: Node", + "runtimeExecutable": "meteor", + "runtimeArgs": [ + "test", + "--inspect-brk=9229", + "--port=4040", + "--exclude-archs=web.browser.legacy,web.cordova", + "--driver-package=meteortesting:mocha", + "--settings=settings.json" + ], + "outputCapture": "std", + "port": 9229, + "timeout": 60000 + } ], "compounds": [ - { - "name": "Meteor: All", - "configurations": ["Meteor: Node", "Meteor: Chrome"] - } + { + "name": "Meteor: All", + "configurations": ["Meteor: Node", "Meteor: Chrome"] + } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 495be0185..148212677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1824 +1,31 @@ [Mac ChangeLog](https://github.com/wekan/wekan/wiki/Mac) -Newest WeKan at these amd64 platforms: +Required versions of Node.js, MongoDB etc are listed at https://wekan.github.io +Download section. -- Windows and Linux bundle -- Snap Candidate -- Docker -- Kubernetes +Newest WeKan is on platforms: Snap Candidate, Docker, Kubernetes, Source/Bundle. Download section at https://wekan.github.io -Fixing other platforms In Progress. +In Progress is: +- Getting newest WeKan to all platforms, fixing any migration and upgrade issues +- Adding more platforms +- Developing all paid features and fixes https://wekan.team/commercial-support/ +- More info and news at https://github.com/wekan/wekan/issues/4578#issuecomment-1505909376 -- Install info at Server part of webpage https://wekan.github.io -- Newest Node.js is at https://github.com/wekan/node-v14-esm/releases/tag/v14.21.4 -- MongoDB 6.x +Note: +- Snap Candidate has newest WeKan with MongoDB 6 https://github.com/wekan/wekan/issues/4824#issuecomment-1425753485 +- Snap Beta has old WeKan with MongoDB 5 https://github.com/wekan/wekan/issues/4780#issuecomment-1427625571 +- Snap Stable has old WeKan 6.09 with MongoDB 3.2.2 [How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585) -# Upcoming WeKan ® release +# Upcoming v7.00 WeKan ® release -This release adds the following updates: - -- Updated Browser compatibility matrix, adding Iris browser at RISC OS Direct, and fixing links. - [Part1](https://github.com/wekan/wekan/commit/db5346fc5c7407160f381c0fcf4a87204206ed55), - [Part2](https://github.com/wekan/wekan/commit/05d1736f5f21e93e83b2e25029c6cab6c5106398). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.84 2025-03-23 WeKan ® release +This version number and and some before it is reserved for upcoming PR from mfilser. This release adds the following new features: -- [Time on minicard for Start/End/Due Date](https://github.com/wekan/wekan/pull/5712). - Thanks to Rayene123. - -and adds the following updates: - -- [Added developer docs about Login code](https://github.com/wekan/wekan/commit/c0e4e01deb936653df69b4fd21598ac27cd349a0). - Thanks to xet7. -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5718), - [Part 2](https://github.com/wekan/wekan/commit/bb6ac70f63b6f3568b7c943417c698615936a956). - Thanks to developers of dependencies. - -and fixes the following bugs: - -- [Fixed typo at Shortcuts, now became visible translations of assignees visibility 1-9 shortcuts](https://github.com/wekan/wekan/commit/4510ddda1507bc775b9523d3673adba48d7a8385). - Thanks to xet7. -- [Fixed building OpenAPI docs](https://github.com/wekan/wekan/commit/a2911bc9c3bd94ef583388931d2cd354cc8657e3). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.83 2025-03-08 WeKan ® release - -This release adds the following updates: - -- [Adding Development information to readme](https://github.com/wekan/wekan/pull/5702). - Thanks to adam-fu. -- Updated GitHub actions. - [Part 1](https://github.com/wekan/wekan/pull/5703), - [Part 2](https://github.com/wekan/wekan/pull/5704). - -and fixes the following bugs: - -- [Removed siteurl from manifest to fix browser console error about not matching URL](https://github.com/wekan/wekan/commit/b402676079517e463ed291285f69c04126a00975). - Thanks to xet7. -- [Exception while invoking method 'copyCard' TypeError: Cannot read property 'name' of undefined](https://github.com/wekan/wekan/pull/5711). - Thanks to Firas-Git. -- [Comment out error message of non-existing Custom Field](https://github.com/wekan/wekan/commit/908a5fc60d5d574a36d4bfd496d3a16fd267ae75). - Thanks to xet7. -- [Reverted Docker changes of WeKan v7.68 to get WeKan Docker version working](https://github.com/wekan/wekan/commit/e7462ada12ec8edfd08d6c3b3a97a034211d51eb). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.82 2025-02-24 WeKan ® release - -v7.82 Docker version is broken: https://github.com/wekan/wekan/issues/5697 . Snap Candidate works. - -This release adds the following new features: - -- [Add possibility to use a token in place of ipaddress to access metrics route](https://github.com/wekan/wekan/pull/5682). - Thanks to salleman33. - -and adds the following updates: - -- [Updated dependencies](https://github.com/wekan/wekan/pull/5691). - Thanks to dependabot. -- [Updated requirements at docs](https://github.com/wekan/wekan/commit/148b81262d0d143460e881d645fefa6740aae40d). - Thanks to mueller-ma. -- [Updated dependencies](https://github.com/wekan/wekan/commit/666ee8403388f7d5e1a30cf0e53bc46a70bf1c40). - Thanks to developes of dependencies. -- [Fixed building WeKan. Updated dompurify. Forked Meteor 2.14 version of meteor-node-stubs to update elliptic](https://github.com/wekan/wekan/commit/18d0fa43275cd2955dd6416213e316ca08a62255). - Thanks to developers of depedencies and xet7. - -and fixes the following bugs: - -- [Added missing ) character](https://github.com/wekan/wekan/commit/563a508e269be87eb713e2888409525e1ba82001). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.81 2025-02-07 WeKan ® release - -This release adds the following new features: - -- [Helm Chart: Added secretManaged value for enabling or disabling the creation of secret by Helm](https://github.com/wekan/charts/pull/39). - Thanks to salleman33. - -and adds the following updates: - -- [Updated Docker Actions](https://github.com/wekan/wekan/pull/5670). - Thanks to dependabot. -- [Added Meteor 3.1 learning course to docs](https://github.com/wekan/wekan/commit/0c7e12c5e7f322bdbaaa61100e66153dd0b92e4d). - Thanks to producer of learning course. -- [Upgraded to MongoDB 6.0.20 at Snap Candidate](https://github.com/wekan/wekan/commit/b571f1c9530b899db75bf28a03c18277a9b77cb8). - Thanks to MongoDB developers. - -and fixes the following bugs: - -- [Fixed env variable METRICS_ACCEPTED_IP_ADDRESS to be same as at docs](https://github.com/wekan/wekan/commit/0b1e0bd39569175668c195b63dde91bf0e6f1b24). - Thanks to salleman33. -- [Fixed misspelling of hours at env variable setting LDAP_BACKGROUND_SYNC_INTERVAL](https://github.com/wekan/wekan/commit/36a307785369337a788499065f64175971878930). - Thanks to hubermam. -- [Helm Chart: Restore pod security context in deployment](https://github.com/wekan/charts/pull/40). - Thanks to adalinesimonian. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.80 2025-01-12 WeKan ® release - -This release fixes the following bugs: - -- [Fix card updating issues with ReactiveCache when using keyboard shortcuts](https://github.com/wekan/wekan/pull/5654). - Thanks to NadavTasher. -- [Fix assignee toggling keyboard shortcut to only toggle current board members](https://github.com/wekan/wekan/pull/5655). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.79 2025-01-02 WeKan ® release - -This release adds the following new features: - -- [Add toggle for week-of-year in date displays (ISO 8601)](https://github.com/wekan/wekan/pull/5652). - Thanks to NadavTasher. -- [Assign members using keyboard shortcut Ctrl+Alt+(1-9)](https://github.com/wekan/wekan/pull/5653). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.78 2024-12-31 WeKan ® release - -This release fixes the following bugs: - -- [Disable scrollbars on older versions of Chrome and Safari in "no vertical scrollbars" mode](https://github.com/wekan/wekan/pull/5644). - Thanks to NadavTasher. -- [Fix styling for vertical scrollbars toggle](https://github.com/wekan/wekan/pull/5645). - Thanks to NadavTasher. -- [Add additional archiving keyboard shortcut (added -)](https://github.com/wekan/wekan/pull/5646). - Thanks to NadavTasher. -- [Fix assign-self shortcut in shortcut help popup (different from actual shortcut)](https://github.com/wekan/wekan/pull/5647). - Thanks to NadavTasher. -- [Fix upper-case keyboard shortcuts & different language shortcuts getting triggered when shortcuts are disabled](https://github.com/wekan/wekan/pull/5648). - Thanks to NadavTasher. -- [Fix list header too wide in cleanlight and cleandark themes](https://github.com/wekan/wekan/pull/5649). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.77 2024-12-30 WeKan ® release - -This release adds the following new features: - -- [Allow vertical scrollbars to be disabled (new preference)](https://github.com/wekan/wekan/pull/5643). - Thanks to NadavTasher. - -and fixes the following bugs: - -- [Enable keyboard shortcuts by default](https://github.com/wekan/wekan/pull/5639). - Thanks to NadavTasher. -- [Fix comment backgrounds in cleandark theme](https://github.com/wekan/wekan/pull/5640). - Thanks to NadavTasher. -- [Fix weird add checklist buttons in card details](https://github.com/wekan/wekan/pull/5641). - Thanks to NadavTasher. -- [Fix "SPACE" shortcut not working after recent fixes](https://github.com/wekan/wekan/pull/5642). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.76 2024-12-30 WeKan ® release - -This release fixes the following bugs: - -- [Always handle the escape key when shortcuts are enabled](https://github.com/wekan/wekan/pull/5636). - Thanks to NadavTasher. -- [New Swimlane button visible, when there are no swimlanes at all](https://github.com/wekan/wekan/pull/5635). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.75 2024-12-29 WeKan ® release - -This release fixes the following bugs: - -- [Change margins around keyboard shortcuts toggle to make it clearer, remove old toggle from mobile view](https://github.com/wekan/wekan/pull/5634). - Thanks to NadavTasher. -- [Fix Cannot save Layout settings](https://github.com/wekan/wekan/commit/407d018067a5398f0c8d50519096b921d744be68). - Thanks to tensor5g and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.74 2024-12-25 WeKan ® release - -This release fixes the following bugs: - -- [Restore keyboard shortcuts, enable per-user toggle, fix Ctrl + C bug by checking the text selection range](https://github.com/wekan/wekan/pull/5628). - Thanks to NadavTasher. -- [Fixed keyboard shortcuts defaults, icons and texts to be more understandable](https://github.com/wekan/wekan/commit/955a46ca6016e75c0ac1b01e25f96f47c2844559). - Thanks to xet7. -- ["Auto List Width" is now at "List ☰ Set Width" popup](https://github.com/wekan/wekan/commit/a862486ec37fcd022619c7e45ad9ca615aa444ed). - Thanks to xet7. -- [Keyboard Shortcuts Enable/Disable is now at Right Sidebar, where already was list of Keyboard Shortcuts](https://github.com/wekan/wekan/commit/275ac445d0cd6f817dd2281aacc27ca7d30b17eb). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.73 2024-12-24 WeKan ® release - -This release adds the following updates: - -- [Changed the default maximum list width](https://github.com/wekan/wekan/pull/5614). - Thanks to NadavTasher. -- [Updated Developer Docs about docker compose](https://github.com/wekan/wekan/commit/3e3b629aa2a9efb43b1be8f57009c1d384b66ed8). - Thanks to sridharin2020 and xet7. -- [Hide support popup. It will be made editable later](https://github.com/wekan/wekan/commit/0332ef32980b24a0c4e108436eec5b112287c14b). - Thanks to xet7. -- [Hide Accessibility Settings at Admin Panel. It will be continued and added back later](https://github.com/wekan/wekan/commit/e70c51a1f033c8712771238e408cbf52487f07f5). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix buggy behaviours in board dragscrolling](https://github.com/wekan/wekan/pull/5618). - Thanks to NadavTasher. -- [Revert back to have shortcut "c to archive" back for non-Persian keyboards](https://github.com/wekan/wekan/commit/ba0fdaef72393632ca80b42a3c5d2ee5f5e0c76e). - Thanks to hatl and xet7. -- Hide and disable Keyboard Shortcuts, because they make using Ctrl-C to copy etc impossible. - [Part 1](https://github.com/wekan/wekan/commit/5606414f8975fa0f75642d2e3a6b48c7559186f9), - [Part 2](https://github.com/wekan/wekan/commit/94391d4cde7aed6e37efc6a9127b23ef0c2bd323), - [Part 3](https://github.com/wekan/wekan/commit/8b73c702c39a1fd546e591a096d703a53577ffec). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.72 2024-12-08 WeKan ® release - -This release adds the following new features: - -- [Optional board list auto-width, Support for min & max width for lists](https://github.com/wekan/wekan/pull/5607). - Thanks to NadavTasher. - -and adds the following updates: - -- [Disabled syncing of old and unrelated docker containers between docker registries](https://github.com/wekan/wekan/commit/17d5fae7bbd96eb6721ad869802cc980c9791c7f). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix in API user role is not considered](https://github.com/wekan/wekan/commit/c062bd63bbfceb3a96f23ea3e8696534694db54e). - Thanks to mohammadZahedian and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.71 2024-12-05 WeKan ® release - -This release adds the following new features: - -- [To menu right top username, added Support, to have info about from where to get support](https://github.com/wekan/wekan/commit/46327f19a1c6d37f2e5591aa0cc2a882e4c56ee5). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.70 2024-12-04 WeKan ® release - -This release adds the following new features: - -- [Helm Chart: Allow to define securityContext for pod and containers](https://github.com/wekan/charts/pull/37). - Thanks to maitredede. -- [Move card to archive, add shortcut key ÷ for Persian keyboard](https://github.com/wekan/wekan/commit/80ea1782f935c74f1b7b1fd0fb7700ef9a39dc64). - Thanks to mohammadZahedian and xet7. - -and fixes the following bugs: - -- [Helm Chart: Service account token does not need to be mounted in op](https://github.com/wekan/charts/pull/38). - Thanks to maitredede. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.69 2024-12-02 WeKan ® release - -This release adds the following updates: - -- [Bump docker/metadata-action from 5.5.1 to 5.6.1](https://github.com/wekan/wekan/pull/5590). - Thanks to dependabot. -- [Updated dependencies](https://github.com/wekan/wekan/commit/9c87572f90f16fbdddb6a4dff3984e64acac20cc). - Thanks to developers of dependencies. -- [Updated Windows docs](https://github.com/wekan/wekan/commit/aa33ead7b2efd11bfd9e3f1fb94b564b6bdce119). - Thanks to xet7. -- [Update docker-compose.yml Keycloak part](https://github.com/wekan/wekan/pull/5597). - Thanks to NadavTasher. -- [Updated Keycloak etc login settings at start-wekan.bat and start-wekan.sh](https://github.com/wekan/wekan/commit/ab4c3bd2fc49e6fa82ec47dccdf9670110cddf98). - Thanks to xet7. -- [Updated release scripts](https://github.com/wekan/wekan/commit/79f7ec27159825db9206f385d9281fd68a2aacf5). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix issue with comments not showing when using Exodark Theme](https://github.com/wekan/wekan/pull/5595). - Thanks to walster001. -- [Change archive-card shortcut to backtick for better ergonomics](https://github.com/wekan/wekan/pull/5589). - Thanks to malteprang. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.68 2024-11-24 WeKan ® release - -This release adds the following updates: - -- [Speed improvements to building WeKan x86_64 Dockerfile. Reduced Docker image size from 1 GB to 0.5 GB. Using Ubuntu 24.04 Docker base image](https://github.com/wekan/wekan/pull/5588). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.67 2024-11-21 WeKan ® release - -This release adds the following new features: - -- [Re-introduce list auto-width feature, Reverted scrollbar hiding, Fixed transparent sidebar bug](https://github.com/wekan/wekan/pull/5586). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.65 2024-11-20 WeKan ® release - -This release fixes the following bugs: - -- [Revert some scrollbar, sidebar and list width changes](https://github.com/wekan/wekan/commit/096fe130f68e0d8d082d309901c75ed04285b7e2). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.64 2024-11-20 WeKan ® release - -This release fixes the following bugs: - -- [Add missing semicolon in keyboard.js](https://github.com/wekan/wekan/pull/5580). - Thanks to NadavTasher. -- [Make lists fill up space evenly, change listWidth to max-width](https://github.com/wekan/wekan/pull/5581). - Thanks to NadavTasher. -- [Change way of disabling scrollbars, disable swimlane scrollbars](https://github.com/wekan/wekan/pull/5583). - Thanks to NadavTasher. -- [Improve list auto-width, fix regressions](https://github.com/wekan/wekan/pull/5584). - Thanks to NadavTasher. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.63 2024-11-16 WeKan ® release - -This release adds the following new features: - -- [Always close sidebar when user clicks ESC](https://github.com/wekan/wekan/pull/5571). - Thanks to NadavTasher. -- [Added 'n' shortcut for adding new minicards to current list](https://github.com/wekan/wekan/pull/5570). - Thanks to NadavTasher. -- [Patch to allow shortcuts to work when another keyboard layout is used](https://github.com/wekan/wekan/pull/5574). - Thanks to NadavTasher. - -and adds the following updates: - -- [Updated scaling docs](https://github.com/wekan/wekan/commit/92af6f71d9c60acbca8f65c7ec1822818186639c). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix some text alignment issues when using RTL languages](https://github.com/wekan/wekan/pull/5572). - Thanks to NadavTasher. -- [Hide scrollbars where they interrupt](https://github.com/wekan/wekan/pull/5573). - Thanks to NadavTasher. -- [Disable sidebar showing when filtering using keyboard shortcut](https://github.com/wekan/wekan/pull/5575). - Thanks to NadavTasher. -- [Change move-to-archive keyboard shortcut to '-', because of Ctrl + C shortcut](https://github.com/wekan/wekan/pull/5576). - Thanks to NadavTasher. -- [Potential bug(fix?) - Add assign-self keyboard shortcut (old shortcut actually adds)](https://github.com/wekan/wekan/pull/5577). - Thanks to NadavTasher. -- [Sidebar style overhaul - absolute positioning, weird style fixes, disable sidebar scrollbar](https://github.com/wekan/wekan/pull/5578). - Thanks to NadavTasher. -- [Revert adding more stack size](https://github.com/wekan/wekan/commit/edb73982953d63066494dbc096bdeb62f7fe730b). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.62 2024-11-15 WeKan ® release - -This release adds the following new features: - -- [Added comment section on card details to avoid loading the card comment activities from the server](https://github.com/wekan/wekan/pull/5566). +- Speed improvements to Board and List loading. Thanks to mfilser. -- [Checklist items hide per card](https://github.com/wekan/wekan/pull/5567). - Thanks to mfilser. -- [Checklist multiline insert (many checklist items at once)](https://github.com/wekan/wekan/pull/5568). - Thanks to mfilser. -- [Each checklist can now be configured to hide checked checklist items](https://github.com/wekan/wekan/pull/5569). - Thanks to mfilser. - -and adds the following updates: - -- [Copied updated Docs from wiki to WeKan repo](https://github.com/wekan/wekan/commit/559251eb0d8aea6a714f14224497d0a25c7a3864). - Thanks to xet7. -- [Updated docs about Linked Cards](https://github.com/wekan/wekan/commit/96627540da0b6e12890ee1660f4ff0f469bb0e25). - Thanks to xet7. -- [Add docs about how at LXC/LXD Fix: System does not fully support snapd](https://github.com/wekan/wekan/commit/508bbb37ce960c88c2a7d0b2cb35e5d8790df19f). - Thanks to xet7. -- [Copied from Sandstorm developer discussions to docs fix for running Sandstorm at Ubuntu 24.04](https://github.com/wekan/wekan/commit/8ac9353c5313402e00160843ca57405ebeb128cb). - Thanks to xet7. -- [Update ldap-sync.py reference](https://github.com/wekan/wekan/pull/5555). - Thanks to emmanuel-ferdman. -- [Updated dependencies](https://github.com/wekan/wekan/commit/b24acefa6f6696b702f2c3ceb28d6d6290017bb2). - Thanks to developers of dependencies. -- [Update Snap Candidate to MongoDB 6.0.19. Updated WeKan Windows version numbers. Added Cron docs](https://github.com/wekan/wekan/commit/fb4d95672e37d849ff52954c79eede2af7d2a509). - Thanks to xet7. -- [Updated docs sidebar](https://github.com/wekan/wekan/commit/5448a1569113142ab5b2440763c9642c88e86ba4)- - Thanks to xet7. -- [Updated Docker base image to Ubuntu 24.10](https://github.com/wekan/wekan/commit/7a34bc3eb03943506abe5e54501d1906fc16540b). - Thanks to Ubuntu developers. - -and fixes the following bugs: - -- [Add more stack size](https://github.com/wekan/wekan/commit/324be07b859937966f98feb2aeea8f344c689bb0). - Thanks to xet7. -- [Fix Warning: missing space before text for line 210 of jade file client/components/activities/activities.jade](https://github.com/wekan/wekan/commit/a27f8ecfa9971740a019a955d3f8d0e5a5dd8dab). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.61 2024-10-23 WeKan ® release - -This release adds the following updates: - -- [Testing packages without versions from, for upcoming upgrades](https://github.com/wekan/wekan/commit/6e8e581ceb330a7756403efa1f8bbe5a198ff111). - Thanks to xet7. -- [Updated to MongoDB 6.0.18 at Snap Candidate](https://github.com/wekan/wekan/commit/9d92a79a284147380eb08a0c011a8815dae5209b). - Thanks to MongoDB developers. - -and fixes the following bugs: - -- [Try 3 to fix apparmor denied in syslog at Snap Candidate. Changed MongoDB --host back to --bind_ip](https://github.com/wekan/wekan/commit/6c54b38cdfd14959f4449cea0c3150bf86708ecd). - Thanks to webenefits and xet7. -- [Try 4 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/ecdfc681700633d8688ca709f36924ceced96af8). - Thanks to webenefits and xet7. -- [Try 5 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/e32d2daa4567728e4dd5048c9c575edcac1372da). - Thanks to webenefits and xet7. -- [Try 6 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/5aa38c2e40429f06aac8bc1bc0b5ac30c5344c6f). - Thanks to webenefits and xet7. -- [Renaming list shows in activities](https://github.com/wekan/wekan/pull/5549). - Thanks to AdenKoziol. -- [Fixing opening cards and slow performance of closing cards by reverting switching kadira:flow-router to ostrio:flow-router-extra](https://github.com/wekan/wekan/pull/5552). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.60 2024-09-23 WeKan ® release - -This release adds the following updates: - -- [Added to Docs CNAME DNS info about CloudFlare and Sandstorm](https://github.com/wekan/wekan/commit/b6e7e03c95dfa68c8de6922ffb7663631e476d91). - Thanks to xet7. -- [Switch from kadira:flow-router to ostrio:flow-router-extra](https://github.com/wekan/wekan/pull/5530). - Thanks to imajus. -- [Removed outdated dependency page. To be seen, does anything break](https://github.com/wekan/wekan/commit/a9d41217bd8c797b28510efec3e21a92d7ec4bba). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.59 2024-09-04 WeKan ® release - -This release tries to fix the following bugs: - -- [Try 2 to fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/0a1074ca6e95728b0da30bd701ba783f2a4bdd98). - Newest MongoDB uses --host, not anymore --bind_ip. - Thanks to webenefits and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.58 2024-09-04 WeKan ® release - -This release tries to fix the following bugs: - -- [Try to fix apparrmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/a6c8833f652ee84284da2195bf79fb8edaa818b7). - Thanks to webenefits and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.57 2024-09-04 WeKan ® release - -This release adds the following updates: - -- [Rework fix for mobile devices to incorporate all themes/list headers](https://github.com/wekan/wekan/pull/5517). - Thanks to walster001. -- [Update templates to use label instead of span](https://github.com/wekan/wekan/pull/5519). - Thanks to novashdima. -- [Large updates to UI CSS](https://github.com/wekan/wekan/pull/5523). - Thanks to walster001. -- [Updated dependencies](https://github.com/wekan/wekan/commit/1610eff0e9212fdf6423ce5579b7bdaf8e45950b). - Thanks to developers of dependencies. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.56 2024-08-21 WeKan ® release - -This release adds the following updates: - -- Updated Browser compatibility matrix. - [Part 1](https://github.com/wekan/wekan/commit/cab285c34d1f159120ccd48b17a897e95bd48471), - [Part 2](https://github.com/wekan/wekan/commit/ec534c8cca3f0256091c2d870c128d26033d40ad). -- [Updated code of conduct](https://github.com/wekan/wekan/commit/cae6f38b8070cfcc2f2529027f7e66b965a19f05). - Thanks to xet7. -- [Updated Docker build actions](https://github.com/wekan/wekan/pull/5505). - Thanks to dependabot. -- Updated docs for building custom Docker image. - [Part 1](https://github.com/wekan/wekan/issues/5509), - [Part 2](https://github.com/wekan/wekan/commit/6d6d51310e4168cd0fc75f550d3af35df9ccef9f), - [Part 3](https://github.com/wekan/wekan/commit/a94cfd5b91d29f81e51e67ed03ba84f820d4892a). -- [Update mongodb chart version to 15.6.18 and enables wekan to be deployed on an OpenShift cluster](https://github.com/wekan/charts/pull/36). - Thanks to fobrice. -- [Upgraded Snap Candidate MongoDB to 6.0.17](https://github.com/wekan/wekan/commit/d63d445b7d5da48c05d0fbd4e560c00283b1aef7). - Thanks to MongoDB developers. - -and fixes the following bugs: - -- [Fix ModernDark Mobile View List Titles](https://github.com/wekan/wekan/pull/5503). - Thanks to walster001. -- [Fix apparmor denied in syslog at Snap Candidate](https://github.com/wekan/wekan/commit/c3909edc5ee7a82b694b19ca7e022cbdfd12affd). - Thanks to webenefits and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.55 2024-08-08 WeKan ® release - -This release fixes the following bugs: - -- [Fix board backgrounds not showing correctly after v7.54](https://github.com/wekan/wekan/pull/5501). - Thanks to walster001. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.54 2024-08-07 WeKan ® release - -This release adds the following new features: - -- [Helm Chart: Add Support for Overriding Image Registry in Airgapped Environments](https://github.com/wekan/charts/pull/35). - Thanks to geilername. -- [PWA, move to standalone (standard) to display the status bar](https://github.com/wekan/wekan/pull/5484) - Thanks to mfilser. -- [Added info how with Caddy webserver config, PWA and Android app override icons, showing toolbars, etc](https://github.com/wekan/wekan/commit/55fc342f6d90d8e30b70a8903ecead1c4370bd89). - Thanks to xet7. - -and fixes the following bugs: - -- [Don't set background image in .board-canvas too](https://github.com/wekan/wekan/pull/5485). - Thanks to mfilser. -- [Bugfix, variable "color" didn't exist](https://github.com/wekan/wekan/pull/5486). - Thanks to mfilser. -- [Little opacity to minicards to see the background image a little bit](https://github.com/wekan/wekan/pull/5487). - Thanks to mfilser. -- [Remove attachment storage name from attachment list](https://github.com/wekan/wekan/pull/5488). - Thanks to mfilser. -- [Attachment popup back was broken since new attachment viewer, now fixed](https://github.com/wekan/wekan/pull/5489). - Thanks to mfilser. -- [Change Meteor.user() to ReactiveCache.getCurrentUser()](https://github.com/wekan/wekan/pull/5490). - Thanks to mfilser. -- [Fix empty parentId in cards](https://github.com/wekan/wekan/pull/5491). - Thanks to mfilser. -- [Sidebar xmark icon, add padding and background color](https://github.com/wekan/wekan/pull/5492). - Thanks to mfilser. -- [Board view, first column a bit smaller to save screen space](https://github.com/wekan/wekan/pull/5493). - Thanks to mfilser. -- [Minicard, show creator, defaultValue of schema and other code is now the same](https://github.com/wekan/wekan/pull/5494). - Thanks to mfilser. -- [Editor, Bugfix, copy text is now at each editor (textarea) again](https://github.com/wekan/wekan/pull/5495). - Thanks to mfilser. -- [Bugfix, Cards Count on mobile view was missing](https://github.com/wekan/wekan/pull/5496). - Thanks to mfilser. -- [ListHeader, simpler code logic at collapsed if conditions](https://github.com/wekan/wekan/pull/5497). - Thanks to mfilser. -- [Bugfix, edit description didn't work if it was clicked](https://github.com/wekan/wekan/pull/5498). - Thanks to mfilser. -- [Fix LDAP login fails after upgrade](https://github.com/wekan/wekan/commit/a4169f3da773e4fd961acd0266260085a753cdab). - Thanks to juppees and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.53 2024-08-03 WeKan ® release - -This release adds the following new features: - -- [Added Dragscroll to scroll the board](https://github.com/wekan/wekan/pull/5477). - Click on an empty space in the board, hold the left mouse and move left and right - to scroll the board easily. - Thanks to mfilser. - -and adds the following updates: - -- [Updated release script: New install webpage location](https://github.com/wekan/wekan/commit/5e639a7c2d6dc1182ba95e44875ac8a6798a62be). - Thanks to xet7. -- [Updated dependencies](https://github.com/wekan/wekan/commit/3f9ae57144dc9befd674c784896d68b5db9df146). - Thanks to developers of dependencies. -- [Copied changes from wiki to docs](https://github.com/wekan/wekan/commit/aaca60b6760cc84b56a24fc15c93f23b4a34f06e). - Thanks to xet7. -- [Updated Snap Candidate to MongoDB 6.0.16](https://github.com/wekan/wekan/commit/1af1844f37d17f9f54ca358ccf0f44eed1dfbef4). - Thanks to MongoDB developers. - -and fixes the following bugs: - -- [Board Menu Popup's were opened twice because of 2 same event creation](https://github.com/wekan/wekan/pull/5478). - Thanks to mfilser. -- [Fixing of "mode is undefined" on first activity component creation](https://github.com/wekan/wekan/pull/5479). - Thanks to mfilser. -- [Changing card color now closes the popup and doesn't refresh the whole board page](https://github.com/wekan/wekan/pull/5480). - Thanks to mfilser. -- [Fix dragscroll package name](https://github.com/wekan/wekan/commit/45674806d78fddb8a3b8a75890e5059cc1a680ea). - Thanks to xet7. -- [Reducing card size in database if no planning poker was started](https://github.com/wekan/wekan/pull/5481). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.52 2024-08-03 WeKan ® release - -This release adds the following new features: - -- [Helm Chart: Add option to set resource limits for initContainer](https://github.com/wekan/charts/pull/33). - Thanks to mreichelt-dicos. -- [Helm Chart: Fixes for mongodb persistence. Please test is this correct](https://github.com/wekan/charts/commit/7efb071dd91d76c3971e1865fd18f9d43d8c6891). - Thanks to emoritzx. -- [Helm Chart: Added info about rarely used running WeKan at subpath](https://github.com/wekan/charts/commit/7d4176c7b328c5477c1fa29a323574aac78616a9). - Thanks to emoritzx. - -and adds the following updates: - -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5460), - [Part 2](https://github.com/wekan/wekan/pull/5464), - [Part 3](https://github.com/wekan/wekan/pull/5460), - [Part 4](https://github.com/wekan/wekan/pull/5469), - [Part 5](https://github.com/wekan/wekan/pull/5470), - [Part 6](https://github.com/wekan/wekan/pull/5471), - [Part 7](https://github.com/wekan/wekan/pull/5473). - Thanks to dependabot. -- Added RepoCloud SaaS. - [Part 1](https://github.com/wekan/wekan/commit/21d6dfd79090f9885635f55537bd9fa1ef8539e1), - [Part 2](https://github.com/wekan/wekan/commit/e663ce038af397f547e8823d61ce5dc2e3cea84d), - [Part 3](https://github.com/wekan/wekan.github.io/commit/e9e0550824cdda31daae42df7c497fbd037fd78f). - Thanks to RepoCloud. -- [Updated WeKan app webmanifest](https://github.com/wekan/wekan/commit/745618626535743938b9d2e8c88afe6345807a85). - Thanks to xet7. -- [Revert forking of ldapjs](https://github.com/wekan/wekan/commit/c89f3ba3da6512169e033d76377a9190b35a92d2). - Thanks to xet7. - -and fixes the following bugs: - -- [Fixes to Clean light and Clean dark themes](https://github.com/wekan/wekan/pull/5458). - Thanks to abramchikd. -- [Activities, adding back "created at" field](https://github.com/wekan/wekan/pull/5476). - Thanks to mfilser. -- [Fix typos at attachments code](https://github.com/wekan/wekan/commit/de3bc9cb4d20590c45ff72ef7749d830ea3fc16c). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.51 2024-06-27 WeKan ® release - -This release adds the following updates: - -- [Updated dependencies](https://github.com/wekan/wekan/pull/5452). - Thanks to dependabot. -- Moved docs from wiki to wekan repo docs directory, organized to subdirectories. Organizing and updating in progress. - [Part 1](https://github.com/wekan/wekan/commit/1961e22cbd51e83aa131c8b092c7d43475a021eb), - [Part 2](https://github.com/wekan/wekan/commit/ce89ff48331a27ffb42d021833c78df3a462b9db), - [Part 3](https://github.com/wekan/wekan/commit/449c02c42a0183a49592ada89bdfb8f25e5db903), - [Part 4](https://github.com/wekan/wekan/commit/0fb2f7fdd6b6cb828ab4ea534204a5b834d2e19a), - [Part 5](https://github.com/wekan/wekan/commit/e9c1c620eb938349c30761497066daf41cdcfc19), - [Part 6](https://github.com/wekan/wekan/commit/6b7b66801b716e1d0bf2548b18eed4ed4e354f2d), - [Part 7](https://github.com/wekan/wekan/commit/1cfaddff9cd4fe84fb74c80d1585f2a5dd65f5ca), - [Part 8](https://github.com/wekan/wekan/commit/057ac4031eaa912b849c637e163f4dffa79a9329), - [Part 9](https://github.com/wekan/wekan/commit/52375df78380bbe3407b51dc986baaf6f31f40e4), - [Part 10](https://github.com/wekan/wekan/commit/00a56f6aaa0c2bcd24ca8829a0718b45e7cedf04), - [Part 11](https://github.com/wekan/wekan/commit/c863428aa2597457fc4931e7b1bdd75d6cc2610b). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix ModernDark Cards not showing correctly](https://github.com/wekan/wekan/pull/5455). - Thanks to walster001. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.50 2024-06-22 WeKan ® release - -This release adds the following new features: - -- [Added "Clean dark" and "Clean light" themes that are more clean and modern looking](https://github.com/wekan/wekan/pull/5449). - Thanks to abramchikd. - -and adds the following updates: - -- Updated docs for WeKan version for Windows. - [Part 1](https://github.com/wekan/wekan/commit/9b428150a4fb9efdcb2ae9d3bb59d0da29529e69), - [Part 2](https://github.com/wekan/wekan/commit/3c35a6400b88e071a474a552ee941892522c8d59). - Thanks to xet7. -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5446), - [Part 2](https://github.com/wekan/wekan/commit/99a8afd6c39591e0d85fe5f55ebc3016b9e7f011). - Thanks to developers of dependencies. - -and fixes the following bugs: - -- [Task card may overflow below the screen when maximized, making the bottom part not viewable](https://github.com/wekan/wekan/pull/5443). - Thanks to Hekatomb. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.49 2024-06-11 WeKan ® release - -This release adds the following updates: - -- [WeKan new release version number from wiki to WeKan repo docs](https://github.com/wekan/wekan/commit/e5c7650fc8eb5c3fcc6216f12e806ceb56fd94d9). - Thanks to xet7. -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5430), - [Part 2](https://github.com/wekan/wekan/pull/5441). - Thanks to dependabot. - -and fixes the following bugs: - -- [Bugfix: Strikethrough inactive Teams and orginizations logic was inverted](https://github.com/wekan/wekan/pull/5435). - Thanks to Hekatomb. -- [Changed back to original icon of Edit Description](https://github.com/wekan/wekan/commit/e3214c874ec9369ab6b865154f7964da8ec55f45). - Thanks to saschafoerster, C0rn3j and xet7. -- [Fill out Org and Team in adminReports](https://github.com/wekan/wekan/pull/5440). - Thanks to Hekatomb. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.48 2024-06-06 WeKan ® release - -This release adds the following updates: - -- [Updated release scripts](https://github.com/wekan/wekan/commit/4a9d881e47751ec49d24af5bf4fd1c5452ceb194). - Thanks to xet7. -- Add changes from wiki to docs. - [Part 1](https://github.com/wekan/wekan/commit/13be8160d5b6a894c674d04c37ff9e653e7bd4b0), - [Part 2](https://github.com/wekan/wekan/commit/e65a8c90177cd948ca8212486a365b65cd7d5372). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix Admin Panel pages Organizations and Teams, where HTML Tables were broken](https://github.com/wekan/wekan/commit/36bb5e099ed9f1f88c0399867bd76f040467745c). - Thanks to Hekatomb and xet7. -- [Try to show more of title of collapsed list](https://github.com/wekan/wekan/commit/ec0e88ad2e914437b4767456a160f2c1138fc5f2). - Thanks to C0rn3j and xet7. -- [Allow Normal user to add new swimlane, list and label](https://github.com/wekan/wekan/commit/04b995e77fdb5abc186e02482a75aba6a5cf0759). - Thanks to RyanHecht, norrig and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.47 2024-06-03 WeKan ® release - -This release adds the following updates: - -- [Update Docker base images to Ubuntu 24.04](https://github.com/wekan/wekan/commit/79e2001708b5110b26cf54b15bbbf90f7977fe90). - Thanks to xet7. -- [Updated to MongoDB 6.0.15 at Snap Candidate](https://github.com/wekan/wekan/commit/4e2a8735bc2e449a2a3c949d042fb625052a1152). - Thanks to MongoDB developers. -- [Updated release scripts](https://github.com/wekan/wekan/commit/2c9c9c43561093801004f0268d58b29d9a10b570). - Thanks to xet7. - -and fixes the following bugs: - -- [Only show Board name edit button to BoardAdmin](https://github.com/wekan/wekan/commit/5e2b423ef87c62a70a6b08abd2f185fd560f391f). - Thanks to xet7. -- [Fix Edit Description button is wildly out of place](https://github.com/wekan/wekan/commit/1f2fb2ccce38e9cac348f1c459784d6e5a949ded). - Thanks to C0rn3j and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.46 2024-06-03 WeKan ® release - -This release adds the following updates: - -- [Update ukrainian translation](https://github.com/wekan/wekan/pull/5405). - Thanks to novashdima. -- [Updated GitHub issue template for issue instructions to be more visible](https://github.com/wekan/wekan/commit/5124265142c94d5044b81f81eaaa9c3bc01cef58). - Thanks to xet7. -- [For development, only recommend Debian 12 amd64, because Sandstorm works at Debian 12. Sandstorm does not work at Ubuntu 24.04](https://github.com/wekan/wekan/commit/1bd30bc12129be8cc8a633a561bb8a5be76823d7). - Thanks to xet7. Related https://github.com/sandstorm-io/sandstorm/issues/3712 - -and fixes the following bugs: - -- [Optimize SVGs and PNGs to save 550KB](https://github.com/wekan/wekan/pull/5403). - Thanks to C0rn3j. -- [Swap deprecated egrep for grep -E](https://github.com/wekan/wekan/pull/5404). - Thanks to C0rn3j. -- [Remove notification while copying board](https://github.com/wekan/wekan/pull/5412). - Thanks to e-gaulue. -- [Fixed loading of cards if there are more than 20 of them on one swimlane](https://github.com/wekan/wekan/pull/5417). - Thanks to novashdima. -- [Devcontainer, reduce image size and other necessary changes for development](https://github.com/wekan/wekan/pull/5418). - Thanks to mfilser. -- [Dockerfile production and dev same build](https://github.com/wekan/wekan/pull/5419). - Thanks to mfilser. -- [Remove second created at on activities](https://github.com/wekan/wekan/pull/5420). - Thanks to mfilser. -- [Fix Export CSV/TSV from Board create unhandled Exception](https://github.com/wekan/wekan/pull/5424). - Thanks to Dexus. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# 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. - -# v7.44 2024-04-26 WeKan ® release - -This release adds the following new features: - -- [Collapse Lists](https://github.com/wekan/wekan/commit/a601ba542aebefdfa8b5d683d22405ab3d5f8569). - Thanks to xet7. -- [Collapse Swimlanes. In Progress, does not work yet, not visible yet](https://github.com/wekan/wekan/commit b704d58f0f3cf5e7785b79d5a6c9f6c63da4159c). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix board not visible at Collapse Lists](https://github.com/wekan/wekan/commit/e6476319bcb06cc71fa0eefa0a608ec3a7b89767). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.43 2024-04-18 WeKan ® release - -This release adds the following updates: - -- [Updated release script for Windows On-Premise, that is without container like Docker and Snap](https://github.com/wekan/wekan/commit/802eeb1e6bb87c45fa79298f67ff690e87f939f8). - Thanks to xet7. -- [Updated translations Transifex URL at readme](https://github.com/wekan/wekan/commit/9838af5e5630a6ef34175e110ddfb6bfc225b40c). - Thanks to xet7. -- [Improve Docker files](https://github.com/wekan/wekan/pull/5377). - Thanks to C0rn3j. -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/commit/08e2f2f2731856255e0b40eb692328424efdf9ac), - [Part 2](https://github.com/wekan/wekan/commit/da99e363cd72cda7d400ce65785a6650e42c72cf). - Thanks to developers of dependencies. - -and fixes the following bugs: - -- [Fix DEBUG environment variable check](https://github.com/wekan/wekan/pull/5380). - Thanks to verdel. -- [By default, use localized long date-time format](https://github.com/wekan/wekan/pull/5381). - Thanks to tvogel. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.42 2024-04-03 WeKan ® release - -This release fixes the following CRITICAL SECURITY ISSUES: - -- [Fixed CRITICAL SECURITY ISSUE by updating meteor-node-stubs](https://github.com/wekan/wekan/commit/c461adff11456734fcb9193b5522cc6451078732). - Thanks to Meteor developers. - -and adds the following updates: - -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5355), - [Part 2](https://github.com/wekan/wekan/pull/5356), - [Part 3](https://github.com/wekan/wekan/commit/1c8f783767a680758f2219d2f416ce3ae2fb0c57). - Thanks to dependabot and developers of dependencies. -- [Small tweaks to moderndark theme](https://github.com/wekan/wekan/pull/5363). - Thanks to jghaanstra. - -and fixes the following bugs: - -- [Fixed link at readme](https://github.com/wekan/wekan/pull/5360). - Thanks to dyercode. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.41 2024-03-18 WeKan ® release - -This release fixes the following bugs: - -- Fixes for mongosh to allow snap packages to update to the edge/candidate version. - [Part 1](https://github.com/wekan/wekan/pull/5349), - [Part 2](https://github.com/wekan/wekan/pull/5350). - Thanks to lorodoes. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.40 2024-03-17 WeKan ® release - -This release fixes the following bugs: - -- [Fixed centering of text below custom login logo](https://github.com/wekan/wekan/commit/24c89aeb64cf6266d95f42124419d4f070864631). - Thanks to xet7. -- [Fixed In RTL, hamburger margin is too much in mobile](https://github.com/wekan/wekan/commit/583fca1814d916490b04947ba8d97dd85168fb22). - Thanks to mohammadZahedian and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.39 2024-03-16 WeKan ® release - -This release adds the following updates: - -- Clarify usage of api.py. - [Part 1](https://github.com/wekan/wekan/pull/5341). - [Part 2](https://github.com/wekan/wekan/commit/8f3c948614df0641b0971d1882cc241587d9d3b4). - Thanks to e-gaulue and xet7. -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5343), - [Part 2](https://github.com/wekan/wekan/pull/5344). - -and fixes the following bugs: - -- [Make the contents of the cards grow to the list width](https://github.com/wekan/wekan/pull/5346). - Thanks to kuba-orlik. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.38 2024-03-10 WeKan ® release - -This release adds the following new features: - -- [Added docs wikis to WeKan repo directory docs, to make possible to send PRs](https://github.com/wekan/wekan/commit/73ae73d4c38640e9daedbe8ef9e5b25b877ee804). - Thanks to e-gaulue, C0rn3j and xet7. -- [Added script to count lines of code changed per committer email address, because GitHub removed that feature from web UI](https://github.com/wekan/wekan/commit/835e33bf090022875f50916412f80b6a9b4a3b21). - Thanks to bgwines and xet7. -- [Add info about GitHub top committers at Finland](https://github.com/wekan/wekan/commit/ef5b8887799a75ab797655f39483bc08841815d2). - Thanks to xet7. - -and adds the following updates: - -- [Updated contributing to wiki](https://github.com/wekan/wekan/commit/8ba3a05648818f6162b2021affeb33066f91c400). - Thanks to xet7. -- [Upgraded to MongoDB 6.0.14 at Snap Candidate](https://github.com/wekan/wekan/commit/07d6c1e5148eb0392357d55d0486a9672378c16f). - Thanks to MongoDB developers. - -and tried to fix the following bugs: - -- [Fix error during delete](https://github.com/wekan/wekan/pull/5336). - Thanks to xator91. -- [Fixed text below custom login logo not visible](https://github.com/wekan/wekan/commit/00bbc2669814247c0ff79bd816be7bf34bcf08a2). - Thanks to xet7. -- [Fixed In RTL, hamburger needs margin](https://github.com/wekan/wekan/commit/abd3c95dfa13cd697ff2fb7e299c85287406772a). - Thanks to mohammadZahedian and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.37 2024-03-07 WeKan ® release - -This release fixes the following bugs: - -- [Fixed API get swimlane cards wrong order. Please test](https://github.com/wekan/wekan/commit/7beced1e683c2eb2960b0ee40d5ec927d235fa6a). - Thanks to mohammadZahedian, xator91 and xet7. -- [Fixed API get_all_cards doesn't return SwimlaneId. Please test](https://github.com/wekan/wekan/commit/ffafb30b9b394188e1b60ec836ad83f1738c266d). - Thanks to mohammadZahedian, xator91 and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.36 2024-03-06 WeKan ® release - -This release adds the following features: - -- [api.py: checklistid, checklistinfo, get_list_cards_count and get_board_cards_count](https://github.com/wekan/wekan/pull/5326). - Thanks to xator91. - -and fixes the following bugs: - -- [Fixed Card image cover should be margin-top:6px since hamburger menu and due date at the top](https://github.com/wekan/wekan/commit/747bc4c08837ad9781d63b9f16b97a64b0bfe7b8). - Thanks to e-gaulue and xet7. -- [Try to fix API get cards wrong order. Please test](https://github.com/wekan/wekan/commit/c570405d0267e28f2b2644005d48fb097eac385b). - Thanks to mohammadZahedian, xator91 and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.35 2024-02-27 WeKan ® release - -This release adds the following features and bugs: - -- [Added back Mathjax that has bug of showing math twice](https://github.com/wekan/wekan/commit/f43dadc06894d874281ec0e449dcc4c81b3c59ad). - Thanks to macthecadillac, Dexus and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.34 2024-02-23 WeKan ® release - -This release adds the following updates: - -- [Updated translations](https://github.com/wekan/wekan/commit/3cd5d00b0b8d74acb2cd2afbc12f5b9d7aafcbd8). - Thanks to translators. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.33 2024-02-23 WeKan ® release - -This release adds the following updates: - -- [Updated docs for previous version of WeKan](https://github.com/wekan/wekan/commit/3b0616c1500b5070e660d2ba00968d59600958eb). - Thanks to xet7. - -and fixes the following bugs: - -- [OpenAPI: Fix breakage introduced with blank return](https://github.com/wekan/wekan/pull/5321). - Thanks to bentiss. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.32 2024-02-22 WeKan ® release - -This release adds the following new features: - -- [api.py: Added create label](https://github.com/wekan/wekan/pull/5308). - Thanks to xator91. -- [api.py: Edit card color](https://github.com/wekan/wekan/pull/5309). - Thanks to xator91. -- [api.py: Add checklist with multiple items also or just title](https://github.com/wekan/wekan/pull/5311). - Thanks to xator91. -- [api.py: Delete all cards. Will delete all cards from Swimlanes automatically, will retrieve automatically all list id and delete everything](https://github.com/wekan/wekan/pull/5313). - Thanks to xator91. -- [cards.js: Added a control to check error if card is not updated](https://github.com/wekan/wekan/pull/5312). - Thanks to xator91. -- [Shortcut a to filter by assignees](https://github.com/wekan/wekan/pull/5318). - Thanks to DevOpsNB. - -and fixes the following bugs: - -- [Fixed Error 500 when adding user to a board and multiple same avatar icons by reverting back from Meteor 2.15 to 2.14](https://github.com/wekan/wekan/commit/b5f4be36d4577c391ad19c5e5dd9de3036b8998f). - Thanks to xator91, mariogalan, bbyszio, zeo101, laurentm255, johnnytolengo and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.31 2024-02-17 WeKan ® release - -This release adds the following new features: - -- [api.py: Added getcard and cardsbyswimlane](https://github.com/wekan/wekan/pull/5287). - Thanks to xator91. -- [api.py: Add card with label and add a label to a card](https://github.com/wekan/wekan/pull/5290). - Thanks to xator91. -- [api.py: Fix BoardID to SwimlaneID in cardsbyswimlane](https://github.com/wekan/wekan/pull/5290). - Thanks to xator91. -- [boards.js: New update board title function for API](https://github.com/wekan/wekan/pull/5300). - Thanks to xator91. -- [api.py: EDIT BOARD TITLE](https://github.com/wekan/wekan/pull/5301). - Thanks to xator91. - -and adds the following updates: - -- [Release scripts: Commented out not currently in use builds of WeKan bundle](https://github.com/wekan/wekan/commit/4eb0085243672071a392dc32f77dba3103c592ab). - Thanks to xet7. -- [Try to fix Snap](https://github.com/wekan/wekan/commit/a54e52d34bdab02befda7eefad46d16814d2c46e). - Thanks to xet7. -- [Updated to Meteor 2.15-rc.1 and removed duplicate nodemailer package because of some errors](https://github.com/wekan/wekan/commit/59c42bc1a3a1792a50379be2f9251fce9b45c1a3). - Thanks to Meteor developers. -- [Updated to Meteor 2.15](https://github.com/wekan/wekan/commit/5198ee997cb43b503fcb2edaf781b0521d8096cd). - Thanks to Meteor developers. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.30 2024-01-28 WeKan ® release - -This release adds the following updates: - -- [Back to MongoDB 6.0.13](https://github.com/wekan/wekan/commit/64592d734cfdbe10b48c3aa3ea74e0ba35903976). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.29 2024-01-27 WeKan ® release - -This release removes the following features: - -- [Removed markdown-it-mathjax3](https://github.com/wekan/wekan/commit/19703fed311c894b61e9269cc0b973d0b0275a6a). - Thanks to Dexus and xet7. - -and adds the following updates: - -- [Updated to Meteor 2.14.1-beta.0](https://github.com/wekan/wekan/commit/28d640afb40f4d7c9070fa514c910fbf7065a724). - Thanks to Meteor developers. -- [Updated to MongoDB 7.0.5 at Snap Candidate and Docker](https://github.com/wekan/wekan/commit/f624211620c5e42ccdd6f931ba473be62437a62c). - Thanks to MongoDB developers. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.28 2024-01-23 WeKan ® release - -This release adds the following new features: - -- [Added archive option to of Wekan API](https://github.com/wekan/wekan/pull/5265). - Thanks to gustavengstrom. - -and adds the following updates: - -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/pull/5270), - [Part 2](https://github.com/wekan/wekan/pull/5271), - [Part 3](https://github.com/wekan/wekan/commit/67896adefc4a12a93fed7575f621f8aa924a2ab8). - Thanks to developers of dependencies. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.27 2024-01-02 WeKan ® release - -This release fixes the following bugs: - -- [Fix missing maximize card](https://github.com/wekan/wekan/commit/f10f80f6559a6cdee020d5ca34fd5991e07617cf). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.26 2024-01-02 WeKan ® release - -This release fixes the following bugs: - --[Fix some public board buttons](https://github.com/wekan/wekan/commit/8ae47cb2f82bcc2078cc9c9987f7d7b7f6394493). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.25 2023-12-30 WeKan ® release - -This release adds the following updates: - -- [Snap: Organized file locations](https://github.com/wekan/wekan/commit/84a228fc1a7ced2b8b146795acc13eb5abb13d24). - Thanks to xet7. -- Updated GitHub Actions. - [Part 1](https://github.com/wekan/wekan/pulls/5243), - [Part 2](https://github.com/wekan/wekan/pulls/5244), - [Part 3](https://github.com/wekan/wekan/pulls/5245). -- [Updated percolate:synced-cron](https://github.com/wekan/wekan/commit/06397e9e11a689a0a2e6a95ae785749d5a6a695b). - Thanks to developers of percolate:synced-cron. -- Snap: Added MongoDB 3 binaries for migrating to MongoDB 6. - [Part 1](https://github.com/wekan/wekan/commit/805458a7638ff6213929bfa70a46b5afeacaedf1), - [Part 2](https://github.com/wekan/wekan/commit/335f0451e07d6ff924c0af3e5a934676c8e69f4c), - [Part 3](https://github.com/wekan/wekan/commit/374e67310723f3c0d3ab20f6b2e4bd0b273bce2b). - Thanks to xet7. -- [Updated dependencies](https://github.com/wekan/wekan/commit/0e6d83c0852b2da4430f9c902b84c16f5c2ee8bc). - Thanks to developers of dependencies. - -and adds the following translations: - -- [Translations: Added German (Germany) (de_DE) and Odia (India) (or_IN)](https://github.com/wekan/wekan/commit/23c2a2bc224e2def4722a35c20f32a21062b4154). - Thanks to translators. - -and fixes the following bugs: - -- [Fix: Export HTML popup](https://github.com/wekan/wekan/pull/5252). - Thanks to Lewiscowles1986. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.24 2023-12-17 WeKan ® release - -This release adds the following new features: - -- [Azure AD B2C login using OAuth2](https://github.com/wekan/wekan/commit/93be112a9454c894c1ce3146ed377e6a6aeca64a). - https://github.com/wekan/wekan/wiki/B2C . - Thanks to snowsky and xet7. - -and adds the following updates: - -- [Upgrade to Meteor 2.14](https://github.com/wekan/wekan/commit/75383fe477874a7aaf5caa3b913e2173694efe13). - Thanks to Meteor developers. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.23 2023-12-11 WeKan ® release - -This release adds the following updates: - -- [Updated security.md about mitm](https://github.com/wekan/wekan/commit/b4c9c1df9a7e89d263b1864407a7007338ce770d). - Thanks to xet7. -- [Upgraded to Meteor 2.14-rc.3](https://github.com/wekan/wekan/commit/6a3b8a668bc84c89714e44c3865168be81c8e2ed). - Thanks to Meteor developers. -- [Updated dependencies](https://github.com/wekan/wekan/commit/e3a0a480ed960d30fc80f7c7c1a6c7471368d0e8). - Thanks to developers of dependencies. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.22 2023-12-01 WeKan ® release - -This release adds the following new features: - -- [At right sidebar, moved Minicard Settings to Card Settings popup](https://github.com/wekan/wekan/commit/2f2a039e3c1957b8921f3800315508d4f51c21b7). - Thanks to Roemer and xet7. -- [New feature: Sidebar / Card Settings / Creator at minicard](https://github.com/wekan/wekan/commit/f3242869110738210b712761dda67fec34932307). - Thanks to Roemer and xet7. - -and adds the following updates: - -- [Upgraded to MongoDB 6.0.12 at Snap Candidate](https://github.com/wekan/wekan/commit/31ca78c17b0c734087cef99d481b939ac9533612). - Thanks to MongoDB developers. - -and fixes the following bugs: - -- [Fixed Markdown and copy buttons on top of text](https://github.com/wekan/wekan/commit/3cc10c77f99db344d0af3d6d862eb05c909fbf2c). - Thanks to mueller-ma and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.21 2023-11-27 WeKan ® release - -This release adds the following updates: - -- [Updated dependencies](https://github.com/wekan/wekan/commit/fef0c0e490ef0d90b6504074312bf827ff5f2d61). - Thanks to developers of dependencies. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.20 2023-11-26 WeKan ® release - -This release adds the following updates: - -- [Added standard for public code assessment](https://github.com/wekan/wekan/commit/a307bfa1ec82b66d97714bff32d4201aa8e6e6f7). - Thanks to those that participated to making of assessment. -- [Upgraded to Meteor 2.14-beta.2](https://github.com/wekan/wekan/commit/126ddda45d07769f9fef67aa74241c9afa04b6a8). - Thanks to Meteor developers. -- [Upgraded to Meteor 2.14-beta.4](https://github.com/wekan/wekan/commit/d90ab03bbe9f13d211aaca2e72542386fdf2a6ba). - Thanks to Meteor developers. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.19 2023-11-20 WeKan ® release - -This release adds the following new features: - -- [Updated swimlane (restore and changed title) and board (changed title) webhooks](https://github.com/wekan/wekan/pull/5205). - Thanks to gustavengstrom. -- When user logins, "Automatically add user with the domain name" (at Admin Panel / Organizations) to Organization. In Progress. - [Part 1](https://github.com/wekan/wekan/commit/6e2f84673e98abec07a10c843ab83bed50774b35), - [Part 2](https://github.com/wekan/wekan/commit/9bc63669933bd763930add22ad7d05d89566d3ee). - Thanks to xet7. -- [Permissions for default board after OIDC/OAuth2 login](https://github.com/wekan/wekan/pull/5213). - Thanks to diegosteiner. - -and adds the following updates: - -- [Added governance.md](https://github.com/wekan/wekan/commit/2b1d2222cc900e8c815c30a4d07c897e30ba3636). - Thanks to xet7. -- Updated contributing.md. - [Part 1](https://github.com/wekan/wekan/commit/d840cb3be7b1788a4dbdd09ef45690afcf6b3dd4), - [Part 2](https://github.com/wekan/wekan/commit/e91e68c48c6392814fbc1362b7ae15ead34e7e47), - [Part 3](https://github.com/wekan/wekan/commit/026236edc962a8fc3863b9a4f7dc1d1f5dec3b5c), - [Part 4](https://github.com/wekan/wekan/commit/59874d16b9cf95ff05d92dd4d3bbdcb42fd37a94). -- [Updated security.md](https://github.com/wekan/wekan/commit/f047c6da295c4ab5ddc6d4d0a8137f419d8704d5). -- Updated code of conduct.md. - [Part 1](https://github.com/wekan/wekan/commit/c4293ecd95b9faec846060bcbcb8362cb58a54e6), - [Part 2](https://github.com/wekan/wekan/commit/f512047ac6439e53f92359f45ab907c629d225a9). - -and fixes the following bugs: - -- [Removed console.log](https://github.com/wekan/wekan/commit/0c54c1540c494bb7ffeb61a89cbc9a79c8f05d19). - Thanks to xet7. -- [Fix typos at oidc_server.js](https://github.com/wekan/wekan/commit/cd51ad75086950f29adf245b6d6c0b43e69da171). - Thanks to xet7. -- [Fix to not anymore show confusing Organization Id and Team Id fields at Admin Panel / People / People / Edit user](https://github.com/wekan/wekan/commit/6405c35bc08fc73657a4111c6fd72a8bd72ded70). - Thanks to xet7. -- [Fix to not anymore require website for Organization and Team](https://github.com/wekan/wekan/commit/d4d6a5f96d88a89eb47ee56ba9857e859203a53c). - Thanks to xet7. -- [Snap: Disable apparmor="DENIED" in syslog](https://github.com/wekan/wekan/commit/2048975e92152bb1c397b61fc2fd0a8124fade58). - Thanks to diegargon, webenefits and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.18 2023-11-14 WeKan ® release - -This release adds the following new features: - -- [Added restore list and changing list title to outgoing webhooks](https://github.com/wekan/wekan/pull/5198). - Thanks to gustavengstrom. - -and adds the following updates: - -- [Updated release scripts](https://github.com/wekan/wekan/commit/d4252f30567665897c6314b578dff1fe294265de). - Thanks to xet7. - -and fixes the following bugs: - -- [Add Docker label org.opencontainers.image.source](https://github.com/wekan/wekan/pull/5196). - Thanks to mueller-ma. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.17 2023-11-09 WeKan ® release - -This release fixes the following bugs: - -- [Fix move card rule on checklist complete doesn't work, with ReactiveMiniMongoIndex for Server-Side](https://github.com/wekan/wekan/pull/5194). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.16 2023-11-09 WeKan ® release - -This release fixes the following bugs: - -- [Fix users.save is not a function](https://github.com/wekan/wekan/commit/42ece21fa14113a28792bf97dfd899a064f0ea56). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.15 2023-11-09 WeKan ® release - -This release fixes the following bugs: - -- [Fix missing profile/avatar pictures](https://github.com/wekan/wekan/commit/4e97a5351a4ac715d21503a129f12fe5bf3f4016). - Thanks to kovacs-andras and xet7. -- [Commented out links at My Cards Table, because they unexpectly caused to go elsewhere from current view](https://github.com/wekan/wekan/commit/2c36fe3d45a0f95f8ba18526ffd1dc230f6f46a8). - Thanks to xet7. -- [Add more Docker Labels to Dockerfile](https://github.com/wekan/wekan/commit/52e76c5496b6621916b61f35d5b68687685e0809). - Thanks to mueller-ma and xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.14 2023-11-09 WeKan ® release - -This release adds the following updates: - -- [Upgraded to Meteor 2.14-beta.0](https://github.com/wekan/wekan/commit/55903472aae0032a49f03529cc9013007a20475e). - Thanks to Meteor developers. - -and fixes the following bugs: - -- [Removed double edit text from card description](https://github.com/wekan/wekan/commit/972981a57997fdaeb5202a3c588cd9eb83516360). - Thanks to derbolle and xet7. -- [Fix Notifications are identical until one is marked read](https://github.com/wekan/wekan/pull/5189). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.12 2023-11-02 WeKan ® release - -This release adds the following updates: - -- [Updated Snap Candidate MongoDB to 6.0.11](https://github.com/wekan/wekan/commit/ff4c8a5d23d9315ad12970c35cf2928b204b073b). - Thanks to MongoDB developers. - -and fixes the following bugs: - -- [Fix Add List button too wide at themes: Clearblue, Modern, Exodark](https://github.com/wekan/wekan/commit/b756150f76c711cf93aa486a55d0e3340f558c01). - Thanks to xet7. -- [Fix Windows build bundle script](https://github.com/wekan/wekan/commit/720d4223e21da7fa6651dcb51def81a8e081750d). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.11 2023-11-02 WeKan ® release - -Known issues: At some non-amd64 platforms, Node.js 14.x may show segmentation fault. -This will be fixed when upgrading to Node.js 18.x or newer works. - -This release fixes the following CRITICAL SECURITY ISSUES: - -- [Fix Security issue: Hyperlink injection](https://github.com/wekan/wekan/commit/4fe168b03b1f4303c2b117d24ad63ca9f40a02d2). - Thanks to mc-marcy and xet7. - -and adds the following new features: - -- [Feature: Convert to Markdown button at editor of Card Description and Comment. Useful when there is no WYSIWYG editor](https://github.com/wekan/wekan/commit/069e2c69b2e00e402628a3123164af257533ddc6). - Thanks to BabyFnord and xet7. -- [Feature: Copy Card Details code block to clipboard](https://github.com/wekan/wekan/commit/0cc63b810c5a9e23a8a3939a11176f25c1fa8dc7). - Thanks to C0rn3j and xet7. - -and adds the following updates: - -- [docker-compose.yml back to latest docker image tag](https://github.com/wekan/wekan/commit/cfa0a063ce4ac5b2dcfa9952764cb15ce21bc263). - Thanks to xet7. -- [Updated year at license](https://github.com/wekan/wekan/commit/0e902d73a881e4f1a17ee7f2028e1b041872ab61). - Thanks to xet7. -- [Updated screenshot at readme](https://github.com/wekan/wekan/commit/be72274ca515dc7b652cb1b93361e97089186166). - Thanks to xet7. -- [Added info to docker-compose.yml about newest docker image of newest git commit automatic build](https://github.com/wekan/wekan/commit/c9e80eaa03e42d1976576ad6553c056840f3060c). - Thanks to xet7. -- Updated SECURITY.md. - [Part 1](https://github.com/wekan/wekan/commit/aae7960f251fe626d8bb319643e4cd939a8fbfa9), - [Part 2](https://github.com/wekan/wekan/commit/f5355422ee21d54e26785f483a7eaecade3d1b64), - [Part 3](https://github.com/wekan/wekan/commit/fe985e219a9e467973e9449762fc17c6a94e9031), - [Part 4](https://github.com/wekan/wekan/commit/90da40fde0b2c68d3f751fe8ff2a06f3180cf6d9), - [Part 5](https://github.com/wekan/wekan/commit/2c74240bcb9d24e206ffe4e59bc8242a6abd07d9). -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/commit/c45bf4e36882c898055db248bf54a8e7e0add3c4), - [Part 1](https://github.com/wekan/wekan/commit/b08876327237c549783a2ee7d07db7f2dd0904a7), - [Part 1](https://github.com/wekan/wekan/commit/75de7b119d868e0e1ef650d7d795b7349b1c9281), - [Part 1](https://github.com/wekan/wekan/commit/974c17723705d58b660154bb2fd8997c018ddddc). - Thanks to developers of dependencies. -- [Docker base image to Ubuntu 23.10](https://github.com/wekan/wekan/commit/0f99f22fa5bfc7d3764de2a7f34165f699571449). - Thanks to Ubuntu developers. -- [Updated dependencies](https://github.com/wekan/wekan/commit/8323649cf098388684ea5e690dcb233171440345). - Thanks to zodern. -- [Updated dependencies](https://github.com/wekan/wekan/commit/b54d17467cd2868091c52240594630923875946c). - Thanks to exceljs developers. - -and fixed the following bugs: - -- [Fixed can not close sidebar at Modern theme](https://github.com/wekan/wekan/commit/53e569d28582a04d7bac49c23cd04ed8f546ed71). - Thanks to xet7. -- [Fix LDAP login](https://github.com/wekan/wekan/pull/5159). - Thanks to faburem. -- [Fix can't use card template](https://github.com/wekan/wekan/pull/5161). - Thanks to faburem. -- [Open card details always in the middle of the screen](https://github.com/wekan/wekan/pull/5168). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.10 2023-09-29 WeKan ® release - -This release adds the following new features: - -- At opened card, toggle to show checklist at minicard. - [Part 1](https://github.com/wekan/wekan/commit/2a190fdc194ac2fc2d8086521c5a3eaa2aff0641), - [Part 2](https://github.com/wekan/wekan/commit/2c99d1cecbaab8556b65bce857b8d93c2cc62c37), - [Part 3](https://github.com/wekan/wekan/commit/80312d30520840145ee24042aca3ebeda3260d99), - [Part 4](https://github.com/wekan/wekan/commit/86814a0fd8615fde1867dcf2841b6a24fcfb105b), - [Part 5](https://github.com/wekan/wekan/commit/75d524f61558b2b6003220c43aa23adb142da91d), - [Part 6](https://github.com/wekan/wekan/commit/47468a475003c433db0fcc7735741e4548d6c19c). - Thanks to xet7. -- [Added show-subtasks-field to be translateable at Board Settings / Subtasks Settings](https://github.com/wekan/wekan/commit/e60eddda0440f49d769d73db212322d5ba994662). - Thanks to xet7. -- [After OIDC login, add users to board DEFAULT_BOARD_ID](https://github.com/wekan/wekan/pull/5098). - Thanks to diegosteiner. -- [Added DEFAULT_BOARD_ID environment variable setting to all WeKan platforms](https://github.com/wekan/wekan/commit/a781c0e7dcfdbe34c1483ee83cec12455b7026f7). - Thanks to xet7. -- [Make available translation text to set empty string](https://github.com/wekan/wekan/pull/5103). - Thanks to ipyramiddev. -- [Added a condition to filter unwanted webhooks](https://github.com/wekan/wekan/pull/5106). - Thanks to ipyramiddev. -- [Added docker-compose.yml-arm64](https://github.com/wekan/wekan/commit/e103bf46dd796b5c589b315ca68c7a60b5e388db). - Thanks to xet7. - -and adds the following updates: - -- [In rebuild-wekan.sh, option 9 to Save Meteor dependency chain to ../meteor-deps.txt](https://github.com/wekan/wekan/commit/7c80a34cf238cbccfe4fed0fb92cf73ddff6beed). - Thanks to xet7. -- [Update FullCalendar version to 3.10.5](https://github.com/wekan/wekan/pull/5100). - Thanks to helioguardabaxo. -- [Renamed directory packages/meteor-fullcalendar to packages/wekan-fullcalendar](https://github.com/wekan/wekan/commit/2d652df176b63f7cc27e9de51fbf2f2cbd52ef34). - Thanks to xet7. -- [Removed old demo API key to silence GitHub secret scanning warning](https://github.com/wekan/wekan/commit/c22e71e3a2175260e483a08026e1ea3446dc77fa). - Thanks to xet7. -- [Added assetlinks.json](https://github.com/wekan/wekan/commit/74b98a5ee40564448906f41cf66f93ee73faaea1). - Thanks to xet7. -- [Update translations. Added Afrikaans (af), Afrikaans (South africa)(af_ZA), English (South Africa)(en_ZA)](https://github.com/wekan/wekan/commit/ee4a3b5b35ade479b8ddf7cdedf56aa1ef676b3f). - Thanks to translators. -- Updated dependencies. - [Part 1](https://github.com/wekan/wekan/commit/4933bf8203dd615ca02963bd502a1cca2584bbac), - [Part 2](https://github.com/wekan/wekan/pull/5119). - [Part 3](https://github.com/wekan/wekan/pull/5129). - Thanks to developers of dependencies. -- [Update Font Awesome version to 6.4.2](https://github.com/wekan/wekan/pull/5125). - Thanks to helioguardabaxo. -- [Removed Font Awesome not in use directories svgs, scss and less](https://github.com/wekan/wekan/commit/473e2c28c6093403881515067e1b0560eddc85b2). - Thanks to xet7. -- [Add all Font Awesome characters](https://github.com/wekan/wekan/pull/5128). - Thanks to helioguardabaxo. -- [Update Bootstrap Datepicker version to 1.10.0](https://github.com/wekan/wekan/pull/5126). - Thanks to helioguardabaxo. -- [Removed non-existing sw translation and not needed files from bootstrap-datepicker](https://github.com/wekan/wekan/commit/dfe05cc924767e69f40a7332f0e0196ddf2bc8d5). - Thanks to xet7. -- [Upgraded to Meteor 2.13.3](https://github.com/wekan/wekan/commit/6b88ae2ba26427ab58597b580440e601fd77b320). - Thanks to Meteor developers. -- [Upgrade Snap Candidate to MongoDB 6.0.10](https://github.com/wekan/wekan/commit/522ab40f436be5656fd6fbd8057c6715afa2fa36). - Thanks to MongoDB developers. -- Renamed WeKan repo branch master to main. - [Part 1](https://github.com/wekan/wekan/commit/549982b5e10c240fb2358c21b0781fef2e63a2ba), - [Part 2](https://github.com/wekan/wekan/commit/fa32010a656a47a6fba9a625d6ab216c9b2034df), - [Part 3](https://github.com/wekan/wekan/commit/b68493b009bbbb63cf26c9020299762c2a2717aa). - Thanks to xet7. -- [Use newest Docker build from newest main branch commit at docker-compose.yml](https://github.com/wekan/wekan/commit/8cba42efbefeac159c0c653b53f6464a2fc5ed09). - Thanks to xet7. -- [Removed disabled codeql-analysis workflow](https://github.com/wekan/wekan/commit/240e05ba1640e92de639ddded5c4a20b32a74d2a). - Thanks to xet7. -- [Updated versions at Dockerfile](https://github.com/wekan/wekan/commit/637442563ea843a89396d557db3327c1775e6a12). - Thanks to xet7. -- [Fixed arm64 Dockerfile](https://github.com/wekan/wekan/commit/73e690a5fee24707377d3fe7985c52947cbc8929). - Thanks to manfromdownunder and xet7. -- [Added Dockerfile for s390x](https://github.com/wekan/wekan/commit/eacb310e59e03b44b0249206b28e4cb3adf163d0). - Thanks to xet7. -- [Updated dependencies](https://github.com/wekan/wekan/commit/52ce6da32c54d8c65ed679072c64fda66e1606a0). - Thanks to developers of dependencies. - -and fixes the following bugs: - -- [Correctly display preview for very tall images](https://github.com/wekan/wekan/pull/5097). - Thanks to VidVidex. -- Replaced ldap logger https://www.npmjs.com/package/bunyan with https://docs.meteor.com/packages/logging.html, because bunyan did show dtrace errors when building WeKan. - [Part 1](https://github.com/wekan/wekan/commit/e83945c1a6c08fe58f660bcd7b7f8494f629e913), - [Part 2](https://github.com/wekan/wekan/commit/427eb8ebd16b847eb278cd319adb75adc5206e99). - Thanks to xet7. -- [Comment out warning about unset variable at ldap.js](https://github.com/wekan/wekan/commit/7f91055d8c7ed508b2f6fca111f17ec1353c445a). - Thanks to xet7. -- [Removed CollectionFS and and attachment migrations, because they prevented using MONGO_URL username/passwrod with MongoDB 6.x, CollectionFS forced old MongoDB driver](https://github.com/wekan/wekan/commit/3b936ff6e7ed733a65488f1384f868e17b8ab751). - Thanks to xet7. -- [Hide incomplete feature Show checklist at minicard](https://github.com/wekan/wekan/commit/75d524f61558b2b6003220c43aa23adb142da91d). - Thanks to xet7. -- [Fix for CalendarView, Create Card without Refresh](https://github.com/wekan/wekan/pull/5105). - Thanks to DimDz. -- [Active members list now is ordered](https://github.com/wekan/wekan/pull/5107). - Thanks to helioguardabaxo. -- [Removed limit when setting Swimlane max height](https://github.com/wekan/wekan/commit/7f9aa7509314a85a550dd16615429c5e030b5f2b). - Thanks to Meeques, mark-i-m and xet7. -- [Fixed Can't login via LDAP because of some Node.js issues](https://github.com/wekan/wekan/commit/c898a3f5ea689469f4e1003b90162bd4233b6aeb). - Thanks to Danny-Graf and xet7. -- [Stop using /etc/timezone in Docker. Only use /etc/localtime](https://github.com/wekan/wekan/commit/7baa95fcab5447a359c84a2139b1968f0332f683). - Thanks to dabiao2008 and xet7. -- [Fix createCardWithDueDate Error: User id is required](https://github.com/wekan/wekan/commit/7d1ab0a38875909de02230e70181a7ddb5187870). - Thanks to xet7. -- [Fix Swimlane Default title from "key default returned an object instead of string" to translated title of "Default"](https://github.com/wekan/wekan/commit/73a25775e1cb7b1f1b355707e21e3704b98ca9c5). - Thanks to titho85, hpvb and xet7. -- [Fix allow normal user to view subtasks at subtasks board](https://github.com/wekan/wekan/commit/22d98fec38dd16b4cc8ad0fdca8c2973e9779e08). - Thanks to xet7. -- [Fix minicard description text color to black, so that it is visible at light grey background](https://github.com/wekan/wekan/commit/ab944e51c728412d455d88b5714e84393eccb210). - Thanks to xet7. -- [Fix mini width of add list also to moderndark theme](https://github.com/wekan/wekan/commit/05c6e101ff32efb42365ac2ffbd802497d5199ac). - Thanks to xet7. -- [Fixed typo at ldap.js](https://github.com/wekan/wekan/commit/c27a00a4a872cca280ee07079f93941bbee9844f). - Thanks to xet7. -- [Try to get some label outgoing webhooks working](https://github.com/wekan/wekan/commit/b40654cdfea61cd7a0a6c7f5efca86b62b3a2cbd). - Thanks to xet7. -- [Fix missing Font Awesome icons](https://github.com/wekan/wekan/pull/5133). - Thanks to helioguardabaxo. -- [Font Awesome 6.4.2 adding missing icons](https://github.com/wekan/wekan/pull/5134). - Thanks to mfilser. -- [Make sessinAffinity stickable to clientIP](https://github.com/wekan/wekan/pull/5136). - Thanks to Dexus. -- [Users can't change their password since V7.02](https://github.com/wekan/wekan/pull/5146). - Thanks to nebulade. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.09 2023-08-21 WeKan ® release - -This release adds the following new features: - -- [Move card to other boards API](https://github.com/wekan/wekan/pull/5090). - Thanks to DimDz. - -and adds the following updates: - -- [Upgraded Snap Candidate MongoDB to 6.0.9](https://github.com/wekan/wekan/commit/9d5af24e7b656c2bf6ad32bc8360bb80374408d6). - Thanks to MongoDB developers. -- Fixed building s390x release. - [Part 1](https://github.com/wekan/wekan/commit/73f943f89a89374a83cdfb31f0bfbfdfe4d6f52e), - [Part 2](https://github.com/wekan/wekan/commit/7dfb1eb6ce00166a6263f98b9bf975b8a84d1143). - Thanks to xet7. -- [ReactiveCache, use default parameters](https://github.com/wekan/wekan/pull/5091). - Thanks to mfilser. -- [ReactiveCache, serialize and parse json with EJSON](https://github.com/wekan/wekan/pull/5092). - Thanks to mfilser. -- [Translations are working on the client side again](https://github.com/wekan/wekan/pull/5093). - Thanks to mfilser. -- [ReactiveCache, full implementation of the collection "Translation"](https://github.com/wekan/wekan/pull/5094). - Thanks to mfilser. -- [Attachments, big images are now fully displayed](https://github.com/wekan/wekan/pull/5095). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.08 2023-08-17 WeKan ® release - -This release adds the following new features: - -- [Custom translation strings at Admin Panel](https://github.com/wekan/wekan/pull/5085). - Thanks to ipyramiddev. -- [Added remaining translations to feature custom translation strings at Admin Panel](https://github.com/wekan/wekan/commit/c769bed7dd6d61b5f56e0ec5d43c9f2662a156d2). - Thanks to xet7. -- [Corrected source code so that it works correctly with reactiveCache](https://github.com/wekan/wekan/pull/5087). - Thanks to ipyramiddev. - -and adds the following updates: - -- Updated release scripts. - [Part 1](https://github.com/wekan/wekan/commit/558d406148eb47c27de9828b541f6081ceac224a), - [Part 2](https://github.com/wekan/wekan/commit/d6b960f79a5cb9db83587fae7d9c83d2ee63d90c), - [Part 3](https://github.com/wekan/wekan/commit/c570e426a1e6c4055a72a8ae6febce016c3eef5a), - [Part 4](https://github.com/wekan/wekan/commit/c47d5ca64e8c9c8a977d7dca5aeb92afb2e62fe5), - [Part 5](https://github.com/wekan/wekan/commit/7b94188f64e554be11bee244892a0cd9fefd0a9a), - [Part 6](https://github.com/wekan/wekan/commit/b068d07ce56add0fbd02a4a23fcb14d77bd9fcfd). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix broken attachment preview in Safari](https://github.com/wekan/wekan/pull/5088). - Thanks to VidVidex. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.07 2023-08-16 WeKan ® release - -This release adds the following updates: - -- [Update Windows bundle build script](https://github.com/wekan/wekan/commit/d48068f63c93fc5a9f8041acb220d6491b5e22ae). - Thanks to xet7. - -and fixes the following bugs: - -- [Fix downloading attachments with unusual filenames](https://github.com/wekan/wekan/pull/5083). - Thanks to VidVidex. -- [Add some filename, if there is no filename after sanitize](https://github.com/wekan/wekan/commit/3d1a161c59a0cb4eafb50ab2fdb04443d54b2086). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.06 2023-08-15 WeKan ® release - -This release adds the following updates: - -- [Updated exceljs and jszip](https://github.com/wekan/wekan/commit/f9823f67bd7ded44982298b15487f945e8216b60). - Thanks to developers of dependencies. -- [Update building Windows bundle](https://github.com/wekan/wekan/commit/6d1705af344a36e1cd7846c3d41e486ae0200e2e). - Thanks to xet7. -- [s390x disabled, because there is problem adding fibers](https://github.com/wekan/wekan/commit/9bf3b960a199ec8d65faab3061947d809144ebdc). - Thanks to xet7. - -and fixes the following bugs: - -- [Alphabetic ordered member lists on assigne and member lists](https://github.com/wekan/wekan/pull/5071). - Thanks to chrisi51. -- [Label drag/drop (reorder labels) works now again](https://github.com/wekan/wekan/pull/5075). - Thanks to mfilser. -- [Add attachment swiping](https://github.com/wekan/wekan/pull/5080). - Thanks to VidVidex. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.05 2023-08-08 WeKan ® release - -This release adds the following updates: - -- [Updated dependencies](https://github.com/wekan/wekan/commit/529a43fa0e47ff478dd6b2e6f1c7b4513fe0bbbb). - Thanks to developers of dependencies. - -and fixes the following bugs: - -- [Make default swimlane auto-height](https://github.com/wekan/wekan/pull/5059). - Thanks to mark-i-m. -- [Show option b) -1 for disabling swimlane height at swimlane height popup](https://github.com/wekan/wekan/commit/ab4073721151e1308b2e9ffd32a1ee765c7b7668). - Thanks to xet7. -- [Fixed Normal (non-admin) board users cannot adjust swimlane height](https://github.com/wekan/wekan/commit/6b1403984f3b11700f6b06b4eff64a062916381a). - Thanks to mgdbbrt and xet7. -- [Fixing positioning of opened cards](https://github.com/wekan/wekan/pull/5066). - Thanks to chrisi51. -- [Cleaner memberlist popups](https://github.com/wekan/wekan/issues/5068). - Thanks to chrisi51. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.04 2023-08-03 WeKan ® release - -This release fixes the following bugs: - -- [Fix edit_swimlane](https://github.com/wekan/wekan/pull/5055). - Thanks to Pandetthe. -. [Login layout fixes 2](https://github.com/wekan/wekan/pull/5056). - Thanks to nebulade. -- [Do not open preview for attachments that cannot be previewed](https://github.com/wekan/wekan/pull/5058). - Thanks to VidVidex. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.03 2023-08-02 WeKan ® release - -This release fixes the following bugs: - -- [Fix return value of edit_custom_field_dropdown_item](https://github.com/wekan/wekan/pull/5047). - Thanks to Pandetthe. -- [Move authentication UI handling in correct place](https://github.com/wekan/wekan/pull/5049). - Thanks to nebulade. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.02 2023-08-02 WeKan ® release - -This release adds the following new features: - -- [Make swimlane height and list width adjustable](https://github.com/wekan/wekan/pull/4964). - Thanks to mark-i-m. -- [Don't translate swimlane height and list width minimum value](https://github.com/wekan/wekan/commit/7baf7d2256b87f66aa31ee282e08ebbd4564202d). - Thanks to xet7. - -and adds the following updates: - -- [Upgrade to Meteor 2.13 and Node.js 14.21.4](https://github.com/wekan/wekan/commit/caa8d087389b3f212c5eb4b7f538f3ad7c8c1227). - Thanks to Meteor developers. -- [Upgrade WeKan Docker to Node.js 14.21.4](https://github.com/wekan/wekan/commit/8dc7aa490a456cbf3207d266470febe69c0d5b6a). - Thanks to Meteor and xet7. -- [Upgrade to MongoDB 6.0.8 in Snap Candidate](https://github.com/wekan/wekan/commit/a773abaf2f4c77cbf586e2b0cba7b9ce412527ef). - Thanks to MongoDB developers. -- [Upgrade WeKan Snap Candidate to Node.js 14.21.4](https://github.com/wekan/wekan/commit/0161f19ba7ac63c40933bb4550f5397ddecd3452). - Thanks to Meteor and xet7. -- [Upgrade WeKan StackSmith to Node.js 14.21.4](https://github.com/wekan/wekan/commit/f0620ce8800eccff4da822048f90ee4812560937). - Thanks to Meteor and xet7. -- [Upgrade to Node.js 14.21.4 at build scripts and remaining Docker containers](https://github.com/wekan/wekan/commit/9f6e6bdc8193d86387166468578a6a24811ca9ec). - Thanks to Meteor and xet7. - -and fixes the following bugs: - -- [Only selectively show login elements once settings is loaded](https://github.com/wekan/wekan/pull/5032). - Thanks to nebulade. -- [First registration after installation must be an admin account](https://github.com/wekan/wekan/pull/5037). - Thanks to mfilser. -- [Fix get_board_cards_count](https://github.com/wekan/wekan/pull/5040). - Thanks to Pandetthe. -- [Login layout code cleanup](https://github.com/wekan/wekan/pull/5041). - Thanks to nebulade. -- [Drag board made translateable](https://github.com/wekan/wekan/commit/62c2d59f469a3e4d11df010ed65561defdda991f). - Thanks to xet7. -- [Fixed v7.01.0 fresh install in listview first column small](https://github.com/wekan/wekan/commit/7b607b2aaf852b550d968c2f1ec17f53fb5d686e). - Thanks to intellekta and xet7. -- [Fix assignees description](https://github.com/wekan/wekan/pull/5043). - Thanks to Pandetthe. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.01 2023-07-21 WeKan ® release - -This release fixes the following bugs: - -- [Fix for Calendar View Create Card](https://github.com/wekan/wekan/pull/5019). - Thanks to DimDz. -- [Minicard didn't show the assignee](https://github.com/wekan/wekan/pull/5021). - Thanks to mfilser. -- [Helm Chart: Add imagePullPolicy to initContainer. Needed for running wekan when restarting while offline](https://github.com/wekan/charts/pull/21). - Thanks to jadams. -- [Removing Utils.getCurrentSetting() and use ReactiveCache directly](https://github.com/wekan/wekan/pull/5022). - Thanks to mfilser. -- [Attachment rename and delete works now again for non board admins](https://github.com/wekan/wekan/pull/5023). - Thanks to mfilser. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v7.00 2023-07-19 WeKan ® release - -This release adds the following new features: - -- [Speed improvements to Board and List loading](https://github.com/wekan/wekan/pull/5014). - Thanks to mfilser. - -and adds the following updates: - -- [Forked meteor-globals and meteor-reactive-cache to @wekanteam/meteor-globals and @wekanteam/meteor-reactive-cache to update to newest dependencies](https://github.com/wekan/wekan/commit/1c5857f0646658b121d7612b6176ec5e09c68592). - Thanks to xet7. - -and fixes the following bugs: - -- [Added missing @babel/runtime](https://github.com/wekan/wekan/commit/60cb5fb0176ecb623d494613aab196f252c16752). - Thanks to xet7. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v6.99.9 2023-07-18 WeKan ® release - -This release fixes the following bugs: - -- [Fix "PROPAGATE_OIDC_DATA" mechanism if "info.groups" is undefined](https://github.com/wekan/wekan/pull/5011). - Thanks to NotTheEvilOne. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v6.99.8 2023-07-13 WeKan ® release - -This release fixes the following bugs: - -- [Fix card creation. Now date fields are checked if they are empty](https://github.com/wekan/wekan/pull/5009). - Thanks to helioguardabaxo. -- [Helm Chart: Changes for Openshift](https://github.com/wekan/charts/pull/20). - Thanks to salleman33. - -Thanks to above GitHub users for their contributions and translators for their translations. - -# v6.99.7 2023-07-11 WeKan ® release - -This release adds the following updates: - -- [Updated dependencies](https://github.com/wekan/wekan/pull/5008). - Thanks to dependabot. - -and fixes the following bugs: - -- [Fix setting background image](https://github.com/wekan/wekan/pull/5004). - Thanks to VidVidex. -- [Added missing character](https://github.com/wekan/wekan/commit/4431ec5a2761d56685d2fca1202679b9bdcd9b81). - Thanks to xet7. -- [Added back datepicker](https://github.com/wekan/wekan/commit/912479baa48354a68bc807737a3db7975a4cb95c). - Thanks to xet7. Thanks to above GitHub users for their contributions and translators for their translations. @@ -4131,7 +2338,7 @@ and adds the following accessibility improvements: - Made WeKan zoomable by recommendation of Axe browser extension https://github.com/wekan/wekan/issues/459#issuecomment-999098233 by changing meta viewport settings at - https://github.com/wekan/wekan/blob/main/client/components/main/layouts.jade#L3 , + https://github.com/wekan/wekan/blob/master/client/components/main/layouts.jade#L3 , in some commit of this WeKan v5.88. Thanks to xet7. @@ -7985,7 +6192,7 @@ This release fixes the following CRITICAL SECURITY VULNERABILITIES: - [Fix XSS bug reported today 4 hours ago by Cyb3rjunky](https://github.com/wekan/wekan/commit/482682e50079d70c5113169020d6834013b57c11). Logged in users could run javascript in input fields. This affects Wekan versions v3.12-v3.84. - In [Wekan v3.12](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v312-2019-08-09-wekan-release) + In [Wekan v3.12](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v312-2019-08-09-wekan-release) there was [changes for XSS filter to allow inserting images, videos etc on comment WYSIWYG editor](https://github.com/wekan/wekan/pull/2593) so features related to that are now removed. @@ -10451,7 +8658,7 @@ This release adds the following new features: and fixes the following bugs: - Revert [Sandstorm API changes](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535) - that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v205-2019-01-27-wekan-release) + that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v205-2019-01-27-wekan-release) to fix #2143. Thanks to pantraining and xet7. Thanks to above GitHub users and translators for contributions. @@ -10598,7 +8805,7 @@ Update translations. Thanks to translators. This release adds the following new features: - [IFTTT Rules improvements](https://github.com/wekan/wekan/pull/2088). Thanks to Angtrim. -- Add [find.sh](https://github.com/wekan/wekan/blob/main/find.sh) bash script that ignores +- Add [find.sh](https://github.com/wekan/wekan/blob/master/find.sh) bash script that ignores extra directories when searching. xet7 uses this a lot when developing. Thanks to xet7. Thanks to above GitHub users for their contributions. @@ -12109,7 +10316,7 @@ This release adds the following new features: - [Checklist templates](https://github.com/wekan/wekan/pull/1470); - Added [Finnish language changelog](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog) - and [more Finnish traslations](https://github.com/wekan/wekan/blob/main/sandstorm-pkgdef.capnp) + and [more Finnish traslations](https://github.com/wekan/wekan/blob/master/sandstorm-pkgdef.capnp) to Sandstorm. Thanks to GitHub users erikturk and xet7 for their contributions. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index ab3b34b15..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,22 +0,0 @@ -# Code of Conduct - -For all code at WeKan GitHub Organization https://github.com/wekan - -- All code in pull requests need to have permission already to add it to WeKan with MIT license, and will become MIT license. -- All code xet7 add is MIT license. -- For any dependencies, permissive licenses like https://copyfree.org are preferred -- For anything currently that is non-permissive (like GPL, AGPL, SSPL), those will be replaced with permissive-licensed alternatives - -# Reporting about violations or something else - -## Private reports - -- Email support@wekan.team -- Security issues: [SECURITY.md](SECURITY.md) -- License violations -- Anything private, sensitive or negative - -## Public - -- Feature Requests and Bug Reports https://github.com/wekan/wekan/issues -- Anything happy, positive, encouraging, helping, at friendly WeKan Global FOSS Community diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 051a3a90a..6d339dcf4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,35 +1,19 @@ -## About money - -Not paid: - -- Money is not paid for these, everyone uses their own time at their own cost: - - Security reports, see [SECURITY.md](SECURITY.md) - - Pull requests - - xet7 checking pull requests -- Public Community Support - - https://github.com/wekan/wekan/issues - -Paid by customers of WeKan Team: - -- Commercial Support at https://wekan.team/commercial-support/ - - Support - - Private Chat - - Features - - Fixes - - Hosting - ## Contributing Security related For responsible security disclosure, please follow this process: -https://github.com/wekan/wekan/blob/main/SECURITY.md +https://github.com/wekan/wekan/blob/master/SECURITY.md CVE Hall of Fame is at https://wekan.github.io/hall-of-fame/ ## Contributing to Documentation Wiki -Fork WeKan repo https://github.com/wekan/wekan , -edit `docs` directory content at GitHub web interface, -and click send PR. +Please clone wiki: +``` +git clone https://github.com/wekan/wekan.wiki +``` +Edit .md files, and add changed files in .zip attachment +directly to comment of new issue at +https://github.com/wekan/wekan/issues ## Contributing code @@ -38,7 +22,7 @@ and click send PR. WeKan code contributors Hall of Fame is at ChangeLog, where GitHub usernames are mentioned with changes added: -https://github.com/wekan/wekan/blob/main/CHANGELOG.md +https://github.com/wekan/wekan/blob/master/CHANGELOG.md Changes can be like typo fixes, bugfixes, features, or anything else like for example at open GitHub issues https://github.com/wekan/wekan/issues . @@ -58,7 +42,7 @@ About 300 persons have contributed to WeKan, stats at: https://www.openhub.net/p/wekan -WeKan maintainer xet7 reviews PR for typos etc before accepting to WeKan, +WeKan maintainer xet7 checks PR for typos etc before accepting to WeKan, so that WeKan code will still work OK. ## Contributing translations @@ -69,7 +53,7 @@ https://transifex.com/wekan/wekan When adding new features, in your PR to https://github.com/wekan/wekan/pulls only add new English source language strings -to https://github.com/wekan/wekan/blob/main/imports/i18n/data/en.i18n.json +to https://github.com/wekan/wekan/blob/master/imports/i18n/data/en.i18n.json Maintainer of WeKan xet7 downloads all newest translations from Transifex and adds @@ -78,10 +62,12 @@ new release. ## About WeKan Organization https://github.com/wekan -Only xet7 has write access to WeKan Organization. +xet7 rarely adds any new members to GitHub Organization, +because xet7 prefers to check PRs. -xet7 reviews all PRs before merging. +For some repos (other than https://github.com/wekan/wekan ), +some contributors have direct commit access. -There has been over 300 contributors to WeKan, newest stats at: +Some contributors are mentioned at this outdated page: -https://www.openhub.net/p/wekan +https://github.com/wekan/wekan/wiki/Team diff --git a/Dockerfile b/Dockerfile index 64a4e921f..b7a0d2a1e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,10 @@ -FROM ubuntu:24.04 +FROM --platform=linux/amd64 ubuntu:23.04 as wekan LABEL maintainer="wekan" -LABEL org.opencontainers.image.ref.name="ubuntu" -LABEL org.opencontainers.image.version="24.04" -LABEL org.opencontainers.image.source="https://github.com/wekan/wekan" + +# 2022-09-04: +# - above "--platform=linux/amd64 ubuntu:22.04 as wekan" is needed to build Dockerfile +# correctly on Mac M1 etc, to not get this error: +# https://stackoverflow.com/questions/71040681/qemu-x86-64-could-not-open-lib64-ld-linux-x86-64-so-2-no-such-file-or-direc # 2022-04-25: # - gyp does not yet work with Ubuntu 22.04 ubuntu:rolling, @@ -11,23 +13,24 @@ LABEL org.opencontainers.image.source="https://github.com/wekan/wekan" # 2021-09-18: # - Above Ubuntu base image copied from Docker Hub ubuntu:hirsute-20210825 # to Quay to avoid Docker Hub rate limits. + +# Set the environment variables (defaults where required) +# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 +# ENV BUILD_DEPS="paxctl" ARG DEBIAN_FRONTEND=noninteractive -ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3" - -ENV \ +ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \ DEBUG=false \ - NODE_VERSION=v14.21.4 \ - METEOR_RELEASE=METEOR@2.14 \ + NODE_VERSION=v14.21.3 \ + METEOR_RELEASE=METEOR@2.12-beta.2 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ - NPM_VERSION=6.14.17 \ + NPM_VERSION=latest \ FIBERS_VERSION=4.0.1 \ ARCHITECTURE=linux-x64 \ SRC_PATH=./ \ WITH_API=true \ RESULTS_PER_PAGE="" \ - DEFAULT_BOARD_ID="" \ ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \ ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \ ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \ @@ -62,7 +65,6 @@ ENV \ OIDC_REDIRECTION_ENABLED=false \ OAUTH2_CA_CERT="" \ OAUTH2_ADFS_ENABLED=false \ - OAUTH2_B2C_ENABLED=false \ OAUTH2_LOGIN_STYLE=redirect \ OAUTH2_CLIENT_ID="" \ OAUTH2_SECRET="" \ @@ -158,7 +160,7 @@ ENV \ WRITABLE_PATH=/data \ S3="" -# NODE_OPTIONS="--max_old_space_size=4096" +# NODE_OPTIONS="--max_old_space_size=4096" \ #--------------------------------------------- # == at docker-compose.yml: AUTOLOGIN WITH OIDC/OAUTH2 ==== @@ -169,98 +171,95 @@ ENV \ # Copy the app to the image COPY ${SRC_PATH} /home/wekan/app -# Install OS -RUN < Newest WeKan at amd64 platforms: Linux bundle, Snap Candidate, Docker, Kubernetes. Fixing other platforms In Progress. - -Platform support changes often, because: - -- There are many dependencies, that update or break or change often -- Node.js segfaults at some CPU/OS -- Some platforms have build errors - -Roadmap is to update all existing platforms, and add more platforms. - -Upcoming platform upgrades: - -- Fix migrations, so that newest WeKan can be released to Snap Stable. (Currently newest is at Snap Candidate). - -## WeKan features - -Most Meteor WeKan features are listed here: - -https://github.com/wekan/wekan/wiki/Deep-Dive-Into-WeKan - -Remaining features and all changes are listed here: - -https://github.com/wekan/wekan/blob/main/CHANGELOG.md diff --git a/GOVERNANCE.md b/GOVERNANCE.md deleted file mode 100644 index c0d3fd6b8..000000000 --- a/GOVERNANCE.md +++ /dev/null @@ -1,10 +0,0 @@ -# Governance - -Anyone can send pull request to https://github.com/wekan/wekan/wiki/pulls , -if there is permission to add code to WeKan with MIT license. - -As maintainer, xet7 checks all pull requests and merges them. - -Only xet7 has write access to repo https://github.com/wekan/wekan - - diff --git a/LICENSE b/LICENSE index 2c8dfcbb7..c2d691582 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2024 The Wekan Team +Copyright (c) 2014-2019 The Wekan Team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 231512512..f37614d47 100644 --- a/README.md +++ b/README.md @@ -2,34 +2,23 @@ # WeKan ® - Open Source kanban -## Downloads - -https://wekan.github.io / Install WeKan ® Server - ## Docker Containers -- [GitHub](https://github.com/wekan/wekan/pkgs/container/wekan) - [Quay](https://quay.io/repository/wekan/wekan) - [Docker Hub](https://hub.docker.com/r/wekanteam/wekan) -docker-compose.yml at https://github.com/wekan/wekan/blob/main/docker-compose.yml - -## Standards - -- [WeKan and Standard for Public Code](https://wekan.github.io/standard-for-public-code/) assessment was made at 2023-11. - Currently Wekan meets 8 out of 16 criteria out of the box. - Some others could be met with small changes. +Other platforms and compatible software versions at https://wekan.github.io Download section. ## Code stats -- [CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4619) - [Code Climate](https://codeclimate.com/github/wekan/wekan) - [Open Hub](https://www.openhub.net/p/wekan) - [OSS Insight](https://ossinsight.io/analyze/wekan/wekan) +- [CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4619) ## [Translate WeKan ® at Transifex](https://app.transifex.com/wekan/) -Translations to non-English languages are accepted only at [Transifex](https://app.transifex.com/wekan/wekan) using webbrowser. +Translations to non-English languages are accepted only at [Transifex](https://app.transifex.com/wekan/) using webbrowser. New English strings of new features can be added as PRs to master branch file wekan/imports/i18n/data/en.i18n.json . ## [WeKan ® feature requests and bugs](https://github.com/wekan/wekan/issues) @@ -81,14 +70,14 @@ that by providing one-click installation on various platforms. [Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows). [More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists. - 1 GB RAM minimum free for WeKan ®. Production server should have minimum total 4 GB RAM. - For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/main/docker-compose.yml): 3 frontend servers, + For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/master/docker-compose.yml): 3 frontend servers, each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs. - Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted. - SECURITY: Updating to newest WeKan ® version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off. Old versions have security issues because of old versions Node.js etc. Only newest WeKan ® is supported. WeKan ® on Sandstorm is not usually affected by any Standalone WeKan ® (Snap/Docker/Source) security issues. - [Reporting all new bugs immediately](https://github.com/wekan/wekan/issues). - New features and fixes are added to WeKan ® [many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md). + New features and fixes are added to WeKan ® [many times a day](https://github.com/wekan/wekan/blob/master/CHANGELOG.md). - [Backups](https://github.com/wekan/wekan/wiki/Backup) of WeKan ® database once a day miminum. Bugs, updates, users deleting list or card, harddrive full, harddrive crash etc can eat your data. There is no undo yet. Some bug can cause WeKan ® board to not load at all, requiring manual fixing of database content. @@ -100,21 +89,13 @@ that by providing one-click installation on various platforms. [Developer Documentation][dev_docs] - There is many companies and individuals contributing code to WeKan ®, to add features and bugfixes - [many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md). + [many times a day](https://github.com/wekan/wekan/blob/master/CHANGELOG.md). - [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues). - [Commercial Support](https://wekan.team/commercial-support/). We also welcome sponsors for features and bugfixes. By working directly with WeKan ® you get the benefit of active maintenance and new features added by growing WeKan ® developer community. -## Getting Started with Development - -The default branch uses [Meteor 2 with Node.js 14](https://wekan.github.io/install/). - -To contribute, [create a fork](https://github.com/wekan/wekan/wiki/Emoji#2-create-fork-of-httpsgithubcomwekanwekan-at-github-web-page) and run `./rebuild-wekan.sh` (or `./rebuild-wekan.bat` on Windows) as detailed [here](https://github.com/wekan/wekan/wiki/Emoji#3-select-option-1-to-install-dependencies-and-then-enter). Once you're ready, please test your code and [submit a pull request (PR)](https://github.com/wekan/wekan/wiki/Emoji#7-test). - -Please refer to the [developer documentation](https://github.com/wekan/wekan/wiki/Developer-Documentation) for more information. - ## Screenshot [More screenshots at Features page](https://github.com/wekan/wekan/wiki/Features) @@ -128,7 +109,7 @@ with [Meteor](https://www.meteor.com). [platforms]: https://github.com/wekan/wekan/wiki/Platforms [dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation -[screenshot_wekan]: https://wekan.github.io/wekan-dark-mode.png +[screenshot_wekan]: https://wekan.github.io/wekan-markdown.png [features]: https://github.com/wekan/wekan/wiki/Features [roadmap_wekan]: https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license [wekan_issues]: https://github.com/wekan/wekan/issues diff --git a/SECURITY.md b/SECURITY.md index 9e6cd4549..df91812a7 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,7 +1,6 @@ -About money, see [CONTRIBUTING.md](CONTRIBUTING.md) - Security is very important to us. If you discover any issue regarding security, please disclose -the information responsibly by sending an email to security@wekan.team and not by +the information responsibly by sending an email to support (at) wekan.team using +[this PGP public key](support-at-wekan.team_pgp-publickey.asc) and not by creating a GitHub issue. We will respond swiftly to fix verifiable security issues. We thank you with a place at our hall of fame page, that is @@ -30,7 +29,7 @@ added to the Wekan Hall of Fame. ## Which domains are in scope? No public domains, because all those are donated to Wekan Open Source project, -and we don't have any permissions to do security scans on those donated servers. +and we don't have any permissions to do security scans on those donated servers Please don't perform research that could impact other users. Secondly, please keep the reports short and succinct. If we fail to understand the logics of your bug, we will tell you. @@ -49,132 +48,31 @@ like Snap and Docker have their own specific sandboxing etc features. Standalone Wekan by default does not load any files from Internet, like fonts, CSS, etc. This also means all Standalone Wekan functionality works in offline local networks. -WeKan is used at most countries of the world https://snapcraft.io/wekan -and by by companies that have 30k users. +Wekan is used by companies that have [thousands of users](https://github.com/wekan/wekan/wiki/AWS) and at healthcare. -- Wekan private board attachments are not accessible without logging in. -- There is feature to set board public, so that board is visible without logging in in readonly mode, with realtime updates. -- Admin Panel has feature to disable all public boards, so all boards are private. +Wekan uses xss package for input fields like cards, as you can see from +[package.json](https://github.com/wekan/wekan/blob/master/package.json). Other used versions can be seen from +[Meteor versions file](https://github.com/wekan/wekan/blob/master/.meteor/versions). +Forms can include markdown links, html, image tags etc like you see at https://wekan.github.io . +It's possible to add attachments to cards, and markdown/html links to files. -## SSL/TLS +Wekan attachments are not accessible without logging in. Import from Trello works by copying +Trello export JSON to Wekan Trello import page, and in Trello JSON file there is direct links to all publicly +accessible Trello attachment files, that Standalone Wekan downloads directly to Wekan MongoDB database in +[CollectionFS](https://github.com/wekan/wekan/pull/875) format. When Wekan board is exported in +Wekan JSON format, all board attachments are included in Wekan JSON file as base64 encoded text. +That Wekan JSON format file can be imported to Sandstorm Wekan with all the attachments, when we get +latest Wekan version working on Sandstorm, only couple of bugs are left before that. In Sandstorm it's not +possible yet to import from Trello with attachments, because Wekan does not implement Sandstorm-compatible +access to outside of Wekan grain. -- SSL/TLS encrypts traffic between webbrowser and webserver. -- If you are thinking about TLS MITM, look at https://github.com/caddyserver/caddy/issues/2530 -- Let's Encrypt TLS requires publicly accessible webserver, that Let's Encrypt TLS validation servers check. -- If firewall limits to only allowed IP addresses, you may need non-Let's Encrypt TLS cert. -- For On Premise: - - https://caddyserver.com/docs/automatic-https#local-https - - https://github.com/wekan/wekan/wiki/Caddy-Webserver-Config - - https://github.com/wekan/wekan/wiki/Azure - - https://github.com/wekan/wekan/wiki/Traefik-and-self-signed-SSL-certs +Standalone Wekan only has password auth currently, there is work in progress to add +[oauth2](https://github.com/wekan/wekan/pull/1578), [Openid](https://github.com/wekan/wekan/issues/538), +[LDAP](https://github.com/wekan/wekan/issues/119) etc. If you need more login security for Standalone Wekan now, +it's possible add additional [Google Auth proxybouncer](https://github.com/wekan/wekan/wiki/Let's-Encrypt-and-Google-Auth) in front of password auth, and then use Google Authenticator for Google Auth. Standalone Wekan does have [brute force protection with eluck:accounts-lockout and browser-policy clickjacking protection](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v080-2018-04-04-wekan-release). You can also optionally use some [WAF](https://en.wikipedia.org/wiki/Web_application_firewall) +like for example [AWS WAF](https://aws.amazon.com/waf/). -## XSS - -- Dompurify https://www.npmjs.com/package/dompurify - - WeKan uses dompurify npm package to filter for XSS at fields like cards, as you can see from - [package.json](https://github.com/wekan/wekan/blob/main/package.json). Other used versions can be seen from - [Meteor versions file](https://github.com/wekan/wekan/blob/main/.meteor/versions). - - Forms can include markdown links, html, image tags etc like you see at https://wekan.github.io . - - It's possible to add attachments to cards, and markdown/html links to files. - - Dompurify cleans up viewed code, so Javascript in input fields does not execute - - https://wekan.github.io/hall-of-fame/fieldbleed/ -- Reaction in comment is now checked, that it does not have extra added code - - https://wekan.github.io/hall-of-fame/reactionbleed/ -- https://github.com/wekan/wekan/blob/main/packages/markdown/src/template-integration.js#L76 - -## QA about PubSub - -Q: - -Hello, -I have just seen the Meteor DevTools Evolved extension and was wondering if anyone had asked themselves the question of security. -Insofar as all data is shown in the minimongo tab in plain text. -How can data be hidden from this extension? - -A: - -## PubSub - -- It is not security issue to show some text or image, that user has permission to see. It is a security issue, if browserside is some text or image that user should not see. -- Meteor has browserside minimongo database, made with Javascript, updated with Publish/Subscribe, PubSub. -- Publish/Subscribe means, that realtime web framework reads database changes stream, and then immediately updates webpage, - like like dashboards, chat, kanban. That is the point in any realtime web framework in any programming language. -- Yes, you should check with Meteor DevTools Evolved Chromium/Firefox extension that at minimongo is only text that user has permission to see. -- Do checking as logged in user, and logged out user. -- Check permissions and sanitize before allowing some change, because someone could modify content of input field, - PubSub/websocket data (for example with Burp Suite Community Edition), etc. -- If you have REST API, also check that only those that have login token, and have permission, can view or edit text -- You should not include any data user is not allowed to see. Not to webpage text, not to websockets/PubSub, etc. -- Minimongo should not have password hashes PubSub https://wekan.github.io/hall-of-fame/userbleed/ -- PubSub uses Websockets, so you need those to be enabled at webserver like Caddy/Nginx/Apache etc, examples of settings - at right menu of https://github.com/wekan/wekan/wiki -- Clientside https://github.com/wekan/wekan/tree/main/client/components subscribes to - PubSub https://github.com/wekan/wekan/tree/main/server/publications or calls meteor methods at https://github.com/wekan/wekan/tree/main/models -- For Admin: - - You can have input field for password https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312 - - You can save password to database https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312 - - Check that only current user or Admin can change password https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312 - - Note that currentUser uses code like Meteor.user() in .js file - - Do not have password hashes in PubSub https://github.com/wekan/wekan/blob/main/server/publications/users.js - - Only show Admin Panel to Admin https://github.com/wekan/wekan/blob/main/client/components/settings/settingBody.jade#L3 -- If there is a lot of data, use pagination https://github.com/wekan/wekan/blob/main/client/components/settings/peopleBody.js -- Only have limited amount of data published in PubSub. Limit in MongoDB query in publications how much is published. Too much could make browser too slow. -- Use Environment variables for any email etc passwords. -- But what if you would like to remove minimongo? And only use Meteor methods for saving? In that case, you don't have realtime updates, - and you need to write much more code to load and save data yourself, handle any multi user data saving conflicts yourself, - and many Meteor Atmospherejs.com PubSub using packages would not work anymore https://github.com/wekan/we - -## PubSub: Fix that user can not change to Admin - -- With PubSub, there is checking, that someone modifying Websockets content, like permission isAdmin, can not change to Admin. -- https://github.com/wekan/wekan/commit/cbad4cf5943d47b916f64b4582f8ca76a9dfd743 -- https://wekan.github.io/hall-of-fame/adminbleed/ - -## Permissions and Roles - -- For any user permissions, it's best to use Meteor package package https://github.com/Meteor-Community-Packages/meteor-roles . -- Currently WeKan has custom hardcoded permissions, WeKan does not yet use that meteor-roles package. - - Using permissions at WeKan sidebar https://github.com/wekan/wekan/blob/main/client/components/sidebar/sidebar.js#L1854-L1875 - - List of roles https://github.com/wekan/wekan/wiki/REST-API-Role . Change at board or Admin Panel. Also Organizations/Teams. - - Worker role: https://github.com/wekan/wekan/issues/2788 - - Not implemented yet: Granular Roles https://github.com/wekan/wekan/issues/3022 -- Check is user logged in, with `if (Meteor.user()) {` -- Check is code running at server `if (Meteor.isServer()) {` or client `if Meteor.isClient()) {` . -- Here is some authentication code https://github.com/wekan/wekan/blob/main/server/authentication.js - -## Environment variables - -- For any passwords, use environment variables, those are serverside -- Do not copy environment variable to public variable that is visible browserside https://github.com/wekan/wekan/blob/main/server/max-size.js - -``` -Meteor.startup(() => { - if (process.env.HEADER_LOGIN_ID) { - Meteor.settings.public.attachmentsUploadMaxSize = process.env.ATTACHMENTS_UPLOAD_MAX_SIZE; - Meteor.settings.public.attachmentsUploadMimeTypes = process.env.ATTACHMENTS_UPLOAD_MIME_TYPES; - Meteor.settings.public.avatarsUploadMaxSize = process.env.AVATARS_UPLOAD_MAX_SIZE; -``` - -- For serverside, you can set Meteor.settings.variablename, without text public -- For WeKan kanban, there is feature for setting board public, it can be viewed by anyone, there is realtime updates. But -- Some of those permissions are checked at users.js models at https://github.com/wekan/wekan/tree/main/models -- Environment variables are used for email server passwords, etc, at all platforms https://github.com/wekan/wekan/commit/a781c0e7dcfdbe34c1483ee83cec12455b7026f7 - -## Escape HTML comment tags so that HTML comments are visible - -- Someone reported, that it is problem that content of HTML comments in edit mode, are not visible at at view mode, so this makes HTML comments visible. -- https://github.com/wekan/wekan/commit/167863d95711249e69bb3511175d73b34acbbdb3 -- https://wekan.github.io/hall-of-fame/invisiblebleed/ - -## Attachments: XSS in filename is sanitized - -- https://github.com/wekan/wekan/blob/main/client/components/cards/attachments.js#L303-L312 -- https://wekan.github.io/hall-of-fame/filebleed/ - -## Brute force login protection - -- https://github.com/wekan/wekan/commit/23e5e1e3bd081699ce39ce5887db7e612616014d -- https://github.com/wekan/wekan/tree/main/packages/wekan-accounts-lockout +[All Wekan Platforms](https://github.com/wekan/wekan/wiki/Platforms) ### Sandstorm Wekan Security @@ -207,6 +105,12 @@ a security issue, we'd like to know about it, and also how to fix it: Typical already known or "no impact" bugs such as: +- Brute force password guessing. Currently there is + [brute force protection with eluck:accounts-lockout](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v080-2018-04-04-wekan-release). +- Security issues related to that Wekan uses Meteor 1.6.0.1 related packages, and upgrading to newer + Meteor 1.6.1 is complicated process that requires lots of changes to many dependency packages. + Upgrading [has been tried many times, spending a lot of time](https://github.com/meteor/meteor/issues/9609) + but there still is issues. Helping with package upgrades is very welcome. - [Wekan API old tokens not replaced correctly](https://github.com/wekan/wekan/issues/1437) - Missing Cookie flags on non-session cookies or 3rd party cookies - Logout CSRF @@ -217,7 +121,7 @@ Typical already known or "no impact" bugs such as: - Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server. Wekan is Open Source with MIT license, and free to use also for commercial use. -We welcome all fixes to improve security by email to security@wekan.team +We welcome all fixes to improve security by email to security (at) wekan.team . ## Bonus Points diff --git a/Stackerfile.yml b/Stackerfile.yml index 257145fd9..132026d91 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v7.84.0" +appVersion: "v6.99.5" files: userUploads: - README.md diff --git a/api.py b/api.py index c6f2064c4..992cfa1fe 100755 --- a/api.py +++ b/api.py @@ -37,24 +37,9 @@ If *nix: chmod +x api.py => ./api.py users python3 api.py customfields BOARDID # Custom Fields of BOARDID python3 api.py customfield BOARDID CUSTOMFIELDID # Info of CUSTOMFIELDID python3 api.py addcustomfieldtoboard AUTHORID BOARDID NAME TYPE SETTINGS SHOWONCARD AUTOMATICALLYONCARD SHOWLABELONMINICARD SHOWSUMATTOPOFLIST # Add Custom Field to Board - python3 api.py editcustomfield BOARDID LISTID CARDID CUSTOMFIELDID NEWCUSTOMFIELDVALUE # Edit Custom Field + python3 api.py editcustomfield BOARDID LISTID CARDID CUSTOMFIELDID NEWCUSTOMFIELDVALUE python3 api.py listattachments BOARDID # List attachments - python3 api.py cardsbyswimlane SWIMLANEID LISTID # Retrieve cards list on a swimlane - python3 api.py getcard BOARDID LISTID CARDID # Get card info - python3 api.py addlabel BOARDID LISTID CARDID LABELID # Add label to a card - python3 api.py addcardwithlabel AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION LABELIDS # Add a card and a label - python3 api.py editboardtitle BOARDID NEWBOARDTITLE # Edit board title - python3 api.py copyboard BOARDID NEWBOARDTITLE # Copy a board - python3 api.py createlabel BOARDID LABELCOLOR LABELNAME (Color available: `white`, `green`, `yellow`, `orange`, `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`) # Create a new label - python3 api.py editcardcolor BOARDID LISTID CARDID COLOR (Color available: `white`, `green`, `yellow`, `orange`, `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`) # Edit card color - python3 api.py addchecklist BOARDID CARDID TITLE ITEM1 ITEM2 ITEM3 ITEM4 (You can add multiple items or just one, or also without any item, just TITLE works as well. * If items or Title contains spaces, you should add ' between them.) # Add checklist + item on a card - python3 api.py deleteallcards BOARDID SWIMLANEID ( * Be careful will delete ALL CARDS INSIDE the swimlanes automatically in every list * ) # Delete all cards on a swimlane - python3 api.py checklistid BOARDID CARDID # Retrieve Checklist ID attached to a card - python3 api.py checklistinfo BOARDID CARDID CHECKLISTID # Get checklist info - python3 api.py get_list_cards_count BOARDID LISTID # Retrieve how many cards in a list - python3 api.py get_board_cards_count BOARDID # Retrieve how many cards in a board - Admin API: python3 api.py users # All users python3 api.py boards # All Public Boards @@ -194,52 +179,6 @@ if arguments == 10: print(body.text) # ------- ADD CUSTOM FIELD TO BOARD END ----------- -if arguments == 8: - - if sys.argv[1] == 'addcardwithlabel': - # ------- ADD CARD WITH LABEL START ----------- - authorid = sys.argv[2] - boardid = sys.argv[3] - swimlaneid = sys.argv[4] - listid = sys.argv[5] - cardtitle = sys.argv[6] - carddescription = sys.argv[7] - labelIds = sys.argv[8] # Aggiunto labelIds - - cardtolist = wekanurl + apiboards + boardid + s + l + s + listid + s + cs - # Add card - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - post_data = { - 'authorId': '{}'.format(authorid), - 'title': '{}'.format(cardtitle), - 'description': '{}'.format(carddescription), - 'swimlaneId': '{}'.format(swimlaneid), - 'labelIds': labelIds - } - - body = requests.post(cardtolist, data=post_data, headers=headers) - print(body.text) - - # If ok id card - if body.status_code == 200: - card_data = body.json() - new_card_id = card_data.get('_id') - - # Updating card - if new_card_id: - edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + new_card_id - put_data = {'labelIds': labelIds} - body = requests.put(edcard, data=put_data, headers=headers) - print("=== EDIT CARD ===\n") - body = requests.get(edcard, headers=headers) - data2 = body.text.replace('}', "}\n") - print(data2) - else: - print("Error obraining ID.") - else: - print("Error adding card.") - # ------- ADD CARD WITH LABEL END ----------- - if arguments == 7: if sys.argv[1] == 'addcard': @@ -298,53 +237,7 @@ if arguments == 6: print(data2) # ------- EDIT CUSTOMFIELD END ----------- -if arguments == 5: - - if sys.argv[1] == 'addlabel': - - # ------- EDIT CARD ADD LABEL START ----------- - boardid = sys.argv[2] - listid = sys.argv[3] - cardid = sys.argv[4] - labelIds = sys.argv[5] - edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid - print(edcard) - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - put_data = {'labelIds': labelIds} - body = requests.put(edcard, data=put_data, headers=headers) - print("=== ADD LABEL ===\n") - body = requests.get(edcard, headers=headers) - data2 = body.text.replace('}',"}\n") - print(data2) - # ------- EDIT CARD ADD LABEL END ----------- - - if sys.argv[1] == 'editcardcolor': - # ------- EDIT CARD COLOR START ----------- - boardid = sys.argv[2] - listid = sys.argv[3] - cardid = sys.argv[4] - newcolor = sys.argv[5] - - valid_colors = ['white', 'green', 'yellow', 'orange', 'red', 'purple', 'blue', 'sky', 'lime', 'pink', 'black', - 'silver', 'peachpuff', 'crimson', 'plum', 'darkgreen', 'slateblue', 'magenta', 'gold', 'navy', - 'gray', 'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo'] - - if newcolor not in valid_colors: - print("Invalid color. Choose a color from the list.") - sys.exit(1) - - edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid - print(edcard) - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - put_data = {'color': '{}'.format(newcolor)} - body = requests.put(edcard, data=put_data, headers=headers) - print("=== EDIT CARD COLOR ===\n") - body = requests.get(edcard, headers=headers) - data2 = body.text.replace('}', "}\n") - print(data2) - # ------- EDIT CARD COLOR END ----------- - -if arguments >= 4: +if arguments == 4: if sys.argv[1] == 'newuser': @@ -358,155 +251,9 @@ if arguments >= 4: print("=== CREATE NEW USER ===\n") print(body.text) # ------- CREATE NEW USER END ----------- - - if sys.argv[1] == 'getcard': - - # ------- LIST OF CARD START ----------- - boardid = sys.argv[2] - listid = sys.argv[3] - cardid = sys.argv[4] - listone = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - print("=== INFO OF ONE LIST ===\n") - print("URL:", listone) # Stampa l'URL per debug - try: - response = requests.get(listone, headers=headers) - print("=== RESPONSE ===\n") - print("Status Code:", response.status_code) # Stampa il codice di stato per debug - - if response.status_code == 200: - data2 = response.text.replace('}', "}\n") - print(data2) - else: - print(f"Error: {response.status_code}") - print(f"Response: {response.text}") - except Exception as e: - print(f"Error in the GET request: {e}") - # ------- LISTS OF CARD END ----------- - - if sys.argv[1] == 'createlabel': - - # ------- CREATE LABEL START ----------- - boardid = sys.argv[2] - labelcolor = sys.argv[3] - labelname = sys.argv[4] - label_url = wekanurl + apiboards + boardid + s + 'labels' - print(label_url) - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - # Object to send - put_data = {'label': {'color': labelcolor, 'name': labelname}} - print("URL:", label_url) - print("Headers:", headers) - print("Data:", put_data) - try: - response = requests.put(label_url, json=put_data, headers=headers) - print("=== CREATE LABELS ===\n") - print("Response Status Code:", response.status_code) - print("Response Text:", response.text) - except Exception as e: - print("Error:", e) - # ------- CREATE LABEL END ----------- - - if sys.argv[1] == 'addchecklist': - - # ------- ADD CHECKLIST START ----------- - board_id = sys.argv[2] - card_id = sys.argv[3] - checklist_title = sys.argv[4] - - # Aggiungi la checklist - checklist_url = wekanurl + apiboards + board_id + s + cs + s + card_id + '/checklists' - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - data = {'title': checklist_title} - - response = requests.post(checklist_url, data=data, headers=headers) - response.raise_for_status() - - result = json.loads(response.text) - checklist_id = result.get('_id') - - print(f"Checklist '{checklist_title}' created. ID: {checklist_id}") - - # Aggiungi gli items alla checklist - items_to_add = sys.argv[5:] - for item_title in items_to_add: - checklist_item_url = wekanurl + apiboards + board_id + s + cs + s + card_id + s + 'checklists' + s + checklist_id + '/items' - item_data = {'title': item_title} - - item_response = requests.post(checklist_item_url, data=item_data, headers=headers) - item_response.raise_for_status() - - item_result = json.loads(item_response.text) - checklist_item_id = item_result.get('_id') - - print(f"Item '{item_title}' added. ID: {checklist_item_id}") - - if sys.argv[1] == 'checklistinfo': - - # ------- ADD CHECKLIST START ----------- - board_id = sys.argv[2] - card_id = sys.argv[3] - checklist_id = sys.argv[4] - checklist_url = wekanurl + apiboards + board_id + s + cs + s + card_id + '/checklists' + s + checklist_id - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - response = requests.get(checklist_url, headers=headers) - - response.raise_for_status() - - checklist_info = response.json() - print("Checklist Info:") - print(checklist_info) if arguments == 3: - if sys.argv[1] == 'editboardtitle': - - # ------- EDIT BOARD TITLE START ----------- - boardid = sys.argv[2] - boardtitle = sys.argv[3] - edboardtitle = wekanurl + apiboards + boardid + s + 'title' - print(edboardtitle) - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - - post_data = {'title': boardtitle} - - body = requests.put(edboardtitle, json=post_data, headers=headers) - print("=== EDIT BOARD TITLE ===\n") - #body = requests.get(edboardtitle, headers=headers) - data2 = body.text.replace('}',"}\n") - print(data2) - if body.status_code == 200: - print("Succesfull!") - else: - print(f"Error: {body.status_code}") - print(body.text) - - # ------- EDIT BOARD TITLE END ----------- - - if sys.argv[1] == 'copyboard': - - # ------- COPY BOARD START ----------- - boardid = sys.argv[2] - boardtitle = sys.argv[3] - edboardcopy = wekanurl + apiboards + boardid + s + 'copy' - print(edboardcopy) - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - - post_data = {'title': boardtitle} - - body = requests.post(edboardcopy, json=post_data, headers=headers) - print("=== COPY BOARD ===\n") - #body = requests.get(edboardcopy, headers=headers) - data2 = body.text.replace('}',"}\n") - print(data2) - if body.status_code == 200: - print("Succesfull!") - else: - print(f"Error: {body.status_code}") - print(body.text) - - # ------- COPY BOARD END ----------- - if sys.argv[1] == 'createlist': # ------- CREATE LIST START ----------- @@ -546,90 +293,6 @@ if arguments == 3: print(data2) # ------- INFO OF CUSTOM FIELD END ----------- - if sys.argv[1] == 'cardsbyswimlane': - # ------- RETRIEVE CARDS BY SWIMLANE ID START ----------- - boardid = sys.argv[2] - swimlaneid = sys.argv[3] - cardsbyswimlane = wekanurl + apiboards + boardid + s + sws + s + swimlaneid + s + cs - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - print("=== CARDS BY SWIMLANE ID ===\n") - print("URL:", cardsbyswimlane) # Debug - try: - body = requests.get(cardsbyswimlane, headers=headers) - print("Status Code:", body.status_code) # Debug - data = body.text.replace('}', "}\n") - print("Data:", data) - except Exception as e: - print("Error GET:", e) - # ------- RETRIEVE CARDS BY SWIMLANE ID END ----------- - - if sys.argv[1] == 'deleteallcards': - boardid = sys.argv[2] - swimlaneid = sys.argv[3] - - # ------- GET SWIMLANE CARDS START ----------- - get_swimlane_cards_url = wekanurl + apiboards + boardid + s + "swimlanes" + s + swimlaneid + s + "cards" - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - - try: - response = requests.get(get_swimlane_cards_url, headers=headers) - response.raise_for_status() - cards_data = response.json() - - # Print the details of each card - for card in cards_data: - # ------- DELETE CARD START ----------- - delete_card_url = wekanurl + apiboards + boardid + s + "lists" + s + card['listId'] + s + "cards" + s + card['_id'] - try: - response = requests.delete(delete_card_url, headers=headers) - if response.status_code == 404: - print(f"Card not found: {card['_id']}") - else: - response.raise_for_status() - deleted_card_data = response.json() - print(f"Card Deleted Successfully. Card ID: {deleted_card_data['_id']}") - except requests.exceptions.RequestException as e: - print(f"Error deleting card: {e}") - # ------- DELETE CARD END ----------- - - except requests.exceptions.RequestException as e: - print(f"Error getting swimlane cards: {e}") - sys.exit(1) - # ------- GET SWIMLANE CARDS END ----------- - - if sys.argv[1] == 'get_list_cards_count': - # ------- GET LIST CARDS COUNT START ----------- - boardid = sys.argv[2] - listid = sys.argv[3] - - get_list_cards_count_url = wekanurl + apiboards + boardid + s + l + s + listid + s + "cards_count" - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - - try: - response = requests.get(get_list_cards_count_url, headers=headers) - response.raise_for_status() - data = response.json() - print(f"List Cards Count: {data['list_cards_count']}") - except requests.exceptions.RequestException as e: - print(f"Error: {e}") - # ------- GET LIST CARDS COUNT END ----------- - - if sys.argv[1] == 'checklistid': - - # ------- ADD CHECKLIST START ----------- - board_id = sys.argv[2] - card_id = sys.argv[3] - - checklist_url = wekanurl + apiboards + board_id + s + cs + s + card_id + '/checklists' - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - response = requests.get(checklist_url, headers=headers) - - response.raise_for_status() - checklists = response.json() - print("Checklists:") - for checklist in checklists: - print(checklist) - if arguments == 2: # ------- BOARDS LIST START ----------- @@ -701,22 +364,6 @@ if arguments == 2: print(data2) # ------- LISTS OF ATTACHMENTS END ----------- - if sys.argv[1] == 'get_board_cards_count': - # ------- GET BOARD CARDS COUNT START ----------- - boardid = sys.argv[2] - - get_board_cards_count_url = wekanurl + apiboards + boardid + s + "cards_count" - headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)} - - try: - response = requests.get(get_board_cards_count_url, headers=headers) - response.raise_for_status() - data = response.json() - print(f"Board Cards Count: {data['board_cards_count']}") - except requests.exceptions.RequestException as e: - print(f"Error: {e}") - # ------- GET BOARD CARDS COUNT END ----------- - if arguments == 1: if sys.argv[1] == 'users': diff --git a/docs/ImportExport/asana/CHANGELOG.md b/asana/CHANGELOG.md similarity index 100% rename from docs/ImportExport/asana/CHANGELOG.md rename to asana/CHANGELOG.md diff --git a/docs/ImportExport/asana/LICENSE b/asana/LICENSE similarity index 100% rename from docs/ImportExport/asana/LICENSE rename to asana/LICENSE diff --git a/docs/ImportExport/asana/export_boards.pl b/asana/export_boards.pl similarity index 100% rename from docs/ImportExport/asana/export_boards.pl rename to asana/export_boards.pl diff --git a/docs/ImportExport/asana/load_tasks.pl b/asana/load_tasks.pl similarity index 100% rename from docs/ImportExport/asana/load_tasks.pl rename to asana/load_tasks.pl diff --git a/client/components/activities/activities.css b/client/components/activities/activities.css index febd43e56..4d630d098 100644 --- a/client/components/activities/activities.css +++ b/client/components/activities/activities.css @@ -49,6 +49,43 @@ margin-top: 5px; padding: 5px; } +.activities .activity .activity-desc .reactions { + display: flex; + margin-top: 5px; + gap: 5px; +} +.activities .activity .activity-desc .reactions .open-comment-reaction-popup { + display: flex; + align-items: center; + text-decoration: none; + height: 24px; +} +.activities .activity .activity-desc .reactions .open-comment-reaction-popup i.fa.fa-smile-o { + font-size: 17px; + font-weight: 500; + margin-left: 2px; +} +.activities .activity .activity-desc .reactions .open-comment-reaction-popup i.fa.fa-plus { + font-size: 8px; + margin-top: -7px; + margin-left: 1px; +} +.activities .activity .activity-desc .reactions .reaction { + cursor: pointer; + border: 1px solid #808080; + border-radius: 15px; + display: flex; + padding: 2px 5px; +} +.activities .activity .activity-desc .reactions .reaction.selected { + background-color: #b0c4de; +} +.activities .activity .activity-desc .reactions .reaction:hover { + background-color: #b0c4de; +} +.activities .activity .activity-desc .reactions .reaction .reaction-count { + font-size: 12px; +} .activities .activity .activity-desc .activity-checklist { display: block; border-radius: 3px; diff --git a/client/components/activities/activities.jade b/client/components/activities/activities.jade index f44673ae4..b4d1ac07b 100644 --- a/client/components/activities/activities.jade +++ b/client/components/activities/activities.jade @@ -1,12 +1,11 @@ template(name="activities") - if showActivities - .activities.js-sidebar-activities - //- We should use Template.dynamic here but there is a bug with - //- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30 - if $eq mode "board" - +boardActivities - else - +cardActivities + .activities.js-sidebar-activities + //- We should use Template.dynamic here but there is a bug with + //- blaze-components: https://github.com/peerlibrary/meteor-blaze-components/issues/30 + if $eq mode "board" + +boardActivities + else + +cardActivities template(name="boardActivities") each activityData in currentBoard.activities @@ -16,6 +15,32 @@ template(name="cardActivities") each activityData in activities +activity(activity=activityData card=card mode=mode) +template(name="editOrDeleteComment") + = ' - ' + a.js-open-inlined-form {{_ "edit"}} + = ' - ' + a.js-delete-comment {{_ "delete"}} + +template(name="deleteCommentPopup") + p {{_ "comment-delete"}} + button.js-confirm.negate.full(type="submit") {{_ 'delete'}} + +template(name="commentReactions") + .reactions + each reaction in reactions + span.reaction(class="{{#if isSelected reaction.userIds}}selected{{/if}}" data-codepoint="#{reaction.reactionCodepoint}" title="{{userNames reaction.userIds}}") + span.reaction-codepoint !{reaction.reactionCodepoint} + span.reaction-count #{reaction.userIds.length} + if (currentUser.isBoardMember) + a.open-comment-reaction-popup(title="{{_ 'addReactionPopup-title'}}") + i.fa.fa-smile-o + i.fa.fa-plus + +template(name="addReactionPopup") + .reactions-popup + each codepoint in codepoints + span.add-comment-reaction(data-codepoint="#{codepoint}") !{codepoint} + template(name="activity") .activity(data-id=activity._id) +userAvatar(userId=activity.user._id) @@ -105,17 +130,39 @@ template(name="activity") | {{{_ 'activity-checklist-item-removed' (sanitize activity.checklist.title) cardLink}}}. //- comment activity ---------------------------------------------------- - if($eq activity.activityType 'deleteComment') - | {{{_ 'activity-deleteComment' activity.commentId}}}. + if($eq mode 'card') + //- if we are in card mode we display the comment in a way that it + //- can be edited by the owner + if($eq activity.activityType 'addComment') + +inlinedForm(classNames='js-edit-comment') + +editor(autofocus=true) + = activity.comment.text + .edit-controls + button.primary(type="submit") {{_ 'edit'}} + .fa.fa-times-thin.js-close-inlined-form + else + .activity-comment + +viewer + = activity.comment.text + +commentReactions(reactions=activity.comment.reactions commentId=activity.comment._id) + span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }} + if($eq currentUser._id activity.comment.userId) + +editOrDeleteComment + else if currentUser.isBoardAdmin + +editOrDeleteComment - if($eq activity.activityType 'editComment') - | {{{_ 'activity-editComment' activity.commentId}}}. + if($eq activity.activityType 'deleteComment') + | {{{_ 'activity-deleteComment' activity.commentId}}}. - if($eq activity.activityType 'addComment') - | {{{_ 'activity-on' cardLink}}} - a.activity-comment(href="{{ activity.card.originRelativeUrl }}") - +viewer - = activity.comment.text + if($eq activity.activityType 'editComment') + | {{{_ 'activity-editComment' activity.commentId}}}. + else + //- if we are not in card mode we only display a summary of the comment + if($eq activity.activityType 'addComment') + | {{{_ 'activity-on' cardLink}}} + a.activity-comment(href="{{ activity.card.originRelativeUrl }}") + +viewer + = activity.comment.text //- date activity ------------------------------------------------ if($eq activity.activityType 'a-receivedAt') @@ -161,9 +208,6 @@ template(name="activity") if($eq activity.activityType 'archivedList') | {{_ 'activity-archived' (sanitize listLabel)}}. - if($eq activity.activityType 'changedListTitle') - | {{_ 'activity-changedListTitle' (sanitize listLabel) boardLabelLink}} - //- member activity ---------------------------------------------------- if($eq activity.activityType 'joinMember') if($eq user._id activity.member._id) @@ -199,4 +243,4 @@ template(name="activity") else if(currentData.timeValue) | {{_ activity.activityType currentData.timeValue}} - div(title=activity.createdAt).activity-meta {{ moment activity.createdAt }} + span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }} diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index 439e29619..ac4329c00 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -1,4 +1,3 @@ -import { ReactiveCache } from '/imports/reactiveCache'; import DOMPurify from 'dompurify'; import { TAPi18n } from '/imports/i18n'; @@ -13,41 +12,39 @@ BlazeComponent.extendComponent({ const sidebar = Sidebar; sidebar && sidebar.callFirstWith(null, 'resetNextPeak'); this.autorun(() => { - let mode = this.data()?.mode; - if (mode) { - const capitalizedMode = Utils.capitalize(mode); - let searchId; - const showActivities = this.showActivities(); - if (mode === 'linkedcard' || mode === 'linkedboard') { - const currentCard = Utils.getCurrentCard(); - searchId = currentCard.linkedId; - mode = mode.replace('linked', ''); - } else if (mode === 'card') { - searchId = Utils.getCurrentCardId(); - } else { - searchId = Session.get(`current${capitalizedMode}`); - } - const limit = this.page.get() * activitiesPerPage; - if (searchId === null) return; - - this.subscribe('activities', mode, searchId, limit, showActivities, () => { - this.loadNextPageLocked = false; - - // TODO the guard can be removed as soon as the TODO above is resolved - if (!sidebar) return; - // If the sibear peak hasn't increased, that mean that there are no more - // activities, and we can stop calling new subscriptions. - // XXX This is hacky! We need to know excatly and reactively how many - // activities there are, we probably want to denormalize this number - // dirrectly into card and board documents. - const nextPeakBefore = sidebar.callFirstWith(null, 'getNextPeak'); - sidebar.calculateNextPeak(); - const nextPeakAfter = sidebar.callFirstWith(null, 'getNextPeak'); - if (nextPeakBefore === nextPeakAfter) { - sidebar.callFirstWith(null, 'resetNextPeak'); - } - }); + let mode = this.data().mode; + const capitalizedMode = Utils.capitalize(mode); + let searchId; + if (mode === 'linkedcard' || mode === 'linkedboard') { + searchId = Utils.getCurrentCard().linkedId; + mode = mode.replace('linked', ''); + } else if (mode === 'card') { + searchId = Utils.getCurrentCardId(); + } else { + searchId = Session.get(`current${capitalizedMode}`); } + const limit = this.page.get() * activitiesPerPage; + const user = Meteor.user(); + const hideSystem = user ? user.hasHiddenSystemMessages() : false; + if (searchId === null) return; + + this.subscribe('activities', mode, searchId, limit, hideSystem, () => { + this.loadNextPageLocked = false; + + // TODO the guard can be removed as soon as the TODO above is resolved + if (!sidebar) return; + // If the sibear peak hasn't increased, that mean that there are no more + // activities, and we can stop calling new subscriptions. + // XXX This is hacky! We need to know excatly and reactively how many + // activities there are, we probably want to denormalize this number + // dirrectly into card and board documents. + const nextPeakBefore = sidebar.callFirstWith(null, 'getNextPeak'); + sidebar.calculateNextPeak(); + const nextPeakAfter = sidebar.callFirstWith(null, 'getNextPeak'); + if (nextPeakBefore === nextPeakAfter) { + sidebar.callFirstWith(null, 'resetNextPeak'); + } + }); }); }, loadNextPage() { @@ -56,31 +53,19 @@ BlazeComponent.extendComponent({ this.loadNextPageLocked = true; } }, - showActivities() { - let ret = false; - let mode = this.data()?.mode; - if (mode) { - if (mode === 'linkedcard' || mode === 'linkedboard') { - const currentCard = Utils.getCurrentCard(); - ret = currentCard.showActivities ?? false; - } else if (mode === 'card') { - ret = this.data()?.card?.showActivities ?? false; - } else { - ret = Utils.getCurrentBoard().showActivities ?? false; - } - } - return ret; - }, - activities() { - const ret = this.data().card.activities(); - return ret; - }, }).register('activities'); +Template.activities.helpers({ + activities() { + const ret = this.card.activities(); + return ret; + }, +}); + BlazeComponent.extendComponent({ checkItem() { const checkItemId = this.currentData().activity.checklistItemId; - const checkItem = ReactiveCache.getChecklistItem(checkItemId); + const checkItem = ChecklistItems.findOne({ _id: checkItemId }); return checkItem && checkItem.title; }, @@ -160,7 +145,7 @@ BlazeComponent.extendComponent({ lastLabel() { const lastLabelId = this.currentData().activity.labelId; if (!lastLabelId) return null; - const lastLabel = ReactiveCache.getBoard( + const lastLabel = Boards.findOne( this.currentData().activity.boardId, ).getLabelById(lastLabelId); if (lastLabel && (lastLabel.name === undefined || lastLabel.name === '')) { @@ -173,7 +158,7 @@ BlazeComponent.extendComponent({ }, lastCustomField() { - const lastCustomField = ReactiveCache.getCustomField( + const lastCustomField = CustomFields.findOne( this.currentData().activity.customFieldId, ); if (!lastCustomField) return null; @@ -181,7 +166,7 @@ BlazeComponent.extendComponent({ }, lastCustomFieldValue() { - const lastCustomField = ReactiveCache.getCustomField( + const lastCustomField = CustomFields.findOne( this.currentData().activity.customFieldId, ); if (!lastCustomField) return null; @@ -261,6 +246,32 @@ BlazeComponent.extendComponent({ return customField.name; }, + events() { + return [ + { + // XXX We should use Popup.afterConfirmation here + 'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => { + const commentId = this.data().activity.commentId; + CardComments.remove(commentId); + Popup.back(); + }), + 'submit .js-edit-comment'(evt) { + evt.preventDefault(); + const commentText = this.currentComponent() + .getValue() + .trim(); + const commentId = Template.parentData().activity.commentId; + if (commentText) { + CardComments.update(commentId, { + $set: { + text: commentText, + }, + }); + } + }, + }, + ]; + }, }).register('activity'); Template.activity.helpers({ @@ -271,10 +282,10 @@ Template.activity.helpers({ Template.commentReactions.events({ 'click .reaction'(event) { - if (ReactiveCache.getCurrentUser().isBoardMember()) { + if (Meteor.user().isBoardMember()) { const codepoint = event.currentTarget.dataset['codepoint']; const commentId = Template.instance().data.commentId; - const cardComment = ReactiveCache.getCardComment(commentId); + const cardComment = CardComments.findOne({_id: commentId}); cardComment.toggleReaction(codepoint); } }, @@ -283,10 +294,10 @@ Template.commentReactions.events({ Template.addReactionPopup.events({ 'click .add-comment-reaction'(event) { - if (ReactiveCache.getCurrentUser().isBoardMember()) { + if (Meteor.user().isBoardMember()) { const codepoint = event.currentTarget.dataset['codepoint']; const commentId = Template.instance().data.commentId; - const cardComment = ReactiveCache.getCardComment(commentId); + const cardComment = CardComments.findOne({_id: commentId}); cardComment.toggleReaction(codepoint); } Popup.back(); @@ -314,13 +325,12 @@ Template.addReactionPopup.helpers({ Template.commentReactions.helpers({ isSelected(userIds) { - return Meteor.userId() && userIds.includes(Meteor.userId()); + return userIds.includes(Meteor.user()._id); }, userNames(userIds) { - const ret = ReactiveCache.getUsers({_id: {$in: userIds}}) - .map(user => user.profile.fullname) - .join(', '); - return ret; + return Users.find({_id: {$in: userIds}}) + .map(user => user.profile.fullname) + .join(', '); } }) diff --git a/client/components/activities/comments.css b/client/components/activities/comments.css index f495ca361..4fbfdf8ba 100644 --- a/client/components/activities/comments.css +++ b/client/components/activities/comments.css @@ -63,78 +63,3 @@ display: block; margin: auto; } -.comments { - clear: both; -} -.comments .comment { - margin: 0.5px 0; - padding: 6px 0; - display: flex; -} -.comments .comment .member { - width: 32px; - height: 32px; -} -.comments .comment .comment-member { - font-weight: 700; -} -.comments .comment .comment-desc { - word-wrap: break-word; - overflow: hidden; - flex: 1; - align-self: center; - margin: 0; - margin-left: 3px; - overflow: hidden; - word-break: break-word; -} -.comments .comment .comment-desc .comment-text { - display: block; - border-radius: 3px; - background: #fff; - text-decoration: none; - box-shadow: 0 1px 2px rgba(0,0,0,0.2); - margin-top: 5px; - padding: 5px; -} -.comments .comment .comment-desc .reactions { - display: flex; - margin-top: 5px; - gap: 5px; -} -.comments .comment .comment-desc .reactions .open-comment-reaction-popup { - display: flex; - align-items: center; - text-decoration: none; - height: 24px; -} -.comments .comment .comment-desc .reactions .open-comment-reaction-popup i.fa.fa-smile-o { - font-size: 17px; - font-weight: 500; - margin-left: 2px; -} -.comments .comment .comment-desc .reactions .open-comment-reaction-popup i.fa.fa-plus { - font-size: 8px; - margin-top: -7px; - margin-left: 1px; -} -.comments .comment .comment-desc .reactions .reaction { - cursor: pointer; - border: 1px solid #808080; - border-radius: 15px; - display: flex; - padding: 2px 5px; -} -.comments .comment .comment-desc .reactions .reaction.selected { - background-color: #b0c4de; -} -.comments .comment .comment-desc .reactions .reaction:hover { - background-color: #b0c4de; -} -.comments .comment .comment-desc .reactions .reaction .reaction-count { - font-size: 12px; -} -.comments .comment .comment-desc .comment-meta { - font-size: 0.8em; - color: #999; -} diff --git a/client/components/activities/comments.jade b/client/components/activities/comments.jade index 07b52d47d..4cddf4c23 100644 --- a/client/components/activities/comments.jade +++ b/client/components/activities/comments.jade @@ -7,59 +7,3 @@ template(name="commentForm") | {{getUnsavedValue 'cardComment' currentCard._id}} .add-controls button.primary.confirm.clear.js-add-comment(type="submit") {{_ 'comment'}} - -template(name="comments") - .comments - each commentData in getComments - +comment(commentData) - -template(name="comment") - .comment - +userAvatar(userId=userId) - p.comment-desc - span.comment-member - +memberName(user=user) - - +inlinedForm(classNames='js-edit-comment') - +editor(autofocus=true) - = text - .edit-controls - button.primary(type="submit") {{_ 'edit'}} - .fa.fa-times-thin.js-close-inlined-form - else - .comment-text - +viewer - = text - +commentReactions(reactions=reactions commentId=_id) - span(title=createdAt).comment-meta {{ moment createdAt }} - if($eq currentUser._id userId) - +editOrDeleteComment - else if currentUser.isBoardAdmin - +editOrDeleteComment - -template(name="editOrDeleteComment") - = ' - ' - a.js-open-inlined-form {{_ "edit"}} - = ' - ' - a.js-delete-comment {{_ "delete"}} - -template(name="deleteCommentPopup") - p {{_ "comment-delete"}} - button.js-confirm.negate.full(type="submit") {{_ 'delete'}} - -template(name="commentReactions") - .reactions - each reaction in reactions - span.reaction(class="{{#if isSelected reaction.userIds}}selected{{/if}}" data-codepoint="#{reaction.reactionCodepoint}" title="{{userNames reaction.userIds}}") - span.reaction-codepoint !{reaction.reactionCodepoint} - span.reaction-count #{reaction.userIds.length} - if (currentUser.isBoardMember) - a.open-comment-reaction-popup(title="{{_ 'addReactionPopup-title'}}") - i.fa.fa-smile-o - i.fa.fa-plus - -template(name="addReactionPopup") - .reactions-popup - each codepoint in codepoints - span.add-comment-reaction(data-codepoint="#{codepoint}") !{codepoint} - diff --git a/client/components/activities/comments.js b/client/components/activities/comments.js index 62629252d..63738b120 100644 --- a/client/components/activities/comments.js +++ b/client/components/activities/comments.js @@ -1,5 +1,3 @@ -import { ReactiveCache } from '/imports/reactiveCache'; - const commentFormIsOpen = new ReactiveVar(false); BlazeComponent.extendComponent({ @@ -26,7 +24,7 @@ BlazeComponent.extendComponent({ let boardId = card.boardId; let cardId = card._id; if (card.isLinkedCard()) { - boardId = ReactiveCache.getCard(card.linkedId).boardId; + boardId = Cards.findOne(card.linkedId).boardId; cardId = card.linkedId; } else if (card.isLinkedBoard()) { boardId = card.linkedId; @@ -55,41 +53,6 @@ BlazeComponent.extendComponent({ }, }).register('commentForm'); -BlazeComponent.extendComponent({ - getComments() { - const ret = this.data().comments(); - return ret; - }, -}).register("comments"); - -BlazeComponent.extendComponent({ - events() { - return [ - { - 'click .js-delete-comment': Popup.afterConfirm('deleteComment', () => { - const commentId = this.data()._id; - CardComments.remove(commentId); - Popup.back(); - }), - 'submit .js-edit-comment'(evt) { - evt.preventDefault(); - const commentText = this.currentComponent() - .getValue() - .trim(); - const commentId = this.data()._id; - if (commentText) { - CardComments.update(commentId, { - $set: { - text: commentText, - }, - }); - } - }, - }, - ]; - }, -}).register("comment"); - // XXX This should be a static method of the `commentForm` component function resetCommentInput(input) { input.val(''); // without manually trigger, input event won't be fired diff --git a/client/components/boards/boardArchive.js b/client/components/boards/boardArchive.js index 87525c1f7..ca80a694b 100644 --- a/client/components/boards/boardArchive.js +++ b/client/components/boards/boardArchive.js @@ -1,22 +1,19 @@ -import { ReactiveCache } from '/imports/reactiveCache'; - BlazeComponent.extendComponent({ onCreated() { this.subscribe('archivedBoards'); }, isBoardAdmin() { - return ReactiveCache.getCurrentUser().isBoardAdmin(); + return Meteor.user().isBoardAdmin(); }, archivedBoards() { - const ret = ReactiveCache.getBoards( + return Boards.find( { archived: true }, { sort: { archivedAt: -1, modifiedAt: -1 }, }, ); - return ret; }, events() { @@ -28,8 +25,8 @@ BlazeComponent.extendComponent({ Meteor.settings && Meteor.settings.public && Meteor.settings.public.sandstorm; - if (isSandstorm && Utils.getCurrentBoardId()) { - const currentBoard = Utils.getCurrentBoard(); + if (isSandstorm && Session.get('currentBoard')) { + const currentBoard = Boards.findOne(Session.get('currentBoard')); currentBoard.archive(); } const board = this.currentData(); @@ -42,8 +39,8 @@ BlazeComponent.extendComponent({ Meteor.settings && Meteor.settings.public && Meteor.settings.public.sandstorm; - if (isSandstorm && Utils.getCurrentBoardId()) { - const currentBoard = Utils.getCurrentBoard(); + if (isSandstorm && Session.get('currentBoard')) { + const currentBoard = Boards.findOne(Session.get('currentBoard')); Boards.remove(currentBoard._id); } Boards.remove(this._id); diff --git a/client/components/boards/boardBody.css b/client/components/boards/boardBody.css index 1138aa19a..077a22843 100644 --- a/client/components/boards/boardBody.css +++ b/client/components/boards/boardBody.css @@ -16,6 +16,9 @@ transition: margin 0.1s; overflow-y: auto; } +.board-wrapper .board-canvas.is-sibling-sidebar-open { + margin-right: 248px; +} .board-wrapper .board-canvas .board-overlay { position: fixed; left: 0; @@ -165,28 +168,11 @@ color: #fff !important; } /* Modal Styles */ -.modal { - display: none; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 9999; - background-color: rgba(0, 0, 0, 0.5); - width: 100%; - height: 100%; -} .modal-dialog { display: flex; justify-content: center; align-items: center; - height: 25%; /* Adjust the height to make it smaller */ - position: relative; - margin: 10% auto; /* This margin will help center the modal vertically */ - max-width: 400px; /* Adjust the max-width to make it smaller */ - background-color: #fff; - border-radius: 5px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + height: 70%; } .modal-header { display: flex; @@ -217,5 +203,4 @@ top: 5px; right: 5px; font-size: 25px; - cursor: pointer; } diff --git a/client/components/boards/boardBody.jade b/client/components/boards/boardBody.jade index de1c1ca3c..edeb25464 100644 --- a/client/components/boards/boardBody.jade +++ b/client/components/boards/boardBody.jade @@ -17,32 +17,25 @@ template(name="boardBody") | {{_ 'tableVisibilityMode-allowPrivateOnly'}} else .board-wrapper(class=currentBoard.colorClass) + +sidebar .board-canvas.js-swimlanes( - class="{{#if hasSwimlanes}}dragscroll{{/if}}" class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}" class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}" - class="{{#if draggingActive.get}}is-dragging-active{{/if}}" - class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}") + class="{{#if draggingActive.get}}is-dragging-active{{/if}}") if showOverlay.get .board-overlay if currentBoard.isTemplatesBoard each currentBoard.swimlanes +swimlane(this) else if isViewSwimlanes - if hasSwimlanes - each currentBoard.swimlanes - +swimlane(this) - else - a.js-empty-board-add-swimlane(title="{{_ 'add-swimlane'}}") - h1.big-message.quiet - | {{_ 'add-swimlane'}} + + each currentBoard.swimlanes + +swimlane(this) else if isViewLists +listsGroup(currentBoard) else if isViewCalendar +calendarView else +listsGroup(currentBoard) - +sidebar template(name="calendarView") if isViewCalendar diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js index 29bf5e5bb..2ed40bbe7 100644 --- a/client/components/boards/boardBody.js +++ b/client/components/boards/boardBody.js @@ -1,6 +1,4 @@ -import { ReactiveCache } from '/imports/reactiveCache'; import { TAPi18n } from '/imports/i18n'; -import dragscroll from '@wekanteam/dragscroll'; const subManager = new SubsManager(); const { calculateIndex } = Utils; @@ -45,9 +43,9 @@ BlazeComponent.extendComponent({ this.mouseHasEnterCardDetails = false; // fix swimlanes sort field if there are null values - const currentBoardData = Utils.getCurrentBoard(); + const currentBoardData = Boards.findOne(Session.get('currentBoard')); const nullSortSwimlanes = currentBoardData.nullSortSwimlanes(); - if (nullSortSwimlanes.length > 0) { + if (nullSortSwimlanes.count() > 0) { const swimlanes = currentBoardData.swimlanes(); let count = 0; swimlanes.forEach(s => { @@ -62,7 +60,7 @@ BlazeComponent.extendComponent({ // fix lists sort field if there are null values const nullSortLists = currentBoardData.nullSortLists(); - if (nullSortLists.length > 0) { + if (nullSortLists.count() > 0) { const lists = currentBoardData.lists(); let count = 0; lists.forEach(l => { @@ -195,9 +193,6 @@ BlazeComponent.extendComponent({ }); this.autorun(() => { - // Always reset dragscroll on view switch - dragscroll.reset(); - if (Utils.isTouchScreenOrShowDesktopDragHandles()) { $swimlanesDom.sortable({ handle: '.js-swimlane-header-handle', @@ -209,27 +204,25 @@ BlazeComponent.extendComponent({ } // Disable drag-dropping if the current user is not a board member + //$swimlanesDom.sortable('option', 'disabled', !userIsMember()); $swimlanesDom.sortable( 'option', 'disabled', - !ReactiveCache.getCurrentUser()?.isBoardAdmin(), + !Meteor.user() || !Meteor.user().isBoardAdmin(), ); }); // If there is no data in the board (ie, no lists) we autofocus the list // creation form by clicking on the corresponding element. - const currentBoard = Utils.getCurrentBoard(); - if (Utils.canModifyBoard() && currentBoard.lists().length === 0) { + const currentBoard = Boards.findOne(Session.get('currentBoard')); + if (Utils.canModifyBoard() && currentBoard.lists().count() === 0) { boardComponent.openNewListForm(); } - - dragscroll.reset(); - Utils.setBackgroundImage(); }, notDisplayThisBoard() { let allowPrivateVisibilityOnly = TableVisibilityModeSettings.findOne('tableVisibilityMode-allowPrivateOnly'); - let currentBoard = Utils.getCurrentBoard(); + let currentBoard = Boards.findOne(Session.get('currentBoard')); if (allowPrivateVisibilityOnly !== undefined && allowPrivateVisibilityOnly.booleanValue && currentBoard.permission == 'public') { return true; } @@ -238,7 +231,7 @@ BlazeComponent.extendComponent({ }, isViewSwimlanes() { - const currentUser = ReactiveCache.getCurrentUser(); + currentUser = Meteor.user(); if (currentUser) { return (currentUser.profile || {}).boardView === 'board-view-swimlanes'; } else { @@ -248,12 +241,8 @@ BlazeComponent.extendComponent({ } }, - hasSwimlanes() { - return Utils.getCurrentBoard().swimlanes().length > 0; - }, - isViewLists() { - const currentUser = ReactiveCache.getCurrentUser(); + currentUser = Meteor.user(); if (currentUser) { return (currentUser.profile || {}).boardView === 'board-view-lists'; } else { @@ -262,7 +251,7 @@ BlazeComponent.extendComponent({ }, isViewCalendar() { - const currentUser = ReactiveCache.getCurrentUser(); + currentUser = Meteor.user(); if (currentUser) { return (currentUser.profile || {}).boardView === 'board-view-cal'; } else { @@ -270,11 +259,6 @@ BlazeComponent.extendComponent({ } }, - isVerticalScrollbars() { - const user = ReactiveCache.getCurrentUser(); - return user && user.isVerticalScrollbars(); - }, - openNewListForm() { if (this.isViewSwimlanes()) { // The form had been removed in 416b17062e57f215206e93a85b02ef9eb1ab4902 @@ -297,7 +281,6 @@ BlazeComponent.extendComponent({ this._isDragging = false; } }, - 'click .js-empty-board-add-swimlane': Popup.open('swimlaneAdd'), }, ]; }, @@ -335,7 +318,7 @@ BlazeComponent.extendComponent({ calendarOptions() { return { id: 'calendar-view', - defaultView: 'month', + defaultView: 'agendaDay', editable: true, selectable: true, timezone: 'local', @@ -359,7 +342,7 @@ BlazeComponent.extendComponent({ }, locale: TAPi18n.getLanguage(), events(start, end, timezone, callback) { - const currentBoard = Utils.getCurrentBoard(); + const currentBoard = Boards.findOne(Session.get('currentBoard')); const events = []; const pushEvent = function (card, title, start, end, extraCls) { start = start || card.startAt; @@ -405,7 +388,7 @@ BlazeComponent.extendComponent({ }, eventResize(event, delta, revertFunc) { let isOk = false; - const card = ReactiveCache.getCard(event.id); + const card = Cards.findOne(event.id); if (card) { card.setEnd(event.end.toDate()); @@ -417,7 +400,7 @@ BlazeComponent.extendComponent({ }, eventDrop(event, delta, revertFunc) { let isOk = false; - const card = ReactiveCache.getCard(event.id); + const card = Cards.findOne(event.id); if (card) { // TODO: add a flag for allDay events if (!event.allDay) { @@ -432,37 +415,35 @@ BlazeComponent.extendComponent({ revertFunc(); } }, - select: function (startDate) { - const currentBoard = Utils.getCurrentBoard(); - const currentUser = ReactiveCache.getCurrentUser(); - const modalElement = document.createElement('div'); - modalElement.classList.add('modal', 'fade'); - modalElement.setAttribute('tabindex', '-1'); - modalElement.setAttribute('role', 'dialog'); - modalElement.innerHTML = ` -