mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Fix dataset-ref walk false positive and wire spec-mandated success toasts
- Prune the data payload and top-level datasets keys in all three ref walks (extractDatasetRefs, renameDatasetInSpec, resolveDatasetRefs) so a data row carrying a field named "data" is no longer misread as a library reference, spuriously rewritten, or made to throw DatasetNotFoundError. Adds tests, including a guard that lookup-transform refs (from.data) still resolve. - Wire the deferred success toasts now the Toaster has landed: publish, revert, extract-to-dataset, and snippet/dataset delete. Copy follows the council title-vs-message rule (title states the action, message adds the consequence). - Reconcile the spec's blanket toast mandate to "toast only what the user can't already see": no toast on visible-result creates (snippet, dataset form); Copy Reference stays inline and gains an aria-live announcement (new shared .visually-hidden utility) instead of a toast-per-copy. - Move the toast region to bottom-right so it stops covering the header action cluster (Publish/Revert, theme/datasets). - Update docs/spec 01F/02/05 and docs/architecture/07 + 10 to match.
This commit is contained in:
@@ -27,6 +27,7 @@ import { openModal } from '../modals/ModalCoordinator';
|
||||
import { useAppStore } from '../stores/AppStore';
|
||||
import { confirm } from '../stores/ConfirmStore';
|
||||
import { hasInlineData } from '../stores/ExtractStore';
|
||||
import { notify } from '../stores/NotificationStore';
|
||||
import { usePreviewStore } from '../stores/PreviewStore';
|
||||
import { selectActiveSnippet, selectShownText, useSnippetStore } from '../stores/SnippetStore';
|
||||
import { SegmentedControl, type SegmentedOption } from './SegmentedControl';
|
||||
@@ -64,7 +65,14 @@ function EditorToolbar() {
|
||||
const handlePublish = () => {
|
||||
if (!useSnippetStore.getState().activeSnippetId) return;
|
||||
useSnippetStore.getState().publish();
|
||||
// TODO: success toast "Snippet published" once the toast system lands (M6, spec §03D).
|
||||
// Success confirmation (spec §03D). Per the council's toast-copy rule
|
||||
// (docs/architecture/10 → Toast copy), the title states the action and the
|
||||
// message adds the consequence rather than paraphrasing it.
|
||||
notify({
|
||||
kind: 'success',
|
||||
title: 'Snippet published',
|
||||
message: 'Your draft is now the published version.',
|
||||
});
|
||||
};
|
||||
|
||||
const handleRevert = async () => {
|
||||
@@ -77,7 +85,11 @@ function EditorToolbar() {
|
||||
});
|
||||
if (ok) {
|
||||
useSnippetStore.getState().revert();
|
||||
// TODO: success toast "Draft reverted" once the toast system lands (M6, spec §03D).
|
||||
notify({
|
||||
kind: 'success',
|
||||
title: 'Draft reverted',
|
||||
message: 'The editor was restored to the last published version.',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user