diff --git a/web/DetailHeader.tsx b/web/DetailHeader.tsx
index f5d879a..19024a0 100644
--- a/web/DetailHeader.tsx
+++ b/web/DetailHeader.tsx
@@ -1,6 +1,5 @@
import { useSearchParams } from 'react-router';
import { DEFAULT_SECTION, isSectionKey, sectionFor } from './sections';
-import { PublishButton } from './PublishButton';
/**
* The detail panel's chrome header — the section's own name, not the word "Detail".
@@ -19,10 +18,12 @@ import { PublishButton } from './PublishButton';
* "Photos and video the site is built from" is useful in the NAV, where somebody is choosing between
* ten sections. Repeated above the thing they chose, it is a caption for a decision already made.
*
- * ── And Publish, on the right ──
+ * ── The actions are NOT here ──
*
- * The one action that belongs to every section rather than to any of them. It is here because it is
- * what you do after editing anything, and a header is the one piece of chrome every panel already has.
+ * Build and Publish were, briefly. They belong to the panel rather than to the workspace's chrome: the
+ * chrome header scrolls out of reach on a long section, and it is shared furniture that every panel in
+ * the app draws the same way. They live in DetailPanel's own bar now, which is pinned above the scroll
+ * area and always reachable.
*/
export const DetailHeader = () => {
const [params] = useSearchParams();
@@ -34,9 +35,6 @@ export const DetailHeader = () => {
<>
{section.label}
- {/* Right of the name, on every section. Publishing is the last step of every edit and it used to
- live in one card at the bottom of one section — see PublishButton for why that was wrong. */}
-
>
);
};
diff --git a/web/DetailPanel.tsx b/web/DetailPanel.tsx
index 0835f36..42ecddd 100644
--- a/web/DetailPanel.tsx
+++ b/web/DetailPanel.tsx
@@ -4,6 +4,7 @@ import { AdministrationPanel } from './AdministrationPanel';
import { MediaPanel } from './MediaPanel';
import { HomePanel } from './sections/HomePanel';
import { GalleriesPanel } from './sections/GalleriesPanel';
+import { PublishButton } from './PublishButton';
import { AboutPanel } from './sections/AboutPanel';
import { RecordsPanel } from './sections/RecordsPanel';
import { COLLABS_CONFIG, DROPS_CONFIG, GALLERY_CONFIG } from './sections/records';
@@ -86,6 +87,22 @@ export const DetailPanel = () => {
return (
+ {/*
+ The site's own actions, pinned above whatever the section is showing.
+
+ OUTSIDE the scroll area on purpose. Every panel scrolls its own contents, so anything drawn
+ inside one leaves the screen as soon as somebody reads to the bottom — and Publish is what you
+ reach for AFTER reading to the bottom. It sits here instead, as a sibling of the scrolling
+ region rather than the first thing inside it.
+
+ Not in the workspace's chrome header either, where it lived for an afternoon. That header is
+ shared furniture drawn the same way by every panel in the app; these two buttons belong to this
+ plugin and to the site it administers.
+ */}
+
+
);