Skip to content

Commit dd3c58d

Browse files
author
Lionel Laské
committed
Merge branch 'release/1.2.0'
2 parents e361296 + a6b99d4 commit dd3c58d

File tree

1,981 files changed

+468254
-262207
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,981 files changed

+468254
-262207
lines changed

CHANGELOG.md

+68
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,74 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

7+
## [1.2.0] - 2019-09-26
8+
### Added
9+
- Write activity
10+
- Constellation activity
11+
- Pomodoro activity
12+
- QR Code for scanning server URL on iOS/Android
13+
- Update to official Scratch 3.3 release
14+
- Support for localization in Scratch
15+
- Improved Exerciser activity: multimedia support, new templates, results detail
16+
- Dynamically generate favicon and title
17+
- Architecture page and schemas
18+
- Tutorial step 7: use journal chooser dialog
19+
- Tutorial step 8: create your own palette
20+
- Use IndexedDB instead of localStorage for storing Journal items content
21+
- Support for TXT/DOC/ODT/PDF files in Journal
22+
- Support for MP3/MP4 files in Journal
23+
- Add export sound to Journal feature in Abecedarium activity
24+
- Add export video to Journal feature in VideoViewer activity
25+
- Click on a PDF in Journal now open a preview window
26+
- Add access to Abecedarium database (image/sound) from Journal Chooser popup
27+
- Allow move/resize of inserted image in Paint activity
28+
29+
### Changed
30+
- Improve consistency about shared palette position in toolbar
31+
32+
### Fixed
33+
- QRCode and Record no longer work on Chrome 71
34+
- Add a delete button in the new idea input field of Labyrinth activity #262
35+
- Increase size of items in StopWatch activity #261
36+
- Save Maze level in Journal #260
37+
- Bad localization for some countries name in Color My World activity #265
38+
- Integrate presence in Labyrinth activity #263
39+
- Improve Record activity to see picture in real time #266
40+
- Allow clicking on Abacus balls to move it #146
41+
- Memorize responsive seems broken on phones #106
42+
- Stopwatch Activity, lap Timings vanish after a few recordings #280
43+
- Turtle Blocks Activity hangs on Android App #185
44+
- Sugarizer OS hang when multiple click on an icon #338
45+
- Message overlaps with user name in Chat Activity #328
46+
- Jappy Activity print preview popup #326
47+
- Toolbar overlap issue in Speak Activity #324
48+
- Smileys not displayed properly in chat prototype activity #322
49+
- Cursor issue in calculator activity on Chrome #318
50+
- Duplicated text in QR Code Activity history #314
51+
- Audio bar not displaying in chrome when opening a audio file #312
52+
- Display language settings in 2 languages #292
53+
- Gear colours are reset on resume #336
54+
- Added Tool tips to Calculate Activity
55+
- Users should be able to send images in chat prototype #330
56+
- No erase button for recordings in Record activity #344
57+
- Order Journal filter by activity name
58+
- Snapcraft version lost context #346
59+
- Snapcraft version don't allow to import/export file into/from Journal #350
60+
- Update home image for TankOp activity
61+
- Grammatical Errors in the Documentation #347
62+
- Now support offline mode on Scratch for iOS
63+
- Camera doesn't work on Record/QRCode activities for Snapcraft version #351
64+
- Add a pause button to the Physics activity #354
65+
- Context is lost the second time in Abecedarium activity #359
66+
- Sound not play on Memorize activity in iOS
67+
- Record activity don't work in Safari #362
68+
- Error in console in Calculate activity when reopen an empty instance #358
69+
- Localize activity name in title
70+
- Activity palette icon has reversed colors
71+
- XOEditor activity generate multiple entries in the Journal #370
72+
- Clear icon in XOEditor activity is not consistent #372
73+
74+
775
## [1.1.0] - 2019-01-20
876
### Added
977
- Desktop version for GNU Linux, MacOS and Windows using electron

CONTRIBUTING.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
As all Open Source software, contributions to Sugarizer are welcome.
22

3-
The best way to start is to do the whole [tutorial](docs/tutorial.md). It will give you a good understanding of Sugarizer internal.
3+
The best way to start is to read the [architecture](docs/architecture.md) then to do the whole [tutorial](docs/tutorial.md). It will give you a good understanding of Sugarizer internal.
44

