Merge remote-tracking branch 'origin/staging' into develop

This commit is contained in:
Andrey Antukh 2021-12-22 16:10:24 +01:00
commit 888ffa1bcd
13 changed files with 90 additions and 62 deletions

View file

@ -23,6 +23,19 @@
- Readability improvements of user guide (by @PaulSchulz) [Penpot-docs #50](https://github.com/penpot/penpot-docs/pull/50). - Readability improvements of user guide (by @PaulSchulz) [Penpot-docs #50](https://github.com/penpot/penpot-docs/pull/50).
# 1.10.2-beta
### :bug: Bugs fixed
- Fix corner case issues with media file uploads.
- Fix issue with default page grids validation.
- Fix issue related to some raceconditions on workspace navigation events.
### :arrow_up: Deps updates
- Update log4j2 dependency.
# 1.10.1-beta # 1.10.1-beta
### :bug: Bugs fixed ### :bug: Bugs fixed

View file

@ -2,13 +2,18 @@
export PENPOT_FLAGS="enable-asserts enable-audit-log $PENPOT_FLAGS" export PENPOT_FLAGS="enable-asserts enable-audit-log $PENPOT_FLAGS"
export OPTIONS="-A:jmx-remote:dev \ #-J-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
-J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-J-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector \
-J-Dlog4j2.configurationFile=log4j2-devenv.xml \
-J-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory \
-J-XX:+UseShenandoahGC -J-XX:-OmitStackTraceInFastThrow -J-Xms50m -J-Xmx512m";
export OPTIONS="
-A:jmx-remote:dev \
-J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-J-Dclojure.tools.logging.factory=clojure.tools.logging.impl/log4j2-factory \
-J-Dlog4j2.configurationFile=log4j2-devenv.xml \
-J-XX:+UseShenandoahGC \
-J-XX:-OmitStackTraceInFastThrow \
-J-Xms50m -J-Xmx512m";
# export OPTIONS="$OPTIONS -J-XX:+UnlockDiagnosticVMOptions";
# export OPTIONS="$OPTIONS -J-XX:-TieredCompilation -J-XX:CompileThreshold=10000"; # export OPTIONS="$OPTIONS -J-XX:-TieredCompilation -J-XX:CompileThreshold=10000";
export OPTIONS_EVAL="nil" export OPTIONS_EVAL="nil"

View file

@ -7,6 +7,7 @@
(ns app.loggers.zmq (ns app.loggers.zmq
"A generic ZMQ listener." "A generic ZMQ listener."
(:require (:require
[app.common.exceptions :as ex]
[app.common.logging :as l] [app.common.logging :as l]
[app.common.spec :as us] [app.common.spec :as us]
[app.util.json :as json] [app.util.json :as json]
@ -14,7 +15,8 @@
[clojure.core.async :as a] [clojure.core.async :as a]
[clojure.spec.alpha :as s] [clojure.spec.alpha :as s]
[cuerdas.core :as str] [cuerdas.core :as str]
[integrant.core :as ig]) [integrant.core :as ig]
[jsonista.core :as j])
(:import (:import
org.zeromq.SocketType org.zeromq.SocketType
org.zeromq.ZMQ$Socket org.zeromq.ZMQ$Socket
@ -33,7 +35,7 @@
(l/info :msg "initializing ZMQ receiver" :bind endpoint) (l/info :msg "initializing ZMQ receiver" :bind endpoint)
(let [buffer (a/chan 1) (let [buffer (a/chan 1)
output (a/chan 1 (comp (filter map?) output (a/chan 1 (comp (filter map?)
(map prepare))) (keep prepare)))
mult (a/mult output)] mult (a/mult output)]
(when endpoint (when endpoint
(a/thread (start-rcv-loop {:out buffer :endpoint endpoint}))) (a/thread (start-rcv-loop {:out buffer :endpoint endpoint})))
@ -52,6 +54,11 @@
[_ f] [_ f]
(a/close! (::buffer (meta f)))) (a/close! (::buffer (meta f))))
(def json-mapper
(j/object-mapper
{:encode-key-fn str/camel
:decode-key-fn (comp keyword str/kebab)}))
(defn- start-rcv-loop (defn- start-rcv-loop
([] (start-rcv-loop nil)) ([] (start-rcv-loop nil))
([{:keys [out endpoint] :or {endpoint "tcp://localhost:5556"}}] ([{:keys [out endpoint] :or {endpoint "tcp://localhost:5556"}}]
@ -63,7 +70,7 @@
(.. socket (setReceiveTimeOut 5000)) (.. socket (setReceiveTimeOut 5000))
(loop [] (loop []
(let [msg (.recv ^ZMQ$Socket socket) (let [msg (.recv ^ZMQ$Socket socket)
msg (json/decode msg) msg (ex/ignoring (j/read-value msg json-mapper))
msg (if (nil? msg) :empty msg)] msg (if (nil? msg) :empty msg)]
(if (a/>!! out msg) (if (a/>!! out msg)
(recur) (recur)
@ -71,18 +78,35 @@
(.close ^java.lang.AutoCloseable socket) (.close ^java.lang.AutoCloseable socket)
(.close ^java.lang.AutoCloseable zctx)))))))) (.close ^java.lang.AutoCloseable zctx))))))))
(s/def ::logger-name string?)
(s/def ::level string?)
(s/def ::thread string?)
(s/def ::time-millis integer?)
(s/def ::message string?)
(s/def ::context-map map?)
(s/def ::throw map?)
(s/def ::log4j-event
(s/keys :req-un [::logger-name ::level ::thread ::time-millis ::message]
:opt-un [::context-map ::thrown]))
(defn- prepare (defn- prepare
[event] [event]
(merge (if (s/valid? ::log4j-event event)
{:logger (:loggerName event) (merge
:level (str/lower (:level event)) {:logger (:logger-name event)
:thread (:thread event) :level (str/lower (:level event))
:created-at (dt/instant (:timeMillis event)) :thread (:thread event)
:message (:message event)} :created-at (dt/instant (:time-millis event))
(when-let [ctx (:contextMap event)] :message (:message event)}
{:context ctx}) (when-let [ctx (:context-map event)]
(when-let [thrown (:thrown event)] {:context ctx})
{:error (when-let [thrown (:thrown event)]
{:class (:name thrown) {:error
:message (:message thrown) {:class (:name thrown)
:trace (:extendedStackTrace thrown)}}))) :message (:message thrown)
:trace (:extended-stack-trace thrown)}}))
(do
(l/warn :hint "invalid event" :event event)
nil)))

View file

@ -158,7 +158,6 @@
nil))) nil)))
;; --- Mutation: Delete Team ;; --- Mutation: Delete Team
(s/def ::delete-team (s/def ::delete-team

View file

@ -7,18 +7,13 @@
org.clojure/clojurescript {:mvn/version "1.10.891"} org.clojure/clojurescript {:mvn/version "1.10.891"}
;; Logging ;; Logging
org.clojure/tools.logging {:mvn/version "1.1.0"} org.clojure/tools.logging {:mvn/version "1.2.3"}
org.apache.logging.log4j/log4j-api {:mvn/version "2.16.0"} org.apache.logging.log4j/log4j-api {:mvn/version "2.17.0"}
org.apache.logging.log4j/log4j-core {:mvn/version "2.16.0"} org.apache.logging.log4j/log4j-core {:mvn/version "2.17.0"}
org.apache.logging.log4j/log4j-web {:mvn/version "2.16.0"} org.apache.logging.log4j/log4j-web {:mvn/version "2.17.0"}
org.apache.logging.log4j/log4j-jul {:mvn/version "2.16.0"} org.apache.logging.log4j/log4j-jul {:mvn/version "2.17.0"}
org.apache.logging.log4j/log4j-slf4j18-impl {:mvn/version "2.16.0"} org.apache.logging.log4j/log4j-slf4j18-impl {:mvn/version "2.17.0"}
org.slf4j/slf4j-api {:mvn/version "2.0.0-alpha1"} org.slf4j/slf4j-api {:mvn/version "2.0.0-alpha1"}
org.slf4j/jcl-over-slf4j {:mvn/version "2.0.0-alpha1"}
org.slf4j/log4j-over-slf4j {:mvn/version "2.0.0-alpha1"}
org.slf4j/osgi-over-slf4j {:mvn/version "2.0.0-alpha1"}
org.slf4j/jul-to-slf4j {:mvn/version "2.0.0-alpha1"}
com.lmax/disruptor {:mvn/version "3.4.4"}
selmer/selmer {:mvn/version "1.12.45"} selmer/selmer {:mvn/version "1.12.45"}
expound/expound {:mvn/version "0.8.10"} expound/expound {:mvn/version "0.8.10"}

View file

@ -65,8 +65,7 @@
} }
.af-divider-block { .af-divider-block {
margin-bottom: 2rem; /* margin-bottom: 2rem; */
p { p {
&::after, &::after,
&::before { &::before {
@ -101,7 +100,7 @@
} }
.af-field-input { .af-field-input {
margin: 2rem 0; margin: 0.5rem 0;
} }
.af-choice-option input:checked+label:before, .af-choice-option input:checked+label:before,

View file

@ -61,6 +61,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare fetch-projects) (declare fetch-projects)
(declare fetch-team-members)
(defn initialize (defn initialize
[{:keys [id] :as params}] [{:keys [id] :as params}]
@ -85,6 +86,7 @@
(rx/merge (rx/merge
(ptk/watch (df/load-team-fonts id) state stream) (ptk/watch (df/load-team-fonts id) state stream)
(ptk/watch (fetch-projects) state stream) (ptk/watch (fetch-projects) state stream)
(ptk/watch (fetch-team-members) state stream)
(ptk/watch (du/fetch-teams) state stream) (ptk/watch (du/fetch-teams) state stream)
(ptk/watch (du/fetch-users {:team-id id}) state stream))))) (ptk/watch (du/fetch-users {:team-id id}) state stream)))))

