From 3b5c35ab8affa908bfaea0034ff98362137ed2c2 Mon Sep 17 00:00:00 2001 From: renovate Date: Sat, 10 Oct 2026 00:30:42 +0000 Subject: [PATCH 1/6] chore(backend): update template to v0.3.0, conflicts left --- .copier/backend.yml | 2 +- backend/Makefile | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.copier/backend.yml b/.copier/backend.yml index a2ed819..c5d2d45 100644 --- a/.copier/backend.yml +++ b/.copier/backend.yml @@ -1,4 +1,4 @@ -_commit: v0.1.0 +_commit: v0.3.0 _src_path: https://git.kotikot.com/templates/blank.git layout: part part: backend diff --git a/backend/Makefile b/backend/Makefile index 73eb346..ce86d54 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -1,10 +1,15 @@ COMPOSE := cd .. && docker compose +<<<<<<< before updating IMAGE := lodge/backend LINT := go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.13.2 changed = ! git diff --quiet $(1) -- $(2) 2>/dev/null stamp = { git update-ref $(1) HEAD 2>/dev/null || true; } .PHONY: fmt check test build pre-deploy post-deploy client dev +======= + +.PHONY: fmt check build +>>>>>>> after updating fmt: go mod tidy @@ -19,6 +24,7 @@ test: build: $(COMPOSE) build api +<<<<<<< before updating pre-deploy: @if $(call changed,refs/deploy/backend,.) || ! docker image inspect $(IMAGE) >/dev/null 2>&1; then \ @@ -33,3 +39,5 @@ client: dev: LODGE_DB=storage/lodge.db STATIC_DIR=../frontend/build CLIENTS_DIR=bin ADMIN_TOKEN=dev go run ./cmd/lodge-server +======= +>>>>>>> after updating -- 2.54.0 From 56544bd025e7bb69264888c5580206fe2b1581e4 Mon Sep 17 00:00:00 2001 From: renovate Date: Sat, 10 Oct 2026 00:30:45 +0000 Subject: [PATCH 2/6] chore(caddy): update template to v0.1.4 --- .copier/caddy.yml | 2 +- caddy/.gitignore | 2 +- caddy/README.md | 21 +-------------------- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/.copier/caddy.yml b/.copier/caddy.yml index 1613101..51ca6a9 100644 --- a/.copier/caddy.yml +++ b/.copier/caddy.yml @@ -1,4 +1,4 @@ -_commit: v0.1.2 +_commit: v0.1.4 _src_path: https://git.kotikot.com/templates/caddy.git project_slug: lodge routes: diff --git a/caddy/.gitignore b/caddy/.gitignore index acd0b35..a9e5752 100644 --- a/caddy/.gitignore +++ b/caddy/.gitignore @@ -1,2 +1,2 @@ .env -Caddyfile +/Caddyfile diff --git a/caddy/README.md b/caddy/README.md index ebd199d..23fce9c 100644 --- a/caddy/README.md +++ b/caddy/README.md @@ -1,22 +1,3 @@ # caddy -`site.caddy` routes `{$LODGE_DOMAIN}` to the project's services over the external `caddy` docker network. It works standalone and inside a shared Caddy that fronts several projects. - -Standalone: - -```sh -docker network create caddy -cp Caddyfile.example Caddyfile -cp .env.example .env -docker compose up -d -``` - -Shared Caddy: mount this directory as `/etc/caddy/projects.d/lodge:ro`, keep `import /etc/caddy/projects.d/*/site.caddy` in its Caddyfile and put `LODGE_DOMAIN` in its environment. - -Rules that keep `site.caddy` portable: - -- the domain comes only from the environment variable -- no `tls` block, certificates are configured by the host Caddy (`acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}` in the global block) -- snippets are prefixed with the project slug because Caddy snippets are global -- mount the directory, not the file: a single-file bind mount goes stale when git replaces the inode -- keep `admin localhost:2019`, `admin off` makes `caddy reload` impossible +`site.caddy` routes `{$LODGE_DOMAIN}` to the project over the external `caddy` network. In a shared Caddy, mount this directory as `/etc/caddy/projects.d/lodge:ro` and set `LODGE_DOMAIN`. Keep it portable: domain only from the env, no `tls`, snippets prefixed with `lodge_`. -- 2.54.0 From 9d96502eb5463c222006301d4dd5609d953e8c35 Mon Sep 17 00:00:00 2001 From: renovate Date: Sat, 10 Oct 2026 00:30:48 +0000 Subject: [PATCH 3/6] chore(frontend): update template to v0.6.0, conflicts left --- .copier/frontend.yml | 4 ++-- .impeccable/.gitignore | 5 ----- .mcp.json | 8 -------- frontend/.dockerignore | 4 +++- frontend/.gitignore | 5 ----- frontend/Makefile | 12 +----------- frontend/biome.jsonc | 8 +------- frontend/docker-compose.override.yml.example | 2 ++ frontend/package.json | 19 +++++++++++++------ 9 files changed, 22 insertions(+), 45 deletions(-) delete mode 100644 .impeccable/.gitignore delete mode 100644 .mcp.json diff --git a/.copier/frontend.yml b/.copier/frontend.yml index 0504345..91a189b 100644 --- a/.copier/frontend.yml +++ b/.copier/frontend.yml @@ -1,8 +1,8 @@ -_commit: v0.3.1 +_commit: v0.6.0 _src_path: https://git.kotikot.com/templates/frontend-svelte.git -include_impeccable: true install_deps: true layout: part +linter: biome project_name: lodge project_slug: lodge serve: api diff --git a/.impeccable/.gitignore b/.impeccable/.gitignore deleted file mode 100644 index 440338a..0000000 --- a/.impeccable/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -config.local.json -hook.cache.json -hook.pending.json -review/ -decision/ diff --git a/.mcp.json b/.mcp.json deleted file mode 100644 index 04506c8..0000000 --- a/.mcp.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "mcpServers": { - "svelte": { - "type": "http", - "url": "https://mcp.svelte.dev/mcp" - } - } -} diff --git a/frontend/.dockerignore b/frontend/.dockerignore index 1048241..ed46f37 100644 --- a/frontend/.dockerignore +++ b/frontend/.dockerignore @@ -1,5 +1,7 @@ node_modules .svelte-kit build -.env +# .env goes into the build: $env/static/public (and static/private) are +# inlined at build time from it. It stays in the builder stage, the runtime +# image gets build/ only. Local overrides (.env.local and the like) stay out. .env.* diff --git a/frontend/.gitignore b/frontend/.gitignore index 46a573e..7dcbc6e 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -16,8 +16,3 @@ node_modules # Vite vite.config.js.timestamp-* vite.config.ts.timestamp-* - -# Impeccable -**/.impeccable/config.local.json -**/.impeccable/hook.cache.json -**/.impeccable/hook.pending.json diff --git a/frontend/Makefile b/frontend/Makefile index 0cef562..484b133 100644 --- a/frontend/Makefile +++ b/frontend/Makefile @@ -1,8 +1,6 @@ COMPOSE := cd .. && docker compose -changed = ! git diff --quiet $(1) -- $(2) 2>/dev/null -stamp = { git update-ref $(1) HEAD 2>/dev/null || true; } -.PHONY: fmt check build pre-deploy post-deploy dev +.PHONY: fmt check build dev fmt: bun run fix @@ -14,13 +12,5 @@ check: build: $(COMPOSE) run --rm frontend-dev sh -c "bun install && bun run build" -pre-deploy: - @if $(call changed,refs/deploy/frontend,.) || ! test -d build; then \ - $(MAKE) build && $(call stamp,refs/deploy/frontend); \ - fi - -post-deploy: - @: - dev: bun run dev diff --git a/frontend/biome.jsonc b/frontend/biome.jsonc index c7835bb..f278fd5 100644 --- a/frontend/biome.jsonc +++ b/frontend/biome.jsonc @@ -2,13 +2,7 @@ "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", "extends": ["ultracite/biome/core", "ultracite/biome/svelte"], "files": { - "includes": [ - "!.claude", - "!.svelte-kit", - "!build", - "!.mcp.json", - "!.impeccable" - ] + "includes": ["!.claude", "!.svelte-kit", "!build", "!.mcp.json"] }, "javascript": { "globals": ["Bun"] }, "overrides": [ diff --git a/frontend/docker-compose.override.yml.example b/frontend/docker-compose.override.yml.example index 8909d52..b2a1248 100644 --- a/frontend/docker-compose.override.yml.example +++ b/frontend/docker-compose.override.yml.example @@ -5,6 +5,8 @@ services: caddy: aliases: - lodge-frontend +# ports: +# - "127.0.0.1:3000:3000" networks: caddy: diff --git a/frontend/package.json b/frontend/package.json index 1ad7820..d155ac3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,22 +1,25 @@ { "name": "lodge", - "type": "module", - "private": true, "version": "0.0.1", + "private": true, + "type": "module", "scripts": { - "dev": "vite dev", "build": "vite build", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "dev": "vite dev", + "fix": "ultracite fix", "lint": "ultracite check", - "fix": "ultracite fix" + "prepare": "svelte-kit sync || echo ''", + "preview": "vite preview" }, "devDependencies": { "@biomejs/biome": "2.5.13", +<<<<<<< before updating "@fontsource-variable/archivo": "^5.3.0", "@fontsource-variable/jetbrains-mono": "^5.3.0", +======= +>>>>>>> after updating "@internationalized/date": "^3.12.0", "@lucide/svelte": "^1.23.0", "@sveltejs/adapter-static": "^3.0.10", @@ -39,7 +42,11 @@ "tailwindcss": "^4.3.0", "tw-animate-css": "^1.4.0", "typescript": "^6.0.3", +<<<<<<< before updating "ultracite": "7.12.4", +======= + "ultracite": "7.12.0", +>>>>>>> after updating "vite": "^8.0.16" } } -- 2.54.0 From 5676c3e3bb4b85dbff3942aeb071dd52c844a18d Mon Sep 17 00:00:00 2001 From: renovate Date: Sat, 10 Oct 2026 00:30:51 +0000 Subject: [PATCH 4/6] chore(infra): update template to v0.6.0, conflicts left --- .copier/infra.yml | 3 ++- .gitignore | 3 +++ Makefile | 21 +++++++++++++-------- README.md | 11 +++++++---- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/.copier/infra.yml b/.copier/infra.yml index b6e0e21..cd84462 100644 --- a/.copier/infra.yml +++ b/.copier/infra.yml @@ -1,7 +1,8 @@ -_commit: v0.4.0 +_commit: v0.6.0 _src_path: https://git.kotikot.com/templates/infra.git init_git: true layout: parts +mcp_servers: [] parts: - backend - frontend diff --git a/.gitignore b/.gitignore index 817009b..e9d0980 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ docker-compose.override.yml .DS_Store .idea + +# Local playground +/t/ diff --git a/Makefile b/Makefile index 59a9fb0..07ff450 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,19 @@ PARTS := $(patsubst %/Makefile,%,$(wildcard */Makefile)) -.PHONY: env recreate rebuild restart logs down deploy fmt check build pre-deploy post-deploy +.PHONY: env recreate rebuild restart logs down fmt check build env: - @test -f .env || awk 'FNR == 1 && NR > 1 { print "" } 1' .env.example $(addsuffix /.env.example,$(PARTS)) > .env - @for part in $(PARTS); do test -f $$part/docker-compose.override.yml || cp $$part/docker-compose.override.yml.example $$part/docker-compose.override.yml; done + @fresh=; test -f .env || { awk 'FNR == 1 && NR > 1 { print "" } 1' .env.example $(addsuffix /.env.example,$(PARTS)) > .env; fresh=1; }; \ + for part in $(PARTS); do \ + override=$$part/docker-compose.override.yml; \ + test -f $$override && continue; \ + cp $$override.example $$override; \ + for port in $$(sed -n 's/.*127\.0\.0\.1:\([0-9]*\):.*/\1/p' $$override | sort -u); do \ + random=$$((20000 + $$(od -An -N2 -tu2 /dev/urandom) % 40000)); \ + sed "s/127\.0\.0\.1:$$port:/127.0.0.1:$$random:/" $$override > $$override.tmp && mv $$override.tmp $$override; \ + test -z "$$fresh" || { sed "s|localhost:$$port/|localhost:$$random/|" .env > .env.tmp && mv .env.tmp .env; }; \ + done; \ + done recreate: docker compose up -d --force-recreate @@ -21,9 +30,5 @@ logs: down: docker compose down -deploy: pre-deploy - docker compose up -d - $(MAKE) post-deploy - -fmt check build pre-deploy post-deploy: +fmt check build: @for part in $(PARTS); do $(MAKE) -C $$part $@ || exit 1; done diff --git a/README.md b/README.md index 7075f2a..ae7dbd4 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ sync for files not meant to be in git -Runs in Docker, locally the same way as in production. Each part in `backend/`, `frontend/` brings its own `docker-compose.yml`, included from the root one. `COMPOSE_PROFILES` in `.env` selects the services that run on this machine. `docker-compose.override.yml` in each part holds what differs between machines: published ports and the aliases on the external `caddy` network. - ```sh -make env -make recreate +make env # .env and docker-compose.override.yml from the examples +make recreate # the services in COMPOSE_PROFILES +make check ``` +<<<<<<< before updating `make env` creates `.env` from the examples of every part and copies each `docker-compose.override.yml.example`. `make recreate` starts the selected profiles, `make rebuild` builds the images first, `make logs`, `make restart` and `make down` do what they say. To deploy, `git pull && make deploy`. It runs `make pre-deploy` in every part, which builds images only when their inputs changed and applies migrations, then `docker compose up -d`, then `make post-deploy`, which restarts the services whose mounted code changed. A deploy system with its own `up` step calls the two hooks around it. What was built and started is remembered as `refs/deploy/*` in the clone. @@ -56,3 +56,6 @@ Where no service manager runs, in a container for example, `lodge install` says The server serves the admin from `frontend/build`. History is drawn as a borehole log: every revision is a bed, newest on top, hatched by the machine that wrote it and labelled with the branch and commit of the main repository. Dragging along the column, or the arrow keys, shows the notes as they were at that revision, and every depth, file and view is a link. A file can be compared with its previous version and put back on the surface; a repository can be deleted with its history, which leaves the files on the machines alone. Machines are listed with their hatch and can be revoked. `make -C frontend dev` runs the admin against a server on `localhost:8080`. +======= +Parts: `backend/`, `frontend/`, each with its own Makefile. +>>>>>>> after updating -- 2.54.0 From 417640e75d64005425ac14409a8d8b1463dbc284 Mon Sep 17 00:00:00 2001 From: h Date: Sat, 10 Oct 2026 03:08:21 +0000 Subject: [PATCH 5/6] style(frontend): each-block destructuring as biome 2.5.13 formats it --- .impeccable/.gitignore | 5 +++++ .mcp.json | 8 ++++++++ frontend/src/routes/r/[key]/+page.svelte | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .impeccable/.gitignore create mode 100644 .mcp.json diff --git a/.impeccable/.gitignore b/.impeccable/.gitignore new file mode 100644 index 0000000..440338a --- /dev/null +++ b/.impeccable/.gitignore @@ -0,0 +1,5 @@ +config.local.json +hook.cache.json +hook.pending.json +review/ +decision/ diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..04506c8 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "svelte": { + "type": "http", + "url": "https://mcp.svelte.dev/mcp" + } + } +} diff --git a/frontend/src/routes/r/[key]/+page.svelte b/frontend/src/routes/r/[key]/+page.svelte index a54cc54..b380a3d 100644 --- a/frontend/src/routes/r/[key]/+page.svelte +++ b/frontend/src/routes/r/[key]/+page.svelte @@ -336,7 +336,7 @@ {group === SHARED ? "Shared notes" : `Branch ${spaceName(group)}`}