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

Ambiguous issue when user id filtering in multiple relations #9228

Closed
3 tasks done
ajira86 opened this issue Oct 29, 2021 · 18 comments · Fixed by #9494
Closed
3 tasks done

Ambiguous issue when user id filtering in multiple relations #9228

ajira86 opened this issue Oct 29, 2021 · 18 comments · Fixed by #9494
Assignees
Labels
Milestone

Comments

@ajira86
Copy link

ajira86 commented Oct 29, 2021

Preflight Checklist

Describe the Bug

I created a "company" object which as "owner" relation ship on multiple object. This let me manage object access for multiple groups of user and keep common permissions system.

My issue come when an object as multiple children with permission rules on directus_users table.

To Reproduce

  1. Create 3 objects like test1, test2, test3
  2. Create a relation to directus_users in test2 and test3
  3. Create a relation to test2 and test3 in test1
  4. Define read rules to test2.user and test3.user with CURRENT_USER
  5. Login with limited user, you can read test2 and test3 objects and its items
  6. You can see test1 object but not its items with error [INTERNAL_SERVER_ERROR] An unexpected error occurred.

Errors Shown

08:57:52 🚨 error select * from (select "test3"."id" from "test3" left join "directus_users" as "xccij" on "test3"."user" = "xccij"."id" where (("xccij"."id" = $1)) and "id" = $2 limit $3) as "foo" - column reference "id" is ambiguous
error: select * from (select "test3"."id" from "test3" left join "directus_users" as "xccij" on "test3"."user" = "xccij"."id" where (("xccij"."id" = $1)) and "id" = $2 limit $3) as "foo" - column reference "id" is ambiguous

What version of Directus are you using?

v9.0.0-rc.99

What version of Node.js are you using?

16.12.0

What database are you using?

Postgres (PostGIS)

What browser are you using?

Firefox

What operating system are you using?

Debian

How are you deploying Directus?

docker

@ajira86 ajira86 changed the title Ambiguous issue when multiple user id filtering in relations Ambiguous issue when user id filtering in multiple relations Oct 29, 2021
@8byr0
Copy link
Contributor

8byr0 commented Oct 30, 2021

If this can help troubleshooting:

Same issue here using rc99. Only the way to get this error is a bit different. On my side this is the result of a gql aggregation:

 worktime_aggregated(
      groupBy: ["project"]
      filter: { project: { id: { _eq: $projectId } }, billable: { _eq: true } }
    ) {
      group
      count {
        id
      }
      sum {
        duration_seconds
      }
    }

Which results in a similar error:

[GraphQL error]: Message: select "worktime"."project", count("id") as "count->id", count("__typename") as "count->__typename", sum("duration_seconds") as "sum->duration_seconds", sum("__typename") as "sum->__typename" from "worktime" left join "project" as "bvsva" on "worktime"."project" = "bvsva"."id" where "bvsva"."id" = $1 and "worktime"."billable" = $2 group by "project" order by "worktime"."project" asc limit $3 - column reference "id" is ambiguous, Location: [object Object], Path: worktime_aggregated

@Oreilles Oreilles assigned Oreilles and unassigned Oreilles Oct 30, 2021
@Markario
Copy link

Markario commented Oct 30, 2021

I have the same issue. It comes from this union all

if (query.union) {
const [field, keys] = query.union;
if (keys.length) {
const queries = keys.map((key) => {
return knex.select('*').from(
dbQuery
.clone()
.andWhere({ [field]: key })
.as('foo')
);
});
dbQuery = knex.unionAll(queries);
}
}

I patched mine to use a ref of the column (field) in the current collection/table (using getColumnPreprocessor) instead of [field]: value, but there's probably a better way to fix this. Perhaps moving this whole if (query.union) block into getDBQuery.

@Oreilles
Copy link
Contributor

@rijkvanzanten in op's query:

SELECT
	"test3"."id"
FROM
	"test3"
LEFT JOIN "directus_users" AS "xccij" ON "test3"."user" = "xccij"."id"
WHERE (("xccij"."id" = $1))
AND "id" = $2
LIMIT $3

is the id in "id" = $2 refering to "test3"."id" or "xccij"."id" ?

@tspvivek
Copy link

tspvivek commented Nov 1, 2021

We also started facing the issue after upgrading to RC99. The ambiguous issue arises when *.* or *.*.* is used for fields. As a workaround we add required fields one by one for now..

@rijkvanzanten
Copy link
Member

@rijkvanzanten in op's query:

SELECT
	"test3"."id"
FROM
	"test3"
LEFT JOIN "directus_users" AS "xccij" ON "test3"."user" = "xccij"."id"
WHERE (("xccij"."id" = $1))
AND "id" = $2
LIMIT $3

is the id in "id" = $2 refering to "test3"."id" or "xccij"."id" ?

Not sure! I'm afraid there isn't enough information in the OP to know exactly where that filter on id = 2 comes from. That being said, I suspect it's the primary key of the item that's used in a filter, as that would align with what @8byr0 mentioned.

