Skip to content
Merged
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
8 changes: 1 addition & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,7 @@ build/
!**/src/test/**/build/

### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
.idea/dataSources/
.idea/dataSources.local.xml
.idea/dataSources.xml
.idea/
*.iws
*.iml
*.ipr
Expand Down
8 changes: 0 additions & 8 deletions .idea/sonarlint.xml

This file was deleted.

2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ repositories {
}

dependencies {
implementation("org.itsallcode.openfasttrace:openfasttrace:4.5.0")
implementation("org.itsallcode.openfasttrace:openfasttrace:4.8.0")

intellijPlatform {
intellijIdea("2026.1.3")
Expand Down
1 change: 1 addition & 0 deletions doc/changes/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Changelog

* [0.10.0](changes_0.10.0.md)
* [0.9.0](changes_0.9.0.md)
* [0.8.1](changes_0.8.1.md)
* [0.8.0](changes_0.8.0.md)
Expand Down
11 changes: 11 additions & 0 deletions doc/changes/changes_0.10.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# OpenFastTrace IntelliJ Plugin 0.10.0, released 2026-07-04

We also updated the bundled OFT to 4.8.0 so tag filters now work end to end instead of being ignored.

## Bundled OpenFastTrace

OpenFastTrace 4.8.0

## Bugfix

* #39: Re-enabled tag filter test
2 changes: 1 addition & 1 deletion doc/changesets/22-bundle-live-templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ The plugin should package one repository-owned OFT live-template definition file

- [x] Copy the existing OFT live-template XML from `openfasttrace-ide-templates` into a plugin-owned resource location under `src/main/resources`
- [x] Add the missing OFT scenario live template to the bundled XML and keep the naming, placeholders, and OFT notation aligned with the existing template set
- [x] Register the bundled live-template resource in [plugin.xml](/home/seb/git/openfasttrace-intellij-plugin/src/main/resources/META-INF/plugin.xml)
- [x] Register the bundled live-template resource in `plugin`.
- [x] Confirm the Gradle plugin packaging includes the live-template resource in the built plugin artifact without introducing new dependencies

### Automated Verification
Expand Down
2 changes: 1 addition & 1 deletion doc/changesets/24-auto-completion-for-covers-section.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Ranking should be deterministic and acceptance-criteria-driven. The implementati
- [x] Implement deterministic ranking that prioritizes exact full-ID prefix matches over name-prefix matches, name-substring matches, and artifact-type prefix matches
- [x] Define stable tie-breakers for equally ranked matches so completion results stay predictable across runs and files
- [x] Keep completion suggestions limited to declared specification items and exclude coverage occurrences or synthetic non-declaration matches
- [x] Register the completion extension in [plugin.xml](/home/seb/git/openfasttrace-intellij-plugin/src/main/resources/META-INF/plugin.xml) without adding new dependencies
- [x] Register the completion extension in `plugin.xml` without adding new dependencies
- [x] Evaluate whether IntelliJ's normal popup behavior already satisfies the optional "next best matches near the input point" acceptance criterion and only add extra logic if a concrete gap remains

### Automated Verification
Expand Down
52 changes: 52 additions & 0 deletions doc/changesets/39-re-enable-disabled-tag-filter-test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# GH-39 Re-enable disabled tag filter test

## Goal

Re-enable the disabled tag-filter regression test in `OftTraceServiceTest` now that OpenFastTrace 4.8.0 includes the upstream tag-parser fix. The plugin should once again verify that tag filtering works end to end for traced Markdown content.

## Scope

In scope:

* Update the bundled OpenFastTrace dependency from 4.5.0 to 4.8.0 so the plugin exercises the fixed upstream tag parser.
* Remove the temporary `@Disabled` suppression from `testGivenTagFilterMatchingArtifactWhenTracingThenItIncludesTheArtifact`.
* Keep the existing tag-filter behavior and test intent unchanged.
* Verify the fix with focused tests and the normal project quality gates.

Out of scope:

* Adding a new user-facing tag-filter feature.
* Changing requirement or design text, because the current specification already covers tag filtering.
* Broadening trace filter semantics beyond the current comma-separated filter model.

## Design References

* [System Requirements](../system_requirements.md)
* [Quality Requirements](../design/quality_requirements.md)
* [Runtime View](../design/runtime_view.md)
* [Building Block View](../design/building_block_view.md)

## Strategy

Treat this as an upstream dependency alignment issue rather than a product feature change. Move the project to OpenFastTrace 4.8.0, drop the temporary test suppression, and confirm that the existing trace service still passes tag filters through to the library.

## Task List

- [ ] Create and checkout a new Git branch `fix/39-re-enable-disabled-tag-filter-test`

### Requirements And Design

- [x] Confirm that the existing `req~filter-trace-by-tags~1` and `scn~filter-run-configuration-by-tags~1` coverage already describes the intended behavior, so no requirement or design edits are needed.

### Implementation

- [x] Update the bundled OpenFastTrace dependency to 4.8.0 in `build.gradle.kts` and refresh `gradle.lockfile` as needed.
- [x] Remove the `@Disabled` annotation from `testGivenTagFilterMatchingArtifactWhenTracingThenItIncludesTheArtifact`.
- [x] Keep the tag-filter regression test focused on the existing Markdown-based end-to-end trace flow.

### Verification

- [x] Run the focused `OftTraceServiceTest` tag-filter case against the updated dependency.
- [ ] Run `./gradlew traceRequirements` to confirm the OFT trace remains clean.
- [ ] Run `./gradlew check`.
- [ ] Run `./gradlew verifyPlugin`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# GH-63 Show OFT Specification Item IDs in the Markdown Outline

## Goal

Let users see the OpenFastTrace specification item declarations in the Markdown document they are currently reading or editing through the native Markdown Structure / File Structure view. The outline keeps the existing Markdown header hierarchy, lists declarations in source order under the last preceding header, and opens the exact declaration when the user selects an item.

## Scope

In scope:

* Add a Markdown-only outline feature for OpenFastTrace specification item declarations.
* Preserve the native Markdown header tree and add specification item ID declaration nodes beneath the last preceding header.
* Show declarations that occur before the first header at the document root.
* Retain source order among declaration nodes under the same parent.
* Recognize the existing plain and single-backtick Markdown declaration variants.
* Navigate from an outline node to the declaration anchor in the focused editor.
* Rebuild the outline from current document text so unsaved edits are represented.
* Update requirements, design, user documentation, release notes, and Marketplace change notes for this user-visible feature.

Out of scope:

* RST, plain text, source code, coverage-tag files, and other non-Markdown formats.
* `Covers:` references, coverage tags, and other non-declaration OFT ID occurrences.
* Specification titles, trace status, coverage, trace defects, or requirement-network rendering.
* A separate OFT tool window, a project-wide OFT browser, or replacement of the existing Markdown Structure view or Go to Symbol.
* New third-party dependencies.

## Design References

* [GH-63](https://github.com/itsallcode/openfasttrace-intellij-plugin/issues/63)
* [System Requirements](../system_requirements.md)
* [Solution Strategy](../design/solution_strategy.md)
* [Building Block View](../design/building_block_view.md)
* [Runtime View](../design/runtime_view.md)
* [Quality Requirements](../design/quality_requirements.md)
* [GH-24 Auto-completion for Covers section](24-auto-completion-for-covers-section.md)

## Strategy

Add a new chain for Markdown specification-item outline navigation. The new requirement must state that only declaration IDs appear, that they retain source order below their last preceding Markdown header, that pre-header declarations appear at the root, and that selecting an item navigates to its declaration after unsaved edits.

Extend the Markdown-specific editor support rather than the project declaration index. Register a `StructureViewExtension` that preserves native Markdown structure nodes and contributes synthetic OFT declaration tree elements. Derive those elements from `OftSyntaxCore.findDefinitionSpecificationItems()` over the focused document text, map their offsets to the last preceding Markdown header, and reuse offset-based editor navigation. This preserves existing Markdown outline behavior and avoids stale index data while the user is editing.

## Task List

- [ ] Create and checkout a new Git branch `feat/63-show-oft-specification-item-ids-in-markdown-outline`

### Requirements And Design

- [ ] Add a feature item for the Markdown OpenFastTrace specification-item outline in `doc/system_requirements.md`.
- [ ] Add a user requirement stating that the Markdown Structure / File Structure view shows only recognized OFT declaration IDs while preserving Markdown headers.
- [ ] Add scenarios for placing declaration IDs under their last preceding header in source order, placing pre-header IDs at the root, navigating from an ID, and reflecting unsaved document edits.
- [ ] Stop and ask user for a review of the system requirements.
- [ ] Update `doc/design/solution_strategy.md` to record reuse of IntelliJ Structure-view extension APIs and current-document parsing rather than the project index.
- [ ] Extend `doc/design/building_block_view.md` with a Markdown specification-item outline component and its dependencies on Markdown PSI/Structure infrastructure and the shared syntax core.
- [ ] Add one runtime design item per outline scenario in `doc/design/runtime_view.md`, covering tree construction and placement, root-level declarations, navigation, and document-change refresh.
- [ ] Stop and ask user for a review of the design.

### Implementation

- [ ] Add a Markdown Structure-view extension registration without replacing the existing Markdown Structure-view factory.
- [ ] Implement an immutable, file-local outline model that extracts only `findDefinitionSpecificationItems()` matches from the current Markdown document and retains their source offsets and order.
- [ ] Implement synthetic, navigable outline tree elements that present the full OFT ID and navigate to its declaration offset in the editor.
- [ ] Associate each declaration with the closest preceding Markdown header PSI element and contribute it below that header; contribute declarations with no preceding header at the document root.
- [ ] Preserve all native Markdown header children and ordering while merging OFT declaration nodes, and exclude `Covers:` entries, coverage tags, invalid IDs, and incomplete IDs.
- [ ] Refresh the outline when the underlying Markdown document changes, including unsaved edits, without using the file-based project index.
- [ ] Keep the implementation limited to Markdown and IntelliJ Platform APIs; do not change RST, generic text, coverage-tag, project-index, or reference-resolution behavior. Don't use internal or deprecated APIs.

### Verification

- [ ] Add focused syntax/model tests for declaration extraction and source-order/header-association decisions, including plain and single-backtick declaration forms, pre-header declarations, and exclusion of references and invalid or incomplete IDs.
- [ ] Add IntelliJ light-fixture tests proving that Markdown headers remain present and that OFT IDs appear beneath the last preceding header in source order.
- [ ] Add IntelliJ light-fixture tests for root-level pre-header IDs, navigation to the exact declaration offset, and outline refresh after an unsaved document edit.
- [ ] Keep existing syntax, indexing, navigation, completion, and highlighting tests green.
- [ ] Keep the OpenFastTrace trace clean for the new `feat`, `req`, `scn`, `dsn`, `impl`, and `itest` artifacts in scope.
- [ ] Keep path coverage at or above 80%.
- [ ] Keep the dependency policy unchanged; add no third-party dependencies.
- [ ] Run `./gradlew test`.
- [ ] Run `./gradlew traceRequirements`.
- [ ] Run `./gradlew check`.
- [ ] Run `./gradlew verifyPlugin`.
- [ ] Keep the SonarQube Cloud quality gate green after CI analysis.

### Update User Documentation

- [ ] Update `README.md` and `doc/user_guide.md` to explain the Markdown Structure / File Structure outline, header placement, declaration-only scope, and navigation behavior.

## Version And Changelog Update

- [ ] Check whether the current project version is the latest GitHub release.
- [ ] GH-63 is a user-visible feature and therefore requires a minor release.
- [ ] Raise the version to the selected semantic version.
- [ ] Write the release-changelog entry for the selected version.
- [ ] Update to the latest OpenFastTrace library version available on GitHub.
- [ ] Add `## Bundled OpenFastTrace` followed by `OpenFastTrace <version>` immediately after the release summary and before the first release category.
- [ ] Copy the active release notes, including the bundled OpenFastTrace version, into the Marketplace `changeNotes` through the existing Markdown-to-HTML build flow.
- [ ] Update the release date to the release date.
- [ ] Ensure the issue list contains `#63: Show OFT Specification Item IDs in the Markdown Outline`.
4 changes: 4 additions & 0 deletions doc/demo/example/excuse-of-the-day.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ Covers:

Needs: scn

Tags: work

## Scenarios

### Pick a Late-Work Excuse
Expand All @@ -39,6 +41,8 @@ Covers:

Needs: dsn

Tags: work

## Design

### Random Excuse Selection
Expand Down
Loading