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.
Thank you to @davidsneighbour for the implementing the improvements on #283.
Thank you to @calebtrepowski for the implementing the improvements on #282.
Thank you to @Sekky61 for the information on Issue #280.
report commands, and choose which page to
showlast alias on show, clone, edit and edit-multiple would select future time entries if they
existed, now only time entries started before now will be consideredThank you to @melluh for fixing the bug on PR #275.
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 listmake 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 currentlog subcommand deprecated in favor of reportreport 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.AskForDateTimereport 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/termdto.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 tagedit 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 deletev1 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 configgithub.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-clidelete 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.reportcommand 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 cloneconfig command can print the “global” parameters in json or yamlconfig 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_WORKSPACEgolint 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.goworkspaces/<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-entriesgo.mod updatedQueryAppenderv1/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 snapcraftclockify-cliclockify-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