Changes

Jump to navigation Jump to search
11,376 bytes added ,  14:51, 2 July 2014
Line 1: Line 1: −
<span style="font-size:188%">Sucrose 0.101.4 Release Notes</span>
+
<span style="font-size:188%">Sucrose 0.102.0 Release Notes</span>
    
== Introduction ==
 
== Introduction ==
Sugar 0.101.4 (unstable) is the feature-freeze version of the [http://www.sugarlabs.org/ Sugar learning platform] on the road towards the 0.102 release. It was released 1 April 2014.
+
Sugar 0.102.0 (stable) is the release version of the [http://www.sugarlabs.org/ Sugar learning platform]. It was released 1 July 2014.
   −
The main changes in this cycle are primarily bug fixes and enhancements to existing features. Worth noting is the large number of patches contributed by new community members.
+
The main changes in this cycle are primarily bug fixes and enhancements to existing features. Worth noting is the large number of patches contributed by new (and young) community members.
    
=== tar files ===
 
=== tar files ===
   −
http://download.sugarlabs.org/sources/sucrose/glucose/sugar/sugar-0.101.6.tar.xz
+
  http://download.sugarlabs.org/sources/sucrose/glucose/sugar/sugar-0.102.0.tar.xz
http://download.sugarlabs.org/sources/sucrose/glucose/sugar-artwork/sugar-artwork-0.101.4.tar.xz
+
  http://download.sugarlabs.org/sources/sucrose/glucose/sugar-toolkit-gtk3/sugar-toolkit-gtk3-0.102.0.tar.xz
http://download.sugarlabs.org/sources/sucrose/glucose/sugar-toolkit-gtk3/sugar-toolkit-gtk3-0.101.4.tar.xz
+
  http://download.sugarlabs.org/sources/sucrose/glucose/sugar-artwork/sugar-artwork-0.102.0.tar.xz
 +
  http://download.sugarlabs.org/sources/sucrose/glucose/sugar-datastore/sugar-datastore-0.102.0.tar.xz
 +
  http://download.sugarlabs.org/sources/sucrose/glucose/sugar-runner/sugar-runner-0.102.0.tar.xz
    
== Summary of changes ==
 
== Summary of changes ==
   −
;Sugar: Add age and gender to intro pages and About Me settings; configurable limits imposed on the number of open activities; activities can be limited to opening a single instance at a time; improvements to the updater; reworking of wireless control panel; improvements to batch processing; improvements to View Source; removal of OLPC-specific code from Control Panel; improvements to the layout of the Web Accounts Control Panel; improvements to the layout of the Languages Control Panel; improvements to the Journal toolbar filters; improvements to the Sugar notification system; new mechanism for adjusting microphone input level.
+
;Sugar: Add age and gender to intro pages and About Me settings; configurable limits imposed on the number of open activities; activities can be limited to opening a single instance at a time; improvements to the updater; reworking of wireless control panel; improvements to batch processing; improvements to View Source; removal of OLPC-specific code from Control Panel; improvements to the layout of the Web Accounts Control Panel; improvements to the layout of the Languages Control Panel; improvements to the Journal toolbar filters; improvements to the Sugar notification system; new mechanism for adjusting microphone input level; and an improved backup mechanism in the Control Panel.
    
;Sugar Toolkit: Conversion to gsettings; improvements to mimetype handling; Journal searching; inhibit suspend while activity is sharing
 
;Sugar Toolkit: Conversion to gsettings; improvements to mimetype handling; Journal searching; inhibit suspend while activity is sharing
Line 21: Line 23:     
;Sugar Activities (Fructose): Pippy, the Sugar Python editor got a major overhaul. It supports multiple tabs and numerous new export mechanisms. In combination with Turtle Blocks, it is now possible to create new Sugar Activities entirely within Sugar itself: (1) Create a Turtle Blocks project; (2) Export the project as Python; (3) Import the Python code into Pippy; and (4) Export the Python code as a Sugar Activity. You can even create a Sugar icon for your project using Turtle Blocks, which can export projects to Python. The Chat activity had a major stylistic overhaul.
 
;Sugar Activities (Fructose): Pippy, the Sugar Python editor got a major overhaul. It supports multiple tabs and numerous new export mechanisms. In combination with Turtle Blocks, it is now possible to create new Sugar Activities entirely within Sugar itself: (1) Create a Turtle Blocks project; (2) Export the project as Python; (3) Import the Python code into Pippy; and (4) Export the Python code as a Sugar Activity. You can even create a Sugar icon for your project using Turtle Blocks, which can export projects to Python. The Chat activity had a major stylistic overhaul.
 +
 +
;Other Sugar Activities (Honey): Major updates to Maze, Spirolaterals, Fraction Bounce, Words, Music Painter, et al.
    
== What is new for users ==
 
== What is new for users ==
Line 34: Line 38:     
[[File:MicLevels.png|thumb|center|400px|added an adjustment for the microphone level]]
 
[[File:MicLevels.png|thumb|center|400px|added an adjustment for the microphone level]]
 +
 +
[[File:Journal-backup-0001.png|thumb|center|800px|Built-in backup and restore tool]]
 +
 +
[[File:Chat-with-tails.png|thumb|center|400px|The new chat look and feel]]
 +
 +
[[File:Nepal-project.png|thumb|center|400px|Winning Turtle Art project from Turtle Art Day Kathmandu]]
 +
 +
[[File:Nepal-python.png|thumb|center|400px|The same project as Python code.]]
    
* limit the number of open activities
 
* limit the number of open activities
Line 64: Line 76:  
You can set up the Sugar developer environment by following the instructions found at http://developer.sugarlabs.org
 
You can set up the Sugar developer environment by following the instructions found at http://developer.sugarlabs.org
   −
See [[0.102/Testing]] for unstable images. The stable images from 0.100 can be found here: [[0.100/Testing]].
+
See [[0.102/Testing]] for unstable images.
 +
 
 +
== Commits to Sugar Core since 0.100 ==
   −
== Sugar Commits since 0.100 ==
+
=== Sugar ===
    
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
Line 192: Line 206:  
||Display badges in activities tray icons …
 
||Display badges in activities tray icons …
 
|-
 
|-
|Martin Abente  
+
|Martin Abente Lahaye
 
||Fix NotificationPulsingIcon property name …
 
||Fix NotificationPulsingIcon property name …
 
|-
 
|-
Line 264: Line 278:  
||Add UI interaction to the backend …
 
||Add UI interaction to the backend …
 
|-
 
|-
|Gonzalo Odiard
+
|Martin Abente Lahaye
 
||Support volumes backup …
 
||Support volumes backup …
 
|-
 
|-
Line 502: Line 516:  
|}
 
|}
   −
