fix(cider): the Swift Publisher canvas has a size, because new reaches the designated initialiser master
THE DOCUMENT WINDOW DRAWS. Toolbar, page preview strip with the page in it, inspector with Document Margins and Info, and a canvas area where every run since this task began showed flat grey. LOOKED AT, and the title bar says Untitled - Swift Publisher 5. Two defects, both ours, found by asking what sizes that scroll view rather than by looking at it again. ONE. -[NSViewController init] did not exist, so it was NSObject that answered. AppKit documents init on a view controller as initWithNibName:nil bundle:nil, and that is the method a subclass overrides when it builds its view in code. Swift Publisher does exactly that: its document container is created with [CCCanvasesPreviewAndDocumentSplitViewController new], and the override installs a real NSSplitView subclass as the controller view. Ours never ran, the controller came up with no view, and loadView handed back the empty NSView it gives a controller with no nib. The window then added the toolbar, the page preview and the canvas scroll view to that empty view, which lays nothing out. TWO. -[NSSplitView adjustSubviews] never asked splitView:shouldAdjustSizeOfSubview:, so every pane was elastic and the space was shared by ratio. The application answers YES for the canvas ALONE and NO for the toolbar and the preview above it, which is how a fixed strip and a filling pane live in one split view. Read from its own code: the delegate compares the subview against subviews index 2 and returns whether they are the same object. A pane the delegate holds fixed now keeps its size and leaves the ratio entirely, in both directions. MEASURED, the same view across three builds of the same run: CCDocScrollView 0x0 at 0,0 before CCDocScrollView 766x0 at 0,694 with the initialiser fixed, a pane at last but no height CCDocScrollView 841x568 at 0,127 with the delegate asked AND A CORRECTION TO WHAT I RECORDED LAST RUNG. I wrote that -[CCMainWindowController updateViews] is the only code in the application that ever sizes the document scroll view, and that the greyed Hide Inspector item and the blank canvas were therefore the same thread. Both wrong. updateViews sends moveFrameByCorner:toView:toCorner: to the INSPECTOR view with the scroll view only as the reference corner, so it never sizes the canvas at all. The application never sizes it from anywhere: its two frame helpers have two call sites between them and neither is the canvas, and a whole run shows no setFrame or setFrameSize reaching it. A split view was always supposed to do it. Along the way -[NSTableView setColumnAutoresizingStyle:] turned out to be missing, which only appeared once the initialiser fix let these controllers load their nibs at all: the unrecognised selector escaped the nib load, which is silent from outside and stops the window. The whole NSTableViewColumnAutoresizingStyle family is implemented now, with the old autoresizesAllColumnsToFit kept in step as the uniform style rather than left to disagree. Instruments in the same commit, all gated: the view tree dump now prints each autoresizing mask (CIDER_TRACE_VIEWS), which is what showed the panes were fixed and the canvas was not, and CIDER_TRACE_SVFRAME takes a class name instead of meaning every scroll view. WHAT IS LEFT on this canvas is the doc view inside it, still nan by nan, which the application detects and reports itself at CCDocView.m:1851. That is task 124 and it is now the only thing between this window and a page.