Repository navigation
[0.2.1-alpha] — 2026-10-04
Fixed
-
A side panel could not be resized by dragging its edge. The drag was never going to work:
RootView:on_mouse_movedwrotenode.divider, andcalc_split_sizesdoes not readdividerwhen either child has a locked size — it takes the locked child's size as given and hands the sibling the remainder.local n if x1 then n = x1 + ds elseif x2 then n = self.size[x] - x2 else n = math.floor(self.size[x] * self.divider)
So every frame of every drag moved a number the next layout pass discarded, and the pane kept the width it had.
get_locked_sizeis the read side of a contract whose write side —set_locked_size(axis, value)on the pane's view — nothing indata/core/had ever called.Node:drag_dividernow asks the split which side is locked before deciding where the delta goes: no locked side movesdividerexactly as before; a locked side gets the delta through the hook,agrowing as the pointer moves right andbshrinking; a locked side whose view has no hook falls back to the divider, which is no worse than before and honest about there being nothing to talk to. Both ends clamp — eight cells, because a pane narrower than its own edge cannot be grabbed again, and because the layout would otherwise hand the sibling a negative size.cdin-x's treeview has implemented
set_locked_sizesince it was written, so it resizes on the first load of this. cdin-x's manager panel implemented nothing, so it does not; that half is cdin-x's, and until it lands that one panel is draggable only with [ and ]. -
The divider was thinner to grab than anything else on screen. The hit test used a margin of six pixels on every display, while the rule itself is
1 * SCALEwide — three logical pixels either side of it on a 2x screen. The report was "the cursor does not change to a resize icon", which is the same fact as "the drag does not start": the hover and the press ask the same question, and the answer was no.The margin is in cells now, six of them — which is what six pixels was at 1x, so the zone widens on a scaled display and is unchanged on an unscaled one. Wider still starts costing the panel its own right-aligned column.
Documentation
-
docs/architecture/extension-contract.mddocumentsset_locked_sizebesideattach_side_view: it is part of the side-panel interface now that something calls it, and an extension writing a panel from that page needs to know the axis is named rather than assumed. -
docs/guides/commands.mdsays where the mouse resizes a split, next to the keyboard bindings that go quiet while a locked pane holds focus.
Installation
Requires Python 3.8+ — comes pre-installed on all supported platforms.
Linux (x86_64)
.deb (Debian/Ubuntu) — native package:
sudo apt install ./cdin_0.2.1-alpha_amd64.debSDL3 is bundled inside the package, so no extra runtime install is needed.
Uninstall with sudo apt remove cdin.
Tarball (any distro):
tar xzf cdin-v0.2.1-alpha-linux-x86_64.tar.gz
cd cdin-v0.2.1-alpha-linux-x86_64
# Interactive (recommended for first-time install):
python3 cdin.py
# Or non-interactive:
python3 cdin.py install # → ~/.local (no sudo)
python3 cdin.py install --prefix /usr/local # system-wide (needs sudo)
python3 cdin.py install --shortcut # also create .desktop entrySDL3 runtime — needed at runtime if not already installed:
- Ubuntu 24.04+:
sudo apt install libsdl3-0- Other distros: see SDL3 releases
Windows (x86_64)
Installer — native, recommended:
- Download
cdin-0.2.1-alpha-windows-setup.exeand run it. - Follow the wizard (Next › Next › Install). Optionally adds a desktop
shortcut and addscdinto your PATH. - Uninstall anytime from Settings › Apps or the Start Menu shortcut.
Zip (portable, no install):
- Download
cdin-v0.2.1-alpha-windows-x86_64.zipand extract it. - Open PowerShell or Command Prompt inside the extracted folder and run:
# Interactive (recommended):
python cdin.py
# Or non-interactive:
python cdin.py install
python cdin.py install --shortcut # also create desktop shortcut
python cdin.py install --register-filetypes # set as default for text/code files
python cdin.py install --prefix C:\Tools\cdin # custom install location
cdin.exe,SDL3.dll, and the Lua DLL are added to%LOCALAPPDATA%\cdin\bin
and that folder is added to your user PATH automatically.
macOS (arm64)
- Download
cdin-v0.2.1-alpha-macos.dmgand double-click it. - Drag cdin into the Applications folder shortcut.
- Eject the disk image and open cdin from Launchpad or Spotlight.
SDL3 is bundled inside the .app — no Homebrew or extra installs needed.
Updating & Uninstalling
python3 cdin.py update # update to latest release
python3 cdin.py update --check # just check, don't install
python3 cdin.py update --version 0.2.0
python3 cdin.py uninstall # remove installed files