Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
43a873a
Added Ollama Support for local AI models. Updated Readme and package.…
Lunar2074 Jul 7, 2026
b1d5b13
added test
Lunar2074 Jul 8, 2026
bf39ce4
added improvements to the speech to text features
Lunar2074 Jul 8, 2026
2656d14
Added AI provider setup functionality and updated related files.
Lunar2074 Aug 24, 2026
f895d8c
Updated ReadMe
Lunar2074 Aug 24, 2026
3527697
some fixes
Lunar2074 Aug 27, 2026
86ff41f
Automate Marketplace publish on merge to main via semantic-release
Lunar2074 Aug 27, 2026
3234190
Added AI model expansions to allow use of other AI models and system …
Lunar2074 Sep 8, 2026
daa996b
Speed Improvements
Lunar2074 Sep 8, 2026
19c0696
Now includes API and can recommend models
Lunar2074 Sep 8, 2026
22f4242
Cut AI provider setup latency from ~1 minute to ~1 second
Lunar2074 Sep 8, 2026
f743554
Speed and ease of use changes. Changes done to voice output
Lunar2074 Sep 8, 2026
ebced11
further improvements
Lunar2074 Sep 8, 2026
e08ec7e
Untracked External Commands. Fixed some bugs.
Lunar2074 Sep 8, 2026
be0b890
Fixed some tests appearing as failed
Lunar2074 Sep 8, 2026
28893a5
Stop voice dependency setup from re-running on every activation
Lunar2074 Sep 21, 2026
4e51681
created a wiki for EchoCode for both users and developers
Lunar2074 Sep 21, 2026
b9ca949
Add Level 0 and Level 1 data-flow diagrams for every feature
Lunar2074 Sep 23, 2026
3d1d3dc
Render feature diagrams to SVG and embed them in the wiki pages
Lunar2074 Sep 23, 2026
db91834
Further Wiki Edits
Lunar2074 Sep 23, 2026
c8796cf
Stop tracking the feature diagrams and their generators
Lunar2074 Sep 24, 2026
6253cfa
Track the rendered diagram SVGs, keep sources and generators local
Lunar2074 Sep 24, 2026
c46e9ae
Add five slide diagrams for the research deck
Lunar2074 Sep 29, 2026
a26723c
Use BLV rather than BVI in the diagrams
Lunar2074 Sep 29, 2026
bbdc730
Merge branch 'main' into Local-AI-branch
Lunar2074 Oct 1, 2026
c151a3f
fixed a testing bug
Lunar2074 Oct 1, 2026
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
30 changes: 28 additions & 2 deletions .github/workflows/echocode-tests.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name: EchoCode Tests

on:
push:
branches: ["**"]
Expand All @@ -6,16 +8,40 @@ on:

jobs:
run-tests:
# The suite is run against several Node majors because the test harness behaves
# differently on each, and the difference is not cosmetic:
#
# - Node 20/22 have no native TypeScript support, so ts-node compiles test/*.ts.
# With tsconfig's `module: Node16` and no `"type": "module"` in package.json,
# that output is CommonJS: `require` exists, and `import.meta` is a hard
# compile error (TS1470).
# - Node 24 strips types natively and infers ESM from the `import` syntax, so the
# same files load as ES modules: `import.meta` is legal, and `require` is not
# defined at all.
#
# Code can therefore be correct on one major and fail outright on another. Node 20
# is closest to what ships to users (VS Code 1.99's extension host bundles Node 20
# via Electron), while contributors on a current Node install hit the 24 behaviour.
# Testing only one hides breakage in the other until someone runs CI by hand.
name: tests (node ${{ matrix.node-version }})
runs-on: ubuntu-latest

strategy:
# Report every version's result. Cancelling siblings on the first failure would
# hide exactly the thing this matrix exists to reveal: which majors are affected.
fail-fast: false
matrix:
node-version: [20, 22, 24]

steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20
node-version: ${{ matrix.node-version }}

- name: Install dependencies
run: npm install

- name: Run automated tests
run: xvfb-run -a npm test
run: xvfb-run -a npm test
27 changes: 0 additions & 27 deletions .github/workflows/publish.yml

This file was deleted.

32 changes: 32 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Release

on:
push:
branches: [main]

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci

- name: Run automated tests
run: xvfb-run -a npm test

