Skip to content

cdin v0.2.1-alpha

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Oct 06:54
· 39 commits to main since this release
1cd32ef

[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_moved wrote node.divider, and calc_split_sizes does not read divider when 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_size is the read side of a contract whose write side — set_locked_size(axis, value) on the pane's view — nothing in data/core/ had ever called.

    Node:drag_divider now asks the split which side is locked before deciding where the delta goes: no locked side moves divider exactly as before; a locked side gets the delta through the hook, a growing as the pointer moves right and b shrinking; 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_size since 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 * SCALE wide — 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.md documents set_locked_size beside attach_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.md says 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.deb

SDL3 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 entry

SDL3 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:

  1. Download cdin-0.2.1-alpha-windows-setup.exe and run it.
  2. Follow the wizard (Next › Next › Install). Optionally adds a desktop
    shortcut and adds cdin to your PATH.
  3. Uninstall anytime from Settings › Apps or the Start Menu shortcut.

Zip (portable, no install):

  1. Download cdin-v0.2.1-alpha-windows-x86_64.zip and extract it.
  2. 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)

  1. Download cdin-v0.2.1-alpha-macos.dmg and double-click it.
  2. Drag cdin into the Applications folder shortcut.
  3. 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

Contributors (v0.2.0-alpha → v0.2.1-alpha)