View file

@ -145,7 +145,8 @@
(rx/mapcat (fn [profile] (rx/mapcat (fn [profile]
(if (= uuid/zero (:id profile)) (if (= uuid/zero (:id profile))
(rx/empty) (rx/empty)
(rx/of (fetch-teams)))))))))) (rx/of (fetch-teams)))))
(rx/observe-on :async))))))
;; --- EVENT: login ;; --- EVENT: login
@ -155,13 +156,8 @@
accepting invitation, or third party auth signup or singin." accepting invitation, or third party auth signup or singin."
[profile] [profile]
(letfn [(get-redirect-event [] (letfn [(get-redirect-event []
(if-let [{:keys [data path-params query-params]} (::redirect-to @storage)] (let [team-id (:default-team-id profile)]
(do (rt/nav' :dashboard-projects {:team-id team-id})))]
(swap! storage dissoc ::redirect-to)
(rt/nav' (:name data) path-params query-params))
(let [team-id (:default-team-id profile)]
(rt/nav' :dashboard-projects {:team-id team-id}))))]
(ptk/reify ::logged-in (ptk/reify ::logged-in
IDeref IDeref
(-deref [_] profile) (-deref [_] profile)
@ -254,17 +250,13 @@
(with-meta profile (with-meta profile
{::ev/source "register"}))) {::ev/source "register"})))
(rx/map logged-in) (rx/map logged-in)
(rx/observe-on :async)))) (rx/observe-on :async))))))
ptk/EffectEvent
(effect [_ _ _]
(swap! storage dissoc ::redirect-to))))
;; --- EVENT: logout ;; --- EVENT: logout
(defn logged-out (defn logged-out
([] (logged-out {})) ([] (logged-out {}))
([{:keys [capture-redirect?] :or {capture-redirect? false}}] ([_params]
(ptk/reify ::logged-out (ptk/reify ::logged-out
ptk/UpdateEvent ptk/UpdateEvent
(update [_ state] (update [_ state]
@ -278,10 +270,8 @@
(rx/observe-on :async))) (rx/observe-on :async)))
ptk/EffectEvent ptk/EffectEvent
(effect [_ state _] (effect [_ _ _]
(when capture-redirect? (reset! storage {})
(let [route (into {} (:route state))]
(reset! storage {::redirect-to route})))
(i18n/reset-locale))))) (i18n/reset-locale)))))
(defn logout (defn logout
@ -391,7 +381,6 @@
(rx/empty))) (rx/empty)))
(rx/ignore)))))) (rx/ignore))))))
(defn mark-onboarding-as-viewed (defn mark-onboarding-as-viewed
([] (mark-onboarding-as-viewed nil)) ([] (mark-onboarding-as-viewed nil))
([{:keys [version]}] ([{:keys [version]}]

View file

@ -50,7 +50,7 @@
(defmethod ptk/handle-error :authentication (defmethod ptk/handle-error :authentication
[_] [_]
(let [msg (tr "errors.auth.unable-to-login")] (let [msg (tr "errors.auth.unable-to-login")]
(st/emit! (du/logout {:capture-redirect? true})) (st/emit! (du/logout {:capture-redirect true}))
(ts/schedule 500 (st/emitf (dm/warn msg))))) (ts/schedule 500 (st/emitf (dm/warn msg)))))

View file

@ -522,7 +522,7 @@
[:li.feedback {:on-click (partial on-click :settings-feedback)} [:li.feedback {:on-click (partial on-click :settings-feedback)}
[:span.icon i/msg-info] [:span.icon i/msg-info]
[:span.text (tr "labels.give-feedback")] [:span.text (tr "labels.give-feedback")]
[:span.primary-badge "ALPHA"]])]]] [:span.primary-badge "BETA"]])]]]
(when (and team profile) (when (and team profile)
[:& comments-section {:profile profile [:& comments-section {:profile profile

View file

@ -19,10 +19,12 @@
(letfn [(on-init [] (letfn [(on-init []
(when-let [container (mf/ref-val container-ref)] (when-let [container (mf/ref-val container-ref)]
(-> (.embed js/ArenguForms form-id container) (-> (.embed js/ArenguForms form-id container)
(p/then (fn [form] (.setHiddenField ^js form "email" email)))))) (p/then (fn [form]
(.setHiddenField ^js form "email" email))))))
(on-submit-success [_] (on-submit-success [_event]
(st/emit! (du/mark-questions-as-answered)))] (st/emit! (du/mark-questions-as-answered)))
]
(let [script (dom/create-element "script") (let [script (dom/create-element "script")
head (unchecked-get js/document "head") head (unchecked-get js/document "head")

View file

@ -16,6 +16,7 @@
[app.main.ui.releases.v1-7] [app.main.ui.releases.v1-7]
[app.main.ui.releases.v1-8] [app.main.ui.releases.v1-8]
[app.main.ui.releases.v1-9] [app.main.ui.releases.v1-9]
[app.main.ui.releases.v1-10]
[app.util.object :as obj] [app.util.object :as obj]
[app.util.timers :as tm] [app.util.timers :as tm]
[rumext.alpha :as mf])) [rumext.alpha :as mf]))

View file

@ -19,7 +19,6 @@
[props] [props]
(let [children (obj/get props "children") (let [children (obj/get props "children")
on-click (mf/use-callback #(set! (.-href globals/location) ""))] on-click (mf/use-callback #(set! (.-href globals/location) ""))]
[:section.exception-layout [:section.exception-layout
[:div.exception-header [:div.exception-header
{:on-click on-click} {:on-click on-click}