|
|
|
@@ -53,7 +53,7 @@
|
|
|
|
{"id":"wg-admin-wf1","title":"Create server and client config files","description":"Generate WireGuard configuration files for both server and client. Server config includes PublicKey and AllowedIPs. Client config includes PrivateKey, Address, DNS, Endpoint, and AllowedIPs. Use atomic writes (temp file + mv).","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T17:03:30.273615688+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T17:50:56.576191666+01:00","closed_at":"2026-01-12T17:50:56.576191666+01:00","close_reason":"Implemented WireGuard config file generation with atomic writes. Added GenerateServerConfig and GenerateClientConfig functions in internal/wireguard/config.go. Both functions use temp file + rename pattern for atomicity and set 0600 permissions.","dependencies":[{"issue_id":"wg-admin-wf1","depends_on_id":"wg-admin-o4o","type":"blocks","created_at":"2026-01-12T17:04:44.268995878+01:00","created_by":"Calmcacil"}]}
|
|
|
|
{"id":"wg-admin-wf1","title":"Create server and client config files","description":"Generate WireGuard configuration files for both server and client. Server config includes PublicKey and AllowedIPs. Client config includes PrivateKey, Address, DNS, Endpoint, and AllowedIPs. Use atomic writes (temp file + mv).","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T17:03:30.273615688+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T17:50:56.576191666+01:00","closed_at":"2026-01-12T17:50:56.576191666+01:00","close_reason":"Implemented WireGuard config file generation with atomic writes. Added GenerateServerConfig and GenerateClientConfig functions in internal/wireguard/config.go. Both functions use temp file + rename pattern for atomicity and set 0600 permissions.","dependencies":[{"issue_id":"wg-admin-wf1","depends_on_id":"wg-admin-o4o","type":"blocks","created_at":"2026-01-12T17:04:44.268995878+01:00","created_by":"Calmcacil"}]}
|
|
|
|
{"id":"wg-admin-wjj","title":"Implement restore functionality","description":"Add restore capability to load backups from /etc/wg-admin/backups/. Include backup list view, restore confirmation, and pre-restore safety backup. Handle missing backups gracefully.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T17:03:30.29166861+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T18:06:07.558190874+01:00","closed_at":"2026-01-12T18:06:07.558190874+01:00","close_reason":"Restore functionality implemented in internal/backup/restore.go. ListBackups, RestoreBackup with validation. Restore screen with selectable table. Pre-restore safety backup. ReloadWireGuard integration. Successfully completes Phase 6.","dependencies":[{"issue_id":"wg-admin-wjj","depends_on_id":"wg-admin-11o","type":"blocks","created_at":"2026-01-12T17:04:36.234546234+01:00","created_by":"Calmcacil"}]}
|
|
|
|
{"id":"wg-admin-wjj","title":"Implement restore functionality","description":"Add restore capability to load backups from /etc/wg-admin/backups/. Include backup list view, restore confirmation, and pre-restore safety backup. Handle missing backups gracefully.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T17:03:30.29166861+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T18:06:07.558190874+01:00","closed_at":"2026-01-12T18:06:07.558190874+01:00","close_reason":"Restore functionality implemented in internal/backup/restore.go. ListBackups, RestoreBackup with validation. Restore screen with selectable table. Pre-restore safety backup. ReloadWireGuard integration. Successfully completes Phase 6.","dependencies":[{"issue_id":"wg-admin-wjj","depends_on_id":"wg-admin-11o","type":"blocks","created_at":"2026-01-12T17:04:36.234546234+01:00","created_by":"Calmcacil"}]}
|
|
|
|
{"id":"wg-admin-wmn","title":"Fix parseHandshake to correctly parse compound time expressions","description":"Fix parseHandshake function in status.go to correctly parse compound time expressions like '14 hours, 24 minutes, 40 seconds ago'. Currently only parses first time unit, causing app to show incorrect handshake timing that differs from wg show output.","status":"closed","priority":1,"issue_type":"bug","owner":"Calmcacil@Raion","created_at":"2026-01-12T19:14:02.056632886+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T19:26:35.464413104+01:00","closed_at":"2026-01-12T19:26:35.464413104+01:00","close_reason":"Fixed parseHandshake to correctly parse all time units with number-unit pairing"}
|
|
|
|
{"id":"wg-admin-wmn","title":"Fix parseHandshake to correctly parse compound time expressions","description":"Fix parseHandshake function in status.go to correctly parse compound time expressions like '14 hours, 24 minutes, 40 seconds ago'. Currently only parses first time unit, causing app to show incorrect handshake timing that differs from wg show output.","status":"closed","priority":1,"issue_type":"bug","owner":"Calmcacil@Raion","created_at":"2026-01-12T19:14:02.056632886+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T19:26:35.464413104+01:00","closed_at":"2026-01-12T19:26:35.464413104+01:00","close_reason":"Fixed parseHandshake to correctly parse all time units with number-unit pairing"}
|
|
|
|
{"id":"wg-admin-wmo","title":"Create dedicated error screen with user-friendly messages and recovery options","description":"Errors are displayed but lack recovery guidance. Create error screen component that maps technical errors to user-friendly messages and provides actionable next steps. Examples: 'Permission denied' -\u003e 'Run with sudo', 'Client already exists' -\u003e 'Try different name'.","status":"in_progress","priority":2,"issue_type":"feature","owner":"Calmcacil@Raion","created_at":"2026-01-12T21:40:23.214356805+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T22:58:57.827395925+01:00"}
|
|
|
|
{"id":"wg-admin-wmo","title":"Create dedicated error screen with user-friendly messages and recovery options","description":"Errors are displayed but lack recovery guidance. Create error screen component that maps technical errors to user-friendly messages and provides actionable next steps. Examples: 'Permission denied' -\u003e 'Run with sudo', 'Client already exists' -\u003e 'Try different name'.","status":"closed","priority":2,"issue_type":"feature","owner":"Calmcacil@Raion","created_at":"2026-01-12T21:40:23.214356805+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T23:05:09.31045466+01:00","closed_at":"2026-01-12T23:05:09.31045466+01:00","close_reason":"Implemented dedicated error screen component with user-friendly messages and actionable recovery options. Error screen maps technical errors to friendly messages (e.g., 'Permission denied' -\u003e 'Run with sudo', 'Client already exists' -\u003e 'Try different name'). Added ErrMsg message type handling in main.go and updated all screens to use centralized error handling."}
|
|
|
|
{"id":"wg-admin-wod","title":"Create add client form with huh","description":"Implement form for adding new WireGuard clients using the huh library. Include fields for client name, DNS servers, and PSK toggle. Add validation for client name format, IP availability, and DNS format.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T17:03:30.272758265+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T17:56:47.982894819+01:00","closed_at":"2026-01-12T17:56:47.982894819+01:00","close_reason":"Implemented add client form using huh library with validation for client name, DNS servers, and PSK toggle. Added CreateClient function in wireguard package for key generation, IP allocation, config creation, QR code generation, and peer interface management. Updated main.go to handle 'a' key for add screen navigation.","dependencies":[{"issue_id":"wg-admin-wod","depends_on_id":"wg-admin-xum","type":"blocks","created_at":"2026-01-12T17:04:26.667835195+01:00","created_by":"Calmcacil"}]}
|
|
|
|
{"id":"wg-admin-wod","title":"Create add client form with huh","description":"Implement form for adding new WireGuard clients using the huh library. Include fields for client name, DNS servers, and PSK toggle. Add validation for client name format, IP availability, and DNS format.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T17:03:30.272758265+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T17:56:47.982894819+01:00","closed_at":"2026-01-12T17:56:47.982894819+01:00","close_reason":"Implemented add client form using huh library with validation for client name, DNS servers, and PSK toggle. Added CreateClient function in wireguard package for key generation, IP allocation, config creation, QR code generation, and peer interface management. Updated main.go to handle 'a' key for add screen navigation.","dependencies":[{"issue_id":"wg-admin-wod","depends_on_id":"wg-admin-xum","type":"blocks","created_at":"2026-01-12T17:04:26.667835195+01:00","created_by":"Calmcacil"}]}
|
|
|
|
{"id":"wg-admin-wsk","title":"Add configuration validation and syntax checking","description":"Implement validate_config_syntax() to check WireGuard config format before applying: verify [Interface] and [Peer] sections, check key format (44 base64 characters), validate IP addresses and CIDR notation, validate DNS format, ensure no duplicate public keys.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T16:27:53.159692055+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T16:38:35.611667005+01:00","closed_at":"2026-01-12T16:38:35.611667005+01:00","close_reason":"validate_config_syntax() implemented in previous task with full WireGuard config format validation: [Interface]/[Peer] sections, key format (44 base64 chars), IP/CIDR notation, DNS format, duplicate public key detection. Integrated into cmd_load_clients."}
|
|
|
|
{"id":"wg-admin-wsk","title":"Add configuration validation and syntax checking","description":"Implement validate_config_syntax() to check WireGuard config format before applying: verify [Interface] and [Peer] sections, check key format (44 base64 characters), validate IP addresses and CIDR notation, validate DNS format, ensure no duplicate public keys.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T16:27:53.159692055+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T16:38:35.611667005+01:00","closed_at":"2026-01-12T16:38:35.611667005+01:00","close_reason":"validate_config_syntax() implemented in previous task with full WireGuard config format validation: [Interface]/[Peer] sections, key format (44 base64 chars), IP/CIDR notation, DNS format, duplicate public key detection. Integrated into cmd_load_clients."}
|
|
|
|
{"id":"wg-admin-xni","title":"Update documentation with theme options","description":"Update README.md and documentation to include the new theme options (dracula, everforest) and how to switch themes using the THEME environment variable.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T19:07:40.300443242+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T19:10:22.220478311+01:00","closed_at":"2026-01-12T19:10:22.220478311+01:00","close_reason":"Documentation updated with theme options, build successful, theme switching logic verified"}
|
|
|
|
{"id":"wg-admin-xni","title":"Update documentation with theme options","description":"Update README.md and documentation to include the new theme options (dracula, everforest) and how to switch themes using the THEME environment variable.","status":"closed","priority":2,"issue_type":"task","owner":"Calmcacil@Raion","created_at":"2026-01-12T19:07:40.300443242+01:00","created_by":"Calmcacil","updated_at":"2026-01-12T19:10:22.220478311+01:00","closed_at":"2026-01-12T19:10:22.220478311+01:00","close_reason":"Documentation updated with theme options, build successful, theme switching logic verified"}
|
|
|
|
|