☐ before commit:
    ☐ finish panel output
    ☐ change panel config shelf default size
    ☐ new api to pre-compute colors
    ☐ select: multiple placement >

2024-07-26 - MAJOR BREAKTHROUGH:
    ☐ header => cell
    ☐ body => full

2024-07-17:
    ☐ well known skins @started(24-07-25 16:33)
        ☐ WidgetWithLabelUI:
            ☐ new flag { vertical?: boolean, ...}
        ☐ DefaultCellUI: (guarantee to always be ONE cell height)
        ☐ readonly property on any Widget (bloc)
    ✘ multiple withConfig / rank-1 types @cancelled(24-07-25 16:33)
    ✔ // 💬 2024-07-17YOLO🦀🦊 @done(24-07-25 16:33)
    ✔ render du RevealUI @done(24-07-25 16:32)
        ☐ (aussi présent sur le FormUI)
    ✔ discuter inputHeight / widgetHeight @done(24-07-25 16:33)
        ☐ renommer 'widget' => 'cell', ajouter 'inside'
    ☐ migration system
    ☐ inputUpload

    ☐ customize select agressively so we have one version that looks like notion

2024-07-15:
    ✔ list identation @done(24-07-25 16:33)
    ✔ list sub-items boxes not taken into account @done(24-07-25 16:33)

