* feat(backgroundjobs): add new background jobs module for file imports
queueing
* fix(fileuploads): a merge gone wrong
* feat(backgroundjobs): rename rhino queue env var
* test(backgroundjob): use deep equal claude
* fix(fileuploads): sync PR review
* feat(ifc_importer): initial importer app implementation with a sleeping
worker
* chore(pre-commit): remove black as a formatter, its now handled by ruff
* fix(ifc-importer): better handling of max job attempt
* feat(eslint): ignore package from eslint
- callback queries with query parameter key of `error` and value of `access_denied` were not being handled and resulting in passportService case for no user, no error, and a failureType of null.
- tokenerror seems not to result in google verify callback being called, so moving the logic to handle it to the passport authentication callback
* fix(errors): all error should define a status code (default is 500)
- rename NoInviteFoundError to InviteNotFoundError to match xNotFoundError pattern
* remove unused errors
* prep for new resources algo
* typescriptifying stuff
* minor types fix
* migrate to resources col
* repo & creation updated, WIP processing/retrieval
* WIP invite processing
* finished finalization refactor
* project invite management
* transformed all invites services
* fixed up projects & core serverinvites resolvers
* test fixes
* WIP workspace create GQL & test
* basic invite creation test works
* a buncha working tests
* more tests
* cancelation tests
* minor invite use refactor
* invite retrieval tasks
* invite use() works as expected
* filtering out broken invites
* enabled invite retrieval by token irregardless of who is it for
* minor adjustments
* tests fix
* test config improvements
* test env adjustment
* extra test case
* making resource access limits harder to ignore
* linter fixes
* eventBus type cleanup
* better generic names
* refactored serverinvites resource migration
* fix(server): better error message in project invite edge case
* chore(serverinvites): repository refactor for multiregion
* chore(serverinvites): remove migrated functions from old repository
* chore(serverinvites): refactor serverInviteForToken resolver for multiregion
* chore(serverinvites): invite processing service refactor for multiregion
* chore(serverinvites): subscription refactor for multiregion
* chore(serverinvites): move buildEmailContents to dedicated file
* chore(serverinvites): deleteAllStreamInvites function multiregion refactor
* chore(serverinvites): refactor deleteServerOnlyInvites multiregion repository
* chore(serverinvites): complete repository refactor for multiregion
* feat(serverinvites): create domain module in server invites
* fix(serverinvites): no relative imports
* feat(serverinvites): extract individual types from repository
* feat(serverinvites): move interfaces to operations
* fix(serverinvites): update imports referencing old interfaces file
* fix(serverinvites): type mismatch for insert invite and delete old
* chore(serverinvites): refactor to single repo function
* test(serverinvites): fix tests
* fix(serverinvites): use domain types in all places
* feat(serverinvites): WIP unity
* feat(serverinvites): move to new facory names and types
* feat(serverinvites): fix tests
* fix(serverinvites): use factory name
---------
Co-authored-by: Alessandro Magionami <alessandro.magionami@gmail.com>
* fix: fe2 auth error page + various minor UI bugs
* clean up & reporting failing email to fe
* new mutation to resend verification as guest
* email text updates
* fixing issues brought up by agi
* more text fixes
* swapping out space-XXX for gap-XXX
* feat: user guest role switching in FE1
* removed stream create buttons
* fe1 done
* fe1 - specifying role in invite dialogs
* fe1 - bulk invites
* WIP FE2 changes
* fe1: allow role select condition fixes
* xtra limitations on createForOnboarding
* more invite creation validations
* no longer able to set guest as project owner in invite
* preparations for server role select in invite dialog
* team management dialog done
* server invite dialog updated
* hiding invite dialog
* fixed mocks
* feat: register flag passed to fe
* feat: mixpanel tracking for all sign ups
* feat: utm first touch & last touch tracking
* feat(helm): Allows Environment Variable for MP to be configured
- default is enabled
- renames environment variable to ENABLE_MP
* feat(helm network policy): allowlist analytics.speckle.systems
---------
Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com>
- feat(logging): log all http requests and responses
- the auto logger does not log the body, to ensure sensitive payloads are not logged. Unfortunately this means that error messages are not logged either, so need to be manually logged.
- fix(logging): 400 errors should be info not error severity logging
- chore(server): adds endpoint parameter to some log messages
- and any other relevant parameters we have to hand (streamId, userId etc..)
- logging severity is info for `400` status codes, error for `500` status codes or equivalent.
* fix(logging): user login attempt without invite to invite-only server is info severity, not error severity
* fix(logging): a prompt for user to verify should be logged as information, not error severity