feedback_engine 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +25 -0
- data/app/views/feedback_engine/feedbacks/index.html.erb +1 -1
- data/app/views/layouts/feedback_engine/application.html.erb +3 -2
- data/config/locales/feedback_engine.en.yml +1 -0
- data/lib/feedback_engine/version.rb +1 -1
- data/lib/feedback_engine/widget.rb +4 -2
- metadata +4 -2
- /data/{app/assets → lib}/feedback_engine/widget.js +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0dbeb9cc3333acd2485439cb1896536b2617595f980da907d79ddf0cdb9ccb6c
|
|
4
|
+
data.tar.gz: a7f6907958921185994ea549d3a6ed987c567a4cc17019e281a8cf821fcbb89f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8f9bc37eeafccb24cac72fc0ce2099a604e66325e9b4e966cebe622688517575c68154b6b9dce8fdc9b1791b3ed9bba1118fccf0c9e11b1bf6b4c229c003cadf
|
|
7
|
+
data.tar.gz: 8ad4196a942eab2ce07a17a3fe9048b27015ca769251df5c777876914e7cbb93aa5e3f0168a13ac38ba920e55fd129d9c23d1064f3368eaadbacee25287da256
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.1 (2026-07-23)
|
|
4
|
+
|
|
5
|
+
- The widget JavaScript moved from `app/assets/` to `lib/` (it was always
|
|
6
|
+
inlined server-side, never served as an asset). Rails auto-registers every
|
|
7
|
+
engine's `app/assets/*` directory with the host's asset pipeline, so
|
|
8
|
+
Propshaft hosts were ingesting the file into their asset namespace under
|
|
9
|
+
the bare logical name `widget.js` — colliding with any other gem or host
|
|
10
|
+
file of the same name — and needlessly digesting a public copy at
|
|
11
|
+
precompile. The gem is now invisible to Sprockets/Propshaft entirely.
|
|
12
|
+
No behavior change.
|
|
13
|
+
|
|
3
14
|
## 0.4.0 (2026-07-22)
|
|
4
15
|
|
|
5
16
|
- Removed the clipboard-paste / drag-and-drop / file-chips screenshot intake
|
data/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# feedback_engine
|
|
2
2
|
|
|
3
3
|
[](https://rubygems.org/gems/feedback_engine)
|
|
4
|
+
[](https://rubygems.org/gems/feedback_engine)
|
|
4
5
|
[](https://github.com/yshmarov/feedback-engine/actions/workflows/ci.yml)
|
|
5
6
|
[](MIT-LICENSE)
|
|
6
7
|
|
|
@@ -12,6 +13,30 @@ every submission in your own database. A minimal built-in dashboard lets you
|
|
|
12
13
|
browse and triage what users send. No third-party service, no data leaves your
|
|
13
14
|
app.
|
|
14
15
|
|
|
16
|
+
<picture>
|
|
17
|
+
<source media="(prefers-color-scheme: dark)" srcset="demo-widget-dark.png">
|
|
18
|
+
<img alt="The feedback widget: type, section, message, and screenshots" src="demo-widget-light.png" width="420">
|
|
19
|
+
</picture>
|
|
20
|
+
|
|
21
|
+
<picture>
|
|
22
|
+
<source media="(prefers-color-scheme: dark)" srcset="demo-dashboard-dark.png">
|
|
23
|
+
<img alt="The built-in triage dashboard: status tabs, filters, search" src="demo-dashboard-light.png" width="820">
|
|
24
|
+
</picture>
|
|
25
|
+
|
|
26
|
+
Both the widget and the dashboard follow the viewer's system appearance —
|
|
27
|
+
these screenshots are the same pages in light and dark mode.
|
|
28
|
+
|
|
29
|
+
## Why not Canny (or another feedback SaaS)?
|
|
30
|
+
|
|
31
|
+
Hosted feedback tools are great until you notice the trade: your users'
|
|
32
|
+
feedback lives in someone else's database, behind someone else's login, at a
|
|
33
|
+
per-seat price. `feedback_engine` keeps the core loop — collect, triage,
|
|
34
|
+
resolve — inside your app: **your database, your users, your auth, one gem.**
|
|
35
|
+
Attribution plugs into whatever authentication you already have, gating is a
|
|
36
|
+
lambda, and submissions are ordinary ActiveRecord rows you can query, export,
|
|
37
|
+
or wire into Slack. (A public voting board à la Canny is on the
|
|
38
|
+
[roadmap](https://github.com/yshmarov/feedback-engine/issues/1).)
|
|
39
|
+
|
|
15
40
|
- **Zero UI dependencies.** The widget is plain JavaScript and styles itself.
|
|
16
41
|
No Tailwind, no Stimulus, no importmap, no build step. The dashboard renders
|
|
17
42
|
its own styles too.
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<thead>
|
|
33
33
|
<tr>
|
|
34
34
|
<th><%= t('feedback_engine.kind', default: 'Type') %></th>
|
|
35
|
-
<th><%= t('feedback_engine.message', default: 'Message') %></th>
|
|
35
|
+
<th><%= t('feedback_engine.dashboard.message', default: 'Message') %></th>
|
|
36
36
|
<th><%= t('feedback_engine.section', default: 'Section') %></th>
|
|
37
37
|
<th><%= t('feedback_engine.dashboard.from', default: 'From') %></th>
|
|
38
38
|
<th><%= t('feedback_engine.dashboard.filed', default: 'Filed') %></th>
|
|
@@ -33,8 +33,9 @@
|
|
|
33
33
|
.count { display: inline-block; min-width: 20px; padding: 0 6px; margin-left: 4px; border-radius: 999px;
|
|
34
34
|
background: var(--border); font-size: 12px; text-align: center; }
|
|
35
35
|
.filters { margin-bottom: 16px; display: flex; gap: 8px; align-items: center; }
|
|
36
|
-
.filters select { padding: 6px 8px; border: 1px solid var(--border);
|
|
37
|
-
background: var(--surface); color: var(--text); }
|
|
36
|
+
.filters select, .filters input[type=search] { padding: 6px 8px; border: 1px solid var(--border);
|
|
37
|
+
border-radius: 8px; background: var(--surface); color: var(--text); font: inherit; }
|
|
38
|
+
.filters input[type=search] { flex: 1; max-width: 320px; }
|
|
38
39
|
.card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
|
|
39
40
|
table { width: 100%; border-collapse: collapse; }
|
|
40
41
|
th, td { padding: 10px 14px; text-align: left; vertical-align: top; }
|
|
@@ -7,9 +7,11 @@ module FeedbackEngine
|
|
|
7
7
|
# framework, no build step) and styles itself inline, so it drops into any
|
|
8
8
|
# Rails app regardless of its CSS or JS setup. It is inlined into the page
|
|
9
9
|
# rather than served as a separate asset to avoid any dependency on the
|
|
10
|
-
# host's asset pipeline
|
|
10
|
+
# host's asset pipeline — and it lives under lib/ (not app/assets/) so a
|
|
11
|
+
# host that *does* run a pipeline never ingests it either: nothing lands in
|
|
12
|
+
# the host's asset namespace or precompiled output.
|
|
11
13
|
module Widget
|
|
12
|
-
SOURCE = File.expand_path('
|
|
14
|
+
SOURCE = File.expand_path('widget.js', __dir__)
|
|
13
15
|
|
|
14
16
|
# Right-to-left scripts, so the form renders mirrored for those locales.
|
|
15
17
|
# Matched on the language subtag, so region variants ("ar-EG") count too.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: feedback_engine
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yaroslav Shmarov
|
|
@@ -38,7 +38,6 @@ files:
|
|
|
38
38
|
- MIT-LICENSE
|
|
39
39
|
- README.md
|
|
40
40
|
- Rakefile
|
|
41
|
-
- app/assets/feedback_engine/widget.js
|
|
42
41
|
- app/controllers/feedback_engine/application_controller.rb
|
|
43
42
|
- app/controllers/feedback_engine/feedbacks_controller.rb
|
|
44
43
|
- app/controllers/feedback_engine/screenshots_controller.rb
|
|
@@ -79,6 +78,7 @@ files:
|
|
|
79
78
|
- lib/feedback_engine/configuration.rb
|
|
80
79
|
- lib/feedback_engine/engine.rb
|
|
81
80
|
- lib/feedback_engine/version.rb
|
|
81
|
+
- lib/feedback_engine/widget.js
|
|
82
82
|
- lib/feedback_engine/widget.rb
|
|
83
83
|
- lib/generators/feedback_engine/install/install_generator.rb
|
|
84
84
|
- lib/generators/feedback_engine/install/templates/create_feedback_engine_feedbacks.rb.tt
|
|
@@ -87,8 +87,10 @@ homepage: https://github.com/yshmarov/feedback-engine
|
|
|
87
87
|
licenses:
|
|
88
88
|
- MIT
|
|
89
89
|
metadata:
|
|
90
|
+
homepage_uri: https://github.com/yshmarov/feedback-engine
|
|
90
91
|
source_code_uri: https://github.com/yshmarov/feedback-engine
|
|
91
92
|
changelog_uri: https://github.com/yshmarov/feedback-engine/blob/main/CHANGELOG.md
|
|
93
|
+
bug_tracker_uri: https://github.com/yshmarov/feedback-engine/issues
|
|
92
94
|
rubygems_mfa_required: 'true'
|
|
93
95
|
rdoc_options: []
|
|
94
96
|
require_paths:
|
|
File without changes
|