Add favicon
This commit is contained in:
parent
7d160cd9fd
commit
cf21219424
7 changed files with 121 additions and 23 deletions
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
name: Check
|
name: Check & publish
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
|
|
||||||
85
examples/website/package-lock.json
generated
85
examples/website/package-lock.json
generated
|
|
@ -7,6 +7,7 @@
|
||||||
"name": "reconcile-example-website",
|
"name": "reconcile-example-website",
|
||||||
"license": "GPL-3.0-or-later",
|
"license": "GPL-3.0-or-later",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"copy-webpack-plugin": "^13.0.0",
|
||||||
"css-loader": "^7.1.2",
|
"css-loader": "^7.1.2",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.3",
|
||||||
"inline-source-webpack-plugin": "^3.0.1",
|
"inline-source-webpack-plugin": "^3.0.1",
|
||||||
|
|
@ -27,7 +28,7 @@
|
||||||
},
|
},
|
||||||
"../../reconcile-js": {
|
"../../reconcile-js": {
|
||||||
"name": "reconcile-text",
|
"name": "reconcile-text",
|
||||||
"version": "0.4.3",
|
"version": "0.4.10",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
@ -1536,6 +1537,43 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/copy-webpack-plugin": {
|
||||||
|
"version": "13.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.0.tgz",
|
||||||
|
"integrity": "sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"glob-parent": "^6.0.1",
|
||||||
|
"normalize-path": "^3.0.0",
|
||||||
|
"schema-utils": "^4.2.0",
|
||||||
|
"serialize-javascript": "^6.0.2",
|
||||||
|
"tinyglobby": "^0.2.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 18.12.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/webpack"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"webpack": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/copy-webpack-plugin/node_modules/glob-parent": {
|
||||||
|
"version": "6.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||||
|
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"is-glob": "^4.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/core-util-is": {
|
"node_modules/core-util-is": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
||||||
|
|
@ -4987,6 +5025,51 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/tinyglobby": {
|
||||||
|
"version": "0.2.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
|
||||||
|
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fdir": "^6.4.4",
|
||||||
|
"picomatch": "^4.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/SuperchupuDev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby/node_modules/fdir": {
|
||||||
|
"version": "6.4.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
|
||||||
|
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"picomatch": "^3 || ^4"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"picomatch": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby/node_modules/picomatch": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/to-regex-range": {
|
"node_modules/to-regex-range": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -22,12 +22,13 @@
|
||||||
],
|
],
|
||||||
"homepage": "https://github.com/schmelczer/reconcile#readme",
|
"homepage": "https://github.com/schmelczer/reconcile#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"reconcile-text": "file:../../reconcile-js",
|
"copy-webpack-plugin": "^13.0.0",
|
||||||
"css-loader": "^7.1.2",
|
"css-loader": "^7.1.2",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.3",
|
||||||
"mini-css-extract-plugin": "^2.9.2",
|
|
||||||
"inline-source-webpack-plugin": "^3.0.1",
|
"inline-source-webpack-plugin": "^3.0.1",
|
||||||
|
"mini-css-extract-plugin": "^2.9.2",
|
||||||
"prettier": "^3.6.2",
|
"prettier": "^3.6.2",
|
||||||
|
"reconcile-text": "file:../../reconcile-js",
|
||||||
"resolve-url-loader": "^5.0.0",
|
"resolve-url-loader": "^5.0.0",
|
||||||
"sass": "^1.89.2",
|
"sass": "^1.89.2",
|
||||||
"sass-loader": "^16.0.5",
|
"sass-loader": "^16.0.5",
|
||||||
|
|
|
||||||
BIN
examples/website/src/favicon.ico
Normal file
BIN
examples/website/src/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -17,9 +17,11 @@
|
||||||
/>
|
/>
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:url" content="https://schmelczer.dev/reconcile" />
|
<meta property="og:url" content="https://schmelczer.dev/reconcile" />
|
||||||
<meta property="og:image" content="/favicon.ico" />
|
<meta property="og:image" content="/og-image.png" />
|
||||||
|
<meta property="og:image:width" content="1200" />
|
||||||
|
<meta property="og:image:height" content="630" />
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||||
<title>Reconcile: conflict-free text merging</title>
|
<title>reconcile-text: conflict-free 3-way text merging</title>
|
||||||
<link inline inline-asset="index.css" inline-asset-delete />
|
<link inline inline-asset="index.css" inline-asset-delete />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -37,13 +39,13 @@
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>diff3</a
|
>diff3</a
|
||||||
>
|
>
|
||||||
or <code>git merge</code>, but with intelligent conflict resolution that
|
(or more specifically, <code>git merge</code>), but with intelligent conflict
|
||||||
requires no user intervention. The
|
resolution that requires no user intervention. The
|
||||||
<a
|
<a
|
||||||
href="https://github.com/schmelczer/reconcile"
|
href="https://github.com/schmelczer/reconcile"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>Reconcile</a
|
>reconcile-text</a
|
||||||
>
|
>
|
||||||
library tackles a fundamental challenge in collaborative editing: what happens
|
library tackles a fundamental challenge in collaborative editing: what happens
|
||||||
when multiple users edit the same text simultaneously, but the conflict
|
when multiple users edit the same text simultaneously, but the conflict
|
||||||
|
|
@ -52,18 +54,20 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Where traditional merge tools leave you with conflict markers to resolve
|
Where traditional merge tools leave you with conflict markers to resolve
|
||||||
manually, Reconcile automatically weaves changes together. The
|
manually, <code>reconcile-text</code> automatically weaves changes together.
|
||||||
<code>reconcile(parent, left, right)</code> function takes conflicting edits
|
The <code>reconcile(parent, left, right)</code> function takes conflicting
|
||||||
and produces clean, unified results using an algorithm inspired by Operational
|
edits and produces clean, unified results using an algorithm inspired by
|
||||||
Transformation. No more <code><<<<<<<</code> markers
|
Operational Transformation. No more
|
||||||
cluttering your text.
|
<code><<<<<<<</code> markers jumbling your text.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The process starts with your chosen tokenisation strategy, then applies Myers'
|
The process starts with your chosen tokenisation strategy, then applies Myers'
|
||||||
diff algorithm to compare the original with both modified versions. These
|
2-way diff algorithm to compare the original with both modified versions.
|
||||||
diffs are optimised and transformed to preserve meaningful changes, before a
|
These diffs are optimised and transformed to preserve the longest meaningful
|
||||||
final merge strategy combines all modifications without losing any edits.
|
changes, before a final merge strategy combines all inserts and deletes
|
||||||
|
without losing any edits. Cursor positions may be tracked and updated during
|
||||||
|
merging too.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -74,12 +78,9 @@
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>documentation</a
|
>documentation</a
|
||||||
>
|
>
|
||||||
or try editing the text boxes below to see Reconcile in action.
|
or try editing the text boxes below to see <code>reconcile-text</code> in
|
||||||
</p>
|
action. Use the tokenisation options below to experiment with different
|
||||||
|
approaches — the Rust library also supports providing a custom tokeniser.
|
||||||
<p>
|
|
||||||
Use the tokenisation options below to experiment with different approaches —
|
|
||||||
the library also supports custom tokenisers.
|
|
||||||
</p>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
|
||||||
BIN
examples/website/src/og-image.png
Normal file
BIN
examples/website/src/og-image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
|
|
@ -3,6 +3,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||||
const TerserPlugin = require('terser-webpack-plugin');
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
const InlineSourceWebpackPlugin = require('inline-source-webpack-plugin');
|
const InlineSourceWebpackPlugin = require('inline-source-webpack-plugin');
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||||
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||||
|
|
||||||
module.exports = (_env, argv) => ({
|
module.exports = (_env, argv) => ({
|
||||||
devtool: argv.mode === 'development' ? 'inline-source-map' : false,
|
devtool: argv.mode === 'development' ? 'inline-source-map' : false,
|
||||||
|
|
@ -34,6 +35,18 @@ module.exports = (_env, argv) => ({
|
||||||
template: './src/index.html',
|
template: './src/index.html',
|
||||||
}),
|
}),
|
||||||
new MiniCssExtractPlugin(),
|
new MiniCssExtractPlugin(),
|
||||||
|
new CopyWebpackPlugin({
|
||||||
|
patterns: [
|
||||||
|
{
|
||||||
|
from: 'src/*.ico',
|
||||||
|
to: '[name][ext]',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
from: 'src/*.png',
|
||||||
|
to: '[name][ext]',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
argv.mode === 'production'
|
argv.mode === 'production'
|
||||||
? new InlineSourceWebpackPlugin({
|
? new InlineSourceWebpackPlugin({
|
||||||
compress: true,
|
compress: true,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue