Add status bar modules and primary-side-bar status view #61

Merged
marfavi merged 9 commits from feat/status-bar-panel into feat/invalidate-stale-model 2026-10-22 16:05:02 +02:00
Owner

Summary

Moves Crocq's status UI to a primary-side-bar view and replaces the dependency-only status bar chip and floating popover.

  • Adds attachable status modules for dependencies and the active C file's model.
  • Adds a Crocq activity-bar container with a Status webview view, and makes the status bar chip focus it.
  • Includes the auto-generation-on-save toggle in the status view.
  • Removes the old dependency status bar, popup panel and their tests.
  • Retains the stale-model behavior from the base branch, including the persisted "failed" generation state.

Stack

This PR is stacked on feat/invalidate-stale-model (PR #60) and targets that branch, so the diff contains only the status bar/panel UI work.

Verification

  • npm run check (format, parity, types, lint)
  • Unit tests: 143 passing
  • Relevant integration tests: 13 passing (model status, terminal, extension/status view)
## Summary Moves Crocq's status UI to a primary-side-bar view and replaces the dependency-only status bar chip and floating popover. - Adds attachable status modules for dependencies and the active C file's model. - Adds a `Crocq` activity-bar container with a `Status` webview view, and makes the status bar chip focus it. - Includes the auto-generation-on-save toggle in the status view. - Removes the old dependency status bar, popup panel and their tests. - Retains the stale-model behavior from the base branch, including the persisted `"failed"` generation state. ## Stack This PR is stacked on `feat/invalidate-stale-model` (PR #60) and targets that branch, so the diff contains only the status bar/panel UI work. ## Verification - `npm run check` (format, parity, types, lint) - Unit tests: 143 passing - Relevant integration tests: 13 passing (model status, terminal, extension/status view)
Add status bar modules and primary-side-bar status view
All checks were successful
Grammar / Corpus and binding tests (pull_request) Successful in 40s
Extension / Format, types, lint, extension tests (pull_request) Successful in 1m35s
2b494c97f4
Replace the dependency-only status bar and floating status popover with attachable status modules, a Crocq activity-bar view, and a status-bar chip that focuses it. Includes the auto-generation toggle and dependency status UI.
Owner

maybe the old crocq dependencies view can just be merged into the sidebar?

maybe the old crocq dependencies view can just be merged into the sidebar?
EatOreo approved these changes 2026-10-22 14:32:08 +02:00
EatOreo left a comment

Much code and not much critical so lgtm

Much code and not much critical so lgtm
@ -0,0 +54,4 @@
health: (): ModuleHealth => (manager.state.ready ? 'ok' : 'warning'),
summary: () => {
const state = manager.state;
if (state.checking) return '- $(sync~spin) checking…';
Owner

is sync~spin an icon that is missing?

is sync~spin an icon that is missing?
Author
Owner

Fixed

Fixed
Stop tests depending on files in examples/ (#66)
All checks were successful
Grammar / Corpus and binding tests (push) Successful in 44s
Extension / Format, types, lint, extension tests (push) Successful in 1m36s
ea863a81bc
Points the navigation and vsRocqApi integration tests at the fixtures in `src/test/integration/test-assets` instead of `examples/`, which is a demo workspace with no stability guarantees.

Verified by running the integration suite with `examples/` removed: 41 passing.

Reviewed-on: #66
Reviewed-by: EatOreo <[email protected]>
Co-authored-by: Omid Marfavi <[email protected]>
Co-committed-by: Omid Marfavi <[email protected]>
Add license (#69)
All checks were successful
Grammar / Corpus and binding tests (push) Successful in 48s
Extension / Format, types, lint, extension tests (push) Successful in 2m16s
85937823b6
Fix #64

Reviewed-on: #69
Reviewed-by: Michael Jeppesen <[email protected]>
Co-authored-by: Omid Marfavi <[email protected]>
Co-committed-by: Omid Marfavi <[email protected]>
The base branch moved the generation bookkeeping into createRocqModelHandler,
so extension.ts keeps that version and only the status-bar wiring from this
branch.
Fold the dependency panel into the status view
Some checks failed
Grammar / Corpus and binding tests (pull_request) Successful in 45s
Extension / Format, types, lint, extension tests (pull_request) Failing after 1m48s
2af25dd835
Review comment: "maybe the old crocq dependencies view can just be merged
into the sidebar?"

The separate Crocq Dependencies webview no longer exists. The dependency
section of the status view now carries everything it showed: the banner,
each dependency's detected/required version and checked path, the hint, the
setup buttons (change the clightgen path, install clightgen with opam, show
the VsRocq extension), and the re-check and installation-guide links.

Status rows gained an optional badge, tone, fact list, hint and inline
actions; the host runs those actions (and row-local selects) and reports
failures instead of leaving them unhandled. The missing-dependencies
notification now focuses the status view, and the openDependencyPanel
command is gone.
Render the status view as a built-in tree
Some checks failed
Grammar / Corpus and binding tests (pull_request) Successful in 48s
Extension / Format, types, lint, extension tests (pull_request) Failing after 1m39s
1f661ffc73
The sidebar was a webview with custom HTML for no reason a built-in view
cannot serve. The Crocq Status view is now a TreeView: each module is a
collapsible group, its rows are tree items, facts become child items with
the value as the description, and setup actions become selectable child
items. The auto-generation toggle uses a native tree checkbox.

The status bar still focuses the view and asks it to refresh. Rows gained
an optional tone (icon colour) and lost the webview-only 'inert'/'primary'
flags; the HTML builder and its tests are gone, and the pure row-to-tree
mapping is unit tested instead.
Use one native tree view per status section
Some checks failed
Grammar / Corpus and binding tests (pull_request) Successful in 44s
Extension / Format, types, lint, extension tests (pull_request) Failing after 1m37s
8233e2f562
The auto-generate checkbox was drawn on the view's indent guide because it
was a child of a synthetic 'Rocq model' group. Give each module its own
tree view (Dependencies and Rocq model) instead: every row is a root item,
so the checkbox is no longer on a guide, and the native view headers
replace the group items. The status bar chip reveals the container.

Also accept the '~spin' codicon modifier when splitting row labels, so an
in-flight generation renders as an animated ThemeIcon instead of the
literal '$(sync~spin)' text.
Fix stale-model test isolation and drop the dependency banner
All checks were successful
Grammar / Corpus and binding tests (pull_request) Successful in 54s
Extension / Format, types, lint, extension tests (pull_request) Successful in 1m51s
61d7f919e6
The extension smoke test executed the create-model command with whatever
editor an earlier suite had left active, generating a model for
test-assets/sumarray.c and making the code-lens suite's stale fixture look
fresh. Close editors first so the command exits before clightgen runs; the
successful path is covered by the createRocqModel suite.

Also remove the 'All dependencies detected' and 'Some dependencies are
missing' banner rows: the dependency rows below already report each state.
Only an in-flight check still gets a spinner row.
Author
Owner

I merged the old crocq dependencies view into the sidebar.

I merged the old crocq dependencies view into the sidebar.
marfavi merged commit cb2045aa55 into feat/invalidate-stale-model 2026-10-22 16:05:02 +02:00
marfavi deleted branch feat/status-bar-panel 2026-10-22 16:05:02 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code2rocq/crocq!61
No description provided.