Releases: manatlan/htag
v0.83.0 : Introduce big changes for the future ;-)
The "runners part" will completly be redone, in future release (>0.90).
Here it's just a test version ... for test purposes.
spoil : all runners (for desktop/android) would be removed : there will be only one, which would provide all features in pure python (no dependancies!) ... there will be only 3 ("pyscript", "pywebview" and the new one (which will work for android, desktop and/or chrome app mode)) : it will be a lot simpler ... to maintain, to explain and to use.
Don't use the new runner .... its name will change soon.
All current runners will be deprecated from 0.90.0, and removed in 1.0.0 !
v0.82.0
Just fixes
- "fix STRICT_MODE control in render" : now it controls only Tag instances in children (no others things (like strings, etc ...))
- "fix: call js is not possible %s" : the error message is better (but a whole pass should be done in all error messages, one day)
v0.81.0 : @expose is working
fix previous, @expose
works at 100%
v0.80.0 : @expose is coming (but broken currently)
2 new features :
- the
Tag.STRICT_MODE
, when True : will raise anHtagException
when dynamics tags (which use owndef render(self):
) change its first childs (it's a parano behaviour, to avoid creating tags which renders themselves at each interactions) (TODO: need doc) @htag.expose
(BROCKEN : will be fixed soon): will auto declare js-callback on python method (whose are decorated) (TODO: need doc)
Great simplification to do things like that (call from js side)
from htag import Tag, expose
class App(Tag.body):
def init(self):
self <= Tag.button("hello",_onclick="self.action(42)" )
@expose
def action(self,val):
assert val == 42
BTW : this example ^^ is dumb, it has no interest IRL (prefer to call python directly with a self.bind
, for example)
Full Changelog: v0.72.0...v0.80.0
v0.72.0 : handle the null exchange as COM error
now, it call "window.error(null)" on js side, when no response from the server side (when process is down)
Full Changelog: v0.70.0...v0.72.0
v0.70.0 : tag.state for all
Big changes ;-)
Tag.state was available only in the main/managed tag instance of the runner, and was saved as a subdict in Tag.session. In all others tag instance, it was None.
Now, Tag.state is available in all Tag instances (as a dict). And only the tag.state of the main/managed tag instance of the runner is saved as a subdict in Tag.session.
Now, it's the better place to store inner properties of a tag instance. BTW, objects stored in the the main/managed tag instance states, needs to be json/serializable (in others : no).
- So the state in the managed/main instance is the perfect place to store persistent things (json serializable)
- So the state in others instances is the perfect place to store inner properties (any python object)
Full Changelog: v0.66.0...v0.70.0
v0.66.0
All runners (except PyScript) can accept a parameter file
at contruction time. This file will be used to restore/save the "tag.session" (dict) changes (and so, the tag.state (which is a subdict of tag.session))
Example:
app=ChromeApp( Page , file="/tmp/data.json")
app.run()
btw: the tag.session is a property used by htagweb. But now, it's a great use in htag desktop runners too !
Full Changelog: v0.65.0...v0.66.0
v0.65.0
runner AndroidApp:
- try to use an open/free port for running the server side : now, you can use multiple android htag's apps on a same device ;-)
- the html autoplay feature works now (using setMediaPlaybackRequiresUserGesture)
- btw, the quit/exit app seems to work as expected ;-)
Full Changelog: v0.64.0...v0.65.0
v0.64.0
fix: remove the AndroidApp autoplay setting (which doesn't work)
Full Changelog: v0.63.0...v0.64.0
v0.63.0
AndroidApp,ChromeApp & WinApp ... can html5.Audio autoplay !
Full Changelog: v0.62.0...v0.63.0