Move this current TODO list to a given archive for that day.
This is an ongoing list of all TODO items that still need to be dealt with for Naissance to begin exiting beta and moving to an actual release schedule, namely the completion of fundamental vector and raster features. Current TODOs should focus on bugfixing and workflow polish as opposed to fundamentally adding new features.
Consider modularising fundamental design by having a designated Variable Editor window (Global/Group/Entity), having a modularised drag-and-drop Block Editor for complex/method designs, and having a Script editor with proper tagging, naming, and nesting systems (it should also support the aforementioned Block Editor eventually).
The following is a list of current archived TODO lists that may need to be referenced in the future:
¶ Outstanding Issues.
- main.settings needs to be loaded and unloaded with loadSave() and writeSave()
- Set Stroke to be the Same As Fill (in Entity UI) needs to work
- Anchor Entity Popups and Hide Entity Data Graph by Default should hopefully work
- Fix Auto-Assign z-index for map layers
- Add minimisation chevrons for settings sections
- Brush settings central popup for changing advanced brush settings
- Default variables
- Scripts on brush finish
- Styling templates
- printEntityContextMenu() should open at the point of cursor click, no matter what
- Move .disable_brush to functions: disableBrush(), enableBrush(); and add element for it to brush bottombar
- Extend UF.
- Add close buttons in the top right for non .unique context menus, i.e. floating context menus.
- UF should have draggable windows (see https://www.w3schools.com/howto/howto_js_draggable.asp), but they should also be resizeable with a given close button.
- Add a central dialog prompt container where new windows can spawn by default.
- Add minimise chevrons for Entity UI
- Entity graphs should be minimised by default
- Draggable nodes for Polities
- Add parseBrushLimit() function. FIXED This was resolved.
- Refactor UI draw loops so that they are consistent in where they are located (ui_logic_loops.js, for example). FIXED
- loadDate() doesn't reliably occur if you press Enter on the date selector. This may be due to clientside input lag, so it may not exist as an actual issue. Confirm later. FIXED
- loadDate() doesn't automatically trigger on startup after loading a file. FIXED
- Fix: It could be addressed through having a draw loop that triggers every 1000ms until the first user interaction is triggered. This draw loop and first interaction check resets with each loadSave(). This can be detected through whether the Undo/Redo timeline is currently populated. FIXED
- loadSave() needs to clear the current timeline session. FIXED
- printEntityContextMenu() needs to have options.pin working (if it is false, it should be closed upon the opening of a new printEntityContextMenu() call. FIXED
- There needs to be an option for createPopup() to anchor to the bottom left for consistency.
- If an entity is currently hidden, it should fetch the last valid coords. There should be a function for this: getLastCentre().
- Merely visiting the current entity should not cause it to set variables. This is because there is a default setEntityVariable() call. FIXED
- Refreshing the Entity Bio (printEntityBio()) should be in a UI draw loop.
- Entity Bio entries should read from a config file.
- Entity Customisation: RGB text inputs do not actually apply to either fill/stroke (especially not automatically onchange, which they should). FIXED
- Masks: Per .entity mask classes are not being added or rendered. FIXED
- New Entity does not appear in the hierarchy left sidebar upon being instantiated (there should be a dedicated entity for the current cursor).
- No way to set default variable values.
- Values in the current ‘New Entity’ do not transfer over to the finished entity upon finishEntity(). There should be a foolproof way to make this happen.
- Make sure this also applies to undoFinishEntity()
- The colour wheel selector neither corresponds to where you click, nor where it should be, but is consistently offset vertically somewhat. It should be local div agnostic. See if Claude can figure what is going on. REVISIT
- There appears to be an unfixed bug with adjustTime() where setting it to 00:00 will cause a glitch-out.
- You can't drag an Entity back to the main hierarchy reliably. This needs to be fixed by adding a placeholder div for the main hierarchy (somehow).
- Group masks don't clear up properly. removeGroupMask() needs to be fixed to do this. This can happen when an entity's .mask is set and the session reloaded. FIXED
- There appears to be an undo offset of +1 past the buffer from where it actually should be.
- Polities not displayed should be in italics.
- Dedicated settings page (Document Settings section per file; Global Settings for overall Naissance settings). WIP
- Dedicated scripts page for rendering.
- Customisation: Other (Data Variables)
- Custom data fields per entity
- Add variable/Delete variable (allow for UI nesting, although all are flattened strings, i.e. ‘age.15-25’, with . being the nesting delimiter for a namespace if found)
- All keyframes and global toggles
- Interpolation type: linear, cubic spline, none; checkbox for interpolation zero-bounding (true by default)
- View in graph toggle
- This should have its own custom context menu with the main line item buttons being ‘Add subvariable’, ‘Delete variable’, and ‘Edit variable'. This is most similar to entity actions, or entity keyframes.
- Fullscreen variable editor
- Custom Mapmodes
- Add/Delete Mapmode
- Mapmode names, tags, icon customisation (including colour/stroke customisation)
- Global Mapmode toggle (carries across saves)
- Pick D3 colourscheme
- Add D3 colourscheme picker
- Custom scripting (feeds in entity_obj; forEach)
- Modular persistent text editor. Should bind to a given namespace
- Text editor scripting and saving
- Linear
- Logarithmic with exponent curve control ^0 to ^1
- Add mapmode search functionality
- Add current viewport bounding box, coordinates, zoom level, and cursor latlng/x/y in bottom row for Date.
- Settings tab
- Global variable management; settings UI per file
- Global toggles
- Detached global variable defines (allow for nesting)
- This should also have its own custom context menu with the main line item buttons being ‘Add subvariable’, ‘Delete variable’, and ‘Edit variable'. This is most similar to entity actions, or entity keyframes.
- Custom variable operations/scripts
- Remove negative numbers button
- Remove zero numbers button
- View in graph toggle
- Group theme customisation
- Custom Entity descriptions
- Citation engine
- Citations should be stored as a JSON index with numeric keys to specific URLs with notes
- Insert link as citation/footnote button for variables/text content
- General-purpose Scripts tab. Code can be written in here as .js and deployed for debugging purposes
- Default scopes: ‘global’/'histories'/'polities'
- Export current mapmode view as raster gridmap (this converts entity IDs to 32bit RGBA ints with associated data .json files for the current history frame)
- Export timeseries options (define custom domains, with custom steps)
- Automated timeseries pattern handling
- Gridmap editor
- Nested ID/Layered region raster editor
- Brush, fill, and overlay features. This is basically Paint.NET
- Overlay raster on vector
- Statistical visualiser for gridmap rasters (use https://github.com/maptalks/maptalks.gridlayer for Gridlayers)
- Raster gridmapping functions
- Scaling numeric raster data and operating on multiple images?
- Scratch-like code editor for mapmodes
- Scratch-like code editor for variable scripts
- Scratch-like code editor for operating on rasters; timeseries focused
- Kriging support
Note to flush out this TODO list later when we get there. It remains important for fundamentals pre-release.
- Lines support
- Points support
- Draggable nodes for Lines
- Draggable nodes for Points
- Auto-labelling
- Fill patterns (i.e. gradients, feathering)
- Stroke patterns