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.
2.8 KiB
Interactive Wizards
kportal includes wizards for adding, editing, and removing port forwards from the running UI.
⌨️ Quick Reference
| Key | Action |
|---|---|
n |
Add new forward |
e |
Edit selected forward |
d |
Delete forwards |
➕ Add Forward Wizard
Press n from the main view to start the wizard.
Steps
- Context - Select Kubernetes context
- Namespace - Select namespace
- Resource Type - Choose pod (prefix), pod (selector), or service
- Resource - Enter prefix, selector, or select service
- Remote Port - Enter port on the resource
- Local Port - Enter local port (validates availability)
- Confirm - Review, optionally add an alias, and toggle HTTP logging
Navigation
| Key | Action |
|---|---|
↑↓ / j/k |
Navigate options |
Enter |
Confirm and proceed |
Esc |
Go back / Cancel |
Ctrl+C |
Cancel immediately |
h |
Toggle HTTP traffic logging (confirmation step, when alias not focused) |
Tab |
Switch focus between alias field and buttons (confirmation step) |
✏️ Edit Forward Wizard
Press e on a selected row to edit it. The wizard reuses the add flow with values
pre-filled. The local-port availability check skips the forward being edited, so
keeping the same local port is always allowed. Advanced httpLog settings
(logFile, includeHeaders, maxBodySize, filterPath) defined in YAML are
preserved when toggling httpLog with h.
🗑️ Delete Forward Wizard
Press d from the main view.
Navigation
| Key | Action |
|---|---|
↑↓ / j/k |
Navigate |
Space |
Toggle selection |
a |
Select all |
n |
Deselect all |
Enter |
Confirm deletion |
Esc |
Cancel (does not confirm deletion) |
🎯 Resource Selection
Pod by Prefix
Enter app name prefix to match pods:
nginxmatchesnginx-deployment-abc123postgresmatchespostgres-statefulset-0
Pod by Selector
Use Kubernetes label syntax:
app=nginxapp=nginx,env=prod
Matching pods are shown in real-time.
Service
Select from discovered services in the namespace.
🔄 Auto Hot-Reload
Changes are applied automatically:
- Wizard writes to
.kportal.yamlatomically - File watcher detects change (~100ms)
- Manager reloads and starts forward
- UI updates
Error Handling
The wizards handle:
- Cluster unreachable - allows manual entry
- Port conflicts - shows which process is using the port
- Invalid selectors - real-time validation
- Duplicate ports - prevents conflicts
🐛 Troubleshooting
Wizard not appearing
Verify cluster connectivity:
kubectl cluster-info
Port validation delayed
Port checks run asynchronously. Wait briefly after typing.
Changes not visible
Check:
.kportal.yamlwas written correctly- No validation errors in file
- kportal process is running