== Sugar Toolkit Commits since 0.100 ==
+
=== Sugar Toolkit ===
 
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 
  |-style="background:#787878; color: black;"
 
  |-style="background:#787878; color: black;"
Line 682: Line 696:  
|}
 
|}
   −
== Sugar Artwork Commits since 0.100 ==
+
=== Sugar Web ===
 +
 
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Commit
 +
|-
 +
|Daniel Narvaez
 +
||Browsers must be a list
 +
|-
 +
|Daniel Narvaez
 +
||Need full path to sugar-web-test
 +
|-
 +
|Daniel Narvaez
 +
||Add script launcher karma plugin
 +
|-
 +
|Daniel Narvaez
 +
||Add a grunt based build …
 +
|-
 +
|Daniel Narvaez
 +
||Split envSpec in unit and functional bits
 +
|-
 +
|Daniel Narvaez
 +
||Consolidate functional/unit split
 +
|-
 +
|Daniel Narvaez
 +
||Fix indentation …
 +
|-
 +
|Rogelio Mita
 +
||karma conf to run unit test only
 +
|-
 +
|Rogelio Mita
 +
||karma-shared configuration
 +
|-
 +
|Code Raguet
 +
||remove unnecessary variable aliasing from getObjectId
 +
|-
 +
|Code Raguet
 +
||fixes unnecessary long timeout
 +
|-
 +
|Code Raguet
 +
||improves getObjectId's spec describe
 +
|-
 +
|Rogelio Mita
 +
||Grouping unit tests
 +
|-
 +
|Rogelio Mita
 +
||Moving toolkitContractSpect.js to functional tests directory
 +
|-
 +
|Rogelio Mita
 +
||Moving datastore functional tests to separate file
 +
|-
 +
|Daniel Narvaez
 +
||Update to the latest karma config format …
 +
|-
 +
|Code Raguet
 +
||add FIXME on env.getEnvironment()
 +
|-
 +
|Rogelio Mita
 +
||Refactor: Grouping up responsibilities in sugar mode
 +
|-
 +
|Code Raguet
 +
||env.getEnvironment should return {} in standalone mode
 +
|-
 +
|Code Raguet
 +
||(temporaly) stub env.isStandalone = false when describing environment… …
 +
|-
 +
|Code Raguet
 +
||stub env.isStandalone = false when describing datastore module
 +
|-
 +
|Code Raguet
 +
