All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
lang
to allow setting the number format to be used when printingtimezone
to allow setting which timezone to use when reporting the time of a time entrysplit
to allow break a time entry into others with break pointsshow-client
without show-task
column headers became unalignedshow-client
that sets the reports/output of time entries to show its client, if existsToo Many Requests (code: 429)
--client
without using
--project
[
in the name makes the cli panicallow-name-for-id
and filtering on interactive mode.search-project-with-client
to set whether or not the cli should lookup projects using the
client’s name too--client
to filter projects by client when managing time entriesmockey
update and its configuration has changedHMM
and HHMM
for time inputThank you to @aVolpe for implementing new time formats as input on PR #251.
since
to be used on the time entry format to help working with timeuntil
to be used on the time entry format to help working with timego get
is not a supported option to install the cli
(#245)in
command.Thank you to @diegoquintanav for reporting and fixing the documentation on PR #245.
interactive-page-size
to set how many entries should be shown on select prompts.task quick-add
to easily create multiple tasks on a project.last
alias when deleting a time entry.Thank you to @jjnilton for fixing the issue #229 on PR #238.
duration
and estimate
of a task can be null
, and when the estimate
where null the cli was failing
with: “duration null is invalid”duration
of a project is null
, a error “duration null is invalid” was blocking the use of the
clirunClient
to mock calls to Clockfy’s APIapi.Client
(with test coverage)
hydrated
at project list
to get “enriched” projects with their custom fields, tasks and
memberships in one call, these can be accessed using the format
or json
output formats.project get
to show a project using its ID or name.edit
for a time entry that had a task to change its project, the command was failing if no
task set, because it tried to find the task from the older project in the new one.allow-archived-tags
to allow selection of archived tags.tag
on report
commands, this will filter the time entries with all the tags informed.task
commandsUpdateProject
on api.Client
to update a projectproject edit
to allow batch editing multiple projects\t
and \n
on format output will behaviour as expected--billable
and --not-billable
to report commands to filter time entries that are
billable or not respectivelyconfig init
tests were brokenreport today
was using local timezone, which created the wrong range of time for the apiapi.Client
changed into a interface to easy testingdebug
dropped in favor of log-level
to allow a finer control of the output for reporting
bugs.Client.WorkspaceUsers
was not paginating over the results, this created bugs on config init
and user list
make dist
was building all system to the same fileThank you to @mhogerheijde for fixing the issue #204.
bool2str
substituted with a map to appease deepsource.ioin
command on interactive mode was exiting when the user tried to start a timer on a project
were they don’t have direct access to (only by their group). This is a bug on the API, but a
fix was done to not block the users.main
.golang-lint
as a Github Action on every PR.json
, yaml
and pad
add to all golang template formatters.docs/
to site/
to free docs folder for actual documentation.cmd/*
and internal/output/*
into the new locations as stated on project layoutcmdutil.Factory
interface to work as a “service locator” so sharing some states, behaviours
and “services” can be easier.config --init
changed to config init
to better organized the commands logic.report
commands could fail to list time entries closer to midnight because of timezone
differences.edit-multiple
was not updating time entries without interactive mode.clone
command was using the start time of the copied time entry to close the current one
instead of the start time of new one being created.manageEntry
refactored to not have as many control flagsapi/client.go
will have stack traces.task edit
command allows changing a existing task and changing its status.task delete
command allows removing a existing task.task done
command is a helper for task edit --done
.task add
command now accepts assignees
and estimate
for task creationend
argument of report
command accepts the alias yesterday
for previous date.end
argument of report
command accepts the aliases now
and today
for current date.show-task
config were hiding the description column for table report format.report
command.README
were out of date with current commands and outputs.show
and report
were too long.log
subcommand removed (deprecated since v0.28.0)log in-progress
subcommand removed (deprecated since v0.29.0)report
subcommand allows calls using the alias log
--random-color
when creating a project, to auto-generate a color for the project.Thank you to @NoF0rte for these improvements to the CLI.
task add
and task list
to manage tasks on projectsclient add
and client list
to manage clientsproject add
create projectsproject list
has new parameter clients
to filter only the projects related to the
clients informed.Thank you to @NoF0rte for these improvements to the CLI.
manual
subcommand was allowing creation of open time entries.show
subcommand has its parameter as optional, and shows current time entry by default when the
parameter is omitted.report
subcommand has its parameters as optional, and use today
as value when none is set.log in-progress
subcommand is deprecated in favor of show
/show current
log
subcommand deprecated in favor of report
report
now allows to set only one date of the range, in this situation it will treat
start and end date as being the same.report today
to show only the time entries from today, with report
optionsreport yesterday
to show only the time entries from yesterday, with report
optionsreport last-month
was failing to create a valid range time because it was not truncated to 0
hours.formatTimeEntry
renamed into printTimeEntry
, and simplified to just call printTimeEntries
with a list containing the time entry informed.go.mod
updated to 1.17config
subcommand.report
subcommands now have a description
flag to filter time entries that contains text on
its description.duration-formatted
and
duration-float
, that do sum all durations of the time entries and print only the sum, formatted
as time or as “floaty-hour”, respectivelyreport
subcommands which required pagination on the requests to the api were not doing so, the
time entry list shown by this command was incomplete.println
in the code breaking the component.AskForDateTime
report
subcommands were showing only the time not the date when the time entry was created.--quiet
help was wrong, it said “print as json”, but it prints only the id.show
subcommand prints details about time entries without having to list of the time entries of
a given date.edit
, edit-multiple
, show
, clone
support “^n” expression to select a time entry to act
on, “^0” is the same as “current”, “^1” is the same as “last”, “^2” chooses the time entry before
the last one, etc.md
(markdown) format to print time entriesout
subcommand was not setting the user to look on ending the time entry.GetUsersHydratedTimeEntries
was not telling the api to return hydrated data.mask-invoiced
and mark-not-invoiced
created to allow users to set this
information using the cli.last
and current
aliases were failing to find and select the right time entry, it is a problem
with the old api for getting “recent time entries”, fixed by @zerodaherotask
flagshow-task
that sets the reports/output of time entries to show its task, if existsgolang.org/x/crypto/ssh/terminal
was deprecated, substituted by golang.org/x/term
dto.TimeEntryImpl
were not being used.changed
function is the same as using Flags.Changed
, changed to use just the laterhydrated
parameter on “get time entry” endpoint instead of getting details individuallyedit-multiple
without interactive mode were not working with the allow-name-for-id
flag.--interactive
flag now describes how to disable it (suggestion from #115)reports
package renamed to internal/output
, to prevent usage from other packages and solve ambiguity
with report
command and report api
(to come)allow-project-name
now will be called allow-name-for-id
to account for other entities that would
benefit from using their names instead of their idsmanual
and in
commands now support the use of --project
, --description
, --when
and --when-to-close
flags besides existing positional arguments (now optional even without interactive mode).when
, when-to-close
, description
, project
and tag
edit
command were resetting the start time to “now” if the user didn’t set the --when
flag.when
and when-to-close
flags on edit
help had the wrong description.clone
should create a open time entry by default.delete
command accepts multiple ids instead of just one.in
and clone
commands were starting at 0001-01-01 because the default value of the flag was not being read.README
now contains updated help output.edit-multiple
help should be capitalized.edit-multiple
allows the user to edit all properties (except for the time interval) of multiple time entries
simultaneously. when not in interactive mode the user can choose exactly which properties to change and to keep.addFlagsForTimeEntryCreation
to add flags used to create time entries, addFlagsForTimeEntryEdit
for flags used on edition, and
fillTimeEntryWithFlags
to replicated the flag values into the time entry.end-at
on edit subcommand will be removed in favor of when-to-close
to be consistent with other subcommands.tags
on many subcommands will be removed in favor of tag
to imply that its one by flag.github.com/AlecAivazis/survey
updated to the latest version.README
updated to show new configurations.in
, clone
and manual
will show a new “None” option on the projects list on the
interactive mode if the workspace allows time entries without projects.allow-incomplete
allows the user to set if they want to create “incomplete time entries”
or to validated then before creation. Flag --allow-incomplete
and environment variable
CLOCKIFY_ALLOW_INCOMPLETE
can be used for the same purpose. by default time entries will be
validated.in
and clone
when creating an “open” time entry will not validate if the workspace
requires a project or not, allowing the creation of open incomplete/invalid time entries, similar
to the browser application.newEntry
function changed to manageEntry
and will allow a callback to deal with the filled and
validated time entry instead of always creating a new one, that way same code that were duplicated
between it and the edit
command can be united.no-closing
configuration was removed, because was not used anymore.report last-day
, this command will list time entries from the last day the user worked.report last-week-day
, this command will look for the last day were the user should
have worked (based on the new config workweek-days
) and list the time entries for that day.workweek-days
for the user to set which days of the week they work. it can be set
interactively.workspaces
command is now named workspace
, workspaces
still supportedworkspace
default print format now shows the workspace marked as “default”project list
can print the projects as JSON and CSV.project list
command default print format shows the client name and idfish
, bash
and zsh
for subcommands and flag name’sremove
to command delete
v1
version to get tags available to a workspace.api.Client.Workspaces
renamed to api.Client.GetWorkspaces
to follow pattern used on other
functions.config
, config set
and config init
combined to be only one command config
github.com/spf13/cobra
updated to latest possible current version to use completion improvements
not yet releasedconfig init
command.--token
help was not showing the right env var name.brew install lucassabreu/tap/clockify-cli
delete
command to remove a existing time entry from a workspace.edit
command support to interactive mode.edit
command was removing all data from time-entry if the flag to fill the field was not being set.in
and manual
command were showing a error “Project '' informed was not found”, even
when no project id/name is informed, this is now fixed.clone
command now allow to change the project and description on the
time entry creation, interactive mode already had this possibilityarchived
on project list
to list archived projectsallow-project-name
that, when enabled, allow the user to the project
name (or parts of it) to be used where the project id is asked.clone
sub-command was not asking to confirm the tags when the original time entry already
had some.clone
command now will respect flags --tags
and --when-to-close
.version
to allow a quick way to know which version is installedreport
now supports this-week
and last-week
as time range aliases
listing respectively all entries which start this week, and all entries that happened
on previous week.--debug
is used.report
command default output (table) with show in which day the times entries were made.clone
sub-command was not working because the no-closing
viper config was being
connected with a non-existing --no-closing
flag in the in
sub-command, that does
not exist anymore.manual
that will allow to create “completed” time entries
in a more easy way.--when-to-close
on in
and clone
to set close time for the
time entry being started (if wanted).clone
sub-command allows the flag --no-closing
and will have the same flags as
in
to set start and end time (if wanted)in
sub-command will always stops time entries that are open in the moment of the
sub-command call.--trello-token
and --github-token
were removed because they are not
currently used and may give false impressions about the clinewEntry
function that they both used.in clone
to be just clone
config
command can print the “global” parameters in json
or yaml
config
now accepts a argument, which is the name of the parameter,
when informed only this parameter will be printedCLOCKIFY_WROKSPACE
as env var for workspace, the right name is
CLOCKIFY_WORKSPACE
golint
warningssnapcraft
package only requires networkGetCurrentUser
in favor of GetMe
to be closer to the APIs formatin
, log
and report
now don’t require you to inform a “user-id”, if none is set,
than will get the user id from the token used to access the apime
command returns information about the user who owns the token used to access
the clockify’s api--fill-missing-dates
, will set end time as equal
to start time, so the duration will be 0 seconds--no-closing
being ignoredclone
was keeping previous time intervalcmd/common.go
workspaces/<workspace-id>/tags/<tag-id>
does not exist anymore, instead the
api.Client
will get all tags of the workspace (api.Client.GetTags
) and filter the response
to find the tag by its id.clockify-cli report
parameter --fill-missing-dates
, was not workingclockify-cli report --fill-missing-dates
when this parameters is set, if there
are dates from the range informed, will be created “stub” entries to better show
that are missing entries.api.Client
now supports getting one specific time entry from a workspace,
without the need to paginate through all time entries to find it (GetTimeEntry
function).clockify-cli report
was not getting all pages from the period, implemented
support for pagination and to get “all pages” at once into Client.Log
and
Client.LogRange
--help
output as it is nowuser
and project
are not
automatically provided by the “time-entries” endpoint, unless sending
an extra parameter hydrated=true
, and user
is not provided anymore, so
now we find it using the user id from the function filterlog
commands, where the previous api url is not available
anymore, now using v1/workspace/{workspace}/user/{user}/times-entries
go.mod
updatedQueryAppender
v1/user
) in the API client..nvimrc
added to provide spell checksnap
installation, so configuration file can be usedpublish
to true
so it will be sent to snapcraft
clockify-cli
clockify-cli report
implemented to generate bigger exports. CSV, JSON,
gofmt
and table formats allowed in this command.log
command will the sorted starting from the oldest
time entry.goreleaser
to manage binary and releases of the commandclockify-cli in
asks user about new entry information when interactive
is
enabledclockify-cli config init
allows to start a fresh setup, creating a
configuration fileclockify-cli config set
updates/creates one configuration key into the
configuration fileclockify-cli in
commands now allow more flexible time format inputs, can be:
hh:mm, hh:mm:ss, yyyy-mm-dd hh:mm or yyyy-mm-dd hh:mm:ssclockify-cli out
implemented, it will close any pending time entry,
and show the last entry info when closing it with successclockify-cli in clone
implemented, to allow creation of new time
entries based on existing ones, it also close pending ones, if anyclockify-cli project list
was implemented, it allows to list the
projects of a workspace, format the return to table, json, and just id. Helps
with script automationCLOCKIFY_TOKEN
,
CLOCKIFY_WORKSPACE
and CLOCKIFY_USER_ID
instead of using the command flagsclockify-cli tags
created, to list workspace tagsclockify-cli in
implemented, to allow creation of new time entries,
it also close pending ones, if anyclockify-cli edit <id>
implemented, to allow updates on time entries,
including the in-progress one using the id: “current--debug
option to allow better understanding of the requestsclockify-cli log in-progress
implemented, with options to format the
output, and in the TimeEntry format, instead of TimeEntryImplclockify-cli log
implemented, with options to format the output,
will require the user for nowdto
created to hold all payload objectsapi.Client
to call Clockfy’s APIclockify-cli workspaces
created, with options to format the outputclockify-cli workspaces users
created, with options to format the
output to allow retrieving the user’s ID