Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ jobs:
run: bash tests/scripts.test.sh --installation-only
- name: Integration fixture contracts
run: go -C tests/integration test -race ./...
- name: Reproduce bundled core
run: |
expected="$RUNNER_TEMP/bundled-core.sha256"
sha256sum bin/x86_64/syncshell-core \
bin/aarch64/syncshell-core >"$expected"
bash packaging/bundled/build.sh
sha256sum --check "$expected"
git diff --exit-code -- bin packaging/bundled/SHA256SUMS
- name: Verify bundled assets
run: |
sha256sum --check packaging/bundled/SHA256SUMS
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ Notable changes to Syncshell for Omarchy are documented here.
## 0.2.0 - 2026-10-05

- bundle a Linux aarch64 core for Apple Silicon Macs running Omarchy
- update the bundled Web UI to 0.1.4 with refreshed management flows, improved
contrast, keyboard focus, and native Omarchy palette handling
- use the bundled Go core for Waybar configuration during installation and
removal, eliminating the Python dependency
- keep one or two folders visible as cards and use a stable compact selector for
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ See [CHANGELOG.md](CHANGELOG.md) for details.
| ------- | ---------- | ------------------------------------------------------- |
| Future | TBD | mature alpha DMS, II, Caelestia, and Waybar adapters |
| 0.2.0 | 2026-10-05 | improve multi-folder navigation, search, and filtering |
| | | bundle Web UI 0.1.4 with improved theme handling |
| | | support Apple Silicon Macs running Omarchy Linux |
| | | add anchored side forms and keyboard navigation |
| | | clarify statuses and restore bar hover tooltips |
Expand Down
2 changes: 1 addition & 1 deletion core/go.mod
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module github.com/omarchy-QOL/syncshell/core

go 1.23.0
go 1.23.12

require golang.org/x/sys v0.31.0
13 changes: 9 additions & 4 deletions docs/webui.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,15 @@ change the Web repository and import a new release.
`hosts/omarchy/scripts/syncthing-theme.sh` installs Modern or Omarchy profiles.
The Web release owns the CSS template and browser refresh helper. The plugin
owns palette discovery, settings, launcher behavior and the Go desktop bridge.
The generator supplies `{{palette}}` alongside the resolved colors and mode:
the resolved palette directory name, normalized to a lowercase CSS-safe token.
This identity travels with the stylesheet during palette refresh. Any
palette-specific presentation choice stays in the Web-owned helper, not here.
The generator supplies `{{palette}}` alongside the resolved colors and mode.
Explicit palette files and current-theme symlinks use the resolved directory
name; copied current themes use Omarchy's `current/theme.name`. Both are
normalized to a lowercase CSS-safe token. This identity travels with the
stylesheet during palette refresh.

Resolved colors include `{{bright_yellow}}` for palettes with a distinct native
warning alternative. Palette selection, shading, and foreground decisions stay
in the Web-owned helper; the plugin only supplies native values.

Run the focused consumer checks with:

Expand Down
12 changes: 9 additions & 3 deletions hosts/omarchy/scripts/syncthing-theme.sh
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ if [[ $style == omarchy ]]; then
required=(
mode background foreground accent muted selection
lighter_background darker_background dark_foreground light_foreground
red yellow green cyan blue magenta orange
red yellow bright_yellow green cyan blue magenta orange
)
for key in "${required[@]}"; do
[[ -n ${colors[$key]:-} ]] || {
Expand Down Expand Up @@ -110,8 +110,13 @@ if [[ $style == omarchy ]]; then
"@import \"omarchy_syncthing_theme.css?v=$generation\";" \
>"$wrapper_tmp"

palette_source=$(realpath -- "${colors_file:-$HOME/.local/state/omarchy/current/theme/colors.toml}")
palette=$(basename -- "$(dirname -- "$palette_source")")
if [[ -z $colors_file && ! -L $HOME/.local/state/omarchy/current/theme ]]; then
# Copied current themes retain their identity in the provider's name file.
palette=$(<"$HOME/.local/state/omarchy/current/theme.name")
else
palette_source=$(realpath -- "${colors_file:-$HOME/.local/state/omarchy/current/theme/colors.toml}")
palette=$(basename -- "$(dirname -- "$palette_source")")
fi
palette=$(printf '%s' "$palette" | LC_ALL=C tr '[:upper:]' '[:lower:]' | LC_ALL=C tr -cs 'a-z0-9_-' '-')

sed \
Expand All @@ -128,6 +133,7 @@ if [[ $style == omarchy ]]; then
-e "s/{{foreground_light}}/${colors[light_foreground]}/g" \
-e "s/{{red}}/${colors[red]}/g" \
-e "s/{{yellow}}/${colors[yellow]}/g" \
-e "s/{{bright_yellow}}/${colors[bright_yellow]}/g" \
-e "s/{{green}}/${colors[green]}/g" \
-e "s/{{cyan}}/${colors[cyan]}/g" \
-e "s/{{blue}}/${colors[blue]}/g" \
Expand Down
6 changes: 6 additions & 0 deletions packaging/bundled/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
set -euo pipefail

root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)
required_go=$(awk '$1 == "go" { print "go" $2 }' "$root/core/go.mod")
[[ $(go env GOVERSION) == "$required_go" ]] || {
printf 'bundled core requires %s\n' "$required_go" >&2
exit 1
}

