garage-installer

Garage Installer - Future Development

← Back to Main README

This document tracks planned improvements, bug fixes, and future development for the Garage Installer project.

Status Legend


🎯 In Progress

Code Quality & Testing


πŸ“‹ Planned for Next Release (v0.2)

Bug Fixes & Improvements

High Priority

Medium Priority

Features


πŸ’‘ Future Roadmap (v0.3+)

Major Features

Enhancements

Developer Experience


βœ… Completed (For Reference)

These items were initially flagged as issues but have been implemented:

From REMEDIATION.md (Now Fixed)

  1. βœ… Docker permissions handling (#1)
    • User must be in docker group before running installer
    • Clear error messages if docker access is not available
    • File: src/checks/system.ts
  2. βœ… Port checking without escalation (#2)
    • Best-effort port availability checking
    • No sudo required (best-effort operation)
    • File: src/checks/system.ts
  3. βœ… SSH timeout handling (#3)
    • exec() method has configurable timeout (default 30s)
    • Async file operations throughout
    • Improved error contexts
    • File: src/ssh/connection.ts
  4. βœ… Layout version parsing (#4)
    • Dynamically parses current version from garage layout show
    • Increments version automatically
    • File: src/garage/cluster.ts (line ~368)
  5. βœ… Node ID extraction with case-insensitive regex (#5)
    • Uses /([a-f0-9]{64})/i pattern
    • Handles both uppercase and lowercase
    • File: src/garage/cluster.ts (line ~243)
  6. βœ… SSH file upload fixed (#8)
    • Uses await Deno.readFile() properly
    • Correct Uint8Array handling
    • File: src/ssh/connection.ts (line ~150)
  7. βœ… Container name exact matching (#9)
    • Uses docker ps --filter "name=^${name}$"
    • No more partial name matches
    • File: src/docker/manager.ts (line ~90)
  8. βœ… Rollback/cleanup on failure (#10)
    • CleanupManager tracks all deployments
    • Automatic cleanup offer on failure
    • Manual cleanup support
    • File: src/cleanup.ts
  9. βœ… State management and resume (#13)
    • Full state persistence in .garage-installer-state.json
    • Resume from last checkpoint
    • Phase tracking
    • File: src/state.ts
  10. βœ… Bootstrap peers configuration (#13)
    • Automatically configured after getting node IDs
    • Two-pass config deployment
    • File: src/garage/cluster.ts (updateBootstrapPeers)
  11. βœ… Configurable ports and paths (#14)
    • All ports and paths configurable
    • Constants file for defaults
    • File: src/constants.ts
  12. βœ… Progress indicators (#16)
    • Spinner UI for all long operations
    • File: src/ui/spinner.ts
  13. βœ… File logging (#17)
    • Complete audit trail in garage-installer.log
    • Structured logging with timestamps
    • File: src/logger.ts
  14. βœ… IPv6 support (#19)
    • Full IPv4/IPv6/dual-stack support
    • Smart hostname resolution
    • File: src/wizard.ts

Original Project Goals (Completed)

From project-plan.md:


Contributing

Want to work on any of these items? Here’s how:

  1. Check status - Make sure the item isn’t already in progress
  2. Discuss first - Open an issue to discuss your approach
  3. Follow conventions - Match existing code style
  4. Add tests - Include tests for new functionality
  5. Update docs - Keep documentation in sync
  6. Small PRs - Break large changes into reviewable chunks

See CONTRIBUTING.md for detailed guidelines (coming soon).


Prioritization Criteria

Features are prioritized based on:

  1. User Impact - How many users benefit?
  2. Stability - Does it fix bugs or improve reliability?
  3. Complexity - Effort required vs value delivered
  4. Dependencies - What must be done first?
  5. Community Demand - What are users asking for?

Version Planning

v0.1 (Current)

v0.2 (Next - Q1 2026)

v0.3 (Q2 2026)

v1.0 (Q3 2026)


Last Updated: November 16, 2025

← Back to Main README Documentation