dsh-git-worktree 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +41 -1
  2. package/README.en.md +7 -4
  3. package/README.md +7 -4
  4. package/lib/adapters/registry.js +4 -32
  5. package/lib/adapters/registry.js.map +1 -1
  6. package/lib/client/actions.d.ts +2 -0
  7. package/lib/client/pre-session/controller.js +5 -0
  8. package/lib/client/pre-session/controller.js.map +1 -1
  9. package/lib/client/review-console/PreflightStatus.js +5 -2
  10. package/lib/client/review-console/PreflightStatus.js.map +1 -1
  11. package/lib/client/review-console/ReviewActions.js +47 -46
  12. package/lib/client/review-console/ReviewActions.js.map +1 -1
  13. package/lib/client/review-console/ReviewDetailsModal.js +13 -3
  14. package/lib/client/review-console/ReviewDetailsModal.js.map +1 -1
  15. package/lib/client/review-console/review-console.styles.js +22 -11
  16. package/lib/client/review-console/review-console.styles.js.map +1 -1
  17. package/lib/client/target-console/WorktreeReviewStatus.js +7 -7
  18. package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -1
  19. package/lib/client/workspace-sidebar/index.js +6 -3
  20. package/lib/client/workspace-sidebar/index.js.map +1 -1
  21. package/lib/client.js +1461 -467
  22. package/lib/commit-message.d.ts +2 -0
  23. package/lib/commit-message.js +5 -0
  24. package/lib/commit-message.js.map +1 -0
  25. package/lib/console-host/control-plane.js +6 -5
  26. package/lib/console-host/control-plane.js.map +1 -1
  27. package/lib/console-remote/schemas.d.ts +1 -1
  28. package/lib/console-remote/schemas.js +2 -1
  29. package/lib/console-remote/schemas.js.map +1 -1
  30. package/lib/host-compat.js +2 -1
  31. package/lib/host-compat.js.map +1 -1
  32. package/lib/i18n/client-messages.d.ts +8 -4
  33. package/lib/i18n/client-messages.js +2 -4
  34. package/lib/i18n/client-messages.js.map +1 -1
  35. package/lib/i18n/host-messages.d.ts +3 -7
  36. package/lib/i18n/host-messages.js +3 -7
  37. package/lib/i18n/host-messages.js.map +1 -1
  38. package/lib/index.d.ts +9 -9
  39. package/lib/ports.d.ts +1 -1
  40. package/lib/session-checkout-apply.js +6 -5
  41. package/lib/session-checkout-apply.js.map +1 -1
  42. package/lib/session-checkout-module.js +10 -7
  43. package/lib/session-checkout-module.js.map +1 -1
  44. package/lib/workspace-provider-lifecycle.js +31 -6
  45. package/lib/workspace-provider-lifecycle.js.map +1 -1
  46. package/package.json +43 -41
  47. package/scripts/check-publish.mjs +2 -0
  48. package/scripts/workspace-sidebar-upstream-alpha.mjs +16 -14
  49. package/scripts/workspace-sidebar-upstream-next.mjs +12 -16
  50. package/scripts/workspace-sidebar-upstream.mjs +18 -4
@@ -1,3 +1,4 @@
1
+ import { isValidCommitMessage } from './commit-message.js';
1
2
  import { hostMessages, hostPersistedCleanupMessage } from './i18n/host-messages.js';
2
3
  import { hostMessage } from './i18n/host.js';
3
4
  import { createHash } from 'node:crypto';
@@ -146,14 +147,11 @@ export function createSessionCheckoutModule(dependencies) {
146
147
  };
147
148
  }
148
149
  function projectPreviousReview(review) {
149
- const suggestedCommitMessage = review.suggestedCommitMessage.length <= 500
150
- ? review.suggestedCommitMessage
151
- : review.suggestedCommitMessage.slice(0, 500).replace(/[\uD800-\uDBFF]$/u, '');
152
150
  return {
153
151
  reviewId: review.reviewId,
154
152
  iteration: review.iteration,
155
153
  summary: review.summary,
156
- suggestedCommitMessage,
154
+ suggestedCommitMessage: review.suggestedCommitMessage,
157
155
  changedFiles: review.changedFiles.slice(0, 50),
158
156
  };
159
157
  }
@@ -1156,7 +1154,7 @@ export function createSessionCheckoutModule(dependencies) {
1156
1154
  }
1157
1155
  const summary = input.summary.trim();
1158
1156
  const suggestedCommitMessage = input.suggestedCommitMessage.trim();
1159
- if (!summary || !suggestedCommitMessage || input.tests.length > 20) {
1157
+ if (!summary || !isValidCommitMessage(suggestedCommitMessage) || input.tests.length > 20) {
1160
1158
  throw new SessionCheckoutError('invalid_input', hostMessage('theReviewSummaryCommitMessageOrValidationItemsAre'));
1161
1159
  }
1162
1160
  const record = dependencies.registry.read().managedCheckouts[binding.target.checkoutId];
@@ -1220,8 +1218,7 @@ export function createSessionCheckoutModule(dependencies) {
1220
1218
  return operationError('not_owner', hostMessage('onlyTheOwnerIsolatedSessionCanSaveACheckpoint'));
1221
1219
  }
1222
1220
  const commitMessage = input.commitMessage.trim();
1223
- if (!commitMessage
1224
- || commitMessage.length > 500
1221
+ if (!isValidCommitMessage(commitMessage)
1225
1222
  || !input.expectedReviewId.trim()
1226
1223
  || !/^[0-9a-f]{64}$/u.test(input.expectedGeneration)
1227
1224
  || !input.requestId.trim()
@@ -2461,6 +2458,9 @@ export function createSessionCheckoutModule(dependencies) {
2461
2458
  if (binding.ownerSessionId !== input.sessionId || binding.target.kind !== 'isolated') {
2462
2459
  return operationError('not_owner', hostMessage('onlyTheOwnerIsolatedSessionCanFinalizeTheAcceptance'));
2463
2460
  }
2461
+ if (!isValidCommitMessage(input.commitMessage)) {
2462
+ return operationError('invalid_input', hostMessage('theCommitMessageMustBeNonemptyAndContainNoNul'));
2463
+ }
2464
2464
  const record = dependencies.registry.read().managedCheckouts[binding.target.checkoutId];
2465
2465
  if (!record)
2466
2466
  return operationError('checkout_missing', hostMessage('theIsolatedCheckoutRecordDoesNotExist'));
@@ -2620,6 +2620,9 @@ export function createSessionCheckoutModule(dependencies) {
2620
2620
  if (binding.target.kind !== 'isolated') {
2621
2621
  return operationError('operation_not_allowed', hostMessage('localCheckoutDoesNotSupportFinish'));
2622
2622
  }
2623
+ if (!isValidCommitMessage(input.commitMessage)) {
2624
+ return operationError('invalid_input', hostMessage('theCommitMessageMustBeNonemptyAndContainNoNul'));
2625
+ }
2623
2626
  let record = dependencies.registry.read().managedCheckouts[binding.target.checkoutId];
2624
2627
  if (!record)
2625
2628
  return operationError('checkout_missing', hostMessage('theIsolatedCheckoutRecordDoesNotExist'));