modified: CLAUDE.md
modified: Makefile
new file: languages/awk/Dockerfile
new file: languages/awk/uncloseai.awk
modified: languages/bash/Dockerfile
deleted: languages/bash/examples.sh
new file: languages/bash/uncloseai.sh
new file: languages/c/curl/Dockerfile
new file: languages/c/curl/Makefile
new file: languages/c/curl/index.html
new file: languages/c/curl/uncloseai.c
new file: languages/c/libh2o/Dockerfile
new file: languages/c/libh2o/Makefile
new file: languages/c/libh2o/uncloseai.c
new file: languages/c/nghttp2/Dockerfile
new file: languages/c/nghttp2/Makefile
new file: languages/c/nghttp2/uncloseai.c
new file: languages/clojure/Dockerfile
new file: languages/clojure/deps.edn
new file: languages/clojure/uncloseai.clj
new file: languages/cobol/Dockerfile
new file: languages/cobol/discover.sh
new file: languages/cobol/hermes.sh
new file: languages/cobol/qwen.sh
new file: languages/cobol/tts.sh
new file: languages/cobol/uncloseai.cob
new file: languages/cpp/boost-beast/Dockerfile
new file: languages/cpp/boost-beast/Makefile
new file: languages/cpp/boost-beast/uncloseai.cpp
new file: languages/cpp/cpp-httplib/Dockerfile
new file: languages/cpp/cpp-httplib/Makefile
new file: languages/cpp/cpp-httplib/uncloseai.cpp
new file: languages/cpp/libcurl/Dockerfile
new file: languages/cpp/libcurl/Makefile
new file: languages/cpp/libcurl/uncloseai.cpp
new file: languages/crystal/Dockerfile
new file: languages/crystal/uncloseai.cr
new file: languages/csharp/Dockerfile
new file: languages/csharp/Uncloseai.cs
new file: languages/csharp/csharp.csproj
new file: languages/dart/Dockerfile
new file: languages/dart/bin/uncloseai.dart
new file: languages/dart/pubspec.yaml
new file: languages/deno/Dockerfile
new file: languages/deno/uncloseai.ts
new file: languages/elixir/Dockerfile
new file: languages/elixir/lib/uncloseai.ex
new file: languages/elixir/mix.exs
new file: languages/elixir/run.exs
new file: languages/erlang/Dockerfile
new file: languages/erlang/rebar.config
new file: languages/erlang/src/uncloseai.app.src
new file: languages/erlang/src/uncloseai.erl
new file: languages/fortran/Dockerfile
new file: languages/fortran/uncloseai.f90
new file: languages/fsharp/Dockerfile
new file: languages/fsharp/Uncloseai.fs
new file: languages/fsharp/fsharp.fsproj
new file: languages/go/Dockerfile
new file: languages/go/README.md
new file: languages/go/examples/basic.go
new file: languages/go/go.mod
new file: languages/go/uncloseai.go
new file: languages/go/uncloseai/uncloseai.go
new file: languages/haskell/Dockerfile
new file: languages/haskell/UncloseAI.hs
new file: languages/haskell/uncloseai.cabal
new file: languages/java/Dockerfile
new file: languages/java/UncloseAI.java
new file: languages/javascript/bun/Dockerfile
new file: languages/javascript/bun/uncloseai.ts
new file: languages/javascript/nodejs/Dockerfile
new file: languages/javascript/nodejs/README.md
new file: languages/javascript/nodejs/package.json
new file: languages/javascript/nodejs/uncloseai.js
new file: languages/javascript/typescript/Dockerfile
new file: languages/javascript/typescript/package.json
new file: languages/javascript/typescript/tsconfig.json
new file: languages/javascript/typescript/uncloseai.ts
new file: languages/javascript/vanilla/Dockerfile
new file: languages/javascript/vanilla/uncloseai.html
new file: languages/julia/Dockerfile
new file: languages/julia/Project.toml
new file: languages/julia/src/uncloseai.jl
new file: languages/kotlin/Dockerfile
new file: languages/kotlin/build.gradle.kts
new file: languages/kotlin/src/main/kotlin/UncloseAI.kt
new file: languages/kotlin/uncloseai.kt
new file: languages/lua/Dockerfile
new file: languages/lua/uncloseai.lua
new file: languages/nim/Dockerfile
new file: languages/nim/uncloseai.nim
new file: languages/ocaml/Dockerfile
new file: languages/ocaml/dune
new file: languages/ocaml/dune-project
new file: languages/ocaml/uncloseai.ml
new file: languages/odin/Dockerfile
new file: languages/odin/uncloseai.odin
new file: languages/perl/Dockerfile
new file: languages/perl/uncloseai.pl
new file: languages/php/Dockerfile
new file: languages/php/uncloseai.php
new file: languages/powershell/Dockerfile
new file: languages/powershell/uncloseai.ps1
new file: languages/prolog/Dockerfile
new file: languages/prolog/uncloseai.pl
new file: languages/python/aiohttp/Dockerfile
new file: languages/python/aiohttp/requirements.txt
new file: languages/python/aiohttp/uncloseai.py
modified: languages/python/httpx-async/Dockerfile
deleted: languages/python/httpx-async/examples.py
new file: languages/python/httpx-async/uncloseai.py
modified: languages/python/openai-client/Dockerfile
deleted: languages/python/openai-client/examples.py
new file: languages/python/openai-client/uncloseai.py
modified: languages/python/requests/Dockerfile
deleted: languages/python/requests/examples.py
new file: languages/python/requests/uncloseai.py
new file: languages/r/Dockerfile
new file: languages/r/uncloseai.R
new file: languages/ruby/Dockerfile
new file: languages/ruby/README.md
new file: languages/ruby/uncloseai.rb
new file: languages/rust/Cargo.toml
new file: languages/rust/Dockerfile
new file: languages/rust/README.md
new file: languages/rust/examples/basic.rs
new file: languages/rust/src/lib.rs
new file: languages/rust/src/uncloseai.rs
new file: languages/scala/Dockerfile
new file: languages/scala/build.sbt
new file: languages/scala/project/build.properties
new file: languages/scala/project/plugins.sbt
new file: languages/scala/src/main/scala/UncloseAI.scala
new file: languages/tcl/Dockerfile
new file: languages/tcl/uncloseai.tcl
new file: languages/v/Dockerfile
new file: languages/v/uncloseai.v
new file: languages/v/v.mod
new file: languages/vbnet/Dockerfile
new file: languages/vbnet/UncloseAI.vb
new file: languages/vbnet/UncloseAI.vbproj
modified: languages/zig/Dockerfile
modified: languages/zig/build.zig
deleted: languages/zig/src/main.zig
new file: languages/zig/src/uncloseai.zig
Changed code block max-width to use min() with both pixel and viewport units:
- Mobile: min(400px, 85vw)
- Desktop: min(850px, 70vw)
This ensures code blocks scale appropriately at all resolutions and never
cause horizontal overflow when resizing the browser window.
Replaced fixed pixel max-width values with 100% for pre and code elements.
Added box-sizing border-box to ensure padding is included in width calculation.
Code blocks now adapt to message bubble size while still scrolling when content is too wide.
Replaced justify-self with margin-left/right auto and width fit-content
to prevent messages from expanding the grid column and causing horizontal
scrollbars. User messages now align right and AI messages align left
without affecting each other's positioning.
Added max-width constraints to code blocks in AI messages:
- Mobile (< 768px): 340px max-width
- Desktop (≥ 768px): 720px max-width
Code blocks now get their own horizontal scrollbar when content is too wide,
preventing the modal from getting horizontal scrollbars. All code formatting
and whitespace is preserved.
- new groq-fetch.js provides groqAwareStreamingFetch for all API calls
- automatically detects Groq endpoints and handles TPM rate limits
- works for chat, translation, TTS - any request to Groq
- waits 60 seconds for TPM window reset, retries up to 3 times
- other platforms (Hermes, OpenAI, etc.) unaffected
- cleaner abstraction replaces inline retry logic in chat.js