[{"data":1,"prerenderedAt":443},["ShallowReactive",2],{"navigation_docs":3,"-development-changelog":127,"-development-changelog-surround":440},[4,23,91,109],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":22},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Download","\u002Fgetting-started\u002Fdownload","1.getting-started\u002F2.download",{"title":19,"path":20,"stem":21},"Roadmap","\u002Fgetting-started\u002Froadmap","1.getting-started\u002F3.roadmap",false,{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":22},"User Guide","i-lucide-book-open","\u002Fuser-guide","2.user-guide",[29,75,79,83,87],{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":22},"Tools","i-lucide-wrench","\u002Fuser-guide\u002Ftools","2.user-guide\u002F1.tools",[35,39,43,47,51,55,59,63,67,71],{"title":36,"path":37,"stem":38},"Brush","\u002Fuser-guide\u002Ftools\u002Fbrush","2.user-guide\u002F1.tools\u002F1.brush",{"title":40,"path":41,"stem":42},"Crop","\u002Fuser-guide\u002Ftools\u002Fcrop","2.user-guide\u002F1.tools\u002F10.crop",{"title":44,"path":45,"stem":46},"Eraser","\u002Fuser-guide\u002Ftools\u002Feraser","2.user-guide\u002F1.tools\u002F2.eraser",{"title":48,"path":49,"stem":50},"Shapes","\u002Fuser-guide\u002Ftools\u002Fshapes","2.user-guide\u002F1.tools\u002F3.shapes",{"title":52,"path":53,"stem":54},"Selection","\u002Fuser-guide\u002Ftools\u002Fselection","2.user-guide\u002F1.tools\u002F4.selection",{"title":56,"path":57,"stem":58},"Fill","\u002Fuser-guide\u002Ftools\u002Ffill","2.user-guide\u002F1.tools\u002F5.fill",{"title":60,"path":61,"stem":62},"Gradient","\u002Fuser-guide\u002Ftools\u002Fgradient","2.user-guide\u002F1.tools\u002F6.gradient",{"title":64,"path":65,"stem":66},"Color Picker","\u002Fuser-guide\u002Ftools\u002Fcolor-picker","2.user-guide\u002F1.tools\u002F7.color-picker",{"title":68,"path":69,"stem":70},"Text","\u002Fuser-guide\u002Ftools\u002Ftext","2.user-guide\u002F1.tools\u002F8.text",{"title":72,"path":73,"stem":74},"Transform","\u002Fuser-guide\u002Ftools\u002Ftransform","2.user-guide\u002F1.tools\u002F9.transform",{"title":76,"path":77,"stem":78},"Layers & Compositing","\u002Fuser-guide\u002Flayers-and-compositing","2.user-guide\u002F2.layers-and-compositing",{"title":80,"path":81,"stem":82},"Canvas Workflow","\u002Fuser-guide\u002Fcanvas-workflow","2.user-guide\u002F3.canvas-workflow",{"title":84,"path":85,"stem":86},"Documents","\u002Fuser-guide\u002Fdocuments","2.user-guide\u002F4.documents",{"title":88,"path":89,"stem":90},"Troubleshooting","\u002Fuser-guide\u002Ftroubleshooting","2.user-guide\u002F5.troubleshooting",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":22},"Tips & Tricks","i-lucide-lightbulb","\u002Ftips-and-tricks","3.tips-and-tricks",[97,101,105],{"title":98,"path":99,"stem":100},"Canvas & Gestures","\u002Ftips-and-tricks\u002Fcanvas-and-gestures","3.tips-and-tricks\u002F1.canvas-and-gestures",{"title":102,"path":103,"stem":104},"Brushes & Strokes","\u002Ftips-and-tricks\u002Fbrushes-and-strokes","3.tips-and-tricks\u002F2.brushes-and-strokes",{"title":106,"path":107,"stem":108},"Color & Selections","\u002Ftips-and-tricks\u002Fcolor-and-selections","3.tips-and-tricks\u002F3.color-and-selections",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":22},"Development","i-lucide-code","\u002Fdevelopment","4.development",[115,119,123],{"title":116,"path":117,"stem":118},"Development Overview","\u002Fdevelopment\u002Foverview","4.development\u002F1.overview",{"title":120,"path":121,"stem":122},"AI & LLM Usage","\u002Fdevelopment\u002Fai-and-llm-usage","4.development\u002F2.ai-and-llm-usage",{"title":124,"path":125,"stem":126},"Changelog","\u002Fdevelopment\u002Fchangelog","4.development\u002F3.changelog",{"id":128,"title":124,"body":129,"description":433,"extension":434,"links":435,"meta":436,"navigation":437,"path":125,"seo":438,"stem":126,"__hash__":439},"docs\u002F4.development\u002F3.changelog.md",{"type":130,"value":131,"toc":415},"minimark",[132,141,146,151,155,246,250,258,262,291,295,309,313,368,372,377,381,390,394,399,403,408,412],[133,134,135,136,140],"p",{},"All notable changes to OxieDraw, newest first. Entries are added as part of\nthe commit that makes the change, under the topmost ",[137,138,139],"code",{},"(not released)"," heading.\nTagging a release turns that heading into the version and its date.",[142,143,145],"h2",{"id":144},"releases","Releases",[147,148,150],"h3",{"id":149},"v0110-not-released","v0.1.10 (not released)",[147,152,154],{"id":153},"v019-2026-09-01","v0.1.9 (2026-09-01)",[156,157,158,162,165,168,175,178,181,184,187,198,201,204,207,210,213,216,219,222,225,236],"ul",{},[159,160,161],"li",{},"Fixed pasting an image bigger than the canvas looses parts that fall outside it.",[159,163,164],{},"Pattern tool: patterns grown along a drawn line, starting\nwith fur. A rank of fur is one continuous edge - a run of hand movements that\nsweep up into each point and pull back off it tuft shapes, so\nthe tips join up and nothing crosses through anything else.\nThe drawn line is a silhouette and the fur lies over the body on one side of\nit, so the curve decides the look: long sweeps over a flat stretch, crowded\nand flat in a hollow, fanned open and curling over a bulge.",[159,166,167],{},"Clipping masks: a layer renders only where the one below it has alpha, so\nflats can be shaded without painting outside the silhouette. Adjustment\nlayers can clip too, affecting their base alone instead of the whole folder.\nThe base is positional, so reordering re-resolves it and hiding it hides the\nstack. Ctrl+Alt+G, the layer context menu, or the gutter elbow.",[159,169,170,171,174],{},"Alpha lock: paint changes a layer's colour but never its alpha, so a shape\ncan be recoloured in place. Covers the brush, fill, gradient, shapes and\nliquify; the eraser is refused, and text layers cannot lock. Marked in the\ntheme's warning yellow - GNOME's microphone and screen-share pair - on the\nthumbnail badge, the header toggle and a canvas chip. ",[137,172,173],{},"\u002F"," or the context menu.",[159,176,177],{},"Project schema v12 records both flags; older files load with them off.",[159,179,180],{},"Layers panel header: add layer, adjustment and group on the left, alpha lock\nalone on the right.",[159,182,183],{},"Layers panel rebuilt on three tones instead of connector lines: panels on the\nwindow colour, rows in the card colour, and a folder or adjustment filling\nwhat it covers in a shade between, so the surface carries the nesting. Rows\ninside a container paint no fill of their own. 6px of padding all round makes\nthe row pitch uneven, so placement and hit-testing now share one layout pass;\nnesting insets only the left, so the eye and drag handle keep their x at any\ndepth. The clip rod runs down into the layer it clips to and terminates\nthere rather than hooking back under itself.",[159,185,186],{},"The left toolbar set the new tool before running the tool-switch logic, so the\ntool being left was already invisible to it and anything that needs to wind\ndown on the way out saw the switch as a no-op.",[159,188,189,190,193,194,197],{},"Every chrome panel sits on the window colour. They carried libadwaita's\n",[137,191,192],{},".sidebar",", which leaves the background to the theme, so any sidebar tint\nlanded on them; they carry ",[137,195,196],{},".oxiedraw-chrome"," instead.",[159,199,200],{},"Dragging a row or folder casts a drop shadow and keeps its surface while it\ntravels, and the drop animates into place - the block flies from the pointer\nto its slot, shadow fading, as the rows making room close their last gap.",[159,202,203],{},"Deleting a layer inside a group and undoing puts it back in that group; the\ndelete never recorded the folder change, so undo restored it at the root.\nUndo also restores clip and alpha-lock flags, and duplicates keep them\nthrough redo.",[159,205,206],{},"Transform, filter, fill, shape, gradient and liquify previews respect\nclipping instead of snapping to it on commit.",[159,208,209],{},"Selection tool: coverage heatmap preview, Add\u002FErase\u002FBlur mask brushes with\npressure build-up, and a marquee button that shows the shape it draws. Shift\nno longer forces a 1:1 marquee while it is the add modifier.",[159,211,212],{},"Filter preview keeps adjustment layers, and filters their mask too.",[159,214,215],{},"More logging across startup, document loading and the render loop.",[159,217,218],{},"Removed the obsolete view button from the top bar.",[159,220,221],{},"Frame profiler with a stacked stage breakdown in the F3 graph, configurable\noverlay, cheaper layer thumbnails and tab switching.",[159,223,224],{},"Cloning a group no longer loses or duplicates its children.",[159,226,227,228,231,232,235],{},"Tests that need a real GPU sit behind a ",[137,229,230],{},"gpu-tests"," cargo feature instead of\n",[137,233,234],{},"#[ignore]",".",[159,237,238,239,242,243,235],{},"CI runs plain ",[137,240,241],{},"cargo test --workspace",", the same command as locally, instead\nof ",[137,244,245],{},"nextest",[147,247,249],{"id":248},"v018","v0.1.8",[156,251,252,255],{},[159,253,254],{},"Clippy: cleared the pre-existing pedantic failures that kept the lint gate,\nand with it the tagged release build, red.",[159,256,257],{},"Liquify tool: brush-driven local warping of a raster layer with Warp, Twirl,\nPucker, Bloat, Push Left and Reconstruct over a GPU displacement field on a\npristine snapshot, so repeated strokes stay a single resample. Mirrors across\ndrawing guides, clips to the selection, and bakes one undo step per stroke.",[147,259,261],{"id":260},"v017","v0.1.7",[156,263,264,267,270,273,276,279,282,285,288],{},[159,265,266],{},"Toasts are drawn inside the canvas instead of as overlay widgets, so they no\nlonger cancel a stylus drag or steal input.",[159,268,269],{},"Fill tool: fills carry across anti-aliased outlines instead of stopping at\nthe first blended pixel, the threshold can be dialled in by holding and\ndragging after the drop, and pixels plus history land before the reveal\nsweep, which now runs on the frame clock so it cannot starve pen input.",[159,271,272],{},"Transform tool moves the whole panel selection (multiple layers and groups)\nas one rigid unit, with N-target GPU live preview, off-canvas data preserved\nacross undo and redo, and adjustment layers previewed live.",[159,274,275],{},"Better shape correction.",[159,277,278],{},"Better charcoal brush.",[159,280,281],{},"Fixed layers spread across multiple groups.",[159,283,284],{},"Krita charcoal pencil: textured brush ported from Charcoal Pencil Thin, with\ndotted-paper grain, pressure-driven texture strength (grainy to solid) and\nsize taper.",[159,286,287],{},"Brush UI: grid picker view, cog shortcut, and deferred save\u002Fdiscard in the\nbrush manager.",[159,289,290],{},"Documentation site (Docus) with the user guide, tips and rustdoc API pages.",[147,292,294],{"id":293},"v016","v0.1.6",[156,296,297,300,303,306],{},[159,298,299],{},"CI: build and release only on tags, lint and test on branches; marked the git\nworkspace safe in the version step and fixed the version it reports.",[159,301,302],{},"Fixed clippy warnings under Rust 1.94.",[159,304,305],{},"Moved the repository and CI from Codeberg to GitHub.",[159,307,308],{},"Better brushes: GPU smudge (bristle and oil presets), pattern and texture\nsupport in the brush format, and GPU tests covering both.",[147,310,312],{"id":311},"v015","v0.1.5",[156,314,315,318,321,332,335,338,341,352,362,365],{},[159,316,317],{},"Drawing guides: assistant mode, snapping to guides, and ProCreate-style\nsymmetry with real-time mirroring of every dab.",[159,319,320],{},"Canvas rotation, persisted per document.",[159,322,323,324,327,328,331],{},"Shared ",[137,325,326],{},"EnumMeta"," trait for dropdown enums and an ",[137,329,330],{},"EffectKind::as_filter_spec","\nbridge.",[159,333,334],{},"Reworked the serde layer for project files.",[159,336,337],{},"Touchpad support: two-finger pan and pinch zoom on the canvas.",[159,339,340],{},"Blend modes now composite in gamma space; folder selection ignores adjustment\nlayers.",[159,342,343,344,347,348,351],{},"Removed dead ",[137,345,346],{},"EngineState"," and ",[137,349,350],{},"Compositor",", documented the architecture in\nmodule rustdoc.",[159,353,354,355,358,359,235],{},"Extracted ",[137,356,357],{},"DocumentSession::new"," wiring behind a ",[137,360,361],{},"SessionCtx",[159,363,364],{},"Shared fullscreen-pass construction across renderer modules.",[159,366,367],{},"Clipped the per-frame present pass to the dab region, fixing lag on large\ncanvases with integrated GPUs.",[147,369,371],{"id":370},"v014","v0.1.4",[156,373,374],{},[159,375,376],{},"Brush stabilizer is rate-independent: its smoothing is rescaled to an 8 ms\nreference interval, so Ink Pen no longer lags far worse on low-end hardware.",[147,378,380],{"id":379},"v013","v0.1.3",[156,382,383],{},[159,384,385,386,389],{},"Stripped the forced ",[137,387,388],{},"GTK_THEME"," from the AppImage hook.",[147,391,393],{"id":392},"v012","v0.1.2",[156,395,396],{},[159,397,398],{},"Fixed AppImage icons, bundled font, and Wayland scaling.",[147,400,402],{"id":401},"v011","v0.1.1",[156,404,405],{},[159,406,407],{},"Hardened the release publish step so it is idempotent for moved tags and\nre-runs.",[147,409,411],{"id":410},"v010","v0.1.0",[133,413,414],{},"First tagged release.",{"title":416,"searchDepth":417,"depth":417,"links":418},"",2,[419],{"id":144,"depth":417,"text":145,"children":420},[421,423,424,425,426,427,428,429,430,431,432],{"id":149,"depth":422,"text":150},3,{"id":153,"depth":422,"text":154},{"id":248,"depth":422,"text":249},{"id":260,"depth":422,"text":261},{"id":293,"depth":422,"text":294},{"id":311,"depth":422,"text":312},{"id":370,"depth":422,"text":371},{"id":379,"depth":422,"text":380},{"id":392,"depth":422,"text":393},{"id":401,"depth":422,"text":402},{"id":410,"depth":422,"text":411},"Notable changes in each OxieDraw release, newest first.","md",null,{},true,{"title":124,"description":433},"2n_JarIXWw-RTz2jeLRyB3YCSOqdTOHxlotCQOan0mI",[441,435],{"title":120,"path":121,"stem":122,"description":442,"children":-1},"The policy for using LLMs and AI when contributing to OxieDraw.",1788292909839]