# 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**