Skip to content

Latest commit

 

History

History
156 lines (155 loc) · 4.97 KB

TODO.md

File metadata and controls

156 lines (155 loc) · 4.97 KB

To Do

  • General
    • Move rows and columns
    • Project title
    • Service worker for caching
    • Process formulas in web worker?
    • Lazily render cells
    • Typescript
    • Work on multiple monitors
    • XSS and phishing disclaimer
    • File menu at the top
    • CSV import and export
    • Button to reset window locations
    • Import from Google Sheets
    • Export to Google Sheets
    • Formula draggy thing
    • Reformat for printing and export
    • Formula inline edit textarea can grow and is visible above other cells
    • Separate logging system with tracebacks for formula errors
    • Toolbar with buttons (editable)
    • Click cell while editing formula to insert it
    • Add conveniences for LLMs
    • Event hooks
    • Zoom out extra on mobile, but only cells and code, not UI elements
    • Frozen rows and columns
    • Toggle off automatic cell updates
    • Change default styles for all cells in code editor
    • Highlight referenced cells when in insert mode
    • Cells can run functions in a destructor
    • Context menu as last child of body, gets moved by right click
    • Render tables to images to save and share screenshots
    • Settings input with numeric input and buttons on either side
    • CSP to restrict worker-src (except that we don't want to block web workers, only service workers)
  • Clipboard integration
    • Cut
    • Fix "put" behavior to copy formulas around to selection
  • Settings window
    • Change colors
    • Change debounce save timeouts
    • Change number of recalculations for self-referential cells
    • Whether Ctrl+c cancels or copies
    • Whether Ctrl+v vertically selects or pastes
  • Window system
    • Track state
      • List of Windows
      • Window position (x, y)
      • Per window
        • Open/closed
        • Minimized
        • Title
        • HTML contents
        • Snapped or free
    • Title bar
    • List open and minimized windows at the bottom
    • Snap windows
    • Focus order for z-index stacking
  • Code editor
    • Syntax highlighting
    • Auto-complete quotes, parentheses, etc.
    • Indent extra between quotes, parentheses, etc.
    • Turn on manual save instead of auto save
    • Save indicator
  • Save/load window
    • Add share buttons using navigator.share
    • Add download button
    • Register Code Grid to open PNG files as PWA
    • Preview before loading
    • Load button
    • Display load errors
    • Paste image
    • Load from URL (CSV, JSON)
  • Formula processing
    • "symbols" in formulas
    • Namespaced formula functions
    • Make parsing faster
      • Hand-written recursive descent
  • Local storage
    • Save sheets
    • Load sheets
    • Display tutorial on first visit
    • Tree-based revision control (use IndexDB?)
    • Store encrypted sheets
    • Personal library of formula functions
  • Standard library formula functions
    • LOCK
    • LIST
    • PYTHON
    • PRINTF
    • REGEX
    • JQ
    • LINK/URL
    • DEBUG?
    • Standard way to include external scripts and wait for them to load
    • Python formulas using pyodide
  • Keyboard shortcuts
    • Cmd + arrow keys
    • Stay in insert mode when cells clicked
    • Editable keybindings by importing objects and having them in scope at eval
    • Tab stays in insert mode
    • Navigate windows/sheets
      • gt and gT
      • i3 type key commands
    • Vim keybindings in code editor
    • I, a, and A
    • H, M, L
    • W, E, B
    • Ctrl+u and ctrl+d
    • Refactor keyboard shortcuts
    • Number + gg
    • y and yy (and y with all motions) and p and P
    • Different registers for yank buffers
    • d and c and cc and S (along with dw, de, db, cw, ce, cb, etc.)
    • r and R
    • J
    • Visual mode o and O
    • >> and << and insert mode Ctrl+t and ctrl+d and visual mode > and <
    • Ctrl+i and ctrl+o and g; and g,
    • Searching, finding, and replacing
    • Record macros
    • Allow remapping
  • Testing
    • Playwright
    • Integrate Playwright coverage with vitest coverage
    • Test parsers and classes in formulas
  • Push to versioned folders on Pages based on git tags
  • Documentation
    • README
      • Description and introduction
      • Examples
      • Known Issues
    • Tutorial
  • Bugs
    • Cannot select on mobile
      • Is this necessary to fix?
    • Scrolling up or left with selection doesn't work, scrolling down and right only kind of works
      • Will be fixed automatically when lazy scrolling
    • Context menu does not activate on iOS
      • Manually have to detect long press
    • The bottom border of sheet tabs do not adjust after renaming
      • Will be fixed automatically when using windows instead of tabs
    • Reference value changes re-run, but argument function calls to set don't force re-run
    • history.pushstate with non-cloneable values fails
    • Copy/paste does not always work
    • Line numbers have small lag on scroll
    • Special keys bar buttons cause active element blur when double tapped on iOS
    • Side-scrolling special keys bar on iOS inserts on pointer up
    • Special keys bar and formula bar is scrollable on mobile, even with touch-action: none - needs touch handler with preventDefault to stop vertical scrolling
    • Accidentally typing "RC" while typing another formula can cause everything to hang