Merged
Conversation
…ce state model - buildApplicationMenu: File/Edit/View/Export/Help menus with accelerators - RecentFilesManager: add/dedup/cap/clear/persist recent files - StateManager workspace methods: openTab, closeTab, setActiveTab, updateTabMetadata, updateTabScrollPosition, setSidebarVisible, setOpenFolder - workspace-types.ts: TabState, WorkspaceState, DirectoryEntry types - IPC channels for dialogs, workspace state, and directory operations - Preload API extended with workspace and directory methods - DirectoryService stub for future implementation
…derer - TabManager: tab bar UI with create/activate/close, click/middle-click handlers, and content container visibility management - DocumentContext: extracted from viewer's initialize(), owns RenderPipeline, TOC, ExportUI, Comments, and auto-reload per document - Refactored viewer.ts from single-file viewer to multi-document orchestrator with openFile/closeFile/switchTab, IPC event listeners, and empty state UI - Restructured index.html: workspace > sidebar + main > tab-bar + content-area + status-bar
- Keyboard shortcuts: Ctrl/Cmd+Tab (next tab), Ctrl/Cmd+Shift+Tab (prev tab), Ctrl/Cmd+1-9 (switch to tab N), with cleanup function - Drag and drop: dragover indicator, .md file filtering, multi-file support, cleanup function - DirectoryService: recursive directory listing with .md filter, dirs-first sort, chokidar watch with debounce, dispose - FileTree renderer: tree DOM with expand/collapse, file selection callback, visibility toggle, active file highlight, refresh/dispose
StatusBar displays file name, word count, heading count, code block count, diagram count, theme name, and render state. Integrated into viewer: updates on file load and tab switch, clears when last tab closes.
…ish main process - SessionManager: save/restore/clear session with tab file paths and active tab index, filters nonexistent files, handles corrupt data - Main process: wire menu bar, recent files, session manager, directory service. Save session on quit. macOS open-file sends IPC to renderer instead of reloading page. Window title updates with active file. - Viewer: integrate keyboard shortcuts (Ctrl+Tab, Cmd+1-9), drag-drop (.md file opening), file tree sidebar (folder loading, visibility toggle), cycle/switch-to-index helpers, folder loading via IPC
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.mdfiles onto window to open as tabsStateManagertracks tabs, active tab, sidebar, folder path; persists to electron-storeTest plan
npm -w @mdview/electron run buildsucceeds.mdfile onto window opens new tab