diff --git a/packages/web/src/pages/RecipeDetail.tsx b/packages/web/src/pages/RecipeDetail.tsx index 34e3eb8..38d0b4a 100644 --- a/packages/web/src/pages/RecipeDetail.tsx +++ b/packages/web/src/pages/RecipeDetail.tsx @@ -164,6 +164,8 @@ function RecipeDetail() { const response = await recipesApi.getById(id); if (response.data) { setRecipe(response.data); + // Restore focus after state update + setTimeout(() => tagInputRef.current?.focus(), 0); } } catch (err) { console.error('Failed to add tag:', err); @@ -172,6 +174,8 @@ function RecipeDetail() { await loadRecipe(id); } finally { setSavingTags(false); + // Ensure focus is maintained + setTimeout(() => tagInputRef.current?.focus(), 0); } }; diff --git a/traefik-local/dynamic-dev.yml b/traefik-local/dynamic-dev.yml new file mode 100644 index 0000000..b2c2a83 --- /dev/null +++ b/traefik-local/dynamic-dev.yml @@ -0,0 +1,14 @@ +http: + routers: + basil-dev: + rule: "Host(`localhost`) || Host(`127.0.0.1`)" + entryPoints: + - http + service: basil-dev-service + priority: 1000 # Higher priority than Docker labels (default is 0) + + services: + basil-dev-service: + loadBalancer: + servers: + - url: "http://basil-web:80" diff --git a/traefik-local/traefik.yml b/traefik-local/traefik.yml new file mode 100644 index 0000000..2bc85a9 --- /dev/null +++ b/traefik-local/traefik.yml @@ -0,0 +1,20 @@ +# Static Traefik configuration for local development +entryPoints: + http: + address: ":80" + +providers: + docker: + endpoint: "unix:///var/run/docker.sock" + exposedByDefault: false + network: traefik + file: + filename: /dynamic-dev.yml + watch: true + +api: + insecure: true + dashboard: true + +log: + level: INFO