Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
cd9245d
feat(mdviewer): add locales for markdown viewer
abose Mar 6, 2026
3678cb8
feat(mdviewer): add markdown viewer app
abose Mar 6, 2026
e804f99
feat(mdviewer): add markdown live preview sync support
abose Mar 6, 2026
abc4976
feat(mdviewer): add bidirectional scroll sync, undo/redo, and cursor …
abose Mar 6, 2026
45e6dca
fix(ui): add subtle bottom border to mainNavBar and live preview toolbar
abose Mar 21, 2026
804e93f
fix(mdviewer): compact toolbar to match Phoenix tab bar height and bu…
abose Mar 21, 2026
d241530
fix(mdviewer): remove redundant title from edit button
abose Mar 21, 2026
0ecd009
fix(mdviewer): use instant scroll for cursor sync instead of smooth a…
abose Mar 21, 2026
abae907
feat(mdviewer): add underline, responsive toolbar dropdowns, and tool…
abose Mar 21, 2026
e385de1
feat(mdviewer): progressive toolbar collapse based on available width
abose Mar 21, 2026
60049eb
feat(mdviewer): add bidirectional selection sync between CM and md vi…
abose Mar 21, 2026
9f5cbf6
fix(mdviewer): sync task list checkbox toggles to CodeMirror source
abose Mar 21, 2026
8eb0bbd
fix(mdviewer): disable checkboxes when exiting edit mode
abose Mar 21, 2026
01210c4
feat(mdviewer): persistent iframe and document cache for instant file…
abose Mar 21, 2026
a3ecf9d
fix(mdviewer): preserve persistent md iframe when switching to HTML p…
abose Mar 21, 2026
2038ae7
fix(mdviewer): center cursor in CM when syncing position from md viewer
abose Mar 21, 2026
a143a46
fix(mdviewer): hide md iframe and swap to HTML iframe on project switch
abose Mar 21, 2026
0748558
fix(mdviewer): remove image cloning in edit mode to prevent re-fetch …
abose Mar 21, 2026
3b49574
fix(mdviewer): remove medium-zoom image feature and zoom-in cursor
abose Mar 21, 2026
afa6d43
fix(mdviewer): add missing English translations for toolbar and forma…
abose Mar 22, 2026
dee6153
fix(mdviewer): strip region code from locale before loading translations
abose Mar 22, 2026
2a9b9ea
feat(mdviewer): add reload support and source-line-based scroll restore
abose Mar 22, 2026
e3388dc
chore(mdviewer): prime markdown viewer translation NLS structure
abose Mar 22, 2026
a95c534
feat(mdviewer): add auto-translation support for mdviewer locales
abose Mar 22, 2026
5bc4994
ci: add mdviewer locale files to translation workflow
abose Mar 22, 2026
d867597
chore: update translations for md editor
abose Mar 22, 2026
1c09051
fix(mdviewer): global edit mode across file switches and underline sh…
abose Mar 22, 2026
01e784a
fix(mdviewer): sync en-gb.json with en.json for underline shortcut
abose Mar 22, 2026
2008544
fix(mdviewer): rename Done to Reader with book-open icon, tighten col…
abose Mar 22, 2026
0c09cbd
fix(mdviewer): deactivate MarkdownSync when hiding panel to fix reopen
abose Mar 22, 2026
0d38283
fix(mdviewer): preserve edit mode and cache across panel hide/show
abose Mar 22, 2026
554cb00
fix: md live preview causes a 1px white line at screen bottom
abose Mar 23, 2026
cc02dcb
feat(mdviewer): gate edit mode behind live edit entitlement
abose Mar 23, 2026
1b48ab4
fix(mdviewer): open link popover URLs in default browser instead of E…
abose Mar 23, 2026
62b828b
feat: Phoenix Dark Neo and Phoenix Light Neo Theme name change
abose Mar 23, 2026
627cc43
feat(mdviewer): simplify mode controls (Option D+)
abose Mar 23, 2026
a91f565
fix(mdviewer): use exact pixel scroll restore for cached file switches
abose Mar 23, 2026
3dca881
fix(mdviewer): preserve cursor sync toggle state across toolbar re-re…
abose Mar 23, 2026
fbbe3bd
fix(mdviewer): dismiss format bar and link popover on scroll
abose Mar 23, 2026
73057dd
feat(mdviewer): forward unhandled keyboard shortcuts to Phoenix keybi…
abose Mar 23, 2026
80c8504
feat(mdviewer): add in-document search with Ctrl+F
abose Mar 23, 2026
270cac3
fix(mdviewer): start search from 1 character instead of 2
abose Mar 23, 2026
907b0d9
fix(mdviewer): preserve search match index per document across file s…
abose Mar 23, 2026
c9d9ba9
docs(mdviewer): add search index restore test case
abose Mar 23, 2026
f2cbac8
fix(mdviewer): match selection colors to Phoenix CodeMirror theme
abose Mar 23, 2026
25c57ac
fix(TabBar): focus editor after tab click to switch files
abose Mar 23, 2026
86d8ab9
fix(mdviewer): default to edit mode for pro users on first iframe load
abose Mar 23, 2026
fc5b9c1
fix(mdviewer): respect cursor sync toggle in reader mode click handler
abose Mar 23, 2026
96c82c7
fix(mdviewer): remove data-lucide attr after icon replacement to prev…
abose Mar 23, 2026
f46cede
chore: forwards fucntion keys form md editor to phoenix side
abose Mar 23, 2026
a224554
fix(mdviewer): forward F-keys to Phoenix, scroll slash menu selection,
abose Mar 23, 2026
beb4738
docs(mdviewer): add test cases for F-keys, slash menu scroll, popup e…
abose Mar 23, 2026
652cae2
feat(mdviewer): show 'Type / to insert' hint on empty line at cursor …
abose Mar 23, 2026
74a4f53
fix(mdviewer): allow typing in slash menu filter and forward F-keys t…
abose Mar 23, 2026
9bd026c
fix(mdviewer): anchor slash menu at cursor position using saved rect
abose Mar 23, 2026
3e79cd0
docs(mdviewer): add test cases for slash menu positioning and keyboar…
abose Mar 23, 2026
3c4d475
fix(mdviewer): restore innerHTML update in file:rendered and reset sy…
abose Mar 23, 2026
930dd80
fix(mdviewer): use single undo stack via CM with cursor preservation
abose Mar 23, 2026
cf3e280
chore undo redo trying to make it work but not very good
abose Mar 24, 2026
7b2d5ba
fix(mdviewer): undo/redo cursor restore via source-line tagging and f…
abose Mar 25, 2026
3963349
docs(mdviewer): add test cases for table editing and undo/redo cursor…
abose Mar 25, 2026
fef3ec4
fix(mdviewer): restrict editing in table cells to prevent broken mark…
abose Mar 25, 2026
06e744f
fix(mdviewer): table navigation — exit on arrow/enter from last cell,…
abose Mar 25, 2026
f64fefe
fix(mdviewer): table controls outside table with no layout jump
abose Mar 25, 2026
71d13ff
fix(mdviewer): context-aware Enter, slash menu after br, table overflow
abose Mar 25, 2026
d4fe6f8
fix(mdviewer): revert inline hint span that broke contenteditable
abose Mar 25, 2026
c900e8b
fix(mdviewer): list editing — Enter splits bullet, Tab indents, tight…
abose Mar 25, 2026
336929d
fix(mdviewer): preserve cursor position on Tab/Shift+Tab list indent
abose Mar 25, 2026
ed9e1ca
fix(mdviewer): shift+tab outdent preserves trailing siblings as neste…
abose Mar 25, 2026
0e35541
fix(mdviewer): highlight only nearest list type and switch UL/OL on i…
abose Mar 25, 2026
094babb
fix(mdviewer): fix UL/OL toggle, hide block tools in lists, fix inTab…
abose Mar 25, 2026
d1fbeb4
feat(mdviewer): add delete table action, fix col-add-btn border visib…
abose Mar 25, 2026
3a1c960
fix(mdviewer): prevent empty table row cells from collapsing height
abose Mar 25, 2026
f3a5309
fix(mdviewer): add horizontal scrollbar for wide tables, fix col-add-…
abose Mar 25, 2026
8ea5244
fix(mdviewer): resync table col/row handles on panel resize via Resiz…
abose Mar 25, 2026
70b18fa
fix(mdviewer): enter at start of heading inserts empty line above ins…
abose Mar 25, 2026
9ec97f2
fix(mdviewer): add bottom margin to table-wrapper to prevent content …
abose Mar 25, 2026
4f08d40
fix(mdviewer): backspace at start of heading converts to paragraph
abose Mar 26, 2026
c46cebe
fix(mdviewer): arrow-down and shift-enter exit code block to paragrap…
abose Mar 26, 2026
840a909
docs(mdviewer): add code block editing test cases
abose Mar 26, 2026
fb4f7a3
fix(mdviewer): heading enter splits content, shift-enter exits withou…
abose Mar 26, 2026
8c04a37
fix(security): sandbox mdviewer iframe without allow-same-origin
abose Mar 26, 2026
d879d42
fix(mdviewer): re-render from CM content on edit→reader switch for cu…
abose Mar 26, 2026
3feec99
feat(mdviewer): add h4 and h5 support to block type selector and slas…
abose Mar 26, 2026
509bb12
fix(mdviewer): use separate rerender message to avoid resetting edit …
abose Mar 26, 2026
eeaeac4
feat(mdviewer): add print button with light theme and proper page layout
abose Mar 28, 2026
0cdd43d
feat(editor): add image paste-to-upload for markdown files
abose Mar 29, 2026
26ead18
fix(editor): image upload dialog polish and paste interceptor cleanup
abose Mar 29, 2026
05e9974
fix(mdviewer): use morphdom for incremental DOM updates to prevent sc…
abose Mar 29, 2026
4831efb
feat(mdviewer): add image insert via toolbar dropdown, slash menu, an…
abose Mar 29, 2026
d0fa862
fix(livepreview): use unique iframe id for mdviewer to avoid duplicat…
abose Mar 29, 2026
5fbccef
fix(test): update custom server tests for mdviewer iframe id and arch…
abose Mar 29, 2026
d5429f0
fix(dev): add assets proxy route for localhost browser dev builds
abose Mar 29, 2026
9e50d82
fix(mdviewer): preserve edit mode across project switches
abose Mar 29, 2026
dbfdb54
docs(mdviewer): add test case for edit mode persistence across projec…
abose Mar 29, 2026
e73e0ee
fix(mdviewer): preserve image DOM nodes across content updates to pre…
abose Mar 29, 2026
09e5dcf
fix(mdviewer): detach images before morphdom to prevent GIF blink
abose Mar 29, 2026
46a8b68
fix(mdviewer): fix End/Home key jumping to end of file near images
abose Mar 29, 2026
48ffbec
docs(mdviewer): add image handling and End/Home key test cases
abose Mar 29, 2026
8d352b9
fix(test): update MultiBrowser live preview tests for mdviewer iframe
abose Mar 29, 2026
f86ee3e
test(livepreview): add test for play button and mode dropdown hidden …
abose Mar 29, 2026
5ba593b
build: update pro deps
abose Mar 29, 2026
16f7142
fix(mdviewer): wire dropdowns at all widths so image dropdown works e…
abose Mar 29, 2026
e259652
fix: prod build break
abose Mar 29, 2026
544fb55
fix(mdviewer): add remove link button, move close to top-right in lin…
abose Mar 30, 2026
c9d50e5
fix: builds break due to larger phoenix bin size
abose Mar 30, 2026
f76d7ae
fix(mdviewer): dismiss link popover on click outside during edit mode
abose Mar 30, 2026
72b1b7b
test(mdviewer): add keyboard shortcut forwarding integration tests
abose Mar 30, 2026
fac99e3
fix(mdviewer): disable bold in headings, add Turndown rules, fix tests
abose Mar 30, 2026
9c75ce5
fix(mdviewer): decouple MarkdownSync from phoenix-pro via EventManager
abose Mar 30, 2026
3526af3
build: update pro deps
abose Mar 30, 2026
71971a2
fix(mdviewer): increase content max-width to A3 sheet size, add cache…
abose Mar 30, 2026
f54a9b1
fix(test): skip md editor tests in Firefox and non-Chrome playwright
abose Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ src/**/*-min.js
src/**/*.min.js
src/virtual-server-main.js
src/service-worker.js
src/mdViewer/**

test/perf/*-files/**/*.js
test/spec/*-files/**/*.js
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/tranlate-languages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,14 @@ jobs:
- name: Check translation errors file
id: check-errors
run: |
ERRORS=""
if [ -f src/nls/errors.txt ]; then
ERRORS="true"
fi
if [ -f src-mdviewer/src/md-nls-autogenerated/errors.txt ]; then
ERRORS="true"
fi
if [ -n "$ERRORS" ]; then
echo "errors_found=true" >> $GITHUB_ENV
else
echo "errors_found=false" >> $GITHUB_ENV
Expand All @@ -37,10 +44,13 @@ jobs:
title: '[Translations BOT] Update String translations'
add-paths: |
src/nls/**
src-mdviewer/src/md-nls-autogenerated/**
src-mdviewer/src/locales/**
body: |
Update string translations
- Auto-generated by `tranlate-languages.yml` action

- Includes Phoenix NLS (`src/nls/`) and mdviewer locales (`src-mdviewer/src/locales/`)

Errors:
${{ env.errors_found == 'true' && 'Errors: Some errors were found, please see GitHub Actions logs.' || 'No Translation Errors. All good!' }}
- name: Check outputs
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ Thumbs.db
# ignore node_modules inside src
/src/node_modules
/src-node/node_modules
/src-mdviewer/node_modules

# ignore mdViewer build output
/src/mdViewer
/src/JSUtils/node_modules
/src/JSUtils/node/node_modules

Expand Down Expand Up @@ -92,6 +96,7 @@ test/thirdparty/jasmine-reporters

# translations
/src/nls/errors.txt
/src-mdviewer/src/md-nls-autogenerated/errors.txt


# ignore everything in the dev extension directory EXCEPT the README
Expand Down
3 changes: 2 additions & 1 deletion docs/API-Reference/widgets/Dialogs.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Left-aligned button class name
**Kind**: global constant
<a name="showModalDialogUsingTemplate"></a>

## showModalDialogUsingTemplate(template, [autoDismiss]) ⇒ [<code>Dialog</code>](#new_Dialog_new)
## showModalDialogUsingTemplate(template, [autoDismiss], [closeToElement]) ⇒ [<code>Dialog</code>](#new_Dialog_new)
Creates a new modal dialog from a given template.
The template can either be a string or a jQuery object representing a DOM node that is *not* in the current DOM.

Expand All @@ -69,6 +69,7 @@ The template can either be a string or a jQuery object representing a DOM node t
| --- | --- | --- |
| template | <code>string</code> | A string template or jQuery object to use as the dialog HTML. |
| [autoDismiss] | <code>boolean</code> | Whether to automatically dismiss the dialog when one of the buttons is clicked. Default true. If false, you'll need to manually handle button clicks and the Esc key, and dismiss the dialog yourself when ready by calling `close()` on the returned dialog. |
| [closeToElement] | <code>string</code> | A CSS selector for a target element. If specified, the dialog will animate open from and close toward the target element (a "woosh" effect). If the target is not found or not visible, the dialog opens/closes normally. |

<a name="showModalDialog"></a>

Expand Down
9 changes: 6 additions & 3 deletions gulpfile.js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ function makeJSDist() {
"!src/thirdparty/no-minify/**/*", "!src/thirdparty/xterm/**/*",
"!src/LiveDevelopment/BrowserScripts/RemoteFunctions.js",
"!src/extensionsIntegrated/phoenix-pro/onboarding/**/*",
"!src/extensionsIntegrated/phoenix-pro/unit-tests/**/*"])
"!src/extensionsIntegrated/phoenix-pro/unit-tests/**/*",
"!src/mdViewer/**/*"])
.pipe(minify({
ext:{
min:'.js'
Expand Down Expand Up @@ -180,7 +181,8 @@ function makeNonMinifyDist() {
"src/thirdparty/xterm/**/*",
"src/LiveDevelopment/BrowserScripts/RemoteFunctions.js",
"src/extensionsIntegrated/phoenix-pro/onboarding/**/*",
"src/extensionsIntegrated/phoenix-pro/unit-tests/**/*"], {base: 'src'})
"src/extensionsIntegrated/phoenix-pro/unit-tests/**/*",
"src/mdViewer/**/*"], {base: 'src'})
.pipe(dest('dist'));
}

Expand Down Expand Up @@ -428,6 +430,7 @@ function releaseProd() {
function translateStrings() {
return new Promise(async (resolve)=>{ // eslint-disable-line
await Translate.translate();
await Translate.translateMdviewer();
resolve();
});
}
Expand Down Expand Up @@ -706,7 +709,7 @@ function _makeBracketsConcatJSInternal(isDevBuild = true) {
`${srcDir}preferences/PreferencesImpl.js` // tests does require magic on prefs, so exclude
];
const pathsToMerge = [];
const PathsToIgnore = ["assets", "thirdparty", "extensions"];
const PathsToIgnore = ["assets", "thirdparty", "extensions", "mdViewer"];
for(let dir of fs.readdirSync(srcDir, {withFileTypes: true})){
if(dir.isDirectory() && !PathsToIgnore.includes(dir.name)){
pathsToMerge.push(dir.name);
Expand Down
Loading
Loading