From 09518e1e1fb6e508ac3e261e336b04113548675e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sat, 29 Aug 2026 07:19:00 +0100 Subject: [PATCH] the three files fb1cf0f6 was supposed to carry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fb1cf0f6 deleted the todo router, the board and the screen but did NOT remove the imports of them. so a checkout of that commit has hono.ts importing `./api/todos/router`, which is not there — and the server cannot start. fofos hit it within a minute of pulling. it was down until this commit. WHY IT PASSED EVERY CHECK HERE: the files were modified in my working tree and never staged, so this machine typechecked, tested and ran against the fix while the commit shipped without it. every green light I reported was true of the tree in front of me and false of the thing I pushed. HOW IT HAPPENED, precisely, because the shape is worth knowing: the `git add` naming these three also named a path that no longer existed. `git add` ABORTS ON AN UNMATCHED PATHSPEC — it does not stage the rest and warn. It staged nothing. the `git status` I printed straight afterwards showed them as ` M`, unstaged, and I read the output as confirmation rather than as the warning it was. the lesson is not "look harder at git status". it is that a commit which deletes a module and a commit which stops importing it must be the same commit, and the only thing that proves it is a check against the COMMIT rather than the working tree. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- src/servers/hono.ts | 2 -- src/servers/permissions/registry.ts | 11 ----------- .../officerdev/src/AppRegistry/AppRegistry.tsx | 2 -- 3 files changed, 15 deletions(-) diff --git a/src/servers/hono.ts b/src/servers/hono.ts index d75a9cf3..f33bd83d 100644 --- a/src/servers/hono.ts +++ b/src/servers/hono.ts @@ -10,7 +10,6 @@ import { themeFavoritesRouter } from './api/themes/favorites'; import { waitlistRouter } from './api/waitlist/waitlist'; import { usersRouter } from './api/users/users-router'; import { rolesRouter } from './api/roles/router'; -import { todosRouter } from './api/todos/router'; import { apiKeysRouter } from './api/api-keys/router'; import { skillsRouter } from './api/skills/skills'; import { tasksRouter } from './api/tasks/tasks'; @@ -131,7 +130,6 @@ const PROTECTED_MOUNTS: [prefix: string, router: ReturnType ['/theme-favorites', themeFavoritesRouter], ['/users', usersRouter], ['/roles', rolesRouter], - ['/todos', todosRouter], ['/skills', skillsRouter], ['/tasks', tasksRouter], ['/agents', agentsRouter], diff --git a/src/servers/permissions/registry.ts b/src/servers/permissions/registry.ts index 7494b88c..d2b0ae14 100644 --- a/src/servers/permissions/registry.ts +++ b/src/servers/permissions/registry.ts @@ -435,17 +435,6 @@ const CORE_REGISTRY: Permission[] = [ // is a real route — a client-side redirect still has to resolve before it can send anyone anywhere. routes: ['/marketplace', '/plugins'], }, - { - key: 'todos', - label: 'Todo board', - description: "The platform's own backlog — todo/ in the repo, browsed and edited at /todos", - // Admin because the subject is the platform's development, not the account's data: the tree lives in - // the server's own checkout and a write is a git-visible edit to it. The router double-gates on - // isSuperAdmin, same belt-and-braces as the rest of this kind. - kind: 'admin', - api: ['/todos'], - routes: ['/todos'], - }, { key: 'server-admin', label: 'Server settings', diff --git a/src/workspaces/officerdev/src/AppRegistry/AppRegistry.tsx b/src/workspaces/officerdev/src/AppRegistry/AppRegistry.tsx index 5709525b..4be85b14 100644 --- a/src/workspaces/officerdev/src/AppRegistry/AppRegistry.tsx +++ b/src/workspaces/officerdev/src/AppRegistry/AppRegistry.tsx @@ -13,7 +13,6 @@ import { appRegistryMetas as monitorMetas } from '../apps/SystemMonitor'; import { appRegistryMetas as qrTransferMetas } from '../apps/QrTransfer'; import { appRegistryMetas as sendOffMetas } from '../apps/SendOff'; import { appRegistryMetas as commandHqMetas } from '../apps/CommandHQ'; -import { appRegistryMetas as todoBoardMetas } from '../apps/TodoBoard'; import type { QueryClient } from '@tanstack/react-query'; import { globalQueryKey } from 'hooks/useGlobal'; import { metasToRegistry } from './useAppRegistry'; @@ -31,7 +30,6 @@ export const apps = [ ...qrTransferMetas, ...sendOffMetas, ...commandHqMetas, - ...todoBoardMetas, ...appStoreMetas, ...pluginsMetas, ];