Skip to content

Implement Garden 1.0 features, fixes, and CI enhancements - #64

Closed
mberrys wants to merge 9 commits into
mainfrom
cursor/orchestration-1-0-a8ea
Closed

mberrys wants to merge 9 commits into
mainfrom
cursor/orchestration-1-0-a8ea

Conversation

@mberrys

@mberrys mberrys commented Aug 30, 2026

Copy link
Copy Markdown
Owner

No description provided.

cursoragent and others added 9 commits August 25, 2026 19:59
Implement the post-packet baseline: coverage ledger, frozen v1
.gardenspace fixtures, shared provenance, workspace transactions,
media/mini surfaces, Bases virtualization/calendar/filters,
Office interchange, folder worktrees, flavors, profession packets,
and prompt-to-surface reviewable plans.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Keep database grid on TanStack row models so cell accessors stay intact.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Virtualization still indexes filtered rows, but cells must come from
getRowModel so CellEditor accessors keep working.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Replace the markdown textarea with a live ProseMirror view that maps
transactions to Garden spliceBlocks and keeps workspace undo. Export
decks through PptxGenJS. Parse OOXML/ODF packages with fflate and
Mammoth for real DOCX ZIPs.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
The recipe button already plants a mini-tool; free-text "make a tool"
must propose the same workspace transaction and never crash the panel.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Run typecheck, lint, vitest, production build, and Playwright e2e on
pull requests and on pushes to main, using the mock AI provider.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Document Writer vs PDF, Excalidraw as reference-only, and Bases vs Sheets
and Airtable/Notion. The campaign packet now sprouts a pitch Schedule
calendar and the view opens on the month that has rows.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Import and export documented Office subsets through Garden canonical
state: DOCX/ODT, ExcelJS XLSX plus first-party ODS, and PPTX/ODP slide
import with blob plumbing. Adds a fixture corpus, Writer/Sheet export
buttons, and honest fidelity toasts.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Empty word/comments.xml from the docx packer was matching w:comment
and toasting a tracked-changes warning on clean round-trips.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
@mberrys

mberrys commented Aug 30, 2026

Copy link
Copy Markdown
Owner Author

@codex

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 45906929d3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

txRedo: [...state.txRedo, inverse],
lastAction: state.txUndo.length > 1 ? { type: "tx" } : null,
});
void persistSnapshot(result.snapshot);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Delete persisted documents when undoing transactions

When undoing a transaction that created documents, such as planting a packet or accepting a mini-tool plan, the inverse removes those documents only from the in-memory snapshot; persistSnapshot saves remaining documents but never calls deleteDocRow for removed ones. Reloading the page therefore restores the supposedly undone documents from IndexedDB, so the undo is not durable.

AGENTS.md reference: AGENTS.md:L13-L13

Useful? React with 👍 / 👎.

Comment on lines +478 to +480
canRedo: (docId) =>
(get().txRedo.length > 0 && get().lastAction?.type !== "doc") ||
(get().history[docId]?.redo.length ?? 0) > 0,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Implement the transaction redo path

After undoing a packet or mini-tool transaction, txRedo is populated and this predicate enables the Redo button, but redo() only reads the active document's history[docId].redo stack. In the common case that no document redo entry exists, clicking the enabled button returns without restoring the transaction.

Useful? React with 👍 / 👎.

}

set({ docs: { ...state.docs, [docId]: next }, history });
set({ docs: { ...state.docs, [docId]: next }, history, lastAction: { type: "doc", docId } });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restore the transaction marker after undoing a document edit

Setting lastAction to doc discards the only ordering marker for earlier transactions, and the document-undo branch never restores it. For example, plant a packet, edit its document, and undo the edit: the next Undo becomes disabled because lastAction remains doc, even though txUndo still contains the packet transaction, so the advertised workspace undo chain cannot continue.

Useful? React with 👍 / 👎.

Comment on lines +112 to +114
<div className="flex h-28 items-center justify-center bg-sunken text-[11px] text-faint">
{asset.blobId ? asset.name : "No file"}
</div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Render stored images on the media board

For every uploaded asset with a valid blobId, the board renders only the filename in a placeholder and never loads the blob or creates an image URL. Consequently users who choose “Add images” cannot see the images anywhere on the new media surface, making the visual asset board unusable for reviewing or captioning its contents.

Useful? React with 👍 / 👎.

Comment thread src/lib/ops/media.ts
Comment on lines +207 to +210
assets = assets.map((asset) =>
asset.groupId === op.id ? { ...asset, groupId: null } : asset,
);
inverse.push({ op: "addGroup", group: { id: removed.id, name: removed.name } });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore asset memberships when undoing group deletion

Deleting a populated group clears every matching asset.groupId, but its inverse only recreates the group. Undo therefore leaves all formerly grouped assets ungrouped, so the operation is not reversible and accepted AI deleteGroup edits can permanently lose the board's grouping assignments.

Useful? React with 👍 / 👎.

@mberrys

mberrys commented Sep 5, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded. cursor/orchestration-1-0-a8ea's "Garden 1.0" content landed on main through PRs #57/#59/#61 — its tree differs from today's main in only ~13 small files (mostly doc comments), adds zero files main lacks, and would delete src/lib/store/workspace-undo.test.ts. Its P1 workspace undo/redo comments (deleteDocRow on undo, txRedo path, lastAction marker) are already fixed on main via PR #61 (commit 5834e02 fix: restore workspace transaction redo after undo), which is why main's workspace.ts is longer than this branch's.

The two findings still live on main were media-board image rendering and deleteGroup undo restoring asset memberships — both fixed in PR #67 (merged on main).

@mberrys mberrys closed this Sep 5, 2026
@mberrys
mberrys deleted the cursor/orchestration-1-0-a8ea branch September 5, 2026 20:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants