Exactly, I wanted to avoid that. In contrast, if you open an SVG in (for example) Inkscape and make a minimal change and save, the resulting file has little to do with the original.
The part that would bother me most is not the ban itself, but having no idea what to change. “Policy violation” could mean VPN, billing risk, location, or actual usage.
It sucks, but it comes from the learning that when you do provide specific explanations it’s really just coaching chronic abusers how to get around bans. The collateral damage of legit users who accidentally tripped the detection algorithm is accepted as the less-bad of options.
Not defending it, just sharing perspective from having worked on some fraud/abuse mitigation projects.
Back when I experimented with getting ChatGPT by paying for API access rather than the official subscription, the credit was denominated in money, not in tokens.
Compute does whatever it does, but $5 sitting in an account to be spent on tokens at some arbitrary time in the future, earns money for OpenAI etc. even when they didn't make it expire.
"Under-16 social media ban" sounds narrow.
In practice it means building an age-checking layer for the whole web, then hoping it only gets used for children.
The headless WebKit on DRM approach is interesting. How heavy is it in practice on the flipper one's soc, whats the idle and active memory footprint? Asking because WebKit's memory behavior on constrained devices tends to be the thing that bites you later, not the CPU
Immediate-mode in pure C is a nice constraint. how does it handle text rendering, do you bring your own atlas or is there something built in? Thats usually the part that balloons the dependency footprint.
The demo uses a simple prebuilt fixed-size font atlas texture and renders the entire UI (including character quads) via batched glDrawElements calls (one draw call per clip-rect).
But the way how text rendering is delegated to the user is quite flexible, microui basically calls these three user-provided functions:
int r_get_text_height(void)
int r_get_text_width(const char* text, int len);
void r_draw_text(const char* text, mu_Vec2 pos, mu_Color color);
...how r_draw_text() is implemented is then entirely up to you.