From 65377b396fcbb31a00adde2a4ebb8c9855096c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 28 Nov 2016 11:29:17 +0100 Subject: [PATCH 01/12] Added note that jquery and lodash are dependencies of the js client lib --- docs/jsclientlib/index.rst | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/jsclientlib/index.rst b/docs/jsclientlib/index.rst index 640c2be7..103e09ff 100644 --- a/docs/jsclientlib/index.rst +++ b/docs/jsclientlib/index.rst @@ -5,7 +5,8 @@ JavaScript Client Library ######################### The JS Client Library provides an interface to all of OctoPrint's API, including the SockJS based socket to send -push messages from the server to connected clients. It is available as packed web asset file at ``/static/webassets/packed_client.js`` or as individual +push messages from the server to connected clients. It is available as packed web +asset file at ``/static/webassets/packed_client.js`` or as individual component files at ``/static/js/app/client/.js`` relative to your OctoPrint instance's base URL (e.g. ``http://octopi.local/static/webassets/packed_client.js``). @@ -27,10 +28,18 @@ correct URL prefix: +Regardless of which way you use to include the library, you'll also need to make sure you included JQuery and lodash, +because the library depends on those to be available (as ``$`` and ``_``). You can embed those like this: + +.. code-block:: html + + + + Note that all components depend on the ``base`` component to be present, so if you are only including a select number of components, make sure to at the very least include that one to be able to utilize the client. From 1d0657a8ebf5ed7b22b2a3663ba13389dd500f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 30 Nov 2016 11:24:50 +0100 Subject: [PATCH 02/12] Preparing release of 1.2.18 --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d72572f4..4da6dfcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # OctoPrint Changelog -## 1.2.18rc1 (2016-11-22) +## 1.2.18 (2016-11-30) ### Improvements @@ -16,7 +16,11 @@ * [#1571](https://github.com/foosel/OctoPrint/issues/1571) - Fix parsing of port number from HTTP Host header for IPv6 addresses * Fix issue with settings restriction causing internal settings defaults to be changed. -([Commits](https://github.com/foosel/OctoPrint/compare/1.2.17...1.2.18)) +### More information + + * [Commits](https://github.com/foosel/OctoPrint/compare/1.2.17...1.2.18) + * Release Candidates: + * [1.2.18rc1](https://github.com/foosel/OctoPrint/releases/tag/1.2.18rc1) ## 1.2.17 (2016-11-08) From e8a4750379b935b7bc3f4a006de5fda7218b089c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 30 Nov 2016 14:33:36 +0100 Subject: [PATCH 03/12] Improved (manually to run) doc test for latest release selector --- .../softwareupdate/version_checks/github_release.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/octoprint/plugins/softwareupdate/version_checks/github_release.py b/src/octoprint/plugins/softwareupdate/version_checks/github_release.py index e950a0e6..773abcc4 100644 --- a/src/octoprint/plugins/softwareupdate/version_checks/github_release.py +++ b/src/octoprint/plugins/softwareupdate/version_checks/github_release.py @@ -28,6 +28,7 @@ def _filter_out_latest(releases, >>> release_1_2_16rc2 = dict(name="1.2.16rc2", tag_name="1.2.16rc2", html_url="some_url", published_at="2016-08-30T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/maintenance") >>> release_1_2_17rc1 = dict(name="1.2.17rc1", tag_name="1.2.17rc1", html_url="some_url", published_at="2016-08-31T12:00:00Z", prerelease=True, draft=True, target_commitish="rc/maintenance") >>> release_1_3_0rc1 = dict(name="1.3.0rc1", tag_name="1.3.0rc1", html_url="some_url", published_at="2016-12-12T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/devel") + >>> release_1_2_18 = dict(name="1.2.18", tag_name="1.2.18", html_url="some_url", published_at="2016-12-13T12:00:00Z", prerelease=False, draft=False, target_commitish="master") >>> release_1_4_0rc1 = dict(name="1.4.0rc1", tag_name="1.4.0rc1", html_url="some_url", published_at="2017-12-12T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/future") >>> releases = [release_1_2_15, release_1_2_16rc1, release_1_2_16rc2, release_1_2_17rc1, release_1_3_0rc1, release_1_4_0rc1] >>> _filter_out_latest(releases, include_prerelease=False, prerelease_channel=None) @@ -44,6 +45,14 @@ def _filter_out_latest(releases, (None, None, None) >>> _filter_out_latest([release_1_2_16rc1, release_1_2_16rc2]) (None, None, None) + >>> comparable_factory = _get_comparable_factory("python", force_base=True) + >>> sort_key = lambda release: comparable_factory(_get_sanitized_version(release["tag_name"])) + >>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=False, prerelease_channel=None, sort_key=sort_key) + ('1.2.18', '1.2.18', 'some_url') + >>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=True, prerelease_channel="rc/maintenance", sort_key=sort_key) + ('1.2.18', '1.2.18', 'some_url') + >>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=True, prerelease_channel="rc/devel", sort_key=sort_key) + ('1.3.0rc1', '1.3.0rc1', 'some_url') """ nothing = None, None, None From 1e84f2ee6e70810ebe112a91777bd60ff8bdea85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 1 Dec 2016 12:50:06 +0100 Subject: [PATCH 04/12] Fix handling of new structures in getOnlyChangedData Not testing if oldRoot was actually set and contained the key in question could cause issues if a completely new data structure was sent to the backend that was not mirrored by the default settings. Things like e.g. complex configuration items in a by default empty object. --- src/octoprint/static/js/app/helpers.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/octoprint/static/js/app/helpers.js b/src/octoprint/static/js/app/helpers.js index ef4a4d6f..98b6d631 100644 --- a/src/octoprint/static/js/app/helpers.js +++ b/src/octoprint/static/js/app/helpers.js @@ -777,9 +777,14 @@ function getOnlyChangedData(data, oldData) { var retval = {}; _.forOwn(root, function(value, key) { - var oldValue = oldRoot[key]; + var oldValue = undefined; + if (oldRoot != undefined && oldRoot.hasOwnProperty(key)) { + oldValue = oldRoot[key]; + } if (_.isPlainObject(value)) { - if (hasDataChanged(value, oldValue)) { + if (oldValue == undefined) { + retval[key] = value; + } else if (hasDataChanged(value, oldValue)) { retval[key] = f(value, oldValue); } } else { From 3d3c93c67dba0d73bd83cc0bf9260b71e6897505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 1 Dec 2016 13:35:54 +0100 Subject: [PATCH 05/12] Fix yet another settings caching issue That api endpoint really is a tough nut. ETag calculation now also takes full settings dump from settings plugins into account, because those might be providing custom keys through custom on_settings_load implementations, for which we will not notice any changes if we are only looking at the effective config. Of course, the more we put into that ETag calculation, the slower it will be and the less sense it will make. Somewhat annoying :/ --- src/octoprint/server/api/settings.py | 55 ++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py index 52ca7c32..9e3d337e 100644 --- a/src/octoprint/server/api/settings.py +++ b/src/octoprint/server/api/settings.py @@ -32,6 +32,13 @@ def _etag(lm=None): connection_options = printer.__class__.get_connection_options() plugins = sorted(octoprint.plugin.plugin_manager().enabled_plugins) + plugin_settings = _get_plugin_settings() + + from collections import OrderedDict + sorted_plugin_settings = OrderedDict() + for key in sorted(plugin_settings.keys()): + sorted_plugin_settings[key] = plugin_settings.get(key, dict()) + if current_user is not None and not current_user.is_anonymous(): roles = sorted(current_user.roles) else: @@ -39,11 +46,26 @@ def _etag(lm=None): import hashlib hash = hashlib.sha1() + + # last modified timestamp hash.update(str(lm)) + + # effective config from config.yaml + overlays hash.update(repr(settings().effective)) + + # might duplicate settings().effective, but plugins might also inject additional keys into the settings + # output that are not stored in config.yaml + hash.update(repr(sorted_plugin_settings)) + + # connection options are also part of the settings hash.update(repr(connection_options)) + + # if the list of plugins changes, the settings structure changes too hash.update(repr(plugins)) + + # and likewise if the role of the user changes hash.update(repr(roles)) + return hash.hexdigest() @api.route("/settings", methods=["GET"]) @@ -51,8 +73,6 @@ def _etag(lm=None): lastmodified_factory=_lastmodified, unless=lambda: request.values.get("force", "false") in valid_boolean_trues) def getSettings(): - logger = logging.getLogger(__name__) - s = settings() connectionOptions = printer.__class__.get_connection_options() @@ -180,32 +200,45 @@ def getSettings(): for name in gcode_scripts: data["scripts"]["gcode"][name] = s.loadScript("gcode", name, source=True) + plugin_settings = _get_plugin_settings() + if len(plugin_settings): + data["plugins"] = plugin_settings + + return jsonify(data) + + +def _get_plugin_settings(): + logger = logging.getLogger(__name__) + + data = dict() + def process_plugin_result(name, result): if result: try: jsonify(test=result) except: logger.exception("Error while jsonifying settings from plugin {}, please contact the plugin author about this".format(name)) - - if not "plugins" in data: - data["plugins"] = dict() - if "__enabled" in result: - del result["__enabled"] - data["plugins"][name] = result + raise + else: + if "__enabled" in result: + del result["__enabled"] + data[name] = result for plugin in octoprint.plugin.plugin_manager().get_implementations(octoprint.plugin.SettingsPlugin): try: result = plugin.on_settings_load() process_plugin_result(plugin._identifier, result) except TypeError: - logger.warn("Could not load settings for plugin {name} ({version}) since it called super(...)".format(name=plugin._plugin_name, version=plugin._plugin_version)) + logger.warn("Could not load settings for plugin {name} ({version}) since it called super(...)".format(name=plugin._plugin_name, + version=plugin._plugin_version)) logger.warn("in a way which has issues due to OctoPrint's dynamic reloading after plugin operations.") logger.warn("Please contact the plugin's author and ask to update the plugin to use a direct call like") logger.warn("octoprint.plugin.SettingsPlugin.on_settings_load(self) instead.") except: - logger.exception("Could not load settings for plugin {name} ({version})".format(version=plugin._plugin_version, name=plugin._plugin_name)) + logger.exception("Could not load settings for plugin {name} ({version})".format(version=plugin._plugin_version, + name=plugin._plugin_name)) - return jsonify(data) + return data @api.route("/settings", methods=["POST"]) From c00b3de40c0a2107f0f3d515612c5f84488b7974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Fri, 2 Dec 2016 11:06:01 +0100 Subject: [PATCH 06/12] Fix temperature history on server reconnect Two problems solved: * Make sure to only process temperature data once we have printer profile information on hand to evaluate the heater data. If we don't have that yet, create a client side backlog and process that once we have the necessary data on hand. * Do not use uninitialized history cutoff values - if our cutoff value hasn't yet synced (no settings response arrived yet), just don't perform the cutoff. --- .../static/js/app/viewmodels/temperature.js | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/temperature.js b/src/octoprint/static/js/app/viewmodels/temperature.js index 089cbfc6..9dbd4991 100644 --- a/src/octoprint/static/js/app/viewmodels/temperature.js +++ b/src/octoprint/static/js/app/viewmodels/temperature.js @@ -36,6 +36,10 @@ $(function() { self.heaterOptions = ko.observable({}); + self._printerProfileInitialized = false; + self._currentTemperatureDataBacklog = []; + self._historyTemperatureDataBacklog = []; + self._printerProfileUpdated = function() { var graphColors = ["red", "orange", "green", "brown", "purple"]; var heaterOptions = {}; @@ -81,6 +85,10 @@ $(function() { // write back self.heaterOptions(heaterOptions); self.tools(tools); + + if (!self._printerProfileInitialized) { + self._triggerBacklog(); + } self.updatePlot(); }; self.settingsViewModel.printerProfiles.currentProfileData.subscribe(function() { @@ -126,16 +134,36 @@ $(function() { self.fromCurrentData = function(data) { self._processStateData(data.state); - self._processTemperatureUpdateData(data.serverTime, data.temps); + if (!self._printerProfileInitialized) { + self._currentTemperatureDataBacklog.push(data); + } else { + self._processTemperatureUpdateData(data.serverTime, data.temps); + } self._processOffsetData(data.offsets); }; self.fromHistoryData = function(data) { self._processStateData(data.state); - self._processTemperatureHistoryData(data.serverTime, data.temps); + if (!self._printerProfileInitialized) { + self._historyTemperatureDataBacklog.push(data); + } else { + self._processTemperatureHistoryData(data.serverTime, data.temps); + } self._processOffsetData(data.offsets); }; + self._triggerBacklog = function() { + _.each(self._historyTemperatureDataBacklog, function(data) { + self._processTemperatureHistoryData(data.serverTime, data.temps); + }); + _.each(self._currentTemperatureDataBacklog, function(data) { + self._processTemperatureUpdateData(data.serverTime, data.temps); + }); + self._historyTemperatureDataBacklog = []; + self._currentTemperatureDataBacklog = []; + self._printerProfileInitialized = true; + }; + self._processStateData = function(data) { self.isErrorOrClosed(data.flags.closedOrError); self.isOperational(data.flags.operational); @@ -217,14 +245,17 @@ $(function() { }) }); - var filterOld = function(item) { - return item[0] >= clientTime - self.temperature_cutoff() * 60 * 1000; - }; + var temperature_cutoff = self.temperature_cutoff(); + if (temperature_cutoff != undefined) { + var filterOld = function(item) { + return item[0] >= clientTime - temperature_cutoff * 60 * 1000; + }; - _.each(_.keys(self.heaterOptions()), function(d) { - result[d].actual = _.filter(result[d].actual, filterOld); - result[d].target = _.filter(result[d].target, filterOld); - }); + _.each(_.keys(self.heaterOptions()), function(d) { + result[d].actual = _.filter(result[d].actual, filterOld); + result[d].target = _.filter(result[d].target, filterOld); + }); + } return result; }; From 229f3a2744491ec4c731204854859a5d725a0c20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Fri, 2 Dec 2016 12:09:13 +0100 Subject: [PATCH 07/12] Preparing release of 1.3.0rc3 --- CHANGELOG.md | 17 ++++++++++ .../dialogs/wizard/firstrun_end.jinja2 | 2 +- .../translations/de/LC_MESSAGES/messages.mo | Bin 89023 -> 89154 bytes .../translations/de/LC_MESSAGES/messages.po | 30 +++++++++++------- translations/de/LC_MESSAGES/messages.mo | Bin 89023 -> 89154 bytes translations/de/LC_MESSAGES/messages.po | 30 +++++++++++------- translations/messages.pot | 23 +++++++------- 7 files changed, 66 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7af4c3b..10eee064 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # OctoPrint Changelog +## 1.3.0rc3 (2016-12-02) + +### Improvements + + * Added note to JS client docs that it depends on JQuery and Lodash. + * Improved a (manual) doctest + +### Bug fixes + + * [#1599](https://github.com/foosel/OctoPrint/issues/1599) - Properly handle exceptions that arise within the update script during runtime. + * Fix a rare race condition in the command line helper and the update script that could cause the code to hang due to waiting on an event that would never be set. + * Fix issue with handling new settings substructures when they are compared to existing settings data in order to find the structural diff. + * Fix for `/api/settings` not being properly invalidated for plugin settings that do not have a representation in `config.yaml` but are only added at runtime (and hence are not captured by `config.effective`). + * Fix for the temperature graph not displaying the data history on site reload. + +([Commits](https://github.com/foosel/OctoPrint/compare/1.3.0rc2...1.3.0rc3)) + ## 1.3.0rc2 (2016-11-24) ### Features diff --git a/src/octoprint/templates/dialogs/wizard/firstrun_end.jinja2 b/src/octoprint/templates/dialogs/wizard/firstrun_end.jinja2 index 152c07fc..fa6a32d4 100644 --- a/src/octoprint/templates/dialogs/wizard/firstrun_end.jinja2 +++ b/src/octoprint/templates/dialogs/wizard/firstrun_end.jinja2 @@ -7,6 +7,6 @@

