Compare commits

...
24 Commits
Author SHA1 Message Date
Lauri Ojansivu 3912181857 v7.68 2024-11-24 20:44:30 +02:00
Lauri Ojansivu b9a01eb5d6 Updated ChangeLog. 2024-11-24 20:35:28 +02:00
Lauri Ojansivu 3027f0acb0 Updated translations. 2024-11-24 20:34:34 +02:00
Lauri Ojansivu 609c2a5ddb Updated ChangeLog. 2024-11-24 20:33:32 +02:00
Lauri Ojansivu f76d648012 Merge branch 'feature/new-dockerfile' of https://github.com/NadavTasher/wekan 2024-11-24 20:13:14 +02:00
Nadav Tasher 203bf92a0a Fix data directory regression 2024-11-24 19:49:32 +02:00
Lauri Ojansivu 3e8cc9e905 Merge branch 'feature/new-dockerfile' of https://github.com/NadavTasher/wekan 2024-11-24 04:22:27 +02:00
Nadav Tasher b9f32c1739 Remove ulimit from Dockerfile 2024-11-24 02:01:10 +02:00
Nadav Tasher 7e1c65f616 Removed stack-size changing, replaced with FD limit 2024-11-24 01:29:56 +02:00
Nadav Tasher 447ae93476 Updated NodeJS version to v14.21.4 (Meteor ESM) 2024-11-24 00:46:29 +02:00
Nadav Tasher 6df40f41ac Change source of GitHub wekan packages to HTTPs (eliminates git ls-remote) 2024-11-23 23:21:12 +02:00
Nadav Tasher 3e0ef3d070 Created efficient multi-stage Dockerfile 2024-11-23 23:20:57 +02:00
Lauri Ojansivu 33a17a9a1b v7.67 2024-11-21 01:42:38 +02:00
Lauri Ojansivu aed4bfb7f4 Updated translations. 2024-11-21 01:33:11 +02:00
Nadav Tasher 78f7c3e5bd Updated theming documentation on sidebar coloring 2024-11-21 00:43:20 +02:00
Nadav Tasher d764047c1f Remove non-effective height property (does nothing here) 2024-11-21 00:42:23 +02:00
Nadav Tasher 65015ea7c7 Remove non-required sidebar-shadow div in favor of direct sidebar background 2024-11-21 00:41:57 +02:00
Nadav Tasher 6ef2d9cb9d Remove bottom margin from sidebar (causes an out-of-theme white gap) 2024-11-21 00:24:40 +02:00
Nadav Tasher c39fdab11d Disable scrollbar hiding in swimlanes 2024-11-21 00:14:04 +02:00
Nadav Tasher 547261abb6 Disable scrollbar hiding in sidebar 2024-11-21 00:13:50 +02:00
Nadav Tasher 7696b7b769 Disable scrollbar hiding in list 2024-11-21 00:13:34 +02:00
Nadav Tasher 585635494a Disable scrollbar hiding in cardDetails 2024-11-21 00:13:22 +02:00
Nadav Tasher a36e80099a Revert "Revert some scrollbar, sidebar and list width changes."
This reverts commit 096fe130f6.
2024-11-21 00:10:49 +02:00
Nadav Tasher f5f8a4f6fb Revert "Updated translations."
This reverts commit 83a12a9a26.
2024-11-21 00:10:30 +02:00
24 changed files with 208 additions and 246 deletions

No files matched your search

+18
View File
@@ -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
View File
@@ -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
View File
@@ -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
-3
View File
@@ -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;
+1 -1
View File
@@ -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
+12 -18
View File
@@ -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;
}
+1 -1
View File
@@ -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;
+5
View File
@@ -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 -1
View File
@@ -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
+14 -23
View File
@@ -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;
+14 -15
View File
@@ -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 &#10005;
.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;
+1 -1
View File
@@ -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
+1
View File
@@ -5,6 +5,7 @@
float: left;
height: 30px;
width: 30px;
margin: .3vh;
cursor: pointer;
user-select: none;
z-index: 1;
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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; }
```
+11 -11
View File
@@ -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"
}
+15 -15
View File
@@ -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"
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v7.65.0",
"version": "v7.68.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+3 -3
View File
@@ -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",
+3 -3
View File
@@ -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 -1
View File
@@ -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.
+2 -2
View File
@@ -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
View File
@@ -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