Skip to content

Enable beta testing program with beta channel toggle and feedback collection #236

@hessius

Description

@hessius

Overview

Enable a beta testing program for MeticAI that allows users to opt-in to test pre-release features before they reach the stable channel. This includes infrastructure for beta image distribution, settings UI for opt-in/opt-out, and feedback collection.

Goals

  1. Allow early testing of features before stable release
  2. Collect structured feedback from beta testers
  3. Enable easy rollback to stable if issues arise
  4. Keep beta separate from stable for Watchtower users

Implementation Plan

1. Docker Image Tagging Strategy

Current State

  • ghcr.io/hessius/meticai:latest - auto-pulled by Watchtower

Proposed Tags

  • ghcr.io/hessius/meticai:latest - Stable releases only
  • ghcr.io/hessius/meticai:beta - Beta/pre-release versions
  • ghcr.io/hessius/meticai:vX.Y.Z-beta.N - Specific beta versions
  • ghcr.io/hessius/meticai:vX.Y.Z - Specific stable versions

CI Changes

  • Modify build-publish.yml to tag beta releases
  • Tag pattern: beta tag + version-specific vX.Y.Z-beta.N
  • Only tag latest for stable releases (non-beta versions)

2. Settings UI for Beta Opt-in

New Settings Section

  • Add "Beta Testing" section in Settings view
  • Toggle switch: "Enable beta updates"
  • Info text explaining what beta means and risks
  • Display current channel (stable/beta) and version

Backend Changes

  • Add beta_channel setting to settings service
  • Store beta preference in settings.json
  • API endpoint to check/set beta preference

3. Update Mechanism

When user enables beta:

  • Update docker-compose.yml image tag from latest to beta
  • Or: Generate appropriate docker-compose override file
  • Trigger container restart with new image

When user disables beta:

  • Revert image tag to latest
  • Pull and restart with stable version

4. Watchtower Compatibility

For users with Watchtower enabled:

  • Beta users: Watchtower monitors beta tag
  • Stable users: Watchtower monitors latest tag
  • Tag switching triggers Watchtower to pull correct version

5. Feedback Collection

Option A: GitHub Discussions/Issues Integration

  • In-app "Send Feedback" button (visible in beta mode)
  • Pre-fill issue template with:
    • Version info (beta version number)
    • System info (OS, browser)
    • User description field
  • Opens GitHub issue creation page or uses API to create

Option B: Direct GitHub Issue Creation via API

  • Button in settings/about page: "Report Beta Feedback"
  • Modal with:
    • Category (bug/feature/question)
    • Description textarea
    • Optional log attachment
  • Creates GitHub issue via MCP or GitHub API
  • Auto-labels with beta-feedback

Option C: Simple Form

  • Google Form or similar embedded in app
  • Lower friction but less structured

Recommended: Option B (API-based GitHub issues) for seamless integration

6. Beta Notification Banner

  • Show dismissible banner when running beta version
  • Include link to report issues
  • Show "New beta available" when newer beta is released
  • Show "Stable version available - switch back" when stable catches up

UI Mockup

┌─────────────────────────────────────────┐
│ ⚙️ Settings                              │
├─────────────────────────────────────────┤
│                                         │
│ 🧪 Beta Testing                         │
│ ─────────────────────────────           │
│                                         │
│ Enable beta updates         [  ○━━━━]   │
│ Get early access to new features        │
│ before they're released.                │
│                                         │
│ ⚠️ Beta versions may contain bugs.      │
│ You can switch back to stable anytime.  │
│                                         │
│ Current: v2.1.0-beta.3 (beta)           │
│                                         │
│ [📝 Send Beta Feedback] [📋 View Changelog] │
│                                         │
└─────────────────────────────────────────┘

Acceptance Criteria

  • CI publishes beta tagged images alongside version-specific beta tags
  • Settings UI shows beta toggle with clear explanation
  • User can switch between stable and beta channels
  • Switching channels triggers image pull and container restart
  • Feedback button visible in beta mode creates GitHub issues
  • Watchtower respects channel choice
  • Clear rollback path documented

Notes

  • Consider whether beta should be a different branch or just a different tag
  • May want to implement feature flags for granular beta testing
  • Consider beta user telemetry (opt-in) for crash reporting

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions