Skip to content
Matt Hicks edited this page Jan 30, 2019 · 33 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.11.0 (In-Progress)

  • 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)

Features for 0.10.0 (Released 2019.01.30)

  • Better ScreenState support
  • Proper Asynchronous and Non-Blocking Integration for HttpHandler and server implementations
  • Screen.register support to apply specific variable changes that set on activate and remove on deactivate
  • Better Server error logging (URL, request info, etc.)
  • Better support for Path instead of String where practical
  • Better RestfulHandler support for injection and multiple paths of data
  • Updated Communication to ignore non-public methods
  • Added Cookie support for SameSite
  • Created FormSupport for better UI form integration and functionality
  • Created Time.delay for cross-platform, asynchronous wait-state
  • History.anchor to support easier SPA integration
  • Updates and improvements to session functionality and configuration
  • Added init() and load() to ScreenManager for more consistent and page-specific state management
  • Better Error Handling support
  • Fixed bugs in Communication moving from proprietary format to JSON
  • Improvements to date header parsing
  • Added session support to HttpClient
  • Updated HttpClient to use an HttpClientConfig
  • Updated Server.init to return Future for better asynchronous startup functionality
  • Created basic Maintenance library to support application maintenance
  • Improved UI functionality to better support measured
  • Created HTMLTextInput
  • Better UI support for existing elements
  • Added proper binary support for WebSockets
  • Added session config support to forceSecure to work with proxied situations better
  • Added Modal trait for easier modal support in Bootstrap
  • Complete re-write of SessionManager to be simpler to implement, and more powerful to use

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