Skip to content

v1.0.4: v0.12 Git-native versioning & collaboration-lite#8

Merged
KKranthi6881 merged 1 commit into
mainfrom
v0.12-git-versioning
Apr 22, 2026
Merged

v1.0.4: v0.12 Git-native versioning & collaboration-lite#8
KKranthi6881 merged 1 commit into
mainfrom
v0.12-git-versioning

Conversation

@KKranthi6881

Copy link
Copy Markdown
Collaborator

Summary

  • T1 — Canonical .dqlnb serialization + dql migrate format so notebook writes are byte-identical for identical state and old projects upgrade on a single command.
  • T2dql diff <path> now diffs against HEAD and handles .dqlnb via diffNotebook; DiffReport gains cell/dashboard/workbook change variants.
  • T3 — New /api/git/{status,diff,log} endpoints. /api/git/diff reads HEAD blob and working copy concurrently and returns the raw unified diff + a semantic DiffReport for .dql / .dqlnb.
  • T4GitDiffView + refactored GitPanel: semantic DiffReport with per-field pills, raw fallback for other file types, 2s status polling with order-independent change detection.
  • T5/api/run-snapshot persists last-run cell results to sibling *.dqlnb.run.json (gitignored). Notebooks hydrate on open and cells show a subtle "cached" chip until re-run.

Also: simplify pass (parallel git reads, O(1) cell lookup, always-clear debounce cleanup, stat-based .git probe), version bump to 1.0.4 across 10 publishable packages.

Test plan

  • pnpm --filter @duckcodeailabs/dql-core test — 222 tests pass (incl. new diff.test.ts cell variants and notebook.test.ts round-trip)
  • pnpm build — 18/18 workspace builds succeed
  • pnpm release:dry-run — all 10 packages pack cleanly at 1.0.4
  • Browser: open welcome.dqlnb → "cached" chips render on hydrated cells → Run All clears chips → reload repopulates
  • /api/git/diff?path=<p> returns { inRepo, diff, before, after, diffReport } for .dql/.dqlnb
  • CI format gate (dql fmt --check) — deferred to a follow-up PR, see plan

🤖 Generated with Claude Code

T1 — Canonical .dqlnb serialization
  New packages/dql-core/src/format/notebook.ts with canonicalizeNotebook,
  parseDqlNotebook version-aware loader, key-sorted JSON emitter, and
  `dql migrate format` that walks the project and upgrades .dql/.dqlnb in
  place.

T2 — `dql diff` polish
  diffNotebook + cell/dashboard/workbook change variants; `dql diff <path>`
  now diffs against HEAD via the new git-service helper.

T3 — In-app git service
  /api/git/{status,diff,log} endpoints. /api/git/diff returns raw unified
  diff plus a semantic DiffReport for .dql/.dqlnb, reading HEAD blob and
  working-copy concurrently.

T4 — Git panel UI
  New GitDiffView renders semantic DiffReport with per-field pills and
  falls back to raw unified diff for non-DQL files. GitPanel polls status
  every 2s with order-independent change detection so terminal-side edits
  surface without clicking refresh.

T5 — Run snapshots
  /api/run-snapshot persists last-run results to sibling
  <notebook>.{dql,dqlnb}.run.json (gitignored). Notebooks hydrate on open
  and cells render a "cached" chip until re-run.

Simplify pass: parallelized git shell-outs, O(1) cell-hydration lookup,
always-clear pending-timer cleanup in the snapshot autosave, single
try/catch in place of existsSync+readFileSync TOCTOU, stat-based .git
root probe.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@KKranthi6881 KKranthi6881 merged commit 790e3da into main Apr 22, 2026
8 checks passed
KKranthi6881 added a commit that referenced this pull request Apr 23, 2026
…r abstraction)

Closes the v1.2.1 gap audit — 9 fixes, ordered by severity. No behavior
changes beyond the #2 email-delivery correction; the rest add logging,
ignore patterns, and a provider-extension point.

Critical:
- #1 ignore .dql/runs/ and .dql/cache/ (root + `dql init` scaffold)
- #2 email notifier returns delivered:false in stub mode (was lying)

Bugs:
- #3 GET /api/blocks/body endpoint for bound-cell reloads
- #5 /api/schema returns 500 + fallback instead of silent file-only
- #6 log malformed scheduler run records to stderr
- #7 replace empty catches in runtime/html emitters with console.warn

Smells:
- #8 move LLM providers into providers/; add LLMProvider type alias
- #9 `dql schedule stop` via pidfile

#4 was a false-positive — bound-cell lineage is already wired via the
manifest builder's pathToBlockName lookup; comment updated.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.

1 participant