34 Commits
Author SHA1 Message Date
LiHaohuaandClaude Opus 4.6 3a1da4f654 Update submodule URLs: SSH → HTTPS, move to CardputerZero org
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-13 22:05:13 +08:00
LiHaohuaandClaude Opus 4.6 f6827835c0 docs: add publish workflow flowchart to README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-12 14:20:57 +08:00
LiHaohuaandClaude Opus 4.6 4c1f3d4170 chore: remove tauri app and frontend code
Only czdev CLI remains in the workspace. Tauri GUI was unused and
causing CI failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 18:46:35 +08:00
LiHaohuaandClaude Opus 4.6 cf285bd874 chore: remove tauri build workflow (broken, not needed for czdev)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 18:43:53 +08:00
LiHaohuaandClaude Opus 4.6 6088038698 fix: update emulator submodule (enable lvgl demos on Linux)
Fixes: undefined symbol lv_demo_keypad_encoder

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 18:39:06 +08:00
LiHaohuaandClaude Opus 4.6 83a29467f4 feat(czdev): publish reads store section from app-builder.json
- Uploads screenshots + icon + meta.json alongside deb
- Requires store.screenshots in app-builder.json
- title auto-read from app_name field

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 18:27:00 +08:00
LiHaohuaandClaude Opus 4.6 1694eb8637 feat(czdev): use git+lfs for publish instead of HTTP LFS API
- Requires git-lfs installed (checked at publish start)
- Uses git init + fetch --filter=blob:none + push (SSH)
- No full clone, no LFS download, minimal network
- Fixes LFS verify 403 issues with HTTP proxies
- scope reverted to public_repo

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 17:48:55 +08:00
LiHaohuaandClaude Opus 4.6 54bb15f55d fix(czdev): fix proxy priority and skip LFS verify on 403
- Read ALL_PROXY first (socks5 works better in China)
- LFS verify is best-effort (some org configs reject OAuth tokens)
- Revert scope back to public_repo (sufficient after org approval)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 16:17:43 +08:00
LiHaohuaandClaude Opus 4.6 79432a67f9 feat(czdev): upload deb via LFS batch API instead of raw git blob
Creates proper LFS pointer in the git tree so .deb files are stored
in LFS storage, keeping the repo lightweight.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 16:02:04 +08:00
LiHaohuaandClaude Opus 4.6 f64a3c8d67 feat(czdev): add i18n with rust-i18n + sys-locale
Auto-detects system language (en/zh-CN/zh-TW).
Translations in crates/czdev/locales/*.yml, compiled into binary.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 15:50:36 +08:00
LiHaohuaandClaude Opus 4.6 1493007450 docs: simplify install instructions, recommend target/release/czdev
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 15:16:19 +08:00
LiHaohuaandClaude Opus 4.6 34e3f771cd feat(czdev): add bump command + install docs in README
czdev bump: queries published versions, shows next patch version.
README: added install instructions and publish workflow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 15:14:29 +08:00
LiHaohuaandClaude Opus 4.6 ca6d6fbfc4 chore(czdev): set OAuth App client_id for CZDev CLI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
czdev-v0.1.0
2026-05-09 15:07:36 +08:00
LiHaohuaandClaude Opus 4.6 544f75c33b feat(czdev): add login, publish, unpublish commands
- czdev login: GitHub OAuth Device Flow authentication
- czdev publish: upload .deb to CardputerZero/packages via PR
  - Preflight: .desktop check, email match, version bump check
- czdev unpublish: ownership-verified removal PR
- release-czdev.yml: cross-compile for macOS/Linux/Windows

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-09 15:03:06 +08:00
LiHaohuaandClaude Opus 4.6 e9d54237d1 fix: update emulator submodule — LCD offset fix for non-Retina
Picks up ee05edf which adds SDL_RenderSetLogicalSize to fix LCD
rendering position on non-HiDPI displays.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 13:39:11 +08:00
LiHaohuaandClaude Opus 4.6 9ff2a1fd73 docs: add emulator screenshots and merge quickstart into README
Move the desktop quickstart guide content into the main README so new
users see it immediately. Add NC2000, APPLauncher, and Hello example
emulator screenshots. Add dedicated EMULATOR.md for detailed usage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 11:55:25 +08:00
LiHaohuaandClaude Opus 4.6 17805e3c04 docs: add Chinese and Japanese quickstart guides for czdev CLI
Adds QUICKSTART_ZH.md and QUICKSTART_JA.md covering the full desktop
dev workflow (doctor → run → watch → deploy). Links added to the
English quickstart and README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-07 20:00:16 +08:00
LiHaohuaandClaude Opus 4.7 b01dac3ac9 Update submodules: NC2000 LVGL keyboard + real-time pacing, emu Fn/Sym layers
- apps/nc2000 @ e79f18a — dispatch host SDL events into handle_key_wayback
  and drive RunTimeSlice off wall clock instead of the vsync-throttled
  lv_tick, so NC2000 actually sees keystrokes and runs at the device's
  5.12MHz CPU rate.
- emulator    @ 6f86d75 — translate Fn/Sym modifier layers on the on-screen
  keyboard (and on physical keys while a modifier is held), matching the
  skin silkscreen (F1..F12 on digits, ▲▼◄► on F/X/Z/C, etc).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 00:47:06 +08:00
LiHaohuaandClaude Opus 4.7 a616511ed6 Add four czdev-runnable app demos
- apps/applaunch: prebuilt-emulator-app manifest that reuses the
  libAPPLaunch.dylib the emulator's own CMake produces from the
  UserDemo submodule. Zero edits to UserDemo.
- examples/lvgl_widgets: 3-line lv_demo_widgets() call, proving the
  force-loaded demo symbols from the emulator are reachable.
- examples/lvgl_music: lv_demo_music() — LVGL's built-in music UI.
- examples/key_echo: lv_demo_keypad_encoder() — keyboard-driven
  navigation demo covering the "pressing keys does something" case.

hello_cz gets a trivial text tweak.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00
LiHaohuaandClaude Opus 4.7 a7b3e34387 czdev: cmake_args / cmake_target / env passthrough + prebuilt-emulator-app runtime
Three small features so more app types can plug into the desktop loop
without touching emulator or UserDemo sources:

- Manifest gains cmake_args (extra -DX=Y) and cmake_target fields.
  NC2000 uses both: passes ENABLE_PORT_LVGL=ON, points the SDK/LVGL
  paths via ${CZ_SDK_DIR}/${CZ_LVGL_DIR} placeholders, and builds the
  nc2000_lvgl target instead of the default bin_name.
- Manifest gains `env` with ${APP_DIR} substitution so apps can
  declare runtime env vars (e.g. NC2000_ROM_DIR pointing at the
  checked-out ROMs directory).
- New `runtime: "prebuilt-emulator-app"` for apps whose library is
  built by the emulator's own CMake (e.g. APPLaunch via the UserDemo
  submodule). czdev skips cmake for these and uses the pre-staged
  file directly. Also fixed a same-path copy truncating the prebuilt
  dylib to 0 bytes on macOS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00
LiHaohuaandClaude Opus 4.7 f12cf51e16 SDK: sync lv_conf demo flags, expose demos/ include, add NO_KBD_STUBS opt-out
sdk/include/lv_conf.h mirrors the emulator's (music + keypad_encoder
demos enabled) so apps using the SDK see the same LVGL feature set
the host provides.

sdk/cmake/CZApp.cmake gains:
- demos/ header search path so apps can #include
  "widgets/lv_demo_widgets.h" etc.
- NO_KBD_STUBS option for apps that want to resolve the host's real
  lv_sdl_keyboard_create at dlopen time (instead of the weak inert
  stub). Default weak stub stays for the 90% of apps that don't care
  about keyboard input.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00
LiHaohuaandClaude Opus 4.7 dd46c57179 Update submodules: pin emulator to ci-cd (lvgl_demos force-load) + add apps/nc2000
emulator submodule bumped to ci-cd branch head which enables LVGL's
built-in demos (widgets, music, keypad_encoder) as host-resolved
symbols. Apps can now declare `extern void lv_demo_widgets(void);`
and call it from app_main without vendoring demo sources.

apps/nc2000 is a new submodule pointing at CardputerZero-NC2000's
ci-cd branch, which adds the port_lvgl/ frontend producing
libnc2000.dylib/.so via cz_app.h. port_fb on the device is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00
LiHaohuaandClaude Opus 4.7 10c32fb1d5 Fix SDK default keyboard stubs to supply an indev read_cb
The emulator always dlsyms lv_sdl_keyboard_create / lv_sdl_keyboard_handler
and, when the app provides neither, falls back to a bare keypad indev with
no read_cb. LVGL then spams "indev_read_cb is not registered" every tick.

CZApp.cmake now emits weak defaults that install a proper no-op read_cb,
matching LVGL's signature (returns lv_indev_t*). Apps that want real
keyboard input override these with strong definitions at link time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00
LiHaohuaandClaude Opus 4.7 1e04368bc3 ci: desktop-smoke — czdev doctor+build+run on mac and linux
Matrix job installs SDL2/freetype/cmake, runs czdev doctor, builds
hello_cz, then headless-launches the emulator with SDL_VIDEODRIVER=dummy
and asserts it survives for 5s. Windows has a separate informational
job that surfaces the pending LVGL DLL rework (T08 in DESKTOP_DEV.md §4)
rather than failing silently.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00
LiHaohuaandClaude Opus 4.7 5a0c805a9b Add examples/hello_cz — minimal LVGL app using the cz_app.h ABI
Three files (src/hello_cz.c + CMakeLists.txt + app-builder.json)
exercise the full SDK: implement app_main/app_event, include
sdk/cmake/CZApp.cmake, and declare runtime=lvgl-dlopen. Serves as
the canonical template for new apps and the fixture for CI smoke.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:30:34 +08:00