{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiavctmjip2act5pffs5uock2oog23lbatxpktzvdy54l4wtcxtvxy",
    "uri": "at://did:plc:6dmfe46c76jjenq3kaxc5eds/app.bsky.feed.post/3mmo56tafb432"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreigumn42yvnq7zdbw6pabvqf334varkf3e4mxpkm77mzx2jrzwbe3a"
    },
    "mimeType": "image/png",
    "size": 21301
  },
  "path": "/week-1-coding-begins/",
  "publishedAt": "2026-05-25T03:57:00.000Z",
  "site": "https://yashbavadiya.bearblog.dev",
  "tags": [
    "warn before deleting tracks",
    "snap playhead to snap points"
  ],
  "textContent": "It's May 25. Community bonding is over. Coding starts today.\n\nThe last few days of bonding were about wrapping loose ends, got two MRs merged: warn before deleting tracks and snap playhead to snap points. A few others are still open and in review, but the coding period waits for no one.\n\nNow for the actual project.\n\nThis week I'm starting on the **Curves Widget** , the first of three widgets I'm building this summer for Kdenlive.\n\nThe current `CurveParamWidget` has a channel dropdown (R, G, B, All), but switching channels wipes the previous curve. There's no memory per channel. So if you carefully tune the red channel and switch to green, your red curve is gone. You'd have to apply the effect multiple times, once per channel which is exactly the kind of friction the proposal is trying to eliminate.\n\nThe fix is per-channel tabs, each storing its own curve independently. All channels serialize together into `avfilter.curves` format: `r='0/0 0.5/0.7 1/1' g='0/0 1/1' b='0/0 1/1'`\n\nBackward compatible with existing projects, no data loss when switching tabs.\n\nThis week's goal is foundation work: understand the full `CurveParamWidget` architecture, design the tab skeleton, and get the per-channel data structure in place. No full functionality yet, get the structure right first, then build on it.\n\nI'll post every week on Sundays. Daily progress goes to JB on Matrix.\n\nLet's go.",
  "title": "Week 1 : Coding Begins"
}