@rijkvanzanten
Copy link
Member

@tspvivek Do you have a database dump to reproduce with? Are you using any other filters? I just tried this in a new setup, but am having some trouble reproducing it 🤔

@8byr0
Copy link
Contributor

8byr0 commented Nov 1, 2021

@rijkvanzanten in op's query:

SELECT
	"test3"."id"
FROM
	"test3"
LEFT JOIN "directus_users" AS "xccij" ON "test3"."user" = "xccij"."id"
WHERE (("xccij"."id" = $1))
AND "id" = $2
LIMIT $3

is the id in "id" = $2 refering to "test3"."id" or "xccij"."id" ?

Not sure! I'm afraid there isn't enough information in the OP to know exactly where that filter on id = 2 comes from. That being said, I suspect it's the primary key of the item that's used in a filter, as that would align with what @8byr0 mentioned.

In my case the problem actually comes from the count("id") select statement.
The actual query is

select "worktime"."project", 
count("id") as "count->id", 
sum("duration_seconds") as "sum->duration_seconds" 

from "worktime" 
left join "project" as "bvsva" on "worktime"."project" = "bvsva"."id" 
where "bvsva"."id" = $1 and "worktime"."billable" = $2 

group by "project" 
order by "worktime"."project" asc 

when it should be

select "worktime"."project", 
# We explicitly say that it's worktime.id that has to be counted (otherwise it's confusing with project.id)
count("worktime"."id") as "count->id", 
sum("duration_seconds") as "sum->duration_seconds" 

from "worktime" 
left join "project" as "bvsva" on "worktime"."project" = "bvsva"."id" 
where "bvsva"."id" = $1 and "worktime"."billable" = $2 

group by "project" 
order by "worktime"."project" asc 

@Markario
Copy link

Markario commented Nov 1, 2021

In my case there was no filter on the client side. There is a M2O relation + permissions, and the and id = ? is added in the query.union block I linked previously.

The client query was simplified to this

query {
  collectionOne {
    m2oRelation {
      anyFieldScalarOrOtherwise
    }
  }
}

id in my particular case is picked not from a filter, nor the client query, but as the primary key in this block (in the case of M2O)

