Skip to content

Releases: GenieFramework/Stipple.jl

v0.31.12

17 Feb 14:22
Compare
Choose a tag to compare

Stipple v0.31.12

Diff since v0.31.11

fix parse_jsfunction() and jsfunction()

v0.31.11

16 Feb 22:40
Compare
Choose a tag to compare

Stipple v0.31.11

Diff since v0.31.10

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

15 Feb 11:50
Compare
Choose a tag to compare

Stipple v0.31.10

Diff since v0.31.9

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

15 Feb 10:09
Compare
Choose a tag to compare

Stipple v0.31.9

Diff since v0.31.8

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

13 Feb 16:47
Compare
Choose a tag to compare

Stipple v0.31.8

Diff since v0.31.7

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:

  • ArgumentError("length of iterable must be even") (#314)
  • @event macro not working? (#315)

v0.31.7

10 Feb 00:30
Compare
Choose a tag to compare

Stipple v0.31.7

Diff since v0.31.6

Fix error with GenieBuilder

Closed issues:

  • css class 'st-col' breaks q-gutter when applied at first level (#247)
  • importing the named apps from a module breaks rendering (#284)

v0.31.6

07 Feb 16:24
Compare
Choose a tag to compare

Stipple v0.31.6

Diff since v0.31.5

fix jsfunction and related issue with StippleDownloads #315

Closed issues:

  • Implement routehandler (#312)

v0.31.5

07 Feb 07:55
Compare
Choose a tag to compare

Stipple v0.31.5

Diff since v0.31.4

  • strip listeners from external handlers
  • add keyword sess_token = true to page() and layout()
  • forward kwarg core_theme to DEFAULT_LAYOUT() in @page if layout is not specified explicitly in order to support @page("/", "Hello World", core_theme = false)

v0.31.4

05 Feb 23:40
Compare
Choose a tag to compare

Stipple v0.31.4

Diff since v0.31.3

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()

v0.31.3

04 Feb 18:06
Compare
Choose a tag to compare

Stipple v0.31.3

Diff since v0.31.2