Loading video...

Video Failed to Load

Go Home

the New Aqua button inspired by iPhone 16e entirely made in Rive with Layout + Vector Feathering. — Fluent — Native 120 FPS (on my display) — Dynamic text support — 5KB — Infinite and fast zoom, without detail loss — works everywhere straight away

17,146 views • 1 year ago •via X (Twitter)

11 Comments

Sanja Stepa's profile picture
Sanja Stepa1 year ago

@rive_app I didn’t know the world needed jiggle buttons but I’m v happy we’re here

Dimitri Novikov 🇺🇦's profile picture
Dimitri Novikov 🇺🇦1 year ago

@rive_app Water should behave like a liquid isn’t ;)

WillScuderi's profile picture
WillScuderi1 year ago

🚀 We've just launched the ultimate travel companion for all business travellers. The espresso Display 15 with Stand+ features: ✅ Aluminium Build ✅ Works with one cable for Mac, PC, iphone (15 and later) ✅ Display above laptop ✅ 1080p/16m colours/300nits ✅ 0.2"/5mm thin

Duque's profile picture
Duque1 year ago

@rive_app beautiful

sy's profile picture
sy1 year ago

@rive_app I have to solve this area...

Dimitri Novikov 🇺🇦's profile picture
Dimitri Novikov 🇺🇦1 year ago

@rive_app Do you need help with it?

Sneg Hd's profile picture
Sneg Hd1 year ago

@rive_app Steve Jobs would be proud

okt's profile picture
okt1 year ago

@rive_app Want: Rive powered window manager. Let’s go!

Paul Martens's profile picture
Paul Martens1 year ago

@rive_app

Dimitri Novikov 🇺🇦's profile picture
Dimitri Novikov 🇺🇦1 year ago

@rive_app yes!

Joe Evil's profile picture
Joe Evil1 year ago

@rive_app Can I remix? I wanna play with some sound design stuff on this

Related Videos

[VIDEO] 🔴 BTS ARIRANG Live🌟 How-To Record // Audio & iPhone Settings Guide Settings matter. Simply changing your iPhone from Spatial Audio to Stereo Audio isn’t enough. 💡Before recording: Lock your camera settings. Lower the exposure (☀️🌓) between -0.3 and -2.0, depending on the stage lighting. 🍭 My sweet spot was -1.67. This let in less light and helped the camera focus so it locked at a good focus and clarity. Exact settings from Tampa Day 3: iPhone 17 Pro Max, 1TB - Normal Camera app (no special apps needed. For Tampa D1 and D2, I used the Zoom app.) - Stereo Audio: ON ✅ - Audio Zoom: OFF ❌ - Wind Reduction: ON ✅ - Record Video: 4K, 60 fps (I’m switching to 120 fps for MetLife and will report back.) - Cinematic: 4K, 30 fps - Camera Capture: High Efficiency - ProRAW & Resolution Control: ON ✅ - ProRAW Format: JPEG Lossless - Photo Mode: 24 MP - Video Capture: Apple ProRes: ON ✅ DAY 3 Seating: Section P (Soundcheck floor seats) Row 24 (facing the stage on the seating map). This was an aisle seat, so it felt more like Row 4 with a completely unobstructed view on my left side. The stage was the “t” configuration, and this seat was inside the “t,” around where the crossbar begins—roughly the middle of the stage layout. While not every iPhone 17 Pro Max feature is available on older iPhones, you can still adjust the settings that your device supports. #BTS_ARIRANG #BTS_WORLDTOUR_ARIRANG #BTS_WORLDTOUR_ARIRANG_Tampa D1, D2, D3

Beyond ARMY ⊙⊝⊜⁷ saw PIED PIPER and 뱁새

26,829 views • 7 days ago

What's next for OpenTUI? Here's a technical write-up. Over the last few months OpenTUI gained a lot of stability improvements, new unnecessary but fun features like live audio streaming, and useful features like rendering to the scrollback buffer mixed with a live TUI, called footer mode. Overall the feature set enables building large and complex applications. React and Solid make it super simple and convenient. There is still so much to do though. Three big milestones we have set out to achieve are: - Moving most of the behavioural logic currently living in TypeScript down to the native Zig core - Node compatibility - Optimizing the hell out of primitives like text rendering The render tree mechanisms are currently only usable from TypeScript. Think of the DOM, but controllable like a scene graph. Elements in the render tree are called renderables. They can expose a render method to draw themselves. All renderables are derived from a BaseRenderable. Renderables and the render tree will become native primitives. Building blocks usable from any language bindings. Reducing the TypeScript bindings to a very thin layer, with all the behavioural logic living in the native binary. Moving this down is not just a matter of porting TypeScript classes to Zig. TypeScript currently owns the tree, dirty-state propagation, layout reads, culling, and render ordering. If it still has to walk every node and call into native code for each step, we keep most of the complexity and add FFI overhead. Whole passes and their state need to move together. We took a big step towards this recently by building yoga-layout into the native binary. It exposes part of the official yoga-layout TypeScript package via FFI. Only the API surface that is actually used by OpenTUI. Covered by the test suite of the original yoga-layout package. This already gave a median speedup of ~2.5x, and up to 30x for narrow scenarios. The yoga-layout integration is useful beyond the speedup. Built-in text and editor measurement can now happen entirely in native code during layout instead of calling back into JavaScript. I ran an experiment last month taking this even further, having GPT 5.6 port yoga-layout from C++ to Zig, which gave extremely good results. It would be a burden to maintain right now though, so that's off the table for now. I might come back to it. Simon Klee is working relentlessly on Node compatibility and already has a full Node version of OpenCode running. Node got FFI support in v26.4.0, thanks to help from the Node community, namely Matteo Collina and Paolo Insogna. Behaviour and interfaces seem similar between Node and Bun, but there are some major differences. To get the best performance out of the Node FFI implementation, its usage has to follow some rules. Node has three ways to call native functions: the generic C++/libffi path, the SharedBuffer path, and the V8 Fast API. The generic path converts every argument in Node's C++ layer and then calls the function through libffi. It is flexible, but also the slowest option for frequently called functions. The SharedBuffer path is a middle ground. JavaScript writes scalar values and BigInt pointers into a small per-function buffer, reducing some conversion work. The actual native call still goes through libffi though. Typed arrays used as pointers cannot be packed into this buffer and fall back to the generic path. The path we really want is the V8 Fast API. Node generates a small machine-code trampoline for the exact function signature, allowing optimized JavaScript to call the native function without going through the generic converter or libffi. This only applies to JavaScript-to-native calls. Callbacks from native code into JavaScript still use libffi closures. Getting onto this path is quite strict. A signature can have at most eight arguments and everything must fit into CPU registers. x86-64 Unix systems have room for six GP (general-purpose) and eight FP (floating-point) arguments. AArch64 has room for seven GP and eight FP arguments. Anything that spills onto the stack falls back to a slower path. These are Node fast-path restrictions, not general FFI restrictions. Bun also does not support passing structs by value through its current FFI API. OpenTUI uses bun-ffi-structs to pack ABI-aligned struct data into an ArrayBuffer and passes a pointer instead. Despite the name, the package also works with Node. Pointers need some care too. Typed arrays and ArrayBuffers normally have to be resolved into BigInt addresses first. Eligible functions with exactly one pointer argument get another Fast API entrypoint that can extract the address directly from the buffer. An eligible signature is still not enough. V8 has to optimize a direct call with a fixed number of consistently typed arguments. Wrappers that collect arguments and forward them using spread or Reflect.apply can hide that call shape and keep the function on a slower path. The practical rules are: keep hot signatures within register limits, use direct fixed-arity calls with stable argument types, reuse owned buffers safely, and batch small operations. Then measure the real call site, because eligibility only makes a function fast-capable. We have to design the ABI around these constraints where it makes sense and gives the expected performance improvement. The third big area is text rendering. Today a Text renderable accepts a string, StyledText, or a tree of TextNodes. Before rendering, the TextNode tree is walked and flattened into styled chunks. Those chunks are packed in TypeScript, sent through FFI, copied into a native TextBuffer, and stored in a rope. Styles are represented separately as highlights. A TextBufferView then wraps the rope into visual lines, which are drawn into the visible buffer. This works, but updates are much more expensive than they should be. setStyledText effectively throws away and rebuilds the rope, copies and reparses all text and recreates the style highlights. Changing one TextNode also walks and flattens the complete tree before going through this path again. Text and style segments should instead live directly in the rope and support incremental replacement. Memory ownership is split between retained JavaScript buffers, the native memory registry, rope arenas, wrapping caches, styled-text storage, and highlights. Different operations preserve or reset different parts of that state. This is hard to reason about and can retain memory for much longer than expected. Text storage needs clearer ownership, with fewer lifetimes split across JavaScript and native code. The public API reflects the same split. The t template literal is convenient, but creates another intermediate chunk representation that is mutable, not cached, and not merged. Text also maintains both StyledText content and a special TextNode tree, which do not compose properly. TextNode is only a style scope, not a normal layout primitive, so Text renderables cannot naturally compose inside each other. I think this should become one Text primitive backed directly by rope segments. The template literal API might disappear or become a very thin helper around those native segments. Editing has another temporary layer in TypeScript. Extmarks currently monkey-patch editing operations, scan and adjust all marks after changes, maintain their own undo state, and recreate native highlights. They should become native marks anchored directly in the rope. A proper mark tree, similar to Neovim's marktree, could update marks together with edits, undo, and redo, and provide the foundation for highlights and concealment. Text wrapping has also become too complex. Supporting CJK, emoji, combining characters, ZWJ sequences, tabs, and different terminal width rules currently mixes byte offsets, grapheme indexes, and display-cell columns across several custom algorithms. Dirty views rewrap the complete document. Measurement and drawing can repeat some of the same work. The wrapping implementation needs an overhaul, but the exact shape is still open. The goal is to make Unicode handling easier to maintain, avoid repeated full-document work, and clearly separate byte offsets, graphemes, and terminal display cells. None of this will happen as one big rewrite. We will replace pieces when we understand the problem well enough and when the result is clearly simpler, faster, or more useful. To achieve all of this we might break public interfaces. Thanks to OpenCode and a lot of good models, migration to a new version with breaking changes mostly is not an issue anymore. What do you want to see next for OpenTUI?

