plaud-notes-to-notion 1.1.0 → 1.2.0

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
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0
4
+
5
+ - Replace personal identities and call-like fixtures with clearly synthetic examples.
6
+ - Add staged, full-history CI and pre-publish package privacy/secret scans.
7
+ - Preserve home-derived configuration, Keychain accounts and existing runtime state.
8
+
9
+
3
10
  ## 1.1.0
4
11
 
5
12
  Participant labeling now defaults to Claude Haiku 5.5 (`claude-haiku-5-5`),
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Peter Coates
3
+ Copyright (c) 2026 sfls1397
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the Software), to deal
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Plaud Notes to Notion
2
2
 
3
3
  Mac Mini **LaunchAgent** that replaces the two Zapier Zaps
4
- (*Peter / Tim: Plaud → Notion: Transcript + Summary*). When Plaud finishes a
4
+ (*Alex Example / Morgan Example: Plaud → Notion: Transcript + Summary*). When Plaud finishes a
5
5
  recording's summary, it writes two rows into that person's **Plaud Notes**
6
6
  Notion database — one `Summary`, one `Transcript` — structured exactly like the
7
7
  Zap's rows. Every 5 minutes it also copies **Summary** title/participant edits
@@ -16,10 +16,10 @@ No Zapier, no extra runtime dependencies (Node ≥ 20 built-ins only).
16
16
  | Poll Plaud every **30 s** (deep 30-day scan every 10 min) | 1. Plaud *Transcript & Summary Ready* | Writes only once Plaud has **both** the auto summary and the transcript. Zapier took ~1–2 min. |
17
17
  | `Recorded` = recording start, to the minute, true UTC | 2. Date/Time `+5 hours` | The Zap's +5h hid Plaud's Central-time-labelled-UTC bug and would be **1 h off after DST ends**. |
18
18
  | **SSN redaction** (summary, transcript, title) | — (new) | Written *and* spoken digits, incl. answers in the next speaker's line. Runs before anything leaves the Mac. |
19
- | **Card redaction** (summary, transcript, title) | — (new) | Credit/debit card numbers (full, or partial: "ending in", "begins with", "last four of the card", "the 4417 card"), security code (CVV/CVC) and expiration date. Written or spoken; runs before SSN redaction so a card's last four is never labelled an SSN. A full number or 4-digit partial found anywhere in a recording is removed everywhere in it. |
19
+ | **Card redaction** (summary, transcript, title) | — (new) | Credit/debit card numbers (full, or partial: "ending in", "begins with", "last four of the card", "the 0000 card"), security code (CVV/CVC) and expiration date. Written or spoken; runs before SSN redaction so a card's last four is never labelled an SSN. A full number or 4-digit partial found anywhere in a recording is removed everywhere in it. |
20
20
  | Remove `PLAUD NOTE`; pair quotes `“…”` | 3–4. Formatter Text | The Zap turned every `"` into `”`. |
21
21
  | Strip Plaud image embeds, `---`, blank lines; split `> **Label:** text` | 5. Code (JavaScript) | Ported verbatim. |
22
- | Participants via **Claude Haiku 5.5** (default) or **GPT-6 Luna, high effort**, schema-checked JSON | 6. AI by Zapier | Also sees the transcript (names often only appear there) and the database's existing Participant spellings (e.g. `Casey - Bank`). Owner and `Speaker N` labels never listed. |
22
+ | Participants via **Claude Haiku 5.5** (default) or **GPT-6 Luna, high effort**, schema-checked JSON | 6. AI by Zapier | Also sees the transcript (names often only appear there) and the database's existing Participant spellings (e.g. `Example Banker - Bank`). Owner and `Speaker N` labels never listed. |
23
23
  | Create **Summary** row (Notion markdown API) | 7. Notion | Block-for-block identical to the Zap's output. |
