Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incomplete nested O2M results since 9.6.0 #12134

Closed
3 tasks done
flayks opened this issue Mar 13, 2022 · 12 comments · Fixed by #12235
Closed
3 tasks done

Incomplete nested O2M results since 9.6.0 #12134

flayks opened this issue Mar 13, 2022 · 12 comments · Fixed by #12235
Labels
Milestone

Comments

@flayks
Copy link

flayks commented Mar 13, 2022

Preflight Checklist

Describe the Bug

Did anything breaking/major changed with 9.6.0?
I suddenly cannot read all the items of a nested O2M when it was all fine with 9.5.x.

This query sometimes returns null on the image field, but not always (all locations have images items):

query {
  location(filter: { status: { _eq: "published" } }) {
    id
    name
    photos(sort: "-date_created", limit: 2) {
      image { id, title }
    }
  }
}
{
  "data": {
    "location": [
      {
        "id": "8",
        "name": "Bordeaux",
        "photos": [
          {
            "image": {
              "id": "451c1f12-c58a-4405-9fe0-928e2953c90e",
              "title": "Rue Paul Painlevé 7"
            }
          },
          {
            "image": null
          }
        ]
      },
      {
        "id": "7",
        "name": "Toulouse",
        "photos": [
          {
            "image": null
          },
...

@rijkvanzanten When you wrote on the Discord "[…] and an upgrade nested o2m reading engine that's less heavy on the database CPU", is there anything I missed to upgrade or something?

Seems a bit odd as I downgraded to 9.5.2 and everything works as expected.

To Reproduce

Nothing specific, just make a query of a nested O2M relation field (here, a photos O2M field on a location collection)

Errors Shown

No response

What version of Directus are you using?

9.6.0

What version of Node.js are you using?

17.6.0

What database are you using?

MySQL

What browser are you using?

Brave

What operating system are you using?

macOS Monterey (12)

How are you deploying Directus?

locally

@azrikahar
Copy link
Contributor

May be related to #12011 based on the description here.

@rijkvanzanten
Copy link
Member

Did anything breaking/major changed with 9.6.0?

Not on purpose at least

@arladmin
Copy link

Did anything breaking/major changed with 9.6.0?

Not on purpose at least

How to resolve this issue?

Really unable to move ahead with a project because there's no working ability to export all data, as required. Neither in v9.5.2 nor in v9.6.0

@rijkvanzanten
Copy link
Member

rijkvanzanten commented Mar 15, 2022

How to resolve this issue?

Someone will have to dive into the code, check if #12011 fixes it, otherwise extract where the nesting goes wrong, and fix it.

Really unable to move ahead with a project because there's no working ability to export all data, as required

What do you mean? (Also that sounds like it could be a different issue / discussion, but i might be mistaken)

@arladmin
Copy link

arladmin commented Mar 15, 2022

@rijkvanzanten

What do you mean?

So, i need to export all data (export=json, limit=-1), but with the nested fields' data as well (fields=*.*).

But i'm unable to do this, for not only limit=-1 but also limit=10000.

Most of the records in the resultant data contain nested_field : null and not even nested_field : <id> or nested_field : <data> .

@arladmin
Copy link

arladmin commented Mar 17, 2022

Is there any workaround, until a patch is released to fix the now broken API?

@derkoenigeu
Copy link

@rijkvanzanten

What do you mean?

So, i need to export all data (export=json, limit=-1), but with the nested fields' data as well (fields=*.*).

But i'm unable to do this, because of the above mentioned issue, for not only limit=-1 but also limit=10000. The resultant data contains nested_field : null and not even nested_field : <id> or nested_field : <data> , for most of the records.

Related to this my colleagues an I dug a little bit deeper.
We have set LOG_LEVEL=trace to get the queries which are passed on to the MySQL Database and found out that the limit is set hard to 100.
This results in the error that only 100 items are getting returned.

@arladmin
Copy link

Any idea how to bypass this so that normal queries as well as queries for nested data work properly for even limit~50k ?

@derkoenigeu
Copy link

derkoenigeu commented Mar 17, 2022

@arladmin At our current state we only could loop through the items and do seperate rqeuests.
We just went back to v9.5.2 for now and see how this issue evolves since it worked well in 9.5.2

@rijkvanzanten rijkvanzanten added this to the v9-next milestone Mar 17, 2022
@derkoenigeu
Copy link

My co-workers and I might have found the underlying problem.
There was a change in the way how SQL-statements were build up to 9.5.2 and now in 9.6.0.

In 9.5.2 statements were built like:

select * from (select `zbr_keywords`.`id`, `zbr_keywords`.`status`, `zbr_keywords`.`user_created`, `zbr_keywords`.`date_created`, `zbr_keywords`.`user_updated`, `zbr_keywords`.`date_updated`, `zbr_keywords`.`zbr_keyword_hash`, `zbr_keywords`.`zbr_keyword`, `zbr_keywords`.`zbr_query_param`, `zbr_keywords`.`zbr_export_add_phrase_modifier`, `zbr_keywords`.`zbr_export_add_exact_modifier`, `zbr_keywords`.`id_zbr_keyword_themes`, `zbr_keywords`.`zbr_default_audience_present`, `zbr_keywords`.`zbr_competitor_keyword` from `zbr_keywords` where `zbr_keywords`.`id` = ? limit ?) as `foo` union all select * from (select `zbr_keywords`.`id`, `zbr_keywords`.`status`, `zbr_keywords`.`user_created`, `zbr_keywords`.`date_created`, `zbr_keywords`.`user_updated`, `zbr_keywords`.`date_updated`, `zbr_keywords`.`zbr_keyword_hash`, `zbr_keywords`.`zbr_keyword`, `zbr_keywords`.`zbr_query_param`, `zbr_keywords`.`zbr_export_add_phrase_modifier`, `zbr_keywords`.`zbr_export_add_exact_modifier`, `zbr_keywords`.`id_zbr_keyword_themes`, `zbr_keywords`.`zbr_default_audience_present`, `zbr_keywords`.`zbr_competitor_keyword` from `zbr_keywords` where `zbr_keywords`.`id` = ? limit ?) as `foo` union all select * from (select `zbr_keywords`.`id`, `zbr_keywords`.`status`, `zbr_keywords`.`user_created`, `zbr_keywords`.`date_created`, `zbr_keywords`.`user_updated`, `zbr_keywords`.`date_updated`, `zbr_keywords`.`zbr_keyword_hash`, `zbr_keywords`.`zbr_keyword`, `zbr_keywords`.`zbr_query_param`, `zbr_keywords`.`zbr_export_add_phrase_modifier`, `zbr_keywords`.`zbr_export_add_exact_modifier`, `zbr_keywords`.`id_zbr_keyword_themes`, `zbr_keywords`.`zbr_default_audience_present`, `zbr_keywords`.`zbr_competitor_keyword` from `zbr_keywords` where `zbr_keywords`.`id` = ? limit ?) as `foo` union all select * from (select `zbr_keywords`.`id`,......
.......
union all select * from (select `zbr_keywords`.`id`, `zbr_keywords`.`status`, `zbr_keywords`.`user_created`, `zbr_keywords`.`date_created`, `zbr_keywords`.`user_updated`, `zbr_keywords`.`date_updated`, `zbr_keywords`.`zbr_keyword_hash`, `zbr_keywords`.`zbr_keyword`, `zbr_keywords`.`zbr_query_param`, `zbr_keywords`.`zbr_export_add_phrase_modifier`, `zbr_keywords`.`zbr_export_add_exact_modifier`, `zbr_keywords`.`id_zbr_keyword_themes`, `zbr_keywords`.`zbr_default_audience_present`, `zbr_keywords`.`zbr_competitor_keyword` from `zbr_keywords` where `zbr_keywords`.`id` = ? limit ?) as `foo` [67, 100, 70, 100, 8, 100, 21, 100, 3, 100, 66, 100, 64, 100, 4, 100, 229, 100, 113, 100, 217, 100, 114, 100, 232, 100, 234, 100, 230, 100, 233, 100, 72, 100, 309, 100, 311, 100, 312, 100, 313, 100, 336, 100, 314, 100, 339, 100, 310, 100, 337, 100, 574, 100, 235, 100, 395, 100, 576, 100, 240, 100, 32, 100, 73, 100, 577, 100, 276, 100, 239, 100, 241, 100, 287, 100, 575, 100, 283, 100, 286, 100, 306, 100, 409, 100, 585, 100, 333, 100, 514, 100, 584, 100, 89, 100, 68, 100, 88, 100, 91, 100, 90, 100, 92, 100, 211, 100, 212, 100, 213, 100, 100, 100, 214, 100, 216, 100, 325, 100, 210, 100, 219, 100, 220, 100, 260, 100, 258, 100, 262, 100, 215, 100, 261, 100, 289, 100, 263, 100, 322, 100, 323, 100, 382, 100, 328, 100, 326, 100, 259, 100, 330, 100, 329, 100, 331, 100, 383, 100, 324, 100, 346, 100, 394, 100, 386, 100, 345, 100, 387, 100, 388, 100, 349, 100, 390, 100, 350, 100, 389, 100, 347, 100, 348, 100, 354, 100, 356, 100, 355, 100, 357, 100, 370, 100, 363, 100, 351, 100, 391, 100, 362, 100, 371, 100, 392, 100, 372, 100, 373, 100, 376, 100, 374, 100, 375, 100, 525, 100, 378, 100, 380, 100, 379, 100, 381, 100, 451, 100, 397, 100, 377, 100, 400, 100, 407, 100, 399, 100, 396, 100, 408, 100, 452, 100, 453, 100, 454, 100, 522, 100, 528, 100, 523, 100, 527, 100, 532, 100, 531, 100, 642, 100, 529, 100, 533, 100, 526, 100, 534, 100, 645, 100, 643, 100, 9, 100, 10, 100, 524, 100, 158, 100, 33, 100, 44, 100, 43, 100, 644, 100, 319, 100, 116, 100, 316, 100, 317, 100, 343, 100, 320, 100, 65, 100, 321, 100, 367, 100, 315, 100, 344, 100, 318, 100, 352, 100, 181, 100, 182, 100, 359, 100, 365, 100, 360, 100, 332, 100, 257, 100, 353, 100, 361, 100, 218, 100, 364, 100, 368, 100, 384, 100, 419, 100, 385, 100, 369, 100, 231, 100, 410, 100, 402, 100, 366, 100, 403, 100, 404, 100, 405, 100, 412, 100, 393, 100, 417, 100, 411, 100, 423, 100, 421, 100, 406, 100, 426, 100, 420, 100, 466, 100, 464, 100, 422, 100, 460, 100, 462, 100, 425, 100, 428, 100, 463, 100, 431, 100, 455, 100, 434, 100, 456, 100, 457, 100, 427, 100, 459, 100, 461, 100, 465, 100, 467, 100, 482, 100, 469, 100, 458, 100, 478, 100, 486, 100, 480, 100, 481, 100, 483, 100, 484, 100, 485, 100, 479, 100, 471, 100, 477, 100, 472, 100, 474, 100, 470, 100, 468, 100, 476, 100, 530, 100, 639, 100, 535, 100, 473, 100, 604, 100, 487, 100, 605, 100, 475, 100, 606, 100, 608, 100, 488, 100, 609, 100, 603, 100, 613, 100, 611, 100, 612, 100, 607, 100, 614, 100, 616, 100, 617, 100, 490, 100, 610, 100, 618, 100, 619, 100, 489, 100, 620, 100, 621, 100, 615, 100, 622, 100, 517, 100, 623, 100, 624, 100, 627, 100, 626, 100, 491, 100, 629, 100, 630, 100, 632, 100, 633, 100, 625, 100, 636, 100, 635, 100, 628, 100, 638, 100, 631, 100, 640, 100, 647, 100, 641, 100, 634, 100, 648, 100, 637, 100, 649, 100, 650, 100, 646, 100, 508, 100, 506, 100, 507, 100, 505, 100, 504, 100, 296, 100, 536, 100, 2, 100, 1, 100, 18, 100, 6, 100, 11, 100, 13, 100, 14, 100, 15, 100, 38, 100, 19, 100, 20, 100, 28, 100, 12, 100, 29, 100, 31, 100, 16, 100, 30, 100, 17, 100, 39, 100, 40, 100, 42, 100, 34, 100, 48, 100, 45, 100, 50, 100, 35, 100, 47, 100, 61, 100, 82, 100, 49, 100, 120, 100, 46, 100, 86, 100, 87, 100, 84, 100, 56, 100, 83, 100, 62, 100, 51, 100, 52, 100, 103, 100, 81, 100, 105, 100, 115, 100, 117, 100, 118, 100, 119, 100, 130, 100, 102, 100, 121, 100, 104, 100, 124, 100, 125, 100, 126, 100, 128, 100, 127, 100, 131, 100, 132, 100, 122, 100, 133, 100, 123, 100, 134, 100, 150, 100, 135, 100, 152, 100, 151, 100, 129, 100, 154, 100, 153, 100, 157, 100, 160, 100, 164, 100, 162, 100, 169, 100, 155, 100, 168, 100, 156, 100, 174, 100, 170, 100, 159, 100, 171, 100, 172, 100, 163, 100, 173, 100, 175, 100, 167, 100, 161, 100, 180, 100, 179, 100, 190, 100, 184, 100, 186, 100, 187, 100, 188, 100, 192, 100, 194, 100, 197, 100, 183, 100, 193, 100, 195, 100, 196, 100, 198, 100, 191, 100, 176, 100, 199, 100, 224, 100, 225, 100, 204, 100, 200, 100, 205, 100, 223, 100, 189, 100, 236, 100, 243, 100, 242, 100, 237, 100, 245, 100, 238, 100, 244, 100, 247, 100, 248, 100, 226, 100, 246, 100, 250, 100, 252, 100, 251, 100, 256, 100, 253, 100, 277, 100, 280, 100, 227, 100, 249, 100, 285, 100, 281, 100, 284, 100, 342, 100, 282, 100, 334, 100, 335, 100, 279, 100, 444, 100, 341, 100, 398, 100, 413, 100, 414, 100, 415, 100, 442, 100, 340, 100, 445, 100, 446, 100, 448, 100, 447, 100, 499, 100, 254, 100, 500, 100, 501, 100, 443, 100, 278, 100, 509, 100, 255, 100, 503, 100, 515, 100, 513, 100, 512, 100, 516, 100, 502, 100, 537, 100, 553, 100, 544, 100, 545, 100, 542, 100, 546, 100, 547, 100, 543, 100, 549, 100, 539, 100, 540, 100, 538, 100, 541, 100, 551, 100, 569, 100, 552, 100, 554, 100, 555, 100, 556, 100, 557, 100, 558, 100, 548, 100, 570, 100, 559, 100, 571, 100, 572, 100, 561, 100, 560, 100, 573, 100, 582, 100, 563, 100, 562, 100, 579, 100, 580, 100, 581, 100, 583, 100, 586, 100, 578, 100, 600, 100, 588, 100, 590, 100, 589, 100, 591, 100, 592, 100, 593, 100, 594, 100, 595, 100, 587, 100, 597, 100, 599, 100, 598, 100, 567, 100, 568, 100, 566, 100, 596, 100, 651, 100, 652, 100, 653, 100, 36, 100, 185, 100, 401, 100, 85, 100, 654, 100, 655, 100, 656, 100, 657, 100, 22, 100, 23, 100, 24, 100, 25, 100, 26, 100, 27, 100, 37, 100, 41, 100, 58, 100, 107, 100, 108, 100, 109, 100, 110, 100, 111, 100, 112, 100, 136, 100, 137, 100, 138, 100, 139, 100, 140, 100, 143, 100, 144, 100, 145, 100, 146, 100, 147, 100, 148, 100, 149, 100, 165, 100, 166, 100, 177, 100, 178, 100, 203, 100, 206, 100, 207, 100, 208, 100, 209, 100, 291, 100, 292, 100, 294, 100, 295, 100, 297, 100, 299, 100, 300, 100, 302, 100, 303, 100, 304, 100, 305, 100, 307, 100, 308, 100, 338, 100, 358, 100, 418, 100, 429, 100, 430, 100, 432, 100, 433, 100, 435, 100, 436, 100, 437, 100, 494, 100, 495, 100, 496, 100, 497, 100, 498, 100, 518, 100, 519, 100, 520, 100, 521, 100, 658, 100, 659, 100, 69, 100, 424, 100, 450, 100, 288, 100, 327, 100, 438, 100, 439, 100, 565, 100, 440, 100, 441, 100, 5, 100, 7, 100, 54, 100, 55, 100, 57, 100, 416, 100, 59, 100, 60, 100, 63, 100, 71, 100, 510, 100, 74, 100, 75, 100, 76, 100, 77, 100, 78, 100, 449, 100, 79, 100, 80, 100, 99, 100, 101, 100, 106, 100, 511, 100, 141, 100, 550, 100, 142, 100, 564, 100, 221, 100, 222, 100, 228, 100, 290, 100, 293, 100, 601, 100, 298, 100, 301, 100, 602, 100, 53, 100, 201, 100, 202, 100, 93, 100, 94, 100, 95, 100, 96, 100, 97, 100, 98, 100, 264, 100, 265, 100, 266, 100, 267, 100, 268, 100, 269, 100, 270, 100, 271, 100, 272, 100, 273, 100, 274, 100, 275, 100, 660, 100, 661, 100]

in the new version 9.6.0 it is like:

select
`zbr_keywords`.`date_created`,
`zbr_keywords`.`date_updated`,
`zbr_keywords`.`id`,
`zbr_keywords`.`id_zbr_keyword_themes`,
`zbr_keywords`.`status`,
`zbr_keywords`.`user_created`,
`zbr_keywords`.`user_updated`,
`zbr_keywords`.`zbr_competitor_keyword`,
`zbr_keywords`.`zbr_default_audience_present`,
`zbr_keywords`.`zbr_export_add_exact_modifier`,
`zbr_keywords`.`zbr_export_add_phrase_modifier`,
`zbr_keywords`.`zbr_keyword`,
`zbr_keywords`.`zbr_keyword_hash`,
`zbr_keywords`.`zbr_query_param`
from `zbr_keywords`
where `zbr_keywords`.`id` in (67, 70, 8, 21, 3, 66, 64, 4, 229, 113, 217, 114, 232, 234, 230, 233, 72, 309, 311, 312, 313, 336, 314, 339, 310, 337, 574, 235, 395, 576, 240, 32, 73, 577, 276, 239, 241, 287, 575, 283, 286, 306, 409, 585, 333, 514, 584, 89, 68, 88, 91, 90, 92, 211, 212, 213, 100, 214, 216, 325, 210, 219, 220, 260, 258, 262, 215, 261, 289, 263, 322, 323, 382, 328, 326, 259, 330, 329, 331, 383, 324, 346, 394, 386, 345, 387, 388, 349, 390, 350, 389, 347, 348, 354, 356, 355, 357, 370, 363, 351, 391, 362, 371, 392, 372, 373, 376, 374, 375, 525, 378, 380, 379, 381, 451, 397, 377, 400, 407, 399, 396, 408, 452, 453, 454, 522, 528, 523, 527, 532, 531, 642, 529, 533, 526, 534, 645, 643, 9, 10, 524, 158, 33, 44, 43, 644, 319, 116, 316, 317, 343, 320, 65, 321, 367, 315, 344, 318, 352, 181, 182, 359, 365, 360, 332, 257, 353, 361, 218, 364, 368, 384, 419, 385, 369, 231, 410, 402, 366, 403, 404, 405, 412, 393, 417, 411, 423, 421, 406, 426, 420, 466, 464, 422, 460, 462, 425, 428, 463, 431, 455, 434, 456, 457, 427, 459, 461, 465, 467, 482, 469, 458, 478, 486, 480, 481, 483, 484, 485, 479, 471, 477, 472, 474, 470, 468, 476, 530, 639, 535, 473, 604, 487, 605, 475, 606, 608, 488, 609, 603, 613, 611, 612, 607, 614, 616, 617, 490, 610, 618, 619, 489, 620, 621, 615, 622, 517, 623, 624, 627, 626, 491, 629, 630, 632, 633, 625, 636, 635, 628, 638, 631, 640, 647, 641, 634, 648, 637, 649, 650, 646, 508, 506, 507, 505, 504, 296, 536, 2, 1, 18, 6, 11, 13, 14, 15, 38, 19, 20, 28, 12, 29, 31, 16, 30, 17, 39, 40, 42, 34, 48, 45, 50, 35, 47, 61, 82, 49, 120, 46, 86, 87, 84, 56, 83, 62, 51, 52, 103, 81, 105, 115, 117, 118, 119, 130, 102, 121, 104, 124, 125, 126, 128, 127, 131, 132, 122, 133, 123, 134, 150, 135, 152, 151, 129, 154, 153, 157, 160, 164, 162, 169, 155, 168, 156, 174, 170, 159, 171, 172, 163, 173, 175, 167, 161, 180, 179, 190, 184, 186, 187, 188, 192, 194, 197, 183, 193, 195, 196, 198, 191, 176, 199, 224, 225, 204, 200, 205, 223, 189, 236, 243, 242, 237, 245, 238, 244, 247, 248, 226, 246, 250, 252, 251, 256, 253, 277, 280, 227, 249, 285, 281, 284, 342, 282, 334, 335, 279, 444, 341, 398, 413, 414, 415, 442, 340, 445, 446, 448, 447, 499, 254, 500, 501, 443, 278, 509, 255, 503, 515, 513, 512, 516, 502, 537, 553, 544, 545, 542, 546, 547, 543, 549, 539, 540, 538, 541, 551, 569, 552, 554, 555, 556, 557, 558, 548, 570, 559, 571, 572, 561, 560, 573, 582, 563, 562, 579, 580, 581, 583, 586, 578, 600, 588, 590, 589, 591, 592, 593, 594, 595, 587, 597, 599, 598, 567, 568, 566, 596, 651, 652, 653, 36, 185, 401, 85, 654, 655, 656, 657, 22, 23, 24, 25, 26, 27, 37, 41, 58, 107, 108, 109, 110, 111, 112, 136, 137, 138, 139, 140, 143, 144, 145, 146, 147, 148, 149, 165, 166, 177, 178, 203, 206, 207, 208, 209, 291, 292, 294, 295, 297, 299, 300, 302, 303, 304, 305, 307, 308, 338, 358, 418, 429, 430, 432, 433, 435, 436, 437, 494, 495, 496, 497, 498, 518, 519, 520, 521, 658, 659, 69, 424, 450, 288, 327, 438, 439, 565, 440, 441, 5, 7, 54, 55, 57, 416, 59, 60, 63, 71, 510, 74, 75, 76, 77, 78, 449, 79, 80, 99, 101, 106, 511, 141, 550, 142, 564, 221, 222, 228, 290, 293, 601, 298, 301, 602, 53, 201, 202, 93, 94, 95, 96, 97, 98, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 660, 661)
limit 100

As you can see in 9.5.2 there was already a limit for each id set to 100 and in the 9.6.0 statement the limit 100 is set for all. due to the change in how the statement is built.

Following that the Bug is a bit older already but did not had any influence by now.

Thanks for doing such a great work with directus :)

@rijkvanzanten
Copy link
Member

Thanks for confirming that! I redid the relational fetching (like you mentioned) to make sure we didn't generate massive single union query commands, as that was blowing up some lower-powered database engines when fetching larger sets, but a bug must've snuck in. The The query shown is correct, except for that limit. It should be a higher batch table scan limit which is paginated, so i'll have to investigate that some more!

@aiac
Copy link

aiac commented Mar 18, 2022

Same problem here:

  const query = gql`
    query GetDomainData($request_domain: String!, $menu_location: String!) {
      ${domain_fragment}
      guides(filter: { status: { _eq: "published" } }, limit: 30, offset: 10) {
        slug
        }
        photos(limit: 1) {
          directus_files_id {
            id
          }
        }
      }
    }
  `;

These query will return null photos object after spitting 25 items. Anyone working on this maybe?

ztob added a commit to ztob/directus that referenced this issue Mar 27, 2022
* fix copy/paste for readonly code interface (directus#11769)

* fix permission for field functions (directus#11771)

* Fix relational interfaces to return null when the array is empty after deselecting item(s) (directus#11765)

* Fix relational interfaces to return null on delete

* add fix to m2a

* fix treeview not clearing displayed list

* Docs: update CSS and pics (directus#11634)

* .gitignored package-lock.json that was created in the docs subfolder

* tweaked color names, except the ones in in vue files

* converted terminal screencaps into markdown

* updated images in 'Content'

* updated user-directory images

* updated media in file-library

* moved picsto cloud in reference>files

* updated images in config > datamodels > relationships

* updated primary colors in app-overview.svg

* updated insights images

* swapped quickstart-guide media and touched up copy

* Update last colors, remove linting from docs temporarily

* Fix theme color

* Update homepage header image

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* New translations en-US.yaml (Croatian) (directus#11780)

* Update package-lock

* Fix dark mode for docs (directus#11781)

* fix docs dark mode

* tweak code token color

* Docs dark mode fix v2 (directus#11782)

* fix docs dark mode

* tweak code token color

* dynamic color for homepage elements

* swap primary/secondary for dark mode

* add dark variant of header background

* Fixed readByQuery's sort parameter in custom API endpoint example (directus#11662)

* fix video size within in-app docs (directus#11784)

* Hide delete action for last admin role (directus#11793)

* fix map interface extension options (directus#11796)

* add missing directus_shares note (directus#11815)

* New Crowdin updates (directus#11816)

* New translations en-US.yaml (Romanian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Spanish, Chile)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Croatian)

* New translations en-US.yaml (German) (directus#11820)

* New translations en-US.yaml (Polish) (directus#11822)

* Fix anonymous binding ldap (directus#11750)

* fix anonymous binding ldap by correcting condition for throwing InvalidConfigException

* add anonymous bind option to docs

Co-authored-by: Dominik Tils <d.tils@studentec.de>

* LDAP handle posix groups (directus#11799)

* Simplified user fetching by passing EqualityFilter

* Simplified LDAP fetching and added posix user/group support

* Update api/src/auth/drivers/ldap.ts

* Renamed getAttribueValue to getEntryValue

* Update api/src/auth/drivers/ldap.ts

* Update plesk docs: Create / apply snapshots (directus#11819)

* Update plesk docs: Create / apply snapshots

Add a script wrapper to support snapshots on plesk servers. 

Not sure if the example script should stay here or be added next to the other wrapper on the cli-page.

* Update docs/getting-started/installation/plesk.md

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* New Crowdin updates (directus#11831)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Chinese Simplified) (directus#11833)

* Clarify default role ID format for SSO (directus#11855)

* clarify default role ID format for SSO

* tweak

* close date picker on select (directus#11854)

* Add support to extend `server` properties (directus#11869)

* New translations en-US.yaml (Italian) (directus#11872)

* New translations en-US.yaml (Mongolian) (directus#11876)

* Update available-languages.yaml (directus#11874)

Added Mongolian language option to language selection list.

* redirect to page not found for invalid collections (directus#11882)

* Empty {} supersedes other permissions/validations in _OR merge (directus#11554)

* Empty {} supersedes other permissions/validations in _OR merge

* Add unit test

* Fix typo

* Add a different conditional filter for comparison

* allow target="_blank" in markdown sanitization (directus#11787)

* Datetime interface improvements (directus#11783)

* Datetime interface improvements

* tweak click event

* Respect the disable the o2m sort option (directus#11893)

* Avoid get database when authenticate with JWT (directus#11617)

* Adds Deploy with Koyeb. (directus#11686)

* Adds Deploy with Koyeb.

* Oops

I'm not great at markdown :|

* Support listen parameter (directus#11465)

* Support listen option for allowing server to listen on wanted IP address or host

* Change default listen value from localhost to 0.0.0.0

* Update LISTEN variable to HOST

* fix formatting

* Update docs/configuration/config-options.md

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Docker: Add support for changing the timezone (directus#11516)

* feat(docker): add support for changing the timezone

Add support for changing the timezone of a docker container. This is a standard way of configuring the timezone in a lot of docker images.

* Improve dockerfile cache performance

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Add .git to local dockerignore

* Fix access to public role permissions (directus#11904)

* lockfile: regenerate to fix inconsistencies (directus#11646)

* update lockfile

* Regen lock-file another time

* Fix type issue from rollup package version

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Replace union query approach with updated table scan (directus#11246)

* Start by stripping out the previous Union attempt

* Then set limit to -1, causing massive memory issues on big data sets

* Now fix the memory problem by batching the responses

* Use env var for max relational batch size

* Rename env var, add to docs

* add style to links in notice (directus#11925)

* add style to links in notice

* fix for stylelint

* unrelated: fix eslint warning for unused variables

* add number to prop type for radio and dropdown (directus#11924)

* Add `authenticate` hook to implement custom auth checks against current request (directus#11942)

* Add "authenticate" filter hook that allows custom auth check

* Start on test

* Update Jest, restructure API tests, start implementing authenticate test

* Move access token verify to util function

* Ensure jest can show inline warnings on correct lines

* Update is-directus-jwt to use jsonwebtoken decode + add tests

* Remove unused package

* Tweak and finish + test authenticate

* Tweak test

* Add authenticate filter to docs

* Don't scan tests for codeql

* No seriously, ignore tests

* Fix file name reference

* Resolve Geometry type as JS object (directus#11945)

* Update base theme of the App (directus#11952)

* Add migration to remove default value from project_color

* Upgrade the default theme

* Do a pass over the header buttons

* Do another pass over --warning uses

* Little things

* Tweak smoke

* Use updated map

* Use dark system elements in dark mode

* Remove outdated files, update toasts

* Use correct delete button style for role

* Use primary for created point

* Tweak spacing in revisions section

* Use primary for sidebar sections

* Various color tweaks and changes

* Update base color palette

* Update "css reset" code

* Remove splashscreens, add default favicon

* Add primary highlight to datamodel page

* dark mode color update

* fix sign out hover color

* Does this help?!

* This fixes some loading issues

Fixes directus#10707

* Calculate default pretty background?

* Fix public view with logo

* Fix responsiveness of login page

* adjust notification group width to be equal

* Do an absolute pointless task that doesn't do anything

It was suggested that it could fix the stylelint error in tests, but alas

* Remove stylelint

Doesn't seem to play nice with script setup and other changes

Co-authored-by: Ben Haynes <ben@rngr.org>

* Resizable navigation panel (directus#11944)

* WIP for resizable nav panel

* tweak handle width & hover delay

* further tweaks based on vscode's implementation

* add useLocalStorage

* tweak responsiveness & limits

* prefix localstorage key

* rename key

* add context menu for resetting width

* snap into place when within 10 pixels range

* fix stylelint

* Tweak styling, reduce folder complexity

* Remove context menu

* Organize imports

* Rework private-view to script setup

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Fix migration for CRDB

* New Crowdin updates (directus#11953)

* Update source file en-US.yaml

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Italian)

* Add check for filterPath length when not having m2o/a2o relation in order to add nested filters (directus#11768)

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Fix "Save as Copy" for relational fields (directus#10418)

* fix "save as copy" for relational fields

* use router replace instead of push

* Add "items.sort" event (directus#11954)

* Adds the 'sort_updated' event emit after items are sorted

Signed-off-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>

* Updates the event name to 'sort_update'. Docs.

Signed-off-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>

* Updates the event name to `sort`

* Add item/to to hook, fix docs

Co-authored-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>

* v9.6.0

* v9.6.0

* New translations en-US.yaml (Italian) (directus#11955)

* New translations en-US.yaml (Turkish) (directus#11959)

* New translations en-US.yaml (Turkish) (directus#11960)

* New translations en-US.yaml (Turkish) (directus#11961)

* New translations en-US.yaml (Turkish) (directus#11962)

* New translations en-US.yaml (Turkish) (directus#11964)

* New translations en-US.yaml (Turkish) (directus#11965)

* New translations en-US.yaml (Turkish) (directus#11966)

* New translations en-US.yaml (Turkish) (directus#11967)

* New translations en-US.yaml (Turkish) (directus#11968)

* New translations en-US.yaml (Turkish) (directus#11970)

* New translations en-US.yaml (Turkish) (directus#11971)

* New translations en-US.yaml (Turkish) (directus#11972)

* New translations en-US.yaml (Turkish) (directus#11973)

* New translations en-US.yaml (Turkish) (directus#11974)

* New translations en-US.yaml (Turkish) (directus#11975)

* New translations en-US.yaml (Turkish) (directus#11978)

* New translations en-US.yaml (Turkish) (directus#11979)

* New translations en-US.yaml (Turkish) (directus#11980)

* New translations en-US.yaml (Turkish) (directus#11981)

* New translations en-US.yaml (Turkish) (directus#11982)

* New translations en-US.yaml (Turkish) (directus#11983)

* New translations en-US.yaml (Turkish) (directus#11984)

* New translations en-US.yaml (Turkish) (directus#11986)

* New translations en-US.yaml (Turkish) (directus#11987)

* New translations en-US.yaml (Turkish) (directus#11988)

* New translations en-US.yaml (Romanian) (directus#11993)

* New translations en-US.yaml (Romanian) (directus#11994)

* New translations en-US.yaml (Romanian) (directus#11995)

* New translations en-US.yaml (Romanian) (directus#11996)

* New translations en-US.yaml (Romanian) (directus#11997)

* New translations en-US.yaml (German) (directus#11999)

* New translations en-US.yaml (Portuguese, Brazilian) (directus#12000)

* fix query limit -1 for o2m queries (directus#12011)

* add --dry-run flag to `schema apply` CLI command (directus#12006)

Co-authored-by: Spencer Jones <sjones@morningconsult.com>

* Update special cases

* Allow configuring /assets endpoint CSP separately  (directus#12020)

* Allow configuring CSP for /assets seperately

* Document assets-csp config

* Remove double header

* Default CORS to disabled (directus#12022)

* Default CORS to disabled

* Update docs to match

* New translations en-US.yaml (Croatian) (directus#12024)

* Add support for import ip deny list (directus#12025)

* Add support for import ip deny list

* Fix typo

* Fix video rendering in wysiwyg

* Docs: Filters (directus#11330)

* added package-lock.json into gitignore

* added filters.md draft doc

* added header intro and section headers

* full outline and 60% of copy

* more fitlers doc copy

* copy 95% complete

* Filters doc as good as done

* small copy tweaks

* Decrease size of dividers in nav, add section with filters

* fixed dynamic var vid

* fixed filter-rules type-o

Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.local>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Hide raw value copy paste button if unsupported by browser (directus#12034)

* Close WYSIWYG fullscreen when opening drawer or dialog (directus#12037)

* hide nav resize handle when it is not open (directus#12050)

* Add Edit Role context menu in User Directory (directus#12048)

* add Edit Role context menu in User DIrectory

* reuse Role type

* ensure hiding delete button for last admin works

* New Crowdin updates (directus#12059)

* New translations en-US.yaml (Romanian)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Croatian)

* Fix cropper aspect ratio not activating crop (directus#12060)

* fix user info sidebar last access timestamp (directus#12047)

* New translations en-US.yaml (Polish) (directus#12062)

* Form error validation improvements (directus#12001)

* expand groups on save when they contain error(s)

* bubble to top & scroll top

* fix groups validation errors watcher

* fix group acordion's first error field selection

* update global error notice

* WIP - field validation

* tweak validation errors list styling

* more validation-errors-list tweaks

* click and scroll to field

* move validation error notice to a component

* tweak use-item validate

* validate drawer item

* extract validateItem function

* Revert "WIP - field validation"

This reverts commit f6ffd83.

* New Crowdin updates (directus#12063)

* New translations en-US.yaml (Romanian)

* New translations en-US.yaml (Indonesian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (Spanish, Chile)

* New translations en-US.yaml (Thai)

* New translations en-US.yaml (Hindi)

* New translations en-US.yaml (Breton)

* New translations en-US.yaml (Serbian (Latin))

* New translations en-US.yaml (Spanish, Latin America)

* New translations en-US.yaml (Vietnamese)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Portuguese)

* New translations en-US.yaml (Swedish)

* New translations en-US.yaml (Turkish)

* New translations en-US.yaml (Estonian)

* New translations en-US.yaml (Portuguese, Brazilian)

* New translations en-US.yaml (Chinese Traditional)

* New translations en-US.yaml (French)

* New translations en-US.yaml (Spanish)

* New translations en-US.yaml (Arabic)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Catalan)

* New translations en-US.yaml (Czech)

* New translations en-US.yaml (Danish)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Finnish)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Slovenian)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (English, United Kingdom)

* New translations en-US.yaml (English, Canada)

* New translations en-US.yaml (French, Canada)

* New translations en-US.yaml (Croatian)

* New translations en-US.yaml (Japanese) (directus#12072)

* New translations en-US.yaml (Japanese) (directus#12075)

* Fix deep relational offset (directus#12076)

* Add relational offset

* Add offset tests

* Update relational test to use id

* Undo url change

* Docs: Settings (directus#12038)

* initial pass on copy

* Finished Settings

* rijk's suggestions

* real final tweak

Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.local>

* Docs: User Directory (directus#11728)

* .gitignored package-lock.json that was created in the docs subfolder

* First User Directory Rough Draft Complete

* added footer

* restructured outline

* 2nd Rough Draft Complete, no pics and not proofread

* added photos

* added all media and polished copy

* Finished admin options section

* Applied Rijk's copy suggestions

* fixed date in information bar media issue

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.local>

* New translations en-US.yaml (French) (directus#12079)

* New translations en-US.yaml (Polish) (directus#12081)

* Add Croatian to available-languages.yaml (directus#12085)

* Make sure mysql error extraction won't error on slice (directus#12087)

Fixes directus#12061

* New translations en-US.yaml (Persian) (directus#12095)

* New translations en-US.yaml (Persian) (directus#12096)

* Allow configuring overrides for the openid-client (directus#12088)

Resolves directus#11951

* Remove outline prop from v-icons (directus#12092)

* remove unused outline prop from icons

* update docs

* Update hooks.md - add system collection "files", fix payload parameter (directus#12094)

* Update hooks.md

* Delete event does not contains the whole payload but the payload keys
* files filter and hooks exist except for create/update

* Update docs/extensions/hooks.md

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Fixed typo

* New translations en-US.yaml (Persian) (directus#12097)

* New translations en-US.yaml (Persian) (directus#12100)

* New translations en-US.yaml (Persian) (directus#12101)

* New translations en-US.yaml (Persian) (directus#12102)

* New translations en-US.yaml (Persian) (directus#12103)

* New translations en-US.yaml (Persian) (directus#12104)

* New Crowdin updates (directus#12105)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (Persian) (directus#12108)

* New translations en-US.yaml (Persian) (directus#12122)

* New translations en-US.yaml (Persian) (directus#12123)

* New translations en-US.yaml (Persian) (directus#12124)

* New translations en-US.yaml (Persian) (directus#12125)

* New translations en-US.yaml (Persian) (directus#12126)

* Fix language typo

Fixes directus#12131

* New translations en-US.yaml (Italian) (directus#12149)

* New translations en-US.yaml (Italian) (directus#12150)

* Upgrade table layout (directus#12154)

* Refactor v-table to script setup, add header append slot

* Rework table components + fix volar config

* Convert table-row to setup sfc

* Remove vetur config, now that volar works

* Remove unused component

* Remove field option from sidebar detail

* Add reusable v-field-list component

* Disable already selected fields

* Add col header ctx menus on tabular

* Tweak styling, add hover to resize handle

* Add column reordering

* Add support for nested relational fields

* Render header for relational interfaces better

* Ellipsis overflow in formatted-value

* Tweak an icon, have some fun with it

* New Crowdin updates (directus#12155)

* New translations en-US.yaml (Romanian)

* New translations en-US.yaml (Indonesian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (Spanish, Chile)

* New translations en-US.yaml (Thai)

* New translations en-US.yaml (Malay)

* New translations en-US.yaml (Breton)

* New translations en-US.yaml (Serbian (Latin))

* New translations en-US.yaml (Spanish, Latin America)

* New translations en-US.yaml (Vietnamese)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Swedish)

* New translations en-US.yaml (Turkish)

* New translations en-US.yaml (Estonian)

* New translations en-US.yaml (Portuguese, Brazilian)

* New translations en-US.yaml (Chinese Traditional)

* New translations en-US.yaml (French)

* New translations en-US.yaml (Hebrew)

* New translations en-US.yaml (Spanish)

* New translations en-US.yaml (Arabic)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Catalan)

* New translations en-US.yaml (Czech)

* New translations en-US.yaml (Danish)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Finnish)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Japanese)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Slovenian)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (English, United Kingdom)

* New translations en-US.yaml (English, Canada)

* New translations en-US.yaml (French, Canada)

* New translations en-US.yaml (Croatian)

* Docs: File Library (directus#11950)

* restructured file-library outline

* completed 3 sections, added action btn to CSS

* finished upload file and replace file sections

* completed full documentation refactor. media and proofreading remain

* updated media, except rename and delete folder vids

* copy ready. Links tested

* last second tweaks to copy and media

* stated multiple files can be uploaded

* Rijk's suggestions added and one final pass on copy edits

Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.local>
Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.hitronhub.home>

* Fix alignment in select

* New translations en-US.yaml (German) (directus#12168)

* Collection name layout fix (directus#12169)

* prevent null translations from being merged (directus#12162)

* fix: display related translations  (directus#12153)

* fix: flex > inline-block

* fix: remove regression when no vertical-aligner

* fix: use inline-flex

* use type json for select-color preset option field (directus#12192)

* add cdn domain in CSP directives for in app docs (directus#12193)

* add cdn domain in CSP directives for in app docs

* fix images & videos placeholder width

* Group groups in field select, add search when number of fields exceeds 20 (directus#12157)

* Group groups in field select

* Fix selecting nested o2m

* Add search to field-list

* Only show search if fields > 20

* Fix default value for v-input

* Add search to field selection

* Make search work on nested subset

* Make search work nested+insensitive

* Fix sorting in field select

* Fix relational fields nested in groups

* Fix nested group key path for m2o fields

* Fix label in field select component

* New translations en-US.yaml (Polish) (directus#12194)

* Export authorization service (directus#12208)

* New translations en-US.yaml (Italian) (directus#12217)

* update image and cloud details

* Update readme.md

* Add new export experience (directus#12201)

* Use script setup

* Start on export dialog

* Use new system field interface, replace limit with numeric input

* Set placeholder

* Add sort config

* Use folder picker, correct layoutQuery use

* Add local download button

* Allow writing exports to file

* Add notification after export

* Fix sort config, use new export endpoint

* Setup notification hints

* Add information notice

* Fix local limit, cancel button

* Add (basic) docs for export functionality

* Fix json export file format

* Implement xml batch stitching

* Resolve review points

* New Crowdin updates (directus#12219)

* New translations en-US.yaml (Romanian)

* New translations en-US.yaml (Indonesian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (Spanish, Chile)

* New translations en-US.yaml (Thai)

* New translations en-US.yaml (Breton)

* New translations en-US.yaml (Serbian (Latin))

* New translations en-US.yaml (Spanish, Latin America)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Portuguese)

* New translations en-US.yaml (Swedish)

* New translations en-US.yaml (Turkish)

* New translations en-US.yaml (Estonian)

* New translations en-US.yaml (Portuguese, Brazilian)

* New translations en-US.yaml (Chinese Traditional)

* New translations en-US.yaml (French)

* New translations en-US.yaml (Spanish)

* New translations en-US.yaml (Arabic)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Catalan)

* New translations en-US.yaml (Danish)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Finnish)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Slovenian)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (English, United Kingdom)

* New translations en-US.yaml (English, Canada)

* New translations en-US.yaml (French, Canada)

* New translations en-US.yaml (Croatian)

* Add direct download option to files interface (directus#12220)

* Fix nav bar not saving reset value on dbl click

* Update source file en-US.yaml (directus#12224)

* New translations en-US.yaml (Italian) (directus#12226)

* New translations en-US.yaml (Italian) (directus#12227)

* fix number input step up/down when undefined (directus#12222)

* Fix WYSIWYG link keyboard shortcut and add parent anchor tag detection (directus#12218)

* Fix WYSIWYG link keyboard shortcut and add parent anchor tag detection

* Fix saving of link on parent anchor tag

* Tweak tags placeholder for clarity (directus#12223)

* Tweak tags placeholder for clarity

* Update app/src/lang/translations/en-US.yaml

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* New Crowdin updates (directus#12228)

* New translations en-US.yaml (Romanian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (Spanish, Chile)

* New translations en-US.yaml (Thai)

* New translations en-US.yaml (Breton)

* New translations en-US.yaml (Serbian (Latin))

* New translations en-US.yaml (Spanish, Latin America)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Swedish)

* New translations en-US.yaml (Turkish)

* New translations en-US.yaml (Estonian)

* New translations en-US.yaml (Portuguese, Brazilian)

* New translations en-US.yaml (Chinese Traditional)

* New translations en-US.yaml (French)

* New translations en-US.yaml (Spanish)

* New translations en-US.yaml (Arabic)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Catalan)

* New translations en-US.yaml (Danish)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Finnish)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Slovenian)

* New translations en-US.yaml (English, United Kingdom)

* New translations en-US.yaml (English, Canada)

* New translations en-US.yaml (French, Canada)

* New translations en-US.yaml (Croatian)

* Style updates (directus#12229)

* default badge color to red

* update notice styling to avoid color variants

* darker warning color

* update dark mode primary color

* update svg previews

* show slider values by default

* add subtle glow to field focus

* add additional color options

* no yellow in settings

* Give status display proper defaults

* Use setup script + translations

* Add low-contrast flag to preset

* update date-picker header style

* add placeholder to datetime interface

* Fix sizing of image preview

* Fix spacing / border situation

* select color

* Render small images at original size

* More file library love

* update datetime placeholder

* datetime font weights

* Fix style lint issue

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* New Crowdin updates (directus#12230)

* Update source file en-US.yaml

* New translations en-US.yaml (French)

* New translations en-US.yaml (Polish) (directus#12232)

* Improvements to WYSIWYG interface (directus#12216)

* Ignore field value updating if it is disabled

* WYSiWYG: Allow to undo Insert image, Insert link, Insert media and Edit source code custom actions

* Bind MutationObserver to correct tinyMCE node

* Fix apply for disabled fields

* Emit null when empty

Co-authored-by: Andrew <trubay.andrey@gmail.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* fix M2O field deletion (directus#11538)

* fix M2O field deletion

* fix lint

* fix for MySQL

* Pull final dropColumn out of transaction

* Forget that, check for existing constraint before deleting it instead

* Fix lint warning in unrelated file

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Add lock for system cache (directus#12017)

* Add lock for system cache

* Add lock when forcing a flush

* Simplify code

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Disable sorting on nested relational

Has to be disabled until directus#12084 lands

* Fix nested relational limit for m2o fetching (directus#12235)

Fixes directus#12134

* Update my favorite file

* v9.7.0

* v9.7.0

* New translations en-US.yaml (Bulgarian) (directus#12241)

* New translations en-US.yaml (Bulgarian) (directus#12242)

* New translations en-US.yaml (Bulgarian) (directus#12243)

* fix export sidebar's collection not updating (directus#12274)

* Fix being able to export a relational field that is within a group (directus#12260)

* Fix field preview background color (directus#12276)

* Fix field preview background color

* switch primary-alt to use primary-10

* revert previous preview bg color change

* Add fields to directus_user app recommended permission (directus#12277)

* Fix color translation keys (directus#12279)

* Fix start setting of detail group (directus#12280)

Fixes directus#12257

* Prevent errors when using string filters with empty values (directus#11836)

* Prevent errors when using string filters with empty values

* Add tests

* String schema validation forced to false for null values

* Add query filter validation with permissions (directus#12190)

* Add query filter validation with permissions

* Allow all fields in test

* Revert test and add check for permissions with empty fields

* Add check for deep filters

* Add tests

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Fix incorrect order of migrations when reverting (directus#12130)

* Fix groups in v-field-template (directus#12284)

* Fix groups in v-field-template

* Remove unused param

* Prefix existing field typecasting flags with "cast-" (directus#12141)

* Prefix typecasting field flags

* Fix payload test

* Update flags for system tables and for field creation in app

* Revert cast-hash and cast-uuid

* Rename migrations file to current date

* Add App Translation Strings in Settings (directus#12170)

* add migration for translation strings

* add to navigation

* WIP

* fix dialog overflow

* update translation keys

* Update logic

* add placeholder to system-language

* fix translation

* remove unused import

* reset dialog on create new

* ensure search input is visible when searching

* merge translation strings on set language

* merge translation strings on update

* hydrate

* make sure null translation do not get merged

* change dialog to drawer

* update placeholder text

* fix form value

* revert dialog style change

* rename drawer component

* Force safe key name

* Move interface to system interfaces

The saved values are Directus app proprietary, so to prevent confusion in what it's supposed to do, we'll move it to system.

* Move composable to root composables

* Use new languages input in interface/display options

* hide translation strings field in project settings

* set system true to system-input-translated-string

* use this in field detail notes

* use in list options

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* New Crowdin updates (directus#12300)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (French, Canada)

* Handle array vs string based sorting in export (directus#12302)

Fixes directus#12292

* Remove confusing warning

* New translations en-US.yaml (Polish) (directus#12309)

* New translations en-US.yaml (Polish) (directus#12311)

* New translations en-US.yaml (Bulgarian) (directus#12313)

* New Crowdin updates (directus#12314)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Chinese Simplified)

* New Crowdin updates (directus#12315)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Chinese Simplified)

* Fix inconsistent delete action payload (directus#12328)

Fixes directus#12326

* Add shortcut from data model to collection content (directus#12324)

* Add shortcut to collection content from its data model

* Revert automatic formatting to keep in sync with main

* Save last accessed collection in Content Module (directus#12310)

* Save last accessed colection in Content Module

* check visible collections to support nested ones

* Prevent M2M item edits without permission via app (directus#12312)

* disable actions based on permissions (directus#12316)

* Fix auto-casting of array like values in env (directus#12330)

* New Crowdin updates (directus#12329)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Chinese Simplified)

* Update source file en-US.yaml

* New translations en-US.yaml (English, United Kingdom)

* New translations en-US.yaml (Polish) (directus#12332)

* Use correct interface in dropdown choices

* Update my favorite file

* v9.7.1

* v9.7.1

* Docs: Slightly better scrollbars in dark mode (directus#12341)

* fix: cast translation strings as json (directus#12349)

* fix activity fields using invalid display (directus#12351)

* Fix translation drawer delete button hover style (directus#12353)

* fix LOGGER_LEVELS array being split as string (directus#12342)

* fix LOGGER_LEVELS array being split as string

* use toArray

* some basic tests

* Docs dark mode (directus#12362)

* docs dark mode color to match app

* not sure if needed

* Revert "not sure if needed"

This reverts commit f8a7119.

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Use correct value in driver validation

* Fix action for updateAllowed in M2M usePerms (directus#12371)

* New translations en-US.yaml (Bulgarian) (directus#12374)

* New Crowdin updates (directus#12375)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (Ukrainian) (directus#12376)

* New translations en-US.yaml (Ukrainian) (directus#12378)

* New Crowdin updates (directus#12379)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (Bulgarian) (directus#12381)

* Fix deep _limit -1 not resolving all items (directus#12385)

* Fix typecast migration array (directus#12372)

* Fix incorrect saving of field special in migration

* Add hotfix

* Run typecasting again just in case...

* Rename migration

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* New translations en-US.yaml (Spanish, Latin America) (directus#12388)

* Update system-filter interface to use v-field-list (directus#12320)

* update system filter to use v-field-list

* remove unused code

* use v-field-list in nodes

* prevent node name wrapping

* use prepend as the correct term

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Fix default value for stars display (directus#12391)

Fixes directus#12387

* Fix csv values from env variables in telemetry (directus#12370)

* fix: translate formatted value when setting translation key (directus#12354)

* fix: translate formatted value when setting translation key

* linting

* Use Url util to construct urls everywhere (directus#12394)

Fixes directus#12345

* refactor: replace deprecated String.prototype.substr() (directus#12344)

.substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated

Signed-off-by: Tobias Speicher <rootcommander@gmail.com>

* fix: handle nulls when processing m2m (directus#12187)

fixes directus#12099

Co-authored-by: Spencer Jones <sjones@morningconsult.com>

* New translations en-US.yaml (Italian) (directus#12396)

* Force path part to string

* Fix line height in table rows

* Add field-level validation (directus#12363)

* Add field validation column

* Add frontend config for validation

* Make it work

* Add regex to filter configuration

* Fix const/let

* Add custom validation message support

* Add custom validation message tooltip inline

* Fix custom names in validation errors up top

* Fix type error

* Nog eentje om het af te leren

* resolve unused import warnings

* New Crowdin updates (directus#12401)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (English, United Kingdom)

* New translations en-US.yaml (English, Canada)

* Fix system-filter button check

* Fix collection name usage

* New translations en-US.yaml (Italian) (directus#12404)

* New translations en-US.yaml (Italian) (directus#12405)

* New translations en-US.yaml (French) (directus#12409)

* New translations en-US.yaml (Spanish) (directus#12411)

* docs homepage clarifications and tweaks (directus#12410)

* New translations en-US.yaml (Spanish) (directus#12413)

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Eron Donevan Powell <62306630+erondpowell@users.noreply.github.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Chris Bartley <chris@chrisbartley.com>
Co-authored-by: schlagmichdoch <52242352+schlagmichdoch@users.noreply.github.com>
Co-authored-by: Dominik Tils <d.tils@studentec.de>
Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
Co-authored-by: Dominic Marcelino <46492597+Dominic-Marcelino@users.noreply.github.com>
Co-authored-by: José Varela <joselcvarela@gmail.com>
Co-authored-by: Ariunbold G <g.ariunbold@gmail.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Abdón Rodríguez Davila <a@abdonrd.com>
Co-authored-by: Nayan Patel <79650289+PatelN123@users.noreply.github.com>
Co-authored-by: Michael Lopez <mickael.lopez@gmail.com>
Co-authored-by: Maarten Van Neyghem <maartenvn.eu@gmail.com>
Co-authored-by: Yt <raphael@megzari.com>
Co-authored-by: Håvard Vidme <havard.vidme@kartverket.no>
Co-authored-by: Ben Haynes <ben@rngr.org>
Co-authored-by: Lukas Kimpel <31202904+eXsiLe95@users.noreply.github.com>
Co-authored-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>
Co-authored-by: Spencer Jones <jones.spencera@gmail.com>
Co-authored-by: Spencer Jones <sjones@morningconsult.com>
Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.local>
Co-authored-by: Nikola Rožić <nrozic@users.noreply.github.com>
Co-authored-by: Eron Powell <eronpowell@Erons-MBP-2.hitronhub.home>
Co-authored-by: Andrey Trubay <trubay.andrey@gmail.com>
Co-authored-by: Yasser Lahbibi <yasser.lahbibi@apenhet.com>
Co-authored-by: Gerard Lamusse <gerardlamo@gmail.com>
Co-authored-by: Lukas Schätzle <Lukas-schaetzle@web.de>
Co-authored-by: Alexandre Lotte <14101189+loteoo@users.noreply.github.com>
Co-authored-by: CommanderRoot <CommanderRoot@users.noreply.github.com>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants