59 Commits
Author SHA1 Message Date
james.maesandCodex 74f4b88a54 fix: honor non-interactive template defaults and Windows paths (#71)
* fix: honor non-interactive template defaults and Windows paths

Return NOT_FOUND for unknown templates without prompting. Preserve interactive fallback and validate non-interactive overrides.

Co-Authored-By: Codex (GPT-6) <noreply@openai.com>

* fix: resolve remote template URLs on Windows

Windows rejects HTTPS URLs as filesystem paths before Git can clone them. Fall through to supported Git URL validation when the local path probe is invalid.

Co-Authored-By: Codex <noreply@openai.com>

---------

Co-authored-by: Codex (GPT-6) <noreply@openai.com>
2026-10-30 10:54:31 -05:00
james.maesandCodex d84a5783bf ci: use shared native worker on main (#70)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 17:07:07 -05:00
james.maes deafa64779 chore: migrate license from AGPL-3.0 to Apache-2.0 2026-01-05 10:11:43 -06:00
james.maes b5086fbd63 Merge branch 'develop' v0.2.1 2026-01-04 19:43:39 -06:00
james.maes dd275cb9fe chore: bump version to 0.2.1 for next development cycle 2026-01-04 19:34:13 -06:00
james.maes 25927df071 Merge develop into main for v0.2.0 release v0.2.0 2026-01-04 19:22:05 -06:00
james.maes 8ac4fdf2e1 feat(core): add doctor command and dependency pre-flight checks
- Add `qctl doctor` command to check Java, Maven, Git, Docker
- Add pre-flight dependency checks before running post-gen hooks
- Cross-platform support (Windows/Linux/macOS)
2026-01-04 19:13:29 -06:00
james.maes 386e6caecf fix: read version from properties file for native image compatibility 2026-01-04 18:09:38 -06:00
james.maes 04914eaf2d docs: update documentation for E2E testing infrastructure
- Add testing section to CLAUDE.md and README.md
- Update architecture.md with Testing Architecture section
- Create docs/testing.md with fixture and harness documentation
- Document __VARNAME__ path syntax for CI compatibility
2026-01-04 17:30:24 -06:00
james.maes 73c271c201 feat(qqq): add structured error handling with suggestions
Add TemplateRenderException constructors for undefined variable errors
with suggestions. Refactor InitCommand/ListCommand to return Integer
exit codes. Fix TransformExecutor and TemplateManifest for schema v2.
2026-01-04 12:12:08 -06:00
james.maes bc93243f6b fix(template): use __VAR__ syntax in paths for CI compatibility
Rename fixture directories from $packagePath to __packagePath__ to
prevent shell/Maven interpretation. TemplateEngine now converts
__VARNAME__ to $VARNAME before Velocity rendering.
2026-01-04 12:07:10 -06:00
james.maes a2ec447003 test(integration): add comprehensive E2E tests for init command
Add 35 tests covering variable substitution, computed variables,
directory transforms, merge mode, and edge cases. Includes test
harness and 8 fixture templates for offline testing.
2026-01-04 11:57:42 -06:00
james.maes abc118dbe5 feat(qqq): add --merge mode for selective regeneration
Implements Story #26 with include/exclude patterns, interactive
conflict resolution, and file backups.

Closes #26
2026-01-03 21:21:40 -06:00
james.maes 5005b8e5fa docs: update session state for story #25 completion 2026-01-03 21:11:42 -06:00
james.maes 30e124dde5 feat(qqq): add structured error handling with suggestions
- Add SuggestionEngine using Levenshtein distance for fuzzy matching
- Add TemplateError with categories mapped to exit codes
- Add ErrorFormatter for consistent ANSI-colored output
- Integrate did-you-mean suggestions in template commands
- Add --verbose flag for stack trace output
2026-01-03 21:10:32 -06:00
james.maes daea5e66b3 docs: update session state for Story #24 completion 2026-01-03 21:01:54 -06:00
james.maes a2e85f7f93 feat(qqq): add prompt validation with retry loop (#24)
- Add PromptValidation record for validation rules (pattern, length, range, enum)
- Add PromptValidator with support for required, pattern, length, range, and enum validation
- Update PromptRunner to validate and re-prompt on failure
- Validate --var CLI overrides, fallback to interactive prompt if invalid
- Add ConsoleUI methods for validation feedback (error, success, warning)
- Add 20 unit tests for PromptValidator

Closes #24
2026-01-03 21:00:41 -06:00
james.maes e14565a277 feat(qqq): add TemplateRegistry abstraction for Voyage mock API
Story #23 - prepares for Voyage API integration:
- TemplateRegistry interface for template listing/download
- GitHubTemplateRegistry wraps existing TemplatesHub
- MockTemplateRegistry with embedded template data
- ListCommand/InitCommand refactored to use registry
- Added --refresh flag to bypass cache
2026-01-03 20:52:43 -06:00
james.maes 5a967f072f feat(qqq): implement Velocity template engine with computed vars and transforms
Stories #18-21 complete:
- Apache Velocity replaces Handlebars for QQQ consistency
- StringTool with $str.camel(), pascal(), replace() helpers
- Computed variables ($str.replace($packageName, '.', '/'))
- Transform executor for rename/delete operations
- Manifest schema v2 with minimumQctlVersion check
2026-01-03 20:45:06 -06:00
james.maes a71af51f47 feat: add native-image reflection for Velocity and verbatim file handling 2026-01-03 20:42:36 -06:00
james.maes 1380b18652 docs: update CLAUDE.md and add session state for continuity 2025-12-31 08:28:31 -06:00
james.maes 334133af71 fix: remove accidentally committed binary artifacts 2025-12-31 08:24:37 -06:00
KofTwentyTwo a7abd429fe chore(aur): update PKGBUILD to v0.0.2 2025-12-31 08:12:59 -06:00
KofTwentyTwo 932f4d8e34 chore(scoop): update manifest to v0.0.2 2025-12-31 08:12:42 -06:00
james.maes 674adedcba fix(ci): use macos-15 for Intel builds v0.0.2 2025-12-31 07:41:00 -06:00
james.maes 18a3377ea7 fix(ci): repair broken release workflow
- Move native build to profile (fixes -Pnative flag)
- Fix Docker artifact download paths
- Split package updates: Homebrew to tap, Scoop/AUR via PRs
- Fix SHA replacement to work on subsequent releases
- Skip native builds on PRs for faster CI
2025-12-31 07:25:06 -06:00
james.maes 5a42f7b41e build: implement CI-friendly versioning with revision property v0.0.1 2025-12-31 06:42:14 -06:00
james.maes bdb5833be2 chore: bump version to 0.0.1 for initial release 2025-12-31 06:28:10 -06:00
james.maes f751b2eb4e refactor: reorganize repository structure
- Move design docs to docs/
- Move packaging files to packaging/
- Create GitHub issues and milestones for tracking
- Update workflow and README references
2025-12-31 06:23:24 -06:00
james.maes b4adabecfe docs: update CLAUDE.md and TODO.md with session progress 2025-12-30 20:55:35 -06:00
james.maes 418f09fea1 refactor(qqq): make init command interactive with ConsoleUI
- Add ConsoleUI for centralized console I/O
- InitCommand now prompts for template and directory
- Template defaults to new-qqq-application
- PromptRunner uses ConsoleUI for consistency
2025-12-30 20:50:42 -06:00
james.maes 759f40d61e fix(cli): add version provider to qqq subcommand 2025-12-30 20:27:06 -06:00
james.maes 608e807704 feat(cli): implement version flag with build metadata
Add VersionProvider to display version, build time, and git commit.
2025-12-30 20:24:09 -06:00
james.maes ec52f64c49 docs: update CLAUDE.md and TODO.md with distribution info 2025-12-30 20:15:56 -06:00
james.maes c2f619798b docs: add release workflow and distribution info to README 2025-12-30 20:13:59 -06:00
james.maes fe4883c966 feat(dist): add Docker, Scoop, and AUR distribution 2025-12-30 20:10:50 -06:00
james.maes fb10e15ef2 feat(brew): add Homebrew formula with auto-update on release 2025-12-30 20:05:08 -06:00
james.maes 98f4a470d3 fix(ci): use macos-15 runner (macos-13 deprecated) 2025-12-30 19:54:12 -06:00
james.maes 514cd3d5ae docs: add TODO with project roadmap 2025-12-30 19:48:22 -06:00
james.maes 618f09e5f0 fix: remove unused import, add README 2025-12-30 19:47:22 -06:00
james.maes a25309b75d feat(qqq): add init and list commands for template scaffolding
- Add qqq init command with hub-based template discovery
- Add qqq list command to display available templates
- Add Handlebars templating with native image support
- Add GitHub Actions workflow for multi-platform builds
- Add ExitCodes constants, cleanup duplicate Javadoc
- Remove native profile from qctl-core (only qctl-cli builds)
2025-12-30 19:43:32 -06:00
james.maes 8028f9b101 build(ide): updated 2025-12-29 06:47:25 -06:00
james.maes 29e0e8c1f4 chore(license): update to AGPL-3.0 with QRun-IO copyright 2025-12-25 19:39:06 -06:00
james.maes 44ecc8793d docs: Standardize README 2025-12-24 14:21:42 -06:00
james.maes 67478867d9 ci: Add GitHub release configuration 2025-12-24 12:44:44 -06:00
james.maes 12e4a0355b Build: add initial native build support and configuration setup
- Introduced `native-maven-plugin` configuration in `qctl-cli` for native image generation.
- Added reflection configuration files for native image requirements.
- Implemented GraalVM validation, build scripts, and environment checks in `scripts/`.
- Added tests for `TokenStore`, CLI authentication commands, and publish functionality.
- Registered SPI plugins for modules (`qbit`, `qqq`, `qrun`, `qstudio`).
- Documented native build process in `NATIVE-BUILD.md`.
2025-08-09 17:53:14 -05:00
james.maes 65c3883c45 Style: add canonical Javadoc flowerbox format example to design documents 2025-08-09 16:25:19 -05:00
james.maes 2afa12cb6c Style: update Checkstyle scan scope and normalize formatting; add constants and Javadoc in tests 2025-08-09 16:22:17 -05:00
james.maes ba1d5b19ea Style: Removed files from target directories from git 2025-08-09 15:59:42 -05:00
james.maes 29118d637c Style: add Javadoc, constants, and normalize formatting across modules
- Add Javadoc for public methods and classes in core and shared modules.
- Introduce reusable constants for calculations (e.g., BYTES_PER_KB).
- Normalize header spacing and brace placement.
- Update Cache, ConfigLoader, and ApiClient classes for readability and maintainability.
2025-08-09 15:55:38 -05:00