harvest-worklog 0.13.7 → 0.13.9

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: 0a708820ff730ffb80a21aa3320aeacb947a63042abc757ed91f7eff3c5312e1
4
- data.tar.gz: 219d9844973f026ab97b501e978f6c0f4e041bf96ca5d2d36474be6c61a0529d
3
+ metadata.gz: 906a869acc7922f20bff20368d1652e9e899ef4a7f8128a6c1727239e8670dfb
4
+ data.tar.gz: 3bd8f924e8ce07aaa725010a63baa660fba55ca75b1d5bcb36a56933bfb116d3
5
5
  SHA512:
6
- metadata.gz: 7b88ca5e82c85c34000e6d83b249ab5cce20239dee4841009a137d7637f2c6e33e5685ac897edda5e0071c828b930171c90fd3fcdfb1627b54df909ee06bddf1
7
- data.tar.gz: 5823b577d1d6a446116515bf9d2be49698cf5399f601a46a9a3df5844f3960b8bc5563ec8e56ab11a0c0d99f1d65172f68838a26e48998f734b0f22913749a25
6
+ metadata.gz: b7fe183dbba632c05ea4371a64ab7dfa670ecd50d78f210ae27f7990d45be3c8c82ffa1913a438bc6fa6f293ff1d5bc7e8febabd2e491f292d52d41955b7d5e1
7
+ data.tar.gz: f52fe0cb6c3d6278c59c5a8688e590505c7815b0a7d3f9a923608c8ca67fd9e0a9c5dbd6b2ecc3f163fc0595e9cdb7a430281cc54f1bb3a9080a94c60c77f442
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,7 +71,7 @@ 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.
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 an `Inferred work timesheet (review only; nothing written)` grouped by project and task with exact local duration totals. This timesheet is a reviewable source for manually entering Harvest time, not a Harvest replacement. 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 remain available as a fallback.
75
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.
76
76
  `/project-time history` reports all logged dates, so its totals can be larger than the selected day.
77
77
 
@@ -95,15 +95,14 @@ 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, 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_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.
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_drafts` produces one deterministic, copyable Date/Project/Task/Duration block per mapped local day and Harvest destination from `human_active` evidence. It is the primary reviewable timesheet output: use it as the source for manual Harvest entry after supplying a factual note. Unmapped and excluded evidence remains visible. It reads the local log only; it never calls or mutates Harvest.
101
101
 
102
102
  ### Activity transforms
103
103
 
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.
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, candidate mapped entries, and any unmapped or excluded rows; it never writes Harvest.
105
105
 
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
106
 
108
107
  ## Daily reconciliation
109
108
 
@@ -116,9 +115,9 @@ harvest-worklog reconcile 2026-07-21 \
116
115
  --task Programming
117
116
  ```
118
117
 
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.
118
+ 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
119
 
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.
120
+ 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
121
 
123
122
  ## Migration from harvest-time-off
124
123
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HarvestWorklog
4
- VERSION = "0.13.7"
4
+ VERSION = "0.13.9"
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.7
4
+ version: 0.13.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marlen Brunner