24
24
  | Create **Transcript** row (one plain-text paragraph) | 8. Notion | Exact text — `*`, `_`, `#` in speech can never turn into formatting. |
25
25
  | Summary → Transcript sync every **5 min** | Grok *Sync Plaud Transcripts to Summaries* (retired) | Pair by `Recorded` minute; skip ambiguous minutes; full 90-day reconcile daily. |
@@ -39,15 +39,15 @@ Plaud's own title; recordings still generating are re-checked every poll (up to
39
39
  "syncSeconds": 300,
40
40
  "llmModel": "claude-haiku-5-5",
41
41
  "profiles": {
42
- "peter": { "enabled": true, "owner": "Peter", "notionDataSourceId": "<Plaud Notes data source id>", "startAfter": "<cutover ISO time>" },
43
- "tim": { "enabled": false, "owner": "Tim", "notionDataSourceId": "<Tim's Plaud Notes data source id>", "startAfter": "<cutover ISO time>" }
42
+ "example": { "enabled": true, "owner": "Alex Example", "notionDataSourceId": "<Plaud Notes data source id>", "startAfter": "<cutover ISO time>" },
43
+ "second-example": { "enabled": false, "owner": "Morgan Example", "notionDataSourceId": "<Morgan Example's Plaud Notes data source id>", "startAfter": "<cutover ISO time>" }
44
44
  }
45
45
  }
46
46
  ```
47
47
 
48
48
  - `startAfter` — only recordings **uploaded** after this instant are ingested. Set it to the moment the Zap is turned off so nothing is written twice.
49
49
  - `ingest` / `syncTranscripts` (default `true`) — switch either half off.
50
- - `credentials` — use another profile's Keychain secrets (e.g. a test profile that writes to a test database with Peter's sign-in).
50
+ - `credentials` — use another profile's Keychain secrets (e.g. a test profile that writes to a test database with Alex Example's sign-in).
51
51
  - The daemon re-reads the file when it changes; turning a profile on needs no restart.
52
52
 
53
53
  ### LLM (participant labeling)
@@ -70,11 +70,11 @@ profile pauses (no ingest or sync) until the key is saved — run
70
70
 
71
71
  ```bash
72
72
  npm install -g plaud-notes-to-notion # or build from a checkout: npm ci && npm run build
73
- plaud-notes-to-notion login --profile peter # opens Plaud → sign in as that person → Authorize
74
- plaud-notes-to-notion set-secret notion --profile peter # Notion internal integration secret (paste, hidden)
73
+ plaud-notes-to-notion login --profile example # opens Plaud → sign in as that person → Authorize
74
+ plaud-notes-to-notion set-secret notion --profile example # Notion internal integration secret (paste, hidden)
75
75
  plaud-notes-to-notion set-secret anthropic # Anthropic API key (shared; Haiku, the default)
76
76
  plaud-notes-to-notion set-secret openai # OpenAI API key (shared; only if llmModel is gpt-*)
77
- plaud-notes-to-notion doctor --profile peter
77
+ plaud-notes-to-notion doctor --profile example
78
78
  sh "$(npm root -g)/plaud-notes-to-notion/examples/install-launchagent.sh"
79
79
  ```
80
80
 
@@ -87,8 +87,8 @@ profile-specific `anthropic:<profile>` / `openai:<profile>` wins over the shared
87
87
 
88
88
  ```bash
89
89
  plaud-notes-to-notion status # last poll / sync / write per profile
90
- plaud-notes-to-notion once --profile peter --dry-run # show what would be written, write nothing
91
- plaud-notes-to-notion sync --profile peter --dry-run # show Transcript fixes, change nothing
90
+ plaud-notes-to-notion once --profile example --dry-run # show what would be written, write nothing
91
+ plaud-notes-to-notion sync --profile example --dry-run # show Transcript fixes, change nothing
92
92
  tail -f ~/Library/Logs/plaud-notes-to-notion.log
