Compare commits

..

16 Commits

Author SHA1 Message Date
renovate 6b6d1badab chore(deps): update golangci/golangci-lint docker tag to v1.57.1
continuous-integration/drone/pr Build is pending Details
2024-03-20 17:05:22 +00:00
renovate 5e3616bda3 fix(deps): update dependency ufo to v1.5.3
continuous-integration/drone/push Build is passing Details
2024-03-20 16:32:22 +00:00
renovate 3e5ff77b91 fix(deps): update dependency express to v4.19.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is failing Details
2024-03-20 16:05:36 +00:00
kolaente 403db6adbf
fix(reminder): do not close the popup directly after changing the value
continuous-integration/drone/push Build is passing Details
Fixes https://github.com/go-vikunja/vikunja/issues/225
2024-03-20 11:58:29 +01:00
kolaente fd4312382e
fix(kanban): remove unused function
continuous-integration/drone/push Build is failing Details
2024-03-20 11:46:36 +01:00
kolaente 2dcf6c6861
fix(kanban): do not use the bucket id saved on the task
continuous-integration/drone/push Build was killed Details
2024-03-20 11:36:54 +01:00
kolaente 8f85af07ca
fix(task): clear timeout for description save when closing the task detail 2024-03-20 11:26:54 +01:00
kolaente 9f89fbe5a6
fix(tests): do not try to create tasks with bucket_id
continuous-integration/drone/push Build is failing Details
2024-03-20 10:54:37 +01:00
kolaente 6ad83c0685
chore: do not import message dynamically
continuous-integration/drone/push Build is failing Details
Since it was not done consistently, it would not get imported dynamically anyway. This fixes the compile warnings.
2024-03-20 10:52:59 +01:00
kolaente 97b7592e7c
fix(views): do not map bucket id from xorm
continuous-integration/drone/push Build was killed Details
2024-03-20 10:41:58 +01:00
kolaente 19c9cd9bc2
fix(docker): don't install cypress in docker image
continuous-integration/drone/push Build is passing Details
2024-03-20 09:38:28 +01:00
Frederick [Bot] e53fcd3367 [skip ci] Updated swagger docs 2024-03-20 08:35:16 +00:00
kolaente d635fd2dd3
fix(projects): remove done bucket id field from projects struct
continuous-integration/drone/push Build is passing Details
2024-03-20 09:21:40 +01:00
renovate b8584301a3 fix(deps): update dependency @infectoone/vue-ganttastic to v2.3.1
continuous-integration/drone/push Build is passing Details
2024-03-20 08:01:25 +00:00
renovate 2bb4c31f20 chore(deps): update dev-dependencies
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is failing Details
2024-03-20 03:07:47 +00:00
Frederick [Bot] d22ebef0b3 chore(i18n): update translations via Crowdin
continuous-integration/drone/push Build is passing Details
2024-03-20 00:06:31 +00:00
19 changed files with 380 additions and 416 deletions

View File

@ -139,7 +139,7 @@ steps:
event: [ push, tag, pull_request ]
- name: api-lint
image: golangci/golangci-lint:v1.57.0
image: golangci/golangci-lint:v1.57.1
pull: always
environment:
GOPROXY: 'https://goproxy.kolaente.de'

View File

@ -5,6 +5,7 @@ WORKDIR /build
ENV PNPM_CACHE_FOLDER .cache/pnpm/
ENV PUPPETEER_SKIP_DOWNLOAD true
ENV CYPRESS_INSTALL_BINARY 0
COPY frontend/ ./

View File

@ -56,6 +56,6 @@
},
"dependencies": {
"connect-history-api-fallback": "2.0.0",
"express": "4.18.3"
"express": "4.19.0"
}
}

View File

