5813c5ca21
feat: use local package instead of octocrab
Release / release (push) Failing after 2m54s
2026-03-20 17:05:36 +01:00
746ed6c9e3
feat: removed openssl
Release / release (push) Failing after 3m7s
2026-03-20 16:27:27 +01:00
3e70200c66
feat: replace rsutls
Release / release (push) Failing after 3m9s
2026-03-20 16:06:12 +01:00
fbedae4159
feat: add project metadata with .gitnow.json
...
Release / release (push) Failing after 5s
Store creation time, template, and repository info in a .gitnow.json
file when projects are created via CLI. Project listing now shows
human-readable relative times (e.g. "3 days ago") and sorts by
creation date. Metadata is updated when adding repos to existing
projects and gracefully ignored for pre-existing projects.
2026-03-20 15:36:57 +01:00
be8faa6a36
feat: add goreleaser config for cross-platform releases
...
continuous-integration/drone/push Build encountered an error
Set up GoReleaser with Rust builder (cargo-zigbuild) targeting
linux/darwin x amd64/arm64, Gitea release publishing, and Homebrew
cask generation. Add mise tasks for test, release, and snapshot builds.
2026-03-20 15:22:24 +01:00
b5394a6b26
feat: add chooser file mechanism for shell directory switching
...
continuous-integration/drone/push Build encountered an error
Replace stdout-based path capture with a temporary chooser file that the
shell wrapper reads after gitnow exits. Commands that select a directory
write to the file; commands that don't (e.g. project delete) leave it
empty, so the shell only cd's when appropriate. The chooser file path
can be set via --chooser-file flag or GITNOW_CHOOSER_FILE env var.
2026-03-20 14:39:42 +01:00
681993c379
refactor: eliminate code duplication across gitnow codebase
...
continuous-integration/drone/push Build encountered an error
- Unify PostCloneCommand/PostUpdateCommand into single CommandList enum
- Add string_newtype! macro for config newtype wrappers
- Extract load_repositories() helper replacing 4 duplicated cache-or-fetch patterns
- Extract clone_repos_into() eliminating duplicated concurrent clone logic
- Merge TemplateEntry/ProjectEntry into single DirEntry struct
- Unify directory resolution and listing helpers in project command
- Simplify RepositoryMatcher, remove unused StringExt trait
2026-03-20 13:24:05 +01:00
bebb55e873
feat: add template bootstrapping for project create
...
continuous-integration/drone/push Build encountered an error
Adds --template/-t flag to `gitnow project create` that copies files
from a template directory into new projects. Templates are discovered
from ~/.gitnow/templates/ (configurable via settings.project.templates_directory).
Includes a default template with a SPEC.md scaffold.
2026-03-20 13:08:15 +01:00
ad0f29826b
feat: add project add command for cloning repos into existing projects
continuous-integration/drone/push Build encountered an error
2026-03-20 13:03:06 +01:00
fe26d71266
feat: add project command for scratch-pad multi-repo workspaces
...
continuous-integration/drone/push Build encountered an error
Adds `gitnow project` with create, delete, and open subcommands.
Create allows multi-selecting repositories to clone into a shared
project directory. Includes multi-select TUI support in interactive module.
2026-03-20 12:53:50 +01:00
38a51f3aa7
feat: add worktree / workspaces implementation
...
continuous-integration/drone/pr Build encountered an error
continuous-integration/drone/push Build encountered an error
Signed-off-by: kjuulh <contact@kjuulh.io >
2026-02-28 17:12:22 +01:00
f90dc1e8d5
feat: remove nightly features
continuous-integration/drone/pr Build encountered an error
continuous-integration/drone/push Build encountered an error
2026-02-02 14:35:51 +01:00
716adfab8b
feat: allow clone all
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-03-04 13:11:37 +01:00
d699432f14
fix(deps): update rust crate termwiz to 0.23.0
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-11 01:41:18 +00:00
2a3c4fbb83
fix(deps): update rust crate octocrab to 0.43.0
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-18 01:38:50 +00:00
5aa5702272
fix(deps): update rust crate dirs to v6
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-13 01:37:39 +00:00
84941de931
fix: use correct post clone command
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-08 22:53:22 +01:00
aa1ef7041e
fix: tests for config
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-08 22:49:13 +01:00
2f501c0efd
feat/add-post-clone-command
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2025-01-08 22:47:23 +01:00
962425c515
add ability to specify multiple commands
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-08 22:42:35 +01:00
708f8d6388
feat: add ability to specify custom command
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-01-08 22:32:39 +01:00
eb684ef8e9
chore: replace dotenv with dotenvy, a slightly more maintained version of the same library ( #50 )
...
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.front.kjuulh.io/kjuulh/gitnow/pulls/50
Co-authored-by: kjuulh <contact@kjuulh.io >
Co-committed-by: kjuulh <contact@kjuulh.io >
2025-01-07 23:21:32 +01:00
ada020e283
feat: allow ctrl+c to exit application
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-01-07 22:36:46 +01:00
15620da103
feat: add small help to see how much time is left in cache
...
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io >
2025-01-01 22:24:27 +01:00
a228ec82a3
chore: bump default cache duration to 7 days
...
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io >
2025-01-01 22:01:49 +01:00
4dd8e58122
fix(deps): update rust crate octocrab to 0.42.0
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-15 01:31:30 +00:00
ab963600f3
fix(deps): update all dependencies
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-22 00:31:58 +00:00
aa78933f0e
fix(deps): update rust crate octocrab to 0.41.0
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-01 00:34:35 +00:00
17cb06904f
feat: add update command
continuous-integration/drone/push Build is passing
2024-09-26 21:36:03 +02:00
cc70131101
feat: only do clone if not exists
continuous-integration/drone/push Build is passing
2024-09-24 08:38:13 +02:00
784c7303a5
fix(deps): update rust crate octocrab to 0.40.0
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-24 00:35:26 +00:00
b5c3c9bac9
chore: add license
...
Signed-off-by: kjuulh <contact@kjuulh.io >
2024-09-23 22:42:01 +02:00
1a2958a6e3
chore: update to gitea-client
2024-09-23 22:42:01 +02:00
1f5ad2a216
chore: add publish
2024-09-23 22:42:01 +02:00
348e448ce9
feat: use termwiz as backend as that enables a ptty, which can be cleaned up nicely
continuous-integration/drone/push Build is passing
2024-09-23 22:16:19 +02:00
f0f81f8a0b
feat: add errout for interactive for script support and atty for clean output
continuous-integration/drone/push Build is passing
2024-09-23 21:35:10 +02:00
c9aacf0ecd
feat: add clone spinner
continuous-integration/drone/push Build is passing
2024-09-23 19:45:34 +02:00
5900482b56
feat: add spinner around download
continuous-integration/drone/push Build is failing
2024-09-23 00:18:47 +02:00
96d97a8167
chore: clean up ui
continuous-integration/drone/push Build is passing
2024-09-22 16:34:20 +02:00
c2faf6d0b6
feat: spawn a subshell for session
continuous-integration/drone/push Build is passing
2024-09-22 16:25:44 +02:00
a330e4454e
feat: implement git clone
continuous-integration/drone/push Build is passing
2024-09-22 15:58:28 +02:00
bc4ebed1f7
chore: fix warnings
continuous-integration/drone/push Build was killed
2024-09-22 14:59:44 +02:00
e2be9ba59a
feat: include vhs demo
continuous-integration/drone/push Build is passing
2024-09-22 14:55:41 +02:00
5401f3707d
feat: add interactive search
continuous-integration/drone/push Build is passing
2024-09-22 14:09:10 +02:00
39e1fea36f
chore: refactor fuzzy match into own function
continuous-integration/drone/push Build is passing
2024-09-15 22:36:39 +02:00
c2dfd020bf
chore: cleanup warnings
continuous-integration/drone/push Build is passing
2024-09-15 22:12:42 +02:00
102af558f5
Actually add fuzzy matcher
2024-09-15 22:08:39 +02:00
6773122076
feat: implement naive fuzzy matcher
continuous-integration/drone/push Build is passing
2024-09-15 21:28:29 +02:00
e4d5d5302e
feat: add cache get
...
continuous-integration/drone/push Build is passing
This now introduces the `settings.cache.duration` key, which can either be false, true (default)
or a map `{days, hours, minutes}` for how long the cache should last. If the cache is expired an eager load of the repositories will be executed
Signed-off-by: kjuulh <contact@kjuulh.io >
2024-09-14 21:17:20 +02:00
0c8cf7211c
feat: send out wait
...
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io >
2024-09-14 20:46:38 +02:00