<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Timill Platform Documentation</title><link>https://docs.timill.com/</link><description>Recent content on Timill Platform Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://docs.timill.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Backend Scripts</title><link>https://docs.timill.com/scripting/backend-scripts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripting/backend-scripts/</guid><description>&lt;p&gt;Create server-side automation scripts triggered by events, schedules, or manual execution. Supports two languages: JavaScript (Goja) and Gonja (Jinja2-style templates).&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;a class="heading-anchor" href="#getting-started" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="creating-a-script"&gt;Creating a Script&lt;a class="heading-anchor" href="#creating-a-script" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Group Settings → Backend Scripts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New Script&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Choose a language: JavaScript or Gonja&lt;/li&gt;
&lt;li&gt;Write your script code&lt;/li&gt;
&lt;li&gt;Set the trigger type and schedule&lt;/li&gt;
&lt;li&gt;Save and test&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="script-structure"&gt;Script Structure&lt;a class="heading-anchor" href="#script-structure" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="javascript-example"&gt;JavaScript Example&lt;a class="heading-anchor" href="#javascript-example" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Get the current item
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Update the status
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SetStatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;approved&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Save&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Add a comment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AddComment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Automatically approved by backend script&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Send a notification
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Item &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; has been approved&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="gonja-jinja2-example"&gt;Gonja (Jinja2) Example&lt;a class="heading-anchor" href="#gonja-jinja2-example" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-jinja2" data-lang="jinja2"&gt;{# Update item status #}
{% set item = item %}
{{ item.SetStatus(&amp;#34;completed&amp;#34;) }}
{{ item.Save() }}

{# Log the change #}
{{ log(&amp;#34;Item &amp;#34; ~ item.Title() ~ &amp;#34; completed&amp;#34;) }}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="trigger-types"&gt;Trigger Types&lt;a class="heading-anchor" href="#trigger-types" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Type&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
					&lt;th&gt;Configuration&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Manual&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Execute on demand from UI&lt;/td&gt;
					&lt;td&gt;None&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Schedule&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Run on cron schedule&lt;/td&gt;
					&lt;td&gt;Cron expression (e.g., &lt;code&gt;0 9 * * *&lt;/code&gt;)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Fire on specific events&lt;/td&gt;
					&lt;td&gt;Event type + optional conditions&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Save Hook&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Run after every item save&lt;/td&gt;
					&lt;td&gt;Optional field conditions&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="available-events"&gt;Available Events&lt;a class="heading-anchor" href="#available-events" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Event&lt;/th&gt;
					&lt;th&gt;Trigger&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;CREATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is created&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;UPDATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is updated&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is deleted&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;STATUS_CHANGE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item status changes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;FIELD_UPDATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Specific field is updated&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ASSIGN&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is assigned/unassigned&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;COMMENT_CREATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Comment is added&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="language-features"&gt;Language Features&lt;a class="heading-anchor" href="#language-features" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="javascript-goja-es51"&gt;JavaScript (Goja ES5.1)&lt;a class="heading-anchor" href="#javascript-goja-es51" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Complex logic, external API calls, data transformations&lt;/p&gt;</description></item><item><title>Browsing Items</title><link>https://docs.timill.com/items/browsing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/items/browsing/</guid><description>&lt;p&gt;The item browser is the primary interface for viewing and managing work items of a given type within a group. Items are shown in a configurable, spreadsheet-like table that loads more rows as you scroll.&lt;/p&gt;
&lt;h2 id="filtering"&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-filter"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; Filtering&lt;a class="heading-anchor" href="#filtering" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use the filter bar to narrow the list by field values. The filter accepts a query syntax that supports &lt;code&gt;AND&lt;/code&gt; / &lt;code&gt;OR&lt;/code&gt; logic, for example:&lt;/p&gt;</description></item><item><title>Chart - Status Pie Chart</title><link>https://docs.timill.com/scripted-examples/charts/status-pie-chart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/charts/status-pie-chart/</guid><description>&lt;p&gt;Display item distribution by status as a pie chart.&lt;/p&gt;
&lt;h2 id="example-code"&gt;Example Code&lt;a class="heading-anchor" href="#example-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;generateChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryItems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type = &amp;#39;task&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;byStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;groupBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;status&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;echarts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createPieChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;byStatus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Task Status Distribution&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#4ade80&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#fbbf24&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#f87171&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#60a5fa&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="full-example"&gt;Full Example&lt;a class="heading-anchor" href="#full-example" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;See source: &lt;a href="https://docs.timill.com/scripted-examples/charts/source-files/01_status_pie_chart.js"&gt;source-files/01_status_pie_chart.js&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="customization"&gt;Customization&lt;a class="heading-anchor" href="#customization" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Change query:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryItems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type = &amp;#39;ticket&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add colors:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;echarts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createPieChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;byStatus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Status Distribution&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#4ade80&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#fbbf24&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#f87171&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#60a5fa&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#c084fc&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See also: &lt;a href="https://docs.timill.com/scripting/scripted-charts/"&gt;Scripted Charts Guide&lt;/a&gt;&lt;/p&gt;</description></item><item><title>General Settings</title><link>https://docs.timill.com/group-admin/general/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/general/</guid><description>&lt;p&gt;The general settings page lets group administrators configure the basic identity of a group.&lt;/p&gt;
&lt;h2 id="available-settings"&gt;Available settings&lt;a class="heading-anchor" href="#available-settings" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Group name&lt;/strong&gt; &amp;ndash; The display name shown in navigation and listings. It can be edited inline.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group icon&lt;/strong&gt; &amp;ndash; Upload an image to visually identify the group across the interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deleting-the-group"&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-trash"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; Deleting the group&lt;a class="heading-anchor" href="#deleting-the-group" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Deleting a group is a destructive action that requires confirmation and removes the group and its data. It is restricted to administrators with the appropriate permission.&lt;/p&gt;</description></item><item><title>Getting Started</title><link>https://docs.timill.com/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/getting-started/</guid><description>&lt;p&gt;Timill is an enterprise project management platform. This guide walks you through the basics to get up and running quickly.&lt;/p&gt;
&lt;h2 id="first-steps"&gt;First steps&lt;a class="heading-anchor" href="#first-steps" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-user-male"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Sign in&lt;/strong&gt; — use your credentials or an external authentication provider (Google, GitHub, OIDC) if configured by your administrator.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-home-page"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Explore your dashboard&lt;/strong&gt; — after signing in you land on your personal dashboard, which shows widgets summarizing activity across your groups.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-groups"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Join or create a group&lt;/strong&gt; — groups are the main organizational unit. Each group has its own items, pages, members, and settings.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-list"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Browse items&lt;/strong&gt; — navigate to a group and open the item browser to view, filter, and manage work items.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-edit-property"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Customize your experience&lt;/strong&gt; — rearrange dashboard widgets, save filters, and configure notifications to match your workflow.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="key-concepts"&gt;Key concepts&lt;a class="heading-anchor" href="#key-concepts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instance&lt;/strong&gt; — the top-level deployment of Timill, managed by instance administrators.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt; — a project workspace containing items, pages, members, and configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Item&lt;/strong&gt; — a work unit (task, bug, story, etc.) with typed fields, comments, attachments, and history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Role&lt;/strong&gt; — a named set of permissions assigned to group members to control access.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="getting-help"&gt;Getting help&lt;a class="heading-anchor" href="#getting-help" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Anywhere in the app, click the &lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-help"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; help icon in the topbar to open the contextual help panel for the page you&amp;rsquo;re on. The panel shows the relevant section of these docs without leaving the app.&lt;/p&gt;</description></item><item><title>REST API</title><link>https://docs.timill.com/api-reference/rest-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/api-reference/rest-api/</guid><description>&lt;p&gt;REST API reference for Timill Platform including all endpoints and request/response formats.&lt;/p&gt;
&lt;h2 id="base-url"&gt;Base URL&lt;a class="heading-anchor" href="#base-url" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;https://your-domain.com/api/v1
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="authentication"&gt;Authentication&lt;a class="heading-anchor" href="#authentication" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;All endpoints require JWT authentication except public endpoints:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Authorization: Bearer &amp;lt;token&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="endpoints"&gt;Endpoints&lt;a class="heading-anchor" href="#endpoints" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Instance-admin endpoints&lt;/strong&gt; (&lt;code&gt;/api/v1/admin/...&lt;/code&gt;) — listing every group on
the instance and managing manual Plus subscriptions — live on a separate,
scope-gated surface, documented for instance admins inside your own instance
at &lt;code&gt;/docs/api-reference/admin-rest-api/&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Viewing Pages</title><link>https://docs.timill.com/pages/viewing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/pages/viewing/</guid><description>&lt;p&gt;Pages are custom group screens built from widgets. They are used for landing pages, overviews, dashboards, and reference material that the whole group can share.&lt;/p&gt;
&lt;h2 id="navigation"&gt;Navigation&lt;a class="heading-anchor" href="#navigation" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pages are accessible from the group sidebar and appear as a flat, ordered list (group administrators control the order). Each page has a title and optional icon.&lt;/p&gt;
&lt;h2 id="reading-a-page"&gt;Reading a page&lt;a class="heading-anchor" href="#reading-a-page" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A page renders the widgets an administrator has placed on it — for example item lists, charts, calendars, kanban boards, or free-text panels. Written content lives inside &lt;strong&gt;Free Text&lt;/strong&gt; widgets, which support headings, lists, links, tables, and images.&lt;/p&gt;</description></item><item><title>Widget - Simple Item List</title><link>https://docs.timill.com/scripted-examples/widgets/simple-item-list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/widgets/simple-item-list/</guid><description>&lt;p&gt;Basic item list with filtering by item type.&lt;/p&gt;
&lt;h2 id="example-code"&gt;Example Code&lt;a class="heading-anchor" href="#example-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bg-white rounded-lg shadow&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$items := queryItems (printf &amp;#34;type=&amp;#39;%s&amp;#39;&amp;#34; .itemType)}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-lg font-semibold p-4 border-b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{.title}} ({{len $items}})&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;divide-y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{range $items}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;p-3 hover:bg-gray-50&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;flex items-center justify-between&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;font-medium&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{.Title.Get}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-sm {{statusColor .Status.Get}}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{.Status.Get}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{else}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;p-4 text-gray-500&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;No items found&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{end}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="parameters"&gt;Parameters&lt;a class="heading-anchor" href="#parameters" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Parameter&lt;/th&gt;
					&lt;th&gt;Type&lt;/th&gt;
					&lt;th&gt;Default&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;itemType&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;string&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;&amp;quot;task&amp;quot;&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item type to filter by&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;string&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;&amp;quot;Items&amp;quot;&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Widget title&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="customization"&gt;Customization&lt;a class="heading-anchor" href="#customization" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Change the item type:&lt;/p&gt;</description></item><item><title>Chart - User Workload Bar Chart</title><link>https://docs.timill.com/scripted-examples/charts/user-workload-bar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/charts/user-workload-bar/</guid><description>&lt;p&gt;Display workload distribution across users.&lt;/p&gt;
&lt;h2 id="example-code"&gt;Example Code&lt;a class="heading-anchor" href="#example-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;generateChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryItems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type = &amp;#39;task&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;byUser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;groupBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;assignee&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;labels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;byUser&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;values&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;byUser&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;echarts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createBarChart&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;labels&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;User Workload&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;xLabel&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;User&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;yLabel&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Tasks&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="full-example"&gt;Full Example&lt;a class="heading-anchor" href="#full-example" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;See source: &lt;a href="https://docs.timill.com/scripted-examples/charts/source-files/02_user_workload_bar.js"&gt;source-files/02_user_workload_bar.js&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="customization"&gt;Customization&lt;a class="heading-anchor" href="#customization" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Filter by status:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryItems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type = &amp;#39;task&amp;#39; status = &amp;#39;open&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See also: &lt;a href="https://docs.timill.com/scripting/scripted-charts/"&gt;Scripted Charts Guide&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Configuring a Group</title><link>https://docs.timill.com/group-admin/configuring-a-group/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/configuring-a-group/</guid><description>&lt;p&gt;Configure and manage groups, item types, and team settings in Timill Platform.&lt;/p&gt;
&lt;h2 id="creating-groups"&gt;Creating Groups&lt;a class="heading-anchor" href="#creating-groups" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Global Admin → Groups&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Group&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enter group details:
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Icon&lt;/li&gt;
&lt;li&gt;Color&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set initial members&lt;/li&gt;
&lt;li&gt;Create&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="group-settings"&gt;Group Settings&lt;a class="heading-anchor" href="#group-settings" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="basic-settings"&gt;Basic Settings&lt;a class="heading-anchor" href="#basic-settings" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt;: Display name for the group&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Description&lt;/strong&gt;: Group description&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Icon&lt;/strong&gt;: Group icon&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color&lt;/strong&gt;: Group accent color&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="membership"&gt;Membership&lt;a class="heading-anchor" href="#membership" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Members&lt;/strong&gt;: Users with access to the group&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles&lt;/strong&gt;: Custom roles with specific permissions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limits&lt;/strong&gt;: Max users per group (instance setting)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="item-types"&gt;Item Types&lt;a class="heading-anchor" href="#item-types" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="creating-item-types"&gt;Creating Item Types&lt;a class="heading-anchor" href="#creating-item-types" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Group Settings → Item Types&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Item Type&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Configure:
&lt;ul&gt;
&lt;li&gt;Name (e.g., Tasks, Tickets, Orders)&lt;/li&gt;
&lt;li&gt;Icon&lt;/li&gt;
&lt;li&gt;Custom fields&lt;/li&gt;
&lt;li&gt;Statuses&lt;/li&gt;
&lt;li&gt;UI layout&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="item-type-configuration"&gt;Item Type Configuration&lt;a class="heading-anchor" href="#item-type-configuration" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Setting&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Name &amp;amp; Icon&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Visual identity&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Custom Fields&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Additional data fields beyond defaults&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Statuses&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Workflow states (Open → In Progress → Done)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;UI Layout&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;How item detail page is organized&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Disabled Fields&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Default fields to hide&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Field Defaults&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Pre-populated values for new items&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Mandatory Rules&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Conditional required field rules&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Default Value Rules&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Conditional auto-fill rules&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="custom-fields"&gt;Custom Fields&lt;a class="heading-anchor" href="#custom-fields" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Supported field types:&lt;/p&gt;</description></item><item><title>Dashboard</title><link>https://docs.timill.com/dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/dashboard/</guid><description>&lt;p&gt;The personal dashboard is the first screen you see after signing in. It is your own private space for an at-a-glance view of work across the groups you belong to.&lt;/p&gt;
&lt;h2 id="widgets"&gt;Widgets&lt;a class="heading-anchor" href="#widgets" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The dashboard is composed of widgets arranged on a grid. Widget types available on the dashboard include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-list"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Item List&lt;/strong&gt; — a live list of items matching a query.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-calendar"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Calendar&lt;/strong&gt; — items plotted by their date fields.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-timeline"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Gantt&lt;/strong&gt; — a timeline of items with dates and dependencies.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-pie-chart"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Pie Chart&lt;/strong&gt; and &lt;strong&gt;Burndown Chart&lt;/strong&gt; — item distribution and progress over time.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-text"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Free Text&lt;/strong&gt; — any HTML/text content you want to pin.&lt;/li&gt;
&lt;li&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-code"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; &lt;strong&gt;Scripted Chart&lt;/strong&gt; and &lt;strong&gt;Scripted Widget&lt;/strong&gt; — custom widgets you build with code (Plus plan).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each widget can pull data from a single group or, on the dashboard, from &lt;strong&gt;all the groups you belong to&lt;/strong&gt; at once.&lt;/p&gt;</description></item><item><title>Editing Pages</title><link>https://docs.timill.com/pages/editing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/pages/editing/</guid><description>&lt;p&gt;Pages are edited with the same drag-and-drop widget editor used for dashboards. Editing a page means arranging widgets on a grid rather than typing into a document.&lt;/p&gt;
&lt;h2 id="the-layout-editor"&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-grid"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; The layout editor&lt;a class="heading-anchor" href="#the-layout-editor" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In edit mode you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add widgets&lt;/strong&gt; — pick a widget type and configure its data source and display options.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move and resize&lt;/strong&gt; widgets by dragging them around the grid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remove&lt;/strong&gt; widgets you no longer need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For written content (text, headings, lists, links, tables, images), add a &lt;strong&gt;Free Text&lt;/strong&gt; widget and edit its HTML content.&lt;/p&gt;</description></item><item><title>Scripted Widgets</title><link>https://docs.timill.com/scripting/scripted-widgets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripting/scripted-widgets/</guid><description>&lt;p&gt;Create custom HTML widgets using Go&amp;rsquo;s &lt;code&gt;html/template&lt;/code&gt; syntax with built-in query helpers and automatic RBAC enforcement. Widgets are rendered server-side and integrated into pages and dashboards.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;a class="heading-anchor" href="#getting-started" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="creating-a-widget"&gt;Creating a Widget&lt;a class="heading-anchor" href="#creating-a-widget" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to any page or dashboard&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add Widget&lt;/strong&gt; → &lt;strong&gt;Scripted Widget&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enter a name and description&lt;/li&gt;
&lt;li&gt;Write your Go template code&lt;/li&gt;
&lt;li&gt;Save and preview&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="widget-structure"&gt;Widget Structure&lt;a class="heading-anchor" href="#widget-structure" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Every scripted widget consists of:&lt;/p&gt;</description></item><item><title>Viewing an Item</title><link>https://docs.timill.com/items/viewing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/items/viewing/</guid><description>&lt;p&gt;Opening an item displays its full detail view, where you can inspect and edit all of its data. The layout of the detail view is defined by the item type, so different types can arrange their fields into custom sections and columns.&lt;/p&gt;
&lt;h2 id="fields"&gt;Fields&lt;a class="heading-anchor" href="#fields" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Each item has a set of typed fields defined by the group&amp;rsquo;s item type configuration — text, numbers, dates, dropdown lists, user and item references, attachments, and more. Edit a field by clicking on its value; changes are saved as you go.&lt;/p&gt;</description></item><item><title>Widget - Status Dashboard</title><link>https://docs.timill.com/scripted-examples/widgets/status-dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/widgets/status-dashboard/</guid><description>&lt;p&gt;Count items by status and display in a grid.&lt;/p&gt;
&lt;h2 id="example-code"&gt;Example Code&lt;a class="heading-anchor" href="#example-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;grid grid-cols-4 gap-4&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$items := queryItems &amp;#34;type = &amp;#39;task&amp;#39;&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$open := filter $items &amp;#34;status = &amp;#39;open&amp;#39;&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$progress := filter $items &amp;#34;status = &amp;#39;in-progress&amp;#39;&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$review := filter $items &amp;#34;status = &amp;#39;review&amp;#39;&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$done := filter $items &amp;#34;status = &amp;#39;done&amp;#39;&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bg-blue-100 p-4 rounded text-center&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-2xl font-bold&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{len $open}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-sm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Open&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bg-yellow-100 p-4 rounded text-center&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-2xl font-bold&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{len $progress}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-sm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;In Progress&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bg-purple-100 p-4 rounded text-center&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-2xl font-bold&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{len $review}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-sm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Review&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bg-green-100 p-4 rounded text-center&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-2xl font-bold&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{len $done}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-sm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Done&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="customization"&gt;Customization&lt;a class="heading-anchor" href="#customization" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Add more status columns:&lt;/p&gt;</description></item><item><title>Chart - Priority Scatter Plot</title><link>https://docs.timill.com/scripted-examples/charts/priority-scatter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/charts/priority-scatter/</guid><description>&lt;p&gt;Display priority vs due date as a scatter plot.&lt;/p&gt;
&lt;h2 id="example-code"&gt;Example Code&lt;a class="heading-anchor" href="#example-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;generateChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;queryItems&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type = &amp;#39;task&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DueDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DueDate&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nx"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;getPriorityScore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GetField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;priority&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;echarts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createScatterChart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Priority vs Due Date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;xLabel&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Due Date&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;yLabel&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Priority&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getPriorityScore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;critical&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;high&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;medium&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;low&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="full-example"&gt;Full Example&lt;a class="heading-anchor" href="#full-example" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;See source: &lt;a href="https://docs.timill.com/scripted-examples/charts/source-files/03_priority_scatter.js"&gt;source-files/03_priority_scatter.js&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="customization"&gt;Customization&lt;a class="heading-anchor" href="#customization" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Change priority values:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;getPriorityScore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;critical&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;high&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;medium&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;low&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See also: &lt;a href="https://docs.timill.com/scripting/scripted-charts/"&gt;Scripted Charts Guide&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Group Home</title><link>https://docs.timill.com/home/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/home/</guid><description>&lt;p&gt;The group home page is the landing page when you navigate into a group. It is a configurable widget page — built with the same widgets and layout editor as dashboards and other group pages — so its contents are whatever a group administrator has chosen to put there.&lt;/p&gt;
&lt;h2 id="what-you-will-find"&gt;What you will find&lt;a class="heading-anchor" href="#what-you-will-find" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By default, a new group&amp;rsquo;s home page shows the &lt;strong&gt;Welcome widget&lt;/strong&gt;, which summarises the group&amp;rsquo;s setup (item types, pages, members) and offers quick links to get started.&lt;/p&gt;</description></item><item><title>MCP Server</title><link>https://docs.timill.com/api-reference/mcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/api-reference/mcp/</guid><description>&lt;p&gt;Timill ships a &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; server &lt;strong&gt;bundled inside the platform itself&lt;/strong&gt;, so AI agents (Claude, and any MCP-capable host) can read and write your Timill data the same way the REST API does — e.g. &lt;em&gt;&amp;ldquo;Create a goal and a few tasks for John, blocked by the Q2 launch.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It is served over &lt;strong&gt;Streamable HTTP&lt;/strong&gt; at the path &lt;code&gt;/mcp&lt;/code&gt; on your instance, and exposes a small set of &lt;strong&gt;generic&lt;/strong&gt; tools (no hardcoded item types — they adapt to your group&amp;rsquo;s schema). Every call is authenticated per-user and enforced by the same RBAC that governs the rest of the app: &lt;strong&gt;an agent can only ever see and do what the authenticating user can.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Members</title><link>https://docs.timill.com/group-admin/members/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/members/</guid><description>&lt;p&gt;The members page lets group administrators control who has access to the group and what role they hold.&lt;/p&gt;
&lt;h2 id="adding-members"&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-add-user-male"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; Adding members&lt;a class="heading-anchor" href="#adding-members" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Add users by searching for their name or email. When adding a member, assign them a role that determines their permissions within the group. The number of members a group can hold may be capped by the group&amp;rsquo;s plan or an instance-wide limit.&lt;/p&gt;</description></item><item><title>Scripted Charts</title><link>https://docs.timill.com/scripting/scripted-charts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripting/scripted-charts/</guid><description>&lt;p&gt;Create dynamic data visualizations using JavaScript with &lt;a href="https://echarts.apache.org/" rel="noopener noreferrer"&gt;Apache ECharts&lt;/a&gt;. Charts run in both the browser and backend (Goja VM) with full RBAC enforcement.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;a class="heading-anchor" href="#getting-started" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="creating-a-chart"&gt;Creating a Chart&lt;a class="heading-anchor" href="#creating-a-chart" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to any page or dashboard&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add Widget&lt;/strong&gt; → &lt;strong&gt;Scripted Chart&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enter a name and description&lt;/li&gt;
&lt;li&gt;Write your JavaScript code&lt;/li&gt;
&lt;li&gt;Save and preview&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="chart-structure"&gt;Chart Structure&lt;a class="heading-anchor" href="#chart-structure" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Every chart script follows this pattern:&lt;/p&gt;</description></item><item><title>Widget - Recent Activity</title><link>https://docs.timill.com/scripted-examples/widgets/recent-activity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/widgets/recent-activity/</guid><description>&lt;p&gt;Display the 5 most recently updated items.&lt;/p&gt;
&lt;h2 id="example-code"&gt;Example Code&lt;a class="heading-anchor" href="#example-code" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bg-white rounded-lg shadow&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$items := queryItems &amp;#34;type = &amp;#39;task&amp;#39;&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{$recent := sort $items &amp;#34;updatedAt&amp;#34; &amp;#34;desc&amp;#34; | first 5}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-lg font-semibold p-4 border-b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Recent Activity&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;divide-y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{range $recent}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;p-3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;flex items-center space-x-2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;font-medium&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{.Title.Get}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-xs text-gray-500&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{.UpdatedAt.Get | formatDate}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text-sm text-gray-600&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{.Description.GetHTML | truncate 100}}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{else}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;p-4 text-gray-500&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;No recent activity&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{end}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="customization"&gt;Customization&lt;a class="heading-anchor" href="#customization" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Change the number of items:&lt;/p&gt;</description></item><item><title>Roles</title><link>https://docs.timill.com/group-admin/roles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/roles/</guid><description>&lt;p&gt;Roles define what members are allowed to do within a group. Timill uses role-based access control (RBAC) with support for fine-grained, field-level permissions.&lt;/p&gt;
&lt;h2 id="creating-and-editing-roles"&gt;Creating and editing roles&lt;a class="heading-anchor" href="#creating-and-editing-roles" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Create custom roles from the roles administration page. Each role has a name and a set of permissions that control access to items, pages, and group administration.&lt;/p&gt;
&lt;h2 id="permissions"&gt;Permissions&lt;a class="heading-anchor" href="#permissions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Permissions are organized by area (items, pages, admin). For each area you can grant abilities such as create, read, update, and delete. Permissions are additive &amp;ndash; a role only has the capabilities explicitly granted to it.&lt;/p&gt;</description></item><item><title>Scripting API Reference</title><link>https://docs.timill.com/scripting/api-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripting/api-reference/</guid><description>&lt;p&gt;Complete JavaScript (Goja ES5.1) scripting API for backend scripts, widget scripts, and chart scripts.&lt;/p&gt;
&lt;h2 id="global-variables"&gt;Global Variables&lt;a class="heading-anchor" href="#global-variables" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Variable&lt;/th&gt;
					&lt;th&gt;Type&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;userId&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Current user ID&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;groupId&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Group ID (if group-scoped)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;instanceId&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Instance ID&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;scriptId&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Current script ID&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;scriptType&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;&amp;quot;backend&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;widget&amp;quot;&lt;/code&gt;, or &lt;code&gt;&amp;quot;chart&amp;quot;&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;itemId&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item ID (if item-scoped)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;isGroupScoped&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;True if script runs in a group context&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;isInstanceScoped&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;True if script runs at instance level&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;isItemScoped&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;True if script runs on a specific item&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="user-object"&gt;&lt;code&gt;user&lt;/code&gt; Object&lt;a class="heading-anchor" href="#user-object" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Available in all script types. Backend scripts get read-write access.&lt;/p&gt;</description></item><item><title>Page Administration</title><link>https://docs.timill.com/group-admin/pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/pages/</guid><description>&lt;p&gt;The pages section lets group administrators manage the group&amp;rsquo;s pages — the custom, widget-based screens shown in the group sidebar.&lt;/p&gt;
&lt;h2 id="managing-pages"&gt;Managing pages&lt;a class="heading-anchor" href="#managing-pages" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pages appear as a single ordered list. From here you can create, rename, reorder, and delete pages. Drag a page to change where it sits in the navigation sidebar.&lt;/p&gt;
&lt;h2 id="the-home-page"&gt;The home page&lt;a class="heading-anchor" href="#the-home-page" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every group has a special &lt;strong&gt;home&lt;/strong&gt; page that serves as its landing screen. It is edited the same way as any other page; it simply stays first in the list.&lt;/p&gt;</description></item><item><title>Building Pages &amp; Dashboards</title><link>https://docs.timill.com/group-admin/building-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/building-pages/</guid><description>&lt;p&gt;Create visual reporting pages and dashboards with widgets in Timill Platform.&lt;/p&gt;
&lt;h2 id="creating-pages"&gt;Creating Pages&lt;a class="heading-anchor" href="#creating-pages" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Group Settings → Pages&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Page&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Configure:
&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Layout (grid columns)&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add widgets&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="page-layouts"&gt;Page Layouts&lt;a class="heading-anchor" href="#page-layouts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="available-layouts"&gt;Available Layouts&lt;a class="heading-anchor" href="#available-layouts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Layout&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Single Column&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Full-width layout&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Two Column&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;50/50 split&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Three Column&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;33/33/33 split&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Custom Grid&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Custom widget sizing&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="widget-sizing"&gt;Widget Sizing&lt;a class="heading-anchor" href="#widget-sizing" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Widgets can be sized using the grid system:&lt;/p&gt;</description></item><item><title>Item Types and Fields</title><link>https://docs.timill.com/group-admin/items/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/items/</guid><description>&lt;p&gt;Item types define the schema for work items in a group. Each item type has a name and a set of fields that determine what data an item holds, plus a layout that controls how those fields are arranged on the item detail view.&lt;/p&gt;
&lt;h2 id="managing-item-types"&gt;Managing item types&lt;a class="heading-anchor" href="#managing-item-types" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Create multiple item types to represent different kinds of work (e.g., Task, Bug, Feature Request). Each type has its own fields and layout.&lt;/p&gt;</description></item><item><title>Lists</title><link>https://docs.timill.com/group-admin/lists/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/lists/</guid><description>&lt;p&gt;Lists are reusable sets of options used by dropdown fields on items. Managing lists centrally keeps option sets consistent across your group.&lt;/p&gt;
&lt;h2 id="creating-a-list"&gt;Creating a list&lt;a class="heading-anchor" href="#creating-a-list" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Create a new list by giving it a name and adding option entries. Each entry has a label and an optional color, used for visual distinction in the UI (e.g., kanban columns, status badges).&lt;/p&gt;
&lt;h2 id="editing-list-entries"&gt;Editing list entries&lt;a class="heading-anchor" href="#editing-list-entries" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Add, rename, reorder, or remove entries on an existing list. Reordering changes the order entries appear in dropdowns and on kanban boards.&lt;/p&gt;</description></item><item><title>Forms</title><link>https://docs.timill.com/group-admin/forms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/forms/</guid><description>&lt;p&gt;Forms let you create structured input interfaces for collecting data — including from external users who are not group members. (Forms must be enabled on the instance; public forms are a separate instance toggle.)&lt;/p&gt;
&lt;h2 id="creating-a-form"&gt;Creating a form&lt;a class="heading-anchor" href="#creating-a-form" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use the form builder to define the fields, labels, and layout. Form fields map to an item type&amp;rsquo;s fields so that submissions create items in the group.&lt;/p&gt;
&lt;h2 id="sharing-forms"&gt;&lt;span class="ti-icon" aria-hidden="true"&gt;&lt;svg viewBox="0 0 64 64"&gt;&lt;use href="https://docs.timill.com/icons.svg#icon-share-2"&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt; Sharing forms&lt;a class="heading-anchor" href="#sharing-forms" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Each form has its own URL. A form can require authentication, or be made public so anyone with the link can submit it — useful for intake requests, bug reports, or feedback from people outside the group.&lt;/p&gt;</description></item><item><title>Working with Forms</title><link>https://docs.timill.com/group-admin/working-with-forms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/working-with-forms/</guid><description>&lt;p&gt;Create and manage public and internal forms that create items in Timill Platform.&lt;/p&gt;
&lt;h2 id="creating-forms"&gt;Creating Forms&lt;a class="heading-anchor" href="#creating-forms" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Group Settings → Forms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Form&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Configure:
&lt;ul&gt;
&lt;li&gt;Title&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Item type to create&lt;/li&gt;
&lt;li&gt;Field mappings&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set visibility (public/internal)&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="form-configuration"&gt;Form Configuration&lt;a class="heading-anchor" href="#form-configuration" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="basic-settings"&gt;Basic Settings&lt;a class="heading-anchor" href="#basic-settings" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Setting&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Form display title&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Form instructions&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Item Type&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Which item type to create&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Visibility&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Public or internal only&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Thank You Message&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Message after submission&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="field-mapping"&gt;Field Mapping&lt;a class="heading-anchor" href="#field-mapping" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Map form fields to item fields:&lt;/p&gt;</description></item><item><title>Scripts</title><link>https://docs.timill.com/group-admin/scripts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/scripts/</guid><description>&lt;p&gt;Scripts let you automate workflows and extend group behavior with code that runs on the server. Two engines are available: &lt;strong&gt;JavaScript&lt;/strong&gt; and &lt;strong&gt;Gonja&lt;/strong&gt; (a Jinja2-style template language).&lt;/p&gt;
&lt;h2 id="creating-a-script"&gt;Creating a script&lt;a class="heading-anchor" href="#creating-a-script" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;From the scripts section, create a script, choose the engine, and write your logic in the built-in code editor.&lt;/p&gt;
&lt;h2 id="triggers"&gt;Triggers&lt;a class="heading-anchor" href="#triggers" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A script runs based on its trigger:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manual&lt;/strong&gt; — run on demand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schedule&lt;/strong&gt; — run on a recurring cron schedule.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event&lt;/strong&gt; — run when something happens in the group (e.g., an item is created, updated, or deleted).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save hook&lt;/strong&gt; — run as part of saving an item, for example to validate or adjust field values before they are stored.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scripted-widgets-and-charts"&gt;Scripted widgets and charts&lt;a class="heading-anchor" href="#scripted-widgets-and-charts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scripts can also power custom &lt;strong&gt;scripted widgets&lt;/strong&gt; and &lt;strong&gt;scripted charts&lt;/strong&gt; on pages and dashboards, producing the data (or chart configuration) that the widget renders.&lt;/p&gt;</description></item><item><title>Script Administration</title><link>https://docs.timill.com/group-admin/script-administration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/script-administration/</guid><description>&lt;p&gt;Manage backend scripts, event triggers, and scheduled tasks in Timill Platform.&lt;/p&gt;
&lt;h2 id="script-management"&gt;Script Management&lt;a class="heading-anchor" href="#script-management" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="creating-scripts"&gt;Creating Scripts&lt;a class="heading-anchor" href="#creating-scripts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Group Settings → Backend Scripts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New Script&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Choose language: JavaScript or Gonja&lt;/li&gt;
&lt;li&gt;Write script code&lt;/li&gt;
&lt;li&gt;Configure trigger type and schedule&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="script-types"&gt;Script Types&lt;a class="heading-anchor" href="#script-types" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Type&lt;/th&gt;
					&lt;th&gt;Trigger&lt;/th&gt;
					&lt;th&gt;Use Case&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Manual&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Execute on demand&lt;/td&gt;
					&lt;td&gt;One-time operations&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Schedule&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Cron expression&lt;/td&gt;
					&lt;td&gt;Daily reports, cleanup tasks&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Item events&lt;/td&gt;
					&lt;td&gt;Auto-assign, notifications&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Save Hook&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;After item save&lt;/td&gt;
					&lt;td&gt;Validation, field updates&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="viewing-execution-history"&gt;Viewing Execution History&lt;a class="heading-anchor" href="#viewing-execution-history" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Group Settings → Backend Scripts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click on a script to view its execution history&lt;/li&gt;
&lt;li&gt;Check logs for output and errors&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="event-triggers"&gt;Event Triggers&lt;a class="heading-anchor" href="#event-triggers" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="available-events"&gt;Available Events&lt;a class="heading-anchor" href="#available-events" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Event&lt;/th&gt;
					&lt;th&gt;Trigger&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;CREATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is created&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;UPDATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is updated&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is deleted&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;STATUS_CHANGE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item status changes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;FIELD_UPDATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Specific field is updated&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ASSIGN&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Item is assigned/unassigned&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;COMMENT_CREATE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Comment is added&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="configuring-field-conditions"&gt;Configuring Field Conditions&lt;a class="heading-anchor" href="#configuring-field-conditions" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;For &lt;code&gt;FIELD_UPDATE&lt;/code&gt; events, specify which fields trigger the script:&lt;/p&gt;</description></item><item><title>Secrets</title><link>https://docs.timill.com/group-admin/secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/secrets/</guid><description>&lt;p&gt;Secrets are a secure way to store sensitive values (API keys, tokens, passwords) that scripts can reference without exposing the raw value. (Secrets must be enabled on the instance.)&lt;/p&gt;
&lt;h2 id="adding-a-secret"&gt;Adding a secret&lt;a class="heading-anchor" href="#adding-a-secret" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Create a secret by specifying a key name and its value. The value is encrypted at rest and is never displayed in the UI again after you save it.&lt;/p&gt;
&lt;h2 id="using-secrets-in-scripts"&gt;Using secrets in scripts&lt;a class="heading-anchor" href="#using-secrets-in-scripts" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Reference a secret by its key name in your scripts. The runtime injects the decrypted value only at execution time, keeping credentials out of your source code.&lt;/p&gt;</description></item><item><title>Sharing with external collaborators</title><link>https://docs.timill.com/group-admin/external-sharing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/external-sharing/</guid><description>&lt;p&gt;External sharing gives people &lt;strong&gt;outside your group&lt;/strong&gt; — clients, contractors, stakeholders — scoped, read-only or lightly-editable access to a single dashboard page, a single item, or a filtered view, without giving them a member account or a seat.&lt;/p&gt;
&lt;p&gt;Each share is a &lt;strong&gt;link&lt;/strong&gt; (a capability URL). Anyone who can open the link and pass its gate sees exactly what the link is scoped to — never the rest of the group.&lt;/p&gt;</description></item><item><title>Trash Bin</title><link>https://docs.timill.com/group-admin/trashbin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/trashbin/</guid><description>&lt;p&gt;The trash bin holds recently deleted &lt;strong&gt;items, comments, and attachments&lt;/strong&gt;, letting administrators restore them if something was removed by mistake.&lt;/p&gt;
&lt;h2 id="viewing-deleted-content"&gt;Viewing deleted content&lt;a class="heading-anchor" href="#viewing-deleted-content" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Open the trash bin from the group admin sidebar. Deleted content is organized into separate tabs for items, comments, and attachments, each listed with its original name, deletion date, and who deleted it.&lt;/p&gt;
&lt;h2 id="restoring"&gt;Restoring&lt;a class="heading-anchor" href="#restoring" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Select an entry and restore it to bring it back to its original location. Restored items keep their field values, comments, and attachments as they were before deletion.&lt;/p&gt;</description></item><item><title>Subscription and Billing</title><link>https://docs.timill.com/group-admin/subscription/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/group-admin/subscription/</guid><description>&lt;p&gt;When billing is enabled on the instance, group administrators can view and manage the group&amp;rsquo;s subscription from this section. (If billing is disabled, this section is hidden.)&lt;/p&gt;
&lt;h2 id="viewing-your-plan"&gt;Viewing your plan&lt;a class="heading-anchor" href="#viewing-your-plan" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The subscription page shows whether the group is on the &lt;strong&gt;free tier&lt;/strong&gt; or has an &lt;strong&gt;active paid subscription&lt;/strong&gt;, along with the number of seats, the next invoice date and amount, and the payment method on file. Members on a free group see an upgrade prompt instead.&lt;/p&gt;</description></item><item><title>Chart Source Files</title><link>https://docs.timill.com/scripted-examples/charts/source-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/charts/source-files/</guid><description>&lt;p&gt;This directory contains example JavaScript code for creating custom charts using the Scripted Charts feature.&lt;/p&gt;
&lt;h2 id="how-to-use-these-examples"&gt;How to Use These Examples&lt;a class="heading-anchor" href="#how-to-use-these-examples" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;These are &lt;strong&gt;example scripts&lt;/strong&gt; that demonstrate how to write JavaScript code for scripted charts. To use them:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to a group&amp;rsquo;s page in Timill&lt;/li&gt;
&lt;li&gt;Add a new widget and select &amp;ldquo;Scripted Chart&amp;rdquo;&lt;/li&gt;
&lt;li&gt;In the widget configuration:
&lt;ul&gt;
&lt;li&gt;Set a title for your chart&lt;/li&gt;
&lt;li&gt;Select the group to query data from&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy and paste&lt;/strong&gt; the example JavaScript code into the Monaco Editor&lt;/li&gt;
&lt;li&gt;Optionally set a chart type hint and auto-refresh interval&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save the widget&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The JavaScript code will execute on the backend when the widget is rendered, querying your data and generating an ECharts configuration.&lt;/p&gt;</description></item><item><title>Widget Source Files</title><link>https://docs.timill.com/scripted-examples/widgets/source-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.timill.com/scripted-examples/widgets/source-files/</guid><description>&lt;p&gt;This directory contains example Go templates for creating custom Scripted Widgets.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;a class="heading-anchor" href="#overview" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Scripted Widgets allow you to create custom HTML widgets using Go&amp;rsquo;s &lt;code&gt;html/template&lt;/code&gt; syntax. Templates have access to a powerful API for querying items, transforming data, and rendering HTML with automatic escaping for security.&lt;/p&gt;
&lt;h2 id="examples"&gt;Examples&lt;a class="heading-anchor" href="#examples" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-simple-item-list-01_simple_item_listhtml"&gt;1. Simple Item List (&lt;code&gt;01_simple_item_list.html&lt;/code&gt;)&lt;a class="heading-anchor" href="#1-simple-item-list-01_simple_item_listhtml" aria-label="Link to this section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Displays a list of open items with their status badges.&lt;/p&gt;</description></item></channel></rss>