Correct file name

Correct file name

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject transit-clj (clojure.string/trimr (:out (clojure.java.shell/sh "build/version")))
+(defproject transit-clj (clojure.string/trimr (:out (clojure.java.shell/sh "build/revision")))
   :description "FIXME: write description"
   :url "http://example.com/FIXME"
   :license {:name "Eclipse Public License"
@@ -9,5 +9,3 @@
                  [commons-codec "1.5"]]
   :profiles {:provided {:dependencies [[org.clojure/clojure "1.5.1"]]}
              :dev {:dependencies [[org.clojure/data.generators "0.1.2"]]}})
-
-


add compression deps

add compression deps


bump version.

bump version.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(def version "0.7.0-SNAPSHOT")
+(def version "0.8.0-SNAPSHOT")

 (defproject cavm version
   :description "Cancer Analytics Virtual Machine"


Added signing key and pushed a build to clojars.

--- project.clj
+++ project.clj
@@ -1,11 +1,12 @@
-(defproject tensorflow-clj "0.1.0-SNAPSHOT"
-  :description "FIXME: write description"
-  :url "http://example.com/FIXME"
+(defproject tensorflow-clj "0.1"
+  :description "Gateway from Clojure to Tensorflow"
+  :url "https://github.com/enragedginger/tensorflow-clj"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [net.mikera/core.matrix "0.58.0"]
                  [org.tensorflow/tensorflow "1.1.0-rc2"]]
+  :signing {:gpg-key "enragedginger@gmail.com"}
   :main ^:skip-aot tensorflow-clj.core
   :target-path "target/%s"
   :profiles {:uberjar {:aot :all}})


add core.async

add core.async

--- project.clj
+++ project.clj
@@ -8,6 +8,7 @@
   :aliases {"test" ["with-profile" "+expectations" "expectations"]
             "generate-sample-dataset" ["with-profile" "+generate-sample-dataset" "run"]}
   :dependencies [[org.clojure/clojure "1.7.0"]
+                 [org.clojure/core.async "0.1.346.0-17112a-alpha"]
                  [org.clojure/core.logic "0.8.10"]
                  [org.clojure/core.match "0.3.0-alpha4"]              ; optimized pattern matching library for Clojure
                  [org.clojure/core.memoize "0.5.7"]                   ; needed by core.match; has useful FIFO, LRU, etc. caching mechanisms


lein-release plugin: preparing 0.1.3 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject re-view-routing "0.1.3-SNAPSHOT"
+(defproject re-view-routing "0.1.3"

   :description "ClojureScript routing tools"


Version 0.5.2-SNAPSHOT

Version 0.5.2-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject kraken-works/lein-template "0.5.1"
+(defproject kraken-works/lein-template "0.5.2-SNAPSHOT"
   :description "Leiningen template for kraken-works components"
   :url "https://github.com/democracyworks/kraken-works-lein-template"
   :license {:name "Eclipse Public License"


Version 2.0.46-SNAPSHOT [ci skip]

Version 2.0.46-SNAPSHOT [ci skip]

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojush "2.0.45"
+(defproject clojush "2.0.46-SNAPSHOT"
   :description "The Push programming language and the PushGP genetic programming
                 system implemented in Clojure.
                 See http://hampshire.edu/lspector/push.html"


fix: add missing reader dependency

fix: add missing reader dependency

--- project.clj
+++ project.clj
@@ -47,6 +47,7 @@
                  [org.clojure/core.async "0.2.374"]
                  [org.clojure/core.cache "0.6.4"]
                  [org.clojure/java.jdbc "0.3.6"]
+                 [org.clojure/tools.reader "1.0.0-alpha2"]
                  [org.clojure/tools.cli "0.3.1"]
                  [org.clojure/tools.logging "0.3.1"]
                  [org.clojure/tools.trace "0.7.8"]


Version 1.1.2-SNAPSHOT

Version 1.1.2-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject puppetlabs/trapperkeeper-status "1.1.1"
+(defproject puppetlabs/trapperkeeper-status "1.1.2-SNAPSHOT"
   :description "A trapperkeeper service for getting the status of other trapperkeeper services."
   :url "https://github.com/puppetlabs/trapperkeeper-status"
   :license {:name "Apache License, Version 2.0"


Bump version for release

Bump version for release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject onyx-app/lein-template "0.7.5"
+(defproject onyx-app/lein-template "0.7.5.1"
   :description "Onyx Leiningen application template"
   :url "https://github.com/onyx-platform/onyx-template"
   :license {:name "Eclipse Public License"


Version 0.1.1

Version 0.1.1

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject api "0.1.1-SNAPSHOT"
+(defproject api "0.1.1"
   :min-lein-version "2.6.1"
   :description "Optly API"
   :url "https://github.com/optly/api"


Add some boilerplate for generating a release

--- project.clj
+++ project.clj
@@ -1,23 +1,33 @@
 (defproject io.aviso/twixt "0.1.14-SNAPSHOT"
-  :description "An extensible asset pipeline for Clojure web applications"
-  :url "https://github.com/AvisoNovate/twixt"
-  :license {:name "Apache Sofware Licencse 2.0"
-            :url  "http://www.apache.org/licenses/LICENSE-2.0.html"}
-  :dependencies [[org.clojure/clojure "1.6.0"]
-                 [io.aviso/pretty "0.1.12"]
-                 [io.aviso/tracker "0.1.2"]
-                 [ring/ring-core "1.3.1"]
-                 [com.google.javascript/closure-compiler "v20140814"]
-                 [org.mozilla/rhino "1.7R4"]
-                 [com.github.sommeri/less4j "1.8.3"]
-                 [de.neuland-bfi/jade4j "0.4.0"]
-                 [hiccup "1.0.5"]]
-  :test-paths ["spec"]
-  :plugins [[speclj "3.1.0"]]
-  :codox {:src-dir-uri               "https://github.com/AvisoNovate/twixt/blob/master/"
-          :src-linenum-anchor-prefix "L"
-          :defaults                  {:doc/format :markdown}}
-  :profiles {:dev {:dependencies [[log4j "1.2.17"]
-                                  [speclj "3.1.0"]
-                                  [ring/ring-jetty-adapter "1.2.0"]]
-                   :jvm-opts     ["-Xmx1g"]}})
+            :description "An extensible asset pipeline for Clojure web applications"
+            :url "https://github.com/AvisoNovate/twixt"
+            :license {:name "Apache Sofware Licencse 2.0"
+                      :url  "http://www.apache.org/licenses/LICENSE-2.0.html"}
+            :dependencies [[org.clojure/clojure "1.6.0"]
+                           [io.aviso/pretty "0.1.12"]
+                           [io.aviso/tracker "0.1.2"]
+                           [ring/ring-core "1.3.1"]
+                           [com.google.javascript/closure-compiler "v20140814"]
+                           [org.mozilla/rhino "1.7R4"]
+                           [com.github.sommeri/less4j "1.8.3"]
+                           [de.neuland-bfi/jade4j "0.4.0"]
+                           [hiccup "1.0.5"]]
+            :test-paths ["spec"]
+            :plugins [[speclj "3.1.0"]
+                      [lein-shell "0.4.0"]]
+            :shell {:commands {"scp" {:dir "doc"}}}
+            :aliases {"deploy-doc" ["shell"
+                                    "scp" "-r" "." "hlship_howardlewisship@ssh.phx.nearlyfreespeech.net:io.aviso/twixt"]
+                      "release"    ["do"
+                                    "clean,"
+                                    "spec,",
+                                    "doc,"
+                                    "deploy-doc,"
+                                    "deploy" "clojars"]}
+            :codox {:src-dir-uri               "https://github.com/AvisoNovate/twixt/blob/master/"
+                    :src-linenum-anchor-prefix "L"
+                    :defaults                  {:doc/format :markdown}}
+            :profiles {:dev {:dependencies [[log4j "1.2.17"]
+                                            [speclj "3.1.0"]
+                                            [ring/ring-jetty-adapter "1.2.0"]]
+                             :jvm-opts     ["-Xmx1g"]}})


update multi test

update multi test

--- project.clj
+++ project.clj
@@ -11,6 +11,8 @@
   :dependencies ~(conj deps '[org.clojure/clojure "1.3.0"])
   :dev-dependencies [[lein-multi "1.1.0"]
                      [codox "0.4.1"]]
-  :multi-deps {"1.2"  ~(conj deps '[org.clojure/clojure "1.2.1"])
-               "1.4B" ~(conj deps '[org.clojure/clojure "1.4.0-beta4"])}
+  :repositories [["sonatype-snapshots" "https://oss.sonatype.org/content/repositories/snapshots/"]]
+  :multi-deps {"1.2.1"  ~(conj deps '[org.clojure/clojure "1.2.1"])
+               "1.4" ~(conj deps '[org.clojure/clojure "1.4.0"])
+               "1.5S" ~(conj deps '[org.clojure/clojure "1.5.0-master-SNAPSHOT"])}
   :main misaki.server)


Add expectations library

Add expectations library

--- project.clj
+++ project.clj
@@ -53,6 +53,7 @@
                                   [clojure-future-spec "1.9.0-alpha14"]
                                   [table "0.5.0"]
                                   [org.clojure/test.check "0.9.0"]
+                                  [org.senatehouse/expect-call "0.1.0"]
                                   [mdrogalis/stateful-check "0.3.2"]
                                   ;; TODO, switch back to test.chuck mainline
                                   ;; once PR is accepted


Version 1.7.0-SNAPSHOT

Version 1.7.0-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject puppetlabs/lein-ezbake "1.6.5"
+(defproject puppetlabs/lein-ezbake "1.7.0-SNAPSHOT"
   :description "A system for building packages for trapperkeeper-based applications"
   :url "https://github.com/puppetlabs/ezbake"
   :license {:name "Apache License 2.0"


higher level wrapper over bcoin

higher level wrapper over bcoin

--- project.clj
+++ project.clj
@@ -17,7 +17,7 @@
                   [lein-npm "0.4.0"]]

         :node-dependencies [[prompt "0.2.13"]
-                            [bcoin "0.14.2"]]
+                            [coined "0.0.5"]]

         :cljsbuild {
           :builds [{


(maint) Remove pl-clojure-style linter

(maint) Remove pl-clojure-style linter

This commit removes all references to the pl-clojure-style repo. This was used
for linting / style checking in the past, but hasn't been used for quite some
time, so no reason to keep the `cljfmt` profile for running it.

--- project.clj
+++ project.clj
@@ -93,10 +93,6 @@
                     {:test-paths ^:replace ["test/unit"]}]
              :integration [:test-base
                            {:test-paths ^:replace ["test/integration"]}]
-             :cljfmt {:plugins [[lein-cljfmt "0.5.7" :exclusions [org.clojure/clojure]]
-                                [lein-parent "0.3.4"]]
-                      :parent-project {:path "../pl-clojure-style/project.clj"
-                                       :inherit [:cljfmt]}}
              :internal-mirrors {:mirrors [["releases" {:name "internal-releases"
                                                        :url "https://artifactory.delivery.puppetlabs.net/artifactory/clojure-releases__local/"}]
                                           ["central" {:name "internal-central-mirror"
@@ -116,9 +112,6 @@
             ;; runs trapperkeeper with schema validations enabled
             "tkv" ["with-profile" "dev-schema-validation" "tk"]
             "certs" ["trampoline" "run" "-m" "puppetlabs.pcp.testutils.certs" "--config" "test-resources/conf.d" "--"]
-            ;; cljfmt requires pl-clojure-style's root dir as per above profile;
-            ;; run with 'check' then 'fix' with args (refer to the project docs)
-            "cljfmt" ["with-profile" "+cljfmt" "cljfmt"]
             "coverage" ["cloverage" "-e" "puppetlabs.puppetdb.*" "-e" "user"]
             "test-all" ["with-profile" "test-base:test-schema-validation" "test"]}


Version 4.0.0

Version 4.0.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.domaindrivenarchitecture/dda-user-crate "4.0.0-SNAPSHOT"
+(defproject org.domaindrivenarchitecture/dda-user-crate "4.0.0"
   :description "A crate to handle users"
   :url "https://www.domaindrivenarchitecture.org"
   :license {:name "Apache License, Version 2.0"


Advanced compilation

Advanced compilation

--- project.clj
+++ project.clj
@@ -19,7 +19,7 @@
                        {:id "release"
                         :source-paths ["src"]
                         :compiler {:output-to "kestrel-release.js"
-                                   :optimizations :simple
+                                   :optimizations :advanced
                                    :pretty-print true
                                    :preamble ["js/components/es5-shim/es5-shim.min.js"
                                               "js/components/es5-shim/es5-sham.min.js"


Update tools.namespace to 0.2.5.

Update tools.namespace to 0.2.5.

--- project.clj
+++ project.clj
@@ -39,7 +39,7 @@
    {:source-paths ["dev"]
     :dependencies
     [[quil "2.1.0"]
-     [org.clojure/tools.namespace "0.2.4"]
+     [org.clojure/tools.namespace "0.2.5"]
      [ring/ring-devel "1.3.0"]]}

    :uberjar


Fix formatting

Fix formatting

--- project.clj
+++ project.clj
@@ -59,7 +59,6 @@
                                   [lein-figwheel "0.5.0"]
                                   [org.clojure/tools.nrepl "0.2.12"]
                                   [com.cemerick/piggieback "0.1.5"]
-
                                   [pjstadig/humane-test-output "0.7.0"]]

                    :source-paths ["env/dev/clj"]


bumping to 0.2.1-3

bumping to 0.2.1-3

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject devcards/lein-template "0.2.1-2"
+(defproject devcards/lein-template "0.2.1-3"
   :description "A Leinigen template for Devcards"
   :url "https://github.com/bhauman/devcards-template"
   :license {:name "Eclipse Public License"


Version 7.6.0

Version 7.6.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(def ps-version "7.6.0-SNAPSHOT")
+(def ps-version "7.6.0")

 (defn deploy-info
   [url]


(PDB-1179) Add test classifier for pdb testutils

This commit adds a test classifier and a corresponding profile so that
when we build and deploy the puppetdb jar we get a `-test`
jar so that downstream consumers of puppetdb can use the pdb-testutils code.

--- project.clj
+++ project.clj
@@ -1,7 +1,3 @@
-(require '[clojure.string :as s])
-(use '[clojure.java.shell :only (sh)]
-     '[clojure.java.io :only (file)])
-
 (def pdb-version "3.0.0-SNAPSHOT")

 (defn deploy-info
@@ -110,6 +106,12 @@
   :deploy-repositories [["releases" ~(deploy-info "http://nexus.delivery.puppetlabs.net/content/repositories/releases/")]
                         ["snapshots" ~(deploy-info "http://nexus.delivery.puppetlabs.net/content/repositories/snapshots/")]]

+  ;; By declaring a classifier here and a corresponding profile below we'll get an additional jar
+  ;; during `lein jar` that has all the code in the test/ directory. Downstream projects can then
+  ;; depend on this test jar using a :classifier in their :dependencies to reuse the test utility
+  ;; code that we have.
+  :classifiers  [["test" :testutils]]
+
   :profiles {:dev {:resource-paths ["test-resources"],
                    :dependencies [[ring-mock "0.1.5"]
                                   [puppetlabs/trapperkeeper ~tk-version :classifier "test"]
@@ -122,6 +124,7 @@
                       :name "puppetdb"
                       :plugins [[puppetlabs/lein-ezbake "0.2.2"
                                  :exclusions [org.clojure/clojure]]]}
+             :testutils {:source-paths ^:replace ["test"]}
              :ci {:plugins [[lein-pprint "1.1.1"]]}}

   :jar-exclusions [#"leiningen/"]


(SERVER-1220) Bump from snapshot for 2.3.1 release

This commit bumps the version to 2.3.1 for release

--- project.clj
+++ project.clj
@@ -2,7 +2,7 @@
 (def tk-version "1.3.0")
 (def tk-jetty-version "1.5.4")
 (def ks-version "1.3.0")
-(def ps-version "2.3.1-stable-SNAPSHOT")
+(def ps-version "2.3.1")

 (defn deploy-info
   [url]


clj cljs version are updated

clj cljs version are updated

--- project.clj
+++ project.clj
@@ -4,13 +4,13 @@
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [
-  				 [org.clojure/clojure "1.7.0"]
+                 [org.clojure/clojure "1.8.0"]
                  ;;Backend dependencies
                  [compojure "1.4.0"]
                  [secretary "1.2.3"]

                  ;; Frontend dependencies
-                 [org.clojure/clojurescript "1.7.170"]
+                 [org.clojure/clojurescript "1.8.51"]
                  [hiccup "1.0.5"]
                  [prismatic/dommy "1.1.0"]
                  [ring/ring-core "1.4.0" :exclusions [javax.servlet/servlet-api]]
@@ -20,7 +20,7 @@
                  [clj-time "0.11.0"]
                  [bouncer "1.0.0"]
                  [reagent "0.5.1"]
-                ]
+                 ]
   :source-paths ["src/clj"]
   :main react-cljs.core
   :plugins [
@@ -28,10 +28,10 @@
             [migratus-lein "0.1.7"]
             [lein-cljsbuild "1.1.2"]
             ]
-    :cljsbuild {:builds
-                [{:id "app"
-                  :source-paths ["src/cljs"]
-                  :compiler {:output-to "resources/public/js/app.js"
+  :cljsbuild {:builds
+              [{:id "app"
+                :source-paths ["src/cljs"]
+                :compiler {:output-to "resources/public/js/app.js"
                            :output-dir "resources/public/js/out"
                            :source-map true
                            :optimizations :none


0.2.10

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject riemann "0.2.10-SNAPSHOT"
+(defproject riemann "0.2.10"
   :description
 "A network event stream processor. Intended for analytics, metrics, and alerting; and to glue various monitoring systems together."
   :url "http://github.com/aphyr/riemann"


update anychart bundle 8.5.0

update anychart bundle 8.5.0

--- project.clj
+++ project.clj
@@ -1,5 +1,5 @@
 (defproject export-server "1.6.0"
-  :description "AnyChart export server, AnyChart Bundle version 8.4.2"
+  :description "AnyChart export server, AnyChart Bundle version 8.5.0"
   :url "https://github.com/AnyChart/export-server"
   :license {:name "Eclipse Public License"
             :url  "http://www.eclipse.org/legal/epl-v10.html"}


modify jvm-opts for better benchmarking

modify jvm-opts for better benchmarking

--- project.clj
+++ project.clj
@@ -16,6 +16,6 @@
                  [prismatic/schema "1.0.4"]]
   :plugins [[io.aviso/pretty "0.1.23"]]
   :main ^:skip-aot validation-benchmark.core
-  :jvm-opts []
+  :jvm-opts ^:replace ["-server" "-XX:+AggressiveOpts"]
   :target-path "target/%s"
   :profiles {:uberjar {:aot :all}})


Bump version to 0.4.2

Bump version to 0.4.2

--- project.clj
+++ project.clj
@@ -1,7 +1,7 @@
 (let [dev-deps '[[speclj "2.7.2"]
                  [classlojure "0.6.6"]]]

-  (defproject reply "0.4.2-SNAPSHOT"
+  (defproject reply "0.4.2"
     :description "REPL-y: A fitter, happier, more productive REPL for Clojure."
     :dependencies [[org.clojure/clojure "1.6.0"]
                    [jline "2.14.6"]


(maint) bump to snapshot version

(maint) bump to snapshot version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(def pdb-version "5.1.3")
+(def pdb-version "5.1.4-SNAPSHOT")
 (def puppetserver-version "5.1.0")
 (def clj-parent-version "1.4.3")


fixed group name

fixed group name

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.domaindrivenarchitecture.org/dda-user-crate "0.1.0-SNAPSHOT"
+(defproject org.domaindrivenarchitecture/dda-user-crate "0.1.0-SNAPSHOT"
   :description "A crate to handle configuration, their dependencies, documentation and validation"
   :url "http://example.com/FIXME"
   :license {:name "Apache License, Version 2.0"


Update dependencies

Update dependencies

--- project.clj
+++ project.clj
@@ -9,11 +9,11 @@
   :hooks [leiningen.cljsbuild]

   :dependencies [[org.clojure/clojure "1.9.0-alpha15"]
-                 [org.clojure/clojurescript "1.9.518"]
-                 [org.clojure/core.async "0.3.442" :exclusions [org.clojure/tools.reader]]
+                 [org.clojure/clojurescript "1.9.562"]
+                 [org.clojure/core.async "0.3.443" :exclusions [org.clojure/tools.reader]]
                  [org.clojure/test.check "0.9.0"]
-                 [org.omcljs/om "1.0.0-alpha47"]
-                 [cljs-ajax "0.5.9"]
+                 [org.omcljs/om "1.0.0-beta1"]
+                 [cljs-ajax "0.6.0"]
                  [com.cognitect/transit-cljs "0.8.239"]     ; Better JSON support
                  [lein-doo "0.1.7"]  ;; <-- otherwise it won't find the doo namespaces...
                  [inflections "0.13.0"]]
@@ -33,9 +33,9 @@
   :aliases {"phantomtest" ["do" "clean" ["doo" "phantom" "test" "once"]]
             "build" ["do" "clean" ["cljsbuild" "once" "min"]]}

-  :profiles {:dev {:dependencies [[binaryage/devtools "0.9.2"]
+  :profiles {:dev {:dependencies [[binaryage/devtools "0.9.4"]
                                   [figwheel-sidecar "0.5.10"]
-                                  [com.cemerick/piggieback "0.2.1"]]
+                                  [com.cemerick/piggieback "0.2.2"]]
                    ;; need to add dev source path here to get user.clj loaded
                    :source-paths ["src/discuss"]
                    :repl-options {:init (set! *print-length* 50)


Version 0.4.4

Version 0.4.4

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject puppetlabs/lein-ezbake "0.4.4-SNAPSHOT"
+(defproject puppetlabs/lein-ezbake "0.4.4"
   :description "A system for building packages for trapperkeeper-based applications"
   :url "https://github.com/puppetlabs/ezbake"
   :license {:name "Apache License 2.0"


bump version number for deployment

bump version number for deployment

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject witch-house/pronouns "1.9.0-SNAPSHOT"
+(defproject witch-house/pronouns "1.10.0-SNAPSHOT"
   :description "Pronoun.is is a website for personal pronoun usage examples"
   :url "http://pronoun.is"
   :dependencies [[org.clojure/clojure "1.6.0"]


Changed where docs will be published.

Changed where docs will be published.

--- project.clj
+++ project.clj
@@ -29,6 +29,7 @@
     [environ "1.1.0"]
     [gov.nasa.earthdata/cmr-site-templates "0.1.0-SNAPSHOT"]
     [http-kit "2.3.0"]
+    [markdown-clj "1.0.2"]
     [metosin/reitit-core "0.1.1-SNAPSHOT"]
     [metosin/reitit-ring "0.1.1-SNAPSHOT"]
     [metosin/ring-http-response "0.9.0"]
@@ -37,7 +38,8 @@
     [org.clojure/data.xml "0.2.0-alpha5"]
     [ring/ring-core "1.6.3"]
     [ring/ring-codec "1.1.0"]
-    [ring/ring-defaults "0.3.1"]]
+    [ring/ring-defaults "0.3.1"]
+    [selmer "1.11.7"]]
   :jvm-opts ["-XX:-OmitStackTraceInFastThrow"
              "-Xms2g"
              "-Xmx2g"]
@@ -87,9 +89,7 @@
         :default (complement :system)}}
     :docs {
       :dependencies [
-        [clojang/codox-theme "0.2.0-SNAPSHOT"]
-        [markdown-clj "1.0.2"]
-        [selmer "1.11.7"]]
+        [clojang/codox-theme "0.2.0-SNAPSHOT"]]
       :plugins [
         [lein-codox "0.10.3"]
         [lein-marginalia "0.9.1"]]
@@ -97,14 +97,14 @@
       :codox {
         :project {
           :name "CMR OPeNDAP"
-          :description "OPeNDAP Integration in the CMR"}
+          :description "OPeNDAP/CMR Integration"}
         :namespaces [#"^cmr\.opendap\.(?!dev)"]
         :metadata {
           :doc/format :markdown
           :doc "Documentation forthcoming"}
         :themes [:clojang]
         :doc-paths ["resources/docs/markdown"]
-        :output-path "docs/current"}}}
+        :output-path "resources/public/docs/reference"}}}
   :aliases {
     ;; Dev & Testing Aliases
     "repl" ["do"
@@ -141,9 +141,9 @@
     ;; Documentation
     "codox" ["with-profile" "+docs" "codox"]
     "marginalia" ["with-profile" "+docs"
-      "marg" "--dir" "docs/current"
-             "--file" "marginalia.html"
-             "--name" "Clojure Protocol Buffer Library"]
+      "marg" "--dir" "resources/public/docs/marginalia"
+             "--file" "index.html"
+             "--name" "OPeNDAP/CMR Integration"]
     "docs" ["do"
       ["codox"]
       ["marginalia"]]


Upgraded to latest 1.3 clj version

Upgraded to latest 1.3 clj version

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (defproject trammel "0.6.0-SNAPSHOT"
   :description "A library providing contracts programming for Clojure."
-  :dependencies [[org.clojure/clojure "1.3.0-master-SNAPSHOT"]]
+  :dependencies [[org.clojure/clojure "1.3.0-beta1"]]
   :dev-dependencies [[lein-clojars "0.5.0-SNAPSHOT"]
                      [jline "0.9.94"]
                      [swank-clojure "1.2.1"]


updates server deps

updates server deps

--- project.clj
+++ project.clj
@@ -3,11 +3,11 @@
   :url "https://github.com/build-canaries/nevergreen"
   ; use lein deps :tree to check dependency problems and actual versions used
   :dependencies [[org.clojure/clojure "1.10.3"]
-                 [ring "1.9.4" :exclusions [org.eclipse.jetty/jetty-server]]
+                 [ring "1.9.5" :exclusions [org.eclipse.jetty/jetty-server]]
                  [org.eclipse.jetty/jetty-server "9.4.44.v20210927"]
                  [compojure "1.6.2" :exclusions [ring/ring-codec]]
                  [environ "1.2.0"]
-                 [cheshire "5.10.1"]
+                 [cheshire "5.10.2"]
                  [clj-cctray "2.1.1"]
                  ; commons-* are excluded as ring pulls in newer versions
                  [clj-http "3.12.3" :exclusions [commons-codec commons-io]]
@@ -20,9 +20,9 @@
                  [camel-snake-kebab "0.4.2"]
                  [com.cemerick/url "0.1.1" :exclusions [com.cemerick/clojurescript.test]]
                  [ch.qos.logback/logback-classic "1.2.10" :exclusions [org.slf4j/slf4j-api]]
-                 [org.slf4j/log4j-over-slf4j "1.7.32"]
-                 [org.slf4j/jul-to-slf4j "1.7.32"]
-                 [org.slf4j/jcl-over-slf4j "1.7.32"]]
+                 [org.slf4j/log4j-over-slf4j "1.7.35"]
+                 [org.slf4j/jul-to-slf4j "1.7.35"]
+                 [org.slf4j/jcl-over-slf4j "1.7.35"]]
   :min-lein-version "2.0.0"
   :uberjar-name "nevergreen-standalone.jar"
   :main nevergreen.app
@@ -36,7 +36,7 @@
             "coverage"      ["with-profile" "+test" "cloverage"]
             "check-updates" ["ancient" ":all"]}
   :profiles {:dev  {:plugins [[lein-ancient "0.7.0"]
-                              [jonase/eastwood "1.1.0"]
+                              [jonase/eastwood "1.2.2"]
                               [lein-cloverage "1.2.2"]
                               [lein-eftest "0.5.9"]]}
              :test {:jvm-opts ["-Dlogback.configurationFile=./src/logback-tests.xml"]}}


Update project.clj move to compojure.

Update project.clj move to compojure.

- Increment version number.
- Use http-kit and avoid lein ring
- Upgrade lots of deps.
- Add ragtime for migrations.

--- project.clj
+++ project.clj
@@ -1,17 +1,24 @@
-(defproject cadence "0.2.1"
-  :description "Use pattern recognition to match users with Cadence.js
-               output."
+(defproject cadence "0.3.0-SNAPSHOT"
+  :description "Use pattern recognition to match users with Cadence.js output."
   :url "https://cadence.herokuapp.com/"
   :min-lein-version "2.0.0"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :plugins [[lein-marginalia "0.7.0"]]
-  :dependencies [[org.clojure/clojure "1.3.0"]
-                 [noir "1.2.2"]
-                 [net.tanesha.recaptcha4j/recaptcha4j "0.0.7"]
-                 [com.novemberain/monger "1.0.0-beta4"]
+  :profiles {:dev {:plugins [[lein-kibit "0.0.7-SNAPSHOT"]
+                             [lein-marginalia "0.7.1"]]}}
+  :dependencies [[org.clojure/clojure "1.4.0"]
+                 [lib-noir "0.3.5"]
+                 [ragtime/ragtime.core "0.3.2"]
+                 [compojure "1.1.3"]
+                 [hiccup "1.0.2"]
+                 [http-kit "2.0.0-RC4"]
+                 [ring-refresh "0.1.1"]
+                 [bultitude "0.1.7"]
+                 [com.cemerick/drawbridge "0.0.6"]
+                 [net.tanesha.recaptcha4j/recaptcha4j "0.0.8"]
+                 [com.novemberain/monger "1.4.2"]
                  [amalloy/ring-gzip-middleware "0.1.1"]
                  [ring-middleware-format "0.1.1"]
-                 [com.cemerick/friend "0.0.8"]
-                 [com.leadtune/clj-ml "0.2.1"]]
+                 [com.cemerick/friend "0.1.3"]
+                 [com.leadtune/clj-ml "0.2.4"]]
   :main cadence.server)


Bump dependencies

Bump dependencies

--- project.clj
+++ project.clj
@@ -16,7 +16,7 @@
                  [slingshot "0.12.2"]
                  [potemkin "0.4.3"]]
   :profiles {:dev {:dependencies [;; optional deps
-                                  [cheshire "5.7.0"]
+                                  [cheshire "5.7.1"]
                                   [crouton "0.1.2"]
                                   [org.clojure/tools.reader "0.10.0"]
                                   [com.cognitect/transit-clj "0.8.300"]
@@ -25,8 +25,8 @@
                                   [org.clojure/clojure "1.8.0"]
                                   [org.clojure/tools.logging "0.3.1"]
                                   [log4j "1.2.17"]
-                                  [ring/ring-jetty-adapter "1.5.1"]
-                                  [ring/ring-devel "1.5.1"]
+                                  [ring/ring-jetty-adapter "1.6.1"]
+                                  [ring/ring-devel "1.6.1"]
                                   ;; caching example deps
                                   [org.clojure/core.cache "0.6.5"]
                                   ]}


Fix dependencies

Fix dependencies

--- project.clj
+++ project.clj
@@ -17,9 +17,10 @@
                  [org.jboss.logging/jboss-logging "3.3.0.Final"]
                  [ring "1.5.1"]
                  [buddy "1.3.0"]
-                 [com.taoensso/nippy "2.13.0"]
+                 [com.taoensso/nippy "2.13.0"
+                  :exclusions [org.clojure/tools.reader]]
                  [ring/ring-json "0.4.0"]
-                 [tranchis/photon-db "0.10.2"
+                 [tranchis/photon-db "0.10.4"
                   :exclusions [org.clojure/java.classpath]]
                  [org.clojure/tools.logging "0.3.1"]
                  [org.clojure/core.async "0.3.441"
@@ -47,7 +48,8 @@
                  [com.stuartsierra/component "0.3.2"]
                  ;; clojurescript
                  [org.clojure/clojurescript "1.9.495"
-                  :exclusions [org.clojure/tools.reader]]
+                  :exclusions [org.clojure/tools.reader
+                               com.google.guava/guava]]
                  [com.github.jsqlparser/jsqlparser "0.9.7"]
                  [jarohen/chord "0.8.0"
                   :exclusions [com.cognitect/transit-clj
@@ -64,14 +66,14 @@
                  [io.github.lukehutch/fast-classpath-scanner "2.0.17"]
                  [congomongo "0.5.0"]
                  #_[tranchis/photon-riak "0.9.31"]
-                 [tranchis/photon-h2 "0.10.1"
-                  :exclusions [org.clojure/tools.reader]]
-                 #_[tranchis/photon-cassandra "0.9.49"]
+                 [tranchis/photon-h2 "0.10.4"]
+                 [tranchis/photon-cassandra "0.10.5"
+                  :exclusions [com.google.guava/guava]]
                  #_[tranchis/photon-hazelcast "0.9.40"
                   :exclusions [com.fasterxml.jackson.core/jackson-databind]]
                  #_[tranchis/photon-redis "0.9.42"]
-                 [tranchis/photon-mongo "0.10.3"]
-                 [tranchis/photon-file "0.10.1" :exclusions [tranchis/photon-db]]]
+                 [tranchis/photon-mongo "0.10.4"]
+                 [tranchis/photon-file "0.10.4"]]
   :ring {:handler photon.core/figwheel-instance
          :init photon.core/figwheel-init!}
   :plugins [[lein-cljsbuild "1.1.5" :exclusions [org.clojure/clojure]]


Remove SNAPSHOT, means we can't lein install


make LambdaCD dependency version configurable so that we can test if lambdacd-git works against different versions of the library

--- project.clj
+++ project.clj
@@ -1,4 +1,10 @@
-(defproject lambdacd-git "0.1.3-SNAPSHOT"
+(def lambdacd-version (or
+                        (System/getenv "LAMBDACD_VERSION")
+                        "0.6.1"))
+
+(println "Building against LambdaCD version" lambdacd-version)
+
+(defproject lambdacd-git lambdacd-version
   :description "Git support for LambdaCD"
   :url "https://github.com/flosell/lambdacd-git"
   :license {:name "Apache License, version 2.0"
@@ -9,7 +15,7 @@
                  [com.jcraft/jsch.agentproxy.usocket-jna "0.0.8"]
                  [com.jcraft/jsch.agentproxy.sshagent "0.0.8"]
                  [me.raynes/conch "0.8.0"]
-                 [lambdacd "0.6.1"]
+                 [lambdacd ~lambdacd-version]
                  [ring/ring-core "1.2.2"]]
   :repositories {"jgit-repository" "https://repo.eclipse.org/content/groups/releases/"}
   :deploy-repositories [["clojars" {:creds :gpg}]


Updating Clojurescript, buddy libraries

Updating Clojurescript, buddy libraries

--- project.clj
+++ project.clj
@@ -3,15 +3,15 @@
   :url "https://mementoapp.herokuapp.com/"

   :dependencies [[org.clojure/clojure "1.7.0"]
-                 [org.clojure/clojurescript "1.7.10" :scope "provided"]
+                 [org.clojure/clojurescript "1.7.28" :scope "provided"]
                  [org.clojure/core.async "0.1.346.0-17112a-alpha"]
                  [org.clojure/java.jdbc "0.4.1"]
                  [org.clojure/tools.nrepl "0.2.10"]
                  [org.clojure/tools.reader "0.9.2"]
                  [bouncer "0.3.3"]
-                 [buddy/buddy-auth "0.6.0" :exclusions [com.fasterxml.jackson.core/jackson-core]]
+                 [buddy/buddy-auth "0.6.1" :exclusions [com.fasterxml.jackson.core/jackson-core]]
                  [buddy/buddy-hashers "0.6.0"]
-                 [buddy/buddy-sign "0.6.0"]
+                 [buddy/buddy-sign "0.6.1"]
                  [clj-dbcp "0.8.1"]
                  [cljs-ajax "0.3.14"]
                  [cljsjs/react-bootstrap "0.23.7-0" :exclusions [org.webjars.bower/jquery]]


Version 0.4.17

Version 0.4.17

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject kixi/terraboot "0.4.17-SNAPSHOT"
+(defproject kixi/terraboot "0.4.17"
   :description "Terraform modules for kixi framework"
   :url "http://example.com/FIXME"
   :license {:name "Eclipse Public License"


Use warn on reflection

Use warn on reflection

--- project.clj
+++ project.clj
@@ -16,10 +16,14 @@
   :scm {:name "git"
         :url "git@github.com:orionsbelt-battlegrounds/obb-rules.git"}

-  :profiles {:dev
-             {:dependencies [[org.clojure/test.check "0.6.2"]
-                             [criterium "0.4.3"]]
-              :plugins [[com.jakemccrary/lein-test-refresh "0.5.4"]
-                        [lein-cloverage "1.0.2"]]}}
+  :profiles {:production {
+                   :global-vars {*warn-on-reflection* false
+                                 *assert* false}}
+             :dev {:dependencies [[org.clojure/test.check "0.6.2"]
+                                  [criterium "0.4.3"]]
+                   :global-vars {*warn-on-reflection* true
+                                 *assert* true}
+                   :plugins [[com.jakemccrary/lein-test-refresh "0.5.4"]
+                             [lein-cloverage "1.0.2"]]}}

   )


adding aws

adding aws

--- project.clj
+++ project.clj
@@ -77,7 +77,7 @@
             }

   :aot [supernal.launch capistrano.remoter proxmox.provider vsphere.provider
-        celestial.core celestial.puppet-standalone celestial.launch]
+        aws.provider celestial.core celestial.puppet-standalone celestial.launch]

   :repositories  {
                   "bintray"  "http://dl.bintray.com/content/narkisr/narkisr-jars"


add direct java support

add direct java support

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject proto-facade "0.2.0"
+(defproject proto-facade "0.3.0"
   :description "Utility that exposes a ProtoBuff Message as a Map"
   :url "https://github.com/gerritjvv/proto-facade"
   :license {:name "Apache v2"


Version 0.4.0-alpha4

Version 0.4.0-alpha4

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lein-droid/lein-droid "0.4.0-SNAPSHOT"
+(defproject lein-droid/lein-droid "0.4.0-alpha4"
   :description "Plugin for easy Clojure/Android development and deployment"
   :url "https://github.com/clojure-android/lein-droid"
   :license {:name "Eclipse Public License"


Update compliment

Update compliment

--- project.clj
+++ project.clj
@@ -4,7 +4,7 @@
   :dependencies [[com.github.insubstantial/substance "7.2.1"]
                  [com.fifesoft/autocomplete "2.5.0"]
                  [com.fifesoft/rsyntaxtextarea "2.5.0"]
-                 [compliment "0.0.2"]
+                 [compliment "0.0.3"]
                  [leiningen "2.3.3"]
                  [lein-cljsbuild "0.3.3"]
                  [lein-droid "0.2.0"]


Update dependencies

Update dependencies

--- project.clj
+++ project.clj
@@ -13,11 +13,11 @@
                  [clj-time "0.8.0"]
                  [org.clojure/data.json "0.2.5"]
                  [javax.servlet/servlet-api "2.5"]
-                 [ring/ring-jetty-adapter "1.2.2"]
-                 [environ "0.5.0"]
+                 [ring/ring-jetty-adapter "1.3.1"]
+                 [environ "1.0.0"]
                  [obb-rules "1.0.0"]
                  [obb-ranking "1.0.0"]
-                 [compojure "1.2.0"]]
+                 [compojure "1.2.1"]]

   :plugins [[environ/environ.lein "0.2.1"]
             [lein-ring "0.8.12"]]


updates server deps

updates server deps

--- project.clj
+++ project.clj
@@ -2,8 +2,8 @@
   :description "A build monitor with attitude"
   :url "https://github.com/build-canaries/nevergreen"
   :dependencies [[org.clojure/clojure "1.10.3"]
-                 [ring "1.9.2" :exclusions [org.eclipse.jetty/jetty-server]]
-                 [org.eclipse.jetty/jetty-server "9.4.39.v20210325"]
+                 [ring "1.9.3" :exclusions [org.eclipse.jetty/jetty-server]]
+                 [org.eclipse.jetty/jetty-server "9.4.40.v20210413"]
                  [compojure "1.6.2" :exclusions [ring/ring-codec]]
                  [environ "1.2.0"]
                  [cheshire "5.10.0"]
@@ -35,7 +35,7 @@
             "check-updates" ["ancient" ":all"]
             "audit"         ["nvd" "check"]}
   :profiles {:dev  {:plugins [[lein-ancient "0.7.0"]
-                              [jonase/eastwood "0.3.14"]
+                              [jonase/eastwood "0.4.0"]
                               [lein-cloverage "1.2.2"]
                               [lein-nvd "1.4.1"]
                               [lein-eftest "0.5.9"]]}


removed checkouts

removed checkouts

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject untangled "0.2.0-SNAPSHOT"
+(defproject untangled "0.3.0-SNAPSHOT"
   :description "An opinionated data model for use with (and following) the sensibilities of Quiescent."
   :url ""
   :license {:name "NAVIS"
@@ -13,14 +13,14 @@
                  [lein-cljsbuild "1.1.0"]
                  ]

-  :source-paths ["src" "spec" "checkouts/smooth-spec/src"]
+  :source-paths ["src" "spec" ]

   :plugins [[lein-cljsbuild "1.1.0"]
             [lein-figwheel "0.4.1"]]

   :cljsbuild {:builds
               [{:id           "test"
-                :source-paths ["src" "dev" "spec" "checkouts/smooth-spec/src"]
+                :source-paths ["src" "dev" "spec" ]
                 :figwheel     {:on-jsload "cljs.user/on-load"}
                 :compiler     {:main                 cljs.user
                                :output-to            "resources/public/js/test/test.js"
@@ -31,7 +31,7 @@

   :profiles {
              :dev {
-                   :source-paths ["src" "test" "dev" "checkouts/smooth-spec/src"]
+                   :source-paths ["src" "test" "dev" ]
                    :dependencies [[leiningen "2.5.3"]
                                   [leiningen-core "2.5.3"]]
                    :repl-options {


Add in all properties which can be set

Add in all properties which can be set

--- project.clj
+++ project.clj
@@ -42,10 +42,17 @@
             [lein-release "1.0.5"]
             [lein-ring "0.8.13"]]

-  :env {:aws-sqs-enabled false
-        :aws-role-name "pedantic"
+  :env {:aws-role-name "pedantic"
+        :aws-sqs-enabled false
+        :backoff-enabled false
+        :backoff-maximum-millis 10000
         :credentials-ttl-enabled false
         :credentials-ttl-minutes 25
+        :default-access-log-enabled false
+        :default-connection-draining-enabled true
+        :default-connection-draining-timeout-seconds 300
+        :default-cross-zone-enabled true
+        :default-idle-timeout-seconds 60
         :environment-name "dev"
         :github-auth-token "github-auth-token"
         :github-base-url "http://github/api/v3/"


Version 0.4.1

Version 0.4.1

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject kraken-works/lein-template "0.4.1-SNAPSHOT"
+(defproject kraken-works/lein-template "0.4.1"
   :description "Leiningen template for kraken-works components"
   :url "https://github.com/democracyworks/kraken-works-lein-template"
   :license {:name "Eclipse Public License"


dependency upgrades

dependency upgrades

--- project.clj
+++ project.clj
@@ -36,17 +36,17 @@
                  [honeysql "0.4.3"]
                  [org.postgresql/postgresql "9.3-1100-jdbc41"]
                  [com.zaxxer/HikariCP "1.3.8"]
-                 [ragtime/ragtime.core "0.3.6"]
-                 [ragtime/ragtime.sql "0.3.6"]
+                 [ragtime/ragtime.core "0.3.7"]
+                 [ragtime/ragtime.sql "0.3.7"]
                  ;; database test
-                 [com.h2database/h2 "1.4.177"]
+                 [com.h2database/h2 "1.4.178"]

                  ;; web, rest
                  [org.clojure/data.json "0.2.4"]
                  [ring/ring-devel "1.2.2"]
                  [ring/ring-core "1.2.2"]
                  [ring/ring-json "0.3.1"]
-                 [compojure "1.1.6"]
+                 [compojure "1.1.8"]
                  ;; 2.1.18 seems to have some issues
                  [http-kit "2.1.16"]
                  [cheshire "5.3.1"]
@@ -67,7 +67,7 @@
                  [metosin/compojure-api "0.11.1"]
                  [metosin/ring-swagger-ui "2.0.12-1"]

-                 [prismatic/schema "0.2.1"]
+                 [prismatic/schema "0.2.2"]
                  [prismatic/plumbing "0.2.2"]

                  ;; util


bump version

bump version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject salava "2.9.1"
+(defproject salava "2.9.2"
   :description "Salava application server"
   :url "http://salava.org"
   :license {:name "Apache 2.0"


Release 0.2.4

Release 0.2.4

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clj-http "0.2.4-SNAPSHO"
+(defproject clj-http "0.2.4"
   :description "A Clojure HTTP library wrapping the Apache HttpComponents client."
   :repositories {"sona" "http://oss.sonatype.org/content/repositories/snapshots"}
   :dependencies [[org.clojure/clojure "1.3.0"]


bump gorilla version

bump gorilla version

--- project.clj
+++ project.clj
@@ -53,7 +53,7 @@
   :repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}

   :plugins [[lein-cljsbuild "1.0.3"]
-            [lein-gorilla "0.3.3"]
+            [lein-gorilla "0.3.4"]
             [lein-figwheel "0.1.3-SNAPSHOT"]]

   :figwheel {:http-server-root "public"


prevent default on square select

prevent default on square select

--- src/chessground/ui.cljs
+++ src/chessground/ui.cljs
@@ -78,7 +78,9 @@
                       key (aget (.-props this) "key")
                       ctrl (aget (.-props this) "ctrl")]
                   (let [ev (if common/touch-device? "touchstart" "mousedown")]
-                    (.addEventListener el ev #(ctrl :select-square key)))
+                    (.addEventListener el ev (fn [e]
+                                               (.preventDefault e)
+                                               (ctrl :select-square key))))
                   (drag/square el))))
      :render
      (fn []


Reformatted COA for readability

Reformatted COA for readability

--- src/cia/schemas/coa.clj
+++ src/cia/schemas/coa.clj
@@ -11,21 +11,38 @@
    c/GenericStixIdentifiers
    {:valid_time c/ValidTime
     (s/optional-key :stage)
-    (describe v/COAStage "specifies what stage in the cyber threat management lifecycle this Course Of Action is relevant to ")
+
+    (describe v/COAStage
+              "specifies what stage in the cyber threat management lifecycle this Course Of Action is relevant to ")
+
     (s/optional-key :type)
-    (describe v/COAType "type of this CourseOfAction")
+    (describe v/COAType
+              "type of this CourseOfAction")
+
     (s/optional-key :objective)
-    (describe [s/Str] "characterizes the objective of this Course Of Action") ;; Squashed / simplified
+    (describe [s/Str]
+              "characterizes the objective of this Course Of Action") ;; Squashed / simplified
+
     (s/optional-key :impact)
-    (describe s/Str "characterizes the estimated impact of applying this Course Of Action")
+    (describe s/Str
+              "characterizes the estimated impact of applying this Course Of Action")
+
     (s/optional-key :cost)
-    (describe v/HighMedLow "characterizes the estimated cost for applying this Course Of Action")
+    (describe v/HighMedLow
+              "characterizes the estimated cost for applying this Course Of Action")
+
     (s/optional-key :efficacy)
-    (describe v/HighMedLow "effectiveness of this Course Of Action in achieving its targeted Objective")
+    (describe v/HighMedLow
+              "effectiveness of this Course Of Action in achieving its targeted Objective")
+
     (s/optional-key :source)
-    (describe s/Str "Source of this Course Of Action")
+    (describe s/Str
+              "Source of this Course Of Action")
+
     (s/optional-key :related_COAs)
-    (describe rel/RelatedCOAs "identifies or characterizes relationships to one or more related courses of action")
+    (describe rel/RelatedCOAs
+              "identifies or characterizes relationships to one or more related courses of action")
+
     ;; Not provided: handling
     ;; Not provided: parameter_observables ;; Technical params using the CybOX language
     ;; Not provided: structured_COA ;; actionable structured representation for automation


Fix geo->svg recursion.

Fix geo->svg recursion.

--- src/clj/c2/geo/core.clj
+++ src/clj/c2/geo/core.clj
@@ -17,9 +17,9 @@
   ;;This SVG rendering doesn't implement the full spec.
   (match [geo]
          [{:type "FeatureCollection" :features xs}]
-         (join (map geo-to-svg xs))
+         (join (map #(geo->svg % :projection projection) xs))

-         [{:type "Feature" :geometry g}] (geo-to-svg g)
+         [{:type "Feature" :geometry g}] (geo->svg g :projection projection)

          [{:type "Polygon" :coordinates xs}]
          (join (map coords->path xs))


Add docstrings to the queues

Add docstrings to the queues

If you read the source code of `defstate`, you'll notice that it
allows for a docstring argument

--- src/clj/mdr2/queues.clj
+++ src/clj/mdr2/queues.clj
@@ -4,21 +4,25 @@
    [mount.core :refer [defstate]]))

 (defstate encode
+  "Queue to asynchronously handle events to encode a production"
   :start (chan (buffer 30))

   :stop (when encode (close! encode)))

 (defstate archive
+  "Queue to asynchronously handle events to archive a production"
   :start (chan (buffer 30))

   :stop (when archive (close! archive)))

 (defstate repair
+  "Queue to asynchronously handle events to repair a production"
   :start (chan (buffer 30))

   :stop (when repair (close! repair)))

 (defstate notify-abacus
+  "Queue to asynchronously handle events to notify ABACUS of state changes in a production"
   :start (chan (buffer 30))

   :stop (when notify-abacus (close! notify-abacus)))


Don't set pixel density automatically to display density..

Some functions don't work as expected when display density is used, for example background-image. And generally this setting creates some confusion, see #202.

--- src/clj/quil/applet.clj
+++ src/clj/quil/applet.clj
@@ -198,9 +198,6 @@
       (.fullScreen this renderer)
       (.size this (int (first size)) (int (second size))
              renderer output-file))
-    ; setting pixel-density to support Retina display out-of-box.
-    ; Cannot use quil.core/pixel-density due to cycle dependency.
-    (.pixelDensity this (.displayDensity this))
     ; calling user-provided :settings handler, if any
     (with-applet this
       (settings-fn))))


remove `extend-type function` to `IWithMeta`, move logic into `with-meta`

--- src/cljs/cljs/core.cljs
+++ src/cljs/cljs/core.cljs
@@ -517,19 +517,8 @@

 (extend-type function
   Fn
-
   IMeta
-  (-meta [_] nil)
-
-  IWithMeta
-  (-with-meta [f meta]
-    (with-meta
-      (reify
-        Fn
-        IFn
-        (-invoke [_ & args]
-          (apply f args)))
-      meta)))
+  (-meta [_] nil))

 (extend-type default
   IHash
@@ -912,11 +901,21 @@
          (recur ret (first ks) (next ks))
          ret))))

+(declare fn?)
+
 (defn with-meta
   "Returns an object of the same type and value as obj, with
   map m as its metadata."
   [o meta]
-  (-with-meta o meta))
+  (if (and (fn? o) (not (satisfies? IWithMeta o)))
+    (with-meta
+      (reify
+        Fn
+        IFn
+        (-invoke [_ & args]
+          (apply o args)))
+      meta)
+    (-with-meta o meta)))

 (defn meta
   "Returns the metadata of obj, returns nil if there is no metadata."


* src/cljs/cljs/core.cljs: vector-seqs now implement ICollection

--- src/cljs/cljs/core.cljs
+++ src/cljs/cljs/core.cljs
@@ -2558,7 +2558,10 @@
               (vector-seq v offset)
               ())))
         ISeqable
-        (-seq [vseq] vseq)))))
+        (-seq [vseq] vseq)
+        ICollection
+        (-conj [this o]
+          (cons o this))))))

 (deftype PersistentVector [meta cnt shift root tail ^:mutable __hash]
   Object


Some debug data have been removed from streams ns

--- core/src/cljc/hellhound/streams.cljc
+++ core/src/cljc/hellhound/streams.cljc
@@ -50,9 +50,6 @@
     (fn []
       ;; TODO: We need to handle the situation which the
       ;; stream is closed.
-      (println "xxxxxxxxxxxxxxxxxxxx")
-      (println s)
-      (println v)
       (f @(put! s v))))))

 ;; TODO: Is there any scenario for running a blocking code on the


Using top from components in core

Using top from components in core

--- src/cljs/ohds/core.cljs
+++ src/cljs/ohds/core.cljs
@@ -70,7 +70,7 @@

 (defn root-component []
   [:div {:class "container"}
-   [:div {:class "row"} [top]]
+   [:div {:class "row"} [c/top]]
    [:div {:style {:padding "20px"}}]
    [:div
     (case (:page @app-state)


Calculate screen size only when it is requested. This allows cljs version work in no-screen servers.

--- src/cljx/quil/core.cljx
+++ src/cljx/quil/core.cljx
@@ -3442,11 +3442,6 @@
     (.getScreenSize default-toolkit)))

 #+clj
-(def ^{:private true} orig-screen-width
-  (let [screen (current-screen)]
-    (.width screen)))
-
-#+clj
 (defn
   ^{:requires-bindings false
     :processing-name "displayWidth"
@@ -3456,12 +3451,7 @@
   screen-width
   "Returns the width of the main screen in pixels."
   []
-  orig-screen-width)
-
-#+clj
-(def ^{:private true} orig-screen-height
-  (let [screen (current-screen)]
-    (.height screen)))
+  (.width (current-screen)))

 #+clj
 (defn
@@ -3473,7 +3463,7 @@
   screen-height
   "Returns the height of the main screen in pixels."
   []
-  orig-screen-height)
+  (.height (current-screen)))

 (defn
   ^{:requires-bindings true


minor fix

minor fix

--- src/clojure2d/color.clj
+++ src/clojure2d/color.clj
@@ -142,7 +142,7 @@
     (Color. (.getRed cc)
             (.getGreen cc)
             (.getBlue cc)
-            (m/round (clamp255 a)))))
+            (clamp255 a))))

 (defn make-awt-color
   "Create java.awt.Color object. Use with `core/set-awt-color` or `core/set-awt-background`."


Added comments to four functions.

Added comments to four functions.

--- src/clouseau/server.clj
+++ src/clouseau/server.clj
@@ -462,6 +462,7 @@
     (or new-user-name old-user-name))

 (defn generate-normal-response
+    "Generate server response in HTML format."
     [products package package-descriptions ccs-description
      products-per-description products-without-descriptions new-description user-name]
      (let [html-output (html-renderer products package package-descriptions ccs-description products-per-description products-without-descriptions new-description user-name)]
@@ -474,6 +475,7 @@
                 (http-response/content-type "text/html")))))

 (defn generate-txt-normal-response
+    "Generate server response in text format."
     [products package package-descriptions ccs-description
      products-per-description products-without-descriptions new-description user-name]
      (let [text-output (text-renderer products package package-descriptions ccs-description products-per-description products-without-descriptions new-description user-name)]
@@ -482,11 +484,13 @@
                 (http-response/content-type "text/plain"))))

 (defn generate-error-response
+    "Generate error message in HTML format in case any error occured in Clouseau."
     [package user-name message]
     (-> (http-response/response (render-error-page package user-name message))
         (http-response/content-type "text/html")))

 (defn generate-txt-error-response
+    "Generate error message in text/plain format in case any error occured in Clouseau."
     [package user-name message]
     (-> (http-response/response (str "Sorry, error occured in Clouseau:" message))
         (http-response/content-type "text/plain")))


floating ip test works

floating ip test works

--- test/celestial/integration/workflows/openstack.clj
+++ test/celestial/integration/workflows/openstack.clj
@@ -4,11 +4,13 @@
   (:require
     [celestial.fixtures.core :refer (with-defaults is-type? with-admin with-conf)]
     [celestial.persistency.systems :as s]
-    [celestial.fixtures.data :refer
-     (redis-type local-conf redis-openstack)]
+    [celestial.fixtures.data :refer (redis-type local-conf redis-openstack)]
     [celestial.fixtures.populate :refer (populate-system)]
     [celestial.integration.workflows.common :refer (spec get-spec)]
-    [celestial.workflows :as wf])
+    [celestial.workflows :as wf]
+    [openstack.networking :refer (addresses-ip)]
+    [clojure.java.data :refer [from-java]]
+    [openstack.provider :refer (servers)])
   (:use midje.sweet)
  )

@@ -38,14 +40,16 @@
           (wf/puppetize redis-type (spec)) => nil
           (wf/destroy (spec)) => nil)

-      (fact "openstack floating ip":integration :openstack :workflow
+      (fact "openstack floating ip" :integration :openstack :workflow :floating
         ; will be run only if FIP env var is defined
         (when-let [fip (System/getenv "FIP")]
-           (wf/create (spec {:machine {:ip fip}})) => nil
+           (s/partial-system ((spec) :system-id) {:openstack {:floating-ip fip}})
            (:openstack (spec)) => (contains {:floating-ip fip})
+           (wf/create (spec)) => nil
+           (let [{:keys [tenant instance-id networks]} (:openstack (spec))]
+             (second (addresses-ip (.get (servers tenant) instance-id) (first networks))) => fip)
            (wf/stop (spec)) => nil
            (wf/reload (spec)) => nil
-           #_(instance-desc (get-spec :aws :endpoint) (get-spec :aws :instance-id)) => (contains {:public-ip-address fip})
            (:openstack (spec)) => (contains {:floating-ip fip})
            (wf/destroy (spec)) => nil
           ))


Tests for correct understanding of L2 normalisation

--- test/clj/clojurewerkz/statistiker/scaling_test.clj
+++ test/clj/clojurewerkz/statistiker/scaling_test.clj
@@ -25,8 +25,8 @@

 (deftest l2-normalize-test
-  (is (= [(double (/ 10 125))
-          (double (/ 5 125))]
+  (is (= [(double (/ 10 (Math/sqrt 125)))
+          (double (/ 5 (Math/sqrt 125)))]
          (l2-normalize [10 5]))))


If I could read I would have known that this test was failing.

--- test/desdemona/functions/sample_functions_test.clj
+++ test/desdemona/functions/sample_functions_test.clj
@@ -9,5 +9,5 @@

 (deftest prepare-rows-test
   (let [got (prepare-rows {"line" "this is a log line"})
-        expected {"rows" {"line" "this is a log line"}}]
+        expected {:rows [{"line" "this is a log line"}]}]
     (is (= got expected))))


rethink output printing

rethink output printing

--- test/implementation/emission/plugins/fim_flare.clj
+++ test/implementation/emission/plugins/fim_flare.clj
@@ -2,85 +2,112 @@
     (:use midje.sweet midje.test-util midje.util)
     (:require [flare.core :as core]))

-(def f #(subject/generate-reports (core/diff %1 %2)))
+(def f #(subject/generate-reports (core/diff %2 %1)))
+
+;; Note: In all these tests, the actual is on the LEFT, expected on the right.
+;; That's consistent with other Midje functions and Midje's actual => expected notation.
+;;
+;; In evaluating the following, note that both actual and expected will be printed before
+;; the lines with the differences. Or just Expected?

 (fact "representing differences in maps"
   (future-fact
-    (f '{:a a :b b} '{:a Z :b b})
-    => ["expected `a`, got `Z` at {:a % ...}"])    ; "in [:a] expected: a, was Z"
+    (f '{:a Z :b b}
+       '{:a a :b b})
+    => ["At key :a, got `Z` instead of `a`"])    ; "in [:a] expected: a, was Z"
+
+  (future-fact "Note that keys are not quoted"
+    (f '{:a Z, "b" Z, 3 Z, d Z, [1 2] Z}
+       '{:a 1, "b" 1, 3 1, d 1, [1 2] 1})
+    => ["At key :a, got `Z` instead of `1`"
+        "At key "b", got `Z` instead of `1`"
+        "At key 3, got `Z` instead of `1`"
+        "At key d, got `Z` instead of `1`"
+        "At key [1 2], got `Z` instead of `1`"])

   (future-fact
-    (f '{:a a :b b :c c} '{:a Z :b b :c Y})
-    => ["Expected `a`, got `Z` at {:a % ...}"      ; "in [:a] expected: a, was Z"
-        "Expected `a`, got `Z` at {:c % ...}"])    ; "in [:c] expected: c, was Y"
+    (f '{:a Z :b b :c Y}
+       '{:a a :b b :c c})
+    => ["At key :a, got `Z` instead of `a`"      ; "in [:a] expected: a, was Z"
+        "At key :c, got `Y` instead of `c`"])    ; "in [:c] expected: c, was Y"

   (future-fact "extra actual elements"
-    (f '{:a a :b b} '{:a a :b b :c c})
-    => ["Actual has extra key `:c` at {:c % ...}"] ; "map contained key: :c, but not expected."
+    (f '{:a a :b b :c c}
+       '{:a a :b b})
+    => ["Extra key `:c`"] ; "map contained key: :c, but not expected."

-    (f '{:a a :b b} '{:a a :b b :c c :d d})
-    => ["Actual has extra keys `:c` and `:d` at {:c % ...}"]) ; use cl-format
+    (f '{:a a :b b :c c :d d}
+       '{:a a :b b})
+    => ["Extra keys `:c` and `:d`"]) ; use cl-format

   (future-fact "Missing actual elements"
-    (f '{:a a :b b} '{:a a})
-    => ["Actual is missing key `:b` at {...}"]
+    (f '{:a a}
+       '{:a a :b b})
+    => ["Missing key `:b`"]

-    (f '{:a a :b b} '{})
-    => ["Actual is missing keys `:a` and `:b` at {...}"]) ; alphabetic if sortable
+    (f  '{}
+        '{:a a :b b})
+    => ["Missing keys `:a` and `:b`"]) ; alphabetic if sortable

   (future-fact "maps within maps"
-    (f '{:a {:a a}} '{:a {:a z}})
-    => ["expected `a`, got `Z` at {:a {:a %...}}"]
+    (f '{:a {:a Z}}
+       '{:a {:a a}} )
+    => ["At path [:a :a], got `Z` instead of `a`"]

-    (f '{1 {:a a :b b}} '{1 {:a a :b b :c c}})
-    => ["Actual has extra key `:c` at {1 {:c % ...}}"]
+    (f '{1 {:a a :b b :c c}}
+       '{1 {:a a :b b}})
+    => ["At path [1], value has extra key `:c`"]

-    (f '{1 {:a a :b b}} '{1 {:a a}})
-    => ["Actual is missing key `:b` at {1 {...}}"])
+    (f '{1 {}}
+       '{1 {:a a :b b}})
+    => ["At path [1], value has missing keys :a and `:b`"])
 )

 (fact "representating differences in sequentials"
-  (future-fact "indexes are highlighted with `%`"
-    (f '[a] '[Z])
-    => [       "Expected `a`, got `Z` at [%0..."])
+  (future-fact "The index is given instead of a key"
+    (f '[Z]
+       '[a])
+    => [       "At index 0, got `Z` instead of `a`"])
         ;; vs. "in [0] expected: a, was Z"

   (future-fact "use the `don't care about value` symbol for elements 1 and 2"
-    (f '[a b c] '[a Z Y])
-    => [   "Expected `b`, got `Z` at [_ %1..."
+    (f '[a Z Y]
+       '[a b c])
+    => [   "At index 1, got `Z` instead of `b`"
         ;; "in [1] expected: b, was Z"
-           "Expected `c`, got `Y` at [_ _ %2..."])
+           "At index 2, got `Y` instead of `c`"])
         ;; "in [2] expected: c, was Y"

-  (future-fact "use ellipses for elements further than 2"
-    (f '[a b c d] '[a b c Z])
-    => [   "Expected `d`, got `Y` at [... %3..."])
-        ;; "in [3] expected: d, was Y"
+  (future-fact "note that entire differing element is printed"
+    (f '[a [Z z zz] ]
+       '[a b        ] )
+    => ["At index 1, got `[Z z zz] instead of `b`"])

-  (future-fact "note that entire differing element is printed"
-    (f '[a b c] '[a [Z z zz]])
-    => ["Expected `b`, got `[Z z zz]` at [_ %1..."])
-
-  (future-fact "Actual has extra elements; location is last matching element"
-    (f '[a b] '[a b c d e])
-    => [  "Actual has 3 extra elements `(c d e)` at [_ _ %2..."])
+  (future-fact "Actual has extra elements"
+    (f '[a b c d e]
+       '[a b      ])
+    => [  "Actual has 3 extra elements `(c d e)`"])
         ; "expected length of sequence is 2, actual length is 5.\nactual has 3 elements in excess: (c d e)"

-  (future-fact "Actual has too few; location is one past end of actual"
-    (f '[a b c d e f g] '[a b c d e])
-    => [   "Actual is missing `f` and 1 other element at [... %5...]"])
+  (future-fact "Actual has too few"
+    (f '[a b c d e    ]
+       '[a b c d e f g])
+    => [   "Actual is missing tail beginning with `f` (index 5)"])
         ;; "expected length of sequence is 7, actual length is 5.\nactual is missing 2 elements: (f g)"

   (future-fact "sequentials within sequentials"
-    (f '[1 [2 3]   [4 5] [6 7] 8]
-       '[1 [2 3 X] [4  ] [6 Y] Z])
-    => ["Actual has 1 extra element `(X)` at [_ %1[_ %1...]]
+    (f '[1 [2 3 X] [4  ] [6 Y] Z]
+       '[1 [2 3]   [4 5] [6 7] 8])
+    => ["At index [0 1], actual has 1 extra element `(X)`"
+        "At index [0 2], actual is missing tail beginning with `5` (index 1)"
+        "At index [0 3], got `Y` instead of `7`"
+        "At index 4, got `Z` instead of `8`"])
 )

-
-
-;; (fact "mixtures"
-;;   (future-fact
-;;     (f '{:a [a b] :b b} '{:a [a Z] :b b})
-;;     => ["At [%0 {:a % ...} ...}, expected `a`, actual `Z`"])    ; "in [:a] expected: a, was Z"
-;; )
+(fact "mixtures"
+  (future-fact
+    (f '{:a [a Z] :b b :c 1}
+       '{:a [a b] :b b     })
+    ["At path [:a 1], got `Z` instead of `b`"
+     "At key :a, extra key `:c`"])
+)


draw signup button after non-logged-in users access the app

--- src-cljs/frontend/components/app.cljs
+++ src-cljs/frontend/components/app.cljs
@@ -110,10 +110,10 @@
             chat-opened? (get-in app state/chat-opened-path)
             right-click-learned? (get-in app state/right-click-learned-path)]

-        (if (:navigation-point app)
+        (if-let [nav-point (:navigation-point app)]
           (html
            [:div#app.app
-            ; (om/build early-access app)
+            ;; (om/build early-access app)
             (when (:show-landing? app)
               (om/build landing/landing (select-keys app [:show-landing? :document/id])
                         {:react-key "landing"}))
@@ -122,6 +122,11 @@
                   (om/build drawing/landing-background {:doc-id (:document/id app)
                                                         :subscribers (get-in app [:subscribers :info])}
                             {:react-key "landing-background"})
+
+                  (and (keyword-identical? :document nav-point)
+                       (empty? (:cust app)))
+                  (om/build drawing/signup-button {:db/id (:document/id app)}
+                            {:react-key "signup-animation"})

                   :else nil)


Negligible whitespace changes

Negligible whitespace changes

--- src/uruk/core.clj
+++ src/uruk/core.clj
@@ -401,9 +401,9 @@
   [result-sequence & [type-mapping]]
   ;; TODO throw informative exception if type not found in types
   (map (fn [item] (((merge xml-type-str->conv-fn
-                           (when (map? type-mapping)
-                             type-mapping))
-                    (.toString (.getValueType item))) item))
+                          (when (map? type-mapping)
+                            type-mapping))
+                   (.toString (.getValueType item))) item))
        (.toArray result-sequence)))


Resolved #22 by adding clone to snapshot creation and removed double update

--- kuona-core/src/kuona_core/collector/snapshot.clj
+++ kuona-core/src/kuona_core/collector/snapshot.clj
@@ -63,7 +63,6 @@
       (if (directory? local-dir)
         (git-pull url local-dir)
         (git-clone url local-dir))
-      (git-pull url local-dir)
       (let [loc-data      (cloc/loc-collector (fn [a] a) local-dir)
             build-data    (builder/collect-builder-metrics local-dir)
             snapshot-data (create-snapshot (-> repo :project) (loc-metrics loc-data) build-data)]


for performance reasons, don't merge the model: use bindings instead

--- src/babel/reader.clj
+++ src/babel/reader.clj
@@ -136,13 +136,6 @@
                             lexical-filter-fn
                             (fn [lexeme]
                               true))
-        target-model
-        (merge target-model
-               {:index-fn
-                (fn [spec]
-                  (->>
-                   ((:index-fn target-model) spec)
-                   (filter lexical-filter-fn)))})
         target-expression
         (target-timing-fn
          (binding [babel.generate/truncate? true]


use (:morph)  from babel.directory/models2 to generate target-specific source language

--- src/babel/reader.clj
+++ src/babel/reader.clj
@@ -185,8 +185,10 @@
                     (log/trace (str "json source semantics:" json-source-semantics))
                     (let [result
                           (first
-                           (db/exec-raw [(str "SELECT source.surface AS source, source.id AS source_id,
-                                              ARRAY_AGG(target.surface) AS target,ARRAY_AGG(target.root) AS target_root,
+                           (db/exec-raw [(str "SELECT source.surface AS source, source.id AS source_id,  "
+                                              " source.structure AS source_structure, "
+                                              " ARRAY_AGG(target.surface) AS target, "
+                                              " ARRAY_AGG(target.root) AS target_root,
                                               ARRAY_AGG(source.structure::jsonb) AS target_structure
                                         FROM (SELECT surface, source.structure->'synsem'->'sem'
                                                      AS sem,
@@ -205,7 +207,7 @@
                                                  AND target.structure->'synsem'->'sem' = ?::jsonb) AS target
                                           ON (source.surface IS NOT NULL)
                                          AND (target.surface IS NOT NULL) "
-                                              " GROUP BY source.surface,source.id")
+                                              " GROUP BY source.surface,source.id,source.structure")
                                          [source-language json-source-semantics target-language json-target-semantics]]
                                         :results))]
                       (if (nil? result)
@@ -223,9 +225,17 @@

                                 (dissoc :target_root) ;; targets' roots -> 'target_roots'
                                 (assoc :target_roots (read-array (:target_root result)))
+
+                                (dissoc :target_structure) ;; targets' structures -> 'target structures'
+
+                                (dissoc :source_structure)

-                                (dissoc :target_structure) ;; targets' structures -> 'target structures'
-
+                                (dissoc :source)
+                                (assoc :source
+                                       (let [morph (get @((get babel.directory/models2 source-language-keyword)) :morph)]
+                                         (morph (json-read-str (str (:source_structure result)))
+                                                :from-language target-language)))
+
                                 ((fn [retval]
                                    (or
                                     (and show-target-structures


Styling table for all books and add book form.

--- src/bookapp/view.clj
+++ src/bookapp/view.clj
@@ -10,53 +10,55 @@

 (defn display-all-books [books]
   [:div
-   [:table
+   [:h1 "Show all books"]
+   [:p "Latest books from our store"]
+   [:table  {:class "table table-bordered"}
     [:th "id"]
     [:th "title"]
     [:th "description"]
     [:th "isbn"]
     [:th "author"]
-     [:th "delete"]
-     [:th "update"]
-     (map
-       (fn [book]
-         [:tr
-          [:td (h (:id book))]
-          [:td (h (:title book))]
-          [:td (h (:description book))]
-          [:td (h (:isbn book))]
-          [:td (h (:author book))]
-          [:td [:a {:href (str "/delete/" (h (:id book)))} "delete"]]
-          [:td [:a {:href (str "/update/" (h (:id book)))} "update"]]
-          ]) books)]])
+    [:th "delete"]
+    [:th "update"]
+    (map
+      (fn [book]
+        [:tr
+         [:td (h (:id book))]
+         [:td (h (:title book))]
+         [:td (h (:description book))]
+         [:td (h (:isbn book))]
+         [:td (h (:author book))]
+         [:td [:a {:href (str "/delete/" (h (:id book)))} "delete"]]
+         [:td [:a {:href (str "/update/" (h (:id book)))} "update"]]
+         ]) books)]])

 (defn add-book-form []
-  [:div (form/form-to [:post "/"]
-                      (anti-forgery/anti-forgery-field)
-                      (form/label "title" "Title: ")
-                      [:br]
-                      (form/text-field "title")
-                      [:br]
-                      (form/label "description" "Description: ")
-                      [:br]
-                      (form/text-field "description")
-                      [:br]
-                      (form/label "isbn" "ISBN: ")
-                      [:br]
-                      (form/text-field "isbn")
-                      [:br]
-                      (form/label "author" "Author: ")
-                      [:br]
-                      (form/text-field "author")
-                      [:br]
-                      [:br]
-                      (form/submit-button {:class "btn btn-primary"}  "Add book")
-                      [:br])])
+  [:div {:class "form-group"}
+   [:h1 "Add book"]
+   (form/form-to [:post "/"]
+                 (anti-forgery/anti-forgery-field)
+                 [:div {:class "form-group"}
+                  (form/label "title" "Title: ")
+                  (form/text-field {:class "form-control"} "title")]
+                 [:div {:class "form-group"}
+                  (form/label "description" "Description: ")
+                  (form/text-field {:class "form-control"}  "description")]
+                 [:div {:class "form-group"}
+                  (form/label "isbn" "ISBN: ")
+                  (form/text-field {:class "form-control"}  "isbn")]
+                 [:div {:class "form-group"}
+                  (form/label "author" "Author: ")
+                  (form/text-field {:class "form-control"}  "author")]
+                 (form/submit-button {:class "btn btn-primary btn-lg btn-block"}  "Add book")
+                 [:br])])

 (defn index-page [books]
-  (layout/common-layout "Books"
-                        (display-all-books books)
-                        (add-book-form)
+  (layout/common-layout ""
+                        [:div {:class "col-lg-2"}]
+                        [:div {:class "col-lg-8"}
+                         (display-all-books books)
+                         (add-book-form)]
+                        [:div {:class "col-lg-2"}]
                         ))


heroku deploy

heroku deploy

--- src/cai/outgoing.clj
+++ src/cai/outgoing.clj
@@ -40,6 +40,7 @@
        {:message (templates/image-message url)}
        {:message (templates/text-message url)})]))

+
 (defn reply-to-audio-or-video [sender-id url]
   (let [text (speech-api/stt url)
         cs-old (get-in @user-map [(keyword sender-id) :cs])


Spelling fix in comment.

Spelling fix in comment.

--- src/cake/project.clj
+++ src/cake/project.clj
@@ -193,7 +193,7 @@
                                              (:context opts)
                                              "dev"))
                ;; Note source-path can be present but nil. Need to check for nil
-               ;; and check for existince of src/jvm to determine the src path.
+               ;; and check for existence of src/jvm to determine the src path.
                :source-path          (:source-path opts)
                :java-source-path     (or (:java-source-path opts) "src/jvm")
                :test-path            (or (:test-path opts) "test/")


Unify devcards for testing card callbacks

--- src/cards/cards.cljs
+++ src/cards/cards.cljs
@@ -99,15 +99,29 @@
 (defcard
   "## Behaviour")

+(defn update-cb-info [state & params]
+  (swap! state (fn [state] (-> state
+                               (update :counter inc)
+                               (assoc :params params)))))
+
+(defn render-cb-info [state name]
+  (let [{:keys [counter params]} @state]
+    (dom/div nil
+      (dom/div nil (str name ": " counter " times"))
+      (dom/div nil
+        (str "Parameters: ")
+        (dom/code nil (str params))))))
+
 (defcard
   "### Card with an activate callback"
   (fn [state _]
     (dom/div nil
       (kanban-card/card
         (om/computed (:card @state)
-                     {:activate-fn #(swap! state update :counter inc)}))
-      (dom/div nil (str "Activated: " (:counter @state) " times"))))
-  {:card {:id 1 :text "Initial text"} :counter 0}
+                     {:activate-fn (partial update-cb-info state)}))
+      (render-cb-info state "Activated")))
+  {:card {:id 1 :text "Initial text"}
+   :counter 0}
   {:inspect-data true :history true})

 (defcard
@@ -116,8 +130,8 @@
     (dom/div nil
       (kanban-card/card
         (om/computed (:card @state)
-                     {:drag-fns {:start #(swap! state update :counter inc)}}))
-      (dom/div nil (str "Drag initiated: " (:counter @state) " times"))))
+                     {:drag-fns {:start (partial update-cb-info state)}}))
+      (render-cb-info state "Drag initiated")))
   {:card {:id 1 :text "Initial text"} :counter 0}
   {:inspect-data true :history true})

@@ -127,7 +141,7 @@
     (dom/div nil
       (kanban-card/card
         (om/computed (:card @state)
-                     {:drag-fns {:end #(swap! state update :counter inc)}}))
-      (dom/div nil (str "Drag ended: " (:counter @state) " times"))))
+                     {:drag-fns {:end (partial update-cb-info state)}}))
+      (render-cb-info state "Drag ended")))
   {:card {:id 1 :text "Initial text"} :counter 0}
   {:inspect-data true :history true})


fix some tests

fix some tests

--- test/cljs/russyll/re_frame_test.cljs
+++ test/cljs/russyll/re_frame_test.cljs
@@ -14,7 +14,7 @@
     (let [current-word (re-frame/subscribe [:key-in-db :current-word])
           ]
       (is (= [] (:user-history core/app-db)))
-      (is (= "Igor" @current-word))
+      (is (= nil @current-word))
       (re-frame/dispatch-sync [:set-current-word "cool Word"])
       (is (= "cool Word" @current-word))
       (is (= [] (:user-history core/app-db))))
@@ -24,7 +24,10 @@
 (deftest subscriptions
   (testing "The subscriptions should give the right model back"
     (let [text-in (re-frame/subscribe [:key-in-db :text-in])]
-      (is (= core/example-text @text-in)))))
+      (is (= @text-in nil))
+      (re-frame/dispatch-sync [:change-text core/example-text])
+      (is (= core/example-text @text-in))
+      )))

 (deftest handlers-user-test


Prevent collection warnings

Prevent collection warnings

--- src/braid/client/ui/views/thread.cljs
+++ src/braid/client/ui/views/thread.cljs
@@ -23,15 +23,17 @@
                       (sort-by :name))]
         [:div.tag-list
          (if (seq tags)
-           (for [tag tags]
-             [:div.tag-option
-              {:on-click (fn []
-                           (close-list!)
-                           (dispatch [:add-tag-to-thread {:thread-id (thread :id)
-                                                          :tag-id (tag :id)}]))}
-              [:div.rect {:style {:background (helpers/->color (tag :id))}}]
-              [:span {:style {:color (helpers/->color (tag :id))}}
-               "#" (tag :name)]])
+           (doall
+             (for [tag tags]
+               ^{:key (tag :id)}
+               [:div.tag-option
+                {:on-click (fn []
+                             (close-list!)
+                             (dispatch [:add-tag-to-thread {:thread-id (thread :id)
+                                                            :tag-id (tag :id)}]))}
+                [:div.rect {:style {:background (helpers/->color (tag :id))}}]
+                [:span {:style {:color (helpers/->color (tag :id))}}
+                 "#" (tag :name)]]))
            [:div.name "All tags used already."])]))))

 (defn add-tag-button-view [thread]


Better spec-test.

Better spec-test.

--- test/elephantdb/common/spec_test.clj
+++ test/elephantdb/common/spec_test.clj
@@ -1,30 +1,32 @@
 (ns elephantdb.common.spec-test
-  (:use clojure.test)
-  (:import [elephantdb DomainSpec]
+  (:use midje.sweet)
+  (:import [elephantdb DomainSpec Utils]
            [elephantdb.document KeyValDocument]))

 (defn domain-spec
   [coord-class shard-scheme shard-count]
   (DomainSpec. coord-class shard-scheme shard-count))

-(def test-spec
-  (domain-spec "elephantdb.persistence.JavaBerkDB"
-               "elephantdb.partition.HashModScheme"
-               2))
-
 (defn kv-doc [k v]
   (KeyValDocument. k v))

-(defn doc= [x y]
-  (and (= (.key x) (.key y))
-       (= (.value x) (.value y))))
+(defn round-trip [item]
+  (let [serializer (Utils/makeSerializer
+                    (domain-spec "elephantdb.persistence.JavaBerkDB"
+                                 "elephantdb.partition.HashModScheme"
+                                 2))]
+    (->> item
+         (.serialize serializer)
+         (.deserialize serializer))))
+(tabular
+ (fact
+   "Key Value documents should be able to be round-tripped through a
+    serializer."
+   (let [doc           (kv-doc ?key ?val)
+         round-tripped (round-trip doc)]
+     (.key doc)   => (.key round-tripped)
+     (.value doc) => (.value round-tripped)))
+ ?key    ?val
+ 1       2
+ "three" "four!")

-(deftest round-trip-test
-  (are [k v] (let [original (kv-doc k v)
-                   round-tripped (->> original
-                                      (.serialize test-spec)
-                                      (.deserialize test-spec))]
-               (doc= original round-tripped))
-       1       2
-       "three" "four!"))
-


Two tests for function config/get-in-queue-url

--- test/emender_jenkins/config_test.clj
+++ test/emender_jenkins/config_test.clj
@@ -496,8 +496,8 @@
             (get-started-on-ms {:configuration nil})               nil)))

 (deftest test-get-in-queue-view-1
-    "Check the behaviour of function emender-jenkins.config/get-in-queue."
-    (testing "the behaviour of function emender-jenkins.config/get-in-queue."
+    "Check the behaviour of function emender-jenkins.config/get-in-queue-view."
+    (testing "the behaviour of function emender-jenkins.config/get-in-queue-view."
         (are [x y] (= x y)
             (get-in-queue-view {:configuration {:jenkins {:in-queue-view nil}}}) nil
             (get-in-queue-view {:configuration {:jenkins {:in-queue-view false}}}) false
@@ -505,8 +505,8 @@
             (get-in-queue-view {:configuration {:jenkins {:in-queue-view "Queue"}}}) "Queue")))

 (deftest test-get-in-queue-view-2
-    "Check the behaviour of function emender-jenkins.config/get-in-queue."
-    (testing "the behaviour of function emender-jenkins.config/get-in-queue."
+    "Check the behaviour of function emender-jenkins.config/get-in-queue-view."
+    (testing "the behaviour of function emender-jenkins.config/get-in-queue-view."
         (are [x y] (= x y)
             (get-in-queue-view {:configuration {:jenkins {:in-queue-view nil}}}) nil
             (get-in-queue-view {:configuration {:jenkins nil}})                  nil
@@ -528,6 +528,23 @@
             (get-currently-building-view {:configuration {:jenkins {:currently-building-view nil}}}) nil
             (get-currently-building-view {:configuration {:jenkins nil}})                            nil
             (get-currently-building-view {:configuration nil})                                       nil)))
+
+(deftest test-get-in-queue-url-1
+    "Check the behaviour of function emender-jenkins.config/get-in-queue-url."
+    (testing "the behaviour of function emender-jenkins.config/get-in-queue-url."
+        (are [x y] (= x y)
+            (get-in-queue-url {:configuration {:jenkins {:in-queue-url nil}}}) nil
+            (get-in-queue-url {:configuration {:jenkins {:in-queue-url false}}}) false
+            (get-in-queue-url {:configuration {:jenkins {:in-queue-url true}}}) true
+            (get-in-queue-url {:configuration {:jenkins {:in-queue-url "Queue"}}}) "Queue")))
+
+(deftest test-get-in-queue-url-2
+    "Check the behaviour of function emender-jenkins.config/get-in-queue-url."
+    (testing "the behaviour of function emender-jenkins.config/get-in-queue-url."
+        (are [x y] (= x y)
+            (get-in-queue-url {:configuration {:jenkins {:in-queue-url nil}}}) nil
+            (get-in-queue-url {:configuration {:jenkins nil}})                 nil
+            (get-in-queue-url {:configuration nil})                            nil)))

 (deftest test-override-options-by-cli-1
     "Check the behaviour of function emender-jenkins.config/override-options-by-cli."


Update handler stack

Update handler stack

--- src/clj/org/openforis/ceo/handler.clj
+++ src/clj/org/openforis/ceo/handler.clj
@@ -2,22 +2,24 @@
   (:require [clojure.data.json :as json]
             [clojure.edn :as edn]
             [clojure.string :as str]
-            [org.openforis.ceo.database :refer [sql-handler]]
-            [org.openforis.ceo.logging :refer [log-str]]
+            [ring.middleware.absolute-redirects :refer [wrap-absolute-redirects]]
+            [ring.middleware.content-type       :refer [wrap-content-type]]
+            [ring.middleware.default-charset    :refer [wrap-default-charset]]
+            [ring.middleware.gzip               :refer [wrap-gzip]]
+            [ring.middleware.keyword-params     :refer [wrap-keyword-params]]
+            [ring.middleware.nested-params      :refer [wrap-nested-params]]
+            [ring.middleware.not-modified       :refer [wrap-not-modified]]
+            [ring.middleware.multipart-params   :refer [wrap-multipart-params]]
+            [ring.middleware.params             :refer [wrap-params]]
+            [ring.middleware.resource           :refer [wrap-resource]]
+            [ring.middleware.reload             :refer [wrap-reload]]
+            [ring.middleware.ssl                :refer [wrap-ssl-redirect]]
+            [ring.middleware.x-headers          :refer [wrap-frame-options wrap-content-type-options wrap-xss-protection]]
+            [ring.util.codec                    :refer [url-decode]]
+            [org.openforis.ceo.database   :refer [sql-handler]]
+            [org.openforis.ceo.logging    :refer [log-str]]
             [org.openforis.ceo.remote-api :refer [clj-handler]]
-            [org.openforis.ceo.views :refer [render-page not-found-page data-response]]
-            [ring.middleware.absolute-redirects :refer [wrap-absolute-redirects]]
-            [ring.middleware.content-type :refer [wrap-content-type]]
-            [ring.middleware.default-charset :refer [wrap-default-charset]]
-            [ring.middleware.keyword-params :refer [wrap-keyword-params]]
-            [ring.middleware.multipart-params :refer [wrap-multipart-params]]
-            [ring.middleware.nested-params :refer [wrap-nested-params]]
-            [ring.middleware.not-modified :refer [wrap-not-modified]]
-            [ring.middleware.params :refer [wrap-params]]
-            [ring.middleware.reload :refer [wrap-reload]]
-            [ring.middleware.resource :refer [wrap-resource]]
-            [ring.middleware.x-headers :refer [wrap-frame-options wrap-content-type-options wrap-xss-protection]]
-            [ring.util.codec :refer [url-decode]]))
+            [org.openforis.ceo.views      :refer [render-page not-found-page data-response]]))

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Routing Handler
@@ -110,27 +112,36 @@
           (log-str "Error: " cause)
           (data-response (or status 500) cause))))))

+(defn wrap-common [handler]
+  (-> handler
+      wrap-request-logging
+      wrap-keyword-params
+      wrap-edn-params
+      wrap-nested-params
+      wrap-multipart-params
+      wrap-params
+      wrap-absolute-redirects
+      (wrap-resource "public")
+      wrap-content-type
+      (wrap-default-charset "utf-8")
+      wrap-not-modified
+      (wrap-xss-protection true {:mode :block})
+      (wrap-frame-options :sameorigin)
+      (wrap-content-type-options :nosniff)
+      wrap-response-logging
+      wrap-gzip
+      wrap-exceptions))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Handler Stacks
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 (def production-app (-> routing-handler
-                        wrap-request-logging
-                        wrap-keyword-params
-                        wrap-edn-params
-                        wrap-nested-params
-                        wrap-multipart-params
-                        wrap-params
-                        wrap-absolute-redirects
-                        (wrap-resource "public")
-                        wrap-content-type
-                        (wrap-default-charset "utf-8")
-                        wrap-not-modified
-                        (wrap-xss-protection true {:mode :block})
-                        (wrap-frame-options :sameorigin)
-                        (wrap-content-type-options :nosniff)
-                        wrap-response-logging
-                        wrap-exceptions))
+                        wrap-ssl-redirect
+                        wrap-common))

-(def development-app (-> production-app
-                         wrap-reload))
+;; TODO figwheel adds a good bit of its own middleware.
+;;      The current middleware in wrap-common are mostly over written by figwheel.
+(def development-app (-> routing-handler
+                         wrap-common
+                         wrap-reload))


reify compscribe-service

reify compscribe-service

--- src/cljc/commos/delta/compscribe.cljc
+++ src/cljc/commos/delta/compscribe.cljc
@@ -313,35 +313,38 @@
   [service]
   (::cached-service (meta service) service))

-(defrecord CompscribeService [source-service subscriptions]
-  IStream
-  (subscribe [this identifier target]
-    (let [[spec id] identifier
-          [endpoint direct-hooks deep-hooks :as spec] (compile-spec spec)
-          subs-target (wrap-on-close target #(cancel this target))]
-      (if (and (empty? direct-hooks)
-               (empty? deep-hooks))
-        ;; OPT: If there is nothing to compscribe, directly reach
-        ;; through to the source-service:
-        (do
-          #_(println "subscribing directly" identifier)
-          (subscribe source-service [endpoint id] subs-target)
-          (swap! subscriptions assoc target
-                 (vary-meta #(cancel source-service subs-target)
-                            assoc ::identifier identifier)))
-        (do
-          #_(println "subscribing" identifier)
-          (swap! subscriptions assoc target
-                 (vary-meta (compscribe* subs-target
-                                         source-service
-                                         (cached this)
-                                         spec
-                                         id)
-                            assoc ::identifier identifier))))))
-  (cancel [this target]
-    (when-let [unsubs-fn (swap-out! subscriptions target)]
-      #_(println "unsubscribing" (::identifier (meta unsubs-fn)))
-      (unsubs-fn))))
+(defn- compscribe-service
+  [source-service]
+  (let [subscriptions (atom {})]
+    (reify
+      IStream
+      (subscribe [this identifier target]
+        (let [[spec id] identifier
+              [endpoint direct-hooks deep-hooks :as spec] (compile-spec spec)
+              subs-target (wrap-on-close target #(cancel this target))]
+          (if (and (empty? direct-hooks)
+                   (empty? deep-hooks))
+            ;; OPT: If there is nothing to compscribe, directly reach
+            ;; through to the source-service:
+            (do
+              #_(println "subscribing directly" identifier)
+              (subscribe source-service [endpoint id] subs-target)
+              (swap! subscriptions assoc target
+                     (vary-meta #(cancel source-service subs-target)
+                                assoc ::identifier identifier)))
+            (do
+              #_(println "subscribing" identifier)
+              (swap! subscriptions assoc target
+                     (vary-meta (compscribe* subs-target
+                                             source-service
+                                             (cached this)
+                                             spec
+                                             id)
+                                assoc ::identifier identifier))))))
+      (cancel [this target]
+        (when-let [unsubs-fn (swap-out! subscriptions target)]
+          #_(println "unsubscribing" (::identifier (meta unsubs-fn)))
+          (unsubs-fn))))))

 (def ^:private sum-and-delta
   "Transducer that sums deltas and passes on [sum delta] for each
@@ -422,8 +425,7 @@

 (defn compscriber
   [service]
-  (let [service (map->CompscribeService {:source-service service
-                                         :subscriptions (atom {})})
+  (let [service (compscribe-service service)
         service (reify
                   IStream
                   (subscribe [this identifier target]


segment query

segment query

--- src/com/billpiel/mem_tracer/query.clj
+++ src/com/billpiel/mem_tracer/query.clj
@@ -48,6 +48,15 @@
     (tq/query zipr
               tag-pred
               (tq/has-all-tags-fn :a))))
+
+(defmethod exec-query :s
+  [_ zipr [ancest descen]]
+  (let [tag-pred {:a (apply mk-query-fn ancest)
+                  :d (apply mk-query-fn descen)}]
+    (tq/query zipr
+              tag-pred
+              (some-fn (tq/is-between-fn :a :d)
+                       (tq/has-any-tags-fn :a :d)))))

 (defn trace->zipper
   [trace]


Pathologically make the test pass

Pathologically make the test pass

--- src/desdemona/query.clj
+++ src/desdemona/query.clj
@@ -81,3 +81,7 @@

 (def infix->dsl
   (comp parsed-infix->dsl infix-parser))
+
+(defn ^:private find-free-vars
+  [logic-query]
+  #{})


Play around with docker

Play around with docker

--- src/discuss/config.cljs
+++ src/discuss/config.cljs
@@ -4,7 +4,7 @@

 (def user "Q2hyaXN0aWFu")

-(def api {:host "http://localhost:4284/"
+(def api {:host "http://172.18.0.3/"
           :init "api/"
           :base "api/"
           :add  {:add-start-statement "add/start_statement"


Do not print to stderr (#135)

Do not print to stderr (#135)

* fix two issues with catched exceptions in production

1. .printStackTrace does *not* return the stack trace but prints it to
stderr
2. generally it is annoying in production if logs are cluttered with
java/clojure stack traces; rather, as was probably indented, pass the
stack trace and related information upwards in the exception

* Added "require" as required

--- src/duckling/engine.clj
+++ src/duckling/engine.clj
@@ -6,6 +6,7 @@
   3. tokens containing final info are produced using their production rules"
   (:use [clojure.tools.logging])
   (:require [clojure.set :as sets]
+            [clojure.stacktrace]
             [duckling.time.prod]
             [duckling.time.api :as time]
             [duckling.util :as util]))
@@ -134,7 +135,8 @@
                                     (subs sentence pos end)
                                     (:name rule)
                                     sentence
-                                    e (.printStackTrace e))
+                                    e
+                                    (with-out-str (clojure.stacktrace/print-stack-trace e)))
                         {:exception e}))))))

 (defn- never-produced?
@@ -163,9 +165,13 @@
                       (conj route token)
                       results)))
                 (catch Exception e
-                  (.printStackTrace e)
-                  (prn stash)
-                  (throw (ex-info "Exception @match" {:exception e}))))))]
+                  ;; (.printStackTrace e) - probably use logging/debug and turn logging output
+                  ;; (prn stash)
+                  (throw (ex-info (format "Exception @match stack=%s stash=%s"
+                                          (with-out-str (clojure.stacktrace/print-stack-trace e))
+                                          (with-out-str (pr stash)))
+                                  {:exception e}))
+                  ))))]
     (match-recur pattern true stash 0 [] [])))

 (defn- pass-once


Seems like I managed to implement what i wanted

Kinda ugly and complex though...

--- src/ecregister/core.clj
+++ src/ecregister/core.clj
@@ -4,10 +4,10 @@
   (:use [seesaw.mig])
   (:use [seesaw.widgets.log-window])
   (:require [clojure.string :refer [blank?]])
-  (:require [clojure.core.async :refer [chan alts!! timeout thread]])
+  (:require [clojure.core.async :refer [chan >!! <!! <! >! alts!! alts! timeout thread put! go go-loop close!]])
   )
-; (require '[clojure.core.async :refer [chan alts!! alts! timeout thread put! go-loop]])
-; (require '[clojure.string :refer [blank?]])
+
+(require '[clojure.core.async :refer [chan >!! <!! <! >! alts!! alts! timeout thread put! go go-loop close!]])

 (defn build-avatars-tab []
   (let [bg-stamp-pos (button-group)
@@ -23,33 +23,77 @@
                                                :columns 80
                                                ))
                        "span"]])]
+
+    (defn stop-listening [active-chan comm-chan log-widget te-name]
+      (log log-widget "Stopping listening\n")
+      (go
+       (if (<! active-chan)
+         (do
+           (if-let [ c (<! comm-chan)]
+             (do
+               (log log-widget "closed keys channel from comm-chanel\n")
+               (close! c)
+               (>! active-chan false)
+               )
+             )
+           (log log-widget (str "SENDING " (text te-name) "\n"))
+           )
+         (log log-widget "read false from active chan")
+         ))
+      )
+    (defn start-listening [active-chan comm-chan log-widget te-name]
+      (log log-widget "Starting listening\n")
+      (go
+       (>! comm-chan (chan 1))
+       (>! active-chan true)
+       (loop []
+         (let [keys-chan (<! comm-chan)]
+           (>! comm-chan keys-chan)
+           (let [[v ch] (alts! [keys-chan (timeout 1000)])]
+             (if (not (blank? v))
+               (recur)
+               (do
+                 (log log-widget "timeout reached\n")
+                 (stop-listening active-chan comm-chan log-widget te-name))
+               ))
+           ))))
+
+    ;; It is important in this scheme to return value to the channel as soon as it had been read:
+    ;; so that others interested can read back
+
     (let [te-name (select form [:#username])
           lb-log (select form [:#log])
-          c (chan)]
+          active-chan (chan 1)
+          comm-chan (chan 1)]
       (listen te-name
+              :focus-gained (fn [e]
+                              (put! active-chan false)
+                              )
+
               :document (fn [e]
-                          (put! c (text te-name)))
-              :focus-gained (fn [e]
-                             (go-loop []
-                                      (let [[v ch] (alts! [c (timeout 1000)])]
-                                        (if (not= v "stop")
-                                          (do
-                                            (if (not (blank? v))
-                                              (log lb-log (str "read " v ", waiting continues...\n"))
-                                              (log lb-log (str "timeout reached, getting avatar for " (text te-name) "\n")))
-                                            (recur))
-                                          (log lb-log "exiting loop.")))))
+                          (go
+                           (if (<! active-chan)
+                             (do
+                               (>! active-chan true)
+                               (log lb-log "in active mode, sending keypress\n")
+                               (let [keys-chan (<! comm-chan)]
+                                 (>! comm-chan keys-chan)
+                                 (>! keys-chan "1")
+                                 ))
+                             (do
+                               (log lb-log "in not-active mode, initiating listening\n")
+                               (start-listening active-chan comm-chan lb-log te-name))
+                             ))
+                          )
               :focus-lost (fn [e]
-                            (log lb-log "sending stop\n")
-                            (put! c "stop")))
+                            (log lb-log "focus lost, stopping\n")
+                            (stop-listening active-chan comm-chan lb-log te-name)
+                            )
+              )

       )
-      form
-      )
-    )
-;; (config! f :content (build-content))
-;; (def f (make-frame (build-content)))
-;; (show! f)
+    form)
+  )

 (defn build-posts-tab []
   (label "Posts"))
@@ -71,6 +115,11 @@
    :content (label "hello") ;; TODO replace label => (build-content)
    ))

+(def f (make-frame (build-content)))
+(show! f)
+(config! f :content (build-content))
+
+
 (defn -main [& args]
   (invoke-later
    (->


Drop double-quote from tsv cells.

Drop double-quote from tsv cells.

--- src/cgdata/core.clj
+++ src/cgdata/core.clj
@@ -73,8 +73,11 @@
        (pmap (fn [chunk] (doall (map f chunk))))
        (apply concat)))

+(defn- drop-quotes [s]
+  (.replace ^String s "\"" ""))
+
 (defn- tabbed [line]
-  (mapv s/trim (s/split line #"\t")))
+  (mapv #(drop-quotes (s/trim %)) (s/split line #"\t")))

 (defn- not-blank? [line]
   (not (re-matches #"\s*" line)))