companion 8.4

companion 8.4

It's taken close to a year, but Companion 8.4 is finally available for regular use. This is an immense update, almost doubling the size of the firmware code base.

release highlights

  • RLV relay
  • Tutorial mode
  • Smarter HUD delivery
  • Auxiliary power, giving more flexibility in what subsystems are available when powered down
  • Distress beacon
  • Domain membership, including downloading settings and users from a central domain server
  • Guest access control
  • Path navigation (see previous announcement)
  • Improved following mechanics
  • Improved ATOS/E support
  • Foreign device connection
  • System policies
  • And more!

Companion 8.4.0 is required for two new systems that were released during its development cycle, the XSU and DAX/3. All other users are strongly encouraged to update, as well.

Note: Full documentation for 8.4 is a work in progress. Check the support site, at often.

installation instructions

Express route: everything below can be skipped if you received a (Redeliver) object with your controller. Simply wear it and you will automatically be given a clean copy of the newest version. If you have made changes that you'd like to keep, though, read on!

Redelivery is not yet available for this version. We're working on updating the controller hardware to incorporate minor improvements that have been made since they were released. Follow the instructions below.

  1. Check your current software version by selecting 'about' from the main menu. If it's 8.0.0 or later, you're good to go. If it's older, or you can't even find the 'about' item, contact technical support directly for further assistance.
  2. Come to a region with Xanadu support.
  3. Getting ready. Type the following to back up your current list of users: @keychain save
    This is optional if you do not wish to preserve your current users.
  4. Installation. Go to the following menu: manage > software. If you are running 8.2.1 or earlier, select update. If you are running 8.3.0 or later, select connect.
    1. Select xcentral:0.
    2. If you are running a pre-release version of 8.4 already, select update.
    3. Select the Companion_8.4.0 package and upgrade it.
    4. Accept the notecard _System_8.4.0_info when it is offered. If you are running an Aegis that was previously running 8.2.0, there are additional instructions inside that are very important.
    5. Installation will take up to 2 minutes. You will receive a message saying Done. Installed 54 files total. when the process is finished.
    6. Turn the controller back on.
  5. If you do not currently have a HUD at the bottom of your screen, type @setup console.
  6. Finalizing. Reboot once to apply the applicable changes from the last step.

changes in 8.4

  • NS-409 Nightfall support

8.4 milestone 1

  • moved @follow from _bonds to _compliance
  • @follow priority management should be better now
  • @navigate in _compliance (support for automated navigation)
  • an attempt at fixing repeated autolock
  • message 42 (INTERFERENCE_STATE) allowing system modules to react to interference. Proof of concept: _ambiance will now shut off audio output
  • entirely when type S interference is present.
  • support for 'weapon' bus messages to _sentinel
  • removed 'light' message (old OSL will no longer work fully)
  • 'power' message now sends every 10 seconds to all devices; format changed from percentage to float
  • 'rate' and 'power' now send to any newly-attached device
  • converted arabesque 'sound' and 'preload' verbs into actual system commands
  • arabesque 'vox' command now '@sound vox ...'
  • interference now in _coil (introduced bug? interference not applied if shield fails)
  • blocked _coil from emitting multiple 'charge cycle complete' audio notifications
  • port protocol
  • @persona now lists active RLV folder
  • new probe strategy for finding batteries on attach: system probes 6 times at a normal interval until it finds a battery; this may solve every issue
  • forever?
  • refactor _console-screen::_manager into _core and _interface (expect bugs)

8.4 milestone 1.1

  • finished incomplete optimization of _power that was causing charging issues

8.4 milestone 1.2

  • implemented '@navigate auto'
  • cleaned up '@zap'
  • fixed BaCdrive charge bug

8.4 milestone 1.3

  • fixed issues with manual starting of node navigation
  • added exception to battery probe strategy for BaCdrive
  • added beta-version tagging (displays in @about and on main menu)
  • restored persona and carrier display to HUD
  • progress on fixing exhibition-tty listener overflow
  • fixed HUD removing section -1 for devices that did not have a section
  • simple @off, @halt and @reboot commands
  • @send - range is 0 (regionsayto self), 10 (whisper), 20 (say), 100 (shout), region (regionsay), UUID (regionsayto)
  • fixed HUD not responding to @probe—no more need to reboot to make the HUD show up!
  • public bus 'trigger' verb for event handling (_arabesque should hook for event-driven e_ action notecards; provide linked message API for other
  • programs to respond, too)—this could be used for adding on extra custom environmental reactions to things like sitting on a charger or leaving a
  • display booth; similar to 'navigate'; consider adding e_attach?
  • renamed '_init' script to 'e_boot'
  • added 'e_charge-start', 'e_charge-stop', 'e_shutdown' events
  • arabesque now issues commands with id of script activator, not unit; added $user and $username evars for object that activated the script
  • added 'H^ ' for deleting spaces before variables in arabesque.
  • restructured menus into putative 8.4.0 format
  • @commands reindex

8.4 milestone 2

  • full RLV relay (new External Restriction Interface (ERR) module named _restraint, not to be confused with old CSB module name)
  • ERR multiple restraint source integration
  • ERR restraint removal
  • ERR block system chat when in effect
  • ERR @clear command implemented
  • @charge command for interfacing with chargers directly
  • attempt to fix animation permissions errors in _bonds
  • attempt to eliminate remaining issues with local HUD not showing up when it should
  • power profiles should now update menu text correctly
  • moved vox filter interface from _obedience into _compliance to cope with enlarged command vocabulary overloading the index
  • ERR send !release,ok in response to @safeword
  • integrated HUD for akashic icon

8.4.0 milestone 2.1

  • gender-q and gender lightbus messages; 610 (EFFECT_VOCAL) and 611 (SEND_GENDER) messages
  • fixed missing menu graphics in manage > policy
  • commands will automatically re-index rather than reporting 'command not found' if no commands are known
  • HUD should now accept messages from non-controller peripherals; should make @rainbow work correctly
  • menu states for _restraint options
  • _foundation will now auto-boot after reset once _oem is done loading—let's find out if this is a bad idea!
  • basic captive audio (audience); no point in using it yet, though; has the awkward habit of punching through intended deafness
  • work on fixing xanadu 8.3 bug that prevents available updates from being displayed
  • improved HUD efficiency; cleaned up possible sources of misbehavior e.g. stuck hovertext
  • expanded 601 (QUERY_BATTERY) into DEVICE_QUERY so _sentinel can re-poll for HUD key

8.4.0 preview A (milestone 3)

  • revalued jump to be 403 J/sec instead of 203 J/sec
  • fixed a bug where rejected devices would install anyway
  • removed 'keychain migrate' command: rarely used and upgrades from earlier than 8.2 can just install 8.3 temporarily if they really need it
  • automatically add accepttp exceptions for owners provided the unit can teleport
  • UPM CLI: @guest
  • UPM consent
  • UPM menu interface (included under manage > users)
  • fixed 'previous' and 'next' buttons on user browser
  • UPM integration for _restraint and _compliance::navigate
  • UPM-authorized adding for light bus devices not owned by unit
  • Renamed 'System' package to 'Companion' henceforth; added 'ATOS/E' package to list of updatables.
  • UPM: owner-vs-object distinction (still has some bugs)
  • ATOS real death (messages 905 and 906)
  • Cleaned up bootstyle and boot sequence slightly

8.4 build 2016-06-01

  • Added additional exceptions to guest access for controller and self access (when unit is own guest)
  • Added default action selection: either accept (temporary whitelist) or deny (ignore access request.) Deny is the default. Asymmetric options are to minimize hassle required to fix the issue if the unit is AFK.
  • require basic local access to control the dwm session - no more menu prompts for rejectees
  • RLV relay should default to off!
  • fixed guest access prompt for registered users; caused by keychain changes—cached permission bit now cleared before all keychain operations
  • fixed "details" button not working on guest access dialogs for users (should have been "details...")
  • fixed guest access prompts appearing for NULL_KEY and blank key
  • added "!lamp on" and "!lamp off" for upcoming flicker script improvements
  • fixed owners list not being cleaned after object transfer
  • fixed badge clicks not working on _console-screen

8.4 build 2016-07-16

  • re-fixed guest access prompts appearing for NULL_KEY and blank key
  • resolved enormous and redundant lists of secure commands in the @commands index
  • @audience; audience will now respect subsystem status and interference for hearing (still needs ERR integration)
  • no execution of e_boot? issue seemed to go away when poked
  • started implementation of chassis spec; _foundation and _power on stack-heap watch
  • relocated whole remote control interface to _bonds because of running out of space in _puppet
  • _puppet should no longer generate foreign device prompts for attachments

8.4 build 2016-07-24

  • fixed faulty management of temporary whitelist and temporary blacklist causing stride corruption
  • @range command for follow control; also @leash now aliases to @follow
  • new order for subsystems: video, audio, move, teleport, rapid, voice, mind, preamp, power amp, radio in, radio out, GPS, identify. This will affect t3z's old power profile scripts for Arabesque. (They have been updated. Some may have changed a little.)
  • switch to using list facilities for summing elements in _power
  • chassis specification support: _foundation, _power, and _sentinel (ATOS/E 12.0.1) now all recognize a number of chassis options using messages 993 and 994 from _puppet (updated chassis controller module will be released soon)

8.4 build 2016-07-31

  • resolved totally useless shutdown behavior
  • fixed abnormal windlight changes during charging
  • @policy command implemented; doesn't actually affect the system yet, though
  • empty fields now hidden in @about; serial prefix is now "NS" for non-DAX and non-SXD units (otherwise still "SXD").
  • @unleash to mirror @leash

8.4 build 2016-08-13

  • '@persona probe' to force refresh of personas list
  • XSU support

