Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
21e7d75
init clj project
blackstorm Dec 21, 2025
8be77d0
create plugin
blackstorm Dec 21, 2025
50eabc4
create admin page
blackstorm Dec 22, 2025
6600dbd
admin pages
blackstorm Dec 22, 2025
40c3a71
document link sync
blackstorm Dec 22, 2025
9d7e0c5
server path
blackstorm Dec 23, 2025
f69ffef
home page
blackstorm Dec 23, 2025
8a37c86
new design style
blackstorm Dec 23, 2025
158c2f2
new icons
blackstorm Dec 23, 2025
16914f3
new design system v2
blackstorm Dec 23, 2025
eefa1bc
fix update vaults
blackstorm Dec 23, 2025
9dd4ea7
fix page refresh
blackstorm Dec 23, 2025
786d1a6
fix toast
blackstorm Dec 23, 2025
8be75b8
remove style tag
blackstorm Dec 23, 2025
b9e57de
using tailwind css
blackstorm Dec 23, 2025
5f591e8
components
blackstorm Dec 23, 2025
10c90b2
remove inline style
blackstorm Dec 23, 2025
13a7c4c
update copywrite
blackstorm Dec 23, 2025
9720e08
sync button
blackstorm Dec 24, 2025
d7f726f
from jetty to undertow
blackstorm Dec 24, 2025
a675ff3
fix auth
blackstorm Dec 24, 2025
7a5bc34
frontend page
blackstorm Dec 25, 2025
5601a63
doc pages
blackstorm Dec 25, 2025
0cc4247
frontend css
blackstorm Dec 25, 2025
01debbc
fix full sync
blackstorm Jan 5, 2026
fc03c6b
fix css
blackstorm Jan 5, 2026
9de9655
new sync full
blackstorm Jan 6, 2026
56e9a7a
fix admin statics & dialog css
blackstorm Jan 6, 2026
db32d3c
update markdown parser & fix sync
blackstorm Jan 6, 2026
82083af
rename doc to note
blackstorm Jan 6, 2026
e8eb74a
Refactor code structure for improved readability and maintainability
blackstorm Jan 6, 2026
4e83bdd
Refactor notification system and enhance modal forms
blackstorm Jan 6, 2026
b1b482e
feat: Add internal token support and health check routes
blackstorm Jan 6, 2026
0fa7cd2
feat: Enhance configuration management with secrets handling and inte…
blackstorm Jan 6, 2026
066e11a
chore: Clean up TODO list by removing completed tasks
blackstorm Jan 6, 2026
3e9d77f
feat: Add GNU Affero General Public License version 3 to the project
blackstorm Jan 6, 2026
f684a57
fix: Add missing newline at the end of LICENSE.md
blackstorm Jan 6, 2026
ad805c6
feat: Implement user existence check and cache in admin initialization
blackstorm Jan 7, 2026
9e50e7c
Refactor root note selector to use a custom dropdown with search func…
blackstorm Jan 7, 2026
4f9c4e8
object storage
blackstorm Jan 7, 2026
9564398
feat: Implement core functionality for MarkdownBrain Obsidian Plugin
blackstorm Jan 7, 2026
fe96dba
Refactor code structure for improved readability and maintainability
blackstorm Jan 7, 2026
1aebc44
feat: Update logo handling in vault card and add internal health chec…
blackstorm Jan 7, 2026
2cc74f0
Refactor code structure and remove redundant code blocks for improved…
blackstorm Jan 7, 2026
37a5ec9
Refactor code structure for improved readability and maintainability
blackstorm Jan 8, 2026
3ec704a
Implement local and S3 object storage with comprehensive tests
blackstorm Jan 8, 2026
c471c5e
Refactor asset management and database initialization
blackstorm Jan 8, 2026
a6c4716
feat: Update sync functionality and add comprehensive tests
blackstorm Jan 8, 2026
4a29988
Refactor code structure for improved readability and maintainability
blackstorm Jan 12, 2026
f4e9600
add server dev command
blackstorm Jan 15, 2026
9aeaa58
feat: Add logo thumbnail generation with smart fallback
blackstorm Jan 15, 2026
ca6f318
fix: Address code review issues - Important and Minor
blackstorm Jan 15, 2026
ee9e484
logo upload refactor
blackstorm Jan 16, 2026
8307a9d
add missing admin handler
blackstorm Jan 16, 2026
2974c7a
fix image process
blackstorm Jan 16, 2026
deb6a39
feat: add renew sync key functionality for vaults
blackstorm Jan 16, 2026
383648a
Improve root path redirect and shorten image hash length
blackstorm Jan 16, 2026
54cf470
Fix error messages: site → vault
blackstorm Jan 16, 2026
804c463
feat: implement database migration system with migratus
blackstorm Jan 17, 2026
ee986ee
sync api
blackstorm Jan 17, 2026
5ae6516
new clean sync api (#2)
blackstorm Jan 17, 2026
9d849d3
Add initial MarkdownBrain documentation and self-hosting guide
blackstorm Jan 18, 2026
64a722a
feat: restructure self-hosted deployment with new Caddy configuration…
blackstorm Jan 18, 2026
0f31de7
Refactor code structure and remove redundant sections for improved re…
blackstorm Jan 18, 2026
6d0804a
Refactor code structure for improved readability and maintainability
blackstorm Jan 19, 2026
737bab8
fix: update development paths and enhance asset reference management
blackstorm Jan 19, 2026
6ddb66d
Add unit tests for client ID management, debounce functionality, and …
blackstorm Jan 19, 2026
9b52a63
test: add unit tests for ObsidianVaultAdapter, ObsidianMetadataAdapte…
blackstorm Jan 19, 2026
0c4cbef
Refactor code structure for improved readability and maintainability
blackstorm Jan 19, 2026
af42dcb
feat: enhance sync functionality with link and asset management impro…
blackstorm Jan 19, 2026
674675a
refactor: remove deleteNoteAsset functionality and associated tests
blackstorm Jan 19, 2026
6cba20c
feat: add linked notes support in sync functionality and enhance note…
blackstorm Jan 19, 2026
1cd181e
Refactor database queries to use HoneySQL for improved readability an…
blackstorm Jan 19, 2026
a016ca4
move sync api
blackstorm Jan 20, 2026
849bae2
fix: update CSS file references from app.css to admin.css in template…
blackstorm Jan 20, 2026
a9fa2b0
/admin -> /console
blackstorm Jan 21, 2026
0b6bc89
update package name
blackstorm Jan 21, 2026
9dfb7e5
move package name and css name
blackstorm Jan 21, 2026
14390b5
add rename files
blackstorm Jan 21, 2026
11f885d
fix template format
blackstorm Jan 21, 2026
fefab22
refactor: rename admin references to console in codebase
blackstorm Jan 21, 2026
2222da4
fix: add headless option for Java in Dockerfile and deps.edn
blackstorm Jan 21, 2026
45fe670
add custom html
blackstorm Jan 23, 2026
dc4af52
custom html
blackstorm Jan 23, 2026
a531bca
update copywrite
blackstorm Jan 23, 2026
f3762f9
sync status
blackstorm Jan 23, 2026
b0f665d
Enhance vault logo upload and favicon handling
blackstorm Jan 24, 2026
49199db
utils
blackstorm Jan 24, 2026
e143249
Update licensing information, add new utility functions, and implemen…
blackstorm Jan 24, 2026
d067d97
Add .env.example and install.sh for self-hosted setup
blackstorm Jan 24, 2026
69c5f02
Add quick deploy instructions to README files and remove install.sh
blackstorm Jan 24, 2026
3f06720
chore: update code structure for better readability and maintainability
blackstorm Jan 24, 2026
7dbb524
fix: update README files with proper link formatting and enhance clarity
blackstorm Jan 24, 2026
481e6d2
fix: update environment variable references and improve README docume…
blackstorm Jan 24, 2026
bb881b7
Remove outdated Chinese technical writing guidelines and add a compre…
blackstorm Jan 24, 2026
78b3b7b
refactor: update Docker Compose configurations and improve README doc…
blackstorm Jan 24, 2026
e40eda5
docs: enhance README files with comprehensive table of contents and a…
blackstorm Jan 24, 2026
5336a54
docs: update environment variable sections in README files for clarit…
blackstorm Jan 24, 2026
70d21c8
fix: update notifications and text in various components for consiste…
blackstorm Jan 24, 2026
e0f2e6f
update readme
blackstorm Jan 24, 2026
0d1b490
add more badge
blackstorm Jan 24, 2026
4aa0ca1
update readme
blackstorm Jan 24, 2026
fab10be
update readme
blackstorm Jan 24, 2026
db344ba
update readme
blackstorm Jan 24, 2026
4b25e22
Refactor event handling and metadata caching in Obsidian plugin
blackstorm Jan 25, 2026
c1bdb54
Increase debounce time for asset synchronization and update documenta…
blackstorm Jan 25, 2026
2ebe2ea
Refactor icon handling to use lucide_icon function
blackstorm Jan 27, 2026
e816c78
update lucide usage
blackstorm Jan 28, 2026
9926181
fix: vendor lucide svg icons
blackstorm Jan 28, 2026
b602373
update docs
blackstorm Feb 1, 2026
eeed375
remove 8080 console 301
blackstorm Feb 1, 2026
a9f1e68
fix mobile notes style (#3)
blackstorm Feb 2, 2026
427c175
fix: avoid cramped backlinks and watch assets in dev
blackstorm Feb 2, 2026
a7721bf
fix a+b+c click notes switch issue
blackstorm Feb 2, 2026
112ef10
update licenses files
blackstorm Feb 2, 2026
cf727a8
fix: update console init logo
blackstorm Feb 2, 2026
b667712
upgrade versions
blackstorm Feb 2, 2026
73b5f99
add docker healthcheck script
blackstorm Feb 2, 2026
92d4982
fix github action test case
blackstorm Feb 2, 2026
d81c0f1
rename frontend to app
blackstorm Feb 3, 2026
98beb40
rename to app
blackstorm Feb 3, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .actrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-22.04
23 changes: 23 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
.git
.gitignore
.github
*.md
!README.md

server/target
server/.cpcache
server/node_modules
server/markdownbrain.db
server/.nrepl-port

obsidian-plugin
vault

Dockerfile
docker-compose*.yml
.dockerignore
.env*

*.log
*.zip
.DS_Store
72 changes: 72 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: CI

on:
push:
branches: ["main"]
pull_request:

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
backend-tests:
name: Backend tests (Clojure)
runs-on: ubuntu-latest
defaults:
run:
working-directory: server
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "25"

- uses: DeLaGuardo/setup-clojure@12.5
with:
cli: 1.11.1.1413

- name: Cache Clojure deps
uses: actions/cache@v4
with:
path: |
~/.m2/repository
~/.gitlibs
~/.clojure
server/.cpcache
key: clojure-${{ runner.os }}-${{ hashFiles('server/deps.edn') }}
restore-keys: |
clojure-${{ runner.os }}-

- name: Run tests
run: clojure -M:test

plugin-tests:
name: Plugin tests (TypeScript)
runs-on: ubuntu-latest
defaults:
run:
working-directory: obsidian-plugin
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
version: 10.17.1

- uses: actions/setup-node@v4
with:
node-version: "25"
cache: pnpm
cache-dependency-path: obsidian-plugin/pnpm-lock.yaml

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run tests
run: pnpm test

- name: Lint/format check
run: pnpm check
96 changes: 96 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Docker Image

on:
push:
branches: ["main"]
tags: ["v*"]
pull_request:

permissions:
contents: read
packages: write

concurrency:
group: docker-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build-and-push:
name: Build & push (GHCR)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Determine build platforms
id: platforms
shell: bash
run: |
if [[ "${ACT:-}" == "true" ]]; then
echo "platforms=linux/amd64" >> "$GITHUB_OUTPUT"
echo "multiarch=false" >> "$GITHUB_OUTPUT"
else
echo "platforms=linux/amd64,linux/arm64" >> "$GITHUB_OUTPUT"
echo "multiarch=true" >> "$GITHUB_OUTPUT"
fi

- name: Set up QEMU
if: ${{ steps.platforms.outputs.multiarch == 'true' }}
uses: docker/setup-qemu-action@v3

- name: Set up Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GH_TOKEN }}

