Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Timesheets: finish CLI/MCP sharing (ts copy bypasses the create service, delete, read document, check summary)

Open
#97 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Active
Tech stack
csharp
Domain
api, cli, testing-qa

Research direction

Read TimesheetUpdateService and TimesheetAcceptService as patterns, then trace ts copy, ts delete, DeleteTimesheet, GetTimesheets, CheckCommand/CheckWeek, and single-day ts get. The work is done when the listed service migrations, shared documents, summary and strict fields, lookup path, and copy success/failure tests are complete without breaking the stated MCP wire changes.

Written by the indexing model from the issue text.

Description

Priority: P2 Type: Bug Type: Refactor

Why

Create, update and accept are genuinely shared. What is left on the timesheet side:

  • ts copy bypasses TimesheetCreateService. It builds its own TimesheetRequest (no sell price, the source row's Category copied into CategoryId rather than resolved, no rate check, no read-back), counts a Success=false response as copied and exits 0, reports the normal empty success body as "Failed: Unknown error", and skips the confirmation on --json without --yes. CLAUDE.md says a create request is never built outside the service.
  • GetTimesheets drops fields agents need. The MCP projection omits iteration/iterationId, category, less, location id and billable flags. UpdateTimesheet and AcceptSuggestedTimesheet take an iteration, but an agent cannot read a row's current one.
  • Delete shares only the suggestion guard; guard → DELETE → result is written twice (DeleteCommand, DeleteTimesheet).
  • ts check summary and --strict verdict are computed only in CheckCommand (CheckEvaluator.Summarize); CheckWeek has no summary or strict field.
  • ts get for a single day does not go through TimesheetLookup.

Migrate

  • ts copy: one TimesheetCreateService.PrepareAsync/ApplyAsync per row; count only verified outcomes; exit non-zero on any failed row; require --yes on --json; tests for success, Success=false and partial failure.
  • TimesheetDeleteService (guard + delete + result) used by ts delete and DeleteTimesheet; drop DeleteTimesheet from TimesheetToolsUsingApiDirectly.
  • One timesheet-row document for ts get --json and GetTimesheets (keep the weekend policy an explicit argument).
  • Put the summary line and strict verdict in WeekCheckResult.
  • ts get <date> reads through TimesheetLookup.

How

TimesheetUpdateService / TimesheetAcceptService are the pattern. The copy change and the delete service are patch-safe; the GetTimesheets document and the CheckWeek fields are MCP wire changes for 0.4.0.

Part of #38.

Dominant language
C#
Stars
3
Forks
0
Avg merge
7m
Merged PRs (30d)
30

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

  • No Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from SSWConsulting/TimePro.Tools

All issues in SSWConsulting/TimePro.Tools

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.