||stub env.isStandalone = false when describing datastore object
 +
|-
 +
|Code Raguet
 +
||stub env.isStandalone = false in sugar mode
 +
|-
 +
|Rogelio Mita
 +
||datastore integration tests: increase waitFor timeout
 +
|-
 +
|Code Raguet
 +
||Merge pull request #100 from rogemita/fix_tests_sugar_mode-try2 …
 +
|-
 +
|Code Raguet
 +
||fix false positive specs: getEnvironment when env was not set, yet
 +
|-
 +
|Rogelio Mita
 +
||Fix: functional test for envSpec
 +
|-
 +
|Daniel Narvaez
 +
||Revert "Turn on debug logging" …
 +
|-
 +
|Rogelio Mita
 +
||better semantics, test: "should run in standalone mode"
 +
|-
 +
|Daniel Narvaez
 +
||Turn on debug logging …
 +
|-
 +
|Code Raguet
 +
||test: it should set global sugar in standalone mode
 +
|-
 +
|Code Raguet
 +
||add test: it should run callback on EnvironmentSet event
 +
|-
 +
|Code Raguet
 +
||ensure env setter to be undefined before getEnvironment gets called
 +
|-
 +
|Code Raguet
 +
||force environment to be undefined
 +
|-
 +
|Rogelio Mita
 +
||Refactor: common code on setup and teardown methods
 +
|-
 +
|Rogelio Mita
 +
||Grouping up related tests: "in sugar mode"
 +
|-
 +
|Rogelio Mita
 +
||test: should set onEnvironmentSet handler …
 +
|-
 +
|Rogelio Mita
 +
||test: should run callback with null error and environment. …
 +
|-
 +
|Rogelio Mita
 +
||js-beautify fix
 +
|-
 +
|Rogelio Mita
 +
||js-beautify fix
 +
|-
 +
|Rogelio Mita
 +
||Refactor: Ensure standalone mode on "dictstore on standalone mode" de… …
 +
|-
 +
|Rogelio Mita
 +
||dictstore save method uses isStandalone method
 +
|-
 +
|Rogelio Mita
 +
||dictstore init uses isStandalone method
 +
|-
 +
|Rogelio Mita
 +
||Add webL10n missing definition path
 +
|-
 +
|Rogelio Mita
 +
||isStandalone method for env module
 +
|-
 +
|Rogelio Mita
 +
||test: Ensure the datastore object has an objectId (datastore)
 +
|-
 +
|Daniel Narvaez
 +
||More strict mode fixes
 +
|-
 +
|Daniel Narvaez
 +
||Missing var keyword
 +
|-
 +
|Manuel Quiñones
 +
||Set JS strict mode …
 +
|-
 +
|Code Raguet
 +
||modify "save" to solely run the callback when running under standalon… …
 +
|-
 +
|Manuel Quiñones
 +
||New module, helper to store localStorage in the datastore
 +
|}
 +
 
 +
=== Sugar Artwork ===
    
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
Line 733: Line 907:  
== Changes to Sugar Activities since 0.100 ==
 
== Changes to Sugar Activities since 0.100 ==
   −
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
+
=== Write 94 ===
|-style="background:#787878; color: white;"
+
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
! Activity !! Version
+
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements/Bug Fixes
 +
|-
 +
|gauravp94
 +
||Change icon_size to pixel_size
 +
|-
 +
|Gonzalo Odiard
 +
||Disable saving the content as text if abi version == 3.0 (exports)
 +
|-
 +
|Gonzalo Odiard
 +
||Delay imports to improve activity startup time
 +
|-
 +
|Gonzalo Odiard
 +
||Delay speech initialization to speed up the activity startup
 +
|}
 +
 
 +
=== Read 113 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements/Bug Fixes
 +
|-
 +
|Gonzalo Odiard
 +
||Save the mimetype in the metadata when download a shared file
 +
|-
 +
|Gonzalo Odiard
 +
||Don't set path in the downloader
 +
|-
 +
|Gonzalo Odiard
 +
||Copy file in read_file method
 +
|-
 +
|Gonzalo Odiard
 +
||Use Gio to identify the mime type of transferred files
 +
|}
 +
 
 +
=== Log 36 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements
 +
|-
 +
|Gonzalo Odiard
 +
||Use activity root to generate the collector file - SL #4407
 +
|}
 +
 
 +
=== Jukebox 32 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements
 +
|-
 +
|Sai Vineet
 +
||Add reorder capability to Jukebox
 +
|}
 +
 
 +
=== Browse 156 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements/Bug Fix
 
|-
 
