Skip to content

Roadmap ‐ High Level To‐Do

Dmitriy Leybel edited this page Jul 23, 2024 · 3 revisions
  • Simplify non-GUI interface of elements. E.g. ability to easily submit an input and return and output
  • API - Integrate Panel server into FastAPI app
  • Names of objects being packed into the OutputPort need to be (more) visible
    • Required items can be exposed in the Element via initializing a watcher on required_items
  • Decide how end-user should interact with the model when outside of the Element
    • And how the model params should be initialized. The issue with passing a model_params dict is that it doesn't change to reflect the changes within the Model, although we can set it up in the Element base class to apply to all models.
  • Need a style/theme/css management system*
    • Elements and payloads should have base css assigned to their classes for efficiency(no reloading of css), however, there should also be a path for overrides
  • System for augmenting Payload elements
    • Reasoning: Certain Elements may require payloads to signal something back to them
      • e.g. context handling may involve a message payload needing a way to send back an add-to-context-signal through a button.
    • Implementation: When payloads are created by this Element, it augments the Payload in a way that keeps the contractual interface with other Elements, but with additional features
    • Problem: if the consuming/receiving Element isn't directly linked to the augmenting Element, then that Payload may be further augmented, breaking the functionality
    • Solution: connect the augmenting Element to the Element meant to consume the augmented Payload, and pass the augmentation method(factory?)
  • Payload(et al) Referencing fix when starting up the server and loading state - unpickled objects lack the same references, lead to redundancy and other side effects
    • Need to integrate a reference resolver to fix it. Use IDs and rereference - (injected at a component level?)
  • Use different views for the same Payload among different Elements.
    • One solution would be to create a new Payload and pass custom CSS to the views
    • Alternatively, Payloads can be created to handle multiple views which are driven by the same model. When the model changes, all of the views change as well. The containing element determines the styling of the Payload within it, so it'll have its own set of views associated with it. (Dict of dicts| {Element: {view_name: view()}} )
Clone this wiki locally