Skip to content

feat: per-client tag focus filter across service views #8

Description

@Bccorb

Summary

Add an app-level focus filter that narrows resource lists to a selected client, keyed off a resource tag (default tag key Client, configurable in ~/.seamless-glance/config.json).

This is Phase 2 of the profile/multi-tenant work. Phase 1 (in-app AWS profile switching) is delivered separately.

Important framing

This is a view/focus filter, not a security boundary. In a shared AWS account, IAM cannot scope List/Describe results by tag, so isolation is not enforceable at the API layer. The UI must label the filter honestly (e.g. Focus: Client=Acme (view filter, not an access boundary)) and never imply it restricts access.

Scope

  1. Data layer: add a tags field to model structs in src/models/ and read .tags() in the corresponding src/aws/ fetchers, service by service. EC2 already reads a subset of tags (src/aws/ec2.rs), so it is the natural first vertical slice; the remaining ~12 services each need model + fetcher changes.
  2. Config: configurable tag key (default Client) in ~/.seamless-glance/config.json.
  3. State + command: client_filter: Option<String> plus a /client <value> command, with a picker of distinct values for the configured tag key.
  4. Render: filter rows by tag[key] == value before enumerate in each view, and recompute scroll/selection math against the filtered length.
  5. Honest labeling in the header/footer as described above.
  6. Docs: README, docs/architecture.md, and a changeset.

Suggested sequencing

Deliver as a vertical slice starting with EC2 so the filter can be validated end-to-end before rolling across all services.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions