diff --git a/HISTORY.md b/HISTORY.md
index 467f02a2..0903e535 100755
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -6,11 +6,15 @@
* gliding animation when inserting blocks using the keyboard
* optimized collision detection
* **Notable Fixes:**
+ * show "browser" source option in project dialog when (deprecated) locally stored projects still exist
* list watchers occasionally didn't show cells after reassigning a changed list to a variable
* FOREACH over a linked list failed for scripts mutating it
* eliminated an occasional empty label line when variadic inputs wrap as a whole, thanks, Mary, for reporting this bug!
* **Translation Updates:**
+### 2019-07-04
+* gui: show "browser" source option in project dialog when (deprecated) locally stored projects still exist
+
### 2019-07-03
* blocks: eliminated an occasional empty label line when variadic inputs wrap as a whole, thanks, Mary, for reporting this bug!
diff --git a/snap.html b/snap.html
index c853b288..6b6d32cd 100755
--- a/snap.html
+++ b/snap.html
@@ -9,7 +9,7 @@
-
+
diff --git a/src/gui.js b/src/gui.js
index 0087eeb5..2ac5ebff 100644
--- a/src/gui.js
+++ b/src/gui.js
@@ -75,7 +75,7 @@ isRetinaSupported, SliderMorph, Animation, BoxMorph, MediaRecorder*/
// Global stuff ////////////////////////////////////////////////////////
-modules.gui = '2019-July-01';
+modules.gui = '2019-July-04';
// Declarations
@@ -6078,7 +6078,8 @@ ProjectDialogMorph.prototype.buildContents = function () {
if (this.task === 'open') {
this.buildFilterField();
this.addSourceButton('examples', localize('Examples'), 'poster');
- if (this.ide.world().currentKey === 16) { // shiftClicked
+ if (this.hasLocalProjects() || this.ide.world().currentKey === 16) {
+ // shift- clicked
this.addSourceButton('local', localize('Browser'), 'globe');
}
}
@@ -6556,6 +6557,15 @@ ProjectDialogMorph.prototype.setSource = function (source) {
}
};
+ProjectDialogMorph.prototype.hasLocalProjects = function () {
+ // check and report whether old projects still exist in the
+ // browser's local storage, which as of v5 has been deprecated,
+ // so the user can recover and move them elsewhere
+ return Object.keys(localStorage).some(function (any) {
+ return any.indexOf('-snap-project-') === 0;
+ });
+};
+
ProjectDialogMorph.prototype.getLocalProjectList = function () {
var stored, name, dta,
projects = [];