{% extends "base.html" %} {% block title %}Feature Requests — ICDEV™{% endblock %} {% block extra_css %} {% endblock %} {% block content %}

Feature Requests

Formalize, analyze, and queue feature requests for ICDEV core development.

{# ── Left sidebar: session list ── #}
Sessions
{% for s in sessions %}
{{ s.title[:50] }}
{{ s.status.replace('_',' ') }} {% if s.alignment %} {{ s.alignment[:3] }} {% endif %}
{% else %}
No sessions yet.
{% endfor %}
{# ── Center: form / stream outputs / chat ── #}
{% if not active_session %} {# New FR submission form #}

New Feature Request

{% else %} {# Active session view #}

{{ active_session.title }}

{{ active_session.status.replace('_',' ') }} {% if active_session.alignment %} {{ active_session.alignment.replace('_',' ') }} {% endif %}
{{ active_session.id }}
{# Stream cards #} {% set alignment_stream = namespace(content=None) %} {% set decomp_stream = namespace(content=None) %} {% set effort_stream = namespace(content=None) %} {% set clarif_stream = namespace(content=None) %} {% set chat_turns = [] %} {% for s in streams %} {% if s.stream == 'alignment' and s.turn == 1 %}{% set alignment_stream.content = s.content %}{% endif %} {% if s.stream == 'decomposition' and s.turn == 1 %}{% set decomp_stream.content = s.content %}{% endif %} {% if s.stream == 'effort' and s.turn == 1 %}{% set effort_stream.content = s.content %}{% endif %} {% if s.stream == 'clarification' %}{% set clarif_stream.content = s.content %}{% endif %} {% endfor %}
{# Alignment stream #}

{% if not alignment_stream.content and active_session.status == 'drafting' %} {% endif %} Alignment

{% if alignment_stream.content %} {% set a = alignment_stream.content | tojson | safe %}
{{ alignment_stream.content }}
{% else %}
{% if active_session.status == 'drafting' %}Analyzing…{% else %}No data{% endif %}
{% endif %}
{# Decomposition stream #}

{% if not decomp_stream.content and active_session.status == 'drafting' %} {% endif %} Decomposition

{% if decomp_stream.content %}
{{ decomp_stream.content }}
{% else %}
{% if active_session.status == 'drafting' %}Decomposing…{% else %}No data{% endif %}
{% endif %}
{# Effort stream #}

{% if not effort_stream.content and active_session.status == 'drafting' %} {% endif %} Effort

{% if effort_stream.content %}
{{ effort_stream.content }}
{% else %}
{% if active_session.status == 'drafting' %}Estimating…{% else %}No data{% endif %}
{% endif %}
{# Clarification questions (if any) #} {% if clarif_stream.content %}

Clarifying Questions

{{ clarif_stream.content }}
{% endif %} {# Chat history #} {% set user_turns = streams | selectattr('stream', 'eq', 'user') | list %} {% if user_turns | length > 1 %}

Conversation

{% for t in user_turns %} {% if t.turn > 0 %}
You: {{ t.content }}
{% endif %} {% endfor %}
{% endif %} {# Chat + action bar #}
{% if active_session.status in ('streams_complete', 'drafting') %}
{% endif %} {% if active_session.status == 'suggested' and not active_session.kanban_task_id %}
{% endif %} {% if active_session.status == 'suggested' %}
{% endif %}
{% endif %}
{# ── Right panel: Kanban preview ── #}
Kanban Preview {% if active_session %}
SUGGESTED TASK
[FR] {{ active_session.title[:60] }}
research {% if active_session.alignment %} {{ active_session.alignment[:4] }} {% endif %}
{% if active_session.kanban_task_id %}
Kanban ID: {{ active_session.kanban_task_id }}
{% endif %}
{# Decomposition summary (rendered server-side) #} {% if decomp_summary %}
Task Tree
{% for node in decomp_summary %}
{{ node.icon }} {{ node.title }}
{% endfor %}
{% endif %}
{% else %}
Submit a new feature request to see the Kanban preview here.
{% endif %}
{% if active_session and active_session.status == 'drafting' %} {% endif %} {% endblock %}