- name: Compute image tags
id: meta
shell: bash
run: |
set -euo pipefail

owner="${GITHUB_REPOSITORY_OWNER,,}"
image="ghcr.io/${owner}/markdownbrain"

tags=()
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
version="${GITHUB_REF#refs/tags/v}"
tags+=("${image}:${version}")

IFS='.' read -r major minor patch <<<"${version}"
if [[ -n "${major:-}" && -n "${minor:-}" && -n "${patch:-}" ]]; then
tags+=("${image}:${major}.${minor}")
tags+=("${image}:${major}")
tags+=("${image}:latest")
fi
else
sha="${GITHUB_SHA::7}"
tags+=("${image}:edge")
tags+=("${image}:sha-${sha}")
fi

{
echo "image=${image}"
echo "tags<<EOF"
printf "%s\n" "${tags[@]}"
echo "EOF"
} >> "$GITHUB_OUTPUT"

- name: Build (and push)
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
platforms: ${{ steps.platforms.outputs.platforms }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: |
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.revision=${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
83 changes: 0 additions & 83 deletions .github/workflows/release-docker.yml

This file was deleted.

75 changes: 44 additions & 31 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,55 @@
name: Release Binaries
name: Release

on:
push:
tags:
- 'v*'
tags: ["v*"]

permissions:
contents: write

concurrency:
group: release-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
github-release:
name: GitHub Release (plugin zip)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v4
- name: Determine release mode
id: release-mode
shell: bash
run: |
if [[ "${ACT:-}" == "true" ]]; then
echo "skip=true" >> "$GITHUB_OUTPUT"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi

- uses: pnpm/action-setup@v4
with:
go-version: '1.23'
version: 10.17.1

- name: Build All Binaries
run: |
mkdir -p dist
# Server builds
GOOS=linux GOARCH=amd64 go build -o dist/markdownbrain-server-linux-amd64 server/main.go
GOOS=linux GOARCH=arm64 go build -o dist/markdownbrain-server-linux-arm64 server/main.go
GOOS=windows GOARCH=amd64 go build -o dist/markdownbrain-server-windows-amd64.exe server/main.go
GOOS=darwin GOARCH=amd64 go build -o dist/markdownbrain-server-darwin-amd64 server/main.go
GOOS=darwin GOARCH=arm64 go build -o dist/markdownbrain-server-darwin-arm64 server/main.go

# CLI builds
GOOS=linux GOARCH=amd64 go build -o dist/markdownbrain-cli-linux-amd64 cli/main.go
GOOS=linux GOARCH=arm64 go build -o dist/markdownbrain-cli-linux-arm64 cli/main.go
GOOS=windows GOARCH=amd64 go build -o dist/markdownbrain-cli-windows-amd64.exe cli/main.go
GOOS=darwin GOARCH=amd64 go build -o dist/markdownbrain-cli-darwin-amd64 cli/main.go
GOOS=darwin GOARCH=arm64 go build -o dist/markdownbrain-cli-darwin-arm64 cli/main.go

- name: Create Release
uses: softprops/action-gh-release@v1
- uses: actions/setup-node@v4
with:
node-version: "25"
cache: pnpm
cache-dependency-path: obsidian-plugin/pnpm-lock.yaml

- name: Install plugin dependencies
working-directory: obsidian-plugin
run: pnpm install --frozen-lockfile

- name: Build plugin ZIP
working-directory: obsidian-plugin
run: pnpm package

- name: Create GitHub release
if: ${{ steps.release-mode.outputs.skip != 'true' }}
uses: softprops/action-gh-release@v2
with:
files: dist/*
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
generate_release_notes: true
files: |
obsidian-plugin/markdownbrain-plugin.zip
Loading
Loading