Commit Graph
100 Commits
Author SHA1 Message Date
amitwh 24c6675c82 fix(test): use mockRejectedValue for IPC error in ExportPdfDialog test 2026-06-05 23:17:57 +05:30
amitwh 929d72cf1d test(renderer): Phase 8 toasts integration smoke test 2026-06-05 23:12:26 +05:30
amitwh b40bff641c feat(renderer): export dialogs toast on success/failure 2026-06-05 23:05:32 +05:30
amitwh 338669f2db feat(renderer): file-store toasts on save/open/folder 2026-06-05 22:59:54 +05:30
amitwh 54615649f4 feat(renderer): mount Toaster in App.tsx 2026-06-05 22:52:04 +05:30
amitwh 3ff76c8c33 feat(renderer): add shadcn Toaster primitive 2026-06-05 22:50:07 +05:30
amitwh 8160ac05e0 feat(renderer): lib/toast.ts typed wrappers over sonner 2026-06-05 22:46:45 +05:30
amitwh 6762b5f9af docs(spec): Phase 8 toasts design — typed helpers, Toaster mount, 4 wire points 2026-06-05 22:41:28 +05:30
amitwh 00485d1bef feat(renderer): implement numeric right-alignment in ascii-table
Adds the actual right-alignment heuristic to toAsciiTable (was missing
from initial implementation). When any column header starts with a digit,
all columns are right-padded instead of left-padded. Matches the test
added in 53870d5 which exercises the right-alignment path with header
['Item', '7'].

