Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
bb4a4da
fix: prevent crash when opening file:// links from LSP tooltips (#2977)
bajrangCoder Oct 18, 2026
8a0c0ea
update: es-sv (#2974)
ajr-uribe Oct 18, 2026
ef0f003
feat(modes): let plugin modes reuse another mode's formatter (#2976)
bajrangCoder Oct 18, 2026
22b68d1
chore(deps): bump @lezer/common to 1.5.4
bajrangCoder Oct 22, 2026
a58a88f
feat(markdown): render mermaid diagrams with pele (#2987)
bajrangCoder Oct 25, 2026
060206e
feat(editor): add experimental canvas renderer (#2988)
bajrangCoder Oct 25, 2026
e23706f
chore(deps): bump @acode.app/canvas-view to 0.0.2
bajrangCoder Oct 25, 2026
d617625
Translation: Update hu-hu.json (#2989)
summoner001 Oct 26, 2026
46ac9b7
chore(deps): bump @acode.app/canvas-view to 0.0.3
bajrangCoder Oct 26, 2026
d775298
test: queue happy-dom selectionchange in quick tools navigation tests
bajrangCoder Oct 28, 2026
cc0fda8
feat(sidebar): add multi-select & drag-drop to file tree (#2999)
bajrangCoder Oct 28, 2026
75d6292
fix(sidebar): don't render a folder twice when toggled while loading …
bajrangCoder Oct 29, 2026
31d3856
fix(scrollbar): place thumb correctly when it reappears (#3003)
bajrangCoder Oct 29, 2026
2742aaf
feat(ui): polish dialogs, sidebar, search and file actions (#3004)
bajrangCoder Oct 29, 2026
02571a7
feat(lang): update Turkish (tr-tr) translation (#2992)
KARANKOYU Nov 6, 2026
e998172
fix(editor): keep cursor in document when pasting CRLF text (#3018)
bajrangCoder Nov 7, 2026
8b17bf1
perf: keep the native Array.prototype.push on old WebViews (#3019)
bajrangCoder Nov 7, 2026
d0ee94b
Merge Acode-migration main into chore/sync-acode-main-b08fd0bf
bajrangCoder Nov 7, 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,367 changes: 84 additions & 1,283 deletions package-lock.json

Large diffs are not rendered by default.

19 changes: 10 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
"ws": "^8.21.3"
},
"dependencies": {
"@acode.app/canvas-view": "^0.0.3",
"@codemirror/autocomplete": "^6.20.3",
"@codemirror/commands": "^6.11.0",
"@codemirror/lang-angular": "^0.1.4",
Expand All @@ -98,18 +99,18 @@
"@codemirror/lang-wast": "^6.0.2",
"@codemirror/lang-xml": "^6.1.0",
"@codemirror/lang-yaml": "^6.1.3",
"@codemirror/language": "^6.12.4",
"@codemirror/language": "^6.13.1",
"@codemirror/language-data": "^6.5.2",
"@codemirror/legacy-modes": "^6.5.3",
"@codemirror/lint": "^6.9.7",
"@codemirror/lsp-client": "file:codemirror-lsp-client",
"@codemirror/search": "^6.7.1",
"@codemirror/state": "^6.7.1",
"@codemirror/state": "^6.7.6",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.43.9",
"@codemirror/view": "^6.43.14",
"@deadlyjack/ajax": "^1.2.6",
"@emmetio/codemirror6-plugin": "^0.4.1",
"@lezer/common": "^1.5.2",
"@lezer/common": "^1.5.5",
"@lezer/highlight": "^1.2.5",
"@lezer/lr": "^1.4.10",
"@ungap/custom-elements": "^1.3.0",
Expand Down Expand Up @@ -140,10 +141,10 @@
"markdown-it-github-alerts": "^1.0.1",
"markdown-it-task-lists": "^2.1.1",
"markdown-it-texmath": "^1.0.0",
"mermaid": "^12.2.0",
"mime-types": "^3.0.2",
"motion": "^12.43.0",
"mustache": "^4.2.0",
"pele": "^1.10.0",
"picomatch": "^4.0.7",
"tough-cookie": "^6.0.2",
"url-parse": "^1.5.10",
Expand All @@ -157,12 +158,12 @@
"overrides": {
"@codemirror/autocomplete": "^6.20.3",
"@codemirror/commands": "^6.11.0",
"@codemirror/language": "^6.12.4",
"@codemirror/language": "^6.13.1",
"@codemirror/lint": "^6.9.7",
"@codemirror/search": "^6.7.1",
"@codemirror/state": "^6.7.1",
"@codemirror/view": "^6.43.9",
"@lezer/common": "^1.5.2",
"@codemirror/state": "^6.7.6",
"@codemirror/view": "^6.43.14",
"@lezer/common": "^1.5.5",
"@lezer/lr": "^1.4.10",
"tar": "^7.5.22"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1678,8 +1678,26 @@ private void getAppInfo(Callback callback) {
}

private void openInBrowser(String src, Callback callback) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(src));
activity.startActivity(browserIntent);
if (src == null || src.isEmpty()) {
callback.error("No URL provided.");
return;
}

Uri uri = Uri.parse(src);
if ("file".equalsIgnoreCase(uri.getScheme())) {
// file:// URIs can't leave the app (FileUriExposedException).
callback.error("Cannot open file URI in browser: " + src);
return;
}

try {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);
activity.startActivity(browserIntent);
callback.success();
} catch (Exception e) {
Log.e("System", "Failed to open URL: " + src, e);
callback.error(e.getMessage());
}
}

private void launchApp(
Expand Down
5 changes: 5 additions & 0 deletions rspack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ module.exports = (env, options) => {
targets: platform === 'ios' ? 'ios_saf >= 18' : 'chrome >= 67',
mode: 'entry',
coreJs: require('core-js/package.json').version,
// core-js replaces the native Array.prototype.push below Chrome 122, for
// edge cases (lengths past 2^32 - 1, push() with no arguments on an array
// with a read-only length) nothing relies on. Its JS version is ~8x
// slower, and the parser, CodeMirror and the renderer push constantly.
exclude: ['es.array.push'],
};
const typescriptLoader = {
loader: 'builtin:swc-loader',
Expand Down
35 changes: 29 additions & 6 deletions src/cm/baseExtensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import { history } from "@codemirror/commands";
import {
bracketMatching,
codeFolding as codeFoldingState,
defaultHighlightStyle,
foldGutter,
indentOnInput,
Expand All @@ -31,6 +32,17 @@ import indentationFolding from "./indentationFolding";
export interface BaseExtensionOptions {
autoIndent?: boolean;
codeFolding?: boolean;
/**
* Show CodeMirror's fold gutter with code folding. The canvas renderer
* draws its own fold markers, so it only needs the folding state.
*/
foldGutter?: boolean;
/**
* The canvas renderer draws the selection, cursors, drop cursor, active
* line (and its gutter) and special characters itself, so those
* extensions are left out.
*/
canvas?: boolean;
autoCloseBrackets?: boolean;
bracketMatching?: boolean;
highlightActiveLine?: boolean;
Expand All @@ -46,17 +58,26 @@ export default function createBaseExtensions(
const {
autoIndent = true,
codeFolding = true,
foldGutter: showFoldGutter = true,
canvas = false,
autoCloseBrackets = true,
bracketMatching: enableBracketMatching = true,
highlightActiveLine: enableHighlightActiveLine = true,
highlightSelectionMatches: enableHighlightSelectionMatches = true,
} = options;
const extensions: Extension[] = [highlightSpecialChars(), history()];
const extensions: Extension[] = [history()];
if (!canvas) extensions.push(highlightSpecialChars());

if (enableHighlightActiveLine) extensions.push(highlightActiveLineGutter());
if (codeFolding) extensions.push(foldGutter(), indentationFolding);
extensions.push(drawSelection());
extensions.push(dropCursor());
if (enableHighlightActiveLine && !canvas) {
extensions.push(highlightActiveLineGutter());
}
if (codeFolding) {
extensions.push(
showFoldGutter ? foldGutter() : codeFoldingState(),
indentationFolding,
);
}
if (!canvas) extensions.push(drawSelection(), dropCursor());
extensions.push(EditorState.allowMultipleSelections.of(true));
if (autoIndent) extensions.push(indentOnInput());
extensions.push(
Expand All @@ -66,7 +87,9 @@ export default function createBaseExtensions(
if (autoCloseBrackets) extensions.push(closeBrackets());
extensions.push(rectangularSelection());
extensions.push(crosshairCursor());
if (enableHighlightActiveLine) extensions.push(highlightActiveLine());
if (enableHighlightActiveLine && !canvas) {
extensions.push(highlightActiveLine());
}
if (enableHighlightSelectionMatches) {
extensions.push(highlightSelectionMatches());
}
Expand Down
Loading
Loading