profile
viewpoint
Dominick D'Aniello netpro2k @mozilla Mountain View, CA http://netpro2k.com Staff Software Engineer on @mozilla's Hubs team

mozilla/hubs 870

Duck-themed multi-user virtual spaces in WebVR. Built with A-Frame.

ecsyjs/ecsy 730

Entity Component System for javascript

mozilla/Spoke 278

Easily create custom 3D environments

ecsyjs/ecsy-three 51

ECSY and three.js components, systems and helpers

ecsyjs/ecsy-devtools 28

ECSY Developer tools extension

mozilla/naf-janus-adapter 16

networked-aframe Janus network adapter

chendo/cora 11

Interface-agnostic context and state-aware agent. Conceived for SiriProxy

startedadamws/kicad-kbplacer

started time in a day

push eventmozilla/reticulum

netpro2k

commit sha 4251e2fca23c8fba6f2a014cb62017073b6b14fd

Cleanup id token handling

view details

push time in 2 days

startedperigoso/Switch_Keyboard

started time in 3 days

create barnchmozilla/reticulum

branch : oidc-login

created branch time in 3 days

starteddiimdeep/awesome-split-keyboards

started time in 5 days

startedruiqimao/keyboard-pcb-guide

started time in 5 days

pull request commentmozilla/hubs

Fix uv-scroll graphical corrution

Thanks for the detailed bug report and this fix! Will get it deployed this week.

zach-capalbo

comment created time in 7 days

issue commentValveSoftware/Proton

Final Fantasy 14 (39210)

For those having launcher issues. There exists a third party launcher called XIVLauncher that is much lighter weight and works great in wine. You will have to do your own judgment on if entering your credentials into a third party tool is acceptable to you, but the source code is made available on github to evaluate before you do. Not linking directly at it is unclear if it would be a TOS violation to use such a tool.

nstgc

comment created time in 8 days

startedmanna-harbour/miryoku

started time in 9 days

startedmanna-harbour/qmk_firmware

started time in 10 days

issue closedmozilla/hubs

Hubs Cloud Upgrade new version in Digital Ocean

I have installed hubs cloud in DO, how to upgrade/update the new version after installation?

closed time in 16 days

doreai

push eventnetpro2k/Chrysalis

netpro2k

commit sha 8fa31e7c06fa0ab2b763dd85b2db149716895f3a

First pass at exporting multiple layer configs Signed-off-by: netpro2k <netpro2k@gmail.com>

view details

push time in 17 days

PR opened keyboardio/Chrysalis

First pass at exporting full layouts

This is a bare minimum pass at implementing #562. The format is pretty verbose, but should be easy to iterate on later since it includes a version tag. Also, expanding db.parse and db.serialize should allow for reworking the representation of keys in a backwards compatible way.