if (nestedNode.type === 'm2o') {
const foreignField = schema.collections[nestedNode.relation.related_collection!].primary;
const foreignIds = uniq(parentItems.map((res) => res[nestedNode.relation.field])).filter((id) => id);
const limit = nestedNode.query.limit;
if (limit === -1) {
merge(nestedNode, { query: { filter: { [foreignField]: { _in: foreignIds } } } });
} else {
nestedNode.query.union = [foreignField, foreignIds];
}
} else if (nestedNode.type === 'o2m') {

foreignField is a reference to the primary key field, id in my case and probably most cases.

const foreignField = schema.collections[nestedNode.relation.related_collection!].primary;

and passing it in nestedNode.query.union = [foreignField, foreignIds] which results in the additional where added here

if (query.union) {
const [field, keys] = query.union;
if (keys.length) {
const queries = keys.map((key) => {
return knex.select('*').from(
dbQuery
.clone()
.andWhere({ [field]: key })
.as('foo')
);
});
dbQuery = knex.unionAll(queries);
}
}

The foreignField/field is not prefixed with the table and is passed as-is in the additional where added for unions.

@Markario
Copy link

Markario commented Nov 1, 2021

One way I narrowed it down was by adding limit=-1 to my query to bypass the union logic for M2O

@rijkvanzanten
Copy link
Member

@Markario Does the same problem apply in the REST API? I was trying to reproduce it, but didn't test with GraphQL. Wondering if that's where it goes wrong

@Markario
Copy link

Markario commented Nov 1, 2021

@rijkvanzanten Yeah, took me a few mins to undo my patch and look at the REST docs. For the same collection I did GET /items/collectionOne?fields[]=m2oCollection.anyColumn and get the same error as the GraphQL equivalent. I'll try to create a minimal dump to reproduce it.

error: 
select * from (
  select "m2oCollection"."id"
  from "m2oCollection"
  left join "aCollectionForSomePermissions1" as "folec" on "m2oCollection"."relationForPermissions1" = "folec"."id"
  left join "aCollectionForSomePermissions2" as "nsipf" on "m2oCollection"."relationForPermissions2" = "nsipf"."id"
  where ("folec"."status" = $1 and "nsipf"."status" = $2) and "id" = $3
  limit $4
) as "foo"
union all
select * from (
  select "m2oCollection"."id"
  from "m2oCollection"
  left join "aCollectionForSomePermissions1" as "folec" on "m2oCollection"."relationForPermissions1" = "folec"."id"
  left join "aCollectionForSomePermissions2" as "nsipf" on "m2oCollection"."relationForPermissions2" = "nsipf"."id"
  where ("folec"."status" = $5 and "nsipf"."status" = $6) and "id" = $7
  limit $8
) as "foo" - column reference "id" is ambiguous

@Markario
Copy link

Markario commented Nov 2, 2021

Created a fresh directus project and reproduced the issue with both GraphQL & REST queries.

https://gist.github.com/Markario/4d004c67b9df108f7d72ca5b72472458 (gist of dump + notes)

Authorization Bearer customer

GraphQL

query {
  collection1 {
    related {
      name
    }
  }
}

results in

{
  "errors": [
    {
      "message": "select * from (select \"collection2\".\"name\", \"collection2\".\"id\" from \"collection2\" left join \"collection3\" as \"yujfc\" on \"collection2\".\"author\" = \"yujfc\".\"id\" where (\"yujfc\".\"status\" = $1) and \"id\" = $2 limit $3) as \"foo\" - column reference \"id\" is ambiguous",
      "locations": [
        {
          "line": 31,
          "column": 3
        }
      ],
      "path": [
        "collection1"
      ]
    }
  ],
  "data": {
    "collection1": null
  }
}

Where $2 = 51cc0a0a-688e-41d4-80e1-2a8409f19b01 (an id in collection2)

The following works as it bypasses the M2O query.union

query {
  collection1 {
    related(limit: -1) {
      name
    }
  }
}

REST

http://localhost:8055/items/collection1?access_token=customer&fields=related.name

results in error: select * from (select "collection2"."name", "collection2"."id" from "collection2" left join "collection3" as "khdcz" on "collection2"."author" = "khdcz"."id" where ("khdcz"."status" = $1) and "id" = $2 limit $3) as "foo" - column reference "id" is ambiguous

@rijkvanzanten
Copy link
Member

Thanks @Markario! That reproduction is super helpful 👍🏻

@Oreilles
Copy link
Contributor

Oreilles commented Nov 2, 2021

So, there is two problems: The foreignField/field is effectively not prefixed with its the table when adding the where clause - that could have been an easy fix, but the other problem is that the related collection is joined with an alias name. This happens deep inside applyFilter in applyQuery in getDBQuery. So we'd need a way to pass those alias up to runAST.run...

@Markario
Copy link

Markario commented Nov 2, 2021

In my query above the table collection2, collection1.related's relation, isn't aliased and only the joined tables are; so, prefixing works collection2.id. Is there a scenario where that would not be the case?

@rijkvanzanten
Copy link
Member

@Markario I believe @Oreilles means the internal aliasing that the API does. In order to prevent this exact problem on the collection naming, each collection is aliased to a random string internally 👍🏻

@Markario
Copy link

Markario commented Nov 2, 2021

Right that makes sense, but there isn't any internal aliasing happening in any of the above cases on the primary query tables. I see the joined tables have generated aliases, but not the first table. Is there a situation where the first table in the query is also aliased?

const dbQuery = knex.select(fieldNodes.map(preProcess)).from(table);

Is there a scenario where nestedNode.query.union's foreignField does not refer to that same table? Maybe M2A? I haven't tested with a similar M2A relation.

@rijkvanzanten
Copy link
Member

Is there a situation where the first table in the query is also aliased?

Hmm no I don't think so. As of right now the root query just relies on the original table name, as that should be unique in the query as we alias all the relational ones 🤔

rijkvanzanten added a commit that referenced this issue Nov 4, 2021
* Move union query application to applyQuery, fix where clause

Fixes #9228

* Handle case where union IDs length = 0

* Return modified db query

* Apply union last
dimitrov-adrian pushed a commit to dimitrov-adrian/directus that referenced this issue Nov 5, 2021
…s#9494)

* Move union query application to applyQuery, fix where clause

Fixes directus#9228

* Handle case where union IDs length = 0

* Return modified db query

* Apply union last
adanielyan pushed a commit to adanielyan/directus that referenced this issue Nov 9, 2021
…s#9494)

* Move union query application to applyQuery, fix where clause

Fixes directus#9228

* Handle case where union IDs length = 0

* Return modified db query

* Apply union last
rijkvanzanten added a commit that referenced this issue Dec 31, 2021
* Fix localstorage file deletion (#9126)

* excluded VS specific files

* new files after updating directus sources

* case insensitive string matching fix

* Remove accidental commit files

* Cleanup gitignore

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

* Update dependency vite to v2.6.11 (#9121)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency axios to v0.24.0 (#9132)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* New Crowdin updates (#9138)

* Update source file en-US.yaml

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

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

* New translations en-US.yaml (Indonesian)

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

* New translations en-US.yaml (Thai)

* New translations en-US.yaml (Hindi)

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

* 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 (Vietnamese)

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

* New translations en-US.yaml (French)

* New translations en-US.yaml (Finnish)

* 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 (Hungarian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Japanese)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Slovenian)

* Update dependency @types/busboy to v0.3.1 (#9096)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency @types/js-yaml to v4.0.4 (#9090)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency sass to v1.43.3 (#9035)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Docs structure (#9071)

* WIP

* updates

* docs updates

* structure

* big structure update

* docs module icon change

* in-app docs nav

* more content and structure changes

* Remove redundant

* Fix docs build in app

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

* Update dependency stylelint-config-standard to v23 (#9026)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency stylelint to v14 (#9016)

* Update dependency stylelint to v14

* Update dependency stylelint-scss to v4

* Update dependency stylelint-order to v5

* Undo command change

* Update stylelint command

* Use modern color syntax

Who knew this was already supported everywhere? Awesome!!

* Update stylelint-config-standard

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Pin dependency stylelint-config-standard to 23.0.0 (#9140)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Fix type issues in busboy update

* Change v-checkbox background color when disabled (#9070)

* Change v-checkbox background color when disabled

* Only apply style for block input.

* Don't enforce rgb modern syntax

* Use textarea input for textarea placeholder (#9041)

* Reworked Sass to automatically generate color variations from palette (#8890)

* Reworked Sass to automatically generate color variations from palette

* Fixed naming scheme for mixing colors

* Updated light theme to use pre-defined steps

* Updated dark theme to use pre-defined steps, added steps at 90 & 110

* Hardcoded -alt color variations, extracted color variation generator to reusable mixin.

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

* Update dependency ts-node to v10.4.0 (#9083)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency eslint to v8.1.0 (#9091)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency oracledb to v5.3.0 (#9042)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update typescript-eslint monorepo to v5.2.0 (#9133)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix time series date field allow list (#9143)

* Wait for checks before auto-merge Crowdin updates (#9156)

* Update dependency lint-staged to v11.2.5 (#9155)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Ignore email field in oauth and store email in external_identifier (#9153)

* Ignore email field in oauth and store email in external_identifier if needed

* Removed unused variable

* docs: improve running locally (#9142)

* Update gatsby monorepo to v4 (#9028)

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Jay Cammarano <jay.cammarano@gmail.com>

* Update dependency micromark to v3.0.7 (#9141)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Add missing config options file

* Fix link/method ref

* Remove homepage redirect

* Add padding to calendar layout event

* Update dependency stylelint to v14.0.1 (#9168)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency vite to v2.6.12 (#9169)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Re-add missing oauth docs (#9170)

* Update Node.js to v16.13.0 (#9174)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Added the provider to auth hooks (#9059)

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

* Update dependency knex-schema-inspector to v1.6.4 (#9159)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency sass to v1.43.4 (#9177)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency lint-staged to v11.2.6 (#9175)

* Set no-cache header on extension sources (#9186)

This should hopefully fix caching issues some users were experiencing.

* Clean up App type shims (#9190)

* Clean up App base url replacement (#9192)

* removed toLowerCase for dbSafe fields (#9183)

* Add `folder`, `template`, `enableCreate`, `enableSelect` options to the files interface (#9184)

* Always show folder icon for alias tables (folders) (#9187)

* Always show folder icon for alias tables (folders)

* Update app/src/modules/settings/routes/data-model/collections/components/collection-item.vue

Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>

Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>

* Fixed dynamic translations import. (#9179)

* Fixes broken links in docs (#9172)

* first half of broken links fixed

* next chunk of broken links resolved

* next chunk of urls

* last chunk of links

* one more

* filter rules

* homepage links

* removed localhost

* filter rules for query

* updated links

* relationships link

* changed links from references to glossary

* Export API dist folder at the root of the package path (#9199)

* Clarified some oauth things in the docs (#9203)

* Update dependency vite to v2.6.13 (#9193)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency pinia to v2.0.0 (#9205)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency simple-git-hooks to v2.7.0 (#9195)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency @vitejs/plugin-vue to v1.9.4 (#9181)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Force renovate to use Node 16.13 (#9209)

* Revert "Force renovate to use Node 16.13 (#9209)" (#9219)

* Update popular links

* removed unused code

RGBA-> RGB(A)

added alpha slider

added label to alpha

* change alpha back to 0-100

* Update dependency vite-plugin-md to v0.11.4 (#9206)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* tweak fallback interface selectors (#9234)

* update field flow styling

* Add configurable headers for webhooks (#8855)

* Add configurable headers for webhooks

* Update api/src/database/migrations/20211016A-add-webhook-headers.ts

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

* broken database docs mirroring link

* Fixes for docs links

* LDAP auth provider (#9074)

* Added LDAP implementation

* Cleanup and added refresh checking

* Added provider check to ldap

* Added LDAP docs

* Always update LDAP user role on authentication

* Fetched package-json from github

* Fixed lint error

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

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

* Added missing locale key

* Update docs/guides/api-config.md

* Update docs/configuration/config-options.md

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

* Added back LDAP example

* Update config-options.md

* getUserID function sjhouldn't care about password

* Added LOCKOUT to INVALID_ACCOUNT_FLAGS

* Update styling approach for v-select

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

* Append `access_token` to images in WYSIWYG only once (#9062)

* append access_token to image in wysiwyg only once

* do not append token in previewUrl when clicking an image from wysiwyg

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

* Pin dependency @types/ldapjs to 2.2.1 (#9238)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Fix generated columns being required.  (#9200)

* Fix generated columns being required. Also prevent schema changes on generated columns.

* Fix type errors

* Disable `unique` and `nullable` instead of not showing them.

* Fix other type error

* Nullable check small refactor

* Fixed MSSQL query

* Fixed oracle query

* Map interface improvements (#9239)

* Add tooltips on feature hover on the interface
* Add marker on geocoder search result
* Improve map interface style

* Fix dynamic variables not working anymore in UUID filter (#9180)

* Fix $CURRENT_USER not working anymore in UUID filter

* $Handle CURRENT_ROLE too

* Add CLI to exports (#9241)

* v9.0.0-rc.100

* Update changelog.md

* Update package.json

* Update package.json

* Fixed Github oauth config (#9256)

* Removed invalid column in mssql schema inspector (#9260)

* workflow-dispatch added to e2e-tests.yml (#9265)

* fix new field group selection (#9301)

* Add shadows to v-menu angles (#9297)

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

* Revise GitHub workflows #2 (#9240)

* GitHub workflow revision #2

* Add a few comments

* Add and fix comments

* Move kodiak config into .github

To not overflow the root directory

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

* Rearrange on events in e2e workflow (#9308)

* New Crowdin updates (#9158)

* New translations en-US.yaml (Danish)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (French)

* New translations en-US.yaml (French)

* New translations en-US.yaml (Estonian)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Vietnamese)

* New translations en-US.yaml (Vietnamese)

* New translations en-US.yaml (Breton)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Norwegian)

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

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

* New translations en-US.yaml (Indonesian)

* 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 (Chinese Traditional)

* 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 (Vietnamese)

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

* New translations en-US.yaml (French)

* New translations en-US.yaml (Finnish)

* 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 (Greek)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Japanese)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Slovenian)

* Update source file en-US.yaml

* New translations en-US.yaml (Romanian)

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

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

* 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 (Bengali, India)

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

* 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 (Slovak)

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

* New translations en-US.yaml (Swedish)

* New translations en-US.yaml (Turkish)

* New translations en-US.yaml (Estonian)

* New translations en-US.yaml (Vietnamese)

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

* New translations en-US.yaml (French)

* New translations en-US.yaml (Finnish)

* New translations en-US.yaml (Spanish)

* New translations en-US.yaml (Afrikaans)

* 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 (Greek)

* New translations en-US.yaml (Hebrew)

* New translations en-US.yaml (Ukrainian)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Japanese)

* New translations en-US.yaml (Georgian)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Norwegian)

* New translations en-US.yaml (Slovenian)

* Update source file en-US.yaml

* Update source file en-US.yaml

* New translations en-US.yaml (Spanish)

* New translations en-US.yaml (Polish)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Bulgarian)

* New translations en-US.yaml (Russian)

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

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

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>

* Removed undefined type from LDAP userAccountControl (#9309)

* Feat/custom ldap mail attribute (#9307)

* Allow custom email field for LDAP

* Update docs

* Break out into variable and don't cast to String

* Set calendar height to 100% (#9295)

* Set calendar height to 100% and set `smallHeader to true

* Unset `smallHeader`

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

* Update Oracle to support `is_generated` (#9310)

* Switch back to fkirc/skip-duplicate-actions (#9312)

All changes have been merged in

* Update dependency npm to v8.1.2 (#9221)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

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

* Update dependency knex to v0.95.12 (#9208)

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Added state param to oauth to make Okta happy (#9289)

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

* Update typescript-eslint monorepo to v5.3.0 (#9317)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* prefix aggregation field with table name (#9314)

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

* Update dependency rollup to v2.59.0 (#9293)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* End-to-end tests for filters (#9078)

* reorganized for sanity

* filter tests for _eq/_neq

* logical operators

* update one one to many

* /:collection PATCH one to many

* base tables.id => uuids to minimize collisions

* tests pass

* added python to dockerfile

* tests passing

* ci?

* ci...

* hanging async

* Input code json (#9291)

* remove language selection for input code type JSON

* lint as json when type is json

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

* Add SET NULL to directus_files.uploaded_by constraint (#9305)

* add set null to directus_files constraint

* SET NULL on created_by and modified_by

* "user_created" and "user_updated" => SET NULL

* SET NULL on collections optional system fields

* fixed dropColumn()

* Add line breaks, cause little OCD

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

* Update translation icon in interface selector (#9292)

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

* Map layout and interface improvements (#9288)

* Map layout and interface improvements
* Fix marker not showing up on geocoder search
* Replaced geocoder search placeholder
* Fix geocoder hit area
* Fix item popup positioning
* Removed unselect button
* Removed "No results" popup
* Removed option to filter map on demand vs automatically
* Renamed Geometry field option
* Added placeholder to template option
* Hide "Delete" button when no feature are selected

* Lint fix

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

* add content and fix broken links (#9321)

* Fix issues with fields config (#9324)

* Fix issues with fields config

* Fix /fields endpoint return type for alias fields

* Fix display selection in relational interfaces

* fixes many dead links (#9325)

* New Crowdin updates (#9326)

* Update source file en-US.yaml

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

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

* New translations en-US.yaml (Thai)

* 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 (Chinese Simplified)

* 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 (Hungarian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Slovenian)

* Added supported function to geometryHelper, added geometrySupport to serverinfo (#9290)

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

* fix lint warnings (#9287)

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

* Fixes broken docs links (#9327)

* a few more dead links

* one last link set

* fixed bad link

* filter files by folder when a folder is specified (#9285)

* Prevent file input preloading drawer (#9282)

* improve disabled interface selector style (#9281)

* Fix: disable sort field for singleton collections (#9270)

* disable sort for singleton collections

* fix modify sort then activate singleton

* Fixed nullable and unique disabled check (#9269)

* Context menu improvements (#9271)

* add focusout to close context menus

* add "Edit collection" to collections context menu

* disable context menu when nothing to show

* remove obsolete code

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

* fix(graphql): remove __typename from selection nodes when present (#9318)

* fix(graphql): remove __typename from selection nodes when present

* fix: cast selectionNode to FieldNode in filter callback

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

* New translations en-US.yaml (Arabic) (#9332)

* New translations en-US.yaml (Breton) (#9335)

* fix m2a not savable (#9349)

* Translations interface fix (#9333)

* Translations interface fix

Fixes issue

* Translations interface fix (2)

* Fix eslint warnings (#9357)

* Fixes broken links in the documentation (#9354)

* broken links

* more broken links

* last but not least

* Update dependency @types/sharp to v0.29.3 (#9352)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Fix nullable boolean (#8497)

* nullable boolean can now be set to null again after it weas true or false

* Implementation changed to Composition API

* Implementation changed to Composition API

* fixed formatting issues

* fixed formatting issues

* fixed formatting issues

* fixed formatting issues

* run linters on branch

* run linters on branch

* run linters on branch

* run linters on branch

* fixed formatting issues

* changes to checkbox interface reverted

* changes to checkbox interface reverted

* Update boolean.vue

* Fix date on sqlite (#7774)

* fix date on sqlite

* remove unused imports

* rename KnexSpatial to KnexDate

Co-authored-by: Jose Varela <joselcvarela@gmail.com>

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

* Added openid fallback to user token info if profile URL not defined (#9368)

* Update gatsby monorepo to v4.1.0 (#9367)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* remove default color options from labels display (#9362)

* Translate system fields when creating new collections (#8104)

* translate system fields when create collections

* handle '$t:' translations only on interface

Co-authored-by: Jose Varela <joselcvarela@gmail.com>

* Update vue monorepo to v3.2.21 (#9341)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency mime to v2.6.0 (#9370)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency marked to v3.0.8 (#9359)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency openid-client to v5 (#9202)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* add live chat to public docs (#9373)

* Docs live chat tweak  (#9374)

* add live chat to public docs

* moving snippet to correct element

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

* Fix condition to translate directus collections (#9353)

* Fix condition to translate directus collections

* Check whether collection belongs to 'directus_collections'

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

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

* Update dependency knex to v0.95.13 (#9378)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency @types/ldapjs to v2.2.2 (#9377)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Set user token as unique (#9381)

* Update users.md (#9382)

* Update dependency mime to v3 (#9380)

* New translations en-US.yaml (Russian) (#9388)

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

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

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

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

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

* Enhance comments in CI workflow (#9408)

* Fix hover effect on o2m and m2a lists (#9412) (#9414)

* Added user rebinding on reconnect in LDAP (#9339)

* Added reconnect handling code for LDAP

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

* Improved error handling

* Updated re-bind so we can await it when required

* Added bind check before operations to ensure client has user

* Cleaned up reconnect handling in LDAP

* Minor cleanup

* Minor cleanup

* Link to all (open & closed) issues in bug report (#9394)

* fix corresponding field name (#9393)

* Update config-options.md (#9218)

* Update config-options.md

* Update config-options.md

* Update dependency pinia to v2.0.1 (#9428)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Fixed SET NULL on directus_files for MSSQL (#9425)

* fixed migration on mssql

* removed useless migration

* Use primary key as default sort in map layout (#9403)

* Move renovate config into .github (#9404)

* remove module and collection overrides from role

* Update fullcalendar monorepo to v5.10.1 (#9386)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update dependency tinymce to v5.10.1 (#9385)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Add placeholder to Language Indicator Field for first Translations setup (#9337)

* Hide Language Indicator Field initially

* fix lint error

* revert hiding languageFIeld & add placeholder

* Fix related value for alias typed fields (#9210) (#9401)

* Allow dynamic user variables to be used with filter rules (cont.) (#9376)

* Move permissions extraction to accountability

* Fix permissions retrieval for public user

* Fetch user / role context in permissions middleware

* Remove unnecessary parseFilter

* Rename schemaCache to systemCache

* Add permissions caching

* Add system cache invalidation on permission changes

* Improve caching perf by reducing scope

* Add note to docs

* Clarify compatibility with conditional fields/filters

* Fix lint warning

* Allow nested vars in system-filter-input

* Add custom getter function that resolves arrays

* Add is-dynamic-variable util

* Export new util

* Cleanup parse filter

* Fix build

* Move debounce up to use-items

* Remove unused prop

* 🧹

* Fix input pattern usage w/ vars

* Remove debounce from search-input, increase throttle

* Update dependency pinia to v2.0.2 (#9436)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Rework hook registration (#8027)

* Rework hook registration

* Remove event and action fields from hook payloads

* Move "error" action to "request.error" filter

* Emit meta and context objects in filters and actions

* Run filters sequentially

* Update hook templates

* Fix CLI hook test

* Also emit `<collection>.items.crud` when emitting `items.crud`.

* Update hook docs

Co-authored-by: Oreilles <oreilles.github@nitoref.io>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Fix duplicate hubspot injection (#9437)

* Clean up API exports (#9418)

* Move API entrypoint to typescipt

* Remove explicit cli exort from API

The "./*" export should export all subpaths, so explicitly exporting the cli shouldn't be necessary.

* Remove dedicated start script from API

This script isn't even included in the final npm package and it's only used by the test Dockerfile.

* Tweak project-settings page (#9440)

* New Crowdin updates (#9442)

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

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

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

* New translations en-US.yaml (Thai)

* New translations en-US.yaml (Breton)

* 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 (Estonian)

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

* New translations en-US.yaml (French)

* New translations en-US.yaml (Finnish)

* New translations en-US.yaml (Spanish)

* 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 (Hungarian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Slovenian)

* Rename Collections Modules to Content Module (#9441)

* Rename collections->content module

* Replace collection name

* Replace some loose ends

* Add exports fields to all packages (#9443)

* Rename activity->notifications module (#9446)

* v9.0.0-rc.101

* Update changelog.md

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

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

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

* Resolve calendar link to detail page (#9477)

* Remove leading slash

* Group Renovate updates & schedule weekly (#9479)

* Fix invalid collection for Interface Display Template for M2M relationships (#9420)

* Fix invalid collection for Interface Display Template (#9419)

* use o2m ollection on m2m interface

* apply same fix on files

Co-authored-by: Jose Varela <joselcvarela@gmail.com>

* SDK: refactor constructors (#9080)

* refactor: more intuitive interfaces

* refactor: simpler refresh
before: on every request we were debouncing a refresh request
after: call refresh only once before now() + 'expires'

* refactor: prefix on base storage

* fixup! refactor: simpler refresh before: on every request we were debouncing a refresh request after: call refresh only once before now() + 'expires'

* refactor: simpler axios transport
before: handle auth headers
after: auth headers are handled on directus instance

* refactor: simpler usage of Directus constructor

* fixup! refactor: simpler refresh before: on every request we were debouncing a refresh request after: call refresh only once before now() + 'expires'

* refactor: fix tests based on previous changes

* refactor: better auth constructor
before: depends on SDK instance
after: depends on Transport and Storage instance

* accept staticToken from auth

* make transport and storage as optional on options

* fix type auth refresh

* simplify transport

* fix test for previous changes

* improve auth class

* revert some IAuth props because tests

* allow to force memory of localstorage on storage

* add tests for previous change

* document everything and simplify some things

* fix override headers on request

* better name typing

* fix private axios

* removed boolean from CLI auth.refresh()

* fix missing url in some examples

* soem grammar updates

Co-authored-by: Jay Cammarano <jay.cammarano@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>

* Fixing some type errors in app (#9466)

* Fixing some type errors in app

* Remove unused import

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

* Fix render template for number template parts (#9406) (#9407)

* fix docs homepage header responsiveness (#9450)

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

* Fix nested system-interface-options usage (#9483)

* Improve null check in list

* Fix options syncing in system-interface-options

* Fix m2a relations on editing field (#9484)

Fixes #9463

* Fix presentation-links interfaces (#9485)

Fixes #9457

* fix docs about sdk refactor (#9486)

* Clarify hook register function parameter descriptions in docs (#9489)

* Clarify hook register function parameter descriptions in docs

* Update package-lock.json

* Update docs/extensions/hooks.md

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Schedule Renovate on a daily basis for now (#9488)

* Use hash instead of random for default index name (#9448)

* [Fix]: Use hash instead of random for default index name

* Move hash function to separate util file

* Reduce max size of index name to 60 from 64

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

* Remove collection listing option from role settings (#9490)

* Fixes #8920

* Revert changes in seeds / migrations

* Add new migration to drop column

Co-authored-by: Yannick Mol <yannick@molmediasolutions.nl>

* Remove beta flag from insights & enable by default (#9491)

* New Crowdin updates (#9493)

* Update source file en-US.yaml

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

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

* 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 (Chinese Traditional)

* 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 (Vietnamese)

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

* New translations en-US.yaml (French)

* New translations en-US.yaml (Finnish)

* 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 (Hungarian)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Japanese)

* New translations en-US.yaml (Korean)

* New translations en-US.yaml (Lithuanian)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Slovenian)

* Clean up interface options type (#9447)

* Move union query application to applyQuery, fix where clause (#9494)

* Move union query application to applyQuery, fix where clause

Fixes #9228

* Handle case where union IDs length = 0

* Return modified db query

* Apply union last

* Don't show all migrations logged on init (#9496)

* Small fixes for Hooks documentation (#9497)

Remove erroneous closing bracket and remove index position from input as it should be an object in this context, not an array.

* Prevent negative hashes from being generated (#9501)

Fixes #9499

* Properly handle M2A fields in fieldStore and useFieldTree (#9432)

* Properly handle M2A fields in fieldStore and useFieldTree

* Fix addNode

* Rewrote use-field-tree

* Remember visited paths

* Fix error whith undefined relation.meta

* Fix importing the SDK from a Node ESM environment (#9502)

* Update geometric types and patch new field flow. (#9397)

* Update geometric types and patch new field flow.

* Add migration

* Fixed migrations

* Also fixed migrations

* Update migration ID

* Cleanup type selector a bit

* Add missing fallback interface/display for new types

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

* v9.0.0

* Update changelog.md

* Revert "Schedule Renovate on a daily basis for now (#9488)" (#9508)

This reverts commit 42512b8.

* Update Docker installation documentation (#9514)

* Reflect new stable version and available Docker tags
* Clean-up

* Add note about Directus version in bug report (#9517)

* Remove quotes on string values for raw display (#9522)

* fix repeater field names title format (#9504)

* Remove note about RC in the readme (#9513)

* Update package-lock.json & fix warning from eslint (#9509)

* Update package-lock.json

To reflect latest release

* Fix warning from eslint

* Include the ESM entrypoint when publishing to npm (#9535)

* divider title placeholder (#9532)

* Fix missing and wrong translations (#9537)

* add installation to docs homepage

* add translated field docs

* formatting

* Data model dense (#9558)

* remove extra popup padding

* tweak sidebar spacing

* use dense on data model collection listing

* small text update (#9554)

* Minor docs fixes (#9553)

* Fix lose data on M2M (#9548)

* save initial items of m2m relation

* merge initial, draft and selected on new selection

* Update NPM dependencies (non-major) (#9506)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix elements z-index higher than app header bar (#9530)

* selector for override (#9562)

* Fix pr title for major updates from renovate (#9594)

* update in-app docs nav (#9610)

* update in-app docs nav

* remove section from in-app docs

* fix in-app docs homepage (#9611)

* fixes: #9568 (#9612)

* added switch

* small bug fixes and stacked layout support

* added Alpha config to color inteface

* set default val of showAlpha

* removed alpha switch

* added slider bg

* slider css fix for safari

* slider rounded edges

* slider rounded edges

* slider rounded edges

* slider rounded edges

* padding for slider

* renamed Allow Alpha to Opacity

* Update app/src/interfaces/select-color/select-color.vue

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

* Update app/src/interfaces/select-color/select-color.vue

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

* implemented suggestions made by @rijkvanzanten

Co-authored-by: Paul Boudewijn <paul@helderinternet.nl>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ben Haynes <ben@rngr.org>
Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: illubyte Studios <47870619+Illubyte@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
Co-authored-by: José Varela <joselcvarela@gmail.com>
Co-authored-by: Jay Cammarano <jay.cammarano@gmail.com>
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
Co-authored-by: Alexander <45934058+GrefriT@users.noreply.github.com>
Co-authored-by: Jay Cammarano <67079013+jaycammarano@users.noreply.github.com>
Co-authored-by: Armen Danielyan <armen@animazer.com>
Co-authored-by: Jakob <26389546+Jakob-em@users.noreply.github.com>
Co-authored-by: Theraloss <danilo.polani@gmail.com>
Co-authored-by: Adrian Dimitrov <dimitrov.adrian@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Dorian Zedler <dorian@itsblue.de>
Co-authored-by: Nitwel <mail@nitwel.de>
Co-authored-by: Hugues BUREAU <huguesbureau@hotmail.fr>
Co-authored-by: d1rOn <trubay.andrey@gmail.com>
Co-authored-by: Rémi Alvergnat <toilal.dev@gmail.com>
Co-authored-by: Oreilles <oreilles.github@nitoref.io>
Co-authored-by: Farid Saud <faridsaud93@gmail.com>
Co-authored-by: Yannick Mol <yannick@molmediasolutions.nl>
Co-authored-by: Tyler Forest-Hauser <tyler@foresthauser.com>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 3, 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