Development of a new Cadre-based project has begun (an electronic lab notebook application with social features and page revision history), prompting much work on the platform. Here are some of the things that have happened since the last post was relevant:Fixed group/parent permissions confusion. Implementation swapped the registers as specified in documentation; this has been fixed. Permissions for author+parent are now additive if both criteria are met, since this is more useful (a message inbox can be implemented by giving only the parent permissions. If a user then sends a message to herself, no special case is needed.)
Template synching through the Template Server script, the Page Synchronization script, and the Synchronization Client script. The Sync Client presents a UI for choosing templates and functions to update (with dates); the Page Sync script performs the transfer of arbitrary pages from one server to another, and the Template Server provides a manifest (on the central installation) for Sync Clients to read. It was planned to implement this all in PHP, but it was extremely easy to code in Octavia, making it naturally very attractive.
lists: 'about' is the default mode, templates and functions link to edit by default in tree view, 'upgrade' mode added for creating the bans table, renaming template_maker to janitor, and creating the live data table.
Objective Cadre is now called 'live data', and has been largely implemented. A live object is created with the "import" keyword (e.g. $e = import entry $_viewer.profile_id), after which it is dynamically populated with underscore-prefixed table columns and non-prefixed data (tableception) columns. This should obsolete getv/putv. (Only entries have this kind of data column, however.) Pointers have not yet been implemented, and live data is not yet permissions-safe.
filesize() now available in Octavia.
dir() is now available in Octavia. Equivalent to dirlist(), but returns an array.
&&, ||, and postfix ++ and — operators.
The site no longer needs to be located in the web root; all references to / have been removed from the code.
An alternative variable sigil, @, is available but has no meaning. It is recommended to use @ for live data and $ for all other variables.
On that note, @_user and @_this are provided with live equivalent meanings of $_viewer and the current page.
Stack traces for hard_error().
Prettier installer script.
$_referrer object provides information normally available to site templates when the Error 404 page is called. This can be used to make more helpful "page not found" scripts.