Starting as a draft since I think it still needs some testing (don't have a keyboard with colormap support handy) as well as some discussion on the serialization format.

Current format looks like this:

{
  "configVersion": 1,
  "device": {
    "vendor": "Keyboardio",
    "product": "Atreus",
    "displayName": "Keyboardio Atreus",
    "urls": [{"name": "Homepage", "url": "https://atreus.technomancy.us/"}]
  },
  "palette": [
    {"r": 255, "g": 0, "b": 0, "rgb": "rgb(255, 0, 0)"},
    ...
  ],
  "defaultLayer": 0,
  "layers": [
    {
      "keymap": [
        {"keyCode": 20, "label": "Q"},
       ...
      ],
      "colormap": [0, ...]
    },
    ...
  ]
}

Including device info in there at the moment as it seems useful to know what you are looking at a config for (and for metadta if someone wanted to create something to manage sharing these configs). Also probably makes sense to sanity check the device matches the currently active device when importing (though I haven't done this yet). Could probably limit it down to just a product ID, but just grabbing the whole info object for now.

An example config for my currently layout (note the layout itself is pretty wonky, just got me Atreus today so still messing with it): https://gist.github.com/netpro2k/216489815889c492b68b0433d6771efa

Seems likely we want to do something with empty layers, but layer numbering needs to be preserved.

+74 -10

0 comment

4 changed files

pr created time in 17 days

create barnchnetpro2k/Chrysalis

branch : better-import-export

created branch time in 17 days

fork netpro2k/Chrysalis

Graphical configurator for Kaleidoscope-powered keyboards

https://github.com/keyboardio/Chrysalis#chrysalis

fork in 17 days

Pull request review commentmozilla/reticulum

Able to customize magic link login email message + subject from admin panel

 server = {{ toToml cfg.email.server }} port = {{ toToml cfg.email.port }} username = {{ toToml cfg.email.username }} password = {{ toToml cfg.email.password }}+custom_email_subject = {{ toToml cfg.email.custom_email_subject }}

I forget what we found out with Slack config stuff, but don't we need to wrap this in a conditional otherwise a blank value will cause reticulum not to start up?

robin-k-wilson

comment created time in 18 days

Pull request review commentmozilla/reticulum

Able to customize magic link login email message + subject from admin panel

 defmodule RetWeb.Email do     app_name = AppConfig.get_cached_config_value("translations|en|app-name")     app_full_name = AppConfig.get_cached_config_value("translations|en|app-full-name") || app_name     admin_email = Application.get_env(:ret, Ret.Account)[:admin_email]+    custom_login_subject = AppConfig.get_cached_config_value("auth|login_subject")

This is totally fine, and doesn't need changing, but (I think, not an elixir guru myself either) using a with expression here would be slightly more idomatic https://elixirschool.com/en/lessons/basics/control-structures/#with

robin-k-wilson

comment created time in 18 days

PullRequestReviewEvent

Pull request review commentmozilla/reticulum

Able to customize magic link login email message + subject from admin panel

 defmodule RetWeb.Email do     end   end +  defp string_is_nil_or_empty(check_string) do+    check_string == nil || String.length(String.trim(check_string)) == 0+  end++  defp add_magic_link_to_custom_login_body(custom_message, signin_args) do

I might have just passed in the link here, or at least stuffed it in a variable to avoid doing it in both branches.

robin-k-wilson

comment created time in 18 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmozilla/hubs

Added custom email + auth tab + multiline

 function getCategoryDescription(category, provider) {       return "Replace colors in the app.";     case "links":       return "Replace links in the app.";+    case "auth":

I would have first thought to put this in email settings. Looks like you thought so too with the email settings hints. Seems find to do this for now but eventually we might want to rework admin panel so that storage location is not tied to where we are showing it in the UI.

robin-k-wilson

comment created time in 18 days

Pull request review commentmozilla/hubs

Added custom email + auth tab + multiline

 links.issue_report = { category = "links", type = "string", name = "Issue Report links.promotion = { category = "links", type = "string", name = "Promotion Info", description = "Link to info about promotion info and licensing."} links.remixing = { category = "links", type = "string", name = "Remixing Info", description = "Link to info about remixing info and licensing."} links.model_collection = { category = "links", type = "string", name = "Model Collection", description = "Link to a collection of recommended models."}++auth.login_subject = { category = "auth", type="string", name="Magic Link Email Subject", description="Customize the email subject line for users logging in" }+auth.login_body = { category = "auth", type="longstring", name="Magic Link Email Body", description="Customize message. Add '{{ link }}' to insert the magic link, otherwise it will be appended at the end." }

Not sure what all parses this, we need to make sure they are also able to handle this new "type"...

robin-k-wilson

comment created time in 18 days

PullRequestReviewEvent

issue commentmozilla/hubs

Ability to specify environment map for IBL

The linked Spoke issue just generates one from the skybox, but people have still asked to be able to set one manually. We should rack that either by re-opening this or making a new issue.

robertlong

comment created time in 18 days

issue closedMozillaReality/hubs-docs

Add Search Bar to Documentation

The code to add the search bar to the Hubs documentation site (which I believe is here: https://github.com/MozillaReality/hubs-docs/blob/master/website/siteConfig.js#L60) is present but currently commented out. When we last looked into adding the search to the site, the code worked fine for local instances of the codebase but had CSP issues when deploying to the live site.

Adding search would likely reduce the number of questions that we get through other channels, since users would have an easier time looking through the current documentation to find an answer for their issues.

closed time in 18 days

misslivirose

issue commentMozillaReality/hubs-docs

Add Search Bar to Documentation

Fixed by adding CSP rules for the js file and index search endpoints to reticulum. Seems hashes are not available for external scripts but it uses the absolute path so should be safe enough.

misslivirose

comment created time in 18 days

push eventmozilla/reticulum

netpro2k

commit sha 12324013163cc03fdc3671c84d19898b832ea711

Add doc search endpoint to connect-src

view details

push time in 19 days

push eventmozilla/reticulum

netpro2k

commit sha 5598ce46cd93aa2573a287fdff66e2e2dd42bc41

No quotes

view details

push time in 19 days

push eventmozilla/reticulum

netpro2k

commit sha 88cf94ad0fe4971423abe59fa2c00d779e605d3d

Just refer to docsearch by url in CSP

view details

push time in 19 days

push eventmozilla/reticulum

netpro2k

commit sha 486e90c47419d6ca846a3556504caaf980b30663

Fix docsearch CSP

view details

push time in 19 days

push eventmozilla/reticulum

netpro2k

commit sha 0d6413d19e670d9fbbe587bc2d7056b17a960317

Add CSP rules for docsearch

view details

Dominick D'Aniello

commit sha 50982646bcd0d5e323ec213fcbc0831ebc6d4a2f

Merge pull request #421 from mozilla/docsearch-csp Add CSP rules for docsearch

view details

push time in 19 days

delete branch mozilla/reticulum

delete branch : docsearch-csp

delete time in 19 days

PR merged mozilla/reticulum

Add CSP rules for docsearch

Add hashes for https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js and some inline script tags it uses on the doc site.

+1 -1

0 comment

1 changed file

netpro2k

pr closed time in 19 days

PR opened mozilla/reticulum

Add CSP rules for docsearch

Add hashes for https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js and some inline script tags it uses on the doc site.

+1 -1

0 comment

1 changed file

pr created time in 19 days

create barnchmozilla/reticulum

branch : docsearch-csp

created branch time in 19 days

push eventMozillaReality/hubs-docs

netpro2k

commit sha 31b1f837b8ded199d7bd747cc1ac81b758a121ec

Re-enable search

view details

push time in 19 days

PullRequestReviewEvent

issue commentmozilla/hubs

Name Tag Update

It is worth noting that the current awkward spacing of the nametag is to accommodate the in-world volume controls. There is not any sort of hard technical reason the nametag couldn't be positioned differently in pause mode to accommodate them, but just worth thinking about.

misslivirose

comment created time in a month

issue commentmozilla/hubs

Name Tag Update

One other thing that came up recently is that we might want to be able to right click on the nametags to inspect. Right clicking on the avatars themselves to do this is problematic sine skinning makes determining avatar bounding boxes difficult, and also avatars can easily get in the way of other objects. Using the nametag (or part of it) would make this easier.

misslivirose

comment created time in a month

issue closedmozilla/Spoke

No Media Frame in Scene Editor

I have noticed that Spoke had an update and it added a Media Frame feature, but the same feature is not accessible in Scene editor.

closed time in a month

k888885

issue commentmozilla/Spoke

No Media Frame in Scene Editor

We deploy changes to hubs cloud about once a month. This feature has not yet rolled out to Hubs Cloud. You can keep an eye on https://github.com/mozilla/hubs-cloud/blob/master/CHANGELOG.md for updates, or join our discord where we also announce upcoming releases.

k888885

comment created time in a month

push eventmozilla/Spoke

netpro2k

commit sha 85392aea3d516b37451ef3aaf339bf411fcc8ec7

Don't show media frame helper in scene preview

view details

Dominick D'Aniello

commit sha 96b48792b465a8e5eaa16ebd0be3e216b7cc3076

Merge pull request #1033 from mozilla/mediaframe-fix-previews Don't show media frame helper in scene preview

view details

push time in a month

delete branch mozilla/Spoke

delete branch : mediaframe-fix-previews

delete time in a month

PR merged mozilla/Spoke

Don't show media frame helper in scene preview

fixes #1030

+1 -0

0 comment

1 changed file

netpro2k

pr closed time in a month

issue closedmozilla/Spoke

Media frames appear in scene previews

When you go to publish a scene, media frames in front of the preview camera will appear light gray.

image

closed time in a month

johnshaughnessy

PR opened mozilla/Spoke

Don't show media frame helper in scene preview

fixes #1030

+1 -0

0 comment

1 changed file

pr created time in a month

create barnchmozilla/Spoke

branch : mediaframe-fix-previews

created branch time in a month

issue commenttgbyte/docker-borg-backup

persist generated ssh host key

I know this is an old post, but in case anyone comes looking... What you actually want to do is mount a volume for /etc/ssh/ as that is where the host keys are stored. The important contents of /home/borg/.ssh are already written out by the boot script.

pierreozoux

comment created time in a month

issue commentmozilla/hubs

add tab completion to the chat / command box

Current "suggestions" interface in hubs. Not selectable, no tab completion: image

Some examples of what this looks like in other chat clients:

Slack: image

Discord: image

joshmarinacci

comment created time in a month

issue closedmozilla/hubs

Audio-only HLS streams stutter / are not supported

Description Audio-only HLS streams added as URLs (.m3u8) play, but stutter every few seconds. Javascript console reveals that it is throwing an error when it cannot find the video

To Reproduce Steps to reproduce the behavior:

  1. Start audio-only HLS stream
  2. Load HLS URL with magic wand
  3. Audio plays, stutters, JS warnings thrown

Expected behavior HLS audio-only streams should play normally

Screenshots If applicable, add screenshots to help explain your problem.

Hardware <!-- Please complete the following information -->

  • Device: Desktop
  • OS: OSX
  • Browser Chrome

Additional context Add any other context about the problem here.

closed time in a month

roddylindsay

issue commentmozilla/hubs

Audio-only HLS streams stutter / are not supported

Going through cleaning up some old issues. I think this should have been resolved with the last round of HLS fixes.

roddylindsay

comment created time in a month

push eventmozilla/Spoke

netpro2k

commit sha 86c3e9522685876f2b1a24ac56860401e36022db

Support for media frames

view details

netpro2k

commit sha 4c1ff472639270d462fcf2dc3a7b13befe25b5ad

Export network id in case we need it later

view details

netpro2k

commit sha 5133a96173e6fc4d4143eb6c3e652b0aba4290aa

mediaTypes -> mediaType

view details

netpro2k

commit sha d2229dc824522dbfa8b5a2367d904ee4478707d2

Add media frame to test scene snapshot

view details

Dominick D'Aniello

commit sha 8bbdf886b3d8d5cfb5c3d19dd19439a0e95f4e76

Merge pull request #1019 from mozilla/media-frames Media Frames

view details

push time in a month

delete branch mozilla/Spoke

delete branch : media-frames

delete time in a month

PR merged mozilla/Spoke

Reviewers
Media Frames

Adds support for the "Media Frame" element, which is used to capture media and position it precisely in space. Requires the associated Hubs PR to go out first https://github.com/mozilla/hubs/pull/2967. Though the initial Hubs PR does not handle networking, we write out a network id for this component in anticipation we will be needing it in the future.

As with the Hubs side, the visuals for the helpers could use some love, so we will need to update them once we land on something better for Hubs.

+224 -1

0 comment

6 changed files

netpro2k

pr closed time in a month

push eventmozilla/hubs

netpro2k

commit sha 998bd98dcfaefa659ed54c9f73568ff90288efdc

WIP media target zones

view details

netpro2k

commit sha cc8c1bc802bb88ac35d63354b22a00d110cc243e

Finish basic implementation of media frames

view details

netpro2k

commit sha 18d70f71e3e60a46ed6c8f43ad9bab60e8dc69ec

Ranema MediaTargetZoneSystem to MediaFramesSystem

view details

netpro2k

commit sha 13314bc8f4e65a9f79bbb0ce667a149310351098

Major rework to support networking

view details

netpro2k

commit sha f91aabc0f77cc27655fd6437f0887b12e83a4e41

Revert accidental change to media gltf component

view details

netpro2k

commit sha 0238f170479793d1112a35e856065722783e2fd8

Update three-ammo to fix collision detection bug

view details

netpro2k

commit sha 3ce1d47b1929180b7ac6199bfa1e38e56ad09a81

Handle zone ownership race case

view details

netpro2k

commit sha 49d6f2c4f19a81cb33b01abe67731b955bc5f366

Tidy up a bit, remove unused code/logs

view details

netpro2k

commit sha b73f42e6f001db0725c4cd7f9c98a555de45030d

zone -> frame

view details

netpro2k

commit sha da74f4f94ae315032c2f04504694f95d65856cbe

Delint

view details

netpro2k

commit sha 1dfaf69d760349f7ed7d75733aa51b087b071e88

Fix indenting in hub.html

view details

netpro2k

commit sha 81a0c32f6bb3677fd8400b9c8460053d30fffba9

More pre-push cleanup

view details

netpro2k

commit sha 43d9aeca7ead1857c804a62c12da3c85adb08201

Update NAF version

view details

netpro2k

commit sha 6a965439772f5d874e89c5efd57e011c7c73719c

Add note about world space assumptions

view details

Dominick D'Aniello

commit sha 86da0602446480c360aec18c785636b1be2c2ce6

Merge pull request #2967 from mozilla/media-target-zones Media Frames

view details

push time in a month

delete branch mozilla/hubs

delete branch : media-target-zones

delete time in a month

PR merged mozilla/hubs

Media Frames enhancement whats new

Adds support for "Media Frames" that you can snap different types of media into to position them precisely in space. Items will be scaled to fill the media frame, while preserving their original aspect ratio. When an item is removed from a frame it will return to its original scale. Media frames can be created from the Elements panel in Spoke.

image

The visuals are also very crude and could use some design love, but again, doesn't feel worth holding back this useful feature for.

Associated Spoke PR: https://github.com/mozilla/Spoke/pull/1019

TODO:

  • [x] merge https://github.com/MozillaReality/networked-aframe/pull/42
  • [x] update package-lock.json to point at updated networked-aframe

Known Issues:

  • Pinned objects will not be re-captured into a frame if everyone leaves the room. They will remain in their position and scale as they naturally would, but the media frame will be considered empty. This is unfortunately kind of tricky to handle and will need some fixes to our networking code. (The pinned object is unowned if nobody interacts with it, and media frame snapping is handled by each client for objects it owns)
  • When grabbing an object that you don't own that is snapped into a media frame, it will immediately un-snap from the frame rather than waiting to be dragged out of the frame. This is likely something to do with changing collision flags while objects are already intersecting. The same thing also seems to happen for objects that were tossed into a media zone instead of placed... this one is more puzzling.
+418 -28

0 comment

15 changed files

netpro2k

pr closed time in a month

push eventmozilla/Spoke

netpro2k

commit sha d2229dc824522dbfa8b5a2367d904ee4478707d2

Add media frame to test scene snapshot

view details

push time in a month

push eventmozilla/hubs

netpro2k

commit sha 6a965439772f5d874e89c5efd57e011c7c73719c

Add note about world space assumptions

view details

push time in a month

push eventmozilla/hubs

netpro2k

commit sha 43d9aeca7ead1857c804a62c12da3c85adb08201

Update NAF version

view details

push time in a month

push eventMozillaReality/networked-aframe

netpro2k

commit sha 4aebc48af60be2e926fc97a5fa6cdc1be098fc12

Fix taking ownership of scene owned objs on leave

view details

netpro2k

commit sha 336e2331548c0f92e084d777b3d024cc0a5ec88e

cleanup from PR feedback

view details

netpro2k

commit sha 09dc7cf448bb7c38f14f419f24882764ccf8c179

Attempt to fix travisci build

view details

netpro2k

commit sha c8cea8fbb3509fbffad749b72f374044e4dedb48

Update dist (we don't use these but might as well)

view details

Dominick D'Aniello

commit sha 19a5a972d5a88423b3e17a12864627d49a6a77d5

Merge pull request #42 from MozillaReality/fix-scene-object-ownership Fix taking ownership of scene owned objects on leave

view details

push time in a month

PR merged MozillaReality/networked-aframe

Fix taking ownership of scene owned objects on leave

"persistent" objects are supposed to have their ownership transferred when the creator of the object leaves the room, rather than being removed.

"scene owned" objects do not have a "creator", so the logic for taking ownership over them when people leave does not trigger. This was noticed when testing media frames but is likely the source of several other bugs in Hubs like scene owned videos restarting randomly when people join the room. (Happens because the person who owned the video left, leaving no owner).

The existing code could also lead to persistent objects being removed if anyone failed the takeOwnership call, which could happen if the object recently changed ownership before the "creator" left. This could explain some of the pinned objects disappearing we have seen.

The handling for scene owned objects still feels pretty peace-meal and special logic still exists for videos in Hubs to take ownership on scene load. This should get moved into NAF such that scene owned objects are only a transitory state and once running all objects should always maintain an owner. Will leave that for another PR though.

fixes https://github.com/mozilla/hubs/issues/2370

+39 -35

0 comment

4 changed files

netpro2k

pr closed time in a month

issue closedmozilla/hubs

Pinned videos reset play position if user who last interacted with video re-enters room

If the last person who interacted with a pinned video re-enters a room, the video progress will reset back to the start for everyone. This only happens with pinned videos, but it doesn't matter if it's the owner or someone else who last interacted with it.

Steps to reproduce the behavior:

  1. Enter room with two tabs.
  2. Spawn a video on one tab, and pin it.
  3. Interact with the video (e.g. advance ahead 30 seconds) on one of the tabs.
  4. Whichever tab was used in step 3, refresh it.
  5. Observe that in the other tab, the video state resets back to the beginning.

closed time in a month

InfiniteLee

push eventmozilla/hubs

netpro2k

commit sha 81a0c32f6bb3677fd8400b9c8460053d30fffba9

More pre-push cleanup

view details

push time in a month

Pull request review commentmozilla/hubs

Media Frames

+import { MediaType } from "../utils/media-utils";+import { TEXTURES_FLIP_Y } from "../loaders/HubsTextureLoader";+import { applyPersistentSync } from "../utils/permissions-utils";++// TODO better handling for 3d objects+function scaleForAspectFit(containerSize, itemSize) {+  return Math.min(containerSize.x / itemSize.x, containerSize.y / itemSize.y);+}++const isCapturableByType = {+  [MediaType.ALL]: function(el) {+    return !!(el && el.components["media-loader"]);+  },+  [MediaType.ALL_2D]: function(el) {+    return !!(el && (el.components["media-image"] || el.components["media-video"] || el.components["media-pdf"]));+  },+  [MediaType.MODEL]: function(el) {+    return !!(el && el.components["gltf-model-plus"]);+  },+  [MediaType.IMAGE]: function(el) {+    return !!(el && el.components["media-image"]);+  },+  [MediaType.VIDEO]: function(el) {+    return !!(el && el.components["media-video"]);+  },+  [MediaType.PDF]: function(el) {+    return !!(el && el.components["media-pdf"]);+  }+};++const EMPTY_COLOR = 0x6fc0fd;+const HOVER_COLOR = 0x2f80ed;+const FULL_COLOR = 0x808080;++const components = [];+export class MediaFramesSystem {+  constructor(physicsSystem, interactionSystem) {+    this.physicsSystem = physicsSystem;+    this.interactionSystem = interactionSystem;+  }++  tick() {+    for (let i = 0; i < components.length; i++) {+      const frame = components[i];++      const bodyUUID = frame.el.components["body-helper"].uuid;+      // TODO would be nice to fix the timing so we don't need to check this+      if (!this.physicsSystem.bodyInitialized(bodyUUID)) continue;++      const holdingSomethingCapturable = this.interactionSystem.isHoldingAnything(+        isCapturableByType[frame.data.mediaType]+      );++      const guideMesh = frame.el.getObject3D("guide");+      guideMesh.visible = holdingSomethingCapturable;++      if (frame.data.targetId === "empty") {

I would like to clean up the branching logic here a bit, but would like to do it as a followup PR since its tricky to get right and I don't want to restart the testing process now.

netpro2k

comment created time in a month

PullRequestReviewEvent

push eventmozilla/hubs

netpro2k

commit sha 1dfaf69d760349f7ed7d75733aa51b087b071e88

Fix indenting in hub.html

view details

push time in a month

push eventMozillaReality/networked-aframe

netpro2k

commit sha c8cea8fbb3509fbffad749b72f374044e4dedb48

Update dist (we don't use these but might as well)

view details

push time in a month

Pull request review commentMozillaReality/networked-aframe

Fix taking ownership of scene owned objects on leave

 class NetworkEntities {     var entityList = [];     for (var id in this.entities) {       var entityCreator = NAF.utils.getCreator(this.entities[id]);-      if (entityCreator === clientId) {-        let persists;-        const component = this.entities[id].getAttribute('networked');-        if (component && component.persistent) {-          persists = NAF.utils.isMine(this.entities[id]) || NAF.utils.takeOwnership(this.entities[id]);-        }-        if (!persists) {-          var entity = this.removeEntity(id);-          entityList.push(entity);+      var entityOwner = NAF.utils.getNetworkOwner(this.entities[id]);+      if (entityCreator === clientId || (!entityCreator && entityOwner === clientId)) {+        if (this.entities[id].getAttribute("networked").persistent) {

Don't think its needed, but did not intend to make that change here.. Will leave in for now even though it seems overly defensive.

netpro2k

comment created time in a month

PullRequestReviewEvent

push eventMozillaReality/networked-aframe

netpro2k

commit sha 09dc7cf448bb7c38f14f419f24882764ccf8c179

Attempt to fix travisci build

view details

push time in a month

push eventMozillaReality/networked-aframe

netpro2k

commit sha 336e2331548c0f92e084d777b3d024cc0a5ec88e

cleanup from PR feedback

view details

push time in a month

push eventmozilla/hubs

netpro2k

commit sha da74f4f94ae315032c2f04504694f95d65856cbe

Delint

view details

push time in a month

push eventmozilla/hubs

netpro2k

commit sha b2b86d53b108d4343a59b998a4d0d6fb28ee203d

Delint

view details

push time in a month

push eventmozilla/hubs

netpro2k

commit sha b73f42e6f001db0725c4cd7f9c98a555de45030d

zone -> frame

view details

push time in a month

push eventmozilla/hubs

netpro2k

commit sha 3ce1d47b1929180b7ac6199bfa1e38e56ad09a81

Handle zone ownership race case

view details

netpro2k

commit sha 49d6f2c4f19a81cb33b01abe67731b955bc5f366

Tidy up a bit, remove unused code/logs

view details

push time in a month

PR opened MozillaReality/networked-aframe

Fix taking ownership of scene owned objects on leave

"persistent" objects are supposed to have their ownership transferred when the creator of the object leaves the room, rather than being removed.

"scene owned" objects do not have a "creator", so the logic for taking ownership over them when people leave does not trigger. This was noticed when testing media frames but is likely the source of several other bugs in Hubs like scene owned videos restarting randomly when people join the room. (Happens because the person who owned the video left, leaving no owner).

The existing code could also lead to persistent objects being removed if anyone failed the takeOwnership call, which could happen if the object recently changed ownership before the "creator" left. This could explain some of the pinned objects disappearing we have seen.

The handling for scene owned objects still feels pretty peace-meal and special logic still exists for videos in Hubs to take ownership on scene load. This should get moved into NAF such that scene owned objects are only a transitory state and once running all objects should always maintain an owner. Will leave that for another PR though.

+7 -9

0 comment

1 changed file

pr created time in a month

create barnchMozillaReality/networked-aframe

branch : fix-scene-object-ownership

created branch time in a month

push eventmozilla/hubs

netpro2k

commit sha f91aabc0f77cc27655fd6437f0887b12e83a4e41

Revert accidental change to media gltf component

view details

netpro2k

commit sha 0238f170479793d1112a35e856065722783e2fd8

Update three-ammo to fix collision detection bug

view details

push time in a month

push eventInfiniteLee/three-ammo

netpro2k

commit sha dc1b98a7d1c0656f12fe67b43391494d19462ef2

1.0.12 release

view details

push time in a month

push eventInfiniteLee/three-ammo

netpro2k

commit sha 3fcd10f85ed60b3ae07aae016bbe525967a098fc

Always report collision pairs in both directions

view details

netpro2k

commit sha fc47597aa882b723d45e5446b32778b11f5b856b

Remove redundant indexOf in removeBody

view details

netpro2k

commit sha 5cd08c157a43491cc1ef5f6a84cab8f70d4cf3ec

Restore distance check

view details

Dominick D'Aniello

commit sha 78cda3c84b0963eedb981fee2ead9fb2ea3e3b4b

Merge pull request #10 from InfiniteLee/bi-directional-collisions Report collisions to both sets of objects involved

view details

push time in a month

PR merged InfiniteLee/three-ammo

Report collisions to both sets of objects involved

Previously we were only reporting collisions for the first object in a collision pair. This results in world insertion order effecting which objects are told about collisions (was quite hard to trace this down). Both objects should report the collision, regardless of which happened to be the first in the collision pair.

Also, since we are not actually concerned with the nature of collision and just care if one occurred at all, it seems sufficient to check only for the existence of collision points rather than iterating them and checking distance. We can't simply check for manifolds existing, as they exist when objects are just "colliding" the broad phase.. Still unclear if this is true so restoring the checking of points.

In looking into this there seem to be some more optimized ways (btGhostObject) we might handle "trigger" type objects which we only want collision information on but no collision response, but would be more work to implement and more research to know if its even worth it.

+10 -2

0 comment

1 changed file

netpro2k

pr closed time in a month

push eventInfiniteLee/three-ammo

netpro2k

commit sha 5cd08c157a43491cc1ef5f6a84cab8f70d4cf3ec

Restore distance check

view details

push time in a month

PR opened InfiniteLee/three-ammo

Report collisions to both sets of objects involved

Previously we were only reporting collisions for the first object in a collision pair. This results in world insertion order effecting which objects are told about collisions (was quite hard to trace this down). Both objects should report the collision, regardless of which happened to be the first in the collision pair.

Also, since we are not actually concerned with the nature of collision and just care if one occurred at all, it seems sufficient to check only for the existence of collision points rather than iterating them and checking distance. We can't simply check for manifolds existing, as they exist when objects are just "colliding" the broad phase.

In looking into this there seem to be some more optimized ways (btGhostObject) we might handle "trigger" type objects which we only want collision information on but no collision response, but would be more work to implement and more research to know if its even worth it.

+17 -16

0 comment

1 changed file

pr created time in a month

create barnchInfiniteLee/three-ammo

branch : bi-directional-collisions

created branch time in a month

issue openedbeemdevelopment/Aegis

Authy import failing to import some tokens `No value for secretSeed`

<!-- Please read the bug reports section of the contribution guidelines before submitting an issue. -->

Info
  • Version: 1.3
  • Source: google play
  • Vault encrypted: Yes (with biometric unlock)
  • Device: pixel 4 XL
  • Android version and ROM: Stock Android 11
Steps to reproduce

Tap "import from app", select "authy", grant root permission. Get "Aegis could not import 12 tokens". Clicking details shows repeated org.json.JSONException: No value for secretSeed errors.

All of the proprietary Authy tokens and several standard TOTP tokens imported successfully but the rest of the standard TOTP tokens did not. I do not see a pattern to the tokens that are failing. I tried importing with backups in authy both enabled and disabled as well as pin enabled and disabled.

created time in a month

push eventmozilla/hubs

netpro2k

commit sha 13314bc8f4e65a9f79bbb0ce667a149310351098

Major rework to support networking

view details

push time in 2 months

Pull request review commentmozilla/hubs

Media Frames

+import { isTagged, setTag } from "../components/tags";+import { MediaType } from "../utils/media-utils";+import { TEXTURES_FLIP_Y } from "../loaders/HubsTextureLoader";++const TARGET_ZONE_STATE = {+  EMPTY: "empty",+  HOVERING: "hovering",+  FULL: "full"+};++function scaleForAspectFit(containerSize, itemSize) {+  return Math.min(containerSize.x / itemSize.x, containerSize.y / itemSize.y);+}++const isCapturableByType = {+  [MediaType.ALL]: function(el) {+    return !!(el && NAF.utils.isMine(el) && el.components["media-loader"]);+  },+  [MediaType.ALL_2D]: function(el) {+    return !!(+      el &&+      NAF.utils.isMine(el) &&+      (el.components["media-image"] || el.components["media-video"] || el.components["media-pdf"])+    );+  },+  [MediaType.MODEL]: function(el) {+    return !!(el && NAF.utils.isMine(el) && el.components["gltf-model-plus"]);+  },+  [MediaType.IMAGE]: function(el) {+    return !!(el && NAF.utils.isMine(el) && el.components["media-image"]);+  },+  [MediaType.VIDEO]: function(el) {+    return !!(el && NAF.utils.isMine(el) && el.components["media-video"]);+  },+  [MediaType.PDF]: function(el) {+    return !!(el && NAF.utils.isMine(el) && el.components["media-pdf"]);+  }+};++function getCapturableObjectCollidingWithBody(physicsSystem, mediaType, bodyUUID) {+  const collisions = physicsSystem.getCollisions(bodyUUID);+  for (let i = 0; i < collisions.length; i++) {+    const bodyData = physicsSystem.bodyUuidToData.get(collisions[i]);+    const mediaObjectEl = bodyData && bodyData.object3D && bodyData.object3D.el;+    if (isCapturableByType[mediaType](mediaObjectEl)) {+      return mediaObjectEl.object3D;+    }+  }+  return null;+}++const components = [];+export class MediaFramesSystem {+  constructor(physicsSystem, interactionSystem) {+    this.physicsSystem = physicsSystem;+    this.interactionSystem = interactionSystem;+  }++  tick() {+    for (let i = 0; i < components.length; i++) {+      const zone = components[i];++      const bodyUUID = zone.el.components["body-helper"].uuid;+      // TODO would be nice to fix the timing so we don't need to check this+      if (!this.physicsSystem.bodyInitialized(bodyUUID)) continue;++      const objectToCapture = getCapturableObjectCollidingWithBody(this.physicsSystem, zone.data.mediaType, bodyUUID);++      const previewMesh = zone.el.getObject3D("preview");+      const guideMesh = zone.el.getObject3D("guide");++      guideMesh.visible = this.interactionSystem.isHoldingAnything(isCapturableByType[zone.data.mediaType]);

They currently do show a different color when full, though like you said its not networked.

netpro2k

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentmozilla/hubs

Media Frames

+import { isTagged, setTag } from "../components/tags";+import { MediaType } from "../utils/media-utils";+import { TEXTURES_FLIP_Y } from "../loaders/HubsTextureLoader";++const TARGET_ZONE_STATE = {+  EMPTY: "empty",+  HOVERING: "hovering",+  FULL: "full"+};++function scaleForAspectFit(containerSize, itemSize) {+  return Math.min(containerSize.x / itemSize.x, containerSize.y / itemSize.y);+}++const isCapturableByType = {

We currently don't have any non-networked objects that aren't static parts of the scene, but if we do eventually add some this is easy to change.

netpro2k

comment created time in 2 months

PullRequestReviewEvent

push eventmozilla/Spoke

netpro2k

commit sha 5133a96173e6fc4d4143eb6c3e652b0aba4290aa

mediaTypes -> mediaType

view details

push time in 2 months

Pull request review commentmozilla/Spoke

Media Frames

+import {+  Object3D,+  BoxBufferGeometry,+  PlaneBufferGeometry,+  MeshBasicMaterial,+  ShaderMaterial,+  Mesh,+  Vector3,+  DoubleSide+} from "three";+import EditorNodeMixin from "./EditorNodeMixin";++export const MediaType = {+  ALL: "all",+  ALL_2D: "all-2d",+  MODEL: "model",+  IMAGE: "image",+  VIDEO: "video",+  PDF: "pdf"+};++export default class MediaFrameNode extends EditorNodeMixin(Object3D) {+  static legacyComponentName = "media-frame";++  static nodeName = "Media Frame";++  static _geometry = new BoxBufferGeometry();++  constructor(editor) {+    super(editor);++    this.mediaTypes = MediaType.ALL_2D;++    const box = new Mesh(+      MediaFrameNode._geometry,+      new ShaderMaterial({+        uniforms: {+          opacity: { value: 1 }+        },+        vertexShader: `+            varying vec2 vUv;+            void main()+            {+              gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );+              vUv = uv;+            }+          `,+        fragmentShader: `+            // adapted from https://www.shadertoy.com/view/Mlt3z8+            float bayerDither2x2( vec2 v ) {+              return mod( 3.0 * v.y + 2.0 * v.x, 4.0 );+            }+            float bayerDither4x4( vec2 v ) {+              vec2 P1 = mod( v, 2.0 );+              vec2 P2 = mod( floor( 0.5  * v ), 2.0 );+              return 4.0 * bayerDither2x2( P1 ) + bayerDither2x2( P2 );+            }++            varying vec2 vUv;+            uniform float opacity;+            void main() {+              float alpha = max(step(0.45, abs(vUv.x - 0.5)), step(0.45, abs(vUv.y - 0.5))) - 0.5;+              if( ( bayerDither4x4( floor( mod( gl_FragCoord.xy, 4.0 ) ) ) ) / 16.0 >= alpha * opacity ) discard;+              gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);+            }+          `,+        side: DoubleSide+      })+    );++    const previewMaterial = new MeshBasicMaterial();+    previewMaterial.side = DoubleSide;+    previewMaterial.transparent = true;+    previewMaterial.opacity = 0.5;++    const previewMesh = new Mesh(new PlaneBufferGeometry(1, 1, 1, 1), previewMaterial);+    box.add(previewMesh);++    box.layers.set(1);++    this.helper = box;+    this.add(box);++    this.onDeselect();+  }++  onSelect() {+    this.helper.material.uniforms.opacity.value = 1.0;+  }++  onDeselect() {+    this.helper.material.uniforms.opacity.value = 0.5;+  }++  copy(source, recursive = true) {+    if (recursive) {+      this.remove(this.helper);+    }++    this.mediaTypes = source.mediaTypes;++    super.copy(source, recursive);++    if (recursive) {

Cargo culted this from the rest of the nodes, but don't really get whats going on here.

netpro2k

comment created time in 2 months

PullRequestReviewEvent

push eventmozilla/Spoke

netpro2k

commit sha 4c1ff472639270d462fcf2dc3a7b13befe25b5ad

Export network id in case we need it later

view details

push time in 2 months

PR opened mozilla/Spoke

Reviewers
Media Frames

Adds support for the "Media Frame" element, which is used to capture media and position it precisely in space. Requires the associated Hubs PR to go out first https://github.com/mozilla/hubs/pull/2967. Though the initial Hubs PR does not handle networking, we write out a network id for this component in anticipation we will be needing it in the future.

+182 -0

0 comment

3 changed files

pr created time in 2 months

PR opened mozilla/hubs

Reviewers
Media Frames

Adds support for "Media Frames" which can capture different types of media and position them precisely in space. Once positioned, items will be scaled to fill the media frame, while preserving their original aspect ratio. When an item is removed from a frame it will return to its original scale.

Currently this does not have any regard for networking. We will need to test this with multiple people to see if that's something we can live with for an initial release or if we want to iterate on that further before releasing it (my take is its probably worth releasing without that, and then immediately following up with a networked version), though in either case we probably want to make sure the data exported by Spoke is complete enough to support the full feature set we eventually want since its gets baked out into files.

The visuals are also very crude and could use some design love, but again, doesn't feel worth holding back this useful feature for.

+297 -20

0 comment

10 changed files

pr created time in 2 months

push eventmozilla/hubs

Robert Long

commit sha 6fe776358745ed89d2d54104354fba311396cde8

Medium quality mode WIP

view details

netpro2k

commit sha fd9471eeef8f9ef4091d3719395302fd617da11a

Show refresh button in hover menu for all media

view details

netpro2k

commit sha 00bacef96226b66e03e613b8cb53bcc3796fa2d6

Add another case for HLS content types

view details

netpro2k

commit sha 1ded0a0ee9f0a75da778e0490c7d450d2cba6aab

Remove live seeking code an unused events

view details

netpro2k

commit sha d98d123fb4b88905858b073ddd0e026c5f68b113

Get rid of HLS timeout in favor of manual refresh

view details

netpro2k

commit sha e7859968f67d2851405f02753be32f723d97a758

Allow HLS debugging via query param

view details

netpro2k

commit sha cf0df769e68cd566b5b5c14db3caf38881e562f8

Support for audio only HLS streams

view details

netpro2k

commit sha cce62e8db81c63c30f5c0762ea35f05d58d6d6f8

Use async XHR for HLS requests

view details

netpro2k

commit sha 5f1254bcde659c16642b9127320b9d7494f5381d

Update HLS.js

view details

Robert Long

commit sha 01a5923c94a3589c9c0b54ac2896b6996eb603b8

Merge branch 'feature/update-shadows-on-scene-load' into feature/medium-quality-mode

view details

Robert Long

commit sha 8f29159ca4c0af74034142261f344f7782dddb47

Add medium quality setting alongside low quality

view details

Robert Long

commit sha a5d024874721f2788184c6e7272ce1f2ed7fa84d

Merge branch 'master' into feature/medium-quality-mode

view details

Robert Long

commit sha bcd22d6ffc5d6549d00147b15dbbd85c8ce1234d

Add support for tangent space normal maps

view details

Robert Long

commit sha 171cf838de94227cd5fa5a466700e36f7cf99c7e

Revert unnecessary changes

view details

Takahiro

commit sha bd6adff6e8a38a916f73edeaa8899715078bc4ab

Fix signin dialog bug

view details

robin

commit sha 1153b1baf8de807296f8592f940c285ac20ea274

add missing occupant data

view details

Robin K Wilson

commit sha 4c9f884208aefe85f609685e41afdda6baabd160

Merge pull request #2794 from robin-k-wilson/fix-missing-data add missing occupant data

view details

Kevin Lee

commit sha 40a355f69794bb3da2317714320385a535c1bcbe

update react-intl pkg; fix how locale is identified; update how translation is picked

view details

Brian Peiris

commit sha 0e9068ba604704877b1a469479a15b4264100920

invite links

view details

Fernando Serrano

commit sha 40173b2e6a90ed7825bcfa0e6f038b384fbf07c7

Fixes #2833 adding support to specify a spawn point name on the url using a anchor (#)

view details

push time in 2 months

create barnchmozilla/Spoke

branch : media-frames

created branch time in 2 months

more