1338 Commits

Author SHA1 Message Date
m
4139ed1225 feat: Gerichtsverzeichnis — court directory for patent practice
41 courts: UPC Court of Appeal, Central Division sections (Paris/Munich/Milan),
13 Local Divisions, Nordic-Baltic Regional Division, 10 German courts
(LG, OLG, BGH, BPatG, DPMA), EPO (Munich HQ, Haar boards, Rijswijk), and
9 national courts (NL, UK, FR, IT). Addresses verified against official
sources; uncertain details left empty rather than guessed.

New page at /gerichte with search, dual filter pills (type + country),
expandable cards, print-friendly CSS, Supabase feedback (gerichte_feedback).

Migration at docs/migrations/002_gerichte_feedback.sql.
2026-04-16 10:51:02 +02:00
m
40ff17657f feat: Checklisten — interactive filing checklists with localStorage state
Six bilingual patent-workflow checklists (UPC Statement of Claim, Defence,
Confidentiality Application, Representative Registration; BPatG Nullity;
EPO Opposition) with grouped items, rule references, and tips. Index page
lists cards with regime filter and per-checklist progress; detail page
persists check state in localStorage (patholo:checklist:<slug>), shows a
live progress bar, supports reset and print, and submits feedback via
Supabase checklisten_feedback.
2026-04-16 10:48:42 +02:00
m
69d1402c0a feat: Gebührentabellen — interactive fee schedule reference with tabbed view 2026-04-14 22:47:04 +02:00
m
2a368a4b61 feat: Gebührentabellen — interactive fee schedule reference
Browsable, interactive fee tables for GKG, RVG, UPC, EPA, and PatKostG:

- New page at /tools/gebuehrentabellen with tabbed view
- API endpoint GET /api/tools/gebuehrentabellen returns all fee data
- Lookup endpoint GET /api/tools/gebuehrentabellen/lookup?streitwert=X
- GKG/RVG tables with version pills (2005, 2013, 2021, 2025/Aktuell)
- Streitwert input for quick lookup — highlights matching row
- UPC fee schedule (pre-2026 vs 2026) with fixed fees, value-based
  fees, recoverable costs ceiling, and SME reduction display
- EPA fees (opposition, appeal, grant, examination, search, filing)
- PatKostG tab with BPatG/BGH court fee factors, DPMA fees, and
  patent annual renewal fees (years 3-20)
- Common multipliers reference table (court fee factors, RA/PA VG/TG)
- Feedback modal with Supabase storage (gebuehrentabellen_feedback)
- Full DE/EN i18n, responsive layout, print-friendly
- Added to sidebar nav, landing page tools section, build pipeline
2026-04-14 22:44:55 +02:00
m
bfca3810c5 feat: Kostenrechner — PDF export, URL sharing, scenario comparison 2026-04-14 22:42:09 +02:00
m
25e1f68d9e feat: Kostenrechner enhancements — PDF export, URL sharing, scenario comparison
PDF export: Branded print layout with patHoLo header, calculation metadata
(streitwert, date, VAT, selected instances), and disclaimer footer. Uses
@media print CSS for clean A4 output.

URL sharing: Encodes calculator state (streitwert, VAT rate, enabled instances
with all settings) in URL query params. Parses on load to restore state.
"Copy Link" button writes URL to clipboard and updates browser address bar.

Scenario comparison: "Compare" button snapshots current calculation as
Scenario A, shows side-by-side results panel. User modifies inputs for
Scenario B — results auto-update. Diff card shows cost delta with per-category
breakdown (court fees, attorney fees, etc.) and percentage change. Green/red
color coding for savings vs. cost increase.

All labels i18n'd in DE and EN.
2026-04-14 22:37:23 +02:00
m
4adb166082 fix: remove worktrees from git, add to gitignore 2026-04-14 20:11:07 +02:00
m
c8ad74ff17 feat: Patentglossar — searchable DE/EN glossary with term suggestions 2026-04-14 20:11:00 +02:00
m
e1ea8e87ca feat: Link Hub — curated external links with suggest/feedback 2026-04-14 20:09:52 +02:00
m
f66a2ed906 feat: Link Hub — curated external links page with collaborative features
New /links page with 22 curated links across 5 categories:
- Gerichte & Ämter (UPC CMS, EPO, DPMA, BPatG, EUIPO)
- Recherche (Espacenet, DPMAregister, DEPATISnet, Google Patents, WIPO)
- UPC (Rules of Procedure, Fees, Practice Directions)
- Gesetze (PatG, EPÜ, UPCA, GKG, RVG, ZPO via dejure.org)
- HL Intern (placeholder links)

Features:
- Client-side category filter tabs
- "Link vorschlagen" button with modal form (POST /api/links/suggest)
- Per-card feedback icon with modal (POST /api/links/feedback)
- Pending suggestion count badge
- Full DE/EN i18n support
- Static link data served via GET /api/links (Go map)
- Supabase PostgREST integration for suggestions/feedback storage
- Sidebar nav entry with chain-link icon

Supabase migration in docs/migrations/001_link_suggestions.sql
(needs to be applied on ydb.youpc.org before collaborative features work).
2026-04-14 20:07:43 +02:00
m
0960235bb8 feat: searchable DE/EN patent glossary with term suggestions
- New /glossar page with 73 bilingual patent law terms across 5 categories
  (Litigation, Prosecution, UPC, EPA, General)
- Client-side instant search filtering both DE and EN columns
- Category filter pills for quick narrowing
- Suggest-a-term button opens modal form for new term submissions
- Per-term feedback icon for correction suggestions
- Suggestions stored in Supabase (glossar_suggestions table with RLS)
- Go API: GET /api/glossar (terms JSON), POST /api/glossar/suggest
- Full DE/EN i18n support, responsive layout, print-friendly
- Added to sidebar nav, landing page tools section, and build pipeline
2026-04-14 20:06:51 +02:00
m
a5fdaff909 docs: feature roadmap — 17 features across 4 phases 2026-04-14 19:55:37 +02:00
m
83cc20e7ba feat: patholo.de feature roadmap — 17 features across 4 phases
Comprehensive feature roadmap for patholo.de based on analysis of:
- Current patholo codebase (tools, auth, downloads, i18n)
- KanzlAI project (case management system — complementary, not competing)
- mWorkRepo (UPC knowledge base, templates, model documents, training)

4 phases prioritized by impact/effort:
- Phase 1: Link Hub, More Downloads, Gebührentabellen, Kostenrechner enhancements, Glossar
- Phase 2: Verfahrensleitfäden, Gerichtsverzeichnis, UPC Rechtsprechung, Checklisten
- Phase 3: Global Search, Vorlagenbibliothek, Schulungsbereich, Benachrichtigungen
- Phase 4: KI-Recherche, Fristenkalender, Collaborative Annotations, Mandantenkosten-Report

Key insight: patholo is knowledge platform + toolkit, not case management.
2026-04-14 19:55:10 +02:00
m
fd25998f70 feat: dedicated downloads page 2026-04-14 19:33:29 +02:00
m
cb0e61f0bf feat: dedicated downloads page with card grid layout
New /downloads route behind auth with Sidebar, i18n DE/EN,
and download card for HL Patents Style.dotm. Structured so
adding more files is a one-liner in the files array.
2026-04-14 19:32:07 +02:00
m
8419dec467 fix: add Hamburg, Paris, Milan to Standorte 2026-04-14 19:30:44 +02:00
m
d5aae0aabb feat: sidebar navigation — collapsible icon rail with hover expand and mobile overlay 2026-04-14 19:27:55 +02:00
m
0f1976b146 feat: replace header with sidebar navigation on authenticated pages
Sidebar layout with collapsible icon rail (64px) that expands to 240px
on hover (150ms delay) or pin (persisted in localStorage). Mobile
(<1024px) uses hamburger FAB with overlay. Active page highlighted.
Login page retains the original Header component.

New: Sidebar.tsx, sidebar.ts
Changed: index/kostenrechner/fristenrechner pages, global.css, i18n
2026-04-14 19:15:26 +02:00
m
4a208b7785 feat: file proxy — serve HL Patents Style.dotm from Gitea with SHA cache 2026-04-14 19:02:38 +02:00
m
77061b2708 feat: file proxy — serve HL Patents Style.dotm from Gitea with cache
Add GET /files/{filename} route (behind auth) that proxies files from
Gitea raw URLs with in-memory caching. Uses SHA-based cache invalidation:
checks Gitea commit API every 5 min, only re-downloads when file changes.

- internal/handlers/files.go: proxy handler with SHA-based cache
- POST /api/files/refresh: cache-bust endpoint
- GITEA_TOKEN env var for private repo access
- Download card on landing page with i18n DE/EN
2026-04-14 18:32:12 +02:00
m
9b868fedf1 feat: i18n DE/EN toggle + patHoLo branding + flexsiebels.de footer link
Merge knuth's i18n implementation with patHoLo branding rename
and flexsiebels.de footer credit.
2026-04-14 18:22:14 +02:00
m
5934b9eba7 feat: add flexsiebels.de link to footer 2026-04-14 18:21:42 +02:00
m
52c8cc3020 fix: rename branding to patHoLo (Patent + Hogan Lovells) 2026-04-14 18:21:25 +02:00
m
8b9644fdcb feat: implement i18n — DE/EN language toggle across all pages
Client-side i18n system with localStorage persistence:
- Shared i18n module (frontend/src/client/i18n.ts) with 120+ translation keys
- Language toggle buttons in header on all pages (including login)
- data-i18n attributes on all static translatable elements
- t() function for dynamically rendered content (calculator results, timeline)
- onLangChange callbacks re-render dynamic content on language switch
- Date formatting adapts locale (de-DE / en-GB) per language
- Replaces old dual-display pattern (card-en spans) with single-language switching
2026-04-14 18:21:21 +02:00
m
774f678f27 feat: Prozesskostenrechner + Fristenrechner — patent calculators for HL 2026-04-14 17:31:18 +02:00
m
d94f8e7e25 feat: implement Fristenrechner (patent deadline calculator)
Go deadline engine (internal/calc/):
- 9 proceeding types: UPC (INF/REV/PI/APP), DE (INF/NULL), EPA (OPP/APP/GRANT)
- ~50 deadline rules with durations, parties, rule references
- German federal holiday computation (Easter via Anonymous Gregorian)
- Weekend/holiday adjustment with transparency (original vs adjusted dates)
- 8 unit tests covering holidays, adjustment, and full deadline chains

Frontend (Bun/TSX):
- 3-step wizard: select proceeding → enter date → view timeline
- Visual timeline with party badges, rule references, adjustment warnings
- Print-friendly layout

API: POST /api/tools/fristenrechner (protected, JSON)
     GET /api/tools/proceeding-types (protected, JSON)
Route: GET /tools/fristenrechner (protected page)

Home page: Added "Werkzeuge" section with cards linking to both tools
2026-04-14 17:31:04 +02:00
m
bd621664cf feat: implement Prozesskostenrechner (patent litigation cost calculator)
Go calculation engine (internal/calc/):
- GKG/RVG step-based fee computation with 4 schedule versions (2005-2025)
- DE court instances: LG, OLG, BGH NZB/Rev, BPatG, BGH Nullity
- UPC fees: fixed + value-based with SME reduction (pre-2026 and 2026)
- EPA proceedings: Opposition and Appeal fixed fees
- Attorney + patent attorney fee breakdown with Erhöhung, MwSt
- 11 unit tests covering all calculation paths

Frontend (Bun/TSX):
- SSR page shell with two-column layout (inputs + sticky results)
- Streitwert slider + presets, VAT selector, instance cards with details
- Client JS: form state management, API calls, result rendering
- Print-friendly layout

API: POST /api/tools/kostenrechner (protected, JSON)
Route: GET /tools/kostenrechner (protected page)
Navigation: Added tool links to header
2026-04-14 17:25:38 +02:00
m
2919e1afc4 feat: design document for Prozesskostenrechner + Fristenrechner
Comprehensive design for two interactive tools:
- Prozesskostenrechner: DE (LG/OLG/BGH/BPatG), UPC, and EPA cost estimates
- Fristenrechner: Patent deadline calculator with holiday adjustment