{% trans url='http://octoprint.org/support-octoprint/' %} If you enjoy OctoPrint, please consider supporting its ongoing - development. You can find find this link also in the "About" dialog. Thank you! + development, which is fully funded by users like you! You can also find this link in the "About" dialog. Thank you! {% endtrans %}

diff --git a/src/octoprint/translations/de/LC_MESSAGES/messages.mo b/src/octoprint/translations/de/LC_MESSAGES/messages.mo index 8d2d6dd90ae80e31ceec204f71f2a2e20766180d..59189bd654368d50af2a01ec1bd94907a8d33656 100644 GIT binary patch delta 12776 zcmYM)33yG{`p5BgL?l84NhOBJNrXrQF~wZOJQqz2MTLZQQlm;=unGncwgOJgqM0^E-iS{c)X>&=pk=|g=?Yh!}&1eU}L7>GBW_9qxk zy+j*hN?`)({uWpUyF2yNHpXLuX&6bvb2!zxuoTttI;?~{k^jtT{_({MZH+00ZY+*5 z7=U#go8fXM+#b*2<#xu@_A%zm4#sTZzT2IRVNGUr7mqRjp>U;(G23xpR~or7znd|$ zs8{T1%nDqK{AW7#Vl}uNxy>9yKRk)P_#s|;?(~_-S@Xs_kGcrTuX-;hFg3hH1w>c%<9K`=Wp6N|lUI~;*p(HPXgvrtL968&&H zDyjB4_2Z~5{K4@emZg3ZHJ%wn{Pke*K{j+{uo?B5sAKjDY6449EAmaXNmLRwPz9%6 z1Jz+;RK$`{6YYr+n1Q-~25Q2KQCqq`)nhMgra^mh05#A#)G@q>74bHfz`((F@5`g= zRZt74japel)WDrk&ksW7NDgXZ)13B&Se5!}4+S@cBUm19ph8w`i0!BhDw|_a?Ya0a zPDJf>$uzt2vgo2-5w+rQ)bVVN+Nw^dg}scL*ih7hJ^4;y7S^I+HR?QnkILGMsARl{ zRWLA}#KbzN0Y>6gd>wsp*igIT;pk0H%%^=ZR=}WP#NvOzlcIqiul={o4ElER7Yz*qTiKrZyf?+!U?@`bmeTM4j zFluj4p&$N?3e^>yfzOZ=WM+_=io|cIt*iEm-P4xH=ZhJNjc_xnzw4+8JU~tGAFRyy z#^+W0>WxB$eh4aCN1`I}CMwi(F&f`TP3!<_fFoD}i)PvTN@D=^aL4MXf$O2Rpb17` zGJ3jG$fuw^`P#8K?@fQ|T~QCFIQ0QeeJCn7h9fUA<3SC04i(AYa3R_FH}<4HKgXC! zcmdmk$c0@&_KWYML zs0mI$O>7p%<9is1Ut=6z$s_(suCk+yc>!Zkug0-h9Jit(u@47fA$G#*q;wn1Lv7Jc zY^>|3_l1kh)u{7|$ z^#j~@jPnf4;{P@H=*|BTxf1K!v;=Do6UDwk98o<7-$8 zr=hlV8}`Jb*c>Bf+VKV;<9SRv1%)CHwW2ps9nQl5T#O}fmD9cnHIW^Thj9q?v)B!r z&oX8b&P1K2z<2EyMxy#}=GX=Ob^iNPD8+?zRC0|%?_Qx+Iu}dfN2m@rqb76+^{PFI zrLZ{rG!erv78jxxvLAI?3Q_(3gxcE67{~bL9}3F)*g4i_j@_{~?SoMR&%>hlF$Uo} z)I@fpIxIv*>;h^luRA_MZH*sqA2*gkO}H+4l+CRuXaWOJ^%1C!W}*gOgc^7qx^WZg z{_n61UP4XeFC2|U=J5f8<4_T}hMMr7sQXQUeF2p%ApS~{ax`cKHBl32hsx%`SQ1}F zO=v7?Ws|Wk&P8>65NqT2sQZh~w-YXdI$hcfeok? z7Gf}-My=o)Y9hB#1ODT*2XmMesq(1yC{&~xq865fEwCG^-*-{{EW=*tSx2E9g=eVH zlzY#z}9rN-g1Nq8o?dG^~n$U>b%j<*PQ1!)UyKy6(How%5Q6>hmxLpE&g@ z%lY|I=YJ*zU3h@HG2(q);7y1+o_Fy}%=>`%JvLZjCsgZ0KIy2>$9O!9{qR0^#urwS z$hZu(1;090`N)2}55eIYU@C>ico(N&%~i(q#?6?F0jq6&5H_Q}6Zy~F=buk->BoG7 z#@1BM;&Cj*wQKAvdgNLbL;YRUghM~IpN^f;(~5>s6uRPe?1M$up^Ntc4p;lXY!XJV zw=a@745ht3YHz!sl4<}d3A6Ayd;_(Gi?9Z+MZFnMqfX1S^#s_LLeK{Lo$ooUM!g3X z#j&XC6Hx`-)PxIAr(hQb;4v(VXE7RYpaw3p*$$k5>aV?r zLNN-xFcABp8#7P?yoEYW@1Z}gM%}joJK`RsZ&PfG{n*}#MqY4X_gq#7S5Mf5uwqv(ujMx)?*f50=w?I0P5r7x)AT zhS~kO-GZE5d?Zt!k9DxdZhd^S{{tw5=>n4UW<6@g8&Nafj+)p()E=KkZN)XzO7EbO z^eHN7i|nxx^h4!B5c*&R)P0pv&qrff#y2&c8(Lx!>TR5QdsGLVQ3Iu*CN>DQWy4Tg zH4Zhv8;(=4BK5bh3$8{b^&O1GE_>~BqtT-dUw0a&qGmV?)n0&wgk%YJpgx$mj-InkM{Y8?3=LTVf!XrfQj699>cgV_#5J1ksITA`X%ge zl(WqZtNzWe+_2>_I>oxjxrgh=Q7d_R!X{_RclLCoqqZs+gK!e+*v&z0-8L+PhfrI1 z26f+!?})z|p3lbEE`v&ZdX&3Fs=N{Ca z-$doWZPY{_Idz|3?W?#1YAfBS3CExokbu0^jVF_fRZDJr4V0 zGpD{774mhcWcwV|@o7{<&tU}Katyj`-xswpiuM`4ScvM7NqplCes<;R} zaTNACH(bRM)ctPSNCcxoSs$xoTU>$J_#y`VVJDh~n&5N{z?rCi7NNH8BaFqh*ceY? zHw?T*{991yf6LBz8P=q}3VYy5oQKhW+K}%+CFefWmVEEjZ=weDxox*D2#f1ERH$pA zCe{$kVvPiO&*nx5Y9fiKemY`3^z@|=Ltz%y!ELAxub@JF3rC>;eS6%-;W6sdQTL_%WhXok zUDStRG-jeE@Ge%s6{s!Pjat|tBtjnZ1BFU7+(IQs$p<#O+o9T%Q61!>l64logga3y z33*8JF>*BOSjIlG6Hh=*pd-G4FJUPDggx*+M(F&ve{5GW3>EquEQMq7HJpwLUC}2t z$wE;psp41*wIz*F&$mYHZ5Px6dZHqg<2VM(Q};-n|HTwEvn{BOj-Xa{8Uyh%M&Mms zhQUt>FK)sCSmAGb49B8EzZ9F`e(a1-P!n$dkBv}I)N$>Lo^T2SDYU@XPy_BkCD*r3 z{RgLh8LQHM2Q|^KXZGuM6l#U3sEKEyA~6ni-$Mbm>%iOc(`aV-3`?OF%`W1!`r<^gZ#2&i@+}KI1~yAiL+!uqXA6rEL-xDPw0` z0`(p!iyEjZYM{EP2`8Z@+y}MNG}OXIqZTj$YvMfAR_@1YjBldKy391}h(34%6^ZY$ z1^$W(S(RYBXK|?W-4ye2H0u5vsGNC%Ip`bWGAWpkO5&rq3qzl?IdT#``l9iWf@WN? zoLx~(R1!5uT_1w=ahl_9Y(V`_9Ea6HUEW_XtUyg5Hq7OH!_~ve)VrdRF$*i;6x2dL z2y@xL|9?b-R=5r|kR4u?wq_QppB1S0$0w*P--PP# zOVsiH#qmaY&cAMaKtn||6>LY9P$8|2%Hroy_q9Robyw5`hMbj7>ScBxyCmD~fb%h5GzY zMIF<8R757Do?nPM4O<=epd#%#=rsHXwbK8hviK6}-2REP(bsJwumIK3`>26FMn!5X zD)a}O_HR+4K7-nVUs2E9!*%%7);(rTr0sYUYDS;q3Os`9AS=p-cnseaS-pXn3 zhT8i+sFmg6WSoKn(Z8z8`~MvqhT8M{sB<4$&Gy$871?C;XMFPt1x+B&x$q`xhKro~ z2dI^7MJ3-+RHQCqH@xT6TgSM}O6tj|$UHwPyB5p&S62V+ z+*m%&?sW}RXgi<=>Wf;*2&{@@P#rHvb+i$cD+f@?dJGG2U=91+9n{1gq5AWSx9yeV zJ$AsVG$>?As24>l>VY>73$uoiNB1^aHv!N z2z5L^^-xe~_M%=Sg{Xlqp*p^Unz4T^`>KsVO=vOdzK>DQZADG&J0u;{t34K zD0EYgckGJl*ON^_A)JcUa4{-7_oMdwH0r(ZCu&81IoJO|tt_~XP2LKq6~&^qq8aKv z(jHr4FVuwRqjF{?zNpXtT@>^V52|ZBtcSXx3F%+Lw%h3)w2VXM6Ea!HPIN< zLXuDsN6_E@K) zXF3fFC^W+G7B26vNK>!_^_$oc6I;5xe;=5HNz{+w4lL8kWj@Dm@LxDN$z`r!LThVS z8=G{dt;@`(JrXs}cC3lF+H(H8PzZ15@_zq+1xX6?HEw66724bO?>g8lj_+vqJ`t58 ztx%_=FDe&uP+R7~NGw1d+ij>%*FucPyQtIQ?!@_5b~owd^8TpQ5^GVPiAtW`s4PE- z8sG@3!*i%?zln3ubhcYI7qx)f*azEnv2Vr?P!s(M^?o^nTEIgOg`N~jceP)shTsV5 zi_wh%-Rw+jpx%gWoq7uDg*5^ba5k#r{iq0BK)qS-VQnnk-6m&C)T=rJwII(s6tu#n zsFkfmedXGUIyPrf=lH7QJxB9`&54ruE!X?uSghK^<^3!8`*@dnrJnYcT)LN?*b3As z*@{HiW6o31o9HrXB~Q^0YrbfYWdqa%yP;N=jBdpPH=Opz-geI4Q|Cg_WE#rGYK9F_D`}1ZObN3|N9lRqlTotBxJl{2iCyIJ0-+??!T&%c7+)=dUrbQM^Kav>v|5HrKOwUTscDG@o|C^-dxM)teD`d;LBTYN* K;K#f*?fwr118DL9 delta 12666 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 aYf(ChK(fM$Iv-E%>dGo!6YSd3>Hh%Cb36zD diff --git a/src/octoprint/translations/de/LC_MESSAGES/messages.po b/src/octoprint/translations/de/LC_MESSAGES/messages.po index 3b2ff9b5..997041ae 100644 --- a/src/octoprint/translations/de/LC_MESSAGES/messages.po +++ b/src/octoprint/translations/de/LC_MESSAGES/messages.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: OctoPrint\n" "Report-Msgid-Bugs-To: i18n@octoprint.org\n" -"POT-Creation-Date: 2016-11-24 12:53+0100\n" -"PO-Revision-Date: 2016-11-24 12:54+0100\n" +"POT-Creation-Date: 2016-12-02 12:37+0100\n" +"PO-Revision-Date: 2016-12-02 12:38+0100\n" "Last-Translator: Gina Häußge \n" "Language: de\n" "Language-Team: German (http://www.transifex.com/projects/p/octoprint/language/de/)\n" @@ -1570,12 +1570,12 @@ msgstr "Trennen" #: src/octoprint/static/js/app/viewmodels/files.js:589 #: src/octoprint/static/js/app/viewmodels/gcode.js:482 #: src/octoprint/static/js/app/viewmodels/printerstate.js:231 -#: src/octoprint/static/js/app/viewmodels/temperature.js:58 +#: src/octoprint/static/js/app/viewmodels/temperature.js:62 msgid "Tool" msgstr "Werkzeug" #: src/octoprint/static/js/app/viewmodels/control.js:68 -#: src/octoprint/static/js/app/viewmodels/temperature.js:69 +#: src/octoprint/static/js/app/viewmodels/temperature.js:73 msgid "Hotend" msgstr "Hotend" @@ -2014,25 +2014,25 @@ msgid "Error" msgstr "Fehler" #: src/octoprint/static/js/app/viewmodels/temperature.js:23 -#: src/octoprint/static/js/app/viewmodels/temperature.js:76 +#: src/octoprint/static/js/app/viewmodels/temperature.js:80 #: src/octoprint/templates/dialogs/settings/temperatures.jinja2:16 msgid "Bed" msgstr "Bett" -#: src/octoprint/static/js/app/viewmodels/temperature.js:115 +#: src/octoprint/static/js/app/viewmodels/temperature.js:123 msgid "just now" msgstr "gerade eben" -#: src/octoprint/static/js/app/viewmodels/temperature.js:117 +#: src/octoprint/static/js/app/viewmodels/temperature.js:125 msgid "min" msgstr "Min" -#: src/octoprint/static/js/app/viewmodels/temperature.js:261 +#: src/octoprint/static/js/app/viewmodels/temperature.js:292 #: src/octoprint/templates/tabs/temperature.jinja2:11 msgid "Actual" msgstr "Ist" -#: src/octoprint/static/js/app/viewmodels/temperature.js:266 +#: src/octoprint/static/js/app/viewmodels/temperature.js:297 #: src/octoprint/templates/tabs/temperature.jinja2:12 msgid "Target" msgstr "Soll" @@ -2100,7 +2100,7 @@ msgstr "Zeitrafferaufnahme wird gerendert" #: src/octoprint/static/js/app/viewmodels/timelapse.js:320 #, python-format msgid "Now rendering timelapse %(movie_prefix)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering." -msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird." +msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrag zu starten, so lange die Aufnahme noch gerendert wird." #: src/octoprint/static/js/app/viewmodels/timelapse.js:329 msgid "Cannot render timelapse" @@ -2848,8 +2848,8 @@ msgstr "Deine OctoPrint Installation ist jetzt eingerichtet und es kann losgehen msgid "" "\n" " If you enjoy OctoPrint, please consider supporting its ongoing\n" -" development. You can find find this link also in the \"About\" dialog. Thank you!\n" -msgstr "Falls dir OctoPrint gefällt, bitte ziehe es in Betracht, seine fortlaufende Entwicklung zu unterstützen. Du kannst diesen Link auch im \"Über\" Dialog finden. Danke!" +" development, which is fully funded by users like you! You can also find this link in the \"About\" dialog. Thank you!\n" +msgstr "Falls Dir OctoPrint gefällt, bitte denke darüber nach, seine fortlaufende Entwicklung zu unterstützen, welche vollständig durch User wie Dich finanziert wird! Du kannst diesen Link auch im \"Über\" Dialog finden. Vielen Dank!" #: src/octoprint/templates/dialogs/wizard/firstrun_start.jinja2:1 msgid "Hello!" @@ -3695,3 +3695,9 @@ msgstr "Zeitrafferaufnahme rendern" #~ msgid "Reboot" #~ msgstr "Neustart" + +#~ msgid "" +#~ "\n" +#~ " If you enjoy OctoPrint, please consider supporting its ongoing\n" +#~ " development. It's fully funded by users like you! You can also find this link in the \"About\" dialog. Thank you!\n" +#~ msgstr "Falls dir OctoPrint gefällt, bitte ziehe es in Betracht seine fortlaufende Entwicklung zu unterstützen. Diese Entwicklung wird vollständig durch User wie Dich finanziert! Du kannst diesen Link auch im \"Über\" Dialog finden. Danke!" diff --git a/translations/de/LC_MESSAGES/messages.mo b/translations/de/LC_MESSAGES/messages.mo index 8d2d6dd90ae80e31ceec204f71f2a2e20766180d..59189bd654368d50af2a01ec1bd94907a8d33656 100644 GIT binary patch delta 12776 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 K;K#f*?fwr118DL9 delta 12666 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 aYf(ChK(fM$Iv-E%>dGo!6YSd3>Hh%Cb36zD diff --git a/translations/de/LC_MESSAGES/messages.po b/translations/de/LC_MESSAGES/messages.po index 3b2ff9b5..997041ae 100644 --- a/translations/de/LC_MESSAGES/messages.po +++ b/translations/de/LC_MESSAGES/messages.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: OctoPrint\n" "Report-Msgid-Bugs-To: i18n@octoprint.org\n" -"POT-Creation-Date: 2016-11-24 12:53+0100\n" -"PO-Revision-Date: 2016-11-24 12:54+0100\n" +"POT-Creation-Date: 2016-12-02 12:37+0100\n" +"PO-Revision-Date: 2016-12-02 12:38+0100\n" "Last-Translator: Gina Häußge \n" "Language: de\n" "Language-Team: German (http://www.transifex.com/projects/p/octoprint/language/de/)\n" @@ -1570,12 +1570,12 @@ msgstr "Trennen" #: src/octoprint/static/js/app/viewmodels/files.js:589 #: src/octoprint/static/js/app/viewmodels/gcode.js:482 #: src/octoprint/static/js/app/viewmodels/printerstate.js:231 -#: src/octoprint/static/js/app/viewmodels/temperature.js:58 +#: src/octoprint/static/js/app/viewmodels/temperature.js:62 msgid "Tool" msgstr "Werkzeug" #: src/octoprint/static/js/app/viewmodels/control.js:68 -#: src/octoprint/static/js/app/viewmodels/temperature.js:69 +#: src/octoprint/static/js/app/viewmodels/temperature.js:73 msgid "Hotend" msgstr "Hotend" @@ -2014,25 +2014,25 @@ msgid "Error" msgstr "Fehler" #: src/octoprint/static/js/app/viewmodels/temperature.js:23 -#: src/octoprint/static/js/app/viewmodels/temperature.js:76 +#: src/octoprint/static/js/app/viewmodels/temperature.js:80 #: src/octoprint/templates/dialogs/settings/temperatures.jinja2:16 msgid "Bed" msgstr "Bett" -#: src/octoprint/static/js/app/viewmodels/temperature.js:115 +#: src/octoprint/static/js/app/viewmodels/temperature.js:123 msgid "just now" msgstr "gerade eben" -#: src/octoprint/static/js/app/viewmodels/temperature.js:117 +#: src/octoprint/static/js/app/viewmodels/temperature.js:125 msgid "min" msgstr "Min" -#: src/octoprint/static/js/app/viewmodels/temperature.js:261 +#: src/octoprint/static/js/app/viewmodels/temperature.js:292 #: src/octoprint/templates/tabs/temperature.jinja2:11 msgid "Actual" msgstr "Ist" -#: src/octoprint/static/js/app/viewmodels/temperature.js:266 +#: src/octoprint/static/js/app/viewmodels/temperature.js:297 #: src/octoprint/templates/tabs/temperature.jinja2:12 msgid "Target" msgstr "Soll" @@ -2100,7 +2100,7 @@ msgstr "Zeitrafferaufnahme wird gerendert" #: src/octoprint/static/js/app/viewmodels/timelapse.js:320 #, python-format msgid "Now rendering timelapse %(movie_prefix)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering." -msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird." +msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrag zu starten, so lange die Aufnahme noch gerendert wird." #: src/octoprint/static/js/app/viewmodels/timelapse.js:329 msgid "Cannot render timelapse" @@ -2848,8 +2848,8 @@ msgstr "Deine OctoPrint Installation ist jetzt eingerichtet und es kann losgehen msgid "" "\n" " If you enjoy OctoPrint, please consider supporting its ongoing\n" -" development. You can find find this link also in the \"About\" dialog. Thank you!\n" -msgstr "Falls dir OctoPrint gefällt, bitte ziehe es in Betracht, seine fortlaufende Entwicklung zu unterstützen. Du kannst diesen Link auch im \"Über\" Dialog finden. Danke!" +" development, which is fully funded by users like you! You can also find this link in the \"About\" dialog. Thank you!\n" +msgstr "Falls Dir OctoPrint gefällt, bitte denke darüber nach, seine fortlaufende Entwicklung zu unterstützen, welche vollständig durch User wie Dich finanziert wird! Du kannst diesen Link auch im \"Über\" Dialog finden. Vielen Dank!" #: src/octoprint/templates/dialogs/wizard/firstrun_start.jinja2:1 msgid "Hello!" @@ -3695,3 +3695,9 @@ msgstr "Zeitrafferaufnahme rendern" #~ msgid "Reboot" #~ msgstr "Neustart" + +#~ msgid "" +#~ "\n" +#~ " If you enjoy OctoPrint, please consider supporting its ongoing\n" +#~ " development. It's fully funded by users like you! You can also find this link in the \"About\" dialog. Thank you!\n" +#~ msgstr "Falls dir OctoPrint gefällt, bitte ziehe es in Betracht seine fortlaufende Entwicklung zu unterstützen. Diese Entwicklung wird vollständig durch User wie Dich finanziert! Du kannst diesen Link auch im \"Über\" Dialog finden. Danke!" diff --git a/translations/messages.pot b/translations/messages.pot index 7bb5398b..8f461007 100644 --- a/translations/messages.pot +++ b/translations/messages.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: OctoPrint 1.3.0rc1.post95.dev0+g69412d0\n" +"Project-Id-Version: OctoPrint 1.3.0.dev1608+gefb2f99.dirty\n" "Report-Msgid-Bugs-To: i18n@octoprint.org\n" -"POT-Creation-Date: 2016-11-24 12:53+0100\n" +"POT-Creation-Date: 2016-12-02 12:37+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1675,12 +1675,12 @@ msgstr "" #: src/octoprint/static/js/app/viewmodels/files.js:589 #: src/octoprint/static/js/app/viewmodels/gcode.js:482 #: src/octoprint/static/js/app/viewmodels/printerstate.js:231 -#: src/octoprint/static/js/app/viewmodels/temperature.js:58 +#: src/octoprint/static/js/app/viewmodels/temperature.js:62 msgid "Tool" msgstr "" #: src/octoprint/static/js/app/viewmodels/control.js:68 -#: src/octoprint/static/js/app/viewmodels/temperature.js:69 +#: src/octoprint/static/js/app/viewmodels/temperature.js:73 msgid "Hotend" msgstr "" @@ -2145,25 +2145,25 @@ msgid "Error" msgstr "" #: src/octoprint/static/js/app/viewmodels/temperature.js:23 -#: src/octoprint/static/js/app/viewmodels/temperature.js:76 +#: src/octoprint/static/js/app/viewmodels/temperature.js:80 #: src/octoprint/templates/dialogs/settings/temperatures.jinja2:16 msgid "Bed" msgstr "" -#: src/octoprint/static/js/app/viewmodels/temperature.js:115 +#: src/octoprint/static/js/app/viewmodels/temperature.js:123 msgid "just now" msgstr "" -#: src/octoprint/static/js/app/viewmodels/temperature.js:117 +#: src/octoprint/static/js/app/viewmodels/temperature.js:125 msgid "min" msgstr "" -#: src/octoprint/static/js/app/viewmodels/temperature.js:261 +#: src/octoprint/static/js/app/viewmodels/temperature.js:292 #: src/octoprint/templates/tabs/temperature.jinja2:11 msgid "Actual" msgstr "" -#: src/octoprint/static/js/app/viewmodels/temperature.js:266 +#: src/octoprint/static/js/app/viewmodels/temperature.js:297 #: src/octoprint/templates/tabs/temperature.jinja2:12 msgid "Target" msgstr "" @@ -3081,8 +3081,9 @@ msgid "" "\n" " If you enjoy OctoPrint, please consider supporting its ongoing\n" -" development. You can find find this link also in the \"About\" " -"dialog. Thank you!\n" +" development, which is fully funded by users like you! You can " +"also find this link in the \"About\" dialog. Thank you!" +"\n" msgstr "" #: src/octoprint/templates/dialogs/wizard/firstrun_start.jinja2:1 From 0de6718af31afdc9dcd10902043cd01cdfe1babc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 7 Dec 2016 10:53:48 +0100 Subject: [PATCH 08/12] Fix filesize not being defined --- src/octoprint/static/js/app/client/base.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/octoprint/static/js/app/client/base.js b/src/octoprint/static/js/app/client/base.js index c0ea5292..dccfa67f 100644 --- a/src/octoprint/static/js/app/client/base.js +++ b/src/octoprint/static/js/app/client/base.js @@ -168,6 +168,7 @@ } filename = filename || fileData.name; + var filesize = fileData.size; var form = new FormData(); form.append("file", fileData, filename); From 8d2681ae3fdd126aa34e105ba61aaa82f9c158c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 7 Dec 2016 10:54:20 +0100 Subject: [PATCH 09/12] Make OctoPrint.upload's url behave like others So far only was interpreted relatively to the defined base url. We want this to behave like other requests from the client lib though, so now it does. --- src/octoprint/static/js/app/client/base.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/octoprint/static/js/app/client/base.js b/src/octoprint/static/js/app/client/base.js index dccfa67f..5d541ec4 100644 --- a/src/octoprint/static/js/app/client/base.js +++ b/src/octoprint/static/js/app/client/base.js @@ -222,7 +222,12 @@ var headers = OctoPrint.getRequestHeaders(); - request.open("POST", OctoPrint.getBaseUrl() + url); + var urlToCall = url; + if (!_.startsWith(url, "http://") && !_.startsWith(url, "https://")) { + urlToCall = OctoPrint.getBaseUrl() + url; + } + + request.open("POST", urlToCall); _.each(headers, function(value, key) { request.setRequestHeader(key, value); }); From 558a8957f9f6823b8e8e6fc583e829c4f4dcebc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 7 Dec 2016 10:59:16 +0100 Subject: [PATCH 10/12] Fix docs for OctoPrint.upload method --- docs/jsclientlib/base.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/jsclientlib/base.rst b/docs/jsclientlib/base.rst index 65a56340..9b1184e6 100644 --- a/docs/jsclientlib/base.rst +++ b/docs/jsclientlib/base.rst @@ -255,14 +255,18 @@ **Example:** - Uploading a file from a file input element, updating a label with the current upload progress. + Uploading a file to ``some/path`` on the blueprint of plugin ``myplugin``, from a file input element, + updating a label with the current upload progress. .. code-block:: javascript var fileInput = $("#my-file-input"); var progressOutput = $("#progress-output"); - OctoPrint.upload("/plugins/myplugin/some/path", fileInput, "myfilename.dat", {"somekey": "somevalue"}) + OctoPrint.upload(OctoPrint.getBlueprintUrl("myplugin") + "some/path", + fileInput, + "myfilename.dat", + {"somekey": "somevalue"}) .progress(function(data) { if (data.total) { var percentage = Math.round(data.loaded * 100 / data.total); @@ -277,7 +281,7 @@ progressOutput.text("Uploaded!"); }); - :param string url: The URL to ``POST`` the upload to + :param string url: URL to which to POST the upload, relative to base url or absolute :param object file: The file to object, see description for details :param string filename: An optional file name to use for the upload :param object additional: An optional object of additional key/value pairs to set on the uploaded form data From 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 8 Dec 2016 09:25:13 +0100 Subject: [PATCH 11/12] Preparing release of 1.3.0 --- CHANGELOG.md | 146 ++++++++++++++++++-------------------------------- SUPPORTERS.md | 7 ++- 2 files changed, 56 insertions(+), 97 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10eee064..3587919c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,85 +1,9 @@ # OctoPrint Changelog -## 1.3.0rc3 (2016-12-02) - -### Improvements - - * Added note to JS client docs that it depends on JQuery and Lodash. - * Improved a (manual) doctest - -### Bug fixes - - * [#1599](https://github.com/foosel/OctoPrint/issues/1599) - Properly handle exceptions that arise within the update script during runtime. - * Fix a rare race condition in the command line helper and the update script that could cause the code to hang due to waiting on an event that would never be set. - * Fix issue with handling new settings substructures when they are compared to existing settings data in order to find the structural diff. - * Fix for `/api/settings` not being properly invalidated for plugin settings that do not have a representation in `config.yaml` but are only added at runtime (and hence are not captured by `config.effective`). - * Fix for the temperature graph not displaying the data history on site reload. - -([Commits](https://github.com/foosel/OctoPrint/compare/1.3.0rc2...1.3.0rc3)) - -## 1.3.0rc2 (2016-11-24) +## 1.3.0 (2016-12-08) ### Features - * OctoPrint will now track the current print head position on pause and cancel and provide it as new template variables ``pause_position``/``cancel_position`` for the relevant GCODE scripts. This will allow more intelligent pause codes that park the print head at a rest position during pause and move it back to the exact position it was before the pause on resume ([Example](https://gist.github.com/foosel/1c09e269b1c0bb7a471c20eef50c8d3e)). Note that this is NOT enabled by default and for now will necessitate adjusting the pause and resume GCODE scripts yourself since position tracking with multiple extruders or when printing from SD is currently not fool proof thanks to firmware limitations regarding reliable tracking of the various ``E`` values and the currently selected tool ``T``. In order to fully implement this feature, the following improvements were also done: - * New ``PositionUpdated`` event when OctoPrint receives a response to an ``M114`` position query. - * Extended ``PrintPaused`` and ``PrintCancelled`` events with position data from ``M114`` position query on print interruption/end. - * Added (optional) firmware auto detection. If enabled (which it is by default), OctoPrint will now send an ``M115`` to the printer on initial connection in order to try to figure out what kind of firmware it is. For FIRMWARE_NAME values containing "repetier" (case insensitive), all Repetier-specific flags will be set on the comm layer. For FIRMWARE_NAME values containing "reprapfirmware" (also case insensitive), all RepRapFirmware-specific flags will be set on the comm layer. For now no other handling will be performed. - * Added safe mode flag ``--safe`` and config setting ``startOnceInSafeMode`` that disables all third party plugins when active. The config setting will automatically be removed from `config.yaml` after the server has started through successfully. - * Added ``octoprint config`` CLI that allows easier manipulation of config.yaml entries from the command line. Example: ``octoprint config set --bool server.startOnceInSafeMode true`` - -### Improvements - - * [#1422](https://github.com/foosel/OctoPrint/issues/1422) - Added option for post roll for timed timelapse to duplicate last frame instead of capturing new frames. That makes for a faster render at the cost of a still frame at the end of the rendered video. See also [#1553](https://github.com/foosel/OctoPrint/pull/1553). - * [#1551](https://github.com/foosel/OctoPrint/issues/1551) - Allow to define a custom bounding box for valid printer head movements in the printer profile, to make print dimension check more flexible. - * [#1583](https://github.com/foosel/OctoPrint/pull/1583) - Strip invalid `pip` arguments from `pip uninstall` commands, if provided by the user as additional pip arguments. - * [#1593](https://github.com/foosel/OctoPrint/issues/1593) - Automatically migrate old manual system commands for restarting OctoPrint and rebooting or shutting down the server to the new system wide configuration settings. Make a backup copy of the old `config.yaml` before doing so in case a manual rollback is required. - * Support ``M114`` responses without whitespace between coordinates (protocol consistency - who needs it?). - * Don't focus files in the file list after deleting a file - made the list too jumpy. - * Better error resilience against errors in UI components. - * `M600` is now marked as a long running command by default. - * Plugin Manager: Allow closing of all notifications and close them automatically on detected server disconnect. No need to keep a "Restart needed" message around if a restart is in progress. - * Software Update: "busy" spinner on check buttons while already checking for updates. - * Software Update: Prevent update notification when wizard is open. - * Plugin Manager / Software Update: The "There's a new version of pip" message during plugin installs and software updates is no longer displayed like an error. - * Plugin Manager / Software Update: The "busy" dialog can no longer be closed accidentally. - -### Bug fixes - - * [#1148](https://github.com/foosel/OctoPrint/issues/1148) - Fixed retraction z hop setting for Z-triggered timelapses. Was not correctly propagated to the backend and hence not taking effect. - * [#1567](https://github.com/foosel/OctoPrint/issues/1567) - Invalidate ``/api/settings`` cache on change of the user's login state (include user roles into ETag calculation). - * [#1586](https://github.com/foosel/OctoPrint/issues/1586) - Fixed incompatibility of update script and command line helper with non-ASCII output from called commands. - * [#1588](https://github.com/foosel/OctoPrint/issues/1588) - Fixed feedback controls again. - * Invalidate ``/api/settings`` cache on change of the currently enabled plugins (by including plugin names into ETag calculation) and/or on change of the current effective config. - * Invalidate ``/api/timelapse`` cache on change of the current timelapse configuration. - * Fixed an issue causing the version number not to be properly extracted from ``sdist`` tarballs generated under Windows. - * Get rid of double scroll bar in printer profile editor. - * Fixed tracking of current byte position in file being streamed from disk. Turns out that ``self._handle.tell`` lied to us thanks to line buffering. - * Fixed select & print not working anymore for SD files thanks to a timing issue. - * Fixed ``PrintFailed`` event payload (was still missing new folder relevant data). - * Fixed premature parse stop on ``M114`` and ``M115`` responses with ``ok``-prefix. - * Make sure `?l10n` request parameter gets also propagated to API calls as `X-Locale` header in case of locale sensitive API responses. - * Fix language mixture due to cached template configs including localized strings; cache per locale. - * Only insert divider in system menu after core commands if there are custom commands. - * Fix update of webcam stream URL not being applied due to caching. - * Fixed a rare race condition causing the new "The settings changed, reload?" popup to show up even when the settings change originated in the same client instance. - * Fixed a bunch of missing translations. - * Pinned Tornado version to 4.0.2. Former version requirement was able to pull in a beta version causing issues with websockets due to a bug in `permessage-deflate` handling. The Tornado requirement needs an update, but we'll leave it at 4.0.2 for 1.3.0 since we'll need to do some migration work for compatibility with anything newer. Potentially related to [#1523](https://github.com/foosel/OctoPrint/issues/1523). - -### Changes from `maintenance` not yet released as part of a stable release - -#### Bug fixes - - * [#1567](https://github.com/foosel/OctoPrint/issues/1567) - Fix issue with restricted settings getting parsed to the wrong data structure in the frontend if loaded anonymously first. - * [#1571](https://github.com/foosel/OctoPrint/issues/1571) - Fix parsing of port number from HTTP Host header for IPv6 addresses - * Fix issue with settings restriction causing internal settings defaults to be changed. - -([Commits](https://github.com/foosel/OctoPrint/compare/1.3.0rc1...1.3.0rc2)) - -## 1.3.0rc1 (2016-10-19) - -### New Features - * You can now create folders in the file list, upload files into said folders and thus better manage your projects' files. * New wizard dialog for system setups that can also be extended by plugins. Replaces the first run dialog for setting up access control and can also be triggered in other cases than only the first run, e.g. if plugins necessitate user input to function properly. Added wizards to help configuring the following components in OctoPrint on first run: access control, webcam URLs & ffmpeg path, server commands (restart, shutdown, reboot), printer profile. Also extended the bundled Cura plugin to add a wizard for its first setup to adjust path and import a slicing profile, and the bundled Software Update plugin to ask the user for details regarding the OctoPrint update configuration. Also see below. * New command line interface (CLI). Offers the same functionality as the old one plus: @@ -89,17 +13,27 @@ * New features within the plugin system: * Plugins may now give hints in which order various hooks or mixin methods should be called by optionally providing an integer value that will be used for sorting the callbacks prior to execution. * Plugins may now define configuration overlays to be applied on top of the default configuration but before ``config.yaml``. - * New mixin ``UiPlugin` for plugins that want to provide an alternative web interface delivered by the server. + * New mixin `UiPlugin` for plugins that want to provide an alternative web interface delivered by the server. * New mixin ``WizardPlugin`` for plugins that want to provide wizard components to OctoPrint's new wizard dialog. * New hook ``octoprint.cli.commands`` for registering a command with the new OctoPrint CLI * New hook ``octoprint.comm.protocol.gcode.received`` for receiving messages from the printer * New hook ``octoprint.printer.factory`` for providing a custom factory to contruct the global ``PrinterInterface`` implementation. * New ``TemplatePlugin`` template type: ``wizard`` * New Javascript client library for utilizing the server's API, can be reused by `UiPlugin`s. + * OctoPrint will now track the current print head position on pause and cancel and provide it as new template variables ``pause_position``/``cancel_position`` for the relevant GCODE scripts. This will allow more intelligent pause codes that park the print head at a rest position during pause and move it back to the exact position it was before the pause on resume ([Example](https://gist.github.com/foosel/1c09e269b1c0bb7a471c20eef50c8d3e)). Note that this is NOT enabled by default and for now will necessitate adjusting the pause and resume GCODE scripts yourself since position tracking with multiple extruders or when printing from SD is currently not fool proof thanks to firmware limitations regarding reliable tracking of the various ``E`` values and the currently selected tool ``T``. In order to fully implement this feature, the following improvements were also done: + * New ``PositionUpdated`` event when OctoPrint receives a response to an ``M114`` position query. + * Extended ``PrintPaused`` and ``PrintCancelled`` events with position data from ``M114`` position query on print interruption/end. + * Added (optional) firmware auto detection. If enabled (which it is by default), OctoPrint will now send an ``M115`` to the printer on initial connection in order to try to figure out what kind of firmware it is. For FIRMWARE_NAME values containing "repetier" (case insensitive), all Repetier-specific flags will be set on the comm layer. For FIRMWARE_NAME values containing "reprapfirmware" (also case insensitive), all RepRapFirmware-specific flags will be set on the comm layer. For now no other handling will be performed. + * Added safe mode flag ``--safe`` and config setting ``startOnceInSafeMode`` that disables all third party plugins when active. The config setting will automatically be removed from `config.yaml` after the server has started through successfully. + * Added ``octoprint config`` CLI that allows easier manipulation of config.yaml entries from the command line. Example: ``octoprint config set --bool server.startOnceInSafeMode true`` ### Improvements * [#1048](https://github.com/foosel/OctoPrint/issues/1048) - Added "Last print time" to extended file information (see also [#1522](https://github.com/foosel/OctoPrint/pull/1522)) + * [#1422](https://github.com/foosel/OctoPrint/issues/1422) - Added option for post roll for timed timelapse to duplicate last frame instead of capturing new frames. That makes for a faster render at the cost of a still frame at the end of the rendered video. See also [#1553](https://github.com/foosel/OctoPrint/pull/1553). + * [#1551](https://github.com/foosel/OctoPrint/issues/1551) - Allow to define a custom bounding box for valid printer head movements in the printer profile, to make print dimension check more flexible. + * [#1583](https://github.com/foosel/OctoPrint/pull/1583) - Strip invalid `pip` arguments from `pip uninstall` commands, if provided by the user as additional pip arguments. + * [#1593](https://github.com/foosel/OctoPrint/issues/1593) - Automatically migrate old manual system commands for restarting OctoPrint and rebooting or shutting down the server to the new system wide configuration settings. Make a backup copy of the old `config.yaml` before doing so in case a manual rollback is required. * New central configuration option for commands to restart OctoPrint and to restart and shut down the system OctoPrint is running on. This allows plugins (like the Software Update Plugin or the Plugin Manager) and core functionality to perform these common administrative tasks without the user needing to define everything redundantly. * `pip` helper now adjusts `pip install` parameters corresponding to detected `pip` version: * Removes `--process-dependency-links` when it's not needed @@ -129,6 +63,9 @@ * Renamed ``GcodeFilesViewModel`` to ``FilesViewModel`` - plugin authors should accordingly update their dependencies from ``gcodeFilesViewModel`` to ``filesViewModel``. Using the old name still works, but will log a warning and stop working with 1.4.x. * Make sure ``volume.depth`` for circular beds is forced to ``volume.width`` in printer profiles * Support for `M116` + * Support ``M114`` responses without whitespace between coordinates (protocol consistency - who needs it?). + * `M600` is now marked as a long running command by default. + * Don't focus files in the file list after deleting a file - made the list too jumpy. * Cura plugin: "Test" button to check if path to cura engine is valid. * Cura plugin: Wizard component for configuring the path to the CuraEngine binary and for importing the first slicing profile * GCODE viewer: Added Layer Up/Down buttons (see also [#1306] (https://github.com/foosel/OctoPrint/pull/1306)) @@ -141,44 +78,67 @@ * Plugin Manager: Track managable vs not managable plugins * Plugin Manager: Allow hiding plugins from Plugin Manager via ``config.yaml``. * Plugin Manager: Limit upload dialog for plugin archives to .zip, .tar.gz, .tgz and .tar extensions. + * Plugin Manager: Allow closing of all notifications and close them automatically on detected server disconnect. No need to keep a "Restart needed" message around if a restart is in progress. * Software Update plugin: More verbose output for logged in administrators. Will now log the update commands and their output similar to the Plugin Manager install and uninstall dialog. * Software Update plugin: CLI for checking for and applying updates * Software Update plugin: Wizard component for configuring OctoPrint's update mechanism + * Software Update plugin: "busy" spinner on check buttons while already checking for updates. + * Software Update plugin: Prevent update notification when wizard is open. + * Plugin Manager / Software Update plugin: The "There's a new version of pip" message during plugin installs and software updates is no longer displayed like an error. + * Plugin Manager / Software Update plugin: The "busy" dialog can no longer be closed accidentally. * Timelapse: Better (& earlier) reporting to the user when something's up with the snapshot URL causing issues with capturing timelapse frames and hence making it impossible to render a timelapse movie on print completion. - * Virtual printer: Usage screen for the ``!!DEBUG`` commands on ``!!DEBUG", ``!!DEBUG:help`` or ``!!DEBUG:?`` + * Virtual printer: Usage screen for the ``!!DEBUG`` commands on ``!!DEBUG``, ``!!DEBUG:help`` or ``!!DEBUG:?`` * Updated frontend dependencies (possibly relevant for plugin authors): * Bootstrap to 2.3.2 * JQuery to 2.2.4 * Lodash to 3.10.1 * SockJS to 1.1.1 + * Better error resilience against errors in UI components. * Various improvements in the GCODE interpreter which performs the GCODE analysis * Various adjustments towards Python 3 compatibility (still a work in progress though, see also [#1411](https://github.com/foosel/OctoPrint/pull/1411), [#1412](https://github.com/foosel/OctoPrint/pull/1412), [#1413](https://github.com/foosel/OctoPrint/pull/1413), [#1414](https://github.com/foosel/OctoPrint/pull/1414)) * Various code refactorings * Various small UI improvements * Various documentation improvements -### Bug Fixes +### Bug fixes * [#1047](https://github.com/foosel/OctoPrint/issues/1047) - Fixed 90 degree webcam rotation for iOS Safari. + * [#1148](https://github.com/foosel/OctoPrint/issues/1148) - Fixed retraction z hop setting for Z-triggered timelapses. Was not correctly propagated to the backend and hence not taking effect. + * [#1567](https://github.com/foosel/OctoPrint/issues/1567) - Invalidate ``/api/settings`` cache on change of the user's login state (include user roles into ETag calculation). + * [#1586](https://github.com/foosel/OctoPrint/issues/1586) - Fixed incompatibility of update script and command line helper with non-ASCII output from called commands. + * [#1588](https://github.com/foosel/OctoPrint/issues/1588) - Fixed feedback controls again. + * [#1599](https://github.com/foosel/OctoPrint/issues/1599) - Properly handle exceptions that arise within the update script during runtime. * It's not possible anymore to select files that are not machinecode files (e.g. GCODE) for printing on the file API. * Changes to a user's personal settings via the UI now propagate across sessions. * Improved compatibility of webcam rotation CSS across newer browsers (see also [#1436](https://github.com/foosel/OctoPrint/pull/1436)) * Fix for system menu not getting properly reloaded after entries changed + * Invalidate ``/api/settings`` cache on change of the currently enabled plugins (by including plugin names into ETag calculation) and/or on change of the current effective config. + * Fix for `/api/settings` not being properly invalidated for plugin settings that do not have a representation in `config.yaml` but are only added at runtime (and hence are not captured by `config.effective`). + * Invalidate ``/api/timelapse`` cache on change of the current timelapse configuration. + * Fixed an issue causing the version number not to be properly extracted from ``sdist`` tarballs generated under Windows. + * Get rid of double scroll bar in printer profile editor. + * Fixed tracking of current byte position in file being streamed from disk. Turns out that ``self._handle.tell`` lied to us thanks to line buffering. + * Fixed select & print not working anymore for SD files thanks to a timing issue. + * Fixed ``PrintFailed`` event payload (was still missing new folder relevant data). + * Fixed premature parse stop on ``M114`` and ``M115`` responses with ``ok``-prefix. + * Make sure `?l10n` request parameter gets also propagated to API calls as `X-Locale` header in case of locale sensitive API responses. + * Fix language mixture due to cached template configs including localized strings; cache per locale. + * Only insert divider in system menu after core commands if there are custom commands. + * Fix update of webcam stream URL not being applied due to caching. + * Fixed a rare race condition causing the new "The settings changed, reload?" popup to show up even when the settings change originated in the same client instance. + * Fixed a bunch of missing translations. + * Pinned Tornado version to 4.0.2. Former version requirement was able to pull in a beta version causing issues with websockets due to a bug in `permessage-deflate` handling. The Tornado requirement needs an update, but we'll leave it at 4.0.2 for 1.3.0 since we'll need to do some migration work for compatibility with anything newer. Potentially related to [#1523](https://github.com/foosel/OctoPrint/issues/1523). + * Fix a rare race condition in the command line helper and the update script that could cause the code to hang due to waiting on an event that would never be set. + * Fix issue with handling new settings substructures when they are compared to existing settings data in order to find the structural diff. + * Fix for the temperature graph not displaying the data history on site reload. -### Changes from `maintenance` not yet released as part of a stable release +### More information -#### Improvements - - * Allow arbitrary frame rates for creating timelapses. Before, the entered fps value was also directly used as frame rate for the actual video, which could cause problems with any frame rates not specified in the MPEG2 standard. Now OctoPrint will use a standard frame rate for the rendered video and render the timelapse stills into the finished movie with the configured frame rate. - * Limit Cura profile importer to `.ini` files and clarified the supported versions - * Add support for the `R` parameter for `M109` and `M190` - -#### Bug fixes - - * [#1541](https://github.com/foosel/OctoPrint/issues/1541) - Fix selecting the printer profile to use by default - * [#1543](https://github.com/foosel/OctoPrint/issues/1543) - Fix target temperature propagation from communication layer - -([Commits](https://github.com/foosel/OctoPrint/compare/1.2.16...1.3.0rc1)) + * [Commits](https://github.com/foosel/OctoPrint/compare/1.2.18...1.3.0) + * Release Candidates: + * [1.3.0rc1](https://github.com/foosel/OctoPrint/releases/tag/1.3.0rc1) + * [1.3.0rc2](https://github.com/foosel/OctoPrint/releases/tag/1.3.0rc2) + * [1.3.0rc3](https://github.com/foosel/OctoPrint/releases/tag/1.3.0rc3) ## 1.2.18 (2016-11-30) diff --git a/SUPPORTERS.md b/SUPPORTERS.md index 15b831e0..f4160f8f 100644 --- a/SUPPORTERS.md +++ b/SUPPORTERS.md @@ -14,7 +14,6 @@ thanks to everyone who contributed! * Bart Zudell * Boris Hussein * Brad Jackson - * Brad Mooneyham * Brent Fiegle * Brian E. Tyler * Charles Mitchell @@ -34,6 +33,7 @@ thanks to everyone who contributed! * Gary N McKinney * George Robles * J. Eckert + * Jamie van Dyke * Jason Galarneau * Josh Daniels * Joshua David Gregory @@ -41,13 +41,12 @@ thanks to everyone who contributed! * Kale Stedman * Kazuhiro Ogura * Lamin Kivelä - * M Khorakiwala * Makespace Madrid + * Marcus Ackermann * Mark Qvist * Mark Walker * Masayoshi Mitsui * Michael Aumock - * Michael McDargh Sr * Miles Flavel * Noe Ruiz * Patrick McGinnis @@ -70,4 +69,4 @@ thanks to everyone who contributed! * Thomas Hatley * Trent Shumay -and 989 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)! +and 972 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)! From 3caac586fcaba1ad55496a2db6cff649795eae84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 8 Dec 2016 14:04:28 +0100 Subject: [PATCH 12/12] Upped version numbers for branches --- .versioneer-lookup | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.versioneer-lookup b/.versioneer-lookup index d424da4d..1042df93 100644 --- a/.versioneer-lookup +++ b/.versioneer-lookup @@ -16,11 +16,11 @@ prerelease HEAD \(detached.* -# maintenance is currently the branch for preparation of maintenance release 1.2.17 +# maintenance is currently the branch for preparation of maintenance release 1.3.1 # so are any fix/... and improve/... branches -maintenance 1.2.17 354042b84d488db38ac1917bb69bd164f4e7f750 pep440-dev -fix/.* 1.2.17 354042b84d488db38ac1917bb69bd164f4e7f750 pep440-dev -improve/.* 1.2.17 354042b84d488db38ac1917bb69bd164f4e7f750 pep440-dev +maintenance 1.3.1 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev +fix/.* 1.3.1 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev +improve/.* 1.3.1 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev -# every other branch is a development branch and thus gets resolved to 1.3.0-dev for now -.* 1.3.0 198d3450d94be1a2 pep440-dev +# every other branch is a development branch and thus gets resolved to 1.4.0-dev for now +.* 1.4.0 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev