Repository navigation
v3.18.0 — Empty boards cleaned up after 30 days; operator board menu; leaner code
Cleaning up after boards that were made and never filled, and a leaner codebase. One migration — see "Before you deploy".
Empty boards
- Removed after 30 days unused. A board with no files that no person has opened for 30 days is removed, along with its courses. A board with any file in it is never touched.
- Owners are warned first, where possible. Owners who set a recovery email get "Your board … will be removed in 7 days" with an Open my board button. They always get the full week, and opening the board cancels the removal and resets the clock.
- Bots don't count as visits. Link-preview fetchers (WhatsApp, Telegram, Slack) and crawlers no longer count as opening a board. They used to keep dead boards looking alive whenever a link was pasted in a group chat, and they skewed "opened … ago" and Recently opened.
- When it runs: daily, via
boards:prune-abandonedon the scheduler where one runs. It also runs at most once a day when someone creates a board or opens the operator console, so it works without a scheduler. You get a Telegram message when boards are removed. - Privacy and Terms state the rule. Files are never deleted automatically.
Operator: Boards tab
- Empty boards are hidden by default. The list shows boards with files, with Show N empty boards underneath. A search still finds any board.
- ⋯ menu on each row with Note to owner and Delete board. Delete asks for confirmation and says what goes: courses, files, size, and both links. Rows with a note waiting say "Note left".
- Empty rows show the countdown: "removed in 10 days if still empty", plus "owner warned" where an email went out.
- Privacy now says the operator can delete a board, for example one that breaks the Terms or whose owner asks.
Codebase
- About 1,700 lines of design-note comments removed from routes, pages, styles and the PHP app code. One-line comments stay where the code isn't self-evident. No behaviour changed.
Before you deploy
Run migrations: adds workspaces.abandon_warned_at.
What happens on deploy: nothing is removed until a board has had no files and no visits for 30 days. On the live site the oldest empty boards are about three weeks old, so the first removals come in about a week. Owners with a recovery email are warned first, and the operator console shows each board's countdown.
256 tests.