32 Commits

Author SHA1 Message Date
Nirodan 20cdbd69eb Fix Notes feature: correct auto-save logic and missing CSS
Functional fixes:
- Add isDirtyRef to distinguish user edits from note selection; auto-save now
  only fires after the user actually modifies content, not on every click
- Add selected and isNew to auto-save effect deps so the closure is never stale
  when switching between notes (previously could save to the wrong note)
- Double-check isDirtyRef inside the debounce callback to handle rapid note
  switches within the 1-second window
- Reset isDirtyRef to false after every successful save (manual and auto)

CSS fixes:
- Add button.ghost and button.ghost.danger styles to buttons.css; delete button
  was invisible/identical to the save button because .ghost was never defined
- Add select element styling to base.css to match input/textarea theming;
  language picker was unstyled browser-default in both dark and light mode
- Add .error class (red text) to base.css; error messages had no colour
- Add .notes-layout grid class with responsive media query (stacks below 680px);
  remove inline gridTemplateColumns that overflowed on small screens

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:19:40 +02:00
Nirodan 75062dbf5e Add 8 new tools: Hash Verifier, URL Tool, String Utils, Cron Explainer, IP Calc, Lorem Ipsum, CSV Viewer, Notes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 09:10:25 +02:00
Nirodan 34c82f3dca Add 5 new tools: QR-Code, Markdown, Color Converter, JSON Formatter, Regex Tester
- backend/tools/qrcode_gen.py: POST /api/qrcode/generate, returns base64 PNG (qrcode[pil])
- backend/tools/markdown_tool.py: POST /api/markdown/render, extensions: tables/fenced_code/nl2br
- backend/tools/colorconverter.py: POST /api/color/convert, HEX/RGB/HSL via colorsys (no deps)
- backend/tools/jsonformatter.py: POST /api/json/format, returns formatted JSON with line/col errors
- backend/tools/regextester.py: POST /api/regex/test, flags i/m/s, returns matches with positions
- QrCodeTool.jsx: generate + download PNG button
- MarkdownTool.jsx: split editor/preview, debounce 500ms, white preview bg
- ColorConverterTool.jsx: color swatch preview, per-format copy buttons
- JsonFormatterTool.jsx: indent toggle 2/4, pre result box with copy
- RegexTesterTool.jsx: debounce 400ms, yellow match highlighting, flag checkboxes
- All blueprints registered in app.py; qrcode[pil] + markdown added to requirements.txt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:19:34 +02:00
Nirodan 45e1934bee Fix App.jsx: remove dead comment, make auth state reactive
- Remove leftover commented-out AdminDashboard import
- Replace static localStorage reads with useState + useEffect
  so isLoggedIn/role update automatically on storage events
  (e.g. token deleted in another tab)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:02:15 +02:00