All 6 ascii-table tests pass.
2026-06-05 22:18:15 +05:30
amitwh 24bb9aa9f5 test(renderer): Phase 7 modals integration smoke test 2026-06-05 19:54:35 +05:30
amitwh b39bdcf475 feat(renderer): mount ModalLayer + first-launch welcome trigger 2026-06-05 19:48:37 +05:30
amitwh 9d154a8521 feat(renderer): AppHeader gets Settings + About icon buttons 2026-06-05 19:46:56 +05:30
amitwh fe62c8814c feat(renderer): register 9 modal-opening commands in command store 2026-06-05 19:44:13 +05:30
amitwh 9306a9c23b feat(renderer): SettingsSheet (5 tabs: editor, theme, export, plugins, about) 2026-06-05 19:41:18 +05:30
amitwh 88e26c130e feat(renderer): AboutSettings tab (version + links) 2026-06-05 19:39:01 +05:30
amitwh b02707ac7f feat(renderer): PluginsSettings tab placeholder (Coming soon) 2026-06-05 19:37:54 +05:30
amitwh ebc149ff0b feat(renderer): ExportSettings tab (PDF/DOCX/HTML defaults + ascii toggle) 2026-06-05 19:35:28 +05:30
amitwh be3af42fc5 feat(renderer): ThemeSettings tab (mode, accent, font) 2026-06-05 19:32:43 +05:30
amitwh ed611c77ed feat(renderer): EditorSettings tab (font, tab, line/wrap, minimap) 2026-06-05 19:31:18 +05:30
amitwh f25d856a2a feat(renderer): ExportBatchDialog (format, concurrency, file list) 2026-06-05 19:30:15 +05:30
amitwh 76fed872ce test(renderer): assert toggled standalone value in ExportHtmlDialog test 2026-06-05 19:28:44 +05:30
amitwh 9de14df016 feat(renderer): ExportHtmlDialog (standalone, highlight style, ascii tables) 2026-06-05 19:27:16 +05:30
amitwh 5f0b4c9c4e feat(renderer): ExportDocxDialog (template picker + ascii tables) 2026-06-05 19:23:40 +05:30
amitwh 7d083a024d feat(renderer): ExportPdfDialog (format, margins, ascii tables) 2026-06-05 19:19:18 +05:30
amitwh 68fcaf9bfc feat(renderer): ExportDialogFooter (shared cancel/export row) 2026-06-05 19:11:27 +05:30
amitwh a2a44fbf2c feat(renderer): useExportSource hook (shared by export dialogs) 2026-06-05 19:09:55 +05:30
amitwh 026a4d9fac feat(renderer): WelcomeDialog (first-launch quick-start) 2026-06-05 19:07:14 +05:30
amitwh a461b62dd3 feat(renderer): ConfirmDialog (generic title/body/onConfirm) 2026-06-05 19:01:06 +05:30
amitwh 1cd316caf1 feat(renderer): AboutDialog (version + GitHub link) 2026-06-05 18:47:14 +05:30
amitwh 2bdb380130 feat(renderer): ModalLayer shell (dispatches to 7 modal types) 2026-06-05 18:36:28 +05:30
amitwh 41942a1316 feat(renderer): useSettingsStore (persisted, validated, reset-able) 2026-06-05 18:31:27 +05:30
amitwh 9ad484744a feat(renderer): useAppStore extended with modal discriminated union 2026-06-05 18:28:02 +05:30
amitwh d0a26126cc feat(renderer): zod validators for settings + export schemas 2026-06-05 18:25:13 +05:30
amitwh 53870d58bb test(renderer): clarify ascii-table alignment tests (left vs right) 2026-06-05 18:23:48 +05:30
amitwh 00d6802422 feat(renderer): ascii-table helper for export-time table formatting 2026-06-05 18:20:23 +05:30
amitwh 02418b943e feat(renderer): add shadcn form primitive (react-hook-form glue) 2026-06-05 18:03:26 +05:30
amitwh 8b2809ebaf fix(renderer): export SheetPortal and SheetOverlay from sheet primitive 2026-06-05 17:55:21 +05:30
amitwh 8f5eb301b6 feat(renderer): add shadcn sheet primitive 2026-06-05 17:53:08 +05:30
amitwh 8f9dab1405 feat(renderer): add shadcn dialog primitive 2026-06-05 17:49:31 +05:30
amitwh a6fa14124d feat(renderer): add shadcn tabs primitive 2026-06-05 17:42:21 +05:30
amitwh 0538aec02c feat(renderer): add shadcn select primitive 2026-06-05 17:35:45 +05:30
amitwh 1d782a00e6 feat(renderer): add shadcn radio-group primitive 2026-06-05 17:26:29 +05:30
amitwh 9eb1fe0f00 test(renderer): add ResizeObserver polyfill to test setup (required for slider/shadcn components) 2026-06-05 17:23:59 +05:30
amitwh 3344b2aea9 feat(renderer): add shadcn slider primitive 2026-06-05 17:23:13 +05:30
amitwh 6b23e5ef60 feat(renderer): add shadcn switch primitive 2026-06-05 17:18:19 +05:30
amitwh 221598c91b feat(renderer): add shadcn checkbox primitive 2026-06-05 17:13:49 +05:30
amitwh d8ee743fb1 feat(renderer): add shadcn textarea primitive 2026-06-05 17:09:59 +05:30
amitwh 66e2b56221 feat(renderer): add shadcn input primitive 2026-06-05 17:06:36 +05:30
amitwh d22d616727 feat(renderer): add shadcn label primitive 2026-06-05 17:03:10 +05:30
amitwh 89590a349a docs(plan): Phase 7 modals implementation plan (37 tasks, TDD, ~+50 tests) 2026-06-05 16:54:07 +05:30
amitwh f447896a63 docs(spec): Phase 7 modals design — settings store, ModalLayer, 7 modal types, ASCII tables 2026-06-05 16:27:25 +05:30
amitwh d865b181e9 test(renderer): phase 5 integration smoke test 2026-06-05 15:39:36 +05:30
amitwh 5e5bab3da9 feat(renderer): persist last-opened folder (mc-file-store) + restore on mount 2026-06-05 15:36:59 +05:30
amitwh ce2bf62d42 feat(renderer): drag-to-reorder tabs (dnd-kit) 2026-06-05 15:34:25 +05:30
amitwh 6da98c3a54 feat(renderer): keyboard shortcuts for file ops (open, save, close, next/prev tab) 2026-06-05 15:32:55 +05:30
amitwh 3598d06240 feat(preload): add file.list, file.pickFolder, file.pickFile convenience methods 2026-06-05 15:13:16 +05:30
amitwh 650c266945 feat(renderer): TabBar wired to file store (dirty dot, close, active highlight)
- Renders tabs from useFileStore.openTabs with title + dirty dot + close button
- Uses Zustand selectors for granular re-renders
- Active tab highlighted with aria-current and accent background
- Close button stops propagation; does not trigger tab activation
- Horizontal scroll on overflow, h-9 fixed bar with border
- Empty state preserved when no tabs open

