Wagoe 1.0 is out: a batteries-included Clojure framework (say "wah-goo").
28 application libraries (31 artifacts with the CLI and tooling): auth + MFA, admin UI, jobs, multi-tenancy, workflows, search, realtime, payments, i18n. Each is a plain deps.edn dependency, and all share one structure: Functional Core / Imperative Shell, enforced by linting. Put I/O or DB code in core/ and the build fails.
Clean machine to running app:
curl -fsSL | bash
wagoe new my-app && cd my-app
clojure -M:migrate up
source .env && clojure -M:repl # then (go)
Honest bits: it's a solo project, and eight libraries are still incubating, outside the 1.0 stability promise.
Docs: https://wagoe.org ยท Repo: https://github.com/wagoebv/wagoe
I showed it at Clojure/Conj. What I'd really like to know: would this structure help your codebase, or just add ceremony? Thread below.wow, this is massive
I have to admit I thought the honest bits would be about something else ๐.
Indeed massive!
https://github.com/avanelsas/baredom
A 100+ web components library. Fairly large update
- Every component now follows x-theme settings properly
- Every public attribute now has a typed property
- hidden now hides a component, it was ignored by several components before
- Lists keep their nodes on each change. An item that stays keeps its focus.
- A form control follows its fieldset
- A component now renders one time for one change. It does not render when nothing changes.
If you were using x-theme the look on your page may change.
Breaking changes:
- Under x-theme, colours, corners, shadows and text sizes now follow the theme
- Components use the font of the page
- hidden now hides a component
- x-form-field in the adapters: readonly is readOnly.
- An option that is on by default, such as dismissible, is now off when a framework sets it to "false"
- A control in a disabled fieldset has no disabled attribute. Use :disabled in CSS.
- --x-z-toast z-index is now 9000, was 1200. Other layer values changed too.
- Each adapter now needs core 4.0.0 or later.
A demo with all web components can be found https://avanelsas.github.io/baredom/
Squint finally adds source maps!
https://github.com/squint-cljs/squint: Light-weight ClojureScript dialect
0.15.212
โข https://github.com/squint-cljs/squint/issues/453: Add source maps for compiled files
โข squint watch writes source maps by default. Disable with --no-source-map or :source-map false in squint.edn
โข Optimize compiled output for core predicates such as even? and string? in if, and, or and not
โข Fix contains? to return a boolean for IAssociative types
โข Fix with_meta calls in output for ^:=> fns and for assoc and get on map literals
That's dope
This was almost the smallest demo app, so it's obvious Clojure's advantages weren't measured by the LLM.
You should tell it about the REPL workflow
It's comparing this from the JS perspective.
Ya, I know. ๐ This is a quick one-off, I just wanted to know if it can work at all. I will almost definitely have it port the surrounding app, and then use clj-kondo and the REPL. I currently hate that I won't allow my LLM to connect to my deployed app to do real smoke testing and etc., but I guess I wouldn't mind having it connect to a deployed REPL and make various checks there. That would be nice.