Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
349 commits
Select commit Hold shift + click to select a range
52c2f2d
feat(pane): persist layout across sessions using tab-position indices
KrisPowers Jun 8, 2026
32de39a
feat(shortcuts): add centralized shortcut manager with localStorage p…
KrisPowers Jun 8, 2026
4fa3823
feat(shortcuts): wire app-level shortcuts for tabs, navigation, and s…
KrisPowers Jun 8, 2026
1a64c10
feat(settings): add Keyboard Shortcuts page with search and rebinding
KrisPowers Jun 8, 2026
2ffef48
style(bugs): increase whitespace and remove location pill in diagnost…
KrisPowers Jun 8, 2026
bbbd13d
style(database): increase sidebar and table item spacing, simplify co…
KrisPowers Jun 8, 2026
833145c
style(ports): increase toolbar and row padding, clean up empty state
KrisPowers Jun 8, 2026
e5ddff9
style(settings): normalize nav header size, increase color row and AN…
KrisPowers Jun 8, 2026
2a9f378
fix(layout): merge app header into pane tab bar, keep terminals alive…
KrisPowers Jun 9, 2026
8633902
fix(header): add global button appearance/outline reset
KrisPowers Jun 9, 2026
1241e64
fix(header): increase tab bar height to 36px, remove redundant border…
KrisPowers Jun 9, 2026
0438180
fix(header): increase window control button and icon sizes, make upda…
KrisPowers Jun 9, 2026
6c499de
fix(pane): suppress focus ring when only one pane is open
KrisPowers Jun 9, 2026
68857f4
feat(sidebar): add branding placeholder, move Ports below Debug, repl…
KrisPowers Jun 9, 2026
ea2c3f1
fix(ports): make ports a sidebar page like database/debug, not a tab
KrisPowers Jun 9, 2026
2f9650b
fix(split): keep terminals mounted when pane closes to prevent sessio…
KrisPowers Jun 9, 2026
cf6c807
style(sidebar): replace ports icon with plug connector shape
KrisPowers Jun 9, 2026
8feabcd
feat(git): add C++ backend IPC handlers for git operations
KrisPowers Jun 9, 2026
55c7bb8
feat(git): add frontend types and IPC wrapper for git operations
KrisPowers Jun 9, 2026
21b464b
feat(git): add Version Control sidebar panel with full git UI
KrisPowers Jun 9, 2026
ebe0013
fix(git): stopPropagation in IconBtn, fix onClick type mismatch
KrisPowers Jun 9, 2026
cd90553
style(sidebar): move Version Control icon below Code Editor
KrisPowers Jun 9, 2026
191adbe
fix(split-view): always show window controls on top-right pane, not f…
KrisPowers Jun 9, 2026
b4caabe
feat(split-view): replace split buttons with drag-to-edge panel syste…
KrisPowers Jun 9, 2026
b23c038
fix(host): post WM_QUIT on WM_DESTROY so closing the window exits the…
KrisPowers Jun 9, 2026
c7ca974
fix(split): don't create a terminal tab when dragging a sidebar page …
KrisPowers Jun 9, 2026
ea6529e
fix(split): single global tab bar, per-pane close button, drag cursor
KrisPowers Jun 9, 2026
71f2f8f
fix(split): sidebar panels inherit terminal context from source pane …
KrisPowers Jun 9, 2026
36e7c05
fix(tabs): restore active page when switching terminal tabs, cascade-…
KrisPowers Jun 9, 2026
adfc56f
fix(split): keep global tab bar showing terminal tabs when a page-onl…
KrisPowers Jun 9, 2026
5cde971
fix(sidebar): make Settings and Plugins buttons click-only, not drag-…
KrisPowers Jun 9, 2026
d15f11b
fix(terminal): catch xterm/WebGL dispose errors and add top-level err…
KrisPowers Jun 9, 2026
9c3d14a
fix(split): render linked terminal in page-only panes instead of New …
KrisPowers Jun 9, 2026
feb9f9c
Add backend support for listing and reading GitHub Actions workflows
KrisPowers Jun 10, 2026
2e6d0b7
Add Workflows sidebar panel for browsing GitHub Actions
KrisPowers Jun 10, 2026
ed09af5
feat(workflows): add Run Locally panel with act streaming output
KrisPowers Jun 10, 2026
c7d32b7
Add YAML subset parser for local workflow runner
KrisPowers Jun 10, 2026
517d980
Add expression evaluator for local workflow runner
KrisPowers Jun 10, 2026
8d6e44e
Add process registry for tracking workflow run child processes
KrisPowers Jun 10, 2026
d065604
feat(workflows): add native workflow runner orchestration
KrisPowers Jun 10, 2026
29e9160
feat(workflows): wire native runner, replace checkAct with checkRunner
KrisPowers Jun 10, 2026
384b34d
feat(workflows): redesign Workflows panel as 2-panel layout with skel…
KrisPowers Jun 10, 2026
e7a4a23
fix(workflows): run non-matrix jobs locally regardless of declared ru…
KrisPowers Jun 10, 2026
d593639
feat(workflows): redesign panel for readability, add global run toasts
KrisPowers Jun 10, 2026
e677555
fix(panes): give every top-level tab its own independent pane layout
KrisPowers Jun 10, 2026
534999e
feat(workflows): rebuild workflows panel with card-based layout and r…
KrisPowers Jun 10, 2026
73c1244
fix(host): wire up window.startDrag so the title bar can move the window
KrisPowers Jun 10, 2026
1cb9bdc
fix(host): make empty tab-bar space draggable so the window can be moved
KrisPowers Jun 10, 2026
5b8ba46
feat(workflows): redesign detail pane to a decluttered header + verti…
KrisPowers Jun 10, 2026
54ad3dd
fix(sidebar): shorten recent paths and fix recent-path navigation
KrisPowers Jun 11, 2026
e386586
fix(versioncontrol): escape all closing braces in stash ref display
KrisPowers Jun 11, 2026
ce50183
feat(notepad): add per-path notepad page and finish recent-paths wiring
KrisPowers Jun 11, 2026
0e45246
fix(frontend): resolve ESLint errors blocking CI
KrisPowers Jun 11, 2026
5ad0d16
fix(sidebar): keep pointer cursor on hover, only show grab cursor whi…
KrisPowers Jun 11, 2026
70f8012
fix(sidebar): use lucide book icon for notepad
KrisPowers Jun 11, 2026
40737cc
feat(terminal): rewrite output UI as command blocks
KrisPowers Jun 12, 2026
3cc2dfc
fix(terminal): restore input row position, zoom, and add cd/clear fee…
KrisPowers Jun 12, 2026
87bfed5
fix(terminal): align output L-connector and scale dot with font size
KrisPowers Jun 12, 2026
0939484
fix(terminal): lock input while a command is running, green dot when …
KrisPowers Jun 12, 2026
cf866d6
fix(terminal): add gap between output L-connector and text
KrisPowers Jun 12, 2026
25448a1
fix(terminal): clear actually empties block list, add spacing between…
KrisPowers Jun 12, 2026
cca4288
fix(terminal): make ctrl+c actually kill a running foreground command…
KrisPowers Jun 12, 2026
da80c98
fix(terminal): autofocus input bar and let ctrl+c interrupt regardles…
KrisPowers Jun 12, 2026
7c1ca1a
style(terminal): badge-style branch pill with icon, moved between cwd…
KrisPowers Jun 12, 2026
bbaddb1
style(terminal): shrink branch pill, smaller radius, better icon, mor…
KrisPowers Jun 12, 2026
f520a97
fix(terminal): add vertical padding to input row so the border-top st…
KrisPowers Jun 12, 2026
9a8bc6d
fix(editor): keep Code Editor mounted across tab/page switches
KrisPowers Jun 12, 2026
926b53d
fix(workflows): keep Workflows panel mounted and silently re-check on…
KrisPowers Jun 12, 2026
6d14f59
ci: auto-open fix PRs when lint or dependency audit checks fail
KrisPowers Jun 12, 2026
dfa97ca
fix(frontend): clear ESLint errors in VersionControlPanel
KrisPowers Jun 12, 2026
40b41be
ci: post inline suggestions instead of opening fix PRs
KrisPowers Jun 12, 2026
d2c994d
ci: commit lint/dependency auto-fixes directly to the PR branch
KrisPowers Jun 12, 2026
a3b2b97
fix(deps): npm audit fix for setup/frontend
github-actions[bot] Jun 12, 2026
35c8e3e
fix(deps): npm audit fix for app/frontend
github-actions[bot] Jun 12, 2026
999e609
ci: retry auto-fix pushes with rebase to avoid race conditions
KrisPowers Jun 12, 2026
8061cb5
fix(deps): upgrade vite to v8 to resolve esbuild high-severity CVEs
KrisPowers Jun 12, 2026
17e0555
ci: use npm audit fix --force with build verification before committing
KrisPowers Jun 12, 2026
cee8084
docs: add in-house editor/explorer migration decision record
KrisPowers Jun 13, 2026
cb45555
docs: remove migration plan doc, tracked outside repo now
KrisPowers Jun 13, 2026
ffb8828
feat(editor): vendor tree-sitter core via vcpkg + JSON/JavaScript gra…
KrisPowers Jun 13, 2026
2711733
feat(editor): backend buffer manager with tree-sitter highlighting
KrisPowers Jun 13, 2026
43c579c
feat(editor): GPU-rendered WebGL2 editor as alternate tab view
KrisPowers Jun 13, 2026
b11d934
feat(editor): add TypeScript/TSX tree-sitter grammars and highlighting
KrisPowers Jun 13, 2026
243532a
fix(editor): TS class names and JSON property highlight precedence
KrisPowers Jun 13, 2026
a792cda
feat(editor): derive GPU editor colors from active theme
KrisPowers Jun 13, 2026
176ce38
feat(editor): backend undo/redo with edit coalescing, wire into GPU e…
KrisPowers Jun 13, 2026
53bfd2c
feat(editor): multi-cursor support in GPU editor
KrisPowers Jun 13, 2026
46c56b6
feat(editor): bracket-pair matching in GPU editor
KrisPowers Jun 13, 2026
bab9ac6
feat(editor): auto-indent on Enter and auto-close brackets/quotes in …
KrisPowers Jun 13, 2026
48c40fd
feat(editor): add GpuEditor readOnly mode, swap WorkflowsPanel off Mo…
KrisPowers Jun 13, 2026
e9f61ba
feat(editor): replace Monaco with GPU editor in main file tabs
KrisPowers Jun 13, 2026
e19dc10
feat(editor): swap FullscreenIDE both panes to GPU editor
KrisPowers Jun 13, 2026
9fc2213
feat(editor): add backend search op for find/replace
KrisPowers Jun 13, 2026
d0707bf
feat(editor): find/replace bar for GPU editor
KrisPowers Jun 13, 2026
250be7b
fix(host): disable WebView2 browser accelerator keys so editor shortc…
KrisPowers Jun 13, 2026
4826b5f
feat(editor): minimap overlay for GPU editor
KrisPowers Jun 13, 2026
f9b7c49
fix(frontend): apply eslint --fix
github-actions[bot] Jun 13, 2026
e882842
feat(editor): backend editor.completions op (symbols + keywords + wor…
KrisPowers Jun 13, 2026
351011a
feat(editor): autocomplete popup for GPU editor
KrisPowers Jun 13, 2026
db1f151
feat(explorer): lazy directory loading and flattened tree rendering
KrisPowers Jun 13, 2026
2ed36e2
feat(explorer): virtualize file tree rendering with @tanstack/react-v…
KrisPowers Jun 13, 2026
57f93ab
feat(explorer): native recursive file-change watcher
KrisPowers Jun 13, 2026
bf235fe
refactor(editor): move completion query lookup into LanguageDef
KrisPowers Jun 13, 2026
520ef00
feat(editor): vendor C tree-sitter grammar
KrisPowers Jun 13, 2026
1f3770d
feat(editor): vendor C++ tree-sitter grammar
KrisPowers Jun 13, 2026
22832da
feat(editor): vendor C# tree-sitter grammar
KrisPowers Jun 13, 2026
e0d6cb3
feat(editor): vendor Rust tree-sitter grammar
KrisPowers Jun 13, 2026
c84d343
feat(editor): vendor Go tree-sitter grammar
KrisPowers Jun 13, 2026
221e608
feat(editor): vendor Java tree-sitter grammar
KrisPowers Jun 13, 2026
259f4bb
feat(editor): vendor Lua tree-sitter grammar
KrisPowers Jun 13, 2026
fc9d332
feat(editor): vendor Python tree-sitter grammar
KrisPowers Jun 13, 2026
d09c4af
feat(editor): vendor Bash tree-sitter grammar
KrisPowers Jun 13, 2026
d91a092
feat(editor): vendor Zig tree-sitter grammar
KrisPowers Jun 13, 2026
dde8358
feat(editor): vendor TOML tree-sitter grammar
KrisPowers Jun 13, 2026
c4cf8f4
feat(editor): vendor Dockerfile tree-sitter grammar
KrisPowers Jun 13, 2026
08fb2fe
feat(editor): vendor YAML tree-sitter grammar
KrisPowers Jun 13, 2026
c00f977
feat(editor): vendor CSS tree-sitter grammar
KrisPowers Jun 13, 2026
34694e0
feat(editor): vendor SCSS tree-sitter grammar
KrisPowers Jun 13, 2026
96f5408
feat(editor): add Markdown tree-sitter grammar and highlighting
KrisPowers Jun 13, 2026
6a07913
feat(editor): add HTML tree-sitter grammar and highlighting
KrisPowers Jun 13, 2026
aa844bc
feat(editor): remove Monaco entirely, finish GPU editor migration
KrisPowers Jun 13, 2026
f5744f8
fix(editor): make GPU editor fill pane height instead of collapsing t…
KrisPowers Jun 14, 2026
ec9ed32
fix(editor): damp wheel-scroll speed to a fixed lines-per-notch rate
KrisPowers Jun 14, 2026
8067bd6
feat(ide): auto-close tabs for files deleted from disk
KrisPowers Jun 14, 2026
88f4279
fix(editor): don't auto-focus read-only GpuEditor instances on open
KrisPowers Jun 14, 2026
a130387
fix(editor): cap wheel-scroll to one notch per event
KrisPowers Jun 14, 2026
66e80c9
redesign(explorer): monochrome icon set and root-as-tree-row layout
KrisPowers Jun 14, 2026
c493db8
fix(editor): preventDefault on canvas mousedown so the hidden textare…
KrisPowers Jun 14, 2026
7f15440
fix(editor): cap wheel-scroll accumulator contribution, not just output
KrisPowers Jun 14, 2026
56641ed
style(editor): add top margin between tab bar and editor content
KrisPowers Jun 14, 2026
dad6b33
fix(editor): avoid full line-cache flush on every edit
KrisPowers Jun 14, 2026
cac183f
redesign(editor): tab bar nav arrows, file icons, and inline separators
KrisPowers Jun 14, 2026
e8882b0
fix(editor): keyboard/mouse shortcuts, drag-selection bug, and git/di…
KrisPowers Jun 14, 2026
21b40a0
feat(editor): add indent guide lines
KrisPowers Jun 14, 2026
2c6d519
feat(editor): add code folding for indented blocks
KrisPowers Jun 14, 2026
b0ef669
feat(editor): add line pin/mark with red gutter and minimap indicator
KrisPowers Jun 14, 2026
0def6d7
feat(editor): DOM overlay gutter controls and live git gutter
KrisPowers Jun 14, 2026
bffca47
fix(editor): add gutter margin before pin/mark dot and enlarge it
KrisPowers Jun 14, 2026
d5bc71a
feat(editor): replace explorer/find/completion icons with Lucide
KrisPowers Jun 15, 2026
7d2d334
fix(editor): style completions scrollbar, stop scroll bleed, flip pla…
KrisPowers Jun 15, 2026
77d3bed
fix(editor): move tab close button to the right, mark unsaved tabs wi…
KrisPowers Jun 15, 2026
c901249
fix(editor): enlarge gutter fold chevron to match pin/mark dot size
KrisPowers Jun 15, 2026
5bf49f9
feat(workflows): horizontal sub-tabs, Edit Workflow button, Console s…
KrisPowers Jun 15, 2026
1c55729
fix(workflows): Edit Workflow opens the file in the pane's editor page
KrisPowers Jun 15, 2026
70f7c77
feat(ports): add Endpoints security scanner sub-tab
KrisPowers Jun 15, 2026
14f75aa
fix(endpoints): stop local security window at adjacent route boundary
KrisPowers Jun 15, 2026
4bf4983
style: add shared severity, status-bg, purple, and git-diff color tokens
KrisPowers Jun 15, 2026
875f53a
style: replace file/folder emoji with FileIcon SVG in new-item dialog
KrisPowers Jun 15, 2026
8774e10
style: replace check/x glyphs with SVG icons in settings save status
KrisPowers Jun 15, 2026
9e2fa34
style: replace check/x glyphs with SVG icons in theme editor save button
KrisPowers Jun 15, 2026
9c6bee6
style: replace plugin category glyphs with SVG icons
KrisPowers Jun 15, 2026
628fd07
style: replace sort/refresh glyphs with SVG icons in ports tab
KrisPowers Jun 15, 2026
8610fda
style: replace branch marker and ahead/behind glyphs with SVG icons
KrisPowers Jun 15, 2026
3379397
style: replace net up/down arrow glyphs with SVG icons in perf tab
KrisPowers Jun 15, 2026
0b45f10
style: use shared purple token for GPU gauge and drop em-dash from GP…
KrisPowers Jun 15, 2026
fd8002c
style: replace warning glyph with SVG icon in database sidebar error …
KrisPowers Jun 15, 2026
b61e40f
style: remove em-dashes from settings and update-available copy
KrisPowers Jun 15, 2026
5a87a30
style: remove em-dashes from database, endpoints, workflows and ports…
KrisPowers Jun 15, 2026
1029595
style: remove em-dashes from CWE impact and disclaimer text
KrisPowers Jun 15, 2026
9d05299
style: remove em-dashes from plugin store requirements list
KrisPowers Jun 15, 2026
52044e5
style: replace remaining glyphs with SVG icons in settings, theme edi…
KrisPowers Jun 15, 2026
4322995
chore: add UI text guardrail script for emoji and em-dash checks
KrisPowers Jun 15, 2026
5e5f006
feat: add shared PageHeader and PageSidebarNav components
KrisPowers Jun 15, 2026
b4332ee
feat(vcs): add PageHeader, toolbar icon buttons and git-add/remove to…
KrisPowers Jun 15, 2026
8732487
feat(notepad): add PageHeader and SVG icons for new-note/delete actions
KrisPowers Jun 15, 2026
f8f869e
style(ports): align toolbar border with sep and tokenize endpoint sev…
KrisPowers Jun 15, 2026
bf775eb
style(debug): reference shared severity color tokens in SEV_META
KrisPowers Jun 15, 2026
091b765
style: tokenize hardcoded warning/git colors in workflows, database a…
KrisPowers Jun 15, 2026
948d8e2
style(settings): use radius and status-bg tokens in ConfigEditor
KrisPowers Jun 15, 2026
23b897a
feat: add shared SidebarPanel and SubNavTabs components
KrisPowers Jun 15, 2026
373c59e
refactor(database): use shared SidebarPanel for table list
KrisPowers Jun 15, 2026
e8ce58a
refactor(database): use shared SidebarPanel for database file list
KrisPowers Jun 15, 2026
ac01e27
refactor(ports): use shared SubNavTabs for tab switcher
KrisPowers Jun 16, 2026
f44e539
refactor(problems): use shared SubNavTabs and SidebarPanel
KrisPowers Jun 16, 2026
2ff81ed
refactor(workflows): use shared SidebarPanel and SubNavTabs
KrisPowers Jun 16, 2026
4376a32
refactor(version-control): rebuild as sidebar+diff split layout
KrisPowers Jun 16, 2026
495c756
refactor(ui): redesign SubNavTabs as minimal underline tabs
KrisPowers Jun 16, 2026
64a4189
fix(ports): use items-stretch wrapper so SubNavTabs underline aligns
KrisPowers Jun 16, 2026
0b4671e
refactor(problems): move SubNavTabs switcher to its own dedicated row
KrisPowers Jun 16, 2026
e4f1308
refactor(workflows): standardize sidebar to universal PageSidebarNavI…
KrisPowers Jun 16, 2026
b14ae44
refactor(endpoints): replace filter buttons with shared SubNavTabs
KrisPowers Jun 16, 2026
8c69a80
refactor(problems): replace CWE filter buttons with shared SubNavTabs
KrisPowers Jun 16, 2026
09f249a
refactor(sidebar): enrich PageSidebarNavItem rows with accent border …
KrisPowers Jun 16, 2026
7ea9f65
refactor(sidebar): remove container padding so rows sit flush edge-to…
KrisPowers Jun 16, 2026
001748c
refactor(problems): migrate CWE list to universal PageSidebarNavItem …
KrisPowers Jun 16, 2026
de9b28e
fix(workflows): restore sidebar skeleton loading with unified row sizing
KrisPowers Jun 16, 2026
7133949
feat(ide): add VSCode-style collapsible Explorer and Structure sideba…
KrisPowers Jun 16, 2026
e9a5054
feat(titlebar): add background task progress indicator
KrisPowers Jun 16, 2026
293250e
fix(ide): replace letter badges with SVG icons in Structure view
KrisPowers Jun 16, 2026
191e590
fix(editor): replace Unicode ellipsis fold placeholder with ASCII dots
KrisPowers Jun 16, 2026
719f5ce
fix(ide): replace Unicode arrow symbols in menu shortcut labels with …
KrisPowers Jun 16, 2026
95eaaba
feat(titlebar): replace task progress circle with always-visible Spar…
KrisPowers Jun 16, 2026
ee038f1
feat(tasks): move workflow run toasts into header dropdown, fix blank…
KrisPowers Jun 16, 2026
bda8dab
fix(tasks): use fixed positioning for dropdown to escape titlebar ove…
KrisPowers Jun 16, 2026
5d8374f
fix(ide): replace custom SVG icons in Explorer sidebar header with Lu…
KrisPowers Jun 16, 2026
16c058b
feat(structure): redesign Structure panel as collapsible VS Code-styl…
KrisPowers Jun 17, 2026
751e072
feat(ui): remove bottom status bar
KrisPowers Jun 17, 2026
efc0b9d
feat(endpoints): register endpoint scan as background task in header …
KrisPowers Jun 17, 2026
a26000f
feat(sidebar): widen default SidebarPanel from 260px to 300px
KrisPowers Jun 17, 2026
a338460
feat(bugs): replace code snippet with GPU editor in view-only mode
KrisPowers Jun 17, 2026
0f17f65
feat(bugs): full-height code editor, no git gutter in CWE detail view
KrisPowers Jun 17, 2026
ad997e0
revert(bugs): restore text snippet renderer at natural height
KrisPowers Jun 17, 2026
eac2fbf
feat(bugs): extract full containing function block as CWE code snippet
KrisPowers Jun 17, 2026
f7a7751
fix(bugs): open-in-editor navigates existing editor pane instead of o…
KrisPowers Jun 17, 2026
0b2cf27
fix(editor): pin gotoLine target at top of viewport instead of minimu…
KrisPowers Jun 17, 2026
918d4c0
fix(editor): reliably navigate to exact line from bugs page open-in-e…
KrisPowers Jun 17, 2026
0a3f82a
feat(bugs): inline rescan button with tab bar, remove path toolbar
KrisPowers Jun 17, 2026
2bfda92
feat(tabs): auto-name terminal tabs from last 2 CWD folders
KrisPowers Jun 17, 2026
4c31008
fix(editor): double-click word selection broken by async race with mo…
KrisPowers Jun 17, 2026
55bdbe5
fix(editor): enable drag-to-extend selection after double-click word …
KrisPowers Jun 17, 2026
62429bc
feat(editor): triple-click selects entire line
KrisPowers Jun 17, 2026
5d0e563
fix(editor): move triple-click line selection to onMouseDown for reli…
KrisPowers Jun 17, 2026
86a8571
fix(terminal): run interactive CLIs via ConPTY for proper TTY support
KrisPowers Jun 17, 2026
b5e7a16
fix(terminal): never swallow Ctrl+C for copy while a PTY program is a…
KrisPowers Jun 17, 2026
653aa4e
fix(terminal): set TERM for ConPTY child processes on Windows
KrisPowers Jun 18, 2026
59ea0f3
fix(terminal): base64-encode pty input so Backspace survives the IPC …
KrisPowers Jun 18, 2026
bde5f9b
fix(terminal): process pty input/resize/interrupt synchronously to pr…
KrisPowers Jun 18, 2026
fbf67db
fix(terminal): force-terminate claude/codex PTY sessions on double Ct…
KrisPowers Jun 18, 2026
89e6083
redesign Workflows page nav, header, and events map
KrisPowers Jun 19, 2026
1289090
rework events map visual design from a flat tinted-box look to icon-b…
KrisPowers Jun 19, 2026
92cc576
replace events map node graph with a vertical staged pipeline
KrisPowers Jun 19, 2026
e228495
restore events map as a box-and-line graph, styled as a clean minimal…
KrisPowers Jun 19, 2026
4f2123d
fix events map cards blending into the canvas background
KrisPowers Jun 19, 2026
d4b96d8
overhaul events map into a circuit-schematic visual language
KrisPowers Jun 19, 2026
6b3a888
delete the events map graph implementation entirely
KrisPowers Jun 19, 2026
5c13e4e
add events map as a from-scratch DOM-measured lane diagram
KrisPowers Jun 19, 2026
c9ec30f
delete the left-to-right pill events map
KrisPowers Jun 19, 2026
1e7bdf8
rebuild events map running top to bottom with rectangular cards
KrisPowers Jun 19, 2026
c190c35
add edit and add-step controls to events map, surface live step status
KrisPowers Jun 19, 2026
8620287
add process creation and job linking to events map
KrisPowers Jun 19, 2026
d155491
fix(frontend): apply eslint --fix
github-actions[bot] Jun 19, 2026
d600e6d
replace native prompt with embedded modal for custom link conditions
KrisPowers Jun 19, 2026
cdcd92c
fix if: condition edits clobbering multi-line block scalars
KrisPowers Jun 19, 2026
3a18a37
feat(workflows): merge Code and Events Map into a single split view
KrisPowers Jun 19, 2026
f4569a2
fix(frontend): apply eslint --fix
github-actions[bot] Jun 19, 2026
fcb5eaf
fix(workflows): default the code/events split to 60/40
KrisPowers Jun 19, 2026
9be8eb8
feat(workflows): consolidate detail toolbar into one bar
KrisPowers Jun 19, 2026
b1023b2
feat(workflows): jump to relevant tab on Run and Add process
KrisPowers Jun 19, 2026
cbd4782
feat(workflows): carry over editor indent guides and zoom to code view
KrisPowers Jun 19, 2026
ff5cc71
feat(workflows): split console into output + checklist panes, fix ste…
KrisPowers Jun 19, 2026
2cf4f58
feat(workflows): remove pass/fail pill next to run button
KrisPowers Jun 20, 2026
45f2f74
fix(ports): make open-ports table sort reliably on every click
KrisPowers Jun 21, 2026
1061f44
feat(ports,endpoints): turn column headers into sort+filter dropdown …
KrisPowers Jun 21, 2026
d4db472
feat(ports): add local TCP/UDP port forwarding
KrisPowers Jun 21, 2026
8c5fa9a
feat(ports): move Forwards tab to end, add NAT-disclaimer info icon
KrisPowers Jun 21, 2026
85dfcd7
fix(ports): make NAT disclaimer tooltip instant, drop help cursor
KrisPowers Jun 21, 2026
7f0b961
rebrand to Binder
KrisPowers Jun 21, 2026
238671a
fix(frontend): apply eslint --fix
github-actions[bot] Jun 22, 2026
ab1e1f5
fix(frontend): resolve type and lint errors breaking CI
KrisPowers Jun 22, 2026
e334471
Merge remote-tracking branch 'origin/feat/webview-migration' into fea…
KrisPowers Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ body:
value: |
Thanks for taking the time to report a bug. Fill out as much as you can — the more detail, the faster it gets fixed.

**Security issues:** please do not report them here. Use [GitHub Private Advisories](https://github.com/Command-IDE/terminal-IDE/security/advisories/new) instead.
**Security issues:** please do not report them here. Use [GitHub Private Advisories](https://github.com/BinderTools/binder/security/advisories/new) instead.

- type: input
id: version
attributes:
label: cmdIDE Version
label: Binder Version
description: Found in the window title bar or the About section of Settings.
placeholder: "e.g. 1.2.0"
validations:
Expand Down Expand Up @@ -62,7 +62,7 @@ body:
label: Steps to Reproduce
description: Reliable steps to trigger the bug. The more specific the better.
placeholder: |
1. Open cmdIDE
1. Open Binder
2. Run `/preview index.html`
3. ...
validations:
Expand Down
6 changes: 3 additions & 3 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ blank_issues_enabled: false

contact_links:
- name: Theme Submission
url: https://github.com/Command-IDE/cmdide-themes/issues/new?template=community_theme_submission.md
url: https://github.com/BinderTools/binder-themes/issues/new?template=community_theme_submission.md
about: Submit a community theme — please use the themes repository for this.
- name: Plugin SDK Questions
url: https://github.com/Command-IDE/terminal-IDE/discussions
url: https://github.com/BinderTools/binder/discussions
about: Questions about building plugins? Start a discussion.
- name: Security Vulnerability
url: https://github.com/Command-IDE/terminal-IDE/security/advisories/new
url: https://github.com/BinderTools/binder/security/advisories/new
about: Report a security vulnerability privately — do not open a public issue.
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ body:
- type: markdown
attributes:
value: |
Thanks for suggesting an improvement. Before submitting, search [existing issues](https://github.com/Command-IDE/terminal-IDE/issues) to avoid duplicates.
Thanks for suggesting an improvement. Before submitting, search [existing issues](https://github.com/BinderTools/binder/issues) to avoid duplicates.

**Themes:** propose new themes in the [themes repository](https://github.com/Command-IDE/cmdide-themes) instead.
**Themes:** propose new themes in the [themes repository](https://github.com/BinderTools/binder-themes) instead.

- type: dropdown
id: area
Expand Down
291 changes: 256 additions & 35 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,35 +21,51 @@ concurrency:

jobs:

# ── Go vulnerability scanner ──────────────────────────────────────────────────
govulncheck:
name: Go — govulncheck
# ── npm audit — app frontend ──────────────────────────────────────────────────
npm-audit-app:
name: npm audit — app/frontend
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
- uses: actions/setup-node@v4
with:
go-version-file: app/go.mod
cache-dependency-path: app/go.sum
node-version: 20

- name: Install govulncheck
run: go install golang.org/x/vuln/cmd/govulncheck@latest
- name: Install dependencies
run: npm ci
working-directory: app/frontend

- name: Run govulncheck
run: govulncheck ./...
working-directory: app
- name: Run npm audit
# Fail only on high or critical vulnerabilities
run: npm audit --audit-level=high
working-directory: app/frontend

# ── npm audit — app frontend ──────────────────────────────────────────────────
npm-audit-app:
name: npm audit — app/frontend
# ── Auto-fix — npm audit (app frontend) ──────────────────────────────────────
# When npm audit fails on a PR, run `npm audit fix`, commit any resulting
# lockfile changes straight to the PR's branch, and leave a comment
# summarizing what changed.
npm-audit-app-autofix:
name: Auto-fix — npm audit (app/frontend)
needs: npm-audit-app
if: >-
always() &&
needs.npm-audit-app.result == 'failure' &&
github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: write
pull-requests: write

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GH_PAT || github.token }}

- uses: actions/setup-node@v4
with:
Expand All @@ -59,14 +75,101 @@ jobs:
run: npm ci
working-directory: app/frontend

- name: Run npm audit
# Fail only on high or critical vulnerabilities
run: npm audit --audit-level=high
- name: npm audit fix
run: npm audit fix --force
working-directory: app/frontend
continue-on-error: true

- name: Verify build
id: build
run: npm run build
working-directory: app/frontend
continue-on-error: true

- name: Commit fixes
id: commit
run: |
if git diff --quiet -- app/frontend/package-lock.json app/frontend/package.json; then
echo "changed=false" >> "$GITHUB_OUTPUT"
exit 0
fi
if [ "${{ steps.build.outcome }}" != "success" ]; then
echo "changed=false" >> "$GITHUB_OUTPUT"
echo "build_failed=true" >> "$GITHUB_OUTPUT"
git diff -- app/frontend/package-lock.json app/frontend/package.json > /tmp/audit-app-diff.patch
git checkout -- app/frontend/package-lock.json app/frontend/package.json
exit 0
fi
echo "changed=true" >> "$GITHUB_OUTPUT"
git diff -- app/frontend/package-lock.json app/frontend/package.json > /tmp/audit-app-diff.patch
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add app/frontend/package-lock.json app/frontend/package.json
git commit -m "fix(deps): npm audit fix for app/frontend"
for i in 1 2 3 4 5; do
git push origin HEAD:${{ github.event.pull_request.head.ref }} && break
echo "Push rejected, rebasing onto latest remote ref (attempt $i)..."
git fetch origin ${{ github.event.pull_request.head.ref }}
git rebase origin/${{ github.event.pull_request.head.ref }}
sleep $((i * 3))
done

- name: Comment on PR
if: steps.commit.outputs.changed == 'true'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let diff = fs.readFileSync('/tmp/audit-app-diff.patch', 'utf8');
const limit = 50000;
if (diff.length > limit) {
diff = diff.slice(0, limit) + '\n... (diff truncated)';
}

const body =
`## 📦 Auto-fixed npm audit issues — app/frontend\n\n` +
"The `npm audit — app/frontend` check failed, so `npm audit fix --force` was run " +
"(this may include major-version upgrades), the build was verified, and the " +
"result committed directly to this branch:\n\n" +
"```diff\n" + diff + "\n```\n\n" +
"Please double-check anything that depends on the upgraded package(s) still behaves as expected.";

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body,
});

- name: Comment on PR (build failed)
if: steps.commit.outputs.build_failed == 'true'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let diff = fs.readFileSync('/tmp/audit-app-diff.patch', 'utf8');
const limit = 50000;
if (diff.length > limit) {
diff = diff.slice(0, limit) + '\n... (diff truncated)';
}

const body =
`## ⚠️ npm audit fix for app/frontend needs manual attention\n\n` +
"The `npm audit — app/frontend` check failed, so `npm audit fix --force` was run, " +
"but the resulting build failed, so no changes were committed. The fix likely " +
"requires manual code changes to work with the upgraded package(s):\n\n" +
"```diff\n" + diff + "\n```";

# ── npm audit — installer frontend ───────────────────────────────────────────
npm-audit-installer:
name: npm audit — installer/frontend
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body,
});

# ── npm audit — setup frontend ───────────────────────────────────────────────
npm-audit-setup:
name: npm audit — setup/frontend
runs-on: ubuntu-latest
timeout-minutes: 10

Expand All @@ -79,11 +182,132 @@ jobs:

- name: Install dependencies
run: npm ci
working-directory: installer/frontend
working-directory: setup/windows/frontend

- name: Run npm audit
run: npm audit --audit-level=high
working-directory: installer/frontend
working-directory: setup/windows/frontend

# ── Auto-fix — npm audit (setup frontend) ────────────────────────────────────
npm-audit-setup-autofix:
name: Auto-fix — npm audit (setup/frontend)
needs: npm-audit-setup
if: >-
always() &&
needs.npm-audit-setup.result == 'failure' &&
github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: write
pull-requests: write

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.GH_PAT || github.token }}

- uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci
working-directory: setup/windows/frontend

- name: npm audit fix
run: npm audit fix --force
working-directory: setup/windows/frontend
continue-on-error: true

- name: Verify build
id: build
run: npm run build
working-directory: setup/windows/frontend
continue-on-error: true

- name: Commit fixes
id: commit
run: |
if git diff --quiet -- setup/windows/frontend/package-lock.json setup/windows/frontend/package.json; then
echo "changed=false" >> "$GITHUB_OUTPUT"
exit 0
fi
if [ "${{ steps.build.outcome }}" != "success" ]; then
echo "changed=false" >> "$GITHUB_OUTPUT"
echo "build_failed=true" >> "$GITHUB_OUTPUT"
git diff -- setup/windows/frontend/package-lock.json setup/windows/frontend/package.json > /tmp/audit-setup-diff.patch
git checkout -- setup/windows/frontend/package-lock.json setup/windows/frontend/package.json
exit 0
fi
echo "changed=true" >> "$GITHUB_OUTPUT"
git diff -- setup/windows/frontend/package-lock.json setup/windows/frontend/package.json > /tmp/audit-setup-diff.patch
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add setup/windows/frontend/package-lock.json setup/windows/frontend/package.json
git commit -m "fix(deps): npm audit fix for setup/frontend"
for i in 1 2 3 4 5; do
git push origin HEAD:${{ github.event.pull_request.head.ref }} && break
echo "Push rejected, rebasing onto latest remote ref (attempt $i)..."
git fetch origin ${{ github.event.pull_request.head.ref }}
git rebase origin/${{ github.event.pull_request.head.ref }}
sleep $((i * 3))
done

