ci: add next branch support for pre-release workflow#77
Draft
miguelramos wants to merge 204 commits intomainfrom
Draft
ci: add next branch support for pre-release workflow#77miguelramos wants to merge 204 commits intomainfrom
miguelramos wants to merge 204 commits intomainfrom
Conversation
Member
miguelramos
commented
Feb 12, 2026
- CI now runs on both main and next branches (push + PR)
- Release workflow publishes pre-releases on next branch:
- Uses workspace bump --prerelease next for semver versions (e.g., 1.0.0-next.0)
- Publishes with --tag next so npm install defaults to stable
- Stable releases on main unchanged
- Enables v1.0.0 development on next without breaking 0.x users
- CI now runs on both main and next branches (push + PR) - Release workflow publishes pre-releases on next branch: - Uses workspace bump --prerelease next for semver versions (e.g., 1.0.0-next.0) - Publishes with --tag next so npm install defaults to stable - Stable releases on main unchanged - Enables v1.0.0 development on next without breaking 0.x users
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- CLAUDE.md: add Branch Strategy section (next for v1.0.0, main for 0.x) - AGENTS.md: add branch strategy note to session completion workflow - CONTRIBUTING.md: update PR target branch guidance (next vs main)
added 10 commits
February 12, 2026 14:17
Add getTimeline(): TimelineEntry[] and clearTimeline(): number to the OpenApiServer interface and implementation. These methods expose the internal timeline array so the multi-spec orchestrator can serve per-spec timeline data via the aggregated internal API and WebSocket commands. - getTimeline() returns the timeline array (most recent last) - clearTimeline() empties the array and returns count of cleared entries - Backward-compatible: existing consumers unaffected Closes: vite-qq9.1.1 Closes: vite-qq9.1.2
Add autoConnect?: boolean option to WebSocketHubOptions. When false, addClient() registers the client but skips the automatic 'connected' event. Default true (backward-compatible). This is used by the multi-spec orchestrator which sends its own connected event with spec metadata (SpecInfo[]). Closes: vite-qq9.1.3
Add SpecInfo interface to protocol.ts with fields: id, title, version, proxyPath, color, endpointCount, schemaCount. This represents a single OpenAPI spec instance in a multi-spec setup and is used by the orchestrator's connected event and DevTools spec selector. Exported through websocket/index.ts and core/index.ts. Closes: vite-qq9.1.4
Add multi-spec protocol types to protocol.ts: - MultiSpecServerEvent: spec-aware server events with specId field, plus a connected event that includes SpecInfo[] for all available specs - MultiSpecClientCommand: client commands with spec context, including global commands (get:specs, get:registry) and spec-scoped commands (get:store, set:store, etc. with required specId) These types are used by the orchestrator's multi-spec WebSocket wrapper. The existing single-spec types remain unchanged. Closes: vite-qq9.1.5
Apply biome formatting fixes to index.ts, websocket/index.ts, and protocol.ts (indentation and trailing comma consistency). Closes: vite-qq9.1.6
- Add WebSocket broadcast in clearTimeline() to match existing patterns in internal-api.ts and command-handler.ts - Add missing event types to MultiSpecServerEvent: handler:reloaded, seed:reloaded, simulation:active (parity with ServerEvent) - Document get:specs as orchestrator-only command not in CLIENT_COMMAND_TYPES - Change getTimeline() return type to readonly TimelineEntry[] for compile-time mutation safety - Add tests for autoConnect option (5 tests in hub.test.ts) - Add tests for getTimeline() and clearTimeline() (6 tests in server.test.ts)
Rewrite packages/server/src/types.ts with the new specs: SpecConfig[] configuration shape for v1.0.0 multi-spec support: - Define SpecConfig interface (spec, id?, proxyPath?, handlersDir?, seedsDir?, idFields?) - Define OpenApiServerOptions with specs array (breaking: spec -> specs) - Define ResolvedSpecConfig with proxyPathSource tracking (auto/explicit) - Define ResolvedOptions with specs: ResolvedSpecConfig[] - Define ValidationError class with Appendix B error codes - Define ValidationErrorCode union type for all 8 error codes - Implement resolveOptions() with SPECS_EMPTY and SPEC_NOT_FOUND validation - Export new types from index.ts (SpecConfig, ResolvedSpecConfig, ValidationError, ValidationErrorCode) - Add temporary 'as any' compatibility shims in plugin.ts and banner.ts (rewritten in Task 1.7) - Update playground vite.config.ts to use new specs[] format - Rewrite unit tests: 44 tests covering ValidationError, validation, defaults, per-spec config, multi-spec, formats Closes: vite-qq9.2.1, vite-qq9.2.2, vite-qq9.2.3, vite-qq9.2.4, vite-qq9.2.5, vite-qq9.2.6
The previous pattern '!package.json' only excluded the root package.json. Changed to '!**/package.json' to exclude all nested package.json files, fixing the CI lint failure on packages/core/package.json.
- types.test.ts: Replace duplicate resolveOptions calls (expect+try/catch) with single-call expectValidationError helper - types.ts: Include spec index and id in SPEC_NOT_FOUND error message for debuggability; extract validateSpecs to reduce cognitive complexity - banner.ts: Read proxyPath from specs[0] instead of undefined options.proxyPath; remove @ts-expect-error
- Remove @internal tags from publicly exported ResolvedSpecConfig and ResolvedOptions (they are intentionally exported for advanced use cases) - Document proxyPathSource field's deferred usage in Task 1.7 orchestrator - Update banner extractBannerInfo JSDoc to document non-empty specs precondition - Replace misleading '/api' banner fallback with '(pending resolution)' - Add test: non-object spec entry throws SPEC_NOT_FOUND - Add test: first-error-only behavior with multiple invalid specs - Add test: ValidationError.code type enforcement via @ts-expect-error - Add test: autoConnect:false + command handling integration
added 2 commits
March 3, 2026 17:45
Move the duplicated buildSeedMapFromStore() utility from both orchestrator.ts and hot-reload.ts into seeds.ts, which already houses seed-related utilities. Both files now import from the shared location, eliminating verbatim code duplication.
The extraction of buildSeedMapFromStore() to seeds.ts requires the test mock to pass through the actual implementation so it can read from the mock store objects during test execution.
- @websublime/vite-plugin-open-api-core: 0.14.0-next.12 → 0.14.0-next.13 - @websublime/vite-plugin-open-api-server: 0.24.0-next.11 → 0.24.0-next.12
Track completion status of all epics and document bug fixes applied post-implementation. Epics 1-3 completed, Epics 4-6 pending.
Move beads storage from per-project embedded Dolt (.beads/dolt/) to central Dolt server at localhost:3307 (~/.dolt-data/beads-db/). Server config now comes from BEADS_DOLT_SERVER_* env vars in ~/.zshrc instead of metadata.json.
added 2 commits
March 9, 2026 11:04
Implement multi-spec metadata management for the DevTools UI: - Specs Pinia store (stores/specs.ts): state (specs, activeSpecFilter), computed (specMap, specIds, activeSpec, isFiltered), actions (setSpecs, setFilter, toggleFilter, getColor with '#94a3b8' fallback) - useSpecs composable (composables/useSpecs.ts): thin convenience wrapper with getSpecColor, specLabel, isActiveSpec helpers - SpecInfo interface defined locally to keep devtools-client decoupled from core package, with sync comment noting canonical source - 29 store tests + 17 composable tests, all passing - Updated stores/index.ts and composables/index.ts exports Ref: BEAD vite-open-api-server-d6w.1
… SpecInfo type Addresses CodeRabbit review findings: setFilter/toggleFilter now reject nonexistent spec IDs, setSpecs clears stale filters, and SpecInfo is re-exported from the composables barrel.
- @websublime/vite-plugin-open-api-server: 0.24.0-next.12 → 0.24.0-next.13 - @websublime/vite-plugin-open-api-core: 0.14.0-next.13 → 0.14.0-next.14
Add reusable spec filter chips (SpecFilter.vue) and spec badge (SpecBadge.vue) for multi-spec UI differentiation. SpecFilter reads from the specs Pinia store and renders toggle chips with colored dots and spec IDs. SpecBadge renders an inline colored dot indicator. Includes component tests for both components (17 tests) and installs @vue/test-utils as a dev dependency. Refs: vite-open-api-server-d6w.2
Each package now owns its vitest.config.ts and test script. Root test command delegates to packages via pnpm -r run test. Fixes CI failure where devtools-client .vue files couldn't be parsed without @vitejs/plugin-vue in the root config.
Deduplicate the identical createMockSpec helper from SpecBadge and SpecFilter tests into a shared helpers/mockSpec.ts module.
- @websublime/vite-plugin-open-api-core: 0.14.0-next.14 → 0.14.0-next.15 - @websublime/vite-plugin-open-api-server: 0.24.0-next.13 → 0.24.0-next.14
- Update ConnectedEventData to include optional specs array - Add 'get:specs' to ClientCommandType union - Add SimulationConfig interface for set:simulation commands - Populate specs store from connected event (lazy Pinia access) - Request initial get:registry and get:timeline per-spec on connect - Add 10 typed command wrappers: getSpecs, getRegistry, getTimeline, clearTimeline, getStore, setStore, clearStore, setSimulation, clearSimulation, reseed — all accepting specId parameter - Extend UseWebSocketReturn interface with new command wrappers - Add Pinia setup (setActivePinia) to test beforeEach - Add 22 new tests covering: specs store population, initial data requests, all command wrappers, specId passthrough in events Ref: vite-open-api-server-d6w.3
- @websublime/vite-plugin-open-api-server: 0.24.0-next.14 → 0.24.0-next.15 - @websublime/vite-plugin-open-api-devtools: 0.8.5 → 0.9.0-next.0 - @websublime/vite-plugin-open-api-core: 0.14.0-next.15 → 0.14.0-next.16 - petstore-app: 0.1.0 → 0.2.0-next.0
… simulation stores
Registry: per-spec registries Map, specId on EndpointEntry, setRegistryData(specId, data),
filteredEndpoints/groupedBySpec/globalStats computeds, spec-filtered views via specsStore.
Timeline: specId on TimelineEntry, addRequest(request, specId), setTimelineData(data, specId),
clearTimeline(specId?) for per-spec clearing, spec-filtered counts and computeds.
Models: schemasBySpec Map, specId on SchemaInfo, spec-scoped fetch URLs (/_api/{specId}/store),
fetchSchemas(specId), selectSchemaByName(specId, name), handleStoreUpdate/handleReseedComplete
with specId, filtered schemas computed.
Simulation: specId on ActiveSimulation, createSimulationFromPreset(specId, path, presetId),
activeSimulations/count/simulationsByType respect activeSpecFilter, globalCount for unfiltered.
All existing functionality preserved. Page files will be updated in subsequent beads (d6w.5-8).
- Rewrite registry, timeline, models, simulation test suites for per-spec data - Fix non-null assertion in registry.ts groupedBySpec computed - Extract updateSchemaCount helper in models.ts to reduce cognitive complexity - All 434 tests pass, zero Biome warnings
…ility Pass specId from specsStore to store method calls in RoutesPage, TimelinePage, ModelsPage, and SimulatorPage. Each call site has a TODO referencing the proper bead (d6w.5-8) for full multi-spec page rework.
Replace duplicated seed loop in createOpenApiServer with a call to populateStoreFromSeeds so both bootstrap and hot-reload use the same single-sourced routine.
- petstore-app: 0.2.0-next.0 → 0.2.0-next.1 - @websublime/vite-plugin-open-api-core: 0.14.0-next.16 → 0.14.0-next.17 - @websublime/vite-plugin-open-api-devtools: 0.9.0-next.0 → 0.9.0-next.1 - @websublime/vite-plugin-open-api-server: 0.24.0-next.15 → 0.24.0-next.16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.