Skip to content

docs: add a contributor architecture overview (optional, take what's useful)#540

Open
horner wants to merge 1 commit into
johnste:mainfrom
horner:main
Open

docs: add a contributor architecture overview (optional, take what's useful)#540
horner wants to merge 1 commit into
johnste:mainfrom
horner:main

Conversation

@horner

@horner horner commented Jun 28, 2026

Copy link
Copy Markdown

First off — thank you for Finicky. 🙏 It totally scratched an itch for me: routing every link to the right browser without thinking about it is exactly the kind of quietly-brilliant utility I wish existed years ago. Really cool project.

While getting my bearings in the codebase I wrote up a contributor-facing overview of the stack, and figured I'd offer it back in case it's useful to others landing here for the first time. Completely optional — cherry-pick, rewrite, or close, no hard feelings at all.

What's here

  • docs/ARCHITECTURE.md — a one-page map of the technical stack for new contributors: the Go + cgo/Objective-C app, the Goja config VM (config runs without Node), config-api, the Svelte UI, how web assets get embedded, the scripts/ build pipeline, and CI. Includes a quick end-to-end flow diagram and a 'where to start' section.
  • README — a single link to the new doc from the existing 'Building Finicky from source' section.
  • .github/copilot-instructions.md — opinionated AI-assistant guidance tailored to Finicky. This one is the most 'take it or leave it' of the bunch; it points at ARCHITECTURE.md as the single source of truth (kept DRY) and captures conventions like build-through-scripts/ and npm-not-pnpm.

Notes

  • Everything is docs-only — no code, build, or behavior changes.
  • I tried to keep it DRY: the architecture doc is the single source of truth and the README just links to it.
  • One small thing I noticed while documenting: packages/finicky-ui declares packageManager: pnpm but the scripts/CI use npm + package-lock.json. I only flagged it in the doc rather than changing anything — happy to follow up separately if you'd like it reconciled.

Thanks again for building something genuinely delightful. Feel free to push back on any of this. 🙂

Summary by CodeRabbit

  • Documentation
    • Added a new architecture guide that gives contributors a clearer overview of the app structure, build flow, and key project components.
    • Expanded setup and build guidance in the README with a direct link to the architecture overview.
    • Added project contribution guidelines covering coding conventions, testing expectations, accessibility, localization, and documentation standards.

- Add docs/ARCHITECTURE.md mapping the full technical stack (Go+cgo app,
  Goja config VM, config-api, Svelte UI, build pipeline, CI) for contributors
- Link it from the README's 'Building Finicky from source' section
- Tailor .github/copilot-instructions.md to Finicky, pointing at the new
  architecture doc as the single source of truth (DRY)
@coderabbitai

coderabbitai Bot commented Jun 28, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds docs/ARCHITECTURE.md as a contributor-facing technical reference covering Finicky's structure, tooling, build pipeline, CI, and an end-to-end link-click flowchart. Updates README.md to point contributors to this document, and adds .github/copilot-instructions.md with project-wide conventions for Copilot.

Changes

Contributor Documentation and Copilot Guidance

Layer / File(s) Summary
Architecture map
docs/ARCHITECTURE.md
New 188-line document covering app structure, repo layout, languages/tooling table, Go core subpackages and go:embed asset bundling, config-api/Zod/Vitest details, Svelte UI package, browser extension manifests, scripts/build.sh pipeline, CI workflow, end-to-end Mermaid flowchart, and contributor start pointers.
Copilot instructions and README pointer
.github/copilot-instructions.md, README.md
New Copilot guidance file with build/test workflow, stack conventions, DRY/KISS/folder philosophy, UI/accessibility/i18n/docs rules, GitHub Actions guidance, and PR checklist. README gains one sentence directing contributors to docs/ARCHITECTURE.md.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Poem

A map of the warren, now written with care,
Where Go meets Goja and Svelte fills the air,
The Copilot hops through each convention line,
README says "look here!" with a small helpful sign,
Docs bloom like clover — the path is now clear! 🐇✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the documentation-focused addition of a contributor architecture overview.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.github/copilot-instructions.md (2)

57-62: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Remove or adapt the MCP Browser testing section.

This section describes testing with "MCP Browser in Playwright," which is inappropriate for Finicky — a native macOS application with a Svelte UI embedded via WebKit, not a web app browsable by Playwright. This appears copied from the template reference on line 22 without adaptation. It could mislead contributors into thinking Finicky supports browser-based testing.

- ### 🌐 Testing with MCP Browser
- - Use MCP browser in Playwright if available to test functionality
- - **Never close the browser** after running MCP browser commands unless explicitly asked
- - Let the user interact with the browser after navigation or testing
- - Only use `browser_close` when the user specifically requests it
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/copilot-instructions.md around lines 57 - 62, Remove or rewrite the
MCP Browser testing guidance in the instructions file so it matches Finicky’s
native macOS/WebKit architecture instead of a Playwright web-app workflow.
Update the section near the existing testing notes to refer to
Finicky-appropriate validation methods and keep any browser-specific wording out
of the document, since the current content is copied from a generic template and
is misleading.

80-91: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Clarify that I18N requirements are aspirational, not current practice.

The extensive I18N requirements (RTL support, language selector, localized formats) imply Finicky already has this infrastructure. If the app is English-only currently, these instructions set unrealistic expectations for AI-generated contributions. Consider adding a note that this is a target state or removing until i18n infrastructure exists.

  ## Internationalization (I18N)
  
+ > **Note:** Finicky is currently English-only. The following are target practices for when i18n infrastructure is added.
+ 
  ### 🌍 Text and Language Support
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/copilot-instructions.md around lines 80 - 91, Clarify the
Internationalization section in the copilot instructions so it does not imply
Finicky already supports full i18n features. Update the guidance near the I18N
heading to state that RTL support, language selection, and localized
date/number/currency formats are aspirational or future requirements unless the
relevant infrastructure exists. Keep the focus on existing symbols in the doc
section itself, such as the “Internationalization (I18N)” and “Localization”
headings, and make the language explicitly conditional on current app support.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/copilot-instructions.md:
- Around line 63-66: The HTML & CSS guidelines currently say all styles should
be written in SASS (SCSS), but the finicky-ui app is using plain CSS files, so
update the guidance to match the existing setup. In the
.github/copilot-instructions.md section for CSS guidance, adjust the SASS-First
Approach text to either recommend plain CSS for now or explicitly state Sass
only if support is added, and keep the rest of the styling guidance consistent
with the src/app.css and src/reset.css structure.

---

Nitpick comments:
In @.github/copilot-instructions.md:
- Around line 57-62: Remove or rewrite the MCP Browser testing guidance in the
instructions file so it matches Finicky’s native macOS/WebKit architecture
instead of a Playwright web-app workflow. Update the section near the existing
testing notes to refer to Finicky-appropriate validation methods and keep any
browser-specific wording out of the document, since the current content is
copied from a generic template and is misleading.
- Around line 80-91: Clarify the Internationalization section in the copilot
instructions so it does not imply Finicky already supports full i18n features.
Update the guidance near the I18N heading to state that RTL support, language
selection, and localized date/number/currency formats are aspirational or future
requirements unless the relevant infrastructure exists. Keep the focus on
existing symbols in the doc section itself, such as the “Internationalization
(I18N)” and “Localization” headings, and make the language explicitly
conditional on current app support.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a566255f-6f84-4fa7-bb0a-47c37267b7b1

📥 Commits

Reviewing files that changed from the base of the PR and between d4d62f8 and 52e88a8.

📒 Files selected for processing (3)
  • .github/copilot-instructions.md
  • README.md
  • docs/ARCHITECTURE.md

Comment on lines +63 to +66
## HTML & CSS Guidelines
- **Semantic Naming**: Every `<div>` and other structural element must use a meaningful, semantic class name that clearly indicates its purpose or role within the layout.
- **CSS Simplicity**: Styles should avoid global resets or overrides that affect unrelated components or default browser behavior. Keep changes scoped and minimal.
- **SASS-First Approach**: All styles should be written in SASS (SCSS) whenever possible. Each component should have its own dedicated SASS file to promote modularity and maintainability.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify styling approach in finicky-ui
fd -i '.*\.s[ac]ss$' packages/finicky-ui/
fd -i '.*\.css$' packages/finicky-ui/ | head -20
cat packages/finicky-ui/package.json | grep -i sass
cat packages/finicky-ui/vite.config.* | grep -i sass

Repository: johnste/finicky

Length of output: 219


Align the styling guidance with the current CSS setup. packages/finicky-ui uses plain CSS (src/app.css, src/reset.css), so “All styles should be written in SASS (SCSS)” is misleading unless Sass support is added first.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/copilot-instructions.md around lines 63 - 66, The HTML & CSS
guidelines currently say all styles should be written in SASS (SCSS), but the
finicky-ui app is using plain CSS files, so update the guidance to match the
existing setup. In the .github/copilot-instructions.md section for CSS guidance,
adjust the SASS-First Approach text to either recommend plain CSS for now or
explicitly state Sass only if support is added, and keep the rest of the styling
guidance consistent with the src/app.css and src/reset.css structure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant