catchToken
will now return the token and associated data if it does not detect an opener window to pass the data toImmersClient.loginWithToken
now also accepts sessionInfo parameter to be fully equivalent with regular login
ImmersClient.logout
gains optionalalsoLogoutFromImmer
argument to fully terminate login sessions for users from the local immer
- Update jsdoc, better-docs and other deps to resolve npm audits
- New CSS custom properties for immers hud,
--main-margin
,--inner-margin
,--handle-input-width
- Additional props on Messages:
destination
and_originalActivity
ImmersClient.sendModel
high-level function for uploading and optionally sharing 3d models
<immers-hud>
no longer overflows screen width on mobile displays- Wrong property name in Message typedoc, media urls are in the
url
property notmediaUrl
immersClient.sessionInfo
object will store any additional parameters returned with the authorization token, for new local users this will include login provider and, depending on immers server config, may contain email address (immers server >=v4.2.0)
- Promise returned by
immersClient.login
will now reject if user denies authorization rather than hanging - Fix error when calling
immersClient.logout
orimmersClient.disconnect
if the user is not currently logged in - one-liner now respects
role
query param as documented - Fix
Activities.add
to allow specifying a collection just by name instead of full IRI
- Improper profile icon format prevented useAvatar profile icon changes from appearing in Mastodon
- Fix incorrect type for
Activities.getObject
's return value
Activities.delete
- new low-level api to delete activitiesImmersClient.deleteMessage
- new high-level api to delete Messages from user's Outbox
- Documented
Activities.getObject
low-level api method. Activities.undo
- method can now take an activity IRI
ImmersClient.login
gains an optionalregistration
argument to redirect users directly to the registration tab when opening the login popup.- new
ImmersClient.authorizedScopes
getter to access the scopes authorized for the current login session
- The OAuth popup size is now 800x800 to avoid mobile syling and is positioned to appear slightly outside the opening window's border in order to avoid BITB attacks
Immersclient.navigateToImmersLink
- navigate to a given URL while passing along the user's handle so they don't have to re-enter it at the next destinationImmersClient.handleImmersLinkClick
- onClick handler to make navigating between immers easier by passing along the user's handle
ImmersClient.removeAvatar
- new high-level api to remove models from user's Avatar collectionActivities.remove
- new low-level api to remove activities
Activities.add
- fixed target URL logic
ImmersClient.sendImage
andImmersClient.sendVideo
- new high level apis to upload and share media
Activities.image
andActivities.video
now accept Blob/File and upload them with postMedia in addition to urls
ImmersClient.login
was failing to send clientId, causing full immers to be treated like destinations with limited permissions
- Added
destination-image
anddestination-description
attributes for<immers-hud>
to improve destination metadata - Improved default values for
<immers-hud>
attributes, including pulling destination description and image fromog
meta tags, if available - Filled out and documented the formerly non-functional
Activities.create
low-level api method. Useful if your application implements custom object types
<immers-hud>
now works when usinglocal-immer
- New event
immers-client-profile-update
fires whenever logged-in user's profile has changed - New method
immersClient.waitUntilConnected
, utility to simplify timing checks when a logged-in user is required (contributed by @wswoodruff) - New static method
ImmersClient.DestinationFromPlace
to transform ActivityPub Place to Destination type
- Added
bio
andavatarObject
toProfile
- Added
inbox
andoutbox
toProfile.collections
- Added
destination
toFriendStatus
URLFromProperty
can also findhref
prop if given aLink
objectActivities.getObject
can accept URL object in addition to string- Destination urls ending with an empty fragment will have the trailing
#
dropped to more accutately aggregate Destinations history
- Restore summary messages in arrive/leave activities
- Fix local immer place object not updating
- Fix error in Profile type, url for avatar 3d Model is in prop
avatarModel
notavatarGltf
- Type Error when loading client on destination-only sites
- Improved destination metadata
- Separate identity for a specific page/room from the identity of the experience/application
- Support optional previewImage and description props on Destinations
- destination.context links it to its immer (i.e.
/o/immer
Place object) - Standardize destination link formats in status updates and include immer name
- Improved type linking in docs and type inference in IDEs for low-level types in Activities
ImmersClient.blockUser
for adding to user's block listImmersClient.unblockUser
for removing from user's block list*- New event
'immers-client-blocked-update'
when a user's block list has changed* ImmersClient.blockList
to fetch user's current block list
* requires Immers Server version 3.1.0
- Fixed incorrect error message when an activity fails to post to outbox
ImmersClient.friendsList
sort updated to list online friends firstImmersClient.enter
now takes an optional destination argument that will update the current location before going online
- Fix memory leak in oauth popup that could cause page to crash if left open
- OAuth client ID was incorrect when using with local immer
- FriendStatus.isOnline is now
true
when friend is online
New high-level apis to add & remove friends
- New
ImmersClient.addFriend
- Send a friend request or accept one in order to create a relationship and start sharing location - New
ImmersClient.removeFriend
- Cancel a previous relationship or request - Updated
ImmersClient.friendsList
- exclude ex-friends - Updated
FriendStatus
structure - includestatus
enum (friend-online, friend-offline, request-receved, request-sent, none) and userprofile
- Updated
ImmersClient
event'immers-client-friends-update'
- also fires when an outgoing activity (e.g. friend request/accept) causes the statuses to update* - Fixed destination object for local immer not fetched correctly
New high-level apis for creating, saving, sharing, and using avatars.
- New
ImmersClient.createAvatar
- uploads a 3D avatar and thumbnail and Creates a Model object for it* - New
ImmersClient.addAvatar
- add an avatar to a user's portable avatar collection - new
ImmersClient.useAvatar
- change a users current avatar - Updated
ImmersClient.Profile
structure - include listing of user collections
- New
Activities.postMedia
- upload and share media files via ActivityPub Media Upload* - New
Activities.model
- upload a 3D model withpostMedia
* - New
Activities.undo
- revert a past activity, such as a Follow or Accept - Updated
Activities.add
- clarify inputs and allow creation of new collections - New
ImmersSocket
event'immers-socket-outbox-update'
- when th current user has posted something new, either from current client or another* - Fixed the auto leave-on-disconnect activity to have the same summary format as
ImmersClient.exit
activity
* requires user's home Immers server version (TBD sorry this feature is still in development), otherwise error 'Missing/invalid upload media endpoint' will be thrown.
- New method
ImmersClient.loginWithToken
- allow login without user interaction if credentials acquired through another means (for controlled accounts feature coming soon in immers server) - When a local immer is available,
ImmersClient.activities
will now be available immediately upon contstruction to allow interactions with local immer that don't require authentication (e.g.Activities.getObject
for local, public objects).ImmersClient.activities
will be replaced with a new instance connected to the user's account upon login - Be more flexible with how immer domains are specified - accepts domain (host) or origin and transforms as needed
- Fix issue with
enter
/move
location updates not using most recent Destination
- Ensure that the correct Leave activity is posted on disconnect after using
ImmersClient.move
orImmersClient.exit
- Fix missing return value in deprecated
ImmersClient.connect
method
- New lookup and fetch utilities in
ImmersClient
corsProxyFetch
- fetch wrapper to help with cross-origin resources. If using a local immer, its proxy service will be used. If no local immer but user is logged in, their home immer proxy service will be used. If neither is available, a normal fetch is attemptedresolveProfileIRI
- Lookup a user's profile ID / resource URL from their immers handle using webfingergetProfile
- Resolve an immers handle to a Profile object. If user is logged in, will use their homer immer's ActivityPub standard proxy-and-cache service. If not, fallback tocorsProxyFetch
getNodeInfo
- Discover features and compatibility info about a user's home immer via nodeinfo
Note that proxy services will only succeed with immers servers versions >=2.1.0
- Fix script query params not working with one-liner
- Deprecated
connect
&reconnect
methods that combined login and presence - New
login
/restoreSession
methods to connect to immers account - New
enter
/exit
methods to update presence status to online at your immer or offline - New
move
method to change the current online location - New type:
Message
- New
ImmersClient
event:immers-client-new-message
when a message is received in inbox while connected - New method
feed
to fetch past inbox & outbox activity - All message content is now purified with DOMPurify
- New method
sendChatMessage
to publish a text/HTML content post