@ -581,10 +581,10 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
cookie@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
cookie@0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
core-util-is@1.0.2:
version "1.0.2"
@ -830,17 +830,17 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
express@4.18.3:
version "4.18.3"
resolved "https://registry.yarnpkg.com/express/-/express-4.18.3.tgz#6870746f3ff904dee1819b82e4b51509afffb0d4"
integrity sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==
express@4.19.0:
version "4.19.0"
resolved "https://registry.yarnpkg.com/express/-/express-4.19.0.tgz#c9f689a62522f3399132d49eacd9af177d8ccb9e"
integrity sha512-/ERliX0l7UuHEgAy7HU2FRsiz3ScIKNl/iwnoYzHTJC0Sqj3ctWDD3MQ9CbUEfjshvxXImWaeukD0Xo7a2lWLA==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
body-parser "1.20.2"
content-disposition "0.5.4"
content-type "~1.0.4"
cookie "0.5.0"
cookie "0.6.0"
cookie-signature "1.0.6"
debug "2.6.9"
depd "2.0.0"

View File

@ -20,7 +20,6 @@ function createSingleTaskInBucket(count = 1, attrs = {}) {
})
const tasks = TaskFactory.create(count, {
project_id: projects[0].id,
bucket_id: buckets[0].id,
...attrs,
})
TaskBucketFactory.create(1, {

View File

@ -467,7 +467,6 @@ describe('Task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
project_id: projects[0].id,
bucket_id: buckets[0].id,
})
const labels = LabelFactory.create(1)
LabelTaskFactory.truncate()
@ -834,7 +833,6 @@ describe('Task', () => {
const tasks = TaskFactory.create(1, {
id: 1,
project_id: projects[0].id,
bucket_id: buckets[0].id,
})
const labels = LabelFactory.create(1)
LabelTaskFactory.truncate()

View File

@ -55,7 +55,7 @@
"@fortawesome/free-solid-svg-icons": "6.5.1",
"@fortawesome/vue-fontawesome": "3.0.6",
"@github/hotkey": "3.1.0",
"@infectoone/vue-ganttastic": "2.2.0",
"@infectoone/vue-ganttastic": "2.3.1",
"@intlify/unplugin-vue-i18n": "3.0.1",
"@kyvg/vue3-notification": "3.2.1",
"@sentry/tracing": "7.107.0",
@ -117,7 +117,7 @@
"snake-case": "3.0.4",
"sortablejs": "1.15.2",
"tippy.js": "6.3.7",
"ufo": "1.5.2",
"ufo": "1.5.3",
"vue": "3.4.21",
"vue-advanced-cropper": "2.8.8",
"vue-flatpickr-component": "11.0.5",
@ -134,7 +134,7 @@
"@faker-js/faker": "8.4.1",
"@histoire/plugin-screenshot": "0.17.14",
"@histoire/plugin-vue": "0.17.14",
"@rushstack/eslint-patch": "1.7.2",
"@rushstack/eslint-patch": "1.8.0",
"@tsconfig/node18": "18.2.2",
"@types/codemirror": "5.60.15",
"@types/dompurify": "3.0.5",
@ -142,7 +142,7 @@
"@types/is-touch-device": "1.0.2",
"@types/lodash.debounce": "4.0.9",
"@types/marked": "5.0.2",
"@types/node": "20.11.29",
"@types/node": "20.11.30",
"@types/postcss-preset-env": "7.7.0",
"@types/sortablejs": "1.15.8",
"@typescript-eslint/eslint-plugin": "7.3.1",
@ -163,7 +163,7 @@
"eslint-plugin-vue": "9.23.0",
"happy-dom": "14.0.0",
"histoire": "0.17.14",
"postcss": "8.4.36",
"postcss": "8.4.37",
"postcss-easing-gradients": "3.0.1",
"postcss-easings": "4.0.0",
"postcss-focus-within": "8.0.1",
@ -175,7 +175,7 @@
"typescript": "5.4.2",
"vite": "5.1.6",
"vite-plugin-inject-preload": "1.3.3",
"vite-plugin-pwa": "0.19.4",
"vite-plugin-pwa": "0.19.5",
"vite-plugin-sentry": "1.4.0",
"vite-svg-loader": "5.1.0",
"vitest": "1.4.0",

File diff suppressed because it is too large Load Diff

View File

@ -47,7 +47,7 @@ import AddToHomeScreen from '@/components/home/AddToHomeScreen.vue'
import DemoMode from '@/components/home/DemoMode.vue'
const importAccountDeleteService = () => import('@/services/accountDelete')
const importMessage = () => import('@/message')
import {success} from '@/message'
const baseStore = useBaseStore()
const authStore = useAuthStore()
@ -69,11 +69,9 @@ watch(accountDeletionConfirm, async (accountDeletionConfirm) => {
return
}
const messageP = importMessage()
const AccountDeleteService = (await importAccountDeleteService()).default
const accountDeletionService = new AccountDeleteService()
await accountDeletionService.confirm(accountDeletionConfirm)
const {success} = await messageP
success({message: t('user.deletion.confirmSuccess')})
authStore.refreshUserInfo()
}, { immediate: true })

View File

@ -37,7 +37,7 @@
</template>
<script setup lang="ts">
import {ref, computed, watch} from 'vue'
import {ref, computed, watch, onBeforeUnmount} from 'vue'
import CustomTransition from '@/components/misc/CustomTransition.vue'
import Editor from '@/components/input/AsyncEditor'
@ -88,6 +88,12 @@ async function saveWithDelay() {
}, 5000)
}
onBeforeUnmount(() => {
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)
}
})
async function save() {
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)

