Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3912181857 | ||
|
|
b9a01eb5d6 | ||
|
|
3027f0acb0 | ||
|
|
609c2a5ddb | ||
|
|
f76d648012 | ||
|
|
203bf92a0a | ||
|
|
3e8cc9e905 | ||
|
|
b9f32c1739 | ||
|
|
7e1c65f616 | ||
|
|
447ae93476 | ||
|
|
6df40f41ac | ||
|
|
3e0ef3d070 | ||
|
|
33a17a9a1b | ||
|
|
aed4bfb7f4 | ||
|
|
78f7c3e5bd | ||
|
|
d764047c1f | ||
|
|
65015ea7c7 | ||
|
|
6ef2d9cb9d | ||
|
|
c39fdab11d | ||
|
|
547261abb6 | ||
|
|
7696b7b769 | ||
|
|
585635494a | ||
|
|
a36e80099a | ||
|
|
f5f8a4f6fb |
No files matched your search
@@ -15,6 +15,24 @@ Fixing other platforms In Progress.
|
||||
|
||||
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
|
||||
|
||||
# v7.68 2024-11-24 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Speed improvements to building WeKan x86_64 Dockerfile. 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:
|
||||
|
||||
+96
-134
@@ -1,31 +1,76 @@
|
||||
FROM ubuntu:24.10
|
||||
FROM scratch AS downloads
|
||||
|
||||
# Download NodeJS bundle
|
||||
ADD https://static.meteor.com/dev-bundle-node-os/v14.21.4/node-v14.21.4-linux-x64.tar.gz node.tar.gz
|
||||
|
||||
# Download Meteor bundle
|
||||
ADD https://static.meteor.com/packages-bootstrap/2.16/meteor-bootstrap-os.linux.x86_64.tar.gz meteor.tar.gz
|
||||
|
||||
FROM ubuntu:24.04 AS build
|
||||
|
||||
# Install node from official archive
|
||||
RUN --mount=type=bind,from=downloads,source=node.tar.gz,target=node.tar.gz \
|
||||
tar xzf node.tar.gz --strip-components=1 --keep-old-files --no-same-owner
|
||||
|
||||
# Install meteor from official archive
|
||||
RUN --mount=type=bind,from=downloads,source=meteor.tar.gz,target=meteor.tar.gz \
|
||||
tar xzf meteor.tar.gz -C $HOME --no-same-owner
|
||||
|
||||
# Update the npm version
|
||||
RUN npm install -g npm@6.14.17
|
||||
|
||||
# Install several build dependencies
|
||||
RUN apt update && \
|
||||
apt install --yes --no-install-suggests --no-install-recommends ssh git g++ curl ca-certificates && \
|
||||
rm -r /var/lib/apt/lists
|
||||
|
||||
# Change to temporary working directory
|
||||
WORKDIR /workdir
|
||||
|
||||
# Copy package.json and package-lock.json to install application dependencies
|
||||
COPY package.json .
|
||||
COPY package-lock.json .
|
||||
|
||||
# Install build dependencies
|
||||
RUN $HOME/.meteor/meteor npm install --production
|
||||
|
||||
# Copy meteor application configurations
|
||||
COPY .meteor .meteor
|
||||
|
||||
# Copy application sources
|
||||
COPY packages packages
|
||||
COPY imports imports
|
||||
COPY config config
|
||||
COPY models models
|
||||
COPY public public
|
||||
COPY server server
|
||||
COPY client client
|
||||
|
||||
# Build the application
|
||||
RUN $HOME/.meteor/meteor build --directory /build --allow-superuser
|
||||
|
||||
# Enter server bundle directory
|
||||
WORKDIR /build/bundle/programs/server
|
||||
|
||||
# Install server dependencies
|
||||
RUN $HOME/.meteor/meteor npm install --production
|
||||
|
||||
# Enter installation directory of fibers
|
||||
WORKDIR /build/bundle/programs/server/node_modules/fibers
|
||||
|
||||
# Build fibers integrations
|
||||
RUN node build.js
|
||||
|
||||
FROM ubuntu:24.04 AS wekan
|
||||
|
||||
# Add metadata to image
|
||||
LABEL maintainer="wekan"
|
||||
LABEL org.opencontainers.image.ref.name="ubuntu"
|
||||
LABEL org.opencontainers.image.version="24.10"
|
||||
LABEL org.opencontainers.image.version="24.04"
|
||||
LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
|
||||
|
||||
# 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
|
||||
|
||||
# 2021-09-18:
|
||||
# - Above Ubuntu base image copied from Docker Hub ubuntu:hirsute-20210825
|
||||
# to Quay to avoid Docker Hub rate limits.
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV BUILD_DEPS="apt-utils gnupg gosu wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3"
|
||||
|
||||
ENV \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v14.21.4 \
|
||||
METEOR_RELEASE=METEOR@2.14 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
NPM_VERSION=6.14.17 \
|
||||
FIBERS_VERSION=4.0.1 \
|
||||
ARCHITECTURE=linux-x64 \
|
||||
SRC_PATH=./ \
|
||||
WITH_API=true \
|
||||
# Set default environment variables
|
||||
ENV WITH_API=true \
|
||||
RESULTS_PER_PAGE="" \
|
||||
DEFAULT_BOARD_ID="" \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
|
||||
@@ -158,119 +203,36 @@ ENV \
|
||||
WRITABLE_PATH=/data \
|
||||
S3=""
|
||||
|
||||
# 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
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
# Copy the app to the image
|
||||
COPY ${SRC_PATH} /home/wekan/app
|
||||
|
||||
# Install OS
|
||||
RUN <<EOR
|
||||
set -o xtrace
|
||||
|
||||
# Add non-root user wekan
|
||||
useradd --user-group --system --home-dir /home/wekan wekan
|
||||
# OS dependencies
|
||||
apt-get update --assume-yes
|
||||
apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
|
||||
|
||||
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
|
||||
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
|
||||
cp $(which tar) $(which tar)~
|
||||
ln -sf $(which bsdtar) $(which tar)
|
||||
|
||||
# Install NodeJS
|
||||
cd /tmp
|
||||
|
||||
# Download nodejs
|
||||
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz"
|
||||
wget "https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt"
|
||||
|
||||
# Verify nodejs authenticity
|
||||
grep "node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz" "SHASUMS256.txt" | shasum -a 256 -c -
|
||||
rm -f "SHASUMS256.txt"
|
||||
|
||||
# Install Node
|
||||
tar xzf "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" -C /usr/local --strip-components=1 --no-same-owner
|
||||
rm "node-$NODE_VERSION-$ARCHITECTURE.tar.gz" "SHASUMS256.txt"
|
||||
ln -s "/usr/local/bin/node" "/usr/local/bin/nodejs"
|
||||
mkdir -p "/opt/nodejs/lib/node_modules/fibers/.node-gyp" "/root/.node-gyp/${NODE_VERSION} /home/wekan/.config"
|
||||
|
||||
# Install node dependencies
|
||||
npm install -g npm@${NPM_VERSION} --production
|
||||
chown --recursive wekan:wekan /home/wekan/.config
|
||||
|
||||
# Install Meteor
|
||||
cd /home/wekan
|
||||
chown --recursive wekan:wekan /home/wekan
|
||||
echo "Starting meteor ${METEOR_RELEASE} installation... \n"
|
||||
gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh
|
||||
mv /root/.meteor /home/wekan/
|
||||
chown --recursive wekan:wekan /home/wekan/.meteor
|
||||
|
||||
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
|
||||
cd /home/wekan/.meteor
|
||||
gosu wekan:wekan /home/wekan/.meteor/meteor -- help
|
||||
|
||||
# Build app (Production)
|
||||
cd /home/wekan/app
|
||||
mkdir -p /home/wekan/.npm
|
||||
chown --recursive wekan:wekan /home/wekan/.npm
|
||||
chmod u+w *.json
|
||||
gosu wekan:wekan meteor npm install --production
|
||||
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build
|
||||
cd /home/wekan/app_build/bundle/programs/server/
|
||||
chmod u+w *.json
|
||||
gosu wekan:wekan meteor npm install --production
|
||||
cd node_modules/fibers
|
||||
node build.js
|
||||
cd ../..
|
||||
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
|
||||
rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy
|
||||
mv /home/wekan/app_build/bundle /build
|
||||
|
||||
# Put back the original tar
|
||||
mv $(which tar)~ $(which tar)
|
||||
|
||||
# Cleanup
|
||||
apt-get remove --purge --assume-yes ${BUILD_DEPS}
|
||||
npm uninstall -g api2html
|
||||
apt-get autoremove --assume-yes
|
||||
apt-get clean --assume-yes
|
||||
rm -Rf /tmp/*
|
||||
rm -Rf /var/lib/apt/lists/*
|
||||
rm -Rf /var/cache/apt
|
||||
rm -Rf /var/lib/apt/lists
|
||||
rm -Rf /home/wekan/app_build
|
||||
rm -Rf /home/wekan/app
|
||||
rm -Rf /home/wekan/.meteor
|
||||
|
||||
mkdir /data
|
||||
chown wekan --recursive /data
|
||||
EOR
|
||||
# Install node and application sources from build stage
|
||||
RUN --mount=type=bind,from=downloads,source=node.tar.gz,target=node.tar.gz \
|
||||
--mount=type=bind,from=build,source=/build,target=/build \
|
||||
# Install NodeJS
|
||||
tar xzf node.tar.gz --strip-components=1 --keep-old-files --no-same-owner && \
|
||||
# Add the wekan user
|
||||
useradd --uid 999 --user-group --system wekan && \
|
||||
# Copy wekan bundle
|
||||
cp -r /build/bundle /wekan && \
|
||||
# Remove the web.browser.legacy platform
|
||||
rm -r /wekan/programs/web.browser.legacy && \
|
||||
# Change ownership of wekan directory
|
||||
chown wekan:wekan -R /wekan && \
|
||||
# Create the data directory
|
||||
mkdir /data && \
|
||||
# Change ownership of data directory
|
||||
chown wekan:root -R /data
|
||||
|
||||
# Change to the wekan user
|
||||
USER wekan
|
||||
|
||||
# Set the port to listen on
|
||||
ENV PORT=8080
|
||||
EXPOSE $PORT
|
||||
EXPOSE ${PORT}
|
||||
|
||||
STOPSIGNAL SIGKILL
|
||||
WORKDIR /home/wekan/app
|
||||
# Define the stop signal for node
|
||||
STOPSIGNAL SIGINT
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# 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"
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# CMD ["node", "/build/main.js"]
|
||||
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /build/main.js"]
|
||||
# CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 --max-old-space-size=8192 /build/main.js"]
|
||||
CMD ["bash", "-c", "ulimit -s 65500; exec node /build/main.js"]
|
||||
# Declare a volume on /data
|
||||
VOLUME /data
|
||||
|
||||
# Set startup command
|
||||
CMD ["node", "/wekan/main.js"]
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v7.65.0"
|
||||
appVersion: "v7.68.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
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;
|
||||
|
||||
@@ -17,7 +17,6 @@ template(name="boardBody")
|
||||
| {{_ 'tableVisibilityMode-allowPrivateOnly'}}
|
||||
else
|
||||
.board-wrapper(class=currentBoard.colorClass)
|
||||
+sidebar
|
||||
.board-canvas.js-swimlanes.dragscroll(
|
||||
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
|
||||
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
|
||||
@@ -36,6 +35,7 @@ template(name="boardBody")
|
||||
+calendarView
|
||||
else
|
||||
+listsGroup(currentBoard)
|
||||
+sidebar
|
||||
|
||||
template(name="calendarView")
|
||||
if isViewCalendar
|
||||
|
||||
@@ -1958,7 +1958,7 @@ THEME - Modern
|
||||
.board-color-modern .pop-over-list li>a .sub-name {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.board-color-modern .sidebar .sidebar-shadow {
|
||||
.board-color-modern .sidebar {
|
||||
box-shadow: 0 0 60px rgba(0,0,0,0.2);
|
||||
}
|
||||
.board-color-modern .board-color-modern section#notifications-drawer {
|
||||
@@ -2431,7 +2431,7 @@ THEME - Modern Dark
|
||||
background-color: #ccc;
|
||||
color: #222;
|
||||
}
|
||||
.board-color-moderndark .sidebar .sidebar-shadow {
|
||||
.board-color-moderndark .sidebar {
|
||||
background-color: #222;
|
||||
box-shadow: -10px 0 5px -10px #444;
|
||||
border-left: 1px solid #333;
|
||||
@@ -2776,16 +2776,16 @@ THEME - Clean Dark
|
||||
background: #0A0A14;
|
||||
}
|
||||
|
||||
.board-color-cleandark .sidebar .sidebar-shadow {
|
||||
.board-color-cleandark .sidebar {
|
||||
background: rgba(35, 35, 43, 1) !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.board-color-cleandark .sidebar .sidebar-shadow hr {
|
||||
.board-color-cleandark .sidebar hr {
|
||||
background:rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.board-color-cleandark .sidebar .sidebar-shadow .tab-item {
|
||||
.board-color-cleandark .sidebar .tab-item {
|
||||
border-radius: 16px;
|
||||
padding: 4px 12px 4px 12px;
|
||||
font-size: 16px;
|
||||
@@ -2795,14 +2795,14 @@ THEME - Clean Dark
|
||||
background: rgba(57, 57, 71, 1);
|
||||
}
|
||||
|
||||
.board-color-cleandark .sidebar .sidebar-shadow .tab-item.active {
|
||||
.board-color-cleandark .sidebar .tab-item.active {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
color: rgba(10, 10, 20, 1);
|
||||
border: none;
|
||||
padding: 4px 12px 4px 12px !important;
|
||||
}
|
||||
|
||||
.board-color-cleandark .sidebar .sidebar-shadow .tabs-content-container {
|
||||
.board-color-cleandark .sidebar .tabs-content-container {
|
||||
border: none;
|
||||
}
|
||||
|
||||
@@ -3269,11 +3269,6 @@ THEME - Clean Light
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.board-color-cleanlight .list:first-child,
|
||||
.board-color-cleandark .list:first-child {
|
||||
margin-right: -32px;
|
||||
}
|
||||
|
||||
.board-color-cleanlight .list .list-header .list-header-menu,
|
||||
.board-color-cleandark .list .list-header .list-header-menu {
|
||||
display: flex;
|
||||
@@ -3357,7 +3352,6 @@ THEME - Clean Light
|
||||
.board-color-cleanlight .swimlane,
|
||||
.board-color-cleandark .swimlane {
|
||||
background: none;
|
||||
gap: 32px;
|
||||
}
|
||||
|
||||
.board-color-cleanlight .swimlane-height-apply,
|
||||
@@ -3420,16 +3414,16 @@ THEME - Clean Light
|
||||
display: none;
|
||||
}
|
||||
|
||||
.board-color-cleanlight .sidebar .sidebar-shadow {
|
||||
.board-color-cleanlight .sidebar {
|
||||
background: rgba(248, 248, 249, 1) !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.board-color-cleanlight .sidebar .sidebar-shadow hr {
|
||||
.board-color-cleanlight .sidebar hr {
|
||||
background: rgba(23, 23, 28, 0.05);
|
||||
}
|
||||
|
||||
.board-color-cleanlight .sidebar .sidebar-shadow .tab-item {
|
||||
.board-color-cleanlight .sidebar .tab-item {
|
||||
border-radius: 16px;
|
||||
padding: 4px 12px 4px 12px;
|
||||
font-size: 16px;
|
||||
@@ -3439,14 +3433,14 @@ THEME - Clean Light
|
||||
background: rgba(234, 234, 237, 1);
|
||||
}
|
||||
|
||||
.board-color-cleanlight .sidebar .sidebar-shadow .tab-item.active {
|
||||
.board-color-cleanlight .sidebar .tab-item.active {
|
||||
background: rgba(23, 23, 28, 1);
|
||||
color: rgba(255, 255, 255, 1);
|
||||
border: none;
|
||||
padding: 4px 12px 4px 12px !important;
|
||||
}
|
||||
|
||||
.board-color-cleanlight .sidebar .sidebar-shadow .tabs-content-container {
|
||||
.board-color-cleanlight .sidebar .tabs-content-container {
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
float: left;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
margin: 0 4px 4px 0;
|
||||
margin: .3vh;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
z-index: 1;
|
||||
|
||||
@@ -7,12 +7,14 @@
|
||||
border-left: 1px solid #ccc;
|
||||
padding: 0;
|
||||
float: left;
|
||||
flex: 1;
|
||||
}
|
||||
[id^="swimlane-"] .list:first-child {
|
||||
min-width: 20px;
|
||||
}
|
||||
.list:first-child {
|
||||
border-left: none;
|
||||
flex: none;
|
||||
}
|
||||
.card-details + .list {
|
||||
border-left: none;
|
||||
@@ -31,6 +33,9 @@
|
||||
box-shadow: none;
|
||||
height: 100px;
|
||||
}
|
||||
.list.list-collapsed {
|
||||
flex: none;
|
||||
}
|
||||
.list.list-composer .open-list-composer,
|
||||
.list .list-composer .open-list-composer {
|
||||
color: #8c8c8c;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
template(name='list')
|
||||
.list.js-list(id="js-list-{{_id}}"
|
||||
style="{{#unless collapsed}}width:{{listWidth}}px;{{/unless}}"
|
||||
style="{{#unless collapsed}}min-width:{{listWidth}}px;{{/unless}}"
|
||||
class="{{#if collapsed}}list-collapsed{{/if}}")
|
||||
+listHeader
|
||||
+listBody
|
||||
|
||||
@@ -3,16 +3,11 @@
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.sidebar .sidebar-shadow {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
.sidebar {
|
||||
background: #f7f7f7;
|
||||
box-shadow: -10px 0px 5px -10px #b3b3b3;
|
||||
z-index: 10;
|
||||
}
|
||||
.sidebar-xmark {
|
||||
position: absolute;
|
||||
@@ -24,17 +19,15 @@
|
||||
.sidebar-xmark:hover {
|
||||
background: rgba(0,0,0,0.15);
|
||||
}
|
||||
.sidebar-actions {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 10px 10px 0px 10px;
|
||||
}
|
||||
.sidebar .sidebar-content {
|
||||
padding: 12px;
|
||||
margin-bottom: 1.6em;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
width: 90%;
|
||||
padding: 0 12px;
|
||||
}
|
||||
.sidebar .sidebar-content .hide-btn {
|
||||
display: none;
|
||||
@@ -110,21 +103,19 @@
|
||||
margin-right: 10px;
|
||||
}
|
||||
.sidebar .sidebar-shortcuts {
|
||||
position: absolute;
|
||||
margin-left: 40%;
|
||||
padding: 0;
|
||||
top: 7px;
|
||||
font-size: 0.8em;
|
||||
line-height: 1.6em;
|
||||
color: #999;
|
||||
}
|
||||
.board-sidebar {
|
||||
width: 548px;
|
||||
right: -548px;
|
||||
display: none;
|
||||
width: 30vw;
|
||||
z-index: 100;
|
||||
transition: top 0.1s, right 0.1s, width 0.1s;
|
||||
}
|
||||
.board-sidebar.is-open {
|
||||
right: 0;
|
||||
display: block;
|
||||
}
|
||||
.board-widget h4 {
|
||||
margin: 5px 0;
|
||||
|
||||
@@ -4,17 +4,21 @@ template(name="sidebar")
|
||||
// class="{{#if isTongueHidden}}is-hidden{{/if}}",
|
||||
// title="{{showTongueTitle}}")
|
||||
// i.fa.fa-navicon
|
||||
.sidebar-shadow
|
||||
.sidebar-actions
|
||||
.sidebar-shortcuts
|
||||
a.board-header-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
|
||||
i.fa.fa-keyboard-o
|
||||
span {{_ 'keyboard-shortcuts' }}
|
||||
a.sidebar-xmark.js-close-sidebar ✕
|
||||
.sidebar-content.js-board-sidebar-content
|
||||
//a.hide-btn.js-hide-sidebar
|
||||
// i.fa.fa-navicon
|
||||
unless isDefaultView
|
||||
h2
|
||||
a.fa.fa-chevron-left.js-back-home
|
||||
= getViewTitle
|
||||
if isOpen
|
||||
+Template.dynamic(template=getViewTemplate)
|
||||
.sidebar-content.js-board-sidebar-content
|
||||
//a.hide-btn.js-hide-sidebar
|
||||
// i.fa.fa-navicon
|
||||
unless isDefaultView
|
||||
h2
|
||||
a.fa.fa-chevron-left.js-back-home
|
||||
= getViewTitle
|
||||
if isOpen
|
||||
+Template.dynamic(template=getViewTemplate)
|
||||
|
||||
template(name='homeSidebar')
|
||||
hr
|
||||
@@ -47,11 +51,6 @@ template(name="membersWidget")
|
||||
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
|
||||
i.board-header-btn-icon.fa.fa-cog
|
||||
| {{_ 'boardMenuPopup-title'}}
|
||||
.board-widget.board-widget-members
|
||||
.sidebar-shortcuts
|
||||
a.board-header-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
|
||||
i.fa.fa-keyboard-o
|
||||
span {{_ 'keyboard-shortcuts' }}
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-users
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
@media screen and (min-width: 801px) {
|
||||
.swimlane.ui-sortable {
|
||||
width: max-content;
|
||||
}
|
||||
}
|
||||
[class=swimlane] {
|
||||
position: sticky;
|
||||
left: 0;
|
||||
|
||||
@@ -2,7 +2,7 @@ template(name="swimlane")
|
||||
.swimlane.nodragscroll
|
||||
+swimlaneHeader
|
||||
unless collapseSwimlane
|
||||
.swimlane.js-lists.js-swimlane(id="swimlane-{{_id}}"
|
||||
.swimlane.js-lists.js-swimlane.dragscroll(id="swimlane-{{_id}}"
|
||||
style="height:{{swimlaneHeight}};")
|
||||
if isMiniScreen
|
||||
if currentListIsInThisSwimlane _id
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
float: left;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
margin: .3vh;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
z-index: 1;
|
||||
|
||||
@@ -8,7 +8,7 @@ This is without container (without Docker or Snap).
|
||||
|
||||
Right click and download files 1-4:
|
||||
|
||||
1. [wekan-7.65-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v7.65/wekan-7.65-amd64-windows.zip)
|
||||
1. [wekan-7.68-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v7.68/wekan-7.68-amd64-windows.zip)
|
||||
|
||||
2. [node.exe](https://nodejs.org/dist/latest-v14.x/win-x64/node.exe)
|
||||
|
||||
@@ -20,7 +20,7 @@ Right click and download files 1-4:
|
||||
|
||||
6. Double click `mongodb-windows-x86_64-6.0.19-signed.msi` . In installer, uncheck downloading MongoDB compass.
|
||||
|
||||
7. Unzip `wekan-7.65-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
7. Unzip `wekan-7.68-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
|
||||
```
|
||||
bundle (directory)
|
||||
|
||||
@@ -128,7 +128,7 @@ Other:
|
||||
.card-details .card-details-header { background-color:#ccc; }
|
||||
|
||||
/* sidebar */
|
||||
.sidebar-tongue, .sidebar-shadow { background-color:#666 !important; }
|
||||
.sidebar-tongue, .sidebar { background-color:#666 !important; }
|
||||
.sidebar-content h3, .sidebar-content .activity-desc { color:rgba(255,255,255,.7) !important; }
|
||||
```
|
||||
|
||||
|
||||
@@ -87,8 +87,8 @@
|
||||
"add-card-to-top-of-list": "Dodaj kartę na początku listy",
|
||||
"add-card-to-bottom-of-list": "Dodaj kartę na końcu listy",
|
||||
"setListWidthPopup-title": "Ustaw szerokość listy",
|
||||
"set-list-width": "Set Min Width",
|
||||
"set-list-width-value": "Min Width (pixels)",
|
||||
"set-list-width": "Ustaw min. szerokość",
|
||||
"set-list-width-value": "Min. szerokość (piksele)",
|
||||
"list-width-error-message": "Szerokość listy musi mieć wartość dodatnią",
|
||||
"setSwimlaneHeightPopup-title": "Ustaw wysokość ścieżki",
|
||||
"set-swimlane-height": "Ustaw wysokość ścieżki",
|
||||
@@ -295,7 +295,7 @@
|
||||
"color-white": "biała",
|
||||
"color-yellow": "żółta",
|
||||
"unset-color": "Nieustawiony",
|
||||
"comments": "Comments",
|
||||
"comments": "Komentarze",
|
||||
"comment": "Komentarz",
|
||||
"comment-placeholder": "Dodaj komentarz",
|
||||
"comment-only": "Tylko komentowanie",
|
||||
@@ -445,7 +445,7 @@
|
||||
"advanced-filter-description": "Zaawansowane filtry pozwalają na wykorzystanie ciągu znaków wraz z następującymi operatorami: == != <= >= && || (). Spacja jest używana jako separator pomiędzy operatorami. Możesz przefiltrowywać wszystkie niestandardowe pola wpisując ich nazwy lub wartości, na przykład: Pole1 == Wartość1.\nUwaga: Jeśli pola lub wartości zawierają spację, musisz je zawrzeć w pojedynczym cudzysłowie, na przykład: 'Pole 1' == 'Wartość 1'. Dla pojedynczych znaków, które powinny być pominięte, należy użyć \\\\, na przykład Pole1 == I\\\\'m. Możesz także wykorzystywać mieszane warunki, na przykład P1 == W1 || P1 == W2. Standardowo wszystkie operatory są interpretowane od lewej do prawej. Możesz także zmienić kolejność interpretacji wykorzystując nawiasy, na przykład P1 == W1 && (P2 == W2 || P2 == W3). Możesz także wyszukiwać tekstowo wykorzystując wyrażenia regularne, na przykład: P1 == /Tes.*/i",
|
||||
"fullname": "Pełna nazwa",
|
||||
"header-logo-title": "Wróć do swojej strony z tablicami.",
|
||||
"show-activities": "Show Activities",
|
||||
"show-activities": "Pokaż aktywności",
|
||||
"headerBarCreateBoardPopup-title": "Utwórz tablicę",
|
||||
"home": "Strona główna",
|
||||
"import": "Importuj",
|
||||
@@ -574,7 +574,7 @@
|
||||
"select-board": "Wybierz tablicę",
|
||||
"set-wip-limit-value": "Ustaw maksymalny limit kart na tej liście",
|
||||
"setWipLimitPopup-title": "Ustaw limit kart na liście",
|
||||
"shortcut-add-self": "Add yourself to current card",
|
||||
"shortcut-add-self": "Dodaj siebie do obecnej karty",
|
||||
"shortcut-assign-self": "Przypisz siebie do obecnej karty",
|
||||
"shortcut-autocomplete-emoji": "Autouzupełnianie emoji",
|
||||
"shortcut-autocomplete-members": "Autouzupełnianie użytkowników",
|
||||
@@ -959,7 +959,7 @@
|
||||
"delete-linked-card-before-this-card": "Nie możesz usunąć tej karty, dopóki nie usuniesz podpiętej karty, w której są",
|
||||
"delete-linked-cards-before-this-list": "Nie możesz usunąć tej karty, dopóki nie usuniesz podpiętych kart, które wskazują na karty w tej liście",
|
||||
"hide-checked-items": "Ukryj ukończone",
|
||||
"hide-finished-checklist": "Hide finished checklist",
|
||||
"hide-finished-checklist": "Ukryj ukończoną listę",
|
||||
"task": "Zadanie",
|
||||
"create-task": "Utwórz zadanie",
|
||||
"ok": "OK",
|
||||
@@ -1113,8 +1113,8 @@
|
||||
"created-at-newest-first": "daty utworzenia (najpierw najnowsze)",
|
||||
"created-at-oldest-first": "daty utworzenia (najpierw najstarsze)",
|
||||
"links-heading": "Linki",
|
||||
"hide-activities-of-all-boards": "Don't show the board activities on all boards",
|
||||
"now-activities-of-all-boards-are-hidden": "Now all activities of all boards are hidden",
|
||||
"hide-activities-of-all-boards": "Nie pokazuj aktywności na wszystkich tablicach",
|
||||
"now-activities-of-all-boards-are-hidden": "Teraz wszystkie aktywności wszystkich tablic są ukryte",
|
||||
"move-swimlane": "Przenieś ścieżkę",
|
||||
"moveSwimlanePopup-title": "Przenieś ścieżkę",
|
||||
"custom-field-stringtemplate": "Wzór ciągu znaków",
|
||||
@@ -1197,10 +1197,10 @@
|
||||
"checklistActionsPopup-title": "Checklist Actions",
|
||||
"moveChecklist": "Move Checklist",
|
||||
"moveChecklistPopup-title": "Move Checklist",
|
||||
"newlineBecomesNewChecklistItem": "Each line of text becomes one of the checklist items",
|
||||
"newlineBecomesNewChecklistItem": "Każdy wiersz tekstu staje się jednym z elementów listy kontrolnej",
|
||||
"newLineNewItem": "One line of text = one checklist item",
|
||||
"newlineBecomesNewChecklistItemOriginOrder": "Each line of text becomes one of the checklist items, original order",
|
||||
"originOrder": "original order",
|
||||
"originOrder": "pierwotna kolejność",
|
||||
"copyChecklist": "Copy Checklist",
|
||||
"copyChecklistPopup-title": "Copy Checklist",
|
||||
"card-show-lists": "Card Show Lists",
|
||||
@@ -1253,7 +1253,7 @@
|
||||
"convert-to-markdown": "Zamień na markdown",
|
||||
"import-board-zip": "Dodaj plik .zip z tablicą plików JSON, nazwą tablicy i podkatalogami z załącznikami",
|
||||
"collapse": "Zwiń",
|
||||
"uncollapse": "Uncollapse",
|
||||
"uncollapse": "Rozwiń",
|
||||
"hideCheckedChecklistItems": "Hide checked checklist items",
|
||||
"hideAllChecklistItems": "Hide all checklist items"
|
||||
}
|
||||
@@ -49,7 +49,7 @@
|
||||
"activity-archived": "%s flyttades till Arkiv",
|
||||
"activity-attached": "bifogade %s till %s",
|
||||
"activity-created": "skapade %s",
|
||||
"activity-changedListTitle": "renamed list to %s",
|
||||
"activity-changedListTitle": "döpte om listan till %s",
|
||||
"activity-customfield-created": "skapade anpassat fält %s",
|
||||
"activity-excluded": "exkluderade %s från %s",
|
||||
"activity-imported": "importerade %s till %s från %s",
|
||||
@@ -87,8 +87,8 @@
|
||||
"add-card-to-top-of-list": "Lägg till kort överst i listan",
|
||||
"add-card-to-bottom-of-list": "Lägg till kort i botten av listan",
|
||||
"setListWidthPopup-title": "Ställ in listbredd",
|
||||
"set-list-width": "Set Min Width",
|
||||
"set-list-width-value": "Min Width (pixels)",
|
||||
"set-list-width": "Ställ in min bredd",
|
||||
"set-list-width-value": "Min bredd (pixlar)",
|
||||
"list-width-error-message": "Listbredden måste vara ett positivt heltal",
|
||||
"setSwimlaneHeightPopup-title": "Ställ in simbanans höjd",
|
||||
"set-swimlane-height": "Ställ in simbanans höjd",
|
||||
@@ -295,7 +295,7 @@
|
||||
"color-white": "vit",
|
||||
"color-yellow": "gul",
|
||||
"unset-color": "Ta bort",
|
||||
"comments": "Comments",
|
||||
"comments": "Kommentarer",
|
||||
"comment": "Kommentera",
|
||||
"comment-placeholder": "Skriv kommentar",
|
||||
"comment-only": "Kommentera endast",
|
||||
@@ -445,7 +445,7 @@
|
||||
"advanced-filter-description": "Avancerade filter låter dig skriva en sträng innehållande följande operatorer: == != <= >= && || ( ). Ett mellanslag används som separator mellan operatorerna. Du kan filtrera alla specialfält genom att skriva dess namn och värde. Till exempel: Fält1 == Vårde1. Notera: om fälten eller värden innehåller mellanrum behöver du innesluta dem med enkla citatstecken. Till exempel: 'Fält 1' == 'Värde 1'. För att skippa enkla kontrolltecken (' \\\\/) kan du använda \\\\. Till exempel: Fält1 == I\\\\'m. Du kan även kombinera fler villkor. TIll exempel: F1 == V1 || F1 == V2. Vanligtvis läses operatorerna från vänster till höger. Du kan ändra ordning genom att använda paranteser. TIll exempel: F1 == V1 && ( F2 == V2 || F2 == V3 ). Du kan även söka efter textfält med hjälp av regex: F1 == /Tes.*/i",
|
||||
"fullname": "Namn",
|
||||
"header-logo-title": "Gå tillbaka till din anslagstavlor-sida.",
|
||||
"show-activities": "Show Activities",
|
||||
"show-activities": "Visa aktiviteter",
|
||||
"headerBarCreateBoardPopup-title": "Skapa tavla",
|
||||
"home": "Hem",
|
||||
"import": "Importera",
|
||||
@@ -574,7 +574,7 @@
|
||||
"select-board": "Välj tavla",
|
||||
"set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan",
|
||||
"setWipLimitPopup-title": "Ställ in WIP-gräns",
|
||||
"shortcut-add-self": "Add yourself to current card",
|
||||
"shortcut-add-self": "Tilldela dig nuvarande kort",
|
||||
"shortcut-assign-self": "Tilldela dig nuvarande kort",
|
||||
"shortcut-autocomplete-emoji": "Komplettera automatiskt emoji",
|
||||
"shortcut-autocomplete-members": "Komplettera automatiskt medlemmar",
|
||||
@@ -959,7 +959,7 @@
|
||||
"delete-linked-card-before-this-card": "Du kan inte radera det här kortet innan du raderat länkat kort som har",
|
||||
"delete-linked-cards-before-this-list": "Du kan inte radera den här listan innan du raderat länkade kort som pekar till kort i den här listan",
|
||||
"hide-checked-items": "Dölj markerade objekt",
|
||||
"hide-finished-checklist": "Hide finished checklist",
|
||||
"hide-finished-checklist": "Göm färdig checklista",
|
||||
"task": "Uppgift",
|
||||
"create-task": "Skapa uppgift",
|
||||
"ok": "OK",
|
||||
@@ -1113,8 +1113,8 @@
|
||||
"created-at-newest-first": "Skapad den (Nyast först)",
|
||||
"created-at-oldest-first": "Skapad den (äldst först)",
|
||||
"links-heading": "Länkar",
|
||||
"hide-activities-of-all-boards": "Don't show the board activities on all boards",
|
||||
"now-activities-of-all-boards-are-hidden": "Now all activities of all boards are hidden",
|
||||
"hide-activities-of-all-boards": "Visa inte aktiviteter på alla tavlor",
|
||||
"now-activities-of-all-boards-are-hidden": "Nu är alla aktiviteter på alla tavlor dolda",
|
||||
"move-swimlane": "Flytta simbana",
|
||||
"moveSwimlanePopup-title": "Flytta simbana",
|
||||
"custom-field-stringtemplate": "Textmall",
|
||||
@@ -1197,10 +1197,10 @@
|
||||
"checklistActionsPopup-title": "Liståtgärder",
|
||||
"moveChecklist": "Flytta checklista",
|
||||
"moveChecklistPopup-title": "Flytta checklista",
|
||||
"newlineBecomesNewChecklistItem": "Each line of text becomes one of the checklist items",
|
||||
"newLineNewItem": "One line of text = one checklist item",
|
||||
"newlineBecomesNewChecklistItemOriginOrder": "Each line of text becomes one of the checklist items, original order",
|
||||
"originOrder": "original order",
|
||||
"newlineBecomesNewChecklistItem": "Varje textrad blir ett objekt i checklistan",
|
||||
"newLineNewItem": "En textrad = ett objekt i checklistan",
|
||||
"newlineBecomesNewChecklistItemOriginOrder": "Varje textrad blir ett objekt i checklistan, i ursprunglig ordning",
|
||||
"originOrder": "ursprunglig ordning",
|
||||
"copyChecklist": "Kopiera checklista",
|
||||
"copyChecklistPopup-title": "Kopiera checklista",
|
||||
"card-show-lists": "Visa listor på kort",
|
||||
@@ -1254,6 +1254,6 @@
|
||||
"import-board-zip": "Lägga till .zip-filen till tavlans JSON filer, och tavla",
|
||||
"collapse": "Fäll ihop",
|
||||
"uncollapse": "Expandera",
|
||||
"hideCheckedChecklistItems": "Hide checked checklist items",
|
||||
"hideAllChecklistItems": "Hide all checklist items"
|
||||
"hideCheckedChecklistItems": "Dölj markerade objekt i checklistan",
|
||||
"hideAllChecklistItems": "Dölj alla objekt i checklistan"
|
||||
}
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v7.65.0",
|
||||
"version": "v7.68.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v7.65.0",
|
||||
"version": "v7.68.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"repository": {
|
||||
@@ -20,8 +20,8 @@
|
||||
"@babel/runtime": "^7.25.0",
|
||||
"@mapbox/node-pre-gyp": "^1.0.10",
|
||||
"@rwap/jquery-ui-touch-punch": "^1.0.11",
|
||||
"@wekanteam/dragscroll": "github:wekan/dragscroll",
|
||||
"@wekanteam/exceljs": "github:wekan/exceljs",
|
||||
"@wekanteam/dragscroll": "https://github.com/wekan/dragscroll.git",
|
||||
"@wekanteam/exceljs": "https://github.com/wekan/exceljs.git",
|
||||
"@wekanteam/html-to-markdown": "^1.0.2",
|
||||
"@wekanteam/meteor-globals": "^1.1.4",
|
||||
"@wekanteam/meteor-reactive-cache": "^1.0.6",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>Wekan REST API v7.65</title>
|
||||
<title>Wekan REST API v7.68</title>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -1549,7 +1549,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<ul class="toc-list-h1">
|
||||
|
||||
<li>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v7.65">Wekan REST API v7.65</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v7.68">Wekan REST API v7.68</a>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -2068,7 +2068,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<div class="page-wrapper">
|
||||
<div class="dark-box"></div>
|
||||
<div class="content">
|
||||
<h1 id="wekan-rest-api">Wekan REST API v7.65</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v7.68</h1>
|
||||
<blockquote>
|
||||
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
|
||||
</blockquote>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v7.65
|
||||
version: v7.68
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 765,
|
||||
appVersion = 768,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "7.65.0~2024-11-20"),
|
||||
appMarketingVersion = (defaultText = "7.68.0~2024-11-24"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
name: wekan
|
||||
version: '7.65'
|
||||
version: '7.68'
|
||||
base: core20
|
||||
summary: Open Source kanban
|
||||
description: |
|
||||
@@ -170,9 +170,9 @@ parts:
|
||||
# Cleanup
|
||||
mkdir .build
|
||||
cd .build
|
||||
wget https://github.com/wekan/wekan/releases/download/v7.65/wekan-7.65-amd64.zip
|
||||
unzip wekan-7.65-amd64.zip
|
||||
rm wekan-7.65-amd64.zip
|
||||
wget https://github.com/wekan/wekan/releases/download/v7.68/wekan-7.68-amd64.zip
|
||||
unzip wekan-7.68-amd64.zip
|
||||
rm wekan-7.68-amd64.zip
|
||||
cd ..
|
||||
##cd .build/bundle
|
||||
##find . -type d -name '*-garbage*' | xargs rm -rf
|
||||
|
||||
Reference in new issue
Block a user