From 79b4a9a8f6aced37be1755510bcf311ad81069cc Mon Sep 17 00:00:00 2001 From: Ruben Carlo Benante Date: Sun, 28 Jun 2026 16:37:10 -0300 Subject: [PATCH] README first draft --- README.md | 91 +++++++++++++++++++++++++------------------------------ 1 file changed, 41 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index a9d069b..cdef05d 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,40 @@ -# Skeleton -- a Kanboard plugin template +# ShrinkVertically -- keep the board horizontal scrollbar visible -A minimal, working Kanboard plugin that you copy and rename as the starting point for a -real plugin. By itself it does only one trivial thing: it renders the word "Skeleton" at -the top of every page. It changes no data and runs no database migration. +A tiny Kanboard plugin that fixes the vertically-collapsed board view so the bottom +horizontal scrollbar stays on screen. -## What it demonstrates +## The problem -- A complete `Plugin.php` registration class with all the metadata Kanboard shows in - Settings -> Plugins (name, description, author, version, homepage, compatible version). -- A template hook (`template:layout:top`) that injects a template into the page. -- Asset hooks (`template:layout:css` and `template:layout:js`) that load a stylesheet and - a script. They are empty for now but prove the injection path works -- handy when a real - plugin needs custom CSS or JS. -- The standard plugin directory layout, with stub folders (`Controller/`, `Model/`, - `Schema/`, `Locale/`, `Test/`) ready to grow into. +Kanboard's board gear menu has an "expand vertically / collapse vertically" toggle. When +collapsed, each column gets a limited height so the horizontal scrollbar sits closer. +Core implements this with a single rule: + +```css +.board-task-list-compact { max-height: 90vh; } +``` + +That `90vh` is measured from the top of the viewport and does not account for the page +header above the board. So even when collapsed, the column plus the header together +exceed the viewport height and the horizontal scrollbar is pushed below the fold. + +## The fix + +This plugin injects one CSS rule (via the `template:layout:css` hook) that replaces the +proportional `90vh` with a fixed-pixel budget for the chrome above and below the task +list: + +```css +#board td .board-task-list.board-task-list-compact { + max-height: calc(100vh - 120px) !important; +} +``` + +The `120px` reserves room for the page header, the board column header, the horizontal +scrollbar, and a little breathing space. A fixed-pixel budget is more reliable than a +proportional value because that chrome is a fixed height regardless of screen size. + +It changes nothing else: no data, no JavaScript, no database migration. The override only +applies while columns are collapsed (when core adds the `board-task-list-compact` class). ## Requirements @@ -21,45 +42,15 @@ the top of every page. It changes no data and runs no database migration. ## Installation -No build step and no dependencies. +Copy this folder into your Kanboard installation as `plugins/ShrinkVertically/`. The +directory name must be exactly `ShrinkVertically` (Kanboard derives the plugin namespace +from the folder name). Reload the board; no build step, no configuration. -1. Copy this folder into your Kanboard installation as `plugins/Skeleton/`. -2. Reload any page. The word "Skeleton" appears at the top. -3. Confirm it under Settings -> Plugins. +## Tuning -To uninstall, delete `plugins/Skeleton/`. Nothing else is left behind. - -## Directory layout - -``` -Skeleton/ - Plugin.php Registration and hook wiring (the only required file). - README.md - LICENSE AGPL-3.0. - Template/ - layout/header.php The visible "Skeleton" word. - Asset/ - css/skeleton.css Loaded via template:layout:css. - js/skeleton.js Loaded via template:layout:js. - Controller/ Stub for future request handlers. - Model/ Stub for future business logic / DB access. - Schema/ Stub for future database migrations. - Locale/ Stub for future translations (e.g. pt_BR/, fr_FR/). - Test/ Stub for future unit tests. -``` - -## How to fork this into a new plugin - -1. Copy the folder and rename it, e.g. `plugins/MyPlugin/`. The folder name must match the - namespace and start with a capital letter. -2. In `Plugin.php`, change the namespace from `Kanboard\Plugin\Skeleton` to - `Kanboard\Plugin\MyPlugin`. -3. Update the metadata methods (`getPluginName`, `getPluginDescription`, `getPluginAuthor`, - `getPluginVersion`, `getPluginHomepage`, `getCompatibleVersion`). -4. Update the hook target paths: the lowercase prefix in `'skeleton:layout/header'` and the - `plugins/Skeleton/Asset/...` asset paths must match the new plugin name. -5. Replace `Template/layout/header.php` with your real template, or attach to a different - hook. See the Kanboard plugin hooks documentation for the full list of hook points. +Edit the single `120px` value in `Asset/css/shrink-vertically.css`. Increase it if the +scrollbar is still clipped (for example with a taller theme header); decrease it to make +the collapsed columns taller. ## License