FriendUP v1.1 ChangeLog

v1.1 features and improvements

FriendUP v1.1 is an incremental update over the first major version of Friend released back in July, 2017. Since then, a lot of improvements have been made to the entire software stack. Below are our main feature upgrades and fixes since the last release.

Friend Core

The Friend kernel, Friend Core, has received a massive list of improvements over the last six months. Improvements have ranged from speed optimizations, security and stability fixes and various capabilities:

Friend Network

  • Load distribution – first phase was completed (connect to Friend Core master node, setup cluster, ping functionality, configuration moved to database)
  • WebSocket pings are using threads now instead of workers
  • Friend Core inter connections can now use SSL

File system drivers

  • WebDAV support added
  • RemoteFS – fixes and improvements
  • It is possible now to set maximum bytes which user can store on disk
  • SSHFS – fixes and improvements
  • LocalFS – fixes and improvements
  • PHPFS – fixes and improvements
  • SambaFS – added
  • File notifications fixed
  • Per file system encryption key support

Speed, security and stability

  • Many reported crashes fixed
  • Added cache to shared files (filesystem must support it)
  • FMallocAlign and FCallocAlign macros added, which allows for alloc aligned memory
  • Static file caching improved. It now stores mime types too
  • Our handling of SSL sockets have been optimized for speed and reliability, and can deliver TTFB response times below 2ms
  • Much faster download handling/speed

Friend Core, Misc

  • Build system improved
  • Software repository support
  • The Friend Core code base got a major code cleanup
  • Friend Core now starts and stops scripts which are placed in the autostart/ directory
  • Authentication code was cleaned up. It is now possible to inherit functions from the fcdb auth module
  • Information which comes from Friend Core can now be easily translated, as they are stored in the database
  • WebSockets library updated
  • WebSockets can receive and send long messages (chunking)
  • Tinyurl feature fixed
  • New functions have been added to handle network connections, file systems
  • New functionality for administrators
  • Doxygen documentation can be auto generated for Friend Core web calls
  • Friend Core C code is using stdint types
  • Z.library can now compress empty folders
  • BigEndian support was added (not fully tested)
  • Friend Core stores information about its own geolocation
  • Sqlite library was added (not fully tested)
  • System module has been improved
  • String handling has been accelerated
  • Improved memory and CPU usage
  • BUGFIX: Download filename and path fixed

Friend Workspace

Browser compliance

  • Successfully tested on Microsoft Edge, Firefox, Safari as well as Google Chrome
  • Experimental Opera, Brave support

Themes / GUI

Desktop / Workstation GUI

  • More modern looking Windows theme in two color schemes (blue and red)
  • Improved FriendUP (plain, dreamy, pink, green variants) and FriendUP Twilight themes
  • Better on the fly reloading of themes
  • Drag & drop between virtual workspaces
  • Dock has been improved (placement, screen margins)
  • Dynamic start menu with drag & drop between menu and dock
  • Better dock editor (including better responsive design for smartphones)
  • Support scrollable disks widget
  • Disk icons respect screen margins and dock
  • BUGFIX: Clipboard paste / copy bug killed

Smartphone interface

  • Redesigned window management
  • Refactored application handling
  • Refactored menuing system
  • Only themes allowed are FriendUP and FriendUP Twilight
  • Better gestures
  • BUGFIX: Fixed network overload that slows down the phone/consuming too much battery
  • BUGFIX: Fixed wrong handling of rotating screens (phone rotation)

Tablet interface

  • Better merge between responsive elements and desktop GUI
  • Reworked some of the gesture controls

Developer API

I/O (cAjax, File, Door classes)

  • Better differentiation between calls that ought to be run over WebSockets or HTTP.
  • Raised amount of simultaneous network calls from five to ten
  • Differentiated between file copy calls and other calls (file copy calls are too voluminous to be allowed to occupy the standard network call queue)

Window management (View, Screen and Widget classes)

  • Support view groups (nested view windows in tabs)
  • Support retrieving DOM element of other windows in the same application (except when using security subdomains)
  • BUGFIX: All windows registered on an app now fires onClose callbacks

Documentation

  • We have revised the developer manual (rev 6) and have included important additions
  • We have added a Friend DOS manual that specifically describes the CLI and command line arguments
  • We have added a API documentation that covers the Friend Core structures and server/client interaction for developers

Tree Engine

  • Initial Tree Engine canvas based GUI implemented
  • Friend API abstraction (files, subsystems) implemented
  • Render modes (stereoscopic, miniature, normal)
  • Event system implemented
  • Sound system implemented
  • Friend Network integration implemented
  • Test application, Panzers, completed for initial version

Window management

  • Completely refactored window management code, speed optimizations
  • Completely refactored task management in dock to avoid full taskbar and added speed optimization
  • Added support for virtual workspaces
  • Screen dragging is now faster due to hardware accelerated transforms
  • Refactored z-index handling for window management

