Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
Local kotoba-lang editor for forms, fields, submissions, required checks, and typed validation. This page runs at kotoba-lang.github.io/forms/ and does not redirect to an external host.
Developer toolsClojureGitHub @cloud-itonamiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Portable CLJC forms model
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Portable CLJC model for kotoba-lang/forms.
Pages editor: https://kotoba-lang.github.io/forms/
The Pages UI is local to kotoba-lang and does not redirect to external hosts.
forms.wire/form-envelope wraps a form in the shared Kotoba office envelope,
using application/json and the :forms/form resource kind — the same
arrangement sheets and docs have. Forms was the one without it, because
transit.core/office-resource-kinds is closed and did not list :forms/form
until now.
read-form-envelope gives the payload back as plain JSON — string keys,
"text" where :text went in — because that is what the current transit
wire carries. rehydrate-form turns it back into a form, and
form-of-envelope does both in one step.
Anything that validates has to rehydrate first. forms.validate reads
:forms/fields, which on a projected payload is nil, so it iterates
nothing and reports no problems — a broken form comes back "valid" rather
than coming back wrong. There is a test for exactly that.
forms.responses turns the map-per-response a form collects into the grid
everyone actually reads it as — one row per response, one column per
question:
(r/rows-with-header form submissions) ; header row, then one row each
(r/table form submissions) ; {:columns [...] :rows [...]}
Columns come from the form, not from the answers. Deriving them from the keys present in the responses is the obvious implementation and it loses a question nobody answered, and gives two responses with different keys rows of different widths — values sliding sideways under headings that belong to other questions. A blank is information; a shifted column is a lie.
Answers to a question since deleted from the form are kept as trailing columns rather than dropped, because dropping them discards data somebody gave you.
It returns plain data and stops. Turning it into a workbook needs sheets
too, so that belongs to whoever already has both.
kbb -M:test # JVM
kbb --backend sci --classpath "src:test:$(kbb -Spath)" scripts/test-cljs.cljk # ClojureScript