Skip to content

Commit c33bfb5

Browse files
committed
bd daemon sync: 2026-01-11 20:57:56
1 parent 019a63a commit c33bfb5

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

.beads/issues.jsonl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@
167167
{"id":"webrun-vcs-82b4","title":"Implement MemoryWorkingCopy class","description":"Create in-memory WorkingCopy implementation for testing.\n\n## File Location\n`packages/core/src/working-copy/working-copy.memory.ts`\n\n## Implementation\n\n```typescript\nimport type { ObjectId } from '../id/index.js';\nimport type { Repository } from '../repository.js';\nimport type { StagingStore } from '../staging/index.js';\nimport type { RepositoryStatus, StatusOptions } from '../status/index.js';\nimport type { WorkingTreeIterator } from '../worktree/index.js';\nimport type {\n MergeState,\n RebaseState,\n StashStore,\n WorkingCopy,\n WorkingCopyConfig\n} from '../working-copy.js';\nimport { MemoryStashStore } from './stash-store.memory.js';\n\nexport class MemoryWorkingCopy implements WorkingCopy {\n private headRef: string = 'refs/heads/main';\n private headCommit: ObjectId | undefined;\n private _mergeState: MergeState | undefined;\n private _rebaseState: RebaseState | undefined;\n \n readonly stash: StashStore;\n readonly config: WorkingCopyConfig;\n\n constructor(\n readonly repository: Repository,\n readonly worktree: WorkingTreeIterator,\n readonly staging: StagingStore,\n stash?: StashStore,\n config?: WorkingCopyConfig\n ) {\n this.stash = stash ?? new MemoryStashStore();\n this.config = config ?? {};\n }\n\n async getHead(): Promise\u003cObjectId | undefined\u003e {\n return this.headCommit ?? (await this.repository.refs.resolve('HEAD'))?.objectId;\n }\n\n async getCurrentBranch(): Promise\u003cstring | undefined\u003e {\n if (this.headRef.startsWith('refs/heads/')) {\n return this.headRef.substring('refs/heads/'.length);\n }\n return undefined;\n }\n\n async setHead(target: ObjectId | string): Promise\u003cvoid\u003e {\n if (target.startsWith('refs/')) {\n this.headRef = target;\n this.headCommit = undefined;\n } else {\n this.headCommit = target;\n }\n }\n\n async isDetachedHead(): Promise\u003cboolean\u003e {\n return this.headCommit \\!== undefined;\n }\n\n async getMergeState(): Promise\u003cMergeState | undefined\u003e {\n return this._mergeState;\n }\n\n async getRebaseState(): Promise\u003cRebaseState | undefined\u003e {\n return this._rebaseState;\n }\n\n async hasOperationInProgress(): Promise\u003cboolean\u003e {\n return this._mergeState \\!== undefined || this._rebaseState \\!== undefined;\n }\n\n async getStatus(options?: StatusOptions): Promise\u003cRepositoryStatus\u003e {\n // Simplified status for testing\n return {\n branch: await this.getCurrentBranch(),\n head: await this.getHead(),\n files: [],\n isClean: true,\n hasStaged: false,\n hasUnstaged: false,\n hasUntracked: false,\n hasConflicts: false\n };\n }\n\n async refresh(): Promise\u003cvoid\u003e {\n await this.staging.read();\n }\n\n async close(): Promise\u003cvoid\u003e {\n // No resources to release\n }\n\n // Test helpers\n setMergeState(state: MergeState | undefined): void {\n this._mergeState = state;\n }\n\n setRebaseState(state: RebaseState | undefined): void {\n this._rebaseState = state;\n }\n}\n```\n\n## Export from index.ts\nAdd to working-copy/index.ts:\n```typescript\nexport * from './working-copy.memory.js';\nexport * from './stash-store.memory.js';\n```\n\n## Tests\nCreate `packages/core/tests/working-copy/working-copy.memory.test.ts`:\n- Test all WorkingCopy interface methods\n- Test test helpers for setting state","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T21:56:12.284442426+01:00","updated_at":"2025-12-27T22:47:48.089397222+01:00","closed_at":"2025-12-27T22:47:48.089397222+01:00","close_reason":"Closed","dependencies":[{"issue_id":"webrun-vcs-82b4","depends_on_id":"webrun-vcs-l6i6","type":"blocks","created_at":"2025-12-27T21:56:20.229744453+01:00","created_by":"daemon"}]}
168168
{"id":"webrun-vcs-83oz","title":"Update vcs-core to re-export from vcs-utils (Phase 2)","description":"Update packages/core/src/files/index.ts to re-export FilesApi, FileInfo, FileStats, FileMode, FileModeValue, createInMemoryFilesApi, createNodeFilesApi, joinPath, basename, dirname from @statewalker/vcs-utils/files for backwards compatibility.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-07T17:32:56.957601427+01:00","updated_at":"2026-01-07T18:14:58.018232747+01:00","closed_at":"2026-01-07T18:14:58.018232747+01:00","close_reason":"Implemented Files API migration to vcs-utils","dependencies":[{"issue_id":"webrun-vcs-83oz","depends_on_id":"webrun-vcs-3cd7","type":"blocks","created_at":"2026-01-07T17:33:24.885944059+01:00","created_by":"daemon"}]}
169169
{"id":"webrun-vcs-84r6","title":"Update Git class constructor to accept new stores","description":"Update Git class to use new store architecture with single constructor.\n\n**File:** packages/commands/src/git.ts\n\n**New Constructor:**\n\\`\\`\\`typescript\nclass Git {\n constructor(stores: {\n history: HistoryStore;\n checkout?: CheckoutStore;\n worktree?: WorktreeStore;\n });\n}\n\\`\\`\\`\n\n**Steps:**\n1. Replace existing constructor with new signature\n2. Update internal references to use new store names\n3. Update command factory methods to pass correct stores\n\n**Testing:**\n- TypeScript compilation\n- Existing tests (may need updates)","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T13:28:48.405485804+01:00","updated_at":"2026-01-11T10:38:31.794709029+01:00","closed_at":"2026-01-11T10:38:31.794709029+01:00","close_reason":"Already implemented via Git.fromStores() method and GitStoresConfig interface in types.ts","dependencies":[{"issue_id":"webrun-vcs-84r6","depends_on_id":"webrun-vcs-orrj","type":"blocks","created_at":"2026-01-10T13:30:02.192523356+01:00","created_by":"daemon"}]}
170+
{"id":"webrun-vcs-85wa","title":"Reimplement git-workflow-complete with Porcelain API","description":"## Summary\nReimplement the `apps/demos/git-workflow-complete` demo to use ONLY porcelain commands and FilesAPI, eliminating all low-level API usage.\n\n## Current State\nThe demo currently mixes:\n- Porcelain commands (git.commit, git.merge, git.branchCreate, etc.)\n- Low-level APIs (store.refs.setSymbolic, store.blobs.store, staging.editor)\n- Native git subprocess calls for checkout\n\n## Target State\nAll operations should use:\n- `Git` facade porcelain commands from `@statewalker/vcs-commands`\n- `FilesApi` for file read/write operations\n- No direct store/repository access\n- No native git subprocess calls\n\n## Benefits\n1. Cleaner, more maintainable code\n2. Better demonstrates the high-level API\n3. Works in browser environments (no native git)\n4. Serves as reference implementation for users\n\n## Dependencies\n- Requires: webrun-vcs-jhrp (Git.init() command)\n\n## Steps Overview\n1. Refactor Step 01 (Init) - use Git.init()\n2. Refactor Steps 02-03 (Files/Commits) - use git.add() + FilesAPI\n3. Refactor Step 04 (Branching) - use git.checkout()\n4. Step 05 (Merging) - already porcelain, minor cleanup\n5. Refactor Step 06 (Diff) - use git.log() for history\n6. Refactor Step 07 (GC) - use git.gc()\n7. Refactor Steps 08-09 (Checkout/Verify) - use git.checkout() + git.status()","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-11T20:57:56.158957848+01:00","created_by":"kotelnikov","updated_at":"2026-01-11T20:57:56.158957848+01:00"}
170171
{"id":"webrun-vcs-86f4","title":"Phase 1: Core Examples (Foundation)","description":"# Phase 1: Core Examples (Foundation)\n\nEntry points for all users - the first examples people will encounter.\n\n## Examples in this Phase\n\n1. **examples/01-quick-start/** - First steps with VCS (~2h)\n2. **examples/02-porcelain-commands/** - Full Git workflow with Commands API (~6h)\n3. **examples/03-object-model/** - Understanding blobs, trees, commits (~4h)\n\n## Total Estimated Effort\n\n12 hours\n\n## Dependencies\n\nNone - this is the foundation phase.\n\n## Key Refactoring Sources\n\n- `apps/example-readme-scripts/basic-repository-operations.ts` → 01-quick-start\n- `apps/example-readme-scripts/commands-api.ts` → 02-porcelain-commands\n- `apps/example-git-cycle/steps/01-04` → 03-object-model\n- `apps/examples-git/06-high-level-api` → 03-object-model\n\n## Success Metrics\n\n- Quick Start: User creates first commit in \u003c 5 minutes\n- Porcelain Commands: Complete workflow demo in \u003c 15 minutes","status":"closed","priority":1,"issue_type":"epic","created_at":"2026-01-11T18:26:18.042004643+01:00","created_by":"kotelnikov","updated_at":"2026-01-11T18:58:43.588538883+01:00","closed_at":"2026-01-11T18:58:43.588538883+01:00","close_reason":"Phase 1 Core Examples completed: 01-quick-start, 02-porcelain-commands, and 03-object-model all implemented and working","dependencies":[{"issue_id":"webrun-vcs-86f4","depends_on_id":"webrun-vcs-ddlb","type":"blocks","created_at":"2026-01-11T19:16:12.9089675+01:00","created_by":"kotelnikov"},{"issue_id":"webrun-vcs-86f4","depends_on_id":"webrun-vcs-atmj","type":"blocks","created_at":"2026-01-11T19:17:11.246063875+01:00","created_by":"kotelnikov"},{"issue_id":"webrun-vcs-86f4","depends_on_id":"webrun-vcs-m3su","type":"blocks","created_at":"2026-01-11T19:17:48.874308541+01:00","created_by":"kotelnikov"}]}
171172
{"id":"webrun-vcs-86pd","title":"Create package dependency diagram","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T12:07:14.544981349+01:00","updated_at":"2025-12-26T08:58:11.705693257+01:00","closed_at":"2025-12-26T08:58:11.705693257+01:00","close_reason":"Created package dependency diagram with Mermaid visualization, table, and ASCII fallback"}
172173
{"id":"webrun-vcs-87fq","title":"Create CheckoutStore interface","description":"Create the main CheckoutStore interface combining staging, state, and stash.\n\n**New file:** packages/core/src/checkout/checkout-store.ts\n\n**Interface:**\n\\`\\`\\`typescript\ninterface CheckoutStore {\n readonly staging: StagingStore;\n readonly state: CheckoutStateStore;\n readonly stash: StashStore;\n \n getHead(): Promise\u003cObjectId | undefined\u003e;\n setHead(target: ObjectId | string): Promise\u003cvoid\u003e;\n getCurrentBranch(): Promise\u003cstring | undefined\u003e;\n isDetachedHead(): Promise\u003cboolean\u003e;\n \n refresh(): Promise\u003cvoid\u003e;\n close(): Promise\u003cvoid\u003e;\n}\n\\`\\`\\`\n\n**Testing:**\n- Create unit tests for CheckoutStore interface\n- Test HEAD management methods\n\n**Files:**\n- packages/core/src/checkout/checkout-store.ts (NEW)\n- packages/core/src/checkout/index.ts (update exports)","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-10T13:28:03.165639931+01:00","updated_at":"2026-01-11T10:30:46.649617029+01:00","closed_at":"2026-01-11T10:30:46.649617029+01:00","close_reason":"CheckoutStore interface already exists in packages/core/src/checkout/checkout-store.ts","dependencies":[{"issue_id":"webrun-vcs-87fq","depends_on_id":"webrun-vcs-ew7y","type":"blocks","created_at":"2026-01-10T13:28:08.80698285+01:00","created_by":"daemon"}]}

0 commit comments

Comments
 (0)