Releases: alle80/griglia
Releases · alle80/griglia
Release list
v0.95.0
Added
- The three session pickers say what they are, and name the default they fall back on (task 659). Agent,
Model and Effort now carry a visible label in the list toolbar, under the task title and among the
commands of the modal. Where nothing was chosen the selector reads Default (opus) and the badge shows
(opus)in brackets, instead of a bare CLI default: brackets mean «nobody chose it here, and this is what
the session will run on».griglia:checkprints it the same way ({agent: claude, model: (opus)}). - Config
agent_default_model/agent_default_effort(GRIGLIA_AGENT_DEFAULT_MODEL,
GRIGLIA_AGENT_DEFAULT_EFFORT, same shape asagent_models): tell the board which value the agent CLI —
or the worker, throughGRIGLIA_WORKER_MODEL/GRIGLIA_WORKER_EFFORT— already starts with, and it names it
everywhere. A caption only: the board never sends it, so each worker keeps its own default. A value the
agent no longer offers is ignored.
Full changelog: v0.94.0...v0.95.0
v0.94.0
Changed
- The host scripts find Artisan by themselves (task 645).
GRIGLIA_TRANSPORTnow defaults toauto:
sync-context.py,sync-skills.py,claude-tokens.py,agent-status.pyand the persistent worker
(--transport auto|docker|local, printed at startup) probe$GRIGLIA_CONTAINERonce and, when no daemon or
no container answers, runphp artisanfrom the project root. A machine that serves Laravel with
composer dev, Apache or nginx needs no configuration at all, instead of failing with «Cannot connect to the
Docker daemon»;GRIGLIA_TRANSPORT=docker|localstill pins the choice. Every failure now prints the
transport in use and the variable that changes it.
Added
- Documentation: Run Griglia without Docker
— the transports, cron and systemd environments, file ownership between the web user and the agent, the
scheduler entrygriglia:auto-archiveneeds, caches, assets and live updates outside a container.
Full changelog: v0.93.0...v0.94.0
v0.93.0
Added
- The board chooses the model and the reasoning effort of a session (and shows them). Declare what each
agent offers —GRIGLIA_AGENT_MODELS="claude:opus,sonnet;codex:gpt-5",GRIGLIA_AGENT_EFFORTS="low,medium,high"—
and a list picks its default while any task overrides it, from the badge under its title or from the commands
of its modal, next to the agent. The effective value is always visible: on the row, in the modal, and next to
the title ingriglia:check({agent: claude, model: opus, effort: high}). The persistent worker reads it
from--worker-jsonand passes it to the CLI, falling back to its own--model/--effort. Without the two
variables nothing changes: no selector, and every session keeps the CLI's default.
Full changelog: v0.92.1...v0.93.0
v0.92.1
Fixed
- A name is not a key:
griglia:check --agent=andgriglia:watch --agent=now match the configured
agents by key or label, in any case (Claude Code,Claude,CLAUDE→claude), and an agent nobody
configured stops the command with the list of the real ones. Before, an unrecognised text ran as itself and
the ownership guard compared it with the resolved owner, so every task was refused with a message where the
two agents looked like the same one («belongs to agent «Claude», you are «claude»»). On a board with a
single agent the option is now decoration instead of a refusal. A label stored where a key belongs
(todos.agent/checklists.agent) resolves to its agent as well, instead of falling back to the default.
Full changelog: v0.92.0...v0.92.1
v0.92.0
Added
- A task opened outside the agent list reaches the agent:
griglia:checkandgriglia:watchnow cover
every list of the agent-list owner that holds a task marked open to work (or working, or waiting for an
answer). Those tasks are listed last, under📋 List «…», after the agent list and the started plans, and
--take/--done/--askaccept their ids. Before, a green dot outside the agent list and outside a
plan was invisible to the agent: the user waited for work nobody could see. Foreign lists never show more
than what was opened for the agent,--allincluded, and a list with nothing open stays out of the output.
Full changelog: v0.91.4...v0.92.0
v0.91.4
Changed
- Host-side Python helpers are now invoked explicitly with
python3throughout agent instructions, installation guides, worker examples and cron snippets, so commands do not depend on executable file permissions.
Full changelog: v0.91.3...v0.91.4
v0.91.3
Changed
- The first message to the agent is now copyable: on Start the agent
and in step 6 of the installation the message to
paste into the CLI is a code block with a copy button, on a single line, instead of a quote to select by hand.
Full changelog: v0.91.2...v0.91.3
v0.91.2
Added
- A page on how to actually start an agent: Start the agent lists the three
ways to run one, in order — a terminal opened in the project directory, a single non-interactive CLI
command (claude -p …,codex exec …) for scripts and cron, and a persistent worker — with what all
three need and why the working directory decides whether the agent sees the board.
Changed
- The installation tutorial no longer says «start the coding agent» and leaves you there: step 6 gives the
cd+ CLI command and the first message to send, then points at the new page for the other two ways.
Full changelog: v0.91.1...v0.91.2
v0.91.1
Fixed
- The side tab shows the board again, not your dashboard. The panel used to load the raw
dashboard_routepath (/dashboardby default) — the very path Breeze and Jetstream give their own
dashboard. In a host application that owns it, the package route never wins and the tab framed the
host's page. The URL is now built from the package's own board route (griglia.home, falling back to
griglia.dashboardwhen the home route is off), which no host path can shadow, and it is exposed as
Alle80\Griglia\Support\Board::url().
Changed
dashboard_routeno longer governs the side tab: setting it tonulldrops the legacy redirect only,
and the tab keeps pointing at the board.show_dashboard_tabin/settingsremains its off switch;
with no board route at all there is nothing to frame and the tab is not rendered.
Full changelog: v0.91.0...v0.91.1
v0.91.0
Added
- The board tab now reaches every page of the host application. A new middleware,
Alle80\Griglia\Http\Middleware\InjectBoardTab, is pushed into thewebgroup and splices the
slide-out tab into every HTML response just before</body>, the way laravel-debugbar injects its bar:
the board is one click away from anywhere in your app, with nothing to add to your layouts. It stays out
of everything that is not a full page (JSON/AJAX, redirects, downloads, streamed and binary responses,
Livewire/livewire/update, Turbo frames, Inertia visits), out of the package pages — whose layout
prints the tab already, so it is never doubled — and out of the pages of a visitor who may not open the
board (same verdict as the route guard, now readable asGrigliaAccess::allows()). - Config key
inject_tab_except: paths where the tab must not be injected, asRequest::isglobs matched
against the path and against the route name (default: an empty list, i.e. inject everywhere). The
show_dashboard_tabswitch in/settingsstill turns the tab off everywhere.
Changed
- The tab is self-contained: its CSS is inline and its behaviour is plain JavaScript, so it works on
host pages that load neithergriglia.cssnor Alpine. Its rules leftresources/css/griglia.css(they
had a single consumer) and the desktop-only rule is a media query instead of the Tailwind utilities
hidden lg:block, which a host app may not have built.
Full changelog: v0.90.1...v0.91.0