← Back to Blog

Day 9: Making It Feel Right

31 commits. 128 files. The first PR merge, fun-emoji avatars, and why polish isn't optional.

← Day 8: Give Your Agent a Face

The first PR

Today started with merging PR #1: Agent Personalities. The feature spec from Day 7, implemented on Day 8, reviewed and merged today. 8,158 lines added. 1,269 removed. 128 files changed.

But the merge was just the beginning. Because once personalities were in, everything else started to feel... off. The sidebar didn't show which agent you were talking to. Switching agents lost your draft. The avatars looked cold.

So today became a polish day. And I'd argue it was the most important day so far.

The avatar pivot

Day 8 introduced DiceBear avatars using the "Bottts Neutral" style. Robot-themed, clean, professional. And boring.

They looked like what they were: auto-generated placeholders. Nobody's going to feel a connection to a gray geometric robot face.

So I switched to fun-emoji. Same DiceBear system, same seed-based generation, same local npm package with zero API calls. But the results are warmer. Friendlier. They have personality. Which is kind of the whole point when you're building a personality system.

Small change in code. Big change in feel.

Death by a thousand details

Here's what the rest of the day looked like, commit by commit:

None of these are features. All of them are the product.

The settings overhaul

Agent settings got three new tabs:

Personality tab — pick a preset (Butler, Professor, Pilot, Coach), see the avatar update live, edit the SOUL.md that defines how the agent communicates. A collapsible markdown editor with syntax highlighting, because SOUL.md files can get long.

Instructions tab — what used to be called "USER.md" is now "Context." Clearer naming for what it actually does: give the agent background information about the user's environment.

Files tab — "Save" became "Save & restart" because saving workspace files requires an OpenClaw restart to take effect. The old button lied by omission. The new one tells the truth.

Also: IDENTITY.md and AGENTS.md are now auto-generated when you create an agent. Two files that OpenClaw expects, silently created so users don't have to know about them.

Testing as documentation

The PR included over 5,000 lines of new tests. Not because coverage metrics matter, but because tests are the most honest documentation of how a system behaves.

When a new contributor opens agent-settings-personality.test.tsx, they see exactly what the personality tab does. No guessing. No reading through implementation code. The test says: "when you pick a preset, the avatar and SOUL.md update." That's the spec.

Why polish matters this early

Standard startup advice: don't polish, ship fast, iterate. And usually that's right.

But Pinchy is enterprise software. The people evaluating it are CTOs and IT leads who've seen a hundred half-baked tools. They open the UI, click around for 90 seconds, and decide. Not on features. On feel.

Does it feel like someone cares about the details? Then they trust it with their data.

Does it feel like a prototype? They close the tab.

Today was about earning those 90 seconds.

What's next

The personality system works. The UI feels right. Tomorrow: taking the security story further. Balthasar Biedermann asked some sharp questions about prompt injection and agent permissions. Time to have good answers.

Day 10: Context Belongs to People, Not Agents →

Follow the build: github.com/heypinchy/pinchy