v1.12.1 전달 이후의 v1.12.2·v1.12.3 변경을 함께 반영합니다.
dpworldapp 공유 DB(device/protocol)·계약·원자적 쓰기 계약은 무변경.
■ v1.12.2 — 신규/빈 디바이스 DB-init 안정화 (fail-soft)
펌웨어 업데이트 직후 동기화 문제로 device_config/protocol_config 가 비어
있을 때, 웹이 그 값을 생성·덮어써 dpworldapp 의 시딩을 선점하는 문제를 차단.
협력사 DB-init fix(2ca0ac1)를 포함하되, 미초기화 시 예외를 던져 fresh device
를 중단시키던 부분을 fail-soft 로 대체(렌더는 적용, DB 쓰기만 skip).
- db_manager: config_initialized(key) 단일 판정 신규
(존재 AND 비어있지 않은 dict; 빈 {} = 미초기화).
- apply_engine: 미초기화 시 raise 제거 → 렌더/networkctl 은 적용하되 DB 미러
쓰기만 skip(journal warn). _write_db / _write_db_restore 동일 적용.
_lkg_bookkeeping: all-absent baseline 의 LKG 승격 방지(fresh device).
- server: 미초기화 응답 통일 — GET 204, POST 409 not_initialized(code 필드).
- netmodel(F3): 비-dict / malformed WIFI_SSID 내성 — crash 대신 안전 degrade.
- migrations: contract_canonical 을 device / protocol 로 분리, 각 키가 시딩될
때까지 독립 defer(seed-ordering). 기존 통합 플래그 하위호환 유지.
- frontend(F2): device/protocolConfigAbsent 가드 — 로드 시 부재(204)였던
키를 Save All 로 생성하지 않도록 차단하고 안내 토스트 표시.
■ v1.12.3 — Wi-Fi AP 채널 선택 + 네트워크 즉시적용 검증
- ap_engine: DFS 인지 채널 선택 — STA 가 DFS/no-IR 5GHz(52–64·100–144)에
있어도 AP 가 맹목 추종하지 않고 비-DFS 채널 선택(2.4GHz STA 는 ch1–13 만
추종). parse_iw_link_beacon_int 추가 — MCC(AP≠STA 채널) 시 hostapd
beacon_int 을 STA BSS 와 일치(QCA6490 "STA/AP BI must match").
AP 상태에 라디오-다운 사유(country_unset / channel_dfs / mcc_bi) 추가.
- ap_renderer: render_hostapd 에 beacon_int 파라미터 추가(기본 100).
- 즉시적용: 기존 systemctl start 방식 유지 — 디바이스 실측으로 재확인,
관련 내부 재작업 시도는 검토 후 원복(순변화 없음).
■ 기타
- api.js: 저장 실패 시 서버 errors 메시지를 사용자에게 노출.
- 문서/버전: VERSION·constants.js → v1.12.3, RELEASE-NOTES §0,
DELIVERABLE-MANIFEST, BSP-INTEGRATION 갱신.
- MemoryMax 48M→128M(v1.11.16) 주석 정합화(fw_routes / watchdog / server).
Folds in the previously-uncommitted v1.12.0 changes (install path
/opt/web-configurator -> /usr/lib/web-configurator; default port 8080 -> 9090),
since v1.12.0 was never committed or tagged. The diff vs v1.11.16 therefore
covers v1.12.0 + v1.12.1 together; CHANGELOG.md keeps the logical split.
v1.12.1:
- Telemetry Uplink: switch dpworldapp cloud telemetry egress between Wi-Fi and
Ethernet using host routes (/32) only; no dpworldapp/OS network config touched;
async apply + watchdog self-heal + management-interface protection.
- Routing transparency: per-server actual egress interface + pre-apply warnings
(read-only; no forwarding/NAT opened).
- Full source review (41 items): honesty/safety/structure fixes. dpworldapp
shared DB (device/protocol), atomic-write contract, and types unchanged.
- Remove superseded pages ssid.js/network.js (aliased to wifi.js/server-setting.js).
- Remove legacy deploy/nginx.conf sample (optional; excluded per integration guide).
See CHANGELOG.md and RELEASE-NOTES.md for the full per-version breakdown.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- web-configurator.service: MemoryMax 48M -> 128M (support-bundle+UI 동시 사용 시
OOM-kill 위험 제거; 장비 RAM 3.4GB 대비 3.7%, 누수 방지 캡 유지)
- BSP 통합 가이드 정비: 네트워크-적용 하드닝본을 /usr/bin/dpworld-network-apply.sh
원본 교체(BSP 베이킹)하는 것을 1차 방식으로 명시. .service.d override 드롭인은
라이브 후적용(over-the-top) fallback으로 정리
- 최신 UI(v1.11.15: 사이드바 System/Firmware 그룹 + monitor 아이콘) 동기화
- 배포물 flat 레이아웃(루트=배포물), 내부 참조/산출물 정리