Skip to content

v2.1.0

Choose a tag to compare

@imprvhub imprvhub released this 14 Jul 14:09
· 19 commits to main since this release
7d60324

v2.1.0 Release Notes

Released on Tuesday, July 14, 2026. This release introduces a global feedback widget, enables two-way label transfers between repositories and the Label Pack, and adds self-service GitHub organization access management. It also resolves critical production issues, including blocked dashboard form posts, Safari background video compatibility, and Vite 7 dependency mismatches.

GitHub Integration & Dashboard

  • In-app GitHub organization access management. Users who need to expand Gitset's access to newly joined organizations can now do so directly from the UI, bypassing manual GitHub settings navigation.
    • Added a new /api/auth/github/manage endpoint that redirects to the Gitset OAuth application grant page.
    • Added a persistent footer row to the repository selector ("Can't find your organization or repository?") to trigger the flow, alongside a "GitHub connection" card on the dashboard featuring direct access management and re-authorization actions.
  • Fixed blocked dashboard form posts in production. Dashboard form actions (such as revoking sessions or deleting accounts) were failing with 403 Cross-site POST form submissions are forbidden in production. This occurred because Astro ignored X-Forwarded-Proto behind Cloud Run's TLS-terminating proxy, causing a protocol mismatch. Configuring the allowed domains list restores trust in the forwarded protocol and resolves the issue.

Label Pack

  • Two-way label transfers. The Label Pack now acts as a two-way clipboard, allowing users to use existing repositories as a source of truth instead of manually writing or pasting Markdown.
    • Export to Pack: A new action in the Repository Labels tab copies all labels (name, color, description) into the pack draft and redirects to the pack tab.
    • Import from Repository: The Import view now supports importing directly from a selected repository alongside the legacy Markdown paste flow.
    • Smart Merging: If a draft already contains labels, importing from a repository prompts the user to either replace the draft entirely or merge the incoming labels.

User Interface & Polish

  • Global feedback widget. A persistent feedback trigger has been added to BaseLayout (appearing across all pages and tools), with a matching link in the footer. The widget automatically detects the active tool or page and includes an opt-in checkbox for browser and route metadata.
  • Collapsible composer inputs. Large text inputs (such as pasted bug reports or long commit lists) in Issue Crafter, PR Maker, Release Manager, and README Generator were ballooning the height of auto-growing textareas. This forced the output panel to stretch awkwardly. The new CollapsibleComposer caps the input height, dims and blurs the fields, and disables them while a generation is in flight.
  • Persistent composer collapse state. The collapsed state now persists after generation settles (on both success and error states) rather than snapping back to full height immediately, keeping the layout balanced.
  • Work Sans for headlines. The homepage hero H1, tools section H2, and final CTA H2 now use Work Sans (font-weight 600) for a cleaner, more distinct editorial treatment. The rest of the site continues to use IBM Plex Sans.
  • Footer layout simplification. Folded the "Company" links (Contact, Privacy Policy, Terms of Service) into the "Resources" column. This balances the column heights (shifting from an uneven 8/4/3 layout to a clean 8/7 split) and prevents wrapping issues on medium viewports.
  • Floating feedback button behavior. The floating feedback trigger now automatically hides when the footer scrolls into view to prevent visual overlap.

Performance & Compatibility

  • Safari background video playback. The homepage hero background videos (.mp4 and .webm) were both encoded in AV1, which Safari cannot play without hardware-gated support. The .mp4 fallback has been re-encoded to H.264 (libx264, faststart), restoring looping background video playback on macOS and iOS.
  • Vite 7 compatibility restored. Downgraded @astrojs/react from ^6.0.1 (which targets Vite 8 / Astro 7) to 5.0.7 (built for Vite 7 / Astro 6). This resolves a dependency mismatch that was injecting a Rolldown-backed Vite 8 instance into Astro's Vite 7 dev server, which previously broke the React fast-refresh transform pipeline.
  • Direct Vite dependency declaration. Declared vite as a direct devDependency in package.json. This ensures that the .env to process.env bridge in astro.config.mjs can resolve loadEnv during strict, isolated Docker builds where transitive dependencies are not exposed to the project root.
  • Local environment variable bridging. Added a configuration in astro.config.mjs that loads .env files using Vite's loadEnv and copies them to process.env during local development. This prevents pnpm dev from crashing on missing environment variables (like DB_URL) while keeping production environment variables unaffected.

Other Changes

  • Removed the deprecated baseUrl property from tsconfig.json since TypeScript 7.0 drops support for it and modern path resolution resolves relative to the config directory by default.
  • Reordered the footer's Resources column and renamed "README Generator" to "Readme Generator" for consistency.

Bug Fixes

  • Fixed a production crash during Docker builds where astro build failed with Cannot find module 'vite'.
  • Fixed a layout bug where the floating feedback button overlapped footer links.
  • Fixed a bug where the composer textareas snapped back to their fully expanded heights immediately after a generation failed, breaking the output panel layout.

Full Changelog: v2.0.0...v2.1.0