- name: Comment on PR
if: steps.commit.outputs.changed == 'true'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let diff = fs.readFileSync('/tmp/audit-setup-diff.patch', 'utf8');
const limit = 50000;
if (diff.length > limit) {
diff = diff.slice(0, limit) + '\n... (diff truncated)';
}

const body =
`## 📦 Auto-fixed npm audit issues — setup/frontend\n\n` +
"The `npm audit — setup/frontend` check failed, so `npm audit fix --force` was run " +
"(this may include major-version upgrades), the build was verified, and the " +
"result committed directly to this branch:\n\n" +
"```diff\n" + diff + "\n```\n\n" +
"Please double-check anything that depends on the upgraded package(s) still behaves as expected.";

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body,
});

- name: Comment on PR (build failed)
if: steps.commit.outputs.build_failed == 'true'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let diff = fs.readFileSync('/tmp/audit-setup-diff.patch', 'utf8');
const limit = 50000;
if (diff.length > limit) {
diff = diff.slice(0, limit) + '\n... (diff truncated)';
}

const body =
`## ⚠️ npm audit fix for setup/frontend needs manual attention\n\n` +
"The `npm audit — setup/frontend` check failed, so `npm audit fix --force` was run, " +
"but the resulting build failed, so no changes were committed. The fix likely " +
"requires manual code changes to work with the upgraded package(s):\n\n" +
"```diff\n" + diff + "\n```";

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body,
});

# ── Secret / credential scanning ─────────────────────────────────────────────
gitleaks:
Expand Down Expand Up @@ -118,18 +342,15 @@ jobs:
--redact

# ── OSV vulnerability scan (cross-ecosystem) ──────────────────────────────────
# Uses the reusable workflow format required by osv-scanner-action v2+
osv-scan:
name: OSV — cross-ecosystem vulnerability scan
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v4

- name: Run OSV-Scanner
uses: google/osv-scanner-action@v2
with:
scan-args: |-
--recursive
--skip-git
.
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v2.3.8
with:
scan-args: |-
--recursive
--skip-git
permissions:
security-events: write
contents: read
actions: read
Loading
Loading