# What a mechanic is, shown on one BookStack book.

A mechanic is the kind of action behind something an app lets you do, named in plain words, the same way in every app featkpr reads. Creating a book and creating a shelf in BookStack are one mechanic: “Makes a new one”.

BookStack · production's goal records, read 21 Oct 2026, 18:43 UTC (store seq 481521) · named with featkpr's mechanics list 1.0.5 · 34 mechanics in the list

## One book, button by button

BookStack's page for one book, as featkpr's crawl captured it. Each lettered button is a goal featkpr keeps, and each goal gets its mechanic: what the action does to the book, in words that do not depend on what BookStack calls the button.

[(picture: BookStack's page for one book: the Actions column with Edit, Sort, Copy, Permissions, Delete, Watch, Favourite and Export, lettered A to E on the five this page explains)](https://featkpr.com/img/bs-book.webp)

/books/{slug} · BookStack, as the crawl captured it

BookStack · crawl of 25 Sep 2026 · labels: production's goals for a book, read 21 Oct 2026, 18:43 UTC, mechanics list 1.0.5

Edit **Changes it**

Likely [Update the book](https://featkpr.com/library/goals#g-4ba7922037f4)

what its mechanic says to check As someone allowed: the book's fields change. As someone who may not: refused, and nothing changes.

Sort **Changes the order**

From the code [Sort the book](https://featkpr.com/library/goals#g-2e20dc92448c)

what its mechanic says to check As someone allowed: the chapters and pages change order. As someone who may not: refused, the order stays.

Copy **Makes a copy of it**

A guess [Open the book (show copy)](https://featkpr.com/library/goals#g-78a97e7b131e)

what its mechanic says to check A second book appears, and the first is left as it was.

Delete **Moves it to the bin**

From the code [Delete the book](https://featkpr.com/library/goals#g-fcb9559edccd)

what its mechanic says to check As someone allowed: the book leaves the shelf and waits in the recycle bin, where it can be brought back. As someone who may not: refused, the book stays.

Export **Downloads it as a file**

From the code 5 goals, one per format: [html](https://featkpr.com/library/goals#g-37b3274ecc8c) , [markdown](https://featkpr.com/library/goals#g-7eda797fc28e) , [pdf](https://featkpr.com/library/goals#g-0c5b6486e1de) , [plain text](https://featkpr.com/library/goals#g-97dc61cc5f81) , [zip](https://featkpr.com/library/goals#g-b6898079a8cb)

what its mechanic says to check As someone allowed: a file in the chosen format. As someone who may not: refused, no file.

The buttons without a letter act on other things, or on who may see the book: New Page, New Chapter, Permissions, Watch and Favourite. Whatever featkpr keeps for them is on [BookStack's mechanics page](https://featkpr.com/library/bookstack/mechanics) .

## The Delete button does not delete

BookStack's code moves a deleted book to a recycle bin. featkpr reads that from the code, so the mechanic is “Moves it to the bin”, whatever the button says. Three mechanics make the bin together: in, back out, and gone for good.

**on the shelf**

Moves it to the bin 5 goals

- [Delete the book](https://featkpr.com/library/goals#g-fcb9559edccd)
- [Delete the bookshelf](https://featkpr.com/library/goals#g-9171540e1074)
- [Delete the chapter](https://featkpr.com/library/goals#g-b8a1bc9a57f6)
- [Delete the page](https://featkpr.com/library/goals#g-b1d37cd42544)
- [Open the page (show delete)](https://featkpr.com/library/goals#g-f06f4146eccd)

**in the bin**

Deletes it for good 2 goals

- [Destroy the recycle bin](https://featkpr.com/library/goals#g-7fe8a9c12251)
- [Empty the recycle bin](https://featkpr.com/library/goals#g-f885b8edf0de)

**gone**

Brings it back 2 goals, from the bin to the shelf

- [Open the recycle bin (show restore)](https://featkpr.com/library/goals#g-050a8e44a8c2)
- [Restore the recycle bin](https://featkpr.com/library/goals#g-f50965d6389d)

From the code Likely A guess how sure featkpr is of each goal's mechanic

featkpr's list calls this a composite: mechanics that only make sense together. The other 13 goals that delete for good remove things that never pass through the bin, such as users, roles, tokens and webhooks.

## Where the mechanic shows in featkpr

Every goal's page in featkpr says what the goal does, and how sure featkpr is. The app labels the line “What it does”: on this site, that is the mechanic.

[(picture: featkpr's page for the goal Delete the book: What it does: Moves it to the bin, From the code, and a drawing of the book going from present through trash to trashed)](https://featkpr.com/img/app/mech-goal-light.webp)

the goal “Delete the book” in featkpr, on recorded sample data. “What it does: Moves it to the bin” is its mechanic, from the code, and the drawing shows the move: present, trash, trashed.

## How sure, said on every goal

featkpr says where each mechanic comes from. A guess is shown, but it never picks a test or lets featkpr write to the app until you or the code settle it. Anyone who owns the app can answer “Not right?” to correct one.

How a goal's tests are then proven, by sending each one again as a user who must be refused, is in [BookStack's run report](https://featkpr.com/library/bookstack/reports/2026-09-26-bookstack-run) .

(picture: What it does: Moves it to the bin, From the code)

From the code: the code says what the action does to the data.

(picture: What it does: Changes it, A guess)

A guess: the name could mean more than one thing.

two goals in featkpr, on recorded sample data; the app's label “What it does” is the mechanic

## The whole list, two apps side by side

Every mechanic in its family, with how many goals each app has under it. Mechanics are few and the same for every app, so a long app means bigger counts, never new rows. A dash means featkpr has found no goal for that mechanic in that app yet.

featkpr's mechanics list 1.0.5, 34 mechanics in seven families · goals per family and per mechanic, from production's goal records read 21 Oct 2026, 18:43 UTC

| Family, then each mechanic | [BookStack](https://featkpr.com/library/bookstack/mechanics) 165 goals · crawled 25 Sep 2026 · store seq 481521 | [Immich](https://featkpr.com/library/immich/mechanics) 154 goals · crawled 2 to 9 Oct 2026 · store seq 468538 |

|---|---|---|

| Make or remove | 39 goals | 58 goals |

| Makes a new one | 13 | 19 |

| Makes a copy of it | 4 | 1 |

| Deletes it for good | 15 | 31 |

| Moves it to the bin | 5 | 2 |

| Brings it back | 2 | 4 |

| Puts it away, still readable | – | 1 |

| Change | 22 goals | 43 goals |

| Changes it | 16 | 30 |

| Moves it somewhere else | 4 | – |

| Changes the order | 2 | – |

| Joins or splits them | – | 2 |

| Turns it on or off | – | 6 |

| Moves it to its next step | – | 5 |

| Connect | – | 17 goals |

| Connects it to another one | – | 7 |

| Disconnects it from another one | – | 7 |

| Gives it to someone | – | 2 |

| Lets someone else see it | – | 1 |

| Lets someone do more | – | – |

| Look and find | 78 goals | 13 goals |

| Shows it | 44 | 3 |

| Finds the matching ones | 1 | 5 |

| Downloads it as a file | 33 | – |

| Checks that it is right | – | 4 |

| Builds a result from what is there | – | 1 |

| Bring in or send | 4 goals | 5 goals |

| Brings rows in from a file | 3 | 2 |

| Sends a message | – | 1 |

| Starts a job | 1 | 2 |

| Notes down what happened | – | – |

| People and access | 22 goals | 18 goals |

| Signs you in | 1 | 5 |

| Signs you out | – | 3 |

| Makes a new account | 2 | 1 |

| Sets a password or key | 11 | 6 |

| Changes a setting | 5 | 2 |

| Adds a comment or reaction | 3 | 1 |

| Amounts | – | – |

| Sets an amount aside | – | – |

| Moves an amount from one to another | – | – |

| How sure featkpr is of each goal's mechanic | From the code **57** Likely **51** A guess **57** | From the code **39** Likely **64** A guess **51** |

## Each app gets a mechanics page

An app's page puts every goal under its mechanic, on the same seven families, with a filter for long apps. Each opens on one of the app's real screens, read by featkpr's crawl.

[BookStack’s mechanics **165** goals **18** of 34 mechanics **105** rows the open-source wiki · crawled 25 Sep 2026 · goals read 21 Oct 2026, 18:43 UTC, store seq 481521](https://featkpr.com/library/bookstack/mechanics) [Immich’s mechanics **154** goals **27** of 34 mechanics **143** rows the open-source photo library · crawled 2 to 9 Oct 2026 · goals read 21 Oct 2026, 18:43 UTC, store seq 468538](https://featkpr.com/library/immich/mechanics)

## What works today, and what does not yet

Works today as of 21 Oct 2026

**Named per goal** every goal featkpr keeps gets a mechanic from its code and its address, in production since 15 Oct **How sure, shown** from the code, likely or a guess, on every goal's page **You can correct it** an owner's answer to “Not right?” wins until the goal changes

Not yet

**Tests chosen by mechanic** the mechanic says what to check; writing each test from it is being built **More apps' pages** an app gets its page here once a crawl has walked its screens

## See your own app's mechanics

On the call we walk BookStack's goals and what each one does, then talk about yours. Tim replies by hand.

[Ask for a private demo](https://featkpr.com/demo)

---

The page this twin stands for: https://featkpr.com/library/mechanics. Every page on this site has a `.md` twin, and answers `Accept: text/markdown`.
