# Master [[Notes Plugin]] SRS #srs #llmtext Software Requirements Specification   Master Notes Manager (Obsidian Plugin)   Version 1.0 • 09/06/2025 **0. Revision History** Version Date Author Summary of Changes 0.1 09/06/2025 Initial AI draft First complete SRS 0.2 09/06/2025 G. Hopper IEEE-830 compliance, IDs 1.0 09/06/2025 Consolidated Approved baseline **1  Introduction** **1.1  Purpose** This document describes in detail the functional and non-functional requirements for “Master Notes Manager”, an Obsidian plugin that lets users create _master notes_ whose named sections can store multiple drafts, switch the active draft instantly, and keep an archive of every previous version—all without breaking standard Markdown readability. **1.2  Scope** The plugin targets Obsidian Desktop (Windows, macOS, Linux) and Mobile (iOS, Android) v1.0.0+. It operates entirely inside the user’s vault, uses no external servers, and must coexist peacefully with other plugins. **1.3  Definitions, Acronyms, Abbreviations** Term Definition Master Note A note flagged with front-matter master-note: true containing one or more Sections. Section A delimited portion of a Master Note that may have many Drafts. Draft A snapshot of Section content. Exactly one Draft is _active_. Archive Structured storage location holding all non-active Drafts. Vault The folder tree Obsidian treats as a knowledge base. RTM Requirements Traceability Matrix. **1.4  Document Conventions** • Requirement IDs: _MNM-FR-###_ (functional), _MNM-NFR-###_ (non-functional) • Priority: **M**ust, **S**hould, **C**ould, **W**on’t • Release Phase: P1 (MVP), P2, P3 • Acceptance Criteria written in Gherkin _Given–When–Then_ form. **1.5  Intended Audience** • Plugin developers and AI code-assist tools (Windsurf, Copilot) • QA testers writing automated test scripts • Technical writers preparing end-user docs. **1.6  References** # Reference R-1 IEEE-830-1998 SRS Standard R-2 Obsidian API Docs v1.2 (2025-02) R-3 Markdown – CommonMark 1.0 **2  Overall Description** **2.1  Product Perspective** Master Notes Manager is an add-on; it does not alter Obsidian core. It augments Markdown notes via front-matter flags and HTML comments that remain harmless if the plugin is absent. **2.2  Product Functions (High-Level)** ID Function PF-1 Convert any note into a Master Note. PF-2 Define, rename, reorder, delete Sections. PF-3 Create, duplicate, rename, delete Drafts per Section. PF-4 Swap the active Draft instantly. PF-5 Persist all non-active Drafts to Archive. PF-6 Browse, search, and restore archived Drafts. PF-7 Provide intuitive UI (editor controls, sidebar, commands, hotkeys). **2.3  User Classes & Characteristics** User Class Skills Needs Priority Writer Basic Markdown Draft multiple versions of sections, keep history High Researcher Uses Dataview, front-matter Compare methodology revisions Medium Developer Knows YAML, scripting Automate section updates Low Mobile User Touch UI Quick draft switch, small screen Medium **2.4  Operating Environment** • Electron-based desktop app (Node 18) • React Native mobile wrapper with sandboxed file access • File system: local + Obsidian Sync (optional). No network connectivity is required by the plugin itself. **2.5  Design & Implementation Constraints** Constraint Description C-1 Data must be stored as plain .md or .json inside vault. C-2 Plugin code in TypeScript, compiled to ES2021. C-3 Memory footprint ≤ 75 MB RSS. C-4 Must not block Obsidian’s main UI thread > 16 ms. **2.6  User Documentation** A help vault and inline tooltips will ship; tutorial video is deferred to P3. **2.7  Assumptions & Dependencies** • Users have basic understanding of Obsidian commands. • Vault is not encrypted at the file-system level (mobile encryption handled by OS). • Future Obsidian API changes may require adapter layer. **3  System Features & Functional Requirements** For brevity only the first few are expanded fully—pattern repeats for remaining items and is provided in Appendix A. **3.1  MNM-FR-001  Create Master Note** Attribute Value Title Convert existing note to Master Note Priority M Release P1 Risk Low **Description** Add command palette entry “Convert to Master Note”. It injects front-matter and creates default Section placeholders. **Stimulus/Response Sequence** 1. _Stimulus_: User invokes command on an open note. 2. _Response_: a. Plugin checks if note already flagged. b. If not, inserts front-matter and prompts for initial Section names. c. Emits master-note-created event. **Acceptance Criteria** _Given_ a standard Markdown note _When_ the user executes “Convert to Master Note” _Then_ the note’s front-matter contains master-note: true AND at least one Section delimiter appears. **3.2  MNM-FR-002  Define Sections** Attribute Value Priority M Release P1 Risk Medium User may add <!-- section: id name:"Introduction" --> markers via UI or manually. Parser must support nested code blocks and tables without breaking delimiters. **Acceptance Criteria** • Section starts at opening marker and ends at matching <!-- /section -->. • Delimiters survive markdown formatting round-trips. **3.3  MNM-FR-003  Create Draft** Priority M Release P1 Risk Medium **Acceptance Criteria** _Given_ a Master Note with one Section _When_ user clicks “New Draft” _Then_ plugin duplicates active Draft, timestamps it, archives old Draft, and sets new Draft as active. **3.4  MNM-FR-004  Switch Draft** … (full card in Appendix A) **3.5  MNM-FR-005  Archive Maintenance** … **4  External Interface Requirements** **4.1  User Interfaces** Detailed mock-ups delivered separately (see Appendix B). Key elements: UI Element Desktop Mobile [[Section Header]] Controls Inline buttons (New, Switch) Pop-over menu Draft Selector Modal List + preview pane Full-screen list Sidebar React View in right dock Swipe-in drawer **4.2  Hardware Interfaces** None. **4.3  Software Interfaces** Interface Direction Protocol Notes Obsidian FileSystem API Bi-directional JS CRUD for .md Obsidian MetadataCache Read JS Watch front-matter Obsidian Workspace API Read/Write JS Add views & commands **4.4  Communication Interfaces** None (offline plugin). **5  Non-Functional Requirements** ID Category Requirement Priority MNM-NFR-001 Performance Draft switch < 200 ms for sections ≤ 5 kB M MNM-NFR-002 Performance UI render FPS ≥ 55 on 60 Hz display S MNM-NFR-003 Reliability Mean Time Between Failures ≥ 100 h C MNM-NFR-004 Storage Total archive size overhead ≤ 15 % of vault S MNM-NFR-005 Security Plugin never transmits vault content externally M MNM-NFR-006 Compatibility Works with Obsidian Sync; conflict resolution dialog M MNM-NFR-007 Accessibility All controls keyboard-navigable S MNM-NFR-008 Internationalisation UI strings externalised C MNM-NFR-009 Maintainability Codebase ≥ 80 % unit-test coverage S MNM-NFR-010 Portability Runs unchanged on iOS & Android M **6  Logical Data Model (Simplified ER)** MasterNote 1─∞ Section 1─∞ Draft Entity Key Attributes MasterNote id, filePath, title, created, modified Section id, masterNoteId, name, order, activeDraftId Draft id, sectionId, created, name, contentPath, author JSON Schema samples appear in Appendix C. **7  Requirements Traceability Matrix (excerpt)** User Story FR / NFR IDs Test Case IDs US-01 Convert note MNM-FR-001, MNM-FR-002 TC-01, TC-02 US-02 Draft switch MNM-FR-004, MNM-NFR-001 TC-05, PERF-01 … … … Full RTM in separate CSV for Windsurf import. **8  Appendices** A. Complete Functional Requirement Cards B. Wireframes & Interaction Specs C. JSON Schemas for MasterNote, Section, Draft D. Risk Register E. Glossary (See attached files/folders.) **End of SRS**