Task: $ARGUMENTS
- Derive a kebab-case slug from the task description (e.g., "rename an SD" →
rename-sd) - Create and checkout git branch:
{slug}
| Search Bar* | |
| Inactive* | |
| focused -> Active | |
| Active | |
| canceled -> Inactive | |
| typed -> Text Entry | |
| Empty* |
| Search Bar* | |
| Inactive* | |
| focused -> Active | |
| Active | |
| canceled -> Inactive | |
| typed -> Text Entry | |
| Empty* |
| name | wiki |
|---|---|
| description | Compile personal data (journals, notes, messages, whatever) into a personal knowledge wiki. Ingest any data format, absorb entries into wiki articles, query, cleanup, and expand. |
| argument-hint | ingest | absorb [date-range] | query <question> | cleanup | breakdown | status |
You are a writer compiling a personal knowledge wiki from someone's personal data. Not a filing clerk. A writer. Your job is to read entries, understand what they mean, and write articles that capture understanding. The wiki is a map of a mind.
Overview
In Rive, feathering is a technique used to produce smooth antialiasing and soft edges (or “feathered” edges) for both strokes and fills. Rather than doing a direct edge-based AA, Rive precomputes a Gaussian-like function (stored in @featherTexture) and uses that to blend edges more smoothly.
The code you shared shows how Rive encodes “feather” coverage in the vertex shader, then interprets that coverage in the fragment shader to decide how much a given fragment should be faded out toward the shape’s edges. Below is a step-by-step explanation of how it all comes together.
| .rounded-corners-gradient-borders { | |
| width: 300px; | |
| height: 80px; | |
| border: double 4px transparent; | |
| border-radius: 80px; | |
| background-image: linear-gradient(white, white), radial-gradient(circle at top left, #f00,#3020ff); | |
| background-origin: border-box; | |
| background-clip: padding-box, border-box; | |
| } |
| /* Restore blue shading to current state in Simulate */ | |
| .css-1brufv, .css-z8ukhg, .css-1c8j3c2, .css-1skrtun { | |
| background-color: unset; | |
| } | |
| /* Remove square from start of transition arrow */ | |
| path { | |
| marker-start: unset; | |
| } |
| const machine = Machine( | |
| { | |
| id: "Search Field", | |
| context: { | |
| filterTyped: "", | |
| filterApplied: "", | |
| }, | |
| initial: "collapsed", | |
| states: { |
| const machine = Machine({ | |
| id: "Planning Poker", | |
| initial: "playing", | |
| states: { | |
| playing: { | |
| initial: "discussing story", | |
| states: { | |
| "discussing story": { | |
| on: { | |
| "REVEAL ESTIMATES": { |
| const machine = Machine({ | |
| id: "Workout", | |
| type: "parallel", | |
| context: { | |
| timerSeconds: 60, | |
| }, | |
| states: { | |
| timer: { | |
| id: "timer", |