| Files | Last commit | Last update |
|---|---|---|
sdr: full-spectrum scan tab with an emulated radio ## What this is The SDR scanner demo gains a **full-spectrum** tab that sweeps an arbitrary range inside 237.5 MHz – 3.8 GHz and lists the carriers active in it, plus an emulated radio so the tab (and the scanner paths) work without a bladeRF attached. ## Chat-request summary **Main prompt.** Look at the SDR demo app and add a tab that scans the full spectrum and identifies the currently active frequencies. There is no bladeRF on the target machine, so the feature has to work in emulated mode; the emulation belongs in the radio layer and should be used for testing. **Accepted decisions.** - A new RadioDevice interface under arktsx/sdr/lib/radio.ets: both the bladeRF driver and a new EmulatedRadio implement it, so the flowgraph and the scanners stay front-end agnostic. - The emulation models a populated RF environment (noise floor plus gated transmissions on DVB-T, GSM 900, ADS-B, DECT, Wi-Fi, LTE, 5G, …) and is exercised through the real source/power/FFT paths rather than a stub. - The full-spectrum sweep keeps the strongest FFT bin of each tuning window, so carriers are reported at bin resolution rather than at the tuning step. - A start/stop/step range editor with Quick presets, applied at the next sweep without stopping the receiver — the way a professional scanner's range keys work. - The radio is chosen from a dropdown in the header's upper-right corner (bladeRF / Simulator); the simulator is the default because the target machine has no hardware. - A scan-position strip and a "tuned" readout show where the sweep is now. ## Changes - arktsx/sdr/lib/radio.ets, lib/emulation/{model,radio,sweep}.ets: the radio interface, the modelled environment and its SC16 Q11 sample generator, and a one-FFT-frame-per-step SpectrumScanner. - lib/bladerf/device.ets, lib/blocks/sources.ets: implement/accept RadioDevice. - demo/src/ets/controller.ets, ui.ets: full-spectrum mode, range controls, radio selector, scan cursor and carrier list. - test/emulation.test.ets: SC16 range and amplitude, gain scaling, scanner peak frequency, a sweep that detects and attributes known carriers, gated transmissions, and the default environment. - README and the SDR vault note document the emulator and the new tab. ## Testing - npm run -C arktsx/sdr test — 78 tests pass (8 new in SdrEmulation). - npx kh2 test — the full pre-push gate. - Driven headlessly with grasp: tab switch, simulator sweep, range presets, typed range, invalid-range error, carrier list, and the bladeRF path's no-device banner. 🤖 Generated with [Claude Code](https://claude.com/claude-code) | 4 days ago | |
more tests through kh2 on CI Moves the host tests of CI onto kh2: one test:kh2 job (npx kh2 -j 6 test smoke check) replaces the per-package test jobs, and the OHOS/Android natives build through kh2 too. The plan and its four stages are in docs/second-brain/40_Development_Workflow/CI_kh2_Migration.md. ## Stages 1. **Package suites through kh2 only.** ArktsxPackage gains test.launcher (http-client's WebSocket server through with-server.mjs) and test.checks (abc-opt test:node, deal-ui protocol tables, assembler check:tables). The 43 duplicate test:<pkg> jobs are gone. 2. **Smokes, checks and bundles.** smoke-<name> (headless app runs), check-<name> (node tools, lints, the vault, the SDK CLI tests), bundle-<name> (linux bundles), all requested on demand, so a plain kh2 <pkg> builds none of them. 3. **Only the downloads are cached between pipelines.** test:kh2 builds the checkout from scratch and caches the npm cache and the apm package cache (.arkts_cache/). The stage first cached the kh2 state (.kh/ and the trees its records describe); that was dropped, see below. 4. **OHOS and Android natives.** compile:native:ohos-arm64 / compile:native:android-arm64 (the slices each hook/build.yml promises) and compile:ohos (arkts build --platform ohos) replace the npm --workspaces scripts and the four canary jobs. Each stage has a review-fix commit after it. ## On top of the stages - **Input lists named by role.** *Inputs are keyed inputs, *Barrier order-only ones. ArktsxPackage's arktsDeps becomes buildInputs; the test options split into inputs (this package's tests) and globalBarrier (what every launch waits for). PackageTest(…, buildInputs, globalTestBarrier, selfTestInputs, …); TestBuilds becomes GlobalTestBarrier. - **A timeout on every package test launch.** 10 minutes by default, test.timeoutMs per package. haus2 Exec/runProcess gain timeoutMs: past it the process group is terminated and the rule fails with CommandTimedOut. The hang it guards against is a race in the runtime's MarkableQueue.clear(), fixed in koala_projects!26. - **The web platform suites as checks.** Master added node --test platforms/web/ to the npm test:all of seven packages. WebPlatformCheck() runs them under kh2: in test-<name> for curl, device, http-client, interop and webview; as check-camera / check-haptics for the packages without arkts suites, replacing their CI jobs. - **CI: no kh2 state cache, -j 6.** The first CI runs of this PR showed why a cached kh2 state is fragile: the meson setups' get_prebuilt.mjs writes arktsx/*/subprojects/*/prebuilt/, which the cached tree list missed, so the restored setups stayed up to date without their prebuilts and curl, cv and graphics compiled without their headers. Such a state fails every later run until the key changes, for every branch. Only the downloads are cached now. The pod has a 4-CPU quota: at -j 10, the first ui-measure cases ran past their 90 s timeout next to the suites, so the job runs -j 6. ## Rebased onto master 3cdf4f99d - haus2 rule descriptions are now DescribeRule content, not a description option; every rule this branch adds is converted. - Master's test.tags (usb's tagged hooks) is merged with launcher, timeoutMs and the renamed input lists. ## Verification Locally, npx kh2 -j 10 test smoke check on the rebased branch: 795/795 rules pass, exit 0. haus2 widgets tests 144/144. CI, the first cold run (-j 10): the kh2 part took about 9 minutes, every rule but ui-measure passed (see above). 🤖 Generated with [Claude Code](https://claude.com/claude-code) | 16 days ago | |
more tests through kh2 on CI Moves the host tests of CI onto kh2: one test:kh2 job (npx kh2 -j 6 test smoke check) replaces the per-package test jobs, and the OHOS/Android natives build through kh2 too. The plan and its four stages are in docs/second-brain/40_Development_Workflow/CI_kh2_Migration.md. ## Stages 1. **Package suites through kh2 only.** ArktsxPackage gains test.launcher (http-client's WebSocket server through with-server.mjs) and test.checks (abc-opt test:node, deal-ui protocol tables, assembler check:tables). The 43 duplicate test:<pkg> jobs are gone. 2. **Smokes, checks and bundles.** smoke-<name> (headless app runs), check-<name> (node tools, lints, the vault, the SDK CLI tests), bundle-<name> (linux bundles), all requested on demand, so a plain kh2 <pkg> builds none of them. 3. **Only the downloads are cached between pipelines.** test:kh2 builds the checkout from scratch and caches the npm cache and the apm package cache (.arkts_cache/). The stage first cached the kh2 state (.kh/ and the trees its records describe); that was dropped, see below. 4. **OHOS and Android natives.** compile:native:ohos-arm64 / compile:native:android-arm64 (the slices each hook/build.yml promises) and compile:ohos (arkts build --platform ohos) replace the npm --workspaces scripts and the four canary jobs. Each stage has a review-fix commit after it. ## On top of the stages - **Input lists named by role.** *Inputs are keyed inputs, *Barrier order-only ones. ArktsxPackage's arktsDeps becomes buildInputs; the test options split into inputs (this package's tests) and globalBarrier (what every launch waits for). PackageTest(…, buildInputs, globalTestBarrier, selfTestInputs, …); TestBuilds becomes GlobalTestBarrier. - **A timeout on every package test launch.** 10 minutes by default, test.timeoutMs per package. haus2 Exec/runProcess gain timeoutMs: past it the process group is terminated and the rule fails with CommandTimedOut. The hang it guards against is a race in the runtime's MarkableQueue.clear(), fixed in koala_projects!26. - **The web platform suites as checks.** Master added node --test platforms/web/ to the npm test:all of seven packages. WebPlatformCheck() runs them under kh2: in test-<name> for curl, device, http-client, interop and webview; as check-camera / check-haptics for the packages without arkts suites, replacing their CI jobs. - **CI: no kh2 state cache, -j 6.** The first CI runs of this PR showed why a cached kh2 state is fragile: the meson setups' get_prebuilt.mjs writes arktsx/*/subprojects/*/prebuilt/, which the cached tree list missed, so the restored setups stayed up to date without their prebuilts and curl, cv and graphics compiled without their headers. Such a state fails every later run until the key changes, for every branch. Only the downloads are cached now. The pod has a 4-CPU quota: at -j 10, the first ui-measure cases ran past their 90 s timeout next to the suites, so the job runs -j 6. ## Rebased onto master 3cdf4f99d - haus2 rule descriptions are now DescribeRule content, not a description option; every rule this branch adds is converted. - Master's test.tags (usb's tagged hooks) is merged with launcher, timeoutMs and the renamed input lists. ## Verification Locally, npx kh2 -j 10 test smoke check on the rebased branch: 795/795 rules pass, exit 0. haus2 widgets tests 144/144. CI, the first cold run (-j 10): the kh2 part took about 9 minutes, every rule but ui-measure passed (see above). 🤖 Generated with [Claude Code](https://claude.com/claude-code) | 16 days ago | |
kh2: the arkui3 build scripts The arkui3 repository described as kh2 build scripts, **next to** the npm scripts (they stay the reference build; npm run setup is unchanged apart from building kh2 first). **Depends on !170** (the kh2 engine, widgets and CLI): this branch is based on it, so until !170 is merged its commit shows up here too; review only the top commit kh2: the arkui3 build scripts. - kh.yml lists the roots: the repository script kh.build.ts, the arktsx/* packages and members living elsewhere (arktsx/abc-opt/bench, a2ui-server/app) - kh/ is the library: ArktsxPackage (idl2peer, the meson native build, arkts build, on-demand tests, demo run targets), the toolchains, the root install, the group aliases compile / test / compile:native; kh/native.ts and kh/cross-file.mjs for the machine files - a kh.build.ts per package; targets are named after the arkts.yml name (arktsx.libc, also libc), with test-<name> and run-<name>-demo; the default goal is setup - toolchain 1.5.0-dev.78036-10099: arkts test --no-run, used by arkui3 test --no-run (arktsx/sdk/cli), so the tests build serially and run in parallel - http-server and pay-app follow the removal of arktsx/.packages; arkts.lock is ignored - koala-haus/MIGRATION_PLAN.md: the migration plan and its verified steps Usage: npm run setup:kh2, then npm run kh2 -- <target> (npm run kh2 -- -t targets lists them). ## Verification - kh2 setup 553/553, rerun up to date - kh2 test 613/613 in 60 s, rerun up to date 🤖 Generated with [Claude Code](https://claude.com/claude-code) | 23 days ago | |
Enable reactivity check for some projects ## Bring up the gorsh compiler and the browser (wasm) target This branch adds a second build path — the gorsh compiler — and a browser/wasm target on top of it, and ports the ArkTS tree so it compiles cleanly under the new compiler. ## gorsh toolchain third-party/gorsh/ pins the compiler release (archive name plus sha256, get_prebuilt.mjs to fetch it, and its own README). kh/gorsh.ts and kh/gorsh.build.ts declare the two-pass toolchain — an emit pass over the linter's package closure and a gorsh.checker reactivity report — and gitlab/gorsh.yml runs it as a non-gating lint:reactivity job. ## Browser/wasm target kh/web.ts declares, per app, emits → collection → Vite bundle → dev server → node and bundle smokes. platforms/web/ hosts are added across the dependency closure (graphics/Skia wasm, libc, interop, curl, http-client, sqlite, camera, haptics, video, compress, cv, device, webview, audio, video-codec-gav1). The framework gains a browser path: WebApplication entry and control surface, a managed WebInput queue, WebDispatcher/WebWaiter, and web branches for the redrawer and persistent storage. Apps: the M0 proof app (arktsx/web), arktsx/tiny-app, the preso browser viewer, and the graphics demo as a second web app. ## ArkTS port for the new compiler Dispatcher handles widened to DispatcherLike throughout the callers and callees, method-overload removal and Partial<X> → concrete interfaces, float suffixes and integer-division fixes for the JavaScript emitter, Start-alignment resolution, and small adjustments in the a2ui, theme, layout and visibility code. ## Build and CI kh2 roots and alias groups (compile, the test categories), the gorsh and web jobs, and deliberately kept out of kh2 test: they need the pinned compiler, a Vite install and wasm assets, so they live in a web:checks group run by a non-gating gitlab/web.yml job, alongside lint:reactivity. ## Docs and tests Ten second-brain notes updated (build system, multiplatform build, event loop and dispatchers, CI, testing, coding standards) plus arktsx/web/README.md; new Canvas and alignment suites and the browser smoke probes. | 4 days ago | |
Enable reactivity check for some projects ## Bring up the gorsh compiler and the browser (wasm) target This branch adds a second build path — the gorsh compiler — and a browser/wasm target on top of it, and ports the ArkTS tree so it compiles cleanly under the new compiler. ## gorsh toolchain third-party/gorsh/ pins the compiler release (archive name plus sha256, get_prebuilt.mjs to fetch it, and its own README). kh/gorsh.ts and kh/gorsh.build.ts declare the two-pass toolchain — an emit pass over the linter's package closure and a gorsh.checker reactivity report — and gitlab/gorsh.yml runs it as a non-gating lint:reactivity job. ## Browser/wasm target kh/web.ts declares, per app, emits → collection → Vite bundle → dev server → node and bundle smokes. platforms/web/ hosts are added across the dependency closure (graphics/Skia wasm, libc, interop, curl, http-client, sqlite, camera, haptics, video, compress, cv, device, webview, audio, video-codec-gav1). The framework gains a browser path: WebApplication entry and control surface, a managed WebInput queue, WebDispatcher/WebWaiter, and web branches for the redrawer and persistent storage. Apps: the M0 proof app (arktsx/web), arktsx/tiny-app, the preso browser viewer, and the graphics demo as a second web app. ## ArkTS port for the new compiler Dispatcher handles widened to DispatcherLike throughout the callers and callees, method-overload removal and Partial<X> → concrete interfaces, float suffixes and integer-division fixes for the JavaScript emitter, Start-alignment resolution, and small adjustments in the a2ui, theme, layout and visibility code. ## Build and CI kh2 roots and alias groups (compile, the test categories), the gorsh and web jobs, and deliberately kept out of kh2 test: they need the pinned compiler, a Vite install and wasm assets, so they live in a web:checks group run by a non-gating gitlab/web.yml job, alongside lint:reactivity. ## Docs and tests Ten second-brain notes updated (build system, multiplatform build, event loop and dispatchers, CI, testing, coding standards) plus arktsx/web/README.md; new Canvas and alignment suites and the browser smoke probes. | 4 days ago | |
Enable reactivity check for some projects ## Bring up the gorsh compiler and the browser (wasm) target This branch adds a second build path — the gorsh compiler — and a browser/wasm target on top of it, and ports the ArkTS tree so it compiles cleanly under the new compiler. ## gorsh toolchain third-party/gorsh/ pins the compiler release (archive name plus sha256, get_prebuilt.mjs to fetch it, and its own README). kh/gorsh.ts and kh/gorsh.build.ts declare the two-pass toolchain — an emit pass over the linter's package closure and a gorsh.checker reactivity report — and gitlab/gorsh.yml runs it as a non-gating lint:reactivity job. ## Browser/wasm target kh/web.ts declares, per app, emits → collection → Vite bundle → dev server → node and bundle smokes. platforms/web/ hosts are added across the dependency closure (graphics/Skia wasm, libc, interop, curl, http-client, sqlite, camera, haptics, video, compress, cv, device, webview, audio, video-codec-gav1). The framework gains a browser path: WebApplication entry and control surface, a managed WebInput queue, WebDispatcher/WebWaiter, and web branches for the redrawer and persistent storage. Apps: the M0 proof app (arktsx/web), arktsx/tiny-app, the preso browser viewer, and the graphics demo as a second web app. ## ArkTS port for the new compiler Dispatcher handles widened to DispatcherLike throughout the callers and callees, method-overload removal and Partial<X> → concrete interfaces, float suffixes and integer-division fixes for the JavaScript emitter, Start-alignment resolution, and small adjustments in the a2ui, theme, layout and visibility code. ## Build and CI kh2 roots and alias groups (compile, the test categories), the gorsh and web jobs, and deliberately kept out of kh2 test: they need the pinned compiler, a Vite install and wasm assets, so they live in a web:checks group run by a non-gating gitlab/web.yml job, alongside lint:reactivity. ## Docs and tests Ten second-brain notes updated (build system, multiplatform build, event loop and dispatchers, CI, testing, coding standards) plus arktsx/web/README.md; new Canvas and alignment suites and the browser smoke probes. | 4 days ago | |
Renamed gorsh to stark | 3 days ago | |
Renamed gorsh to stark | 3 days ago | |
more tests through kh2 on CI Moves the host tests of CI onto kh2: one test:kh2 job (npx kh2 -j 6 test smoke check) replaces the per-package test jobs, and the OHOS/Android natives build through kh2 too. The plan and its four stages are in docs/second-brain/40_Development_Workflow/CI_kh2_Migration.md. ## Stages 1. **Package suites through kh2 only.** ArktsxPackage gains test.launcher (http-client's WebSocket server through with-server.mjs) and test.checks (abc-opt test:node, deal-ui protocol tables, assembler check:tables). The 43 duplicate test:<pkg> jobs are gone. 2. **Smokes, checks and bundles.** smoke-<name> (headless app runs), check-<name> (node tools, lints, the vault, the SDK CLI tests), bundle-<name> (linux bundles), all requested on demand, so a plain kh2 <pkg> builds none of them. 3. **Only the downloads are cached between pipelines.** test:kh2 builds the checkout from scratch and caches the npm cache and the apm package cache (.arkts_cache/). The stage first cached the kh2 state (.kh/ and the trees its records describe); that was dropped, see below. 4. **OHOS and Android natives.** compile:native:ohos-arm64 / compile:native:android-arm64 (the slices each hook/build.yml promises) and compile:ohos (arkts build --platform ohos) replace the npm --workspaces scripts and the four canary jobs. Each stage has a review-fix commit after it. ## On top of the stages - **Input lists named by role.** *Inputs are keyed inputs, *Barrier order-only ones. ArktsxPackage's arktsDeps becomes buildInputs; the test options split into inputs (this package's tests) and globalBarrier (what every launch waits for). PackageTest(…, buildInputs, globalTestBarrier, selfTestInputs, …); TestBuilds becomes GlobalTestBarrier. - **A timeout on every package test launch.** 10 minutes by default, test.timeoutMs per package. haus2 Exec/runProcess gain timeoutMs: past it the process group is terminated and the rule fails with CommandTimedOut. The hang it guards against is a race in the runtime's MarkableQueue.clear(), fixed in koala_projects!26. - **The web platform suites as checks.** Master added node --test platforms/web/ to the npm test:all of seven packages. WebPlatformCheck() runs them under kh2: in test-<name> for curl, device, http-client, interop and webview; as check-camera / check-haptics for the packages without arkts suites, replacing their CI jobs. - **CI: no kh2 state cache, -j 6.** The first CI runs of this PR showed why a cached kh2 state is fragile: the meson setups' get_prebuilt.mjs writes arktsx/*/subprojects/*/prebuilt/, which the cached tree list missed, so the restored setups stayed up to date without their prebuilts and curl, cv and graphics compiled without their headers. Such a state fails every later run until the key changes, for every branch. Only the downloads are cached now. The pod has a 4-CPU quota: at -j 10, the first ui-measure cases ran past their 90 s timeout next to the suites, so the job runs -j 6. ## Rebased onto master 3cdf4f99d - haus2 rule descriptions are now DescribeRule content, not a description option; every rule this branch adds is converted. - Master's test.tags (usb's tagged hooks) is merged with launcher, timeoutMs and the renamed input lists. ## Verification Locally, npx kh2 -j 10 test smoke check on the rebased branch: 795/795 rules pass, exit 0. haus2 widgets tests 144/144. CI, the first cold run (-j 10): the kh2 part took about 9 minutes, every rule but ui-measure passed (see above). 🤖 Generated with [Claude Code](https://claude.com/claude-code) | 16 days ago | |
Renamed gorsh to stark | 3 days ago | |
Renamed gorsh to stark | 3 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 4 days ago | ||
| 16 days ago | ||
| 16 days ago | ||
| 23 days ago | ||
| 4 days ago | ||
| 4 days ago | ||
| 4 days ago | ||
| 3 days ago | ||
| 3 days ago | ||
| 16 days ago | ||
| 3 days ago | ||
| 3 days ago |