2024-07-12:
    ✔ repository not as property of other classes, but as param with defulat from DI mechanism @done(24-07-25 16:34)
    ✔ csuite expect globalRepo to exist/be available via DI @done(24-07-25 16:34)
    ✘ csuite expect globalDomain to exist/be available via DI @cancelled(24-07-25 16:39)
    ✔ Builder and Schema do not know the repository that will host the instances @done(24-07-25 16:39)
    ✔ schema must NOT know its builder (it's irrelevant) @done(24-07-25 16:39)
    ✘ basebuilder MUST take the schema class as ctor so we can re-use it. @cancelled(24-07-25 16:39)
    ✘ BASE schema must be able to change it's ctor. @cancelled(24-07-25 16:39)

2024-07-11:
    ✘ only a single schema class @cancelled(24-07-12 16:15)

2024-07-08:
    ☐ updateSnapshot only called once
    ✔ 'type' => '$' @done(24-07-17 16:23)
    ✔ choices widget @done(24-07-17 16:23)
    ☐ avoir un endroit ou ecrire des tests sur les pub/sub et sur les reactions.
    ✔ size @done(24-07-17 16:23)
    ☐ Field_Dyanmic
    ✔ valmut partout @done(24-07-17 16:23)
    ✔ onInit @done(24-07-10 13:55)
    ☐ onCreate
    ✔ extends @done(24-07-17 16:23)
        ✔ customMethods @done(24-07-17 16:23)
        ✔ customForms @done(24-07-17 16:23)


2024-07-01:
    ✔ test about link auto-migration. @done(24-07-08 10:16)
    ✔ setSerial. @done(24-07-08 10:16)
    ✔ setting value on value by addming more proxies. @done(24-07-08 10:16)
    ✘ info mapping via custom schema mapping. @cancelled(24-07-08 10:16)

2024-06-29:
    ✘ 1. tweak entity api so we only have one param ({schema, serial, ...}) (15min) @cancelled(24-07-01 22:33)
    ✔ 2. recover from/to list when iterating on the schema (15min) @done(24-07-01 22:33)
    ☐ 3. config tab persitence (15min)
    ☐ 4. debug icon to see panel data (15min)

--------------
☐ make sure choices always show in the same order
☐ debug electron
    - https://github.com/nodejs/node/blob/main/doc/abi_version_registry.json
    - https://www.electronjs.org/blog/electron-31-0

--------------

☐ post to pictogrammers
☐ form context
☐ previous value
☐ router api (copy from loco)

☐ compile classes so it's instant
☐ rename frame hight-level apperance names ('headless' 'subtle' 'default' 'ghost' 'primary' 'secondary')
☐ make controls for all of those high-level apperance names
    ☐ text + shadow + base + ... for each
☐ add a few cushy-specific options like labels (text +...)
☐ simpler APIs to override forms

----------------


☐ hovering color should propagate
☐ background should probably not be inherited; I thought transparent by default stuff was bad, b


☐ bundle
    ☐ improve chain leading to type import to easilly remove wrong links
    ☐ make sure all TS and JS are all present
    ☐ move all stuff in one unique folder

Loco:
    ✔ remove `cushy.` usage in all forms @done(24-05-07 14:31)
    ☐ tree widget (no more st) usage
    ☐ default values
    icons:
        ☐ @mdi/react
        ☐ @mdi/js
        ☐ list icons
        ☐ more icons for other key types
    ☐ misc forms
        ☐ color transparency ?

UC take 2:
    ✔ selection should be hidden when not in generate mode @done(24-03-31 20:49)
    ☐ selection should appear above unnacepted patches
    ☐ unnacepted patches should have button so we can accept them
    ☐ unnacepted patches should have arrow buttons to navigate between suggestions
    ☐ new Draft.UCCategory : Maybe<tool> string
    ☐ create a bunch of apps / default drafts in  `library/UnifiedCanvas`
        ☐ add text
        ☐ ....
        ☐ ad a few custom
        ☐ mozaic
    ☐ default-drafts section in apps.
    ☐ better API to communicate with the UC
    ☐ persist UC state in a form tree

-------------


✔ <Form theme={...} /> @done(24-05-07 14:31)
✔ better bundling ? @done(24-05-07 14:31)
✔ remove all config options @done(24-05-07 14:31)

✔ make all files accesible @done(24-03-26 15:38)
✔ output custom @done(24-03-26 15:38)
    ✔ 3 options @done(24-03-26 15:38)
        ✔ simple function ? => force d'inliner tout, empèche la moindre reutilisation @done(24-03-26 15:38)
        ✔ faire dres trucs magique pour compiler une fontion avec toutes ses dépendences @done(24-03-26 15:38)
        ✔ définir un output type dans l'app, qui en plus se hot reload => prob mieux @done(24-03-26 15:38)
            ✔ plus résilient et moins résilient à la fois. @done(24-03-26 15:38)
✔ add back threejs into build @done(24-03-26 15:38)
☐ investigate https://stackoverflow.com/questions/52579681/typescript-prevent-imports-from-certain-directory-in-project
✔ add back the live update of string values @done(24-03-20 15:21)
    ✔ current system forbid usage as dynamic search @done(24-03-20 15:21)
    ✔ annoying when we expect the string to update live at different areas @done(24-03-20 15:21)
✔ tab between widget int does not work properly (extra jump somewhere in the middle, have to press tab more than once) @done(24-03-26 15:38)
    ✔ int do not work properly @done(24-03-26 15:38)
    ✔ https://cushy.fra1.cdn.digitaloceanspaces.com/rvion/76a67a6a40edffde772bfd345703fc62c0146963.jpg @done(24-03-26 15:38)
✔ missing focus around text and input @done(24-03-26 15:38)
    ✔ tabbing between widgets is hard to do becase we don't have any visual clues anymore @done(24-03-26 15:38)
    ✔ https://cushy.fra1.cdn.digitaloceanspaces.com/rvion/76a67a6a40edffde772bfd345703fc62c0146963.jpg @done(24-03-26 15:38)

✔ fix codegen with new template @done(24-03-05 23:30)
✔ recent Apps @done(24-03-26 15:38)
✔ recentDrafts @done(24-03-20 15:22)
✔ proper Tab @done(24-05-07 14:31)
✔ lastRunAt @done(24-03-26 15:39)
☐ https://github.com/WiseLibs/better-sqlite3/issues/262
✔ lastUpdateAt on forms. @done(24-03-31 19:33)
☐ fold button when no label.
☐ filter enum values: highlight + sort
☐ auto-ui
☐ make adding optional / removing optional recoverable by smartly
    ☐ reusing the draft
    ☐ picking subdraft when optional instead of X

✔ header (instead of line) @done(24-03-26 15:39)
✔ body (instead of block) @done(24-03-26 15:39)

// ?
☐ unified canvas

✔ boolean perperly placed as input @done(24-02-10 20:35)
✔ unify the download model / custom nodes @done(24-02-18 13:54)
    ✔ single button @done(24-02-18 13:54)
    ✔ shown in red if missing @done(24-02-18 13:54)
☐ redo the host management page
✔ initial install buton from the comfyUI @done(24-02-18 15:27)
☐ error messages
☐ CushyDiffusion: ip adapter top level
✔ delete image from right click @done(24-02-18 14:11)
✔ add restart button in the top left scehma appbar blabla for quick comfy restart @done(24-02-18 14:11)
☐ fix the regional widget using the new approach.
☐ don't force focus output
☐ show latent in the selection
☐ paste back the image as extra layer

--------------

✔ simplify UI:: panel step for instance, is taking too much space; and gallery is annoyingly placed. @done(24-02-12 21:08)
✔ download from the model manager @done(24-02-10 19:06)
✔ compress image must not save the images uncompressed too @done(24-02-09 09:16)
✔ fix virtual paths breaking the "sync view of file explorer" @done(24-02-08 23:43)
✔ fix widget hash not working properly @done(24-02-08 23:43)

```
masterpiece, sofa, tree, [color] [adj_beauty] [adj_general] nature, intricate_details, game background, window, magical island, summer, glass
```

✔ button to create own app @done(24-01-28 21:58)
✔ improve CushyDiffusion @done(24-02-01 19:07)
✔ cleanup libary folder: @done(24-02-01 19:07)
✔ more of cushy_app in db @done(24-02-01 19:07)
- preset API
☐ fix app
✘ QRCode generator @cancelled(24-02-09 09:16)
- make _formBuilder not observable => need engine for model
- fix random not updating
-
---------------------
form rework:
    ✘ emoji to illustration app @cancelled(24-01-28 08:13)
    ✔ stop that crap with optionals at type level => use proper Optional warpper. @done(24-01-28 08:13)
        ✔ make it transparent through the formBuilder @done(24-01-28 08:13)
        ✔ hoist label automagically. @done(24-01-28 08:13)
    ✔ properly rewrite group / groupOpt @done(24-01-28 08:13)
    ✔ duplicating a draft should @done(24-01-28 08:13)
    Migration guide:
        ✔ `form.str(...)` has been renamed to `form.string(...)` @done(24-01-28 08:14)
        ✔ `form.strOpt(...)` has been renamed to `form.stringOpt(...)` @done(24-01-28 08:14)
        ✔ in various `form.*Opt` variants: `default` property has been renamed to `startActive` @done(24-01-28 08:14)
        ✔ no more `group: string` param in widget configs, it was anyway unused @done(24-01-28 08:14)


☐ RELEASE AFTER
    ☐ prompt lang @started(24-02-08 23:41)
    ☐ basic unified canvas @started(24-02-08 23:41)
        ☐ inpainting
        ☐ outpainting
        ☐ mask editing
        ☐ stamp tool
    ☐ basic documentation website @started(24-02-08 23:41)
    ☐ bug pass @started(24-02-08 23:42)
    ✔ form layout @started(24-02-08 23:41) @done(24-02-18 15:28) @lasted(1w2d15h47m14s)
    ☐ FEATURE FREEZE. NO MORE FEATURES.
    ☐ make a 2-minute showcase video


prompt-lang:
    ☐ lora tooltip
    ☐ shortcut to increase/lower weight : ctrl+up/down
    ☐ autocomption
        ☐ lora
        ☐ embeddings
        ☐ wildcards
    ☐ tooltips
        ☐ lora


cnets:
    ☐ better enum widget with filter support (5min)
    ☐ fix bug where dropping images doesn't work (?)
    ☐ list UI is just hard to read
    ☐ review how prefabs canons
    ☐ cut the old docs away


Todo :
    ☐ create all nodes at once, then hydrate them after, so all json are ready
    ☐ better error message when node not found
    ☐ disable publish button if not logged in
    ☐ improve OuputWrappers to allow to open in side panes
    ☐ safe/unsafe should be option panel
    ☐ disable the delete button for virtual-comfyui hosts
    ☐ rich prompt + shift/alt+enter should not accept compltion but insert newline
    ☐ finish website
    ☐ video
    ☐ warning if custom nodes not installed by default
    ☐ finish full page apps
    ☐ add browser/install page
    ☐ fix sut
    ☐ draft result are too wide by default / should open in bottom panel
    ☐ selectMenu
    ☐ show different from current preset in color
    ☐ click on rich prompt should
    ☐ primitive to show that a custom node is required
    ☐ proper model picker action
    ☐ cache action compilation
    ☐ image loader (local files by path)
    ☐ permutations node (possibly hard, possibly easy with lists)
    ☐ code builder:
    ✘ new primitive to add all the primitive inputs instead of having super long names, @cancelled(24-02-18 15:30)
    ✘ add back popout button @cancelled(24-02-18 15:33)
    ✔ use any image as draft illustration @done(24-02-18 15:30)
    ✘ runpod serverless @cancelled(24-02-18 15:30)
    ✔ one-click create app @done(24-02-18 15:30)
    ✔ stuck in ComfyUI @done(24-02-18 15:30)
    ✘ comfyUI node explorer looks bad @cancelled(24-02-18 15:30)
    ✘ select nodes  => see the corresponding code in realtime @cancelled(24-01-26 18:49)
    ✔ better treeview with apps @done(24-02-01 19:11)
    ✔ home page @done(24-01-31 13:00)
    ✔ image app @done(24-01-31 13:00)
    ✔ optimize all images ☐ option to reduce image size @started(24-01-26 18:50) @done(24-02-01 19:08) @lasted(6d18m22s)
    ✔ disable update button from within the app, and tell people to close cushy and click install @done(24-02-01 19:08)
    ✔ single output panel @done(24-02-01 19:08)
    ✔ move hosts in an other panel @done(24-02-01 19:08)
    ✔ library page on the website @done(24-01-26 18:49)
    ✔ finish autorun so it wait for nothing to be running an action change @done(24-01-26 18:49)
    ✔ image drop anywhere in the app @done(24-01-26 18:48)
    ✔ currentForm() @done(23-12-31 15:38)
    ✔ fix nsfwjs by including the model locally (web host went down) @done(23-12-23 08:54)
    ✔ button to delete draft @done(23-12-31 01:16)
    ✔ https://unjs.io/packages/image-meta @done(23-12-31 13:21)
    ✔ better hot-reload @done(23-12-31 18:38)
    ✔ store metafile @done(23-12-31 18:38)
    ✔ stop storing build artifact on disk @done(23-12-31 18:38)
    ✔ currentRun() @done(23-12-31 18:53)
    ✔ fix login callback not beeing available after public dir change @done(24-01-06 22:12)
    ✔  better way for authors to add defautls to their prefabs / presets (??) @done(24-01-01 22:50)
        ✔ avoid errors @done(24-01-01 22:50)
    ✔ include requirements on custom nodes needed so an error message appear if missing custom nodes @done(24-01-01 22:50)
        ☐ display it if node is missing
    ✔ button to download missing models automatically @done(24-01-01 22:51)
    ✔ duplicated 'CLIPVision model (IP-Adapter)' + finish fixing the ip adapter @done(24-01-07 09:40)


misc:
    ✔ open folder @done(23-12-22 15:59)
    ✔ "edit" delete the output image @done(23-12-22 14:02)
    ✔ add default non virtual local host @done(23-12-22 13:57)
    ✔ config => settings @done(23-12-21 23:16)
    ✔ ability to quickly troubleshoot db problems via debug menu @done(23-12-21 23:16)
    ✔ proper size & orientation detection is now available for any kind of image, thanks to image-meta @done(23-12-21 23:16)
    ✔ prompt errors reported by cushy (not runtime error) are now properly reported as errors in the UI and persisted in the DB @done(23-12-21 23:16)
    ✔ capitalize `theme` word in appbar @done(23-12-20 15:55)
    ✔ reorder appbar to have login at the end of the left section @done(23-12-20 15:55)
    ✔ opening a past step fold it in the outputs panel @done(23-12-20 15:34)
    ✔ menu reveal  close itself too fast @done(23-12-20 15:12)
    ✔ text on theme menu @done(23-12-20 15:13)
    ✔ auto layout not handling positive correctly @done(23-12-20 15:50)
    ✔ improve forms look and feel @done(23-12-20 15:27)
    ✔ improve size widget preview a bit @done(23-12-20 15:27)
    ✔ hacky fix library so it's at least a bit usable @done(23-12-20 15:40)
    ✔ codegen swap file @done(23-12-20 15:17)
    ✔ hot reload apps @done(23-12-22 17:37)
    ✔ don't autofocus preview images @done(23-12-19 10:25)
    ✔ draft tabs/ files @done(23-12-19 10:24)
    ✔ background image for config panel @done(23-12-19 10:24)

    ✘ small mention in the readme that dev console can help troubleshoot problems. @cancelled(23-12-19 10:24)
    ✘ custom size on size widget @cancelled(23-12-19 10:24)

    // 🔶 can't move frame ref here because no way to override mobx
    // comfyUIIframeRef = createRef<HTMLIFrameElement>()

    ✘ surrounded by card for ju and tu @cancelled(23-12-16 17:59)
    ✔ better marketplace without fetching stars and repo infos by adding some gen-marketplace-data @done(23-12-16 17:59)
    ✔ tree library menu by default @done(23-12-16 17:53)
    ✔ drafts @done(23-12-16 17:53)
    ✔ fix the "run" button not being disabled when it should @done(23-12-16 17:53)
    ✔ have a better auto-UI generated @done(23-12-16 18:00)
    ✔ make the run button red if cushy is not running @done(23-12-16 18:00)

✔ remove the need for node / npm to be installed @done(23-12-06 00:14)
✔ ❌ problem : @done(23-12-06 00:14)
    ✔ installing Cushy depends on having node and git installed @done(23-12-06 00:14)
    ✔ many people don't have node installed @done(23-12-06 00:14)
    ✔ many people have too old / incompatible version installed @done(23-12-06 00:14)
    ✔ install instruction have too many steps @done(23-12-06 00:14)
    ✔ it's hard to provide a self-contained upgradable archive @done(23-12-06 00:14)

✔ 🟢 solution: @done(23-12-06 00:14)
    ✔ have a install script with 0 dependencies that @done(23-12-06 00:14)
        ✔ download the tiny `pnpm` binary (exact version) @done(23-12-06 00:14)
        ✔ use `pnpm` to install all dependencies including electron @done(23-12-06 00:14)
        ✔ bypass completely the need for node by using electron built-in node @done(23-12-06 00:14)
            ✔ start `vite` via it's typescritp api from the start.cjs script itself @done(23-12-06 00:14)
            ✔ this will also probably fix the problem of vite/electron not closing synchronously @done(23-12-06 00:14)
    ✔ extra bonus: @done(23-12-06 00:14)
        ✔ ship pnpm binaries for common archs in the repo directly ? @done(23-12-06 00:14)

✔ fix all selects @done(23-11-26 11:56)
✔ proper error message when node not found @done(23-12-02 10:44)
✔ open in correct panels @done(23-11-25 14:23)
✔ have official layout show on first launch even if no comfyUI found @done(23-11-24 22:39)
✔ auto-open all default 5/6 built-in apps @done(23-11-24 22:34)
✔ re-ordernable lists @done(23-11-24 13:51)
✔ step on size widget @done(23-11-24 13:51)
✔ favorites added at the top @done(23-11-23 20:53)
✔ boolean toogles @done(23-11-23 20:51)
✔ regional prompt should allow to change color @done(23-11-23 21:11)
✔ ensure we don't download github stars anymore @done(23-11-24 12:20)

✔ break node in rich prompt @done(23-11-11 09:57)
✔ properly re-focus root on any blur (find some code I previously wrote for that) @done(23-11-11 11:20)
✔ fix remaining errors in the codebase @done(23-11-11 11:18)
✔ proper size picker action @done(23-11-20 03:18)
✔ no git init when creating actions @done(23-11-10 20:21)
✔ faster clone @done(23-11-10 20:21)
✔ add squoosh images @done(23-11-20 03:18)
✔ error messages @done(23-11-20 03:18)

✔ center preview @done(23-11-08 20:55)
✔ better latent preview @done(23-11-01 13:15)
    ✔ fix aspect ratio @done(23-11-01 13:15)
    ✔ zoom on hover @done(23-11-01 13:15)

✔ better scribble @done(23-11-08 20:55)
✔ edit should add to type-checking @done(23-11-08 20:55)
✔ autorun @done(23-11-08 20:55)
✔ scribble @done(23-11-08 20:55)
✔ close things @done(23-11-08 20:56)
✔ better type-checking config @done(23-11-08 20:56)

✔ remove the action picker completely @done(23-11-08 20:56)
    ✔ have a full-screen card picker that appear on pick  an action part @done(23-11-08 20:56)
✔ make the default layout have two columns: @done(23-11-08 20:56)
    ✔ one for the card UI @done(23-11-08 20:56)
    ✔ one for the preview @done(23-11-08 20:56)
✘ have the "gallery" be a "bottom" border so it don't take space @cancelled(23-11-08 20:57)
✔ switch to a nice vertical layout for forms, since 80% of people prefer that @done(23-11-08 20:57)
✔ redo the navbar, so labels are visible for all main menus @done(23-11-08 20:57)

✘ have the "run" panel be a  right "border" so it don't take space @cancelled(23-11-08 20:57)
    ✘ https://rawgit.com/caplin/FlexLayout/demos/demos/v0.7/demo/index.html @cancelled(23-11-08 20:57)


marketplace:
    ✔ proper action pack manifest file @done(23-11-08 20:57)
    ✘ show readme in marketplace @cancelled(23-11-08 20:57)
    ✔ one-click create action pack @started(23-10-26 21:30) @done(23-11-01 10:39) @lasted(5d14h9m30s)
    ✔ refresh star count and readme every few hours (add expire mechanism) @done(23-10-26 21:29)

perf:
    ✔ make type inference is faster @done(23-10-26 20:55)
    ✔ make Cushy not load all actions/draft by default @done(23-11-08 20:56)

discoverability:
    ✔ self discoverable completsion `:`, `@`, `#`, `*` @done(23-10-26 20:54)
    ✔ better default action pack files  (that shows how to build modular ui helper, etc) @done(23-10-26 20:55)

panes:
    ✔ ComfyNodeExplorer @done(23-10-26 20:04)

asset pack:
    ✔ marketplace should allow custom assets for images @done(23-11-08 20:57)
    ✔ support assets in packages @done(23-11-08 20:57)

widget UI:
    ✔ polish some widgets @done(23-11-08 20:57)
    ✔ prompts disable @done(23-11-08 20:57)
    ✔ choices @done(23-11-08 20:57)
    ✔ improve image preview so it fit by default + more features @done(23-10-26 21:47)

misc:
    ✔ image upload by hash system (multi host !!!) @done(23-11-10 09:41)
    ✘ fix prompt (-api.json) import @cancelled(23-11-10 09:41)
    ✔ add CLA for contributors @done(23-10-25 21:41)
    ✔ better default layout on first run @done(23-10-24 21:54)
    ✔ fix png import @started(23-10-24 18:23) @done(23-10-24 18:24) @lasted(1m32s)
    ✔ add shortcut system @done(23-10-24 21:08)
        ✔ fix cmd+w not working by default due to electron registering global shortcuts @done(23-11-08 21:01)
        ✔ fix cmd+w closing the top-level window for bad reasons @done(23-11-10 18:22)

--------------------

https://cushy.fra1.cdn.digitaloceanspaces.com/rvion/6MDKAn1sLhBrqjQqpeNZP7XqYhsX3bsNMGX7YABk4w.jpg
- custom allow subtrees
- widget should be able to render themsemves


blender scenes act as top-level form trees (in the shared scenantic)