-
Notifications
You must be signed in to change notification settings - Fork 28
Roadmap
Matt Hicks edited this page Jan 30, 2019
·
33 revisions
- 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
- 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)
- 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
- Introduction of cross-support for HTML components and Canvas components interworking
- Removal of
Renderer
entirely and each canvas component has its ownhtml.Canvas
instance - Integration of
z-index
asdepth
value - Proper management of each component to position and size via HTML properties
- Proper layering and testing of theme support
- Removal of
- 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
- Major cleanup and simplification of Component internals
- Migration back to
ui
module instead ofcanvas
- Inherent support for
devicePixelRatio
andbackingStoreRatio
to properly render scaled and HiDPI
- Migration back to
-
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
, andWord
) support
-
Text
- Pre-defined and sized paths for text from
Font
- Extend
Drawable
to allow explicit drawing
- Pre-defined and sized paths for text from
-
Image
- Extend
Drawable
to allow explicit drawing -
AnimatedImage
to support multi-framed images sequenced with delays between frames.
- Extend
-
Video
- Extend
Drawable
to allow explicit drawing - Controls and information
- Extend
-
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 tocanvas
instance -
Clipped
for clipping the drawing area
-
-
Component
re-design-
ImageView
component -
TextView
component -
VideoView
component - Cleanup of
Context
to better utilizePath.fix
- Update Path to utilize
Context
- Improve
Path
rendering performance- General optimizations
- Support
Path2D
- Cleanup and re-working on
component
package and build onDrawable
functionality to reduce complexity
-
- Move
template
module into its own project -
Activate
support for checked and unchecked to work with checkboxes easily
- 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)
- 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- Create
KeyBuilder
to support MDN standards generation ofKey
class from https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
- Create
- Update
Key
to useKeyboardEvent.key
as mapping for better compliance to latest spec - Replace direct use of
KeyboardEvent
in hypertext and component withKeyEvent
- 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
- 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
- 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
- Text integration using https://github.com/nodebox/opentype.js
- Complete SVG rendering support (Canvg)
- 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
- 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
- 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
- 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