58 Commits
Author SHA1 Message Date
james.maes e41534a47e Merge pull request 'ci: use shared ci-workflows Maven workflow' (#74) from ci/ci-workflows into develop
maven / build (push) Successful in 1m38s
build / maven (push) Successful in 1m38s
QRun-IO/ci-policy: ci / fork-guard (push) Skipped
QRun-IO/ci-policy: native / fork-deny (push) Skipped
QRun-IO/ci-policy: native / dotnet-0 (push) Skipped
QRun-IO/ci-policy: ci / Scoped workflow [workflow 539bec410f7926fec3ef7fabe51934a91e0248be] (push) Successful in 11s
QRun-IO/ci-policy: ci / head-profile (push) Skipped
QRun-IO/ci-policy: ci / repository-policy (push) Skipped
QRun-IO/ci-policy: native / native-result (push) Successful in 8s
QRun-IO/ci-policy: ci / application-template-0 (push) Skipped
QRun-IO/ci-policy: ci / gradle-1 (push) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (push) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (push) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (push) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (push) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (push) Skipped
QRun-IO/ci-policy: ci / node-8 (push) Skipped
QRun-IO/ci-policy: ci / node-9 (push) Skipped
QRun-IO/ci-policy: ci / node-10 (push) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (push) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (push) Skipped
QRun-IO/ci-policy: ci / source-config-13 (push) Skipped
QRun-IO/ci-policy: ci / source-config-14 (push) Skipped
QRun-IO/ci-policy: ci / android-0 (push) Skipped
QRun-IO/ci-policy: ci / original-business (push) Skipped
QRun-IO/ci-policy: ci / original-mcp (push) Skipped
QRun-IO/ci-policy: ci / original-voyage (push) Skipped
QRun-IO/ci-policy: ci / original-cli (push) Skipped
QRun-IO/ci-policy: ci / not-enrolled (push) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (push) Skipped
QRun-IO/ci-policy: ci / ci-result (push) Successful in 8s
2026-11-06 18:02:24 +00:00
james.maesandClaude Opus 5.5 0a35966498 ci: use shared ci-workflows Maven workflow
QRun-IO/ci-policy: native / fork-deny (pull_request) Skipped
QRun-IO/ci-policy: native / dotnet-0 (pull_request) Skipped
QRun-IO/ci-policy: native / native-result (pull_request) Successful in 6s
QRun-IO/ci-policy: ci / fork-guard (pull_request) Skipped
QRun-IO/ci-policy: ci / Scoped workflow [workflow 1e25bb5a243dfdcd95d4b9a4f780200ff8c8778a] (pull_request) Successful in 7s
QRun-IO/ci-policy: ci / head-profile (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy (pull_request) Skipped
QRun-IO/ci-policy: ci / application-template-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-1 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (pull_request) Skipped
QRun-IO/ci-policy: ci / node-8 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-9 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-10 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-13 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-14 (pull_request) Skipped
QRun-IO/ci-policy: ci / android-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / original-business (pull_request) Skipped
QRun-IO/ci-policy: ci / original-mcp (pull_request) Skipped
QRun-IO/ci-policy: ci / original-voyage (pull_request) Skipped
QRun-IO/ci-policy: ci / original-cli (pull_request) Skipped
QRun-IO/ci-policy: ci / not-enrolled (pull_request) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (pull_request) Skipped
QRun-IO/ci-policy: Shared Java Maven CI with Docker / secrets (pull_request) Successful in 16s
maven / build (push) Successful in 1m23s
build / maven (push) Successful in 1m23s
QRun-IO/ci-policy: Shared Java Maven CI with Docker / verify (pull_request) Successful in 1m29s
QRun-IO/ci-policy: Shared Java Maven CI with Docker / gate (pull_request) Successful in 11s
QRun-IO/ci-policy: ci / java-docker-4 (pull_request) Successful in 42m28s
QRun-IO/ci-policy: ci / ci-result (pull_request) Successful in 4s
Replace the platform-ci release callers with one caller of
KofTwentyTwo/ci-workflows maven.yaml (qqq-orb port).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:51:51 +00:00
james.maesandCodex 6a27f3d9b4 ci: align canonical shared orb workers (#69)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 01:33:03 -05:00
james.maesandCodex f80d1ac9f8 ci: delegate pipelines to shared QQQ orb
Co-Authored-By: Codex <noreply@openai.com>
2026-10-20 19:39:50 -05:00
James MaesandClaude Opus 4.8 e47cca4b81 docs: add CLAUDE.md pointer to QQQ knowledge-base dossier + hub
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 05:31:35 -05:00
james.maes c7cf55a99e chore: migrate license from AGPL-3.0 to Apache-2.0 2026-01-05 10:11:44 -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 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 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
james.maes 5aae0a85fc Style(core): add Javadoc, braces, and header spacing; partial cleanup; continue until verify is green 2025-08-09 12:54:11 -05:00