Nirodan 955bc9a7bf Fix 8 bugs found in code review
- auth/login.py: guard against missing JSON body (get_json silent=True, empty-string check)
- app.py: replace infinite redirect with 404 for unknown /api/* and /setup/* paths
- tools/jwtdecoder.py: add algorithms list to jwt.decode() for PyJWT 2.x compatibility
- util/setup_routes.py: call reset_pool() after save_config() so pool re-initialises with new DB credentials
- util/logger.py: set ERROR level on error.log handler so it no longer receives INFO/WARNING messages
- LoginForm.jsx: remove dead navigate() call that was immediately overridden by window.location.href
- main.jsx: remove base.css, dark.css, light.css that were already imported in App.jsx (duplicate imports)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 17:38:51 +02:00
Nirodan 7f9c5c874a Add 6 new tools: Hasher, Base64, JWT Decoder, Password Gen, Timestamp, Text Diff
- backend/tools/hasher.py: POST /api/hash/sha256 and /api/hash/bcrypt (bcrypt added to requirements)
- backend/tools/base64tool.py: POST /api/base64/encode and /api/base64/decode
- backend/tools/jwtdecoder.py: POST /api/jwt/decode (signature verification disabled)
- backend/tools/passwordgen.py: POST /api/password/generate with charset and length options
- backend/tools/timestamp.py: POST /api/timestamp/convert (unix<->date, ISO 8601 + German format)
- backend/tools/textdiff.py: POST /api/text/diff returning structured added/removed/unchanged lines
- All blueprints registered in app.py and tools/__init__.py
- React components with copy button, dark/light mode support via CSS variables
- ToolOverview rebuilt as card grid; App.jsx routes added for all tools

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 14:28:18 +02:00
Nirodan 80ec5eca7b Security, code quality and frontend improvements
- Move SECRET_KEY out of docker-compose into .env (env_file), add .env.example
- Add flask-limiter with 10 req/min on login route; introduce util/limiter.py
- Replace direct mysql.connector.connect() calls with MySQLConnectionPool via util/db_pool.py
- Fix deprecated datetime.utcnow() -> datetime.now(timezone.utc) in auth/login.py
- Remove dead /api/scripts 410 route from admin.py
- Add MD5 security warning in Md5Tool.jsx
- Add ErrorBoundary component and wrap App.jsx
- Expand README with setup guide, screenshot and project structure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 13:52:53 +02:00
Nirodan a3c3967903 Reduce admin input padding to avoid overflow 2026-01-22 15:34:33 +01:00
Nirodan 206102db36 Let admin cards show full rounded inputs 2026-01-22 15:28:47 +01:00
Nirodan baa8b17ab2 Force admin forms single-column to stop overflow 2026-01-22 15:25:51 +01:00
Nirodan c24a0df4b2 Prevent input overflow in admin forms 2026-01-22 15:22:45 +01:00
Nirodan edc5fa7fd0 Stack admin forms to prevent overflow 2026-01-22 13:05:47 +01:00
Nirodan 7af1ca32ed Tighten admin form layout and responsive tables 2026-01-22 12:36:43 +01:00
Nirodan 450e184cf3 Clean admin layout, drop scripts, keep admin out of tools list 2026-01-22 12:31:19 +01:00
Nirodan e3b34bfc47 Extend admin for websites/scripts and surface links 2026-01-22 12:26:21 +01:00
Nirodan 0699158486 Add admin dashboard and tool icons 2026-01-22 12:18:27 +01:00
Nirodan a944f7dd5d Restyle UI with modern glassy theme 2026-01-22 12:12:47 +01:00
Nirodan 9d7e0023f4 Fix auth redirects and add rebuild startup scripts 2026-01-22 12:02:37 +01:00
Nirodan c0aaa86546 Fix config path, env secrets, and align API calls 2026-01-22 07:56:27 +01:00
Nirodan cf838ee9b1 Logout Button Fix immer noch zu weit rechts gewesen 2025-07-07 11:50:21 +02:00
Nirodan 96b5fc1a81 Bug Fixing, buttons nicht sichtbar im hellen modus, Logout zu weit rechts. Von hell auf dunkel standard 2025-07-07 11:39:47 +02:00
Nirodan 8d7b254306 NavBar v.0.1 etnfernen von altem LogoutButton in ToolOverview 2025-07-07 11:19:00 +02:00
Nirodan d927679667 NavBar v.0.0.1 2025-07-07 10:57:18 +02:00
Nirodan 537df29737 Hinzufügen des Styles, verschieben und löschen der alten CSS Dateien. Umschalten auf Modulares Design 2025-07-07 10:23:29 +02:00
Nirodan bbb1a70b9c MD5 hasher Bug Fix + Logger 2025-06-17 11:00:26 +02:00
Nirodan b6399f8b52 Docker compose. dev.yml erstellt 2025-06-17 10:43:22 +02:00
Nirodan 84684d0a08 Tokken validierung 2025-06-16 11:13:00 +02:00
Nirodan 77b95762f7 Token löschen für vollständigen Logout 2025-06-16 10:28:51 +02:00
Nirodan d22a661b99 Gitignore deportiert 2025-06-14 19:03:57 +02:00
Nirodan 02ea855483 Entferne versehentlich getrackte Dateien, die nun durch .gitignore ignoriert werden 2025-06-14 19:03:36 +02:00
Nirodan 86308925ea Login mit Admin Admin login bis zum Dashboard
erfolgreich
2025-06-14 18:57:43 +02:00
Nirodan 5424351cea umbennen von frontend zu frontend 2025-06-14 14:01:20 +02:00