Merge branch 'main' of git.arirex.me:iris/ai-app
This commit is contained in:
commit
4a9c547293
2 files changed
+31
-20
No files matched your search
@@ -5,19 +5,6 @@ one in place when it turns out to need a decision.
|
||||
|
||||
## App — transcript
|
||||
|
||||
- [ ] Text inside code blocks does not highlight when selected. **Measured, and
|
||||
it does** — the selection is drawn, but over the near-black surface a code
|
||||
block and a tool's output sit on, Material's default 40%-alpha tint
|
||||
composites to a barely-there smudge, much weaker than the same selection
|
||||
over a reply. The app now states its own selection colours
|
||||
(`AiAppSelectionColors`), which took the fill from #5B4C73 to #776394 on
|
||||
that surface. Worth confirming this was the complaint rather than a
|
||||
selection that draws *nothing* on the phone.
|
||||
- [ ] Text inside an opened peer message or memory note cannot be selected at
|
||||
all — the heading of the same card can, and so can a tool call's output,
|
||||
so it is the markdown text specifically. Pre-existing (measured against
|
||||
the build before this session's changes, by stashing them). It
|
||||
contradicts AGENTS.md's "all transcript text is selectable".
|
||||
- [ ] Messages received from other agents are inconsistent — sometimes they
|
||||
appear, sometimes they don't. **Needs a rig.** Read the code rather than
|
||||
measured: a live Claude session only learns of a peer message from the
|
||||
@@ -32,10 +19,17 @@ one in place when it turns out to need a decision.
|
||||
## Session settings
|
||||
|
||||
- [ ] Autocompact belongs in session settings; empty disables it, which is the
|
||||
default. **Needs a decision before building** — nothing called autocompact
|
||||
exists yet on either side. `PLAN.md` has it only as a planned pi-driver
|
||||
feature (`set_auto_compaction`), and Claude Code runs its own. So this is
|
||||
a new server feature, and the open questions are what the empty-or-not
|
||||
value *is* (a token count? a percentage of the context window?) and which
|
||||
drivers it applies to.
|
||||
default. Iris chose "hand it to the driver" — only where a driver has
|
||||
auto-compaction of its own. **That option was offered on a false premise
|
||||
and is not buildable yet.** It named pi's `set_auto_compaction`, but pi
|
||||
was never built as a driver here: `session/llama.rs` talks to
|
||||
`llama-server`'s OpenAI-compatible endpoint directly, and its `compact()`
|
||||
refuses outright. Claude Code's auto-compaction is the CLI's own and
|
||||
nothing in the stream-json control protocol this app uses configures it.
|
||||
So the setting would be stored, passed to a driver, refused by every one
|
||||
of them, and the field would never appear on any session. What is needed
|
||||
first is either a driver that can take it, or a different rule — the
|
||||
server watching `contextTokens` and running `/compact` itself is the one
|
||||
that would work today, for Claude sessions, and it is the option that was
|
||||
not chosen.
|
||||
|
||||
@@ -368,7 +368,15 @@ private fun MarkdownRoot(
|
||||
// exactly a card's own fill, so a fenced block inside a tool call had no
|
||||
// background at all and one in a reply read as a step *up* out of the page.
|
||||
codeBackground = rawSurface,
|
||||
inlineCodeBackground = rawSurface,
|
||||
// The same colour, but let through. An inline span's background is part of the
|
||||
// *text's* own drawing and the selection rectangle is drawn underneath it, so an
|
||||
// opaque chip hides the selection completely: selecting a sentence highlighted
|
||||
// every word of it except the ones in backticks, which is a difference in
|
||||
// appearance the reader has no way to account for. Translucent, the selection
|
||||
// shows through and the chip still reads as one step down from the page -- there
|
||||
// is no way to draw it over the selection instead, since the order is the text
|
||||
// node's.
|
||||
inlineCodeBackground = rawSurface.copy(alpha = INLINE_CODE_ALPHA),
|
||||
// The same tint a code block gets, rather than the renderer's 2%-alpha default:
|
||||
// two adjacent tints that differ by a fiftieth read as one flat block on a phone,
|
||||
// so the table would have had a border-less grid and nothing saying where it began.
|
||||
@@ -711,3 +719,12 @@ class ParsedReplies {
|
||||
ready.clear()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* How much of the inline-code chip's fill is its own colour, the rest being whatever it sits on.
|
||||
*
|
||||
* High enough that the chip is still a clear step down from the page, low enough that a selection
|
||||
* under it changes what the chip looks like. Both halves are the point: at 1.0 the chip was the
|
||||
* only part of a selected sentence that did not look selected.
|
||||
*/
|
||||
private const val INLINE_CODE_ALPHA = 0.6f
|
||||
Reference in new issue
Block a user