# 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.