kmdr

29,430 views • 15 days ago

QVAC SDK 0.12.0 is now live, bringing longer context, increased memory optimisation, new modalities, and broader ecosystem support directly to your device. Key Features and Updates: - TurboQuant KV-Cache Quantization: Fit much longer context in the same memory. TurboQuant, an algorithm from Google Research, compresses the KV cache by up to 5x, near-lossless. - Text-to-Video: Generate video from a text prompt, fully local, with the new wan2.1 model in the Diffusion addon - Apple Metal Performance for Flux2-klein: Diffusion on Apple Silicon now matches MLX performance, the native benchmark for Apple GPUs - Robot Control (new VLA addon): A GGML-based Vision-Language-Action addon brings fast, efficient robot control to edge devices - Coding Assistant / Harness Support: QVAC now works with OpenCode and OpenClaw as a local provider. A new @qvac/ai-sdk-provider package automates model registry and provider integration - Cross-Platform Voice: Text-to-speech and Parakeet transcription moved from ONNX to the GGML engine for better CPU and GPU support on macOS, iOS, Windows, Linux, and Android. Parakeet also adds long-term streaming diarization (tracking who spoke when on live audio) - Faster Lightweight Visual Classification: A new GGML-based Classification addon delivers millisecond-level classification, useful where a vision-language model (VLM) would be unnecessarily slow - Under the Hood: Fabric synced to llama.cpp v8828 (from v8189), plus GPU acceleration added to image-upscale models for faster results Full release notes:

QVAC

9,932,369 views • 2 months ago

"Please fix Markdown tables!" Okay: text-only, wrapping, columnar selection, proper border conjunctions, fill full width, in opencode beta now. "What took so long?" Here's a writeup: OpenTUI uses yoga layout and has elements called Renderables. Boxes with borders, plain text, code with tree-sitter backed highlighting and other primitives. Organised in a tree structure resembling somewhat of a DOM. Approaching a table naively, given the primitives are there, one would think to just stack box and text elements the right way in a flex-box layout to visually represent a table. Boxes support borders. Problem solved. This is what an LLM would one-shot in a working state, given OpenTUI's API surface. Ignoring the fact that just using box local borders don't handle border conjunctions properly. Benchmarking something like that quickly shows that instantiating an average table takes >70ms and incremental updates become expensive. Hugely due to yoga-layout via wasm having a painful price on yoga API calls. The whole ordeal becomes memory hungry, because a Text element handles more than just plain text. A simple 4x6 table needs a Box and Text per cell, ending up with 48 heavy nodes that yoga must lay out. "But that's just OpenTUI being slow" - you might say. Yes, but no. Yoga should be integrated in the zig native binary core of OpenTUI. It is on the roadmap to do so, which will speed up render passes by 2-5x. Yoga-layout has an open PR to support CSS Grids, which would greatly ease building something like a table. We will use that for fully laid out tables when it gets there. Below the typescript core level Renderables, there are lower level primitives like TextBuffers and TextBufferViews, bound via FFI and completely handled in Zig. I was stuck expecting a table primitive to handle a full layout like a table in the browser does. For Markdown all we need is a text-only table. So we had to come up with a better idea, something that is feasible now. A table layout is pretty straight forward. No need to have yoga deal with that. Using TextBufferViews for cells directly gives lower level control and eliminates some overhead that Boxes and Text renderables have. A simple native method to draw a grid with proper conjunctions is a nice library method. It will surely be used for other cases, so that's what we added. Using this simplified approach we were able to bring down initial instantiation to <1ms, more than 70x improvement. With a far smaller memory footprint. Given all the low level primitives are known and implementing a text-only table like this is possible, Codex was of great help to carve out the PoC, setup the benchmarks and tests. That's only a fraction of what was needed though. The table needs options to span the full available width, render different border styles, show/hide borders, padding, selection etc. So many iterations later OpenTUI now has a text-only, performant and relatively cheap TextTable that we can leverage to render Markdown tables in a streaming/incremental manner. Efficiently and properly.

