Skip to content

Releases: alle80/griglia

v0.95.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 11:20

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:check prints 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 as agent_models): tell the board which value the agent CLI —
    or the worker, through GRIGLIA_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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 10:53

Changed

  • The host scripts find Artisan by themselves (task 645). GRIGLIA_TRANSPORT now defaults to auto:
    sync-context.py, sync-skills.py, claude-tokens.py, agent-status.py and the persistent worker
    (--transport auto|docker|local, printed at startup) probe $GRIGLIA_CONTAINER once and, when no daemon or
    no container answers, run php artisan from 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|local still 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 entry griglia:auto-archive needs, caches, assets and live updates outside a container.

Full changelog: v0.93.0...v0.94.0

v0.93.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 10:36

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 in griglia:check ({agent: claude, model: opus, effort: high}). The persistent worker reads it
    from --worker-json and 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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 10:17

Fixed

  • A name is not a key: griglia:check --agent= and griglia:watch --agent= now match the configured
    agents by key or label, in any case (Claude Code, Claude, CLAUDEclaude), 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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 03:26

Added

  • A task opened outside the agent list reaches the agent: griglia:check and griglia:watch now 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 / --ask accept 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, --all included, and a list with nothing open stays out of the output.

Full changelog: v0.91.4...v0.92.0

v0.91.4

Choose a tag to compare

@github-actions github-actions released this 24 Aug 03:00

Changed

  • Host-side Python helpers are now invoked explicitly with python3 throughout 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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 02:56

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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 02:44

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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 02:23

Fixed

  • The side tab shows the board again, not your dashboard. The panel used to load the raw
    dashboard_route path (/dashboard by 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.dashboard when the home route is off), which no host path can shadow, and it is exposed as
    Alle80\Griglia\Support\Board::url().

Changed

  • dashboard_route no longer governs the side tab: setting it to null drops the legacy redirect only,
    and the tab keeps pointing at the board. show_dashboard_tab in /settings remains 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

Choose a tag to compare

@github-actions github-actions released this 24 Aug 02:10

Added

  • The board tab now reaches every page of the host application. A new middleware,
    Alle80\Griglia\Http\Middleware\InjectBoardTab, is pushed into the web group 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 as GrigliaAccess::allows()).
  • Config key inject_tab_except: paths where the tab must not be injected, as Request::is globs matched
    against the path and against the route name (default: an empty list, i.e. inject everywhere). The
    show_dashboard_tab switch in /settings still 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 neither griglia.css nor Alpine. Its rules left resources/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