Code cleanup

Change-Id: I084eb212ae4a1fdbc563e686ea6c9de55fc75914
diff --git a/man/calculate_eta.Rd b/man/calculate_eta.Rd
new file mode 100644
index 0000000..5d524e4
--- /dev/null
+++ b/man/calculate_eta.Rd
@@ -0,0 +1,23 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/logging.R
+\name{calculate_eta}
+\alias{calculate_eta}
+\title{Calculate and format ETA for batch operations}
+\usage{
+calculate_eta(current_item, total_items, start_time)
+}
+\arguments{
+\item{current_item}{current item number (1-based)}
+
+\item{total_items}{total number of items to process}
+
+\item{start_time}{POSIXct start time of the operation}
+}
+\value{
+character string with formatted ETA and completion time or empty string if not calculable
+}
+\description{
+Helper function to calculate estimated time of arrival based on elapsed time
+and progress through a batch operation.
+}
+\keyword{internal}
diff --git a/man/collocationAnalysis-KorAPConnection-method.Rd b/man/collocationAnalysis-KorAPConnection-method.Rd
index 50f4a27..6b13db7 100644
--- a/man/collocationAnalysis-KorAPConnection-method.Rd
+++ b/man/collocationAnalysis-KorAPConnection-method.Rd
@@ -100,10 +100,12 @@
 \examples{
 \dontrun{
 
- # Find top collocates of "Packung" inside and outside the sports domain.
- KorAPConnection(verbose = TRUE) |>
-  collocationAnalysis("Packung", vc=c("textClass=sport", "textClass!=sport"),
-                      leftContextSize=1, rightContextSize=1, topCollocatesLimit=20) |>
+# Find top collocates of "Packung" inside and outside the sports domain.
+KorAPConnection(verbose = TRUE) |>
+  collocationAnalysis("Packung",
+    vc = c("textClass=sport", "textClass!=sport"),
+    leftContextSize = 1, rightContextSize = 1, topCollocatesLimit = 20
+  ) |>
   dplyr::filter(logDice >= 5)
 }
 
@@ -113,7 +115,8 @@
 # Note that, currently, the use of focus function disallows exactFrequencies.
 KorAPConnection(verbose = TRUE) |>
   collocationAnalysis("focus(in [tt/p=NN] {[tt/l=setzen]})",
-    leftContextSize=1, rightContextSize=0, exactFrequencies=FALSE, topCollocatesLimit=20)
+    leftContextSize = 1, rightContextSize = 0, exactFrequencies = FALSE, topCollocatesLimit = 20
+  )
 }
 
 }
diff --git a/man/corpusStats-KorAPConnection-method.Rd b/man/corpusStats-KorAPConnection-method.Rd
index 055585b..961d64b 100644
--- a/man/corpusStats-KorAPConnection-method.Rd
+++ b/man/corpusStats-KorAPConnection-method.Rd
@@ -23,7 +23,6 @@
 Fetch information about a (virtual) corpus
 }
 \examples{
-
 \dontrun{
 
 kco <- KorAPConnection()
diff --git a/man/format_duration.Rd b/man/format_duration.Rd
new file mode 100644
index 0000000..ce811c0
--- /dev/null
+++ b/man/format_duration.Rd
@@ -0,0 +1,25 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/logging.R
+\name{format_duration}
+\alias{format_duration}
+\title{Format duration in seconds to human-readable format}
+\usage{
+format_duration(seconds)
+}
+\arguments{
+\item{seconds}{numeric duration in seconds}
+}
+\value{
+character string with formatted duration
+}
+\description{
+Converts a duration in seconds to a formatted string with days, hours, minutes, and seconds.
+Used for ETA calculations and progress reporting.
+}
+\examples{
+\dontrun{
+format_duration(3661) # "01h 01m 01s"
+format_duration(86461) # "1d 00h 01m 01s"
+}
+}
+\keyword{internal}
diff --git a/man/log_info.Rd b/man/log_info.Rd
new file mode 100644
index 0000000..6e5d2c7
--- /dev/null
+++ b/man/log_info.Rd
@@ -0,0 +1,19 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/logging.R
+\name{log_info}
+\alias{log_info}
+\title{Logging utilities for RKorAPClient}
+\usage{
+log_info(v, ...)
+}
+\arguments{
+\item{v}{logical flag indicating whether to output the message}
+
+\item{...}{message components to concatenate and display}
+}
+\description{
+This module provides centralized logging functions used throughout the package
+for progress reporting and ETA calculations.
+Log informational messages with optional coloring
+}
+\keyword{internal}