diff --git a/final-build/README.md b/final-build/README.md index 9dd3731..04db0c9 100644 --- a/final-build/README.md +++ b/final-build/README.md @@ -1,6 +1,8 @@ # 최종 장비 빌드 -**릴리스 20260914-port-selector-alias-5 · Linux ARM64 · 192.168.0.223 배포 완료** +**릴리스 20260914-direct-mode-title-7 · Linux ARM64 · 192.168.0.223 배포 완료** + +동작 설정 1·2의 줄바꿈 표시를 CR·LF·CRLF 대문자로 바꾸고, 직접 연결 모드 제목의 `/ Port 1` 부분을 제거했습니다. 저장 값과 채널 선택 기능은 유지합니다. 렌더링 확인 후 웹을 배포했으며 최종 웹 백업은 `/userdata/tera-backups/direct-mode-title-20260914`입니다. 포트 선택 카드에도 별칭을 표시합니다. 긴 이름은 말줄임표로 표시하고 마우스를 올리면 전체 이름을 확인할 수 있습니다. 이 추가 웹 수정의 백업은 `/userdata/tera-backups/port-selector-alias-20260914`입니다. diff --git a/final-build/SHA256SUMS b/final-build/SHA256SUMS index 3a4df98..84ebff2 100644 --- a/final-build/SHA256SUMS +++ b/final-build/SHA256SUMS @@ -1,4 +1,4 @@ -0109367727841cc79d9cabdcb9687e97a0b51788e994c39243a72ed789de1807 frontend/tera-clone-demo-web +51bc18f451533bf0e1b1b446458f099b4a13e87db2c15d3d5dd2328acf8b95bc frontend/tera-clone-demo-web 112bcdadf04155209b1a361200163c57232427dd628fdd31d8e060b1ab49461f backend/tera-clone-demo-api b5856899698bfafb1f382a3dd45db02b034ba785d56a075ea964c937b57a48b3 backend/tera-logd ac3149f54d93ce252527606bda35dc739f1f3ad40bfb77409f16b3514d437006 backend/tera-clone-demo-alarmd diff --git a/final-build/frontend/tera-clone-demo-web b/final-build/frontend/tera-clone-demo-web index 899f0b1..b52417a 100644 Binary files a/final-build/frontend/tera-clone-demo-web and b/final-build/frontend/tera-clone-demo-web differ diff --git a/final-build/release-manifest.json b/final-build/release-manifest.json index 5e74c46..9c0f7b6 100644 --- a/final-build/release-manifest.json +++ b/final-build/release-manifest.json @@ -1,13 +1,13 @@ { - "release_id": "20260914-port-selector-alias-5", + "release_id": "20260914-direct-mode-title-7", "platform": "linux-arm64", "scope": "application-and-daemon-binaries-not-full-firmware", - "generated_at": "2026-09-14T07:17:33.9524858+00:00", + "generated_at": "2026-09-14T07:40:16.0139133+00:00", "files": [ { "path": "frontend/tera-clone-demo-web", "bytes": 13238434, - "sha256": "0109367727841cc79d9cabdcb9687e97a0b51788e994c39243a72ed789de1807", + "sha256": "51bc18f451533bf0e1b1b446458f099b4a13e87db2c15d3d5dd2328acf8b95bc", "install_path": "/usr/bin/tera-clone-demo-web", "provenance": "built-and-deployed" }, @@ -62,7 +62,7 @@ } ], "source": { - "base_commit": "8c2fe00", + "base_commit": "d790e0673775ef296ddd4093300ccd3c3c4fc952", "changes": "Release source is included with this manifest in the Git commit; baseline daemons have individual provenance above." }, "deployment": { @@ -73,11 +73,12 @@ "total": 12, "backup": "/userdata/tera-backups/operation2-telnet-20260914", "verified": "Eight binary SHA256 values match installed files; HTTP/HTTPS listeners and served workspace-tabs.js verified.", - "web_alias_backup": "/userdata/tera-backups/port-selector-alias-20260914" + "web_alias_backup": "/userdata/tera-backups/port-selector-alias-20260914", + "web_title_backup": "/userdata/tera-backups/direct-mode-title-20260914" }, "validation": { "backend": "mock store, API and portservice suites passed; CH01 SSH plus Telnet stage/apply/save/reload regression and same-interface conflict guards passed.", - "frontend": "Rendered page check passed: ASCII and HEX labels retain lowercase API values.", + "frontend": "Rendered operation 1/2 pages verified uppercase CR/LF/CRLF labels with lowercase values; direct mode page heading has no Port suffix. Relevant page rendering checks passed. Installed web SHA256 and backend readiness verified.", "javascript": "19 workspace, navigation and dashboard tests passed.", "browser": "Local Edge: port selector aliases, truncation/hover/accessibility, one-tab navigation, checkboxes and responsive layout; ASCII/HEX display with lowercase values passed.", "live": "Authenticated live API: CH01 operation 2 Telnet applied and saved (running/persistent revision 29). eth0 SSH and eth1 Telnet both listening on 10001 with shared max_clients=4. Live HTML ASCII/HEX labels confirmed. Final web hash and readiness 12/12 verified.", @@ -92,6 +93,8 @@ "Include earlier system/session/log/reauthentication improvements", "Allow same listener port across operation 1 eth0 and operation 2 eth1 in configuration validation", "Display log format labels as ASCII and HEX", - "Show aliases in port selector cards with ellipsis and full-name hover" + "Show aliases in port selector cards with ellipsis and full-name hover", + "Display newline labels as CR, LF and CRLF in both operation tabs", + "Remove Port suffix from Direct Connection Mode page and workspace title" ] } diff --git a/frontend/internal/mock/mock_data.go b/frontend/internal/mock/mock_data.go index b4b529b..2273eaa 100644 --- a/frontend/internal/mock/mock_data.go +++ b/frontend/internal/mock/mock_data.go @@ -403,7 +403,7 @@ func portPage(path string) (PageData, bool) { fixedTextField("접속(유휴) 타임아웃(ms)", "connectionTimeout", "0"), boundedNumberField("최대 세션 수", "maxClients", "4", true, "1", "4"), authenticationField(), - selectField("줄바꿈", "newline", "cr", []string{"cr", "lf", "crlf"}), + selectOptionsField("줄바꿈", "newline", "cr", []Option{{Label: "CR", Value: "cr"}, {Label: "LF", Value: "lf"}, {Label: "CRLF", Value: "crlf"}}), shortcutField("제어 단축키", "controlShortcut", "^]", "Ctrl+] 후 T/Q/B/I/? 명령을 사용합니다."), shortcutField("전환 단축키", "switchShortcut", "^T", "Reverse 모드의 현재 세션과 동시 접속 유지 상태를 확인합니다."), shortcutField("세션 종료 단축키", "quitShortcut", "^Q", "현재 터미널 세션만 종료합니다."), @@ -422,7 +422,7 @@ func portPage(path string) (PageData, bool) { fixedTextField("접속(유휴) 타임아웃(ms)", "connectionTimeout", "0"), fixedTextField("최대 세션 수 (동작 설정 1과 공유)", "maxClients", "4"), authenticationField(), - selectField("줄바꿈", "newline", "cr", []string{"cr", "lf", "crlf"}), + selectOptionsField("줄바꿈", "newline", "cr", []Option{{Label: "CR", Value: "cr"}, {Label: "LF", Value: "lf"}, {Label: "CRLF", Value: "crlf"}}), shortcutField("제어 단축키", "controlShortcut", "^]", "Ctrl+] 후 T/Q/B/I/? 명령을 사용합니다."), shortcutField("전환 단축키", "switchShortcut", "^T", "Reverse 모드의 현재 세션과 동시 접속 유지 상태를 확인합니다."), shortcutField("세션 종료 단축키", "quitShortcut", "^Q", "현재 터미널 세션만 종료합니다."), @@ -483,7 +483,7 @@ func portDebugPage(path string) (PageData, bool) { }) } - return newPage(path, "직접 연결 모드", fmt.Sprintf("직접 연결 모드 / Port %d", portID), []string{"직접 연결 모드"}, nil, []ContentBlock{ + return newPage(path, "직접 연결 모드", "직접 연결 모드", []string{"직접 연결 모드"}, nil, []ContentBlock{ { Kind: "serial-terminal", Title: "시리얼 포트 CMD 콘솔", diff --git a/frontend/web/templates/layout.html b/frontend/web/templates/layout.html index 13d4f73..6b06d34 100644 --- a/frontend/web/templates/layout.html +++ b/frontend/web/templates/layout.html @@ -7,7 +7,7 @@