monkrb 0.15.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fc84b47997c81eb2748a3326ae5adba796ae90eb143d3c537b2f718d41b4a33
4
- data.tar.gz: 7f2072700db0787f7e9ee8bb0c28bf03e09b6194d2ad3c8aedcb89490c179ad8
3
+ metadata.gz: 4dff53a61a5894d736707c11c3fc9f3b8ee8b096e180e34e070fb1cd98c3cf61
4
+ data.tar.gz: 0ca1e853e672436cc717ccad3059f360dcd31cee83d99622a0f0f6aafc78f100
5
5
  SHA512:
6
- metadata.gz: f55f23d4954fec6400c1976a00f203bbd4b17df3ab1c0b0150051fd64a85db5e8e5f43229593a4d23333e56a4051fb39a45e2e9a9ce20dd0f3780101e918427a
7
- data.tar.gz: 94aad3a80714da837196a0c81d1191dd5c9e5490ebb7ed5094b2fb737dcb55615d4f187d13876acd125830ce14bf46ab9f6718654d7ff2b0435bfc108bd214ea
6
+ metadata.gz: b0350a71969e23f530a51a281fe824c8f5448fc27e2e957dea78f0ea3eb1f60a2ee89a31bfe7cb474ae342539b511d3f9f2beed7b52c72b50832f149ec4b5e6b
7
+ data.tar.gz: b59f8860ea7686d5eb284b307db91ad094c58ffdcbf4b35aaec534c8e803c86e75ec9c46f274e861d4dc5f5cd6d17cc5e4e3650489ae634d2e8eeee9229c025c
data/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ All notable changes to this project are documented here. Format is loosely
4
4
  [Keep a Changelog](https://keepachangelog.com/); versions are as released
5
5
  in `lib/monk/version.rb`.
6
6
 
7
+ ## 0.15.1 - 2026-09-24
8
+
9
+ ### Fixed
10
+
11
+ - ERB templates with a non-ASCII string literal inside Ruby code (e.g.
12
+ `<%= ok ? "✓" : "✗" %>`) no longer render as `ASCII-8BIT` and drag the
13
+ whole page — layout and other locals included — down with them. The
14
+ compiled template source is now retagged with the encoding
15
+ `ERB::Compiler#compile` returns instead of dropping it.
16
+
17
+ ### Added
18
+
19
+ - `docs/ai_usage_disclaimer.md`, linked from the README.
20
+ - `docs/deployment-options.md`: analysis of hosting options for Postgres,
21
+ Redis, and SMTP.
22
+
7
23
  ## 0.15.0 - 2026-09-22
8
24
 
9
25
  ### Changed
data/README.md CHANGED
@@ -86,3 +86,5 @@ More (server modes, Docker) in [`docs/development.md`](docs/development.md).
86
86
  ## Status
87
87
 
88
88
  Monk is **pre-1.0** (see `lib/monk/version.rb` and the [changelog](CHANGELOG.md)): the API may still change between minor versions. The core is described in [`docs/history/core-plan.md`](docs/history/core-plan.md). There's no open roadmap issue at the moment; new work is proposed and tracked as it comes up. Done so far, each with its own design doc and plan: persistence, migrations, HTML templating and static assets, auth and sessions, WebSocket with Redis fan-out, log levels, live updates (`Monk::Live`, as of 2026-09-19), deployment support (Dockerfile scaffolding, `docs/guides/deploying.md`), and the RubyGems release as `monkrb` (both 2026-09-22).
89
+
90
+ [Made with Love ❤️, Ruby 💎 and AI 🤖](docs/ai_usage_disclaimer.md)
data/lib/monk/version.rb CHANGED
@@ -5,5 +5,5 @@ module Monk
5
5
  # class of bug .freeze! guards against for routes/error handlers/models,
6
6
  # just on a top-level constant that every worker Ractor reads on boot
7
7
  # (found live under kino: GET /hello 500'd until this was frozen).
8
- VERSION = "0.15.0".freeze
8
+ VERSION = "0.15.1".freeze
9
9
  end
data/lib/monk/views.rb CHANGED
@@ -151,7 +151,18 @@ module Monk
151
151
  compiler.post_cmd = ["Monk::Views::Raw.new(_erbout)"]
152
152
  compiler.put_cmd = "_erbout.<<"
153
153
  compiler.insert_cmd = "_erbout.<< Monk::Views.h"
154
- compiler.compile(source).first
154
+ script, encoding, = compiler.compile(source)
155
+ # ERB::Compiler#compile scans the source as ASCII-8BIT (see its
156
+ # own String#b) and hands that tag straight through to any code
157
+ # inside <%= %>/<% %> -- template TEXT is safe (put_cmd dumps it
158
+ # to ASCII escapes), but a non-ASCII literal written in Ruby code,
159
+ # e.g. <%= ok ? "✓" : "✗" %>, comes back mistagged
160
+ # ASCII-8BIT even though the bytes are valid UTF-8. #compile's
161
+ # second return value is the encoding to retag it with; dropping
162
+ # that (as this used to) is what broke non-ASCII Ruby literals --
163
+ # the mistagged string then downgrades whatever UTF-8 content it's
164
+ # concatenated with (layouts, other locals) to ASCII-8BIT too.
165
+ encoding ? script.dup.force_encoding(encoding) : script
155
166
  end
156
167
 
157
168
  def method_name_for(name)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monkrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Folin