Roadmap

Matt Hicks edited this page Nov 4, 2018 · 31 revisions

Features for 1.0.0 (Future)

  • Optimization module
    • CSS merging, cleanup, minification, and optimization support.
    • HTML minification and optimization support.
    • Image validator and optimizer for production deployment.
  • HTML caching in Local Storage for offline and faster cached loading
  • Convenience functionality for deploying native applications
    • Windows
    • Mac
    • Linux
    • iOS
    • Android
  • NativeFont to represent browser-rendered fonts
  • Selectable Text in Canvas for copy/paste
  • TextInput in Canvas for editable editable text
    • Editing features
    • Caret with customization support
    • Rich text segments
    • Multi-line support or explicit single-line support
  • Stylized Components
    • Button
    • TextField
    • TextArea
    • Checkbox
    • RadioButton
    • ListSelection
  • Update Components to only render when they need to (lazy rendering)
    • Disable rendering of offscreen or invisible components
  • Update UIExamples to render using canvas and look a lot nicer
  • RichText to render stylized text
    • DSL for cleanly representing
    • JSON format for inline, loading, and exporting
  • Examples site and full cleanup of examples

Features for 0.10.0 (In-Progress)

  • Better Server error logging (URL, request info, etc.)
  • Communication generation functionality
    • Support for server communication to generate RESTful endpoints
    • Support auto-generation of client or server if not annotations defined for implementation
    • Avoid lookups from falling through the cracks if no end-point is found
    • Better support for lookup of implementation (avoid package and naming matching as it's easy to mess up)
  • Support screen transactions (set on activate and rollback on deactivate)

Features for 0.9.0 (Released 2018.11.04)

  • Introduction of cross-support for HTML components and Canvas components interworking
    • Removal of Renderer entirely and each canvas component has its own html.Canvas instance
    • Integration of z-index as depth value
    • Proper management of each component to position and size via HTML properties
    • Proper layering and testing of theme support
  • Better text rendering performance with CachedFont
  • Support for "reload on ratio change"
  • Support for fixed zoom ratio for fixed applications that should not zoom
  • Better event support
  • Border
  • Ignore events
  • Overflow
  • RateLimited for updateTransform and updateRendering
  • Navigation between UI examples
  • Creation of a new logo
  • Major upgrade of URL support
  • Addition of Component.root
  • Shared core Component
  • Cross-platform support for HttpClient
  • Better support for error handling in HttpClient
  • Auto-retry support for HttpClient
  • HttpClient Interceptor functionality to handle before/after request/response
  • Fix client-side error support
  • HttpClient RateLimiter Interceptor
  • Added DNS override support for HttpClient (for implementations that support it)
  • Updating of JVMHttpClient to use OkHttp instead of Apache HttpAsyncClient
  • Simplification and optimization of Color
  • HTML support for fonts
  • Creation of GoogleFont integration with WebFontLoader
  • Server-side filtering and DSL for routing
  • Updated to latest version of dependencies
  • Updated HttpStatus to be represented as a case class
  • Added ValidationError support
  • Created Restful trait to more easily build server-side services
  • Early stage Bootstrap functionality support
  • Added HttpRequest.timestap to include knowledge of when the request was made
  • Creation of Dimension type
  • Added depth support for Component
  • Screen.title functionality to manage the browser's title
  • Better measuring support
  • Improvements to error support (proper traces) in Scala.js
  • Parallax scrolling support introduced
  • Created LocalStorage and SessionStorage functionality to simplify working with client-side storage and retrieval
  • General purpose Delta functionality in the server
  • Created ProxyCache to support local caching and serving of remote resources
  • Simplification of Session support
  • Added dom support for byName and oneByName
  • Updated ServerApplication.addTemplate to support Content lookup instead of requiring a java.io.File directory
  • Removed UI elements auto-firing overrides for attributes and styles
  • Preliminary EmailAddress support
  • Created BytesContent as a Content implementation to represent an Array[Byte]
  • Added math operators for Size

Features for 0.8.0 (Released 2017.10.27)

  • Major cleanup and simplification of Component internals
    • Migration back to ui module instead of canvas
    • Inherent support for devicePixelRatio and backingStoreRatio to properly render scaled and HiDPI
  • Drawable core infrastructure
    • Font
      • Trait for multiple implementations
      • OpenTypeFont
        • Update to latest version of OpenType.js
        • Fixes for consistent font height
      • WrapMode (None, Clip, Ellipsis, Hyphenate, and Word) support
    • Text
      • Pre-defined and sized paths for text from Font
      • Extend Drawable to allow explicit drawing
    • Image
      • Extend Drawable to allow explicit drawing
      • AnimatedImage to support multi-framed images sequenced with delays between frames.
    • Video
      • Extend Drawable to allow explicit drawing
      • Controls and information
    • Drawable for most simplistic drawing functionality
    • Group for simplistic child drawing functionality
    • Transformable for mix-in of transformation matrix
    • Cacheable for mix-in of pre-rendering to canvas instance
    • Clipped for clipping the drawing area
  • Component re-design
    • ImageView component
    • TextView component
    • VideoView component
    • Cleanup of Context to better utilize Path.fix
    • Update Path to utilize Context
    • Improve Path rendering performance
      • General optimizations
      • Support Path2D
    • Cleanup and re-working on component package and build on Drawable functionality to reduce complexity
  • Move template module into its own project
  • Activate support for checked and unchecked to work with checkboxes easily

Features for 0.7.0 (Released 2017.09.25)

  • ScrollBar visual support
  • ComponentPaint for better integration of Image and Video painting
  • Paint.modified to support mutating paints
  • Widget as common root for canvas and hypertext Components
  • Layout migration to build on Widget instead of Component
  • Flow layout
  • Opacity on Component in Canvas
  • Create Component.actual for pre-multiplied values
  • Convenience functionality in HttpHandlerBuilder to create a restful end-point
  • Better error handling support in HttpClient
  • Event propagation in canvas
  • GoogleFonts integration
  • Streaming Content support in HttpResponse
    • Convenience functionality for streaming ZIP
  • Fixes and improvements regarding proxying functionality
  • Update ServerApplication.addTemplate to work as proper fallback (not apply if content is already defined by another handler)

Features for 0.6.0 (Released 2017.09.03)

  • Migration of ui module to be a cross-project instead of Scala.js only
  • Added RoundedRectangle to drawable functionality
  • Create utilities module for internal code generation and other external functionality
  • Update Key to use KeyboardEvent.key as mapping for better compliance to latest spec
  • Replace direct use of KeyboardEvent in hypertext and component with KeyEvent
  • Layout support in AbstractContainer
    • VerticalLayout
    • GridLayout
  • Update dom Template to utilize Profig instead of limiting to environment variable for load path
  • New spatial package to do matrix and other spatial math
  • Remove uPickle and rely exclusively on Circe for pickling
  • Add better functionality to build FormDataContent
  • Support multipart form posting in youi-client
  • Update URL interpolator to only accept literals for proper compile-time validation
  • DataTransferManager to provide better and more consistent drag-and-drop and file chooser functionality with directory support
  • Update Color to be an AnyVal wrapper to use the memory footprint of a Long
  • Selection HTML feature for rectangular and individual selection
  • Upgrade to direct canvas functionality instead of using Pixi.js
  • Border support in Component
  • Padding support in Component
  • Scrolling Container support
    • Mouse support
    • Touch support
  • AbstractContainer only draws children within viewable area for better performance
  • Support Client to Server basic logging for better information control from the server.
  • Upgrade to SBT 1.0
  • Texture, Gradient, and Video paint support

Features for 0.5.0 (Released 2017.07.23)

  • TypedContainer for better hierarchical type-safety
  • Major cleanup and simplification of writing a web application
    • Provide simple classes to extend for client, server, and shared
    • SBT plugin to simplify build setup (especially management and sharing of generated JS)
    • Ability to create an app with only three classes (client, server, and shared)
    • Standardize Scala.js generation via SBT plugin
      • output "application.js" to "jvm/src/main/resources/app/" path
      • convenience functionality to inject Scala.js file into a handler
    • Communication.connection should have a default implementation to avoid expecting it as an implementation
    • Remove the necessity of SinglePageApplication by making optional configuration in the application
    • Provide a mechanism to need only extend YouIApplication trait and Client/Server Application
    • Remove necessary cached method implementation in ClientApplication
    • Remove "main" method requirement entirely and use Profig as launching point
    • Provide support in Screen to leverage io.youi.http for path matching functionality (URLMatcher)
    • Create an example project (https://github.com/outr/youi-example)
    • Add a getting started tutorial to the wiki

Features for 0.4.0 (Released 2017.06.17)

  • Update Pixi.js facade to use JSDeps
  • On-demand rendering capabilities for exceptional performance
  • Workflow rendering tied to elements to allow pausing when invisible
  • CanvasComponent for specialized drawing using HTML5 Canvas
  • DrawableComponent to simplify and maintain stateful drawing backed by CanvasComponent
  • Complete Paint functionality
    • Fill integration
    • Stroke wrapper
    • Gradients
    • Texture
    • Color
  • HTMLComponent to render HTML components on top of Canvas with the same transformations
  • RectangularSelection tool
    • Move and Resize Support
    • Minimum and Maximum constraints
    • Aspect ratio constraints
    • Complete Touch support
  • Texture clipping support
  • Scale-9 Support
  • Basic Video Component
  • AbstractContainer to better support custom components and more explicit containers
  • ImageUtility
    • Smooth and clean image resizing functionality
    • File to Image loading with Future
  • SizeUtility for width/height scaling functionality
  • MouseWheel support in component
  • Snap Layout Management (ex. Snap(b3).leftTo(b1.position.left).rightTo(b2.position.right).topTo(b1.position.bottom + 5.0))
  • Touch / Mobile support
    • Proper drag support
    • Pinch events
    • Acceleration
  • Additional event support
    • Upgraded Component events for multi-touch
    • Long-press
    • Double-click
  • ImageEditor
    • Selection area
    • Cropping
    • Scaling
    • Rotation
    • Panning
    • Upload local file
    • Preview instances
    • Complete Touch support

Features for 0.3.0 (Released 2017.04.21)

  • Optimization: JavaScript merging, cleanup, minification, obfuscation, and optimization support.
  • Simplify connectivity / communication functionality
  • Hierarchical update calls to allow scoping of animations, graphical layout, and other functionality.
  • Complete re-write of JavaScript error logging and support.
  • Integration of basic HTML components for UI (Scala.js)
    • Button
    • Container
    • ImageView
    • Label
    • TextInput
    • TextArea
  • Integration of Pixi.js for more advanced UI functionality (Scala.js)
    • Canvas / Integration with HTML
    • Events
    • Container
    • Image
    • Text
    • Shapes
  • Animation and workflow functionality
    • Task
    • Action
    • Temporal
    • Parallel and Sequential
    • Sleep
    • Easings integration
    • DSL
  • Layout Managers
    • Core Support
    • BoxLayout
    • GridLayout
    • FlowLayout

Features for 0.2.0 (Released 2017.02.27)

  • Complete SSL support (binding and proxying)
  • Ajax Request / Response framework
  • XML Content Modification Streams for any XML / HTML content
  • Compile-time HTML injection into Scala.js from existing template
  • Shared Var - shared state modifiable on client or server
  • History Management convenience functionality (Scala.js)
  • YouIApplication to simplify client/server functionality
    • General WebSocket connectivity support
    • Communication support
    • Streaming convenience functionality
    • Pages functionality (JVM)
    • Filter support on HttpHandlers
    • Screens functionality (Scala.js)
    • Receive JavaScript errors on server for logging
    • Client auto reload on server stop / restart
  • Template features
    • Includes
    • Server for faster testing
    • Real-time updates in browser
    • LESS and SASS support
  • HTTP Client
    • Basic HTTP request / response using abstraction
    • Fully and properly asynchronous and non-blocking
    • Restful support for case class serialization and deserialization

Features for 0.1.0 (Released 2016.12.22)

  • Scala JVM and JS support
  • URL implementation offering good parsing and flexibility
    • compile-time interpolation
  • Server abstraction with HttpRequest and HttpResponse allowing for multiple implementations
    • Undertow implementation
  • HttpHandler prioritization and flow to allow handlers to build upon each other
  • IPv4 and IPv6 wrapper classes
  • TestServerImplementation for easy unit testing
  • Full Cookie support
  • Wrapper for standard ContentTypes
  • WebSocket support through abstraction
  • Proxying support and optional ProxyingSupport trait to be mixed into Server
  • Session support
  • Communication implementation supporting client and server with JVM and JS support
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.