spb/metrika Public
Stata-class statistics, GPU-accelerated by Apple Silicon. Native Swift — no Electron, no Python runtime, no compromises.
Swift 92.4%
HTML 3.3%
R 3%
Shell 1.3%
-
feat: v1.0 features — sample datasets, docs site, Metal 2M-point renderer
…
- sysuse command with bundled samples (sales: 200-firm x 5-year panel; mtcars) shipped as ZQEngine resources, generated by scripts/make_samples.R - metrika-cli docs: static documentation site rendered from the shared command registry (docs/index.html, 38 commands, light/dark); CLI restructured with a default 'run' subcommand - Metal point-sprite renderer (CLAUDE.md §7 pane 4): packed 12-byte vertices, unified-memory buffer written once, scroll-pan / pinch-zoom / double-click-reset touching only a 24-byte uniform; takes over scatter plots past 100k points (METRIKA_METAL_THRESHOLD override for tests); verified rendering 2,000,000 points in-app - METRIKA_AUTORUN debug hook for headless app driving - MARKETING_VERSION 1.0.0 - 116 kit tests + 4 UI tests green Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat(plugins): harden the user-command protocol
…
- fix: script-command verbs were routed AFTER parsing, which rejects unknown verbs — .zyq commands could never run; they now route before the parser with raw macro arguments - .zyq scripts: ado-style 'args name…' declaration with backtick macro substitution (`0', `k', `name'); scratch-variable scripts verified end-to-end against the built-in path - ZQPluginRegistry: verb-keyed native plugin registry; verbs shadowing built-ins rejected at session start; parsed commands validated against the declared ZQSyntaxSpec (varlist/if/in/weights/options) - mutation gating: plugins return a replacement dataset via ZQResult.replacementFrame, installed only under 'mutates: true' — a non-mutating plugin returning one is an error and the dataset is untouched (ZQContext is now a plain value, no writable back-channel) - ZScorePlugin ships as the reference native plugin, registered by the app ('zscore varname' -> standardized z_varname) - CLAUDE.md: document the mlx-swift build quirks (xcodebuild for GPU tests, -skipPackagePluginValidation everywhere) - 87 tests green (swift test and xcodebuild with GPU suites); app builds Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
feat(ui): data browser and do-file editor panes
…
- DataBrowserPane (§7 pane 3): NSTableView bridge (natively virtualized), sortable columns with missing-last ordering, observation-number gutter, filter bar compiled to an if-expression through the real parser (ZQCommandParser.parseExpression + ZQSession.conditionMask are the new public entry points) - DoFileEditorPane (§7 pane 2): NSTextView bridge with ZQL highlighting (verbs resolved via ZQVerbTable, comments, strings), run selection or file with Cmd-R through the shared session path, open/save .zyq - ContentView: segmented Console / Data / Do-file switcher in the toolbar - UI smoke extended: pane switching, filter narrowing (2 of 5 obs), do-file run surfacing in the console and sidebar - 61 kit tests + 2 UI tests green Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
test(ui): add XCUITest console smoke per CLAUDE.md §9
…
- MetrikaUITests target (xcodegen scheme test action) - launch-environment hook (DEBUG only): sandboxed app materializes the test CSV in its own container, since the runner cannot stage files across the sandbox boundary reliably - queries predicate on AX 'value' (SwiftUI Text exposes value, not label) - smoke: launch, auto-load dataset, type gen + reg robust, assert regression table and sidebar variable Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat: bootstrap Metrika v0.1 skeleton with working ZQL vertical slice
…
- MetrikaKit SPM package: ZQParser, ZQPlanner, ZQEngine, ZQData, ZQStats, ZQGPU, ZQGraphics, ZQPlugins (Swift 6, strict concurrency) - ZQL parser: lexer, Pratt expressions, factor variables, prefix commands, column-cited errors with Levenshtein verb suggestions - ZQData: DuckDB-backed load/save (parquet, csv, json, arrow) - ZQStats: OLS via LAPACK QR, HC0-HC3 and cluster-robust SE, summarize, t/F distributions accurate in the far tails - ZQGPU: Philox4x32-10 reference RNG, counter-addressable bootstrap - ZQEngine: session actor with use/save/gen/replace/drop/keep/summarize/ regress/count/list/graph/bootstrap/set seed/xtset/log - SwiftUI app (xcodegen): console with history, variables sidebar, Swift Charts plots; sandboxed + hardened runtime entitlements - Tests: 44 green (parser golden, R fixtures at 1e-10, Philox KAT, end-to-end engine); Tests/Fixtures/generate.R; Tests/Bench harness - scripts: check_headers.sh + pre-commit hook, make_icns.sh, release.sh Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>