Skip to content

Commit aa0cb9d

Browse files
authored
Merge pull request #33 from ketupia/release/v0.0.8
Release v0.0.8
2 parents c2f78e9 + 420505b commit aa0cb9d

6 files changed

Lines changed: 117 additions & 98 deletions

File tree

.github/CONTRIBUTING.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Contributing Guidelines
2+
3+
## General Development Guidelines
4+
5+
- Use class-based registries and singletons for shared services.
6+
- Centralize shared types and interfaces in `src/types/ash.ts`.
7+
- Separate pure logic from VS Code integration.
8+
- Define clear public and private APIs.
9+
- Document module boundaries and APIs.
10+
- Maintain and expand tests for pure logic modules.
11+
- Keep documentation up to date after significant changes.
12+
- Build and test after every change (`npm test`).
13+
14+
## Commenting and Documentation Guidance
15+
16+
- Prefer comprehensive source code documentation over separate markdown files.
17+
- Write detailed JSDoc comments for all public classes, methods, and interfaces.
18+
- Document the purpose, responsibilities, and behavior of each component.
19+
- Include architectural patterns and design decisions in use.
20+
- Document complex algorithms and non-obvious implementation details inline.
21+
- Source code should be self-documenting; explain the "what" and "how" of current functionality.
22+
- Avoid redundant external documentation and keep README focused on setup and overview.
23+
- Remove obsolete comments and files; always update comments to reflect current functionality.
24+
25+
## AI Coding Preferences
26+
27+
- Prefer declarative approaches over inferred/heuristic logic.
28+
- For example, always use explicit fields (like a `command` property) in configuration and data
29+
structures, rather than inferring intent from names, titles, or other heuristics.
30+
- This ensures maintainability, clarity, and reduces ambiguity for both humans and AI agents.
31+
32+
- Design semantic APIs and service interfaces.
33+
- Method names and parameters should express the caller's intent, not implementation details.
34+
- For example, use `getBlockStartLineNumber()` and `getBlockEndLineNumber()` instead of
35+
`getLineNumber()` and `getLineNumberFromRegexMatch()`.
36+
- The caller should not need to understand internal implementation quirks (like regex match
37+
positions including newlines) to use the API correctly.
38+
- Service boundaries should be based on domain concepts, not technical implementation details.
39+
- Function signatures should make the purpose and usage clear without requiring knowledge of
40+
internal algorithms or data structures.
41+
42+
- Favor pipeline-style processing with helper functions.
43+
- When implementing logic that involves filtering, mapping, or transforming collections, prefer a
44+
pipeline of array methods (`filter`, `map`, `flatMap`, etc.) with small, well-named helper
45+
functions for each transformation step.
46+
- This style should resemble Elixir's `Enum` pipelines: break up complex logic into a series of
47+
focused, composable steps.
48+
- Avoid deeply nested loops or imperative code when a pipeline with helpers would be clearer.
49+
- Use early returns and guard clauses in helpers to keep each step focused and readable.
50+
- Example: Instead of a large nested loop, use chained array methods and extract the innermost
51+
logic into a named function.

.github/RELEASE.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Release Checklist Template
2+
3+
For each release, copy this checklist to a new file (e.g., `release_plan_vX.Y.Z.md`) in the project
4+
root.
5+
6+
Refer to this file for the canonical release workflow and checklist template.
7+
8+
```
9+
- [ ] Create and check out a release branch (`git checkout -b release/vX.Y.Z`)
10+
- [ ] Build the project and run all tests (`npm test`)
11+
- [ ] Update `CHANGELOG.md` (add a new section at the top for this release)
12+
- [ ] Organize changelog by release version (newest to oldest)
13+
- [ ] Only update the newest (topmost) section
14+
- [ ] Add a summary of all merged PRs since the last release
15+
- [ ] Include PR titles, numbers, and brief user-facing descriptions
16+
- [ ] Group changes by type (Features, Fixes, Refactors) if possible
17+
- [ ] Review and approve the changelog
18+
- [ ] Update the version number in `package.json` (semantic versioning, e.g., `X.Y.Z`)
19+
- [ ] Commit all changes
20+
- [ ] Push all changes
21+
- [ ] Create a pull request from the release branch to main
22+
- [ ] Review, approve, and merge the pull request into the main branch (human)
23+
- [ ] Create and push a new git tag (format: `vX.Y.Z`, matches `package.json`)
24+
25+
Check off each item as you complete them.
26+
```

