Files
lukaszraczylo 62483f9475 docs: sync website + README + wizard guide + changelog with new features
docs/index.html (kportal.raczylo.com):
  - Features grid gains Bulk Generate, Sensitive Header Redaction,
    Verified Installer cards; Headless card subtext clarified to
    'logs to stderr'.
  - Keybindings: 'a' -> 'n' for Add (matches real binding).
  - Quick Install card notes SHA-256 + optional cosign verification
    and DRY_RUN / SKIP_COSIGN env vars.
  - New Bulk Generate usage tile with --dry-run hint; Headless tile
    redirects stderr.
  - HTTP Traffic Logging card mentions automatic header redaction
    and the wizard 'h' toggle.

README.md:
  - install.sh note expanded with DRY_RUN/SKIP_COSIGN table.
  - HTTP Traffic Logging section gains 'Toggling per-forward
    logging', 'Header redaction', and 'Advanced configuration'
    examples.
  - Headless mode clarified to log to stderr (2>kportal.log).
  - Troubleshooting note on accepted context-name characters.

WIZARD_USAGE.md:
  - Add binding corrected from 'a' to 'n'; 'e' (edit) row added.
  - 'h' httpLog toggle and Tab focus switch documented.
  - New 'Edit Forward Wizard' section noting same-port allowed and
    advanced httpLog preserved.
  - Esc-cancels-delete behaviour clarified.

CHANGELOG.md: [Unreleased] populated with Added / Changed / Fixed
entries for this session's user-facing work, dated 2026-05-06.

.kportal.yaml example: inline 'httpLog: true' comment on one
forward as a usage hint.
2026-05-06 15:03:35 +01:00

4.3 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased - 2026-05-06

Added

  • kportal generate --context=NAME [--config=PATH] [--dry-run] subcommand for interactive bulk-add of forwards from a cluster. Walks namespace multi-select, service multi-select, and starting-port input; assigns consecutive local ports; emits one forward per port for multi-port services. Non-TCP ports are skipped and already-configured services are greyed out.
  • HTTP log toggle in the add/edit wizard. Pressing h on the confirmation step toggles httpLog: true/false for the forward being added or edited. Advanced httpLog configuration set in YAML (logFile, includeHeaders, maxBodySize, filterPath) is preserved across edits.
  • HTTP log header redaction. When httpLog.includeHeaders: true, sensitive headers (Authorization, Cookie, Set-Cookie, X-Api-Key, X-Auth-Token, X-Csrf-Token, Proxy-Authorization, X-Access-Token, plus any header whose name contains token/secret/password/apikey) have their values replaced with [REDACTED]. The header name is preserved. Always on, no opt-out.
  • install.sh SHA-256 checksum verification. Every install verifies the downloaded archive against the release's checksums.txt. If cosign is on PATH, the checksums file's keyless cosign signature is also verified against the shared-actions reusable workflow identity. Set DRY_RUN=1 to preview, SKIP_COSIGN=1 to bypass cosign.

Changed

  • Headless mode (kportal -headless) now sends both structured and stdlib logs to stderr by default instead of io.Discard. -v still controls level (debug vs info), not destination.
  • Context-name validator now permits common kubeconfig identifiers containing @, ., :, or / (e.g. admin@home, user@cluster.example.com, GKE dotted names, EKS ARNs).
  • Edit-mode wizard now allows keeping the same local port. The port-availability check no longer rejects a forward's own port when editing it.

Fixed

  • Esc in the delete-confirmation dialog now cancels instead of confirming deletion (previously a data-loss bug).
  • Manager.Stop() is now idempotent. Sequential or concurrent double-Stop no longer panics.
  • Cosign cert-identity is now pinned to the actual signing workflow (lukaszraczylo/shared-actions/.github/workflows/go-release.yaml@refs/heads/main); previously cosign verification always failed.
  • Internal concurrency races in the forward manager (currentConfig access under lock, rest.Config copied before mutation, ForwardWorker.Stop wrapped in sync.Once, Reload no longer kills the health checker). No user-visible flag, but resolves panics some users hit.

0.1.5 - 2025-11-23

Added

  • Interactive TUI built with Bubble Tea
  • Real-time health check monitoring with grace period
  • Toggle forwards on/off with Space key
  • Error display below table showing detailed error messages
  • Version display in UI title
  • Complete log suppression for clean UI (klog included)
  • Automatic error clearing when connection recovers

Changed

  • Replaced tview with Bubble Tea for better architecture
  • Removed artificial 10-second delay before health checks
  • Improved thread safety with message-passing architecture
  • Enhanced status indicators (Active ●, Starting ○, Reconnecting ◐, Error ✗)

Fixed

  • Deadlock issues with tview UI
  • Logs covering the legend in interactive mode
  • Re-enable hang bug when toggling forwards
  • Race conditions in status updates

0.1.0 - 2025-11-22

Added

  • Initial release
  • Multi-context and multi-namespace support
  • Automatic pod restart handling with prefix matching
  • Label selector support for dynamic pod selection
  • Hot-reload configuration watching
  • Exponential backoff retry logic (max 10s)
  • Port conflict detection with PID information
  • kftray JSON to kportal YAML converter
  • Alias support for cleaner display names
  • Health check system
  • Verbose and interactive modes
  • Configuration validation
  • Comprehensive test suite