-
-
Notifications
You must be signed in to change notification settings - Fork 909
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
web: move context controllers into reactive controller plugins #8996
web: move context controllers into reactive controller plugins #8996
Conversation
Getting ESBuild, Lit, and Storybook to all agree on how to read and parse stylesheets is a serious pain. This fix better identifies the value types (instances) being passed from various sources in the repo to the three *different* kinds of style processors we're using (the native one, the polyfill one, and whatever the heck Storybook does internally). Falling back to using older CSS instantiating techniques one era at a time seems to do the trick. It's ugly, but in the face of the aggressive styling we use to avoid Flashes of Unstyled Content (FLoUC), it's the logic with which we're left. In standard mode, the following warning appears on the console when running a Flow: ``` Autofocus processing was blocked because a document already has a focused element. ``` In compatibility mode, the following **error** appears on the console when running a Flow: ``` crawler-inject.js:1106 Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'. at initDomMutationObservers (crawler-inject.js:1106:18) at crawler-inject.js:1114:24 at Array.forEach (<anonymous>) at initDomMutationObservers (crawler-inject.js:1114:10) at crawler-inject.js:1549:1 initDomMutationObservers @ crawler-inject.js:1106 (anonymous) @ crawler-inject.js:1114 initDomMutationObservers @ crawler-inject.js:1114 (anonymous) @ crawler-inject.js:1549 ``` Despite this error, nothing seems to be broken and flows work as anticipated.
* main: tenants: really ensure default tenant cannot be deleted (#8875) core: bump github.com/go-openapi/runtime from 0.27.2 to 0.28.0 (#8867) core: bump pytest from 8.0.2 to 8.1.1 (#8868) core: bump github.com/go-openapi/strfmt from 0.22.2 to 0.23.0 (#8869) core: bump bandit from 1.7.7 to 1.7.8 (#8870) core: bump packaging from 23.2 to 24.0 (#8871) core: bump ruff from 0.3.1 to 0.3.2 (#8873) web: bump the wdio group in /tests/wdio with 3 updates (#8865) core: bump requests-oauthlib from 1.3.1 to 1.4.0 (#8866) core: bump uvicorn from 0.27.1 to 0.28.0 (#8872) core: bump django-filter from 23.5 to 24.1 (#8874)
* main: web: fix esbuild issue with style sheets (#8856)
* main: web: upgrade to lit 3 (#8781)
* main: Update _envoy_istio.md (#8888) website/docs: new landing page for Providers (#8879) web: bump the sentry group in /web with 1 update (#8881) web: bump chromedriver from 122.0.4 to 122.0.5 in /tests/wdio (#8884) web: bump the eslint group in /tests/wdio with 2 updates (#8883) web: bump the eslint group in /web with 2 updates (#8885) website: bump @types/react from 18.2.64 to 18.2.65 in /website (#8886)
* main: (31 commits) root: support redis username (#8935) core: bump black from 24.2.0 to 24.3.0 (#8945) web: bump the wdio group in /tests/wdio with 2 updates (#8939) web: bump the sentry group in /web with 1 update (#8941) website: bump postcss from 8.4.35 to 8.4.36 in /website (#8940) core: bump twilio from 9.0.1 to 9.0.2 (#8942) core: bump ruff from 0.3.2 to 0.3.3 (#8943) events: discard notification if user has empty email (#8938) ci: always run ci-main on branch pushes (#8950) core: bump goauthentik.io/api/v3 from 3.2024022.2 to 3.2024022.3 (#8946) website/docs: add new name "Microsft Entra ID" for Azure AD (#8930) outposts: Enhance config options for k8s outposts (#7363) website/docs: add link to CRUD docs (#8925) web: bump API Client version (#8927) outpost: improved set secret answers for flow execution (#8013) stages/user_write: ensure user data is json-serializable (#8926) website/docs: update example ldapsearch commands (#8906) admin: Handle latest version unknown in admin dashboard (#8858) core: bump coverage from 7.4.3 to 7.4.4 (#8917) core: bump urllib3 from 1.26.18 to 2.2.1 (#8918) ...
* main: outposts/proxy: Fix invalid redirect on external hosts containing path components (#8915) core: cache user application list under policies (#8895) web: bump the eslint group in /web with 2 updates (#8959) web: bump core-js from 3.36.0 to 3.36.1 in /web (#8960) website: bump @types/react from 18.2.66 to 18.2.67 in /website (#8962) web: bump the eslint group in /tests/wdio with 2 updates (#8963)
* main: web: improve build speeds even moar!!!!!! (#8954)
* main: website/docs: config: remove options moved to tenants (#8976) web: bump @types/grecaptcha from 3.0.8 to 3.0.9 in /web (#8971) web: bump country-flag-icons from 1.5.9 to 1.5.10 in /web (#8970) web: bump the babel group in /web with 7 updates (#8969) core: bump uvicorn from 0.28.0 to 0.28.1 (#8968) website: bump postcss from 8.4.36 to 8.4.37 in /website (#8967) internal: cleanup static file serving setup code (#8965) website/integrations: portainer: match portainer settings order (#8974)
* main: website/docs: add example policy to enforce unique email address (#8955) web/admin: remove enterprise preview banner (#8991) core: bump uvicorn from 0.28.1 to 0.29.0 (#8980) core: bump sentry-sdk from 1.42.0 to 1.43.0 (#8981) web: bump the babel group in /web with 3 updates (#8983) web: bump typescript from 5.4.2 to 5.4.3 in /web (#8984) web: bump typescript from 5.4.2 to 5.4.3 in /tests/wdio (#8986) web: bump chromedriver from 122.0.6 to 123.0.0 in /tests/wdio (#8987) website: bump typescript from 5.4.2 to 5.4.3 in /website (#8989) core: bump importlib-metadata from 7.0.2 to 7.1.0 (#8982) web: bump the wdio group in /tests/wdio with 3 updates (#8985) website: bump postcss from 8.4.37 to 8.4.38 in /website (#8988)
While I was working on the Patternfly 5 thing, I found myself cleaning up the way our context controllers are plugged into the Interfaces. I realized a couple of things that had bothered me before: 1. It does not matter where the context controller lives so long as the context controller has a references to the LitElement that hosts it. ReactiveControllers provide that reference. 2. ReactiveControllers are a perfect place to hide some of these details, so that they don't have to clutter up our Interface declaration. 3. The ReactiveController `hostConnected()/hostDisconnected()` lifecycle is a much better place to hook up our EVENT_REFRESH events to the contexts and controllers that care about them than some random place in the loader cycle. 4. It's much easier to detect and control when an external change to a context's state object, which is supposed to be a mirror of the context, changes outside the controller, by using the `hostUpdate()` method. When the controller causes a state change, the states will be the same, allowing us to short out the potential infinite loop. This commit also uses the symbol-as-property-name trick to guarantee the privacy of some fields that should truly be private. They're unfindable and inaddressible from the outside world. This is preferable to using the Private Member syntax (the `#` prefix) because Babel, TypeScript, and ESBuild all use an underlying registry of private names that "do not have good performance characteristics if you create many instances of classes with private fields" [ESBuild Caveats](https://esbuild.github.io/content-types/#javascript-caveats).
✅ Deploy Preview for authentik-docs ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
✅ Deploy Preview for authentik-storybook ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
authentik PR Installation instructions Instructions for docker-composeAdd the following block to your AUTHENTIK_IMAGE=ghcr.io/goauthentik/dev-server
AUTHENTIK_TAG=gh-ghcr.io/goauthentik/dev-server:gh-39ef3c781ba132517eb47425753b6d9a2e735a53
AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE=ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s For arm64, use these values: AUTHENTIK_IMAGE=ghcr.io/goauthentik/dev-server
AUTHENTIK_TAG=gh-ghcr.io/goauthentik/dev-server:gh-39ef3c781ba132517eb47425753b6d9a2e735a53-arm64
AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE=ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s Afterwards, run the upgrade commands from the latest release notes. Instructions for KubernetesAdd the following block to your authentik:
outposts:
container_image_base: ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s
image:
repository: ghcr.io/goauthentik/dev-server
tag: gh-ghcr.io/goauthentik/dev-server:gh-39ef3c781ba132517eb47425753b6d9a2e735a53 For arm64, use these values: authentik:
outposts:
container_image_base: ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s
image:
repository: ghcr.io/goauthentik/dev-server
tag: gh-ghcr.io/goauthentik/dev-server:gh-39ef3c781ba132517eb47425753b6d9a2e735a53-arm64 Afterwards, run the upgrade commands from the latest release notes. |
* main: (27 commits) web: bump API Client version (#9035) website/docs: maintenance, re-add system settings (#9026) core: bump duo-client from 5.2.0 to 5.3.0 (#9029) website: bump express from 4.18.2 to 4.19.2 in /website (#9027) web: bump express from 4.18.3 to 4.19.2 in /web (#9028) web: bump the eslint group in /web with 2 updates (#9030) core: bump goauthentik.io/api/v3 from 3.2024022.3 to 3.2024022.5 (#9031) website: bump @types/react from 18.2.69 to 18.2.70 in /website (#9032) web: bump the eslint group in /tests/wdio with 2 updates (#9033) web: bump katex from 0.16.9 to 0.16.10 in /web (#9025) translate: Updates for file locale/en/LC_MESSAGES/django.po in fr (#9023) website/docs: include OS-specific docker-compose install instructions + minor fixes (#8975) web: bump API Client version (#9021) sources/ldap: add ability to disable password write on login (#8377) web: bump API Client version (#9020) lifecycle: migrate: ensure template schema exists before migrating (#8952) website/integrations: Update nextcloud Admin Group Expression (#7314) web/flow: general ux improvements (#8558) website: bump @types/react from 18.2.67 to 18.2.69 in /website (#9016) core: bump requests-oauthlib from 1.4.0 to 2.0.0 (#9018) ...
* main: (30 commits) web: maintenance: split tsconfig into “base” and “build” variants. (#9036) web: consistent style declarations internally (#9077) providers/oauth2: fix interactive device flow (#9076) website/docs: fix transports example (#9074) events: fix log_capture (#9075) web: bump the sentry group in /web with 2 updates (#9065) core: bump goauthentik.io/api/v3 from 3.2024022.6 to 3.2024022.7 (#9064) web: bump @codemirror/lang-python from 6.1.4 to 6.1.5 in /web (#9068) web: bump the eslint group in /web with 1 update (#9066) web: bump glob from 10.3.10 to 10.3.12 in /web (#9069) web: bump the rollup group in /web with 3 updates (#9067) web: bump the eslint group in /tests/wdio with 1 update (#9071) core: bump webauthn from 2.0.0 to 2.1.0 (#9070) core: bump sentry-sdk from 1.43.0 to 1.44.0 (#9073) core: bump requests-mock from 1.12.0 to 1.12.1 (#9072) web: bump API Client version (#9061) events: rework log messages returned from API and their rendering (#8770) website/docs: update airgapped config (#9049) website: bump @types/react from 18.2.72 to 18.2.73 in /website (#9052) web: bump the rollup group in /web with 3 updates (#9053) ...
web: move context controllers into reactive controller plugins
Details
While I was working on the Patternfly 5 thing, I found myself cleaning up the way our context controllers are plugged into the Interfaces. I realized a couple of things that had bothered me before:
hostConnected()/hostDisconnected()
lifecycle is a much better place to hook up our EVENT_REFRESH events to the contexts and controllers that care about them than some random place in the loader cycle.hostUpdate()
method. When the controller causes a state change, the states will be the same, allowing us to short out the potential infinite loop.This commit also uses the symbol-as-property-name trick to guarantee the privacy of some fields that should truly be private. They’re unfindable and inaddressible from the outside world. This is preferable to using the Private Member syntax (the
#
prefix) because Babel, TypeScript, and ESBuild all use an underlying registry of private names that “do not have good performance characteristics if you create many instances of classes with private fields” ESBuild Caveats.Checklist
make web
)