@bobschlowinskii/clicraft 0.4.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ # Backup and restore instances
2
+
3
+ ## Description
4
+ Add the ability to backup and restore Minecraft instances.
5
+
6
+ ## Features
7
+ - `clicraft backup [name]` - Create a backup of the current instance
8
+ - `clicraft restore <backup>` - Restore from a backup
9
+ - `clicraft backup list` - List available backups
10
+ - Configurable backup location (default: `~/.clicraft/backups/`)
11
+ - Option to include/exclude worlds, resource packs, etc.
12
+
13
+ ## Implementation Notes
14
+ - Use zip/tar for compression
15
+ - Store metadata (date, instance name, MC version) in backup
16
+ - Consider incremental backups for large instances
@@ -0,0 +1,21 @@
1
+ # Crash log analysis
2
+
3
+ ## Description
4
+ Help users diagnose crashes by analyzing crash reports and logs.
5
+
6
+ ## Features
7
+ - `clicraft logs` - Show recent log output
8
+ - `clicraft logs --crash` - Find and display latest crash report
9
+ - `clicraft diagnose` - Analyze crash for common issues
10
+ - Detect common problems:
11
+ - Mod conflicts
12
+ - Missing dependencies
13
+ - Java version issues
14
+ - Out of memory
15
+ - Incompatible mod versions
16
+
17
+ ## Implementation Notes
18
+ - Parse `crash-reports/` and `logs/latest.log`
19
+ - Build knowledge base of common crash patterns
20
+ - Could integrate with AI for more complex analysis
21
+ - Suggest fixes based on detected issues
@@ -0,0 +1,15 @@
1
+ # Rollback to previous mod version
2
+
3
+ ## Description
4
+ Allow users to rollback mods to a previous version if an update causes issues.
5
+
6
+ ## Features
7
+ - `clicraft rollback <mod>` - Rollback to previous version
8
+ - `clicraft rollback <mod> <version>` - Rollback to specific version
9
+ - Keep version history in mcconfig.json
10
+ - Option to list available versions before rollback
11
+
12
+ ## Implementation Notes
13
+ - Store previous version info when upgrading
14
+ - May need to keep old .jar files or re-download
15
+ - Consider how many versions to track (configurable?)
@@ -0,0 +1,16 @@
1
+ # Server management utilities
2
+
3
+ ## Description
4
+ Add utilities for managing Minecraft servers beyond just launching.
5
+
6
+ ## Features
7
+ - `clicraft server whitelist <add|remove|list> [player]` - Manage whitelist
8
+ - `clicraft server ops <add|remove|list> [player]` - Manage operators
9
+ - `clicraft server ban <add|remove|list> [player]` - Manage bans
10
+ - `clicraft server properties [key] [value]` - View/edit server.properties
11
+ - `clicraft server status` - Check if server is running, player count
12
+
13
+ ## Implementation Notes
14
+ - Parse and modify server.properties, whitelist.json, ops.json, banned-players.json
15
+ - For status, could check if port is in use or parse logs
16
+ - Consider RCON integration for live commands
package/CHANGELOG.md CHANGED
@@ -2,6 +2,60 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.0.0] - 2026-02-09
6
+
7
+ ### Added
8
+ - **Automatic dependency installation**
9
+ - Mods with required dependencies are now installed automatically
10
+ - Configure with `clicraft config set autoInstallDeps true/false`
11
+ - Skip for single install with `--no-deps` flag
12
+
13
+ - **Upgrade `--check` flag**
14
+ - `clicraft upgrade --check` shows available updates without installing
15
+ - Summarizes up-to-date, outdated, incompatible, and errored mods
16
+
17
+ - **Modpack import**
18
+ - `clicraft import <file.mrpack>` imports Modrinth modpacks
19
+ - Creates new instance from modpack or imports into existing
20
+ - Extracts overrides and downloads all mod files
21
+
22
+ - **Resource pack and shader support**
23
+ - `clicraft search <query> --resourcepacks` searches resource packs
24
+ - `clicraft search <query> --shaders` searches shaders
25
+ - `clicraft install <slug> --resourcepacks` installs to resourcepacks/
26
+ - `clicraft install <slug> --shaders` installs to shaderpacks/
27
+
28
+ - **Shell completions**
29
+ - `clicraft completions bash` generates bash completions
30
+ - `clicraft completions zsh` generates zsh completions
31
+ - `clicraft completions fish` generates fish completions
32
+
33
+ - **Java version detection**
34
+ - `clicraft info` shows Java version and compatibility status
35
+ - `clicraft launch` warns if Java version is incompatible
36
+ - Automatic version requirement detection based on Minecraft version
37
+
38
+ - **Instance-aware search filtering**
39
+ - Search automatically filters by Minecraft version and mod loader when run from an instance directory
40
+ - Use `-i, --instance <path>` to specify an instance explicitly
41
+ - Use `--any` flag to ignore filtering and search all versions
42
+ - Flags `-m` and `--loader` override instance defaults
43
+
44
+ - **Upgrade command keywords**
45
+ - `clicraft upgrade mods` — Update all mods directly
46
+ - `clicraft upgrade loader` — Update mod loader directly
47
+ - `clicraft upgrade minecraft` — Update Minecraft version directly
48
+ - `clicraft upgrade config` — Update config format directly
49
+
50
+ ### Changed
51
+ - **Renamed search version flag** from `-v, --version` to `-m, --mc-version` to avoid conflict with global `--version` flag
52
+ - **Refactored documentation** — All docs rewritten to be concise and direct
53
+
54
+ ### Fixed
55
+ - **Typo in version option** — "curent" → "current"
56
+ - **Search `--limit` validation** — Now shows error for non-numeric input instead of HTTP 400
57
+ - **Tilde expansion in paths** — `~/path` now correctly expands to home directory in search `-i` flag
58
+
5
59
  ## [0.4.6] - 2026-02-06
