Commit Graph
6 Commits
Author SHA1 Message Date
skkeyeandClaude Opus 5.5 35d55c5122 Add pomodoro-style reminders
Advice only: it reads your real Start/Pause presses and says when a
break (or getting back) fits the rhythm. Interruptions shorter than a
short break don't reset a focus stretch; every Nth completed stretch
earns a long break.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 02:59:22 -04:00
skkeyeandClaude Opus 5.5 97f834a299 Add exports: timesheet copy presets, clipboard and report files
- timesheet: copy presets (total H:MM, decimal hours, segments,
  in/out/break as tab-separated cells, custom template) with optional
  rounding to a step.
- clipboard: system clipboard (Windows, X11, Wayland), falling back to
  the terminal's OSC 52, or a custom command like wl-copy.
- csv, json, markdown: report files for a range of dates. CSV uses ';'
  when the decimal separator is ','; the Markdown report has a summary
  and one padded table per week.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 02:59:21 -04:00
skkeyeandClaude Opus 5.5 a646337339 Add analysis for the Insights views
Plain data computed from the work days, nothing about drawing:

- overview: week/month totals, balance against the daily target, weekly
  totals, and when days start and end (past 24h for night shifts).
- calendar: time worked per date, as weeks x weekdays.
- rhythm: time worked per weekday and hour, split at hour boundaries.
- focus: session lengths, long sessions (hyperfocus), breaks, days that
  went past midnight.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 02:59:21 -04:00
skkeyeandClaude Opus 5.5 3fdd635af0 Add the domain: segments, work days and the journal
The rules, with no files and no UI:

- Segment: one stretch of work; it can only be built with end > start.
- WorkDay: segments filed under one date, even past midnight.
- Journal: every work day plus what's happening now (Idle, OnBreak,
  Working). Start opens a work day that stays open until End day; a
  break longer than a setting opens a new day (the safety net for a
  forgotten End day). Segments never overlap, even across days.
- snapshot(): the days with the running session included, so analysis
  and export never special-case it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 02:59:21 -04:00
skkeyeandClaude Opus 5.5 7bbc1ee0fa Add the time module: clock, 12h/24h text and typed times
- clock: the system clock, with a time zone override (name or fixed
  offset) and a manual adjustment; Start/Pause record whole minutes so
  displayed times and totals always add up.
- format: every time, date and duration shown in the app goes through
  Formatter (12h/24h, 7h 45m / 7:45 / 7.75); parse_time reads both 12h
  and 24h input (22:30, 2230, 22h30, 10:30pm, 10p).
- resolve: turns a typed "01:30" into the moment meant, so an end time
  before the start is the next day (night shifts).
- range: date ranges (week, month, last N days).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 02:59:21 -04:00
skkeyeandClaude Opus 5.5 f646da0a8e Set up the skyshift Cargo project
A terminal app (ratatui) to track work shifts, built on stable Rust,
edition 2024.

- Cargo.toml: eight well-known crates, each with a comment saying why:
  ratatui (UI), jiff (dates and time zones), serde + toml + serde_json
  (files), directories (per-OS folders), arboard (clipboard), anyhow.
- .cargo/config.toml: static C runtime on Windows, so the .exe runs
  without the Visual C++ Redistributable; `cargo lint` alias.
- rustfmt.toml: one formatting style for `cargo fmt`.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 02:59:21 -04:00