55
Then, you could start to contribute by trying to fix some existing issues [here](https://github.com/llaske/Sugarizer/issues).
66

@@ -10,4 +10,6 @@ Note than the **master** branch of the repository is for released/stable version
1010
* Update it with your contribution,
1111
* Send a pull request to the repository.
1212

13-
Thanks in advance for your contribution.
13+
Please note there is no need to ask permission to work on an issue. You should check for pull requests linked to an issue you are addressing; if there are none, then assume nobody has done anything. Begin to fix the problem, test, make your commits, push your commits, then make a pull request. Mention an issue number in the pull request, but not the commit message. These practices allow the competition of ideas and give priority to meritocracy.
14+
15+
Thanks in advance for your contribution.

Gruntfile.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module.exports = function(grunt) {
1818
'activities/ChatPrototype.activity/**/*.js',
1919
'activities/Clock.activity/**/*.js',
2020
'activities/ColorMyWorld.activity/**/*.js',
21-
'activities/Cordova.activity/**/*.js',
21+
'activities/Constellation.activity/**/*.js',
2222
'activities/Etoys.activity/**/*.js',
2323
'activities/EbookReader.activity/lib/*.js', // TODO: js/vue.js don't work
2424
'activities/Flip.activity/**/*.js',
@@ -38,6 +38,7 @@ module.exports = function(grunt) {
3838
'activities/Moon.activity/**/*.js',
3939
'activities/Paint.activity/**/*.js',
4040
'activities/PhysicsJS.activity/**/*.js',
41+
'activities/Pomodoro.activity/**/*.js',
4142
'activities/QRCode.activity/**/*.js',
4243
'activities/Record.activity/lib/*.js', // TODO: js/recordrtc.js don't work
4344
'activities/Reflection.activity/**/*.js',
@@ -49,7 +50,7 @@ module.exports = function(grunt) {
4950
'activities/TankOp.activity/**/*.js',
5051
'activities/TurtleBlocksJS.activity/**/*.js',
5152
'activities/VideoViewer.activity/**/*.js',
52-
'activities/WelcomeWeb.activity/**/*.js',
53+
'activities/Write.activity/js/*.js', // TODO: lib/quill is in ES6
5354
'activities/XOEditor.activity/**/*.js'
5455
],
5556
dest: 'build/'

README.md

+40-43
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
![](images/sugar_animation.gif)
1+
![](images/sugarizer_logo_with_text.svg)
22

33
# What is Sugarizer ?
44

5-
The [Sugar Learning Platform](https://sugarlabs.org/) is a leading learning platform that began in the famous One Laptop Per Child project.
6-
It is used every day by nearly 3 million children around the world.
5+
Sugarizer is a free/libre learning platform. The Sugarizer UI use ergonomic principles from The [Sugar platform](https://sugarlabs.org/), developed for the One Laptop per Child project and used every day by more than 2 million children around the world.
76

8-
Sugarizer is a web implementation of the platform and runs on every device - from tiny Raspberry Pi computers to small Android and iOS phones to tablets and to laptops and desktops.
7+
Sugarizer runs on every device: from Raspberry Pi computers to Android and iOS phones to tablets and to laptops and desktops.
98

10-
Like Sugar, Sugarizer includes a bunch of pedagogic activities thought for children.
9+
Sugarizer includes a bunch of pedagogic activities thought for children, see [here](https://sugarizer.org) for more.
1110

1211
Sugarizer is available as:
1312

1413
* Application: an installable app for every operating system
1514
* Web Application: a web application that runs in modern web browsers
1615

17-
Enjoy the experience and help us reach every child on every device in every country.
1816

1917
# Sugarizer Application
2018

@@ -59,11 +57,11 @@ You could use Sugarizer desktop arguments using "--" after start. For example:
5957

6058
npm start -- --window
6159

62-
To run **Sugarizer Application from the Web Browser** (GNU Linux/Mac OS/Windows), you should launch it with a special option to enable access to local files.
60+
To run locally **Sugarizer Application into the Web Browser** (GNU Linux/Mac OS/Windows), you should launch it with a special option to enable access to local files.
6361

6462
For **Chrome**, close ALL running instances of Chrome and re-launch it using the command line:
6563

66-
chrome --allow-file-access-from-files index.html
64+
chrome --allow-file-access-from-files index.html
6765

6866
On Windows, you should launch:
6967

@@ -73,6 +71,12 @@ On Mac OS, you should launch:
7371

7472
open -n /Applications/Google\ Chrome.app --args --allow-file-access-from-files
7573

74+
On Linux, you should launch:
75+
76+
google-chrome-stable --allow-file-access-from-files index.html
77+
78+
> Note: `google-chrome-stable` is the name of Chrome in Ubuntu but it could be different on other distribution, you can get the package-name for Chrome by running `sudo dpkg -l | grep chrome`
79+
7680
For **Firefox**, type in the address bar:
7781

7882
about:config
@@ -99,15 +103,20 @@ To install your own Sugarizer Server, follow instructions on
99103

100104

101105

102-
# Activities
106+
# Architecture
107+
108+
If you're a developer and you want to learn more about Sugarizer architecture, see the dedicated page [here](docs/architecture.md).
109+
103110

104-
Sugarizer includes a bunch of pedagogic activities.
105-
All activities could be found in the [activities](activities) directory. Each activity has its own subdirectory. So for example, the *Abecedarium* activity is located in [activities/Abecedarium.activity](activities/Abecedarium.activity)
111+
112+
# Activities distribution
113+
114+
All activities could be found in the [activities](../activities) directory. Each activity has its own subdirectory. So for example, the *Abecedarium* activity is located in [activities/Abecedarium.activity](../activities/Abecedarium.activity)
106115

107116
You could distribute Sugarizer with whatever activities you want.
108-
To do that, you first need to adapt the content of the [activities](activities) directory to match your wish: removing activities you don't want to distribute and adding in this directory new activities you want to include.
117+
To do that, you first need to adapt the content of the [activities](../activities) directory to match your wish: removing activities you don't want to distribute and adding in this directory new activities you want to include.
109118

110-
Then you need to update the [activities.json](activities.json) file to reflect your choice.
119+
Then you need to update the [activities.json](../activities.json) file to reflect your choice.
111120
Here an example of this file:
112121

113122
[
@@ -152,8 +161,8 @@ Remove in this file rows for activities that you want to remove. Add in this fil
152161

153162
Note than:
154163

155-
1. The [activities/ActivityTemplate](activities/ActivityTemplate) directory does not contain a real activity. It's just a template that you could use to create your own activity.
156-
2. The [activities.json](activities.json) is used only by Sugarizer Application, the Web Application relies on the */api/activities* API that dynamically browse the [activities](activities) directory. By the way, it's a good practice to match the content of the activities.json file and the content of the activities directory.
164+
1. The [activities/ActivityTemplate](../activities/ActivityTemplate) directory does not contain a real activity. It's just a template that you could use to create your own activity.
165+
2. The [activities.json](../activities.json) is used only by Sugarizer Application, the Web Application relies on the */api/activities* API that dynamically browse the [activities](../activities) directory. By the way, it's a good practice to match the content of the activities.json file and the content of the activities directory.
157166

158167
# Create your own activity
159168

@@ -169,6 +178,8 @@ If you're interested to create your own activity, a full tutorial will guide you
169178
* **Step 4**: handle journal and datastore
170179
* **Step 5**: localize the activity
171180
* **Step 6**: handle multi-user with presence
181+
* **Step 7**: use journal chooser dialog
182+
* **Step 8**: create your own palette
172183

173184
Let's start [here](docs/tutorial.md).
174185

@@ -182,40 +193,22 @@ To run unit tests for Sugarizer Application, run "file:///PathToYourSugarizerRep
182193

183194
Sugarizer Application could be packaged as an Android or iOS application using [Cordova](http://cordova.apache.org/).
184195

185-
To build it, first install Cordova as described [here](http://cordova.apache.org/).
186-
187-
Then create a directory for Sugarizer Cordova and put the content of the git repository in the www directory:
188-
189-
cordova create sugar-cordova
190-
cd sugar-cordova
191-
rm config.xml
192-
rm -fr www
193-
git clone https://github.com/llaske/sugarizer.git www
196+
A dedicated tool named [Sugarizer APK Builder](https://github.com/llaske/sugarizer-apkbuilder) allow you to create the Android packaging without any Android knowledge.
194197

195-
Add the platform you want to add (here Android):
198+
If you want to build it yourself, you could adapt the [source code](https://github.com/llaske/sugarizer-apkbuilder/blob/master/src/make_android.sh) of this tool.
196199

197-
cordova platform add android
198-
199-
Replace the auto generated config.xml file by the Sugarizer one:
200-
201-
cp www/config.xml .
202-
203-
Build the package:
204-
205-
cordova build android
206-
207-
On Android, if you want to generate the Sugarizer OS version, remove the SugarizerOS comment around the `cordova-plugin-sugarizeros` plugin in [config.xml](config.xml) file.
208200

209201
# Reduce package size
210202

211-
The current size of Sugarizer is about 300 Mb. This huge size is related to media content and resources include in two activities:
203+
The current size of Sugarizer is more than 350 Mb. This huge size is related to media content and resources include in three activities:
212204

213205
* **Abecedarium activity**: about 150 Mb
214206
* **Etoys activity**: about 100 Mb
207+
* **Scratch activity**: about 50 Mb
215208

216-
By the way, both activities are able to retrieve the content remotely if its not deployed locally. So, if you want to reduce the Sugarizer package size (specifically for deployment on mobile) you could either remove completely those two activities or just remove the media content of this activities.
209+
By the way, these activities are able to retrieve the content remotely if its not deployed locally. So, if you want to reduce the Sugarizer package size (specifically for deployment on mobile) you could either remove completely those three activities or just remove the media content of these activities.
217210

218-
To remove activities, just remove both activities directory and update [activities.json](activities.json) file as explain above.
211+
To remove activities, just remove these activities directory and update [activities.json](activities.json) file as explain above.
219212

220213
To remove media content for **Abecedarium**, remove directories:
221214

@@ -224,9 +217,11 @@ To remove media content for **Abecedarium**, remove directories:
224217
* [activities/Abecedarium.activity/audio/es](activities/Abecedarium.activity/audio/es)
225218
* [activities/Abecedarium.activity/images/database](activities/Abecedarium.activity/images/database)
226219

227-
The activity will look for media content on the server referenced in [activities/Abecedarium.activity/config.js](activities/Abecedarium.activity/config.js), by default `http://server.sugarizer.org/activities/Abecedarium.activity/`.
220+
The activity will look for media content on the server referenced in [activities/Abecedarium.activity/database/db_url.json](activities/Abecedarium.activity/database/db_url.json), by default `http://server.sugarizer.org/activities/Abecedarium.activity/`.
221+
222+
To remove resources for **Etoys**, remove directory [activities/Etoys.activity/resources](activities/Etoys.activity/resources) and replace the value `resources/etoys.image` in [activities/Etoys.activity/index.html](activities/Etoys.activity/index.html) by the remote location of the resources, for example `http://server.sugarizer.org/activities/Etoys.activity/resources/etoys.image`.
228223

229-
To remove resources for **Etoys**, remove directory [activities/Etoys.activities/resources](activities/Etoys.activities/resources) and replace the value `resources/etoys.image` in [activities/Etoys.activities/index.html](activities/Etoys.activities/index.html) by the remote location of the resources, for example `http://server.sugarizer.org/activities/Etoys.activity/resources/etoys.image`.
224+
To remove resources for **Scratch**, remove directory [activities/Scratch.activity/static/internal-assets](activities/Scratch.activity/static/internal-assets) and remove the value `class="offlinemode"` in [activities/Scratch.activity/index.html](activities/Scratch.activity/index.html).
230225

231226
# Optimize performance
232227

@@ -240,7 +235,7 @@ The [Gruntfile.js](Gruntfile.js) contains tasks settings to build an optimized v
240235

241236
Then install specific component for Sugarizer by running:
242237

243-
npm install
238+
npm install --dev
244239

245240
Finally launch:
246241

@@ -305,4 +300,6 @@ Read [CONTRIBUTING](CONTRIBUTING.md) to learn more about how to contribute to Su
305300

306301
# License
307302

308-
Sugarizer is licensed under the `Apache v2` license. See [LICENSE](LICENSE) for full license text. Most Sugarizer activities use this license too but some could use a different license, check the [activities](activities) directory to be sure.
303+
Sugarizer is licensed under the **Apache-2.0** license. See [LICENSE](LICENSE) for full license text. Most Sugarizer activities use this license too but some use a different license, see [here](docs/licenses.md) for details.
304+
305+
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

0 commit comments

Comments
 (0)