Releases: GenieFramework/Stipple.jl
v0.31.12
v0.31.11
Stipple v0.31.11
Add compat routes for GenieBuilder, to make it work with GenieFramework 3.
Background: GB's no-code editor is currently based on Vue2. This release adds routes to support both Vue2 for the no-code editor, but only if the app is run by GB
v0.31.10
Stipple v0.31.10
Fix restore_constructor to modify handling of Revise induced redefintions of the model type
- Instead of reverting to the last defintion Stipple now redefines the constructor of the new type that Revise deleted. This will probably avoid loops of redifinitions that were observed with GenieBuilder.
- Redefinition warnings are only displayed when
Stipple.REVISE_DEBUG_INFO[] = true
v0.31.9
Stipple v0.31.9
Modified handling of Revise induced redefintions of the model type.
- Instead of reverting to the last defintion Stipple now redefines the constructor of the new type that Revise deleted. This will probably avoid loops of redifinitions that were observed with GenieBuilder.
- Redefinition warnings are only displayed when
Stipple.REVISE_DEBUG_INFO[] = true
v0.31.8
Stipple v0.31.8
Opt out of auto initialized webchannel.
Background: Genie now has improved compatibilty with earlier versions which always used to establish a default webchannel. In order not to break this behaviour and to continue support for apps with older Stipple versions, the latest version actively opts out of auto webchannel initialisation, before creating its own channels. (This change was required to support multi-model pages)
Closed issues:
v0.31.7
Stipple v0.31.7
Fix error with GenieBuilder
Closed issues:
v0.31.6
v0.31.5
Stipple v0.31.5
- strip listeners from external handlers
- add keyword
sess_token = true
topage()
andlayout()
- forward kwarg
core_theme
toDEFAULT_LAYOUT()
in@page
if layout is not specified explicitly in order to support@page("/", "Hello World", core_theme = false)
v0.31.4
Stipple v0.31.4
Features
Synchronization
- add function
unsynchronize!(o1, o2)
to unsync reactive variables to external Observables.
Finalizers
- add finalizers that strip off listeners when a model goes out of scope.
- custom finalizers can be added, e.g. to unsync model variables from external sources
Example - Bidirectional Synchronization to External Session-Specific Observable
All models from the same browser (same session id) synchronize their variable x. All other variables are untouched.
External changes, e.g. from a separate running process to that variable are reflected in all tabs. Without the need of polling.
When the model goes out of scope due to reloading or navigation, the synchronization is stopped.
using Stipple, Stipple.ReactiveTools
using StippleUI
using GenieSession
const XX = Dict{String, Reactive}()
@app Observer begin
@in x = 0
@private session = ""
@onchange isready begin
@info "session: $session"
println("hi")
r = get!(XX, session, R(x))
synchronize!(__model__.x, r)
end
end
@page("/", slider(1:100, :x), model = Observer, post = model -> begin model.session[] = session().id *""; nothing end)
@event Observer :finalize begin
println("unsynchronizing ...")
@info unsynchronize!(__model__.x)
notify(__model__, Val(:finalize))
end
@debounce Observer x 0
@throttle Observer x 10
up()