@phuthuycoding/markcv 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.2] - 2026-09-06
11
+
12
+ ### Fixed
13
+
14
+ - `markcv --version` reported the version that was hardcoded in the source rather
15
+ than the one actually installed: 0.1.1 shipped while `--version` still said
16
+ 0.1.0. Both the CLI and the MCP server now read it from `package.json`, and a
17
+ test fails if the two ever disagree.
18
+
10
19
  ## [0.1.1] - 2026-09-06
11
20
 
12
21
  ### Added
@@ -51,6 +60,7 @@ First release.
51
60
  - Two ATS-safe themes: `classic` and `compact`.
52
61
  - Example CVs in `examples/`, with and without a portrait photo.
53
62
 
54
- [Unreleased]: https://github.com/phuthuycoding/markcv/compare/v0.1.1...HEAD
63
+ [Unreleased]: https://github.com/phuthuycoding/markcv/compare/v0.1.2...HEAD
64
+ [0.1.2]: https://github.com/phuthuycoding/markcv/compare/v0.1.1...v0.1.2
55
65
  [0.1.1]: https://github.com/phuthuycoding/markcv/compare/v0.1.0...v0.1.1
56
66
  [0.1.0]: https://github.com/phuthuycoding/markcv/releases/tag/v0.1.0
package/dist/cli.js CHANGED
@@ -8,8 +8,9 @@ import { lint } from "./core/lint.js";
8
8
  import { tailor } from "./core/tailor.js";
9
9
  import { newVariant, listVariants, diffVariants } from "./core/variants.js";
10
10
  import { c, ok, bad, warn, info } from "./ui.js";
11
+ import { VERSION } from "./version.js";
11
12
  const program = new Command();
12
- program.name("markcv").description("Build, fit and audit a CV written in Markdown").version("0.1.0");
13
+ program.name("markcv").description("Build, fit and audit a CV written in Markdown").version(VERSION);
13
14
  const pdfNameFor = (md) => md.replace(/\.md$/, ".pdf");
14
15
  function printFit(r) {
15
16
  const head = r.fits ? ok(`${r.pages} page(s)`) : bad(`${r.pages} pages (target ${r.targetPages})`);
@@ -10,7 +10,8 @@ import { analyseFit } from "../core/fit.js";
10
10
  import { lint } from "../core/lint.js";
11
11
  import { tailor } from "../core/tailor.js";
12
12
  import { newVariant, listVariants, diffVariants } from "../core/variants.js";
13
- const server = new McpServer({ name: "markcv", version: "0.1.0" });
13
+ import { VERSION } from "../version.js";
14
+ const server = new McpServer({ name: "markcv", version: VERSION });
14
15
  /** Every tool returns JSON so an agent can loop on the result, rather than prose for a human. */
15
16
  const json = (data) => ({
16
17
  content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
@@ -0,0 +1 @@
1
+ export declare const VERSION: string;
@@ -0,0 +1,21 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ /**
5
+ * Read the version from package.json instead of hardcoding it.
6
+ * A hardcoded copy silently goes stale the moment a release is cut, and then
7
+ * `--version` reports one thing while the installed code is another.
8
+ */
9
+ function readVersion() {
10
+ const here = dirname(fileURLToPath(import.meta.url));
11
+ for (const rel of ["../package.json", "../../package.json"]) {
12
+ try {
13
+ return JSON.parse(readFileSync(join(here, rel), "utf8")).version;
14
+ }
15
+ catch {
16
+ // try the next candidate: dist/ is one level deeper than src/
17
+ }
18
+ }
19
+ return "0.0.0";
20
+ }
21
+ export const VERSION = readVersion();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phuthuycoding/markcv",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Fit, lint and build a CV from Markdown - CLI + MCP server for AI agents",
5
5
  "type": "module",
6
6
  "bin": {