Tests: 6 cases (empty, render, highlight, click-switch, click-close, dirty indicator)
- 75 total tests (was 70, gained 5 new)
- All pass
- Build: succeeds

Amit Haridas
2026-06-05 15:03:01 +05:30
amitwh 05bbb9f86b feat(renderer): Sidebar, FileTree, Outline components wired into AppShell 2026-06-05 14:59:15 +05:30
amitwh 77c8e05fa5 feat(renderer): shadcn collapsible, scroll-area, context-menu primitives 2026-06-05 14:54:31 +05:30
amitwh 17f318dd75 fix(renderer): drop redundant ternary, add loadChildren idempotence test 2026-06-05 14:50:56 +05:30
amitwh fa5a46d5ac feat(renderer): file store with FileNode tree, openTabs, lazy loadChildren 2026-06-05 14:42:08 +05:30
amitwh a4201acad9 feat(renderer): wire PreviewPane into AppShell 2026-06-05 13:15:47 +05:30
amitwh 0b5af04a6a feat(renderer): PreviewPane tracks scroll ratio 2026-06-05 13:14:50 +05:30
amitwh 2d6f909b0e feat(renderer): useScrollSync hook (60fps throttling, ratio calc) 2026-06-05 13:13:37 +05:30
amitwh 8624257c1f feat(renderer): editor buffer content feeds preview store (300ms debounce) 2026-06-05 13:09:34 +05:30
amitwh b75f436aaa feat(renderer): PreviewPane with empty state and MarkdownRenderer 2026-06-05 13:07:55 +05:30
amitwh d81d8c28d2 test(renderer): remove non-existent html property from preview-store reset 2026-06-05 13:07:06 +05:30
amitwh 559d09cad9 feat(renderer): preview store with 300ms debounced source 2026-06-05 13:04:39 +05:30
amitwh 5ad582ec3e feat(renderer): MarkdownRenderer with mermaid code re-extraction from source 2026-06-05 13:03:32 +05:30
amitwh d02f896167 feat(renderer): MermaidLazy (loads mermaid on first use, error UI) 2026-06-05 13:01:24 +05:30
amitwh f34775ce53 feat(renderer): markdown lib (marked + DOMPurify + mermaid placeholders) 2026-06-05 12:56:31 +05:30
amitwh 5d6a55dd09 feat(renderer): StatusBar reads from editor store (word count, cursor pos) 2026-06-05 12:49:16 +05:30
amitwh 0e80e37d9d feat(renderer): wire EditorPane into AppShell 2026-06-05 12:46:13 +05:30
amitwh 9a7e994224 feat(renderer): EditorPane with empty state and CodeMirror rendering 2026-06-05 12:42:25 +05:30
amitwh 3effacf816 feat(renderer): CodeMirror 6 editor wrapper with markdown, themes, keymaps 2026-06-05 12:38:09 +05:30
amitwh 1be10f9ae5 feat(renderer): CodeMirror light theme with brand-aware syntax colors 2026-06-05 12:25:31 +05:30
amitwh 4c0b7d6e84 feat(renderer): editor store with buffers, dirty state, cursor (immer) 2026-06-05 12:21:48 +05:30
amitwh db04ea5854 feat(renderer): App.tsx renders AppShell 2026-06-05 12:11:01 +05:30
amitwh 567726022c feat(renderer): AppShell with resizable panes, sidebar/preview toggle, persisted sizes 2026-06-05 12:02:35 +05:30
amitwh 1999a7716e feat(renderer): StatusBar placeholder (word count wired in Phase 3) 2026-06-05 11:53:34 +05:30
amitwh 16e071ae5e feat(renderer): Breadcrumb placeholder (wired in Phase 5) 2026-06-05 11:50:45 +05:30
amitwh 7ecf54ceb0 feat(renderer): Toolbar skeleton with formatting buttons 2026-06-05 11:48:26 +05:30
amitwh 95e2f45f1f feat(renderer): TabBar skeleton (no tabs yet — wired in Phase 5) 2026-06-05 11:45:33 +05:30
amitwh 7fbbd60525 feat(renderer): AppHeader with sidebar/preview toggles + theme toggle 2026-06-05 11:40:54 +05:30
amitwh c715bb354c feat(renderer): install shadcn resizable primitive 2026-06-05 11:35:02 +05:30
amitwh 6525de7667 feat(renderer): add useAppStore with sidebar/preview/zen/pane-sizes 2026-06-05 11:30:25 +05:30
amitwh a2c1d0c11a feat(renderer): wire App.tsx shell with theme provider and top-bar 2026-06-05 10:19:36 +05:30
amitwh e0d6315204 feat(renderer): add next-themes provider + theme toggle (sun/moon) 2026-06-05 10:17:38 +05:30
amitwh 68ff7d076a feat(renderer): install shadcn button primitive with tests 2026-06-05 10:13:31 +05:30
amitwh 67b57eae78 feat(renderer): add motion preset transitions for modals/sidebar/toasts 2026-06-05 09:37:49 +05:30
amitwh 301c51ac84 test(renderer): add failing test for motion presets 2026-06-05 09:36:18 +05:30
amitwh 904ffbdd5b feat(renderer): implement typed IPC wrapper with IpcResult discriminated union 2026-06-05 09:34:19 +05:30
amitwh ea383783ec test(renderer): add failing test for ipc wrapper + IpcResult types 2026-06-05 09:25:02 +05:30
amitwh e758a81c4c feat(renderer): implement cn() helper for tailwind-merge + clsx 2026-06-05 09:23:30 +05:30
amitwh ea0f3f93bf test(renderer): add failing test for cn() helper + vitest config 2026-06-05 09:20:04 +05:30
amitwh 188e73d7c1 feat(renderer): configure shadcn/ui, extend design tokens for glassy aesthetic 2026-06-05 09:13:52 +05:30
amitwh 8265e4ff88 chore(deps): add shadcn/ui ecosystem, motion, zustand+immer, test stack 2026-06-05 09:01:45 +05:30
amitwh 8a8671b128 docs(plan): add React UI redesign implementation plan (10 vertical slices)
- Phase 1: Foundation (shadcn, deps, lib utils, motion presets, theme)
- Phase 2: App shell + resizable panes
- Phase 3: Editor (CodeMirror 6 + immer store)
- Phase 4: Preview (marked + KaTeX + mermaid + scroll sync)
- Phase 5: File tree + tabs
- Phase 6: Native menus + toolbar
- Phase 7: Modals (export, settings, about, confirm)
- Phase 8: Toasts (sonner)
- Phase 9: Advanced tools (zen, repl, ascii, table, print, word)
- Phase 10: Polish + delete legacy renderer

Phases 1-4 are fully fleshed out (60+ TDD tasks with working code).
Phases 5-9 are sketched with the same TDD pattern; detailed
steps will be expanded at execution time following the conventions
established in Phases 1-4.
2026-06-05 08:52:03 +05:30
amitwh 3646dc29c6 docs(spec): fix spec self-review issues (typo, drag-vs-resize, lazy-load ambiguity) 2026-06-05 08:27:33 +05:30
amitwh a999f598cc docs(spec): add React + shadcn/ui UI redesign design spec
Brainstormed via superpowers:brainstorming. Locks in:
- Full feature parity with legacy renderer
- Polished + Glassy (Raycast/Arc) visual style
- IDE-style layout with draggable divider
- shadcn/ui + Motion (Framer Motion) + Zustand stack
- A/B/D modal patterns (no command palette)
- 10-phase vertical-slice implementation plan
2026-06-05 08:26:02 +05:30