robonen
4458744dcf
ci: run playwright install in the package context
...
playwright is a direct devDep of @robonen/primitives and @robonen/editor, not the root, so 'pnpm exec playwright' couldn't resolve the CLI in CI's strict install (Command "playwright" not found). Run it via 'pnpm --filter <pkg> exec' so the package's node_modules/.bin is on PATH.
2026-06-08 16:53:25 +07:00
robonen
f40cc55497
ci: run build, lint and test in parallel per package
...
Replace the single monorepo CI job with a dynamic matrix: a discover job enumerates workspace packages, then one job per package builds it (with its workspace deps), lints and tests in parallel (fail-fast: false). Chromium is installed only for the browser-mode suites (primitives, editor). Adds a 'test' script to @robonen/docs so its suite runs under the per-package model (the root vitest projects list isn't used by CI anymore).
2026-06-08 16:50:34 +07:00
robonen
9d78f63e56
ci: install Playwright Chromium before running tests
...
vue/primitives runs vitest in browser mode (instances: chromium), so 'pnpm test' launches Playwright Chromium — which the CI runner doesn't have, failing the run after all 3320 tests pass. Add 'playwright install --with-deps chromium' before the test step in both CI and publish workflows.
2026-06-08 16:39:18 +07:00
robonen
67ca9252b7
fix(docs): use replaceAll in the doc-section TOC slug helper
...
Satisfies unicorn/prefer-string-replace-all (global-regex replace -> replaceAll).
2026-06-08 16:28:52 +07:00
robonen
c2252a2a5c
chore(eslint): exclude docs-site content from linting
...
Per-composable demos (demo.vue) and hand-authored doc sections (docs/*.vue) are unpublished docs-site content co-located in packages for the extractor. Ignore **/docs/** and **/demo.vue: they aren't library source, and non-Vue packages can't parse .vue at all (parse error in configs/eslint).
2026-06-08 16:28:52 +07:00
robonen
27f7a0f00e
fix(docs): update NODE_VERSION to 24.x in CI and publish workflows
2026-06-08 16:11:27 +07:00
robonen
5c33ed36a4
fix(docs): resolve @robonen/* workspace imports from source
...
The docs build pulls composables (via demos) and doc sections into its bundle, which transitively import workspace packages like @robonen/platform/multi. Aliasing each @robonen/* package to its src means the build no longer requires every package's dist to be built first, fixing CI where dists are absent.
2026-06-08 16:05:19 +07:00
robonen
8586b2be1e
Merge branch 'master' into docs
...
# Conflicts:
# pnpm-lock.yaml
2026-06-08 15:59:16 +07:00
robonen
13de500d11
chore: update lockfile, root vitest config, and mcp config
2026-06-08 15:52:03 +07:00
robonen
53f2d7ceef
docs: add package introductions and the @robonen/crdt guide
...
An intro.vue landing for all 12 packages, plus a multi-section crdt guide (Concepts, Primitives, Replication & Sync, and an interactive convergence Playground).
2026-06-08 15:52:03 +07:00
robonen
09433415b6
feat(docs): doc-sections system, crdt package, MCP server, and responsive fixes
...
Adds a hand-authored .vue doc-sections system (intro + guide pages per package, #docs/sections map, sidebar Guide group, client-side TOC), registers @robonen/crdt, renders demos client-only, base64-encodes the server-metadata virtual, plus the MCP docs endpoint and responsive/overflow fixes across pages and tables.
2026-06-08 15:52:03 +07:00
robonen
def1db8b6c
fix(primitives): component fixes and test cleanup
2026-06-08 15:51:30 +07:00
robonen
9ef8125965
chore(editor): view, selection-bridge, and type fixes
2026-06-08 15:51:30 +07:00
robonen
e83f10fe32
docs(vue): add interactive demo for every composable
...
A beautiful, SSR-safe demo.vue next to each composable, auto-discovered by the docs extractor and rendered client-only on each composable's page.
2026-06-08 15:51:16 +07:00
robonen
59e995d0b5
feat(vue): expand @robonen/vue composable collection
...
Composables, tests, category barrels, and README for @robonen/vue.
2026-06-08 15:51:16 +07:00
robonen
9a912f7a77
fix(core): update encoding QR constants and fetch utils
2026-06-08 15:50:59 +07:00
robonen
74fbd0c005
feat(stdlib): add immutable array ops, deep set, and isEqual comparator
...
Adds arrays/{move,insert,swap,remove}, collections/set, and comparators/isEqual (NaN/Date/RegExp/Map/Set/cycle-safe), wired into the barrels.
2026-06-08 15:50:59 +07:00
robonen
4678a372b1
chore(eslint): update shared presets and config exports
2026-06-08 15:50:59 +07:00
robonen
5c583b64a4
chore: update pnpm-lock.yaml for eslint toolchain + typescript
2026-06-07 16:30:27 +07:00
robonen
96ac895f7a
chore(docs): eslint migration + extractor updates
...
Migrate docs to eslint flat config (build-script console override); doc
extractor points at configs/eslint.
2026-06-07 16:30:14 +07:00
robonen
23a2795523
chore(stories): eslint/tsconfig migration
...
Migrate Storybook package to eslint flat config + composite tsconfig.
2026-06-07 16:30:05 +07:00
robonen
09272dffeb
feat(editor): eslint/tsconfig migration + type fixes
...
@robonen/editor: migrate to eslint flat config + composite tsconfig; fix
convergence test type annotations.
2026-06-07 16:30:05 +07:00
robonen
626fbc70d8
fix(primitives): eslint/tsconfig migration, asChild refactor, type fixes
...
- Migrate to eslint flat config + composite tsconfig.
- Complete the asChild→as="template" refactor (remove asChild prop + :as-child
bindings across components, matching Primitive's slot model).
- Fix test type errors and source type-safety (useGraceArea hull/point math,
FocusScope/util ref typing).
Note: ~53 vue-tsc errors remain (HTML attr/event passthrough typing on
transparent wrapper components + a couple of duplicate-export naming
collisions) — not gated by CI (build/lint/test green); pending a
component-attribute-typing design decision.
2026-06-07 16:29:56 +07:00
robonen
c7644ade69
fix(vue): eslint/tsconfig migration + resolve type errors
...
@robonen/vue (toolkit): migrate to eslint flat config + composite tsconfig;
fix composable + test type errors (writable computed returns, null guards,
overload-compatible signatures, typed test helpers) — all type-level.
2026-06-07 16:29:39 +07:00
robonen
e6919de29e
chore(platform): eslint/tsconfig migration + browser utils
...
Migrate to eslint flat config and composite tsconfig; browser/multi updates
(hideOthers, focusScope).
2026-06-07 16:29:28 +07:00
robonen
da8d137be4
chore(encoding): eslint/tsconfig migration
...
Migrate to eslint flat config (qr-code.ts override for the mask-penalty
sliding-window) and composite tsconfig.
2026-06-07 16:29:27 +07:00
robonen
a7e668ced8
feat(fetch): plugin system + eslint/tsconfig migration
...
- Add fetch plugin API (definePlugin, plugins) with type-level option flow.
- Migrate to eslint flat config and composite tsconfig.
2026-06-07 16:29:18 +07:00
robonen
96f4cba4a8
feat(stdlib): new modules + eslint/tsconfig migration
...
- Add array/async/etc. modules and type tests; migrate to eslint flat config
and composite tsconfig (vitest typecheck enabled).
- Fix PubSub.emit to snapshot listeners before iterating (stable EventEmitter
semantics; avoids invoking listeners added during the same emit).
2026-06-07 16:29:08 +07:00
robonen
008d85a8fd
feat(crdt): add @robonen/crdt package
...
Hand-built CRDT primitives: Lamport clock + version vectors, op-log,
LWW register/map, RGA sequence, fractional indexing, marks store, sync
encode, and doc/replica. Includes eslint flat config + composite tsconfig.
2026-06-07 16:28:58 +07:00
robonen
70a8678743
chore: workspace eslint catalog, typescript dev dep, monorepo skill
...
- pnpm-workspace catalog: replace oxlint with eslint ^10.4.1.
- Add typescript dev dep (root) so vitest typecheck (stdlib) resolves tsc.
- Root vitest projects: configs/oxlint → configs/eslint.
- Update monorepo skill + add component-test-auditor agent.
2026-06-07 16:28:20 +07:00
robonen
7693b49253
chore(configs): migrate oxlint→eslint presets, refactor tsconfig
...
- Replace @robonen/oxlint with @robonen/eslint (composable ESLint flat-config
presets: base, typescript, vue, vitest, imports, node, stylistic).
- Plugins bundled as deps: typescript-eslint, eslint-plugin-vue,
@vitest/eslint-plugin, eslint-plugin-import-x, eslint-plugin-n,
eslint-plugin-unicorn, @stylistic/eslint-plugin.
- @robonen/tsconfig: add base/dom/node/vue configs for composite project refs.
2026-06-07 16:28:10 +07:00
renovate[bot]
d3429dad2b
chore(deps): update pnpm.catalog.default vitest to v4.1.0 [security] ( #135 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-05 01:10:16 +00:00
robonen
1d3efa5028
feat(primitives): add menu, dropdown-menu, context-menu, and menubar primitives
...
Implements WAI-ARIA APG-compliant headless menu primitive families:
- menu: base primitive with MenuRoot, MenuContent, MenuItem,
MenuCheckboxItem, MenuRadioGroup/Item, MenuSub, and helpers
- dropdown-menu: DropdownMenuRoot with trigger anchoring
- context-menu: ContextMenuRoot with right-click virtual anchor
- menubar: MenubarRoot with keyboard navigation between menus
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-17 18:48:43 +07:00
robonen
333a18cbaf
refactor(presence): enhance slot handling and attribute forwarding
2026-03-26 17:19:31 +07:00
robonen
fe527daad1
Merge pull request #130 from robonen/copilot/add-fetch-wrapper-optimization
...
feat(core): add @robonen/fetch — type-safe fetch wrapper with V8-optimised internals
2026-03-26 16:12:10 +07:00
robonen
1db475c982
refactor(core/fetch): optimize perfomance, improve types
2026-03-26 16:10:19 +07:00
robonen
4876e04ceb
Merge remote-tracking branch 'origin/master' into copilot/add-fetch-wrapper-optimization
...
# Conflicts:
# core/stdlib/src/async/tryIt/index.ts
# pnpm-lock.yaml
# pnpm-workspace.yaml
2026-03-26 06:32:03 +07:00
robonen
b144a8bdd3
Merge pull request #89 from robonen/feat/stdlib/retry
...
feat(core/stdlib): add retry function
2026-03-26 06:29:21 +07:00
robonen
6b4ddc9733
refactor(retry): simplify error handling in retry tests and ensure consistent promise rejection handling
2026-03-26 06:28:09 +07:00
robonen
ed5e6656f1
fix(retry): suppress eslint warning for throwing literal error
2026-03-26 06:23:48 +07:00
robonen
effbe91df6
Merge branch 'master' into feat/stdlib/retry
...
# Conflicts:
# core/stdlib/src/async/retry/index.ts
2026-03-26 06:18:34 +07:00
robonen
433ab1c2cd
refactor(core/stdlib): streamline tryIt function with improved promise handling
2026-03-26 06:15:51 +07:00
robonen
8d8ea734d1
refactor(core/stdlib): improve retry function implementation and error handling
2026-03-26 06:09:54 +07:00
robonen
68032500b7
Merge pull request #131 from robonen/renovate/jsdom-29.x
...
chore(deps): update pnpm.catalog.default jsdom to v29
2026-03-25 14:53:14 +07:00
renovate[bot]
7c5c2ab9c1
chore(deps): update pnpm.catalog.default jsdom to v29
2026-03-23 18:00:39 +00:00
robonen
4f3d6113a8
Merge pull request #132 from robonen/renovate/pnpm-action-setup-5.x
...
chore(deps): update pnpm/action-setup action to v5
2026-03-24 00:59:16 +07:00
renovate[bot]
49d70f1f39
chore(deps): update pnpm/action-setup action to v5
2026-03-17 13:32:12 +00:00
copilot-swe-agent[bot]
1111848728
refactor: remove unnecessary eslint-disable comments from const Set declarations
...
Co-authored-by: robonen <26167508+robonen@users.noreply.github.com >
2026-03-13 17:12:12 +00:00
copilot-swe-agent[bot]
170093a039
feat: add @robonen/fetch package - lightweight fetch wrapper with V8 optimizations
...
Co-authored-by: robonen <26167508+robonen@users.noreply.github.com >
2026-03-13 17:09:49 +00:00
copilot-swe-agent[bot]
11f823afb4
Initial plan
2026-03-13 16:48:56 +00:00