8.4 build 2016-09-10

  • waypoint following should not set the device manager's follow target
  • added xanadu 'cleanup' message to destroy dead package installers
  • fixed '@navigate stop'
  • added 100 kJ cap to @zap when _sentinel is installed (not foolproof; can cause disasters if multizap is used)
  • fixed redundant dialog menus opening when touch screen is used (caused by conflicts in local guest access code)
  • added optional header file for coilDDT so messages can be named
  • menu controls for basic policy features
  • local command input on /1, like OC commands (see '@commands local' and '@commands prefix')
  • serial numbers not of length 9 will now be displayed without hyphens in the boot sequence and @about
  • subsystem blocking by devices (proof-of-concept device: cortex)
  • IRR policy control of subsystems, vox, apparel, and persona settings.
  • beginning support for arousal model (not yet available)

8.4 milestone 5

  • /1 command prefixes now forced to lower case
  • curfew policy
  • block follow and navigate while motors disabled
  • restrict access to @restraint/@rlv (managers only)
  • curfew time entry
  • fixed a case where guest authorization was removing the wrong listeners
  • fixed a case causing corruption of temporary white/black lists (numbers appearing in lists)
  • require basic remote access to create a tty session - no more menu prompts for rejectees; unfortunately this means that old remote consoles (before 1.5) no longer work
  • fixed a long-standing bug where changing @access settings would not clear cached permissions for last accessor
  • don't ask for permission to respond to ! commands in RLV (??? seems to already be fixed)
  • default to verbosity = 1
  • IRR implementation: radio limitations (implementation restriction: clearing the user list can cause exceptions to linger until reattach)

8.4 milestone 6

  • fixed HUD "0/-1" problems
  • NRS: removed 'arrived at waypoint name' messages
  • added subtle sound effects during _oem parsing to make it easier to diagnose hung updates
  • Remote script execution
  • Sync users

8.4 milestone 7

  • Reapply restraints on relog
  • Add semifreeze to bonds/power/coil
  • Adjustable speed during navigation
  • Tutorial
  • beacon test mode
  • beacon frequency
  • capacitor charging
  • permission exemptions
  • timeouts
  • control menu
  • management commands
  • block safeword with _oem switch
  • Tutorial widget (HUD)
  • Feedback menu
  • Raise PONG_TIMEOUT to 45 sec
  • Console attach in response to power off?

8.4 alpha 1

  • Set @beacon and @aux to manager/owner only commands
  • llList2List issues in local /1 commands
  • '@optics apply' (for ATOS/E)
  • Preserve manually-set !broken through teleports
  • Fix inverted freeze/unfreeze light bus messages

8.4 alpha 2

  • All subsystems blocked after removing a subsystem-blocking device
  • no llSetTimerEvent() at all
  • @navigate start <node name>
  • Added menu chime schemes 6 through 9
  • smarter #RLV management for consoles
  • Support for chat power cost adjustments via the chassis controller
  • Singularity detection (!!llTextBox!!)
  • Add '@authority none' and '@name none'
  • '@navigate start' should wait until arrival to trigger node
  • Use '@navigate auto' even for nodes belonging to authorized users
  • block send emotes
  • block send whisper only
  • Confirm ERR correctly detects user permissions when using @restraint command
  • improve projector screen persistence
  • fix 'commands' browser
  • PIN locking should limit available /1 commands to unlock only
  • Fix default position for segments to be less hostile to manual re-positioning
  • Fix beta version display on menus

8.4 alpha 3

  • Solve issues with inconsistent states in session creation queue
  • Check cases of '@bolts auto' failure
  • Proof of concept for foreign device consent interface: electrosense-powered door
  • Switched to fartouch:2.5 for motor locks
  • feedback for single-shot power loads (let devices ask for a pulse of power and get feedback)
  • CB sends real-port instead of port-real
  • performance overhaul to layout function
  • 'allowed/forbidden' messages inverted for policies
  • Fix behavior of missing buttons
  • Mute 'session destroyed' messages
  • Could not find notecard 'e_charge-start'.

8.4 release candidate 1

  • domain functionality shakedown
  • _restraint shakedown
  • reimplement HUD integration API
  • Add domain to @about
  • Raised cached display name limit to 23 bytes
  • Add CSU parameter teleport-recharge-time
  • chatshout overrides chatnormal
  • Fixed interference support for power-free (BaCdrive) models
  • cortex strips persona folder on shutdown
  • Protection against missing button labels
  • Code modernization
  • Encoding issues causing vanishing/imploding menu items
  • Add blank items to devices list menu for spacing
  • Code modernization

8.4 release candidate 2

  • Audience respect for pertinent RLV restraints
  • Added (( as an alias for ooc (note that this is usually intercepted by RLV)
  • 'add' and 'remove' instructions in 501 EDIT_MENU
  • Support 711 and 712 for system module removal
  • ifexists for Arabesque
  • Added @open command for triggering applications
  • Added SET_SELF_ACCESS, removed SEC_SELF
  • Ignore blank RLV commands