File management

  • File permissions fully implemented
  • Support for file/icon metadata through .info files implemented
  • BUGFIX: Switching between listview and iconview does not kill icon windows

 

Friend Network

  • Friend Network can connect to other Workspace users through encrypted web sockets.
  • Remote control of remote sessions through Friend DOS
  • Multiplayer support through messaging (Panzers!)

Speed and security

  • Support for security subdomains activated (not tested)
  • Recursive calls and long DOM node loops removed
  • Encryption key management added
  • Login API now fully supports login modules with customizable GUI
  • Added better (and higher bandwidth) network request queue

Android app

  • Partial push notification support
  • Friend Javascript object for integration implemented
  • WebRTC support for audio/video chat
  • Autologin support

Windows client app

  • Better integration with Windows by introducing seamless window application windows
  • Better USB device integration
  • New function which allow apps to run on one RDP connection

Friend applications

Friend Chat

  • Simplified UI, choice on first login
  • Added UI to streamline starting chats and calls
  • Guests to live sessions can set a display name, or use generated default
  • Using Friend native tinyURL for for live invites
  • Better browser checks and compatibility in live sessions
  • Voice only calls and mixed video/voice calls
  • Store prefered devices for live calls and attempt to use these in next session
  • Enabled choosing speaker output for live sessions
  • Added voice only call buttons to chat views
  • Added detection of who is speaking and option to focus this participant
  • If no video device is found when initializing a video call, falls back to voice only
  • Full screen toggle for live view
  • Safari support (WebRTC)
  • Improved Firefox support (WebRTC)
  • Treeroot accounts: show number of unread messages since last login
  • Treeroot accounts: use long-polling instead of a poll-loop to save server resources
  • When network connection drops, Friend Chat reconnects automatically without losing functionality (Used to show log window)
  • Added support for #Slack chat accounts

Bug fixes:

  • patch/treeroot_encKey_of_undefined
  • patch/rtc_ask_name_not_hidden
  • patch/send_api_key_down_events
  • patch/temp_ui_btn_margin
  • patch/AV_not_removed
  • patch/live_css_portrait_fix
  • patch/rtc_conn_status
  • patch/safari_experimental
  • patch/update_all_script
  • patch/main_label_fuc
  • patch/main_window_label
  • patch/tmp_ui_btn_alignment
  • patch/installer_cfgini_enable_fix
  • patch/installer_overwrites_things
  • patch/temp_ui_text_default
  • patch/eventemitter_of_undefined
  • patch/readme_ports
  • patch/reorder_peers_fixes
  • patch/treeroot_login_fix
  • patch/treeroot_displayname
  • patch/irc_console_use_css_theme
  • patch/calendar_event_serialization
  • patch/source_select_send_receive
  • patch/popped_in_list_after_screenshare
  • patch/selfie_before_meta
  • patch/irc-message-indexof
  • patch/treeroot_of_undefined_mk_2345
  • patch/prefered_devices_fix
  • patch/simpleconf_self_fix
  • patch/readme_ports_proxy
  • patch/installer_node_version_req
  • patch/srv_cfg_removed_ICE
  • patch/share_ux
  • patch/adblock_rtc_mk1
  • patch/treeroot_lastmessage_undefined
  • patch/presence_name_fallback
  • patch/treeroot_msg_spam_2
  • patch/localization_roundup_mk1
  • patch/guestlink_fix
  • patch/treeroot_log_spam
  • patch/live_identities_dashes
  • patch/presence_module_use_conf_host
  • patch/thing_of_undefined_chatsockets
  • patch/ext_website_fix
  • patch/screensharing_popup_on_toggleoff
  • patch/fixyfox input css

Presence

  • Handle speaking / not speaking event and coordinate speaker for clients

Bug fixes:

  • patch/sql_version_check
  • patch/config_ice_ports
  • patch/installer_node_version_check
  • patch/live_identities_dashes

Liberator

  • Implemented bidirectional channel between Windows server and Friend
  • Single session mode implemented (reduce cost of server resources)
  • Experimental seamless windows using single RDP session in HTML5/Canvas (allows Windows application windows to act as if they were normal Friend windows)

Author

  • Now works better in smartphones
  • Starts faster

Friend Create

  • Added working package management
  • Busywaiting while loading multiple files
  • Project properties always has Module system and Module files as default
  • Project .apf and .conf files can be opened as regular files too
  • BUGFIX: Drag & drop of projects now gets correct file names
  • BUGFIX: Remove possibility of running Friend Create in own screen
  • BUGFIX: Asynchronous loading of multiple files does not lead to data loss

Package management

Friend now has a working software repository system. In its initial version, it only supports a single repository (this will be expanded in future patches). Users can now supply their own Friend application packages. These need to be reviewed and authorized by an administrator before they are visible to all users.

Users install packages using drag & drop on the System:Software/ directory in the Friend Workspace. Admins can use the Server utility to handle the validation and authorization of packages.