Repository navigation
v0.25.0
Minor Changes
-
e768ec0: New
seamless migrate entra-idimports users straight from Microsoft Entra ID through Microsoft Graph, with the same dry run, batches and report asmigrate csv. Each user's Entra object id becomes theirexternalId, so re-runs match people without a hand-edited export. It signs in as an app registration with app-onlyUser.Read.All(andGroupMember.Read.Allfor groups), readingENTRA_TENANT_ID,ENTRA_CLIENT_IDandENTRA_CLIENT_SECRETfrom the environment only.--groupimports one group's members,--groupsmaps groups to organizations and roles, disabled accounts and guests are skipped and reported, and--allow-upnuses theuserPrincipalNamefor users with no mail.Migration reports gain a
skippedcount and status, for rows left out on purpose. Skipped rows do not make the command exit 1.
Patch Changes
- ce96113:
seamless initnow creates the directories the generated compose file keeps in a volume (node_modulesunder each bind-mounted source tree, and.nextfor the Next.js full-stack layout) before Docker does. On a Linux host Docker created them as root, sonpm installon the host inapi/orweb/failed withEACCESuntil they were removed with sudo. A directory that already exists keeps its owner. - 1ce71d7:
seamless verifynow forwards thebindingthatPOST /oauth/:providerId/startreturns in the body of its OAuth callbacks, so the OAuth specs pass against an auth API that ties the callback to the browser that started the flow. Older API images ignore the extra field. - bce0a9b:
seamless init --auth=localnow produces an auth service that starts. The generated compose bind-mounts./authover/app, which hid the image'schmod +x ./validateEnvs.sh(the script is mode 644 in the clone) and left the entrypoint looking for adist/server.jsthatDockerfile.devnever builds. The auth service now runs the same command as the auth server's owndocker-compose.dev.yml: sync dependencies, run migrations (creating the database on first boot), then watch the TypeScript sources. - 888a781: Depend on
@seamless-auth/types0.29.0, which adds the OAuth statebindingfield.