build_core() {
local directory=$1 goarch=$2
local output="$root/bin/$directory/syncshell-core"
Expand Down
2 changes: 1 addition & 1 deletion scripts/test-webui-integration.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export PATH="$runtime/bin:$PATH"
printf '%s\t%s\n' mode dark background '#120f18' foreground '#e8dff2' accent '#ff7ab2' \
muted '#666666' selection '#334455' lighter_background '#201d28' \
darker_background '#100d18' dark_foreground '#111111' light_foreground '#eeeeee' \
red '#ff5370' yellow '#ffcb6b' green '#c3e88d' cyan '#89ddff' blue '#82aaff' \
red '#ff5370' yellow '#ffcb6b' bright_yellow '#e5c736' green '#c3e88d' cyan '#89ddff' blue '#82aaff' \
magenta '#c792ea' orange '#ff8800' >"$SYNCSHELL_TEST_PALETTE"
for style in modern omarchy; do
assets=$(bash hosts/omarchy/scripts/syncthing-theme.sh prepare "$style" "$runtime/gui" "$SYNCSHELL_TEST_PALETTE")
Expand Down
12 changes: 11 additions & 1 deletion tests/scripts.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ test_themes() {
'color1 = "#ff5370"' \
'color2 = "#c3e88d"' \
'color3 = "#ffcb6b"' \
'bright_yellow = "#e5c736"' \
'color4 = "#82aaff"' \
'color5 = "#c792ea"' \
'color6 = "#89ddff"' \
Expand All @@ -245,17 +246,26 @@ test_themes() {
cp -a -- "$root/webui" "$identity/"
cp -- "$root/hosts/omarchy/scripts/syncthing-theme.sh" "$identity/hosts/omarchy/scripts/"
identity_helper="$identity/hosts/omarchy/scripts/syncthing-theme.sh"
printf '\n:root { --identity-check: {{palette}}; }\n' >>"$identity/webui/integration/omarchy-theme.css.in"
printf '\n:root { --identity-check: {{palette}}; --bright-check: {{bright_yellow}}; }\n' >>"$identity/webui/integration/omarchy-theme.css.in"
(cd -- "$identity/webui"; find . -type f ! -name SHA256SUMS -print0 | sort -z | xargs -0 sha256sum) >"$identity/webui/SHA256SUMS"
bash "$identity_helper" prepare omarchy "$identity/gui" "$user_theme" >/dev/null
grep -Fq -- '--identity-check: user-theme;' "$identity/gui/syncthing-omarchy/assets/css/omarchy_syncthing_theme.css" \
|| fail "explicit palette identity was not supplied"
grep -Fq -- '--bright-check: #e5c736;' "$identity/gui/syncthing-omarchy/assets/css/omarchy_syncthing_theme.css" \
|| fail "native bright yellow was not supplied"
identity_home="$identity/home"
mkdir -p -- "$identity_home/.local/state/omarchy/current"
ln -s -- "$(dirname -- "$user_theme")" "$identity_home/.local/state/omarchy/current/theme"
HOME="$identity_home" bash "$identity_helper" prepare omarchy "$identity/gui" >/dev/null
grep -Fq -- '--identity-check: user-theme;' "$identity/gui/syncthing-omarchy/assets/css/omarchy_syncthing_theme.css" \
|| fail "current-theme symlink hid the palette identity"
rm -- "$identity_home/.local/state/omarchy/current/theme"
mkdir -p -- "$identity_home/.local/state/omarchy/current/theme"
cp -- "$user_theme" "$identity_home/.local/state/omarchy/current/theme/colors.toml"
printf '%s\n' 'Osaka Jade' >"$identity_home/.local/state/omarchy/current/theme.name"
HOME="$identity_home" bash "$identity_helper" prepare omarchy "$identity/gui" >/dev/null
grep -Fq -- '--identity-check: osaka-jade;' "$identity/gui/syncthing-omarchy/assets/css/omarchy_syncthing_theme.css" \
|| fail "copied current theme lost its recorded palette identity"
mkdir -p -- "$identity/Odd; Theme"
cp -- "$user_theme" "$identity/Odd; Theme/colors.toml"
bash "$identity_helper" prepare omarchy "$identity/gui" "$identity/Odd; Theme/colors.toml" >/dev/null
Expand Down
30 changes: 15 additions & 15 deletions webui/SHA256SUMS
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
3f3d9e0024b1921b067d6f7f88deb4a60cbe7a78e76c64e3f1d7fc3b779b9d04 gui/syncshell-modern/LICENSE.syncthing
e4a9a4a162c503e8656de4cf776c2ff52c7fe514299b73233d7dddbd70d396b0 gui/syncshell-modern/assets/compiled/index-B3LnjwC-.js
d9f606609b02a1f6a334af2262b4c35631a48c9652aea80e6c256e6e88455644 gui/syncshell-modern/assets/compiled/index-Dm9fw6Co.css
a96e3d8969bcf96f8d83be0151f9a58f385e805fe0ebbbc37cee884d6d659063 gui/syncshell-modern/assets/css/modern.css
01861eeca69a9b896ff0da8749216192e1fb83e79cc3ae2063aca10d0dc45f95 gui/syncshell-modern/assets/css/overrides.css
9e6f448757fe9855e88361b94fcb1cc3dfdd50b8f9cda372f730edfd04b8d42e gui/syncshell-modern/assets/css/syncshell-dark.css
00022051d6d1cd2f4051121c6c123e245fdd589a1c8dfd74eb48c3a2d459144e gui/syncshell-modern/assets/css/syncshell-light.css
aa4a557ddb7ec6764022163308e9e2f0c37fd1253a1ff40e283f192319327414 gui/syncshell-modern/assets/css/theme.css
64e7aedc5dc0b2f3d91866c1eb39023f477be6be0579e3035425de018606ce4f gui/syncshell-modern/assets/compiled/index-D90N4kfH.js
8fb44858250473bf9461a183079b11da3acedbd98ddb831a2404d675c3551e3c gui/syncshell-modern/assets/compiled/index-tmSTW1eB.css
b09731c7da3f3d9b9a9c1790025e1c89b607e6e7ca799c23f40c12032535101f gui/syncshell-modern/assets/css/layers.css
b0b444158655692ec51b7ade49fa0fcea83c508ba6d31e32010e7f670033b469 gui/syncshell-modern/assets/css/overrides.css
7414b44eb0799be10ababc3d549e6c5b9b568756a6acb0d5c0e1a7afc6a5fcf3 gui/syncshell-modern/assets/css/syncshell-dark.css
13d55264f6aad0bcac3fbaa37648daf235932c280a10154770c62e915044a419 gui/syncshell-modern/assets/css/syncshell-light.css
3d9fc3ced168baf4012734e284a52536f06de7296b000154c99192f6e0114c7b gui/syncshell-modern/assets/css/theme.css
96947f0a2cd434e45cf778e7604260a8b2af2a444cd6f32350cad7560bc8c0d8 gui/syncshell-modern/assets/font/raleway-500.woff
08e5e01580ec39dbd779a7d6b04aff936b7086ad9bfb69d06739e11d302fc80b gui/syncshell-modern/assets/font/raleway.css
4a083efa1144e07bec594fc387b569ae1e3c49ec4512dcf3e4be91110fb82652 gui/syncshell-modern/assets/font/raleway.css
71959dc8e30bd9b2b75d34df200afaee9f58446fc5b5b383094df2c3c48e5760 gui/syncshell-modern/assets/img/favicon-default.png
5dada438b79b4020a883c6938edcf20f40a9f8bf0fbea992f4b6031afd270235 gui/syncshell-modern/assets/img/favicon-notify.png
0ad0dee4667c0ecc19fddfbfdfc7c99bf3e28ba90ed8abbff10e801151b586b9 gui/syncshell-modern/assets/img/favicon-pause.png
88fff49e35d48a0539ed395622f4f6fc24942706bc7e1504548c5d61479757ca gui/syncshell-modern/assets/img/favicon-sync.png
89dd6592c486051f17439e343fa15c3ac2250012f183fc6e0970955f74eb8820 gui/syncshell-modern/assets/img/logo-horizontal.svg
4315325f9c9073d1b71f29e62ae76ef7c92d5eef4df167b19499a8a977955384 gui/syncshell-modern/assets/img/safari-pinned-tab.svg
8655792f4bfef8237ba4ed6dc4f8523f465477586a1155a5e82c277f1ea6587f gui/syncshell-modern/assets/lang/README.txt
92189290e48b86956579c8638abf8a5428dd5098440eb04cb47361f2b3aabf66 gui/syncshell-modern/assets/lang/lang-en.json
72912996e70b857758a9203e426c111f02c63cd98ba503c08cc4cfaa2e2727ad gui/syncshell-modern/index.html
531d09f120e9ef99c2491d15790a8e67a08c53f543030a017ce18a6b308bc2d8 gui/syncshell-modern/assets/lang/lang-en.json
e0e6df6c92b8e9d0289ae8fad5b77199e1647398201f531a68a1e407babd2960 gui/syncshell-modern/index.html
f05e84c3000faf09cf8e445d35018b01fc0d6026953840e9398aeab501b86da2 gui/syncshell-modern/licenses/OFL-1.1.txt
96dcdcf4bf781efbb07a1912e9364d144f02ad57d7cb7a07ed351d1f56c402ef gui/syncshell-modern/licenses/angular-utils-pagination.txt
8c8cc1220719b94a053ade7a6d7f227eee97cd0843f1c135f80b57ba0758b722 gui/syncshell-modern/licenses/font-notices.txt
Expand All @@ -29,8 +29,8 @@ a5d1da13fbd483f0c2daab5070ec40a8fd33bb88b23b08034a5b3e61394b1fac gui/syncshell-
429793ca8577023b9d96585576e3c4fc6666cb872f548bbc57c92f6345e711ca gui/syncshell-modern/vendor/bootstrap/fonts/reception-2.svg
d89a04da25833cf11b910e5c3138b03f6ee25d7860333463e31ad5021ff9e344 gui/syncshell-modern/vendor/bootstrap/fonts/reception-3.svg
09a189b0de0f7670ede23b7336929d28bcfd4573d2a0199f4350f50840a63e5f gui/syncshell-modern/vendor/bootstrap/fonts/reception-4.svg
8e6e020da5f9ed752000ee3a5b060ddaf32158e1984240df32c41a721e77af4b install.sh
60fd5dad8890a40a43002738c101bc0b5bc9d9ff00f9b8c2e4c6ca1bbe42f627 integration/omarchy-theme-refresh.js
2f2f17dc508070de2f5f132bc62fd3e0ff448a1a4e7e609eafde38ea467c03c7 integration/omarchy-theme.css.in
14954bfb438f8426ea1785efaf23d265881e3e2ee2c5670acbdcd4211c59ca3b manifest.json
e01cb4c67cb0ff4630a507865b1947f3df6e05bac4cf7239d07535363a5a79ad import.json
0a93e3a18fd2b74ceda7ad4756c790b3ce4bbeefd3fec580b2c27425766a69bc install.sh
ce022e02a9902cc3455b50de10da3ab650ce9b08b93fb39d8bda07e96b425ade integration/omarchy-theme-refresh.js
e2ecf57c7dd8ff1ac4269a419fe3d7d9b0131d3d0180be5eda7e048887431ee3 integration/omarchy-theme.css.in
790362de21b11cf13f2be17f8b1299a23467a0696f1780219e09ec6783f8ee90 manifest.json
2ee8f9fdcd189b7755fdc4b862a926edd69e7d0aee1a7535a628cac81fdbea76 import.json
12 changes: 0 additions & 12 deletions webui/gui/syncshell-modern/assets/compiled/index-B3LnjwC-.js

This file was deleted.

14 changes: 14 additions & 0 deletions webui/gui/syncshell-modern/assets/compiled/index-D90N4kfH.js

Large diffs are not rendered by default.

This file was deleted.

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions webui/gui/syncshell-modern/assets/css/layers.css
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@layer vendor, base, layout, components, features, utilities, theme;
Loading
Loading