Skip to content

Code Debt --- Paid

  • cannot edit Z in 2D
    • movement in the z axis seems to be disabled
      • i can adjust position in x or in y, but not z
  • scene tumble in 2D is very very very slow
    • grid!
  • add glow to + buttons
  • v scroll appears a bit too early (everything still fits)
  • replace _ with space in UI, restore it internally
  • insert -> not write .l into inserted child's l formulas
    • test: add a 2-drawar cabinet to wacka
  • bring the [[working features]] table up to date
  • add a sep
    • below att/ang/rep set control in p selected
    • above show constants
  • selecting often fails
  • rename test -> hit_test
  • convert Stores into a class
  • ability to export/import to/from file
  • new children spontaneously appear
  • steppers hop up and down in build notes
  • convert Orientation functions into a class
  • SO should use its internal id for hierarchy/formulas
  • add child should apply to current selection
    • bug: click on button -> selects root
  • add new child -> wrong dimensions
    • algorithm: using smallest length of parent, divide that in half, use that for all dimensions
    • assure that the child axes all align with the parent's axes
    • after adding, select the parent
  • cruft
    • consolidate redundancy
    • simplify over-engineering
    • remove inconsistencies
    • ameliorate structural risks
  • delete selected SO
  • hover/click should hit the front most SO
  • hide occluded dimensionals
  • performance analysis -- app is VERY unresponsive
  • build number button -> bottom left of canvas
  • remove "Details" label from details
  • background color picker -> details same row as edge color, and make it the left most
  • add details hamburger (copy from ws project)
  • use hit target for ALL buttons and segments
  • research scene model
  • move all Angle and Polar code from Coordinates to Angle
    • including thin delegates
  • pac: combine all *Rect interfaces
  • find all the build numbers (milestones) and dates -> build notes
  • rebuild SO with 2 single-axis rotations
    • from which, quaternion is derived
  • ABANDON: see through -> all, add "back"
  • organize architecture notes
  • version 4: attr serial -> orig, ext, len, angle
  • interpretation -> wait until approved
  • delete -> delete selected AND its entire subtree of SO
  • integrate [[simplicity]] -> [[workflow]]
  • [[17.library]]
  • get claude vscode == plugin
  • tumble ALWAYS applies to root SO
    • OPTION tumble -> applies to selected SO
  • values in attr tables should be offsets, not absolutes
  • choose an SO (buttons at top of graph) -> select most front facing face
    • as root tumbles -> update selection to select (possibly different) most front facing face
  • save button should use SO's name for file name
  • remove all children button should also remove all sd constants that are no longer referenced
  • rename standard dimensions -> user constants
  • not all user constants got removed by delete all children
    • verify that those that remain are NOT referenced !!! but do NOT remove them
    • debug delete all children
  • hover -> enabled cells
  • pac: in all code files, use tabs that are 4 (not 2) spaces
  • show computed count (not funky equation)
  • segmented control attributes / repeater (only appears for repeaters or on clicking repeat)
  • when resizing root change = 2 times mouse drag
  • change "selection" to "smart object" and D_Selection -> D_Smart_Object
  • move instructions (above) for configuring repeaters -> mono/di/notes/user manual/repeaters.md
  • rename list -> hierarchy
  • backward compatibility -- describe current design reading a file that is v1 → [[di/notes/architecture/core/migration|migration
  • preferences
    • move units system button to top far right
    • move reset button to bottom right
    • separator directly above line thickness slider
  • red dots for occluded and disabled
  • set_invariant synced length from raw .value instead of get_bound(), corrupting child SO geometry
    • BUG: open the drawer from the library. selected the front SO. click the cross box in row d. the correct formula appeared (Y - y) with the formula for Y blanked, the values unchanged. the drawing looked fine. THEN, check the cross box in row Y. the value for y changed (to a large negative number, and the value for Y to an even larger negative number) and the drawing not so nice. explain
  • row span for root disallowed formulas and "s" values (they are always 0)
  • details rename banners -> parts, selected parts (from assembly and selection)
  • re-enable stretching origin (for any given axis) of root
    • -> by adjusting length such that end remains fixed (for that axis)
    • dragging the end point -- disallow making the length negative -> at the moment of length == 0, switch to dragging the start point
  • the root face selection dots that are red -> blue
  • cannot insert stretch into a new SO
    • was working
    • click + in library banner
    • option click on stretch in library
    • red dots appear on hover over nothing
    • relaunch stretch appears
  • always draw the root's bottom rect (faint stroke = grid's selected SO stroke)
  • resizing the window makes the drawing blink a lot. surely it does NOT need to re-render, only shift what is already rendered?
  • straighten & orientation controls -> favor bottom at bottom OR front at bottom
  • select root SO on click a library item (replaces the root) AND on launch if nothing is currently selected
  • shrink to fit broken
    • relaunch increases depth much farther than farthest SO
      • fix: set_bound on compiled attrs stored absolute value; get_bound added parent offset again (double-count)
    • enhancements moved to [[7.edit.drags]] § Enhancements
  • rewrite rotation code
    • add proposal to [[di/notes/work/done/rotation]] for rotating (leave swapping alone)
    • manual test fails: rotate drawer -> dreadful
      • only some of the children of the rotated SO actually rotate
  • put all "<->" on right side of buttons
  • guide files:
    • rename versions.md -> references.md
    • rename migration.md -> versions.md
    • merge enlarged.algebra.md into notes/architecture/core/algebra.md
      • remove cruft
  • algebra cannot parse ".l - top_drawer.l"
  • constants -> values
  • the invariant formulas are distracting. hide them
  • rename user constants -> givens
  • [[version.9]] portable format
  • file name
    • take root object name it
    • no underscore (-> space) in them
  • cyclic formula refs -> default to 0
    • want: "capture the last user choice"
    • a new kind of idea: "these two are the same"
      • ref a constant
        • drag does not update the constant
  • invert the order of the breadcrumb buttons
  • add another col to attr table before first col: s, l, e
  • change the order of axis rotations (eg y then x)
    • sphere symmetry bug
    • UX to reorder axes
      • show the current rotation order
      • new column with a down pointing triangle
      • add action to click ->
      • buttons with the order
        • swap first two
        • swap last two
        • swap first and last
      • permutation
        • three things taken three at a time
        • nine buttons, ick
  • after drag, mouse up -> repositions / jumps / unintuitive / unexpected / feels unreliable & inconsistent
  • duplicate button -> recursive
  • visible children button -> new column, before eye column
  • add "3 of 24" at right of edit title when not showing parts
    • move to left of title input, when not showing parts
    • add new first column to parts table, for sibling number, when showing parts
  • alter the text of the hide-show toggle in the parts table title row
    • show / hide xxx parts (xxx = total number of SOs, not including clones)
    • The count of non-clone parts is: $w_all_sos.filter(s => !is_clone(s, $w_all_sos, $w_tick)).length. I also need to subtract 1 for the root (since the root is not really a "part" users think of). Let me check if the parts table shows the root.
  • in the root row of the parts table, make the first eyeball cell blank (root always shows children)
  • hierarchal triangles
    • larger
    • generational -> each click hides a generation, depth first
      • click computes the deepest, then reveals (OPTION hides) those
      • triangle points right only for all hidden
  • when children are hidden -> show number of progeny in place of hyphen
  • move "factory reset" and "reinstall" to their respective glow banner, at the left, without moving the title
  • layout of separators needs larger/uniform gaps
  • increase font size for face labels
  • hover color
    • lines
      • lines fatter and colored red
      • hue shift from lines color
  • redo for undo
  • cross is too faint in attributes table
  • to convert an SO into a repeater:
    • in empty repeat area (SO has no child), add button to add child for template
      • identical to SO
  • edit formula -> immediately recompute value
  • parent is-visible eyeball -> toggles both self and children
  • eliminate position/size columns from parts table
  • [[16.formulas]]
  • stipulations -> tests -> code
  • attributes table -> "-" cell -> lock (value)
  • new implicit 'c' -> exact center between start and end
  • add a new stipulation and new tests for givens
    • givens can be locked. locked givens cannot be target of reverse propagation
  • lock ignored on givens AND attributes
  • move scaling slider to controls. layout for:
    • desktop: two control rows:
      • first row same as current
      • second row guides slider horizontal left justified, scale right justified
    • mobile: two rows:
      • first has hamburger,
  • controls have too much separation
  • v scroll in details -> update hit rects
  • parts table
    • drag and drop
  • collapse parts tree not stuck on selected -> select the collapsed SO
  • bring guides up to date
  • launch with editing enabled and "straightening" magnet turned off
  • add screenshots of first steps
  • analyze how ws reads and captures query strings
    • add that capability to managers/Configuration.ts
    • query strings "clear preferences"
    • move the App on mount code -> Configuration "configure_css"
  • rename user manual -> reference guide
    • create new folder "user guide"
    • move first.steps into it
    • update index
  • incorporate user guide into app
    • move md files and images into /src
    • "?" button in lower right corner of graph
  • stipulations <-> code
    • distribute -> components?
  • help
    • move reference guide -> src/manual
    • keep hamburger visible
    • hamburger -> sidebar visibility toggle
    • new preferences`
      • hamburger help visibility
      • deploy help page id in preferences so revisit help goes to last-visited help content
  • white thumbs on all sliders
  • click plus button in parts banner -> opens (if closed), selects new part
    • do not create a child if selected SO is a repeater or a clone
    • hide plus button in parts banner when selected SO is a repeater or a clone
  • ability to cut an SO in half
    • a "cut" button to the left of the existing "duplicate" button
    • cut longest (plain length value) dimension
      • refuse if two longest dimensions are equal
      • show error in status strip
    • repeaters -> duplicate the template (so both halves have an identical copy)
      • produces two repeaters (each with its own template)
    • a clone or a template or any part that has children -> refuse
      • hide the cut button
    • formulas -> duplicated except on axis being cut
      • each half gets a revised formula such that their values are exactly half the original's length on that axis
        • leave the invariant formula alone. it is, ahem! invariant
        • if the invariant is 'l' alter the 'e' of the original and the 's' of the new, to place them exactly half way
        • if the invariant is 's' divide the 'l' in half and set 'e' in the original to be half way
        • if the invariant is 'e' divide the 'l' in half and set 's' in the new to be half way
        • "half way" means: "alter the formula such that the value is half way"
          • if no formula, "compute and set the value to be half way
    • expand "duplicate" helper
      • original keeps its current name and the new sibling gets a numeric-suffix name (matching the duplicate routine's naming)
    • new half becomes the selected part
  • add a separator between
    • attributes table and show/hide givens button
    • parts table and duplicate button row