- 11 Nov, 2017 4 commits
-
-
Evan W. Patton authored
Fixes #995 Change-Id: Icc3c90f9b5d18925031e1183d84ca84310208e7b
-
Evan W. Patton authored
When we updated the Closure Compiler for the Blockly update, some strings containing HTML were escaped unnecessarily. These strings are part of internationalization, and so they will be code reviewed before acceptance into the code base. We therefore break the SafeHtml contract imposed by Google Closure Library and manipulate the content element directly so that the static HTML content is preserved. Fixes #985 Change-Id: I8a545d46aceedcb8039f194ce03a86d924ab0867
-
Evan W. Patton authored
An interaction between an upgrading an extension with a new version number and a change to YaVersion results in being unable to open a project with extensions. This fix does two things to address this: 1. Force a save of the project so that the version numbers of the extension are persisted back to the server. 2. Check whether a component to be upgraded is an external component, and if so, skip the upgrade step since we don't have an upgrader for it anyway. Fixes #996 Change-Id: I6d39f70b3cac80961ed538f5a2bd99ab81729a5e
-
Evan W. Patton authored
Assisting users with extensions is difficult because it is unclear whether problems occur because of bugs in the extension or due to a mismatch in versions when extensions work together. This commit adds an "Extension Version" header on the helper widget that displays the version number specified in the @DesignerComponent annotation if the version number is greater than 0. Closes #894 Change-Id: If7fdd49795e81f8ff784036ce5745de499aafbd9
-
- 27 Oct, 2017 2 commits
-
-
Evan W. Patton authored
This commit reconciles our implementation of the `if` block with the implementation in Blockly. In particular, our implementation only works under the assumption that the user is making changes via the mutator and causes graphical problems when the undo/redo feature in Blockly is used. The Blockly version correctly handles undo/redo, but the mutator is slightly different in its implementation. This change maintains our visual presentation of the mutator but uses the Blockly logic for updating. Fixes #973 Change-Id: Ib335d4cd7f132f8bf21f9c691ee7a7e53f28e674
-
Conor authored
I have updated all of the reference documentation pages to use the new MIT AI logo. Fixes #932
-
- 23 Oct, 2017 1 commit
-
-
Evan W. Patton authored
Fixes #959 Change-Id: I07a51181269adfd79b8db11a40cec66dc43a4ed9
-
- 22 Oct, 2017 1 commit
-
-
Evan W. Patton authored
Prior to this commit, changing the target property in a getter/setter block would not update the tooltip of the block to match the new property. This commit updates the tooltip in response to the dropdown selection changing. Fixes #964 Change-Id: I7ab095699f533fd262f2dc69cbae515e96163b8f
-
- 11 Oct, 2017 1 commit
-
-
Evan W. Patton authored
Opening and closing a mutator or clicking a block would result in the blocks code being resent to the companion because any workspace event would force a YAIL update. This change adds a isUi method to check whether a Blockly event is a UI event, which doesn't change the semantics of the program, and ignores such events for the purpose of updating the companion. Change-Id: Id80d1d094e585cc7182fe3987f8e0adc2b45b872
-
- 10 Oct, 2017 1 commit
-
-
Evan W. Patton authored
Warning indicator counters were 0 even if there were warnings in the workspace. This was due to a combination of optimizations where the warnings aren't computed if the workspace isn't rendered and the indicator isn't created until the first rendering pass. This means that when the indicator is rendered it has not been updated with the results of any error checking passes have been made. Fixes #953 Change-Id: I5641c6444efeab9228efca5a74a78ed3a4577484
-
- 06 Oct, 2017 2 commits
-
-
Evan W. Patton authored
Fixes #944 Change-Id: I9fbb8d8a5d2c546ad44ab639f21a165fd7194d1e
-
josmas authored
-
- 03 Oct, 2017 1 commit
-
-
Jeffrey I. Schiller authored
When upgrading a project, do not attempt to save the upgraded version if we are in read only mode. Change-Id: I7e2f089293ae864dbe1a18c2504ac71d1b51fc9d
-
- 24 Sep, 2017 1 commit
-
-
Jeffrey I. Schiller authored
Make sure the button in the designer scales along with the font size. This change is a simplification of work originally done by Olivier Midy <osmidy@mit.edu>. Change-Id: Iad2033001f26b102506f8bba2dff89f94f6b8ab6
-
- 22 Sep, 2017 3 commits
-
-
Evan W. Patton authored
Large projects demonstrated that an O(n^2) behavior for the MockForm refresh function caused significant slowdown when loading and rendering large projects in the designer. Jeff originally fixed this by introducing a timer so that at least 2 seconds were provided between refresh calls. However, this introduces some visual glitches when components are dragged or immediately after project load due to the fact that up to two seconds must elapse before the component sizes are updated. This commit uses a timer that immediately fires after the current JavaScript execution context finishes so that changes to the form and its components takes effect immediately on the next render pass. To prevent O(n^2) behavior, only one timer is scheduled at any one point, and the timer is only cleared after the refresh pass has completed. Change-Id: I7c43ec19b6aad2d8fa6de2d5cdbf9913dec44abf
-
Evan W. Patton authored
The Blockly update broke how the REPL interacted with App Inventor when switching between projects after connecting. This change ensures that pollYail is called when a workspace is made active so that the screen will be updated accordingly. Change-Id: I3b10365e59d247590a7f5f9e522a450b7ad2ab4b
-
Evan W. Patton authored
Blocks workspace upgraders sometimes operate on the workspace in XML form rather than workspace form. When we did the Blockly update in May 2017, we moved updating the positions of blocks to occur immediately before the first render of the workspace rather than at workspace load time. This results in all blocks being at 0, 0 if the project relied on a component where the upgrader used XML because the blocks do not get positioned until after the upgrade has run. This code wraps the blockToDOMWithXY function to update the position of the block during serialization to XML if rendering is turned off, i.e. we are loading the workspace. Fixes #920 Change-Id: Ie19cbe4207e6c36979c2adb767748bb54def4551
-
- 18 Sep, 2017 1 commit
-
-
Jeffrey I. Schiller authored
App Engine may soon require that static content be declared static in appengine-web.xml. This change makes sure these directories, which hold the “Terms of Service” among other things, are properly declared. Change-Id: Id7409362e96a731cec75bd6cbbe3de376bf2beec
-
- 31 Aug, 2017 1 commit
-
-
Klomi authored
-
- 28 Aug, 2017 4 commits
-
-
Jeffrey I. Schiller authored
During development it is common to erase the local development datastore and start over. However if the browser in use still had a valid authentication cookie (very common), a blank dialog would be displayed because the cookie resolved to a non-existent account. This change results instead with either the login page, or Google authentication being invoked (depending on configuration). Note: This code should *not* get triggered in production. Change-Id: Iafbc7c774c392d99073342c49108dc6774e715a0
-
Evan W. Patton authored
Change-Id: I0d0b6cdb0dc8b5e7360616a75d96cb18391eb8ae
-
Evan W. Patton authored
Fixes build issues on Windows where the default charset isn't UTF-8. Change-Id: I22f583eda2f000ef1dd82a672b5a0de6a4b9e7cb
-
Michael J Gallagher authored
Close #852 Change-Id: I99e8fea50b5d0632bb935183fe90c9a1b2c7bdd4
-
- 23 Aug, 2017 2 commits
-
-
Jeffrey I. Schiller authored
Includes the favicon.ico as well as the logo Change-Id: Ie05bd5e3a6a3f072c81c91d11aee60b52fe9905c
-
Evan W. Patton authored
A user reported an issue with a project where connecting the companion caused the ReplMgr to go into an infinite loop. The issue was due to a combination of setter block having an empty socket (triggering an error resulting in the slow path) and the fact that there were more than 20 top-level blocks in the project. After testing the first 20 blocks it would attempt the fast path, which would retrigger the slow path, ad infinitum. This commit updates the countdown in the slow path to use the number of top-level blocks in the workspace rather than hard-coding 20 checks. Fixes #887 Change-Id: Ie15b0f35cd145ecc0b789707f032eca6c179d107
-
- 17 Aug, 2017 3 commits
-
-
Evan W. Patton authored
Prior to the IOT release, extensions were packaged using the FQCN of the extension inside of the AIX file. To faciltate being able to contain multiple extension components in a single package, we switched to using the package name rather than the FQCN. This causes backward compatibility issues for extension developers who released extensions prior to the update. This commit adds a extensions.packagefqcn property to ant that can be set to true by developers supporting older extensions so that the internals of the extension package reflect the older layout. It is recommended that all new extensions be built with the default (false) to benefit from the new layout. Change-Id: Idd9134c7d4d7c19f9a8869e4f88e164e2efa5cc8
-
Evan W. Patton authored
ClientJsonParser was calling a GWT API that used eval() to parse JSON content rather than JSON.parse(). A maliciously crafted project containing an extension components.json file with Javascript instead of JSON would allow injecting arbitrary Javascript into the user's session. This commit switches to strict parsing and includes exception handling to report corrupt/invalid components.json to the user. Change-Id: Iafaaf004310ac45cf0c1cea18eae1cfd58de17ef
-
Evan W. Patton authored
If a project contained multiple extensions sharing the same package name, deleting one extension would also remove the other extensions sharing that package name. This generally shouldn't happen going forward because extension bundles automatically group extensions by package name (which is why this logic is in place), but it didn't handle the case where old extensions were in the same package. This commit groups extensions by the components.json file that defines them, and only deletes those extensions that are siblings by the components.json file, rather than blanket-deleting extensions solely by package name. Fixes #910 Change-Id: I26a5db29a3919033fd50f2a2d65c6f805513ae2c
-
- 15 Aug, 2017 1 commit
-
-
Jeffrey I. Schiller authored
Replace the default App Logo with our new Bee based version. Change-Id: Ibfaa3792bf29d799b253b261cd83b26e187eaa18
-
- 12 Aug, 2017 1 commit
-
-
Jeffrey I. Schiller authored
Change-Id: I16d609f13d7818a03f4de13761aaca3d1f5c40b2
-
- 11 Aug, 2017 1 commit
-
-
Jeffrey I. Schiller authored
Change-Id: Ic5f5d83e40051cfd62504196bd71f9a9781b521f
-
- 21 Jul, 2017 1 commit
-
-
Evan W. Patton authored
Taifun reported that importing many extensions of the same package name into a single project made them unable to load. This change detects this scenario and returns an error to the user preventing them from loading the conflicting extension. There is also a test to ensure that if one has two extensions in the same package and then loads a bundle containing the individually FQCN extensions the old extensions will be removed and placed with the bundled version. Change-Id: If35663d650d3a24f6c5aaeceaf490a24ac008522
-
- 18 Jul, 2017 1 commit
-
-
Jeffrey I. Schiller authored
Firefox requires that the <div> that includes the Tutorial Panel has its height set to 100%, otherwise it displays it with a height of 150px (per the CSS standard). Change-Id: Id7afd34f4aa058dd5f7b4982d6409941d472d907
-
- 08 Jul, 2017 2 commits
-
-
Jeffrey I. Schiller authored
Remove references to AI1 from the No Projects Dialog in non-English language translations. Change-Id: Ic518901c445cb65fbf6d0ac6b2abcd1276e23264
-
Jeffrey I. Schiller authored
Remove the Splash Screen Message from OdeMessages. The message now comes from the data store. The update made to take the message from the data store neglected to remove the obsolete message from OdeMessages. We remove it here. Change-Id: I1ed7e751ce4a3ab150cf4250270b0a544416e9ac
-
- 06 Jul, 2017 3 commits
-
-
Klomi authored
Change-Id: I4811755660bdcbb662f39f719b0cb7ad89b9f12f
-
Magdalena Sowder authored
Created a modal pop-up for videos and images from the tutorial. Added changes to separate file to create a new class that extends Frame. Change-Id: Ie47ce9896aefff2bcebe3cbe64fbe512a1258661
-
Katie Mathison authored
There was an issue where some generic component method blocks did not have the mutator labeling them as such. This was fixed by explicitly setting the is_generic mutator along with the other mutators when these blocks are generated in the drawer. There was another issue where generic clock add blocks expected a time unit dropdown which only exists on the instance version of the clock add blocks. This was fixed by only setting the time unit if the block is not generic, since this attribute is only used in the instance version of these blocks. Change-Id: I9fb4bee9bef9fa76e40a240b587ec0b05ba86693
-
- 05 Jul, 2017 1 commit
-
-
Jeffrey I. Schiller authored
Remove the “Beta” tag from MIT App Inventor. Also remove the “2” as well. Change-Id: Ifed997d86e13b5f59a93e736f5caee7299ca1039
-
- 04 Jul, 2017 1 commit
-
-
Jeffrey I. Schiller authored
If someone attempts to download a packaged project while a new build is running, we throw in IllegalArgumentException because the built apk is no longer present (the first thing a new build does is remove the old apk). This happens often enough that it is one of the top errors being logged by the Google Cloud Console. This change eliminates the IllegalArgumentException and instead just returns a “File Not Found” error (404 error) to the user attempting the download. Change-Id: I6fb92e51477c1ad93059cf57a449396d4fea0d7d
-