6
60
 
7
61
  ### Added
@@ -0,0 +1,309 @@
1
+ import { program } from 'commander';
2
+
3
+ // Generate shell completions for bash, zsh, and fish
4
+ export function generateCompletions(shell) {
5
+ const commands = [
6
+ 'search', 'create', 'install', 'uninstall', 'import',
7
+ 'auth', 'launch', 'info', 'upgrade', 'config', 'alias'
8
+ ];
9
+
10
+ const loaders = ['fabric', 'forge', 'quilt', 'neoforge'];
11
+ const authActions = ['login', 'logout', 'switch', 'status'];
12
+ const configActions = ['get', 'set', 'list', 'reset'];
13
+ const upgradeKeywords = ['mods', 'loader', 'minecraft', 'config'];
14
+
15
+ switch (shell) {
16
+ case 'bash':
17
+ console.log(generateBashCompletions(commands, loaders, authActions, configActions, upgradeKeywords));
18
+ break;
19
+ case 'zsh':
20
+ console.log(generateZshCompletions(commands, loaders, authActions, configActions, upgradeKeywords));
21
+ break;
22
+ case 'fish':
23
+ console.log(generateFishCompletions(commands, loaders, authActions, configActions, upgradeKeywords));
24
+ break;
25
+ default:
26
+ console.log(`Unknown shell: ${shell}`);
27
+ console.log('Supported shells: bash, zsh, fish');
28
+ console.log('\nUsage:');
29
+ console.log(' clicraft completions bash >> ~/.bashrc');
30
+ console.log(' clicraft completions zsh >> ~/.zshrc');
31
+ console.log(' clicraft completions fish > ~/.config/fish/completions/clicraft.fish');
32
+ }
33
+ }
34
+
35
+ function generateBashCompletions(commands, loaders, authActions, configActions, upgradeKeywords) {
36
+ return `# clicraft bash completion
37
+ _clicraft() {
38
+ local cur prev words cword
39
+ _init_completion || return
40
+
41
+ local commands="${commands.join(' ')}"
42
+ local loaders="${loaders.join(' ')}"
43
+ local auth_actions="${authActions.join(' ')}"
44
+ local config_actions="${configActions.join(' ')}"
45
+ local upgrade_keywords="${upgradeKeywords.join(' ')}"
46
+
47
+ case $prev in
48
+ clicraft)
49
+ COMPREPLY=( $(compgen -W "$commands -v --version -h --help" -- "$cur") )
50
+ return
51
+ ;;
52
+ search)
53
+ # No completions for search query
54
+ return
55
+ ;;
56
+ install|uninstall)
57
+ # Complete with mod slugs from config if in instance directory
58
+ if [[ -f mcconfig.json ]]; then
59
+ local mods=$(grep -oP '"slug":\\s*"\\K[^"]+' mcconfig.json 2>/dev/null)
60
+ COMPREPLY=( $(compgen -W "$mods" -- "$cur") )
61
+ fi
62
+ return
63
+ ;;
64
+ upgrade)
65
+ COMPREPLY=( $(compgen -W "$upgrade_keywords" -- "$cur") )
66
+ return
67
+ ;;
68
+ auth)
69
+ COMPREPLY=( $(compgen -W "$auth_actions" -- "$cur") )
70
+ return
71
+ ;;
72
+ config)
73
+ COMPREPLY=( $(compgen -W "$config_actions" -- "$cur") )
74
+ return
75
+ ;;
76
+ --loader)
77
+ COMPREPLY=( $(compgen -W "$loaders" -- "$cur") )
78
+ return
79
+ ;;
80
+ -i|--instance)
81
+ _filedir -d
82
+ return
83
+ ;;
84
+ esac
85
+
86
+ case $cur in
87
+ -*)
88
+ case \${words[1]} in
89
+ search)
90
+ COMPREPLY=( $(compgen -W "-l --limit -m --mc-version --loader -i --instance --any -r --resourcepacks -s --shaders --verbose -h --help" -- "$cur") )
91
+ ;;
92
+ install)
93
+ COMPREPLY=( $(compgen -W "-i --instance -f --force --no-deps -r --resourcepacks -s --shaders --verbose -h --help" -- "$cur") )
94
+ ;;
95
+ uninstall)
96
+ COMPREPLY=( $(compgen -W "-i --instance -f --force --verbose -h --help" -- "$cur") )
97
+ ;;
98
+ upgrade)
99
+ COMPREPLY=( $(compgen -W "-i --instance -f --force -c --check --verbose -h --help" -- "$cur") )
100
+ ;;
101
+ create)
102
+ COMPREPLY=( $(compgen -W "-p --path -f --force --verbose -h --help" -- "$cur") )
103
+ ;;
104
+ launch)
105
+ COMPREPLY=( $(compgen -W "-i --instance -h --help" -- "$cur") )
106
+ ;;
107
+ import)
108
+ COMPREPLY=( $(compgen -W "-i --instance -f --force --verbose -h --help" -- "$cur") )
109
+ ;;
110
+ *)
111
+ COMPREPLY=( $(compgen -W "-h --help" -- "$cur") )
112
+ ;;
113
+ esac
114
+ return
115
+ ;;
116
+ esac
117
+ }
118
+
119
+ complete -F _clicraft clicraft`;
120
+ }
121
+
122
+ function generateZshCompletions(commands, loaders, authActions, configActions, upgradeKeywords) {
123
+ return `#compdef clicraft
124
+ # clicraft zsh completion
125
+
126
+ _clicraft() {
127
+ local -a commands
128
+ commands=(
129
+ 'search:Search for Minecraft mods on Modrinth'
130
+ 'create:Create a new Minecraft instance'
131
+ 'install:Install mods, resource packs, or shaders'
132
+ 'uninstall:Uninstall a mod from the instance'
133
+ 'import:Import a modpack (.mrpack)'
134
+ 'auth:Manage Minecraft accounts'
135
+ 'launch:Launch the Minecraft instance'
136
+ 'info:Show instance information'
137
+ 'upgrade:Upgrade mods, Minecraft version, or mod loader'
138
+ 'config:Manage CLIcraft settings'
139
+ 'alias:Manage command aliases'
140
+ )
141
+
142
+ _arguments -C \\
143
+ '-v[Show the current version]' \\
144
+ '--version[Show the current version]' \\
145
+ '-h[Show help]' \\
146
+ '--help[Show help]' \\
147
+ '1: :->command' \\
148
+ '*:: :->args'
149
+
150
+ case $state in
151
+ command)
152
+ _describe 'command' commands
153
+ ;;
154
+ args)
155
+ case $words[1] in
156
+ search)
157
+ _arguments \\
158
+ '-l[Number of results]:limit:' \\
159
+ '--limit[Number of results]:limit:' \\
160
+ '-m[Minecraft version]:version:' \\
161
+ '--mc-version[Minecraft version]:version:' \\
162
+ '--loader[Mod loader]:loader:(fabric forge quilt neoforge)' \\
163
+ '-i[Instance path]:instance:_files -/' \\
164
+ '--instance[Instance path]:instance:_files -/' \\
165
+ '--any[Ignore instance filtering]' \\
166
+ '-r[Search resource packs]' \\
167
+ '--resourcepacks[Search resource packs]' \\
168
+ '-s[Search shaders]' \\
169
+ '--shaders[Search shaders]' \\
170
+ '--verbose[Enable verbose output]' \\
171
+ '*:query:'
172
+ ;;
173
+ install)
174
+ _arguments \\
175
+ '-i[Instance path]:instance:_files -/' \\
176
+ '--instance[Instance path]:instance:_files -/' \\
177
+ '-f[Force reinstall]' \\
178
+ '--force[Force reinstall]' \\
179
+ '--no-deps[Skip dependencies]' \\
180
+ '-r[Install as resource packs]' \\
181
+ '--resourcepacks[Install as resource packs]' \\
182
+ '-s[Install as shaders]' \\
183
+ '--shaders[Install as shaders]' \\
184
+ '--verbose[Enable verbose output]' \\
185
+ '*:mod slug:'
186
+ ;;
187
+ uninstall)
188
+ _arguments \\
189
+ '-i[Instance path]:instance:_files -/' \\
190
+ '--instance[Instance path]:instance:_files -/' \\
191
+ '-f[Skip confirmation]' \\
192
+ '--force[Skip confirmation]' \\
193
+ '--verbose[Enable verbose output]' \\
194
+ '*:mod:'
195
+ ;;
196
+ upgrade)
197
+ _arguments \\
198
+ '-i[Instance path]:instance:_files -/' \\
199
+ '--instance[Instance path]:instance:_files -/' \\
200
+ '-f[Force upgrade]' \\
201
+ '--force[Force upgrade]' \\
202
+ '-c[Check only]' \\
203
+ '--check[Check only]' \\
204
+ '--verbose[Enable verbose output]' \\
205
+ '*:target:(mods loader minecraft config)'
206
+ ;;
207
+ import)
208
+ _arguments \\
209
+ '-i[Instance path]:instance:_files -/' \\
210
+ '--instance[Instance path]:instance:_files -/' \\
211
+ '-f[Overwrite existing]' \\
212
+ '--force[Overwrite existing]' \\
213
+ '--verbose[Enable verbose output]' \\
214
+ '*:packfile:_files -g "*.mrpack"'
215
+ ;;
216
+ auth)
217
+ _arguments \\
218
+ '-f[Skip confirmation]' \\
219
+ '--force[Skip confirmation]' \\
220
+ '1:action:(login logout switch status)'
221
+ ;;
222
+ config)
223
+ _arguments \\
224
+ '1:action:(get set list reset)' \\
225
+ '*:args:'
226
+ ;;
227
+ esac
228
+ ;;
229
+ esac
230
+ }
231
+
232
+ _clicraft "$@"`;
233
+ }
234
+
235
+ function generateFishCompletions(commands, loaders, authActions, configActions, upgradeKeywords) {
236
+ return `# clicraft fish completion
237
+
238
+ # Disable file completion by default
239
+ complete -c clicraft -f
240
+
241
+ # Commands
242
+ complete -c clicraft -n '__fish_use_subcommand' -a 'search' -d 'Search for Minecraft mods on Modrinth'
243
+ complete -c clicraft -n '__fish_use_subcommand' -a 'create' -d 'Create a new Minecraft instance'
244
+ complete -c clicraft -n '__fish_use_subcommand' -a 'install' -d 'Install mods, resource packs, or shaders'
245
+ complete -c clicraft -n '__fish_use_subcommand' -a 'uninstall' -d 'Uninstall a mod from the instance'
246
+ complete -c clicraft -n '__fish_use_subcommand' -a 'import' -d 'Import a modpack (.mrpack)'
247
+ complete -c clicraft -n '__fish_use_subcommand' -a 'auth' -d 'Manage Minecraft accounts'
248
+ complete -c clicraft -n '__fish_use_subcommand' -a 'launch' -d 'Launch the Minecraft instance'
249
+ complete -c clicraft -n '__fish_use_subcommand' -a 'info' -d 'Show instance information'
250
+ complete -c clicraft -n '__fish_use_subcommand' -a 'upgrade' -d 'Upgrade mods, Minecraft, or loader'
251
+ complete -c clicraft -n '__fish_use_subcommand' -a 'config' -d 'Manage CLIcraft settings'
252
+ complete -c clicraft -n '__fish_use_subcommand' -a 'alias' -d 'Manage command aliases'
253
+
254
+ # Global options
255
+ complete -c clicraft -s v -l version -d 'Show the current version'
256
+ complete -c clicraft -s h -l help -d 'Show help'
257
+
258
+ # search options
259
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -s l -l limit -d 'Number of results'
260
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -s m -l mc-version -d 'Minecraft version'
261
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -l loader -a '${loaders.join(' ')}' -d 'Mod loader'
262
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -s i -l instance -ra '(__fish_complete_directories)' -d 'Instance path'
263
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -l any -d 'Ignore instance filtering'
264
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -s r -l resourcepacks -d 'Search resource packs'
265
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -s s -l shaders -d 'Search shaders'
266
+ complete -c clicraft -n '__fish_seen_subcommand_from search' -l verbose -d 'Enable verbose output'
267
+
268
+ # install options
269
+ complete -c clicraft -n '__fish_seen_subcommand_from install' -s i -l instance -ra '(__fish_complete_directories)' -d 'Instance path'
270
+ complete -c clicraft -n '__fish_seen_subcommand_from install' -s f -l force -d 'Force reinstall'
271
+ complete -c clicraft -n '__fish_seen_subcommand_from install' -l no-deps -d 'Skip dependencies'
272
+ complete -c clicraft -n '__fish_seen_subcommand_from install' -s r -l resourcepacks -d 'Install as resource packs'
273
+ complete -c clicraft -n '__fish_seen_subcommand_from install' -s s -l shaders -d 'Install as shaders'
274
+ complete -c clicraft -n '__fish_seen_subcommand_from install' -l verbose -d 'Enable verbose output'
275
+
276
+ # uninstall options
277
+ complete -c clicraft -n '__fish_seen_subcommand_from uninstall' -s i -l instance -ra '(__fish_complete_directories)' -d 'Instance path'
278
+ complete -c clicraft -n '__fish_seen_subcommand_from uninstall' -s f -l force -d 'Skip confirmation'
279
+ complete -c clicraft -n '__fish_seen_subcommand_from uninstall' -l verbose -d 'Enable verbose output'
280
+
281
+ # upgrade options
282
+ complete -c clicraft -n '__fish_seen_subcommand_from upgrade' -s i -l instance -ra '(__fish_complete_directories)' -d 'Instance path'
283
+ complete -c clicraft -n '__fish_seen_subcommand_from upgrade' -s f -l force -d 'Force upgrade'
284
+ complete -c clicraft -n '__fish_seen_subcommand_from upgrade' -s c -l check -d 'Check only'
285
+ complete -c clicraft -n '__fish_seen_subcommand_from upgrade' -l verbose -d 'Enable verbose output'
286
+ complete -c clicraft -n '__fish_seen_subcommand_from upgrade' -a '${upgradeKeywords.join(' ')}' -d 'Upgrade target'
287
+
288
+ # import options
289
+ complete -c clicraft -n '__fish_seen_subcommand_from import' -s i -l instance -ra '(__fish_complete_directories)' -d 'Instance path'
290
+ complete -c clicraft -n '__fish_seen_subcommand_from import' -s f -l force -d 'Overwrite existing'
291
+ complete -c clicraft -n '__fish_seen_subcommand_from import' -l verbose -d 'Enable verbose output'
292
+ complete -c clicraft -n '__fish_seen_subcommand_from import' -ra '(__fish_complete_suffix .mrpack)' -d 'Modpack file'
293
+
294
+ # auth subcommands
295
+ complete -c clicraft -n '__fish_seen_subcommand_from auth' -a '${authActions.join(' ')}'
296
+
297
+ # config subcommands
298
+ complete -c clicraft -n '__fish_seen_subcommand_from config' -a '${configActions.join(' ')}'
299
+
300
+ # create options
301
+ complete -c clicraft -n '__fish_seen_subcommand_from create' -s p -l path -ra '(__fish_complete_directories)' -d 'Instance path'
302
+ complete -c clicraft -n '__fish_seen_subcommand_from create' -s f -l force -d 'Overwrite existing'
303
+ complete -c clicraft -n '__fish_seen_subcommand_from create' -l verbose -d 'Enable verbose output'
304
+
305
+ # launch options
306
+ complete -c clicraft -n '__fish_seen_subcommand_from launch' -s i -l instance -ra '(__fish_complete_directories)' -d 'Instance path'`;
307
+ }
308
+
309
+ export default { generateCompletions };