|-
|valign=top| Pippy ||valign=top| 61
+
|Gonzalo Odiard
|-style="background:#787878; color: white;"
+
||Delay Evince import until is needed to improve activity startup time
 +
|-
 +
|Gonzalo Odiard
 +
||Make consistent the tooltip of the show/hide tray button
 +
|-
 +
|Manuel Quiñones
 +
||Clear URL entry when Escape is pressed
 +
|-
 +
|anubhavj
 +
||Workaround for #4638  no palettes in sugar-build
 +
|}
 +
 
 +
=== Pippy 61 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 
! Author !! Enhancements
 
! Author !! Enhancements
 
|-
 
|-
Line 771: Line 1,014:  
|-
 
|-
 
|Walter Bender||New icons
 
|Walter Bender||New icons
|-style="background:#787878; color: white;"
+
|}
 +
 
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 
! Author !! Bug Fixes
 
! Author !! Bug Fixes
 
|-
 
|-
Line 803: Line 1,049:  
|-
 
|-
 
|Walter Bender||Fixed many issues with export Sugar activity code
 
|Walter Bender||Fixed many issues with export Sugar activity code
|-style="background:#787878; color: white;"
+
|}
! Activity !! Version
+
 
 +
=== Turtle Blocks 206 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements
 +
|-
 +
|Walter Bender
 +
||new sample project from Nepal
 +
|-
 +
|Walter Bender
 +
||add set_font block
 
|-
 
|-
|valign=top| Turtle Blocks ||valign=top| 199
+
|Walter Bender
|-style="background:#787878; color: white;"
+
||use 'clamp' format for start and action blocks
! Author !! Enhancements
+
|-
 +
|Walter Bender
 +
||autosave in GNOME
 +
|-
 +
|Andrés Aguirre
 +
||set default on save
 +
|-
 +
|Walter Bender
 +
||add Alt-s as keyboard shortcut for Stop button
 +
|-
 +
|Alan Aguiar
 +
||speed up no_help test
 +
|-
 +
|Walter Bender
 +
||make default background color match default fillscreen color
 +
|-
 +
|Walter Bender
 +
||add new python example: text line
 +
|-
 +
|Walter Bender
 +
||new example project (w/Bernie)
 
|-
 
|-
 
|Walter Bender||Use journal or file block for all media types
 
|Walter Bender||Use journal or file block for all media types
Line 845: Line 1,121:  
|-
 
|-
 
|Walter Bender||Merged new translations
 
|Walter Bender||Merged new translations
|-style="background:#787878; color: white;"
+
|}
 +
 
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 
! Author !! Bug Fixes
 
! Author !! Bug Fixes
 +
|-
 +
|Andrés Aguirre
 +
||hide stop button when using keyboard shortcut
 +
|-
 +
|Walter Bender
 +
||check for writeable file for save
 +
|-
 +
|Walter Bender
 +
||post alert when trying to save to read-only directory
 +
|-
 +
|Walter Bender
 +
||fix start block sizing
 +
|-
 +
|Walter Bender
 +
||make sure autosave directory is writeable
 +
|-
 +
|Walter Bender
 +
||add defer draw
 +
|-
 +
|Walter Bender
 +
||set background color; cleanup
 +
|-
 +
|Walter Bender
 +
||enable deferred display of sprites when loading
 +
|-
 +
|Walter Bender
 +
||fix regression find_hat (w/Alan Aguiar)
 +
|-
 +
|Walter Bender
 +
||add ifthenelse card
 +
|-
 +
|Walter Bender
 +
||more robust search for media
 +
|-
 +
|Walter Bender
 +
||save size of forever block
 +
|-
 +
|Walter Bender
 +
||catch exceptions in upload process
 +
|-
 +
|Walter Bender
 +
||simplify with time block
 +
|-
 +
|Walter Bender
 +
||don't reset timer on clear
 +
|-
 +
|Walter Bender
 +
||clean up unused sample projects
 +
|-
 +
|Walter Bender
 +
||look for proper connection testing for connection above when action b… …
 +
|-
 +
|Walter Bender
 +
||readjust block positioning due to new action style
 +
|-
 +
|Walter Bender
 +
||use en for en versions of intros
 +
|-
 +
|Walter Bender
 +
||add new thumbnails
 +
|-
 +
|Walter Bender
 +
||fix problem with docking to unavailable
 +
|-
 +
|Walter Bender
 +
||warning when running empty start stack
 +
|-
 +
|Walter Bender
 +
||account for more corner cases in journal block thumbnails
 +
|-
 +
|Walter Bender
 +
