harvest-worklog 0.13.8 → 0.13.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc54d55cf81c02098bcb07f3c395dffa6d3a0fdcd397025cbe56e34b182cbe42
4
- data.tar.gz: fb371e780d6da7678e1cae9094e381fc6480867d9b0f62ead3b790c8896ffae8
3
+ metadata.gz: 13fec06aaf3ff2a74302d0c41946f1988db2491883837632da26fa9725466b4f
4
+ data.tar.gz: 160e48eeea80b3979a8895620af3da85e57079e557aee9cf153040651c00da62
5
5
  SHA512:
6
- metadata.gz: cf60a286d289732b9ad536def651fbaffa8707fdfde952e89f514a8d3a493331405ad19d0e4f72a77f171152d9680b39cdbfac70d94a348fca56475cc2c95a49
7
- data.tar.gz: 2ee48492aa1d8ed0c96e98dd9c985934d76e90ebc1129357dd7071d63794da1250cb0678565bdc08205c4f3d14d1ed247dc246261cfb750547b56007e7f1551b
6
+ metadata.gz: 8381621ee4fc913b2c167dbf969930dae01783eefe611010e075171a92a387988f397ef560e961bc95699a95b99d85684f5dc0a06a0d954829f67a189d68b82c
7
+ data.tar.gz: b28784a10c7767eb721d87ad3f0d59c63aedf59ffea27f81b870658c088b77fd878b595e34a8a2954df1621a0d10c1a64d27801aa72278635be19846ea009ae8
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Harvest Worklog
2
2
 
3
- Harvest Worklog is a Ruby CLI and OMP plugin for personal Harvest work logs. It creates holiday-aware time-off entries, writes reviewed ordinary-work entries, and imports reviewed OMP Project Time sessions.
3
+ Harvest Worklog is a Ruby CLI and OMP plugin that infers reviewable personal work timesheets from local Project Time evidence while keeping Harvest authoritative. It creates holiday-aware time-off entries and writes only explicitly requested ordinary-work entries.
4
4
 
5
5
  ## Credentials
6
6
 
@@ -71,8 +71,8 @@ The CLI `timesheet` command and `harvest_time_sheet` OMP tool read the authentic
71
71
  harvest-worklog timesheet today --project WRAP
72
72
  ```
73
73
 
74
- The `/harvest-worklog timesheet today --project wrap` slash command reads the requested local OMP Project Time day and fetches available Harvest project/task categories through the read-only `mapping-data` path. It asks the configured model to classify local activities into those exact categories and concise feature/workstream labels, then renders a `Harvest draft (review only; nothing written)` grouped by project and task with exact local duration totals. Mapped groups include source narratives as reviewable notes when the log provides them; otherwise they explicitly say that a factual Harvest note is required. Unmapped work is marked not submittable and retains bounded local activity evidence. If Harvest lookup or classification is unavailable, configured mappings are used as a fallback; generated worklog bullets are used only in the non-Harvest activity-summary path.
75
- When a Project Time log has no narrative text, the draft does not turn activity labels into Harvest notes; it shows them as reference evidence and asks the user to add factual detail. Logs that provide `narrative.text` can supply reviewable source notes.
74
+ The `/harvest-worklog timesheet today --project wrap` slash command reads the requested local OMP Project Time day and renders a deterministic `Inferred work-timesheet draft (review only; nothing written)`. Only `projectTimeMappings` can supply its Harvest project/task destination. Explicit and carried-forward evidence is mapped; unassigned and ambiguous task evidence stays visible but not submittable. Every source entry shows its ID, source kind, repository identity, interval, task-attribution provenance, and any source narrative. The command never calls or changes Harvest.
75
+ When a Project Time log has no narrative text, the draft does not turn activity labels into Harvest notes; it asks the user to add factual detail.
76
76
  `/project-time history` reports all logged dates, so its totals can be larger than the selected day.
77
77
 
78
78
  Type `/harvest-worklog ` in OMP to discover `timesheet`; date aliases appear only after selecting `timesheet `. After `--project`, Tab lists local human-active Project Time project names; a prefix filters them case-insensitively. Completion preserves the case-sensitive name required by the command.
@@ -95,15 +95,16 @@ Configure `projectTimeMappings` with the recorded OMP Project Time project name
95
95
  }
96
96
  ```
97
97
 