Covers UI layout, data models, API contracts, calculation logic,
fee tables (GKG/RVG/PatKostG/UPC/EPA), deadline rules for all
proceeding types, and phased implementation plan.

Key differentiator: EPA proceedings coverage (not in KanzlAI).
2026-04-14 17:12:16 +02:00
m
3a157594c2 feat: rewrite frontend from Go templates to Bun + TSX 2026-04-14 16:51:11 +02:00
m
40a9c927fb feat: rewrite frontend from Go templates to Bun + TSX
Replace Go HTML template rendering with a Bun + TSX build-time static
site generator. Go backend becomes API-only for auth.

Frontend:
- Custom JSX-to-HTML-string factory (zero dependencies)
- TSX components for Header, Footer, index page, login page
- Client-side login.ts handles tab switching and fetch()-based auth
- Bun bundler compiles client JS, build.ts renders pages to dist/

Backend:
- Auth handlers return JSON (POST /api/login, POST /api/register)
- Login page served as static HTML from dist/
- Static assets served from /assets/ (public)
- Auth middleware unchanged (cookie check, redirect to /login)
- Removed template parsing and renderPage

Dockerfile:
- 3-stage build: Bun frontend -> Go backend -> alpine runtime
- Frontend dist copied to /app/dist in final image

Removed: templates/, static/css/ (replaced by frontend/)
2026-04-14 16:50:27 +02:00
m
b75d91fbd7 feat: Supabase password auth with @hoganlovells.com restriction + lime green branding 2026-04-14 16:36:43 +02:00
m
21bf56dc20 feat: add Supabase password auth with @hoganlovells.com restriction
Go server authenticates against Supabase GoTrue (youpc instance) using
email+password. Login page with login/register tabs, domain restricted
to @hoganlovells.com. Auth middleware protects all routes, refreshes
expired tokens via refresh_token cookie. Lime green branding.

- internal/auth: Supabase client (sign in, sign up, refresh, sign out),
  JWT expiry decode, auth middleware, cookie management
- internal/handlers: login/register/logout handlers, per-page template
  parsing to avoid content block collisions
- templates/login.html: tabbed login/register form
- 30-day HTTP-only session cookies with SameSite=Lax
- SUPABASE_URL and SUPABASE_ANON_KEY env vars in docker-compose
2026-04-14 16:34:17 +02:00
m
eaab0bc908 fix: use expose instead of ports for Traefik routing
Port 8080 already allocated on mlake host. Traefik routes via
docker network labels, no host port binding needed.
2026-04-14 16:11:25 +02:00
m
4e1d0cbb89 feat: Docker Compose app — Go server with landing page for patholo.de 2026-04-14 16:09:36 +02:00
m
d2a9164e36 fix: add missing cmd/server/main.go and fix .gitignore
The .gitignore pattern "server" was matching cmd/server/ directory,
preventing main.go from being tracked. Anchored binary patterns to
repo root with leading slash.
2026-04-14 16:04:30 +02:00
m
483afd8154 feat: Docker Compose app with Go server and landing page
Go web server (net/http, port 8080) serving HTML templates with a
professional landing page for patholo.de. Multi-stage Dockerfile
and docker-compose.yml ready for Dokploy deployment.

- cmd/server/main.go: HTTP server entry point
- internal/handlers: route registration and template rendering
- templates/: base layout + bilingual landing page (DE/EN)
- static/css/: clean, responsive CSS with HL navy branding
- Dockerfile: multi-stage build (golang:1.23-alpine -> alpine:3.21)
- docker-compose.yml: single web service on port 8080
2026-04-14 16:02:18 +02:00
m
05139a8ea2 feat: initial project setup — mai config, CLAUDE.md
patholo.de — patent knowledge sharing platform for HL colleagues.
Domain purchased, DNS configured, project registered.
2026-04-14 15:57:38 +02:00
mAi
c54fcea3f3 Initial commit 2026-04-14 13:56:06 +00:00