||add thumbnail for media-jpournal-stats
 +
|-
 +
|Walter Bender
 +
||move temp data to samples/data
 +
|-
 +
|Walter Bender
 +
||add missing thumbnail file
 +
|-
 +
|Walter Bender
 +
||fix regression in bullet lists
 +
|-
 +
|Walter Bender
 +
||less kludgy work-around to protoblock-skin regression
 +
|-
 +
|Walter Bender
 +
||fix regression in picture block prototypes
 +
|-
 +
|Walter Bender
 +
||fix regression in trash; fix regression in media blocks
 +
|-
 +
|Walter Bender
 +
||add support for vectors; fix bug in restore from trash; add new block… …
 +
|-
 +
|Walter Bender
 +
||fixed regression in save to ODP code
 +
|-
 +
|Walter Bender
 +
||update remote turtle before drawing text
 +
|-
 +
|Walter Bender
 +
||put TurtleBlocks ahead of TurtleBots in modules path
 +
|-
 +
|Walter Bender
 +
||bypass plugin start in order to accommodate exported Python code
 +
|-
 +
|Walter Bender
 +
||look for datafiles in bundle_path
 +
|-
 +
|Walter Bender
 +
||fix problem with label offset (SL #4754)
 +
|-
 +
|Walter Bender
 +
||fix problem with starting plugins from Python export
 +
|-
 +
||Alan Aguiar
 +
||fix problem with help status button infinite loop
 +
|-
 +
|Walter Bender
 +
||fix block scaling problem
 +
|-
 +
|Walter Bender
 +
||work around ColorObj/Box bug
 +
|-
 +
|Walter Bender
 +
||remove spurious \ character from define
 +
|-
 +
|Walter Bender
 +
||fix problem with unselecting blocks with no labels
 
|-
 
|-
 
|Walter Bender||Fixed bug with color constants when used with push/pop and boxes
 
|Walter Bender||Fixed bug with color constants when used with push/pop and boxes
Line 893: Line 1,301:  
|-
 
|-
 
|Walter Bender||Prevent text blocks from docking to blocks requiring numeric arguments
 
|Walter Bender||Prevent text blocks from docking to blocks requiring numeric arguments
 +
|}
    +
=== Chat 79 ===
 +
{| class="wikitable sortable" border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: black;"
 +
! Author !! Enhancements
 +
|-
 +
|Jorge Gomez
 +
||Chat should note when a continuous string of characters extends beyond the end of the screen
 +
|-
 +
|Jorge Gomez
 +
||Chat should provide notification of new activity if scrollbar is not in the bottom position
 +
|-
 +
|Ignacio Rodriguez
 +
||Audio notifications
 +
|-
 +
|Walter Bender
 +
||keep name and message on same line
 +
|-
 +
|Walter Bender
 +
||resize conversation when screen size changes
 +
|-
 +
|Walter Bender
 +
||more fine-tuning of smiley window; resize when screen changes
 +
|-
 +
|Walter Bender
 +
||use grid instead of table; tweak grid calculations
 +
|-
 +
|Walter Bender
 +
||add toolbar to smiley window
 +
|-
 +
|Walter Bender
 +
||inform user that they must be connected before trying to chat
 +
|-
 +
|Walter Bender
 +
||calling resize for each message when screen changes
 +
|-
 +
|Walter Bender
 +
||major overhaul of layout
 +
|-
 +
|Walter Bender
 +
||move smiley button to text entry
 +
|-
 +
|Walter Bender
 +
||need to define nick color even for status messages
 +
|-
 +
|Walter Bender
 +
||use similar color scheme for both sending and receiving messages
 +
|-
 +
|Walter Bender
 +
||merge color label for nick into the textbox
 +
|-
 +
|Walter Bender
 +
||set Label justification
 +
|-
 +
|Walter Bender
 +
||adjust box widths
 +
|-
 +
|Walter Bender
 +
||Improve padding calculation
 +
|-
 +
|Walter Bender
 +
||switch from box to grid
 +
|-
 +
|Gonzalo Odiard
 +
||Move the open the journal logic to the activity
 +
|-
 +
|Gonzalo Odiard
 +
||improved visuals
 +
|-
 +
|Walter Bender
 +
||setting message colors
 +
|-
 +
|Walter Bender
 +
||add support for tails
 +
|-
 +
|Walter Bender
 +
||use standard activity toolbar
 +
|-
 +
|Walter Bender
 +
||add more smilies
 +
|-
 +
|Walter Bender
 +
||add fixed to position content around OSK
 
|}
 
|}
  

Navigation menu