98
- `harvest_preview_project_time_entries` reads only `human_active` sessions from the configured time log, splits them across local dates, combines sources that map to the same Harvest date/project/task, reports that source policy, generates descriptions from the project and repository, and checks Harvest for existing or locked entries without writing. `harvest_record_project_time_entries` performs the same preflight then creates only new entries; OMP treats it as a write requiring approval. Unmapped sessions are reported and never written.
98
+ Harvest Worklog reads only the documented `omp-project-time/evidence` format at version `1`. An absent, unsupported, or malformed version produces a no-write diagnostic; run a current Project Time session to persist the v1 ledger format before retrying.
99
99
 
100
- `harvest_preview_project_time_drafts` produces one deterministic, copyable Date/Project/Task/Duration block per mapped local day and Harvest destination from automatic `human_active` evidence. It requires a factual note before manual entry and keeps unmapped and excluded evidence visible. It reads the local log only; it never calls or mutates Harvest.
100
+ `harvest_preview_project_time_entries` reads only `human_active` sessions from the configured time log, splits them across local dates, combines sources that map to the same Harvest date/project/task, and performs a no-write Harvest preflight. It reports the inferred timesheet entries, source policy, and unmapped sessions; it never records Project Time-derived work in Harvest.
101
+
102
+ `harvest_preview_project_time_drafts` produces one deterministic, copyable Date/Project/Task/Duration block per mapped local day and Harvest destination from `human_active` evidence. It preserves source entry IDs, intervals, source kind, repository identity, narratives, work items, and task-attribution provenance. Explicit and carried-forward evidence can use the existing project-to-Harvest mapping; unassigned and ambiguous evidence stays visible but not submittable. Generated narratives are review evidence, never task identity or a factual Harvest note. The tool reads the local log only; it never calls or mutates Harvest.
101
103
 
102
104
  ### Activity transforms
103
105
 
104
- `harvest_preview_project_time_transforms` emits deterministic JSON for local raw intervals. It accepts an inclusive date range and optional exact `repositoryId`, `project`, and `sourceKind` filters; each matching interval is split by local date and grouped by activity, with missing labels reported as `unlabelled`. It defaults to `human_active` and returns the effective top-level `sourceKind`; selecting `agent_turn_elapsed` requires an explicit source-kind request. Set `applyMappings` to include configured Harvest project/task mappings. The output reports `groups`, proposed mapped `entries`, and any `unmapped` or `excluded` rows.
106
+ `harvest_preview_project_time_transforms` emits deterministic JSON for local raw intervals. It accepts an inclusive date range and optional exact `repositoryId`, `project`, and `sourceKind` filters; each matching interval is split by local date and grouped by activity, with missing labels reported as `unlabelled`. It defaults to `human_active` and returns the effective top-level `sourceKind`; selecting `agent_turn_elapsed` requires an explicit source-kind request. Set `applyMappings` to include configured Harvest project/task mappings. The output reports groups, source records, candidate mapped entries, and any unmapped or excluded rows; it never writes Harvest.
105
107
 
106
- `harvest_record_project_time_transforms` is a separate approval-gated write step. It always applies configured mappings and records the reviewed activity entries through the existing locked and duplicate preflight. Different activity labels may share a date/project/task; rerunning the same activity label is skipped, as are locked or unrelated existing entries.
107
108
 
108
109
  ## Daily reconciliation
109
110
 
@@ -116,9 +117,9 @@ harvest-worklog reconcile 2026-07-21 \
116
117
  --task Programming
117
118
  ```
118
119
 
119
- Empty local or Harvest data is reported as zero, so this command is suitable for daily capture checks while manual tracking remains authoritative. [#51](https://github.com/klondikemarlen/harvest-worklog/issues/51) separately ensures ordinary automatic exports use only the same `human_active` evidence.
120
+ Empty local or Harvest data is reported as zero, so this command is suitable for daily capture checks while manual tracking remains authoritative. It never decides or applies a Harvest delta.
120
121
 
121
- The standard work-entry importer allows only one entry for a date, project, and task. If a manual `WRAP / Programming` entry exists for a date, importing ordinary OMP Project Time for that same mapping skips it rather than adding hours. Activity transforms are the exception: distinct activity labels can create separate entries while the same label, locked entries, and unrelated manual entries are still skipped. Reconcile ordinary entries as either OMP or manual hours, not their sum.
122
+ Manual Harvest entries remain separate from inferred Project Time durations. Review the timesheet and reconciliation output, then choose the actual Harvest entry yourself; do not sum local evidence and manually recorded Harvest time as if they were independent entries.
122
123
 
123
124
  ## Migration from harvest-time-off
124
125
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HarvestWorklog
4
- VERSION = "0.13.8"
4
+ VERSION = "0.13.10"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harvest-worklog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.8
4
+ version: 0.13.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marlen Brunner