eventlog

package
v0.2.24 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var LogPath = func() string {
	return filepath.Join(paths.DataDir(), paths.LogFileName)
}

LogPath returns the log file location:

  • Windows: %APPDATA%\notify\notify.log
  • Unix: ~/.config/notify/notify.log

This is a variable so tests can override it.

Functions

func ExtractTimestamp added in v0.2.17

func ExtractTimestamp(line string) (time.Time, bool)

ExtractTimestamp parses the RFC3339 timestamp at the start of a log line (everything before the first " " double-space separator). Returns the parsed time and true on success, or zero time and false on failure.

func KindString added in v0.2.12

func KindString(k EntryKind) string

KindString returns a human-readable string for an EntryKind.

func Log

func Log(action string, steps []config.Step, afk bool, vars tmpl.Vars)

Log appends to the log file a summary line followed by one detail line per step. Errors are printed to stderr but never returned — logging is best-effort.

func LogCooldown added in v0.2.3

func LogCooldown(profile, action string, cooldownSeconds int)

LogCooldown appends a single line noting that an invocation was skipped due to cooldown. Best-effort, same as Log.

func LogCooldownRecord added in v0.2.3

func LogCooldownRecord(profile, action string, cooldownSeconds int)

LogCooldownRecord appends a single line noting that cooldown state was updated for an action. Best-effort, same as Log.

func LogSilent added in v0.2.7

func LogSilent(profile, action string)

LogSilent appends a single line noting that an invocation was skipped due to silent mode. Best-effort, same as Log.

func LogSilentDisable added in v0.2.7

func LogSilentDisable()

LogSilentDisable appends a single line noting that silent mode was disabled. Best-effort, same as Log.

func LogSilentEnable added in v0.2.7

func LogSilentEnable(d time.Duration)

LogSilentEnable appends a single line noting that silent mode was enabled. Best-effort, same as Log.

func StepSummary added in v0.2.17

func StepSummary(s config.Step, vars *tmpl.Vars) string

StepSummary returns a human-readable description of what a step does. When vars is non-nil, template variables are expanded (logging mode). When vars is nil, raw values are shown (dry-run mode). When/volume suffixes are always appended if present.

Types

type ActionKey added in v0.2.21

type ActionKey struct{ Profile, Action string }

ActionKey identifies a profile/action pair for aggregation.

type AggregatedData added in v0.2.21

type AggregatedData struct {
	PerAction        map[ActionKey]*Counts
	PerProfile       map[string]*Counts
	ProfileOrder     []string
	ActionsByProfile map[string][]ActionKey
	HasSkipped       bool
}

AggregatedData holds the result of aggregating day groups into per-action and per-profile counts.

func AggregateGroups added in v0.2.21

func AggregateGroups(groups []DayGroup) AggregatedData

AggregateGroups collects per-action and per-profile counts from day groups.

type Counts added in v0.2.21

type Counts struct{ Exec, Skip int }

Counts holds execution and skip totals for a profile or action.

type DayGroup added in v0.2.11

type DayGroup struct {
	Date      time.Time
	Summaries []DaySummary
}

DayGroup holds all summaries for a single calendar day.

func SummarizeByDay added in v0.2.11

func SummarizeByDay(entries []Entry, days int) []DayGroup

SummarizeByDay filters entries to the last N calendar days (local time), groups by date + profile/action, and returns day groups sorted descending with summaries sorted alphabetically. Pass days=0 to include all entries.

type DaySummary added in v0.2.11

type DaySummary struct {
	Profile    string
	Action     string
	Executions int
	Skipped    int
}

DaySummary holds execution and skip counts for one profile/action pair.

type Entry added in v0.2.11

type Entry struct {
	Time          time.Time
	Profile       string
	Action        string
	Kind          EntryKind
	ClaudeHook    string // from claude_hook= field (optional)
	ClaudeMessage string // from claude_message= field (optional)
}

Entry is a single parsed log entry.

func ParseEntries added in v0.2.11

func ParseEntries(content string) []Entry

ParseEntries splits log content on blank lines and parses summary lines into entries. Each block may contain multiple summary lines (e.g. a cooldown=recorded line followed by an execution line) plus step detail lines (indented with "step["). Step detail lines are skipped. Each summary line produces one Entry. Malformed lines are silently skipped.

type EntryKind added in v0.2.11

type EntryKind int

EntryKind classifies a log entry.

const (
	KindExecution EntryKind = iota
	KindCooldown
	KindSilent
	KindOther
)

type HourProfile added in v0.2.21

type HourProfile struct {
	Hour    int
	Profile string
}

HourProfile is the key for per-cell hourly data.

type HourlyData added in v0.2.21

type HourlyData struct {
	Profiles      []string
	PerCell       map[HourProfile]int
	PerHour       map[int]int
	ProfileTotals []int // parallel to Profiles
	MinHour       int
	MaxHour       int
	GrandTotal    int
}

HourlyData holds computed hourly breakdown data for a single day.

func ComputeHourly added in v0.2.21

func ComputeHourly(entries []Entry, targetDate time.Time, loc *time.Location) HourlyData

ComputeHourly computes per-hour activity breakdown for a target date. Only entries matching targetDate in the given location are included. Entries with KindOther are excluded.

type TimeSpentData added in v0.2.21

type TimeSpentData struct {
	Profiles []TimeSpentProfile
	Total    int
}

TimeSpentData holds approximate time spent across all profiles.

func ComputeTimeSpent added in v0.2.21

func ComputeTimeSpent(entries []Entry, targetDate time.Time, loc *time.Location) TimeSpentData

ComputeTimeSpent estimates approximate time spent per profile on a target date. It walks consecutive entry timestamps per profile; gaps of 5 minutes or less are counted as active time.

type TimeSpentProfile added in v0.2.21

type TimeSpentProfile struct {
	Name    string
	Seconds int
}

TimeSpentProfile holds approximate time spent for one profile.

type VoiceLine added in v0.2.23

type VoiceLine struct {
	Text  string
	Count int
}

VoiceLine holds a unique say-step text and its usage count.

func ParseVoiceLines added in v0.2.23

func ParseVoiceLines(content string) []VoiceLine

ParseVoiceLines scans log content for say step detail lines and returns unique texts sorted by frequency (descending), then alphabetically.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL