# Changelog

All notable changes to this project will be documented in this file.

## [2026.10.31-249] - 2026-10-31 - 02:49

### Fixed

- `pnpm package` failed twice over: `.vscodeignore` did not exclude `explainer/`, and vsce refused `@types/vscode` ^1.140 against `engines.vscode` ^1.104. The explainer is excluded and the engine raised to ^1.140.0, the API the types describe; it packages (29 files).

## [2026.10.31-117] - 2026-10-31 - 01:17

### Added

- The explainer site is published: <https://gitignore-editor.niftylittletools.dev/> (GitLab Pages, built from `explainer/` by the new `.gitlab-ci.yml`), its `site` set for canonical links and the sitemap, and the README's **Live:** line.

### Changed

- `.gitlab-ci.yml` replaced: its install, compile and package jobs ran `npm ci`, which fails without an npm lockfile and breaks the workspace pnpm rule. The extension is compiled and packaged locally (`pnpm compile`, `pnpm package`).

## [2026.10.30-1844] - 2026-10-30 - 18:44

### Changed

- Repository: `gitlab.com/nifty-little-tools/vscode-extensions/gitignore-editor`, in the README, the explainer and `package.json` (was a placeholder GitHub URL). The `publisher` is still a placeholder until a Marketplace publisher exists.

## [2026.10.29-1959] - 2026-10-29 - 19:59

### Documentation

- README rewritten to the workspace structure (`_templates/README.md`): the key line, Installation from a `.vsix`, Parameters/Flags (its six commands; it has no settings), Development and Licence.

### Fixed

- `vscode:prepublish` ran `npm run compile`; it runs `pnpm run compile` (the workspace uses pnpm only). The `pretest` script is gone: there is no `test` script, so it never ran.
- `package.json` declared the MIT licence, but `LICENSE` is AGPL-3.0; the field now says `AGPL-3.0-only`.

## [2026.10.28-2156] - 2026-10-28 - 21:56

### Added

- **Explainer site** (`explainer/`, global §11): a static Astro page in the house Cyanotype style that says what the extension is, what it does, how to run it, and its privacy terms, written from this README. It is light by default with its theme remembered, has a toggleable intro and the privacy notice, and loads nothing from a third party. Built from the workspace's shared template (`_explainer/`), copied unchanged and checked by `check_conformance.py`; only `src/site.js` (its words) is this tool's own. It is published once the tool's domain is chosen (plan Phase 8). The README gains an "Explainer site" section.

### Fixed

- README: build steps use pnpm and mise (they still said npm), and the sidebar icon is named Gitignore Editor (the text said "Giticon").

## [2026.10.27-926] - 2026-10-27 - 09:26

### Changed

- Tooling: pnpm 12.15.0, the newest 12.x, pinned in `mise.toml` and in `packageManager` with its sha512; the lockfile's own pnpm entry follows, so `pnpm install --frozen-lockfile` passes on the new pin.

## [2026.10.27-911] - 2026-10-27 - 09:11

### Changed

- **ESLint 10** with a flat `eslint.config.mjs` (typescript-eslint 8 recommended rules), replacing the separate `@typescript-eslint` parser and plugin 6. `pnpm lint` had no configuration at all and failed before reading a file; it now runs clean.
- `@vscode/vsce` 4 (from 3). TypeScript 6 (typescript-eslint does not support 7); `tsconfig.json` names its `types` (`node`, `vscode`), which TypeScript 6 no longer includes by default.

### Fixed

- An unused `fs` import in `GitignoreTreeProvider.ts`, found by the now-working lint.

## [2026.10.26-1926] - 2026-10-26 - 19:26

### Added

- README `## Privacy & security`: runs inside VS Code, edits only your `.gitignore` files, no network requests, telemetry or stored settings.

## [2026.10.26-1833] - 2026-10-26 - 18:33

### Security

- Dependency CVE sweep (global §8): `pnpm update` within the declared ranges plus overrides for `@azure/msal-node` 7.1 and `minimatch` 9.0.7. `pnpm audit` went from 49 high, 33 moderate, 9 low (read from the npm lockfile's resolution) to **none**. `pnpm compile` passes.
- `pnpm-workspace.yaml` `allowBuilds` decided: `@vscode/vsce-sign` true (its binary is used by `vsce package`), `keytar` false (only stores a publish token).

## [2026.10.26-1813] - 2026-10-26 - 18:13

### Changed

- npm lockfile replaced by `pnpm-lock.yaml` (`pnpm import`, same resolved versions).
- `.gitattributes` normalising line endings to LF (`* text=auto eol=lf`) and marking binaries.
- `mise.toml` pinning Node 24 and pnpm 12.12.1 (global §9; replaces any hand-installed toolchain).
- `packageManager` pinned to `pnpm@12.12.1` with its sha512, so corepack in CI uses the same pnpm.

## [2026.6.29-2006] - 2026-06-29 - 20:06

### Added

- **Marketplace icon / brand mark:** house `logo.svg` (Lightline recipe — gold
  Font Awesome `code-branch` glyph on a dark tile) plus a 128px `logo.png`,
  wired as the extension `icon` in `package.json`.

## [2026.6.29-0145] - 2026-06-29

### Changed

- CI: standardised the GitLab CI build image on `node:24-alpine` (was `node:20`)
  — current runtime, smallest practical build image.

## [2026.1.16-1235] - 2026-01-16

### Fixed

- Rule appending: Refactored appending logic to use `vscode.WorkspaceEdit`, ensuring that changes are correctly applied and visible in open editors.
- Targeting logic: Fixed issues with folder selection and case-insensitive path comparisons on Windows.
- Versioning: Synced extension version with system time.

## [2026.1.16-1225] - 2026-01-16

### Added

- Initial release of Gitignore Editor.
- Sidebar TreeView to display all `.gitignore` files.
- Context menu integration for adding files/folders to `.gitignore`.
- Global vs. Specific targeting logic.
- Automatic `.gitignore` detection and creation prompts.
- GitLab CI/CD pipeline for automated builds.
- Support for multi-root workspaces.

### Fixed

- Dependency compatibility: Downgraded engine requirement to VS Code 1.104.0 to resolve installation errors.
- Corrected `.vscodeignore` to include the `dist/` directory in the package.
