Documentation of parameters
The experience can be configured via its URL. This allow for customization by anyone while also allowing to share the result back with anyone else. There is no code modification needed, no saving needed. The URL itself becomes the modified experience.
Within that context there are 3 main query parameters to understand, namely username, set and showfile. Specifically :
username
: set a pre-defined experiment with its dedicated interface, data, etc. Note that some do require more parameters. An example could be https://companion.benetou.fr/index.html?username=demoqueueq1 which allowed for a sequence of experiments. It required no additional parameters. Alternatively https://companion.benetou.fr/index.html?username=q2_step_refcards_filtering&emulatexr=true has both a username (here q2_step_refcards_filtering ) and another parameter (emulatexr with value true). See the dedicated list below.
set
: modify any element of the page. Typically this is done to visually modify something, showing or hiding elements. An example could be https://companion.benetou.fr/index.html?set_a-sky_color=purple&showfile=Fortress.glb which set the color of the sky to purple and show a file that is a 3D model of a castle where the user starts their experience. See the dedicated list below.
showfile
: display the content of a file. This is done thanks to filters (see recorded video) and allows for a relatively wide range of files. The most basic ones, e.g. 3D model, show 3D models in space but some filters allow parsing of specific file formats, e.g. PmWiki lists, docx text content, zipped exports, etc. An example could be a remote VisualMeta export hosted on a WordPress instance. The filter unpacks the zip file and display its content while making each item interactable. Note also that some specific formats, e.g. _modifications.txt files, can contain set parameters and thus multiple modifications back. Shown files can also contain layouts of displayed content in order to resume the state of a past session, e.g. https://companion.benetou.fr/index.html?username=q2_annotated_bibliography_week2&showfile=q2_annotated_bibliography_week2_test_q2layout.json.
Note on live documentation of experiments
Most links should work, yes surely some will not work or won't make sense outside of XR or need some interactions.
A lot of the ?set
examples (see below) do not show a visual difference as we decided at the end of the 1st quarter to hide a lot of elements to faciliate demonstrations. This unfortunately had the side effect of preventing those examples later on despite them working back then. For example at the end of Q2 ?set_IDenvironment_gltf-model=world-bake.glb
does not show the 3D model despite the file being present and showfile working because we are not hiding the element with ID environment.
From an experimentation perspective it is arguably not useful to "fix" those historical links as doings will most likely prevent newer ones from working and thus rather unpredictively. It is though important to know that they did work.
Regardless of those technical limitations please do feel free to report links that seem, according to you, not to work as expected. Plenty do provide :
- the URL (full including all parameters used),
- hardware used, browser used (e.g. Vision Pro with OS version 123 and browser version 456),
- date and hour of test (as things are live, maybe something was edited as you tried)
- the current behavior (what you expected to see),
- the expected behavior (what actually happened),
- any supporting materials you think would be useful, e.g. video recording, screenshots, etc.
Parameters
- allowNtfyFeedbackHUD
- emulatexr
- forcecontrollers
- itemsfile
- partialfilename
- query
- remote_keyboard_group // should be URL encoded, assuming for now alphanum only
- shareerrors
- showdebug
- showdefinitions
- showdemoexample
- sourceFromNextDemo
- speedup_emulatexr_test
- username
Note that some parameters (e.g. emulatorxr
) are only used in conjonction with other parameters. Here emulatorxr
with username
itself within only a range of values, see below.
Some parameters added after the creation of this documenation (early June 2025) are not documented.
How to populate that list
Ran server side
grep urlParams.get /transition/webdav/data/fotsave/fot_sloan_companion_public/index.html | sed "s/.*get//" | sort | uniq
Username values
for username which is itself a just a parameter
- cubetester
- demoqueueq1
- icon_tags
- instructionsonhands
- jsonrefmanualtester
- metatester10032025
- metatester13032025
- poweruser
- refoncubetester
- ring_discovery
- ring_discovery_with_keyboard
- ring_highlights
- skating_rings
- spreadsheetcolumns
- tabletest
- temple_test
- thicknesstesteruser
Quarter 1
- q1_step_audio
- q1_step_highlights
- q1_step_refcards
- q1_step_screenshot
- q1_step_showfile
- q1_step_urlcustom
Quarter 2
- q2_annotated_bibliography
- q2_annotated_bibliography_week2
- q2_arcade
- q2_bbox_per_filter_source
- q2_drop_for_graph
- q2_fingersmenu
- q2_handswap
- q2_immersive_console
- q2_json_collaborations
- q2_keydrumsticks
- q2_keymap
- q2_lego_map
- q2_lense
- q2_most_recent_file
- q2_noneuclidian
- q2_nouploadfile
- q2_ntfy_keyboard_with_keymap_visual_feedback
- q2_onrelease_lookat
- q2_os_keyboard
- q2_pasting
- q2_picker
- q2_remote_ntfy_keyboard
- q2_ring_keyboard
- q2_secondarypinch_singlehanded
- q2_secondarypinch_singlehanded_spatial
- q2_spatialknowledgeobject
- q2_step_contextuallayouts
- q2_step_end
- q2_step_highlight
- q2_step_jsonedit
- q2_step_layout_animationtests
- q2_step_refcards_filtering
- q2_step_start
- q2_step_volumetric_frames
- q2_visualmetaexport
- q2_visualmetaexport_map
- q2_visualmetaexport_map_via_wordpress
- q2_visualmetaexport_map_via_wordpress_with_keyboard
- q2_visualmetaexport_map_via_wordpress_with_lookat
- q2_wrist_rotations
- q2_yubikeyotp
How to populate that list
Ran server side
grep username /transition/webdav/data/fotsave/fot_sloan_companion_public/index.html | sed "s/.*== //" | sed "s/) {//" | grep -v dictionaryForCompletion | sort | uniq
emulatexr working with Username values
and for test scenarii only which is with emulatexr parameter
- q2_lense
- q2_step_layout_animationtests
- q2_step_refcards_filtering
- q2_step_volumetric_frames
How to populate that list
Ran server side
head -300 /transition/webdav/data/fotsave/fot_sloan_companion_public/index.html | grep username | sed "s/.*== //" | sed "s/) {//" | grep -v dictionaryForCompletion | sort | uniq
there are a quite a few more from Q1 via specifically parametersViaURL because that one https://git.benetou.fr/utopiah/spasca-fot-sloan-q1/src/branch/main/data/index.html#L602 can do a lot, letting anybody changing what is shown or not, how, etc
Set values
Syntax
- selector ID environment (not # as this is not a valid URL query parameter!) or .classname
- attribute name (e.g. color)
- value, (e.g. blue)
For example ?set_.pannel_color=red
will set to "red" the attribute named "color" for all elements of class name "pannel".
Example of values
color=blue
can be a string of HTML colors
gltf-model=world-bake.glb
can be a relative or absolute URL (where CORS is supported)
visible=false
to show or hide an element, a boolean string that can be either true or false (not True or False or TRUE or FALSE!)
src=https://webdav.benetou.fr/fotsave/fot_sloan_companion_public/world-bake.glb
can be a full URL (where CORS is supported)
src=pano4s.png
can also be the relative URL of an image, using it as texture
scale=1%201%201
as a scale for width height and depth, e.g. here a uniform scale of 1 (URI encoded, where %20 becomes an empty space " ")
position=0%201%200
as metric position along X, Y and Z axis, X=-1 is 1 to the left of the starting position, Y=1 is 1m up and Z=-1 is 1m ahead
rotation=0%20-30%200
as angle rotation in degrees along X, Y and Z axis relative to the object center, here 0 deg pitch, -30 yaw and 0 roll (see details)
Your browser will automatically URI encode your URL, thus one can type position=0 1.4 -1
and get position=0%201.4%20-1
To get a URL to later on use as a parameter value consider using the upload function of the prototype https://companion.benetou.fr which in turns make the resulting file available at https://companion.benetou.fr/filename
Values used
- ?set_.manuscript_color=blue
- ?set_.notes_visible=false
- ?set_IDenvironment_visible=false&set_.pannel_color=blue&set_a-sky_color=grey&showfile=Fortress.glb
- ?set_IDenvironment_visible=false&set_.pannel_color=blue&set_a-sky_color=grey&showfile=Fortress.glb&showfile=augmented_paper.pdf-0.jpg
- ?set_IDenvironment_visible=false&set_.pannel_color=blue&set_a-sky_color=grey&showfile=Fortress.glb&showfile=augmented_paper.pdf-1.jpg
- ?set_IDenvironment_visible=false&set_.pannel_color=blue&set_a-sky_color=grey&showfile=Fortress.glb&showfile=fabien_modifications_test.txt
- ?set_IDenvironment_visible=false&showfile=Apartment.glb
- ?set_IDmanuscript_color=blue
- ?set_IDmanuscript_color=lightbrown
- ?set_IDmanuscript_color=lightyellow
- ?set_a-sky_src=Solstice-sunrise-cylinder-105-degrees.png
- ?set_a-sky_src=Solstice-sunrise-cylinder-105-degrees.png
- ?set_a-sky_src=Solstice-sunrise-cylinder-105-degrees.png&set_IDgroundfor360_visible=true
- ?set_a-sky_src=Solstice-sunrise-cylinder-105-degrees.png&set_IDgroundfor360_visible=true
- ?set_a-sky_src=faded-ground-keithm.jpg
- ?set_a-sky_src=faded-ground-keithm.jpg&set_IDgroundfor360_visible=true
- ?set_a-sky_src=office%20windows%20closed%20edited.jpg
- ?set_a-sky_src=office%20windows%20closed%20edited.jpg
- ?set_a-sky_src=office-windows-closed-edited25.png
- ?set_a-sky_src=pano3s.png
- ?set_a-sky_src=pano4s.png
- ?set_a-sky_src=spacemed.jpg&set_IDgroundfor360_visible=true
- ?set_a-sky_src=spacemed.jpg&set_IDgroundfor360_visible=true
- ?set_a-sky_src=spacemed.jpg&set_IDgroundfor360_visible=true
- ?set_a-sky_src=spacemed.jpg&set_IDgroundfor360_visible=true&set_IDgroundfor360_scale=2%202%202
- ?set_a-sky_src=spacemed.jpg&set_IDgroundfor360_visible=true&set_IDgroundfor360_scale=20%202%2020
- ?set_environmentsky_color=green
- ?set_environmentsky_color=red
Known problematic ones (usually not a bug, just not visible change)
- ?set_.notes_visible=false&set_IDpanopticonpannels_visible=false
- ?set_IDenvironment_visible=false&set_.pannels_color=blue
- ?set_IDenvironment_visible=false&set_IDpanopticonpannels_visible=false
- ?set_IDenvironment_src=https://webdav.benetou.fr/fotsave/fot_sloan_companion_public/world-bake.glb
- ?set_IDenvironment_visible=false&set_.pannel_color=blue
- ?set_IDenvironment_visible=false&set_.pannel_color=blue&set_a-sky_color=grey
- ?set_IDenvironment_gltf-model=world-bake.glb
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201&set_IDenvironment_position=0%200%200
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201&set_IDenvironment_position=0%201%200&set_IDenvironment_rotation=0%20-30%200
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201&set_IDenvironment_position=0%201%200&set_IDenvironment_rotation=0%200%200
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201&set_IDenvironment_position=0%201%200&set_IDenvironment_rotation=0%2030%200
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201&set_IDenvironment_position=0%202%20-7&set_IDenvironment_rotation=0%20-30%200
- ?set_IDenvironment_gltf-model=world-bake.glb&set_IDenvironment_scale=1%201%201&set_IDenvironment_position=0%203%200&set_IDenvironment_rotation=0%20-30%200
- ?set_.pannel_color=blue
- ?set_.pannel_color=red
- ?set_.environment_visible=false&set_.panopticonpannels_visible=false
- ?set_IDpanopticonpannels_position=0%200%200&set_IDpanopticonpannels_rotation=0%2045%200
- ?set_IDpanopticonpannels_position=0%200%200&set_IDpanopticonpannels_rotation=0%2090%200
- ?set_IDpanopticonpannels_position=0%200.5%200
- ?set_IDpanopticonpannels_position=0%200.5%200&set_IDpanopticonpannels_rotation=0%2045%200
- ?set_IDpanopticonpannels_position=0%202%200
- ?set_panopticonpannels_position=0%201%200
- ?set_panopticonpannels_scale=.1%20.1%20.1
- ?set_panopticonpannels_scale=2%202%202
- ?set_IDenvironment_src=url(world-bake.glb)
- ?set_IDenvironment_src=world_bake.glb
- ?set_environment_glb=Fortress.glb
- ?set_environment_glb=url(Fortress.glb)
- ?set_environment_gltf-model=url(Fortress.glb)
- ?set_environment_gltf-model=url(Fortress.glb)&set_environment_position=0%20-1%200
- ?set_environment_gltf-model=url(Fortress.glb)&set_environment_position=0%20-10%200
- ?set_environment_gltf-model=url(Fortress.glb)&set_environment_position=0%200%200
- ?set_environment_visible=false&set_panopticonpannels_visible=false
- ?set_environment_visible=false&set_panopticonpannels_visible=false
How to populate that list
Ran client side
sqlite3 /home/fabien/Prototypes/places.sqlite "select url from moz_places where url like '%?set_%';" | sort | uniq
See also
- listing of Q1 demos https://companion.benetou.fr/demos_example.html?filename=demo_q1.json
- listing of Q2 demos (still to be edited) https://companion.benetou.fr/demos_example.html?filename=demo_q2.json
- to provide feedback on demo sets https://companion.benetou.fr/demos_feedback_example.html
- to visually edit a demo set https://companion.benetou.fr/demos_editor_example.html