kaneo (minimalist kanban) fork to experiment adding a tangled integration github.com/usekaneo/kaneo
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: fix biome ci (formatting, dead code, ignore coverage)

Tin ea44aa5f 06aee41a

+4234 -4641
+2523 -2685
apps/api/drizzle/meta/0018_snapshot.json
··· 1 1 { 2 - "id": "27a7efa5-1352-41c4-b610-069bc3a5d999", 3 - "prevId": "8d81a01e-bf63-4463-8a66-4d4a2bbb36a0", 4 - "version": "7", 5 - "dialect": "postgresql", 6 - "tables": { 7 - "public.account": { 8 - "name": "account", 9 - "schema": "", 10 - "columns": { 11 - "id": { 12 - "name": "id", 13 - "type": "text", 14 - "primaryKey": true, 15 - "notNull": true 16 - }, 17 - "account_id": { 18 - "name": "account_id", 19 - "type": "text", 20 - "primaryKey": false, 21 - "notNull": true 22 - }, 23 - "provider_id": { 24 - "name": "provider_id", 25 - "type": "text", 26 - "primaryKey": false, 27 - "notNull": true 28 - }, 29 - "user_id": { 30 - "name": "user_id", 31 - "type": "text", 32 - "primaryKey": false, 33 - "notNull": true 34 - }, 35 - "access_token": { 36 - "name": "access_token", 37 - "type": "text", 38 - "primaryKey": false, 39 - "notNull": false 40 - }, 41 - "refresh_token": { 42 - "name": "refresh_token", 43 - "type": "text", 44 - "primaryKey": false, 45 - "notNull": false 46 - }, 47 - "id_token": { 48 - "name": "id_token", 49 - "type": "text", 50 - "primaryKey": false, 51 - "notNull": false 52 - }, 53 - "access_token_expires_at": { 54 - "name": "access_token_expires_at", 55 - "type": "timestamp", 56 - "primaryKey": false, 57 - "notNull": false 58 - }, 59 - "refresh_token_expires_at": { 60 - "name": "refresh_token_expires_at", 61 - "type": "timestamp", 62 - "primaryKey": false, 63 - "notNull": false 64 - }, 65 - "scope": { 66 - "name": "scope", 67 - "type": "text", 68 - "primaryKey": false, 69 - "notNull": false 70 - }, 71 - "password": { 72 - "name": "password", 73 - "type": "text", 74 - "primaryKey": false, 75 - "notNull": false 76 - }, 77 - "created_at": { 78 - "name": "created_at", 79 - "type": "timestamp", 80 - "primaryKey": false, 81 - "notNull": true, 82 - "default": "now()" 83 - }, 84 - "updated_at": { 85 - "name": "updated_at", 86 - "type": "timestamp", 87 - "primaryKey": false, 88 - "notNull": true 89 - } 90 - }, 91 - "indexes": { 92 - "account_userId_idx": { 93 - "name": "account_userId_idx", 94 - "columns": [ 95 - { 96 - "expression": "user_id", 97 - "isExpression": false, 98 - "asc": true, 99 - "nulls": "last" 100 - } 101 - ], 102 - "isUnique": false, 103 - "concurrently": false, 104 - "method": "btree", 105 - "with": {} 106 - } 107 - }, 108 - "foreignKeys": { 109 - "account_user_id_user_id_fk": { 110 - "name": "account_user_id_user_id_fk", 111 - "tableFrom": "account", 112 - "tableTo": "user", 113 - "columnsFrom": [ 114 - "user_id" 115 - ], 116 - "columnsTo": [ 117 - "id" 118 - ], 119 - "onDelete": "cascade", 120 - "onUpdate": "no action" 121 - } 122 - }, 123 - "compositePrimaryKeys": {}, 124 - "uniqueConstraints": {}, 125 - "policies": {}, 126 - "checkConstraints": {}, 127 - "isRLSEnabled": false 128 - }, 129 - "public.activity": { 130 - "name": "activity", 131 - "schema": "", 132 - "columns": { 133 - "id": { 134 - "name": "id", 135 - "type": "text", 136 - "primaryKey": true, 137 - "notNull": true 138 - }, 139 - "task_id": { 140 - "name": "task_id", 141 - "type": "text", 142 - "primaryKey": false, 143 - "notNull": true 144 - }, 145 - "type": { 146 - "name": "type", 147 - "type": "text", 148 - "primaryKey": false, 149 - "notNull": true 150 - }, 151 - "created_at": { 152 - "name": "created_at", 153 - "type": "timestamp", 154 - "primaryKey": false, 155 - "notNull": true, 156 - "default": "now()" 157 - }, 158 - "user_id": { 159 - "name": "user_id", 160 - "type": "text", 161 - "primaryKey": false, 162 - "notNull": false 163 - }, 164 - "content": { 165 - "name": "content", 166 - "type": "text", 167 - "primaryKey": false, 168 - "notNull": false 169 - }, 170 - "event_data": { 171 - "name": "event_data", 172 - "type": "jsonb", 173 - "primaryKey": false, 174 - "notNull": false 175 - }, 176 - "external_user_name": { 177 - "name": "external_user_name", 178 - "type": "text", 179 - "primaryKey": false, 180 - "notNull": false 181 - }, 182 - "external_user_avatar": { 183 - "name": "external_user_avatar", 184 - "type": "text", 185 - "primaryKey": false, 186 - "notNull": false 187 - }, 188 - "external_source": { 189 - "name": "external_source", 190 - "type": "text", 191 - "primaryKey": false, 192 - "notNull": false 193 - }, 194 - "external_url": { 195 - "name": "external_url", 196 - "type": "text", 197 - "primaryKey": false, 198 - "notNull": false 199 - } 200 - }, 201 - "indexes": {}, 202 - "foreignKeys": { 203 - "activity_task_id_task_id_fk": { 204 - "name": "activity_task_id_task_id_fk", 205 - "tableFrom": "activity", 206 - "tableTo": "task", 207 - "columnsFrom": [ 208 - "task_id" 209 - ], 210 - "columnsTo": [ 211 - "id" 212 - ], 213 - "onDelete": "cascade", 214 - "onUpdate": "cascade" 215 - }, 216 - "activity_user_id_user_id_fk": { 217 - "name": "activity_user_id_user_id_fk", 218 - "tableFrom": "activity", 219 - "tableTo": "user", 220 - "columnsFrom": [ 221 - "user_id" 222 - ], 223 - "columnsTo": [ 224 - "id" 225 - ], 226 - "onDelete": "cascade", 227 - "onUpdate": "cascade" 228 - } 229 - }, 230 - "compositePrimaryKeys": {}, 231 - "uniqueConstraints": {}, 232 - "policies": {}, 233 - "checkConstraints": {}, 234 - "isRLSEnabled": false 235 - }, 236 - "public.apikey": { 237 - "name": "apikey", 238 - "schema": "", 239 - "columns": { 240 - "id": { 241 - "name": "id", 242 - "type": "text", 243 - "primaryKey": true, 244 - "notNull": true 245 - }, 246 - "config_id": { 247 - "name": "config_id", 248 - "type": "text", 249 - "primaryKey": false, 250 - "notNull": true, 251 - "default": "'default'" 252 - }, 253 - "name": { 254 - "name": "name", 255 - "type": "text", 256 - "primaryKey": false, 257 - "notNull": false 258 - }, 259 - "start": { 260 - "name": "start", 261 - "type": "text", 262 - "primaryKey": false, 263 - "notNull": false 264 - }, 265 - "reference_id": { 266 - "name": "reference_id", 267 - "type": "text", 268 - "primaryKey": false, 269 - "notNull": true 270 - }, 271 - "prefix": { 272 - "name": "prefix", 273 - "type": "text", 274 - "primaryKey": false, 275 - "notNull": false 276 - }, 277 - "key": { 278 - "name": "key", 279 - "type": "text", 280 - "primaryKey": false, 281 - "notNull": true 282 - }, 283 - "user_id": { 284 - "name": "user_id", 285 - "type": "text", 286 - "primaryKey": false, 287 - "notNull": false 288 - }, 289 - "refill_interval": { 290 - "name": "refill_interval", 291 - "type": "integer", 292 - "primaryKey": false, 293 - "notNull": false 294 - }, 295 - "refill_amount": { 296 - "name": "refill_amount", 297 - "type": "integer", 298 - "primaryKey": false, 299 - "notNull": false 300 - }, 301 - "last_refill_at": { 302 - "name": "last_refill_at", 303 - "type": "timestamp", 304 - "primaryKey": false, 305 - "notNull": false 306 - }, 307 - "enabled": { 308 - "name": "enabled", 309 - "type": "boolean", 310 - "primaryKey": false, 311 - "notNull": false, 312 - "default": true 313 - }, 314 - "rate_limit_enabled": { 315 - "name": "rate_limit_enabled", 316 - "type": "boolean", 317 - "primaryKey": false, 318 - "notNull": false, 319 - "default": true 320 - }, 321 - "rate_limit_time_window": { 322 - "name": "rate_limit_time_window", 323 - "type": "integer", 324 - "primaryKey": false, 325 - "notNull": false, 326 - "default": 86400000 327 - }, 328 - "rate_limit_max": { 329 - "name": "rate_limit_max", 330 - "type": "integer", 331 - "primaryKey": false, 332 - "notNull": false, 333 - "default": 10 334 - }, 335 - "request_count": { 336 - "name": "request_count", 337 - "type": "integer", 338 - "primaryKey": false, 339 - "notNull": false, 340 - "default": 0 341 - }, 342 - "remaining": { 343 - "name": "remaining", 344 - "type": "integer", 345 - "primaryKey": false, 346 - "notNull": false 347 - }, 348 - "last_request": { 349 - "name": "last_request", 350 - "type": "timestamp", 351 - "primaryKey": false, 352 - "notNull": false 353 - }, 354 - "expires_at": { 355 - "name": "expires_at", 356 - "type": "timestamp", 357 - "primaryKey": false, 358 - "notNull": false 359 - }, 360 - "created_at": { 361 - "name": "created_at", 362 - "type": "timestamp", 363 - "primaryKey": false, 364 - "notNull": true 365 - }, 366 - "updated_at": { 367 - "name": "updated_at", 368 - "type": "timestamp", 369 - "primaryKey": false, 370 - "notNull": true 371 - }, 372 - "permissions": { 373 - "name": "permissions", 374 - "type": "text", 375 - "primaryKey": false, 376 - "notNull": false 377 - }, 378 - "metadata": { 379 - "name": "metadata", 380 - "type": "text", 381 - "primaryKey": false, 382 - "notNull": false 383 - } 384 - }, 385 - "indexes": { 386 - "apikey_configId_idx": { 387 - "name": "apikey_configId_idx", 388 - "columns": [ 389 - { 390 - "expression": "config_id", 391 - "isExpression": false, 392 - "asc": true, 393 - "nulls": "last" 394 - } 395 - ], 396 - "isUnique": false, 397 - "concurrently": false, 398 - "method": "btree", 399 - "with": {} 400 - }, 401 - "apikey_key_idx": { 402 - "name": "apikey_key_idx", 403 - "columns": [ 404 - { 405 - "expression": "key", 406 - "isExpression": false, 407 - "asc": true, 408 - "nulls": "last" 409 - } 410 - ], 411 - "isUnique": false, 412 - "concurrently": false, 413 - "method": "btree", 414 - "with": {} 415 - }, 416 - "apikey_referenceId_idx": { 417 - "name": "apikey_referenceId_idx", 418 - "columns": [ 419 - { 420 - "expression": "reference_id", 421 - "isExpression": false, 422 - "asc": true, 423 - "nulls": "last" 424 - } 425 - ], 426 - "isUnique": false, 427 - "concurrently": false, 428 - "method": "btree", 429 - "with": {} 430 - }, 431 - "apikey_userId_idx": { 432 - "name": "apikey_userId_idx", 433 - "columns": [ 434 - { 435 - "expression": "user_id", 436 - "isExpression": false, 437 - "asc": true, 438 - "nulls": "last" 439 - } 440 - ], 441 - "isUnique": false, 442 - "concurrently": false, 443 - "method": "btree", 444 - "with": {} 445 - } 446 - }, 447 - "foreignKeys": { 448 - "apikey_reference_id_user_id_fk": { 449 - "name": "apikey_reference_id_user_id_fk", 450 - "tableFrom": "apikey", 451 - "tableTo": "user", 452 - "columnsFrom": [ 453 - "reference_id" 454 - ], 455 - "columnsTo": [ 456 - "id" 457 - ], 458 - "onDelete": "cascade", 459 - "onUpdate": "no action" 460 - }, 461 - "apikey_user_id_user_id_fk": { 462 - "name": "apikey_user_id_user_id_fk", 463 - "tableFrom": "apikey", 464 - "tableTo": "user", 465 - "columnsFrom": [ 466 - "user_id" 467 - ], 468 - "columnsTo": [ 469 - "id" 470 - ], 471 - "onDelete": "cascade", 472 - "onUpdate": "no action" 473 - } 474 - }, 475 - "compositePrimaryKeys": {}, 476 - "uniqueConstraints": {}, 477 - "policies": {}, 478 - "checkConstraints": {}, 479 - "isRLSEnabled": false 480 - }, 481 - "public.asset": { 482 - "name": "asset", 483 - "schema": "", 484 - "columns": { 485 - "id": { 486 - "name": "id", 487 - "type": "text", 488 - "primaryKey": true, 489 - "notNull": true 490 - }, 491 - "workspace_id": { 492 - "name": "workspace_id", 493 - "type": "text", 494 - "primaryKey": false, 495 - "notNull": true 496 - }, 497 - "project_id": { 498 - "name": "project_id", 499 - "type": "text", 500 - "primaryKey": false, 501 - "notNull": true 502 - }, 503 - "task_id": { 504 - "name": "task_id", 505 - "type": "text", 506 - "primaryKey": false, 507 - "notNull": false 508 - }, 509 - "activity_id": { 510 - "name": "activity_id", 511 - "type": "text", 512 - "primaryKey": false, 513 - "notNull": false 514 - }, 515 - "object_key": { 516 - "name": "object_key", 517 - "type": "text", 518 - "primaryKey": false, 519 - "notNull": true 520 - }, 521 - "filename": { 522 - "name": "filename", 523 - "type": "text", 524 - "primaryKey": false, 525 - "notNull": true 526 - }, 527 - "mime_type": { 528 - "name": "mime_type", 529 - "type": "text", 530 - "primaryKey": false, 531 - "notNull": true 532 - }, 533 - "size": { 534 - "name": "size", 535 - "type": "integer", 536 - "primaryKey": false, 537 - "notNull": true 538 - }, 539 - "kind": { 540 - "name": "kind", 541 - "type": "text", 542 - "primaryKey": false, 543 - "notNull": true, 544 - "default": "'image'" 545 - }, 546 - "surface": { 547 - "name": "surface", 548 - "type": "text", 549 - "primaryKey": false, 550 - "notNull": true, 551 - "default": "'description'" 552 - }, 553 - "created_by": { 554 - "name": "created_by", 555 - "type": "text", 556 - "primaryKey": false, 557 - "notNull": false 558 - }, 559 - "created_at": { 560 - "name": "created_at", 561 - "type": "timestamp", 562 - "primaryKey": false, 563 - "notNull": true, 564 - "default": "now()" 565 - } 566 - }, 567 - "indexes": { 568 - "asset_workspaceId_idx": { 569 - "name": "asset_workspaceId_idx", 570 - "columns": [ 571 - { 572 - "expression": "workspace_id", 573 - "isExpression": false, 574 - "asc": true, 575 - "nulls": "last" 576 - } 577 - ], 578 - "isUnique": false, 579 - "concurrently": false, 580 - "method": "btree", 581 - "with": {} 582 - }, 583 - "asset_projectId_idx": { 584 - "name": "asset_projectId_idx", 585 - "columns": [ 586 - { 587 - "expression": "project_id", 588 - "isExpression": false, 589 - "asc": true, 590 - "nulls": "last" 591 - } 592 - ], 593 - "isUnique": false, 594 - "concurrently": false, 595 - "method": "btree", 596 - "with": {} 597 - }, 598 - "asset_taskId_idx": { 599 - "name": "asset_taskId_idx", 600 - "columns": [ 601 - { 602 - "expression": "task_id", 603 - "isExpression": false, 604 - "asc": true, 605 - "nulls": "last" 606 - } 607 - ], 608 - "isUnique": false, 609 - "concurrently": false, 610 - "method": "btree", 611 - "with": {} 612 - }, 613 - "asset_activityId_idx": { 614 - "name": "asset_activityId_idx", 615 - "columns": [ 616 - { 617 - "expression": "activity_id", 618 - "isExpression": false, 619 - "asc": true, 620 - "nulls": "last" 621 - } 622 - ], 623 - "isUnique": false, 624 - "concurrently": false, 625 - "method": "btree", 626 - "with": {} 627 - } 628 - }, 629 - "foreignKeys": { 630 - "asset_workspace_id_workspace_id_fk": { 631 - "name": "asset_workspace_id_workspace_id_fk", 632 - "tableFrom": "asset", 633 - "tableTo": "workspace", 634 - "columnsFrom": [ 635 - "workspace_id" 636 - ], 637 - "columnsTo": [ 638 - "id" 639 - ], 640 - "onDelete": "cascade", 641 - "onUpdate": "cascade" 642 - }, 643 - "asset_project_id_project_id_fk": { 644 - "name": "asset_project_id_project_id_fk", 645 - "tableFrom": "asset", 646 - "tableTo": "project", 647 - "columnsFrom": [ 648 - "project_id" 649 - ], 650 - "columnsTo": [ 651 - "id" 652 - ], 653 - "onDelete": "cascade", 654 - "onUpdate": "cascade" 655 - }, 656 - "asset_task_id_task_id_fk": { 657 - "name": "asset_task_id_task_id_fk", 658 - "tableFrom": "asset", 659 - "tableTo": "task", 660 - "columnsFrom": [ 661 - "task_id" 662 - ], 663 - "columnsTo": [ 664 - "id" 665 - ], 666 - "onDelete": "cascade", 667 - "onUpdate": "cascade" 668 - }, 669 - "asset_activity_id_activity_id_fk": { 670 - "name": "asset_activity_id_activity_id_fk", 671 - "tableFrom": "asset", 672 - "tableTo": "activity", 673 - "columnsFrom": [ 674 - "activity_id" 675 - ], 676 - "columnsTo": [ 677 - "id" 678 - ], 679 - "onDelete": "cascade", 680 - "onUpdate": "cascade" 681 - }, 682 - "asset_created_by_user_id_fk": { 683 - "name": "asset_created_by_user_id_fk", 684 - "tableFrom": "asset", 685 - "tableTo": "user", 686 - "columnsFrom": [ 687 - "created_by" 688 - ], 689 - "columnsTo": [ 690 - "id" 691 - ], 692 - "onDelete": "set null", 693 - "onUpdate": "cascade" 694 - } 695 - }, 696 - "compositePrimaryKeys": {}, 697 - "uniqueConstraints": { 698 - "asset_object_key_unique": { 699 - "name": "asset_object_key_unique", 700 - "nullsNotDistinct": false, 701 - "columns": [ 702 - "object_key" 703 - ] 704 - } 705 - }, 706 - "policies": {}, 707 - "checkConstraints": {}, 708 - "isRLSEnabled": false 709 - }, 710 - "public.column": { 711 - "name": "column", 712 - "schema": "", 713 - "columns": { 714 - "id": { 715 - "name": "id", 716 - "type": "text", 717 - "primaryKey": true, 718 - "notNull": true 719 - }, 720 - "project_id": { 721 - "name": "project_id", 722 - "type": "text", 723 - "primaryKey": false, 724 - "notNull": true 725 - }, 726 - "name": { 727 - "name": "name", 728 - "type": "text", 729 - "primaryKey": false, 730 - "notNull": true 731 - }, 732 - "slug": { 733 - "name": "slug", 734 - "type": "text", 735 - "primaryKey": false, 736 - "notNull": true 737 - }, 738 - "position": { 739 - "name": "position", 740 - "type": "integer", 741 - "primaryKey": false, 742 - "notNull": true, 743 - "default": 0 744 - }, 745 - "icon": { 746 - "name": "icon", 747 - "type": "text", 748 - "primaryKey": false, 749 - "notNull": false 750 - }, 751 - "color": { 752 - "name": "color", 753 - "type": "text", 754 - "primaryKey": false, 755 - "notNull": false 756 - }, 757 - "is_final": { 758 - "name": "is_final", 759 - "type": "boolean", 760 - "primaryKey": false, 761 - "notNull": true, 762 - "default": false 763 - }, 764 - "created_at": { 765 - "name": "created_at", 766 - "type": "timestamp", 767 - "primaryKey": false, 768 - "notNull": true, 769 - "default": "now()" 770 - }, 771 - "updated_at": { 772 - "name": "updated_at", 773 - "type": "timestamp", 774 - "primaryKey": false, 775 - "notNull": true, 776 - "default": "now()" 777 - } 778 - }, 779 - "indexes": { 780 - "column_projectId_idx": { 781 - "name": "column_projectId_idx", 782 - "columns": [ 783 - { 784 - "expression": "project_id", 785 - "isExpression": false, 786 - "asc": true, 787 - "nulls": "last" 788 - } 789 - ], 790 - "isUnique": false, 791 - "concurrently": false, 792 - "method": "btree", 793 - "with": {} 794 - } 795 - }, 796 - "foreignKeys": { 797 - "column_project_id_project_id_fk": { 798 - "name": "column_project_id_project_id_fk", 799 - "tableFrom": "column", 800 - "tableTo": "project", 801 - "columnsFrom": [ 802 - "project_id" 803 - ], 804 - "columnsTo": [ 805 - "id" 806 - ], 807 - "onDelete": "cascade", 808 - "onUpdate": "cascade" 809 - } 810 - }, 811 - "compositePrimaryKeys": {}, 812 - "uniqueConstraints": {}, 813 - "policies": {}, 814 - "checkConstraints": {}, 815 - "isRLSEnabled": false 816 - }, 817 - "public.comment": { 818 - "name": "comment", 819 - "schema": "", 820 - "columns": { 821 - "id": { 822 - "name": "id", 823 - "type": "text", 824 - "primaryKey": true, 825 - "notNull": true 826 - }, 827 - "task_id": { 828 - "name": "task_id", 829 - "type": "text", 830 - "primaryKey": false, 831 - "notNull": true 832 - }, 833 - "user_id": { 834 - "name": "user_id", 835 - "type": "text", 836 - "primaryKey": false, 837 - "notNull": true 838 - }, 839 - "content": { 840 - "name": "content", 841 - "type": "text", 842 - "primaryKey": false, 843 - "notNull": true 844 - }, 845 - "created_at": { 846 - "name": "created_at", 847 - "type": "timestamp", 848 - "primaryKey": false, 849 - "notNull": true, 850 - "default": "now()" 851 - }, 852 - "updated_at": { 853 - "name": "updated_at", 854 - "type": "timestamp", 855 - "primaryKey": false, 856 - "notNull": true, 857 - "default": "now()" 858 - } 859 - }, 860 - "indexes": { 861 - "comment_task_idx": { 862 - "name": "comment_task_idx", 863 - "columns": [ 864 - { 865 - "expression": "task_id", 866 - "isExpression": false, 867 - "asc": true, 868 - "nulls": "last" 869 - } 870 - ], 871 - "isUnique": false, 872 - "concurrently": false, 873 - "method": "btree", 874 - "with": {} 875 - }, 876 - "comment_user_idx": { 877 - "name": "comment_user_idx", 878 - "columns": [ 879 - { 880 - "expression": "user_id", 881 - "isExpression": false, 882 - "asc": true, 883 - "nulls": "last" 884 - } 885 - ], 886 - "isUnique": false, 887 - "concurrently": false, 888 - "method": "btree", 889 - "with": {} 890 - } 891 - }, 892 - "foreignKeys": { 893 - "comment_task_id_task_id_fk": { 894 - "name": "comment_task_id_task_id_fk", 895 - "tableFrom": "comment", 896 - "tableTo": "task", 897 - "columnsFrom": [ 898 - "task_id" 899 - ], 900 - "columnsTo": [ 901 - "id" 902 - ], 903 - "onDelete": "cascade", 904 - "onUpdate": "cascade" 905 - }, 906 - "comment_user_id_user_id_fk": { 907 - "name": "comment_user_id_user_id_fk", 908 - "tableFrom": "comment", 909 - "tableTo": "user", 910 - "columnsFrom": [ 911 - "user_id" 912 - ], 913 - "columnsTo": [ 914 - "id" 915 - ], 916 - "onDelete": "cascade", 917 - "onUpdate": "cascade" 918 - } 919 - }, 920 - "compositePrimaryKeys": {}, 921 - "uniqueConstraints": {}, 922 - "policies": {}, 923 - "checkConstraints": {}, 924 - "isRLSEnabled": false 925 - }, 926 - "public.external_link": { 927 - "name": "external_link", 928 - "schema": "", 929 - "columns": { 930 - "id": { 931 - "name": "id", 932 - "type": "text", 933 - "primaryKey": true, 934 - "notNull": true 935 - }, 936 - "task_id": { 937 - "name": "task_id", 938 - "type": "text", 939 - "primaryKey": false, 940 - "notNull": true 941 - }, 942 - "integration_id": { 943 - "name": "integration_id", 944 - "type": "text", 945 - "primaryKey": false, 946 - "notNull": true 947 - }, 948 - "resource_type": { 949 - "name": "resource_type", 950 - "type": "text", 951 - "primaryKey": false, 952 - "notNull": true 953 - }, 954 - "external_id": { 955 - "name": "external_id", 956 - "type": "text", 957 - "primaryKey": false, 958 - "notNull": true 959 - }, 960 - "url": { 961 - "name": "url", 962 - "type": "text", 963 - "primaryKey": false, 964 - "notNull": true 965 - }, 966 - "title": { 967 - "name": "title", 968 - "type": "text", 969 - "primaryKey": false, 970 - "notNull": false 971 - }, 972 - "metadata": { 973 - "name": "metadata", 974 - "type": "text", 975 - "primaryKey": false, 976 - "notNull": false 977 - }, 978 - "created_at": { 979 - "name": "created_at", 980 - "type": "timestamp", 981 - "primaryKey": false, 982 - "notNull": true, 983 - "default": "now()" 984 - }, 985 - "updated_at": { 986 - "name": "updated_at", 987 - "type": "timestamp", 988 - "primaryKey": false, 989 - "notNull": true, 990 - "default": "now()" 991 - } 992 - }, 993 - "indexes": { 994 - "external_link_taskId_idx": { 995 - "name": "external_link_taskId_idx", 996 - "columns": [ 997 - { 998 - "expression": "task_id", 999 - "isExpression": false, 1000 - "asc": true, 1001 - "nulls": "last" 1002 - } 1003 - ], 1004 - "isUnique": false, 1005 - "concurrently": false, 1006 - "method": "btree", 1007 - "with": {} 1008 - }, 1009 - "external_link_integrationId_idx": { 1010 - "name": "external_link_integrationId_idx", 1011 - "columns": [ 1012 - { 1013 - "expression": "integration_id", 1014 - "isExpression": false, 1015 - "asc": true, 1016 - "nulls": "last" 1017 - } 1018 - ], 1019 - "isUnique": false, 1020 - "concurrently": false, 1021 - "method": "btree", 1022 - "with": {} 1023 - }, 1024 - "external_link_externalId_idx": { 1025 - "name": "external_link_externalId_idx", 1026 - "columns": [ 1027 - { 1028 - "expression": "external_id", 1029 - "isExpression": false, 1030 - "asc": true, 1031 - "nulls": "last" 1032 - } 1033 - ], 1034 - "isUnique": false, 1035 - "concurrently": false, 1036 - "method": "btree", 1037 - "with": {} 1038 - }, 1039 - "external_link_resourceType_idx": { 1040 - "name": "external_link_resourceType_idx", 1041 - "columns": [ 1042 - { 1043 - "expression": "resource_type", 1044 - "isExpression": false, 1045 - "asc": true, 1046 - "nulls": "last" 1047 - } 1048 - ], 1049 - "isUnique": false, 1050 - "concurrently": false, 1051 - "method": "btree", 1052 - "with": {} 1053 - } 1054 - }, 1055 - "foreignKeys": { 1056 - "external_link_task_id_task_id_fk": { 1057 - "name": "external_link_task_id_task_id_fk", 1058 - "tableFrom": "external_link", 1059 - "tableTo": "task", 1060 - "columnsFrom": [ 1061 - "task_id" 1062 - ], 1063 - "columnsTo": [ 1064 - "id" 1065 - ], 1066 - "onDelete": "cascade", 1067 - "onUpdate": "cascade" 1068 - }, 1069 - "external_link_integration_id_integration_id_fk": { 1070 - "name": "external_link_integration_id_integration_id_fk", 1071 - "tableFrom": "external_link", 1072 - "tableTo": "integration", 1073 - "columnsFrom": [ 1074 - "integration_id" 1075 - ], 1076 - "columnsTo": [ 1077 - "id" 1078 - ], 1079 - "onDelete": "cascade", 1080 - "onUpdate": "cascade" 1081 - } 1082 - }, 1083 - "compositePrimaryKeys": {}, 1084 - "uniqueConstraints": {}, 1085 - "policies": {}, 1086 - "checkConstraints": {}, 1087 - "isRLSEnabled": false 1088 - }, 1089 - "public.github_integration": { 1090 - "name": "github_integration", 1091 - "schema": "", 1092 - "columns": { 1093 - "id": { 1094 - "name": "id", 1095 - "type": "text", 1096 - "primaryKey": true, 1097 - "notNull": true 1098 - }, 1099 - "project_id": { 1100 - "name": "project_id", 1101 - "type": "text", 1102 - "primaryKey": false, 1103 - "notNull": true 1104 - }, 1105 - "repository_owner": { 1106 - "name": "repository_owner", 1107 - "type": "text", 1108 - "primaryKey": false, 1109 - "notNull": true 1110 - }, 1111 - "repository_name": { 1112 - "name": "repository_name", 1113 - "type": "text", 1114 - "primaryKey": false, 1115 - "notNull": true 1116 - }, 1117 - "installation_id": { 1118 - "name": "installation_id", 1119 - "type": "integer", 1120 - "primaryKey": false, 1121 - "notNull": false 1122 - }, 1123 - "is_active": { 1124 - "name": "is_active", 1125 - "type": "boolean", 1126 - "primaryKey": false, 1127 - "notNull": false, 1128 - "default": true 1129 - }, 1130 - "created_at": { 1131 - "name": "created_at", 1132 - "type": "timestamp", 1133 - "primaryKey": false, 1134 - "notNull": true, 1135 - "default": "now()" 1136 - }, 1137 - "updated_at": { 1138 - "name": "updated_at", 1139 - "type": "timestamp", 1140 - "primaryKey": false, 1141 - "notNull": true, 1142 - "default": "now()" 1143 - } 1144 - }, 1145 - "indexes": {}, 1146 - "foreignKeys": { 1147 - "github_integration_project_id_project_id_fk": { 1148 - "name": "github_integration_project_id_project_id_fk", 1149 - "tableFrom": "github_integration", 1150 - "tableTo": "project", 1151 - "columnsFrom": [ 1152 - "project_id" 1153 - ], 1154 - "columnsTo": [ 1155 - "id" 1156 - ], 1157 - "onDelete": "cascade", 1158 - "onUpdate": "cascade" 1159 - } 1160 - }, 1161 - "compositePrimaryKeys": {}, 1162 - "uniqueConstraints": { 1163 - "github_integration_project_id_unique": { 1164 - "name": "github_integration_project_id_unique", 1165 - "nullsNotDistinct": false, 1166 - "columns": [ 1167 - "project_id" 1168 - ] 1169 - } 1170 - }, 1171 - "policies": {}, 1172 - "checkConstraints": {}, 1173 - "isRLSEnabled": false 1174 - }, 1175 - "public.integration": { 1176 - "name": "integration", 1177 - "schema": "", 1178 - "columns": { 1179 - "id": { 1180 - "name": "id", 1181 - "type": "text", 1182 - "primaryKey": true, 1183 - "notNull": true 1184 - }, 1185 - "project_id": { 1186 - "name": "project_id", 1187 - "type": "text", 1188 - "primaryKey": false, 1189 - "notNull": true 1190 - }, 1191 - "type": { 1192 - "name": "type", 1193 - "type": "text", 1194 - "primaryKey": false, 1195 - "notNull": true 1196 - }, 1197 - "config": { 1198 - "name": "config", 1199 - "type": "text", 1200 - "primaryKey": false, 1201 - "notNull": true 1202 - }, 1203 - "is_active": { 1204 - "name": "is_active", 1205 - "type": "boolean", 1206 - "primaryKey": false, 1207 - "notNull": false, 1208 - "default": true 1209 - }, 1210 - "created_at": { 1211 - "name": "created_at", 1212 - "type": "timestamp", 1213 - "primaryKey": false, 1214 - "notNull": true, 1215 - "default": "now()" 1216 - }, 1217 - "updated_at": { 1218 - "name": "updated_at", 1219 - "type": "timestamp", 1220 - "primaryKey": false, 1221 - "notNull": true, 1222 - "default": "now()" 1223 - } 1224 - }, 1225 - "indexes": { 1226 - "integration_projectId_idx": { 1227 - "name": "integration_projectId_idx", 1228 - "columns": [ 1229 - { 1230 - "expression": "project_id", 1231 - "isExpression": false, 1232 - "asc": true, 1233 - "nulls": "last" 1234 - } 1235 - ], 1236 - "isUnique": false, 1237 - "concurrently": false, 1238 - "method": "btree", 1239 - "with": {} 1240 - }, 1241 - "integration_type_idx": { 1242 - "name": "integration_type_idx", 1243 - "columns": [ 1244 - { 1245 - "expression": "type", 1246 - "isExpression": false, 1247 - "asc": true, 1248 - "nulls": "last" 1249 - } 1250 - ], 1251 - "isUnique": false, 1252 - "concurrently": false, 1253 - "method": "btree", 1254 - "with": {} 1255 - } 1256 - }, 1257 - "foreignKeys": { 1258 - "integration_project_id_project_id_fk": { 1259 - "name": "integration_project_id_project_id_fk", 1260 - "tableFrom": "integration", 1261 - "tableTo": "project", 1262 - "columnsFrom": [ 1263 - "project_id" 1264 - ], 1265 - "columnsTo": [ 1266 - "id" 1267 - ], 1268 - "onDelete": "cascade", 1269 - "onUpdate": "cascade" 1270 - } 1271 - }, 1272 - "compositePrimaryKeys": {}, 1273 - "uniqueConstraints": {}, 1274 - "policies": {}, 1275 - "checkConstraints": {}, 1276 - "isRLSEnabled": false 1277 - }, 1278 - "public.invitation": { 1279 - "name": "invitation", 1280 - "schema": "", 1281 - "columns": { 1282 - "id": { 1283 - "name": "id", 1284 - "type": "text", 1285 - "primaryKey": true, 1286 - "notNull": true 1287 - }, 1288 - "workspace_id": { 1289 - "name": "workspace_id", 1290 - "type": "text", 1291 - "primaryKey": false, 1292 - "notNull": true 1293 - }, 1294 - "email": { 1295 - "name": "email", 1296 - "type": "text", 1297 - "primaryKey": false, 1298 - "notNull": true 1299 - }, 1300 - "role": { 1301 - "name": "role", 1302 - "type": "text", 1303 - "primaryKey": false, 1304 - "notNull": false 1305 - }, 1306 - "team_id": { 1307 - "name": "team_id", 1308 - "type": "text", 1309 - "primaryKey": false, 1310 - "notNull": false 1311 - }, 1312 - "status": { 1313 - "name": "status", 1314 - "type": "text", 1315 - "primaryKey": false, 1316 - "notNull": true, 1317 - "default": "'pending'" 1318 - }, 1319 - "expires_at": { 1320 - "name": "expires_at", 1321 - "type": "timestamp", 1322 - "primaryKey": false, 1323 - "notNull": true 1324 - }, 1325 - "created_at": { 1326 - "name": "created_at", 1327 - "type": "timestamp", 1328 - "primaryKey": false, 1329 - "notNull": true, 1330 - "default": "now()" 1331 - }, 1332 - "inviter_id": { 1333 - "name": "inviter_id", 1334 - "type": "text", 1335 - "primaryKey": false, 1336 - "notNull": true 1337 - } 1338 - }, 1339 - "indexes": { 1340 - "invitation_workspaceId_idx": { 1341 - "name": "invitation_workspaceId_idx", 1342 - "columns": [ 1343 - { 1344 - "expression": "workspace_id", 1345 - "isExpression": false, 1346 - "asc": true, 1347 - "nulls": "last" 1348 - } 1349 - ], 1350 - "isUnique": false, 1351 - "concurrently": false, 1352 - "method": "btree", 1353 - "with": {} 1354 - }, 1355 - "invitation_email_idx": { 1356 - "name": "invitation_email_idx", 1357 - "columns": [ 1358 - { 1359 - "expression": "email", 1360 - "isExpression": false, 1361 - "asc": true, 1362 - "nulls": "last" 1363 - } 1364 - ], 1365 - "isUnique": false, 1366 - "concurrently": false, 1367 - "method": "btree", 1368 - "with": {} 1369 - } 1370 - }, 1371 - "foreignKeys": { 1372 - "invitation_workspace_id_workspace_id_fk": { 1373 - "name": "invitation_workspace_id_workspace_id_fk", 1374 - "tableFrom": "invitation", 1375 - "tableTo": "workspace", 1376 - "columnsFrom": [ 1377 - "workspace_id" 1378 - ], 1379 - "columnsTo": [ 1380 - "id" 1381 - ], 1382 - "onDelete": "cascade", 1383 - "onUpdate": "no action" 1384 - }, 1385 - "invitation_inviter_id_user_id_fk": { 1386 - "name": "invitation_inviter_id_user_id_fk", 1387 - "tableFrom": "invitation", 1388 - "tableTo": "user", 1389 - "columnsFrom": [ 1390 - "inviter_id" 1391 - ], 1392 - "columnsTo": [ 1393 - "id" 1394 - ], 1395 - "onDelete": "cascade", 1396 - "onUpdate": "no action" 1397 - } 1398 - }, 1399 - "compositePrimaryKeys": {}, 1400 - "uniqueConstraints": {}, 1401 - "policies": {}, 1402 - "checkConstraints": {}, 1403 - "isRLSEnabled": false 1404 - }, 1405 - "public.label": { 1406 - "name": "label", 1407 - "schema": "", 1408 - "columns": { 1409 - "id": { 1410 - "name": "id", 1411 - "type": "text", 1412 - "primaryKey": true, 1413 - "notNull": true 1414 - }, 1415 - "name": { 1416 - "name": "name", 1417 - "type": "text", 1418 - "primaryKey": false, 1419 - "notNull": true 1420 - }, 1421 - "color": { 1422 - "name": "color", 1423 - "type": "text", 1424 - "primaryKey": false, 1425 - "notNull": true 1426 - }, 1427 - "created_at": { 1428 - "name": "created_at", 1429 - "type": "timestamp", 1430 - "primaryKey": false, 1431 - "notNull": true, 1432 - "default": "now()" 1433 - }, 1434 - "task_id": { 1435 - "name": "task_id", 1436 - "type": "text", 1437 - "primaryKey": false, 1438 - "notNull": false 1439 - }, 1440 - "workspace_id": { 1441 - "name": "workspace_id", 1442 - "type": "text", 1443 - "primaryKey": false, 1444 - "notNull": false 1445 - } 1446 - }, 1447 - "indexes": {}, 1448 - "foreignKeys": { 1449 - "label_task_id_task_id_fk": { 1450 - "name": "label_task_id_task_id_fk", 1451 - "tableFrom": "label", 1452 - "tableTo": "task", 1453 - "columnsFrom": [ 1454 - "task_id" 1455 - ], 1456 - "columnsTo": [ 1457 - "id" 1458 - ], 1459 - "onDelete": "cascade", 1460 - "onUpdate": "cascade" 1461 - }, 1462 - "label_workspace_id_workspace_id_fk": { 1463 - "name": "label_workspace_id_workspace_id_fk", 1464 - "tableFrom": "label", 1465 - "tableTo": "workspace", 1466 - "columnsFrom": [ 1467 - "workspace_id" 1468 - ], 1469 - "columnsTo": [ 1470 - "id" 1471 - ], 1472 - "onDelete": "cascade", 1473 - "onUpdate": "cascade" 1474 - } 1475 - }, 1476 - "compositePrimaryKeys": {}, 1477 - "uniqueConstraints": {}, 1478 - "policies": {}, 1479 - "checkConstraints": {}, 1480 - "isRLSEnabled": false 1481 - }, 1482 - "public.notification": { 1483 - "name": "notification", 1484 - "schema": "", 1485 - "columns": { 1486 - "id": { 1487 - "name": "id", 1488 - "type": "text", 1489 - "primaryKey": true, 1490 - "notNull": true 1491 - }, 1492 - "user_id": { 1493 - "name": "user_id", 1494 - "type": "text", 1495 - "primaryKey": false, 1496 - "notNull": true 1497 - }, 1498 - "title": { 1499 - "name": "title", 1500 - "type": "text", 1501 - "primaryKey": false, 1502 - "notNull": false 1503 - }, 1504 - "content": { 1505 - "name": "content", 1506 - "type": "text", 1507 - "primaryKey": false, 1508 - "notNull": false 1509 - }, 1510 - "type": { 1511 - "name": "type", 1512 - "type": "text", 1513 - "primaryKey": false, 1514 - "notNull": true, 1515 - "default": "'info'" 1516 - }, 1517 - "event_data": { 1518 - "name": "event_data", 1519 - "type": "jsonb", 1520 - "primaryKey": false, 1521 - "notNull": false 1522 - }, 1523 - "is_read": { 1524 - "name": "is_read", 1525 - "type": "boolean", 1526 - "primaryKey": false, 1527 - "notNull": false, 1528 - "default": false 1529 - }, 1530 - "resource_id": { 1531 - "name": "resource_id", 1532 - "type": "text", 1533 - "primaryKey": false, 1534 - "notNull": false 1535 - }, 1536 - "resource_type": { 1537 - "name": "resource_type", 1538 - "type": "text", 1539 - "primaryKey": false, 1540 - "notNull": false 1541 - }, 1542 - "created_at": { 1543 - "name": "created_at", 1544 - "type": "timestamp with time zone", 1545 - "primaryKey": false, 1546 - "notNull": true, 1547 - "default": "now()" 1548 - } 1549 - }, 1550 - "indexes": {}, 1551 - "foreignKeys": { 1552 - "notification_user_id_user_id_fk": { 1553 - "name": "notification_user_id_user_id_fk", 1554 - "tableFrom": "notification", 1555 - "tableTo": "user", 1556 - "columnsFrom": [ 1557 - "user_id" 1558 - ], 1559 - "columnsTo": [ 1560 - "id" 1561 - ], 1562 - "onDelete": "cascade", 1563 - "onUpdate": "cascade" 1564 - } 1565 - }, 1566 - "compositePrimaryKeys": {}, 1567 - "uniqueConstraints": {}, 1568 - "policies": {}, 1569 - "checkConstraints": {}, 1570 - "isRLSEnabled": false 1571 - }, 1572 - "public.project": { 1573 - "name": "project", 1574 - "schema": "", 1575 - "columns": { 1576 - "id": { 1577 - "name": "id", 1578 - "type": "text", 1579 - "primaryKey": true, 1580 - "notNull": true 1581 - }, 1582 - "workspace_id": { 1583 - "name": "workspace_id", 1584 - "type": "text", 1585 - "primaryKey": false, 1586 - "notNull": true 1587 - }, 1588 - "slug": { 1589 - "name": "slug", 1590 - "type": "text", 1591 - "primaryKey": false, 1592 - "notNull": true 1593 - }, 1594 - "icon": { 1595 - "name": "icon", 1596 - "type": "text", 1597 - "primaryKey": false, 1598 - "notNull": false, 1599 - "default": "'Layout'" 1600 - }, 1601 - "name": { 1602 - "name": "name", 1603 - "type": "text", 1604 - "primaryKey": false, 1605 - "notNull": true 1606 - }, 1607 - "description": { 1608 - "name": "description", 1609 - "type": "text", 1610 - "primaryKey": false, 1611 - "notNull": false 1612 - }, 1613 - "created_at": { 1614 - "name": "created_at", 1615 - "type": "timestamp", 1616 - "primaryKey": false, 1617 - "notNull": true, 1618 - "default": "now()" 1619 - }, 1620 - "is_public": { 1621 - "name": "is_public", 1622 - "type": "boolean", 1623 - "primaryKey": false, 1624 - "notNull": false, 1625 - "default": false 1626 - }, 1627 - "archived_at": { 1628 - "name": "archived_at", 1629 - "type": "timestamp", 1630 - "primaryKey": false, 1631 - "notNull": false 1632 - } 1633 - }, 1634 - "indexes": {}, 1635 - "foreignKeys": { 1636 - "project_workspace_id_workspace_id_fk": { 1637 - "name": "project_workspace_id_workspace_id_fk", 1638 - "tableFrom": "project", 1639 - "tableTo": "workspace", 1640 - "columnsFrom": [ 1641 - "workspace_id" 1642 - ], 1643 - "columnsTo": [ 1644 - "id" 1645 - ], 1646 - "onDelete": "cascade", 1647 - "onUpdate": "cascade" 1648 - } 1649 - }, 1650 - "compositePrimaryKeys": {}, 1651 - "uniqueConstraints": {}, 1652 - "policies": {}, 1653 - "checkConstraints": {}, 1654 - "isRLSEnabled": false 1655 - }, 1656 - "public.session": { 1657 - "name": "session", 1658 - "schema": "", 1659 - "columns": { 1660 - "id": { 1661 - "name": "id", 1662 - "type": "text", 1663 - "primaryKey": true, 1664 - "notNull": true 1665 - }, 1666 - "expires_at": { 1667 - "name": "expires_at", 1668 - "type": "timestamp", 1669 - "primaryKey": false, 1670 - "notNull": true 1671 - }, 1672 - "token": { 1673 - "name": "token", 1674 - "type": "text", 1675 - "primaryKey": false, 1676 - "notNull": true 1677 - }, 1678 - "created_at": { 1679 - "name": "created_at", 1680 - "type": "timestamp", 1681 - "primaryKey": false, 1682 - "notNull": true, 1683 - "default": "now()" 1684 - }, 1685 - "updated_at": { 1686 - "name": "updated_at", 1687 - "type": "timestamp", 1688 - "primaryKey": false, 1689 - "notNull": true 1690 - }, 1691 - "ip_address": { 1692 - "name": "ip_address", 1693 - "type": "text", 1694 - "primaryKey": false, 1695 - "notNull": false 1696 - }, 1697 - "user_agent": { 1698 - "name": "user_agent", 1699 - "type": "text", 1700 - "primaryKey": false, 1701 - "notNull": false 1702 - }, 1703 - "user_id": { 1704 - "name": "user_id", 1705 - "type": "text", 1706 - "primaryKey": false, 1707 - "notNull": true 1708 - }, 1709 - "active_organization_id": { 1710 - "name": "active_organization_id", 1711 - "type": "text", 1712 - "primaryKey": false, 1713 - "notNull": false 1714 - }, 1715 - "active_team_id": { 1716 - "name": "active_team_id", 1717 - "type": "text", 1718 - "primaryKey": false, 1719 - "notNull": false 1720 - } 1721 - }, 1722 - "indexes": { 1723 - "session_userId_idx": { 1724 - "name": "session_userId_idx", 1725 - "columns": [ 1726 - { 1727 - "expression": "user_id", 1728 - "isExpression": false, 1729 - "asc": true, 1730 - "nulls": "last" 1731 - } 1732 - ], 1733 - "isUnique": false, 1734 - "concurrently": false, 1735 - "method": "btree", 1736 - "with": {} 1737 - } 1738 - }, 1739 - "foreignKeys": { 1740 - "session_user_id_user_id_fk": { 1741 - "name": "session_user_id_user_id_fk", 1742 - "tableFrom": "session", 1743 - "tableTo": "user", 1744 - "columnsFrom": [ 1745 - "user_id" 1746 - ], 1747 - "columnsTo": [ 1748 - "id" 1749 - ], 1750 - "onDelete": "cascade", 1751 - "onUpdate": "no action" 1752 - } 1753 - }, 1754 - "compositePrimaryKeys": {}, 1755 - "uniqueConstraints": { 1756 - "session_token_unique": { 1757 - "name": "session_token_unique", 1758 - "nullsNotDistinct": false, 1759 - "columns": [ 1760 - "token" 1761 - ] 1762 - } 1763 - }, 1764 - "policies": {}, 1765 - "checkConstraints": {}, 1766 - "isRLSEnabled": false 1767 - }, 1768 - "public.task_relation": { 1769 - "name": "task_relation", 1770 - "schema": "", 1771 - "columns": { 1772 - "id": { 1773 - "name": "id", 1774 - "type": "text", 1775 - "primaryKey": true, 1776 - "notNull": true 1777 - }, 1778 - "source_task_id": { 1779 - "name": "source_task_id", 1780 - "type": "text", 1781 - "primaryKey": false, 1782 - "notNull": true 1783 - }, 1784 - "target_task_id": { 1785 - "name": "target_task_id", 1786 - "type": "text", 1787 - "primaryKey": false, 1788 - "notNull": true 1789 - }, 1790 - "relation_type": { 1791 - "name": "relation_type", 1792 - "type": "text", 1793 - "primaryKey": false, 1794 - "notNull": true 1795 - }, 1796 - "created_at": { 1797 - "name": "created_at", 1798 - "type": "timestamp", 1799 - "primaryKey": false, 1800 - "notNull": true, 1801 - "default": "now()" 1802 - } 1803 - }, 1804 - "indexes": { 1805 - "task_relation_source_idx": { 1806 - "name": "task_relation_source_idx", 1807 - "columns": [ 1808 - { 1809 - "expression": "source_task_id", 1810 - "isExpression": false, 1811 - "asc": true, 1812 - "nulls": "last" 1813 - } 1814 - ], 1815 - "isUnique": false, 1816 - "concurrently": false, 1817 - "method": "btree", 1818 - "with": {} 1819 - }, 1820 - "task_relation_target_idx": { 1821 - "name": "task_relation_target_idx", 1822 - "columns": [ 1823 - { 1824 - "expression": "target_task_id", 1825 - "isExpression": false, 1826 - "asc": true, 1827 - "nulls": "last" 1828 - } 1829 - ], 1830 - "isUnique": false, 1831 - "concurrently": false, 1832 - "method": "btree", 1833 - "with": {} 1834 - } 1835 - }, 1836 - "foreignKeys": { 1837 - "task_relation_source_task_id_task_id_fk": { 1838 - "name": "task_relation_source_task_id_task_id_fk", 1839 - "tableFrom": "task_relation", 1840 - "tableTo": "task", 1841 - "columnsFrom": [ 1842 - "source_task_id" 1843 - ], 1844 - "columnsTo": [ 1845 - "id" 1846 - ], 1847 - "onDelete": "cascade", 1848 - "onUpdate": "cascade" 1849 - }, 1850 - "task_relation_target_task_id_task_id_fk": { 1851 - "name": "task_relation_target_task_id_task_id_fk", 1852 - "tableFrom": "task_relation", 1853 - "tableTo": "task", 1854 - "columnsFrom": [ 1855 - "target_task_id" 1856 - ], 1857 - "columnsTo": [ 1858 - "id" 1859 - ], 1860 - "onDelete": "cascade", 1861 - "onUpdate": "cascade" 1862 - } 1863 - }, 1864 - "compositePrimaryKeys": {}, 1865 - "uniqueConstraints": {}, 1866 - "policies": {}, 1867 - "checkConstraints": {}, 1868 - "isRLSEnabled": false 1869 - }, 1870 - "public.task": { 1871 - "name": "task", 1872 - "schema": "", 1873 - "columns": { 1874 - "id": { 1875 - "name": "id", 1876 - "type": "text", 1877 - "primaryKey": true, 1878 - "notNull": true 1879 - }, 1880 - "project_id": { 1881 - "name": "project_id", 1882 - "type": "text", 1883 - "primaryKey": false, 1884 - "notNull": true 1885 - }, 1886 - "position": { 1887 - "name": "position", 1888 - "type": "integer", 1889 - "primaryKey": false, 1890 - "notNull": false, 1891 - "default": 0 1892 - }, 1893 - "number": { 1894 - "name": "number", 1895 - "type": "integer", 1896 - "primaryKey": false, 1897 - "notNull": false, 1898 - "default": 1 1899 - }, 1900 - "assignee_id": { 1901 - "name": "assignee_id", 1902 - "type": "text", 1903 - "primaryKey": false, 1904 - "notNull": false 1905 - }, 1906 - "title": { 1907 - "name": "title", 1908 - "type": "text", 1909 - "primaryKey": false, 1910 - "notNull": true 1911 - }, 1912 - "description": { 1913 - "name": "description", 1914 - "type": "text", 1915 - "primaryKey": false, 1916 - "notNull": false 1917 - }, 1918 - "status": { 1919 - "name": "status", 1920 - "type": "text", 1921 - "primaryKey": false, 1922 - "notNull": true, 1923 - "default": "'to-do'" 1924 - }, 1925 - "column_id": { 1926 - "name": "column_id", 1927 - "type": "text", 1928 - "primaryKey": false, 1929 - "notNull": false 1930 - }, 1931 - "priority": { 1932 - "name": "priority", 1933 - "type": "text", 1934 - "primaryKey": false, 1935 - "notNull": false, 1936 - "default": "'low'" 1937 - }, 1938 - "start_date": { 1939 - "name": "start_date", 1940 - "type": "timestamp", 1941 - "primaryKey": false, 1942 - "notNull": false 1943 - }, 1944 - "due_date": { 1945 - "name": "due_date", 1946 - "type": "timestamp", 1947 - "primaryKey": false, 1948 - "notNull": false 1949 - }, 1950 - "created_at": { 1951 - "name": "created_at", 1952 - "type": "timestamp", 1953 - "primaryKey": false, 1954 - "notNull": true, 1955 - "default": "now()" 1956 - } 1957 - }, 1958 - "indexes": {}, 1959 - "foreignKeys": { 1960 - "task_project_id_project_id_fk": { 1961 - "name": "task_project_id_project_id_fk", 1962 - "tableFrom": "task", 1963 - "tableTo": "project", 1964 - "columnsFrom": [ 1965 - "project_id" 1966 - ], 1967 - "columnsTo": [ 1968 - "id" 1969 - ], 1970 - "onDelete": "cascade", 1971 - "onUpdate": "cascade" 1972 - }, 1973 - "task_assignee_id_user_id_fk": { 1974 - "name": "task_assignee_id_user_id_fk", 1975 - "tableFrom": "task", 1976 - "tableTo": "user", 1977 - "columnsFrom": [ 1978 - "assignee_id" 1979 - ], 1980 - "columnsTo": [ 1981 - "id" 1982 - ], 1983 - "onDelete": "cascade", 1984 - "onUpdate": "cascade" 1985 - }, 1986 - "task_column_id_column_id_fk": { 1987 - "name": "task_column_id_column_id_fk", 1988 - "tableFrom": "task", 1989 - "tableTo": "column", 1990 - "columnsFrom": [ 1991 - "column_id" 1992 - ], 1993 - "columnsTo": [ 1994 - "id" 1995 - ], 1996 - "onDelete": "set null", 1997 - "onUpdate": "cascade" 1998 - } 1999 - }, 2000 - "compositePrimaryKeys": {}, 2001 - "uniqueConstraints": {}, 2002 - "policies": {}, 2003 - "checkConstraints": {}, 2004 - "isRLSEnabled": false 2005 - }, 2006 - "public.team": { 2007 - "name": "team", 2008 - "schema": "", 2009 - "columns": { 2010 - "id": { 2011 - "name": "id", 2012 - "type": "text", 2013 - "primaryKey": true, 2014 - "notNull": true 2015 - }, 2016 - "name": { 2017 - "name": "name", 2018 - "type": "text", 2019 - "primaryKey": false, 2020 - "notNull": true 2021 - }, 2022 - "workspace_id": { 2023 - "name": "workspace_id", 2024 - "type": "text", 2025 - "primaryKey": false, 2026 - "notNull": true 2027 - }, 2028 - "created_at": { 2029 - "name": "created_at", 2030 - "type": "timestamp", 2031 - "primaryKey": false, 2032 - "notNull": true 2033 - }, 2034 - "updated_at": { 2035 - "name": "updated_at", 2036 - "type": "timestamp", 2037 - "primaryKey": false, 2038 - "notNull": false 2039 - } 2040 - }, 2041 - "indexes": { 2042 - "team_workspaceId_idx": { 2043 - "name": "team_workspaceId_idx", 2044 - "columns": [ 2045 - { 2046 - "expression": "workspace_id", 2047 - "isExpression": false, 2048 - "asc": true, 2049 - "nulls": "last" 2050 - } 2051 - ], 2052 - "isUnique": false, 2053 - "concurrently": false, 2054 - "method": "btree", 2055 - "with": {} 2056 - } 2057 - }, 2058 - "foreignKeys": { 2059 - "team_workspace_id_workspace_id_fk": { 2060 - "name": "team_workspace_id_workspace_id_fk", 2061 - "tableFrom": "team", 2062 - "tableTo": "workspace", 2063 - "columnsFrom": [ 2064 - "workspace_id" 2065 - ], 2066 - "columnsTo": [ 2067 - "id" 2068 - ], 2069 - "onDelete": "cascade", 2070 - "onUpdate": "no action" 2071 - } 2072 - }, 2073 - "compositePrimaryKeys": {}, 2074 - "uniqueConstraints": {}, 2075 - "policies": {}, 2076 - "checkConstraints": {}, 2077 - "isRLSEnabled": false 2078 - }, 2079 - "public.team_member": { 2080 - "name": "team_member", 2081 - "schema": "", 2082 - "columns": { 2083 - "id": { 2084 - "name": "id", 2085 - "type": "text", 2086 - "primaryKey": true, 2087 - "notNull": true 2088 - }, 2089 - "team_id": { 2090 - "name": "team_id", 2091 - "type": "text", 2092 - "primaryKey": false, 2093 - "notNull": true 2094 - }, 2095 - "user_id": { 2096 - "name": "user_id", 2097 - "type": "text", 2098 - "primaryKey": false, 2099 - "notNull": true 2100 - }, 2101 - "created_at": { 2102 - "name": "created_at", 2103 - "type": "timestamp", 2104 - "primaryKey": false, 2105 - "notNull": false 2106 - } 2107 - }, 2108 - "indexes": { 2109 - "teamMember_teamId_idx": { 2110 - "name": "teamMember_teamId_idx", 2111 - "columns": [ 2112 - { 2113 - "expression": "team_id", 2114 - "isExpression": false, 2115 - "asc": true, 2116 - "nulls": "last" 2117 - } 2118 - ], 2119 - "isUnique": false, 2120 - "concurrently": false, 2121 - "method": "btree", 2122 - "with": {} 2123 - }, 2124 - "teamMember_userId_idx": { 2125 - "name": "teamMember_userId_idx", 2126 - "columns": [ 2127 - { 2128 - "expression": "user_id", 2129 - "isExpression": false, 2130 - "asc": true, 2131 - "nulls": "last" 2132 - } 2133 - ], 2134 - "isUnique": false, 2135 - "concurrently": false, 2136 - "method": "btree", 2137 - "with": {} 2138 - } 2139 - }, 2140 - "foreignKeys": { 2141 - "team_member_team_id_team_id_fk": { 2142 - "name": "team_member_team_id_team_id_fk", 2143 - "tableFrom": "team_member", 2144 - "tableTo": "team", 2145 - "columnsFrom": [ 2146 - "team_id" 2147 - ], 2148 - "columnsTo": [ 2149 - "id" 2150 - ], 2151 - "onDelete": "cascade", 2152 - "onUpdate": "no action" 2153 - }, 2154 - "team_member_user_id_user_id_fk": { 2155 - "name": "team_member_user_id_user_id_fk", 2156 - "tableFrom": "team_member", 2157 - "tableTo": "user", 2158 - "columnsFrom": [ 2159 - "user_id" 2160 - ], 2161 - "columnsTo": [ 2162 - "id" 2163 - ], 2164 - "onDelete": "cascade", 2165 - "onUpdate": "no action" 2166 - } 2167 - }, 2168 - "compositePrimaryKeys": {}, 2169 - "uniqueConstraints": {}, 2170 - "policies": {}, 2171 - "checkConstraints": {}, 2172 - "isRLSEnabled": false 2173 - }, 2174 - "public.time_entry": { 2175 - "name": "time_entry", 2176 - "schema": "", 2177 - "columns": { 2178 - "id": { 2179 - "name": "id", 2180 - "type": "text", 2181 - "primaryKey": true, 2182 - "notNull": true 2183 - }, 2184 - "task_id": { 2185 - "name": "task_id", 2186 - "type": "text", 2187 - "primaryKey": false, 2188 - "notNull": true 2189 - }, 2190 - "user_id": { 2191 - "name": "user_id", 2192 - "type": "text", 2193 - "primaryKey": false, 2194 - "notNull": false 2195 - }, 2196 - "description": { 2197 - "name": "description", 2198 - "type": "text", 2199 - "primaryKey": false, 2200 - "notNull": false 2201 - }, 2202 - "start_time": { 2203 - "name": "start_time", 2204 - "type": "timestamp", 2205 - "primaryKey": false, 2206 - "notNull": true 2207 - }, 2208 - "end_time": { 2209 - "name": "end_time", 2210 - "type": "timestamp", 2211 - "primaryKey": false, 2212 - "notNull": false 2213 - }, 2214 - "duration": { 2215 - "name": "duration", 2216 - "type": "integer", 2217 - "primaryKey": false, 2218 - "notNull": false, 2219 - "default": 0 2220 - }, 2221 - "created_at": { 2222 - "name": "created_at", 2223 - "type": "timestamp", 2224 - "primaryKey": false, 2225 - "notNull": true, 2226 - "default": "now()" 2227 - } 2228 - }, 2229 - "indexes": {}, 2230 - "foreignKeys": { 2231 - "time_entry_task_id_task_id_fk": { 2232 - "name": "time_entry_task_id_task_id_fk", 2233 - "tableFrom": "time_entry", 2234 - "tableTo": "task", 2235 - "columnsFrom": [ 2236 - "task_id" 2237 - ], 2238 - "columnsTo": [ 2239 - "id" 2240 - ], 2241 - "onDelete": "cascade", 2242 - "onUpdate": "cascade" 2243 - }, 2244 - "time_entry_user_id_user_id_fk": { 2245 - "name": "time_entry_user_id_user_id_fk", 2246 - "tableFrom": "time_entry", 2247 - "tableTo": "user", 2248 - "columnsFrom": [ 2249 - "user_id" 2250 - ], 2251 - "columnsTo": [ 2252 - "id" 2253 - ], 2254 - "onDelete": "cascade", 2255 - "onUpdate": "cascade" 2256 - } 2257 - }, 2258 - "compositePrimaryKeys": {}, 2259 - "uniqueConstraints": {}, 2260 - "policies": {}, 2261 - "checkConstraints": {}, 2262 - "isRLSEnabled": false 2263 - }, 2264 - "public.user": { 2265 - "name": "user", 2266 - "schema": "", 2267 - "columns": { 2268 - "id": { 2269 - "name": "id", 2270 - "type": "text", 2271 - "primaryKey": true, 2272 - "notNull": true 2273 - }, 2274 - "name": { 2275 - "name": "name", 2276 - "type": "text", 2277 - "primaryKey": false, 2278 - "notNull": true 2279 - }, 2280 - "email": { 2281 - "name": "email", 2282 - "type": "text", 2283 - "primaryKey": false, 2284 - "notNull": true 2285 - }, 2286 - "email_verified": { 2287 - "name": "email_verified", 2288 - "type": "boolean", 2289 - "primaryKey": false, 2290 - "notNull": true 2291 - }, 2292 - "image": { 2293 - "name": "image", 2294 - "type": "text", 2295 - "primaryKey": false, 2296 - "notNull": false 2297 - }, 2298 - "locale": { 2299 - "name": "locale", 2300 - "type": "text", 2301 - "primaryKey": false, 2302 - "notNull": false 2303 - }, 2304 - "created_at": { 2305 - "name": "created_at", 2306 - "type": "timestamp", 2307 - "primaryKey": false, 2308 - "notNull": true, 2309 - "default": "now()" 2310 - }, 2311 - "updated_at": { 2312 - "name": "updated_at", 2313 - "type": "timestamp", 2314 - "primaryKey": false, 2315 - "notNull": true, 2316 - "default": "now()" 2317 - }, 2318 - "is_anonymous": { 2319 - "name": "is_anonymous", 2320 - "type": "boolean", 2321 - "primaryKey": false, 2322 - "notNull": false, 2323 - "default": false 2324 - } 2325 - }, 2326 - "indexes": {}, 2327 - "foreignKeys": {}, 2328 - "compositePrimaryKeys": {}, 2329 - "uniqueConstraints": { 2330 - "user_email_unique": { 2331 - "name": "user_email_unique", 2332 - "nullsNotDistinct": false, 2333 - "columns": [ 2334 - "email" 2335 - ] 2336 - } 2337 - }, 2338 - "policies": {}, 2339 - "checkConstraints": {}, 2340 - "isRLSEnabled": false 2341 - }, 2342 - "public.verification": { 2343 - "name": "verification", 2344 - "schema": "", 2345 - "columns": { 2346 - "id": { 2347 - "name": "id", 2348 - "type": "text", 2349 - "primaryKey": true, 2350 - "notNull": true 2351 - }, 2352 - "identifier": { 2353 - "name": "identifier", 2354 - "type": "text", 2355 - "primaryKey": false, 2356 - "notNull": true 2357 - }, 2358 - "value": { 2359 - "name": "value", 2360 - "type": "text", 2361 - "primaryKey": false, 2362 - "notNull": true 2363 - }, 2364 - "expires_at": { 2365 - "name": "expires_at", 2366 - "type": "timestamp", 2367 - "primaryKey": false, 2368 - "notNull": true 2369 - }, 2370 - "created_at": { 2371 - "name": "created_at", 2372 - "type": "timestamp", 2373 - "primaryKey": false, 2374 - "notNull": true, 2375 - "default": "now()" 2376 - }, 2377 - "updated_at": { 2378 - "name": "updated_at", 2379 - "type": "timestamp", 2380 - "primaryKey": false, 2381 - "notNull": true, 2382 - "default": "now()" 2383 - } 2384 - }, 2385 - "indexes": { 2386 - "verification_identifier_idx": { 2387 - "name": "verification_identifier_idx", 2388 - "columns": [ 2389 - { 2390 - "expression": "identifier", 2391 - "isExpression": false, 2392 - "asc": true, 2393 - "nulls": "last" 2394 - } 2395 - ], 2396 - "isUnique": false, 2397 - "concurrently": false, 2398 - "method": "btree", 2399 - "with": {} 2400 - } 2401 - }, 2402 - "foreignKeys": {}, 2403 - "compositePrimaryKeys": {}, 2404 - "uniqueConstraints": {}, 2405 - "policies": {}, 2406 - "checkConstraints": {}, 2407 - "isRLSEnabled": false 2408 - }, 2409 - "public.workflow_rule": { 2410 - "name": "workflow_rule", 2411 - "schema": "", 2412 - "columns": { 2413 - "id": { 2414 - "name": "id", 2415 - "type": "text", 2416 - "primaryKey": true, 2417 - "notNull": true 2418 - }, 2419 - "project_id": { 2420 - "name": "project_id", 2421 - "type": "text", 2422 - "primaryKey": false, 2423 - "notNull": true 2424 - }, 2425 - "integration_type": { 2426 - "name": "integration_type", 2427 - "type": "text", 2428 - "primaryKey": false, 2429 - "notNull": true 2430 - }, 2431 - "event_type": { 2432 - "name": "event_type", 2433 - "type": "text", 2434 - "primaryKey": false, 2435 - "notNull": true 2436 - }, 2437 - "column_id": { 2438 - "name": "column_id", 2439 - "type": "text", 2440 - "primaryKey": false, 2441 - "notNull": true 2442 - }, 2443 - "created_at": { 2444 - "name": "created_at", 2445 - "type": "timestamp", 2446 - "primaryKey": false, 2447 - "notNull": true, 2448 - "default": "now()" 2449 - }, 2450 - "updated_at": { 2451 - "name": "updated_at", 2452 - "type": "timestamp", 2453 - "primaryKey": false, 2454 - "notNull": true, 2455 - "default": "now()" 2456 - } 2457 - }, 2458 - "indexes": { 2459 - "workflow_rule_projectId_idx": { 2460 - "name": "workflow_rule_projectId_idx", 2461 - "columns": [ 2462 - { 2463 - "expression": "project_id", 2464 - "isExpression": false, 2465 - "asc": true, 2466 - "nulls": "last" 2467 - } 2468 - ], 2469 - "isUnique": false, 2470 - "concurrently": false, 2471 - "method": "btree", 2472 - "with": {} 2473 - } 2474 - }, 2475 - "foreignKeys": { 2476 - "workflow_rule_project_id_project_id_fk": { 2477 - "name": "workflow_rule_project_id_project_id_fk", 2478 - "tableFrom": "workflow_rule", 2479 - "tableTo": "project", 2480 - "columnsFrom": [ 2481 - "project_id" 2482 - ], 2483 - "columnsTo": [ 2484 - "id" 2485 - ], 2486 - "onDelete": "cascade", 2487 - "onUpdate": "cascade" 2488 - }, 2489 - "workflow_rule_column_id_column_id_fk": { 2490 - "name": "workflow_rule_column_id_column_id_fk", 2491 - "tableFrom": "workflow_rule", 2492 - "tableTo": "column", 2493 - "columnsFrom": [ 2494 - "column_id" 2495 - ], 2496 - "columnsTo": [ 2497 - "id" 2498 - ], 2499 - "onDelete": "cascade", 2500 - "onUpdate": "cascade" 2501 - } 2502 - }, 2503 - "compositePrimaryKeys": {}, 2504 - "uniqueConstraints": {}, 2505 - "policies": {}, 2506 - "checkConstraints": {}, 2507 - "isRLSEnabled": false 2508 - }, 2509 - "public.workspace": { 2510 - "name": "workspace", 2511 - "schema": "", 2512 - "columns": { 2513 - "id": { 2514 - "name": "id", 2515 - "type": "text", 2516 - "primaryKey": true, 2517 - "notNull": true 2518 - }, 2519 - "name": { 2520 - "name": "name", 2521 - "type": "text", 2522 - "primaryKey": false, 2523 - "notNull": true 2524 - }, 2525 - "slug": { 2526 - "name": "slug", 2527 - "type": "text", 2528 - "primaryKey": false, 2529 - "notNull": true 2530 - }, 2531 - "logo": { 2532 - "name": "logo", 2533 - "type": "text", 2534 - "primaryKey": false, 2535 - "notNull": false 2536 - }, 2537 - "metadata": { 2538 - "name": "metadata", 2539 - "type": "text", 2540 - "primaryKey": false, 2541 - "notNull": false 2542 - }, 2543 - "description": { 2544 - "name": "description", 2545 - "type": "text", 2546 - "primaryKey": false, 2547 - "notNull": false 2548 - }, 2549 - "created_at": { 2550 - "name": "created_at", 2551 - "type": "timestamp", 2552 - "primaryKey": false, 2553 - "notNull": true 2554 - } 2555 - }, 2556 - "indexes": {}, 2557 - "foreignKeys": {}, 2558 - "compositePrimaryKeys": {}, 2559 - "uniqueConstraints": { 2560 - "workspace_slug_unique": { 2561 - "name": "workspace_slug_unique", 2562 - "nullsNotDistinct": false, 2563 - "columns": [ 2564 - "slug" 2565 - ] 2566 - } 2567 - }, 2568 - "policies": {}, 2569 - "checkConstraints": {}, 2570 - "isRLSEnabled": false 2571 - }, 2572 - "public.workspace_member": { 2573 - "name": "workspace_member", 2574 - "schema": "", 2575 - "columns": { 2576 - "id": { 2577 - "name": "id", 2578 - "type": "text", 2579 - "primaryKey": true, 2580 - "notNull": true 2581 - }, 2582 - "workspace_id": { 2583 - "name": "workspace_id", 2584 - "type": "text", 2585 - "primaryKey": false, 2586 - "notNull": true 2587 - }, 2588 - "user_id": { 2589 - "name": "user_id", 2590 - "type": "text", 2591 - "primaryKey": false, 2592 - "notNull": true 2593 - }, 2594 - "role": { 2595 - "name": "role", 2596 - "type": "text", 2597 - "primaryKey": false, 2598 - "notNull": true, 2599 - "default": "'member'" 2600 - }, 2601 - "joined_at": { 2602 - "name": "joined_at", 2603 - "type": "timestamp", 2604 - "primaryKey": false, 2605 - "notNull": true 2606 - } 2607 - }, 2608 - "indexes": { 2609 - "workspace_member_workspaceId_idx": { 2610 - "name": "workspace_member_workspaceId_idx", 2611 - "columns": [ 2612 - { 2613 - "expression": "workspace_id", 2614 - "isExpression": false, 2615 - "asc": true, 2616 - "nulls": "last" 2617 - } 2618 - ], 2619 - "isUnique": false, 2620 - "concurrently": false, 2621 - "method": "btree", 2622 - "with": {} 2623 - }, 2624 - "workspace_member_userId_idx": { 2625 - "name": "workspace_member_userId_idx", 2626 - "columns": [ 2627 - { 2628 - "expression": "user_id", 2629 - "isExpression": false, 2630 - "asc": true, 2631 - "nulls": "last" 2632 - } 2633 - ], 2634 - "isUnique": false, 2635 - "concurrently": false, 2636 - "method": "btree", 2637 - "with": {} 2638 - } 2639 - }, 2640 - "foreignKeys": { 2641 - "workspace_member_workspace_id_workspace_id_fk": { 2642 - "name": "workspace_member_workspace_id_workspace_id_fk", 2643 - "tableFrom": "workspace_member", 2644 - "tableTo": "workspace", 2645 - "columnsFrom": [ 2646 - "workspace_id" 2647 - ], 2648 - "columnsTo": [ 2649 - "id" 2650 - ], 2651 - "onDelete": "cascade", 2652 - "onUpdate": "no action" 2653 - }, 2654 - "workspace_member_user_id_user_id_fk": { 2655 - "name": "workspace_member_user_id_user_id_fk", 2656 - "tableFrom": "workspace_member", 2657 - "tableTo": "user", 2658 - "columnsFrom": [ 2659 - "user_id" 2660 - ], 2661 - "columnsTo": [ 2662 - "id" 2663 - ], 2664 - "onDelete": "cascade", 2665 - "onUpdate": "no action" 2666 - } 2667 - }, 2668 - "compositePrimaryKeys": {}, 2669 - "uniqueConstraints": {}, 2670 - "policies": {}, 2671 - "checkConstraints": {}, 2672 - "isRLSEnabled": false 2673 - } 2674 - }, 2675 - "enums": {}, 2676 - "schemas": {}, 2677 - "sequences": {}, 2678 - "roles": {}, 2679 - "policies": {}, 2680 - "views": {}, 2681 - "_meta": { 2682 - "columns": {}, 2683 - "schemas": {}, 2684 - "tables": {} 2685 - } 2686 - } 2 + "id": "27a7efa5-1352-41c4-b610-069bc3a5d999", 3 + "prevId": "8d81a01e-bf63-4463-8a66-4d4a2bbb36a0", 4 + "version": "7", 5 + "dialect": "postgresql", 6 + "tables": { 7 + "public.account": { 8 + "name": "account", 9 + "schema": "", 10 + "columns": { 11 + "id": { 12 + "name": "id", 13 + "type": "text", 14 + "primaryKey": true, 15 + "notNull": true 16 + }, 17 + "account_id": { 18 + "name": "account_id", 19 + "type": "text", 20 + "primaryKey": false, 21 + "notNull": true 22 + }, 23 + "provider_id": { 24 + "name": "provider_id", 25 + "type": "text", 26 + "primaryKey": false, 27 + "notNull": true 28 + }, 29 + "user_id": { 30 + "name": "user_id", 31 + "type": "text", 32 + "primaryKey": false, 33 + "notNull": true 34 + }, 35 + "access_token": { 36 + "name": "access_token", 37 + "type": "text", 38 + "primaryKey": false, 39 + "notNull": false 40 + }, 41 + "refresh_token": { 42 + "name": "refresh_token", 43 + "type": "text", 44 + "primaryKey": false, 45 + "notNull": false 46 + }, 47 + "id_token": { 48 + "name": "id_token", 49 + "type": "text", 50 + "primaryKey": false, 51 + "notNull": false 52 + }, 53 + "access_token_expires_at": { 54 + "name": "access_token_expires_at", 55 + "type": "timestamp", 56 + "primaryKey": false, 57 + "notNull": false 58 + }, 59 + "refresh_token_expires_at": { 60 + "name": "refresh_token_expires_at", 61 + "type": "timestamp", 62 + "primaryKey": false, 63 + "notNull": false 64 + }, 65 + "scope": { 66 + "name": "scope", 67 + "type": "text", 68 + "primaryKey": false, 69 + "notNull": false 70 + }, 71 + "password": { 72 + "name": "password", 73 + "type": "text", 74 + "primaryKey": false, 75 + "notNull": false 76 + }, 77 + "created_at": { 78 + "name": "created_at", 79 + "type": "timestamp", 80 + "primaryKey": false, 81 + "notNull": true, 82 + "default": "now()" 83 + }, 84 + "updated_at": { 85 + "name": "updated_at", 86 + "type": "timestamp", 87 + "primaryKey": false, 88 + "notNull": true 89 + } 90 + }, 91 + "indexes": { 92 + "account_userId_idx": { 93 + "name": "account_userId_idx", 94 + "columns": [ 95 + { 96 + "expression": "user_id", 97 + "isExpression": false, 98 + "asc": true, 99 + "nulls": "last" 100 + } 101 + ], 102 + "isUnique": false, 103 + "concurrently": false, 104 + "method": "btree", 105 + "with": {} 106 + } 107 + }, 108 + "foreignKeys": { 109 + "account_user_id_user_id_fk": { 110 + "name": "account_user_id_user_id_fk", 111 + "tableFrom": "account", 112 + "tableTo": "user", 113 + "columnsFrom": ["user_id"], 114 + "columnsTo": ["id"], 115 + "onDelete": "cascade", 116 + "onUpdate": "no action" 117 + } 118 + }, 119 + "compositePrimaryKeys": {}, 120 + "uniqueConstraints": {}, 121 + "policies": {}, 122 + "checkConstraints": {}, 123 + "isRLSEnabled": false 124 + }, 125 + "public.activity": { 126 + "name": "activity", 127 + "schema": "", 128 + "columns": { 129 + "id": { 130 + "name": "id", 131 + "type": "text", 132 + "primaryKey": true, 133 + "notNull": true 134 + }, 135 + "task_id": { 136 + "name": "task_id", 137 + "type": "text", 138 + "primaryKey": false, 139 + "notNull": true 140 + }, 141 + "type": { 142 + "name": "type", 143 + "type": "text", 144 + "primaryKey": false, 145 + "notNull": true 146 + }, 147 + "created_at": { 148 + "name": "created_at", 149 + "type": "timestamp", 150 + "primaryKey": false, 151 + "notNull": true, 152 + "default": "now()" 153 + }, 154 + "user_id": { 155 + "name": "user_id", 156 + "type": "text", 157 + "primaryKey": false, 158 + "notNull": false 159 + }, 160 + "content": { 161 + "name": "content", 162 + "type": "text", 163 + "primaryKey": false, 164 + "notNull": false 165 + }, 166 + "event_data": { 167 + "name": "event_data", 168 + "type": "jsonb", 169 + "primaryKey": false, 170 + "notNull": false 171 + }, 172 + "external_user_name": { 173 + "name": "external_user_name", 174 + "type": "text", 175 + "primaryKey": false, 176 + "notNull": false 177 + }, 178 + "external_user_avatar": { 179 + "name": "external_user_avatar", 180 + "type": "text", 181 + "primaryKey": false, 182 + "notNull": false 183 + }, 184 + "external_source": { 185 + "name": "external_source", 186 + "type": "text", 187 + "primaryKey": false, 188 + "notNull": false 189 + }, 190 + "external_url": { 191 + "name": "external_url", 192 + "type": "text", 193 + "primaryKey": false, 194 + "notNull": false 195 + } 196 + }, 197 + "indexes": {}, 198 + "foreignKeys": { 199 + "activity_task_id_task_id_fk": { 200 + "name": "activity_task_id_task_id_fk", 201 + "tableFrom": "activity", 202 + "tableTo": "task", 203 + "columnsFrom": ["task_id"], 204 + "columnsTo": ["id"], 205 + "onDelete": "cascade", 206 + "onUpdate": "cascade" 207 + }, 208 + "activity_user_id_user_id_fk": { 209 + "name": "activity_user_id_user_id_fk", 210 + "tableFrom": "activity", 211 + "tableTo": "user", 212 + "columnsFrom": ["user_id"], 213 + "columnsTo": ["id"], 214 + "onDelete": "cascade", 215 + "onUpdate": "cascade" 216 + } 217 + }, 218 + "compositePrimaryKeys": {}, 219 + "uniqueConstraints": {}, 220 + "policies": {}, 221 + "checkConstraints": {}, 222 + "isRLSEnabled": false 223 + }, 224 + "public.apikey": { 225 + "name": "apikey", 226 + "schema": "", 227 + "columns": { 228 + "id": { 229 + "name": "id", 230 + "type": "text", 231 + "primaryKey": true, 232 + "notNull": true 233 + }, 234 + "config_id": { 235 + "name": "config_id", 236 + "type": "text", 237 + "primaryKey": false, 238 + "notNull": true, 239 + "default": "'default'" 240 + }, 241 + "name": { 242 + "name": "name", 243 + "type": "text", 244 + "primaryKey": false, 245 + "notNull": false 246 + }, 247 + "start": { 248 + "name": "start", 249 + "type": "text", 250 + "primaryKey": false, 251 + "notNull": false 252 + }, 253 + "reference_id": { 254 + "name": "reference_id", 255 + "type": "text", 256 + "primaryKey": false, 257 + "notNull": true 258 + }, 259 + "prefix": { 260 + "name": "prefix", 261 + "type": "text", 262 + "primaryKey": false, 263 + "notNull": false 264 + }, 265 + "key": { 266 + "name": "key", 267 + "type": "text", 268 + "primaryKey": false, 269 + "notNull": true 270 + }, 271 + "user_id": { 272 + "name": "user_id", 273 + "type": "text", 274 + "primaryKey": false, 275 + "notNull": false 276 + }, 277 + "refill_interval": { 278 + "name": "refill_interval", 279 + "type": "integer", 280 + "primaryKey": false, 281 + "notNull": false 282 + }, 283 + "refill_amount": { 284 + "name": "refill_amount", 285 + "type": "integer", 286 + "primaryKey": false, 287 + "notNull": false 288 + }, 289 + "last_refill_at": { 290 + "name": "last_refill_at", 291 + "type": "timestamp", 292 + "primaryKey": false, 293 + "notNull": false 294 + }, 295 + "enabled": { 296 + "name": "enabled", 297 + "type": "boolean", 298 + "primaryKey": false, 299 + "notNull": false, 300 + "default": true 301 + }, 302 + "rate_limit_enabled": { 303 + "name": "rate_limit_enabled", 304 + "type": "boolean", 305 + "primaryKey": false, 306 + "notNull": false, 307 + "default": true 308 + }, 309 + "rate_limit_time_window": { 310 + "name": "rate_limit_time_window", 311 + "type": "integer", 312 + "primaryKey": false, 313 + "notNull": false, 314 + "default": 86400000 315 + }, 316 + "rate_limit_max": { 317 + "name": "rate_limit_max", 318 + "type": "integer", 319 + "primaryKey": false, 320 + "notNull": false, 321 + "default": 10 322 + }, 323 + "request_count": { 324 + "name": "request_count", 325 + "type": "integer", 326 + "primaryKey": false, 327 + "notNull": false, 328 + "default": 0 329 + }, 330 + "remaining": { 331 + "name": "remaining", 332 + "type": "integer", 333 + "primaryKey": false, 334 + "notNull": false 335 + }, 336 + "last_request": { 337 + "name": "last_request", 338 + "type": "timestamp", 339 + "primaryKey": false, 340 + "notNull": false 341 + }, 342 + "expires_at": { 343 + "name": "expires_at", 344 + "type": "timestamp", 345 + "primaryKey": false, 346 + "notNull": false 347 + }, 348 + "created_at": { 349 + "name": "created_at", 350 + "type": "timestamp", 351 + "primaryKey": false, 352 + "notNull": true 353 + }, 354 + "updated_at": { 355 + "name": "updated_at", 356 + "type": "timestamp", 357 + "primaryKey": false, 358 + "notNull": true 359 + }, 360 + "permissions": { 361 + "name": "permissions", 362 + "type": "text", 363 + "primaryKey": false, 364 + "notNull": false 365 + }, 366 + "metadata": { 367 + "name": "metadata", 368 + "type": "text", 369 + "primaryKey": false, 370 + "notNull": false 371 + } 372 + }, 373 + "indexes": { 374 + "apikey_configId_idx": { 375 + "name": "apikey_configId_idx", 376 + "columns": [ 377 + { 378 + "expression": "config_id", 379 + "isExpression": false, 380 + "asc": true, 381 + "nulls": "last" 382 + } 383 + ], 384 + "isUnique": false, 385 + "concurrently": false, 386 + "method": "btree", 387 + "with": {} 388 + }, 389 + "apikey_key_idx": { 390 + "name": "apikey_key_idx", 391 + "columns": [ 392 + { 393 + "expression": "key", 394 + "isExpression": false, 395 + "asc": true, 396 + "nulls": "last" 397 + } 398 + ], 399 + "isUnique": false, 400 + "concurrently": false, 401 + "method": "btree", 402 + "with": {} 403 + }, 404 + "apikey_referenceId_idx": { 405 + "name": "apikey_referenceId_idx", 406 + "columns": [ 407 + { 408 + "expression": "reference_id", 409 + "isExpression": false, 410 + "asc": true, 411 + "nulls": "last" 412 + } 413 + ], 414 + "isUnique": false, 415 + "concurrently": false, 416 + "method": "btree", 417 + "with": {} 418 + }, 419 + "apikey_userId_idx": { 420 + "name": "apikey_userId_idx", 421 + "columns": [ 422 + { 423 + "expression": "user_id", 424 + "isExpression": false, 425 + "asc": true, 426 + "nulls": "last" 427 + } 428 + ], 429 + "isUnique": false, 430 + "concurrently": false, 431 + "method": "btree", 432 + "with": {} 433 + } 434 + }, 435 + "foreignKeys": { 436 + "apikey_reference_id_user_id_fk": { 437 + "name": "apikey_reference_id_user_id_fk", 438 + "tableFrom": "apikey", 439 + "tableTo": "user", 440 + "columnsFrom": ["reference_id"], 441 + "columnsTo": ["id"], 442 + "onDelete": "cascade", 443 + "onUpdate": "no action" 444 + }, 445 + "apikey_user_id_user_id_fk": { 446 + "name": "apikey_user_id_user_id_fk", 447 + "tableFrom": "apikey", 448 + "tableTo": "user", 449 + "columnsFrom": ["user_id"], 450 + "columnsTo": ["id"], 451 + "onDelete": "cascade", 452 + "onUpdate": "no action" 453 + } 454 + }, 455 + "compositePrimaryKeys": {}, 456 + "uniqueConstraints": {}, 457 + "policies": {}, 458 + "checkConstraints": {}, 459 + "isRLSEnabled": false 460 + }, 461 + "public.asset": { 462 + "name": "asset", 463 + "schema": "", 464 + "columns": { 465 + "id": { 466 + "name": "id", 467 + "type": "text", 468 + "primaryKey": true, 469 + "notNull": true 470 + }, 471 + "workspace_id": { 472 + "name": "workspace_id", 473 + "type": "text", 474 + "primaryKey": false, 475 + "notNull": true 476 + }, 477 + "project_id": { 478 + "name": "project_id", 479 + "type": "text", 480 + "primaryKey": false, 481 + "notNull": true 482 + }, 483 + "task_id": { 484 + "name": "task_id", 485 + "type": "text", 486 + "primaryKey": false, 487 + "notNull": false 488 + }, 489 + "activity_id": { 490 + "name": "activity_id", 491 + "type": "text", 492 + "primaryKey": false, 493 + "notNull": false 494 + }, 495 + "object_key": { 496 + "name": "object_key", 497 + "type": "text", 498 + "primaryKey": false, 499 + "notNull": true 500 + }, 501 + "filename": { 502 + "name": "filename", 503 + "type": "text", 504 + "primaryKey": false, 505 + "notNull": true 506 + }, 507 + "mime_type": { 508 + "name": "mime_type", 509 + "type": "text", 510 + "primaryKey": false, 511 + "notNull": true 512 + }, 513 + "size": { 514 + "name": "size", 515 + "type": "integer", 516 + "primaryKey": false, 517 + "notNull": true 518 + }, 519 + "kind": { 520 + "name": "kind", 521 + "type": "text", 522 + "primaryKey": false, 523 + "notNull": true, 524 + "default": "'image'" 525 + }, 526 + "surface": { 527 + "name": "surface", 528 + "type": "text", 529 + "primaryKey": false, 530 + "notNull": true, 531 + "default": "'description'" 532 + }, 533 + "created_by": { 534 + "name": "created_by", 535 + "type": "text", 536 + "primaryKey": false, 537 + "notNull": false 538 + }, 539 + "created_at": { 540 + "name": "created_at", 541 + "type": "timestamp", 542 + "primaryKey": false, 543 + "notNull": true, 544 + "default": "now()" 545 + } 546 + }, 547 + "indexes": { 548 + "asset_workspaceId_idx": { 549 + "name": "asset_workspaceId_idx", 550 + "columns": [ 551 + { 552 + "expression": "workspace_id", 553 + "isExpression": false, 554 + "asc": true, 555 + "nulls": "last" 556 + } 557 + ], 558 + "isUnique": false, 559 + "concurrently": false, 560 + "method": "btree", 561 + "with": {} 562 + }, 563 + "asset_projectId_idx": { 564 + "name": "asset_projectId_idx", 565 + "columns": [ 566 + { 567 + "expression": "project_id", 568 + "isExpression": false, 569 + "asc": true, 570 + "nulls": "last" 571 + } 572 + ], 573 + "isUnique": false, 574 + "concurrently": false, 575 + "method": "btree", 576 + "with": {} 577 + }, 578 + "asset_taskId_idx": { 579 + "name": "asset_taskId_idx", 580 + "columns": [ 581 + { 582 + "expression": "task_id", 583 + "isExpression": false, 584 + "asc": true, 585 + "nulls": "last" 586 + } 587 + ], 588 + "isUnique": false, 589 + "concurrently": false, 590 + "method": "btree", 591 + "with": {} 592 + }, 593 + "asset_activityId_idx": { 594 + "name": "asset_activityId_idx", 595 + "columns": [ 596 + { 597 + "expression": "activity_id", 598 + "isExpression": false, 599 + "asc": true, 600 + "nulls": "last" 601 + } 602 + ], 603 + "isUnique": false, 604 + "concurrently": false, 605 + "method": "btree", 606 + "with": {} 607 + } 608 + }, 609 + "foreignKeys": { 610 + "asset_workspace_id_workspace_id_fk": { 611 + "name": "asset_workspace_id_workspace_id_fk", 612 + "tableFrom": "asset", 613 + "tableTo": "workspace", 614 + "columnsFrom": ["workspace_id"], 615 + "columnsTo": ["id"], 616 + "onDelete": "cascade", 617 + "onUpdate": "cascade" 618 + }, 619 + "asset_project_id_project_id_fk": { 620 + "name": "asset_project_id_project_id_fk", 621 + "tableFrom": "asset", 622 + "tableTo": "project", 623 + "columnsFrom": ["project_id"], 624 + "columnsTo": ["id"], 625 + "onDelete": "cascade", 626 + "onUpdate": "cascade" 627 + }, 628 + "asset_task_id_task_id_fk": { 629 + "name": "asset_task_id_task_id_fk", 630 + "tableFrom": "asset", 631 + "tableTo": "task", 632 + "columnsFrom": ["task_id"], 633 + "columnsTo": ["id"], 634 + "onDelete": "cascade", 635 + "onUpdate": "cascade" 636 + }, 637 + "asset_activity_id_activity_id_fk": { 638 + "name": "asset_activity_id_activity_id_fk", 639 + "tableFrom": "asset", 640 + "tableTo": "activity", 641 + "columnsFrom": ["activity_id"], 642 + "columnsTo": ["id"], 643 + "onDelete": "cascade", 644 + "onUpdate": "cascade" 645 + }, 646 + "asset_created_by_user_id_fk": { 647 + "name": "asset_created_by_user_id_fk", 648 + "tableFrom": "asset", 649 + "tableTo": "user", 650 + "columnsFrom": ["created_by"], 651 + "columnsTo": ["id"], 652 + "onDelete": "set null", 653 + "onUpdate": "cascade" 654 + } 655 + }, 656 + "compositePrimaryKeys": {}, 657 + "uniqueConstraints": { 658 + "asset_object_key_unique": { 659 + "name": "asset_object_key_unique", 660 + "nullsNotDistinct": false, 661 + "columns": ["object_key"] 662 + } 663 + }, 664 + "policies": {}, 665 + "checkConstraints": {}, 666 + "isRLSEnabled": false 667 + }, 668 + "public.column": { 669 + "name": "column", 670 + "schema": "", 671 + "columns": { 672 + "id": { 673 + "name": "id", 674 + "type": "text", 675 + "primaryKey": true, 676 + "notNull": true 677 + }, 678 + "project_id": { 679 + "name": "project_id", 680 + "type": "text", 681 + "primaryKey": false, 682 + "notNull": true 683 + }, 684 + "name": { 685 + "name": "name", 686 + "type": "text", 687 + "primaryKey": false, 688 + "notNull": true 689 + }, 690 + "slug": { 691 + "name": "slug", 692 + "type": "text", 693 + "primaryKey": false, 694 + "notNull": true 695 + }, 696 + "position": { 697 + "name": "position", 698 + "type": "integer", 699 + "primaryKey": false, 700 + "notNull": true, 701 + "default": 0 702 + }, 703 + "icon": { 704 + "name": "icon", 705 + "type": "text", 706 + "primaryKey": false, 707 + "notNull": false 708 + }, 709 + "color": { 710 + "name": "color", 711 + "type": "text", 712 + "primaryKey": false, 713 + "notNull": false 714 + }, 715 + "is_final": { 716 + "name": "is_final", 717 + "type": "boolean", 718 + "primaryKey": false, 719 + "notNull": true, 720 + "default": false 721 + }, 722 + "created_at": { 723 + "name": "created_at", 724 + "type": "timestamp", 725 + "primaryKey": false, 726 + "notNull": true, 727 + "default": "now()" 728 + }, 729 + "updated_at": { 730 + "name": "updated_at", 731 + "type": "timestamp", 732 + "primaryKey": false, 733 + "notNull": true, 734 + "default": "now()" 735 + } 736 + }, 737 + "indexes": { 738 + "column_projectId_idx": { 739 + "name": "column_projectId_idx", 740 + "columns": [ 741 + { 742 + "expression": "project_id", 743 + "isExpression": false, 744 + "asc": true, 745 + "nulls": "last" 746 + } 747 + ], 748 + "isUnique": false, 749 + "concurrently": false, 750 + "method": "btree", 751 + "with": {} 752 + } 753 + }, 754 + "foreignKeys": { 755 + "column_project_id_project_id_fk": { 756 + "name": "column_project_id_project_id_fk", 757 + "tableFrom": "column", 758 + "tableTo": "project", 759 + "columnsFrom": ["project_id"], 760 + "columnsTo": ["id"], 761 + "onDelete": "cascade", 762 + "onUpdate": "cascade" 763 + } 764 + }, 765 + "compositePrimaryKeys": {}, 766 + "uniqueConstraints": {}, 767 + "policies": {}, 768 + "checkConstraints": {}, 769 + "isRLSEnabled": false 770 + }, 771 + "public.comment": { 772 + "name": "comment", 773 + "schema": "", 774 + "columns": { 775 + "id": { 776 + "name": "id", 777 + "type": "text", 778 + "primaryKey": true, 779 + "notNull": true 780 + }, 781 + "task_id": { 782 + "name": "task_id", 783 + "type": "text", 784 + "primaryKey": false, 785 + "notNull": true 786 + }, 787 + "user_id": { 788 + "name": "user_id", 789 + "type": "text", 790 + "primaryKey": false, 791 + "notNull": true 792 + }, 793 + "content": { 794 + "name": "content", 795 + "type": "text", 796 + "primaryKey": false, 797 + "notNull": true 798 + }, 799 + "created_at": { 800 + "name": "created_at", 801 + "type": "timestamp", 802 + "primaryKey": false, 803 + "notNull": true, 804 + "default": "now()" 805 + }, 806 + "updated_at": { 807 + "name": "updated_at", 808 + "type": "timestamp", 809 + "primaryKey": false, 810 + "notNull": true, 811 + "default": "now()" 812 + } 813 + }, 814 + "indexes": { 815 + "comment_task_idx": { 816 + "name": "comment_task_idx", 817 + "columns": [ 818 + { 819 + "expression": "task_id", 820 + "isExpression": false, 821 + "asc": true, 822 + "nulls": "last" 823 + } 824 + ], 825 + "isUnique": false, 826 + "concurrently": false, 827 + "method": "btree", 828 + "with": {} 829 + }, 830 + "comment_user_idx": { 831 + "name": "comment_user_idx", 832 + "columns": [ 833 + { 834 + "expression": "user_id", 835 + "isExpression": false, 836 + "asc": true, 837 + "nulls": "last" 838 + } 839 + ], 840 + "isUnique": false, 841 + "concurrently": false, 842 + "method": "btree", 843 + "with": {} 844 + } 845 + }, 846 + "foreignKeys": { 847 + "comment_task_id_task_id_fk": { 848 + "name": "comment_task_id_task_id_fk", 849 + "tableFrom": "comment", 850 + "tableTo": "task", 851 + "columnsFrom": ["task_id"], 852 + "columnsTo": ["id"], 853 + "onDelete": "cascade", 854 + "onUpdate": "cascade" 855 + }, 856 + "comment_user_id_user_id_fk": { 857 + "name": "comment_user_id_user_id_fk", 858 + "tableFrom": "comment", 859 + "tableTo": "user", 860 + "columnsFrom": ["user_id"], 861 + "columnsTo": ["id"], 862 + "onDelete": "cascade", 863 + "onUpdate": "cascade" 864 + } 865 + }, 866 + "compositePrimaryKeys": {}, 867 + "uniqueConstraints": {}, 868 + "policies": {}, 869 + "checkConstraints": {}, 870 + "isRLSEnabled": false 871 + }, 872 + "public.external_link": { 873 + "name": "external_link", 874 + "schema": "", 875 + "columns": { 876 + "id": { 877 + "name": "id", 878 + "type": "text", 879 + "primaryKey": true, 880 + "notNull": true 881 + }, 882 + "task_id": { 883 + "name": "task_id", 884 + "type": "text", 885 + "primaryKey": false, 886 + "notNull": true 887 + }, 888 + "integration_id": { 889 + "name": "integration_id", 890 + "type": "text", 891 + "primaryKey": false, 892 + "notNull": true 893 + }, 894 + "resource_type": { 895 + "name": "resource_type", 896 + "type": "text", 897 + "primaryKey": false, 898 + "notNull": true 899 + }, 900 + "external_id": { 901 + "name": "external_id", 902 + "type": "text", 903 + "primaryKey": false, 904 + "notNull": true 905 + }, 906 + "url": { 907 + "name": "url", 908 + "type": "text", 909 + "primaryKey": false, 910 + "notNull": true 911 + }, 912 + "title": { 913 + "name": "title", 914 + "type": "text", 915 + "primaryKey": false, 916 + "notNull": false 917 + }, 918 + "metadata": { 919 + "name": "metadata", 920 + "type": "text", 921 + "primaryKey": false, 922 + "notNull": false 923 + }, 924 + "created_at": { 925 + "name": "created_at", 926 + "type": "timestamp", 927 + "primaryKey": false, 928 + "notNull": true, 929 + "default": "now()" 930 + }, 931 + "updated_at": { 932 + "name": "updated_at", 933 + "type": "timestamp", 934 + "primaryKey": false, 935 + "notNull": true, 936 + "default": "now()" 937 + } 938 + }, 939 + "indexes": { 940 + "external_link_taskId_idx": { 941 + "name": "external_link_taskId_idx", 942 + "columns": [ 943 + { 944 + "expression": "task_id", 945 + "isExpression": false, 946 + "asc": true, 947 + "nulls": "last" 948 + } 949 + ], 950 + "isUnique": false, 951 + "concurrently": false, 952 + "method": "btree", 953 + "with": {} 954 + }, 955 + "external_link_integrationId_idx": { 956 + "name": "external_link_integrationId_idx", 957 + "columns": [ 958 + { 959 + "expression": "integration_id", 960 + "isExpression": false, 961 + "asc": true, 962 + "nulls": "last" 963 + } 964 + ], 965 + "isUnique": false, 966 + "concurrently": false, 967 + "method": "btree", 968 + "with": {} 969 + }, 970 + "external_link_externalId_idx": { 971 + "name": "external_link_externalId_idx", 972 + "columns": [ 973 + { 974 + "expression": "external_id", 975 + "isExpression": false, 976 + "asc": true, 977 + "nulls": "last" 978 + } 979 + ], 980 + "isUnique": false, 981 + "concurrently": false, 982 + "method": "btree", 983 + "with": {} 984 + }, 985 + "external_link_resourceType_idx": { 986 + "name": "external_link_resourceType_idx", 987 + "columns": [ 988 + { 989 + "expression": "resource_type", 990 + "isExpression": false, 991 + "asc": true, 992 + "nulls": "last" 993 + } 994 + ], 995 + "isUnique": false, 996 + "concurrently": false, 997 + "method": "btree", 998 + "with": {} 999 + } 1000 + }, 1001 + "foreignKeys": { 1002 + "external_link_task_id_task_id_fk": { 1003 + "name": "external_link_task_id_task_id_fk", 1004 + "tableFrom": "external_link", 1005 + "tableTo": "task", 1006 + "columnsFrom": ["task_id"], 1007 + "columnsTo": ["id"], 1008 + "onDelete": "cascade", 1009 + "onUpdate": "cascade" 1010 + }, 1011 + "external_link_integration_id_integration_id_fk": { 1012 + "name": "external_link_integration_id_integration_id_fk", 1013 + "tableFrom": "external_link", 1014 + "tableTo": "integration", 1015 + "columnsFrom": ["integration_id"], 1016 + "columnsTo": ["id"], 1017 + "onDelete": "cascade", 1018 + "onUpdate": "cascade" 1019 + } 1020 + }, 1021 + "compositePrimaryKeys": {}, 1022 + "uniqueConstraints": {}, 1023 + "policies": {}, 1024 + "checkConstraints": {}, 1025 + "isRLSEnabled": false 1026 + }, 1027 + "public.github_integration": { 1028 + "name": "github_integration", 1029 + "schema": "", 1030 + "columns": { 1031 + "id": { 1032 + "name": "id", 1033 + "type": "text", 1034 + "primaryKey": true, 1035 + "notNull": true 1036 + }, 1037 + "project_id": { 1038 + "name": "project_id", 1039 + "type": "text", 1040 + "primaryKey": false, 1041 + "notNull": true 1042 + }, 1043 + "repository_owner": { 1044 + "name": "repository_owner", 1045 + "type": "text", 1046 + "primaryKey": false, 1047 + "notNull": true 1048 + }, 1049 + "repository_name": { 1050 + "name": "repository_name", 1051 + "type": "text", 1052 + "primaryKey": false, 1053 + "notNull": true 1054 + }, 1055 + "installation_id": { 1056 + "name": "installation_id", 1057 + "type": "integer", 1058 + "primaryKey": false, 1059 + "notNull": false 1060 + }, 1061 + "is_active": { 1062 + "name": "is_active", 1063 + "type": "boolean", 1064 + "primaryKey": false, 1065 + "notNull": false, 1066 + "default": true 1067 + }, 1068 + "created_at": { 1069 + "name": "created_at", 1070 + "type": "timestamp", 1071 + "primaryKey": false, 1072 + "notNull": true, 1073 + "default": "now()" 1074 + }, 1075 + "updated_at": { 1076 + "name": "updated_at", 1077 + "type": "timestamp", 1078 + "primaryKey": false, 1079 + "notNull": true, 1080 + "default": "now()" 1081 + } 1082 + }, 1083 + "indexes": {}, 1084 + "foreignKeys": { 1085 + "github_integration_project_id_project_id_fk": { 1086 + "name": "github_integration_project_id_project_id_fk", 1087 + "tableFrom": "github_integration", 1088 + "tableTo": "project", 1089 + "columnsFrom": ["project_id"], 1090 + "columnsTo": ["id"], 1091 + "onDelete": "cascade", 1092 + "onUpdate": "cascade" 1093 + } 1094 + }, 1095 + "compositePrimaryKeys": {}, 1096 + "uniqueConstraints": { 1097 + "github_integration_project_id_unique": { 1098 + "name": "github_integration_project_id_unique", 1099 + "nullsNotDistinct": false, 1100 + "columns": ["project_id"] 1101 + } 1102 + }, 1103 + "policies": {}, 1104 + "checkConstraints": {}, 1105 + "isRLSEnabled": false 1106 + }, 1107 + "public.integration": { 1108 + "name": "integration", 1109 + "schema": "", 1110 + "columns": { 1111 + "id": { 1112 + "name": "id", 1113 + "type": "text", 1114 + "primaryKey": true, 1115 + "notNull": true 1116 + }, 1117 + "project_id": { 1118 + "name": "project_id", 1119 + "type": "text", 1120 + "primaryKey": false, 1121 + "notNull": true 1122 + }, 1123 + "type": { 1124 + "name": "type", 1125 + "type": "text", 1126 + "primaryKey": false, 1127 + "notNull": true 1128 + }, 1129 + "config": { 1130 + "name": "config", 1131 + "type": "text", 1132 + "primaryKey": false, 1133 + "notNull": true 1134 + }, 1135 + "is_active": { 1136 + "name": "is_active", 1137 + "type": "boolean", 1138 + "primaryKey": false, 1139 + "notNull": false, 1140 + "default": true 1141 + }, 1142 + "created_at": { 1143 + "name": "created_at", 1144 + "type": "timestamp", 1145 + "primaryKey": false, 1146 + "notNull": true, 1147 + "default": "now()" 1148 + }, 1149 + "updated_at": { 1150 + "name": "updated_at", 1151 + "type": "timestamp", 1152 + "primaryKey": false, 1153 + "notNull": true, 1154 + "default": "now()" 1155 + } 1156 + }, 1157 + "indexes": { 1158 + "integration_projectId_idx": { 1159 + "name": "integration_projectId_idx", 1160 + "columns": [ 1161 + { 1162 + "expression": "project_id", 1163 + "isExpression": false, 1164 + "asc": true, 1165 + "nulls": "last" 1166 + } 1167 + ], 1168 + "isUnique": false, 1169 + "concurrently": false, 1170 + "method": "btree", 1171 + "with": {} 1172 + }, 1173 + "integration_type_idx": { 1174 + "name": "integration_type_idx", 1175 + "columns": [ 1176 + { 1177 + "expression": "type", 1178 + "isExpression": false, 1179 + "asc": true, 1180 + "nulls": "last" 1181 + } 1182 + ], 1183 + "isUnique": false, 1184 + "concurrently": false, 1185 + "method": "btree", 1186 + "with": {} 1187 + } 1188 + }, 1189 + "foreignKeys": { 1190 + "integration_project_id_project_id_fk": { 1191 + "name": "integration_project_id_project_id_fk", 1192 + "tableFrom": "integration", 1193 + "tableTo": "project", 1194 + "columnsFrom": ["project_id"], 1195 + "columnsTo": ["id"], 1196 + "onDelete": "cascade", 1197 + "onUpdate": "cascade" 1198 + } 1199 + }, 1200 + "compositePrimaryKeys": {}, 1201 + "uniqueConstraints": {}, 1202 + "policies": {}, 1203 + "checkConstraints": {}, 1204 + "isRLSEnabled": false 1205 + }, 1206 + "public.invitation": { 1207 + "name": "invitation", 1208 + "schema": "", 1209 + "columns": { 1210 + "id": { 1211 + "name": "id", 1212 + "type": "text", 1213 + "primaryKey": true, 1214 + "notNull": true 1215 + }, 1216 + "workspace_id": { 1217 + "name": "workspace_id", 1218 + "type": "text", 1219 + "primaryKey": false, 1220 + "notNull": true 1221 + }, 1222 + "email": { 1223 + "name": "email", 1224 + "type": "text", 1225 + "primaryKey": false, 1226 + "notNull": true 1227 + }, 1228 + "role": { 1229 + "name": "role", 1230 + "type": "text", 1231 + "primaryKey": false, 1232 + "notNull": false 1233 + }, 1234 + "team_id": { 1235 + "name": "team_id", 1236 + "type": "text", 1237 + "primaryKey": false, 1238 + "notNull": false 1239 + }, 1240 + "status": { 1241 + "name": "status", 1242 + "type": "text", 1243 + "primaryKey": false, 1244 + "notNull": true, 1245 + "default": "'pending'" 1246 + }, 1247 + "expires_at": { 1248 + "name": "expires_at", 1249 + "type": "timestamp", 1250 + "primaryKey": false, 1251 + "notNull": true 1252 + }, 1253 + "created_at": { 1254 + "name": "created_at", 1255 + "type": "timestamp", 1256 + "primaryKey": false, 1257 + "notNull": true, 1258 + "default": "now()" 1259 + }, 1260 + "inviter_id": { 1261 + "name": "inviter_id", 1262 + "type": "text", 1263 + "primaryKey": false, 1264 + "notNull": true 1265 + } 1266 + }, 1267 + "indexes": { 1268 + "invitation_workspaceId_idx": { 1269 + "name": "invitation_workspaceId_idx", 1270 + "columns": [ 1271 + { 1272 + "expression": "workspace_id", 1273 + "isExpression": false, 1274 + "asc": true, 1275 + "nulls": "last" 1276 + } 1277 + ], 1278 + "isUnique": false, 1279 + "concurrently": false, 1280 + "method": "btree", 1281 + "with": {} 1282 + }, 1283 + "invitation_email_idx": { 1284 + "name": "invitation_email_idx", 1285 + "columns": [ 1286 + { 1287 + "expression": "email", 1288 + "isExpression": false, 1289 + "asc": true, 1290 + "nulls": "last" 1291 + } 1292 + ], 1293 + "isUnique": false, 1294 + "concurrently": false, 1295 + "method": "btree", 1296 + "with": {} 1297 + } 1298 + }, 1299 + "foreignKeys": { 1300 + "invitation_workspace_id_workspace_id_fk": { 1301 + "name": "invitation_workspace_id_workspace_id_fk", 1302 + "tableFrom": "invitation", 1303 + "tableTo": "workspace", 1304 + "columnsFrom": ["workspace_id"], 1305 + "columnsTo": ["id"], 1306 + "onDelete": "cascade", 1307 + "onUpdate": "no action" 1308 + }, 1309 + "invitation_inviter_id_user_id_fk": { 1310 + "name": "invitation_inviter_id_user_id_fk", 1311 + "tableFrom": "invitation", 1312 + "tableTo": "user", 1313 + "columnsFrom": ["inviter_id"], 1314 + "columnsTo": ["id"], 1315 + "onDelete": "cascade", 1316 + "onUpdate": "no action" 1317 + } 1318 + }, 1319 + "compositePrimaryKeys": {}, 1320 + "uniqueConstraints": {}, 1321 + "policies": {}, 1322 + "checkConstraints": {}, 1323 + "isRLSEnabled": false 1324 + }, 1325 + "public.label": { 1326 + "name": "label", 1327 + "schema": "", 1328 + "columns": { 1329 + "id": { 1330 + "name": "id", 1331 + "type": "text", 1332 + "primaryKey": true, 1333 + "notNull": true 1334 + }, 1335 + "name": { 1336 + "name": "name", 1337 + "type": "text", 1338 + "primaryKey": false, 1339 + "notNull": true 1340 + }, 1341 + "color": { 1342 + "name": "color", 1343 + "type": "text", 1344 + "primaryKey": false, 1345 + "notNull": true 1346 + }, 1347 + "created_at": { 1348 + "name": "created_at", 1349 + "type": "timestamp", 1350 + "primaryKey": false, 1351 + "notNull": true, 1352 + "default": "now()" 1353 + }, 1354 + "task_id": { 1355 + "name": "task_id", 1356 + "type": "text", 1357 + "primaryKey": false, 1358 + "notNull": false 1359 + }, 1360 + "workspace_id": { 1361 + "name": "workspace_id", 1362 + "type": "text", 1363 + "primaryKey": false, 1364 + "notNull": false 1365 + } 1366 + }, 1367 + "indexes": {}, 1368 + "foreignKeys": { 1369 + "label_task_id_task_id_fk": { 1370 + "name": "label_task_id_task_id_fk", 1371 + "tableFrom": "label", 1372 + "tableTo": "task", 1373 + "columnsFrom": ["task_id"], 1374 + "columnsTo": ["id"], 1375 + "onDelete": "cascade", 1376 + "onUpdate": "cascade" 1377 + }, 1378 + "label_workspace_id_workspace_id_fk": { 1379 + "name": "label_workspace_id_workspace_id_fk", 1380 + "tableFrom": "label", 1381 + "tableTo": "workspace", 1382 + "columnsFrom": ["workspace_id"], 1383 + "columnsTo": ["id"], 1384 + "onDelete": "cascade", 1385 + "onUpdate": "cascade" 1386 + } 1387 + }, 1388 + "compositePrimaryKeys": {}, 1389 + "uniqueConstraints": {}, 1390 + "policies": {}, 1391 + "checkConstraints": {}, 1392 + "isRLSEnabled": false 1393 + }, 1394 + "public.notification": { 1395 + "name": "notification", 1396 + "schema": "", 1397 + "columns": { 1398 + "id": { 1399 + "name": "id", 1400 + "type": "text", 1401 + "primaryKey": true, 1402 + "notNull": true 1403 + }, 1404 + "user_id": { 1405 + "name": "user_id", 1406 + "type": "text", 1407 + "primaryKey": false, 1408 + "notNull": true 1409 + }, 1410 + "title": { 1411 + "name": "title", 1412 + "type": "text", 1413 + "primaryKey": false, 1414 + "notNull": false 1415 + }, 1416 + "content": { 1417 + "name": "content", 1418 + "type": "text", 1419 + "primaryKey": false, 1420 + "notNull": false 1421 + }, 1422 + "type": { 1423 + "name": "type", 1424 + "type": "text", 1425 + "primaryKey": false, 1426 + "notNull": true, 1427 + "default": "'info'" 1428 + }, 1429 + "event_data": { 1430 + "name": "event_data", 1431 + "type": "jsonb", 1432 + "primaryKey": false, 1433 + "notNull": false 1434 + }, 1435 + "is_read": { 1436 + "name": "is_read", 1437 + "type": "boolean", 1438 + "primaryKey": false, 1439 + "notNull": false, 1440 + "default": false 1441 + }, 1442 + "resource_id": { 1443 + "name": "resource_id", 1444 + "type": "text", 1445 + "primaryKey": false, 1446 + "notNull": false 1447 + }, 1448 + "resource_type": { 1449 + "name": "resource_type", 1450 + "type": "text", 1451 + "primaryKey": false, 1452 + "notNull": false 1453 + }, 1454 + "created_at": { 1455 + "name": "created_at", 1456 + "type": "timestamp with time zone", 1457 + "primaryKey": false, 1458 + "notNull": true, 1459 + "default": "now()" 1460 + } 1461 + }, 1462 + "indexes": {}, 1463 + "foreignKeys": { 1464 + "notification_user_id_user_id_fk": { 1465 + "name": "notification_user_id_user_id_fk", 1466 + "tableFrom": "notification", 1467 + "tableTo": "user", 1468 + "columnsFrom": ["user_id"], 1469 + "columnsTo": ["id"], 1470 + "onDelete": "cascade", 1471 + "onUpdate": "cascade" 1472 + } 1473 + }, 1474 + "compositePrimaryKeys": {}, 1475 + "uniqueConstraints": {}, 1476 + "policies": {}, 1477 + "checkConstraints": {}, 1478 + "isRLSEnabled": false 1479 + }, 1480 + "public.project": { 1481 + "name": "project", 1482 + "schema": "", 1483 + "columns": { 1484 + "id": { 1485 + "name": "id", 1486 + "type": "text", 1487 + "primaryKey": true, 1488 + "notNull": true 1489 + }, 1490 + "workspace_id": { 1491 + "name": "workspace_id", 1492 + "type": "text", 1493 + "primaryKey": false, 1494 + "notNull": true 1495 + }, 1496 + "slug": { 1497 + "name": "slug", 1498 + "type": "text", 1499 + "primaryKey": false, 1500 + "notNull": true 1501 + }, 1502 + "icon": { 1503 + "name": "icon", 1504 + "type": "text", 1505 + "primaryKey": false, 1506 + "notNull": false, 1507 + "default": "'Layout'" 1508 + }, 1509 + "name": { 1510 + "name": "name", 1511 + "type": "text", 1512 + "primaryKey": false, 1513 + "notNull": true 1514 + }, 1515 + "description": { 1516 + "name": "description", 1517 + "type": "text", 1518 + "primaryKey": false, 1519 + "notNull": false 1520 + }, 1521 + "created_at": { 1522 + "name": "created_at", 1523 + "type": "timestamp", 1524 + "primaryKey": false, 1525 + "notNull": true, 1526 + "default": "now()" 1527 + }, 1528 + "is_public": { 1529 + "name": "is_public", 1530 + "type": "boolean", 1531 + "primaryKey": false, 1532 + "notNull": false, 1533 + "default": false 1534 + }, 1535 + "archived_at": { 1536 + "name": "archived_at", 1537 + "type": "timestamp", 1538 + "primaryKey": false, 1539 + "notNull": false 1540 + } 1541 + }, 1542 + "indexes": {}, 1543 + "foreignKeys": { 1544 + "project_workspace_id_workspace_id_fk": { 1545 + "name": "project_workspace_id_workspace_id_fk", 1546 + "tableFrom": "project", 1547 + "tableTo": "workspace", 1548 + "columnsFrom": ["workspace_id"], 1549 + "columnsTo": ["id"], 1550 + "onDelete": "cascade", 1551 + "onUpdate": "cascade" 1552 + } 1553 + }, 1554 + "compositePrimaryKeys": {}, 1555 + "uniqueConstraints": {}, 1556 + "policies": {}, 1557 + "checkConstraints": {}, 1558 + "isRLSEnabled": false 1559 + }, 1560 + "public.session": { 1561 + "name": "session", 1562 + "schema": "", 1563 + "columns": { 1564 + "id": { 1565 + "name": "id", 1566 + "type": "text", 1567 + "primaryKey": true, 1568 + "notNull": true 1569 + }, 1570 + "expires_at": { 1571 + "name": "expires_at", 1572 + "type": "timestamp", 1573 + "primaryKey": false, 1574 + "notNull": true 1575 + }, 1576 + "token": { 1577 + "name": "token", 1578 + "type": "text", 1579 + "primaryKey": false, 1580 + "notNull": true 1581 + }, 1582 + "created_at": { 1583 + "name": "created_at", 1584 + "type": "timestamp", 1585 + "primaryKey": false, 1586 + "notNull": true, 1587 + "default": "now()" 1588 + }, 1589 + "updated_at": { 1590 + "name": "updated_at", 1591 + "type": "timestamp", 1592 + "primaryKey": false, 1593 + "notNull": true 1594 + }, 1595 + "ip_address": { 1596 + "name": "ip_address", 1597 + "type": "text", 1598 + "primaryKey": false, 1599 + "notNull": false 1600 + }, 1601 + "user_agent": { 1602 + "name": "user_agent", 1603 + "type": "text", 1604 + "primaryKey": false, 1605 + "notNull": false 1606 + }, 1607 + "user_id": { 1608 + "name": "user_id", 1609 + "type": "text", 1610 + "primaryKey": false, 1611 + "notNull": true 1612 + }, 1613 + "active_organization_id": { 1614 + "name": "active_organization_id", 1615 + "type": "text", 1616 + "primaryKey": false, 1617 + "notNull": false 1618 + }, 1619 + "active_team_id": { 1620 + "name": "active_team_id", 1621 + "type": "text", 1622 + "primaryKey": false, 1623 + "notNull": false 1624 + } 1625 + }, 1626 + "indexes": { 1627 + "session_userId_idx": { 1628 + "name": "session_userId_idx", 1629 + "columns": [ 1630 + { 1631 + "expression": "user_id", 1632 + "isExpression": false, 1633 + "asc": true, 1634 + "nulls": "last" 1635 + } 1636 + ], 1637 + "isUnique": false, 1638 + "concurrently": false, 1639 + "method": "btree", 1640 + "with": {} 1641 + } 1642 + }, 1643 + "foreignKeys": { 1644 + "session_user_id_user_id_fk": { 1645 + "name": "session_user_id_user_id_fk", 1646 + "tableFrom": "session", 1647 + "tableTo": "user", 1648 + "columnsFrom": ["user_id"], 1649 + "columnsTo": ["id"], 1650 + "onDelete": "cascade", 1651 + "onUpdate": "no action" 1652 + } 1653 + }, 1654 + "compositePrimaryKeys": {}, 1655 + "uniqueConstraints": { 1656 + "session_token_unique": { 1657 + "name": "session_token_unique", 1658 + "nullsNotDistinct": false, 1659 + "columns": ["token"] 1660 + } 1661 + }, 1662 + "policies": {}, 1663 + "checkConstraints": {}, 1664 + "isRLSEnabled": false 1665 + }, 1666 + "public.task_relation": { 1667 + "name": "task_relation", 1668 + "schema": "", 1669 + "columns": { 1670 + "id": { 1671 + "name": "id", 1672 + "type": "text", 1673 + "primaryKey": true, 1674 + "notNull": true 1675 + }, 1676 + "source_task_id": { 1677 + "name": "source_task_id", 1678 + "type": "text", 1679 + "primaryKey": false, 1680 + "notNull": true 1681 + }, 1682 + "target_task_id": { 1683 + "name": "target_task_id", 1684 + "type": "text", 1685 + "primaryKey": false, 1686 + "notNull": true 1687 + }, 1688 + "relation_type": { 1689 + "name": "relation_type", 1690 + "type": "text", 1691 + "primaryKey": false, 1692 + "notNull": true 1693 + }, 1694 + "created_at": { 1695 + "name": "created_at", 1696 + "type": "timestamp", 1697 + "primaryKey": false, 1698 + "notNull": true, 1699 + "default": "now()" 1700 + } 1701 + }, 1702 + "indexes": { 1703 + "task_relation_source_idx": { 1704 + "name": "task_relation_source_idx", 1705 + "columns": [ 1706 + { 1707 + "expression": "source_task_id", 1708 + "isExpression": false, 1709 + "asc": true, 1710 + "nulls": "last" 1711 + } 1712 + ], 1713 + "isUnique": false, 1714 + "concurrently": false, 1715 + "method": "btree", 1716 + "with": {} 1717 + }, 1718 + "task_relation_target_idx": { 1719 + "name": "task_relation_target_idx", 1720 + "columns": [ 1721 + { 1722 + "expression": "target_task_id", 1723 + "isExpression": false, 1724 + "asc": true, 1725 + "nulls": "last" 1726 + } 1727 + ], 1728 + "isUnique": false, 1729 + "concurrently": false, 1730 + "method": "btree", 1731 + "with": {} 1732 + } 1733 + }, 1734 + "foreignKeys": { 1735 + "task_relation_source_task_id_task_id_fk": { 1736 + "name": "task_relation_source_task_id_task_id_fk", 1737 + "tableFrom": "task_relation", 1738 + "tableTo": "task", 1739 + "columnsFrom": ["source_task_id"], 1740 + "columnsTo": ["id"], 1741 + "onDelete": "cascade", 1742 + "onUpdate": "cascade" 1743 + }, 1744 + "task_relation_target_task_id_task_id_fk": { 1745 + "name": "task_relation_target_task_id_task_id_fk", 1746 + "tableFrom": "task_relation", 1747 + "tableTo": "task", 1748 + "columnsFrom": ["target_task_id"], 1749 + "columnsTo": ["id"], 1750 + "onDelete": "cascade", 1751 + "onUpdate": "cascade" 1752 + } 1753 + }, 1754 + "compositePrimaryKeys": {}, 1755 + "uniqueConstraints": {}, 1756 + "policies": {}, 1757 + "checkConstraints": {}, 1758 + "isRLSEnabled": false 1759 + }, 1760 + "public.task": { 1761 + "name": "task", 1762 + "schema": "", 1763 + "columns": { 1764 + "id": { 1765 + "name": "id", 1766 + "type": "text", 1767 + "primaryKey": true, 1768 + "notNull": true 1769 + }, 1770 + "project_id": { 1771 + "name": "project_id", 1772 + "type": "text", 1773 + "primaryKey": false, 1774 + "notNull": true 1775 + }, 1776 + "position": { 1777 + "name": "position", 1778 + "type": "integer", 1779 + "primaryKey": false, 1780 + "notNull": false, 1781 + "default": 0 1782 + }, 1783 + "number": { 1784 + "name": "number", 1785 + "type": "integer", 1786 + "primaryKey": false, 1787 + "notNull": false, 1788 + "default": 1 1789 + }, 1790 + "assignee_id": { 1791 + "name": "assignee_id", 1792 + "type": "text", 1793 + "primaryKey": false, 1794 + "notNull": false 1795 + }, 1796 + "title": { 1797 + "name": "title", 1798 + "type": "text", 1799 + "primaryKey": false, 1800 + "notNull": true 1801 + }, 1802 + "description": { 1803 + "name": "description", 1804 + "type": "text", 1805 + "primaryKey": false, 1806 + "notNull": false 1807 + }, 1808 + "status": { 1809 + "name": "status", 1810 + "type": "text", 1811 + "primaryKey": false, 1812 + "notNull": true, 1813 + "default": "'to-do'" 1814 + }, 1815 + "column_id": { 1816 + "name": "column_id", 1817 + "type": "text", 1818 + "primaryKey": false, 1819 + "notNull": false 1820 + }, 1821 + "priority": { 1822 + "name": "priority", 1823 + "type": "text", 1824 + "primaryKey": false, 1825 + "notNull": false, 1826 + "default": "'low'" 1827 + }, 1828 + "start_date": { 1829 + "name": "start_date", 1830 + "type": "timestamp", 1831 + "primaryKey": false, 1832 + "notNull": false 1833 + }, 1834 + "due_date": { 1835 + "name": "due_date", 1836 + "type": "timestamp", 1837 + "primaryKey": false, 1838 + "notNull": false 1839 + }, 1840 + "created_at": { 1841 + "name": "created_at", 1842 + "type": "timestamp", 1843 + "primaryKey": false, 1844 + "notNull": true, 1845 + "default": "now()" 1846 + } 1847 + }, 1848 + "indexes": {}, 1849 + "foreignKeys": { 1850 + "task_project_id_project_id_fk": { 1851 + "name": "task_project_id_project_id_fk", 1852 + "tableFrom": "task", 1853 + "tableTo": "project", 1854 + "columnsFrom": ["project_id"], 1855 + "columnsTo": ["id"], 1856 + "onDelete": "cascade", 1857 + "onUpdate": "cascade" 1858 + }, 1859 + "task_assignee_id_user_id_fk": { 1860 + "name": "task_assignee_id_user_id_fk", 1861 + "tableFrom": "task", 1862 + "tableTo": "user", 1863 + "columnsFrom": ["assignee_id"], 1864 + "columnsTo": ["id"], 1865 + "onDelete": "cascade", 1866 + "onUpdate": "cascade" 1867 + }, 1868 + "task_column_id_column_id_fk": { 1869 + "name": "task_column_id_column_id_fk", 1870 + "tableFrom": "task", 1871 + "tableTo": "column", 1872 + "columnsFrom": ["column_id"], 1873 + "columnsTo": ["id"], 1874 + "onDelete": "set null", 1875 + "onUpdate": "cascade" 1876 + } 1877 + }, 1878 + "compositePrimaryKeys": {}, 1879 + "uniqueConstraints": {}, 1880 + "policies": {}, 1881 + "checkConstraints": {}, 1882 + "isRLSEnabled": false 1883 + }, 1884 + "public.team": { 1885 + "name": "team", 1886 + "schema": "", 1887 + "columns": { 1888 + "id": { 1889 + "name": "id", 1890 + "type": "text", 1891 + "primaryKey": true, 1892 + "notNull": true 1893 + }, 1894 + "name": { 1895 + "name": "name", 1896 + "type": "text", 1897 + "primaryKey": false, 1898 + "notNull": true 1899 + }, 1900 + "workspace_id": { 1901 + "name": "workspace_id", 1902 + "type": "text", 1903 + "primaryKey": false, 1904 + "notNull": true 1905 + }, 1906 + "created_at": { 1907 + "name": "created_at", 1908 + "type": "timestamp", 1909 + "primaryKey": false, 1910 + "notNull": true 1911 + }, 1912 + "updated_at": { 1913 + "name": "updated_at", 1914 + "type": "timestamp", 1915 + "primaryKey": false, 1916 + "notNull": false 1917 + } 1918 + }, 1919 + "indexes": { 1920 + "team_workspaceId_idx": { 1921 + "name": "team_workspaceId_idx", 1922 + "columns": [ 1923 + { 1924 + "expression": "workspace_id", 1925 + "isExpression": false, 1926 + "asc": true, 1927 + "nulls": "last" 1928 + } 1929 + ], 1930 + "isUnique": false, 1931 + "concurrently": false, 1932 + "method": "btree", 1933 + "with": {} 1934 + } 1935 + }, 1936 + "foreignKeys": { 1937 + "team_workspace_id_workspace_id_fk": { 1938 + "name": "team_workspace_id_workspace_id_fk", 1939 + "tableFrom": "team", 1940 + "tableTo": "workspace", 1941 + "columnsFrom": ["workspace_id"], 1942 + "columnsTo": ["id"], 1943 + "onDelete": "cascade", 1944 + "onUpdate": "no action" 1945 + } 1946 + }, 1947 + "compositePrimaryKeys": {}, 1948 + "uniqueConstraints": {}, 1949 + "policies": {}, 1950 + "checkConstraints": {}, 1951 + "isRLSEnabled": false 1952 + }, 1953 + "public.team_member": { 1954 + "name": "team_member", 1955 + "schema": "", 1956 + "columns": { 1957 + "id": { 1958 + "name": "id", 1959 + "type": "text", 1960 + "primaryKey": true, 1961 + "notNull": true 1962 + }, 1963 + "team_id": { 1964 + "name": "team_id", 1965 + "type": "text", 1966 + "primaryKey": false, 1967 + "notNull": true 1968 + }, 1969 + "user_id": { 1970 + "name": "user_id", 1971 + "type": "text", 1972 + "primaryKey": false, 1973 + "notNull": true 1974 + }, 1975 + "created_at": { 1976 + "name": "created_at", 1977 + "type": "timestamp", 1978 + "primaryKey": false, 1979 + "notNull": false 1980 + } 1981 + }, 1982 + "indexes": { 1983 + "teamMember_teamId_idx": { 1984 + "name": "teamMember_teamId_idx", 1985 + "columns": [ 1986 + { 1987 + "expression": "team_id", 1988 + "isExpression": false, 1989 + "asc": true, 1990 + "nulls": "last" 1991 + } 1992 + ], 1993 + "isUnique": false, 1994 + "concurrently": false, 1995 + "method": "btree", 1996 + "with": {} 1997 + }, 1998 + "teamMember_userId_idx": { 1999 + "name": "teamMember_userId_idx", 2000 + "columns": [ 2001 + { 2002 + "expression": "user_id", 2003 + "isExpression": false, 2004 + "asc": true, 2005 + "nulls": "last" 2006 + } 2007 + ], 2008 + "isUnique": false, 2009 + "concurrently": false, 2010 + "method": "btree", 2011 + "with": {} 2012 + } 2013 + }, 2014 + "foreignKeys": { 2015 + "team_member_team_id_team_id_fk": { 2016 + "name": "team_member_team_id_team_id_fk", 2017 + "tableFrom": "team_member", 2018 + "tableTo": "team", 2019 + "columnsFrom": ["team_id"], 2020 + "columnsTo": ["id"], 2021 + "onDelete": "cascade", 2022 + "onUpdate": "no action" 2023 + }, 2024 + "team_member_user_id_user_id_fk": { 2025 + "name": "team_member_user_id_user_id_fk", 2026 + "tableFrom": "team_member", 2027 + "tableTo": "user", 2028 + "columnsFrom": ["user_id"], 2029 + "columnsTo": ["id"], 2030 + "onDelete": "cascade", 2031 + "onUpdate": "no action" 2032 + } 2033 + }, 2034 + "compositePrimaryKeys": {}, 2035 + "uniqueConstraints": {}, 2036 + "policies": {}, 2037 + "checkConstraints": {}, 2038 + "isRLSEnabled": false 2039 + }, 2040 + "public.time_entry": { 2041 + "name": "time_entry", 2042 + "schema": "", 2043 + "columns": { 2044 + "id": { 2045 + "name": "id", 2046 + "type": "text", 2047 + "primaryKey": true, 2048 + "notNull": true 2049 + }, 2050 + "task_id": { 2051 + "name": "task_id", 2052 + "type": "text", 2053 + "primaryKey": false, 2054 + "notNull": true 2055 + }, 2056 + "user_id": { 2057 + "name": "user_id", 2058 + "type": "text", 2059 + "primaryKey": false, 2060 + "notNull": false 2061 + }, 2062 + "description": { 2063 + "name": "description", 2064 + "type": "text", 2065 + "primaryKey": false, 2066 + "notNull": false 2067 + }, 2068 + "start_time": { 2069 + "name": "start_time", 2070 + "type": "timestamp", 2071 + "primaryKey": false, 2072 + "notNull": true 2073 + }, 2074 + "end_time": { 2075 + "name": "end_time", 2076 + "type": "timestamp", 2077 + "primaryKey": false, 2078 + "notNull": false 2079 + }, 2080 + "duration": { 2081 + "name": "duration", 2082 + "type": "integer", 2083 + "primaryKey": false, 2084 + "notNull": false, 2085 + "default": 0 2086 + }, 2087 + "created_at": { 2088 + "name": "created_at", 2089 + "type": "timestamp", 2090 + "primaryKey": false, 2091 + "notNull": true, 2092 + "default": "now()" 2093 + } 2094 + }, 2095 + "indexes": {}, 2096 + "foreignKeys": { 2097 + "time_entry_task_id_task_id_fk": { 2098 + "name": "time_entry_task_id_task_id_fk", 2099 + "tableFrom": "time_entry", 2100 + "tableTo": "task", 2101 + "columnsFrom": ["task_id"], 2102 + "columnsTo": ["id"], 2103 + "onDelete": "cascade", 2104 + "onUpdate": "cascade" 2105 + }, 2106 + "time_entry_user_id_user_id_fk": { 2107 + "name": "time_entry_user_id_user_id_fk", 2108 + "tableFrom": "time_entry", 2109 + "tableTo": "user", 2110 + "columnsFrom": ["user_id"], 2111 + "columnsTo": ["id"], 2112 + "onDelete": "cascade", 2113 + "onUpdate": "cascade" 2114 + } 2115 + }, 2116 + "compositePrimaryKeys": {}, 2117 + "uniqueConstraints": {}, 2118 + "policies": {}, 2119 + "checkConstraints": {}, 2120 + "isRLSEnabled": false 2121 + }, 2122 + "public.user": { 2123 + "name": "user", 2124 + "schema": "", 2125 + "columns": { 2126 + "id": { 2127 + "name": "id", 2128 + "type": "text", 2129 + "primaryKey": true, 2130 + "notNull": true 2131 + }, 2132 + "name": { 2133 + "name": "name", 2134 + "type": "text", 2135 + "primaryKey": false, 2136 + "notNull": true 2137 + }, 2138 + "email": { 2139 + "name": "email", 2140 + "type": "text", 2141 + "primaryKey": false, 2142 + "notNull": true 2143 + }, 2144 + "email_verified": { 2145 + "name": "email_verified", 2146 + "type": "boolean", 2147 + "primaryKey": false, 2148 + "notNull": true 2149 + }, 2150 + "image": { 2151 + "name": "image", 2152 + "type": "text", 2153 + "primaryKey": false, 2154 + "notNull": false 2155 + }, 2156 + "locale": { 2157 + "name": "locale", 2158 + "type": "text", 2159 + "primaryKey": false, 2160 + "notNull": false 2161 + }, 2162 + "created_at": { 2163 + "name": "created_at", 2164 + "type": "timestamp", 2165 + "primaryKey": false, 2166 + "notNull": true, 2167 + "default": "now()" 2168 + }, 2169 + "updated_at": { 2170 + "name": "updated_at", 2171 + "type": "timestamp", 2172 + "primaryKey": false, 2173 + "notNull": true, 2174 + "default": "now()" 2175 + }, 2176 + "is_anonymous": { 2177 + "name": "is_anonymous", 2178 + "type": "boolean", 2179 + "primaryKey": false, 2180 + "notNull": false, 2181 + "default": false 2182 + } 2183 + }, 2184 + "indexes": {}, 2185 + "foreignKeys": {}, 2186 + "compositePrimaryKeys": {}, 2187 + "uniqueConstraints": { 2188 + "user_email_unique": { 2189 + "name": "user_email_unique", 2190 + "nullsNotDistinct": false, 2191 + "columns": ["email"] 2192 + } 2193 + }, 2194 + "policies": {}, 2195 + "checkConstraints": {}, 2196 + "isRLSEnabled": false 2197 + }, 2198 + "public.verification": { 2199 + "name": "verification", 2200 + "schema": "", 2201 + "columns": { 2202 + "id": { 2203 + "name": "id", 2204 + "type": "text", 2205 + "primaryKey": true, 2206 + "notNull": true 2207 + }, 2208 + "identifier": { 2209 + "name": "identifier", 2210 + "type": "text", 2211 + "primaryKey": false, 2212 + "notNull": true 2213 + }, 2214 + "value": { 2215 + "name": "value", 2216 + "type": "text", 2217 + "primaryKey": false, 2218 + "notNull": true 2219 + }, 2220 + "expires_at": { 2221 + "name": "expires_at", 2222 + "type": "timestamp", 2223 + "primaryKey": false, 2224 + "notNull": true 2225 + }, 2226 + "created_at": { 2227 + "name": "created_at", 2228 + "type": "timestamp", 2229 + "primaryKey": false, 2230 + "notNull": true, 2231 + "default": "now()" 2232 + }, 2233 + "updated_at": { 2234 + "name": "updated_at", 2235 + "type": "timestamp", 2236 + "primaryKey": false, 2237 + "notNull": true, 2238 + "default": "now()" 2239 + } 2240 + }, 2241 + "indexes": { 2242 + "verification_identifier_idx": { 2243 + "name": "verification_identifier_idx", 2244 + "columns": [ 2245 + { 2246 + "expression": "identifier", 2247 + "isExpression": false, 2248 + "asc": true, 2249 + "nulls": "last" 2250 + } 2251 + ], 2252 + "isUnique": false, 2253 + "concurrently": false, 2254 + "method": "btree", 2255 + "with": {} 2256 + } 2257 + }, 2258 + "foreignKeys": {}, 2259 + "compositePrimaryKeys": {}, 2260 + "uniqueConstraints": {}, 2261 + "policies": {}, 2262 + "checkConstraints": {}, 2263 + "isRLSEnabled": false 2264 + }, 2265 + "public.workflow_rule": { 2266 + "name": "workflow_rule", 2267 + "schema": "", 2268 + "columns": { 2269 + "id": { 2270 + "name": "id", 2271 + "type": "text", 2272 + "primaryKey": true, 2273 + "notNull": true 2274 + }, 2275 + "project_id": { 2276 + "name": "project_id", 2277 + "type": "text", 2278 + "primaryKey": false, 2279 + "notNull": true 2280 + }, 2281 + "integration_type": { 2282 + "name": "integration_type", 2283 + "type": "text", 2284 + "primaryKey": false, 2285 + "notNull": true 2286 + }, 2287 + "event_type": { 2288 + "name": "event_type", 2289 + "type": "text", 2290 + "primaryKey": false, 2291 + "notNull": true 2292 + }, 2293 + "column_id": { 2294 + "name": "column_id", 2295 + "type": "text", 2296 + "primaryKey": false, 2297 + "notNull": true 2298 + }, 2299 + "created_at": { 2300 + "name": "created_at", 2301 + "type": "timestamp", 2302 + "primaryKey": false, 2303 + "notNull": true, 2304 + "default": "now()" 2305 + }, 2306 + "updated_at": { 2307 + "name": "updated_at", 2308 + "type": "timestamp", 2309 + "primaryKey": false, 2310 + "notNull": true, 2311 + "default": "now()" 2312 + } 2313 + }, 2314 + "indexes": { 2315 + "workflow_rule_projectId_idx": { 2316 + "name": "workflow_rule_projectId_idx", 2317 + "columns": [ 2318 + { 2319 + "expression": "project_id", 2320 + "isExpression": false, 2321 + "asc": true, 2322 + "nulls": "last" 2323 + } 2324 + ], 2325 + "isUnique": false, 2326 + "concurrently": false, 2327 + "method": "btree", 2328 + "with": {} 2329 + } 2330 + }, 2331 + "foreignKeys": { 2332 + "workflow_rule_project_id_project_id_fk": { 2333 + "name": "workflow_rule_project_id_project_id_fk", 2334 + "tableFrom": "workflow_rule", 2335 + "tableTo": "project", 2336 + "columnsFrom": ["project_id"], 2337 + "columnsTo": ["id"], 2338 + "onDelete": "cascade", 2339 + "onUpdate": "cascade" 2340 + }, 2341 + "workflow_rule_column_id_column_id_fk": { 2342 + "name": "workflow_rule_column_id_column_id_fk", 2343 + "tableFrom": "workflow_rule", 2344 + "tableTo": "column", 2345 + "columnsFrom": ["column_id"], 2346 + "columnsTo": ["id"], 2347 + "onDelete": "cascade", 2348 + "onUpdate": "cascade" 2349 + } 2350 + }, 2351 + "compositePrimaryKeys": {}, 2352 + "uniqueConstraints": {}, 2353 + "policies": {}, 2354 + "checkConstraints": {}, 2355 + "isRLSEnabled": false 2356 + }, 2357 + "public.workspace": { 2358 + "name": "workspace", 2359 + "schema": "", 2360 + "columns": { 2361 + "id": { 2362 + "name": "id", 2363 + "type": "text", 2364 + "primaryKey": true, 2365 + "notNull": true 2366 + }, 2367 + "name": { 2368 + "name": "name", 2369 + "type": "text", 2370 + "primaryKey": false, 2371 + "notNull": true 2372 + }, 2373 + "slug": { 2374 + "name": "slug", 2375 + "type": "text", 2376 + "primaryKey": false, 2377 + "notNull": true 2378 + }, 2379 + "logo": { 2380 + "name": "logo", 2381 + "type": "text", 2382 + "primaryKey": false, 2383 + "notNull": false 2384 + }, 2385 + "metadata": { 2386 + "name": "metadata", 2387 + "type": "text", 2388 + "primaryKey": false, 2389 + "notNull": false 2390 + }, 2391 + "description": { 2392 + "name": "description", 2393 + "type": "text", 2394 + "primaryKey": false, 2395 + "notNull": false 2396 + }, 2397 + "created_at": { 2398 + "name": "created_at", 2399 + "type": "timestamp", 2400 + "primaryKey": false, 2401 + "notNull": true 2402 + } 2403 + }, 2404 + "indexes": {}, 2405 + "foreignKeys": {}, 2406 + "compositePrimaryKeys": {}, 2407 + "uniqueConstraints": { 2408 + "workspace_slug_unique": { 2409 + "name": "workspace_slug_unique", 2410 + "nullsNotDistinct": false, 2411 + "columns": ["slug"] 2412 + } 2413 + }, 2414 + "policies": {}, 2415 + "checkConstraints": {}, 2416 + "isRLSEnabled": false 2417 + }, 2418 + "public.workspace_member": { 2419 + "name": "workspace_member", 2420 + "schema": "", 2421 + "columns": { 2422 + "id": { 2423 + "name": "id", 2424 + "type": "text", 2425 + "primaryKey": true, 2426 + "notNull": true 2427 + }, 2428 + "workspace_id": { 2429 + "name": "workspace_id", 2430 + "type": "text", 2431 + "primaryKey": false, 2432 + "notNull": true 2433 + }, 2434 + "user_id": { 2435 + "name": "user_id", 2436 + "type": "text", 2437 + "primaryKey": false, 2438 + "notNull": true 2439 + }, 2440 + "role": { 2441 + "name": "role", 2442 + "type": "text", 2443 + "primaryKey": false, 2444 + "notNull": true, 2445 + "default": "'member'" 2446 + }, 2447 + "joined_at": { 2448 + "name": "joined_at", 2449 + "type": "timestamp", 2450 + "primaryKey": false, 2451 + "notNull": true 2452 + } 2453 + }, 2454 + "indexes": { 2455 + "workspace_member_workspaceId_idx": { 2456 + "name": "workspace_member_workspaceId_idx", 2457 + "columns": [ 2458 + { 2459 + "expression": "workspace_id", 2460 + "isExpression": false, 2461 + "asc": true, 2462 + "nulls": "last" 2463 + } 2464 + ], 2465 + "isUnique": false, 2466 + "concurrently": false, 2467 + "method": "btree", 2468 + "with": {} 2469 + }, 2470 + "workspace_member_userId_idx": { 2471 + "name": "workspace_member_userId_idx", 2472 + "columns": [ 2473 + { 2474 + "expression": "user_id", 2475 + "isExpression": false, 2476 + "asc": true, 2477 + "nulls": "last" 2478 + } 2479 + ], 2480 + "isUnique": false, 2481 + "concurrently": false, 2482 + "method": "btree", 2483 + "with": {} 2484 + } 2485 + }, 2486 + "foreignKeys": { 2487 + "workspace_member_workspace_id_workspace_id_fk": { 2488 + "name": "workspace_member_workspace_id_workspace_id_fk", 2489 + "tableFrom": "workspace_member", 2490 + "tableTo": "workspace", 2491 + "columnsFrom": ["workspace_id"], 2492 + "columnsTo": ["id"], 2493 + "onDelete": "cascade", 2494 + "onUpdate": "no action" 2495 + }, 2496 + "workspace_member_user_id_user_id_fk": { 2497 + "name": "workspace_member_user_id_user_id_fk", 2498 + "tableFrom": "workspace_member", 2499 + "tableTo": "user", 2500 + "columnsFrom": ["user_id"], 2501 + "columnsTo": ["id"], 2502 + "onDelete": "cascade", 2503 + "onUpdate": "no action" 2504 + } 2505 + }, 2506 + "compositePrimaryKeys": {}, 2507 + "uniqueConstraints": {}, 2508 + "policies": {}, 2509 + "checkConstraints": {}, 2510 + "isRLSEnabled": false 2511 + } 2512 + }, 2513 + "enums": {}, 2514 + "schemas": {}, 2515 + "sequences": {}, 2516 + "roles": {}, 2517 + "policies": {}, 2518 + "views": {}, 2519 + "_meta": { 2520 + "columns": {}, 2521 + "schemas": {}, 2522 + "tables": {} 2523 + } 2524 + }
+138 -138
apps/api/drizzle/meta/_journal.json
··· 1 1 { 2 - "version": "7", 3 - "dialect": "postgresql", 4 - "entries": [ 5 - { 6 - "idx": 0, 7 - "version": "7", 8 - "when": 1750083630484, 9 - "tag": "0000_confused_pixie", 10 - "breakpoints": true 11 - }, 12 - { 13 - "idx": 1, 14 - "version": "7", 15 - "when": 1750504871903, 16 - "tag": "0001_natural_robin_chapel", 17 - "breakpoints": true 18 - }, 19 - { 20 - "idx": 2, 21 - "version": "7", 22 - "when": 1752666410349, 23 - "tag": "0002_easy_miek", 24 - "breakpoints": true 25 - }, 26 - { 27 - "idx": 3, 28 - "version": "7", 29 - "when": 1755016234993, 30 - "tag": "0003_round_human_fly", 31 - "breakpoints": true 32 - }, 33 - { 34 - "idx": 4, 35 - "version": "7", 36 - "when": 1755720143109, 37 - "tag": "0004_curved_stingray", 38 - "breakpoints": true 39 - }, 40 - { 41 - "idx": 5, 42 - "version": "7", 43 - "when": 1759234332200, 44 - "tag": "0005_jittery_monster_badoon", 45 - "breakpoints": true 46 - }, 47 - { 48 - "idx": 6, 49 - "version": "7", 50 - "when": 1733703124000, 51 - "tag": "0006_rename_active_workspace_to_organization", 52 - "breakpoints": true 53 - }, 54 - { 55 - "idx": 7, 56 - "version": "7", 57 - "when": 1765390825431, 58 - "tag": "0007_careful_moira_mactaggert", 59 - "breakpoints": true 60 - }, 61 - { 62 - "idx": 8, 63 - "version": "7", 64 - "when": 1765392072530, 65 - "tag": "0008_square_silvermane", 66 - "breakpoints": true 67 - }, 68 - { 69 - "idx": 9, 70 - "version": "7", 71 - "when": 1766950050412, 72 - "tag": "0009_harsh_blacklash", 73 - "breakpoints": true 74 - }, 75 - { 76 - "idx": 10, 77 - "version": "7", 78 - "when": 1767037216750, 79 - "tag": "0010_bouncy_taskmaster", 80 - "breakpoints": true 81 - }, 82 - { 83 - "idx": 11, 84 - "version": "7", 85 - "when": 1767037714394, 86 - "tag": "0011_flashy_masked_marvel", 87 - "breakpoints": true 88 - }, 89 - { 90 - "idx": 12, 91 - "version": "7", 92 - "when": 1770375054098, 93 - "tag": "0012_mixed_thor_girl", 94 - "breakpoints": true 95 - }, 96 - { 97 - "idx": 13, 98 - "version": "7", 99 - "when": 1772660160328, 100 - "tag": "0013_quiet_gladiator", 101 - "breakpoints": true 102 - }, 103 - { 104 - "idx": 14, 105 - "version": "7", 106 - "when": 1773259300000, 107 - "tag": "0014_private_assets", 108 - "breakpoints": true 109 - }, 110 - { 111 - "idx": 15, 112 - "version": "7", 113 - "when": 1773947411304, 114 - "tag": "0015_add_comment_and_archival", 115 - "breakpoints": true 116 - }, 117 - { 118 - "idx": 16, 119 - "version": "7", 120 - "when": 1773952461673, 121 - "tag": "0016_add_task_relation", 122 - "breakpoints": true 123 - }, 124 - { 125 - "idx": 17, 126 - "version": "7", 127 - "when": 1774269662424, 128 - "tag": "0017_white_omega_flight", 129 - "breakpoints": true 130 - }, 131 - { 132 - "idx": 18, 133 - "version": "7", 134 - "when": 1774726270729, 135 - "tag": "0018_motionless_luckman", 136 - "breakpoints": true 137 - } 138 - ] 139 - } 2 + "version": "7", 3 + "dialect": "postgresql", 4 + "entries": [ 5 + { 6 + "idx": 0, 7 + "version": "7", 8 + "when": 1750083630484, 9 + "tag": "0000_confused_pixie", 10 + "breakpoints": true 11 + }, 12 + { 13 + "idx": 1, 14 + "version": "7", 15 + "when": 1750504871903, 16 + "tag": "0001_natural_robin_chapel", 17 + "breakpoints": true 18 + }, 19 + { 20 + "idx": 2, 21 + "version": "7", 22 + "when": 1752666410349, 23 + "tag": "0002_easy_miek", 24 + "breakpoints": true 25 + }, 26 + { 27 + "idx": 3, 28 + "version": "7", 29 + "when": 1755016234993, 30 + "tag": "0003_round_human_fly", 31 + "breakpoints": true 32 + }, 33 + { 34 + "idx": 4, 35 + "version": "7", 36 + "when": 1755720143109, 37 + "tag": "0004_curved_stingray", 38 + "breakpoints": true 39 + }, 40 + { 41 + "idx": 5, 42 + "version": "7", 43 + "when": 1759234332200, 44 + "tag": "0005_jittery_monster_badoon", 45 + "breakpoints": true 46 + }, 47 + { 48 + "idx": 6, 49 + "version": "7", 50 + "when": 1733703124000, 51 + "tag": "0006_rename_active_workspace_to_organization", 52 + "breakpoints": true 53 + }, 54 + { 55 + "idx": 7, 56 + "version": "7", 57 + "when": 1765390825431, 58 + "tag": "0007_careful_moira_mactaggert", 59 + "breakpoints": true 60 + }, 61 + { 62 + "idx": 8, 63 + "version": "7", 64 + "when": 1765392072530, 65 + "tag": "0008_square_silvermane", 66 + "breakpoints": true 67 + }, 68 + { 69 + "idx": 9, 70 + "version": "7", 71 + "when": 1766950050412, 72 + "tag": "0009_harsh_blacklash", 73 + "breakpoints": true 74 + }, 75 + { 76 + "idx": 10, 77 + "version": "7", 78 + "when": 1767037216750, 79 + "tag": "0010_bouncy_taskmaster", 80 + "breakpoints": true 81 + }, 82 + { 83 + "idx": 11, 84 + "version": "7", 85 + "when": 1767037714394, 86 + "tag": "0011_flashy_masked_marvel", 87 + "breakpoints": true 88 + }, 89 + { 90 + "idx": 12, 91 + "version": "7", 92 + "when": 1770375054098, 93 + "tag": "0012_mixed_thor_girl", 94 + "breakpoints": true 95 + }, 96 + { 97 + "idx": 13, 98 + "version": "7", 99 + "when": 1772660160328, 100 + "tag": "0013_quiet_gladiator", 101 + "breakpoints": true 102 + }, 103 + { 104 + "idx": 14, 105 + "version": "7", 106 + "when": 1773259300000, 107 + "tag": "0014_private_assets", 108 + "breakpoints": true 109 + }, 110 + { 111 + "idx": 15, 112 + "version": "7", 113 + "when": 1773947411304, 114 + "tag": "0015_add_comment_and_archival", 115 + "breakpoints": true 116 + }, 117 + { 118 + "idx": 16, 119 + "version": "7", 120 + "when": 1773952461673, 121 + "tag": "0016_add_task_relation", 122 + "breakpoints": true 123 + }, 124 + { 125 + "idx": 17, 126 + "version": "7", 127 + "when": 1774269662424, 128 + "tag": "0017_white_omega_flight", 129 + "breakpoints": true 130 + }, 131 + { 132 + "idx": 18, 133 + "version": "7", 134 + "when": 1774726270729, 135 + "tag": "0018_motionless_luckman", 136 + "breakpoints": true 137 + } 138 + ] 139 + }
+17 -41
apps/api/src/activity/index.ts
··· 210 210 assigneeId?: string; 211 211 type: string; 212 212 }>("task.status_changed", async (data) => { 213 - await createActivity( 214 - data.taskId, 215 - data.type, 216 - data.userId, 217 - null, 218 - { 219 - oldStatus: data.oldStatus, 220 - newStatus: data.newStatus, 221 - }, 222 - ); 213 + await createActivity(data.taskId, data.type, data.userId, null, { 214 + oldStatus: data.oldStatus, 215 + newStatus: data.newStatus, 216 + }); 223 217 }); 224 218 225 219 subscribeToEvent<{ ··· 230 224 title: string; 231 225 type: string; 232 226 }>("task.priority_changed", async (data) => { 233 - await createActivity( 234 - data.taskId, 235 - data.type, 236 - data.userId, 237 - null, 238 - { 239 - oldPriority: data.oldPriority, 240 - newPriority: data.newPriority, 241 - }, 242 - ); 227 + await createActivity(data.taskId, data.type, data.userId, null, { 228 + oldPriority: data.oldPriority, 229 + newPriority: data.newPriority, 230 + }); 243 231 }); 244 232 245 233 subscribeToEvent<{ ··· 260 248 title: string; 261 249 type: string; 262 250 }>("task.assignee_changed", async (data) => { 263 - await createActivity( 264 - data.taskId, 265 - data.type, 266 - data.userId, 267 - null, 268 - { 269 - newAssigneeId: data.newAssigneeId, 270 - newAssignee: data.newAssignee, 271 - isSelfAssigned: data.userId === data.newAssigneeId, 272 - }, 273 - ); 251 + await createActivity(data.taskId, data.type, data.userId, null, { 252 + newAssigneeId: data.newAssigneeId, 253 + newAssignee: data.newAssignee, 254 + isSelfAssigned: data.userId === data.newAssigneeId, 255 + }); 274 256 }); 275 257 276 258 subscribeToEvent<{ ··· 301 283 title: string; 302 284 type: string; 303 285 }>("task.title_changed", async (data) => { 304 - await createActivity( 305 - data.taskId, 306 - data.type, 307 - data.userId, 308 - null, 309 - { 310 - oldTitle: data.oldTitle, 311 - newTitle: data.newTitle, 312 - }, 313 - ); 286 + await createActivity(data.taskId, data.type, data.userId, null, { 287 + oldTitle: data.oldTitle, 288 + newTitle: data.newTitle, 289 + }); 314 290 }); 315 291 316 292 export default activity;
+1 -2
apps/api/src/notification/index.ts
··· 76 76 eventData, 77 77 relatedEntityId, 78 78 relatedEntityType, 79 - } = 80 - c.req.valid("json"); 79 + } = c.req.valid("json"); 81 80 const userId = c.get("userId"); 82 81 const notification = await createNotification({ 83 82 userId,
-2
apps/web/src/components/public-project/task-card.tsx
··· 1 1 import { Calendar, CalendarClock, CalendarX } from "lucide-react"; 2 2 import { useRef } from "react"; 3 - import { useTranslation } from "react-i18next"; 4 3 import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; 5 4 import { dueDateStatusColors, getDueDateStatus } from "@/lib/due-date-status"; 6 5 import { formatDateShort } from "@/lib/format"; ··· 24 23 projectSlug, 25 24 onTaskClick, 26 25 }: PublicTaskCardProps) { 27 - const { t } = useTranslation(); 28 26 const labels = task.labels || []; 29 27 const externalLinks = task.externalLinks || []; 30 28 const touchStartRef = useRef<{ x: number; y: number; time: number } | null>(
-8
apps/web/src/components/task/extensions/kaneo-issue-link.tsx
··· 11 11 import getProject from "@/fetchers/project/get-project"; 12 12 import getTask from "@/fetchers/task/get-task"; 13 13 14 - function toTitleCase(value?: string | null) { 15 - if (!value) return ""; 16 - return value 17 - .split("-") 18 - .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) 19 - .join(" "); 20 - } 21 - 22 14 function parseTaskRouteFromUrl(url: string) { 23 15 try { 24 16 const parsed = new URL(url);
-4
apps/web/src/routes/_layout/_authenticated/dashboard/workspace/$workspaceId/project/$projectId/backlog.tsx
··· 147 147 } 148 148 }, [data, setProject]); 149 149 150 - const getPriorityDisplayName = (priority: string) => { 151 - return priority.charAt(0).toUpperCase() + priority.slice(1); 152 - }; 153 - 154 150 const getAssigneeDisplayName = (userId: string) => { 155 151 const member = users?.members?.find((m) => m.userId === userId); 156 152 return member?.user?.name || t("common:people.unknown");
+1
biome.json
··· 9 9 "ignoreUnknown": false, 10 10 "includes": [ 11 11 "**", 12 + "!**/coverage", 12 13 "!**/tsconfig*.json", 13 14 "!**/routeTree.gen.ts", 14 15 "!**/dist",
+1438 -1438
i18n/de-DE.json
··· 1 1 { 2 - "common": { 3 - "appName": "Kaneo", 4 - "actions": { 5 - "cancel": "Abbrechen", 6 - "close": "Schließen", 7 - "clearAll": "Alle löschen", 8 - "delete": "Löschen", 9 - "deleting": "Wird gelöscht...", 10 - "markAllRead": "Alle als gelesen markieren", 11 - "remove": "Entfernen", 12 - "reset": "Zurücksetzen", 13 - "filter": "Filter", 14 - "clearAllFilters": "Alle Filter löschen" 15 - }, 16 - "a11y": { 17 - "toggleSidebar": "Sidebar umschalten" 18 - }, 19 - "sidebar": { 20 - "title": "Sidebar", 21 - "mobileDescription": "Zeigt die mobile Sidebar an." 22 - }, 23 - "empty": { 24 - "loading": "Lädt..." 25 - }, 26 - "pagination": { 27 - "label": "Seitennavigation", 28 - "previous": "Zurück", 29 - "next": "Weiter", 30 - "previousPage": "Zur vorherigen Seite", 31 - "nextPage": "Zur nächsten Seite", 32 - "morePages": "Weitere Seiten" 33 - }, 34 - "breadcrumb": { 35 - "label": "Brotkrümelnavigation", 36 - "more": "Mehr" 37 - }, 38 - "language": { 39 - "english": "Englisch", 40 - "german": "Deutsch" 41 - }, 42 - "people": { 43 - "someone": "Jemand", 44 - "unknown": "Unbekannt" 45 - }, 46 - "error": { 47 - "title": "Etwas ist schiefgelaufen", 48 - "troubleshooting": "Schritte zur Fehlerbehebung:", 49 - "tryAgain": "Erneut versuchen", 50 - "viewDeploymentGuide": "Bereitstellungsanleitung ansehen", 51 - "refreshPage": "Seite neu laden" 52 - }, 53 - "formats": { 54 - "never": "Nie" 55 - }, 56 - "modals": { 57 - "createProject": { 58 - "title": "Neues Projekt erstellen", 59 - "breadcrumbNew": "Neues Projekt erstellen", 60 - "workspaceFallback": "WORKSPACE", 61 - "description": "Erstelle ein neues Projekt in deinem Workspace, indem du einen Namen, einen Schlüssel und ein Symbol auswählst.", 62 - "pickIcon": "Symbol auswählen", 63 - "searchIcons": "Symbole suchen...", 64 - "projectName": "Projektname", 65 - "keyLabel": "Schlüssel:", 66 - "keyHint": "Wird für Ticket-IDs verwendet (z. B. {{example}}-123)", 67 - "createButton": "Projekt erstellen", 68 - "successToast": "Projekt erfolgreich erstellt", 69 - "errorToast": "Projekt konnte nicht erstellt werden" 70 - }, 71 - "createWorkspace": { 72 - "breadcrumbKaneo": "KANEO", 73 - "title": "Neuen Workspace erstellen", 74 - "description": "Erstelle einen neuen Workspace, indem du einen Namen dafür angibst.", 75 - "namePlaceholder": "Workspace-Name", 76 - "descriptionPlaceholder": "Beschreibung hinzufügen...", 77 - "createButton": "Workspace erstellen", 78 - "successToast": "Workspace erfolgreich erstellt", 79 - "errorToast": "Workspace konnte nicht erstellt werden" 80 - }, 81 - "createTask": { 82 - "breadcrumbTask": "AUFGABE", 83 - "title": "Neue Aufgabe", 84 - "description": "Erstelle eine neue Aufgabe, indem du einen Titel, eine Beschreibung und weitere Details angibst.", 85 - "taskTitlePlaceholder": "Aufgabentitel", 86 - "descriptionPlaceholder": "Füge eine Beschreibung für deine Aufgabe hinzu...", 87 - "chooseProjectForImages": "Wähle ein Projekt aus, bevor du Bilder hochlädst.", 88 - "prepareTaskError": "Aufgabe konnte nicht vorbereitet werden", 89 - "successCreated": "Aufgabe erfolgreich erstellt", 90 - "successUpdated": "Aufgabe erfolgreich aktualisiert", 91 - "createError": "Aufgabe konnte nicht erstellt werden", 92 - "priority": "Priorität", 93 - "statusFallback": "In Bearbeitung", 94 - "startDate": "Startdatum", 95 - "dueDate": "Fälligkeitsdatum", 96 - "clearStartDate": "Startdatum entfernen", 97 - "clearDueDate": "Fälligkeitsdatum entfernen", 98 - "assign": "Zuweisen", 99 - "assignUnassigned": "Nicht zugewiesen", 100 - "assignUnassignedTitle": "Nicht zugewiesen", 101 - "labels": "Labels", 102 - "searchLabels": "Labels suchen...", 103 - "noLabelsFound": "Keine Labels gefunden", 104 - "createLabel": "\"{{name}}\" erstellen", 105 - "chooseColor": "Farbe auswählen", 106 - "labelCreated": "Label erstellt", 107 - "labelCreateError": "Label konnte nicht erstellt werden", 108 - "createMore": "Weitere erstellen", 109 - "createButton": "Aufgabe erstellen", 110 - "untitledTask": "Unbenannte Aufgabe", 111 - "labelColors": { 112 - "stone": "Stein", 113 - "slate": "Schiefer", 114 - "lavender": "Lavendel", 115 - "sage": "Salbei", 116 - "forest": "Wald", 117 - "amber": "Bernstein", 118 - "terracotta": "Terrakotta", 119 - "rose": "Rosa", 120 - "crimson": "Karmesinrot" 121 - } 122 - } 123 - } 124 - }, 125 - "auth": { 126 - "signIn": { 127 - "pageTitle": "Anmelden", 128 - "title": "Willkommen zurück", 129 - "subtitle": "Gib deine Zugangsdaten ein, um auf deinen Workspace zuzugreifen", 130 - "invitationSubtitle": "Melde dich an, um deine Einladung anzunehmen", 131 - "invitationAlert": "Nach der Anmeldung kannst du deine Workspace-Einladung annehmen.", 132 - "signingIn": "Wird angemeldet...", 133 - "continueWithGoogle": "Mit Google fortfahren", 134 - "continueWithGithub": "Mit GitHub fortfahren", 135 - "continueWithDiscord": "Mit Discord fortfahren", 136 - "continueWithOidc": "Mit OIDC fortfahren", 137 - "lastUsed": "Zuletzt verwendet", 138 - "registrationDisabled": "Die öffentliche Registrierung ist deaktiviert. Nutze eine Einladung, um ein Konto zu erstellen.", 139 - "passwordRegistrationDisabled": "Die Registrierung per Passwort ist deaktiviert. Nutze eine konfigurierte Social- oder OIDC-Anmeldemethode, um ein Konto zu erstellen.", 140 - "toggleMessage": "Du hast noch kein Konto?", 141 - "toggleLink": "Konto erstellen", 142 - "guestSuccess": "Als Gast angemeldet", 143 - "guestError": "Anmeldung als Gast fehlgeschlagen", 144 - "oidcError": "Anmeldung mit OIDC fehlgeschlagen", 145 - "googleError": "Anmeldung mit Google fehlgeschlagen", 146 - "githubError": "Anmeldung mit GitHub fehlgeschlagen", 147 - "discordError": "Anmeldung mit Discord fehlgeschlagen" 148 - }, 149 - "providers": { 150 - "google": "Google", 151 - "discord": "Discord" 152 - }, 153 - "forms": { 154 - "or": "oder", 155 - "email": "E-Mail", 156 - "password": "Passwort", 157 - "emailPlaceholder": "me@example.com", 158 - "passwordPlaceholder": "••••••••", 159 - "showPassword": "Passwort anzeigen", 160 - "hidePassword": "Passwort ausblenden" 161 - }, 162 - "checkEmail": { 163 - "pageTitle": "Prüfe deine E-Mails", 164 - "title": "Prüfe deine E-Mails", 165 - "inboxMessage": "Wir haben dir einen temporären Anmeldelink gesendet. Bitte prüfe dein Postfach unter <email>{{email}}</email>.", 166 - "emailFallback": "deine E-Mail-Adresse", 167 - "backToLogin": "Zurück zur Anmeldung" 168 - }, 169 - "signUp": { 170 - "pageTitle": "Konto erstellen", 171 - "title": "Konto erstellen", 172 - "subtitleInvitation": "Erstelle ein Konto, um deine Einladung anzunehmen", 173 - "subtitleRegistrationDisabled": "Für die Registrierung ist eine Einladung erforderlich", 174 - "subtitlePasswordDisabled": "Nutze Social- oder OIDC-Anmeldung, um ein Konto zu erstellen", 175 - "subtitleDefault": "Lege mit deinem Workspace los", 176 - "invitationAlert": "Nach dem Erstellen deines Kontos kannst du deine Workspace-Einladung annehmen.", 177 - "registrationDisabledAlert": "Die Registrierung ist derzeit deaktiviert. Wenn du eingeladen wurdest, gib die E-Mail-Adresse ein, die die Einladung erhalten hat, um dein Konto zu erstellen.", 178 - "passwordDisabledAlert": "Die kontoerstellung per Passwort ist deaktiviert. Nutze eine konfigurierte Social- oder OIDC-Anmeldemethode auf der Anmeldeseite.", 179 - "signingIn": "Anmeldung läuft...", 180 - "continueAsGuest": "Als Gast fortfahren", 181 - "toggleMessage": "Du hast bereits ein Konto?", 182 - "toggleLink": "Anmelden" 183 - }, 184 - "verifyOtp": { 185 - "pageTitle": "Code verifizieren", 186 - "title": "Bestätigungscode eingeben", 187 - "subtitle": "Nutze den 6-stelligen Code, der an deine E-Mail gesendet wurde, um fortzufahren", 188 - "codeSentTo": "Code gesendet an {{email}}", 189 - "verificationCodeLabel": "Bestätigungscode", 190 - "verifying": "Wird verifiziert...", 191 - "verifyAndSignIn": "Verifizieren & anmelden", 192 - "changeEmail": "E-Mail ändern", 193 - "resend": "Erneut senden", 194 - "validation": { 195 - "codeLength": "Der Code muss 6 Ziffern haben" 196 - }, 197 - "toast": { 198 - "invalidCode": "Ungültiger Bestätigungscode", 199 - "signedInSuccess": "Erfolgreich angemeldet!", 200 - "verifyFailed": "Code konnte nicht verifiziert werden", 201 - "resendFailed": "Code konnte nicht erneut gesendet werden", 202 - "resendSuccess": "Neuer Bestätigungscode gesendet!" 203 - } 204 - }, 205 - "otpSignIn": { 206 - "sendFailed": "Bestätigungscode konnte nicht gesendet werden", 207 - "codeSent": "Bestätigungscode gesendet! Prüfe deine E-Mails.", 208 - "sending": "Wird gesendet...", 209 - "sendVerificationCode": "Bestätigungscode senden" 210 - }, 211 - "signInForm": { 212 - "failedSignIn": "Anmeldung fehlgeschlagen", 213 - "signedInSuccess": "Erfolgreich angemeldet", 214 - "signingIn": "Wird angemeldet...", 215 - "signIn": "Anmelden" 216 - }, 217 - "signUpForm": { 218 - "fullName": "Vollständiger Name", 219 - "namePlaceholder": "Max Mustermann", 220 - "failedSignUp": "Registrierung fehlgeschlagen", 221 - "accountCreated": "Konto erfolgreich erstellt", 222 - "passwordTooShort": "Das Passwort ist zu kurz", 223 - "creatingAccount": "Konto wird erstellt...", 224 - "createAccount": "Konto erstellen" 225 - }, 226 - "invitation": { 227 - "pageTitleAccept": "Einladung annehmen", 228 - "pageTitleError": "Einladungsfehler", 229 - "pageTitleInvalid": "Ungültige Einladung", 230 - "loadingTitle": "Einladung wird geladen...", 231 - "errorTitle": "Einladungsfehler", 232 - "invalidTitle": "Ungültige Einladung", 233 - "invitationExpired": "Einladung abgelaufen", 234 - "errorLoadDescription": "Die Einladungsdetails konnten nicht geladen werden. Die Einladung ist möglicherweise ungültig oder abgelaufen.", 235 - "goToSignIn": "Zur Anmeldung", 236 - "workspaceLabel": "Workspace: {{workspaceName}}", 237 - "joinWorkspace": "{{workspaceName}} beitreten", 238 - "inviteBodySignedIn": "<inviter>{{inviterName}}</inviter> hat dich eingeladen, ihrem Workspace beizutreten.", 239 - "inviteBodySignedOut": "<inviter>{{inviterName}}</inviter> hat dich eingeladen, ihrem Workspace auf Kaneo beizutreten.", 240 - "signInToAccept": "Melde dich an, um die Einladung anzunehmen.", 241 - "accepting": "Wird angenommen...", 242 - "acceptInvitation": "Einladung annehmen", 243 - "goToDashboard": "Zum Dashboard", 244 - "signedInAs": "Angemeldet als <email>{{email}}</email>", 245 - "youveBeenInvited": "Du wurdest eingeladen!", 246 - "invitationFor": "Einladung für: <email>{{email}}</email>", 247 - "signIn": "Anmelden", 248 - "toast": { 249 - "acceptFailed": "Einladung konnte nicht angenommen werden", 250 - "acceptSuccess": "Einladung angenommen! Willkommen im Team." 251 - } 252 - }, 253 - "onboarding": { 254 - "pageTitle": "Willkommen bei Kaneo", 255 - "workspacePageTitle": "Workspace erstellen", 256 - "createWorkspaceTitle": "Workspace erstellen", 257 - "createWorkspaceSubtitle": "Richte deinen Workspace ein, um mit der Verwaltung von Projekten zu beginnen", 258 - "workspaceName": "Workspace-Name", 259 - "workspaceNamePlaceholder": "z. B. Acme Inc, Mein Team", 260 - "descriptionOptional": "Beschreibung (optional)", 261 - "descriptionPlaceholder": "Woran arbeitet dein Team?", 262 - "creating": "Wird erstellt...", 263 - "createWorkspace": "Workspace erstellen", 264 - "workspaceCreatedTitle": "Workspace erstellt", 265 - "redirectingToWorkspace": "Du wirst zu <name>{{name}}</name> weitergeleitet...", 266 - "toast": { 267 - "workspaceCreated": "Workspace erfolgreich erstellt", 268 - "createFailed": "Workspace konnte nicht erstellt werden" 269 - }, 270 - "validation": { 271 - "workspaceNameRequired": "Workspace-Name ist erforderlich" 272 - } 273 - }, 274 - "profileSetup": { 275 - "pageTitle": "Profil vervollständigen", 276 - "completeTitle": "Vervollständige dein Profil", 277 - "subtitle": "Bitte gib deinen Namen ein, um loszulegen", 278 - "yourName": "Dein Name", 279 - "namePlaceholder": "z. B. Max Mustermann", 280 - "saving": "Wird gespeichert...", 281 - "continue": "Weiter", 282 - "welcome": "Willkommen, {{name}}!", 283 - "redirecting": "Du wirst zu deinem Dashboard weitergeleitet...", 284 - "toast": { 285 - "updateSuccess": "Profil erfolgreich aktualisiert", 286 - "updateFailed": "Profil konnte nicht aktualisiert werden" 287 - }, 288 - "validation": { 289 - "nameRequired": "Name ist erforderlich", 290 - "nameShort": "Der Name muss mindestens 2 Zeichen lang sein" 291 - } 292 - } 293 - }, 294 - "settings": { 295 - "account": "Konto", 296 - "developer": "Entwicklung", 297 - "information": "Informationen", 298 - "preferences": "Einstellungen", 299 - "apiKeys": "API-Schlüssel", 300 - "informationPage": { 301 - "pageTitle": "Persönliche Informationen", 302 - "title": "Persönliche Informationen", 303 - "subtitle": "Verwalte deine persönlichen Daten und Kontoinformationen.", 304 - "sectionTitle": "Kontoinformationen", 305 - "sectionSubtitle": "Verwalte dein Profil und deine Kontodetails.", 306 - "profilePicture": "Profilbild", 307 - "fullName": "Vollständiger Name", 308 - "fullNamePlaceholder": "Gib deinen Namen ein", 309 - "email": "E-Mail", 310 - "emailPlaceholder": "Gib deine E-Mail ein", 311 - "updateSuccess": "Profil erfolgreich aktualisiert", 312 - "updateError": "Profil konnte nicht aktualisiert werden", 313 - "validation": { 314 - "nameRequired": "Name ist erforderlich", 315 - "nameShort": "Der Name muss mindestens 2 Zeichen lang sein", 316 - "invalidEmail": "Ungültige E-Mail-Adresse" 317 - } 318 - }, 319 - "preferencesPage": { 320 - "title": "Einstellungen", 321 - "subtitle": "Passe dein Kaneo-Erlebnis an.", 322 - "appearanceTitle": "Darstellung", 323 - "appearanceSubtitle": "Visuelle Einstellungen und Layout-Präferenzen.", 324 - "theme": "Design", 325 - "themeDescription": "Wähle dein bevorzugtes Farbschema", 326 - "selectTheme": "Design auswählen", 327 - "themeLight": "Hell", 328 - "themeDark": "Dunkel", 329 - "themeSystem": "System", 330 - "language": "Sprache", 331 - "languageDescription": "Wähle deine bevorzugte Oberflächensprache", 332 - "selectLanguage": "Sprache auswählen", 333 - "defaultView": "Standardansicht", 334 - "defaultViewDescription": "Wähle deine bevorzugte Aufgabenansicht", 335 - "selectViewMode": "Ansicht auswählen", 336 - "board": "Board", 337 - "list": "Liste", 338 - "compactMode": "Kompakter Modus", 339 - "compactModeDescription": "Verwende geringere Abstände für mehr Inhalt", 340 - "sidebarDefault": "Standard-Sidebar", 341 - "sidebarDefaultDescription": "Sidebar beim Start erweitert geöffnet halten", 342 - "displayOptions": "Anzeigeoptionen", 343 - "displayOptionsDescription": "Wähle, welche Informationen in Aufgabenansichten sichtbar sind", 344 - "taskNumbers": "Aufgabennummern", 345 - "taskNumbersDescription": "Aufgaben-IDs und -Nummern anzeigen", 346 - "assignees": "Zugewiesene", 347 - "assigneesDescription": "Anzeigen, wem Aufgaben zugewiesen sind", 348 - "dueDates": "Fälligkeitsdaten", 349 - "dueDatesDescription": "Aufgabenfristen anzeigen", 350 - "labels": "Labels", 351 - "labelsDescription": "Aufgabenlabels und Tags anzeigen", 352 - "priority": "Priorität", 353 - "priorityDescription": "Prioritätsindikatoren anzeigen" 354 - }, 355 - "developerPage": { 356 - "pageTitle": "Entwicklereinstellungen", 357 - "title": "Entwicklereinstellungen", 358 - "subtitle": "Verwalte deine API-Schlüssel und Entwicklerressourcen.", 359 - "apiKeysCardTitle": "API-Schlüssel", 360 - "apiKeysCardDescription": "Erstelle und verwalte API-Schlüssel für den programmgesteuerten Zugriff auf Kaneo.", 361 - "createApiKey": "API-Schlüssel erstellen", 362 - "unnamedKey": "Unbenannter Schlüssel" 363 - }, 364 - "apiKey": { 365 - "createdModal": { 366 - "title": "API-Schlüssel erstellt", 367 - "description": "Dein API-Schlüssel \"{{keyName}}\" wurde erfolgreich erstellt.", 368 - "yourApiKey": "Dein API-Schlüssel", 369 - "copy": "Kopieren", 370 - "copied": "Kopiert", 371 - "toastCopied": "API-Schlüssel in die Zwischenablage kopiert", 372 - "alertTitle": "Erfolg! Dein API-Schlüssel wurde erstellt", 373 - "alertDescription": "Kopiere diesen Schlüssel jetzt. Du wirst ihn später nicht mehr sehen können.", 374 - "done": "Fertig", 375 - "copyToContinue": "Schlüssel kopieren, um fortzufahren" 376 - }, 377 - "table": { 378 - "loading": "API-Schlüssel werden geladen...", 379 - "empty": "Noch keine API-Schlüssel. Erstelle einen, um loszulegen.", 380 - "columnName": "Name", 381 - "columnKey": "Schlüssel", 382 - "columnCreated": "Erstellt", 383 - "columnExpires": "Läuft ab", 384 - "columnActions": "Aktionen", 385 - "unnamedKey": "Unbenannter Schlüssel", 386 - "expiredBadge": "Abgelaufen {{label}}", 387 - "deleteConfirmTitle": "API-Schlüssel löschen?", 388 - "deleteConfirmDescription": "Diese Aktion kann nicht rückgängig gemacht werden. {{name}} wird dauerhaft gelöscht.", 389 - "deleteFallbackName": "diesen API-Schlüssel", 390 - "delete": "Löschen", 391 - "deleting": "Wird gelöscht...", 392 - "deleteAria": "{{name}} löschen", 393 - "deleteAriaFallback": "API-Schlüssel", 394 - "toastDeleted": "API-Schlüssel erfolgreich gelöscht", 395 - "toastDeleteError": "API-Schlüssel konnte nicht gelöscht werden" 396 - }, 397 - "createDialog": { 398 - "title": "API-Schlüssel erstellen", 399 - "description": "Erstelle einen neuen API-Schlüssel, um programmgesteuert auf die Kaneo-API zuzugreifen.", 400 - "nameLabel": "Name", 401 - "namePlaceholder": "Mein API-Schlüssel", 402 - "nameDescription": "Ein beschreibender Name für diesen API-Schlüssel", 403 - "expirationLabel": "Ablauf", 404 - "expirationPlaceholder": "Ablauf auswählen", 405 - "expirationDescription": "Wähle, wie lange dieser API-Schlüssel gültig bleiben soll. Nie erstellt einen Schlüssel ohne automatisches Ablaufdatum.", 406 - "expiration1d": "1 Tag", 407 - "expiration7d": "7 Tage", 408 - "expiration30d": "30 Tage", 409 - "expiration90d": "90 Tage", 410 - "expirationNever": "Nie", 411 - "create": "Erstellen", 412 - "creating": "Wird erstellt...", 413 - "failedCreate": "API-Schlüssel konnte nicht erstellt werden", 414 - "validation": { 415 - "nameRequired": "Name ist erforderlich", 416 - "nameShort": "Der Name muss mindestens 3 Zeichen lang sein", 417 - "expirationRequired": "Ablauf ist erforderlich" 418 - } 419 - } 420 - }, 421 - "workspaceGeneral": { 422 - "pageTitle": "Allgemeine Einstellungen", 423 - "title": "Allgemeine Einstellungen", 424 - "subtitle": "Verwalte den Namen und die Beschreibung deines Workspaces.", 425 - "workspaceInfoTitle": "Workspace-Informationen", 426 - "workspaceInfoSubtitle": "Konfiguriere Details und Einstellungen deines Workspaces.", 427 - "nameLabel": "Workspace-Name", 428 - "nameHint": "Der Name deines Workspaces", 429 - "namePlaceholder": "Workspace-Name eingeben", 430 - "descriptionLabel": "Beschreibung", 431 - "descriptionHint": "Eine kurze Beschreibung deines Workspaces", 432 - "descriptionPlaceholder": "Workspace-Beschreibung eingeben", 433 - "dangerZone": "Gefahrenbereich", 434 - "dangerZoneSubtitle": "Unumkehrbare und destruktive Aktionen.", 435 - "deleteWorkspace": "Workspace löschen", 436 - "deleteWorkspaceDescription": "Plane die dauerhafte Löschung des Workspaces", 437 - "deleteModalTitle": "Workspace löschen?", 438 - "deleteModalDescription": "Dadurch wird der Workspace \"{{name}}\" und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.", 439 - "deleteModalConfirm": "Workspace löschen", 440 - "toastUpdated": "Workspace erfolgreich aktualisiert", 441 - "toastUpdateError": "Workspace konnte nicht aktualisiert werden", 442 - "toastDeleted": "Workspace erfolgreich gelöscht", 443 - "toastDeleteError": "Workspace konnte nicht gelöscht werden", 444 - "validation": { 445 - "nameRequired": "Workspace-Name ist erforderlich", 446 - "nameShort": "Der Workspace-Name muss mindestens 2 Zeichen lang sein" 447 - } 448 - }, 449 - "projectGeneral": { 450 - "pageTitle": "Projekteinstellungen", 451 - "title": "Allgemeine Einstellungen", 452 - "subtitle": "Verwalte deinen Projektnamen, Schlüssel, dein Symbol und die Beschreibung.", 453 - "projectInfoTitle": "Projektinformationen", 454 - "projectInfoSubtitle": "Konfiguriere deine Projektdetails und Einstellungen.", 455 - "iconLabel": "Symbol", 456 - "iconHint": "Wird in der Sidebar und auf Projektflächen angezeigt.", 457 - "pickIconTitle": "Symbol auswählen", 458 - "searchIconsPlaceholder": "Symbole suchen...", 459 - "projectNameLabel": "Projektname", 460 - "projectNameHint": "Der Name deines Projekts", 461 - "projectNamePlaceholder": "Projektnamen eingeben", 462 - "keyLabel": "Schlüssel", 463 - "keyHint": "Wird für Ticket-IDs verwendet (z. B. {{slug}}-123)", 464 - "keyPlaceholder": "PRO", 465 - "descriptionLabel": "Beschreibung", 466 - "descriptionHint": "Eine kurze Beschreibung deines Projekts", 467 - "descriptionPlaceholder": "Projektbeschreibung eingeben", 468 - "dangerZone": "Gefahrenbereich", 469 - "dangerZoneSubtitle": "Unumkehrbare und destruktive Aktionen.", 470 - "deleteProject": "Projekt löschen", 471 - "deleteProjectDescription": "Plane die dauerhafte Löschung des Projekts", 472 - "deleteModalTitle": "Projekt löschen?", 473 - "deleteModalDescription": "Dadurch wird das Projekt \"{{name}}\" und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.", 474 - "deleteModalConfirm": "Projekt löschen", 475 - "toastUpdated": "Projekt erfolgreich aktualisiert", 476 - "toastUpdateError": "Projekt konnte nicht aktualisiert werden", 477 - "toastDeleted": "Projekt erfolgreich gelöscht", 478 - "toastDeleteError": "Projekt konnte nicht gelöscht werden", 479 - "validation": { 480 - "nameRequired": "Projektname ist erforderlich", 481 - "nameShort": "Der Projektname muss mindestens 2 Zeichen lang sein", 482 - "keyRequired": "Schlüssel ist erforderlich", 483 - "keyShort": "Der Schlüssel muss mindestens 2 Zeichen lang sein", 484 - "keyMax": "Der Schlüssel darf höchstens 8 Zeichen lang sein", 485 - "iconRequired": "Symbol ist erforderlich" 486 - } 487 - }, 488 - "projectIntegrations": { 489 - "pageTitle": "Projektintegrationen", 490 - "title": "Projektintegrationen", 491 - "subtitle": "Verbinde dein Projekt mit externen Tools und Diensten, um deinen Workflow zu optimieren.", 492 - "githubSectionTitle": "GitHub-Integration", 493 - "githubSectionSubtitle": "Synchronisiere Aufgaben mit GitHub-Issues und aktiviere die bidirektionale Synchronisierung." 494 - }, 495 - "projectVisibility": { 496 - "pageTitle": "Projektsichtbarkeit", 497 - "title": "Sichtbarkeit", 498 - "subtitle": "Steuere, wer dein Projekt sehen und darauf zugreifen kann.", 499 - "sectionTitle": "Sichtbarkeit", 500 - "sectionSubtitle": "Aktiviere öffentlichen Zugriff und teile die öffentliche URL.", 501 - "publicAccess": "Öffentlicher Zugriff", 502 - "publicAccessHint": "Erlaube allen mit der URL, dieses Projekt anzusehen", 503 - "publicUrl": "Öffentliche URL", 504 - "publicUrlHint": "Teile diesen Link, wenn das Projekt öffentlich ist", 505 - "copy": "Kopieren", 506 - "copiedToast": "Kopiert", 507 - "toastUpdated": "Sichtbarkeit aktualisiert", 508 - "toastUpdateError": "Sichtbarkeit konnte nicht aktualisiert werden" 509 - }, 510 - "projectWorkflow": { 511 - "pageTitle": "Workflow-Einstellungen", 512 - "title": "Workflow", 513 - "subtitle": "Konfiguriere Board-Spalten und Automatisierungsregeln für dieses Projekt.", 514 - "columnsTitle": "Spalten", 515 - "columnsDescription": "Verwalte die Spalten, die auf deinem Board erscheinen. Ziehe sie, um sie neu anzuordnen. Aktiviere „Fertige Spalte“ für Phasen, die abgeschlossene Arbeit darstellen.", 516 - "automationTitle": "Automatisierungsregeln", 517 - "automationDescription": "Ordne Integrationsereignisse Spalten zu. Wenn ein Ereignis eintritt, wird die verknüpfte Aufgabe in die angegebene Spalte verschoben." 518 - }, 519 - "projectSwitcher": { 520 - "selectProject": "Projekt auswählen", 521 - "noProjects": "Keine Projekte" 522 - }, 523 - "columnEditor": { 524 - "toastCreated": "Spalte erstellt", 525 - "toastCreateError": "Spalte konnte nicht erstellt werden", 526 - "toastRenamed": "Spalte umbenannt", 527 - "toastRenameError": "Spalte konnte nicht aktualisiert werden", 528 - "toastFinalOn": "Spalte als final markiert", 529 - "toastFinalOff": "Markierung der finalen Spalte entfernt", 530 - "toastUpdateError": "Spalte konnte nicht aktualisiert werden", 531 - "toastDeleted": "Spalte gelöscht", 532 - "toastDeleteError": "Spalte konnte nicht gelöscht werden", 533 - "loading": "Spalten werden geladen...", 534 - "doneColumnTooltip": "Als fertige Spalte behandeln", 535 - "doneColumn": "Fertige Spalte", 536 - "markDoneAria": "{{name}} als fertige Spalte markieren", 537 - "on": "Ein", 538 - "off": "Aus", 539 - "newColumnPlaceholder": "Neuer Spaltenname...", 540 - "add": "Hinzufügen" 541 - }, 542 - "githubIntegration": { 543 - "validation": { 544 - "ownerRequired": "Repository-Eigentümer ist erforderlich", 545 - "ownerInvalid": "Ungültiges Format für den Repository-Eigentümer", 546 - "nameRequired": "Repository-Name ist erforderlich", 547 - "nameInvalid": "Ungültiges Format für den Repository-Namen" 548 - }, 549 - "toast": { 550 - "installedOk": "GitHub-App ist korrekt installiert!", 551 - "installedMissingPerms": "GitHub-App ist installiert, aber erforderliche Berechtigungen fehlen", 552 - "needsInstallOnRepo": "GitHub-App muss für dieses Repository installiert werden", 553 - "repoNotFound": "Repository nicht gefunden oder nicht zugänglich", 554 - "verifyError": "GitHub-Installation konnte nicht überprüft werden", 555 - "installAppFirst": "Bitte installiere zuerst die GitHub-App für dieses Repository", 556 - "missingPermsDetail": "Der GitHub-App fehlen erforderliche Berechtigungen: {{list}}. Bitte aktualisiere die App-Berechtigungen.", 557 - "updated": "GitHub-Integration erfolgreich aktualisiert", 558 - "updateError": "GitHub-Integration konnte nicht aktualisiert werden", 559 - "removed": "GitHub-Integration erfolgreich entfernt", 560 - "removeError": "GitHub-Integration konnte nicht entfernt werden", 561 - "issuesImported": "Issues erfolgreich importiert", 562 - "importError": "Issues konnten nicht importiert werden", 563 - "commentOnEnabled": "Kaneo kommentiert bei neuen Issues mit einem Aufgabenlink", 564 - "commentOnDisabled": "Aufgabenlink-Kommentare bei neuen Issues sind deaktiviert", 565 - "settingsUpdateError": "GitHub-Integration konnte nicht aktualisiert werden" 566 - }, 567 - "connectionStatus": "Verbindungsstatus", 568 - "connectedActive": "Repository verbunden und aktiv", 569 - "notConnectedHint": "Kein Repository verbunden", 570 - "badgeConnected": "Verbunden", 571 - "badgeNotConnected": "Nicht verbunden", 572 - "repository": "Repository", 573 - "repositoryHint": "Verbundenes GitHub-Repository", 574 - "commentTaskLinkTitle": "Kaneo-Link bei neuen Issues kommentieren", 575 - "commentTaskLinkHint": "Wenn aktiviert, veröffentlicht Kaneo bei jedem neuen GitHub-Issue einen Kommentar mit einem Link zur Aufgabe.", 576 - "appStatusTitle": "GitHub-App-Status", 577 - "appStatusHint": "Installations- und Berechtigungsstatus", 578 - "statusProperlyConfigured": "Korrekt konfiguriert", 579 - "statusMissingPermissions": "Fehlende Berechtigungen", 580 - "statusNotInstalled": "Nicht installiert", 581 - "ownerLabel": "Repository-Eigentümer", 582 - "ownerHint": "GitHub-Benutzername oder Organisation", 583 - "ownerPlaceholder": "z. B. octocat", 584 - "repoNameLabel": "Repository-Name", 585 - "repoNameHint": "Der Name des Repositorys", 586 - "repoNamePlaceholder": "z. B. mein-projekt", 587 - "actionsTitle": "Aktionen", 588 - "actionsHint": "Verwalte deine Repository-Verbindung", 589 - "browse": "Durchsuchen", 590 - "verify": "Prüfen", 591 - "update": "Aktualisieren", 592 - "connect": "Verbinden", 593 - "disconnect": "Trennen", 594 - "missingPermissionsLabel": "Fehlende Berechtigungen:", 595 - "updatePermissions": "Berechtigungen aktualisieren", 596 - "installGithubApp": "GitHub-App installieren", 597 - "importSectionTitle": "GitHub-Issues importieren", 598 - "importSectionHint": "Importiere vorhandene Issues aus deinem GitHub-Repository als Aufgaben", 599 - "importing": "Wird importiert...", 600 - "importIssues": "Issues importieren", 601 - "importDisabledHint": "Vervollständige die Repository-Konfiguration oben, um den Import zu aktivieren" 602 - }, 603 - "repositoryBrowser": { 604 - "title": "Repository auswählen", 605 - "description": "Wähle ein Repository aus, in dem deine GitHub-App installiert ist, um die Issue-Synchronisierung zu aktivieren.", 606 - "searchPlaceholder": "Repositories suchen...", 607 - "loadError": "Repositories konnten nicht geladen werden", 608 - "tryAgain": "Erneut versuchen", 609 - "emptyTitle": "Keine Repositories gefunden", 610 - "emptyHint": "Installiere die GitHub-App in deinen Repositories, damit sie hier angezeigt werden.", 611 - "installGithubApp": "GitHub-App installieren", 612 - "noSearchMatchTitle": "Keine Repositories entsprechen deiner Suche", 613 - "noSearchMatchHint": "Passe deine Suchbegriffe an oder lösche die Suche, um alle Repositories zu sehen.", 614 - "footerSummary": "{{repoCount}} Repositories über {{installationCount}} Installationen", 615 - "manageInstallations": "Installationen verwalten", 616 - "updatedPrefix": "Aktualisiert", 617 - "relativeJustNow": "gerade eben", 618 - "relativeMinutesAgo": "vor {{count}} Min.", 619 - "relativeHoursAgo": "vor {{count}} Std.", 620 - "relativeDaysAgo": "vor {{count}} Tg." 621 - }, 622 - "tasksImportExport": { 623 - "exportTasks": "Aufgaben exportieren", 624 - "importTasks": "Aufgaben importieren", 625 - "dialogTitle": "Aufgaben importieren", 626 - "dialogDescription": "Lade eine JSON-Datei mit Aufgaben hoch, die in dieses Projekt importiert werden sollen.", 627 - "expectedFormat": "Erwartetes Format:", 628 - "dropHint": "Ziehe deine JSON-Datei hierher", 629 - "selectFile": "Datei auswählen", 630 - "exporting": "Aufgaben werden exportiert...", 631 - "exportSuccess": "Aufgaben erfolgreich exportiert", 632 - "exportError": "Aufgaben konnten nicht exportiert werden", 633 - "importing": "Aufgaben werden importiert...", 634 - "importSuccess": "{{count}} Aufgaben erfolgreich importiert", 635 - "importPartialError": "{{count}} Aufgaben konnten nicht importiert werden", 636 - "importError": "Aufgaben konnten nicht importiert werden", 637 - "invalidFormat": "Ungültiges Importdateiformat", 638 - "noFileDropped": "Keine Datei abgelegt", 639 - "notJsonFile": "Bitte lade eine JSON-Datei hoch" 640 - }, 641 - "workflowEditor": { 642 - "loading": "Lädt...", 643 - "createColumnsFirst": "Erstelle zuerst Spalten, um Automatisierungsregeln zu konfigurieren.", 644 - "githubHeading": "GitHub", 645 - "githubHint": "Wenn ein GitHub-Ereignis eintritt, verschiebe die verknüpfte Aufgabe in eine Spalte.", 646 - "selectColumnPlaceholder": "Spalte auswählen...", 647 - "toastUpdated": "Workflow-Regel aktualisiert", 648 - "toastError": "Workflow-Regel konnte nicht aktualisiert werden", 649 - "events": { 650 - "branch_push": "Branch-Push", 651 - "pr_opened": "PR geöffnet", 652 - "pr_merged": "PR zusammengeführt", 653 - "issue_opened": "Issue geöffnet", 654 - "issue_closed": "Issue geschlossen" 655 - } 656 - }, 657 - "externalLinks": { 658 - "resources": "Ressourcen", 659 - "issue": "Issue", 660 - "branch": "Branch", 661 - "merged": "Zusammengeführt", 662 - "draft": "Entwurf", 663 - "open": "Offen" 664 - } 665 - }, 666 - "navigation": { 667 - "commandPalette": { 668 - "suggestions": "Vorschläge", 669 - "commands": "Befehle", 670 - "projects": "Projekte", 671 - "search": "Suche", 672 - "members": "Mitglieder", 673 - "createTask": "Aufgabe erstellen", 674 - "createProject": "Projekt erstellen", 675 - "createWorkspace": "Workspace erstellen", 676 - "lightTheme": "Helles Design", 677 - "darkTheme": "Dunkles Design", 678 - "systemTheme": "Systemdesign", 679 - "keyboardShortcuts": "Tastenkürzel", 680 - "inputPlaceholder": "Nach Apps und Befehlen suchen...", 681 - "empty": "Keine Ergebnisse gefunden.", 682 - "footer": { 683 - "navigate": "Navigieren", 684 - "open": "Öffnen", 685 - "close": "Schließen" 686 - } 687 - }, 688 - "notifications": "Benachrichtigungen", 689 - "sidebar": { 690 - "overview": "Übersicht", 691 - "projects": "Projekte", 692 - "members": "Mitglieder", 693 - "invitations": "Einladungen", 694 - "more": "Mehr" 695 - }, 696 - "projectList": { 697 - "viewProject": "Projekt ansehen", 698 - "shareProject": "Projekt teilen", 699 - "linkCopied": "Projektlink in die Zwischenablage kopiert", 700 - "addProject": "Projekt hinzufügen", 701 - "deleteConfirmTitle": "Projekt löschen?", 702 - "deleteConfirmDescription": "Dadurch wird das Projekt und alle zugehörigen Daten dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 703 - "deletedToast": "Projekt gelöscht", 704 - "deleteProject": "Projekt löschen" 705 - }, 706 - "search": { 707 - "inputPlaceholder": "Aufgaben, Projekte, Kommentare suchen...", 708 - "minCharsHint": "Gib mindestens 3 Zeichen ein, um zu suchen", 709 - "groups": { 710 - "task": "Aufgaben", 711 - "project": "Projekte", 712 - "workspace": "Workspaces", 713 - "comment": "Kommentare", 714 - "activity": "Aktivitäten", 715 - "fallback": "Ergebnisse" 716 - } 717 - }, 718 - "settingsLayout": { 719 - "toggleSidebar": "Sidebar umschalten", 720 - "back": "Zurück" 721 - }, 722 - "userMenu": { 723 - "signedOutSuccess": "Erfolgreich abgemeldet", 724 - "signOutFailed": "Abmeldung fehlgeschlagen", 725 - "unnamedUser": "Benutzer", 726 - "settings": "Einstellungen", 727 - "signingOut": "Wird abgemeldet...", 728 - "logOut": "Abmelden" 729 - }, 730 - "workspaceSwitcher": { 731 - "workspaces": "Workspaces", 732 - "switching": "Wechseln...", 733 - "addWorkspace": "Workspace hinzufügen", 734 - "selectWorkspace": "Workspace auswählen" 735 - }, 736 - "page": { 737 - "projectsTitle": "Projekte", 738 - "settingsTitle": "Einstellungen", 739 - "backToWorkspace": "Zurück zum Workspace", 740 - "settingsWorkspaceTab": "Workspace" 741 - }, 742 - "projectSettings": { 743 - "projectLabel": "Projekt" 744 - }, 745 - "keyboardShortcuts": { 746 - "title": "Tastenkürzel", 747 - "subtitle": "Beschleunige deinen Workflow mit Tastenkürzeln", 748 - "searchPlaceholder": "Tastenkürzel suchen...", 749 - "footer": "Drücke <kbd>Escape</kbd>, um zu schließen", 750 - "categories": { 751 - "general": "Allgemein", 752 - "create": "Erstellen", 753 - "views": "Ansichten", 754 - "navigation": "Navigation", 755 - "quickSelect": "Schnellauswahl (in Popovers)" 756 - }, 757 - "items": { 758 - "openCommandPalette": "Befehlspalette öffnen", 759 - "globalSearch": "Globale Suche", 760 - "toggleSidebar": "Sidebar umschalten", 761 - "showShortcuts": "Tastenkürzel anzeigen", 762 - "closeModal": "Modal/Popover schließen", 763 - "createTask": "Aufgabe erstellen", 764 - "createProject": "Projekt erstellen", 765 - "createWorkspace": "Workspace erstellen", 766 - "boardView": "Zur Board-Ansicht wechseln", 767 - "listView": "Zur Listenansicht wechseln", 768 - "backlogView": "Zur Backlog-Ansicht wechseln", 769 - "nextTask": "Nächste Aufgabe", 770 - "prevTask": "Vorherige Aufgabe", 771 - "openTask": "Ausgewählte Aufgabe öffnen", 772 - "quickSelectNumber": "Option per Nummer auswählen" 773 - } 774 - } 775 - }, 776 - "notifications": { 777 - "title": "Benachrichtigungen", 778 - "newCount_one": "{{count}} neu", 779 - "newCount_other": "{{count}} neu", 780 - "emptyTitle": "Noch keine Benachrichtigungen", 781 - "emptySubtitle": "Hier erscheinen Updates und Aktivitäten.", 782 - "clearAll": "Alle Benachrichtigungen löschen", 783 - "clearDialogTitle": "Alle Benachrichtigungen löschen?", 784 - "clearDialogDescription": "Dadurch werden alle Benachrichtigungen dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 785 - "shortcuts": { 786 - "open": "Benachrichtigungen öffnen" 787 - }, 788 - "events": { 789 - "task_created": { 790 - "title": "Neue Aufgabe erstellt", 791 - "content": "Die Aufgabe \"{{taskTitle}}\" wurde erstellt" 792 - }, 793 - "workspace_created": { 794 - "title": "Workspace erstellt", 795 - "content": "Dein Workspace \"{{workspaceName}}\" wurde erfolgreich erstellt" 796 - }, 797 - "task_status_changed": { 798 - "title": "Aufgabenstatus geändert", 799 - "content": "Der Status der Aufgabe \"{{taskTitle}}\" wurde von \"{{oldStatus}}\" zu \"{{newStatus}}\" geändert" 800 - }, 801 - "task_assignee_changed": { 802 - "title": "Aufgabe wurde dir zugewiesen", 803 - "content": "Dir wurde die Aufgabe \"{{taskTitle}}\" zugewiesen" 804 - }, 805 - "time_entry_created": { 806 - "title": "Zeiterfassung gestartet", 807 - "contentWithTask": "Die Zeiterfassung für die Aufgabe \"{{taskTitle}}\" wurde gestartet", 808 - "contentWithoutTask": "Die Zeiterfassung für eine Aufgabe wurde gestartet" 809 - } 810 - } 811 - }, 812 - "activity": { 813 - "assignedToSelf": "hat sich die Aufgabe selbst zugewiesen", 814 - "unassigned": "hat die Zuweisung der Aufgabe entfernt", 815 - "assignedTo": "hat die Aufgabe {{name}} zugewiesen", 816 - "changedStatus": "hat den Status von {{from}} zu {{to}} geändert", 817 - "changedPriority": "hat die Priorität von {{from}} zu {{to}} geändert", 818 - "clearedDueDate": "hat das Fälligkeitsdatum entfernt", 819 - "setDueDate": "hat das Fälligkeitsdatum auf {{date}} gesetzt", 820 - "changedDueDate": "hat das Fälligkeitsdatum von {{from}} zu {{to}} geändert", 821 - "changedTitle": "hat den Titel von \"{{from}}\" zu \"{{to}}\" geändert", 822 - "githubUser": "GitHub-Benutzer", 823 - "comment": { 824 - "github": "GitHub", 825 - "viewGithubProfile": "GitHub-Profil ansehen", 826 - "commentedOnGithub": "hat auf GitHub kommentiert", 827 - "cannotBeEmpty": "Kommentar darf nicht leer sein", 828 - "mustBeLoggedInToEdit": "Du musst angemeldet sein, um Kommentare zu bearbeiten", 829 - "updated": "Kommentar aktualisiert", 830 - "failedToUpdate": "Kommentar konnte nicht aktualisiert werden", 831 - "edit": "Kommentar bearbeiten", 832 - "editPlaceholder": "Kommentar bearbeiten...", 833 - "save": "Speichern", 834 - "added": "Kommentar hinzugefügt", 835 - "failedToAdd": "Kommentar konnte nicht hinzugefügt werden", 836 - "leavePlaceholder": "Hinterlasse einen Kommentar...", 837 - "attachFile": "Datei anhängen", 838 - "submitShortcut": "Kommentar absenden", 839 - "editor": { 840 - "uploadsOnlyOnSavedTasks": "Datei-Uploads sind nur bei gespeicherten Aufgaben verfügbar.", 841 - "uploadingFile": "Datei wird hochgeladen...", 842 - "imageUploaded": "Bild hochgeladen", 843 - "fileAttached": "Datei angehängt", 844 - "failedToUploadFile": "Datei konnte nicht hochgeladen werden", 845 - "enterUrl": "URL eingeben", 846 - "plaintext": "Klartext", 847 - "autoDetect": "Automatisch erkennen", 848 - "slashGroupText": "Text", 849 - "slashGroupLists": "Listen", 850 - "slashGroupInsert": "Einfügen", 851 - "slashParagraph": "Text", 852 - "slashHeading": "Überschrift", 853 - "slashBulletList": "Aufzählungsliste", 854 - "slashTaskList": "To-do-Liste", 855 - "slashOrderedList": "Nummerierte Liste", 856 - "slashQuote": "Zitat", 857 - "slashCodeBlock": "Codeblock", 858 - "slashTable": "Tabelle", 859 - "slashFile": "Datei", 860 - "searchParagraph": "text absatz normal", 861 - "searchHeading": "überschrift titel h2", 862 - "searchBulletList": "liste aufzählung ungeordnet", 863 - "searchTaskList": "todo to-do checkliste checkbox aufgabenliste", 864 - "searchOrderedList": "liste geordnet nummeriert", 865 - "searchQuote": "zitat blockquote", 866 - "searchCodeBlock": "code snippet", 867 - "searchTable": "tabelle raster", 868 - "searchFile": "datei anhang bild foto upload", 869 - "embedErrorInvalidUrl": "Gib eine gültige URL ein", 870 - "embedErrorYoutubeOnly": "Nur YouTube-Links können eingebettet werden.", 871 - "embedVideo": "Video einbetten", 872 - "keepAsLink": "Als Link behalten", 873 - "hintTab": "Tab", 874 - "hintEsc": "Esc", 875 - "pasteUrl": "URL einfügen", 876 - "asLink": "Als Link", 877 - "embed": "Einbetten", 878 - "noCommands": "Keine Befehle", 879 - "ariaCommentContent": "Kommentarinhalt", 880 - "ariaCommentEditor": "Kommentar-Editor", 881 - "ariaCopyCode": "Code kopieren", 882 - "ariaCopied": "Kopiert", 883 - "copy": "Kopieren", 884 - "copied": "Kopiert", 885 - "dropImageToUpload": "Bild zum Hochladen ablegen", 886 - "previewImageAlt": "Bildvorschau", 887 - "codeLang": { 888 - "bash": "Bash", 889 - "csharp": "C#", 890 - "cpp": "C++", 891 - "css": "CSS", 892 - "go": "Golang", 893 - "graphql": "GraphQL", 894 - "html": "HTML", 895 - "json": "JSON", 896 - "java": "Java", 897 - "javascript": "JavaScript", 898 - "markdown": "Markdown", 899 - "plaintext": "Klartext", 900 - "python": "Python", 901 - "rust": "Rust", 902 - "sql": "SQL", 903 - "swift": "Swift", 904 - "typescript": "TypeScript", 905 - "yaml": "YAML" 906 - } 907 - } 908 - } 909 - }, 910 - "tasks": { 911 - "status": { 912 - "label": "Status", 913 - "to-do": "Zu erledigen", 914 - "in-progress": "In Bearbeitung", 915 - "in-review": "In Prüfung", 916 - "done": "Erledigt", 917 - "archived": "Archiviert", 918 - "planned": "Geplant" 919 - }, 920 - "priority": { 921 - "label": "Priorität", 922 - "no-priority": "Keine Priorität", 923 - "low": "Niedrig", 924 - "medium": "Mittel", 925 - "high": "Hoch", 926 - "urgent": "Dringend" 927 - }, 928 - "boardSearchPlaceholder": "Tickets suchen...", 929 - "view": { 930 - "board": "Board", 931 - "list": "Liste" 932 - }, 933 - "common": { 934 - "selectTask": "Aufgabe auswählen", 935 - "loadingTask": "Aufgabe wird geladen..." 936 - }, 937 - "detail": { 938 - "subtaskOf": "Teilaufgabe von", 939 - "activity": "Aktivität", 940 - "noActivity": "Keine Aktivität gefunden", 941 - "openInFullPage": "Auf ganzer Seite öffnen", 942 - "titlePlaceholder": "Klicken, um einen Titel hinzuzufügen", 943 - "addDescription": "Beschreibung hinzufügen...", 944 - "editor": { 945 - "ariaLabel": "Editor für Aufgabenbeschreibung", 946 - "placeholder": "Schreibe eine Beschreibung...", 947 - "previewImage": "Bildvorschau", 948 - "enterUrl": "URL eingeben", 949 - "autoDetect": "Automatisch erkennen", 950 - "copyCode": "Code kopieren", 951 - "copy": "Kopieren", 952 - "copied": "Kopiert", 953 - "attachFile": "Datei anhängen", 954 - "dropToUpload": "Bild zum Hochladen ablegen", 955 - "checkbox": { 956 - "markIncomplete": "Aufgabe als unvollständig markieren", 957 - "markComplete": "Aufgabe als abgeschlossen markieren" 958 - }, 959 - "upload": { 960 - "loading": "Datei wird hochgeladen...", 961 - "failed": "Datei konnte nicht hochgeladen werden", 962 - "imageSuccess": "Bild hochgeladen", 963 - "fileSuccess": "Datei angehängt" 964 - }, 965 - "slash": { 966 - "groups": { 967 - "text": "Text", 968 - "lists": "Listen", 969 - "insert": "Einfügen" 970 - }, 971 - "empty": "Keine Befehle", 972 - "commands": { 973 - "paragraph": "Text", 974 - "heading-2": "Überschrift", 975 - "bullet-list": "Aufzählungsliste", 976 - "task-list": "To-do-Liste", 977 - "ordered-list": "Nummerierte Liste", 978 - "blockquote": "Zitat", 979 - "code-block": "Codeblock", 980 - "table": "Tabelle", 981 - "file": "Datei" 982 - } 983 - }, 984 - "languages": { 985 - "bash": "Bash", 986 - "csharp": "C#", 987 - "cpp": "C++", 988 - "css": "CSS", 989 - "clojure": "Clojure", 990 - "cypher": "Cypher", 991 - "dart": "Dart", 992 - "diff": "Diff", 993 - "elixir": "Elixir", 994 - "excel": "Excel", 995 - "go": "Golang", 996 - "graphql": "GraphQL", 997 - "html": "HTML", 998 - "haskell": "Haskell", 999 - "json": "JSON", 1000 - "java": "Java", 1001 - "javascript": "JavaScript", 1002 - "kotlin": "Kotlin", 1003 - "makefile": "Makefile", 1004 - "markdown": "Markdown", 1005 - "ocaml": "OCaml", 1006 - "php": "PHP", 1007 - "perl": "Perl", 1008 - "plaintext": "Klartext", 1009 - "python": "Python", 1010 - "r": "R", 1011 - "reasonml": "ReasonML", 1012 - "ruby": "Ruby", 1013 - "rust": "Rust", 1014 - "sql": "SQL", 1015 - "swift": "Swift", 1016 - "toml": "TOML", 1017 - "terraform": "Terraform", 1018 - "typescript": "TypeScript", 1019 - "xml": "XML", 1020 - "yaml": "YAML" 1021 - }, 1022 - "embed": { 1023 - "choice": { 1024 - "embedVideo": "Video einbetten", 1025 - "keepAsLink": "Als Link behalten" 1026 - }, 1027 - "inputPlaceholder": "URL einfügen", 1028 - "embeddedContent": "Eingebetteter Inhalt", 1029 - "asLink": "Als Link", 1030 - "submit": "Einbetten", 1031 - "errors": { 1032 - "invalidUrl": "Gib eine gültige URL ein", 1033 - "onlyYoutube": "Nur YouTube-Links können eingebettet werden." 1034 - }, 1035 - "onlyYoutubeInline": "Nur YouTube-URLs können eingebettet werden. Verwende stattdessen den Link-Modus." 1036 - } 1037 - } 1038 - }, 1039 - "entity": { 1040 - "task": "Aufgabe" 1041 - }, 1042 - "relations": { 1043 - "title": "Beziehungen", 1044 - "tasksInProject": "Aufgaben im Projekt", 1045 - "linkError": "Aufgabe konnte nicht verknüpft werden", 1046 - "empty": "Keine verknüpften Aufgaben", 1047 - "searchPlaceholder": "Aufgaben zum Verknüpfen suchen...", 1048 - "noTasksFound": "Keine Aufgaben gefunden", 1049 - "openTask": "Aufgabe öffnen", 1050 - "removeRelation": "Beziehung entfernen", 1051 - "related": "Verwandt", 1052 - "blocks": "Blockiert", 1053 - "selectTask": "Wähle eine Aufgabe zum Verknüpfen aus", 1054 - "types": { 1055 - "blocks": "blockiert", 1056 - "related": "steht in Beziehung zu" 1057 - } 1058 - }, 1059 - "subtasks": { 1060 - "title": "Teilaufgaben", 1061 - "inputPlaceholder": "Titel der Teilaufgabe...", 1062 - "addAction": "Hinzufügen", 1063 - "empty": "Noch keine Teilaufgaben", 1064 - "createError": "Teilaufgabe konnte nicht erstellt werden", 1065 - "deleteSuccess": "Aufgabe erfolgreich gelöscht", 1066 - "deleteError": "Aufgabe konnte nicht gelöscht werden", 1067 - "deleteDialogTitle": "Aufgabe löschen?", 1068 - "deleteDialogDescription": "Dadurch wird die Aufgabe und alle zugehörigen Daten dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 1069 - "deleteAction": "Aufgabe löschen" 1070 - }, 1071 - "properties": { 1072 - "title": "Eigenschaften", 1073 - "labels": "Labels", 1074 - "copyTaskLink": "Aufgabenlink kopieren", 1075 - "copyTaskBranch": "Aufgaben-Branch kopieren", 1076 - "start": "Start", 1077 - "startDate": "Startdatum", 1078 - "noDate": "Kein Datum" 1079 - }, 1080 - "popover": { 1081 - "assignee": { 1082 - "unassigned": "Nicht zugewiesen", 1083 - "updateError": "Aufgabenzuweisung konnte nicht aktualisiert werden" 1084 - }, 1085 - "status": { 1086 - "updateError": "Aufgabenstatus konnte nicht aktualisiert werden" 1087 - }, 1088 - "priority": { 1089 - "updateError": "Aufgabenpriorität konnte nicht aktualisiert werden" 1090 - }, 1091 - "dueDate": { 1092 - "updateSuccess": "Fälligkeitsdatum erfolgreich aktualisiert", 1093 - "updateError": "Fälligkeitsdatum konnte nicht aktualisiert werden", 1094 - "clear": "Datum entfernen" 1095 - }, 1096 - "startDate": { 1097 - "updateSuccess": "Startdatum erfolgreich aktualisiert", 1098 - "updateError": "Startdatum konnte nicht aktualisiert werden", 1099 - "clear": "Startdatum entfernen" 1100 - }, 1101 - "labels": { 1102 - "searchPlaceholder": "Labels suchen...", 1103 - "empty": "Keine Labels gefunden", 1104 - "create": "\"{{name}}\" erstellen", 1105 - "chooseColor": "Farbe auswählen", 1106 - "addSuccess": "Label hinzugefügt", 1107 - "removeSuccess": "Label entfernt", 1108 - "updateError": "Label konnte nicht aktualisiert werden", 1109 - "createSuccess": "Label erstellt und hinzugefügt", 1110 - "createError": "Label konnte nicht erstellt werden", 1111 - "colors": { 1112 - "stone": "Stein", 1113 - "slate": "Schiefer", 1114 - "lavender": "Lavendel", 1115 - "sage": "Salbei", 1116 - "forest": "Wald", 1117 - "amber": "Bernstein", 1118 - "terracotta": "Terrakotta", 1119 - "rose": "Rosa", 1120 - "crimson": "Karmesinrot" 1121 - } 1122 - } 1123 - }, 1124 - "backlog": { 1125 - "pageTitle": "{{name}}s Backlog", 1126 - "noTasksToMove": "Keine geplanten Aufgaben zum Verschieben", 1127 - "moveAllConfirm": "Alle {{count}} geplanten Aufgaben nach „Zu erledigen“ verschieben?", 1128 - "moveAllSuccess": "{{count}} Aufgaben nach „Zu erledigen“ verschoben", 1129 - "plan": "Planen", 1130 - "moveAllTooltip": "Alle geplanten Aufgaben nach „Zu erledigen“ verschieben", 1131 - "moveAll": "Alle verschieben", 1132 - "addTask": "Aufgabe hinzufügen", 1133 - "filter": "Filter", 1134 - "addFilter": "Filter hinzufügen...", 1135 - "sections": { 1136 - "planned": "Geplant", 1137 - "archived": "Archiviert" 1138 - }, 1139 - "noTasksInSection": "Keine {{section}}-Aufgaben", 1140 - "filters": { 1141 - "priority": "Priorität: {{name}}", 1142 - "assignee": "Zugewiesen: {{name}}", 1143 - "due": "Fällig: {{date}}", 1144 - "label": "Label: {{name}}", 1145 - "dueThisWeek": "Diese Woche fällig", 1146 - "dueNextWeek": "Nächste Woche fällig", 1147 - "noDueDate": "Kein Fälligkeitsdatum" 1148 - } 1149 - }, 1150 - "sort": { 1151 - "label": "Sortieren", 1152 - "by": "Sortieren nach", 1153 - "direction": "Richtung", 1154 - "ascending": "Aufsteigend", 1155 - "descending": "Absteigend", 1156 - "fields": { 1157 - "position": "Manuell (Position)", 1158 - "createdAt": "Erstellungsdatum", 1159 - "priority": "Priorität", 1160 - "dueDate": "Fälligkeitsdatum", 1161 - "title": "Titel", 1162 - "number": "Aufgabennummer" 1163 - } 1164 - }, 1165 - "boardFilters": { 1166 - "filterBy": "Filtern nach", 1167 - "allStatuses": "Alle Status", 1168 - "allPriorities": "Alle Prioritäten", 1169 - "allAssignees": "Alle Zugewiesenen", 1170 - "allDueDates": "Alle Fälligkeitsdaten", 1171 - "allLabels": "Alle Labels", 1172 - "selectedCount": "{{count}} ausgewählt", 1173 - "subjects": { 1174 - "status": "Status", 1175 - "priority": "Priorität", 1176 - "assignee": "Zugewiesen", 1177 - "dueDate": "Fälligkeitsdatum", 1178 - "labels": "Labels" 1179 - }, 1180 - "operators": { 1181 - "isAnyOf": "ist einer von", 1182 - "includeAnyOf": "enthält einen von" 1183 - } 1184 - }, 1185 - "gantt": { 1186 - "pageTitle": "{{name}} — Gantt", 1187 - "title": "Gantt-Zeitachse", 1188 - "searchPlaceholder": "Geplante Tickets suchen...", 1189 - "hideTasks": "Aufgaben ausblenden", 1190 - "showTasks": "Aufgaben anzeigen", 1191 - "noTasks": "Keine geplanten Aufgaben", 1192 - "noTasksSubtitle": "Füge Aufgaben ein Startdatum, ein Fälligkeitsdatum oder beides hinzu, um sie auf der Projektzeitleiste zu platzieren.", 1193 - "noTasksFound": "Keine Aufgaben gefunden", 1194 - "noTasksMatch": "Keine geplanten Aufgaben entsprechen \"{{query}}\"", 1195 - "taskHeader": "Aufgabe", 1196 - "updateDatesError": "Aufgabendaten konnten nicht aktualisiert werden", 1197 - "resizeStart": "Startdatum anpassen", 1198 - "resizeDue": "Fälligkeitsdatum anpassen", 1199 - "taskAriaLabel": "{{title}} — öffnen oder ziehen zum Verschieben" 1200 - }, 1201 - "delete": { 1202 - "title": "Aufgabe löschen?", 1203 - "description": "Dadurch wird die Aufgabe und alle zugehörigen Daten dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 1204 - "action": "Aufgabe löschen", 1205 - "success": "Aufgabe erfolgreich gelöscht", 1206 - "error": "Aufgabe konnte nicht gelöscht werden" 1207 - }, 1208 - "archive": { 1209 - "success": "{{count}} Aufgaben archiviert" 1210 - }, 1211 - "listView": { 1212 - "addTask": "Aufgabe hinzufügen", 1213 - "archiveAllTooltip": "Alle abgeschlossenen Aufgaben archivieren", 1214 - "noTasks": "Keine Aufgaben" 1215 - }, 1216 - "kanban": { 1217 - "addTask": "Aufgabe hinzufügen" 1218 - }, 1219 - "pr": { 1220 - "merged": "Zusammengeführt", 1221 - "draft": "Entwurf", 1222 - "open": "Offen", 1223 - "label": "Pull Request", 1224 - "count_one": "{{count}} PR", 1225 - "count_other": "{{count}} PRs" 1226 - }, 1227 - "assignee": { 1228 - "label": "Zugewiesen an", 1229 - "unassigned": "Nicht zugewiesen" 1230 - }, 1231 - "dueDate": { 1232 - "label": "Fälligkeitsdatum", 1233 - "clear": "Datum entfernen", 1234 - "updateSuccess": "Fälligkeitsdatum erfolgreich aktualisiert", 1235 - "updateError": "Fälligkeitsdatum konnte nicht aktualisiert werden", 1236 - "clearSuccess": "Fälligkeitsdatum entfernt", 1237 - "clearError": "Fälligkeitsdatum konnte nicht entfernt werden" 1238 - }, 1239 - "labels": { 1240 - "label": "Labels", 1241 - "empty": "Keine Labels verfügbar" 1242 - }, 1243 - "update": { 1244 - "success": "Aufgabe erfolgreich aktualisiert", 1245 - "error": "Aufgabe konnte nicht aktualisiert werden" 1246 - }, 1247 - "contextMenu": { 1248 - "copyLink": "Link kopieren", 1249 - "copyLinkSuccess": "Aufgabenlink kopiert!" 1250 - }, 1251 - "actions": { 1252 - "archive": "Archivieren", 1253 - "markAsPlanned": "Als geplant markieren", 1254 - "delete": "Löschen..." 1255 - }, 1256 - "bulk": { 1257 - "selectedCount": "{{count}} ausgewählt", 1258 - "moveToBacklog": "In Backlog verschieben", 1259 - "moveToBacklogSuccess": "{{count}} Aufgaben ins Backlog verschoben", 1260 - "moveToBacklogError": "Aufgaben konnten nicht ins Backlog verschoben werden", 1261 - "moveToBoard": "Aufs Board verschieben", 1262 - "moveToBoardSuccess": "{{count}} Aufgaben aufs Board verschoben", 1263 - "moveToBoardError": "Aufgaben konnten nicht aufs Board verschoben werden", 1264 - "delete": "Aufgaben löschen", 1265 - "deleteConfirm": "{{count}} Aufgaben löschen? Diese Aktion kann nicht rückgängig gemacht werden.", 1266 - "deleteSuccess": "{{count}} Aufgaben gelöscht", 1267 - "deleteError": "Aufgaben konnten nicht gelöscht werden", 1268 - "archive": "Aufgaben archivieren", 1269 - "archiveSuccess": "{{count}} Aufgaben archiviert", 1270 - "archiveError": "Aufgaben konnten nicht archiviert werden", 1271 - "updateSuccess": "{{count}} Aufgaben aktualisiert", 1272 - "updateError": "Aufgaben konnten nicht aktualisiert werden", 1273 - "assignTo": "Zuweisen an", 1274 - "assignSuccess": "{{count}} Aufgaben zugewiesen", 1275 - "assignError": "Aufgaben konnten nicht zugewiesen werden", 1276 - "setPriority": "Priorität festlegen", 1277 - "updatePriorityError": "Priorität konnte nicht aktualisiert werden", 1278 - "addLabel": "Label hinzufügen", 1279 - "addLabelSuccess": "Label zu {{count}} Aufgaben hinzugefügt", 1280 - "addLabelError": "Label konnte nicht hinzugefügt werden", 1281 - "setDueDate": "Fälligkeitsdatum festlegen", 1282 - "updateDueDateError": "Fälligkeitsdatum konnte nicht aktualisiert werden", 1283 - "actions": "Aktionen", 1284 - "searchActions": "Aktionen suchen...", 1285 - "noActionsFound": "Keine Aktionen gefunden.", 1286 - "changeStatus": "Status ändern" 1287 - } 1288 - }, 1289 - "invitations": { 1290 - "pageTitle": "Einladungen", 1291 - "pendingInvitations": "Ausstehende Einladungen", 1292 - "acceptSubtitle": "Nimm Einladungen an, um Workspaces beizutreten", 1293 - "noPendingTitle": "Keine ausstehenden Einladungen", 1294 - "noPendingDescription": "Du hast derzeit keine ausstehenden Workspace-Einladungen.", 1295 - "continueToSetup": "Weiter zum Setup", 1296 - "skipForNow": "Vorerst überspringen", 1297 - "table": { 1298 - "workspace": "Workspace", 1299 - "invitedBy": "Eingeladen von", 1300 - "expires": "Läuft ab" 1301 - }, 1302 - "toast": { 1303 - "acceptError": "Einladung konnte nicht angenommen werden", 1304 - "acceptSuccess": "Einladung angenommen! Willkommen im Team.", 1305 - "rejectError": "Einladung konnte nicht abgelehnt werden", 1306 - "rejectSuccess": "Einladung abgelehnt" 1307 - } 1308 - }, 1309 - "workspace": { 1310 - "projects": { 1311 - "pageTitle": "Projekte", 1312 - "createProject": "Projekt erstellen", 1313 - "title": "Titel", 1314 - "progress": "Fortschritt", 1315 - "targetDate": "Zieldatum", 1316 - "dueDate": "Fälligkeitsdatum", 1317 - "status": "Status", 1318 - "emptyTitle": "Noch keine Projekte", 1319 - "emptyDescription": "Lege los, indem du dein erstes Projekt erstellst.", 1320 - "projectStatus": { 1321 - "notStarted": "Nicht begonnen", 1322 - "complete": "Abgeschlossen", 1323 - "inProgress": "In Bearbeitung" 1324 - }, 1325 - "noDueDate": "Kein Fälligkeitsdatum" 1326 - }, 1327 - "search": { 1328 - "pageTitle": "Suche", 1329 - "backToDashboard": "Zurück zum Dashboard", 1330 - "placeholder": "Suche nach Aufgaben nach Titel oder Kurz-ID (z. B. DEP-23)...", 1331 - "hint": "Suche über alle Projekte in diesem Workspace. Nutze Kurz-IDs wie DEP-23, um bestimmte Aufgaben zu finden.", 1332 - "searching": "Suche läuft...", 1333 - "resultsFound_one": "{{count}} Ergebnis gefunden", 1334 - "resultsFound_other": "{{count}} Ergebnisse gefunden", 1335 - "noResultsTitle": "Keine Ergebnisse gefunden", 1336 - "noResultsDescription": "Passe deine Suchbegriffe an oder suche nach etwas anderem", 1337 - "startTitle": "Suche starten", 1338 - "startDescription": "Gib einen Suchbegriff ein, um Aufgaben in allen Projekten zu finden", 1339 - "quickSearchesLabel": "Schnellsuchen:", 1340 - "suggestionHighPriority": "Hohe Priorität", 1341 - "suggestionBug": "Bug", 1342 - "suggestionFeature": "Feature", 1343 - "suggestionInProgress": "In Bearbeitung", 1344 - "suggestionCompleted": "Abgeschlossen" 1345 - }, 1346 - "create": { 1347 - "pageTitle": "Workspace erstellen", 1348 - "heading": "Neuen Workspace erstellen", 1349 - "subtitle": "Workspaces sind gemeinsame Umgebungen, in denen Teams an Projekten, Zyklen und Issues arbeiten können.", 1350 - "nameLabel": "Workspace-Name", 1351 - "namePlaceholder": "Workspace-Namen eingeben", 1352 - "descriptionLabel": "Beschreibung (optional)", 1353 - "descriptionPlaceholder": "Füge eine Beschreibung für deinen Workspace hinzu", 1354 - "required": "Erforderlich", 1355 - "creating": "Wird erstellt...", 1356 - "submit": "Workspace erstellen", 1357 - "success": "Workspace erfolgreich erstellt", 1358 - "error": "Workspace konnte nicht erstellt werden" 1359 - } 1360 - }, 1361 - "team": { 1362 - "roles": { 1363 - "owner": "Eigentümer", 1364 - "admin": "Admin", 1365 - "member": "Mitglied" 1366 - }, 1367 - "members": { 1368 - "pageTitle": "Mitglieder", 1369 - "inviteMember": "Mitglied einladen" 1370 - }, 1371 - "inviteModal": { 1372 - "title": "Teammitglied einladen", 1373 - "emailLabel": "E-Mail", 1374 - "emailPlaceholder": "kollege@firma.com", 1375 - "sendInvitation": "Einladung senden", 1376 - "success": "Einladung erfolgreich gesendet", 1377 - "error": "Teammitglied konnte nicht eingeladen werden" 1378 - }, 1379 - "membersTable": { 1380 - "emptyTitle": "Noch keine Teammitglieder", 1381 - "emptyDescription": "Lade dein erstes Teammitglied ein, um loszulegen.", 1382 - "columns": { 1383 - "name": "Name", 1384 - "role": "Rolle", 1385 - "joined": "Beigetreten", 1386 - "actions": "Aktionen" 1387 - }, 1388 - "memberRolePending": "{{role}} (Ausstehend)", 1389 - "ariaCancelInvitation": "Einladung abbrechen", 1390 - "ariaRemoveMember": "Mitglied entfernen", 1391 - "removeDialogTitle": "Teammitglied entfernen?", 1392 - "removeDialogDescription": "Bist du sicher, dass du {{name}} aus dem Workspace entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", 1393 - "cancelDialogTitle": "Einladung abbrechen?", 1394 - "cancelDialogDescription": "Bist du sicher, dass du die Einladung für {{email}} abbrechen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", 1395 - "removeMember": "Mitglied entfernen", 1396 - "cancelInvitation": "Einladung abbrechen", 1397 - "removeSuccess": "Teammitglied erfolgreich entfernt", 1398 - "removeError": "Teammitglied konnte nicht entfernt werden", 1399 - "cancelInviteSuccess": "Einladung erfolgreich abgebrochen", 1400 - "cancelInviteError": "Einladung konnte nicht abgebrochen werden" 1401 - } 1402 - }, 1403 - "publicProject": { 1404 - "pageTitle": "Öffentliche Ansicht", 1405 - "badge": "Öffentlich", 1406 - "readOnly": "Schreibgeschützt", 1407 - "error": { 1408 - "title": "Projekt nicht gefunden", 1409 - "description": "Dieses Projekt existiert nicht oder ist nicht öffentlich zugänglich." 1410 - }, 1411 - "taskCard": { 1412 - "viewDetailsAria": "Details für Aufgabe {{title}} ansehen" 1413 - }, 1414 - "taskDetail": { 1415 - "labels": "Labels", 1416 - "externalLinks": "Externe Links", 1417 - "pullRequestFallback": "Pull Request", 1418 - "issueFallback": "Issue", 1419 - "prStatusMerged": "Zusammengeführt", 1420 - "prStatusDraft": "Entwurf", 1421 - "prStatusOpen": "Offen", 1422 - "dueWithDate": "Fällig {{date}}", 1423 - "created": "Erstellt", 1424 - "dueDateLabel": "Fälligkeitsdatum" 1425 - }, 1426 - "theme": { 1427 - "switchToLight": "Zu hellem Modus wechseln", 1428 - "switchToDark": "Zu dunklem Modus wechseln" 1429 - }, 1430 - "copyUrl": { 1431 - "successToast": "URL kopiert", 1432 - "errorToast": "URL konnte nicht kopiert werden", 1433 - "copied": "Kopiert", 1434 - "share": "Teilen" 1435 - }, 1436 - "branding": { 1437 - "poweredBy": "Bereitgestellt von" 1438 - } 1439 - } 2 + "common": { 3 + "appName": "Kaneo", 4 + "actions": { 5 + "cancel": "Abbrechen", 6 + "close": "Schließen", 7 + "clearAll": "Alle löschen", 8 + "delete": "Löschen", 9 + "deleting": "Wird gelöscht...", 10 + "markAllRead": "Alle als gelesen markieren", 11 + "remove": "Entfernen", 12 + "reset": "Zurücksetzen", 13 + "filter": "Filter", 14 + "clearAllFilters": "Alle Filter löschen" 15 + }, 16 + "a11y": { 17 + "toggleSidebar": "Sidebar umschalten" 18 + }, 19 + "sidebar": { 20 + "title": "Sidebar", 21 + "mobileDescription": "Zeigt die mobile Sidebar an." 22 + }, 23 + "empty": { 24 + "loading": "Lädt..." 25 + }, 26 + "pagination": { 27 + "label": "Seitennavigation", 28 + "previous": "Zurück", 29 + "next": "Weiter", 30 + "previousPage": "Zur vorherigen Seite", 31 + "nextPage": "Zur nächsten Seite", 32 + "morePages": "Weitere Seiten" 33 + }, 34 + "breadcrumb": { 35 + "label": "Brotkrümelnavigation", 36 + "more": "Mehr" 37 + }, 38 + "language": { 39 + "english": "Englisch", 40 + "german": "Deutsch" 41 + }, 42 + "people": { 43 + "someone": "Jemand", 44 + "unknown": "Unbekannt" 45 + }, 46 + "error": { 47 + "title": "Etwas ist schiefgelaufen", 48 + "troubleshooting": "Schritte zur Fehlerbehebung:", 49 + "tryAgain": "Erneut versuchen", 50 + "viewDeploymentGuide": "Bereitstellungsanleitung ansehen", 51 + "refreshPage": "Seite neu laden" 52 + }, 53 + "formats": { 54 + "never": "Nie" 55 + }, 56 + "modals": { 57 + "createProject": { 58 + "title": "Neues Projekt erstellen", 59 + "breadcrumbNew": "Neues Projekt erstellen", 60 + "workspaceFallback": "WORKSPACE", 61 + "description": "Erstelle ein neues Projekt in deinem Workspace, indem du einen Namen, einen Schlüssel und ein Symbol auswählst.", 62 + "pickIcon": "Symbol auswählen", 63 + "searchIcons": "Symbole suchen...", 64 + "projectName": "Projektname", 65 + "keyLabel": "Schlüssel:", 66 + "keyHint": "Wird für Ticket-IDs verwendet (z. B. {{example}}-123)", 67 + "createButton": "Projekt erstellen", 68 + "successToast": "Projekt erfolgreich erstellt", 69 + "errorToast": "Projekt konnte nicht erstellt werden" 70 + }, 71 + "createWorkspace": { 72 + "breadcrumbKaneo": "KANEO", 73 + "title": "Neuen Workspace erstellen", 74 + "description": "Erstelle einen neuen Workspace, indem du einen Namen dafür angibst.", 75 + "namePlaceholder": "Workspace-Name", 76 + "descriptionPlaceholder": "Beschreibung hinzufügen...", 77 + "createButton": "Workspace erstellen", 78 + "successToast": "Workspace erfolgreich erstellt", 79 + "errorToast": "Workspace konnte nicht erstellt werden" 80 + }, 81 + "createTask": { 82 + "breadcrumbTask": "AUFGABE", 83 + "title": "Neue Aufgabe", 84 + "description": "Erstelle eine neue Aufgabe, indem du einen Titel, eine Beschreibung und weitere Details angibst.", 85 + "taskTitlePlaceholder": "Aufgabentitel", 86 + "descriptionPlaceholder": "Füge eine Beschreibung für deine Aufgabe hinzu...", 87 + "chooseProjectForImages": "Wähle ein Projekt aus, bevor du Bilder hochlädst.", 88 + "prepareTaskError": "Aufgabe konnte nicht vorbereitet werden", 89 + "successCreated": "Aufgabe erfolgreich erstellt", 90 + "successUpdated": "Aufgabe erfolgreich aktualisiert", 91 + "createError": "Aufgabe konnte nicht erstellt werden", 92 + "priority": "Priorität", 93 + "statusFallback": "In Bearbeitung", 94 + "startDate": "Startdatum", 95 + "dueDate": "Fälligkeitsdatum", 96 + "clearStartDate": "Startdatum entfernen", 97 + "clearDueDate": "Fälligkeitsdatum entfernen", 98 + "assign": "Zuweisen", 99 + "assignUnassigned": "Nicht zugewiesen", 100 + "assignUnassignedTitle": "Nicht zugewiesen", 101 + "labels": "Labels", 102 + "searchLabels": "Labels suchen...", 103 + "noLabelsFound": "Keine Labels gefunden", 104 + "createLabel": "\"{{name}}\" erstellen", 105 + "chooseColor": "Farbe auswählen", 106 + "labelCreated": "Label erstellt", 107 + "labelCreateError": "Label konnte nicht erstellt werden", 108 + "createMore": "Weitere erstellen", 109 + "createButton": "Aufgabe erstellen", 110 + "untitledTask": "Unbenannte Aufgabe", 111 + "labelColors": { 112 + "stone": "Stein", 113 + "slate": "Schiefer", 114 + "lavender": "Lavendel", 115 + "sage": "Salbei", 116 + "forest": "Wald", 117 + "amber": "Bernstein", 118 + "terracotta": "Terrakotta", 119 + "rose": "Rosa", 120 + "crimson": "Karmesinrot" 121 + } 122 + } 123 + } 124 + }, 125 + "auth": { 126 + "signIn": { 127 + "pageTitle": "Anmelden", 128 + "title": "Willkommen zurück", 129 + "subtitle": "Gib deine Zugangsdaten ein, um auf deinen Workspace zuzugreifen", 130 + "invitationSubtitle": "Melde dich an, um deine Einladung anzunehmen", 131 + "invitationAlert": "Nach der Anmeldung kannst du deine Workspace-Einladung annehmen.", 132 + "signingIn": "Wird angemeldet...", 133 + "continueWithGoogle": "Mit Google fortfahren", 134 + "continueWithGithub": "Mit GitHub fortfahren", 135 + "continueWithDiscord": "Mit Discord fortfahren", 136 + "continueWithOidc": "Mit OIDC fortfahren", 137 + "lastUsed": "Zuletzt verwendet", 138 + "registrationDisabled": "Die öffentliche Registrierung ist deaktiviert. Nutze eine Einladung, um ein Konto zu erstellen.", 139 + "passwordRegistrationDisabled": "Die Registrierung per Passwort ist deaktiviert. Nutze eine konfigurierte Social- oder OIDC-Anmeldemethode, um ein Konto zu erstellen.", 140 + "toggleMessage": "Du hast noch kein Konto?", 141 + "toggleLink": "Konto erstellen", 142 + "guestSuccess": "Als Gast angemeldet", 143 + "guestError": "Anmeldung als Gast fehlgeschlagen", 144 + "oidcError": "Anmeldung mit OIDC fehlgeschlagen", 145 + "googleError": "Anmeldung mit Google fehlgeschlagen", 146 + "githubError": "Anmeldung mit GitHub fehlgeschlagen", 147 + "discordError": "Anmeldung mit Discord fehlgeschlagen" 148 + }, 149 + "providers": { 150 + "google": "Google", 151 + "discord": "Discord" 152 + }, 153 + "forms": { 154 + "or": "oder", 155 + "email": "E-Mail", 156 + "password": "Passwort", 157 + "emailPlaceholder": "me@example.com", 158 + "passwordPlaceholder": "••••••••", 159 + "showPassword": "Passwort anzeigen", 160 + "hidePassword": "Passwort ausblenden" 161 + }, 162 + "checkEmail": { 163 + "pageTitle": "Prüfe deine E-Mails", 164 + "title": "Prüfe deine E-Mails", 165 + "inboxMessage": "Wir haben dir einen temporären Anmeldelink gesendet. Bitte prüfe dein Postfach unter <email>{{email}}</email>.", 166 + "emailFallback": "deine E-Mail-Adresse", 167 + "backToLogin": "Zurück zur Anmeldung" 168 + }, 169 + "signUp": { 170 + "pageTitle": "Konto erstellen", 171 + "title": "Konto erstellen", 172 + "subtitleInvitation": "Erstelle ein Konto, um deine Einladung anzunehmen", 173 + "subtitleRegistrationDisabled": "Für die Registrierung ist eine Einladung erforderlich", 174 + "subtitlePasswordDisabled": "Nutze Social- oder OIDC-Anmeldung, um ein Konto zu erstellen", 175 + "subtitleDefault": "Lege mit deinem Workspace los", 176 + "invitationAlert": "Nach dem Erstellen deines Kontos kannst du deine Workspace-Einladung annehmen.", 177 + "registrationDisabledAlert": "Die Registrierung ist derzeit deaktiviert. Wenn du eingeladen wurdest, gib die E-Mail-Adresse ein, die die Einladung erhalten hat, um dein Konto zu erstellen.", 178 + "passwordDisabledAlert": "Die kontoerstellung per Passwort ist deaktiviert. Nutze eine konfigurierte Social- oder OIDC-Anmeldemethode auf der Anmeldeseite.", 179 + "signingIn": "Anmeldung läuft...", 180 + "continueAsGuest": "Als Gast fortfahren", 181 + "toggleMessage": "Du hast bereits ein Konto?", 182 + "toggleLink": "Anmelden" 183 + }, 184 + "verifyOtp": { 185 + "pageTitle": "Code verifizieren", 186 + "title": "Bestätigungscode eingeben", 187 + "subtitle": "Nutze den 6-stelligen Code, der an deine E-Mail gesendet wurde, um fortzufahren", 188 + "codeSentTo": "Code gesendet an {{email}}", 189 + "verificationCodeLabel": "Bestätigungscode", 190 + "verifying": "Wird verifiziert...", 191 + "verifyAndSignIn": "Verifizieren & anmelden", 192 + "changeEmail": "E-Mail ändern", 193 + "resend": "Erneut senden", 194 + "validation": { 195 + "codeLength": "Der Code muss 6 Ziffern haben" 196 + }, 197 + "toast": { 198 + "invalidCode": "Ungültiger Bestätigungscode", 199 + "signedInSuccess": "Erfolgreich angemeldet!", 200 + "verifyFailed": "Code konnte nicht verifiziert werden", 201 + "resendFailed": "Code konnte nicht erneut gesendet werden", 202 + "resendSuccess": "Neuer Bestätigungscode gesendet!" 203 + } 204 + }, 205 + "otpSignIn": { 206 + "sendFailed": "Bestätigungscode konnte nicht gesendet werden", 207 + "codeSent": "Bestätigungscode gesendet! Prüfe deine E-Mails.", 208 + "sending": "Wird gesendet...", 209 + "sendVerificationCode": "Bestätigungscode senden" 210 + }, 211 + "signInForm": { 212 + "failedSignIn": "Anmeldung fehlgeschlagen", 213 + "signedInSuccess": "Erfolgreich angemeldet", 214 + "signingIn": "Wird angemeldet...", 215 + "signIn": "Anmelden" 216 + }, 217 + "signUpForm": { 218 + "fullName": "Vollständiger Name", 219 + "namePlaceholder": "Max Mustermann", 220 + "failedSignUp": "Registrierung fehlgeschlagen", 221 + "accountCreated": "Konto erfolgreich erstellt", 222 + "passwordTooShort": "Das Passwort ist zu kurz", 223 + "creatingAccount": "Konto wird erstellt...", 224 + "createAccount": "Konto erstellen" 225 + }, 226 + "invitation": { 227 + "pageTitleAccept": "Einladung annehmen", 228 + "pageTitleError": "Einladungsfehler", 229 + "pageTitleInvalid": "Ungültige Einladung", 230 + "loadingTitle": "Einladung wird geladen...", 231 + "errorTitle": "Einladungsfehler", 232 + "invalidTitle": "Ungültige Einladung", 233 + "invitationExpired": "Einladung abgelaufen", 234 + "errorLoadDescription": "Die Einladungsdetails konnten nicht geladen werden. Die Einladung ist möglicherweise ungültig oder abgelaufen.", 235 + "goToSignIn": "Zur Anmeldung", 236 + "workspaceLabel": "Workspace: {{workspaceName}}", 237 + "joinWorkspace": "{{workspaceName}} beitreten", 238 + "inviteBodySignedIn": "<inviter>{{inviterName}}</inviter> hat dich eingeladen, ihrem Workspace beizutreten.", 239 + "inviteBodySignedOut": "<inviter>{{inviterName}}</inviter> hat dich eingeladen, ihrem Workspace auf Kaneo beizutreten.", 240 + "signInToAccept": "Melde dich an, um die Einladung anzunehmen.", 241 + "accepting": "Wird angenommen...", 242 + "acceptInvitation": "Einladung annehmen", 243 + "goToDashboard": "Zum Dashboard", 244 + "signedInAs": "Angemeldet als <email>{{email}}</email>", 245 + "youveBeenInvited": "Du wurdest eingeladen!", 246 + "invitationFor": "Einladung für: <email>{{email}}</email>", 247 + "signIn": "Anmelden", 248 + "toast": { 249 + "acceptFailed": "Einladung konnte nicht angenommen werden", 250 + "acceptSuccess": "Einladung angenommen! Willkommen im Team." 251 + } 252 + }, 253 + "onboarding": { 254 + "pageTitle": "Willkommen bei Kaneo", 255 + "workspacePageTitle": "Workspace erstellen", 256 + "createWorkspaceTitle": "Workspace erstellen", 257 + "createWorkspaceSubtitle": "Richte deinen Workspace ein, um mit der Verwaltung von Projekten zu beginnen", 258 + "workspaceName": "Workspace-Name", 259 + "workspaceNamePlaceholder": "z. B. Acme Inc, Mein Team", 260 + "descriptionOptional": "Beschreibung (optional)", 261 + "descriptionPlaceholder": "Woran arbeitet dein Team?", 262 + "creating": "Wird erstellt...", 263 + "createWorkspace": "Workspace erstellen", 264 + "workspaceCreatedTitle": "Workspace erstellt", 265 + "redirectingToWorkspace": "Du wirst zu <name>{{name}}</name> weitergeleitet...", 266 + "toast": { 267 + "workspaceCreated": "Workspace erfolgreich erstellt", 268 + "createFailed": "Workspace konnte nicht erstellt werden" 269 + }, 270 + "validation": { 271 + "workspaceNameRequired": "Workspace-Name ist erforderlich" 272 + } 273 + }, 274 + "profileSetup": { 275 + "pageTitle": "Profil vervollständigen", 276 + "completeTitle": "Vervollständige dein Profil", 277 + "subtitle": "Bitte gib deinen Namen ein, um loszulegen", 278 + "yourName": "Dein Name", 279 + "namePlaceholder": "z. B. Max Mustermann", 280 + "saving": "Wird gespeichert...", 281 + "continue": "Weiter", 282 + "welcome": "Willkommen, {{name}}!", 283 + "redirecting": "Du wirst zu deinem Dashboard weitergeleitet...", 284 + "toast": { 285 + "updateSuccess": "Profil erfolgreich aktualisiert", 286 + "updateFailed": "Profil konnte nicht aktualisiert werden" 287 + }, 288 + "validation": { 289 + "nameRequired": "Name ist erforderlich", 290 + "nameShort": "Der Name muss mindestens 2 Zeichen lang sein" 291 + } 292 + } 293 + }, 294 + "settings": { 295 + "account": "Konto", 296 + "developer": "Entwicklung", 297 + "information": "Informationen", 298 + "preferences": "Einstellungen", 299 + "apiKeys": "API-Schlüssel", 300 + "informationPage": { 301 + "pageTitle": "Persönliche Informationen", 302 + "title": "Persönliche Informationen", 303 + "subtitle": "Verwalte deine persönlichen Daten und Kontoinformationen.", 304 + "sectionTitle": "Kontoinformationen", 305 + "sectionSubtitle": "Verwalte dein Profil und deine Kontodetails.", 306 + "profilePicture": "Profilbild", 307 + "fullName": "Vollständiger Name", 308 + "fullNamePlaceholder": "Gib deinen Namen ein", 309 + "email": "E-Mail", 310 + "emailPlaceholder": "Gib deine E-Mail ein", 311 + "updateSuccess": "Profil erfolgreich aktualisiert", 312 + "updateError": "Profil konnte nicht aktualisiert werden", 313 + "validation": { 314 + "nameRequired": "Name ist erforderlich", 315 + "nameShort": "Der Name muss mindestens 2 Zeichen lang sein", 316 + "invalidEmail": "Ungültige E-Mail-Adresse" 317 + } 318 + }, 319 + "preferencesPage": { 320 + "title": "Einstellungen", 321 + "subtitle": "Passe dein Kaneo-Erlebnis an.", 322 + "appearanceTitle": "Darstellung", 323 + "appearanceSubtitle": "Visuelle Einstellungen und Layout-Präferenzen.", 324 + "theme": "Design", 325 + "themeDescription": "Wähle dein bevorzugtes Farbschema", 326 + "selectTheme": "Design auswählen", 327 + "themeLight": "Hell", 328 + "themeDark": "Dunkel", 329 + "themeSystem": "System", 330 + "language": "Sprache", 331 + "languageDescription": "Wähle deine bevorzugte Oberflächensprache", 332 + "selectLanguage": "Sprache auswählen", 333 + "defaultView": "Standardansicht", 334 + "defaultViewDescription": "Wähle deine bevorzugte Aufgabenansicht", 335 + "selectViewMode": "Ansicht auswählen", 336 + "board": "Board", 337 + "list": "Liste", 338 + "compactMode": "Kompakter Modus", 339 + "compactModeDescription": "Verwende geringere Abstände für mehr Inhalt", 340 + "sidebarDefault": "Standard-Sidebar", 341 + "sidebarDefaultDescription": "Sidebar beim Start erweitert geöffnet halten", 342 + "displayOptions": "Anzeigeoptionen", 343 + "displayOptionsDescription": "Wähle, welche Informationen in Aufgabenansichten sichtbar sind", 344 + "taskNumbers": "Aufgabennummern", 345 + "taskNumbersDescription": "Aufgaben-IDs und -Nummern anzeigen", 346 + "assignees": "Zugewiesene", 347 + "assigneesDescription": "Anzeigen, wem Aufgaben zugewiesen sind", 348 + "dueDates": "Fälligkeitsdaten", 349 + "dueDatesDescription": "Aufgabenfristen anzeigen", 350 + "labels": "Labels", 351 + "labelsDescription": "Aufgabenlabels und Tags anzeigen", 352 + "priority": "Priorität", 353 + "priorityDescription": "Prioritätsindikatoren anzeigen" 354 + }, 355 + "developerPage": { 356 + "pageTitle": "Entwicklereinstellungen", 357 + "title": "Entwicklereinstellungen", 358 + "subtitle": "Verwalte deine API-Schlüssel und Entwicklerressourcen.", 359 + "apiKeysCardTitle": "API-Schlüssel", 360 + "apiKeysCardDescription": "Erstelle und verwalte API-Schlüssel für den programmgesteuerten Zugriff auf Kaneo.", 361 + "createApiKey": "API-Schlüssel erstellen", 362 + "unnamedKey": "Unbenannter Schlüssel" 363 + }, 364 + "apiKey": { 365 + "createdModal": { 366 + "title": "API-Schlüssel erstellt", 367 + "description": "Dein API-Schlüssel \"{{keyName}}\" wurde erfolgreich erstellt.", 368 + "yourApiKey": "Dein API-Schlüssel", 369 + "copy": "Kopieren", 370 + "copied": "Kopiert", 371 + "toastCopied": "API-Schlüssel in die Zwischenablage kopiert", 372 + "alertTitle": "Erfolg! Dein API-Schlüssel wurde erstellt", 373 + "alertDescription": "Kopiere diesen Schlüssel jetzt. Du wirst ihn später nicht mehr sehen können.", 374 + "done": "Fertig", 375 + "copyToContinue": "Schlüssel kopieren, um fortzufahren" 376 + }, 377 + "table": { 378 + "loading": "API-Schlüssel werden geladen...", 379 + "empty": "Noch keine API-Schlüssel. Erstelle einen, um loszulegen.", 380 + "columnName": "Name", 381 + "columnKey": "Schlüssel", 382 + "columnCreated": "Erstellt", 383 + "columnExpires": "Läuft ab", 384 + "columnActions": "Aktionen", 385 + "unnamedKey": "Unbenannter Schlüssel", 386 + "expiredBadge": "Abgelaufen {{label}}", 387 + "deleteConfirmTitle": "API-Schlüssel löschen?", 388 + "deleteConfirmDescription": "Diese Aktion kann nicht rückgängig gemacht werden. {{name}} wird dauerhaft gelöscht.", 389 + "deleteFallbackName": "diesen API-Schlüssel", 390 + "delete": "Löschen", 391 + "deleting": "Wird gelöscht...", 392 + "deleteAria": "{{name}} löschen", 393 + "deleteAriaFallback": "API-Schlüssel", 394 + "toastDeleted": "API-Schlüssel erfolgreich gelöscht", 395 + "toastDeleteError": "API-Schlüssel konnte nicht gelöscht werden" 396 + }, 397 + "createDialog": { 398 + "title": "API-Schlüssel erstellen", 399 + "description": "Erstelle einen neuen API-Schlüssel, um programmgesteuert auf die Kaneo-API zuzugreifen.", 400 + "nameLabel": "Name", 401 + "namePlaceholder": "Mein API-Schlüssel", 402 + "nameDescription": "Ein beschreibender Name für diesen API-Schlüssel", 403 + "expirationLabel": "Ablauf", 404 + "expirationPlaceholder": "Ablauf auswählen", 405 + "expirationDescription": "Wähle, wie lange dieser API-Schlüssel gültig bleiben soll. Nie erstellt einen Schlüssel ohne automatisches Ablaufdatum.", 406 + "expiration1d": "1 Tag", 407 + "expiration7d": "7 Tage", 408 + "expiration30d": "30 Tage", 409 + "expiration90d": "90 Tage", 410 + "expirationNever": "Nie", 411 + "create": "Erstellen", 412 + "creating": "Wird erstellt...", 413 + "failedCreate": "API-Schlüssel konnte nicht erstellt werden", 414 + "validation": { 415 + "nameRequired": "Name ist erforderlich", 416 + "nameShort": "Der Name muss mindestens 3 Zeichen lang sein", 417 + "expirationRequired": "Ablauf ist erforderlich" 418 + } 419 + } 420 + }, 421 + "workspaceGeneral": { 422 + "pageTitle": "Allgemeine Einstellungen", 423 + "title": "Allgemeine Einstellungen", 424 + "subtitle": "Verwalte den Namen und die Beschreibung deines Workspaces.", 425 + "workspaceInfoTitle": "Workspace-Informationen", 426 + "workspaceInfoSubtitle": "Konfiguriere Details und Einstellungen deines Workspaces.", 427 + "nameLabel": "Workspace-Name", 428 + "nameHint": "Der Name deines Workspaces", 429 + "namePlaceholder": "Workspace-Name eingeben", 430 + "descriptionLabel": "Beschreibung", 431 + "descriptionHint": "Eine kurze Beschreibung deines Workspaces", 432 + "descriptionPlaceholder": "Workspace-Beschreibung eingeben", 433 + "dangerZone": "Gefahrenbereich", 434 + "dangerZoneSubtitle": "Unumkehrbare und destruktive Aktionen.", 435 + "deleteWorkspace": "Workspace löschen", 436 + "deleteWorkspaceDescription": "Plane die dauerhafte Löschung des Workspaces", 437 + "deleteModalTitle": "Workspace löschen?", 438 + "deleteModalDescription": "Dadurch wird der Workspace \"{{name}}\" und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.", 439 + "deleteModalConfirm": "Workspace löschen", 440 + "toastUpdated": "Workspace erfolgreich aktualisiert", 441 + "toastUpdateError": "Workspace konnte nicht aktualisiert werden", 442 + "toastDeleted": "Workspace erfolgreich gelöscht", 443 + "toastDeleteError": "Workspace konnte nicht gelöscht werden", 444 + "validation": { 445 + "nameRequired": "Workspace-Name ist erforderlich", 446 + "nameShort": "Der Workspace-Name muss mindestens 2 Zeichen lang sein" 447 + } 448 + }, 449 + "projectGeneral": { 450 + "pageTitle": "Projekteinstellungen", 451 + "title": "Allgemeine Einstellungen", 452 + "subtitle": "Verwalte deinen Projektnamen, Schlüssel, dein Symbol und die Beschreibung.", 453 + "projectInfoTitle": "Projektinformationen", 454 + "projectInfoSubtitle": "Konfiguriere deine Projektdetails und Einstellungen.", 455 + "iconLabel": "Symbol", 456 + "iconHint": "Wird in der Sidebar und auf Projektflächen angezeigt.", 457 + "pickIconTitle": "Symbol auswählen", 458 + "searchIconsPlaceholder": "Symbole suchen...", 459 + "projectNameLabel": "Projektname", 460 + "projectNameHint": "Der Name deines Projekts", 461 + "projectNamePlaceholder": "Projektnamen eingeben", 462 + "keyLabel": "Schlüssel", 463 + "keyHint": "Wird für Ticket-IDs verwendet (z. B. {{slug}}-123)", 464 + "keyPlaceholder": "PRO", 465 + "descriptionLabel": "Beschreibung", 466 + "descriptionHint": "Eine kurze Beschreibung deines Projekts", 467 + "descriptionPlaceholder": "Projektbeschreibung eingeben", 468 + "dangerZone": "Gefahrenbereich", 469 + "dangerZoneSubtitle": "Unumkehrbare und destruktive Aktionen.", 470 + "deleteProject": "Projekt löschen", 471 + "deleteProjectDescription": "Plane die dauerhafte Löschung des Projekts", 472 + "deleteModalTitle": "Projekt löschen?", 473 + "deleteModalDescription": "Dadurch wird das Projekt \"{{name}}\" und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.", 474 + "deleteModalConfirm": "Projekt löschen", 475 + "toastUpdated": "Projekt erfolgreich aktualisiert", 476 + "toastUpdateError": "Projekt konnte nicht aktualisiert werden", 477 + "toastDeleted": "Projekt erfolgreich gelöscht", 478 + "toastDeleteError": "Projekt konnte nicht gelöscht werden", 479 + "validation": { 480 + "nameRequired": "Projektname ist erforderlich", 481 + "nameShort": "Der Projektname muss mindestens 2 Zeichen lang sein", 482 + "keyRequired": "Schlüssel ist erforderlich", 483 + "keyShort": "Der Schlüssel muss mindestens 2 Zeichen lang sein", 484 + "keyMax": "Der Schlüssel darf höchstens 8 Zeichen lang sein", 485 + "iconRequired": "Symbol ist erforderlich" 486 + } 487 + }, 488 + "projectIntegrations": { 489 + "pageTitle": "Projektintegrationen", 490 + "title": "Projektintegrationen", 491 + "subtitle": "Verbinde dein Projekt mit externen Tools und Diensten, um deinen Workflow zu optimieren.", 492 + "githubSectionTitle": "GitHub-Integration", 493 + "githubSectionSubtitle": "Synchronisiere Aufgaben mit GitHub-Issues und aktiviere die bidirektionale Synchronisierung." 494 + }, 495 + "projectVisibility": { 496 + "pageTitle": "Projektsichtbarkeit", 497 + "title": "Sichtbarkeit", 498 + "subtitle": "Steuere, wer dein Projekt sehen und darauf zugreifen kann.", 499 + "sectionTitle": "Sichtbarkeit", 500 + "sectionSubtitle": "Aktiviere öffentlichen Zugriff und teile die öffentliche URL.", 501 + "publicAccess": "Öffentlicher Zugriff", 502 + "publicAccessHint": "Erlaube allen mit der URL, dieses Projekt anzusehen", 503 + "publicUrl": "Öffentliche URL", 504 + "publicUrlHint": "Teile diesen Link, wenn das Projekt öffentlich ist", 505 + "copy": "Kopieren", 506 + "copiedToast": "Kopiert", 507 + "toastUpdated": "Sichtbarkeit aktualisiert", 508 + "toastUpdateError": "Sichtbarkeit konnte nicht aktualisiert werden" 509 + }, 510 + "projectWorkflow": { 511 + "pageTitle": "Workflow-Einstellungen", 512 + "title": "Workflow", 513 + "subtitle": "Konfiguriere Board-Spalten und Automatisierungsregeln für dieses Projekt.", 514 + "columnsTitle": "Spalten", 515 + "columnsDescription": "Verwalte die Spalten, die auf deinem Board erscheinen. Ziehe sie, um sie neu anzuordnen. Aktiviere „Fertige Spalte“ für Phasen, die abgeschlossene Arbeit darstellen.", 516 + "automationTitle": "Automatisierungsregeln", 517 + "automationDescription": "Ordne Integrationsereignisse Spalten zu. Wenn ein Ereignis eintritt, wird die verknüpfte Aufgabe in die angegebene Spalte verschoben." 518 + }, 519 + "projectSwitcher": { 520 + "selectProject": "Projekt auswählen", 521 + "noProjects": "Keine Projekte" 522 + }, 523 + "columnEditor": { 524 + "toastCreated": "Spalte erstellt", 525 + "toastCreateError": "Spalte konnte nicht erstellt werden", 526 + "toastRenamed": "Spalte umbenannt", 527 + "toastRenameError": "Spalte konnte nicht aktualisiert werden", 528 + "toastFinalOn": "Spalte als final markiert", 529 + "toastFinalOff": "Markierung der finalen Spalte entfernt", 530 + "toastUpdateError": "Spalte konnte nicht aktualisiert werden", 531 + "toastDeleted": "Spalte gelöscht", 532 + "toastDeleteError": "Spalte konnte nicht gelöscht werden", 533 + "loading": "Spalten werden geladen...", 534 + "doneColumnTooltip": "Als fertige Spalte behandeln", 535 + "doneColumn": "Fertige Spalte", 536 + "markDoneAria": "{{name}} als fertige Spalte markieren", 537 + "on": "Ein", 538 + "off": "Aus", 539 + "newColumnPlaceholder": "Neuer Spaltenname...", 540 + "add": "Hinzufügen" 541 + }, 542 + "githubIntegration": { 543 + "validation": { 544 + "ownerRequired": "Repository-Eigentümer ist erforderlich", 545 + "ownerInvalid": "Ungültiges Format für den Repository-Eigentümer", 546 + "nameRequired": "Repository-Name ist erforderlich", 547 + "nameInvalid": "Ungültiges Format für den Repository-Namen" 548 + }, 549 + "toast": { 550 + "installedOk": "GitHub-App ist korrekt installiert!", 551 + "installedMissingPerms": "GitHub-App ist installiert, aber erforderliche Berechtigungen fehlen", 552 + "needsInstallOnRepo": "GitHub-App muss für dieses Repository installiert werden", 553 + "repoNotFound": "Repository nicht gefunden oder nicht zugänglich", 554 + "verifyError": "GitHub-Installation konnte nicht überprüft werden", 555 + "installAppFirst": "Bitte installiere zuerst die GitHub-App für dieses Repository", 556 + "missingPermsDetail": "Der GitHub-App fehlen erforderliche Berechtigungen: {{list}}. Bitte aktualisiere die App-Berechtigungen.", 557 + "updated": "GitHub-Integration erfolgreich aktualisiert", 558 + "updateError": "GitHub-Integration konnte nicht aktualisiert werden", 559 + "removed": "GitHub-Integration erfolgreich entfernt", 560 + "removeError": "GitHub-Integration konnte nicht entfernt werden", 561 + "issuesImported": "Issues erfolgreich importiert", 562 + "importError": "Issues konnten nicht importiert werden", 563 + "commentOnEnabled": "Kaneo kommentiert bei neuen Issues mit einem Aufgabenlink", 564 + "commentOnDisabled": "Aufgabenlink-Kommentare bei neuen Issues sind deaktiviert", 565 + "settingsUpdateError": "GitHub-Integration konnte nicht aktualisiert werden" 566 + }, 567 + "connectionStatus": "Verbindungsstatus", 568 + "connectedActive": "Repository verbunden und aktiv", 569 + "notConnectedHint": "Kein Repository verbunden", 570 + "badgeConnected": "Verbunden", 571 + "badgeNotConnected": "Nicht verbunden", 572 + "repository": "Repository", 573 + "repositoryHint": "Verbundenes GitHub-Repository", 574 + "commentTaskLinkTitle": "Kaneo-Link bei neuen Issues kommentieren", 575 + "commentTaskLinkHint": "Wenn aktiviert, veröffentlicht Kaneo bei jedem neuen GitHub-Issue einen Kommentar mit einem Link zur Aufgabe.", 576 + "appStatusTitle": "GitHub-App-Status", 577 + "appStatusHint": "Installations- und Berechtigungsstatus", 578 + "statusProperlyConfigured": "Korrekt konfiguriert", 579 + "statusMissingPermissions": "Fehlende Berechtigungen", 580 + "statusNotInstalled": "Nicht installiert", 581 + "ownerLabel": "Repository-Eigentümer", 582 + "ownerHint": "GitHub-Benutzername oder Organisation", 583 + "ownerPlaceholder": "z. B. octocat", 584 + "repoNameLabel": "Repository-Name", 585 + "repoNameHint": "Der Name des Repositorys", 586 + "repoNamePlaceholder": "z. B. mein-projekt", 587 + "actionsTitle": "Aktionen", 588 + "actionsHint": "Verwalte deine Repository-Verbindung", 589 + "browse": "Durchsuchen", 590 + "verify": "Prüfen", 591 + "update": "Aktualisieren", 592 + "connect": "Verbinden", 593 + "disconnect": "Trennen", 594 + "missingPermissionsLabel": "Fehlende Berechtigungen:", 595 + "updatePermissions": "Berechtigungen aktualisieren", 596 + "installGithubApp": "GitHub-App installieren", 597 + "importSectionTitle": "GitHub-Issues importieren", 598 + "importSectionHint": "Importiere vorhandene Issues aus deinem GitHub-Repository als Aufgaben", 599 + "importing": "Wird importiert...", 600 + "importIssues": "Issues importieren", 601 + "importDisabledHint": "Vervollständige die Repository-Konfiguration oben, um den Import zu aktivieren" 602 + }, 603 + "repositoryBrowser": { 604 + "title": "Repository auswählen", 605 + "description": "Wähle ein Repository aus, in dem deine GitHub-App installiert ist, um die Issue-Synchronisierung zu aktivieren.", 606 + "searchPlaceholder": "Repositories suchen...", 607 + "loadError": "Repositories konnten nicht geladen werden", 608 + "tryAgain": "Erneut versuchen", 609 + "emptyTitle": "Keine Repositories gefunden", 610 + "emptyHint": "Installiere die GitHub-App in deinen Repositories, damit sie hier angezeigt werden.", 611 + "installGithubApp": "GitHub-App installieren", 612 + "noSearchMatchTitle": "Keine Repositories entsprechen deiner Suche", 613 + "noSearchMatchHint": "Passe deine Suchbegriffe an oder lösche die Suche, um alle Repositories zu sehen.", 614 + "footerSummary": "{{repoCount}} Repositories über {{installationCount}} Installationen", 615 + "manageInstallations": "Installationen verwalten", 616 + "updatedPrefix": "Aktualisiert", 617 + "relativeJustNow": "gerade eben", 618 + "relativeMinutesAgo": "vor {{count}} Min.", 619 + "relativeHoursAgo": "vor {{count}} Std.", 620 + "relativeDaysAgo": "vor {{count}} Tg." 621 + }, 622 + "tasksImportExport": { 623 + "exportTasks": "Aufgaben exportieren", 624 + "importTasks": "Aufgaben importieren", 625 + "dialogTitle": "Aufgaben importieren", 626 + "dialogDescription": "Lade eine JSON-Datei mit Aufgaben hoch, die in dieses Projekt importiert werden sollen.", 627 + "expectedFormat": "Erwartetes Format:", 628 + "dropHint": "Ziehe deine JSON-Datei hierher", 629 + "selectFile": "Datei auswählen", 630 + "exporting": "Aufgaben werden exportiert...", 631 + "exportSuccess": "Aufgaben erfolgreich exportiert", 632 + "exportError": "Aufgaben konnten nicht exportiert werden", 633 + "importing": "Aufgaben werden importiert...", 634 + "importSuccess": "{{count}} Aufgaben erfolgreich importiert", 635 + "importPartialError": "{{count}} Aufgaben konnten nicht importiert werden", 636 + "importError": "Aufgaben konnten nicht importiert werden", 637 + "invalidFormat": "Ungültiges Importdateiformat", 638 + "noFileDropped": "Keine Datei abgelegt", 639 + "notJsonFile": "Bitte lade eine JSON-Datei hoch" 640 + }, 641 + "workflowEditor": { 642 + "loading": "Lädt...", 643 + "createColumnsFirst": "Erstelle zuerst Spalten, um Automatisierungsregeln zu konfigurieren.", 644 + "githubHeading": "GitHub", 645 + "githubHint": "Wenn ein GitHub-Ereignis eintritt, verschiebe die verknüpfte Aufgabe in eine Spalte.", 646 + "selectColumnPlaceholder": "Spalte auswählen...", 647 + "toastUpdated": "Workflow-Regel aktualisiert", 648 + "toastError": "Workflow-Regel konnte nicht aktualisiert werden", 649 + "events": { 650 + "branch_push": "Branch-Push", 651 + "pr_opened": "PR geöffnet", 652 + "pr_merged": "PR zusammengeführt", 653 + "issue_opened": "Issue geöffnet", 654 + "issue_closed": "Issue geschlossen" 655 + } 656 + }, 657 + "externalLinks": { 658 + "resources": "Ressourcen", 659 + "issue": "Issue", 660 + "branch": "Branch", 661 + "merged": "Zusammengeführt", 662 + "draft": "Entwurf", 663 + "open": "Offen" 664 + } 665 + }, 666 + "navigation": { 667 + "commandPalette": { 668 + "suggestions": "Vorschläge", 669 + "commands": "Befehle", 670 + "projects": "Projekte", 671 + "search": "Suche", 672 + "members": "Mitglieder", 673 + "createTask": "Aufgabe erstellen", 674 + "createProject": "Projekt erstellen", 675 + "createWorkspace": "Workspace erstellen", 676 + "lightTheme": "Helles Design", 677 + "darkTheme": "Dunkles Design", 678 + "systemTheme": "Systemdesign", 679 + "keyboardShortcuts": "Tastenkürzel", 680 + "inputPlaceholder": "Nach Apps und Befehlen suchen...", 681 + "empty": "Keine Ergebnisse gefunden.", 682 + "footer": { 683 + "navigate": "Navigieren", 684 + "open": "Öffnen", 685 + "close": "Schließen" 686 + } 687 + }, 688 + "notifications": "Benachrichtigungen", 689 + "sidebar": { 690 + "overview": "Übersicht", 691 + "projects": "Projekte", 692 + "members": "Mitglieder", 693 + "invitations": "Einladungen", 694 + "more": "Mehr" 695 + }, 696 + "projectList": { 697 + "viewProject": "Projekt ansehen", 698 + "shareProject": "Projekt teilen", 699 + "linkCopied": "Projektlink in die Zwischenablage kopiert", 700 + "addProject": "Projekt hinzufügen", 701 + "deleteConfirmTitle": "Projekt löschen?", 702 + "deleteConfirmDescription": "Dadurch wird das Projekt und alle zugehörigen Daten dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 703 + "deletedToast": "Projekt gelöscht", 704 + "deleteProject": "Projekt löschen" 705 + }, 706 + "search": { 707 + "inputPlaceholder": "Aufgaben, Projekte, Kommentare suchen...", 708 + "minCharsHint": "Gib mindestens 3 Zeichen ein, um zu suchen", 709 + "groups": { 710 + "task": "Aufgaben", 711 + "project": "Projekte", 712 + "workspace": "Workspaces", 713 + "comment": "Kommentare", 714 + "activity": "Aktivitäten", 715 + "fallback": "Ergebnisse" 716 + } 717 + }, 718 + "settingsLayout": { 719 + "toggleSidebar": "Sidebar umschalten", 720 + "back": "Zurück" 721 + }, 722 + "userMenu": { 723 + "signedOutSuccess": "Erfolgreich abgemeldet", 724 + "signOutFailed": "Abmeldung fehlgeschlagen", 725 + "unnamedUser": "Benutzer", 726 + "settings": "Einstellungen", 727 + "signingOut": "Wird abgemeldet...", 728 + "logOut": "Abmelden" 729 + }, 730 + "workspaceSwitcher": { 731 + "workspaces": "Workspaces", 732 + "switching": "Wechseln...", 733 + "addWorkspace": "Workspace hinzufügen", 734 + "selectWorkspace": "Workspace auswählen" 735 + }, 736 + "page": { 737 + "projectsTitle": "Projekte", 738 + "settingsTitle": "Einstellungen", 739 + "backToWorkspace": "Zurück zum Workspace", 740 + "settingsWorkspaceTab": "Workspace" 741 + }, 742 + "projectSettings": { 743 + "projectLabel": "Projekt" 744 + }, 745 + "keyboardShortcuts": { 746 + "title": "Tastenkürzel", 747 + "subtitle": "Beschleunige deinen Workflow mit Tastenkürzeln", 748 + "searchPlaceholder": "Tastenkürzel suchen...", 749 + "footer": "Drücke <kbd>Escape</kbd>, um zu schließen", 750 + "categories": { 751 + "general": "Allgemein", 752 + "create": "Erstellen", 753 + "views": "Ansichten", 754 + "navigation": "Navigation", 755 + "quickSelect": "Schnellauswahl (in Popovers)" 756 + }, 757 + "items": { 758 + "openCommandPalette": "Befehlspalette öffnen", 759 + "globalSearch": "Globale Suche", 760 + "toggleSidebar": "Sidebar umschalten", 761 + "showShortcuts": "Tastenkürzel anzeigen", 762 + "closeModal": "Modal/Popover schließen", 763 + "createTask": "Aufgabe erstellen", 764 + "createProject": "Projekt erstellen", 765 + "createWorkspace": "Workspace erstellen", 766 + "boardView": "Zur Board-Ansicht wechseln", 767 + "listView": "Zur Listenansicht wechseln", 768 + "backlogView": "Zur Backlog-Ansicht wechseln", 769 + "nextTask": "Nächste Aufgabe", 770 + "prevTask": "Vorherige Aufgabe", 771 + "openTask": "Ausgewählte Aufgabe öffnen", 772 + "quickSelectNumber": "Option per Nummer auswählen" 773 + } 774 + } 775 + }, 776 + "notifications": { 777 + "title": "Benachrichtigungen", 778 + "newCount_one": "{{count}} neu", 779 + "newCount_other": "{{count}} neu", 780 + "emptyTitle": "Noch keine Benachrichtigungen", 781 + "emptySubtitle": "Hier erscheinen Updates und Aktivitäten.", 782 + "clearAll": "Alle Benachrichtigungen löschen", 783 + "clearDialogTitle": "Alle Benachrichtigungen löschen?", 784 + "clearDialogDescription": "Dadurch werden alle Benachrichtigungen dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 785 + "shortcuts": { 786 + "open": "Benachrichtigungen öffnen" 787 + }, 788 + "events": { 789 + "task_created": { 790 + "title": "Neue Aufgabe erstellt", 791 + "content": "Die Aufgabe \"{{taskTitle}}\" wurde erstellt" 792 + }, 793 + "workspace_created": { 794 + "title": "Workspace erstellt", 795 + "content": "Dein Workspace \"{{workspaceName}}\" wurde erfolgreich erstellt" 796 + }, 797 + "task_status_changed": { 798 + "title": "Aufgabenstatus geändert", 799 + "content": "Der Status der Aufgabe \"{{taskTitle}}\" wurde von \"{{oldStatus}}\" zu \"{{newStatus}}\" geändert" 800 + }, 801 + "task_assignee_changed": { 802 + "title": "Aufgabe wurde dir zugewiesen", 803 + "content": "Dir wurde die Aufgabe \"{{taskTitle}}\" zugewiesen" 804 + }, 805 + "time_entry_created": { 806 + "title": "Zeiterfassung gestartet", 807 + "contentWithTask": "Die Zeiterfassung für die Aufgabe \"{{taskTitle}}\" wurde gestartet", 808 + "contentWithoutTask": "Die Zeiterfassung für eine Aufgabe wurde gestartet" 809 + } 810 + } 811 + }, 812 + "activity": { 813 + "assignedToSelf": "hat sich die Aufgabe selbst zugewiesen", 814 + "unassigned": "hat die Zuweisung der Aufgabe entfernt", 815 + "assignedTo": "hat die Aufgabe {{name}} zugewiesen", 816 + "changedStatus": "hat den Status von {{from}} zu {{to}} geändert", 817 + "changedPriority": "hat die Priorität von {{from}} zu {{to}} geändert", 818 + "clearedDueDate": "hat das Fälligkeitsdatum entfernt", 819 + "setDueDate": "hat das Fälligkeitsdatum auf {{date}} gesetzt", 820 + "changedDueDate": "hat das Fälligkeitsdatum von {{from}} zu {{to}} geändert", 821 + "changedTitle": "hat den Titel von \"{{from}}\" zu \"{{to}}\" geändert", 822 + "githubUser": "GitHub-Benutzer", 823 + "comment": { 824 + "github": "GitHub", 825 + "viewGithubProfile": "GitHub-Profil ansehen", 826 + "commentedOnGithub": "hat auf GitHub kommentiert", 827 + "cannotBeEmpty": "Kommentar darf nicht leer sein", 828 + "mustBeLoggedInToEdit": "Du musst angemeldet sein, um Kommentare zu bearbeiten", 829 + "updated": "Kommentar aktualisiert", 830 + "failedToUpdate": "Kommentar konnte nicht aktualisiert werden", 831 + "edit": "Kommentar bearbeiten", 832 + "editPlaceholder": "Kommentar bearbeiten...", 833 + "save": "Speichern", 834 + "added": "Kommentar hinzugefügt", 835 + "failedToAdd": "Kommentar konnte nicht hinzugefügt werden", 836 + "leavePlaceholder": "Hinterlasse einen Kommentar...", 837 + "attachFile": "Datei anhängen", 838 + "submitShortcut": "Kommentar absenden", 839 + "editor": { 840 + "uploadsOnlyOnSavedTasks": "Datei-Uploads sind nur bei gespeicherten Aufgaben verfügbar.", 841 + "uploadingFile": "Datei wird hochgeladen...", 842 + "imageUploaded": "Bild hochgeladen", 843 + "fileAttached": "Datei angehängt", 844 + "failedToUploadFile": "Datei konnte nicht hochgeladen werden", 845 + "enterUrl": "URL eingeben", 846 + "plaintext": "Klartext", 847 + "autoDetect": "Automatisch erkennen", 848 + "slashGroupText": "Text", 849 + "slashGroupLists": "Listen", 850 + "slashGroupInsert": "Einfügen", 851 + "slashParagraph": "Text", 852 + "slashHeading": "Überschrift", 853 + "slashBulletList": "Aufzählungsliste", 854 + "slashTaskList": "To-do-Liste", 855 + "slashOrderedList": "Nummerierte Liste", 856 + "slashQuote": "Zitat", 857 + "slashCodeBlock": "Codeblock", 858 + "slashTable": "Tabelle", 859 + "slashFile": "Datei", 860 + "searchParagraph": "text absatz normal", 861 + "searchHeading": "überschrift titel h2", 862 + "searchBulletList": "liste aufzählung ungeordnet", 863 + "searchTaskList": "todo to-do checkliste checkbox aufgabenliste", 864 + "searchOrderedList": "liste geordnet nummeriert", 865 + "searchQuote": "zitat blockquote", 866 + "searchCodeBlock": "code snippet", 867 + "searchTable": "tabelle raster", 868 + "searchFile": "datei anhang bild foto upload", 869 + "embedErrorInvalidUrl": "Gib eine gültige URL ein", 870 + "embedErrorYoutubeOnly": "Nur YouTube-Links können eingebettet werden.", 871 + "embedVideo": "Video einbetten", 872 + "keepAsLink": "Als Link behalten", 873 + "hintTab": "Tab", 874 + "hintEsc": "Esc", 875 + "pasteUrl": "URL einfügen", 876 + "asLink": "Als Link", 877 + "embed": "Einbetten", 878 + "noCommands": "Keine Befehle", 879 + "ariaCommentContent": "Kommentarinhalt", 880 + "ariaCommentEditor": "Kommentar-Editor", 881 + "ariaCopyCode": "Code kopieren", 882 + "ariaCopied": "Kopiert", 883 + "copy": "Kopieren", 884 + "copied": "Kopiert", 885 + "dropImageToUpload": "Bild zum Hochladen ablegen", 886 + "previewImageAlt": "Bildvorschau", 887 + "codeLang": { 888 + "bash": "Bash", 889 + "csharp": "C#", 890 + "cpp": "C++", 891 + "css": "CSS", 892 + "go": "Golang", 893 + "graphql": "GraphQL", 894 + "html": "HTML", 895 + "json": "JSON", 896 + "java": "Java", 897 + "javascript": "JavaScript", 898 + "markdown": "Markdown", 899 + "plaintext": "Klartext", 900 + "python": "Python", 901 + "rust": "Rust", 902 + "sql": "SQL", 903 + "swift": "Swift", 904 + "typescript": "TypeScript", 905 + "yaml": "YAML" 906 + } 907 + } 908 + } 909 + }, 910 + "tasks": { 911 + "status": { 912 + "label": "Status", 913 + "to-do": "Zu erledigen", 914 + "in-progress": "In Bearbeitung", 915 + "in-review": "In Prüfung", 916 + "done": "Erledigt", 917 + "archived": "Archiviert", 918 + "planned": "Geplant" 919 + }, 920 + "priority": { 921 + "label": "Priorität", 922 + "no-priority": "Keine Priorität", 923 + "low": "Niedrig", 924 + "medium": "Mittel", 925 + "high": "Hoch", 926 + "urgent": "Dringend" 927 + }, 928 + "boardSearchPlaceholder": "Tickets suchen...", 929 + "view": { 930 + "board": "Board", 931 + "list": "Liste" 932 + }, 933 + "common": { 934 + "selectTask": "Aufgabe auswählen", 935 + "loadingTask": "Aufgabe wird geladen..." 936 + }, 937 + "detail": { 938 + "subtaskOf": "Teilaufgabe von", 939 + "activity": "Aktivität", 940 + "noActivity": "Keine Aktivität gefunden", 941 + "openInFullPage": "Auf ganzer Seite öffnen", 942 + "titlePlaceholder": "Klicken, um einen Titel hinzuzufügen", 943 + "addDescription": "Beschreibung hinzufügen...", 944 + "editor": { 945 + "ariaLabel": "Editor für Aufgabenbeschreibung", 946 + "placeholder": "Schreibe eine Beschreibung...", 947 + "previewImage": "Bildvorschau", 948 + "enterUrl": "URL eingeben", 949 + "autoDetect": "Automatisch erkennen", 950 + "copyCode": "Code kopieren", 951 + "copy": "Kopieren", 952 + "copied": "Kopiert", 953 + "attachFile": "Datei anhängen", 954 + "dropToUpload": "Bild zum Hochladen ablegen", 955 + "checkbox": { 956 + "markIncomplete": "Aufgabe als unvollständig markieren", 957 + "markComplete": "Aufgabe als abgeschlossen markieren" 958 + }, 959 + "upload": { 960 + "loading": "Datei wird hochgeladen...", 961 + "failed": "Datei konnte nicht hochgeladen werden", 962 + "imageSuccess": "Bild hochgeladen", 963 + "fileSuccess": "Datei angehängt" 964 + }, 965 + "slash": { 966 + "groups": { 967 + "text": "Text", 968 + "lists": "Listen", 969 + "insert": "Einfügen" 970 + }, 971 + "empty": "Keine Befehle", 972 + "commands": { 973 + "paragraph": "Text", 974 + "heading-2": "Überschrift", 975 + "bullet-list": "Aufzählungsliste", 976 + "task-list": "To-do-Liste", 977 + "ordered-list": "Nummerierte Liste", 978 + "blockquote": "Zitat", 979 + "code-block": "Codeblock", 980 + "table": "Tabelle", 981 + "file": "Datei" 982 + } 983 + }, 984 + "languages": { 985 + "bash": "Bash", 986 + "csharp": "C#", 987 + "cpp": "C++", 988 + "css": "CSS", 989 + "clojure": "Clojure", 990 + "cypher": "Cypher", 991 + "dart": "Dart", 992 + "diff": "Diff", 993 + "elixir": "Elixir", 994 + "excel": "Excel", 995 + "go": "Golang", 996 + "graphql": "GraphQL", 997 + "html": "HTML", 998 + "haskell": "Haskell", 999 + "json": "JSON", 1000 + "java": "Java", 1001 + "javascript": "JavaScript", 1002 + "kotlin": "Kotlin", 1003 + "makefile": "Makefile", 1004 + "markdown": "Markdown", 1005 + "ocaml": "OCaml", 1006 + "php": "PHP", 1007 + "perl": "Perl", 1008 + "plaintext": "Klartext", 1009 + "python": "Python", 1010 + "r": "R", 1011 + "reasonml": "ReasonML", 1012 + "ruby": "Ruby", 1013 + "rust": "Rust", 1014 + "sql": "SQL", 1015 + "swift": "Swift", 1016 + "toml": "TOML", 1017 + "terraform": "Terraform", 1018 + "typescript": "TypeScript", 1019 + "xml": "XML", 1020 + "yaml": "YAML" 1021 + }, 1022 + "embed": { 1023 + "choice": { 1024 + "embedVideo": "Video einbetten", 1025 + "keepAsLink": "Als Link behalten" 1026 + }, 1027 + "inputPlaceholder": "URL einfügen", 1028 + "embeddedContent": "Eingebetteter Inhalt", 1029 + "asLink": "Als Link", 1030 + "submit": "Einbetten", 1031 + "errors": { 1032 + "invalidUrl": "Gib eine gültige URL ein", 1033 + "onlyYoutube": "Nur YouTube-Links können eingebettet werden." 1034 + }, 1035 + "onlyYoutubeInline": "Nur YouTube-URLs können eingebettet werden. Verwende stattdessen den Link-Modus." 1036 + } 1037 + } 1038 + }, 1039 + "entity": { 1040 + "task": "Aufgabe" 1041 + }, 1042 + "relations": { 1043 + "title": "Beziehungen", 1044 + "tasksInProject": "Aufgaben im Projekt", 1045 + "linkError": "Aufgabe konnte nicht verknüpft werden", 1046 + "empty": "Keine verknüpften Aufgaben", 1047 + "searchPlaceholder": "Aufgaben zum Verknüpfen suchen...", 1048 + "noTasksFound": "Keine Aufgaben gefunden", 1049 + "openTask": "Aufgabe öffnen", 1050 + "removeRelation": "Beziehung entfernen", 1051 + "related": "Verwandt", 1052 + "blocks": "Blockiert", 1053 + "selectTask": "Wähle eine Aufgabe zum Verknüpfen aus", 1054 + "types": { 1055 + "blocks": "blockiert", 1056 + "related": "steht in Beziehung zu" 1057 + } 1058 + }, 1059 + "subtasks": { 1060 + "title": "Teilaufgaben", 1061 + "inputPlaceholder": "Titel der Teilaufgabe...", 1062 + "addAction": "Hinzufügen", 1063 + "empty": "Noch keine Teilaufgaben", 1064 + "createError": "Teilaufgabe konnte nicht erstellt werden", 1065 + "deleteSuccess": "Aufgabe erfolgreich gelöscht", 1066 + "deleteError": "Aufgabe konnte nicht gelöscht werden", 1067 + "deleteDialogTitle": "Aufgabe löschen?", 1068 + "deleteDialogDescription": "Dadurch wird die Aufgabe und alle zugehörigen Daten dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 1069 + "deleteAction": "Aufgabe löschen" 1070 + }, 1071 + "properties": { 1072 + "title": "Eigenschaften", 1073 + "labels": "Labels", 1074 + "copyTaskLink": "Aufgabenlink kopieren", 1075 + "copyTaskBranch": "Aufgaben-Branch kopieren", 1076 + "start": "Start", 1077 + "startDate": "Startdatum", 1078 + "noDate": "Kein Datum" 1079 + }, 1080 + "popover": { 1081 + "assignee": { 1082 + "unassigned": "Nicht zugewiesen", 1083 + "updateError": "Aufgabenzuweisung konnte nicht aktualisiert werden" 1084 + }, 1085 + "status": { 1086 + "updateError": "Aufgabenstatus konnte nicht aktualisiert werden" 1087 + }, 1088 + "priority": { 1089 + "updateError": "Aufgabenpriorität konnte nicht aktualisiert werden" 1090 + }, 1091 + "dueDate": { 1092 + "updateSuccess": "Fälligkeitsdatum erfolgreich aktualisiert", 1093 + "updateError": "Fälligkeitsdatum konnte nicht aktualisiert werden", 1094 + "clear": "Datum entfernen" 1095 + }, 1096 + "startDate": { 1097 + "updateSuccess": "Startdatum erfolgreich aktualisiert", 1098 + "updateError": "Startdatum konnte nicht aktualisiert werden", 1099 + "clear": "Startdatum entfernen" 1100 + }, 1101 + "labels": { 1102 + "searchPlaceholder": "Labels suchen...", 1103 + "empty": "Keine Labels gefunden", 1104 + "create": "\"{{name}}\" erstellen", 1105 + "chooseColor": "Farbe auswählen", 1106 + "addSuccess": "Label hinzugefügt", 1107 + "removeSuccess": "Label entfernt", 1108 + "updateError": "Label konnte nicht aktualisiert werden", 1109 + "createSuccess": "Label erstellt und hinzugefügt", 1110 + "createError": "Label konnte nicht erstellt werden", 1111 + "colors": { 1112 + "stone": "Stein", 1113 + "slate": "Schiefer", 1114 + "lavender": "Lavendel", 1115 + "sage": "Salbei", 1116 + "forest": "Wald", 1117 + "amber": "Bernstein", 1118 + "terracotta": "Terrakotta", 1119 + "rose": "Rosa", 1120 + "crimson": "Karmesinrot" 1121 + } 1122 + } 1123 + }, 1124 + "backlog": { 1125 + "pageTitle": "{{name}}s Backlog", 1126 + "noTasksToMove": "Keine geplanten Aufgaben zum Verschieben", 1127 + "moveAllConfirm": "Alle {{count}} geplanten Aufgaben nach „Zu erledigen“ verschieben?", 1128 + "moveAllSuccess": "{{count}} Aufgaben nach „Zu erledigen“ verschoben", 1129 + "plan": "Planen", 1130 + "moveAllTooltip": "Alle geplanten Aufgaben nach „Zu erledigen“ verschieben", 1131 + "moveAll": "Alle verschieben", 1132 + "addTask": "Aufgabe hinzufügen", 1133 + "filter": "Filter", 1134 + "addFilter": "Filter hinzufügen...", 1135 + "sections": { 1136 + "planned": "Geplant", 1137 + "archived": "Archiviert" 1138 + }, 1139 + "noTasksInSection": "Keine {{section}}-Aufgaben", 1140 + "filters": { 1141 + "priority": "Priorität: {{name}}", 1142 + "assignee": "Zugewiesen: {{name}}", 1143 + "due": "Fällig: {{date}}", 1144 + "label": "Label: {{name}}", 1145 + "dueThisWeek": "Diese Woche fällig", 1146 + "dueNextWeek": "Nächste Woche fällig", 1147 + "noDueDate": "Kein Fälligkeitsdatum" 1148 + } 1149 + }, 1150 + "sort": { 1151 + "label": "Sortieren", 1152 + "by": "Sortieren nach", 1153 + "direction": "Richtung", 1154 + "ascending": "Aufsteigend", 1155 + "descending": "Absteigend", 1156 + "fields": { 1157 + "position": "Manuell (Position)", 1158 + "createdAt": "Erstellungsdatum", 1159 + "priority": "Priorität", 1160 + "dueDate": "Fälligkeitsdatum", 1161 + "title": "Titel", 1162 + "number": "Aufgabennummer" 1163 + } 1164 + }, 1165 + "boardFilters": { 1166 + "filterBy": "Filtern nach", 1167 + "allStatuses": "Alle Status", 1168 + "allPriorities": "Alle Prioritäten", 1169 + "allAssignees": "Alle Zugewiesenen", 1170 + "allDueDates": "Alle Fälligkeitsdaten", 1171 + "allLabels": "Alle Labels", 1172 + "selectedCount": "{{count}} ausgewählt", 1173 + "subjects": { 1174 + "status": "Status", 1175 + "priority": "Priorität", 1176 + "assignee": "Zugewiesen", 1177 + "dueDate": "Fälligkeitsdatum", 1178 + "labels": "Labels" 1179 + }, 1180 + "operators": { 1181 + "isAnyOf": "ist einer von", 1182 + "includeAnyOf": "enthält einen von" 1183 + } 1184 + }, 1185 + "gantt": { 1186 + "pageTitle": "{{name}} — Gantt", 1187 + "title": "Gantt-Zeitachse", 1188 + "searchPlaceholder": "Geplante Tickets suchen...", 1189 + "hideTasks": "Aufgaben ausblenden", 1190 + "showTasks": "Aufgaben anzeigen", 1191 + "noTasks": "Keine geplanten Aufgaben", 1192 + "noTasksSubtitle": "Füge Aufgaben ein Startdatum, ein Fälligkeitsdatum oder beides hinzu, um sie auf der Projektzeitleiste zu platzieren.", 1193 + "noTasksFound": "Keine Aufgaben gefunden", 1194 + "noTasksMatch": "Keine geplanten Aufgaben entsprechen \"{{query}}\"", 1195 + "taskHeader": "Aufgabe", 1196 + "updateDatesError": "Aufgabendaten konnten nicht aktualisiert werden", 1197 + "resizeStart": "Startdatum anpassen", 1198 + "resizeDue": "Fälligkeitsdatum anpassen", 1199 + "taskAriaLabel": "{{title}} — öffnen oder ziehen zum Verschieben" 1200 + }, 1201 + "delete": { 1202 + "title": "Aufgabe löschen?", 1203 + "description": "Dadurch wird die Aufgabe und alle zugehörigen Daten dauerhaft entfernt. Diese Aktion kann nicht rückgängig gemacht werden.", 1204 + "action": "Aufgabe löschen", 1205 + "success": "Aufgabe erfolgreich gelöscht", 1206 + "error": "Aufgabe konnte nicht gelöscht werden" 1207 + }, 1208 + "archive": { 1209 + "success": "{{count}} Aufgaben archiviert" 1210 + }, 1211 + "listView": { 1212 + "addTask": "Aufgabe hinzufügen", 1213 + "archiveAllTooltip": "Alle abgeschlossenen Aufgaben archivieren", 1214 + "noTasks": "Keine Aufgaben" 1215 + }, 1216 + "kanban": { 1217 + "addTask": "Aufgabe hinzufügen" 1218 + }, 1219 + "pr": { 1220 + "merged": "Zusammengeführt", 1221 + "draft": "Entwurf", 1222 + "open": "Offen", 1223 + "label": "Pull Request", 1224 + "count_one": "{{count}} PR", 1225 + "count_other": "{{count}} PRs" 1226 + }, 1227 + "assignee": { 1228 + "label": "Zugewiesen an", 1229 + "unassigned": "Nicht zugewiesen" 1230 + }, 1231 + "dueDate": { 1232 + "label": "Fälligkeitsdatum", 1233 + "clear": "Datum entfernen", 1234 + "updateSuccess": "Fälligkeitsdatum erfolgreich aktualisiert", 1235 + "updateError": "Fälligkeitsdatum konnte nicht aktualisiert werden", 1236 + "clearSuccess": "Fälligkeitsdatum entfernt", 1237 + "clearError": "Fälligkeitsdatum konnte nicht entfernt werden" 1238 + }, 1239 + "labels": { 1240 + "label": "Labels", 1241 + "empty": "Keine Labels verfügbar" 1242 + }, 1243 + "update": { 1244 + "success": "Aufgabe erfolgreich aktualisiert", 1245 + "error": "Aufgabe konnte nicht aktualisiert werden" 1246 + }, 1247 + "contextMenu": { 1248 + "copyLink": "Link kopieren", 1249 + "copyLinkSuccess": "Aufgabenlink kopiert!" 1250 + }, 1251 + "actions": { 1252 + "archive": "Archivieren", 1253 + "markAsPlanned": "Als geplant markieren", 1254 + "delete": "Löschen..." 1255 + }, 1256 + "bulk": { 1257 + "selectedCount": "{{count}} ausgewählt", 1258 + "moveToBacklog": "In Backlog verschieben", 1259 + "moveToBacklogSuccess": "{{count}} Aufgaben ins Backlog verschoben", 1260 + "moveToBacklogError": "Aufgaben konnten nicht ins Backlog verschoben werden", 1261 + "moveToBoard": "Aufs Board verschieben", 1262 + "moveToBoardSuccess": "{{count}} Aufgaben aufs Board verschoben", 1263 + "moveToBoardError": "Aufgaben konnten nicht aufs Board verschoben werden", 1264 + "delete": "Aufgaben löschen", 1265 + "deleteConfirm": "{{count}} Aufgaben löschen? Diese Aktion kann nicht rückgängig gemacht werden.", 1266 + "deleteSuccess": "{{count}} Aufgaben gelöscht", 1267 + "deleteError": "Aufgaben konnten nicht gelöscht werden", 1268 + "archive": "Aufgaben archivieren", 1269 + "archiveSuccess": "{{count}} Aufgaben archiviert", 1270 + "archiveError": "Aufgaben konnten nicht archiviert werden", 1271 + "updateSuccess": "{{count}} Aufgaben aktualisiert", 1272 + "updateError": "Aufgaben konnten nicht aktualisiert werden", 1273 + "assignTo": "Zuweisen an", 1274 + "assignSuccess": "{{count}} Aufgaben zugewiesen", 1275 + "assignError": "Aufgaben konnten nicht zugewiesen werden", 1276 + "setPriority": "Priorität festlegen", 1277 + "updatePriorityError": "Priorität konnte nicht aktualisiert werden", 1278 + "addLabel": "Label hinzufügen", 1279 + "addLabelSuccess": "Label zu {{count}} Aufgaben hinzugefügt", 1280 + "addLabelError": "Label konnte nicht hinzugefügt werden", 1281 + "setDueDate": "Fälligkeitsdatum festlegen", 1282 + "updateDueDateError": "Fälligkeitsdatum konnte nicht aktualisiert werden", 1283 + "actions": "Aktionen", 1284 + "searchActions": "Aktionen suchen...", 1285 + "noActionsFound": "Keine Aktionen gefunden.", 1286 + "changeStatus": "Status ändern" 1287 + } 1288 + }, 1289 + "invitations": { 1290 + "pageTitle": "Einladungen", 1291 + "pendingInvitations": "Ausstehende Einladungen", 1292 + "acceptSubtitle": "Nimm Einladungen an, um Workspaces beizutreten", 1293 + "noPendingTitle": "Keine ausstehenden Einladungen", 1294 + "noPendingDescription": "Du hast derzeit keine ausstehenden Workspace-Einladungen.", 1295 + "continueToSetup": "Weiter zum Setup", 1296 + "skipForNow": "Vorerst überspringen", 1297 + "table": { 1298 + "workspace": "Workspace", 1299 + "invitedBy": "Eingeladen von", 1300 + "expires": "Läuft ab" 1301 + }, 1302 + "toast": { 1303 + "acceptError": "Einladung konnte nicht angenommen werden", 1304 + "acceptSuccess": "Einladung angenommen! Willkommen im Team.", 1305 + "rejectError": "Einladung konnte nicht abgelehnt werden", 1306 + "rejectSuccess": "Einladung abgelehnt" 1307 + } 1308 + }, 1309 + "workspace": { 1310 + "projects": { 1311 + "pageTitle": "Projekte", 1312 + "createProject": "Projekt erstellen", 1313 + "title": "Titel", 1314 + "progress": "Fortschritt", 1315 + "targetDate": "Zieldatum", 1316 + "dueDate": "Fälligkeitsdatum", 1317 + "status": "Status", 1318 + "emptyTitle": "Noch keine Projekte", 1319 + "emptyDescription": "Lege los, indem du dein erstes Projekt erstellst.", 1320 + "projectStatus": { 1321 + "notStarted": "Nicht begonnen", 1322 + "complete": "Abgeschlossen", 1323 + "inProgress": "In Bearbeitung" 1324 + }, 1325 + "noDueDate": "Kein Fälligkeitsdatum" 1326 + }, 1327 + "search": { 1328 + "pageTitle": "Suche", 1329 + "backToDashboard": "Zurück zum Dashboard", 1330 + "placeholder": "Suche nach Aufgaben nach Titel oder Kurz-ID (z. B. DEP-23)...", 1331 + "hint": "Suche über alle Projekte in diesem Workspace. Nutze Kurz-IDs wie DEP-23, um bestimmte Aufgaben zu finden.", 1332 + "searching": "Suche läuft...", 1333 + "resultsFound_one": "{{count}} Ergebnis gefunden", 1334 + "resultsFound_other": "{{count}} Ergebnisse gefunden", 1335 + "noResultsTitle": "Keine Ergebnisse gefunden", 1336 + "noResultsDescription": "Passe deine Suchbegriffe an oder suche nach etwas anderem", 1337 + "startTitle": "Suche starten", 1338 + "startDescription": "Gib einen Suchbegriff ein, um Aufgaben in allen Projekten zu finden", 1339 + "quickSearchesLabel": "Schnellsuchen:", 1340 + "suggestionHighPriority": "Hohe Priorität", 1341 + "suggestionBug": "Bug", 1342 + "suggestionFeature": "Feature", 1343 + "suggestionInProgress": "In Bearbeitung", 1344 + "suggestionCompleted": "Abgeschlossen" 1345 + }, 1346 + "create": { 1347 + "pageTitle": "Workspace erstellen", 1348 + "heading": "Neuen Workspace erstellen", 1349 + "subtitle": "Workspaces sind gemeinsame Umgebungen, in denen Teams an Projekten, Zyklen und Issues arbeiten können.", 1350 + "nameLabel": "Workspace-Name", 1351 + "namePlaceholder": "Workspace-Namen eingeben", 1352 + "descriptionLabel": "Beschreibung (optional)", 1353 + "descriptionPlaceholder": "Füge eine Beschreibung für deinen Workspace hinzu", 1354 + "required": "Erforderlich", 1355 + "creating": "Wird erstellt...", 1356 + "submit": "Workspace erstellen", 1357 + "success": "Workspace erfolgreich erstellt", 1358 + "error": "Workspace konnte nicht erstellt werden" 1359 + } 1360 + }, 1361 + "team": { 1362 + "roles": { 1363 + "owner": "Eigentümer", 1364 + "admin": "Admin", 1365 + "member": "Mitglied" 1366 + }, 1367 + "members": { 1368 + "pageTitle": "Mitglieder", 1369 + "inviteMember": "Mitglied einladen" 1370 + }, 1371 + "inviteModal": { 1372 + "title": "Teammitglied einladen", 1373 + "emailLabel": "E-Mail", 1374 + "emailPlaceholder": "kollege@firma.com", 1375 + "sendInvitation": "Einladung senden", 1376 + "success": "Einladung erfolgreich gesendet", 1377 + "error": "Teammitglied konnte nicht eingeladen werden" 1378 + }, 1379 + "membersTable": { 1380 + "emptyTitle": "Noch keine Teammitglieder", 1381 + "emptyDescription": "Lade dein erstes Teammitglied ein, um loszulegen.", 1382 + "columns": { 1383 + "name": "Name", 1384 + "role": "Rolle", 1385 + "joined": "Beigetreten", 1386 + "actions": "Aktionen" 1387 + }, 1388 + "memberRolePending": "{{role}} (Ausstehend)", 1389 + "ariaCancelInvitation": "Einladung abbrechen", 1390 + "ariaRemoveMember": "Mitglied entfernen", 1391 + "removeDialogTitle": "Teammitglied entfernen?", 1392 + "removeDialogDescription": "Bist du sicher, dass du {{name}} aus dem Workspace entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", 1393 + "cancelDialogTitle": "Einladung abbrechen?", 1394 + "cancelDialogDescription": "Bist du sicher, dass du die Einladung für {{email}} abbrechen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", 1395 + "removeMember": "Mitglied entfernen", 1396 + "cancelInvitation": "Einladung abbrechen", 1397 + "removeSuccess": "Teammitglied erfolgreich entfernt", 1398 + "removeError": "Teammitglied konnte nicht entfernt werden", 1399 + "cancelInviteSuccess": "Einladung erfolgreich abgebrochen", 1400 + "cancelInviteError": "Einladung konnte nicht abgebrochen werden" 1401 + } 1402 + }, 1403 + "publicProject": { 1404 + "pageTitle": "Öffentliche Ansicht", 1405 + "badge": "Öffentlich", 1406 + "readOnly": "Schreibgeschützt", 1407 + "error": { 1408 + "title": "Projekt nicht gefunden", 1409 + "description": "Dieses Projekt existiert nicht oder ist nicht öffentlich zugänglich." 1410 + }, 1411 + "taskCard": { 1412 + "viewDetailsAria": "Details für Aufgabe {{title}} ansehen" 1413 + }, 1414 + "taskDetail": { 1415 + "labels": "Labels", 1416 + "externalLinks": "Externe Links", 1417 + "pullRequestFallback": "Pull Request", 1418 + "issueFallback": "Issue", 1419 + "prStatusMerged": "Zusammengeführt", 1420 + "prStatusDraft": "Entwurf", 1421 + "prStatusOpen": "Offen", 1422 + "dueWithDate": "Fällig {{date}}", 1423 + "created": "Erstellt", 1424 + "dueDateLabel": "Fälligkeitsdatum" 1425 + }, 1426 + "theme": { 1427 + "switchToLight": "Zu hellem Modus wechseln", 1428 + "switchToDark": "Zu dunklem Modus wechseln" 1429 + }, 1430 + "copyUrl": { 1431 + "successToast": "URL kopiert", 1432 + "errorToast": "URL konnte nicht kopiert werden", 1433 + "copied": "Kopiert", 1434 + "share": "Teilen" 1435 + }, 1436 + "branding": { 1437 + "poweredBy": "Bereitgestellt von" 1438 + } 1439 + } 1440 1440 }
+5 -5
i18n/en-US.json
··· 1137 1137 "archived": "Archived" 1138 1138 }, 1139 1139 "noTasksInSection": "No {{section}} tasks", 1140 - "filters": { 1141 - "priority": "Priority: {{name}}", 1142 - "assignee": "Assignee: {{name}}", 1143 - "due": "Due: {{date}}", 1144 - "label": "Label: {{name}}", 1140 + "filters": { 1141 + "priority": "Priority: {{name}}", 1142 + "assignee": "Assignee: {{name}}", 1143 + "due": "Due: {{date}}", 1144 + "label": "Label: {{name}}", 1145 1145 "dueThisWeek": "Due this week", 1146 1146 "dueNextWeek": "Due next week", 1147 1147 "noDueDate": "No due date"
+1 -1
i18n/resources.ts
··· 1 - import enUS from "./en-US.json"; 2 1 import deDE from "./de-DE.json"; 2 + import enUS from "./en-US.json"; 3 3 4 4 export const supportedLocales = ["en-US", "de-DE"] as const; 5 5
+68 -288
i18n/schema.json
··· 68 68 "type": "string" 69 69 } 70 70 }, 71 - "required": [ 72 - "toggleSidebar" 73 - ] 71 + "required": ["toggleSidebar"] 74 72 }, 75 73 "sidebar": { 76 74 "type": "object", ··· 83 81 "type": "string" 84 82 } 85 83 }, 86 - "required": [ 87 - "title", 88 - "mobileDescription" 89 - ] 84 + "required": ["title", "mobileDescription"] 90 85 }, 91 86 "empty": { 92 87 "type": "object", ··· 96 91 "type": "string" 97 92 } 98 93 }, 99 - "required": [ 100 - "loading" 101 - ] 94 + "required": ["loading"] 102 95 }, 103 96 "pagination": { 104 97 "type": "object", ··· 143 136 "type": "string" 144 137 } 145 138 }, 146 - "required": [ 147 - "label", 148 - "more" 149 - ] 139 + "required": ["label", "more"] 150 140 }, 151 141 "language": { 152 142 "type": "object", ··· 159 149 "type": "string" 160 150 } 161 151 }, 162 - "required": [ 163 - "english", 164 - "german" 165 - ] 152 + "required": ["english", "german"] 166 153 }, 167 154 "people": { 168 155 "type": "object", ··· 175 162 "type": "string" 176 163 } 177 164 }, 178 - "required": [ 179 - "someone", 180 - "unknown" 181 - ] 165 + "required": ["someone", "unknown"] 182 166 }, 183 167 "error": { 184 168 "type": "object", ··· 216 200 "type": "string" 217 201 } 218 202 }, 219 - "required": [ 220 - "never" 221 - ] 203 + "required": ["never"] 222 204 }, 223 205 "modals": { 224 206 "type": "object", ··· 490 472 ] 491 473 } 492 474 }, 493 - "required": [ 494 - "createProject", 495 - "createWorkspace", 496 - "createTask" 497 - ] 475 + "required": ["createProject", "createWorkspace", "createTask"] 498 476 } 499 477 }, 500 478 "required": [ ··· 619 597 "type": "string" 620 598 } 621 599 }, 622 - "required": [ 623 - "google", 624 - "discord" 625 - ] 600 + "required": ["google", "discord"] 626 601 }, 627 602 "forms": { 628 603 "type": "object", ··· 787 762 "type": "string" 788 763 } 789 764 }, 790 - "required": [ 791 - "codeLength" 792 - ] 765 + "required": ["codeLength"] 793 766 }, 794 767 "toast": { 795 768 "type": "object", ··· 875 848 "type": "string" 876 849 } 877 850 }, 878 - "required": [ 879 - "failedSignIn", 880 - "signedInSuccess", 881 - "signingIn", 882 - "signIn" 883 - ] 851 + "required": ["failedSignIn", "signedInSuccess", "signingIn", "signIn"] 884 852 }, 885 853 "signUpForm": { 886 854 "type": "object", ··· 996 964 "type": "string" 997 965 } 998 966 }, 999 - "required": [ 1000 - "acceptFailed", 1001 - "acceptSuccess" 1002 - ] 967 + "required": ["acceptFailed", "acceptSuccess"] 1003 968 } 1004 969 }, 1005 970 "required": [ ··· 1078 1043 "type": "string" 1079 1044 } 1080 1045 }, 1081 - "required": [ 1082 - "workspaceCreated", 1083 - "createFailed" 1084 - ] 1046 + "required": ["workspaceCreated", "createFailed"] 1085 1047 }, 1086 1048 "validation": { 1087 1049 "type": "object", ··· 1091 1053 "type": "string" 1092 1054 } 1093 1055 }, 1094 - "required": [ 1095 - "workspaceNameRequired" 1096 - ] 1056 + "required": ["workspaceNameRequired"] 1097 1057 } 1098 1058 }, 1099 1059 "required": [ ··· 1155 1115 "type": "string" 1156 1116 } 1157 1117 }, 1158 - "required": [ 1159 - "updateSuccess", 1160 - "updateFailed" 1161 - ] 1118 + "required": ["updateSuccess", "updateFailed"] 1162 1119 }, 1163 1120 "validation": { 1164 1121 "type": "object", ··· 1171 1128 "type": "string" 1172 1129 } 1173 1130 }, 1174 - "required": [ 1175 - "nameRequired", 1176 - "nameShort" 1177 - ] 1131 + "required": ["nameRequired", "nameShort"] 1178 1132 } 1179 1133 }, 1180 1134 "required": [ ··· 1280 1234 "type": "string" 1281 1235 } 1282 1236 }, 1283 - "required": [ 1284 - "nameRequired", 1285 - "nameShort", 1286 - "invalidEmail" 1287 - ] 1237 + "required": ["nameRequired", "nameShort", "invalidEmail"] 1288 1238 } 1289 1239 }, 1290 1240 "required": [ ··· 1709 1659 ] 1710 1660 } 1711 1661 }, 1712 - "required": [ 1713 - "createdModal", 1714 - "table", 1715 - "createDialog" 1716 - ] 1662 + "required": ["createdModal", "table", "createDialog"] 1717 1663 }, 1718 1664 "workspaceGeneral": { 1719 1665 "type": "object", ··· 1796 1742 "type": "string" 1797 1743 } 1798 1744 }, 1799 - "required": [ 1800 - "nameRequired", 1801 - "nameShort" 1802 - ] 1745 + "required": ["nameRequired", "nameShort"] 1803 1746 } 1804 1747 }, 1805 1748 "required": [ ··· 2120 2063 "type": "string" 2121 2064 } 2122 2065 }, 2123 - "required": [ 2124 - "selectProject", 2125 - "noProjects" 2126 - ] 2066 + "required": ["selectProject", "noProjects"] 2127 2067 }, 2128 2068 "columnEditor": { 2129 2069 "type": "object", ··· 2785 2725 "type": "string" 2786 2726 } 2787 2727 }, 2788 - "required": [ 2789 - "navigate", 2790 - "open", 2791 - "close" 2792 - ] 2728 + "required": ["navigate", "open", "close"] 2793 2729 } 2794 2730 }, 2795 2731 "required": [ ··· 2833 2769 "type": "string" 2834 2770 } 2835 2771 }, 2836 - "required": [ 2837 - "overview", 2838 - "projects", 2839 - "members", 2840 - "invitations", 2841 - "more" 2842 - ] 2772 + "required": ["overview", "projects", "members", "invitations", "more"] 2843 2773 }, 2844 2774 "projectList": { 2845 2775 "type": "object", ··· 2924 2854 ] 2925 2855 } 2926 2856 }, 2927 - "required": [ 2928 - "inputPlaceholder", 2929 - "minCharsHint", 2930 - "groups" 2931 - ] 2857 + "required": ["inputPlaceholder", "minCharsHint", "groups"] 2932 2858 }, 2933 2859 "settingsLayout": { 2934 2860 "type": "object", ··· 2941 2867 "type": "string" 2942 2868 } 2943 2869 }, 2944 - "required": [ 2945 - "toggleSidebar", 2946 - "back" 2947 - ] 2870 + "required": ["toggleSidebar", "back"] 2948 2871 }, 2949 2872 "userMenu": { 2950 2873 "type": "object", ··· 3034 2957 "type": "string" 3035 2958 } 3036 2959 }, 3037 - "required": [ 3038 - "projectLabel" 3039 - ] 2960 + "required": ["projectLabel"] 3040 2961 }, 3041 2962 "keyboardShortcuts": { 3042 2963 "type": "object", ··· 3211 3132 "type": "string" 3212 3133 } 3213 3134 }, 3214 - "required": [ 3215 - "open" 3216 - ] 3135 + "required": ["open"] 3217 3136 }, 3218 3137 "events": { 3219 3138 "type": "object", ··· 3230 3149 "type": "string" 3231 3150 } 3232 3151 }, 3233 - "required": [ 3234 - "title", 3235 - "content" 3236 - ] 3152 + "required": ["title", "content"] 3237 3153 }, 3238 3154 "workspace_created": { 3239 3155 "type": "object", ··· 3246 3162 "type": "string" 3247 3163 } 3248 3164 }, 3249 - "required": [ 3250 - "title", 3251 - "content" 3252 - ] 3165 + "required": ["title", "content"] 3253 3166 }, 3254 3167 "task_status_changed": { 3255 3168 "type": "object", ··· 3262 3175 "type": "string" 3263 3176 } 3264 3177 }, 3265 - "required": [ 3266 - "title", 3267 - "content" 3268 - ] 3178 + "required": ["title", "content"] 3269 3179 }, 3270 3180 "task_assignee_changed": { 3271 3181 "type": "object", ··· 3278 3188 "type": "string" 3279 3189 } 3280 3190 }, 3281 - "required": [ 3282 - "title", 3283 - "content" 3284 - ] 3191 + "required": ["title", "content"] 3285 3192 }, 3286 3193 "time_entry_created": { 3287 3194 "type": "object", ··· 3297 3204 "type": "string" 3298 3205 } 3299 3206 }, 3300 - "required": [ 3301 - "title", 3302 - "contentWithTask", 3303 - "contentWithoutTask" 3304 - ] 3207 + "required": ["title", "contentWithTask", "contentWithoutTask"] 3305 3208 } 3306 3209 }, 3307 3210 "required": [ ··· 3807 3710 "type": "string" 3808 3711 } 3809 3712 }, 3810 - "required": [ 3811 - "board", 3812 - "list" 3813 - ] 3713 + "required": ["board", "list"] 3814 3714 }, 3815 3715 "common": { 3816 3716 "type": "object", ··· 3823 3723 "type": "string" 3824 3724 } 3825 3725 }, 3826 - "required": [ 3827 - "selectTask", 3828 - "loadingTask" 3829 - ] 3726 + "required": ["selectTask", "loadingTask"] 3830 3727 }, 3831 3728 "detail": { 3832 3729 "type": "object", ··· 3895 3792 "type": "string" 3896 3793 } 3897 3794 }, 3898 - "required": [ 3899 - "markIncomplete", 3900 - "markComplete" 3901 - ] 3795 + "required": ["markIncomplete", "markComplete"] 3902 3796 }, 3903 3797 "upload": { 3904 3798 "type": "object", ··· 3942 3836 "type": "string" 3943 3837 } 3944 3838 }, 3945 - "required": [ 3946 - "text", 3947 - "lists", 3948 - "insert" 3949 - ] 3839 + "required": ["text", "lists", "insert"] 3950 3840 }, 3951 3841 "empty": { 3952 3842 "type": "string" ··· 3996 3886 ] 3997 3887 } 3998 3888 }, 3999 - "required": [ 4000 - "groups", 4001 - "empty", 4002 - "commands" 4003 - ] 3889 + "required": ["groups", "empty", "commands"] 4004 3890 }, 4005 3891 "languages": { 4006 3892 "type": "object", ··· 4169 4055 "type": "string" 4170 4056 } 4171 4057 }, 4172 - "required": [ 4173 - "embedVideo", 4174 - "keepAsLink" 4175 - ] 4058 + "required": ["embedVideo", "keepAsLink"] 4176 4059 }, 4177 4060 "inputPlaceholder": { 4178 4061 "type": "string" ··· 4197 4080 "type": "string" 4198 4081 } 4199 4082 }, 4200 - "required": [ 4201 - "invalidUrl", 4202 - "onlyYoutube" 4203 - ] 4083 + "required": ["invalidUrl", "onlyYoutube"] 4204 4084 }, 4205 4085 "onlyYoutubeInline": { 4206 4086 "type": "string" ··· 4254 4134 "type": "string" 4255 4135 } 4256 4136 }, 4257 - "required": [ 4258 - "task" 4259 - ] 4137 + "required": ["task"] 4260 4138 }, 4261 4139 "relations": { 4262 4140 "type": "object", ··· 4306 4184 "type": "string" 4307 4185 } 4308 4186 }, 4309 - "required": [ 4310 - "blocks", 4311 - "related" 4312 - ] 4187 + "required": ["blocks", "related"] 4313 4188 } 4314 4189 }, 4315 4190 "required": [ ··· 4426 4301 "type": "string" 4427 4302 } 4428 4303 }, 4429 - "required": [ 4430 - "unassigned", 4431 - "updateError" 4432 - ] 4304 + "required": ["unassigned", "updateError"] 4433 4305 }, 4434 4306 "status": { 4435 4307 "type": "object", ··· 4439 4311 "type": "string" 4440 4312 } 4441 4313 }, 4442 - "required": [ 4443 - "updateError" 4444 - ] 4314 + "required": ["updateError"] 4445 4315 }, 4446 4316 "priority": { 4447 4317 "type": "object", ··· 4451 4321 "type": "string" 4452 4322 } 4453 4323 }, 4454 - "required": [ 4455 - "updateError" 4456 - ] 4324 + "required": ["updateError"] 4457 4325 }, 4458 4326 "dueDate": { 4459 4327 "type": "object", ··· 4469 4337 "type": "string" 4470 4338 } 4471 4339 }, 4472 - "required": [ 4473 - "updateSuccess", 4474 - "updateError", 4475 - "clear" 4476 - ] 4340 + "required": ["updateSuccess", "updateError", "clear"] 4477 4341 }, 4478 4342 "startDate": { 4479 4343 "type": "object", ··· 4489 4353 "type": "string" 4490 4354 } 4491 4355 }, 4492 - "required": [ 4493 - "updateSuccess", 4494 - "updateError", 4495 - "clear" 4496 - ] 4356 + "required": ["updateSuccess", "updateError", "clear"] 4497 4357 }, 4498 4358 "labels": { 4499 4359 "type": "object", ··· 4639 4499 "type": "string" 4640 4500 } 4641 4501 }, 4642 - "required": [ 4643 - "planned", 4644 - "archived" 4645 - ] 4502 + "required": ["planned", "archived"] 4646 4503 }, 4647 4504 "noTasksInSection": { 4648 4505 "type": "string" ··· 4825 4682 "type": "string" 4826 4683 } 4827 4684 }, 4828 - "required": [ 4829 - "isAnyOf", 4830 - "includeAnyOf" 4831 - ] 4685 + "required": ["isAnyOf", "includeAnyOf"] 4832 4686 } 4833 4687 }, 4834 4688 "required": [ ··· 4927 4781 "type": "string" 4928 4782 } 4929 4783 }, 4930 - "required": [ 4931 - "title", 4932 - "description", 4933 - "action", 4934 - "success", 4935 - "error" 4936 - ] 4784 + "required": ["title", "description", "action", "success", "error"] 4937 4785 }, 4938 4786 "archive": { 4939 4787 "type": "object", ··· 4943 4791 "type": "string" 4944 4792 } 4945 4793 }, 4946 - "required": [ 4947 - "success" 4948 - ] 4794 + "required": ["success"] 4949 4795 }, 4950 4796 "listView": { 4951 4797 "type": "object", ··· 4961 4807 "type": "string" 4962 4808 } 4963 4809 }, 4964 - "required": [ 4965 - "addTask", 4966 - "archiveAllTooltip", 4967 - "noTasks" 4968 - ] 4810 + "required": ["addTask", "archiveAllTooltip", "noTasks"] 4969 4811 }, 4970 4812 "kanban": { 4971 4813 "type": "object", ··· 4975 4817 "type": "string" 4976 4818 } 4977 4819 }, 4978 - "required": [ 4979 - "addTask" 4980 - ] 4820 + "required": ["addTask"] 4981 4821 }, 4982 4822 "pr": { 4983 4823 "type": "object", ··· 5022 4862 "type": "string" 5023 4863 } 5024 4864 }, 5025 - "required": [ 5026 - "label", 5027 - "unassigned" 5028 - ] 4865 + "required": ["label", "unassigned"] 5029 4866 }, 5030 4867 "dueDate": { 5031 4868 "type": "object", ··· 5070 4907 "type": "string" 5071 4908 } 5072 4909 }, 5073 - "required": [ 5074 - "label", 5075 - "empty" 5076 - ] 4910 + "required": ["label", "empty"] 5077 4911 }, 5078 4912 "update": { 5079 4913 "type": "object", ··· 5086 4920 "type": "string" 5087 4921 } 5088 4922 }, 5089 - "required": [ 5090 - "success", 5091 - "error" 5092 - ] 4923 + "required": ["success", "error"] 5093 4924 }, 5094 4925 "contextMenu": { 5095 4926 "type": "object", ··· 5102 4933 "type": "string" 5103 4934 } 5104 4935 }, 5105 - "required": [ 5106 - "copyLink", 5107 - "copyLinkSuccess" 5108 - ] 4936 + "required": ["copyLink", "copyLinkSuccess"] 5109 4937 }, 5110 4938 "actions": { 5111 4939 "type": "object", ··· 5121 4949 "type": "string" 5122 4950 } 5123 4951 }, 5124 - "required": [ 5125 - "archive", 5126 - "markAsPlanned", 5127 - "delete" 5128 - ] 4952 + "required": ["archive", "markAsPlanned", "delete"] 5129 4953 }, 5130 4954 "bulk": { 5131 4955 "type": "object", ··· 5325 5149 "type": "string" 5326 5150 } 5327 5151 }, 5328 - "required": [ 5329 - "workspace", 5330 - "invitedBy", 5331 - "expires" 5332 - ] 5152 + "required": ["workspace", "invitedBy", "expires"] 5333 5153 }, 5334 5154 "toast": { 5335 5155 "type": "object", ··· 5417 5237 "type": "string" 5418 5238 } 5419 5239 }, 5420 - "required": [ 5421 - "notStarted", 5422 - "complete", 5423 - "inProgress" 5424 - ] 5240 + "required": ["notStarted", "complete", "inProgress"] 5425 5241 }, 5426 5242 "noDueDate": { 5427 5243 "type": "string" ··· 5574 5390 ] 5575 5391 } 5576 5392 }, 5577 - "required": [ 5578 - "projects", 5579 - "search", 5580 - "create" 5581 - ] 5393 + "required": ["projects", "search", "create"] 5582 5394 }, 5583 5395 "team": { 5584 5396 "type": "object", ··· 5598 5410 "type": "string" 5599 5411 } 5600 5412 }, 5601 - "required": [ 5602 - "owner", 5603 - "admin", 5604 - "member" 5605 - ] 5413 + "required": ["owner", "admin", "member"] 5606 5414 }, 5607 5415 "members": { 5608 5416 "type": "object", ··· 5615 5423 "type": "string" 5616 5424 } 5617 5425 }, 5618 - "required": [ 5619 - "pageTitle", 5620 - "inviteMember" 5621 - ] 5426 + "required": ["pageTitle", "inviteMember"] 5622 5427 }, 5623 5428 "inviteModal": { 5624 5429 "type": "object", ··· 5679 5484 "type": "string" 5680 5485 } 5681 5486 }, 5682 - "required": [ 5683 - "name", 5684 - "role", 5685 - "joined", 5686 - "actions" 5687 - ] 5487 + "required": ["name", "role", "joined", "actions"] 5688 5488 }, 5689 5489 "memberRolePending": { 5690 5490 "type": "string" ··· 5746 5546 ] 5747 5547 } 5748 5548 }, 5749 - "required": [ 5750 - "roles", 5751 - "members", 5752 - "inviteModal", 5753 - "membersTable" 5754 - ] 5549 + "required": ["roles", "members", "inviteModal", "membersTable"] 5755 5550 }, 5756 5551 "publicProject": { 5757 5552 "type": "object", ··· 5777 5572 "type": "string" 5778 5573 } 5779 5574 }, 5780 - "required": [ 5781 - "title", 5782 - "description" 5783 - ] 5575 + "required": ["title", "description"] 5784 5576 }, 5785 5577 "taskCard": { 5786 5578 "type": "object", ··· 5790 5582 "type": "string" 5791 5583 } 5792 5584 }, 5793 - "required": [ 5794 - "viewDetailsAria" 5795 - ] 5585 + "required": ["viewDetailsAria"] 5796 5586 }, 5797 5587 "taskDetail": { 5798 5588 "type": "object", ··· 5853 5643 "type": "string" 5854 5644 } 5855 5645 }, 5856 - "required": [ 5857 - "switchToLight", 5858 - "switchToDark" 5859 - ] 5646 + "required": ["switchToLight", "switchToDark"] 5860 5647 }, 5861 5648 "copyUrl": { 5862 5649 "type": "object", ··· 5875 5662 "type": "string" 5876 5663 } 5877 5664 }, 5878 - "required": [ 5879 - "successToast", 5880 - "errorToast", 5881 - "copied", 5882 - "share" 5883 - ] 5665 + "required": ["successToast", "errorToast", "copied", "share"] 5884 5666 }, 5885 5667 "branding": { 5886 5668 "type": "object", ··· 5890 5672 "type": "string" 5891 5673 } 5892 5674 }, 5893 - "required": [ 5894 - "poweredBy" 5895 - ] 5675 + "required": ["poweredBy"] 5896 5676 } 5897 5677 }, 5898 5678 "required": [
+11 -19
packages/email/src/templates/workspace-invitation.tsx
··· 38 38 }, 39 39 } as const; 40 40 41 - function interpolate( 42 - template: string, 43 - values: Record<string, string>, 44 - ) { 41 + function interpolate(template: string, values: Record<string, string>) { 45 42 return template.replace(/\{\{(\w+)\}\}/g, (_match, key: string) => { 46 43 return values[key] ?? ""; 47 44 }); ··· 54 51 invitationLink, 55 52 to, 56 53 locale, 57 - }: WorkspaceInvitationEmailProps) => ( 54 + }: WorkspaceInvitationEmailProps) => 58 55 (() => { 59 56 const localeKey = locale?.toLowerCase().startsWith("de") ? "de" : "en"; 60 57 const copy = messages[localeKey]; ··· 66 63 title={interpolate(copy.title, values)} 67 64 subtitle={interpolate(copy.subtitle, values)} 68 65 > 69 - <Section> 70 - <Link style={styles.button} href={`${invitationLink}?email=${to}`}> 66 + <Section> 67 + <Link style={styles.button} href={`${invitationLink}?email=${to}`}> 71 68 {copy.cta} 72 - </Link> 73 - <Text style={styles.paragraph}> 74 - {copy.sameEmail} 75 - </Text> 76 - <Text style={styles.muted}> 77 - {copy.ignore} 78 - </Text> 79 - <Section style={styles.divider} /> 69 + </Link> 70 + <Text style={styles.paragraph}>{copy.sameEmail}</Text> 71 + <Text style={styles.muted}>{copy.ignore}</Text> 72 + <Section style={styles.divider} /> 80 73 <Text style={styles.footer}>{copy.footer}</Text> 81 - </Section> 82 - </EmailShell> 74 + </Section> 75 + </EmailShell> 83 76 ); 84 - })() 85 - ); 77 + })(); 86 78 87 79 WorkspaceInvitationEmail.PreviewProps = { 88 80 workspaceName: "Acme Inc",
+6 -2
scripts/i18n/check.mjs
··· 28 28 29 29 for (const locale of filteredLocales) { 30 30 const localeKeys = flattenLocale(locale.data); 31 - const missing = new Set([...referenceKeys].filter((key) => !localeKeys.has(key))); 32 - const extra = new Set([...localeKeys].filter((key) => !referenceKeys.has(key))); 31 + const missing = new Set( 32 + [...referenceKeys].filter((key) => !localeKeys.has(key)), 33 + ); 34 + const extra = new Set( 35 + [...localeKeys].filter((key) => !referenceKeys.has(key)), 36 + ); 33 37 34 38 if (missing.size === 0 && extra.size === 0) { 35 39 console.log(`${locale.locale}: OK`);
+20 -7
scripts/i18n/report.mjs
··· 17 17 18 18 const { locales, reference } = await loadLocales(); 19 19 const localeKeys = flattenLocale(reference.data); 20 - const sourceFiles = await collectSourceFiles(path.join(repoRoot, "apps", "web", "src")); 21 - const { staticKeys, dynamicCalls, dynamicPrefixes } = await collectUsedKeys(sourceFiles); 20 + const sourceFiles = await collectSourceFiles( 21 + path.join(repoRoot, "apps", "web", "src"), 22 + ); 23 + const { staticKeys, dynamicCalls, dynamicPrefixes } = 24 + await collectUsedKeys(sourceFiles); 22 25 23 26 const missing = new Set( 24 27 [...staticKeys].filter((key) => !isRepresentedByLocaleKeys(key, localeKeys)), ··· 60 63 if (unused.size === 0) { 61 64 console.log("No unused keys to remove."); 62 65 } else { 63 - const allowedKeys = new Set([...localeKeys].filter((key) => !unused.has(key))); 66 + const allowedKeys = new Set( 67 + [...localeKeys].filter((key) => !unused.has(key)), 68 + ); 64 69 65 70 for (const locale of locales) { 66 71 const nextLocale = pruneLocale(locale.data, allowedKeys); 67 72 await writeJson(locale.path, nextLocale); 68 73 } 69 74 70 - console.log(`Removed ${unused.size} unused key(s) from ${defaultLocale} and other locales.`); 75 + console.log( 76 + `Removed ${unused.size} unused key(s) from ${defaultLocale} and other locales.`, 77 + ); 71 78 } 72 79 } 73 80 ··· 105 112 for (const file of files) { 106 113 const source = await fs.readFile(file, "utf8"); 107 114 108 - for (const match of source.matchAll(/\b(?:[\w$]+\.)?t\(\s*(['"])([^'"\\]+)\1/gu)) { 115 + for (const match of source.matchAll( 116 + /\b(?:[\w$]+\.)?t\(\s*(['"])([^'"\\]+)\1/gu, 117 + )) { 109 118 staticKeys.add(match[2]); 110 119 } 111 120 112 - for (const match of source.matchAll(/\bi18nKey\s*=\s*(['"])([^'"\\]+)\1/gu)) { 121 + for (const match of source.matchAll( 122 + /\bi18nKey\s*=\s*(['"])([^'"\\]+)\1/gu, 123 + )) { 113 124 staticKeys.add(match[2]); 114 125 } 115 126 116 - for (const match of source.matchAll(/\b(?:[\w$]+\.)?t\(\s*(`[^`]*\$\{[^`]*\}`|[^'"`\s][^,\n)]*)/gu)) { 127 + for (const match of source.matchAll( 128 + /\b(?:[\w$]+\.)?t\(\s*(`[^`]*\$\{[^`]*\}`|[^'"`\s][^,\n)]*)/gu, 129 + )) { 117 130 const call = match[0].trim(); 118 131 dynamicCalls.push(`${path.relative(repoRoot, file)}: ${call}`); 119 132 const prefixMatch = call.match(/`([^`$]*)\$\{/u);
+5 -1
scripts/i18n/shared.mjs
··· 137 137 const nextValue = {}; 138 138 139 139 for (const [childKey, childValue] of Object.entries(value)) { 140 - const pruned = pruneNamespace(childValue, `${prefix}${childKey}.`, allowedKeys); 140 + const pruned = pruneNamespace( 141 + childValue, 142 + `${prefix}${childKey}.`, 143 + allowedKeys, 144 + ); 141 145 if (pruned !== undefined) { 142 146 nextValue[childKey] = pruned; 143 147 }