├── .github
└── workflows
│ └── deploy-branches.yml
├── .gitignore
├── README.md
├── index.html
├── jest.config.js
├── package-lock.json
├── package.json
├── pnpm-lock.yaml
├── src
├── Action.tsx
├── Animate.tsx
├── App.tsx
├── Hover.tsx
├── Keyboard.tsx
├── Model.tsx
├── Names.tsx
├── Projector.tsx
├── Settings.tsx
├── Sound.tsx
├── Stage.tsx
├── Statics.tsx
├── ToolBox.tsx
├── Transform.tsx
├── Update.tsx
├── Util.tsx
├── assets
│ ├── favicon.ico
│ ├── icons
│ │ ├── eye-closed.svg
│ │ ├── eye-open.svg
│ │ ├── motion-half.svg
│ │ ├── motion-off.svg
│ │ ├── motion-on.svg
│ │ ├── noun-1005147.svg
│ │ ├── noun-1020541.svg
│ │ ├── noun-1037924.svg
│ │ ├── noun-1052053.svg
│ │ ├── noun-1156122.svg
│ │ ├── noun-1166087.svg
│ │ ├── noun-1275679.svg
│ │ ├── noun-1333353.svg
│ │ ├── noun-1560867.svg
│ │ ├── noun-1683765.svg
│ │ ├── noun-1831710.svg
│ │ ├── noun-1831712.svg
│ │ ├── noun-2048496.svg
│ │ ├── noun-2856200.svg
│ │ ├── noun-2902082.svg
│ │ ├── noun-2925980.svg
│ │ ├── noun-3376875.svg
│ │ ├── noun-5454290.svg
│ │ ├── noun-5576595.svg
│ │ ├── noun-6336647.svg
│ │ ├── noun-agile-transformation-4617414.svg
│ │ ├── noun-alphabet-3591519.svg
│ │ ├── noun-backpack-5550372.svg
│ │ ├── noun-bag-6335093.svg
│ │ ├── noun-bag-6335275.svg
│ │ ├── noun-cloud-6325788.svg
│ │ ├── noun-collection-1675411.svg
│ │ ├── noun-cycle-1793611.svg
│ │ ├── noun-cycle-4446.svg
│ │ ├── noun-dead-5130035.svg
│ │ ├── noun-digital-transformation-6011306.svg
│ │ ├── noun-earth-1219989.svg
│ │ ├── noun-geometry-4695832.svg
│ │ ├── noun-list-10135.svg
│ │ ├── noun-paint-6329583.svg
│ │ ├── noun-palette-1918496.svg
│ │ ├── noun-qr-4574196.svg
│ │ ├── noun-shopping-bag-6321186.svg
│ │ ├── noun-shopping-bag-6321318.svg
│ │ ├── noun-sigh-654547.svg
│ │ ├── noun-subtitle-4574190.svg
│ │ ├── noun-sun-5362089.svg
│ │ ├── noun-sun-6322390.svg
│ │ ├── noun-tool-3376727.svg
│ │ ├── noun-tool-3376728.svg
│ │ ├── noun-transformation-1832026.svg
│ │ ├── noun-transformation-3968008.svg
│ │ ├── noun-transformation-6040368.svg
│ │ ├── noun-transformation-6040479.svg
│ │ ├── noun-transformation-6098909.svg
│ │ ├── noun-tree-1039106.svg
│ │ ├── noun-tree-1052083.svg
│ │ ├── noun-tree-1052096.svg
│ │ ├── qr.svg
│ │ ├── sound-off.svg
│ │ └── sound-on.svg
│ ├── marble.jpeg
│ ├── nool-seed-infinity-only.svg
│ ├── nool-seed.svg
│ ├── nooltext-light.png
│ ├── nooltext.png
│ ├── ps-toolbar.png
│ └── sfx
│ │ ├── chchiu-out.wav
│ │ ├── klohk.m4a
│ │ ├── pew.m4a
│ │ ├── pshew.m4a
│ │ ├── shwo-ph-out.wav
│ │ └── tiup-comm-out.wav
├── data
│ ├── Tools.tsx
│ ├── ToolsExp.tsx
│ └── World.tsx
├── declarations.d.ts
├── index.css
├── index.tsx
├── syntax
│ ├── Exp.tsx
│ ├── ExpToPat.tsx
│ ├── ID.tsx
│ ├── Node.test.tsx
│ ├── Node.tsx
│ ├── Pat.tsx
│ └── Path.tsx
└── view
│ ├── ExpView.tsx
│ ├── PreView.tsx
│ ├── SeedView.tsx
│ ├── SettingsView.tsx
│ ├── StageView.tsx
│ └── ToolsView.tsx
├── tsconfig.json
└── vite.config.ts
/.github/workflows/deploy-branches.yml:
--------------------------------------------------------------------------------
1 | # General notes on github actions: Note that both the working directory
2 | # and environment variables generally are not shared between steps.
3 | name: deploy nool
4 | on: [push]
5 | jobs:
6 | Deploy:
7 | runs-on: ubuntu-latest
8 | steps:
9 | # NOTE: position the below lines in the code between two steps
10 | # and uncomment them to open an ssh connection at that point:
11 | #- name: Debugging with ssh
12 | # uses: lhotari/action-upterm@v1
13 | - name: Checkout nool repo on current branch # STEP 1
14 | uses: actions/checkout@v2
15 | with:
16 | path: source
17 | - name: Add name of current branch to environment as BRANCH_NAME
18 | uses: nelonoel/branch-name@v1.0.1
19 | - name: Retrieve build environment if cached # STEP 2
20 | id: build-cache
21 | uses: actions/cache@v2
22 | with:
23 | path: '/home/runner/.opam/'
24 | key: ${{ runner.os }}-modules-${{ hashFiles('./source/pnp-lock.yaml') }}
25 | #- name: Debugging with ssh
26 | # uses: lhotari/action-upterm@v1
27 | #curl -fsSL https://get.pnpm.io/install.sh | sh - || true
28 | #sudo -s && source /root/.bashrc
29 | - name: Use Node.js 21.2.0
30 | uses: actions/setup-node@v3
31 | with:
32 | node-version: '21.2.0'
33 | # yarn global add pnpm@8.10.5
34 | - name: Install dependencies and build nool # STEP 3
35 | run: |
36 | pwd
37 | ls
38 | node --version
39 | npm install --global pnpm@8.10.5 && SHELL=bash pnpm setup
40 | pnpm --version
41 | source /home/runner/.bashrc
42 | pnpm install
43 | pnpm run build
44 | working-directory: ./source
45 | - name: Checkout website build artifacts repo # STEP 4
46 | uses: actions/checkout@v2
47 | with:
48 | repository: disconcision/disconcision.github.io
49 | token: ${{ secrets.DEPLOY_NOOL }}
50 | path: server
51 | - name: Clear any old build of this branch # STEP 5
52 | run: if [ -d "nool/${BRANCH_NAME}" ] ; then rm -rf "nool/${BRANCH_NAME}" ; fi
53 | working-directory: ./server
54 | - name: Copy in newly built source # STEP 6
55 | run: |
56 | mkdir "./server/nool/${BRANCH_NAME}" &&
57 | cp -r "./source/dist"/* "./server/nool/${BRANCH_NAME}" &&
58 | if [ "${BRANCH_NAME}" == "main" ]
59 | then
60 | cp -r "./source/dist"/* "./server/nool"
61 | fi
62 | - name: Commit to website aka deploy # STEP 7
63 | run: |
64 | git config user.name github-deploy-action
65 | git config user.email nool-deploy@disconcision.com
66 | git add -A
67 | git status
68 | git diff-index --quiet HEAD || (git commit -m "github-deploy-action-${BRANCH_NAME}"; git push)
69 | working-directory: ./server
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules/
3 | .DS_Store
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## ∩∞ᒐ?
2 |
3 | is a syntactic fidget spinner
4 |
5 | ## is n∞l?
6 |
7 | n∞l is: https://andrewblinn.com/nool/
8 |
9 | (needs view transitions api (currently only in chrome) for animations to play)
10 |
11 | ## n∞l n∞b?
12 | 1. `do clicks`.
13 |
14 | ## n∞lnatomy
15 | `_______________________`
16 | `| s s |`
17 | `| _____ _____ |`
18 | `| | | | | |`
19 | `| noolbox ∞ |stage| |`
20 | `| |_____| |_____| |`
21 | `| |`
22 | `|_s_________________s_|`
23 |
24 | where s = settings
25 |
26 | ## Keyboard
27 |
28 | ### `↑` `↓` `→` `←` (stage hand)
29 | ### `w` `a` `s` `d` (tool hand)
30 | ### `SPACE` (sing) `ESCAPE` (die)
31 |
32 | (keyboard controls aren't a priority. hand movements directions aren't yet localized per projection, so it might be hard to move in non-default layouts)
33 |
34 | ## make n∞l
35 |
36 | ### `nool` ⊃ `typescript`, `solid.js`
37 |
38 | 1. install node (21.2.0 works)
39 | - see https://nodejs.org/en/learn/getting-started/how-to-install-nodejs
40 | - `node --version`
41 | 2. install pnpm (8.10.5 works)<
42 | - `npm install --global pnpm@8.10.5 && SHELL=bash pnpm setup`
43 | - `source /home/runner/.bashrc`
44 | 3. build deps and run
45 | - `pnpm install`
46 | - `pnpm run build`
47 |
48 | ### `pnpm dev` or `pnpm start`
49 |
50 | run in dev mode. reload on edits.
51 | open [http://localhost:3000](http://localhost:3000)
52 |
53 | ### `pnpm run build`
54 |
55 | builds deployable in `dist` folder
56 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |