Skip to content

Remove deprecated plugin system#205

Merged
schuyler merged 2 commits intomainfrom
issue-192-deprecate-plugins
Dec 7, 2025
Merged

Remove deprecated plugin system#205
schuyler merged 2 commits intomainfrom
issue-192-deprecate-plugins

Conversation

@schuyler
Copy link
Copy Markdown
Owner

@schuyler schuyler commented Dec 7, 2025

Summary

Removes the MacDown plugin system entirely, as documented in issue #192.

Changes

  • Delete MPPlugIn.h/.m and MPPlugInController.h/.m
  • Remove "Plug-ins" menu item from MainMenu.xib
  • Remove plugin constants from MPUtilities.h/.m
  • Clean up plugin references from project.pbxproj
  • Remove orphaned plugin translations from 19 localization files
  • Update plans/release-process.md to remove plugin reference

Rationale

The plugin ecosystem was effectively dead:

  • Only 2 plugins ever created, both abandoned 6+ years ago
  • No GitHub issues requesting new plugin features
  • No documented API (since 2016)
  • Adds maintenance burden with zero user benefit

Related Issue

Related to #192

Manual Testing Plan

Setup

  1. Build the application via Xcode (Product > Build)
  2. Run the application (Product > Run)

Test Scenarios

# Test Expected Result
1 Application launches App opens without crash or error
2 Main menu bar inspection No "Plug-ins" menu item visible
3 Open a Markdown file File opens normally, editor and preview work
4 Create new document New document created, can type and preview
5 Check Console.app for errors No plugin-related warnings or errors

Edge Case (Optional)

If you have an existing ~/Library/Application Support/MacDown/PlugIns folder:

  • App should launch normally (folder is ignored)
  • No crash even if .bundle files exist

The MacDown plugin system has been removed entirely:

- Delete MPPlugIn.h/.m and MPPlugInController.h/.m
- Remove Plug-ins menu item from MainMenu.xib
- Remove plugin constants from MPUtilities.h/.m
- Clean up plugin references from project.pbxproj
- Remove orphaned plugin translations from 19 localization files

The plugin ecosystem was effectively dead (only 2 plugins ever created,
both abandoned 6+ years ago) and added maintenance burden with no user
benefit.

Related to #192
Remove reference to plugins from hardened runtime exceptions example,
since the plugin system has been removed.

Related to #192
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 7, 2025

Code Coverage Report

Current Coverage: 31.67%

Coverage Details (Summary)
Name                                                                                                                                   Coverage            
-------------------------------------------------------------------------------------------------------------------------------------- ------------------- 
MASPreferences.bundle                                                                                                                  0.00% (0/0)         
MacDown 3000.app                                                                                                                       33.07% (4100/12398) 
    /Users/runner/work/macdown3000/macdown3000/MacDown/Code/Document/MPAsset.m                                                         93.69% (104/111)    
        -[MPAsset typeName]                                                                                                            100.00% (3/3)       
        -[MPAsset defaultTypeName]                                                                                                     100.00% (3/3)       
        +[MPAsset assetWithURL:andType:]                                                                                               100.00% (3/3)       
        -[MPAsset initWithURL:andType:]                                                                                                87.50% (7/8)        
        -[MPAsset init]                                                                                                                100.00% (3/3)       
        -[MPAsset templateForOption:]                                                                                                  0.00% (0/6)         
        -[MPAsset htmlForOption:]                                                                                                      100.00% (28/28)     
        -[MPStyleSheet defaultTypeName]                                                                                                100.00% (3/3)       
        +[MPStyleSheet CSSWithURL:]                                                                                                    100.00% (3/3)       
        -[MPStyleSheet templateForOption:]                                                                                             100.00% (20/20)     
        -[MPScript defaultTypeName]                                                                                                    100.00% (3/3)       
        +[MPScript javaScriptWithURL:]                                                                                                 100.00% (3/3)       
        -[MPScript templateForOption:]                                                                                                 100.00% (20/20)     
        -[MPEmbeddedScript htmlForOption:]                                                                                             100.00% (5/5)       
    /Users/runner/work/macdown3000/macdown3000/Dependency/peg-markdown-highlight/HGMarkdownHighlighter.m                               62.43% (349/559)    
        styleparsing_error_callback                                                                                                    0.00% (0/10)        
        -[HGMarkdownHighlighter init]                                                                                                  92.86% (13/14)      
        -[HGMarkdownHighlighter initWithTextView:]                                                                                     83.33% (5/6)        
        -[HGMarkdownHighlighter initWithTextView:waitInterval:]                                                                        83.33% (5/6)        
        -[HGMarkdownHighlighter initWithTextView:waitInterval:styles:]                                                                 0.00% (0/6)         
        -[HGMarkdownHighlighter parseText:]                                                                                            100.00% (9/9)       
        -[HGMarkdownHighlighter convertOffsets:text:]                                                                                  16.67% (7/42)       
        -[HGMarkdownHighlighter requestParsing]                                                                                        100.00% (15/15)     
        __39-[HGMarkdownHighlighter requestParsing]_block_invoke                                                                       100.00% (12/12)     
        __39-[HGMarkdownHighlighter requestParsing]_block_invoke.55                                                                    100.00% (3/3)       
        __39-[HGMarkdownHighlighter requestParsing]_block_invoke.67                                                                    100.00% (4/4)       
        -[HGMarkdownHighlighter getClearFontTraitMask:]                                                                                88.89% (16/18)      
        -[HGMarkdownHighlighter clearHighlightingForRange:]                                                                            100.00% (31/31)     
        __51-[HGMarkdownHighlighter clearHighlightingForRange:]_block_invoke                                                           0.00% (0/8)         
        -[HGMarkdownHighlighter readClearTextStylesFromTextView]                                                                       100.00% (17/17)     
        -[HGMarkdownHighlighter applyHighlighting:withRange:]                                                                          17.33% (13/75)      
        __53-[HGMarkdownHighlighter applyHighlighting:withRange:]_block_invoke                                                         0.00% (0/13)        
        -[HGMarkdownHighlighter applyVisibleRangeHighlighting]                                                                         100.00% (16/16)     
        -[HGMarkdownHighlighter clearHighlighting]                                                                                     100.00% (3/3)       
        -[HGMarkdownHighlighter cacheElementList:]                                                                                     66.67% (4/6)        
        -[HGMarkdownHighlighter clearElementsCache]                                                                                    100.00% (2/2)       
        -[HGMarkdownHighlighter textViewTextDidChange:]                                                                                0.00% (0/11)        
        __47-[HGMarkdownHighlighter textViewTextDidChange:]_block_invoke                                                               0.00% (0/3)         
        -[HGMarkdownHighlighter textViewDidScroll:]                                                                                    0.00% (0/11)        
        __43-[HGMarkdownHighlighter textViewDidScroll:]_block_invoke                                                                   0.00% (0/6)         
        __43-[HGMarkdownHighlighter textViewDidScroll:]_block_invoke_2                                                                 0.00% (0/3)         
        -[HGMarkdownHighlighter getDefaultStyles]                                                                                      100.00% (27/27)     
        -[HGMarkdownHighlighter applyStyleDependenciesToTargetTextView]                                                                85.71% (12/14)      
        -[HGMarkdownHighlighter setStyles:]                                                                                            75.00% (6/8)        
        -[HGMarkdownHighlighter getDefaultSelectedTextAttributes]                                                                      100.00% (7/7)       

... (2111 more lines truncated)

📊 **Full coverage report available in workflow artifacts**

@schuyler schuyler merged commit 94e5e38 into main Dec 7, 2025
4 checks passed
@schuyler schuyler deleted the issue-192-deprecate-plugins branch December 7, 2025 00:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant