Metadata-Version: 2.4
Name: redmine-worklog
Version: 0.1.5
Summary: A tiny retro CLI to log daily tasks to Redmine in plain text.
Author-email: Swaraj Mehta <swarajmehta.work@gmail.com>
License-Expression: MIT
Keywords: redmine,time-tracking,worklog,cli,timesheet
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Scheduling
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28
Dynamic: license-file

# redmine-worklog

A tiny retro CLI to log your daily tasks to Redmine in plain text.
No Teams, no web UI, no admin approval — just `pip install` and go.

```
  .-------------------.
  |  ##   REDMINE  ## |
  |   .-----------.   |
  |   |  >_  o  o  |   |
  |   |    WORKLOG |   |
  |   '-----------'   |
  |   [A]  [B]  ==    |
  '-------------------'
   R E D M I N E   W O R K L O G
```

## Install

From this folder:

```
pip install .
```

or for development (edits take effect immediately):

```
pip install -e .
```

This adds two commands: `rmlog` and `redmine-worklog`.

## First run

```
rmlog
```

The setup wizard asks for your name, Redmine URL, and API access key
(Redmine -> My account -> API access key), verifies the token, and saves
everything to `~/.redmine_worklog/config.json` (per user, so each teammate
logs as themselves).

## Logging tasks

After setup, `rmlog` greets you and waits for tasks. One task per line:

```
upload module discovery 3 hr today
fix login bug 2h yesterday
sprint planning 1.5 hr 15-09-2026 16-09-2026
```

Format: `<subject> <hours> hr <start-date> [<end-date>]`
- dates: `today` | `yesterday` | `dd-mm-yyyy`
- end date optional (defaults to start date)

It shows a preview and waits for you to type `yes` before posting.

## Rules (enforced before posting)

- Max 9 hours/day (configurable)
- No weekends
- No holidays (`~/.redmine_worklog/config.json` -> `holidays`)

## CSV backfill (bulk upload)

Inside the chat, type `csv` to bulk-upload many tasks at once — handy for
back-filling weeks or months. It shows the required format, asks for the file
path, validates the whole file, reports any problems, and only uploads after
you confirm.

CSV header (exact column names):

```
subject,description,priority,status,tracker,start_date,due_date,estimated_hours,date,hours,activity,comment
```

`tracker` is optional — leave it blank to use your default (set at setup or
via `change tracker`).

Example row:

```
UPLOAD MODULE DISCOVERY,working on upload module discovery,Normal,Closed,2026-09-17,2026-09-18,8,2026-09-18,4,Development,Initial implementation
```

Required in every row: `subject`, `hours`, `date`. Everything else falls back
to your defaults. Dates accept `YYYY-MM-DD` or `dd-mm-yyyy`. The same rules
(9h/day, no weekends, no holidays) are checked across all rows before upload.

## Commands (inside the chat)

- type a task       log one task
- `today`           show today's logged hours and how much is left
- `week`            show a per-day summary for the current week
- `quarter`         last quarter summary (monthly totals, avg/day, flagged days)
- `undo`            delete the last entry you logged (with confirmation)
- `csv`             bulk upload from a CSV (backfill)
- `undo csv`        undo the last CSV upload (deletes the whole batch)
- `change project`  switch the default project (verified against Redmine)
- `change tracker`  switch the default tracker (verified against Redmine)
- `change user`     switch Redmine account (re-runs setup)
- `help`            show instructions
- `quit`            exit

## Multiple accounts

- `change user`  — switch between saved accounts (no need to re-enter the
  token); choose `N` to add a new account
- `list users`   — show all saved accounts and which is active
- `delete user`  — remove a saved account (with confirmation)

Profiles are stored in `~/.redmine_worklog/config.json`.

## Command-line flags

- `rmlog`            log tasks (runs setup on first use)
- `rmlog --setup`    re-run the setup wizard / add an account
- `rmlog --plain`    disable colors and box characters (old terminals)
- `rmlog --version`  show version

Setting the `NO_COLOR` environment variable also enables plain mode.

## Daily hours limit

If a day would go over the limit (default 9h), the tool shows a warning and
asks you to confirm before logging the extra time. Weekends and holidays are
still hard blocks.

## Config file

`~/.redmine_worklog/config.json` holds your name, URL, token, project,
tracker, defaults (activity/comment/status), rules, and holidays.
The token is stored locally with restricted file permissions.