- name: Release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VSCE_PAT: ${{ secrets.MARKETPLACE_PAT }}
21 changes: 20 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,24 @@ coverage/
echocode-venv/

TestFile1.cpp
# Generated per-machine on activation from the user's own installed
# VS Code commands (see buildExternalCommandRegistry). Regenerates if
# absent, so it must never be committed.
Core/program_settings/program_settings/external_commands.json
Core/program_settings/program_settings/external_commands.json
wiki/.obsidian/app.json
wiki/.obsidian/appearance.json
wiki/.obsidian/core-plugins.json
wiki/.obsidian/workspace.json

# Feature diagrams: the rendered SVGs are tracked, because the wiki pages embed them
# and they must resolve in a fresh clone. The .drawio sources and the generators that
# produce both are local-only:
# node wiki/diagrams/generate.js && python3 wiki/diagrams/render_svg.py
#
# Note the shape of these rules. Excluding "wiki/diagrams/" outright would make the
# negations below impossible — git cannot re-include a file whose parent directory is
# excluded — so the contents are excluded and svg/ is re-included instead.
wiki/diagrams/*
!wiki/diagrams/svg/
wiki/diagrams/svg/*
!wiki/diagrams/svg/*.svg
18 changes: 18 additions & 0 deletions .releaserc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" }],
["@semantic-release/npm", { "npmPublish": false }],
[
"@semantic-release/git",
{
"assets": ["package.json", "package-lock.json", "CHANGELOG.md"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
["@semantic-release/exec", { "publishCmd": "npx vsce publish -p ${VSCE_PAT}" }],
"@semantic-release/github"
]
}
23 changes: 18 additions & 5 deletions .vscodeignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# 🚀 Ignore VS Code workspace settings
!node_modules/**

# 🚀 Ignore Node.js dependencies (not needed in the packaged extension)
node_modules/
# 🚀 node_modules is intentionally NOT ignored here.
# vsce's default packaging resolves node_modules against "dependencies" in
# package.json and prunes devDependencies automatically; excluding the whole
# folder would strip out runtime deps (mammoth, pdf-parse, dotenv, say,
# sound-play, ffmpeg-static, fluent-ffmpeg) and break the extension for
# anyone installing it from the Marketplace.

# 🚀 Ignore Git metadata
.git/
Expand All @@ -13,8 +14,20 @@ node_modules/

# 🚀 Ignore test-related files
.vscode-test/
.vscode-test.mjs
test/

# 🚀 Ignore the TS command-registry scaffold used only by the test suite
# (the real entry point is extension.js at the repo root; nothing at
# runtime requires src/ or its compiled out/ output).
src/
out/
tsconfig.json

# 🚀 Ignore CI/CD and repo scaffolding not needed by an installed extension
.github/
vsc-extension-quickstart.md

# 🚀 Ignore temporary or cache files
**/*.map
**/.vscode-test.*
Expand Down
39 changes: 39 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Contributing to EchoCode

## Commit message convention

Every push to `main` runs [semantic-release](https://semantic-release.gitbook.io/), which computes the next
version number, updates `CHANGELOG.md`, tags the release, and publishes the extension to the VS Code
Marketplace automatically — no manual version bump required. It does this by reading your commit messages, so
commits on `main` (including squash-merge commit messages) must follow
[Conventional Commits](https://www.conventionalcommits.org/):

```
<type>(<optional scope>): <description>

[optional body]

[optional footer(s)]
```

Common types and what they trigger:

| Type | Effect |
| --- | --- |
| `fix:` | Patch release (e.g. `2.1.0` → `2.1.1`) |
| `feat:` | Minor release (e.g. `2.1.0` → `2.2.0`) |
| `feat!:` or a footer starting with `BREAKING CHANGE:` | Major release (e.g. `2.1.0` → `3.0.0`) |
| `docs:`, `chore:`, `refactor:`, `style:`, `test:`, `ci:` | No release — tests still run, nothing is published |

Examples:

```
fix: correct guidance level not persisting across sessions
feat: add microphone auto-selection on startup
feat!: drop support for VS Code < 1.99

BREAKING CHANGE: minimum supported VS Code version is now 1.99.
```

If a merge to `main` contains no release-worthy commits, the `Release` workflow still runs the test suite but
publishes nothing.
Loading
Loading