# December 7, 2023 ## Robrix Updates * Working on refactoring display logic to be less strongly coupled with view structure * Experienced lots of (ideally-avoidable) overhead of modifying code based on the `news-feed` example to slot it into the `wechat` example * Working on support for system notifications as OSIRIS's first API that supplements Makepad * Not true push notifications yet, just displaying information through system notification API * Next steps: finish transfer of app logic into existing `wechat` app structure, then migrate to new Makepad widget/action API ## Makepad updates * Redesigned how state can be passed into the widget tree * Needs basic migration to new API surface * New structure is already on `rik` branch * New pattern for emitting actions based on data changes * And also for mutating data and its associated view in a React-like style * Refactored websocket layer inside makepad * printf macros are routed to an output sink that "always works", but iOS 17 broke that * rewrote logs to send info over websockets * Working on building a profiler based on these websocket logs * Stijn working on line drawing, which allows displaying charts/graphs * eddyb working on SDF fonts * Currently, fonts use pixel-aligned atlases, using a lot of performance and memory (must be recreated in a pixel-perfect framebuffer) * SDF fonts allow rendering a scalable zoom/pan/scroll * Generate SDFs from glyphs in an on-demand manner ## OSIRIS updates ### Building * Building applications: initially we wanted something akin to Flutter, e.g., `flutter build <platform>` * Goal: defer as much work as possible to cargo * Problem: cannot run any arbitrary procedure *after* the cargo build process completes * OSIRIS build tool takes artifacts created by cargo and packages them up into an application * Can use package metadata in `Cargo.toml` to specify ... * OSIRIS build tool will read this metadata and compute all artifacts required to be packaged into the application * e.g., can have a crate published to `crates.io` that has Java files it depends on, and the build tool will discover and build/integrate these Java files into the build * Open question: which names to adopt on `crates.io`, lots of namesquatting going on * Sid: should be addressed in the next couple of months * OSIRIS build tool can generate app pkg configurations on the fly based on default values * It'd be great to use `androidx` APIs, but those are nigh impossible to depend on properly without using Gradle as the build tool ### Platform APIs * Started working on Notification APIs * First problem: requires metadata in the manifest file to describe which notification channels an application is permitted to use * Current solution: use manifest "merger" that allows a base manifest to be "extended" with other manifests (e.g., app-specific manifests) and merged into a single one * Supported by default via Android build tools * Note from Rik: Unity and Xamarin probably already solve this ## WyeWorks Makepad updates * Wonderous app moving forward. * The main screen with content about The Great Wall is fully implemented. * The image gallery section is in progress. * Video player now works, experimenting with using it everywhere * Working now on integrating this new widget in some of the demo apps * We are also working on a new demo application which is a clone of an existing iOS demo app. * The app is a showcase of different animations and effects. * A few ones were quite easy to implement with Makepad * But others would require more work. We are prioritizing to have done a blur effect over images and widgets, if possible.