platform

libraries/kinogaki-platform · 0 open · 8 done

Disciplined and now covered. The pure Cocoa event-translation is hoisted and unit-tested, headless RHI tests exercise texture/blend/scissor + the null backend, the build naming is renamed to kinogaki, and the docstring + swallowed-write notes are fixed. 43 cases / 144 checks green.

platform_1Cocoa event-translation logic is untested though it is pure and testableDone MED
task · tests

Resolved 2026-06-20. Hoisted keyOf/modifiersOf into a pure header EventTranslate.h (no AppKit types) and added translate_test.cpp covering keys + modifier chords.

platform_2null backend and RHI blend/scissor/texture/window paths have no coverageDone MED
task · tests

Resolved 2026-06-20. Added headless RHI tests: sampled texture readback, alpha blend, scissor confinement, and a null-backend createSystem()==nullptr check.

platform_3stale `prisma`/`PRISMAPLATFORM` naming survives in the build systemDone LOW
task · organization

Resolved 2026-06-20. Renamed CMake PRISMAPLATFORM* -> KINOGAKIPLATFORM* and removed the stale rename-era test binaries.

platform_4docstring example calls a method that does not exist on IContextDone LOW
bug · completeness

Resolved 2026-06-20. Rewrote the System.h usage example to the real frame API (beginWindow/submit/endFrame), dropping the nonexistent ctx->clear call.

platform_5quietly-swallowed writes are intentional but undocumented at one call siteDone LOW
bug · completeness

Resolved 2026-06-20. MetalBuffer::update now logs the deliberate out-of-bounds drop and a comment documents the intent.

platform_6separation: cleanDone LOW
task · separation

Where: whole tree

Problem: None. Windowing (ISystem/IWindow), drawing context (IContext), RHI (rhi::Device), and the two buses are cleanly separated interfaces; the Cocoa/Metal specifics are isolated entirely in src/cocoa/*.mm behind internal factory headers (makeCocoaWindow, makeMetalContext), and no public header imports AppKit/Metal (the MetalHandles/drawable handles are deliberately opaque void*). The buses depend on nothing. No god files.

platform_7naming: cleanDone LOW
task · naming

Where: function/method names across the tree

Problem: None worth flagging. Public methods read as verbs (createWindow, processEvents, nextEvent, beginFrame, setPipeline, subscribe, publish, run, undo). The few noun-ish names are correct conventions, not violations: now() (clock accessor), effect()/describe() (Command queries), context()/metalHandles() (accessors, exempt as getters), and the factory createSystem()/fromContext(). EventSynth::feed is a verb. No ambiguous or noun-named action functions found.

platform_8filesize: cleanDone LOW
task · filesize

Where: all source files

Problem: None. Largest files: src/cocoa/CocoaWindow.mm (286), include/kinogaki/command/CommandBus.h (182), src/events/Bus.cpp (175), src/cocoa/MetalRhi.mm (266). Nothing approaches the 800-line caution line, let alone 1000.