93
93
  ```
94
94
 
@@ -99,4 +99,21 @@ npm ci
99
99
  npm test && npm run typecheck && npm run build
100
100
  ```
101
101
 
102
- Tests use made-up SSNs and card numbers only. Never commit tokens, real transcripts or database ids.
102
+ Tests use explicitly fictional people, calls and all-zero SSNs; payment-card numbers are standard synthetic test values. Never commit tokens, real transcripts or database ids.
103
+
104
+
105
+ ### Privacy gates
106
+
107
+ Install Gitleaks 8.30.1 and enable the staged gate once per clone:
108
+
109
+ ```bash
110
+ git config core.hooksPath .githooks
111
+ gitleaks git --log-opts=--all --config .gitleaks.toml --redact=100 --no-banner .
112
+ npm run build && npm run scan:package
113
+ ```
114
+
115
+ Push and pull-request CI scans full fetched history and package contents.
116
+ `prepublishOnly` rebuilds and scans the exact npm file list before publication.
117
+ Use home-derived paths and local config for real owners and destinations.
118
+ After a rewritten history, discard old clones and re-clone; merging old history
119
+ can restore removed data.
package/dist/card.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Runs on raw Plaud text before anything leaves the Mini, next to SSN redaction.
5
5
  * Removes full card numbers (written or spoken, also when the transcription
6
- * dropped or added a digit), partial numbers ("ending in 4417", "Visa that
6
+ * dropped or added a digit), partial numbers ("ending in 0000", "Visa that
7
7
  * begins with 4111", "last four of the card"), the security code (CVV / CVC)
8
8
  * and the expiration date. Full numbers and 4-digit partials found anywhere in
9
9
  * a recording are removed everywhere in it.
package/dist/card.js CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Runs on raw Plaud text before anything leaves the Mini, next to SSN redaction.
5
5
  * Removes full card numbers (written or spoken, also when the transcription
6
- * dropped or added a digit), partial numbers ("ending in 4417", "Visa that
6
+ * dropped or added a digit), partial numbers ("ending in 0000", "Visa that
7
7
  * begins with 4111", "last four of the card"), the security code (CVV / CVC)
8
8
  * and the expiration date. Full numbers and 4-digit partials found anywhere in
9
9
  * a recording are removed everywhere in it.
@@ -48,7 +48,7 @@ const CARD_WORD = /\b(?:card|visa|master\s?card|amex|american\s+express|discover
48
48
  const PARTIAL_TRIGGER = /\b(?:end(?:s|ing|ed)?|begin(?:s|ning)?|start(?:s|ing)?)(?:\s+(?:in|with))?\b/gi;
49
49
  /** "last four (digits) of the/your card" — the answer may land in the next utterance. */
50
50
  const LAST_FOUR_TRIGGER = /\blast\s+(?:four|4)(?:\s+(?:digits|numbers))?(?=[^.?!\n]{0,40}\bcard\b)/gi;
51
- /** A 4-digit run naming a card: "the 4417 card", "my 4417 Visa". */
51
+ /** A 4-digit run naming a card: "the 0000 card", "my 0000 Visa". */
52
52
  const CARD_AFTER = /^[\s`'"“”‘’)]*(?:(?:visa|master\s?card|amex|credit|debit|signature|rewards)\s+)*(?:card|visa|master\s?card|amex)\b/i;
53
53
  const CODE_TRIGGER = /\b(?:cvv2?|cvc2?|cid|security\s+code|three[- ]digit\s+code|(?:code|digits|numbers)\s+on\s+the\s+back)\b/gi;
54
54
  const EXPIRY_TRIGGER = /\b(?:expiration(?:\s+date)?|expiry(?:\s+date)?|exp\.?(?:\s+date)?|expires?|expir(?:ed|ing)|valid\s+(?:thru|through))(?![\w])/gi;
@@ -195,7 +195,7 @@ function scan(text) {
195
195
  }
196
196
  hits.push({ start: run.start, end: run.end, kind: "number", spread: run.digits.length === 4 && !isYearInDate(text, run) ? run.digits : undefined });
197
197
  }
198
- // "this card is the 4417 card", "my 4417 Visa"
198
+ // "this card is the 0000 card", "my 0000 Visa"
199
199
  for (const run of runs) {
200
200
  if (run.digits.length === 4 && !isYearInDate(text, run) && !isAmount(text, run) && CARD_AFTER.test(text.slice(run.end, run.end + 30))) {
201
201
  hits.push(numberHit(run));
package/dist/config.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * One Plaud account → one Plaud Notes database. Peter and Tim are identical
2
+ * One Plaud account → one Plaud Notes database. Alex Example and Morgan Example are identical
3
3
  * except for these fields; everything else (pipeline, prompt, schedule) is shared.
4
4
  */
5
5
  export interface ProfileConfig {
@@ -20,7 +20,7 @@ export interface ProfileConfig {
20
20
  syncTranscripts: boolean;
21
21
  /**
22
22
  * Keychain profile whose Plaud/Notion secrets this profile uses (default: itself).
23
- * Lets a test profile share Peter's sign-in while writing to a test database.
23
+ * Lets a test profile share Alex Example's sign-in while writing to a test database.
24
24
  */
25
25
  credentials: string;
26
26
  }
@@ -1,6 +1,6 @@
1
1
  /** Product constants. No secrets. */
2
2
  export declare const PACKAGE_NAME = "plaud-notes-to-notion";
3
- export declare const PACKAGE_VERSION = "1.1.0";
3
+ export declare const PACKAGE_VERSION = "1.2.0";
4
4
  /** macOS Keychain service. One service, named accounts per profile. */
5
5
  export declare const KEYCHAIN_SERVICE = "plaud-notes-to-notion";
6
6
  /** Plaud OAuth token-set JSON for a profile: `plaud:<profile>`. */
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /** Product constants. No secrets. */
2
2
  export const PACKAGE_NAME = "plaud-notes-to-notion";
3
- export const PACKAGE_VERSION = "1.1.0";
3
+ export const PACKAGE_VERSION = "1.2.0";
4
4
  /** macOS Keychain service. One service, named accounts per profile. */
5
5
  export const KEYCHAIN_SERVICE = "plaud-notes-to-notion";
6
6
  /** Plaud OAuth token-set JSON for a profile: `plaud:<profile>`. */
package/dist/daemon.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { SecretStore } from "./secrets.js";
3
3
  /**
4
4
  * Long-running LaunchAgent loop. Per enabled profile: ingest every pollSeconds
5
5
  * (deep scan every 10 min), Summary→Transcript sync every syncSeconds.
6
- * Re-reads config.json when it changes, so turning Tim on needs no restart.
6
+ * Re-reads config.json when it changes, so turning Morgan Example on needs no restart.
7
7
  */
8
8
  export declare function runDaemon(options: {
9
9
  store: SecretStore;
package/dist/daemon.js CHANGED
@@ -33,7 +33,7 @@ function describe(err, credentials) {
33
33
  /**
34
34
  * Long-running LaunchAgent loop. Per enabled profile: ingest every pollSeconds
35
35
  * (deep scan every 10 min), Summary→Transcript sync every syncSeconds.
36
- * Re-reads config.json when it changes, so turning Tim on needs no restart.
36
+ * Re-reads config.json when it changes, so turning Morgan Example on needs no restart.
37
37
  */
38
38
  export async function runDaemon(options) {
39
39
  const env = options.env || process.env;
package/dist/format.d.ts CHANGED
@@ -26,7 +26,7 @@ export declare function formatOffset(ms: number): string;
26
26
  export declare function formatTranscript(segments: PlaudSegment[]): string;
27
27
  /** Notion `Recorded`: recording start, truncated to the minute, as a UTC instant. */
28
28
  export declare function recordedMinute(startAt: Date): string;
29
- /** Meeting title: Plaud's own title minus its leading `MM-DD ` date (Peter 2026-09-26). */
29
+ /** Meeting title: Plaud's own title minus its leading `MM-DD ` date (Alex Example 2026-09-26). */
30
30
  export declare function meetingTitle(plaudName: string): string;
31
31
  /**
32
32
  * Participants as Notion multi-select options: owner and generic diarization
package/dist/format.js CHANGED
@@ -73,7 +73,7 @@ export function recordedMinute(startAt) {
73
73
  d.setUTCSeconds(0, 0);
74
74
  return d.toISOString();
75
75
  }
76
- /** Meeting title: Plaud's own title minus its leading `MM-DD ` date (Peter 2026-09-26). */
76
+ /** Meeting title: Plaud's own title minus its leading `MM-DD ` date (Alex Example 2026-09-26). */
77
77
  export function meetingTitle(plaudName) {
78
78
  const t = plaudName.replace(/^\d{2}-\d{2}\s+/, "").trim();
79
79
  return t || "Untitled recording";
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oDAAoD,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC,EAAE,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE,CAClF,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAC9E,CAAC;IACF,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACzE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;IACrB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAwB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9F,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,OAAa;IAC1C,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,CAAC,IAAI,oBAAoB,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe,EAAE,KAAa;IAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC"}
package/dist/ssn.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Social Security number redaction for Plaud summaries and transcripts.
3
3
  *
4
4
  * Runs on raw Plaud text before anything leaves the Mini (OpenAI or Notion).
5
- * Handles written digits ("4417", "523-81-4417") and spoken digits
5
+ * Handles written digits ("0000", "000-00-0000") and spoken digits
6
6
  * ("zero zero two three", "double oh two three"), including answers that land
7
7
  * in the next speaker's utterance after "last four of your social?".
8
8
  */
package/dist/ssn.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Social Security number redaction for Plaud summaries and transcripts.
3
3
  *
4
4
  * Runs on raw Plaud text before anything leaves the Mini (OpenAI or Notion).
5
- * Handles written digits ("4417", "523-81-4417") and spoken digits
5
+ * Handles written digits ("0000", "000-00-0000") and spoken digits
6
6
  * ("zero zero two three", "double oh two three"), including answers that land
7
7
  * in the next speaker's utterance after "last four of your social?".
8
8
  */
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "plaud-notes-to-notion",
3
- "version": "1.1.0",
4
- "description": "Mac Mini LaunchAgent: new Plaud recordings → Plaud Notes Notion database (Summary + Transcript rows), plus Summary→Transcript title/participant sync. Replaces the Zapier Plaud → Notion Zaps.",
3
+ "version": "1.2.0",
4
+ "description": "Mac Mini LaunchAgent: new Plaud recordings \u2192 Plaud Notes Notion database (Summary + Transcript rows), plus Summary\u2192Transcript title/participant sync. Replaces the Zapier Plaud \u2192 Notion Zaps.",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",
7
7
  "bin": {
8
8
  "plaud-notes-to-notion": "./bin/plaud-notes-to-notion.js"
9
9
  },
10
- "author": "Peter Coates",
10
+ "author": "sfls1397",
11
11
  "license": "MIT",
12
12
  "repository": {
13
13
  "type": "git",
@@ -42,7 +42,9 @@
42
42
  "test": "vitest run",
43
43
  "test:watch": "vitest",
44
44
  "typecheck": "tsc --noEmit",
45
- "audit": "npm audit --omit=dev"
45
+ "audit": "npm audit --omit=dev",
46
+ "scan:package": "node scripts/scan-package.js",
47
+ "prepublishOnly": "npm run build && npm run scan:package"
46
48
  },
47
49
  "devDependencies": {
48
50
  "@types/node": "^22.10.0",