.github/copilot-instructions.md

Lines changed: 17 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Copilot Instructions for ash-studio VS Code Extension
22

3+
## Quick Reference & Table of Contents
4+
5+
- [Project Overview](#project-overview)
6+
- [Architecture & Patterns](#architecture--patterns)
7+
- [Developer Workflows](#developer-workflows)
8+
- [Project Conventions](#project-conventions)
9+
- [Integration Points](#integration-points)
10+
- [AI Coding Preferences](#ai-coding-preferences)
11+
- [Modularization & Interface-Driven Architecture](#modularization--interface-driven-architecture)
12+
- [Build & Test After Each Change](#build--test-after-each-change)
13+
- [Release Process](RELEASE.md)
14+
- [Contributing Guidelines](CONTRIBUTING.md)
15+
316
## Project Overview
417

518
- This is a VS Code extension to enhance development for the Ash Framework (Elixir).
@@ -55,40 +68,10 @@
5568
- No external APIs or services; all logic is local to the extension.
5669
- Relies on VS Code extension API and Elixir language configuration.
5770

58-
## Examples
59-
60-
- See `src/ashSidebarProvider.ts` for sidebar logic and section detail display.
61-
- See `src/ashSectionUtils.ts` and `src/ashSectionDetailUtils.ts` for block and section detail
62-
parsing.
63-
- See `feature-plan.md` for current and planned features.
64-
6571
## AI Coding Preferences
6672

67-
- **Prefer declarative approaches over inferred/heuristic logic.**
68-
- For example, always use explicit fields (like a `command` property) in configuration and data
69-
structures, rather than inferring intent from names, titles, or other heuristics.
70-
- This ensures maintainability, clarity, and reduces ambiguity for both humans and AI agents.
71-
72-
- **Design semantic APIs and service interfaces.**
73-
- Method names and parameters should express the caller's intent, not implementation details.
74-
- For example, use `getBlockStartLineNumber()` and `getBlockEndLineNumber()` instead of
75-
`getLineNumber()` and `getLineNumberFromRegexMatch()`.
76-
- The caller should not need to understand internal implementation quirks (like regex match
77-
positions including newlines) to use the API correctly.
78-
- Service boundaries should be based on domain concepts, not technical implementation details.
79-
- Function signatures should make the purpose and usage clear without requiring knowledge of
80-
internal algorithms or data structures.
81-
82-
- **Favor pipeline-style processing with helper functions.**
83-
- When implementing logic that involves filtering, mapping, or transforming collections, prefer a
84-
pipeline of array methods (`filter`, `map`, `flatMap`, etc.) with small, well-named helper
85-
functions for each transformation step.
86-
- This style should resemble Elixir's `Enum` pipelines: break up complex logic into a series of
87-
focused, composable steps.
88-
- Avoid deeply nested loops or imperative code when a pipeline with helpers would be clearer.
89-
- Use early returns and guard clauses in helpers to keep each step focused and readable.
90-
- Example: Instead of a large nested loop, use chained array methods and extract the innermost
91-
logic into a named function.
73+
See [CONTRIBUTING.md](CONTRIBUTING.md) for AI coding preferences and detailed development
74+
guidelines.
9275

9376
## Modularization & Interface-Driven Architecture
9477

@@ -101,37 +84,6 @@
10184
private.
10285
- When adding new features, first define the interface and types, then implement the logic.
10386

104-
## Commenting and Documentation Guidance
105-
106-
- **Prefer comprehensive source code documentation over separate markdown files.**
107-
- Write detailed JSDoc comments for all public classes, methods, and interfaces.
108-
- Focus on explaining WHAT the code does and HOW it works in its current state.
109-
- Document the purpose, responsibilities, and behavior of each component.
110-
- Include architectural patterns and design decisions that are currently in use.
111-
- Document complex algorithms, business logic, and non-obvious implementation details inline.
112-
113-
- **Source code should be self-documenting:**
114-
- Comments should explain the "what" and "how" of current functionality.
115-
- Include examples of usage in JSDoc when helpful.
116-
- Document parameters, return types, and thrown exceptions thoroughly.
117-
- Add comments explaining any non-trivial regex patterns, algorithms, or workarounds.
118-
- Reference related methods/classes in comments when there are important relationships.
119-
- Explain the architecture and responsibilities of each service/class.
120-
121-
- **Avoid redundant external documentation:**
122-
- Don't create separate markdown files that duplicate information better captured in code
123-
comments.
124-
- Keep README files focused on setup, overview, and getting started.
125-
- Use inline documentation for implementation details, API usage, and architectural notes.
126-
127-
- **Maintenance guidelines for comments:**
128-
- Do not leave comments about obsolete or deprecated functionality in the codebase.
129-
- Avoid lengthy refactoring history or "before/after" comparisons in comments.
130-
- Always update or rewrite comments to reflect the current, intended functionality and usage.
131-
- Remove files that are no longer needed, rather than leaving placeholders or deprecation notes.
132-
- Documentation and comments should help future maintainers understand the present state and
133-
current architecture.
134-
13587
## Build & Test After Each Change
13688

13789
- After making any code change (especially refactors or type/interface moves), always:
@@ -142,37 +94,5 @@
14294
- When a test fails and the cause is unclear, ask for clarification. Sometimes the source is wrong,
14395
sometimes the test is wrong—ask for help to determine which.
14496

145-
## General Development Guidelines
146-
147-
- **Use Class-Based Registries and Singletons:**
148-
For shared registries or service-like modules, define a class with clear public methods and export
149-
a singleton instance. This approach improves testability, extensibility, and aligns with familiar
150-
patterns from C# and Elixir.
151-
152-
- **Centralize Shared Types and Interfaces:**
153-
Move all shared interfaces and types to a dedicated types file (e.g., `src/types/ash.ts`). Update
154-
all imports to use these centralized definitions, and ensure only the shared types module exports
155-
them.
156-
157-
- **Separate Pure Logic from VS Code Integration:**
158-
Keep parsing, data modeling, and utility logic free of VS Code API dependencies. Place all VS
159-
Code-dependent code (such as providers, commands, and UI) in a dedicated directory (e.g.,
160-
`src/features/`).
161-
162-
- **Define Clear Public and Private APIs:**
163-
Only export public interfaces and functions. Mark helpers and internal functions as private or
164-
leave them unexported.
165-
166-
- **Document Module Boundaries and APIs:**
167-
Add module-level comments describing the public API and intended usage for each module.
168-
169-
- **Maintain and Expand Tests:**
170-
Ensure tests import only public APIs. Add or expand unit tests for pure logic modules, especially
171-
when extracting or refactoring types and interfaces.
172-
173-
- **Keep Documentation Up to Date:**
174-
Revise documentation files to reflect the current structure and conventions after any significant
175-
change.
176-
177-
- **Build and Test After Every Change:**
178-
Run all tests (`npm test`) after any code change. Fix all errors and warnings before proceeding.
97+
For the full release workflow, see [RELEASE.md](RELEASE.md). For detailed contribution and
98+
documentation guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ test-results/
2828
test-package.vsix
2929

3030
examples/**
31+
32+
33+
release_plan_v*.md

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Changelog
2+
3+
## [0.0.8] - 2025-08-04
4+
5+
### Features
6+
7+
- feat: enhance navigation with cross-reference code lenses
8+
([#32](https://github.com/ketupia/ash-studio-vscode-extension/pull/32))
9+
- Adds cross-reference code lenses for improved navigation between code interfaces and actions.
10+
- feat: add AshJsonApi configuration and update tests
11+
([#31](https://github.com/ketupia/ash-studio-vscode-extension/pull/31))
12+
- feat: add GraphQL configuration and update registry and tests
13+
([#30](https://github.com/ketupia/ash-studio-vscode-extension/pull/30))
14+
15+
### Fixes
16+
17+
- fix: ensure mix command spawns with shell:true on Windows for cross-platform compatibility
18+
([#27](https://github.com/ketupia/ash-studio-vscode-extension/pull/27))
19+
- Ensures diagram generation works on Windows by spawning `mix` with `{ shell: true }`.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "Ash Studio enhances your workflow by enabling quick navigation between Ash sections and visualizing your Ash code with mermaid diagrams.",
55
"shortDescription": "Navigate and visualize Ash DSL files in VS Code.",
66
"publisher": "ketupia",
7-
"version": "0.0.7",
7+
"version": "0.0.8",
88
"engines": {
99
"vscode": "^1.75.0"
1010
},

0 commit comments

Comments
 (0)