View File

@ -47,7 +47,6 @@
<ReminderPeriod
v-if="activeForm === 'relative'"
v-model="reminder"
@update:modelValue="updateDataAndMaybeClose(close)"
/>
<DatepickerInline

View File

@ -57,11 +57,11 @@
"logout": "Wyloguj",
"emailInvalid": "Proszę podać poprawny adres e-mail.",
"usernameRequired": "Proszę podać nazwę użytkownika.",
"usernameMustNotContainSpace": "The username must not contain spaces.",
"usernameMustNotLookLikeUrl": "The username must not look like a URL.",
"usernameMustNotContainSpace": "Nazwa użytkownika nie może zawierać spacji.",
"usernameMustNotLookLikeUrl": "Nazwa użytkownika nie może wyglądać jak adres URL.",
"passwordRequired": "Proszę podać hasło.",
"passwordNotMin": "Password must have at least 8 characters.",
"passwordNotMax": "Password must have at most 250 characters.",
"passwordNotMin": "Hasło musi zawierać co najmniej 8 znaków.",
"passwordNotMax": "Hasło musi zawierać co najwyżej 250 znaków.",
"showPassword": "Pokaż hasło",
"hidePassword": "Ukryj hasło",
"noAccountYet": "Nie masz jeszcze konta?",
@ -248,7 +248,7 @@
"text2": "Dotyczy to wszystkich zadań i tego NIE DA SIĘ COFNĄĆ!",
"success": "Projekt został pomyślnie usunięty.",
"tasksToDelete": "To nieodwracalnie usunie około {count} zadań.",
"tasksAndChildProjectsToDelete": "This will irrevocably remove approx. {tasks} tasks and {projects} projects.",
"tasksAndChildProjectsToDelete": "To nieodwracalnie usunie ok. {tasks} zadań i {projects} projektów.",
"noTasksToDelete": "Ten projekt nie zawiera żadnych zadań, więc można go bezpiecznie usunąć."
},
"duplicate": {
@ -386,7 +386,7 @@
"filters": {
"title": "Filtry",
"clear": "Wyczyść filtry",
"showResults": "Show results",
"showResults": "Wyświetl wyniki",
"attributes": {
"title": "Tytuł",
"titlePlaceholder": "Tu wpisz tytuł filtra stałego…",
@ -419,48 +419,48 @@
"success": "Filtr został pomyślnie zapisany."
},
"query": {
"title": "Query",
"placeholder": "Type a search or filter query…",
"title": "Zapytanie",
"placeholder": "Wpisz zapytanie wyszukiwania lub filtruj…",
"help": {
"intro": "To filter tasks, you can use a query syntax similar to SQL. The available fields for filtering include:",
"link": "How does this work?",
"canUseDatemath": "You can date math to set relative dates. Click on the date value in a query to find out more.",
"intro": "Aby filtrować zadania, możesz użyć składni zapytań podobnej do SQL. Pola dostępne do filtrowania to:",
"link": "Jak to działa?",
"canUseDatemath": "Możesz użyć matematyki dat, aby ustawić daty względne. Kliknij wartość daty w zapytaniu, aby dowiedzieć się więcej.",
"fields": {
"done": "Whether the task is completed or not",
"priority": "The priority level of the task (1-5)",
"percentDone": "The percentage of completion for the task (0-100)",
"dueDate": "The due date of the task",
"startDate": "The start date of the task",
"endDate": "The end date of the task",
"doneAt": "The date and time when the task was completed",
"assignees": "The assignees of the task",
"labels": "The labels associated with the task",
"project": "The project the task belongs to (only available for saved filters, not on a project level)"
"done": "Czy zadanie zostało zakończone, czy nie",
"priority": "Priorytet zadania (1-5)",
"percentDone": "Procent ukończenia zadania (0-100)",
"dueDate": "Termin wykonania zadania",
"startDate": "Data rozpoczęcia zadania",
"endDate": "Data zakończenia zadania",
"doneAt": "Data i czas ukończenia zadania",
"assignees": "Osoby przypisane do zadania",
"labels": "Etykiety przypisane do zadania",
"project": "Projekt, do którego należy zadanie (dostępne tylko dla zapisanych filtrów, nie na poziomie projektu)"
},
"operators": {
"intro": "The available operators for filtering include:",
"notEqual": "Not equal to",
"equal": "Equal to",
"greaterThan": "Greater than",
"greaterThanOrEqual": "Greater than or equal to",
"lessThan": "Less than",
"lessThanOrEqual": "Less than or equal to",
"like": "Matches a pattern (using wildcard %)",
"in": "Matches any value in a comma-seperated list of values"
"intro": "Dostępne operatory do filtrowania to:",
"notEqual": "Nie równa się",
"equal": "Równa się",
"greaterThan": "Większe niż",
"greaterThanOrEqual": "Większe niż lub równe",
"lessThan": "Mniejsze niż",
"lessThanOrEqual": "Mniejsze niż lub równe",
"like": "Pasuje do wzorca (używając symbolu %)",
"in": "Dopasuje dowolną wartość z listy wartości oddzielonych przecinkami"
},
"logicalOperators": {
"intro": "To combine multiple conditions, you can use the following logical operators:",
"and": "AND operator, matches if all conditions are true",
"or": "OR operator, matches if any of the conditions are true",
"parentheses": "Parentheses for grouping conditions"
"intro": "Aby połączyć wiele warunków, możesz użyć następujących operatorów logicznych:",
"and": "Operator AND, dopasowuje, jeśli wszystkie warunki są prawdziwe",
"or": "Operator OR, dopasowuje, jeśli którykolwiek z warunków jest spełniony",
"parentheses": "Nawiasy do grupowania warunków"
},
"examples": {
"intro": "Here are some examples of filter queries:",
"priorityEqual": "Matches tasks with priority level 4",
"dueDatePast": "Matches tasks with a due date in the past",
"undoneHighPriority": "Matches undone tasks with priority level 3 or higher",
"assigneesIn": "Matches tasks assigned to either \"user1\" or \"user2\"",
"priorityOneOrTwoPastDue": "Matches tasks with priority level 1 or 2 and a due date in the past"
"intro": "Oto kilka przykładów zapytań filtrujących:",
"priorityEqual": "Dopasowuje zadania z priorytetem 4",
"dueDatePast": "Dopasowuje zadania z terminem wykonania w przeszłości",
"undoneHighPriority": "Dopasowuje niewykonane zadania z poziomem 3 lub wyższym",
"assigneesIn": "Dopasowuje zadania przypisane do \"user1\" lub \"user2\"",
"priorityOneOrTwoPastDue": "Dopasowuje zadania z poziomem 1 lub 2 i terminem wykonania w przeszłości"
}
}
}
@ -632,7 +632,7 @@
"to": "Do",
"from": "Od",
"fromto": "{from} do {to}",
"date": "Date",
"date": "Data",
"ranges": {
"today": "Dziś",
"thisWeek": "W tym tygodniu",
@ -649,25 +649,25 @@
"restOfThisYear": "Reszta tego roku"
},
"values": {
"now": "Now",
"startOfToday": "Start of today",
"endOfToday": "End of today",
"beginningOflastWeek": "Beginning of last week",
"endOfLastWeek": "End of last week",
"beginningOfThisWeek": "Beginning of this week",
"endOfThisWeek": "End of this week",
"startOfNextWeek": "Start of next week",
"endOfNextWeek": "End of next week",
"in7Days": "In 7 days",
"beginningOfLastMonth": "Beginning of last month",
"endOfLastMonth": "End of last month",
"startOfThisMonth": "Start of this month",
"endOfThisMonth": "End of this month",
"startOfNextMonth": "Start of next month",
"endOfNextMonth": "End of next month",
"in30Days": "In 30 days",
"startOfThisYear": "Beginning of this year",
"endOfThisYear": "End of this year"
"now": "Teraz",
"startOfToday": "Początek dzisiejszego dnia",
"endOfToday": "Koniec dzisiejszego dnia",
"beginningOflastWeek": "Początek zeszłego tygodnia",
"endOfLastWeek": "Koniec zeszłego tygodnia",
"beginningOfThisWeek": "Początek tego tygodnia",
"endOfThisWeek": "Koniec tego tygodnia",
"startOfNextWeek": "Początek następnego tygodnia",
"endOfNextWeek": "Koniec następnego tygodnia",
"in7Days": "Za 7 dni",
"beginningOfLastMonth": "Początek zeszłego miesiąca",
"endOfLastMonth": "Koniec zeszłego miesiąca",
"startOfThisMonth": "Początek tego miesiąca",
"endOfThisMonth": "Koniec tego miesiąca",
"startOfNextMonth": "Początek następnego miesiąca",
"endOfNextMonth": "Koniec następnego miesiąca",
"in30Days": "Za 30 dni",
"startOfThisYear": "Początek tego roku",
"endOfThisYear": "Koniec tego roku"
}
},
"datemathHelp": {
@ -783,7 +783,7 @@
"startDate": "Data rozpoczęcia",
"title": "Tytuł",
"updated": "Zaktualizowano",
"doneAt": "Done At"
"doneAt": "Wykonano"
},
"subscription": {
"subscribedTaskThroughParentProject": "Nie możesz zrezygnować z subskrypcji, ponieważ subskrybujesz to zadanie poprzez jego projekt.",
@ -987,8 +987,8 @@
"descriptionPlaceholder": "Opisz tutaj zespół, naciśnij '/' aby uzyskać więcej opcji…",
"admin": "Administrator",
"member": "Członek",
"isPublic": "Public Team",
"isPublicDescription": "Make the team publicly discoverable. When enabled, anyone can share projects with this team even when not being a direct member."
"isPublic": "Publiczny zespół",
"isPublicDescription": "Udostępnij zespół publicznie. Gdy ta opcja jest włączona, każdy może udostępniać projekty temu zespołowi, nawet nie będąc jego bezpośrednim członkiem."
}
},
"keyboardShortcuts": {
@ -1047,8 +1047,8 @@
"share": "Udostępnij",
"newProject": "Nowy projekt",
"createProject": "Utwórz projekt",
"cantArchiveIsDefault": "You cannot archive this because it is your default project.",
"cantDeleteIsDefault": "You cannot delete this because it is your default project."
"cantArchiveIsDefault": "Nie możesz tego zarchiwizować, ponieważ jest to twój domyślny projekt.",
"cantDeleteIsDefault": "Nie możesz tego usunąć, ponieważ jest to twój domyślny projekt."
},
"apiConfig": {
"url": "URL Vikunji",
@ -1096,10 +1096,10 @@
"altFormatShort": "j M Y"
},
"reaction": {
"reactedWith": "{user} reacted with {value}",
"reactedWithAnd": "{users} and {lastUser} reacted with {value}",
"reactedWithAndMany": "{users} and {num} more reacted reacted with {value}",
"add": "Add your reaction"
"reactedWith": "{user} zareagował z {value}",
"reactedWithAnd": "{users} i {lastUser} zareagowali z {value}",
"reactedWithAndMany": "{users} i {num} innych osób zareagowali z {value}",
"add": "Dodaj swoją reakcję"
},
"error": {
"error": "Błąd",
@ -1174,7 +1174,7 @@
},
"about": {
"title": "O aplikacji",
"version": "Version: {version}"
"version": "Wersja: {version}"
},
"time": {
"units": {

View File

@ -348,7 +348,6 @@ const router = createRouter({
name: 'project.index',
redirect(to) {
const viewId = getProjectViewId(Number(to.params.projectId as string))
console.log(viewId)
if (viewId) {
console.debug('Replaced list view with', viewId)

View File

@ -30,15 +30,6 @@ function getTaskIndicesById(buckets: IBucket[], taskId: ITask['id']) {
}
}
const addTaskToBucketAndSort = (buckets: IBucket[], task: ITask) => {
const bucketIndex = findIndexById(buckets, task.bucketId)
if (typeof buckets[bucketIndex] === 'undefined') {
return
}
buckets[bucketIndex].tasks.push(task)
buckets[bucketIndex].tasks.sort((a, b) => a.kanbanPosition > b.kanbanPosition ? 1 : -1)
}
/**
* This store is intended to hold the currently active kanban view.
* It should hold only the current buckets.
@ -131,11 +122,6 @@ export const useKanbanStore = defineStore('kanban', () => {
const bucket = buckets.value[b]
bucket.tasks[t] = task
if (bucket.id !== task.bucketId) {
bucket.tasks.splice(t, 1)
addTaskToBucketAndSort(buckets.value, task)
}
buckets.value[b] = bucket
found = true
@ -144,15 +130,6 @@ export const useKanbanStore = defineStore('kanban', () => {
}
}
for (const b in buckets.value) {
if (buckets.value[b].id === task.bucketId) {
findAndUpdate(b)
if (found) {
return
}
}
}
for (const b in buckets.value) {
findAndUpdate(b)
if (found) {
@ -198,7 +175,6 @@ export const useKanbanStore = defineStore('kanban', () => {
if (
bucketIndex === null ||
buckets.value[bucketIndex]?.id !== task.bucketId ||
taskIndex === null ||
(buckets.value[bucketIndex]?.tasks[taskIndex]?.id !== task.id)
) {

View File

@ -52,9 +52,6 @@ type Project struct {
ParentProjectID int64 `xorm:"bigint INDEX null" json:"parent_project_id"`
ParentProject *Project `xorm:"-" json:"-"`
// Deprecated: If tasks are moved to the done bucket, they are marked as done. If they are marked as done individually, they are moved into the done bucket.
DoneBucketID int64 `xorm:"bigint INDEX null" json:"done_bucket_id"`
// The user who created this project.
Owner *user.User `xorm:"-" json:"owner" valid:"-"`

View File

@ -114,7 +114,7 @@ type Task struct {
// The bucket id. Will only be populated when the task is accessed via a view with buckets.
// Can be used to move a task between buckets. In that case, the new bucket must be in the same view as the old one.
BucketID int64 `xorm:"<-" json:"bucket_id"`
BucketID int64 `xorm:"-" json:"bucket_id"`
// The position of the task - any task project can be sorted as usual by this parameter.
// When accessing tasks via views with buckets, this is primarily used to sort them based on a range.

View File

@ -8178,10 +8178,6 @@ const docTemplate = `{
"description": "The description of the project.",
"type": "string"
},
"done_bucket_id": {
"description": "Deprecated: If tasks are moved to the done bucket, they are marked as done. If they are marked as done individually, they are moved into the done bucket.",
"type": "integer"
},
"hex_color": {
"description": "The hex color of this project",
"type": "string",

View File

@ -8170,10 +8170,6 @@
"description": "The description of the project.",
"type": "string"
},
"done_bucket_id": {
"description": "Deprecated: If tasks are moved to the done bucket, they are marked as done. If they are marked as done individually, they are moved into the done bucket.",
"type": "integer"
},
"hex_color": {
"description": "The hex color of this project",
"type": "string",

View File

@ -431,11 +431,6 @@ definitions:
description:
description: The description of the project.
type: string
done_bucket_id:
description: 'Deprecated: If tasks are moved to the done bucket, they are
marked as done. If they are marked as done individually, they are moved
into the done bucket.'
type: integer
hex_color:
description: The hex color of this project
maxLength: 7