kmdr

208,295 views • 5 months ago

Gemini for Android is here! This new app makes it easier to access Google's chatbot, powered by the Gemini Pro LLM, right from your Android device. You can ask Gemini a question by tapping the launcher icon or long-pressing the power button. Once invoked, the Gemini overlay lets you enter a text or text+image prompt. You can tap the camera icon to snap a photo or press the "add this screen" button to take a screenshot of the current page to include in your prompt. The Gemini app for Android is available on Google Play with support for English, but support for Korean and Japanese will be coming next week. While there won't be an app for iOS, iPhone users can access Gemini by opening the Google App and tapping the "Gemini" button up top. How can you long-press the power button to invoke Gemini if that gesture is handled by Google Assistant? The answer is that the Gemini Android app can replace Google Assistant as your default assistant if you want, meaning all the ways you'd normally invoke Google Assistant on your phone can instead invoke Gemini. Unfortunately, Gemini currently doesn't offer ALL the same functionality as Google Assistant and requires an active data connection, but more features will be added over time. There's also now a Gemini Advanced tier, which offers access to Google's most powerful Ultra 1.0 LLM. Access to Gemini Advanced requires a subscription to the new $20/month "AI Premium" Google One plan, which offers the same benefits as the 2TB plan but adds access to Gemini Advanced and soon Gemini features in Gmail, Docs, & other Workspace apps (formerly under the Duet AI umbrella). Gemini Advanced is available in English on the web.

Mishaal Rahman

38,428 views • 2 years ago

GeoLibre v1.2.0 is here! GeoLibre is a free and open-source, lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. One application that runs everywhere: in your web browser, as a native desktop app, on your phone, and inside a Jupyter notebook. No account, no server, no cost. Everything runs locally and your data stays private. This release packs in 35+ pull requests of new capabilities. A few highlights: - Run SQL right in the browser. The SQL Workspace pairs DuckDB Spatial with a new in-browser PostGIS engine (PGlite), so you can query layers, local files, and remote URLs without a server. - A smarter attribute table. Add fields, run a field calculator, and explore your data with a built-in Charts panel (histogram, scatter, bar, line, and box plots). - More ways to add data. OpenStreetMap PBF extracts, Cloud-Optimized NetCDF/HDF via kerchunk, georeferenced video overlays, authenticated 3D Tiles, and a Layer builder for custom overlays. - Better visualization. Heatmap rendering, point clustering, and H3 hexagonal grids for spatial binning. - New analysis and routing. A Directions plugin, plus Spatial Join, Select by Value, and Select by Location vector tools. - Print and share. A print layout composer that exports your map to PNG or PDF. - Work faster. A command palette (Ctrl/Cmd + K), global keyboard shortcuts, and undo/redo for layer and style operations. - Built for everyone. New internationalization framework, an accessibility pass with automated axe checks, an installable offline-capable PWA web build, React error boundaries, and Playwright end-to-end tests. Try the live demo: Star it on GitHub: Docs and roadmap: Release notes: #GIS #OpenSource #Geospatial #MapLibre #WebGIS #DuckDB #GeoLibre

Qiusheng Wu

39,959 views • 1 month ago

Web scraping will never be the same. (100% open-source visual search at scale) PixelRAG is a retrieval system that skips HTML parsing completely. Instead of scraping a page into text and embedding chunks, it screenshots the page and retrieves the image. A vision-language model reads the answer straight off the pixels. Why that matters: parsing is where web RAG quietly loses information. - A single HTML-to-text parser can drop 40%+ of a page. - Tables, charts, and layout get flattened or thrown out. - Swapping parsers alone can move accuracy ~10 points on the same docs. PixelRAG indexes the page a person actually sees. The team built a visual index of all of Wikipedia, 30M+ screenshots, and it still beats the strongest text RAG baseline by 18.1% on text-only QA. The repo also ships a Claude Code plugin that gives Claude eyes. It lets Claude screenshot any URL and read the rendered page instead of scraping the DOM. So you can hand it a live page, an arXiv paper, or your local site and ask what it actually looks like. One setup script. No MCP server, no backend. How the pipeline works: - Renders each document (web, PDF, image) to image tiles. - Embeds them with Qwen3-VL-Embedding, LoRA fine-tuned on screenshots. - Builds a FAISS index and serves a search API. A stronger reader model lifts accuracy with no re-indexing, since the index is just pixels. Everything is open-source under Apache-2.0. GitHub repo: Talking about RAG, I recently wrote an article on a new approach that makes retrieval much more efficient by cutting corpus size by 40x, reducing tokens per query by 3x, and improving vector search relevance by 2.3x. The article is quoted below.

Akshay 🚀

942,504 views • 1 month ago