Ophal 0.1-beta1 released!
After 11 months of hard work since the lastest alpha, the first beta release of Ophal is finally available! The focus of this first release is what will define this beta cycle: stability and complementary features.
Ophal is a CMS framework or CMF, lightning fast, resource efficient (CPU, RAM, I/O), flexible, extensible and durable. Already running on high traffic mobile and desktop sites serving 5 million page views to date. Worth to give it a try!
Let’s see what we have now!
The Ophal web platform started as a web framework, upon which basic CMS features are evolving so that complementary features are required than mere content CRUD:
- CMS modules: content, user, tag, menu, comment
- New hooks: content_render(), region(),
- New debug function: debug.log(), it logs what you pass to it into file $TEMP/ophal.log
- New theme features: settings.lua for themes, render_t(), theme.file_info(), theme.progress(), theme.input(), theme.select_option(),
- New JS features: extensible ‘Ophal’ object, Ophal.scroll_down(), Ophal.post(), trigger ophal:comments:load()
- New documentation: How to create database schema for CMS modules
- New functions: page_not_found(), nopcall(), shutdown_ophal(), server_exit(), format_size(), user.current(), route_build_routes(), route_build_handler(), init_head(), add_head(), get_head(), db_limit(), sessions_path(), sessions_destroy_expired(),
- Support error messages on JSON output format, so that errors don’t break the output!
- Route aliases with optional database storage, localize-able and with own CRUD API
- Progressive file uploading relying on HTML5 FileReader API and metadata storage (optional)
- Configurable hashing algorithm of user passwords
- Support for vault.lua to store sensible settings outsite settings.lua (i.e: passwords), ignored by .gitignore of course!
- Better robots.txt
- Support more common file extensions on Nginx
- Proof of concept Ophal CLI
- Translatable texts with new function: t()
- Session files get deleted on cron with the new module: system, enable it if you want to have a healthy site!
Some changes are required to make development experience a bit less complicated:
- Components refactored: Installation wizard, default settings builder,
- Components merged: ‘menu’ and ‘path’ are now just: ‘route’
- Hooks can now break and trigger custom error.
- Routes (old menu callbacks) can now have default parameters and access callbacks, and being called from any other module
- Password encryption removed from front-end. Use SSL my friend! and configure settings.site.scheme to ‘https’
- Code rendering the user login form is more readable
- Database schema got more consistent object names
- Function arg() renamed to route_arg()
- Use _M to build and return core modules
New settings get added constantly, these are the new defaults:
- Default language: en (English)
- Default theme: basic
Ophal is now Affero GPL version 3 (AGPLv3).
Let’s list them in optimistic mood:
- Support LuaJIT!
- missing settings.lua will not crash everything from now on
- Content-Length header is now present on JSON output format
- Fewer WSODs on theme rendering bugs
- Function user.access() can handle nil params!
- Tag module is less buggy
- Front-page now has a default title when paginated