- Add write-routing.ts: writesEnabled(), messageForAdd/Update/Delete(),
collectionPickerHtml(), selectedCollectionSlug() — shared helpers that
route to personal or org SW messages by context, gate on orgOffline.
- Un-hide edit/trash buttons in all 7 type-module detail views; render
them disabled when writesEnabled() is false (org offline).
- Add if (!writesEnabled()) return guard to edit/trash click handlers and
keyboard 'e'/'d' shortcuts across all 7 modules.
- Route delete through messageForDelete() in all 7 modules (personal →
delete_item, org → org_delete_item).
- Insert collectionPickerHtml() into add forms across all 7 modules;
route save through messageForAdd/Update() using selectedCollectionSlug().
- Un-gate '+ new' button and keyhint in item-list.ts: shows when
writesEnabled() (personal always; org when online); hides when offline.
- Fix pre-existing error-copy gap: add org_offline and
collection_not_granted entries (Task 3 SW handlers emitted these codes
without corresponding user-facing copy).
- Tests: write-routing.test.ts (21 tests, truth-table + route assertions);
org-write-ui.test.ts (13 tests, collection picker / personal unchanged /
offline disable / org_delete_item routing). Updated item-list.test.ts
and detail-read-only.test.ts to reflect new online-org behavior.