Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ in [`docs/PROJECT_DIRECTION_AND_STYLE.md`](./docs/PROJECT_DIRECTION_AND_STYLE.md
New code files and changed legacy code files are expected to carry the
repository SPDX/Copyright header.

A one-page contributor orientation is available in
[`docs/WORKSPACE_ORIENTATION.md`](./docs/WORKSPACE_ORIENTATION.md).

The initial Now / Next / Later roadmap is tracked in
[`docs/ROADMAP.md`](./docs/ROADMAP.md).
The SystemVerilog workflow boundary is tracked in
Expand All @@ -31,6 +34,9 @@ The later-track external editor integration plan is tracked in
[`docs/EXTERNAL_EDITOR_INTEGRATION_PLAN.md`](./docs/EXTERNAL_EDITOR_INTEGRATION_PLAN.md).
The module organization workflow is tracked in
[`docs/MODULE_ORGANIZATION_WORKFLOW.md`](./docs/MODULE_ORGANIZATION_WORKFLOW.md).
Open-source component disclosure for the npm and Python dependency
manifests is tracked in
[`docs/OPEN_SOURCE_COMPONENTS.md`](./docs/OPEN_SOURCE_COMPONENTS.md).

## Integration model

Expand Down
79 changes: 79 additions & 0 deletions docs/OPEN_SOURCE_COMPONENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Open-source components

This repository keeps the IDE surface pre-stable and dependency-light.
The component list below is derived from committed dependency manifests
only; it does not use environment inspection.

## Sources

| Ecosystem | Source file | Scope |
|---|---|---|
| npm | `editors/vscode-prototype/package.json` | Declared VS Code prototype dependencies |
| npm | `editors/vscode-prototype/package-lock.json` | Resolved VS Code prototype dependency tree |
| Python | `pyproject.toml` | Build, runtime, and optional test dependencies |

## npm components

The VS Code prototype declares no runtime npm dependencies. Its test
tooling dependency is listed below with the resolved lockfile tree.

| Component | Version | Scope | License in lockfile |
|---|---:|---|---|
| `@vscode/test-electron` | 2.5.2 | direct dev dependency | MIT |
| `agent-base` | 7.1.4 | transitive dev dependency | MIT |
| `ansi-regex` | 6.2.2 | transitive dev dependency | MIT |
| `chalk` | 5.6.2 | transitive dev dependency | MIT |
| `cli-cursor` | 5.0.0 | transitive dev dependency | MIT |
| `cli-spinners` | 2.9.2 | transitive dev dependency | MIT |
| `core-util-is` | 1.0.3 | transitive dev dependency | MIT |
| `debug` | 4.4.3 | transitive dev dependency | MIT |
| `emoji-regex` | 10.6.0 | transitive dev dependency | MIT |
| `get-east-asian-width` | 1.5.0 | transitive dev dependency | MIT |
| `http-proxy-agent` | 7.0.2 | transitive dev dependency | MIT |
| `https-proxy-agent` | 7.0.6 | transitive dev dependency | MIT |
| `immediate` | 3.0.6 | transitive dev dependency | MIT |
| `inherits` | 2.0.4 | transitive dev dependency | ISC |
| `is-interactive` | 2.0.0 | transitive dev dependency | MIT |
| `is-unicode-supported` | 2.1.0 | transitive dev dependency | MIT |
| `isarray` | 1.0.0 | transitive dev dependency | MIT |
| `jszip` | 3.10.1 | transitive dev dependency | MIT OR GPL-3.0-or-later |
| `lie` | 3.3.0 | transitive dev dependency | MIT |
| `log-symbols` | 6.0.0 | transitive dev dependency | MIT |
| `log-symbols/node_modules/is-unicode-supported` | 1.3.0 | transitive dev dependency | MIT |
| `mimic-function` | 5.0.1 | transitive dev dependency | MIT |
| `ms` | 2.1.3 | transitive dev dependency | MIT |
| `onetime` | 7.0.0 | transitive dev dependency | MIT |
| `ora` | 8.2.0 | transitive dev dependency | MIT |
| `pako` | 1.0.11 | transitive dev dependency | MIT AND Zlib |
| `process-nextick-args` | 2.0.1 | transitive dev dependency | MIT |
| `readable-stream` | 2.3.8 | transitive dev dependency | MIT |
| `restore-cursor` | 5.1.0 | transitive dev dependency | MIT |
| `safe-buffer` | 5.1.2 | transitive dev dependency | MIT |
| `semver` | 7.7.4 | transitive dev dependency | ISC |
| `setimmediate` | 1.0.5 | transitive dev dependency | MIT |
| `signal-exit` | 4.1.0 | transitive dev dependency | ISC |
| `stdin-discarder` | 0.2.2 | transitive dev dependency | MIT |
| `string_decoder` | 1.1.1 | transitive dev dependency | MIT |
| `string-width` | 7.2.0 | transitive dev dependency | MIT |
| `strip-ansi` | 7.2.0 | transitive dev dependency | MIT |
| `util-deprecate` | 1.0.2 | transitive dev dependency | MIT |

## Python components

Python dependencies are declared in `pyproject.toml`. The repository does
not currently commit a Python lockfile, so this table lists the static
declared requirements rather than resolved transitive packages.

| Component | Version specifier | Scope |
|---|---|---|
| `hatchling` | any version accepted by the build frontend | build backend |
| `jsonschema` | `>=4` | runtime dependency |
| `pytest` | any version accepted by the installer | optional `test` extra |

## Notes

- The repository package itself is licensed under the `LICENSE` file.
- The npm license column is copied from the committed lockfile.
- Python dependency license metadata is not declared in `pyproject.toml`;
verify it from the package artifacts selected by the installer when
preparing a release artifact.
95 changes: 95 additions & 0 deletions docs/WORKSPACE_ORIENTATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Workspace Orientation

This repository is the SystemVerilog IDE spin-out from `pccx-lab`. Its
near-term job is to provide editor-facing surfaces over controlled CLI and
data contracts: diagnostics, declaration navigation, module organization
views, checked examples, local VS Code prototype commands, and bounded
status/context summaries.

The repo is intentionally data-boundary-first. Reusable analysis and
verification behavior belongs behind the `pccx-lab` CLI/core boundary.
Launcher, provider, hardware, marketplace, telemetry, upload, release,
and write-back paths are outside this repository unless a later reviewed
boundary explicitly adds them.

## Top-Level Map

| Path | Role |
|---|---|
| `src/pccx_ide_cli/` | Python CLI facade and scanner-based data exporters. |
| `tests/` | Pytest coverage for CLI contracts, schema shape, fixtures, and repository hygiene. |
| `fixtures/` | Small SystemVerilog and log inputs used by CLI tests and examples. |
| `schema/diagnostics-v0.json` | Current diagnostics envelope schema consumed by tests and examples. |
| `docs/` | Direction, handoff, workflow, editor bridge, and module organization docs. |
| `docs/examples/` | Checked JSON examples for editor bridge and handoff consumers. |
| `editors/vscode-prototype/` | Experimental local VS Code extension scaffold and command facade. |
| `scripts/` | Smoke checks and source-header policy guard. |

## Main Entry Points

- `python3 -m pccx_ide_cli check <file>` emits the diagnostics envelope
from the local scaffold or, when explicitly selected, the `pccx-lab`
backend.
- `python3 -m pccx_ide_cli index <path>` and
`python3 -m pccx_ide_cli locate <path> <name>` provide early
scanner-based declaration data for editor navigation.
- `python3 -m pccx_ide_cli organization <path>` plus the related
hierarchy, dependency, module-health, module-context, and refactor
proposal commands provide read-only module organization data.
- `python3 -m pccx_ide_cli xsim-log <log>` and
`python3 -m pccx_ide_cli problems ...` transform existing local
diagnostics/log data into editor-friendly problem records.
- `node editors/vscode-prototype/bin/pccx-vscode-prototype.mjs ...`
exercises the VS Code prototype translation layer in checked-example or
explicit live mode.

## Development Loop

Use the Python package from the repository root:

```bash
python3 -m pccx_ide_cli check fixtures/missing_endmodule.sv
python3 -m pccx_ide_cli index fixtures/modules/ --format text
python3 -m pccx_ide_cli module-health fixtures/organization/hierarchy_top.sv --format json
```

Run the default checks:

```bash
python3 -m pytest -q
bash scripts/editor-bridge-smoke.sh
bash scripts/vscode-adapter-smoke.sh
python3 scripts/check-source-headers.py
```

The VS Code prototype tests live under `editors/vscode-prototype/test/`
and are Node-based. They are mostly static/mock tests and checked-example
tests; the Extension Host smoke is a guarded local runtime smoke, not a
product claim.

## Boundary Rules To Preserve

- Keep the IDE as an editor cockpit over data contracts and controlled
command shapes.
- Do not duplicate reusable `pccx-lab` analysis logic in this repo.
- Do not add launcher execution, provider calls, KV260 runtime access,
raw shell command strings, background workspace scanning, telemetry,
upload, release, or write-back behavior.
- Keep live workspace behavior explicit and opt-in.
- Keep adapter outputs deterministic, bounded, and testable.
- Treat CLI/editor payloads as pre-stable unless their owning contract
says otherwise.

## Where To Read Next

- [`PROJECT_DIRECTION_AND_STYLE.md`](./PROJECT_DIRECTION_AND_STYLE.md)
pins current direction, safety boundaries, and style policy.
- [`EDITOR_BRIDGE_CONTRACT.md`](./EDITOR_BRIDGE_CONTRACT.md) describes
the external editor bridge payloads.
- [`MODULE_ORGANIZATION_WORKFLOW.md`](./MODULE_ORGANIZATION_WORKFLOW.md)
documents scanner-based hierarchy, dependency, and proposal-only
refactor planning data.
- [`HANDOFF.md`](./HANDOFF.md) tracks integration boundaries with
`pccx-lab`, launcher handoff examples, and read-only status surfaces.
- [`../editors/vscode-prototype/README.md`](../editors/vscode-prototype/README.md)
explains the local VS Code extension scaffold and command facade.
22 changes: 22 additions & 0 deletions editors/vscode-prototype/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@ integration tests, and they run without npm install, Vivado, xsim, or
hardware. A limited opt-in Extension Host runtime smoke exists for local
dependency-policy review; it is not a product claim.

The package includes a copied pccx aperture-mark icon and
`pccx SystemVerilog Light` / `pccx SystemVerilog Dark` color themes derived
from the local `pccx-UI/Systemverilog-IDE` design-system package. These assets are
visual branding only; they do not replace the host-theme-first
presentation boundary and do not make the theme surface complete.

A text-only first-use walkthrough for the command palette, Problems/Output
panels, and current status-bar boundary is tracked in
[`docs/typical-first-time-use.md`](./docs/typical-first-time-use.md).

## Boundary Roles

`systemverilog-ide` is the editor cockpit: it owns VS Code command
Expand Down Expand Up @@ -148,6 +158,18 @@ The contributed commands are:
- `pccxSystemVerilog.showPccxLabBackendStatus`
- `pccxSystemVerilog.showDiagnosticsHandoffSummary`

The contributed color themes are:

- `pccx SystemVerilog Light`
- `pccx SystemVerilog Dark`

Light/dark maintenance expectations are documented in
[`docs/theme-consistency.md`](./docs/theme-consistency.md).

The extension icon is `assets/logo/aperture-mark-128.png`, with source
SVG logo assets retained under `assets/logo/`. The copied-asset notice is
tracked in `assets/PCCX_UI_NOTICE.md`.

The prototype-only settings are:

- `pccxSystemVerilog.mode`, default `checkedExample`
Expand Down
11 changes: 11 additions & 0 deletions editors/vscode-prototype/assets/PCCX_UI_NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# pccx-UI Asset Notice

The logo and color theme assets under `editors/vscode-prototype/assets/`
and `editors/vscode-prototype/themes/` were derived from the local
`/home/hwkim/Desktop/pccx-UI/Systemverilog-IDE/` design-system package.

No `LICENSE` or `NOTICE` file was present in that source package when
these assets were copied. The files are included here as pccxai project
branding and visual theme assets only. They do not change extension
runtime behavior, LSP scope, marketplace packaging, or stable API/ABI
claims.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions editors/vscode-prototype/assets/logo/aperture-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions editors/vscode-prototype/assets/logo/lockup-horizontal.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
97 changes: 97 additions & 0 deletions editors/vscode-prototype/docs/theme-consistency.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Theme Consistency Rules

The VS Code prototype contributes paired local themes:
`pccx SystemVerilog Light` and `pccx SystemVerilog Dark`. The light theme
comes from the pccx-UI integration work and the dark theme is its follow-up
variant. Keep them reviewed as one pair so the dark theme stays a contrast
variant of the same SystemVerilog editor surface, not a separate design
system.

This document is a maintenance rule set for:

- `../themes/pccx-systemverilog-light-color-theme.json`
- `../themes/pccx-systemverilog-dark-color-theme.json`
- the `contributes.themes` entries in `../package.json`

It does not make the prototype marketplace-ready, LSP-backed, or a complete
custom theme engine. The presentation policy remains host-theme-first for
runtime UI records and future webview-like surfaces.

## Pairing Rules

- Both theme files must keep `semanticHighlighting: true`.
- Both theme files must keep the same top-level shape: `name`, `type`,
`semanticHighlighting`, `colors`, and `tokenColors`.
- `package.json` must contribute both themes together. The light entry uses
`uiTheme: "vs"` and the dark entry uses `uiTheme: "vs-dark"`.
- The `colors` maps should keep the same VS Code color keys unless a key is
demonstrably unavailable or inappropriate for one theme. Any exception
should be documented in this file or the adjacent review notes.
- The `tokenColors` arrays must keep the same bucket names, bucket order, and
scope lists. Only foreground values should differ between light and dark.
- Shared SystemVerilog token buckets are comments, keywords, types,
identifiers, literals, diagnostics/invalid tokens, and source default.
- Shared workbench surface groups are activity bar, title bar, command center,
editor, gutter, side bar, list, panel, tabs, status bar, notifications,
quick input, terminal, and text links.

## Shared Semantic Roles

Use the same semantic role when choosing different light and dark values.

| Role | Light rule | Dark rule |
| --- | --- | --- |
| Primary pccx action/accent | Use `#0b5fff` for primary action and focus surfaces. | Keep `#0b5fff` for the same structural accent surfaces. |
| Editor foreground/background | Dark text on white or near-white editor surfaces. | Light text on near-black editor surfaces. |
| Muted text | Lower-contrast gray that remains readable on light surfaces. | Higher-luminance gray that remains readable on dark surfaces. |
| Selection/focus fill | Low-saturation blue fill that does not obscure syntax. | Deeper blue fill with enough contrast from the editor shell. |
| Hover/secondary fill | Neutral gray fill distinct from the editor background. | Near-black or slate fill distinct from the editor background. |
| Error/deleted | Red role for diagnostics and deletion. | Brighter red role for diagnostics and deletion. |
| Warning/literals | Amber role for warnings and literal-like tokens. | Brighter amber role for warnings and literal-like tokens. |
| Info/identifier | Blue role for information and identifier-like tokens. | Brighter blue role for information and identifier-like tokens. |
| Added | Green role for additions. | Brighter green role for additions. |

The shared accent `#0b5fff` is expected on paired structural surfaces such as
buttons, focus borders, progress bars, modified gutters, activity badges, tab
active borders, panel active borders, and prominent status bar items. A dark
theme may use a brighter related value for hover text, links, cursor, or syntax
when contrast requires it.

## Allowed Differences

The dark theme may differ from the light theme for contrast and legibility:

- background luminance and shell layering;
- default, muted, inactive, and placeholder foreground values;
- selection, hover, line-highlight, and find-match fills;
- action hover colors;
- terminal ANSI bright colors;
- diagnostic foreground brightness;
- link and cursor foreground brightness.

Avoid introducing a new hue family or changing the meaning of a token bucket
in only one theme. For example, if keywords are purple in the light theme,
the dark theme should use a contrast-adjusted purple rather than moving
keywords to blue or green.

## Review Checklist

Before merging future theme changes:

- Compare the two JSON files for key parity in `colors`.
- Compare the two `tokenColors` arrays for matching bucket names, order, and
scope lists.
- Confirm both themes still appear in `package.json` with the expected
`uiTheme` values and file paths.
- Check that the primary pccx action/accent surfaces still use `#0b5fff`
unless a specific contrast exception is recorded.
- Review diagnostics, gutter, and terminal colors as semantic pairs, not as
isolated palette values.
- Capture or review both themes with the same fixture workspace, editor tab,
side bar, panel, status bar, selection state, and representative
SystemVerilog syntax.

Do not use theme documentation or screenshots to imply marketplace
availability, production readiness, stable API/ABI, LSP support, provider
runtime calls, launcher calls, pccx-lab execution, or completed custom theme
support.
Loading